1.介紹
HOG(Histogram of Oriented Gradient)是2005年CVPR會議上,法國國家計算機科學及自動控制研究所的Dalal等人提出的一種解決人體目標檢測的圖像描述子,該方法使用梯度方向直方圖(Histogram of Oriented Gradients,簡稱HOG)特征來表達人體,提取人體的外形信息和運動信息,形成豐富的特征集。
2.生成過程
1)圖像歸一化
歸一化圖像的主要目的是提高檢測器對光照的魯棒性,因為實際的人體目標可能出現的各種不同的場合,檢測器,必須對光照不太敏感才會有好的效果。
2)利用一階微分計算圖像梯度
圖像平滑
對於灰度圖像,一般為了去除噪點,所以會先利用離散高斯平滑模板進行平滑:高斯函數在不同平滑的尺度下進行對灰度圖像進行平滑操作,Dalal等實驗表明在下,人體檢測效果最佳(即不做高斯平滑),使得錯誤率縮小了約一倍。不做平滑操作,可能原因:圖像時基於邊緣的,平滑會降低邊緣信息的對比度,從而減少圖像中的信號信息。
梯度法求圖像梯度
一階微分處理一般對灰度階梯有較強的響應
一階微分:
對於函數f(x,y),在其坐標(x,y)上的梯度是通過如下二維列向量定義的:
這個向量的模值由下式給出:
因為模值的計算開銷比較大,一般可以按如下公式近似求解:
Dalal等人利用許多一階微分模板進行求梯度近似值,但在實驗中表明模板[-1,0,1]效果最好。
采用模板[-1,0,1]為例計算圖像梯度以及方向,通過梯度模板計算水平和垂直方向的梯度分別如下:

其中,分別表示該像素點的水平,垂直梯度值。計算該像素點的梯度值(梯度強度)以及梯度方向:
對於梯度方向的范圍限定,一般采用無符號的范圍,故梯度方向可表示為:
3)基於梯度幅值的方向權重投影
HOG結構
通常使用的HOG結構大致有三種:矩形HOG(簡稱為R-HOG),圓形HOG和中心環繞HOG。它們的單位都是Block(即塊)。Dalal的試驗證明矩形HOG和圓形HOG的檢測效果基本一致,而環繞形HOG效果相對差一些。

矩形HOG塊的划分:
一般一個塊(Block)都由若干單元(Cell)組成,一個單元都有如干個像素點組成。


在每個Cell中有獨立做梯度方向統計
,從而以梯度方向為橫軸的的直方圖,前面我們已經提到過,梯度方向可取0度到180度或0度~360度,但dalal實驗表明,對於人體目標檢測0度~180度這種忽略度數正負級的方向范圍能夠取得更好的結果。然后又將這個梯度分布平均分成 個
方向角度(orientation bins),每個方向角度范圍都會對應一個直方柱。

根據Dalal等人實驗,在人體目標檢測中,在無符號方向角度范圍並將其平均分成9份(bins)能取得最好的效果,當bin的數目繼續增大效果改變不明顯,故一般在人體目標檢測中使用bin數目為9范圍0~180度的度量方式。
Block中各個參數的最終選取:
對於人體對象檢測,塊的大小為3×3個單元格,單元格的大小為6×6個象素時,檢測效果是最好的,錯誤率約為10%左右。塊的大小為2×2個單元格,單元格大小為8×8個象素時,也相差無幾。6-8個象素寬的單元格,2-3個單元格寬的塊,其錯誤率都在最低的一個平面上。塊的尺寸太大時標准化的作用被削弱了從而導致錯誤率上升,而如果塊的尺寸太小時,有用的信息反而會被過濾掉。
在實際應用中,在Block和Cell划分之后,對於得到各個像區域中,有時候還會為了進行一次高斯平滑,但是對於人體目標檢測等問題,該步驟往往可以忽略,實際應用效果不大,估計在主要還是去除區域中噪點,因為梯度對於噪點相當敏感。
對梯度方向的投影權重方式的選取:
對於梯度方向的加權投影,一般都采用一個權重投影函數,它可以是像素點的梯度幅值,梯度幅值的平方根或梯度幅值的平方,甚至可以使梯度幅值的省略形式,它們都能夠一定程度上反應出像素上一定的邊緣信息。根據Dalal等人論文的測試結果,采用梯度幅值量級本身得到的檢測效果最佳,使用量級的平方根會輕微降低檢測結果,而使用二值的邊緣權值表示會嚴重降低效果(約為5%個單位10-4FPPW(False Positives Per Window))。
4)HOG特征向量歸一化
對block塊內的HOG特征向量進行歸一化。對block塊內特征向量的歸一化主要是為了使特征向量空間對光照,陰影和邊緣變化具有魯棒性。還有歸一化是針對每一個block進行的,一般采用的歸一化函數有以下四種:

在人體檢測系統中進行HOG計算時一般使用L2-norm,Dalal的文章也驗證了對於人體檢測系統使用L2-norm的時候效果最好。
5)得出HOG最終的特征向量
3.HOG的應用:
主要用在object detection 領域,特別是行人檢測,智能交通系統,當然也有文章提到把HOG用在手勢識別,人臉識別等方面。
4.HOG與SIFT區別
HOG和SIFT都屬於描述子,以及由於在具體操作上有很多相似的步驟,所以致使很多人誤認為HOG是SIFT的一種,其實兩者在使用目的和具體處理細節上是有很大的區別的。HOG與SIFT的主要區別如下:
① SIFT是基於關鍵點特征向量的描述。
② HOG是將圖像均勻的分成相鄰的小塊,然后在所有的小塊內統計梯度直方圖。
③ SIFT需要對圖像尺度空間下對像素求極值點,而HOG中不需要。
④ SIFT一般有兩大步驟,第一個步驟是對圖像提取特征點,而HOG不會對圖像提取特征點。
5.HOG的優點:
HOG表示的是邊緣(梯度)的結構特征,因此可以描述局部的形狀信息;
位置和方向空間的量化一定程度上可以抑制平移和旋轉帶來的影響;
采取在局部區域歸一化直方圖,可以部分抵消光照變化帶來的影響。
由於一定程度忽略了光照顏色對圖像造成的影響,使得圖像所需要的表征數據的維度降低了。
而且由於它這種分塊分單元的處理方法,也使得圖像局部像素點之間的關系可以很好得到的表征。
6.HOG的缺點:
描述子生成過程冗長,導致速度慢,實時性差;
很難處理遮擋問題。
由於梯度的性質,該描述子對噪點相當敏感