# Local Binary Pattern(LBP)

160 views (last 30 days)

Show older comments

I am trying to execute local binary pattern in MATLAB using the image processing toolbox. When i execute I can't get a LBP image and LBP histogram.

clear all;

close all;

clc;

I=imread('test.png');

figure,imshow(I)

%%Crop

I2 = imcrop(I);

figure, imshow(I2)

w=size(I2,1);

h=size(I2,2);

%%LBP

scale = 2.^[7 6 5; 0 -inf 4; 1 2 3];

for i=2:w-1

for j=2:h-1

J0=I2(i,j);

I3(i-1,j-1)=I2(i-1,j-1)>J0;

I3(i-1,j)=I2(i-1,j)>J0;

I3(i-1,j+1)=I2(i-1,j+1)>J0;

I3(i,j+1)=I2(i,j+1)>J0;

I3(i+1,j+1)=I2(i+1,j+1)>J0;

I3(i+1,j)=I2(i+1,j)>J0;

I3(i+1,j-1)=I2(i+1,j-1)>J0;

I3(i,j-1)=I2(i,j-1)>J0;

LBP(i,j)=I3(i-1,j-1)*2^7+I3(i-1,j)*2^6+I3(i-1,j+1)*2^5+I3(i,j+1)*2^4+I3(i+1,j+1)*2^3+I3(i+1,j)*2^2+I3(i+1,j-1)*2^1+I3(i,j-1)*2^0;

end

end

figure,imshow(LBP)

figure,imhist(LBP)

what is the issue.i am supposed to get numbers from 0 to 255 but i am not getting it. how to correct it?

### Answers (11)

madhulika jain
on 22 Sep 2011

Izzo
on 3 Dec 2011

hey i think i got your problem, because i already did LBP. First, make sure that u have converted the image into grayscale form. Second, you have to replace the test image with the new LBP image, therefore: instead of this code

LBP(i,j)=I3(i-1,j-1)*2^7+I3(i-1,j)*2^6+I3(i-1,j+1)*2^5+I3(i,j+1)*2^4+I3(i+1,j+1)*2^3+I3(i+1,j)*2^2+I3(i+1,j-1)*2^1+I3(i,j-1)*2^0;

try to change into:

I2(i-1,j-1)=I3(i-1,j-1)*2^7+I3(i-1,j)*2^6+I3(i-1,j+1)*2^5+I3(i,j+1)*2^4+I3(i+1,j+1)*2^3+I3(i+1,j)*2^2+I3(i+1,j-1)*2^1+I3(i,j-1)*2^0;

because i have problem like that too, then my supervisor solve into this for me :P

##### 1 Comment

elfrida
on 16 Aug 2013

sir, can you help me to make the program if i want to get LBP value from 13x13 image size?

Image Analyst
on 22 Sep 2011

Change the last few lines of your code to this:

subplot(2,2,3);

imshow(LBP, []);

subplot(2,2,4);

[pixelCounts, GLs] = imhist(uint8(LBP));

bar(GLs, pixelCounts);

##### 10 Comments

Walter Roberson
on 14 Feb 2021

But I think it does not show me what I want

We do not have your image to test with, and we do not know what kinds of output you expect to see.

remo
on 1 Dec 2011

hi CNN,

Sorry for being a Noob. I just cant understand why you use 'scale = 2.^[7 6 5; 0 -inf 4; 1 2 3]; ' in this program. can you explain?

##### 7 Comments

Image Analyst
on 29 Mar 2019

Unhide the comments above and you'll see a desciption of how those are computed.

Fa Fa
on 13 Jun 2012

Hi All, has somebody the Result, i runed this code but i didnt get the result. Thanks

##### 0 Comments

anusha
on 24 Sep 2014

Edited: anusha
on 24 Sep 2014

u can try this code

clear all; close all; I=imread('cameraman.tif'); I=rgb2gray(I); I1=imcrop(I); [w h]=size(I1);

for i=2:w-1 for j=2:h-1 val=I1(i,j); scale=2.^[0 1 2;7 -inf 3;6 5 4]; mat=[I1(i-1,j-1) I1(i-1,j) I1(i-1,j+1);I1(i,j-1) I1(i,j) I1(i,j+1);I1(i+1,j-1) I1(i+1,j) I1(i+1,j+1)]; mat=mat>=val; fin=mat.*scale; I1(i,j)=sum(sum(fin)); end end imshow(I1,[]);

##### 0 Comments

Nikolay S.
on 16 Mar 2015

##### 0 Comments

Ktk
on 29 Oct 2017

the code is not giving me any values. can anyone help? thanks!

##### 3 Comments

Image Analyst
on 1 Jun 2022

@SATISH SONWANE, isn't that the usual way? You can change it if you want. Why would you want to?

Rahul Pandey
on 5 Feb 2020

will u please explain the code which u have written for lbp?@sajjad nasari

##### 0 Comments

Vrushali Patil
on 2 Apr 2020

Can anyone please help me to apply lbp on image frames directly without croping the image?

##### 1 Comment

Image Analyst
on 2 Apr 2020

### See Also

### Categories

### Products

### Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!