LBP局部特征提取算法 -开发者知识库

LBP局部特征提取算法 -开发者知识库,第1张

一、LBP提出

 局部二值模式(Local binary patterns,LBP)是機器視覺領域中用於描述圖像局部紋理特征的算子,具有旋轉不變性和灰度不變性等顯著的優點。它是由T. Ojala, M.Pietik?inen, 和 D. Harwood [1][2]在1994年提出,LBP在紋理分類問題上是一個非常強大的特征。   

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

LBP局部特征提取算法 -开发者知识库,第2张

注意:(b)二值模式為:10001011(d)中的結果為169.這里每個像素的權重取值在不同算法中排序不同。

二、公式表示

因此,LBP操作可以被定義為

LBP局部特征提取算法 -开发者知识库,\,第3张

其中LBP局部特征提取算法 -开发者知识库,35,第4张是中心像素,亮度是LBP局部特征提取算法 -开发者知识库,36,第5张;而LBP局部特征提取算法 -开发者知识库,37,第6张則是相鄰像素的亮度。s是一個符號函數:

LBP局部特征提取算法 -开发者知识库,\,第7张

這種描述方法使得你可以很好的捕捉到圖像中的細節。實際上,研究者們可以用它在紋理分類上得到最先進的水平。正如剛才描述的方法被提出后,固定的近鄰區域對於尺度變化的編碼失效。所以,使用一個變量的擴展方法,在文獻[3]中有描述。主意是使用可變半徑的圓對近鄰像素進行編碼,這樣可以捕捉到如下的近鄰:

LBP局部特征提取算法 -开发者知识库,\,第8张

對一個給定的點LBP局部特征提取算法 -开发者知识库,40,第9张   ,他的近鄰點 LBP局部特征提取算法 -开发者知识库,41,第10张 可以由如下計算:

LBP局部特征提取算法 -开发者知识库,\,第11张

其中,R是圓的半徑,而P是樣本點的個數。這個操作是對原始LBP算子的擴展,所以有時被稱為擴展LBP(又稱為圓形LBP)。如果一個在圓上的點不在圖像坐標上,我們使用他的內插點。計算機科學有一堆聰明的插值方法,而OpenCV使用雙線性插值。

LBP局部特征提取算法 -开发者知识库,\,第12张



三、LBP改進升級


1)圓形LBP算子:


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


LBP局部特征提取算法 -开发者知识库,第13张

其實質就是擴大鄰域空間,使用不同的采樣距離。


2LBP旋轉不變模式


       從 LBP 的定義可以看出,LBP 算子是灰度不變的,但卻不是旋轉不變的。圖像的旋轉就會得到不同的 LBP值。

         Maenpaa等人又將 LBP 算子進行了擴展,提出了具有旋轉不變性的 LBP 算子,即不斷旋轉圓形鄰域得到一系列初始定義的 LBP 值,取其最小值作為該鄰域的 LBP 值。

       圖 2.5 給出了求取旋轉不變的 LBP 的過程示意圖,圖中算子下方的數字表示該算子對應的 LBP 值,圖中所示的 8  LBP模式,經過旋轉不變的處理,最終得到的具有旋轉不變性的 LBP 值為 15。也就是說,圖中的 8  LBP 模式對應的旋轉不變的 LBP 模式都是00001111


LBP局部特征提取算法 -开发者知识库,第14张


3LBP等價模式

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

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

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


四、LBP特征用於檢測的原理

       顯而易見的是,上述提取的LBP算子在每個像素點都可以得到一個LBP“編碼”,那么,對一幅圖像(記錄的是每個像素點的灰度值)提取其原始的LBP算子之后,得到的原始LBP特征依然是“一幅圖片”(記錄的是每個像素點的LBP值)。


LBP局部特征提取算法 -开发者知识库,第15张


        LBP的應用中,如紋理分類、人臉分析等,一般都不將LBP圖譜作為特征向量用於分類識別,而是采用LBP特征譜的統計直方圖作為特征向量用於分類識別。


       因為,從上面的分析我們可以看出,這個“特征”跟位置信息是緊密相關的。直接對兩幅圖片提取這種“特征”,並進行判別分析的話,會因為“位置沒有對准”而產生很大的誤差。后來,研究人員發現,可以將一幅圖片划分為若干的子區域,對每個子區域內的每個像素點都提取LBP特征,然后,在每個子區域內建立LBP特征的統計直方圖。如此一來,每個子區域,就可以用一個統計直方圖來進行描述;整個圖片就由若干個統計直方圖組成;


        例如:一幅100*100像素大小的圖片,划分為10*10=100個子區域(可以通過多種方式來划分區域),每個子區域的大小為10*10像素;在每個子區域內的每個像素點,提取其LBP特征,然后,建立統計直方圖;這樣,這幅圖片就有10*10個子區域,也就有了10*10個統計直方圖,利用這10*10個統計直方圖,就可以描述這幅圖片了。之后,我們利用各種相似性度量函數,就可以判斷兩幅圖像之間的相似性了;


 


LBP特征向量進行提取的步驟


1)首先將檢測窗口划分為16×16的小區域(cell);


2)對於每個cell中的一個像素,將相鄰的8個像素的灰度值與其進行比較,若周圍像素值大於中心像素值,則該像素點的位置被標記為1,否則為0。這樣,3*3鄰域內的8個點經比較可產生8位二進制數,即得到該窗口中心像素點的LBP值;


3)然后計算每個cell的直方圖,即每個數字(假定是十進制數LBP值)出現的頻率;然后對該直方圖進行歸一化處理。


4)最后將得到的每個cell的統計直方圖進行連接成為一個特征向量,也就是整幅圖的LBP紋理特征向量;

然后便可利用SVM或者其他機器學習算法進行分類了。




參考文獻:

1.T. Ojala, M. Pietikäinen, and D. Harwood (1994), "Performance evaluation of texture measures with classification based on Kullback discrimination of distributions", Proceedings of the 12th IAPR International Conference on Pattern Recognition (ICPR 1994), vol. 1, pp. 582 - 585.

2.T. Ojala, M. Pietikäinen, and D. Harwood (1996), "A Comparative Study of Texture Measures with Classification Based on Feature Distributions", Pattern Recognition, vol. 29, pp. 51-59.

[3]Face Recognition With OpenCV.



最佳答案:

本文经用户投稿或网站收集转载,如有侵权请联系本站。

发表评论

0条回复