Imagen Morfologicas

84
Operaciones morfológicas

Transcript of Imagen Morfologicas

Page 1: Imagen Morfologicas

Operaciones morfológicas

Page 2: Imagen Morfologicas

Operaciones morfológicas Morfología: Rama de la biología que trata de la

forma y estructura de animales y plantas

Morfología en imágenes: Herramientas y métodos utilizados para extraer componentes de la misma, útiles en la descripción y representación de formas

(contornos, esqueletos, etc….)Esqueleto

Page 3: Imagen Morfologicas

Operaciones morfológicas (II)

El valor de cada píxel en la imagen de salida depende del valor de ese píxel en la imagen de entrada y su relación con la vecindad

Elemento estructural: Define el tamaño y la forma de la vecindad en la que se aplicará la operación morfológica

1 0 0

0 0 0

0 0 0

1 1 1

1 1 1

1 1 1

Page 4: Imagen Morfologicas

Dilatación

Dilatación: Se adiciona píxeles al contorno de objetos presentes en la imagen

Píxel de salida: Máximo de los píxeles presentes en la vecindad definida por el elemento estructural

1 0 0

0 0 0

0 0 0

1 1 1

1 1 1

1 1 1

1 0 0

0 1 0

0 0 0

Imagen de entrada Elemento estructural Imagen de salida

Page 5: Imagen Morfologicas

Dilatación (II)

Pasos para aplicar la dilatación

1.- Seleccionar el píxel de la imagen original a tratar

2.- Buscar el mayor de los píxeles de la vecindad, incluido el central, definidos por la forma y tamaño del elemento estructural

3.- Sustituir el valor del píxel por el máximo valor

 

Los anteriores pasos se ejecutan para todos los píxeles de la imagen

Page 6: Imagen Morfologicas

Dilatación: Escala de grises15 27 8

100 95 1

125 30 2

1 1 1

1 1 1

1 1 1

15 27 8

100

125

1

125

30 2

% Ejemplo de dilatación% Imagen de entradaI=[0 0 0 0 0 0 0; 0 0 0 0 0 0 0; 0 0 15 27 8 0 0; 0 0 100 95 1 0 0; 0 0 125 30 2 0 0; 0 0 0 0 0 0 0; 0 0 0 0 0 0 0];imshow(imresize(I,[520,520]));% Se define el elemento estructuralEle=strel('square',3);% Se aplica dilataciónI1=imdilate(I, Ele);figure;imshow(imresize(I1,[520,520]));

Page 7: Imagen Morfologicas

Dilatación: Escala de grises(II)

>> I1 0 0 0 0 0 0 0 0 15 27 27 27 8 0 0 100 100 100 95 8 0 0 125 125 125 95 8 0 0 125 125 125 95 2 0 0 125 125 125 30 2 0 0 0 0 0 0 0 0

% Ejemplo de dilatación% Imagen de entradaI=[0 0 0 0 0 0 0; 0 0 0 0 0 0 0; 0 0 15 27 8 0 0; 0 0 100 95 1 0 0; 0 0 125 30 2 0 0; 0 0 0 0 0 0 0; 0 0 0 0 0 0 0];imshow(imresize(I,[520,520]));% Se define el elemento estructuralEle=strel('square',3);% Se aplica dilataciónI1=imdilate(I, Ele);figure;imshow(imresize(I1,[520,520]));

Page 8: Imagen Morfologicas

Dilatación: Escala de grises(III)

Figura original >> I2=imdilate(I1,ee);

Page 9: Imagen Morfologicas

Erosión

Erosión: En imágenes binarias, elimina píxeles del contorno de objetos presentes en la imagen

Píxel de salida: Mínimo de los píxeles presentes en la vecindad definida por el elemento estructural

1 1 1

1 1 1

1 1 0

1 1 1

1 1 1

1 1 1

1 1 1

1 0 1

1 1 0

Imagen de entrada Elemento estructural Imagen de salida

Page 10: Imagen Morfologicas

Erosión: Escala de grises

Si en el ejemplo anterior del programa MATLAB se sustituye la función imdilate por imerode resulta:

I=[0 0 0 0 0 0 0; 0 0 0 0 0 0 0; 0 0 15 27 8 0 0; 0 0 100 95 1 0 0; 0 0 125 30 2 0 0; 0 0 0 0 0 0 0; 0 0 0 0 0 0 0];

