1. 程式人生 > >影象處理之特徵提取(一):HOG特徵

影象處理之特徵提取(一):HOG特徵

HOG方向梯度直方圖:

(1)具體在HOG中方向梯度的實現:首先用[-1,0,1]梯度運算元對原影象做卷積運算,得到x方向(水平方向,以向右為正方向)的梯度分量gradscalx,然後用[1,0,-1]T梯度運算元對原影象做卷積運算,得到y方向(豎直方向,以向上為正方向)的梯度分量gradscaly。然後再用以下公式計算該畫素點的梯度大小和方向。

      對於64*128的影象而言,每8*8的畫素組成一個cell,每2*2個cell組成一個塊,以8個畫素為步長,那麼,水平方向將有7個掃描視窗,垂直方向將有15個掃描視窗。

      單獨將其中一個8*8的小格拿出來,方向梯度中指的方向範圍為2π,360°,為了畫直方圖我們還需要選取合適的組距也就是bin, 這裡組距選取2π/9,也就是最後的直方圖組數為9。

 把上圖中單個cell對應的方向直方圖轉換為單維向量,也就是按規定組距對對應方向梯度個數進行編碼,(8,10,6,12,4,5,8,6,14),得到單個cell的9個特徵,每個block(掃描視窗)包含2*2個cell也就是2*2*9=36個特徵,一個64*128大小的影象最後得到的特徵數為36*7*15=3780個。這樣將一幅直觀的梯度圖通過分解提取變為計算機容易理解的特徵向量。

 HOG描述子高維影象特徵向量生成步驟:

1.影象歸一化;

 2.利用一階微分計算影象梯度;

3.基於梯度幅值的方向權重投影;

4.HOG特徵向量歸一化;

 5.得出HOG最終的特徵向量

step 1:影象歸一化

  歸一化影象的主要目的是提高檢測器對光照的魯棒性,因為實際的人體目標可能出現的各種不同的場合,檢測器,必須對光照不太敏感才會有好的效果。

Step 2 利用一階微分計算影象梯度

1、影象平滑

        對於灰度影象,一般為了去除噪點,所以會先利用離散高斯平滑模板進行平滑:高斯函式在不同平滑的尺度下進行對灰度影象進行平滑操作,Dalal等實驗表明在下,人體檢測效果最佳(即不做高斯平滑),使得錯誤率縮小了約一倍。不做平滑操作,可能原因:影象時基於邊緣的,平滑會降低邊緣資訊的對比度,從而減少影象中的訊號資訊。

2、梯度法求影象梯度

Step 3 基於梯度幅值的方向權重投影

       HOG結構:  通常使用的HOG結構大致有三種:矩形HOG(簡稱為R-HOG),圓形HOG和中心環繞HOG。它們的單位都是Block(即塊)。Dalal的試驗證明矩形HOG和圓形HOG的檢測效果基本一致,而環繞形HOG效果相對差一些。並且,圓形與環繞形的HOG文獻比較少,應用研究沒有矩形HOG普遍。所以,著重講解矩形HOG的情況。矩形HOG塊的劃分:一般一個塊(Block)都由若干單元(Cell)組成,一個單元都有如干個畫素點組成。

      在每個Cell中有獨立做梯度方向統計,從而以梯度方向為橫軸的的直方圖,梯度方向可取0度到180度或0度~360度,但dalal實驗表明,對於人體目標檢測0度~180度這種忽略度數正負級的方向範圍能夠取得更好的結果。然後又將這個梯度分佈平均分成個方向角度(orientation bins),每個方向角度範圍都會對應一個直方柱。 根據Dalal等人實驗,在人體目標檢測中,在無符號方向角度範圍並將其平均分成9份(bins)能取得最好的效果,當bin的數目繼續增大效果改變不明顯,故一般在人體目標檢測中使用bin數目為9範圍0~180度的度量方式。

      對梯度方向的投影權重方式的選取: 對於梯度方向的加權投影,一般都採用一個權重投影函式,它可以是畫素點的梯度幅值,梯度幅值的平方根或梯度幅值的平方,甚至可以使梯度幅值的省略形式,它們都能夠一定程度上反應出畫素上一定的邊緣資訊。根據Dalal等人論文的測試結果,採用梯度幅值量級本身得到的檢測效果最佳,使用量級的平方根會輕微降低檢測結果,而使用二值的邊緣權值表示會嚴重降低效果(約為5%個單位10-4FPPW(False Positives Per Window))。

         問:塊與塊之間是相互獨立的麼?答:通常的將某個變數範圍固定劃分為幾個區域,由於邊界變數與相鄰區域也有相關性,所以變數只對一個區域進行投影而對相鄰區域完全無關時會對其他區域產生混疊效應。

        分塊之間的相關性問題的解決:方案一:塊重疊,重複統計計算。

                                                           方案二:線性插值權重分配

         重疊塊:Datal等人在他們那篇關於HOG最為經典的論文《Histogram of Oriented Gradient for Human Detection》提出了利用塊與塊的重疊(Overlap)來解決混疊,並且取得了不錯的效果。 在重疊方式中,塊與塊之間的邊緣點被重複根據權重投影到各自相鄰塊(block)中,從而一定模糊了塊與塊之間的邊界,處於塊邊緣部分的畫素點也能夠給相鄰塊中的方向梯度直方圖提供一定貢獻,從而達到關聯塊與塊之間的關係的作用。Datal對於塊和塊之間相互重疊程度對人體目標檢測識別率影響也做了實驗分析。

        利用線性插值的方法解決分塊之間聯絡問題:有些文獻採用的不是塊與塊重疊的方法,而是採用線性插值的方法來削弱混疊效應。這種方法的主要思想是每個Block都對鄰近的Block都有影響,這種影響,我們可以以一種加權方式附加上去。

Step 4:HOG特徵向量歸一化

      我們要對block塊內的HOG特徵向量進行歸一化。對block塊內特徵向量的歸一化主要是為了使特徵向量空間對光照,陰影和邊緣變化具有魯棒性。還有歸一化是針對每一個block進行的,一般採用的歸一化函式有以下四種:

        在人體檢測系統中進行HOG計算時一般使用L2-norm,Dalal的文章也驗證了對於人體檢測系統使用L2-norm的時候效果最好。

Step 5 HOG最終的特徵向量生成