HOG特徵如何可視化?

有關HOG特徵提取的論文中好像對結果都有一個標準的表示方式如下圖所示:

但是論文中都沒有提到是如何實現的,所以想問一下這樣的圖是怎樣得來的?每一個「亮線」的方向和長度大小代表什麼?


MIT的Carl Vondrick已經做了相關的工作,公布了HOG可視化的代碼。你可以看看。

HOGgles: Visualizing Object Detection Features


可以嘗試一下Matlab的extractHOGFeatures函數,這個函輸出兩個結果,一是1xN維的HOG特徵矢量,一個是Vision,可以使用plot函數畫出HOG特徵圖。

貼上代碼和結果:

img = imread(xxx);

[feature,vision] = extractHOGFeatures(double(img),CellSize,[32 32]);

figure;imshow(img);hold on

plot(vision)


from skimage.feature import hog
from skimage import io
im = io.imread(./timg.jpg,as_grey=True)
normalised_blocks, hog_image = hog(im, orientations=9, pixels_per_cell=(8, 8), cells_per_block=(8, 8), visualise=True)
io.imshow(hog_image)


去年看過很多 HOG論文也實現過。我記得HOG不是把每個block內的東西分為9個角度吧,梯度大小根據梯度方向貢獻給了這9個方向,貌似是這樣。


如果知道HOG的原理這個圖應該不難理解,因為每個cell的descripter就是像素點梯度方向和強度的統計,所以每一大塊應該是一個cell或者block,其中每條線的方向代表著這個單元內每個像素點的梯度方向。。。。。。(我沒看過hog的任何論文,只是大概知道其原理,做了上述推測)


推薦閱讀:

[171108] 基於 Python OpenCV 圖像處理的特殊濾鏡(鉛筆畫、風格化、細節增強等)
中科院醫工所智能醫療影像團隊公開「iMED-Origa650數據集」
實時多人的姿態估計【 CVPR'17 (Oral)】
簡單易懂的講解深度學習(入門系列之五)

TAG:圖像處理 | 計算機視覺 | 特徵提取 | 可視化 |