LBP特征详细原理-python代码复现
LBP特征提取算法
LBP(Local Binary Patterns,局部二值模式)是提取局部特征作為判別依據的,一種有效的紋理描述算子,度量和提取圖像局部的紋理信息,它具有旋轉不變性和灰度不變性等顯著的優點,對光照具有不變性。而且,提取的特征是圖像的局部的紋理特征。原始的LBP于1994年提出,它反映內容是每個像素與周圍像素的關系。后被不斷的改進和優化,分別提出了LBP旋轉不變模式、LBP均勻模式等。
灰度不變性:指的是光照變化是否會對描述產生影響。以上面的8鄰域來說,光照變化很難改變中心像素點的灰度值與周圍8個像素的大小關系。因為光照是一種區域性質的變化,而不是單像素性質的變化。
1、LBP特征描述
LBP的基本思想是定義于像素的8鄰域中(3x3的窗口), 以中心像素的灰度值為閾值, 將周圍8 個像素的值與其比較, 如果周圍的像素值小于中心像素的灰度值, 該像素位置就被標記為0, 否則標記為1。這樣3x3的鄰域內的八個點經過比較能夠產生8位二進制數(通常轉換為十進制,即LBP碼,共256種),每個像素得到一個二進制組合, 即得到該窗口中心像素點的LBP值,并用這個值來反映該區域的紋理信息。
(01111100)=4+8+16+32+64=124
一般以左上角為第一個點,逆時針進行旋轉
(原論文的公式定義)
一個更加正式的LBP操作可以被定義為:
其中(Xc, yc) 是中心像素,亮度是ic ;而 ip則是相鄰像素的亮度。s是一個符號函數:
2、LBP的改進版本:
(1)圓形LBP算子
基本的 LBP算子的最大缺陷在于它只覆蓋了一個固定半徑范圍內的小區域,這顯然不能滿足不同尺寸和頻率紋理的需要。為了適應不同尺寸的紋理特征,達到灰度和旋轉不變性的要求。將 3×3鄰域擴展到任意鄰域,并用圓形鄰域代替了正方形鄰域,改進后的 LBP 算子允許在半徑為 R的圓形鄰域內有任意多個像素點。從而得到了諸如半徑為R的圓形區域內含有P個采樣點的LBP算子。
(2)LBP旋轉不變模式
原始的LBP不具有旋轉不變性,圖像的旋轉就會得到不同的LBP值。這樣我們就提出了旋轉不變的LBP模式。旋轉不變的LBP計算公式如下:
Maenpaa等人又將 LBP算子進行了擴展,提出了具有旋轉不變性的 LBP 算子,即不斷旋轉圓形鄰域得到一系列初始定義的 LBP值,取其最小值作為該鄰域的 LBP 值。
下圖給出了求取旋轉不變的 LBP 的過程示意圖,圖中算子下方的數字表示該算子對應的 LBP值,圖中所示的 8 種 LBP模式,經過旋轉不變的處理,最終得到的具有旋轉不變性的 LBP值為 15。也就是說,圖中的 8種 LBP 模式對應的旋轉不變的 LBP模式都是 00001111。
3)LBP等價模式
一個LBP算子可以產生不同的二進制模式,對于半徑為R的圓形區域內含有P個采樣點的LBP算子將會產生2的P次方種模式。很顯然,隨著鄰域集內采樣點數的增加,二進制模式的種類是急劇增加的。例如:5×5鄰域內20個采樣點,有2的20次方,1048576種二進制模式。如此多的二值模式無論對于紋理的提取還是對于紋理的識別、分類及信息的存取都是不利的。同時,過多的模式種類對于紋理的表達是不利的。例如,將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(共四次跳變)
通過這樣的改進,二進制模式的種類大大減少,而不會丟失任何信息。模式數量由減少為 P ( P-1)+2種,其中P表示鄰域集內的采樣點數。對于3×3鄰域內8個采樣點來說,二進制模式由原始的256種減少為58種,即:它把值分為59類,58個uniform pattern為一類,其它的所有值為第59類。這樣直方圖從原來的256維變成59維。這使得特征****向量的維數更少,并且可以減少高頻噪聲帶來的影響。
具體實現:采樣點數目為8個,即LBP特征值有256種,共256個值,正好對應灰度圖像的0-255,因此原始的LBP特征圖像是一幅正常的灰度圖像,而等價模式LBP特征,根據0-1跳變次數,將這256個LBP特征值分為了59類,從跳變次數上劃分:跳變0次—2個,跳變1-2次56個,跳變3次—0個,跳變4次—140個,跳變5次—0個,跳變6次—56個,跳變7次—2個。共8種跳變情況,將這256個值進行分配,跳變小于2次的為等價模式類,共58個,他們對應的值按照從小到大分別編碼為1—58,即它們在LBP特征圖像中的灰度值為1—58,而除了等價模式類之外的混合模式類被編碼為0,即它們在LBP特征中的灰度值為0,因此等價模式LBP特征圖像整體偏暗。
第二幅圖像為radius =1 ,neighbors = 8,第三幅圖像為radius = 3,neighbors = 8,第四幅圖像為radius = 1,neighbors = 8,從實驗結果可以看出,半徑越小,圖像紋理越精細.第四幅圖像為旋轉不變LBP特征,最后一幅是等價模式LBP特征。
3、對LBP特征向量進行提取的步驟
LBP的應用中,如紋理分類、人臉分析等,LBP特征提取結果還是大小相同的一幅圖像,一般都不將LBP圖譜作為特征向量用于分類識別,而是采用LBP特征譜的統計直方圖作為特征向量用于分類識別。
LBPH,Local Binary Patterns Histograms,即LBP特征的統計直方圖,LBPH將LBP特征與圖像的空間信息結合在一起。這種表示方法由Ahonen等人在論文[3]中提出,他們將LBP特征圖像分成m個局部塊,并提取每個局部塊的直方圖,然后將這些直方圖依次連接在一起形成LBP特征的統計直方圖,即LBPH。
一幅圖像具體的計算LBPH的過程(以Opencv中的人臉識別為例):
舉例說明LBPH的維度:
采樣點為8個,如果用的是原始的LBP或Extended LBP特征,其LBP特征值的模式為256種,則一幅圖像的LBP特征向量維度為:64256=16384維,
而如果使用的UniformPatternLBP特征,其LBP值的模式為59種,其特征向量維度為:6459=3776維,可以看出,使用等價模式特征,其特征向量的維度大大減少,
這意味著使用機器學習方法進行學習的時間將大大減少,而性能上沒有受到很大影響。
然后便可利用SVM或者其他機器學習算法進行分類了。
總結
以上是生活随笔為你收集整理的LBP特征详细原理-python代码复现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: fragstats教程
- 下一篇: 文库/豆丁网等免账号,积分下载器