1. 程式人生 > >經典影象 HOG 特徵

經典影象 HOG 特徵

影象特徵提取在物件檢測中具有重要的地位,許多論文提出過許多里程碑式的特徵,比如LAB特徵,HOG特徵等。
HOG特徵及FHOG特徵(Deformable Part Model中HOG的一種變種)都是利用了影象的梯度資訊作為影象資訊的描述工具,其基本的思想可以檢視HOG的wiki頁面:

在一副影象中,區域性的表象和形狀(apparence and type)能夠被梯度或者邊緣的方向密度分佈很好的描述

1.HOG

HOG特徵的提出在2005年CVPR的會議上,全稱Histogram of Orientation Gradient.

1.1 HOG 演算法的實現

輸入影象作者採用的是沒有gamma矯正的RGB顏色空間影象。

1.1.1梯度計算

正如作者在論文中說的,人臉識別檢測器對於如何計算畫素點的梯度比較敏感。在作者的論文中指出經過大量的實驗,發現最簡單的才是最有效的。
也就是對影象不採用高斯平滑的情況下使用這裡寫圖片描述 -X方向的分梯度模板;這裡寫圖片描述 -Y方向上的分梯度模板。利用這兩個模板遍歷整個影象過後,每個點都具有在x和y方向兩個分梯度值,通過這兩個值利用以下的公式可以計算出總的梯度值,和角度。

][3]![這裡寫圖片描述

角度計算公式

對於彩色的圖片(也就是可能具有多通道的圖片),我們在每個通道上均計算相應的值,然後選取梯度最大的通道作為該畫素點的梯度向量。

1.1.2 空間/方向bin投票

接下來的工作就是要把梯度向量聚集起來。
每個畫素都有自己的投票空間。該投票空間是這樣劃分的出來的,將影象分解為的cell,如圖每個cell大小為8X8,並且cell與cell之間沒有重疊部分。比如我們有 64X128的圖片,經過上面的劃分出(64/8)X(128/8)=128個cell。

大

在每個Cell中,我們構建對於方向的投票。方向可以是0 ~ 180度(無符號的梯度)或者0 ~ 360度(有符號的梯度)。論文中採用的是0 ~ 180度的無符號梯度投票。將0~180度平均分解成9個方向。畫素的投票的值是實際梯度大小值。

在投票時為了reduce aliasing,我們會使用線性插值的方法進行投票。例如當前點的方向為65、梯度大小為20,這就需要向60度投票15,向80度投票5.

1.1.3 構建Block和歸一化

在一幅影象中畫素點梯度的大小範圍可能因為受到光照和前景-背景對比度的變化而產生較大的差異。所以一個有效的方法就是依據區域性cell的對比度進行歸一化。

在HOG中區域性對比度正則化的尺度是一個Block,Block的尺寸的大小是16X16,也就是一個Block中包含2X2個cell。另外每次block移動的步長為8 pixels,所以Block和Block之間是有重疊的,這樣保證同一個cell的不同的歸一化結果(cell在不同的Block中被歸一化)能對最後的HOG向量都有貢獻。

Block & normalization][6]![這裡寫圖片描述

每個Block的特徵描述是他包含的4個cell的投票結果的級聯,也就是4*9=36維。遍歷影象每獲得一個36維的Block特徵之後需要進行歸一化,歸一化的方法有很多,比如L1,L2,L2-Hys等。

論文的作者採用的是L2-Hys正則化方法
假設v是是36維未經正則化的向量,這裡寫圖片描述表示的2正規化,這裡寫圖片描述是一個很小的值,防止除0錯誤。下面是L2-norm的方法

enter description here][9]![這裡寫圖片描述

L2-Hys是在該公式計算出的結果的基礎上,對36維中的每一維進行截斷,限制每一維的最大值為0.2。

1.1.4 final descriptor

對於影象上的遍歷的每一個block進行正則化後,將影象中所有的Block的descriptor收集起來就是整個圖片的特徵。
對於64X128的影象,可以分解成[(64-16)/8+1]X[(128-16)/8+1]=105個Block,每個具有Block36維特徵(4 cell * 9 orientation),所以整個影象有105X4X9維特徵。

參考文獻

  1. HOG:Histograms of Oriented Gradients for Human Detection (author:Navneet Dalal & Bill Triggs)