5

我想知道,如果有任何實現HOG描述符的對象,如「汽車」,而不是人類在MATLAB中?HOG描述符用於對象檢測

但在情況下,只存在於人的,你可以指導我的代碼,並給我因此爲了提高代碼提示用於「對象,如汽車或摩托車」

+0

嗨,我想建議您先嚐試谷歌..反正這裏是你給的圖像作爲輸入一個鏈接MATLAB代碼(不只是人類的任何圖像它會產生一個長度爲81的豬特徵向量)[HOG](HOG)(http://www.mathworks.com/matlabcentral/fileexchange/28689-hog-descriptor-for-matlab) – G453 2012-08-03 18:04:21

+0

@Sistu這個代碼沒有任何描述加上它用於人類檢測:( – Mario 2012-08-03 18:13:40

+1

在描述鏈接到的論文中引用一個更好的參考文獻,或者至少從IEEE會議記錄中摘錄我的(非常一般的)理解是這個函數被設計爲返回所提供圖像的HOG描述符。然後使用這些描述符fo您的應用程序。所以如果你給它一輛「汽車」,你會得到可用於「汽車」的描述符。 – 2012-08-03 20:35:06

回答

0

這裏是完全實現Dalal算法的優秀Matlab代碼。我已經測試並將這些代碼用於許多重要的學術項目。

http://hi.baidu.com/fpmaldfoamdfmze/item/4f3b3ac881affcb00c0a7b11 所有功勞歸於發佈這個人!

HOG並非專用於行人檢測。您可以將它與任何剛性(或剛性很好)的物體一起使用。

要使用此代碼,您需要了解如何在一個區域計算HOG。該地區分爲重疊的「塊」。塊由許多「單元」組成。在每個塊中計算空間方向直方圖。最終矢量是通過連接這些空間直方圖形成的。 您可以調整的參數是

cellpw,cellph:cell的像素寬度和高度分別爲。

nblockw,nblockh:分別按x和y方向上的單元格編號計算的塊大小。

nthet:角度箱的數量。

issigned:是否有符號或無符號的梯度被取

重疊:重疊的量指定爲分數塊之間

isglobalinterpolate:是否3D直方圖

的全局或局部插值

normmethod:使用的標準類型

你可以用默認參數嘗試 -

cellpw = 8; cellph = 8; nblockw = 2; nblockh = 2; nthet = 9; 重疊= 0.5; isglobalinterpolate ='localinterpolate'; issigned ='unsigned'; normmethod ='l2hys';

在MATLAB獲取功能是一樣的東西

I = imread('car.png'); 
Ig = rgb2gray(I); 
F = hogcalculator(Ig, 8, 8, 2, 2, 9, 0.5,'localinterpolate', 'unsigned', 'l2hys'); 

尺寸/ F的長度取決於您選擇的paramenters。

回答您的意見, 是的,您必須爲您的正面(汽車)和負面(非汽車)圖像構建這些功能來構建檢測系統。 SVM通常用作分類器。我建議使用SVM庫 -

http://www.csie.ntu.edu.tw/~cjlin/libsvm/

一旦你建立你的訓練集,訓練你的訓練集。調整SVM參數以獲得最高精度。 示例中給出的參數可能不是最好的,你可以隨時嘗試不同的設置。我會先嚐試改變nthet,cellpw和cellph。 祝你好運!

1

HOG是一種特徵描述符,它可以應用於任何你想要的對象。除了塊大小,單元大小,塊跨度等參數外,實現將不會改變。要獲取汽車描述符,您需要提供它們的正面和負面樣本。 Opencv爲用戶提供了訓練分類器的功能。如果它提供了用於訓練分類器的代碼,它應該與matlab相同。

1

那麼你可以使用VLFeat Toolbox,它具有非常有效的HOG implimentaion,你可以找到任何物體的hOG特徵,也可以可視化。 如果輸入圖像爲「im.jpg」,則可以使用 hog = vl_hog("im.jpg",8,'verbose') 獲得HOG功能此處8是您的窗口大小,您可以相應地進行調整。

爲了顯示功能 imhog = vl_hog('render',hog,'verbose')