MORFOLOGÍA MATEMÁTICA (BINARIA)

Vamos a trabajar exclusivamente con imágenes binarias:

a=imread('im/rice.png'); a=im2bw(a,graythresh(a));
b=imread('im/parts.tif'); b=imcomplement(im2bw(b,graythresh(b)));

También puedes crear algunas sintéticas:

[x,y]=meshgrid(-32:31,-32:31);

z=sqrt(x.^2+y.^2); c=(z<20); % un circulo blanco
z=sin(x/3+y/2); d=(z>0); % barras oblicuas
e=immultiply(c,d);

Echa un vistazo:

figure(1),subplot(2,2,1),imshow(a)
subplot(2,2,2),imshow(b)
subplot(2,2,3),imshow(c)
subplot(2,2,4),imshow(d)

Estos son algunos de los elementos estructurantes (EE) que se pueden definir en Matlab

s1=strel('square',3) % lado 3
s2=strel('line',3,0) % longitud 3, angulo 0
s3=strel('disk',2) % radio 3
% el tercer argumento controla como se discretizan
% los discos lo que puede ser importante para algunos usos.

Las operaciones básicas

figure(2),subplot(1,2,1),imshow(e),subplot(1,2,2),imshow(imdilate(e,s2))
figure(3),subplot(1,2,1),imshow(e),subplot(1,2,2),imshow(imerode(e,s2))

Comprueba lo que ocurre si cambias el EE.

La apertura y el cierre:

figure(2),subplot(1,2,1),imshow(e),subplot(1,2,2),imshow(imopen(e,s2))
figure(3),subplot(1,2,1),imshow(e),subplot(1,2,2),imshow(imclose(e,s2))

También se admite la sintaxis:

r = imdilate(e,ones(5,5));

Las operaciones morfológicas binárias basicas (con EE ones(3)) también se pueden realizar mediante

r = bwmorph('dilate');
r = bwmorph('erode');
r = bwmorph('open');
r = bwmorph('close');

La transformación Acierto-Fallo se calcula como

r = bwhitmiss(e, [1 0 0] , [ 0 0 1] );

que es equivalent a

r = bwhitmiss(e, [1 0 -1] );

Operaciones avanzadas como el adelgazamiento, el espesamiento o el esqueleto están implementadas también en bwmorph

r1 = bwmorph(e,'thin');
r2 = bwmorph(e,'thick');



r3 = bwmorph(b,'skel',Inf);figure(4),imshow(r3)
r4 = bwmorph(b,'shrink',Inf);figure(5),imshow(r4)

Ejercicios:

  1. Elige una imagen binaria y un elemento estructurante no isótropo y comprueba usando funciones de Matlab las propiedades de dualidad entre la erosión-dilatación y la apertura-cierre.

  2. Inventa una forma de calcular el contorno o frontera de una imagen binaria combinando operaciones básicas.

  3. Dada la imagen rice.png combina funciones morfológicas básicas que filtren todos los granos de arroz en una determinada dirección (vertical por ejemplo).

  4. Elige un par de imagenes binarias y prueba todas las opciones de la funcion bwmorph (ten en cuenta el parametro N). Saca conclusiones.

Ejercicios opcionales (puntuables):