LBP,Local Binary Patterns,中文名稱為局部二值模式,是一種用來描述圖像局部紋理特征的算子,具有旋轉不變性和灰度不變性的特點。
LBP方法最早是1994年,Timo Ojala在 Multiresolution Gray-scale and Rotation Invariant Texture Classification with Local Binary Patterns文章中提出。
【原始的LBP算法】
LBP的核心思想是將圖像的某塊像素和它周邊一定范圍內的像素進行對比,求得LBP值。
首先,取一定的范圍。最原始的LBP算法是以該像素為中心,在附近取一個3*3的九宮格圖形,然后以中心像素為閾值,周圍大于等于改值的則記為1,小于該值的則記為0。
然后從第一格開始,順時針得到一個二進制序列,再將這個二進制序列轉化成十進制數則得到該像素點的LBP值。
LBP,Local Binary Patterns,中文名稱為局部二值模式,是一種用來描述圖像局部紋理特征的算子,具有旋轉不變性和灰度不變性的特點。
LBP方法最早是1994年,Timo Ojala在 Multiresolution Gray-scale and Rotation Invariant Texture Classification with Local Binary Patterns文章中提出。
【原始的LBP算法】
LBP的核心思想是將圖像的某塊像素和它周邊一定范圍內的像素進行對比,求得LBP值。
首先,取一定的范圍。最原始的LBP算法是以該像素為中心,在附近取一個3*3的九宮格圖形,然后以中心像素為閾值,周圍大于等于改值的則記為1,小于該值的則記為0。
然后從第一格開始,順時針得到一個二進制序列,再將這個二進制序列轉化成十進制數則得到該像素點的LBP值。
function image_lbp = originLBP( image )
%這個函數是最初的LBP九宮格形式
[row,column]=size(image);
image_lbp=zeros(row,column);
%image_lbp(1,:)=image(1,:);
%image_lbp(row,:)=image(row,:);
%image_lbp(:,1)=image(:,1);
%image_lbp(: ,column)=image(:,column);
for i=2:row-1
for j=2:column-1
image_lbp(i,j)=image_lbp(i,j)*2+calculate(image(i,j),image(i-1,j-1));
image_lbp(i,j)=image_lbp(i,j)*2+calculate(image(i,j),image(i-1,j));
image_lbp(i,j)=image_lbp(i,j)*2+calculate(image(i,j),image(i-1,j+1));
image_lbp(i,j)=image_lbp(i,j)*2+calculate(image(i,j),image(i,j+1));
image_lbp(i,j)=image_lbp(i,j)*2+calculate(image(i,j),image(i+1,j+1));
image_lbp(i,j)=image_lbp(i,j)*2+calculate(image(i,j),image(i+1,j));
image_lbp(i,j)=image_lbp(i,j)*2+calculate(image(i,j),image(i+1,j-1));
image_lbp(i,j)=image_lbp(i,j)*2+calculate(image(i,j),image(i,j-1));
end
end
function result=calculate(center,neighbour)
if(center<=neighbour)
result=1;
else
result=0;
end
end
end