I1 =[ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ]

Entrada Salida

Page 11: Imagen Morfologicas

Erosión: Escala de grises (II)

Figura original>> ee=strel('square', 24);

>> I2=imerode(I1,ee);

Page 12: Imagen Morfologicas

Elemento Estructural

Elemento estructural: Define la forma y el tamaño de la vecindad del píxel que será analizado, para posteriormente alterar su valor

Composición: Formada por ceros y unos de forma y tamaño arbitrario en la cual las posiciones donde está el uno define la vecindad

Matriz que define el elemento estructural: Tiene un tamaño muy inferior al tamaño de la matriz original que define la imagen a la que modificará

Page 13: Imagen Morfologicas

Elemento Estructural (II)

Origen del elemento estructuralCentro=(tamaño+1)/2

Para el elemento estructural cuadrado de tamaño 3x3 el centro será:

Centro=(3+1x3+1)/2=2x2

1 1 1

1 1 1

1 1 1(3x3)

Page 14: Imagen Morfologicas

Elemento Estructural (III)

>> ee=strel('diamond', 3) 0 0 0 1 0 0 0 0 0 1 1 1 0 0 0 1 1 1 1 1 0 1 1 1 1 1 1 1 0 1 1 1 1 1 0 0 0 1 1 1 0 0 0 0 0 1 0 0 0

>> ee=strel('disk', 4) 0 0 1 1 1 0 0 0 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 0 0 0 1 1 1 0 0

Page 15: Imagen Morfologicas

Elemento Estructural (IV)

>> a=[0 1 0 1; 0 0 0 0; 0 0 0 0; 1 0 1 0];

>> se=strel('arbitrary',a) 0 1 0 1 0 0 0 0 0 0 0 0 1 0 1 0

>> ee=strel('line', 7, 135) 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1

Page 16: Imagen Morfologicas

Elemento Estructural (V)

>> ee=strel('octagon', 3)

0 0 1 1 1 0 0 0 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 0 0 0 1 1 1 0 0

>> ee=strel('rectangle', [4 3]) 1 1 1 1 1 1 1 1 1 1 1 1

Page 17: Imagen Morfologicas

Recuperación de caracteres incompletos

ee=strel('diamond', 1)Sal = imdilate(I,ee);

Imagen: www.imageprocessingplace.com

Page 18: Imagen Morfologicas

Referencias de aplicación de la dilatación

I

ee=strel('disk',18,0);I4=imdilate(I, ee);

I4

Page 19: Imagen Morfologicas

Referencias de aplicación de la dilatación (II)

I

ee=strel('square',20);I5=imdilate(I, ee);

I5

Page 20: Imagen Morfologicas

Ejemplo de aplicación de la dilatación

>> I=imread('pirata.jpg');>> II=im2bw(I);% Se define el elemento estructural>> eI1=strel('disk', 2)% Se aplica la dilatación>> I1=imdilate(II, eI1);

Page 21: Imagen Morfologicas

Referencias de aplicación de la erosión

I I1

ee=strel('square',5);I1=imerode(I, ee);

Page 22: Imagen Morfologicas

Referencias de aplicación de la erosión (II)

I

ee=strel('square',3);I2=imerode(I, ee);

I2

Page 23: Imagen Morfologicas

I3

Referencias de aplicación de la erosión (III)

I

ee=strel('disk',18,0);I3=imerode(I, ee);

Page 24: Imagen Morfologicas

Ejemplo de aplicación de la erosión

% Se define el elemento estructural>> eI1=strel('disk', 3)% Se aplica la erosión>> I1=imerode(II, eI1);

Page 25: Imagen Morfologicas

Ejemplo de aplicación de la erosión (II)

Page 26: Imagen Morfologicas

Dilatación vs erosión

DilataciónAmplía bordesUne objetos próximosUne puntos blancos próximosElimina detalles negros pequeños

ErosiónReduce bordesSepara objetos próximosElimina puntos blancos separadosAmplía detalles negros pequeños

Page 27: Imagen Morfologicas

Combinación de la dilatación y la erosión

Apertura: Es la realización de una erosión seguida de una dilatación, utilizando el mismo elemento estructural en ambas operaciones

Aplicaciones: Suaviza contornos de los objetos Elimina pequeñas protuberancias Rompe conexiones débiles

