圖像局部紋理特征——HOG(Histogram of Oriented Gradient)

文章主要參考自?目標(biāo)檢測的圖像特征提取之(一)HOG特征?和?OpenCV HOGDescriptor 參數(shù)圖解

一、HOG的定義

HOG(方向梯度直方圖)特征是一種在計算機(jī)視覺和圖像處理中用來進(jìn)行物體檢測的特征描述子。它通過計算和統(tǒng)計圖像局部區(qū)域的梯度方向直方圖來構(gòu)成特征。

二、HOG特征的提取步驟

1)因為顏色信息作用不大,所以對目標(biāo)圖像進(jìn)行灰度化;

2)采用Gamma校正法對灰度圖進(jìn)行標(biāo)準(zhǔn)化(歸一化);目的是調(diào)節(jié)圖像的對比度,降低圖像局部的陰影和光照變化所造成的影響,同時可以抑制噪音的干擾;

3)計算灰度圖每個像素的梯度(包括大小和方向);主要是為了捕獲輪廓信息,同時進(jìn)一步弱化光照的干擾。

最常用的方法是:首先用[-1,0,1]梯度算子(例如Sobel)對原圖像做卷積運算,得到x方向(水平方向,以向右為正方向)的梯度分量gradscalx,然后用[1,0,-1]T梯度算子對原圖像做卷積運算,得到y(tǒng)方向(豎直方向,以向上為正方向)的梯度分量gradscaly。然后再用以下公式計算該像素點的梯度大小和方向。

4)將圖像劃分成小cells(例如8*8像素大小的cell);


5)統(tǒng)計每個cell的梯度直方圖(不同梯度的個數(shù)),即可形成每個cell的descriptor;

該步驟的目的是為局部圖像區(qū)域(cell)提供一個編碼,同時能夠保持對圖像中人體對象的姿勢和外觀的弱敏感性。

我們將圖像分成若干個“cell”,例如每個cell為8*8個像素。假設(shè)我們采用9個bin的直方圖來統(tǒng)計這8*8個像素的梯度信息。也就是將cell的梯度方向360度分成9個方向塊,如圖所示:例如:如果這個像素的梯度方向是20-40度,直方圖第2個bin的計數(shù)就加一,這樣,對cell內(nèi)每個像素用梯度方向在直方圖中進(jìn)行加權(quán)投影(映射到固定的角度范圍),就可以得到這個cell的梯度方向直方圖了,就是該cell對應(yīng)的9維特征向量(因為有9個bin)。

如下圖所示(圖中Zi塊其實就是第i個bin)


像素梯度方向用到了,那么梯度大小呢?梯度大小就是作為投影的權(quán)值的。例如說:這個像素的梯度方向是20-40度,然后它的梯度大小是2(假設(shè)?。?,那么直方圖第2個bin的計數(shù)就不是加一了,而是加二(假設(shè)?。?/p>

6)將每幾個cell組成一個block(例如 大小為16*16的block,即一個block由4個cell組成),一個block內(nèi)所有cell的特征descriptor串聯(lián)起來便得到該block的HOG特征descriptor。

由于局部光照的變化以及前景-背景對比度的變化,使得梯度強(qiáng)度的變化范圍非常大。這就需要對梯度強(qiáng)度做歸一化。歸一化能夠進(jìn)一步地對光照、陰影和邊緣進(jìn)行壓縮。

作者采取的辦法是:把各個細(xì)胞單元組合成大的、空間上連通的區(qū)間(blocks)。這樣,一個block內(nèi)所有cell的特征向量串聯(lián)起來便得到該block的HOG特征。這些區(qū)間是互有重疊的(滑動塊,例如block stride為8),這就意味著:每一個單元格的特征會以不同的結(jié)果多次出現(xiàn)在最后的特征向量中。我們將歸一化之后的塊描述符(向量)就稱之為HOG描述符。



7)將圖像image內(nèi)的所有block的HOG特征descriptor串聯(lián)起來就可以得到該image(你要檢測的目標(biāo))的HOG特征descriptor了。這個就是最終的可供分類使用的特征向量了。

最后一步就是將檢測窗口中所有重疊的塊進(jìn)行HOG特征的收集,并將它們結(jié)合成最終的特征向量供分類使用。

例如行人檢測的滑動窗口大小通常為 64*128

以O(shè)penCV為例,構(gòu)建 HOG 特征的默認(rèn)參數(shù)設(shè)置如下:

CV_WRAP HOGDescriptor() : winSize(64,128), blockSize(16,16), blockStride(8,8),

cellSize(8,8),?nbins(9),?derivAperture(1),?winSigma(-1),

histogramNormType(HOGDescriptor::L2Hys),?L2HysThreshold(0.2),?gammaCorrection(true),

nlevels(HOGDescriptor::DEFAULT_NLEVELS)

{}

8)特征向量的維數(shù)

Dalal提出的Hog特征提取的過程:把樣本圖像分割為若干個像素的單元(cell),把梯度方向平均劃分為9個區(qū)間(bin),在每個單元里面對所有像素的梯度方向在各個方向區(qū)間進(jìn)行直方圖統(tǒng)計,得到一個9維的特征向量,每相鄰的4個單元(cell)構(gòu)成一個塊(block),把一個塊內(nèi)的特征向量聯(lián)起來得到36維的特征向量,用塊對樣本圖像進(jìn)行掃描,掃描步長為一個單元(block_stride = 8)。最后將所有塊的特征串聯(lián)起來,就得到了人體的特征。例如,對于64*128的圖像而言,每16*16的像素組成一個cell,每2*2個cell組成一個塊,因為每個cell有9個特征,所以每個塊內(nèi)有4*9=36個特征,以8個像素為步長,那么,水平方向?qū)⒂?個掃描窗口,垂直方向?qū)⒂?5個掃描窗口。也就是說,64*128的圖片,總共有36*7*15=3780個特征。

總體流程圖:

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 知乎上看到一個話題——目前火熱的 Deep Learning 會滅絕傳統(tǒng)的 SIFT / SURF 特征提取方法嗎...
    牛奶芝麻閱讀 101,559評論 4 81
  • 前一節(jié)OpenCV For iOS(四-上): 人臉檢測及分類器的訓(xùn)練說到分類器使用的 LBP Haar,這里補(bǔ)充...
    hehtao閱讀 2,647評論 0 3
  • 姓名:徐嬌 學(xué)號:17011210547 參考360百科 【嵌牛導(dǎo)讀】在圖像處理中,若要對圖像進(jìn)行特征提取,經(jīng)常會...
    徐Jiao閱讀 7,611評論 2 6
  • 好久沒寫東西了,由于樓主換了個城市工作,發(fā)現(xiàn)工作量蹭蹭的上來了,周末又喜歡出去覓食,導(dǎo)致沒學(xué)習(xí)很久,今天準(zhǔn)備水一篇...
    8776bc99ada8閱讀 14,395評論 7 29
  • 之所以,某些人, 怕鬼,是因為人不僅有生命, 還有塵世里許多的美好, 而鬼僅有虛無的幻靈, 就象赤腳的不怕穿鞋的,...
    詩與遠(yuǎn)方工作室閱讀 401評論 1 0

友情鏈接更多精彩內(nèi)容