日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

HOG(Histogram of Oriented gradients) feature extraction

發(fā)布時(shí)間:2024/1/18 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 HOG(Histogram of Oriented gradients) feature extraction 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

轉(zhuǎn)載

https://blog.csdn.net/liulina603/article/details/8291093

1、HOG特征:

?????? 方向梯度直方圖(Histogram of Oriented Gradient, HOG)特征是一種在計(jì)算機(jī)視覺和圖像處理中用來進(jìn)行物體檢測(cè)的特征描述子。它通過計(jì)算和統(tǒng)計(jì)圖像局部區(qū)域的梯度方向直方圖來構(gòu)成特征。Hog特征結(jié)合SVM分類器已經(jīng)被廣泛應(yīng)用于圖像識(shí)別中,尤其在行人檢測(cè)中獲得了極大的成功。需要提醒的是,HOG+SVM進(jìn)行行人檢測(cè)的方法是法國研究人員Dalal在2005的CVPR上提出的,而如今雖然有很多行人檢測(cè)算法不斷提出,但基本都是以HOG+SVM的思路為主。

(1)主要思想:

?????? 在一副圖像中,局部目標(biāo)的表象和形狀(appearance and shape)能夠被梯度或邊緣的方向密度分布很好地描述。(本質(zhì):梯度的統(tǒng)計(jì)信息,而梯度主要存在于邊緣的地方)。

(2)具體的實(shí)現(xiàn)方法是:

?????? 首先將圖像分成小的連通區(qū)域,我們把它叫細(xì)胞單元。然后采集細(xì)胞單元中各像素點(diǎn)的梯度的或邊緣的方向直方圖。最后把這些直方圖組合起來就可以構(gòu)成特征描述器。

(3)提高性能:

?????? 把這些局部直方圖在圖像的更大的范圍內(nèi)(我們把它叫區(qū)間或block)進(jìn)行對(duì)比度歸一化(contrast-normalized),所采用的方法是:先計(jì)算各直方圖在這個(gè)區(qū)間(block)中的密度,然后根據(jù)這個(gè)密度對(duì)區(qū)間中的各個(gè)細(xì)胞單元做歸一化。通過這個(gè)歸一化后,能對(duì)光照變化和陰影獲得更好的效果。

(4)優(yōu)點(diǎn):

?????? 與其他的特征描述方法相比,HOG有很多優(yōu)點(diǎn)。首先,由于HOG是在圖像的局部方格單元上操作,所以它對(duì)圖像幾何的和光學(xué)的形變都能保持很好的不變性,這兩種形變只會(huì)出現(xiàn)在更大的空間領(lǐng)域上。其次,在粗的空域抽樣、精細(xì)的方向抽樣以及較強(qiáng)的局部光學(xué)歸一化等條件下,只要行人大體上能夠保持直立的姿勢(shì),可以容許行人有一些細(xì)微的肢體動(dòng)作,這些細(xì)微的動(dòng)作可以被忽略而不影響檢測(cè)效果。因此HOG特征是特別適合于做圖像中的人體檢測(cè)的。

?

2、HOG特征提取算法的實(shí)現(xiàn)過程:

大概過程:

HOG特征提取方法就是將一個(gè)image(你要檢測(cè)的目標(biāo)或者掃描窗口):

1)灰度化(將圖像看做一個(gè)x,y,z(灰度)的三維圖像);

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

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

4)將圖像劃分成小cells(例如6*6像素/cell);

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

6)將每幾個(gè)cell組成一個(gè)block(例如3*3個(gè)cell/block),一個(gè)block內(nèi)所有cell的特征descriptor串聯(lián)起來便得到該block的HOG特征descriptor。

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

?

?

?

具體每一步的詳細(xì)過程如下:

(1)標(biāo)準(zhǔn)化gamma空間和顏色空間

?????為了減少光照因素的影響,首先需要將整個(gè)圖像進(jìn)行規(guī)范化(歸一化)。在圖像的紋理強(qiáng)度中,局部的表層曝光貢獻(xiàn)的比重較大,所以,這種壓縮處理能夠有效地降低圖像局部的陰影和光照變化。因?yàn)轭伾畔⒆饔貌淮?#xff0c;通常先轉(zhuǎn)化為灰度圖;