ee=strel('diamond', 2);I1=imerode(I,ee);I2=imdilate(I1,ee);

ee=strel('diamond', 2);I2=imopen(I,ee);

Page 28: Imagen Morfologicas

Apertura

imshow(I2)ee=strel('diamond', 4);Sal = imopen(I2,ee);Sal1=im2bw(Sal, 0.9);

I2 Sal

Sal1

Page 29: Imagen Morfologicas

Apertura (II)

Definir y aislar formas,

para contar

Page 30: Imagen Morfologicas

Combinación de la dilatación y la erosión (II)

Cerradura: Es la realización de una dilatación seguida de una erosión, utilizando el mismo elemento estructural en ambas operaciones

Aplicaciones: •Rellenar detalles, conectando objetos que están próximos entre sí•También suaviza los contornos•Rellena vacíos en el contorno•Elimina pequeños huecos

ee=strel('diamond', 3);I1=imdilate(I,ee);I2=imerode(I1,ee);

ee=strel('diamond', 3);I2=imclose(I,ee);

Page 31: Imagen Morfologicas

Cerradura

ee=strel('diamond', 3);I2=imclose(I,ee);

I I2

Page 32: Imagen Morfologicas

Cerradura (II)

% Se define el elemento estructural>> eI1=strel('disk', 5);% Se aplica la cerradura>> III=imclose(II,eI1);

Aumentar la definición de formas

Page 33: Imagen Morfologicas

Comparación entre Apertura y Cerradura

Elemento estructural: >> ee=strel('square', 12)

Imagen original Opening Closening

Original Apertura Cerradura

Page 34: Imagen Morfologicas

Comparación entre Apertura y Cerradura (II)

Elemento estructural: >> ee=strel('square', 12)

Original Apertura Cerradura

Ope

ning

Clo

sing

Page 35: Imagen Morfologicas

Comparación entre Apertura y Cerradura (III)

Apertura Cerradura

Page 36: Imagen Morfologicas

Ejemplos de Aplicación

>> RGB = imread('pillsetc.png');imshow(RGB);

I = rgb2gray(RGB);threshold = graythresh(I);bw = im2bw(I,threshold);

Definición de formas

Page 37: Imagen Morfologicas

Ejemplos de Aplicación (II)

bw = bwareaopen(bw,30);

Se eliminan los objetos con menos de 30 píxeles 8 conectados

Page 38: Imagen Morfologicas

Ejemplos de Aplicación (III)

se = strel('disk',2);bw = imclose(bw,se);

Llena espacio existente en el casquillo de la pluma

Page 39: Imagen Morfologicas

Ejemplos de Aplicación (IV)

Eliminar ruido manteniendo formas

ErosionarDilatarDilatarErosionar

Apertura

Cerradura

Page 40: Imagen Morfologicas

Ejemplos de Aplicación (V)

Definición de caracteres

Programa del ejemplo

Page 41: Imagen Morfologicas

Otras operaciones compuestas:Transformada de ganancia o pérdida

