hog(
histogram of oriented gridients)是2023年提出描述行人特徵的演算法,在當年取得了突破性的進展,處理在行人檢測領域,在其他識別方面hog也取得了不錯的效果。hog通過計算和統計影象區域性區域的梯度方向直方圖來形成描述特徵
在一張影象中,人與外界存在乙個邊緣,通過梯度的方向和大小就可以對邊緣進行描述,進而對待檢測物體進行特徵描述
2.hog演算法步驟
(1)首先將影象轉換為灰度影象
(2)為了克服光照不均等情況,對影象進行r變換,調節影象的對比度
(3)計算影象的梯度
x和y方向的梯度公式是:
最常用的方法是:首先用
[-1,0,1]
梯度運算元對原影象做卷積運算,得到
x方向(水平方向,以向右為正方向)的梯度分量
gradscalx
,然後用
[1,0,-1]t
梯度運算元對原影象做卷積運算,得到
y方向(豎直方向,以向上為正方向)的梯度分量
gradscaly
。作者也比較了其他的模板,但是效果不好,最後作者認為,越是簡單的模板,效果越好。
計算梯度幅值和大小
(4)作者對檢測影象進行了3層的劃分,首先規定了cell(8pix*8pix), block(2cell*2cell) 一張128*64影象的影象一共可以形成105個block(這部分稍後再講),hog對的劃分順序為:畫素--->cell---->block----->影象,首先來看一下乙個cell是如何對梯度特徵進行直方圖描述的
在第三步中我們已經完成了對梯度幅值和方向的計算,現在需要設計乙個收集器(bin)來對幅值和方向進行統計,
這個統計範圍是以cell為單位的,我們將360度的梯度方向劃分為9個方向,bin就是來統計cell中這9個梯度方向出現的不同頻次。比如畫素在0—20度範圍內,在對應的bin單元+1(這一步類似我們選舉班委成員投票一樣,出現一次在黑板上該名字下面的正子就多寫一筆)。梯度的幅值相當於加權,就是用來說明畫素的這個方向所佔的權重,幅值越大則改畫素的梯度方向所佔的權重越大(這就像選舉班委成員投票中,老師一票頂兩票一樣),也就是說幅值越大,話語權就越大。統計完乙個cell內的梯度幅值和方向後既完成了乙個bin的收集。
(5)hog中乙個block有四個(2*2)cell組成,乙個cell有9維的bin,那麼,乙個block=4*9=36維特徵。對著36維特徵進行歸一化操作。
(6)一張影象有多少個block呢,假設影象大小128*64,步長為8,block是在影象上以一定的步長滑動來進行提取的,block大小是16*16畫素=2*2cell,
那麼以步長為8畫素進行滑動可以產生
((64-16)/8+1)*((128-16)/8+1) = 7*15 =105個block。
(7)一張影象有多少維呢?105個block,乙個block有4個cell,乙個cell有9維特徵,總特徵維度=105*4*9=3780維。
行人檢測 HOG運算元
梯度直方圖特徵 hog 是一種對影象區域性重疊區域的密集型描述符 它通過計算區域性區域的梯度方向直方圖來構成特徵。hog特徵結合 svm分類器已經被廣泛應用於影象識別中,尤其在行人檢測中獲得了極大的成功。需要提醒的是,hog svm 進行行人檢測的方法是法國研究人員 dalal 在2005 的cvp...
基於Hog特徵的行人檢測
1 先建立相應的txt檔案 f pedestrian image 00000101 0.png f pedestrian image 00000105 0.png f pedestrian image 00000108 0.png f pedestrian image 00000110 0.png ...
OpenCV 基於HOG特徵的行人檢測
opencv中提供了hog的行人檢測 pedestrain detection 類。cv hogdescriptor類的建構函式的各引數的定義 cpp view plain copy cv wrap hogdescriptor winsize 64,128 detect window blocksi...