2012-01-26 41 views
1

我知道OpenCV中的梯度直方圖通常用於圖像補丁,以檢測和分類圖像中的對象。OpenCV中的HOG用於整個圖像的分類

但是,我想用HOG來構建一個可以用來分類整個圖像的特徵向量。使用以下:

std::vector<float> temp_FV_out; 
cv::HOGDescriptor hog; 
hog.compute(img_in, temp_FV_out); 

給出非常長的特徵矢量的每個不同的長度,由於圖像的變化的大小 - 越大的影像具有更64×128的窗口,並且每個這些有助於特徵向量的長度。

如何獲得OpenCV從每個圖像給出一個短特徵向量(大約5-20個分箱),其中特徵向量的長度保持不變,而不管圖像的大小如何?我寧願不用一堆字來建立一個HOG'詞語'的字典。

回答

2

第一步是規範圖像大小 - 選擇您想要處理的最小大小,然後將其餘大小調整爲此基本大小。您還可以將默認尺寸設置爲小尺寸(例如100x100)。如果縱橫比不相同,您可能需要裁剪它們。

接下來,您可以根據各種算法從PCA中選擇許多功能:PCA,決策樹,Ada增強等 - 這可以幫助您從數據中提取最重要的值。