(hit-or-miss)Se define por la siguiente expresión:

)()( 21 BerosiónABerosiónABA c

Imagen Complementode la imagen

Elemento Estructural 1

Elemento Estructural 2

Operación AND de la imagen, erosionada con un elementoestructural y el complemento de la imagen, erosionada con

otro elemento estructural

Page 42: Imagen Morfologicas

Operaciones lógicas entre imágenes

>> III=Iⅈ (AND)

>> IV=I|II; (OR) >> V=~II;(NO)

>> VI=II&~I;(Diferencia)I

II

Page 43: Imagen Morfologicas

Transformada de ganancia o pérdida (hit-or-miss)

Conjunto de puntos a los que simultáneamente coinciden B1 en A y B2 en el complemento de A

>>b1=strel([0 0 0; 0 1 1; 0 1 0]);>>c1=imerode(a, b1);

>>b2=strel([1 1 1; 1 0 0; 1 0 0]);>>c2=imerode(imcomplement(a), b2);

>>c3=c1&c2;Función general>>c3=bwhitmiss(a, b1, b2);

Page 44: Imagen Morfologicas

Transformada de ganancia o pérdida (hit-or-miss) (II)

Detectar esquinas

Aplicaciones: Identificar configuración predefinida de píxeles Detectar píxeles aislados Puntos finales de líneas

Page 45: Imagen Morfologicas

Transformada de ganancia o pérdida (hit-or-miss) (III)

% Se definen los elementos estructurales>> b11=strel([0 0 0; 0 1 1; 0 1 0]);>> b12=strel([1 1 1; 1 0 0; 1 0 0]);>> b21=strel([0 0 0; 1 1 0; 0 1 0]);>> b22=strel([1 1 1; 0 0 1; 0 0 1]);>> b31=strel([0 1 0; 1 1 0; 0 0 0]);>> b32=strel([0 0 1; 0 0 1; 1 1 1]);>> b41=strel([0 1 0; 0 1 1; 0 0 0]);>> b42=strel([1 0 0; 1 0 0; 1 1 1]);% Se identifican los píxeles que definen las esquinas del rectángulo>> III=bwhitmiss(II, b11, b12);>> IV=bwhitmiss(II, b21, b22);>> V=bwhitmiss(II, b31, b32);>> VI=bwhitmiss(II, b41, b42);% Se unen las esquinas identificadas>> VII=III+IV+V+VI;% Se amplía para visualizar>> VIII=imdilate(VII,ee);>> imshow(VIII)

Page 46: Imagen Morfologicas

Obtención del perímetro

Sustracción a la imagen la erosión de la imagen

)()( BerosiónAAAP >>ee = strel('diamond',3)>>bw1=imerode(bw, ee);>>bw2=bw-bw1;

El perímetro puede ser más delgado en función del elemento estructural

que se utilice

Page 47: Imagen Morfologicas

Obtención del perímetro (II)

Sustracción a la dilatación de la imagen la erosión de la propia imagen

>>I1=imdilate(I,ee);>>I2=imerode(I,ee);>>I3=imsubtract(I1,I2);

Page 48: Imagen Morfologicas

Obtención del perímetro (III)

% Se erosiona y sustrae>> eI1=strel('square', 5);>> V=imerode(IV,eI1);>> VI=imsubtract(IV,V);% Se dilata y sustrae la imagen erosionada>> VII=imdilate(IV,eI1);>> VIII=imsubtract(VII,V);

Page 49: Imagen Morfologicas

Obtención del perímetro (IV)

>>III=im2bw(II,.7);>>IV=bwperim(III,8);

Conectividad

Page 50: Imagen Morfologicas

Llenar huecos

Pasos del algoritmo: Imagen “semilla” (todos ceros excepto un 1)

Repetir hasta 1 kk XX

Ckk ABDilataciónXX 1

% Define imagen semillaII=uint8(zeros(size(I)));[a, b]=size(I); a=uint8(a/2); b=uint8(b/2);II(a,b)=uint8(255); %Aplica el algoritmoee=strel('square',3);while (I-II)~=0 II=((imdilate(II,ee))& (~I))end

Deben conocerse los puntos en los huecos a llenar

Page 51: Imagen Morfologicas

Llenar huecos (II)

>> points=[122,147;146,396;308,233]points = 122 147 146 396 308 233>> II = imfill(I,points);

Page 52: Imagen Morfologicas

Conectividad

% Función para calcular el perímetroBW2 = bwperim(BW1,conn)

ConectividadDepende de la vecindad de un píxel

Vecindad horizontal/vertical Vecindad diagonal

Page 53: Imagen Morfologicas

Conectividad (II)

>> conndef(2,'min') 0 1 0 1 1 1 0 1 0

>> conndef(2,'max') 1 1 1 1 1 1 1 1 1

Función que define conectividad (dimensión 2)

Vecindad 8

Conectividad definida por el programador

>> vertical [0 1 0 0 1 0 0 1 0]

Page 54: Imagen Morfologicas

Conectividad (III)

Si conectividad 4: 2 objetosSi conectividad 8: 1 objeto

>> conndef(2,'max') 1 1 1 1 1 1 1 1 1

¿Cuántos objetos?

A = 0 0 0 0 0 0 0 1 1 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 1 1 0

>> conndef(2,'min') 0 1 0 1 1 1 0 1 0

Page 55: Imagen Morfologicas

Conectividad (IV)

Determinar el número de objetos n conectados

A = 0 0 0 0 0 0 0 0 1 1 0 1 1 0 0 1 1 0 1 1 0 0 0 0 1 1 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0

bwlabel(I,n)

X=bwlabel(A,4) % Cuatro conectadosX = 0 0 0 0 0 0 0 0 1 1 0 2 2 0 0 1 1 0 2 2 0 0 0 0 2 2 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0

X=bwlabel(A,8) % Ocho conectados

X = 0 0 0 0 0 0 0 0 1 1 0 1 1 0 0 1 1 0 1 1 0 0 0 0 1 1 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0

2 objetos 4 conectados 1 objeto 8 conectados

Page 56: Imagen Morfologicas

Conectividad (V)

Perímetro y objetos n conectados

I = 1 1 1 0 0 0 0 0 1 1 1 0 1 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 0 0 1 0 1 1 1 0 0 0 1 0 1 1 1 0 0 0 1 0 1 1 1 0 0 1 1 0 1 1 1 0 0 0 0 0

III=bwperim(II,4);IV=bwperim(II,8);

Misma salida

Page 57: Imagen Morfologicas

Conectividad (VI)

>> bwlabel(III,4) 1 1 1 1 0 0 0 0 1 0 1 0 2 2 0 0 1 0 1 0 2 2 0 0 1 0 1 0 0 0 3 0 1 0 1 0 0 0 3 0 1 0 1 0 0 0 3 0 1 0 1 0 0 3 3 0 1 1 1 0 0 0 0 4

>> bwlabel(III,8) 1 1 1 1 0 0 0 0 1 0 1 0 1 1 0 0 1 0 1 0 1 1 0 0 1 0 1 0 0 0 1 0 1 0 1 0 0 0 1 0 1 0 1 0 0 0 1 0 1 0 1 0 0 1 1 0 1 1 1 0 0 0 0 1

Perímetro 4 conectado:Combinación de

4 objetos 4 conectados

Perímetro 8 conectado:Un objeto 8 conectados

Page 58: Imagen Morfologicas

Función bwmorph

BW2 = bwmorph(BW1,Operación,Número de veces que se repite)

Operaciones descritas previamente'dilate‘'erode‘'open‘'close‘'skel’

Otras operaciones‘bothat‘: Transformación bottom hat‘tophat‘: Transformación top hat‘clean’: Elimina píxeles aislados‘fill’: Rellena píxeles interiores aislados

Page 59: Imagen Morfologicas

Transformación top hat

Sustrae a la imagen la apertura de la imagenAplicación: Extrae detalles brillantes en presencia de sombras

>> se=strel('square',3);>> IV=imsubtract(II,imopen(II,se));

>> III=bwmorph(II,'tophat');>> II=im2bw(I);

Equivale a

Page 60: Imagen Morfologicas

Transformación bottom hat

Sustrae a la imagen la cerradura de la imagenAplicación: Detalles oscuros en zonas iluminadas

>> se=strel('square',3);>> IV=imsubtract(II,imclose(II,se));

>> III=bwmorph(II,‘bothat');>> II=im2bw(I);

Equivale a

Page 61: Imagen Morfologicas

Relleno de píxeles interiores aisladosAplicación: Clasificar formas

Función bwmorph(‘fill’)

I = 1 1 1 1 0 1 1 1 1

>> II=bwmorph(I,'fill');

II = 1 1 1 1 1 1 1 1 1

Función find: Devuelve puntero a valor

I = 1 1 1 1 0 0 0 0 1 1 1 0 1 1 0 0 1 1 1 0 0 0 1 0 1 1 1 0 0 1 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1

>> II=bwlabel(I,4)>> III=find(II==4)>> II(III)=6

II = 1 1 1 1 0 0 0 0 1 1 1 0 2 2 0 0 1 1 1 0 0 0 3 0 1 1 1 0 0 3 3 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4

II = 1 1 1 1 0 0 0 0 1 1 1 0 2 2 0 0 1 1 1 0 0 0 3 0 1 1 1 0 0 3 3 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6

Page 62: Imagen Morfologicas

Identificar objetos y relleno

>>III=bwlabel(II,4)

>> IV=max(max(III))IV = 6%Índices a valores zona 4>>V=find(III==4);% Los lleno de ceros (negro)>> II(V)=0;

%Clasifica zonas 4 conectadas

%Cantidad de zonas

Page 63: Imagen Morfologicas

Elimina píxeles interiores aisladosAplicación: Limpiar imagen

Función bwmorph(‘clean’)

>> B=bwmorph(A,’clean');

A = 0 0 0 0 1 0 0 0 0

B = 0 0 0 0 0 0 0 0 0

Page 64: Imagen Morfologicas

Elimina píxeles interiores de una vecindadAplicación: Obtener perímetro

Función bwmorph(‘remove’)

>> B=bwmorph(A,’remove');

A = 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

B = 1 1 1 1 1 1 0 0 0 1 1 0 0 0 1 1 0 0 0 1 1 1 1 1 1

Imagen original Aplicación remove

Page 65: Imagen Morfologicas

Adiciona píxeles a un perímetro hasta mantener una vecindadAplicación: Agrandar objetos

Función bwmorph('thicken’)

>> B=bwmorph(A,’thicken‘ );

A = 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

B = 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 1 1 1 1 1 1 1 0 0 1 1 1 1 1 1 1 0 0 1 1 1 0 1 1 1 0 0 1 1 1 1 1 1 1 0 0 1 1 1 1 1 1 1 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0

Page 66: Imagen Morfologicas

Ampliación de objeto

Imagen original Imagen engrosada

Mantiene 8 conectados la frontera entre objetos

Page 67: Imagen Morfologicas

Esqueleto de un conjunto

Función Matlab para la obtención del esqueleto

Esqueleto: Se obtiene a partir de sucesivas erosiones de la imagen hasta que la misma no se convierta en un conjunto vacío

(las sucesivas erosiones se realizan hasta que los píxeles sucesivos no se separen)

>> bw1=bwmorph(bw, 'skel', Inf);

Page 68: Imagen Morfologicas

Esqueleto de un conjunto (II)

A = 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 1 1 1 1 1 0 0 0 0 1 1 1 1 1 0 0 0 0 1 1 1 1 1 0 0 0 0 1 1 1 1 1 0 0 0 0 1 1 1 1 1 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0

B = 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 0 1 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0

>> B=bwmorph(A,'skel',Inf)

Reduce píxeles del contorno sin separar el objeto

Page 69: Imagen Morfologicas

Esqueleto de un conjunto (III)

Figura original Esqueleto

Page 70: Imagen Morfologicas

Reconocimiento de caracteres escritos

Ejecutar un algoritmo que lea el código postal en un sobre escrito a mano, tome como referencia los siguientes pasos:

a.- Binarizar la imagenb.- Erosionar para separar las posibles uniones entre númerosc.- Dilatar para recomponer números que tengas discontinuidadesd.- Calcular el esqueleto de cada componentee.- Identificar con un sistema de inteligencia artificial (redes neuronales o sistemas neuroborrosos)

Page 71: Imagen Morfologicas

Operaciones en escala de grises

Se define como aquel conjunto de píxeles con conectividad n en una imagen que poseen un nivel de intensidad t, los píxeles que le rodean poseen un nivel de intensidad inferior a t

Región máxima

I2 = 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 128 128 128 128 128 51 51 51 51 51 51 51 51 51 128 128 128 128 128 128 128 128 51 51 51 51 51 51 51 51 128 128 128 128 128 128 128 128 128 51 51 51 51 51 51 128 128 128 150 150 150 150 150 128 128 51 51 51 51 51 51 128 128 128 150 192 192 150 150 128 128 128 51 51 51 51 51 128 128 128 150 192 255 192 150 128 128 128 51 51 51 51 51 128 128 128 150 192 192 192 150 128 128 128 51 51 51 51 51 128 128 128 150 150 150 150 150 128 128 51 51 51 51 51 51 128 128 128 128 128 128 128 128 128 128 51 51 51 51 51 51 51 128 128 128 128 128 128 128 128 51 51 51 51 51 51 51 51 51 128 128 128 128 128 128 51 51 51 51 51 51 51 51 51 51 51 51 128 128 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51

Page 72: Imagen Morfologicas

Operaciones en escala de grises (II)

Función: BW = imregionalmax(I,CONN);Aplicación: Max=imregionalmax(I2)

Región máxima

Max = 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Page 73: Imagen Morfologicas

Operaciones en escala de grises (III)

Se define como aquel conjunto de píxeles con conectividad n en una imagen que poseen un nivel de intensidad t, los píxeles que le rodean poseen un nivel de intensidad superior a t

Región mínima

I2 = 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 128 128 128 128 128 51 51 51 51 51 51 51 51 51 128 128 128 128 128 128 128 128 51 51 51 51 51 51 51 51 128 128 128 128 128 128 128 128 128 51 51 51 51 51 51 128 128 128 150 150 150 150 150 128 128 51 51 51 51 51 51 128 128 128 150 192 192 150 150 128 128 128 51 51 51 51 51 128 128 128 150 192 255 192 150 128 128 128 51 51 51 51 51 128 128 128 150 192 192 192 150 128 128 128 51 51 51 51 51 128 128 128 150 150 150 150 150 128 128 51 51 51 51 51 51 128 128 128 128 128 128 128 128 128 128 51 51 51 51 51 51 51 128 128 128 128 128 128 128 128 51 51 51 51 51 51 51 51 51 128 128 128 128 128 128 51 51 51 51 51 51 51 51 51 51 51 51 128 128 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51

Page 74: Imagen Morfologicas

Operaciones en escala de grises (IV)

Región mínima

Min =  1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

Función: BW = imregionalmin(I,CONN);Aplicación: Min=imregionalmin(I2)

Page 75: Imagen Morfologicas

Operaciones en escala de grises (V)

Región máxima con umbralPíxeles con valores de intensidad máximo en un intervalo

Intensidad = [I_min; I_max]Región máxima: [I_max-nmin; I_max]

Ejemplo: nmin = 63 == [192; 255]I2 = 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 128 128 128 128 128 51 51 51 51 51 51 51 51 51 128 128 128 128 128 128 128 128 51 51 51 51 51 51 51 51 128 128 128 128 128 128 128 128 128 51 51 51 51 51 51 128 128 128 150 150 150 150 150 128 128 51 51 51 51 51 51 128 128 128 150 192 192 150 150 128 128 128 51 51 51 51 51 128 128 128 150 192 255 192 150 128 128 128 51 51 51 51 51 128 128 128 150 192 192 192 150 128 128 128 51 51 51 51 51 128 128 128 150 150 150 150 150 128 128 51 51 51 51 51 51 128 128 128 128 128 128 128 128 128 128 51 51 51 51 51 51 51 128 128 128 128 128 128 128 128 51 51 51 51 51 51 51 51 51 128 128 128 128 128 128 51 51 51 51 51 51 51 51 51 51 51 51 128 128 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51

Page 76: Imagen Morfologicas

Operaciones en escala de grises (VI)

Región máxima con umbralFunción: BW = imextendedmax(I,H,CONN)Aplicación: I22 = imextendedmax(I2,63)I22 = 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Región mínima con umbral: BW = IMEXTENDEDMIN(I,H,CONN)

Page 77: Imagen Morfologicas

Operaciones en escala de grises (VII)

Región mínima con umbralPíxeles con valores de intensidad mínimo en un intervalo

Intensidad = [I_min; I_max]Región mínima: [I_min; I_min+nmax]

Ejemplo: nmax = 77 == [51; 128]I2 = 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 128 128 128 128 128 51 51 51 51 51 51 51 51 51 128 128 128 128 128 128 128 128 51 51 51 51 51 51 51 51 128 128 128 128 128 128 128 128 128 51 51 51 51 51 51 128 128 128 150 150 150 150 150 128 128 51 51 51 51 51 51 128 128 128 150 192 192 150 150 128 128 128 51 51 51 51 51 128 128 128 150 192 255 192 150 128 128 128 51 51 51 51 51 128 128 128 150 192 192 192 150 128 128 128 51 51 51 51 51 128 128 128 150 150 150 150 150 128 128 51 51 51 51 51 51 128 128 128 128 128 128 128 128 128 128 51 51 51 51 51 51 51 128 128 128 128 128 128 128 128 51 51 51 51 51 51 51 51 51 128 128 128 128 128 128 51 51 51 51 51 51 51 51 51 51 51 51 128 128 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51

Page 78: Imagen Morfologicas

Operaciones en escala de grises (VIII)

Región mínima con umbral

I22 = 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

Función: BW = imextendedmin(I,H,CONN)Aplicación: I22 = imextendedmin(I2,77)

Page 79: Imagen Morfologicas

Operaciones en escala de grises (X)

Suprimir región máximaReduce a la intensidad mínima determinado umbral

Intensidad = [I_min; I_max]Región máxima: [I_max-nmin; I_max]

Ejemplo: nmin = 105 == [150; 255]=150I2 = 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 128 128 128 128 128 51 51 51 51 51 51 51 51 51 128 128 128 128 128 128 128 128 51 51 51 51 51 51 51 51 128 128 128 128 128 128 128 128 128 51 51 51 51 51 51 128 128 128 150 150 150 150 150 128 128 51 51 51 51 51 51 128 128 128 150 192 192 150 150 128 128 128 51 51 51 51 51 128 128 128 150 192 255 192 150 128 128 128 51 51 51 51 51 128 128 128 150 192 192 192 150 128 128 128 51 51 51 51 51 128 128 128 150 150 150 150 150 128 128 51 51 51 51 51 51 128 128 128 128 128 128 128 128 128 128 51 51 51 51 51 51 51 128 128 128 128 128 128 128 128 51 51 51 51 51 51 51 51 51 128 128 128 128 128 128 51 51 51 51 51 51 51 51 51 51 51 51 128 128 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51

Page 80: Imagen Morfologicas

Operaciones en escala de grises (XI)

Suprimir región máxima

I22 = 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 128 128 128 128 128 51 51 51 51 51 51 51 51 51 128 128 128 128 128 128 128 128 51 51 51 51 51 51 51 51 128 128 128 128 128 128 128 128 128 51 51 51 51 51 51 128 128 128 150 150 150 150 150 128 128 51 51 51 51 51 51 128 128 128 150 150 150 150 150 128 128 128 51 51 51 51 51 128 128 128 150 150 150 150 150 128 128 128 51 51 51 51 51 128 128 128 150 150 150 150 150 128 128 128 51 51 51 51 51 128 128 128 150 150 150 150 150 128 128 51 51 51 51 51 51 128 128 128 128 128 128 128 128 128 128 51 51 51 51 51 51 51 128 128 128 128 128 128 128 128 51 51 51 51 51 51 51 51 51 128 128 128 128 128 128 51 51 51 51 51 51 51 51 51 51 51 51 128 128 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51

Función: I2 = imhmax(I,H,CONN)Aplicación: I22=imhmax(I2, 105)

¡Altera la imagen original!

Page 81: Imagen Morfologicas

Operaciones en escala de grises (XII)Suprimir región mínima

Reduce a la intensidad mínima determinado umbral

Intensidad = [I_min; I_max]Región máxima: [I_min; I_min+nmax]Ejemplo: nmin = 77 == [51; 128]=128

I2 = 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 128 128 128 128 128 51 51 51 51 51 51 51 51 51 128 128 128 128 128 128 128 128 51 51 51 51 51 51 51 51 128 128 128 128 128 128 128 128 128 51 51 51 51 51 51 128 128 128 150 150 150 150 150 128 128 51 51 51 51 51 51 128 128 128 150 192 192 150 150 128 128 128 51 51 51 51 51 128 128 128 150 192 255 192 150 128 128 128 51 51 51 51 51 128 128 128 150 192 192 192 150 128 128 128 51 51 51 51 51 128 128 128 150 150 150 150 150 128 128 51 51 51 51 51 51 128 128 128 128 128 128 128 128 128 128 51 51 51 51 51 51 51 128 128 128 128 128 128 128 128 51 51 51 51 51 51 51 51 51 128 128 128 128 128 128 51 51 51 51 51 51 51 51 51 51 51 51 128 128 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51

Page 82: Imagen Morfologicas

Operaciones en escala de grises (XIII)Suprimir región mínima

I22 = 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 150 150 150 150 150 128 128 128 128 128 128 128 128 128 128 128 150 192 192 150 150 128 128 128 128 128 128 128 128 128 128 128 150 192 255 192 150 128 128 128 128 128 128 128 128 128 128 128 150 192 192 192 150 128 128 128 128 128 128 128 128 128 128 128 150 150 150 150 150 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128

Función: I2 = imhmin(I,H,CONN)Aplicación: I22=imhmin(I2, 77)

Page 83: Imagen Morfologicas

Operaciones en escala de grises (XIV)

>> max_val=max(max(II(:,:))) 254>> min_val=min(min(II(:,:))) 0>> III=imhmax(II, 127);>> max_val=max(max(III(:,:))) 127

Page 84: Imagen Morfologicas

Operaciones en escala de grises (XV)

>> max_val=max(max(II(:,:))) 254>> min_val=min(min(II(:,:))) 0>> IV=imhmin(II, 128); >> min_val=min(min(IV(:,:))) 128