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

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

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);

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?

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

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.
on 16 Mar 2015

Ktk
on 29 Oct 2017

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

Image Analyst
on 30 Oct 2017

WHAT code?

Attached is my local binary pattern demo. Adapt as needed.

Rahul Pandey
on 5 Feb 2020

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

Vrushali Patil
on 2 Apr 2020

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

Image Analyst
on 2 Apr 2020

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

Start Hunting!