/ / Patrón binario local en MATLAB - matlab, procesamiento de imágenes

Patrón binario local en MATLAB - matlab, procesamiento de imágenes

Estoy intentando ejecutar un patrón binario local en MATLAB usando la caja de herramientas de procesamiento de imágenes. Cuando ejecuto no puedo obtener una imagen LBP y un histograma 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)

¿Cuál es el problema? Se supone que debo obtener números del 0 al 255.enter image description here

Respuestas

2 para la respuesta № 1

I3(i-1,j-1)=I2(i-1,j-1)>J0; Crea un lógico como salida. Si no vas y lanzas esto a otra cosa, tu imagen solo será ceros y unos.

La forma más fácil es inicializar. I3 fuera del bucle, es decir, tener I3=I2; antes de empezar a hacer bucles. De esta manera, todas tus asignaciones dentro del bucle se convierten a cualquier clase I2 estaba.


0 para la respuesta № 2

utilizar : figura, imshow (uint8 (LBP));

Debido a que la imagen LBP está en DOBLE, debes lanzarla.