Rob Hess sift原始碼詳解(四)

2021-09-30 10:57:27 字數 1355 閱讀 1153

這節為關鍵點特徵描述

static void compute_descriptors( cvseq* features, iplimage*** gauss_pyr, int d,int n )

}static double*** descr_hist( iplimage* img, int r, int c, double ori,double scl, int d, int n )

cos_t = cos( ori );

sin_t = sin( ori );

bins_per_rad = n / pi2;

exp_denom = d * d * 0.5;

hist_width = sift_descr_scl_fctr * scl;

radius = hist_width * sqrt(2) * ( d + 1.0 ) * 0.5 + 0.5;//實際所需影象區域的半徑,+0.5的意思是四捨五入

for( i = -radius; i <= radius; i++ )

for( j = -radius; j <= radius; j++ )

}return hist;

}static void interp_hist_entry( double*** hist, double rbin, double cbin,double obin, double mag, int d, int n )

} }

} }

}static void hist_to_descr( double*** hist, int d, int n, struct feature* feat )

}static void normalize_descr( struct feature* feat )//為去除光照變化的影響,對其進行歸一化處理

len_inv = 1.0 / sqrt( len_sq );

for( i = 0; i < d; i++ )

feat->descr[i] *= len_inv;

}static int feature_cmp( void* feat1, void* feat2, void* param )

static void release_descr_hist( double**** hist, int d )//釋放描述符直方圖

free( *hist );

*hist = null;

}static void release_pyr( iplimage**** pyr, int octvs, int n )//釋放尺度空間金字塔

free( *pyr );

*pyr = null;

}

RobHess sift原始碼配置

這篇文字已經寫得很好了,不過在給出的原始碼的連線上還有gsl的配置上不夠詳細。每建立乙個將要使用opencv的vc project,都需要給它指定需要的lib。選單 project settings,然後將setting for選為all configurations,然後選擇右邊的link標籤,在...

Java集合詳解四 HashMap原始碼詳解

下面以jdk1.6中的hashmap講解其原始碼 一 儲存原理 首先,hashmap中的key value使用node來進行儲存,而node之間是怎麼進行連線的呢?使用陣列 鍊錶的形式進行儲存,即雜湊表 雜湊錶即為頭部使用陣列進行儲存,頭部之後的資料使用鍊錶進行儲存。二 原始碼解析 1 儲存的節點原...

Python3爬取meitulu 原始碼 詳細注釋

coding utf 8 import time import requests import re import os from bs4 import beautifulsoup from requests.exceptions import connectionerror,readtimeout...