Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Local Binary Pattern in MATLAB

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.enter image description here

like image 822
cnn lakshmen Avatar asked Feb 23 '26 00:02

cnn lakshmen


1 Answers

I3(i-1,j-1)=I2(i-1,j-1)>J0; creates a logical as output. If you don't go and cast this to something else, you're image will only be zeros and ones.

The easiest way is to initialize I3 outside the loop, i.e. have I3=I2; before you start looping. This way, all your assignments inside the loop get converted to whatever class I2 was.

like image 91
Jonas Avatar answered Feb 24 '26 21:02

Jonas