這節為關鍵點特徵描述
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...