手勢識別之 Haar特徵提取

2021-07-15 10:46:50 字數 2669 閱讀 3657

1、haar-like特徵

haar-like特徵最早是由papageorgiou等應用於人臉表示,viola和jones在此基礎上,使用3種型別4種形式的特徵。

haar特徵分為三類:邊緣特徵、線性特徵、中心特徵和對角線特徵,組合成特徵模板。特徵模板內有白色和黑色兩種矩形,並定義該模板的特徵值為白色矩形畫素和減去黑色矩形畫素和。

haar特徵值反映了影象的灰度變化情況。例如:臉部的一些特徵能由矩形特徵簡單的描述,如:眼睛要比臉頰顏色要深,鼻樑兩側比鼻樑顏色要深,嘴巴比周圍顏色要深等。但矩形特徵只對一些簡單的圖形結構,如邊緣、線段較敏感,所以只能描述特定走向(水平、垂直、對角)的結構。

對於圖中的a, b和d這類特徵,特徵數值計算公式為:v=sum白-sum黑,而對於c來說,計算公式如下:v=sum白-2*sum黑;之所以將黑色區域畫素和乘以2,是為了使兩種矩形區域中畫素數目一致。

通過改變特徵模板的大小和位置,可在影象子視窗中窮舉出大量的特徵。上圖的特徵模板稱為「特徵原型」;特徵原型在影象子視窗中擴充套件(平移伸縮)得到的特徵稱為「矩形特徵」;矩形特徵的值稱為「特徵值」。

矩形特徵可位於影象任意位置,大小也可以任意改變,所以矩形特徵值是矩形模版類別、矩形位置和矩形大小這三個因素的函式。故類別、大小和位置的變化,使得很小的檢測視窗含有非常多的矩形特徵,如:在24*24畫素大小的檢測視窗內矩形特徵數量可以達到16萬個。這樣就有兩個問題需要解決了:(1)如何快速計算那麼多的特徵?---積分圖大顯神通;(2)哪些矩形特徵才是對分類器分類最有效的?---如通過adaboost演算法來訓練(這一塊這裡不討論,具體見

2、haar-like特徵的計算—積分圖

積分圖就是只遍歷一次影象就可以求出影象中所有區域畫素和的快速演算法,大大的提高了影象特徵值計算的效率。

積分圖主要的思想是將影象從起點開始到各個點所形成的矩形區域畫素之和作為乙個陣列的元素儲存在記憶體中,當要計算某個區域的畫素和時可以直接索引陣列的元素,不用重新計算這個區域的畫素和,從而加快了計算(這有個相應的稱呼,叫做動態規劃演算法)。積分圖能夠在多種尺度下,使用相同的時間(常數時間)來計算不同的特徵,因此大大提高了檢測速度。

我們來看看它是怎麼做到的。

積分圖是一種能夠描述全域性資訊的矩陣表示方法。積分圖的構造方式是位置(i,j)處的值ii(i,j)是原影象(i,j)左上角方向所有畫素的和:

積分圖構建演算法:

1)用s(i,j)表示行方向的累加和,初始化s(i,-1)=0;

2)用ii(i,j)表示乙個積分影象,初始化ii(-1,i)=0;

3)逐行掃瞄影象,遞迴計算每個畫素(i,j)行方向的累加和s(i,j)和積分影象ii(i,j)的值

s(i,j)=s(i,j-1)+f(i,j)

ii(i,j)=ii(i-1,j)+s(i,j)

4)掃瞄影象一遍,當到達影象右下角畫素時,積分影象ii就構造好了。

積分圖構造好之後,影象中任何矩陣區域的畫素累加和都可以通過簡單運算得到如圖所示。

設d的四個頂點分別為α、β、γ、δ,則d的畫素和可以表示為

dsum = ii( α )+ii( β)-(ii( γ)+ii( δ ));

而haar-like特徵值無非就是兩個矩陣畫素和的差,同樣可以在常數時間內完成。所以矩形特徵的特徵值計算,只與此特徵矩形的端點的積分圖有關,所以不管此特徵矩形的尺度變換如何,特徵值的計算所消耗的時間都是常量。這樣只要遍歷影象一次,就可以求得所有子視窗的特徵值。

3、haar-like矩形特徵拓展

lienhart r.等對haar-like矩形特徵庫作了進一步擴充套件,加入了旋轉45

。角的矩形特徵。擴充套件後的特徵大致分為4種型別:邊緣特徵、線特徵環、中心環繞特徵和對角線特徵:

在特徵值的計算過程中,黑色區域的權值為負值,白色區域的權值為正值。而且權值與矩形面積成反比(使兩種矩形區域中畫素數目一致);

豎直矩陣特徵值計算:

對於豎直矩陣,與上面2處說的一樣。

45°旋角的矩形特徵計算:

對於45°旋角的矩形,我們定義rsat(x,y)為點(x,y)左上角45°區域和左下角45°區域的畫素和。

用公式可以表示為:

為了節約時間,減少重複計算,可按如下遞推公式計算:

而計算矩陣特徵的特徵值,是位於十字行矩形rsat(x,y)之差。可參考下圖:

Haar矩陣特徵提取學習

matlab還沒有整合,但是有固定函式,如traincascadeobjectdetection裡面含有提取haar特徵的介面,也很少,幾乎沒有。opencv中倒是有一些提取haar的 就是有些過於複雜,跟adabost分類器連線在了一起。haar特徵提取演算法的實現 最後使用了這個 機器學習 之 ...

Haar特徵提取演算法的實現

自己動手,豐衣食足 系列 haar特徵是一種很早就被提出的影象特徵提取演算法,後面還經過了幾次改進。haar特徵能夠很好地運用於人臉識別技術,當然很多目標檢測技術中對目標影象的特徵提取也可以使用haar特徵。當我們使用opencv自帶的cascade分類器時可以選擇haar特徵作為訓練樣本資料的特徵...

模式識別之特徵提取演算法

說明 此處暫時簡單介紹下各種特徵提取演算法,後續完善。前言 模式識別中進行匹配識別或者分類器分類識別時,判斷的依據就是影象特徵。用提取的特徵表示整幅影象內容,根據特徵匹配或者分類影象目標。常見的特徵提取演算法主要分為以下3類 基於顏色特徵 如顏色直方圖 顏色集 顏色矩 顏色聚合向量等 基於紋理特徵 ...