???? Gamma壓縮公式:

?????比如可以取Gamma=1/2;

?

(2)計(jì)算圖像梯度

????????計(jì)算圖像橫坐標(biāo)和縱坐標(biāo)方向的梯度,并據(jù)此計(jì)算每個(gè)像素位置的梯度方向值;求導(dǎo)操作不僅能夠捕獲輪廓,人影和一些紋理信息,還能進(jìn)一步弱化光照的影響。

圖像中像素點(diǎn)(x,y)的梯度為:

?

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

?

(3)為每個(gè)細(xì)胞單元構(gòu)建梯度方向直方圖

????????第三步的目的是為局部圖像區(qū)域提供一個(gè)編碼,同時(shí)能夠保持對(duì)圖像中人體對(duì)象的姿勢(shì)和外觀的弱敏感性。

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

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

???????? 細(xì)胞單元可以是矩形的(rectangular),也可以是星形的(radial)。

?

(4)把細(xì)胞單元組合成大的塊(block),塊內(nèi)歸一化梯度直方圖

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

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

??????? 區(qū)間有兩個(gè)主要的幾何形狀——矩形區(qū)間(R-HOG)和環(huán)形區(qū)間(C-HOG)。R-HOG區(qū)間大體上是一些方形的格子,它可以有三個(gè)參數(shù)來表征:每個(gè)區(qū)間中細(xì)胞單元的數(shù)目、每個(gè)細(xì)胞單元中像素點(diǎn)的數(shù)目、每個(gè)細(xì)胞的直方圖通道數(shù)目。

?????? 例如:行人檢測(cè)的最佳參數(shù)設(shè)置是:3×3細(xì)胞/區(qū)間、6×6像素/細(xì)胞、9個(gè)直方圖通道。則一塊(block)的特征數(shù)為:3*3*9;

?

(5)收集HOG特征

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

????

(6)那么一個(gè)圖像的HOG特征維數(shù)是多少呢?

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

HOG維數(shù),16×16像素組成的block,8x8像素的cell

?

注釋:

行人檢測(cè)HOG+SVM

總體思路:
1、提取正負(fù)樣本hog特征
2、投入svm分類器訓(xùn)練,得到model
3、由model生成檢測(cè)子
4、利用檢測(cè)子檢測(cè)負(fù)樣本,得到hardexample
5、提取hardexample的hog特征并結(jié)合第一步中的特征一起投入訓(xùn)練,得到最終檢測(cè)子。

深入研究hog算法原理:
一、hog概述

Histograms of Oriented Gradients,顧名思義,方向梯度直方圖,是目標(biāo)的一種描述的方式,既是描述子。

二、hog提出
hog是05年一位nb的博士提出來的,論文鏈接?http://wenku.baidu.com/view/676f2351f01dc281e53af0b2.html

三、算法理解
??????? 終于到10月了,終于可以松一口氣了,整理一下hog的算法流程。

首先要有一個(gè)整體的認(rèn)識(shí),每一個(gè)目標(biāo)都對(duì)應(yīng)一個(gè)一維特征向量,這個(gè)向量一共有n維,這個(gè)n不是憑空瞎猜的,是有理有據(jù),打個(gè)比方,為什么opencv自帶的hog檢測(cè)子是3781維的?這個(gè)問題在初期確實(shí)比較頭疼,糾結(jié)了好長(zhǎng)的時(shí)間,不過別著急,

我們先來看一下opencv里的HOGDescriptor這個(gè)結(jié)構(gòu)的構(gòu)造函數(shù)HOGDescriptor(Size?winSize,Size blocksize,Size blockStride,Size cellSize,...(后面的參數(shù)在這里用不到)),去查一下opencv默認(rèn)的參數(shù)我們可以看到,winSize(64,128),blockSize(16,16),blockStride(8,8),cellSize(8,8),很顯然hog是將一個(gè)特征窗口win劃分為很多的塊block,在每一個(gè)塊里又劃分為很多的細(xì)胞單元cell(即胞元),hog特征向量既是把這些所有的cell對(duì)應(yīng)的小特征串起來得到一個(gè)高維的特征向量,那么這個(gè)窗口對(duì)應(yīng)的一維特征向量維數(shù)n就等于:

窗口中的塊數(shù) x 塊中的胞元數(shù)?x 每一個(gè)胞元對(duì)應(yīng)的特征向量數(shù)。

寫到這里,我們計(jì)算一下3781如何得到的,窗口大小64x128,塊大小16x16,塊步長(zhǎng)8x8,那么窗口中塊的數(shù)目是((64-16)/8+1)*((128-16)/8+1) = 7*15 =105個(gè)塊,塊大小為16x16,胞元大小為8x8,那么一個(gè)塊中的胞元cell數(shù)目是 (16/8)*(16/8) =4個(gè)胞元,到這里我們可以看到要求最后需要的維數(shù)n,只需要計(jì)算每一個(gè)胞元對(duì)應(yīng)的向量,這個(gè)參數(shù)在哪呢?別急,我們把每一個(gè)胞元投影到9個(gè)bin(如何投影?這里卡了很長(zhǎng)一段時(shí)間,后面會(huì)說),那么每一個(gè)胞元對(duì)應(yīng)的向量就是9維,每個(gè)bin對(duì)應(yīng)該9維向量的一個(gè)數(shù),現(xiàn)在看一下是不是計(jì)算窗口維數(shù)的三個(gè)需求量都知道了,n =?窗口中的塊數(shù) x 塊中的胞元數(shù) ?x 每一個(gè)胞元對(duì)應(yīng)的特征向量數(shù),帶入看一下n= 105x4x9 = 3780,這就是這個(gè)窗口對(duì)應(yīng)的特征了。有人會(huì)說,為什么opencv里的getDefaultPeopleDetector()得到的是3781維呢?這是因?yàn)榱硗庖痪S是一維偏移,(很崩潰是吧,我也崩潰很久。。。,下一段解釋)。

我們利用hog+svm檢測(cè)行人,最終的檢測(cè)方法是最基本的線性判別函數(shù),wx + b = 0,剛才所求的3780維向量其實(shí)就是w,而加了一維的b就形成了opencv默認(rèn)的3781維檢測(cè)算子,而檢測(cè)分為train和test兩部分,在train期間我們需要提取一些列訓(xùn)練樣本的hog特征使用svm訓(xùn)練最終的目的是為了得到我們檢測(cè)的w以及b,在test期間提取待檢測(cè)目標(biāo)的hog特征x,帶入方程是不是就能進(jìn)行判別了呢?

**************************************************************************************************

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?華麗的分割線

寫到這里,至少對(duì)hog的運(yùn)作流程有了一個(gè)大概的認(rèn)識(shí),在網(wǎng)上能看到很多的hog計(jì)算方法,神馬歸一化,計(jì)算梯度,對(duì)每個(gè)胞元進(jìn)行投影,千篇一律,對(duì)剛開始接觸的人來說,看完好像懂了,但就是不知道怎么用,hog和svm如何配合,而且那些東西對(duì)我們的初期的學(xué)期完全沒用,好處就是會(huì)用hog了,再回過頭去看原理,才有收獲,那些資料網(wǎng)上一堆,這里就不畫蛇添足了。

另外值得一提的是在計(jì)算胞元特征的時(shí)候,需要向各個(gè)bin投影,這個(gè)投影里面大有文章,師兄畢業(yè)論文里就提到了,取名叫‘三維一次線性插值’,如果想深入了解hog的可以仔細(xì)琢磨去。

**************************************************************************************************

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?繼續(xù)華麗的分割

下面說一下libsvm和CvSVM的使用,我覺得libsvm更好用,不過cvsvm也是基于libsvm2.6(沒記錯(cuò)的話)改寫的,這兩個(gè)的區(qū)別就是libsvm訓(xùn)練得到的是一個(gè)model,而cvsvm是xml文件,在計(jì)算最后的wx+b=0中的w向量的時(shí)候,對(duì)于libsvm直接處理model文件即可,但是對(duì)于cvsvm則可以跳過產(chǎn)生xml文件,直接使用cvsvm的對(duì)象中的屬性即可(這里說的有點(diǎn)模糊,二者選一個(gè)即可,關(guān)系倒不是很大)

歡迎大家批評(píng)指正、交流學(xué)習(xí)

?

總結(jié)

以上是生活随笔為你收集整理的HOG(Histogram of Oriented gradients) feature extraction的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。