【計算機視覺】LBP紋理特征

LBP簡介

LBP(Local Binary Pattern,局部二值模式)是一種用來描述圖像局部紋理特征的算子;它具有旋轉不變性和灰度不變性等顯著的優點。它是首先由T. Ojala, M.Pietik?inen,和 D. Harwood 在1994年提出,用于紋理特征提取。而且,提取的特征是圖像的局部的紋理特征。
從紋理分析的角度來看,圖像上某個像素點的紋理特征,大多數情況下是指這個點和周圍像素點的關系,即這個點和它的鄰域內點的關系。從哪個角度對這種關系提取特征,就形成了不同種類的特征。有了特征,就能根據紋理進行分類。LBP構造了一種衡量一個像素點和它周圍像素點的關系。

LBP basic
LBP basic

原始的LBP算子定義為在3 * 3的窗口內,以窗口中心像素為閾值,將相鄰的8個像素的灰度值與其進行比較,若周圍像素值大于中心像素值,則該像素點的位置被標記為1,否則為0。這樣,3 * 3領域內的8個點可產生8bit的無符號數,即得到該窗口的LBP值,并用這個值來反映該區域的紋理信息

原始的LBP提出后,研究人員不斷對其提出了各種改進和優化,從而得到了諸如半徑為R的圓形區域內含有P個采樣點的LBP算子;LBP均勻模式;LBP旋轉不變模式;LBP等價模式等等。
顯而易見的是,上述提取的LBP算子在每個像素點都可以得到一個LBP“編碼”,那么,對一幅圖像提取其原始的LBP算子之后,得到的原始LBP特征依然是“一幅圖片”。
因為這里的LBP特征是跟位置信息緊密相關的,所以,不能利用這種特征進行直接的判別分析。然而,研究人員發現,可以將一幅圖片劃分為若干的子區域,對每個子區域內的每個像素點都提取LBP特征,然后,在每個子區域內建立LBP特征的統計直方圖。如此一來,每個子區域,就可以用一個統計直方圖來進行描述;整個圖片就由若干個統計直方圖組成。利用統計直方圖的方式,就可以描述這幅圖片了。

LBP的改進版本

原始LBP

LBP的基本思想是對圖像的像素和它局部周圍像素進行對比后的結果進行求和。把這個像素作為中心,對相鄰像素進行閾值比較。如果中心像素的亮度大于等于他的相鄰像素,把他標記為1,否則標記為0。你會用二進制數字來表示每個像素,比如11001111。因此,由于周圍相鄰8個像素,你最終可能獲取2^8個可能組合,被稱為局部二值模式,有時被稱為LBP碼。


原始LBP
原始LBP

但是這樣的LBP描述特征能力有限,且不具備旋轉不變性。很容易想象,如果圖片進行了旋轉,則LBP值也會隨之改變。因此有了下面的改進。

旋轉不變的LBP算法

為了降低LBP的編碼模式,對同一編碼模式經旋轉(循環位移,按位旋轉)后產生的編碼結果編碼為同一值,即這些旋轉結果中的最小值。


旋轉不變的LBP示意圖
旋轉不變的LBP示意圖

36個旋轉不變的LBP編碼模式:


uniform LBP算法

個數是P(P-1)+2,P為鄰域像素點個數。對于8個采樣點,uniform形式有58中輸出。
旋轉LBP模式同樣存在缺陷,大量的實驗證明LBP模式的36種情況在一幅圖像中分布出現的頻率差異較大,得到的效果并不是很好。因此人們提出uniform LBP。
首先介紹什么是uniform,它是指均勻環形結構內包含非常少的空間轉換。我們定義U(pattern),用來記錄空間轉換的數量,即0-1變化的次數。
0-1變化少于等于兩次的二進制碼形成的LBP看成是一個 uniform LBP ,比如說11000011,01變化次數是兩次。就是一個uniform LBP。
為什么要提出這么個uniform LBP呢,因為研究者發現他們
計算出來的大部分值都在這58種之中,可達到90%以上,所以他們把值分為59類,58個uniform pattern為一類,其它的所有值為第59類。59=(2+0+56)+1,這樣直方圖從原來的256維變成59維。起到了降維*的作用,并且可以減少高頻噪聲帶來的影響。

![](http://jason-images.qiniudn.com/@/ML/opencv/lbp/uniform LBP function.jpg)
![](http://jason-images.qiniudn.com/@/ML/opencv/lbp/uniform LBP.png)

旋轉不變的uniform LBP算法

個數是P+1個。對于8個采樣點,基于unifrom的旋轉不變LBP將只有9個輸出。
該模式即對于上圖的uniform LBP,每一行都是旋轉不變的,被編為一個編碼值。

![旋轉不變的uniform LBP](http://jason-images.qiniudn.com/@/ML/opencv/lbp/旋轉不變的uniform LBP.jpg)

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

  1. 首先將檢測窗口劃分為16×16的小區域(cell)
  2. 對于每個cell中的一個像素,將相鄰的8個像素的灰度值與其進行比較,若周圍像素值大于中心像素值,則該像素點的位置被標記為1,否則為0。這樣,3*3鄰域內的8個點經比較可產生8位二進制數,即得到該窗口中心像素點的LBP值
  3. 然后計算每個cell的直方圖,即每個數字(假定是十進制數LBP值)出現的頻率;然后對該直方圖進行歸一化處理
  4. 最后將得到的每個cell的統計直方圖進行連接成為一個特征向量,也就是整幅圖的LBP紋理特征向量

轉載請注明作者Jason Ding及其出處
Github主頁(http://jasonding1354.github.io/)
CSDN博客(http://blog.csdn.net/jasonding1354)
簡書主頁(http://www.lxweimin.com/users/2bd9b48f6ea8/latest_articles)

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容