HOG特征人体检测
1. 引言
HOG(Histogram of Oriented Gradient),即方向梯度直方圖。它通過計算和統(tǒng)計局部區(qū)域的梯度方向直方圖來構成特征,一般與SVM分類器結合用于目標的圖像識別。由于人體姿勢和外表的多變,在圖像中檢測人體是一項具有挑戰(zhàn)性的工作,要在不同的光照和背景下都能清晰的識別出人體,首先需要的是一個強壯的特征集。而研究表明,局部歸一化的HOG特征描述子相比邊緣方向直方圖、形狀上下文等,在對人體的特征描述方面有更佳的表現(xiàn)。因此,目前主流的人體識別采用的是HOG+SVM。
2. HOG特征
利用HOG特征的方法基本觀點是:局部目標的外表和形狀可以被局部梯度或邊緣方向的分布很好的描述,即便我們不知道對應的梯度和邊緣的位置。而這就引出一個問題,到底什么是梯度?在梯度(Gradient)與梯度下降法(Gradient descent)這篇文章中,對于梯度介紹的比較清楚。主要可以總結為:梯度是一個向量,即有方向有大小;它的方向是最大方向導數(shù)的方向,它的模為方向導數(shù)的最大值。通俗的講,梯度指的是函數(shù)在變量空間的某一點處的最大變化率及其方向。
在HOG特征提取中,我們首先將圖像分割成小的細胞單元(cells),將各個單元視為變量空間中的一點,在每個細胞單元中計算其梯度方向直方圖。考慮到對光照和陰影的不變性,對所得到的直方圖進行對比度歸一化,即將幾個細胞單元組合成一個更大的塊(blocks),并歸一化塊內的所有細胞單元。歸一化后的塊描述符即為HOG描述子,而后將一幅圖像中所有塊的描述子組合起來就形成了最終的特征向量,即HOG特征。然后就可以通過SVM分類器進行人體檢測。
3. HOG特征提取
使用某一特征進行目標識別,首先要對特征進行提取,而后才能進行匹配。HOG特征的提取主要分為以下幾步:
1. 圖像歸一化
圖像歸一化,或者說是標準化,即標準化gamma和顏色空間(Gamma/Colour Normalization)。其主要目的是減少光照因素的影響,同時可以抑制噪聲的干擾。
Gamma壓縮如下:
其中,gamma<1在高灰度區(qū)域內,動態(tài)范圍變小,圖像對比度降低,圖像整體灰度值變大,顯得亮一些;gamma>1,在低灰度值區(qū)域內,動態(tài)范圍變小,圖像對比度降低,圖像整體灰度值變小,變得暗淡。
2. 計算像素點的梯度
對圖像中的每一個像素點,計算其水平和垂直方向的梯度及梯度方向值,計算公式如下:
式中,分別表示像素點(x,y)處的水平方向梯度、垂直方向梯度、像素值。
像素點處的梯度幅值和方向為:
3. 分割細胞單元(cells)并構建直方圖
在這一步,將圖像分割成8*8個像素的細胞單元(cells),采用若干個bin的直方圖來統(tǒng)計這8*8像素的梯度信息(加權投影)
4. 細胞單元組合塊(blocks)及歸一化梯度直方圖
由于局部光照的變化以及前景-背景對比度的變化,使得梯度強度的變化范圍非常大。這就需要對梯度強度做歸一化。歸一化能夠進一步地對光照、陰影和邊緣進行壓縮。首先將多個臨近的cells組合成塊,并求其梯度直方圖向量,需要注意的是,塊與塊之間的細胞單元是共享的;然后采用不同的方法進行歸一化處理,即將直方圖向量中bin值的最大值限制為0.2以下,然后再重新歸一化一次,歸一化的方法主要有L2-norm、L1-norm、L1-sqrt和L2-Hys四種;塊的選取主要有兩種 形狀:矩形和環(huán)形,在此就不贅述了。用于行人檢測的最佳參數(shù)設置是:3×3細胞/區(qū)間、6×6像素/細胞、9個直方圖通道。則一塊的特征數(shù)為:3*3*9;
5. 組合形成HOG特征向量
? ?最后一步就是將檢測窗口中所有重疊的塊進行HOG特征的收集,并將它們結合成最終的特征向量供分類使用。
總結的流程圖如下:
?
4. 總結
以上即為HOG特征提取的原理及流程,事實上,在Open Cv中包含已經訓練好的分類模型,足以實現(xiàn)一些基本的識別要求。至于HOG與SVM的結合,這里有一個行人數(shù)據集INRIA Person dataset,可用于SVM的訓練,具體的SVM訓練及識別方法以后有機會再更。
轉載于:https://www.cnblogs.com/ethanda/p/10325101.html
總結
- 上一篇: 机器学习——python实现SVM模型w
- 下一篇: Java - 常用工具类 - 集合框架