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

歡迎訪問(wèn) 生活随笔!

生活随笔

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

编程问答

特征提取——HOG方向梯直方图

發(fā)布時(shí)間:2023/12/15 编程问答 58 豆豆
生活随笔 收集整理的這篇文章主要介紹了 特征提取——HOG方向梯直方图 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1、簡(jiǎn)介
HOG(Histogram of Oriented Gridients的簡(jiǎn)寫(xiě))特征檢測(cè)算法,最早是由法國(guó)研究員Dalal等在CVPR-2005上提出來(lái)的,一種解決人體目標(biāo)檢測(cè)的圖像描述子,是一種用于表征圖像局部梯度方向和梯度強(qiáng)度分布特性的描述符。其主要思想是:在邊緣具體位置未知的情況下,邊緣方向的分布也可以很好的表示行人目標(biāo)的外形輪廓。
2、檢測(cè)步驟
HOG特征檢測(cè)算法的幾個(gè)步驟:顏色空間歸一化—>梯度計(jì)算—>梯度方向直方圖—>重疊塊直方圖歸一化—>HOG特征。

2.1、顏色空間歸一化
由于圖像的采集環(huán)境、裝置等因素,采集到的人臉圖像效果可能不是很好,容易出現(xiàn)誤檢或漏檢的情況,所以需要對(duì)采集到的人臉進(jìn)行圖像預(yù)處理,主要是處理光線太暗或太強(qiáng)的情況,這里有兩次處理:圖像灰度化、Gamma校正。
①圖像灰度化
對(duì)于彩色圖像,將RGB分量轉(zhuǎn)化成灰度圖像,其轉(zhuǎn)化公式為:

②Gamma校正
在圖像照度不均勻的情況下,可以通過(guò)Gamma校正,將圖像整體亮度提高或降低。在實(shí)際中可以采用兩種不同的方式進(jìn)行Gamma標(biāo)準(zhǔn)化,平方根、對(duì)數(shù)法。這里我們采用平方根的辦法,公式如下(其中γ=0.5):

2.2、梯度計(jì)算
對(duì)經(jīng)過(guò)顏色空間歸一化后的圖像,求取其梯度及梯度方向。分別在水平和垂直方向進(jìn)行計(jì)算,梯度算子為:

gamma和梯度代碼: /***************************************** Copyright (c) 2015 Jingshuang Hu @filename:demo.cpp @datetime:2015.08.06 @author:HJS @e-mail:eleftheria@163.com @blog:http://blog.csdn.net/hujingshuang *****************************************/ #include <iostream> #include <cv.h> #include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp> #include <opencv2/imgproc/imgproc.hpp>using namespace cv; using namespace std; int main() {Mat picture = imread("test.jpg", 0);//灰度Mat img;picture.convertTo(img, CV_32F); //轉(zhuǎn)換成浮點(diǎn)sqrt(img, img); //gamma校正normalize(img, img, 0, 255, NORM_MINMAX, CV_32F);//歸一化[0,255]浮點(diǎn)數(shù)Mat gradient = Mat::zeros(img.rows, img.cols, CV_32F);//梯度Mat theta = Mat::zeros(img.rows, img.cols, CV_32F);//角度for (int i = 1; i < img.rows - 1; i++){for (int j = 1; j < img.cols - 1; j++){float Gx, Gy;Gx = img.at<float>(i, j + 1) - img.at<float>(i, j - 1);Gy = img.at<float>(i + 1, j) - img.at<float>(i - 1, j);gradient.at<float>(i, j) = sqrt(Gx * Gx + Gy * Gy);//梯度模值theta.at<float>(i, j) = float(atan2(Gy, Gx) * 180 / CV_PI);//梯度方向[-180°,180°]}}normalize(gradient, gradient, 0, 255, NORM_MINMAX, CV_8UC1);//歸一化[0,255] 無(wú)符號(hào)整型normalize(img, img, 0, 255, NORM_MINMAX, CV_8UC1);imshow("原圖", picture);imshow("Gamma校正", img);imshow("梯度圖", gradient);waitKey();return 0; }

2.3、梯度方向直方圖
將圖像劃分成若干個(gè)cells(單元),8x8=64個(gè)像素為一個(gè)cell,相鄰的cell之間不重疊。在每個(gè)cell內(nèi)統(tǒng)計(jì)梯度方向直方圖,將所有梯度方向劃分為9個(gè)bin(即9維特征向量),作為直方圖的橫軸,角度范圍所對(duì)應(yīng)的梯度值累加值作為直方圖縱軸,每個(gè)bin的角度范圍如下。

