轉載http://blog.csdn.net/abcjennifer/article/details/7365651
網上去找關於HOG的資料,發現理解性的較少,而且較爲冗長,爲方便大家理解便自己寫了篇,希望能對奮鬥在特徵提取第一線的同志們有所幫助:
HOG即histogram of oriented gradient, 是用於目標檢測的特徵描述子,該技術將圖像局部出現的方向梯度次數進行計數,該方法和邊緣方向直方圖、scale-invariant feature transform類似,不同的是hog的計算基於一致空間的密度矩陣來提高準確率。Navneet Dalal and Bill Triggs首先在05年的CVPR中提出HOG,用於靜態圖像or視頻的行人檢測。
HOG特徵原理:
HOG的核心思想是所檢測的局部物體外形能夠被光強梯度或邊緣方向的分佈所描述。通過將整幅圖像分割成小的連接區域(稱爲cells),每個cell生成一個方向梯度直方圖或者cell中pixel的邊緣方向,這些直方圖的組合可表示出(所檢測目標的目標)描述子。爲改善準確率,局部直方圖可以通過計算圖像中一個較大區域(稱爲block)的光強作爲measure被對比標準化,然後用這個值(measure)歸一化這個block中的所有cells.這個歸一化過程完成了更好的照射/陰影不變性。
與其他描述子相比,HOG得到的描述子保持了幾何和光學轉化不變性(除非物體方向改變)。因此HOG描述子尤其適合人的檢測。
通俗的講:
HOG特徵提取方法就是將一個image:
1. 灰度化(將圖像看做一個x,y,z(灰度)的三維圖像)
2. 劃分成小cells(2*2)
3. 計算每個cell中每個pixel的gradient(即orientation)
4. 統計每個cell的梯度直方圖(不同梯度的個數),即可形成每個cell的descriptor
再小談下Hog、SIFT與PCA-SIFT的應用與區別:
Hog沒有旋轉和尺度不變性,因此計算量小;而SIFT中每個feature需要用128維的向量來描述,因此計算量相對很大。
那麼行人檢測中怎麼應用HOG呢?
對於解決Scale-invariant 的問題:將圖片進行不同尺度的縮放,就相當於對模板進行不同尺度scale的縮放
對於解決Rotation-invariant 的問題:建立不同方向的模版(一般取15*7的)進行匹配
總的來說,就是在不同尺度上的圖像進行不同方向的模板(15*7)匹配,每個點形成一個8方向的梯度描述。
SIFT由於其龐大計算量不用與行人檢測,而PCA-SIFT的方法過濾掉很多維度的信息,只保留20個主分量,因此只適用於行爲變化不大的物體檢測。
method |
Time |
Scale |
Rotation |
Blur |
Illumination |
Affine |
Sift |
common |
best |
best |
common |
common |
good |
PCA-sift |
good |
good |
good |
best |
good |
best |
Surf |
best |
common |
common |
good |
best |
good |