HOG概述
HOG(Histogram of Oriented Gradient)特征在對象檢測與模式匹配中是一種常見的特征提取算法,是基于本地像素塊進行特征直方圖提取的一種算法,對象局部的變形與光照影響有很好的穩定性,最初是用HOG特征來來識別人像,通過HOG特征提取+SVM訓練,可以得到很好的效果,OpenCV已經有了。HOG特征提取的大致流程如下:


詳細解讀
第一步:灰度化
對HOG特征提取來說第一步是對輸入的彩色圖像轉換為灰度圖像,圖像灰度化的方法有很多,不同灰度化方法之間有一些微小的差異,從彩色到灰度的圖像轉換可以表示如下:

第二步:計算圖像梯度
計算圖像的X方向梯度dx與Y方向梯度dy,根據梯度計算mag與角度,計算梯度時候可以先高斯模糊一下(可選步驟),然后使用sobel或者其它一階導數算子計算梯度值dx、dy、mag、angle:

第三步:Cell分割與Block
對于圖像來說,分成8x8像素塊,每個塊稱為一個Cell,每個2x2大小的Cell稱為一個Block,每個Cell根據角度與權重建立直方圖,每20度為一個BIN,每個Cell得到9個值、每個Block得到36個值(4x9), 圖像如下:

每個Block為單位進行L2數據歸一化,作用是抵消光照/遷移影響,L2的歸一化的公式如下:

第四步:生成描述子
對于窗口64x128范圍大小的像素塊,可以得到8x16個Cell, 使用Block在窗口移動,得到輸出的向量總數為7x15x36=3780特征向量,每次Block移動步長是八個像素單位,一個Cell大小。

使用HOG特征數據
HOG特征本身是不支持旋轉不變性與多尺度檢測的,但是通過構建高斯金字塔實現多尺度的開窗檢測就會得到不同分辨率的多尺度檢測支持。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-表示發現對象矩形框 hitThreshold-表示SVM距離度量,默認0表示,表示特征與SVM分類超平面之間 winStride-表示窗口步長 padding-表示填充 scale-表示尺度空間 finalThreshold-最終閾值,默認為2.0 useMeanshiftGrouping-不建議使用,速度太慢拉
使用OpenCV預訓練SVM行人HOG特征分類器實現多尺度行人檢測的代碼如下:
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()
原文標題:HOG特征詳解與行人檢測
文章出處:【微信公眾號:OpenCV學堂】歡迎添加關注!文章轉載請注明出處。
-
分類器
+關注
關注
0文章
153瀏覽量
13786 -
OpenCV
+關注
關注
33文章
652瀏覽量
44787 -
HOG特征
+關注
關注
0文章
2瀏覽量
993
原文標題:HOG特征詳解與行人檢測
文章出處:【微信號:CVSCHOOL,微信公眾號:OpenCV學堂】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
【上海晶珩睿莓 1 單板計算機】人臉識別
沒有專利的opencv-python 版本
基于級聯分類器的人臉檢測基本原理
【Milk-V Duo S 開發板免費體驗】SDK編譯、人臉檢測、OpenCV測試
如何用OpenCV的相機捕捉視頻進行人臉檢測--基于米爾NXP i.MX93開發板
OpenCV行人檢測應用方案--基于米爾全志T527開發板
用PaddleNLP為GPT-2模型制作FineWeb二進制預訓練數據集
OpenCV預訓練SVM行人HOG特征分類器實現多尺度行人檢測
評論