圖像物體檢測識別中的LBP特徵

圖像物體檢測識別中的LBP特徵

1        引言

之前講了人臉識別中的Haar特徵,本文則關注人臉檢測中的LBP特徵,說是對於人臉檢測的,其實對於其他物體也能檢測,只需修改訓練數據集即可。所以本文的題目是物體檢測識別,比如可以檢測是否汽車是否有車牌號等。

在opencv實現的haar特徵的人臉識別算法中,LBP特徵也被支持。

haar特徵的博文鏈接:http://blog.csdn.net/stdcoutzyx/article/details/34842233

2        LBP的歷史

1996年,Ojala老大爺搞出了LBP特徵,也即參考文獻1。當時好像並未引發什麼波瀾。到了2002年的時候,老大爺又對LBP的特性進行了總結,產生了參考文獻2,這篇文獻目前爲止引用數目4600+,足見其分量之重了。

到了2004年的時候,Ahonen將LBP特徵首次用於人臉檢測,即參考文獻3。由於該特徵的簡單易算性,雖然其總體效果不如Haar特徵,但速度則快於Haar,所以也得到了廣泛的使用。

2007年的時候,中科院的一幫大神將Haar特徵計算的積分圖方法引入進來,產生了多尺度的LBP特徵,也即參考文獻4。使得LBP在人臉識別的檢測率上又提高了不少。

LBP特徵與多尺度LBP以及LBP在人臉識別中的應用就是本文的主要內容。

3        LBP特徵

言歸正傳,什麼是LBP特徵呢?LBP,是Local Binary Pattern(局部二值模式)的縮寫。其定義如下:

以鄰域中心像素爲閾值,將相鄰的8個像素的灰度值與其進行比較,若周圍像素值大於中心像素值,則該像素點的位置被標記爲1,否則爲0。這樣,3x3鄰域內的8個點經比較可產生8位二進制數(通常轉換爲十進制數即LBP碼,共256種),即得到該鄰域中心像素點的LBP值,並用這個值來反映該區域的紋理信息。

下圖反應了某個像素的具體的LBP特徵值的計算過程,需要注意的是,LBP值是按照順時針方向組成的二進制數。


用公式來定義的話,如下所示:


其中代表3x3鄰域的中心元素,它的像素值爲ic,ip代表鄰域內其他像素的值。s(x)是符號函數,定義如下:


4        LBP特徵的圓形化改進

原始論文[1]中定義了基礎LBP後,還定義了一種改進方法,即圓形化LBP。

基本的 LBP算子的最大缺陷在於它只覆蓋了一個固定半徑範圍內的小區域,這顯然不能滿足不同尺寸和頻率紋理的需要。爲了適應不同尺度的紋理特徵,並達到灰度和旋轉不變性的要求,Ojala等對 LBP 算子進行了改進,將 3×3鄰域擴展到任意鄰域,並用圓形鄰域代替了正方形鄰域,改進後的 LBP 算子允許在半徑爲 R 的圓形鄰域內有任意多個像素點。從而得到了諸如半徑爲R的圓形區域內含有P個採樣點的LBP算子。

比如下圖定了一個5x5的鄰域:


上圖內有八個黑色的採樣點,每個採樣點的值可以通過下式計算:


其中爲鄰域中心點,爲某個採樣點。通過上式可以計算任意個採樣點的座標,但是計算得到的座標未必完全是整數,所以可以通過雙線性插值來得到該採樣點的像素值:


下圖列舉了幾種不同半徑不同採樣點的LBP算子樣例。


5        LBP特徵的再轉化

經過LBP算子的計算後,圖像上對應於每個像素都會有一個LBP特徵值,如果LBP特徵計算時採樣點是8個的話,那麼LBP特徵值的範圍也是0~255。也可以表示成一張圖像。稱之爲LBP圖譜。如下圖所示:


上圖中,上面一行是原圖,下面一行是LBP圖譜。可以看到LBP特徵的一個優勢,就是LBP對光照有很好的魯棒性。

