特征提取算法之LBP


圖像特征,圖像紋理,圖像頻域等多種角度提取圖像的特征。 

LBP,局部二值模式,局部特征描述算子,具有很強的紋理特征描述能力,具有光照不變性和旋轉不變性。用python進行簡單的LBP算法實驗:

 1 from skimage import data,io
 2 import matplot.pyplot as plt
 3 import cv2
 4 from skimage.feature import local_binary_pattern
 5 image = cv2.imread('Lena.jpg')
 6 plt.subplot(1,2,2)
 7 plt.imshow(image)
 8 plt.show(image)
 9 radius = 1
10 n_points = radius * 8
11 lbp=local_binary_pattern(image,n_points,radius)
12 plt.inshow(lbp)
13 plt.show(lbp)

(1)LBP旋轉模式不變性

初始的LBP算法不具有旋轉不變性,LBP串的連接順序是固定的,當圖像旋轉后LBP就會發生改變,為了保持旋轉不變性,制定一個規則,計算所有旋轉產生的LBP值,取其中最小的(不知道為什么取最小的而不是最大的)作為該點的LBP值,則無論圖像如何旋轉,最小值始終是不變的,獲得了旋轉不變性。代價是增大了算法的計算量。

(2)LBP等價模式

一個LBP算子可以產生多種不同的二進制模式,如果有P個采樣點,每個采樣點有兩種可能的取值,一個有2^P種模式,不利於分析。使用一種等價模式對LBP算子的模式種類進行降維。Ojala對等價模式的定義,即當某個局部二進制模式所對應的循環二進制數從0到1或從1到0最多有兩次跳變時,該局部二進制模式所對應的二進制就成為一個等價模式類,其他的歸為混合模式類,有兩次跳變的等價模式一個有P*(P-1)種,0次跳變的2種,混合模式類1種,將維數從2*P降為P*(P-1)+3種。

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

1)首先將檢測窗口划分為16*16的小區域(cell)

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

3)然后計算每個cell的直方圖,即每個數字出現的頻率,然后對該直方圖進行歸一化處理

4)最后將得到的每個cell的統計直方圖進行連接成一個特征向量,也就是整幅圖的LBP紋理特征向量

然后便可以用SVM或者其他機器學習算法進行分類了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM