天天看點

特征提取與檢測(五) : LBP特征

一、LBP簡介

       LBP(Local Binary Pattern)算法是一種描述圖像特征像素點與各個像素點之間的灰階關系的局部特征的非參數算法,同時也是一張高效的紋理描述算法,紋理是物體表面的自然特性,它描述圖像像素點與圖像領域之間的灰階空間的分布關系,不會因為光照強弱而改變圖像的視覺變化。

       LBP算法首次提出于1994年,主要是使用8鄰域位置的局部關系,具有灰階不變性;随後在2002年提出了其改進版《Multiresolution gray-scale and rotation invariant texture classification with local binary patterns》 Timo Ojala, Matti PietikaÈ inen,2002,主要引入了圓形模式、旋轉不變性、和等價模式,是以在下面我們将按照如下順序介紹LBP特征:灰階不變性的基本LBP,灰階不變性的圓形LBP,旋轉不變性的LBP,等價LBP。

二、LBP描述

       原始的LBP算子定義為在3*3的視窗内,以視窗中心像素為門檻值,将相鄰的8個像素的灰階值與其進行比較,若周圍像素值大于中心像素值,則該像素點的位置被标記為1,否則為0。這樣,3*3鄰域内的8個點經比較可産生8位二進制數(通常轉換為十進制數即LBP碼,共256種),即得到該視窗中心像素點的LBP值,并用這個值來反映該區域的紋理資訊。如下圖所示:

特征提取與檢測(五) : LBP特征

                                                                      圖2-1 傳統LBP算子

     改進版本: 圓形LBP算子

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

特征提取與檢測(五) : LBP特征

                                                                        圖2-1 改進LBP算子

三、LBP旋轉不變模式

        對于一個標明的P,LBP算法将産生2^P個不同的輸出值,比如P=8時,值就有256個,這256個模式中每拿出一個都圍繞中心點轉動,那麼在多次轉動的過程中,會産生多種不同的結果,而這些結果中值最小的那個模式就是選擇不變的二值模式了。比如:

特征提取與檢測(五) : LBP特征

                                                                       圖3-1 LBP旋轉值圖 

       在上面的圖中說明的是,圖中的這8種模式,都有相同的旋轉不變模式,就是十進制為15的那個值,即00001111。那麼對256種模式都做這種旋轉,得到最小的數作為這種模式的旋轉不變模式,旋轉不變模式一共有36種(256/8=36),如下圖所示:

特征提取與檢測(五) : LBP特征

                                                                          圖3-2 LBP旋轉種類圖 

四、LBP等價模式

       所謂等價模式是通過記錄跳變方式來進一步降低LBP特征維數,“等價模式”定義為:當某個LBP所對應的循環二進制數從0到1或從1到0最多有兩次跳變時,該類型保留;跳變次數超過2次時,直接不要。等價模式就做了這件事,把P=8時的256種灰階不變性模式壓縮為58種,把把P=8時的36種旋轉不變性模式壓縮為9種。下面我們看一下58和9是怎麼來的: 首先256壓縮為58: 當P=8時,P(P-1)+2=58。其中P(P-1)為跳變2次的情況,而2位跳變為0次的情況,并沒有一種情況是發生了一次跳變。 其次36壓縮為9: 通過觀察上面圖3-2可知,其中00000000與11111111是跳變為0的情況,除了這兩個,圖中第一列的其他7個都是跳變為2,最後剩下的27個跳變都超過了2,直接丢棄,是以2+7=9。

繼續閱讀