Opencv HOG行人檢測 原始碼分析 一

2021-07-23 16:33:10 字數 2374 閱讀 9633

**:

opencv demo演示見本人的另一篇灌水部落格

本人原始碼分析見

參考文獻:《n. dalal and b. triggs, 「histograms of oriented gradients for human detection,」proc. ieee conf. computer vision and pattern recognition,2005.》

作者原始碼:

參考鏈結

一、基本思想

上圖是目標檢測的基本流程。

hog屬於特徵提取,它統計梯度直方圖特徵。具體來說就是將梯度方向(0->360°)劃分為9個區間,將影象化為16x16的若干個block,每個block在化為4個cell(8x8)。對每乙個cell,算出每一點的梯度方向和模,按梯度方向增加對應bin的值,最終綜合n個cell的梯度直方圖形成乙個高維描述子向量。實際實現的時候會有各種插值。

選用的分類器是經典的svm。

檢測框架為經典的滑動視窗法,即在位置空間和尺度空間遍歷搜尋檢測。

二、基本概念

原始影象打完補丁後就直接用固定的視窗在影象中移動,計算檢測視窗下的梯度,形成描述子向量,然後就直接svm了

三、hog演算法流程

演算法流程比較簡單:

1、gamma校正

r=0.5,暗區對比度提高,亮區對比度下降

2、計算梯度

微分運算元[-1 0 1],取rgb通道中模值最大的為該畫素點的梯度。

插值策略:對與該點梯度方向相鄰的兩個bin按距離進行線性插值。

3 、權值

這一部分比較複雜,  每乙個畫素點還要對cell插值。

1)f,j,g,k區域內的畫素點對四個cell都有貢獻,比如p4對cell 0 的權重是倒對稱cell中心即cell 3的「距離」 p4-cell 3 即圖中綠色虛線的「長度」,對其它cell 的權值依次類推

2)b,c,e,i,n,o,h,l區域的畫素點要對兩個cell中心插值。比如p2雖然處在cell 1中,但是對cell 0 也有貢獻,對虛線中的紅,綠兩個十字所在的cell 也有貢獻。那對cell 0的權重計算方法同p4。

取到對稱cell 中心的 「距離」,即到綠色中心的「距離」。

3)a,d,m,p,區域的點對周圍的四個cell也有貢獻,但是block覆蓋的只有乙個cell,自然只要對其本身所在的cell插值即可。比如p1,到對稱cell 中心的「距離」,即圖中的cell中心。

但是要注意:cell的編號順序是從上到下,從左到右,即(cell 0 cell 1 cell 2 cell 3)但是四個cell的偏移量儲存順序卻是(cell 0 ->cell 2 ->cell 1->cell 3)

這張圖沒畫完,也可以說有錯誤,大家參加這篇部落格吧,等找好工作了再來細改

4、歸一化

l2 hys歸一化,比較簡單

5、獲取整個檢測視窗內的所有block的梯度直方圖組成乙個很高很高維的描述子向量

用查表替代了八重迴圈,大大減少了時間開銷。

最笨的方法是依次迴圈:

1.檢測視窗在輸入影象中滑動

2.block在檢測視窗win中滑動

3.cell在block中滑動

4.在cell中迴圈獲取畫素的梯度值

每一層迴圈都是2維的這樣下來就是八重迴圈…………子子孫孫無窮盡也

作者通過預先計算好的pixdata,blockdata基本上化為了3重迴圈。

1.迴圈影象中的每乙個檢測視窗win

2.迴圈檢測視窗內的每乙個block

3.迴圈每乙個block中的畫素點,getblock()

每一層都是一維。

6、svm分類

計算到分類超平面的距離

四、hog演算法opencv實現流程

五、原始碼分析

Opencv HOG特徵與行人檢測Python實現

hog特徵與行人檢測 hog histogram of oriented gradient 特徵在物件識別與模式匹配中是一種常見的特徵提取演算法,是基於本地畫素塊進行特徵直方圖提取的一種演算法,物件區域性的變形與光照影響有很好的穩定性,最初是用hog特徵來來識別人像,通過hog特徵提取 svm訓練,...

PCL行人檢測

首先我們知道hog特徵結合svm分類器已經被廣泛應用於影象識別中,尤其在行人檢測中獲得了極大的成功 hog svm進行行人檢測的方法是法國研究人員dalal在2005的cvpr上提出的,而如今雖然有很多行人檢測演算法不斷提出,但基本都是以hog svm的思路為主,那麼pcl中也是利用這一思想來進行行...

行人檢測OpenCV ICF

最近專案中需要用到行人檢測,對比了幾種常用的演算法後,果斷選擇出自大神piotr dollar的icf integral channel features 下面開始了苦逼之旅。由於從網上down的 都是matlab版的,如果翻譯成c 的話,勞民傷財。以前就聽說opencv contrib裡整合了該演...