1. 程式人生 > >區域性二進位制模式(Local Binary Patterns,LBP)——MATLAB實現

區域性二進位制模式(Local Binary Patterns,LBP)——MATLAB實現

基本LBP:
逐行掃描影象,以影象中的每個畫素點得灰度值為閾值,對其周圍3*3的8鄰域進行二值化,並從左上點開始按照順時針方向(或逆時針,統一即可)將二值化結果組成一個二進位制數,轉換為十進位制作為中心點的響應。這樣可以得到一個LBP影象。
例如:
這裡寫圖片描述
這個響應影象的直方圖稱為LBP統計直方圖或LBP直方圖。
生成LBP影象MATLAB程式碼:

%區域性二進位制模式LBP
close all
clear all

img=imread('sophie.bmp');
[m n]=size(img);
I=zeros(m,n);

for i=1:m
    for j=1:n        
        b0=0
; b1=0; b2=0; b3=0; b4=0; b5=0; b6=0; b7=0; if(i-1>0 && j-1>0 && i+1<=m && j+1<=n) if(img(i-1,j-1)>img(i,j)) b0=1; end if(img(i-1,j)>img(i,j)) b1=1
; end if(img(i-1,j+1)>img(i,j)) b2=1; end if(img(i,j+1)>img(i,j)) b3=1; end if(img(i+1,j+1)>img(i,j)) b4=1; end if
(img(i+1,j)>img(i,j)) b5=1; end if(img(i+1,j-1)>img(i,j)) b6=1; end if(img(i,j-1)>img(i,j)) b7=1; end if(img(i+1,j-1)>img(i,j)) b5=1; end b=b0+b1*2^1+b2*2^2+b3*2^3+b4*2^4+b5*2^5+b6*2^6+b7*2^7; I(i,j)=b; end end figure subplot(1,2,1),subimage(img); title('原圖'); subplot(1,2,2),subimage(I); title('LBP影象');

執行結果如下:
這裡寫圖片描述