1. 程式人生 > >特徵描述子(feature descriptor) —— HOG(方向梯度直方圖)

特徵描述子(feature descriptor) —— HOG(方向梯度直方圖)

HOG(Histogram of Oriented Gradients),描述的是影象的區域性特徵,其命名也暗示了其計算方法,先計算影象中某一區域不同方向上梯度的值,然後累積計算頻次,得到直方圖,該直方圖便可代表該區域了,也即從影象中抽取得到的特徵向量,可以作為後續分類器的輸入了。

注意,HOG 刻畫的是影象的區域性特徵,對於一副高解析度影象當然可以直接提取特徵,效果並不理想。從資訊理論的角度說,一幅 640*480 的影象,約有 30 萬個畫素點,直接對原始影象做 HOG 特徵提取的話,按照 360°,分成 360 個bins,HOG 沒有表示這麼大一副影象的能力。從特徵工程的角度看,一般來說,只有影象區域比較小的情況,基於統計原理的直方圖對於該區域才有表達能力

(表達能力即為區別能力),如果影象區域比較大,那麼兩個完全不同的影象的HOG特徵,也可能很相似。但是如果區域較小,這種可能性就很小。最後,把影象分割成很多區塊,然後對每個區塊計算HOG特徵,這也包含了幾何(位置)特性。例如,正面的人臉,左上部分的影象區塊提取的HOG特徵一般是和眼睛的HOG特徵符合的。

1. 演算法流程

  • 影象分塊 ⇒ patches
  • 利用任意一種梯度運算元,sobel、laplacian等,對每一個 patch 進行卷積,計算得到畫素點的梯度方向和幅值:

    Mx,y=I2x+I2yθ(x,y)=tan1IyIx,[0,360°)/[0,180°)
  • 將 360° 分成若干個 bins,例如均分為 16 個 bins,如下:


    這裡寫圖片描述
    這裡寫圖片描述

references