【计算机视觉】方向梯度直方图(Histogram of Oriented Gradient,HOG)
文章目錄
- 1. HOG 簡述
- 2. HOG 工作流程
- 第一步、對圖像的顏色空間進行歸一化
- 第二步、計算每個像素點的梯度
- 第三步、為每個單元構建梯度方向直方圖
- 第四步、塊內梯度直方圖歸一化
- 3. 舉個例子
- 4. HOG 可視化
1. HOG 簡述
HOG(Histogram of Oriented Gradient)方向梯度直方圖是 Dalal 和 Triggs 在 2005 的 CVPR 上提出的一種解決人體目標檢測的圖像描述子,用于表征圖像局部梯度方向和梯度強度分布特性。其具體思想是:在一副圖像中,局部目標的形狀能夠被梯度或邊緣的方向密度分布很好地描述。該方法通過統計局部區域的梯度方向直方圖來構成特征,能夠很好地描述人體的邊緣,提取人體的外形信息和運動信息,形成豐富的特征集。Dalal 等提出的 HOG+SVM 算法當時在行人檢測上取得了巨大的成功,而此后涌現的許多算法,大多是以該算法為基礎框架。
2. HOG 工作流程
梯度方向直方圖顧名思義就是計算圖像中各像素的梯度方向,統計成為直方圖作為特征表示目標。其大致有以下4步:
第一步、對圖像的顏色空間進行歸一化
因為圖像的采集環境、裝置等因素,采集到的圖像效果可能不是很好,所以需要對采集到的圖像進行預處理。其中包括:將圖像灰度化和 Gamma 校正。使用 Gamma 校正法對輸入圖像進行顏色空間的標準化的目的是調節圖像的對比度,降低圖像局部的陰影和光照變化所造成的影響,同時可以抑制噪音的干擾。
第二步、計算每個像素點的梯度
在HOG特征提取的過程中,梯度計算采用簡單的水平邊緣算子 [-1,0,1] 和垂直邊緣算子 [-1,0,1]^T。通過與圖像進行卷積操作來獲得梯度信息。圖像中某像素點 (x,y) 的梯度可以用如下公式計算:
G x ( x , y ) = H ( x + 1 , y ) ? H ( x ? 1 , y ) G y ( x , y ) = H ( x , y + 1 ) ? H ( x , y ? 1 ) G_x(x,y) = H(x+1,y)-H(x-1,y) \\ G_y(x,y) = H(x,y+1)-H(x,y-1) Gx?(x,y)=H(x+1,y)?H(x?1,y)Gy?(x,y)=H(x,y+1)?H(x,y?1)
G ( x , y ) = G x ( x , y ) 2 + G y ( x , y ) 2 G(x,y) = \sqrt{G_x(x,y)^2+G_y(x,y)^2} G(x,y)=Gx?(x,y)2+Gy?(x,y)2?
θ ( x , y ) = a r c t a n G y ( x , y ) G x ( x , y ) \theta (x,y) = arctan\frac{G_y(x,y)}{G_x(x,y)} θ(x,y)=arctanGx?(x,y)Gy?(x,y)?
公式中 x 表示水平方向,y 表示豎直方向,G 表示梯度的大小, θ \theta θ 表示梯度的方向。
第三步、為每個單元構建梯度方向直方圖
這一步的目的是為局部圖像區域提供一個編碼,同時能夠保持對圖像中人體對象的姿勢和外觀的弱敏感性。將圖像分成若干個大小相同的單元(cell),作者原文文將每個單元設置成 8x8 像素。原文將梯度方向每 20 度作為一個區間,平均分為 9 個區間(bin)(因為 tan 的周期為 π \pi π,所以分成 9 份),如下圖所示:
在每個單元格中,以每個像素點處的梯度大小作為權值統計梯度方向區間的直方圖。每個區間分別對應一定的角度范圍,9 個區間即為直方圖的橫軸,而這些角度范圍內所對應的梯度的累加值即為直方圖的縱軸。
第四步、塊內梯度直方圖歸一化
像素點、單元和區塊之間的關系如下圖所示。
將小的單元(cell)合并成大的區塊(block),每個塊內歸一化梯度直方圖即可得到該塊的 HOG 特征。這么做是因為局部光照的變化以及前景-背景對比度的變化,使得梯度強度的變化范圍非常大。這就需要對梯度強度做歸一化。歸一化能夠進一步地對光照、陰影和邊緣進行壓縮。一個塊內所有單元的縱軸值串聯起來歸一化后得到的向量被稱作該塊 HOG 描述子。圖像中所有塊的 HOG 描述子串聯起來即得到該圖像的 HOG 特征向量。原文一個區塊設置成 2x2 單元。
3. 舉個例子
比如 INRIA 數據集中圖像剪裁后的大小為 64x128,故每張圖像共有 8x16 的單元(cell),每個單元(cell)有一個 9 維的特征向量,把一個塊內的特征向量串聯起來,所以每個區塊(block)是 (2x2)x9=36 維,用塊對樣本圖像進行掃描,掃描步長為一個單元(區塊可以重疊),最后將所有塊的特征串聯起來,所以每張圖像的HOG特征維度為:36x7x15=3780 。
4. HOG 可視化
在數據集 INRIA 中選擇一個圖像,將其剪裁為大小 64x128,按照上述 HOG 參數進行 HOG 可視化,效果如下:
可視化時將整個圖像作為一個 Block 來使用,即 HOG 可視化圖像展示的是圖像中每個 cell 的梯度直方圖,其中每條線的方向代表著這個單元內每個像素點的梯度方向。在圖中可以發現,直方圖的主要方向捕獲了這個人的外形,尤其在軀干和腿。
總結
以上是生活随笔為你收集整理的【计算机视觉】方向梯度直方图(Histogram of Oriented Gradient,HOG)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Eventually Consisten
- 下一篇: Redis zset 的一些使用