但是,在實際應用中,並不使用LBP圖譜做特徵。那使用什麼哩?

對於八採樣點的LBP算子來說,特徵值範圍爲0~255,對每個特徵值進行統計,比如得到特徵值爲1的LBP值有多少個、特徵值爲245的LBP值有多少個等等。這樣就形成了一個直方圖,該直方圖有256個bin,即256個分量,也可以把該直方圖當做一個長度爲256的向量。

如果直接使用該向量的話,那麼對八採樣點的LBP算子來說,一張圖片至多會形成一個256長度的一個向量,這樣位置信息就全部丟失了,會造成很大的精度問題。所以在實際中還會再有一個技巧,就是先把圖像分成若干個區域,對每個區域進行統計得到直方圖向量,再將這些向量整合起來形成一個大的向量。下圖就將一張人臉圖像分成了7x7的子區域。


6        LBP特徵的使用

本文介紹兩個LBP特徵的使用。其一是圖像相似度計算,其二是人臉檢測。

6.1   圖像相似度計算

每個圖像都可以使用一個LBP特徵向量來表示,圖像的相似度就可以使用向量的相似度來計算。

向量的相似度計算方法有很多,比如餘弦、距離等。在文獻3中,這種基於直方圖向量的相似度計算方法給出了三種,如下圖所示。


上圖中公式只是針對一個直方圖的,使用中還會將圖像分爲多個區域分別計算直方圖。所以在實際使用中,還可對不同區域進行加權。


6.2   特定人臉檢測

在上述計算圖像相似度的公式中,需要對每個分量計算一個值(差值、最小值等),然後將這些值累加。我們還可以這樣考慮,不將每個分量計算出的值累加,而是形成一個新的向量,暫時稱之爲差異向量。這樣就可以針對特定人臉進行檢測了。

具體訓練方法是這樣:

a)        首先準備訓練集,正例是同一個人的人臉的兩張圖像的差異向量,負例是不同人的人臉的兩張圖像的差異向量。

b)       然後,使用如Adaboost、SVM、樸素貝葉斯等分類方法對訓練集進行訓練,得到分類模型。

在測試時,假設有一張圖像A,現在需要判斷圖像B與圖像A中的人臉是否是同一個人,那麼首先計算出兩張圖像的差異向量,然後使用訓練得到的分類模型對其進行分類,如果分類爲正,則是同一個人。當然,前提假設是圖像A與圖像B都是人臉圖像。

7        LBP特徵降維

一個LBP算子可以產生不同的二進制模式,對於半徑爲R的圓形區域內含有P個採樣點的LBP算子將會產生2^P種模式。很顯然,隨着鄰域集內採樣點數的增加,二進制模式的種類是急劇增加的。例如:5×5鄰域內20個採樣點,有2^20=1,048,576種二進制模式。如此多的二值模式無論對於紋理的提取還是對於紋理的識別、分類及信息的存取都是不利的。同時,過多的模式種類對於紋理的表達是不利的。例如,將LBP算子用於紋理分類或人臉識別時,常採用LBP模式的統計直方圖來表達圖像的信息,而較多的模式種類將使得數據量過大,且直方圖過於稀疏。因此,需要對原始的LBP模式進行降維,使得數據量減少的情況下能最好的代表圖像的信息。

爲了解決二進制模式過多的問題,提高統計性,Ojala提出了採用一種“等價模式”(Uniform Pattern)來對LBP算子的模式種類進行降維。Ojala等認爲,在實際圖像中,絕大多數LBP模式最多隻包含兩次從1到0或從0到1的跳變。因此,Ojala將“等價模式”定義爲:當某個LBP所對應的循環二進制數從0到1或從1到0最多有兩次跳變時,該LBP所對應的二進制就稱爲一個等價模式類。如00000000(0次跳變),00000111(只含一次從0到1的跳變),10001111(先由1跳到0,再由0跳到1,共兩次跳變)都是等價模式類。除等價模式類以外的模式都歸爲另一類,稱爲混合模式類,例如10010111(共四次跳變)。比如下圖給出了幾種等價模式的示意圖。


