姓名:徐嬌 學號:17011210547
參考360百科
【嵌牛導讀】在圖像處理中,若要對圖像進行特征提取,經常會用到HOG特征,下面我會通過本博客對HOG特征做一個簡要的介紹。
【嵌牛鼻子】HOG特征
【嵌牛提問】HOG特征提取具體是如何實現的?它有什么優缺點?
【嵌牛正文】
HOG特征
一、HOG特征的簡介
1、主要思想:
在一副圖像中,局部目標的表象和形狀能夠被梯度或邊緣的方向密度分布很好地描述。其本質為:梯度的統計信息,而梯度主要存在于邊緣的地方。
Hog特征結合SVM分類器已經被廣泛應用于圖像識別中,尤其在行人檢測中獲得了極大的成功。
2、實現方法:
首先將圖像分成小的連通區域,這些連通區域被叫做細胞單元,然后采集細胞單元中各像素點的梯度的或邊緣的方向直方圖,最后把這些直方圖組合起來,就可以構成特征描述符。
3、性能提高:
將這些局部直方圖在圖像的更大的范圍內(叫做區間)進行對比度歸一化,可以提高該算法的性能,所采用的方法是:先計算各直方圖在這個區間中的密度,然后根據這個密度對區間中的各個細胞單元做歸一化。通過這個歸一化后,能對光照變化和陰影獲得更好的效果。
二、HOG特征的優缺點
1.優點:
HOG表示的是邊緣(梯度)的結構特征,因此可以描述局部的形狀信息;位置和方向空間的量化一定程度上可以抑制平移和旋轉帶來的影響;采取在局部區域歸一化直方圖,可以部分抵消光照變化帶來的影響。由于一定程度忽略了光照顏色對圖像造成的影響,使得圖像所需要的表征數據的維度降低了。而且由于它這種分塊分單元的處理方法,也使得圖像局部像素點之間的關系可以很好得到的表征。
2.缺點:
描述子生成過程冗長,導致速度慢,實時性差;很難處理遮擋問題。由于梯度的性質,該描述子對噪點相當敏感。
三、HOG特征的提取與計算步驟
1.大概過程:
HOG特征提取方法就是將一個image(所要檢測的目標或者掃描窗口):
1)灰度化(將圖像看做一個x,y,z(灰度)的三維圖像);
2)采用Gamma校正法對輸入圖像進行顏色空間的標準化(歸一化);目的是調節圖像的對比度,降低圖像局部的陰影和光照變化所造成的影響,同時可以抑制噪音的干擾;
3)計算圖像每個像素的梯度(包括大小和方向);主要是為了捕獲輪廓信息,同時進一步弱化光照的干擾。
4)將圖像劃分成小cells(例如6*6像素/cell);
5)統計每個cell的梯度直方圖(不同梯度的個數),即可形成每個cell的descriptor(描述子);
6)將每幾個cell組成一個block(例如3*3個cell/block),一個block內所有cell的特征descriptor串聯起來便得到該block的HOG特征descriptor。
7)將圖像image內的所有block的HOG特征descriptor串聯起來就可以得到該image(你要檢測的目標)的HOG特征descriptor了。這個就是最終的可供分類使用的特征向量了。
2.HOG特征的具體提取步驟如下:
(1)灰度化(將圖像看做一個x,y,z(灰度)的三維圖像);
(2)色彩和Gamma歸一化
為了減少光照因素的影響(提高檢測器對光照的魯棒性),首先需要將整個圖像進行歸一化。在圖像的紋理強度中,局部的表層曝光貢獻的比重較大,所以,這種壓縮處理能夠有效地降低圖像局部的陰影和光照變化。
Gamma壓縮公式:
Gamma=1,斜45°直線,不校正,輸出=輸入;
Gamma大于1,曲線下壓,輸出值小于輸入值;
Gamma小于1,曲線上拱,輸出值大于輸入值;
比如可以取Gamma=1/2;
(3)計算圖像梯度
計算圖像橫坐標和縱坐標方向的梯度,并據此計算每個像素位置的梯度方向值;求導操作不僅能夠捕獲輪廓,人影和一些紋理信息,還能進一步弱化光照的影響。
圖像平滑是指用于突出圖像的寬大區域、低頻成分、主干部分或抑制圖像噪聲和干擾高頻成分,使圖像亮度平緩漸變,減小突變梯度,改善圖像質量的圖像處理方法。
1)圖像平滑:對于灰度圖像,一般為了去除噪點,所以會先利用離散高斯平滑模板進行平滑,高斯函數在不同平滑的尺度下進行對灰度圖像進行平滑操作,Dalal等實驗表明在下,人體檢測效果最佳(即不做高斯平滑),使得錯誤率縮小了約一倍。不做平滑操作的可能原因:圖像是基于邊緣的,平滑會降低邊緣信息的對比度,從而減少圖像中的信號信息。
2)梯度法求圖像梯度:一階微分處理一般對灰度階梯有較強的響應,表示如下:
對于多元函數f(x,y),在其坐標(x,y)上的梯度是通過如下二維列向量定義的:
因為模值的計算開銷比較大,一般可以按如下公式近似求解:
PS:采用模板[-1,0,1]為例計算圖像梯度以及方向,通過梯度模板計算水平和垂直方向的梯度分別如下:
其中,分別表示該像素點的水平,垂直梯度值。計算該像素點的梯度值(梯度強度以及梯度方向):
對于梯度方向的范圍限定,一般采用無符號的范圍,故梯度方向可表示為:
圖像中像素點(x,y)的梯度為:
最常用的方法是:首先用[-1,0,1]梯度算子對原圖像做卷積運算,得到x方向(水平方向,以向右為正方向)的梯度分量gradscalx,然后用[1,0,-1]梯度算子對原圖像做卷積運算,得到y方向(豎直方向,以向上為正方向)的梯度分量gradscaly。然后再用以上公式計算該像素點的梯度大小和方向。
(4)構建方向的直方圖
1)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度的度量方式。
2) Block中各個參數的最終選取:
對于人體對象檢測,塊的大小為3×3個單元格,單元格的大小為6×6個象素時,檢測效果是最好的,錯誤率約為10%左右。塊的大小為2×2個單元格,單元格大小為8×8個象素時,也相差無幾。6-8個象素寬的單元格,2-3個單元格寬的塊,其錯誤率都在最低的一個平面上。塊的尺寸太大時標準化的作用被削弱了從而導致錯誤率上升,而如果塊的尺寸太小時,有用的信息反而會被過濾掉。
在實際應用中,在Block和Cell劃分之后,對于得到各個像區域中,有時候還會進行一次高斯平滑,但是對于人體目標檢測等問題,該步驟往往可以忽略,實際應用效果不大,主要還是去除區域中噪點,因為梯度對于噪點相當敏感。
3)對梯度方向的投影權重方式的選取:
細胞單元中的每一個像素點都為某個基于方向的直方圖通道投票。
投票是采取加權投票的方式,即每一票都是帶有權值的,這個權值是根據該像素點的梯度幅度計算出來。可以采用幅值本身或者它的函數來表示這個權值,實際測試表明:使用幅值來表示權值能獲得最佳的效果,當然,也可以選擇幅值的函數來表示,比如幅值的平方根、幅值的平方、幅值的截斷形式等。細胞單元可以是矩形的,也可以是星形的。直方圖通道是平均分布在0-180o(無向)或0-360o(有向)范圍內。經研究發現,采用無向的梯度和9個直方圖通道,能在行人檢測試驗中取得最佳的效果。
梯度大小是作為投影的權值的。例如說:這個像素的梯度方向是20-40度,然后它的梯度大小是2,那么直方圖第2個bin的計數就不是加1,而是加2
(5)將細胞單元組合成大的區間(HOG特征向量歸一化)
由于局部光照的變化以及前景-背景對比度的變化,使得梯度強度的變化范圍非常大。這就需要對梯度強度做歸一化。歸一化能夠進一步地對光照、陰影和邊緣進行壓縮。
歸一化采取的辦法是:把各個細胞單元組合成大的、空間上連通的區間。這樣,HOG描述符就變成了由各區間所有細胞單元的直方圖成分所組成的一個向量。這些區間是互有重疊的,這就意味著:每一個細胞單元的輸出都多次作用于最終的描述器。
對block塊內特征向量的歸一化主要是為了使特征向量空間對光照,陰影和邊緣變化具有魯棒性。歸一化是針對每一個block進行的,一般采用的歸一化函數有以下四種:
在人體檢測系統中進行HOG計算時一般使用L2-norm,Dalal的文章也驗證了對于人體檢測系統使用L2-norm的時候效果最好。
(6)收集HOG特征
然后把提取的HOG特征輸入到SVM分類器中,尋找一個最優超平面作為決策函數。
四、R-HOG與C-HOG
R-HOG跟SIFT描述器(尺度不變特征變換(SIFT)包括一個特征檢測器和一個特征描述子。特征檢測器從一副圖片中提取一些不受光照,視角等影響的特征區域。特征描述子就是用一個符號來簡潔概要地表示區域特征。)看起來很相似,但他們的不同之處是:R-HOG是在單一尺度下、密集的網格內、沒有對方向排序的情況下被計算出來;而SIFT描述器是在多尺度下、稀疏的圖像關鍵點上、對方向排序的情況下被計算出來。另外,R-HOG是各區間被組合起來用于對空域信息進行編碼,而SIFT的各描述器是單獨使用的。
R-HOG區間大體上是一些方形的格子,它可以有三個參數來表征:每個區間中細胞單元的數目、每個細胞單元中像素點的數目、每個細胞的直方圖通道數目。對于行人檢測,最佳的參數設置為: 3*3細胞/區間、6*6像素/細胞、9個直方圖通道。C-HOG區間有兩種不同的形式,它們的區別在于:一個的中心細胞是完整的,一個的中心細胞是被分割的。經研究發現C-HOG的這兩種形式都能取得相同的效果。C-HOG區間可以用四個參數來表征:角度盒子的個數、半徑盒子個數、中心盒子的半徑、半徑的伸展因子。通過實驗,對于行人檢測,最佳的參數設置為:4個角度盒子、2個半徑盒子、中心盒子半徑為4個像素、伸展因子為2。此外,對于R-HOG,中間加一個高斯空域窗口是非常有必要的,但對于C-HOG,這顯得沒有必要。C-HOG看起來很像基于形狀上下文的方法,但不同之處是:C-HOG的區間中包含的細胞單元有多個方向通道,而基于形狀上下文的方法僅僅只用到了一個單一的邊緣存在數。
五、HOG特征的總結
Dalal提出的Hog特征提取的過程:把樣本圖像分割為若干個像素的單元(cell),把梯度方向平均劃分為9個區間 (bin),在每個單元里面對所有像素的梯度方向在各個方向區間進行直方圖統計,得到一個9維的特征向量,每相鄰的4個單元構成一個塊(block),把 一個塊內的特征向量聯起來得到36維的特征向量,用塊對樣本圖像進行掃描,掃描步長為一個單元。最后將所有塊的特征串聯起來,就得到了人體的特征。至今雖然有很多行人檢測算法,但基本都是以HOG+SVM的思路為主。
Example.對于64*128的圖像而言,每16*16的像素組成一個cell,每2*2個cell組成一個塊,因為每個cell有9個特征,所以每個塊內有4*9=36個特征,以8個像素為步長,那么水平方向將有7個掃描窗口,垂直方向將有15個掃描窗口。也就是說,64*128的圖片,總共有36*7*15=3780個特征。