天天看點

LBP算子

http://blog.csdn.net/carson2005/article/details/6292905

LBP(Local Binary Pattern, 局部二值模式)是一種用來描述圖像局部紋理特征的算子;顯然,它的作用是進行特征提取,而且,提取的特征是圖像的紋理特征,并且,是局部的紋理特征;

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

LBP算子

    原始的LBP提出後,研究人員不斷對其提出了各種改進和優化,進而得到了諸如半徑為R的圓形區域内含有P個采樣點的LBP算子

LBP算子

;LBP均勻模式;LBP旋轉不變模式;LBP等價模式等等,具體請參考T. Ojala在IEEE TPAMI上2002年發表的那篇文章“Multiresolution Gray-Scale and Rotation Invariant Texture Classification with Local Binary Patterns”。另外,LBP算子的中文參考文章,可以參考以下:

(1)基于LBP的人臉識别研究,黃非非,重慶大學碩士畢業論文,2009年

(2)基于LBP的特征提取研究,王玲,北京交通大學碩士畢業論文,2009年

(3)基于局部二值模式的人臉識别方法研究,周凱,中南大學碩士畢業論文,2009年

    顯而易見的是,上述提取的LBP算子在每個像素點都可以得到一個LBP“編碼”,那麼,對一幅圖像提取其原始的LBP算子之後,得到的原始LBP特征依然是“一幅圖檔”。不過,這裡我們已經将物體從圖檔(圖檔可以了解為物體在原始測量空間得到的測量特征)轉換為二次特征,也就是得到了我們通常說的“特征”。不過,這個所謂的“特征”并不能直接用于判别分析。因為,從上面的分析我們可以看出,這個“特征”跟位置資訊是緊密相關的。直接對兩幅圖檔提取這種“特征”,并進行判别分析的話,會因為“位置沒有對準”而産生很大的誤差。後來,研究人員發現,可以将一幅圖檔劃分為若幹的子區域,對每個子區域内的每個像素點都提取LBP特征,然後,在每個子區域内建立LBP特征的統計直方圖。如此一來,每個子區域,就可以用一個統計直方圖來進行描述;整個圖檔就由若幹個統計直方圖組成;例如:一幅100*100像素大小的圖檔,劃分為10*10=100個子區域,每個子區域的大小為10*10像素;在每個子區域内的每個像素點,提取其LBP特征,然後,建立統計直方圖;這樣,這幅圖檔就有10*10個子區域,也就有了10*10個統計直方圖,利用這10*10個統計直方圖,就可以描述這幅圖檔了。之後,我們利用各種相似性度量函數,就可以判斷兩幅圖像之間的相似性了;

    目前,LBP局部紋理提取算子,已經成功應用在指紋識别、字元識别、人臉識别、車牌識别等領域。

另一篇,介紹的也不錯,這裡放上:

LBP(local banary patter)是一種非常經典的用來描述圖像局部紋理特征的算子。

1,基本LBP

LBP方法自1994年提出,此後就作為一個有效的紋理特征,不斷的被人使用和改進。LBP非常簡單,也非常有效。

LBP算子

左邊的圖是從一個圖檔上拿下來的3*3矩陣,矩陣上的值就是像素值,現在我們要計算的中間那個點的LBP。除了它此外的8個點依次與中間點比較,比它(也就是15)大的記成1,比它小的記成0,然後我們就得到右面的圖檔。然後我們標明一個起始點-這個圖檔選的是左上角第一個點,然後按照順時針方向得到一個二進制串10011010,轉換為十進制則為154。到此,我們得到了中間點的LBP值--154。對整個圖檔的所有點都這樣處理,也就是以它為中心與附近的8個點相比較,這樣就得到整個圖所有點的LBP值。那麼得到這麼個與源圖像大小相等的LBP值矩陣有什麼用呢?通常我們統計它的直方圖,得到一個直方圖矩陣向量,然後每一個圖檔對應一個直方圖向量,這個直方圖向量就是此圖檔的一個特征。我們由兩個圖像的直方圖向量進而得到它們的相似度,進而來分類。

2, LBP均勻模式LBP (uniform LBP)

均勻模式就是一個二進制序列從0到1或是從1到0的變過不超過2次(這個二進制序列首尾相連)。比如:10100000的變化次數為3次是以不是一個uniform pattern。所有的8位二進制數中共有58個uniform pattern.為什麼要提出這麼個uniform LBP呢,因為研究者發現他們計算出來的大部分值都在這58種之中,是以他們把值分為59類,58個uniform pattern為一類,其它的所有值為第59類。這樣直方圖從原來的256維變成59維。

3,旋轉不變模式LBP

旋轉不變模式LBP能夠在圖檔發生一定的傾斜時也能得到相同的結果。它的定義可以看下圖:

LBP算子

我們看到中心點的鄰居不再是它上下左右的8個點(補充一句,不一定非要是3*3的鄰域,這個自己定,但是鄰域大了意味着直方圖向量次元的增加),而是以它為圓心的一個圈,規定了這個圓的半徑和點的個數,就可以求出各個點的坐标,但是點的坐标不一定是整數,如果是整數那麼這個點的像素值就是對應點的值,如果不是整數,就用內插補點的方式得到。

其他基于LBP的算法

1,MBP

将整個鄰域内的所有點的中值作為門檻值進行比較,中值不是平局值哦,是所有的值按照從小到大排列,最中間的那個。話說這個MBP可以用matlab的一個函數實作:medfilt2

2,

利用鄰域内所有點的平局值作為門檻值。

3,

第三種不是在門檻值上做改動,而是将大圖檔切分成小圖檔,然後再小圖檔上用LBP方法,然後把小些小圖檔的直方圖矩陣連接配接起來,成為大圖的特征。為什麼這麼做呢?因為很明顯的LBP 直方圖會丢失局部資訊,比如得到一個值為100那麼不管你這個值是從哪裡得到的--比如人臉,不管是眼睛處得到這個值還是鼻子處得到,應該不管,都放到lable=100這裡。

http://blog.csdn.net/carson2005/article/details/6292905

http://www.cnblogs.com/nani/archive/2012/04/12/2444314.html