HOG概述
HOG(Histogram of Oriented Gradient)特征在對(duì)象檢測與模式匹配中是一種常見的特征提取算法,是基于本地像素塊進(jìn)行特征直方圖提取的一種算法,對(duì)象局部的變形與光照影響有很好的穩(wěn)定性,最初是用HOG特征來來識(shí)別人像,通過HOG特征提取+SVM訓(xùn)練,可以得到很好的效果,OpenCV已經(jīng)有了。HOG特征提取的大致流程如下:
詳細(xì)解讀
第一步:灰度化
對(duì)HOG特征提取來說第一步是對(duì)輸入的彩色圖像轉(zhuǎn)換為灰度圖像,圖像灰度化的方法有很多,不同灰度化方法之間有一些微小的差異,從彩色到灰度的圖像轉(zhuǎn)換可以表示如下:
第二步:計(jì)算圖像梯度
計(jì)算圖像的X方向梯度dx與Y方向梯度dy,根據(jù)梯度計(jì)算mag與角度,計(jì)算梯度時(shí)候可以先高斯模糊一下(可選步驟),然后使用sobel或者其它一階導(dǎo)數(shù)算子計(jì)算梯度值dx、dy、mag、angle:
第三步:Cell分割與Block
對(duì)于圖像來說,分成8x8像素塊,每個(gè)塊稱為一個(gè)Cell,每個(gè)2x2大小的Cell稱為一個(gè)Block,每個(gè)Cell根據(jù)角度與權(quán)重建立直方圖,每20度為一個(gè)BIN,每個(gè)Cell得到9個(gè)值、每個(gè)Block得到36個(gè)值(4x9), 圖像如下:
每個(gè)Block為單位進(jìn)行L2數(shù)據(jù)歸一化,作用是抵消光照/遷移影響,L2的歸一化的公式如下:
第四步:生成描述子
對(duì)于窗口64x128范圍大小的像素塊,可以得到8x16個(gè)Cell, 使用Block在窗口移動(dòng),得到輸出的向量總數(shù)為7x15x36=3780特征向量,每次Block移動(dòng)步長是八個(gè)像素單位,一個(gè)Cell大小。
使用HOG特征數(shù)據(jù)
HOG特征本身是不支持旋轉(zhuǎn)不變性與多尺度檢測的,但是通過構(gòu)建高斯金字塔實(shí)現(xiàn)多尺度的開窗檢測就會(huì)得到不同分辨率的多尺度檢測支持。OpenCV中HOG多尺度對(duì)象檢測API如下:
virtualvoidcv::detectMultiScale( InputArrayimg, std::vector&foundLocations, doublehitThreshold=0, SizewinStride=Size(), Sizepadding=Size(), doublescale=1.05, doublefinalThreshold=2.0, booluseMeanshiftGrouping=false ) Img-表示輸入圖像 foundLocations-表示發(fā)現(xiàn)對(duì)象矩形框 hitThreshold-表示SVM距離度量,默認(rèn)0表示,表示特征與SVM分類超平面之間 winStride-表示窗口步長 padding-表示填充 scale-表示尺度空間 finalThreshold-最終閾值,默認(rèn)為2.0 useMeanshiftGrouping-不建議使用,速度太慢拉
使用OpenCV預(yù)訓(xùn)練SVM行人HOG特征分類器實(shí)現(xiàn)多尺度行人檢測的代碼如下:
importcv2ascv if__name__=='__main__': src=cv.imread("D:/images/pedestrian.png") cv.imshow("input",src) hog=cv.HOGDescriptor() hog.setSVMDetector(cv.HOGDescriptor_getDefaultPeopleDetector()) #Detectpeopleintheimage (rects,weights)=hog.detectMultiScale(src, winStride=(4,4), padding=(8,8), scale=1.25, useMeanshiftGrouping=False) for(x,y,w,h)inrects: cv.rectangle(src,(x,y),(x+w,y+h),(0,255,0),2) cv.imshow("hog-detector",src) cv.waitKey(0) cv.destroyAllWindows()
原文標(biāo)題:HOG特征詳解與行人檢測
文章出處:【微信公眾號(hào):OpenCV學(xué)堂】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
-
分類器
+關(guān)注
關(guān)注
0文章
153瀏覽量
13452 -
OpenCV
+關(guān)注
關(guān)注
32文章
642瀏覽量
42920 -
HOG特征
+關(guān)注
關(guān)注
0文章
2瀏覽量
961
原文標(biāo)題:HOG特征詳解與行人檢測
文章出處:【微信號(hào):CVSCHOOL,微信公眾號(hào):OpenCV學(xué)堂】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
【Milk-V Duo S 開發(fā)板免費(fèi)體驗(yàn)】SDK編譯、人臉檢測、OpenCV測試
如何用OpenCV的相機(jī)捕捉視頻進(jìn)行人臉檢測--基于米爾NXP i.MX93開發(fā)板

快速部署!米爾全志T527開發(fā)板的OpenCV行人檢測方案指南
OpenCV行人檢測應(yīng)用方案--基于米爾全志T527開發(fā)板

使用OpenVINO?模型的OpenCV進(jìn)行人臉檢測,檢測到多張人臉時(shí),伺服電機(jī)和步入器電機(jī)都發(fā)生移動(dòng)是為什么?
運(yùn)行人臉識(shí)別演示時(shí),無法縮小輸入視頻流的幀大小怎么解決?
請(qǐng)問是否可以使用單個(gè)輸入圖像運(yùn)行人臉檢測MTCNN Python演示?
使用OpenVINO? 2021.4在CPU和MYRIAD上進(jìn)行自定義對(duì)象檢測,為什么結(jié)果差異巨大?
中偉視界:智慧礦山如何實(shí)現(xiàn)行人不行車的安全管理

【米爾RK3576開發(fā)板評(píng)測】+項(xiàng)目名稱RetinaFace人臉檢測
AI模型部署邊緣設(shè)備的奇妙之旅:目標(biāo)檢測模型
智能倉庫風(fēng)險(xiǎn)管控:AGV叉車與行人協(xié)同作業(yè)指南

如何用OpenCV的相機(jī)捕捉視頻進(jìn)行人臉檢測--基于米爾NXP i.MX93開發(fā)板
基于OPENCV的相機(jī)捕捉視頻進(jìn)行人臉檢測--米爾NXP i.MX93開發(fā)板

評(píng)論