Локальный двоичный шаблон в MATLAB - PullRequest
3 голосов
/ 13 сентября 2011

Я пытаюсь выполнить локальный двоичный шаблон в MATLAB, используя набор инструментов для обработки изображений.Когда я выполняю, я не могу получить изображение LBP и гистограмму LBP.

   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)

в чем проблема. Я должен получить числа от 0 до 255. enter image description here

Ответы [ 2 ]

2 голосов
/ 14 сентября 2011

I3(i-1,j-1)=I2(i-1,j-1)>J0; создает логический вывод.Если вы не перейдете и приведете это к чему-то другому, ваше изображение будет только нулями и единицами.

Самый простой способ - инициализировать I3 вне цикла, т.е.начать цикл.Таким образом, все ваши назначения внутри цикла преобразуются в любой класс I2.

0 голосов
/ 12 апреля 2015

использование: фигура, imshow (uint8 (LBP));

Поскольку LBP-изображение находится в ДВОЙНОЙ форме, вам нужно его разыграть.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...