MATLAB Answers

Local Binary Pattern(LBP)

147 views (last 30 days)
C N N
C N N on 13 Sep 2011
Commented: Walter Roberson on 14 Feb 2021
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?
  12 Comments

Sign in to comment.

Answers (11)

madhulika jain
madhulika jain on 22 Sep 2011
I think you shpuld be getting LBP in the range 0 to 255. I ran this code and i got the values in this range only
  1 Comment
C N N
C N N on 22 Sep 2011
The problem with this code that after you get LBP, you need to convert it to uint8 before displaying it.

Sign in to comment.


Izzo
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
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?

Sign in to comment.


Image Analyst
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
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.

Sign in to comment.


remo
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
Image Analyst on 29 Mar 2019
Unhide the comments above and you'll see a desciption of how those are computed.

Sign in to comment.


Fa Fa
Fa Fa on 13 Jun 2012
Hi All, has somebody the Result, i runed this code but i didnt get the result. Thanks

anusha
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,[]);

Nikolay S.
Nikolay S. on 16 Mar 2015
You can try one of the following LBP implementations: http://www.mathworks.com/matlabcentral/fileexchange/49787-shift-based-lbp http://www.mathworks.com/matlabcentral/fileexchange/36484-local-binary-patterns I'm using both for a while, updating them fomr time to time.

Ktk
Ktk on 29 Oct 2017
the code is not giving me any values. can anyone help? thanks!
  1 Comment
Image Analyst
Image Analyst on 30 Oct 2017
WHAT code?
Attached is my local binary pattern demo. Adapt as needed.

Sign in to comment.


Rahul Pandey
Rahul Pandey on 5 Feb 2020
will u please explain the code which u have written for lbp?@sajjad nasari

Vrushali Patil
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
Image Analyst on 2 Apr 2020
Who said you had to crop the image? Just go ahead and do it on your image without cropping it if you don't want to crop it. What's the problem?

Sign in to comment.


Community Treasure Hunt

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

Start Hunting!