1. 程式人生 > >影象處理之特徵提取:HOG特徵簡單梳理

影象處理之特徵提取:HOG特徵簡單梳理

HOG 方向梯度直方圖,這裡分解為方向梯度與直方圖。

一、方向梯度

梯度:在向量微積分中,標量場的梯度是一個向量場。標量場中某一點上的梯度指向標量場增長最快的方向,梯度的長度是這個最大的變化率。更嚴格的說,從歐幾里得空間Rn到R的函式的梯度是在Rn某一點最佳的線性近似。在這個意義上,梯度是雅可比矩陣的一個特殊情況。
  在單變數的實值函式的情況,梯度只是導數,或者,對於一個線性函式,也就是線的斜率

在影象中梯度的概念也是畫素值變換最快的方向,把邊緣(在影象合成中單一物體的輪廓叫做邊緣)入進來,邊緣與梯度保持垂直方向。


圖1

方向梯度中的方向是如何確定的?P0到P1的梯度方向:


圖2

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


二、直方圖

  直方圖是一個影象處理中用的比較多的概念,想深入瞭解,可以度娘一下。

三、方向梯度直方圖HOG的提取

方向梯度直方圖為影象區域性區域的梯度特徵量統計,我們為什麼要提取這個東東呢?     HOG主要應用於行人檢測方面,以行人照片為例。        
圖3   上圖是一張行人圖的四種表示方式,原三色圖,灰度圖,邊緣圖,梯度圖,人腦根據前期學習與先驗知識很容易理解到影象中包含著一個行人,並可以根據一定情況將其從影象中摳選出來,但計算機是怎麼思考的呢?怎樣讓計算機理解以上影象中包含的是一個行人呢?前三個影象現在情況不適用,所以選取梯度圖,現在的梯度圖同樣也是人腦處理理解的平面結果,計算機是辦不到的,需要將直觀地的梯度影象轉換成一種計算機容易理解的資料特徵語言。   對於64*128的影象而言,8*8的畫素組成一個cell2*2cell組成一個塊,8個畫素為步長,那麼,水平方向將有7個掃描視窗,垂直方向將有15個掃描視窗。也就是說,
64*128的圖片,總共有36*7*15=3780個特徵。這裡擷取梯度圖的一部分畫圖進行理解,尺寸與比例並不精確。

圖4   單獨將其中一個8*8的小格拿出來,方向梯度中指的方向範圍為2π,360°,為了畫直方圖我們還需要選取合適的組距也就是bin,這裡組距選取2π/9,也就是最後的直方圖組數為9。下圖為8*8畫素的cell對應的方向梯度(未全部畫出,共有8*8=64個)。
圖5   將上面的64個方向梯度,按著直方圖的引數設定進行畫圖,其中梯度的大小在統計數量中呈線性關係,比如梯度大小為2,則直方圖對應增加2個單位, 畫出的對應直方圖假設如下所示:
圖6   把上圖中單個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提取的主要內容,最後得到對應的行人的由方向梯度直方圖HOG提取到的特徵向量,但是計算機還是不知道這個資料陣列代表了什麼意思,什麼時候這組向量代表行人,什麼時候代表其他東西,怎樣train,最後通過不斷地學習,而後在檢測積累的基礎上對對未知影象檢測識別有沒有行人呢?那就是後一步SVM要做的事了。 參考文獻:

zouxy09   http://blog.csdn.net/zouxy09/article/details/7929348/    目標檢測的影象特徵提取之(一)HOG特徵

原文;http://blog.csdn.net/coming_is_winter/article/details/72850511