LBP特徵 學習筆記

這幾天一直在作人臉識別的項目,有用到LBP特徵,可是毫無頭緒,師姐這幾天也比較忙,沒有時間來指導我,隨本身找相應的介紹LBP的博文來看,如今總算有了一個大致的思路了,就寫下來吧html

注:參考博文: 目標檢測的圖像特徵提取之(二)LBP特徵       也談LBP算法

LBPLocal Binary Pattern,局部二值模式)是一種用來描述圖像局部紋理特徵的算子;它具備旋轉不變性和灰度不變性等顯著的優勢。它是首先由T. Ojala, M.Pietikäinen, D. Harwood 1994年提出,用於紋理特徵提取。並且,提取的特徵是圖像的局部的紋理特徵;機器學習

 

1LBP特徵的描述函數

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

 

LBP的改進版本:學習

       原始的LBP提出後,研究人員不斷對其提出了各類改進和優化。優化

1)圓形LBP算子:編碼

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

2LBP旋轉不變模式spa

       從 LBP 的定義能夠看出,LBP 算子是灰度不變的,但卻不是旋轉不變的。圖像的旋轉就會獲得不一樣的 LBP值。

       後來就有人提出了旋轉不變模式的LBP特徵值,他們認爲下圖的8個LBP是等價的,也就是說LBP有了旋轉不變性,也就是說,圖中的 8  LBP 模式對應的旋轉不變的 LBP 模式都是00001111

3LBP等價模式

     後來研究人員發現從00000000到11111111的值仍是太多了,而研究發現大部分LBP的模式中的數字的變化都不會超過兩次(10001111爲變化了兩次一次1到0 ,一個0到1,  00001111也是兩次,要將他們當作首尾相連的),絕大部分都是形如10000111的這樣的,而這樣的數字就58個,將超過變化超過兩次的剩餘的198(注: 256 - 58)個LBP模式歸爲第59類,這樣就減小了不少的計算量,注:那58個LBP模式列於文章尾部

2LBP特徵用於檢測的原理(LZ在這一塊卡了好久好久,大部分博文都沒講這一點,而這一塊zouxy09講的特別好,給我以豁然開朗的感受,就直接複製粘貼了)

       顯而易見的是,上述提取的LBP算子在每一個像素點均可以獲得一個LBP「編碼」,那麼,對一幅圖像(記錄的是每一個像素點的灰度值)提取其原始的LBP算子以後,獲得的原始LBP特徵依然是「一幅圖片」(記錄的是每一個像素點的LBP值)。

        LBP的應用中,如紋理分類、人臉分析等,通常都不將LBP圖譜做爲特徵向量用於分類識別,而是採用LBP特徵譜的統計直方圖做爲特徵向量用於分類識別。

       由於,從上面的分析咱們能夠看出,這個「特徵」跟位置信息是緊密相關的。直接對兩幅圖片提取這種「特徵」,並進行判別分析的話,會由於「位置沒有對準」而產生很大的偏差。後來,研究人員發現,能夠將一幅圖片劃分爲若干的子區域,對每一個子區域內的每一個像素點都提取LBP特徵,而後,在每一個子區域內創建LBP特徵的統計直方圖。如此一來,每一個子區域,就能夠用一個統計直方圖來進行描述;整個圖片就由若干個統計直方圖組成;

        例如:一幅100*100像素大小的圖片,劃分爲10*10=100個子區域(能夠經過多種方式來劃分區域),每一個子區域的大小爲10*10像素;在每一個子區域內的每一個像素點,提取其LBP特徵,而後,創建統計直方圖;這樣,這幅圖片就有10*10個子區域,也就有了10*10個統計直方圖,利用這10*10個統計直方圖,就能夠描述這幅圖片了。以後,咱們利用各類類似性度量函數,就能夠判斷兩幅圖像之間的類似性了;

  而實際檢測人臉時,由於不一樣塊的表示人臉的貢獻值不一樣,如眼睛的LBP的統計直方圖對識別人臉的貢獻明顯要比光禿禿的額頭的貢獻大,在檢測到人臉的狀況下,咱們一般給不一樣位置的塊不一樣的權重來提升人臉識別的準確率,下面給出一組7*7時用到的權重模板的例子

2,1,1,1,1,1,2,
2,4,4,1,4,4,2,
1,1,1,0,1,1,1,
0,1,1,0,1,1,0,
0,1,1,1,1,1,0,
0,1,1,2,1,1,0,
0,1,1,1,1,1,0

3、對LBP特徵向量進行提取的步驟

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

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

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

4)最後將獲得的每一個cell的統計直方圖進行鏈接成爲一個特徵向量,也就是整幅圖的LBP紋理特徵向量;

而後即可利用SVM或者其餘機器學習算法進行分類了。

在這裏列出那58個uniform patterns.

00000000,0
00000001,1
00000010,2
00000011,3
00000100,4
00000110,6
00000111,7
00001000,8
00001100,12
00001110,14
00001111,15
00010000,16
00011000,24
00011100,28
00011110,30
00011111,31
00100000,32
00110000,48
00111000,56
00111100,60
00111110,62
00111111,63
01000000,64
01100000,96
01110000,112
01111000,120
01111100,124
01111110,126
01111111,127
10000000,128
10000001,129
10000011,131
10000111,135
10001111,143
10011111,159
10111111,191
11000000,192
11000001,193
11000011,195
11000111,199
11001111,207
11011111,223
11100000,224
11100001,225
11100011,227
11100111,231
11101111,239
11110000,240
11110001,241
11110011,243
11110111,247
11111000,248
11111001,249
11111011,251
11111100,252
11111101,253
11111110,254
11111111,255

十進制數位:

[0, 1, 2, 3, 4, 6, 7, 8, 12, 14, 15, 16, 24, 28, 30, 31, 32, 48, 56, 60, 62, 63, 64, 96, 112, 120, 124, 126, 127, 128, 129, 131, 135, 143, 159, 191, 192, 193, 195, 199, 207, 223, 224, 225, 227, 231, 239, 240, 241, 243, 247, 248, 249, 251, 252, 253, 254, 255]

相關文章
相關標籤/搜索