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

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

使用OpenVINO?模型的OpenCV進(jìn)行人臉檢測,檢測到多張人臉時,伺服電機和步入器電機都發(fā)生移動是為什么?
使用OpenVINO? 2021.4在CPU和MYRIAD上進(jìn)行自定義對象檢測,為什么結(jié)果差異巨大?
中偉視界:智慧礦山如何實現(xiàn)行人不行車的安全管理

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

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

評論