通過這樣的改進,二進制模式的種類大大減少,而不會丟失任何信息。模式數量由原來的2P種減少爲 P ( P-1)+2種,其中P表示鄰域集內的採樣點數。對於3×3鄰域內8個採樣點來說,二進制模式由原始的256種減少爲58種,這使得特徵向量的維數更少,並且可以減少高頻噪聲帶來的影響。

由上可見,等價模式降維的理論基礎是至多包含兩次跳變的模式的數目佔全部模式的大多數。實驗也表明,一般情況下,基礎LBP特徵中,至多包含兩次跳變的模式的數目佔了全部模式數目的90%。

8        多尺度LBP

本節主要是參考文獻4的成果。

基本LBP是計算的單個像素與其相鄰像素的差值信息。它捕捉的是微觀特徵。但是不能捕捉宏觀上的特徵。文獻4在此方面進行了改進。它提出可以將LBP算子等比例放大,計算區域與區域之間的差值信息。如下圖所示:


上圖就是放大3倍後的LBP算子,這時,中心元素變爲了0區域9個像素的像素和,該區域的LBP特徵值就變爲0區域和其他區域的像素和之間的計算了。在此需要注意的是,此時的LBP特徵針對的是一個區域而不是一個像素了。在計算像素和之差的時候,可以使用Haar特徵時提到的積分圖方法進行加速計算。

多尺度模式下,等價模式類降維的理論基礎不復存在。那麼,它是如何降維的呢?

論文中提到的方法是直接採用統計的方法對不同尺度的LBP算子的模式進行統計,選取佔比例較高的模式。而不是利用跳變規則。

9        總結

LBP特徵與Haar特徵雖然計算方法差異很大,但它們都有一個共同的目標,那就是對圖像的信息進行表示,從而使圖像的所存儲的信息能更充分的被算法所利用。圖像中像素與LBP特徵、Haar特徵之間的關係比較類似於文本分析中字與詞之間的關係。文本分析中,如果想要獲得語義理解的話,那應該需要處理句子、短語、詞語等,單單分析字是遠遠不夠的。圖像處理中,要想得到豐富的圖像包含的信息,單單分析像素也是不夠的。

本文與Haar特徵的那篇博文都使用到了Adaboost分類器,但其使用的目的卻完全不一樣,Haar特徵中使用Adaboost是對有臉和無臉的圖像進行分類,而本文是對是不是同一個人的臉進行分類。從這就可以感覺的到,很多機器學習問題其實本質上都可以化爲分類問題,當然,另一大類是迴歸問題。

個人覺得本篇博文對LBP的討論已經夠全面了。有想深入學習的同學請閱讀參考文獻,歡迎來信討論。

轉載請註明:http://blog.csdn.net/stdcoutzyx/article/details/37317863

參考文獻

[1]. Ojala, T., Pietik¨ainen, M., Harwood, D.: A comparative study of texture measures with classification based on feature distributions. Pattern Recognition 29 (1996)51–59.
[2]. Ojala T, Pietikainen M, Maenpaa T. Multiresolution gray-scale and rotation invariant texture classification with local binary patterns[J]. Pattern Analysis and Machine Intelligence, IEEE Transactions on, 2002, 24(7): 971-987. 
[3]. Ahonen T, Hadid A, Pietikäinen M. Face recognition with local binary patterns[M]//Computer vision-eccv 2004. Springer Berlin Heidelberg, 2004: 469-481. 
[4]. Liao S, Zhu X, Lei Z, et al. Learning multi-scale block local binary patterns for face recognition[M]//Advances in Biometrics. Springer Berlin Heidelberg, 2007: 828-837. 

[5]. http://blog.csdn.net/smartempire/article/details/23249517

[6]. http://blog.csdn.net/zouxy09/article/details/7929531

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章