2017-05-04 50 views
3

我已經下載了三個不同的HoG代碼。 使用64x128混淆不同的HOG代碼

1的圖像),使用MATLAB函數:extractHOGFeatures

[hog, vis] = extractHOGFeatures(img,'CellSize',[8 8]); 

hog大小是3780

如何計算:

HOG特徵長度,N是基於圖像尺寸和功能參數值。

N = prod([BlocksPerImage, BlockSize, NumBins]) 
BlocksPerImage = floor((size(I)./CellSize – BlockSize)./(BlockSize – BlockOverlap) + 1) 

2)第二個HOG功能從here下載。 相同的圖像用於

H = hog(double(rgb2gray(img)), 8, 9); 

% I  - [mxn] color or grayscale input image (must have type double) 
% sBin  - [8] spatial bin size 
% oBin  - [9] number of orientation bins 

H大小是3024

如何計算:

H  - [m/sBin-2 n/sBin-2 oBin*4] computed hog features 

3)從vl_feat代碼系首長。

cellSize = 8; 
hog = vl_hog(im2single(rgb2gray(img)), cellSize, 'verbose','variant', 'dalaltriggs') ; 
vl_hog: image: [64 x 128 x 1] 
vl_hog: descriptor: [8 x 16 x 36] 
vl_hog: number of orientations: 9 
vl_hog: bilinear orientation assignments: no 
vl_hog: variant: DalalTriggs 
vl_hog: input type: Image 

輸出爲4608

哪一個是正確的?

回答

3

所有都是正確的。事情是HOG特徵提取功能默認參數隨封裝而變化。 (例如 - opencv,matlab,scikit-image等)。通過參數我的意思是,使用winsize,步幅,塊大小,比例等

通常HOG描述符長度爲:

Length = Number of Blocks x Cells in each Block x Number of Bins in each Cell 

因爲所有的都是正確的,你可以使用哪一個可以在許多方面來回答。 您可以嘗試不同的參數值並選擇適合您的值。由於沒有固定的方法來找到正確的值,所以如果您知道每個參數的變化如何影響結果將會很有幫助。

手機大小:如果您增加此選項,則可能無法捕獲小細節。

塊大小:同樣,具有大單元大小的大塊可能無法幫助您捕獲小細節。此外,由於大塊意味着光照變化可能更大,並且由於梯度歸一化步驟,很多細節將會丟失。所以選擇相應的。

重疊/步幅:如果選擇重疊塊,這又可以幫助您捕獲有關圖像補丁的更多信息。通常它被設置爲塊大小的一半。

通過相應地選擇上述參數的值,您可能會獲得大量信息。但描述符的長度會變得不必要的長。

希望這會有所幫助:)

+0

謝謝,更多。我正在使用libSVM進行分類。我需要爲256個圖像安排我的特徵矩陣:256x3780和標籤矢量爲:256x1? – Addee

+1

是的,那是你需要做的。如果你認爲我的答案解決了你的問題,請接受這個答案:)祝你好運。 – harshkn

+0

你可以請這個[鏈接](http://stackoverflow.com/questions/44082270/hog-descriptor-is-rotation-invariant) – Addee