/ / Lokalny wzór binarny w MATLAB - matlab, przetwarzanie obrazu

Lokalny wzór binarny w MATLAB - matlab, przetwarzanie obrazu

Próbuję wykonać lokalny wzór binarny w MATLAB przy użyciu przybornika do przetwarzania obrazu. Kiedy wykonuję, nie mogę uzyskać obrazu LBP i histogramu 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)

jaki jest problem.i powinien otrzymać numery od 0 do 255.wprowadź opis obrazu tutaj

Odpowiedzi:

2 dla odpowiedzi № 1

I3(i-1,j-1)=I2(i-1,j-1)>J0; tworzy logiczny wynik. Jeśli nie pójdziesz i nie rzucisz tego na coś innego, obraz będzie zerowy i jedyny.

Najprostszym sposobem jest zainicjowanie I3 poza pętlą, tj. mieć I3=I2; przed rozpoczęciem pętli. W ten sposób wszystkie twoje zadania w pętli zostaną przekonwertowane na dowolną klasę I2 było.


0 dla odpowiedzi nr 2

posługiwać się : figure, imshow (uint8 (LBP));

Ponieważ obraz LBP jest w PODWÓJNY, musisz go rzucić.