HOG 特征提取算法(原理篇)


在計算機視覺中人們設計了很多算法來提取空間特征,並利用圖像梯度信息來識別物體。

其中一種技術叫做 HOG,也即方向梯度直方圖(Histogram of Oriented Gradient)。方向梯度直方圖聽着太高深了,我們先來講一下這些術語。

直方圖就是數據分布的一種圖形表現,看起來有點像柱形圖,其柱形有不同的高度,每個柱形代表一組處於一定值范圍的數據。這些柱形也稱為組(bins),柱形越高意味着某組數據越多。

以灰度圖像為例,假設你想繪制出這張薄餅圖的強度數據直方圖。

我們知道像素值的范圍在 0 到 255 之間,所以我們可以把這些值分成若干組。我要創建 32 個組,每組包含 8 個像素值,所以第一組范圍是 0 到 7,然后 8 到 15 以此類推一直到 248 到 255。
要創建直方圖,我們得來看看這張圖里的各個像素值,將各像素值放到對應的組里。這張圖的薄餅里有很多亮值,背景則很黑,所以直方圖看起來是這樣的。

在這個直方圖里黑色像素明顯堆積在一起,藍色框標識的是背景的像素,這些像素都在這些低值范圍里。明亮的像素也聚集在一起,基本上都在灰度值 200 左右,這肯定是薄餅的大部分像素值。
看完灰度值的直方圖,我們來講下一個術語“方向梯度”。
方向很簡單,指的就是圖像梯度的方向或朝向。我們已經了解怎么用 Sobel 算子來計算梯度幅值和方向了。把三個術語結合在一起,HOG 就是指一張有關圖像梯度方向的直方圖。首先 HOG 會接受一張圖像,如這張薄餅圖,然后計算每個像素的梯度幅值和方向。

這其中蘊含的信息可不少,所以 HOG 實際上會把這些像素分成若干個較大的正方形單元,單元大小通常是 8 乘 8 如果圖片小一些單元也就小一些。如果是 8 乘 8 的單元那就有 64 個梯度值,HOG 會計算每個單元相同的梯度方向有多少,將這些梯度的幅值相加得到梯度強度。接着 HOG 會把所有方向數據放到直方圖里,這個直方圖有九組,也就是九個值范圍。不過你可以建立更多組來進一步分類數據。

HOG 會對圖像的每個單元進行同樣的處理,這個方向梯度直方圖實際上就是個特征向量。接下來我們要用這些 HOG 特征來訓練分類器,思路就是對於物體相同但大小、方向不同的圖像,我們可以利用相同的 HOG 特征模式來檢測物體,而不管物體的位置和呈現方式。

后記

本文是 Udacity 計算機視覺納米學位課程筆記,下一步實踐篇將在 OpenCV 中實現 HOG 算法。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM