2017-05-04 20 views
3

私は3つの異なるHoGコードをダウンロードしました。 MATLAB関数を使用して)64x128異なるHOGコードでの混乱

1の画像を使用して: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 

すべてはあなたが使用することができた1、正しいですので、多くの方法で答えることができます。 異なるパラメータ値を試して、あなたに合ったものを選ぶことができます。正しい値を見つけるための固定された方法はないので、各パラメータの変化がどのように結果に影響するかを知っていると役に立ちます。

セルサイズ:これを大きくすると、小さな詳細をキャプチャできないことがあります。

ブロックサイズ:この場合も、大きなセルサイズの大きなブロックは小さな細部をキャプチャするのには役立ちません。また、大きなブロックは照明の変化をより大きくすることができ、勾配正規化ステップにより、多くの細部が失われる。それに応じて選択してください。

オーバーラップ/ストライド:オーバーラップするブロックを選択すると、画像パッチの詳細情報を取得するのに役立ちます。通常、ブロックサイズの半分に設定されます。

上記のパラメータの値を適宜選択することで、多くの情報を得ることができます。しかし、記述子の長さは不必要に長くなります。

希望します。

+0

ありがとう、ちょうどこれ以上。私は分類のためにlibSVMを使用しています。私は、256x3780とラベルベクトル:256x1のように、256画像用の私の特徴行列を手配する必要がありますか? – Addee

+1

はい、それはあなたがする必要があります。私の答えがあなたの質問を解決したと思うなら、答えとしてこれを受け入れてください:)幸運。 – harshkn

+0

あなたはこれを確認してください[リンク](http://stackoverflow.com/questions/44082270/hog-descriptor-is-rotation-invariant) – Addee