1. 程式人生 > >影象處理特徵提取之(二):Haar特徵

影象處理特徵提取之(二):Haar特徵

1,Haar特徵:

Haar特徵分為:邊緣特徵,線性特徵,中心特徵,對角線特徵。特徵模板內有白色和黑色兩種矩形,並定義該模板的特徵值為白色矩形畫素減去黑色矩形畫素和。Haar特徵值反映了影象的灰度變化情況。例如:臉部的一些特徵能有矩形特徵簡單的描述,如眼睛要比臉頰顏色深,鼻樑兩側要比鼻樑的顏色深,嘴巴比周圍的顏色要深等。

2,Haar特徵的生成

在實際中,haar特徵可以在檢測視窗中放大+平移產生一系列子特徵,但是白:黑區域面積比始終保持不變。

那麼這些通過放大+平移獲得的子特徵到底多少個?Rainer Lienhart在其論文中給出了完美的解釋:假設檢測視窗大小為W*H,矩形特徵大小為w*h,X和Y為表示矩形特徵在水平和垂直方向的能放大的最大比例係數:

如上圖:在檢測視窗中,一般矩形特徵的數量為:

      

對應於之前的x3特徵,當x3特徵在24*24大小的檢測視窗中時(此時W=H=24,w=3,h=1,X=8,Y=24),一共有27600個子特徵。

3,計算Haar的特徵值

當有了大量的Haar特徵用於訓練和檢測時,接下來的問題是如何計算Haar特徵值。

Haar特徵值=白色區域內影象畫素和 x 權重 - 黑色區域內影象畫素和 x 權重:

對於x3和y3特徵,weightwhite = 1且weightblack =2;對於point特徵,weightwhite= 1且weightblack = 8;其餘11種特徵均為weightwhite = weightblack = 1。

為什麼要設定這種加權相減,而不是直接相減?請仔細觀察第一個圖中的特徵,不難發現x3、y3、point特徵黑白麵積不相等,而其他特徵黑白麵積相等。設定權值就是為了抵消面積不等帶來的影響,保證所有Haar特徵的特徵值在“灰度分佈絕對均勻的影象”中為0(這種影象不存在,只是理論中的)。

這也就是其他文章中提到的所謂“白色區域畫素和減去黑色區域畫素和”,只不過是加權相減而已(在XML檔案中,每一個Haar特徵都被儲存在2~3個形如<x y width height weight>的標籤中,其中x和y代表Haar矩形左上角點以檢測視窗的左上角為原點的座標,width和height代表矩形框的寬和高,而weight則對應了上面說的權重值,例如圖3中的左邊Haar特徵應該表示為<4 2 12 8 1.0>和<4 2 12 4 -2.0>)。

                                            圖3

                                                          圖4

可以看到,圖3中2個不同Haar特徵在同一組樣本中具有不同的特徵值分佈,左邊特徵計算出的特徵值基本都大於0(對樣本的區分度大),而右邊特徵的特徵值基本均勻分佈於0兩側(對樣本的區分度)。所以,正是由於樣本中Haar特徵值分佈不均勻,導致了不同Haar特徵分類效果不同。顯而易見,對正負樣本區分度越大的特徵分類效果越好,即紅色曲線對應圖3中的的左邊Haar特徵分類效果好於右邊Haar特徵。

4,Haar特徵值歸一化

從圖4中發現,僅僅一個20*20大小的Haar特徵計算出的特徵值變化範圍從-2000~+6000,跨度非常大。這種跨度大的特性不利於量化評定特徵值,所以需要進行“歸一化”,壓縮特徵值範圍。假設當前檢測視窗中的影象為i(x,y),當前檢測視窗為w*h大小(例如圖3中為20*20大小),OpenCV採用如下方式“歸一化”:

(1)計算檢測視窗中影象的灰度值和灰度值平方和:

(2)計算平均值:

(3)計算歸一化因子:

(4)歸一化特徵值:

5,積分圖

僅僅在24*24大小的視窗,通過平移+縮放就可以產生數十萬計大小不一、位置各異的Haar特徵。在一個視窗內就有這麼多Haar特徵,而檢測視窗是不斷移動的,那麼如何快速的計算這些Haar特徵的特徵值就是一個非常重要的問題了,所以才需要引入積分圖。

對於影象中任何一點i(x,y),定義其積分圖為ii(x,y)為

其中i(x',y')為點(x',y')處的原始灰度圖。這樣就定義了一張類似於數學中“積分”的積分圖。有了積分圖ii(x,y)後,只需要做有限次操作就能獲得任意位置的Haar特徵值。

圖5 積分圖計算Haar矩形框示意圖

如圖5,如果要計算D區域內畫素和,只需計算ii(x1,y1)+ii(x4,y4)-ii(x2,y2)-ii(x3,y3),其中ii是積分圖,(x1,y1)、(x2,y2)、(x3,y3)和(x4,y4)分別代表圖5中的1、2、3、4點的影象座標。顯然可以通過此方法快速計算影象中任意位置和大小的Haar特徵。