2.4、重疊塊直方圖歸一化
HOG的圖像分割策略,一般來(lái)說(shuō)有overlap和non-overlap兩種。overlap指的是分割出的區(qū)塊(patch)互相交疊,有重合的區(qū)域。non-overlap指的是區(qū)塊不交疊,沒(méi)有重合的區(qū)域。這兩種策略各有各的好處。先說(shuō)overlap,這種分割方式可以防止對(duì)一些物體的切割,以眼睛為例,如果分割的時(shí)候正好把眼睛從中間切割并且分到了兩個(gè)patch中,提取完HOG特征之后,這會(huì)影響接下來(lái)的分類(lèi)效果,但是如果兩個(gè)patch之間overlap,那么至少在一個(gè)patch會(huì)有完整的眼睛。overlap的缺點(diǎn)是計(jì)算量大,因?yàn)橹丿B區(qū)域的像素需要重復(fù)計(jì)算。再說(shuō)non-overlap,缺點(diǎn)就是上面提到的,有時(shí)會(huì)將一個(gè)連續(xù)的物體切割開(kāi),得到不太“好”的HOG特征,優(yōu)點(diǎn)是計(jì)算量小,尤其是與Pyramid(金字塔)結(jié)合時(shí),這個(gè)優(yōu)點(diǎn)更為明顯。

假設(shè)有一幅圖像大小為220x310,將其劃分成若干個(gè)8x8的cells,顯然220÷8=27.5、310÷8=38.75不是整數(shù),也就是說(shuō)劃分之后依然還有多余像素不能構(gòu)成cell。處理辦法是將圖像縮放成能被8整除的長(zhǎng)寬(如216x304),再劃分。216÷8=27,304÷8=38,因此,216x304的圖像可以得到27x38個(gè)cells,沒(méi)有重疊。
由于圖像中光照情況和背景的變化多樣,梯度值的變化范圍會(huì)比較大,因而良好的特征標(biāo)準(zhǔn)化對(duì)于檢測(cè)率的提高相當(dāng)重要。標(biāo)準(zhǔn)化的方法多種多樣,大多數(shù)的都是將celll放在block中,然后標(biāo)準(zhǔn)化每個(gè)block。
以上述縮放后的圖像為例,共得到27x38個(gè)cell,也就是將圖像劃分成了27x38個(gè)單元;將上下左右相鄰的2x2個(gè)cells當(dāng)做一個(gè)block整體,如下所示(為方便觀察,每個(gè)顏色框故意錯(cuò)開(kāi)了一點(diǎn)),黑色的8x8像素為一個(gè)cell,紅、藍(lán)、黃、粉紅、綠框都是一個(gè)block,即每個(gè)框內(nèi)2x2的cell組成一個(gè)block。故27x38個(gè)cell可劃分成26x37個(gè)block,每個(gè)block為16x16像素。相鄰block之間是有重疊的,這樣有效的利用了相鄰像素信息,對(duì)檢測(cè)結(jié)果有很大的幫助。

接下分別對(duì)每個(gè)block進(jìn)行標(biāo)準(zhǔn)化,一個(gè)block內(nèi)有4個(gè)cell,每個(gè)cell含9維特征向量,故每個(gè)block就由4x9=36維特征向量來(lái)表征。

由于L2-norm簡(jiǎn)單且在檢測(cè)中效果相對(duì)較好,故一般采用它。

經(jīng)過(guò)上述對(duì)有重疊部分block的直方圖歸一化之后,將所有block的特征向量都組合起來(lái),則形成26x37x36=34632維特征向量,這就是HOG特征,這個(gè)特征向量就可以用來(lái)表征整個(gè)圖像了。
實(shí)際上,在運(yùn)用的時(shí)候,我們通常是選取一幅圖像中的一個(gè)窗口來(lái)進(jìn)行特征提取,依然以上述220X310大小圖像為例,經(jīng)過(guò)縮放處理后為216x304,但并不直接提取整個(gè)圖像的HOG特征,而是用一個(gè)固定大小的窗口在圖像上滑動(dòng),滑動(dòng)的間隔為8個(gè)像素,opencv中默認(rèn)的窗口大小為128x64(高128,寬64),即有(128÷8)x(64÷8)=16x8個(gè)cell,也即有15x7個(gè)block,這樣一來(lái)一幅圖像就可以取到(27-16)x(38-8)=11x30=330個(gè)窗口?,F(xiàn)在提取每個(gè)窗口的HOG特征,則可得到105x36=3780維HOG特征向量。
將這330個(gè)3780維的HOG特征當(dāng)做測(cè)試樣本,用支持向量機(jī)(SVM)分類(lèi)器來(lái)判別出,這些窗口的HOG特征是否有行人,有行人的用矩形框標(biāo)記起來(lái)。HOG行人特征及所對(duì)應(yīng)的SVM分類(lèi)器的參數(shù),在opencv中已經(jīng)訓(xùn)練好了,我們只需要得到HOG特征,然后調(diào)用SVM即可得到判別結(jié)果。

參考:
http://blog.csdn.net/hujingshuang/article/details/47337707/
http://blog.sina.com.cn/s/blog_60e6e3d50101bkpn.html
https://www.cnblogs.com/hrlnw/archive/2013/08/06/2826651.html

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)

總結(jié)

以上是生活随笔為你收集整理的特征提取——HOG方向梯直方图的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

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