Imagen Morfologicas

28,790 views
28,534 views

Published on

Published in: Business, Technology
1 Comment
8 Likes
Statistics
Notes
No Downloads
Views
Total views
28,790
On SlideShare
0
From Embeds
0
Number of Embeds
3,487
Actions
Shares
0
Downloads
869
Comments
1
Likes
8
Embeds 0
No embeds

No notes for slide

Imagen Morfologicas

  1. 1. Operaciones morfológicas
  2. 2. Operaciones morfológicas <ul><li>Operación morfológica: Es aquella en la que 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 </li></ul><ul><li>Elemento estructural: Define el tamaño y la forma de la vecindad en la que se aplicará la operación morfológica </li></ul>1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1
  3. 3. Dilatación <ul><li>Dilatación: Adiciona píxeles (imágenes binarias) al entorno de objetos presentes en la imagen </li></ul><ul><li>Píxel de salida: Máximo de los píxeles presentes en la vecindad definida por el elemento estructural </li></ul>Imagen de entrada Elemento estructural Imagen de salida 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
  4. 4. Dilatación (II) <ul><li>Pasos para aplicar la dilatación </li></ul><ul><li>1.- Seleccionar el píxel de la imagen original a tratar </li></ul><ul><li>2.- Buscar el mayor de los píxeles de la vecindad, incluido el central, definidos por la forma y tamaño del elemento estructural </li></ul><ul><li>3.- Sustituir el valor del píxel por el máximo valor </li></ul><ul><li>  </li></ul><ul><li>Los anteriores pasos se ejecutan para todos los píxeles de la imagen </li></ul>
  5. 5. Dilatación: Escala de grises % Ejemplo de dilatación % Imagen de entrada 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]; imshow(imresize(I,[520,520])); % Se define el elemento estructural Ele=strel('square',3); % Se aplica dilatación I1=imdilate(I, Ele); figure; imshow(imresize(I1,[520,520])); 15 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
  6. 6. 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 entrada 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]; imshow(imresize(I,[520,520])); % Se define el elemento estructural Ele=strel('square',3); % Se aplica dilatación I1=imdilate(I, Ele); figure; imshow(imresize(I1,[520,520]));
  7. 7. Dilatación: Escala de grises(III) Imagen: www.imageprocessingplace.com
  8. 8. Erosión <ul><li>Erosión: Elimina píxeles (imágenes binarias) al entorno de objetos presentes en la imagen </li></ul><ul><li>Píxel de salida: Mínimo de los píxeles presentes en la vecindad definida por el elemento estructural </li></ul>Imagen de entrada Elemento estructural Imagen de salida Semejante a dilatación en escala de grises 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
  9. 9. 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
  10. 10. Erosión: Escala de grises (II)
  11. 11. 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á
  12. 12. Elemento Estructural (II) Origen del elemento estructural Centro=(tamaño+1)/2 Para el elemento estructural cuadrado de tamaño 3x3 el centro será: Centro=(3+1x3+1)/2=2x2 (3x3) 1 1 1 1 1 1 1 1 1
  13. 13. 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
  14. 14. 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
  15. 15. 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
  16. 16. Recuperación de caracteres incompletos ee=strel('diamond', 1) Sal = imdilate(I,ee); Imagen: www.imageprocessingplace.com
  17. 17. Referencias de aplicación de la dilatación ee=strel('disk',18,0); I4=imdilate(I, ee);
  18. 18. Referencias de aplicación de la dilatación (II) ee=strel('square',20); I5=imdilate(I, ee);
  19. 19. 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);
  20. 20. Referencias de aplicación de la erosión ee=strel('square',5); I1=imerode(I, ee);
  21. 21. Referencias de aplicación de la erosión (II) ee=strel('square',3); I2=imerode(I, ee);
  22. 22. Referencias de aplicación de la erosión (III) ee=strel('disk',18,0); I3=imerode(I, ee);
  23. 23. 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);
  24. 24. Ejemplo de aplicación de la erosión (II)
  25. 25. Dilatación vs erosión <ul><li>Dilatación </li></ul><ul><li>Amplía bordes </li></ul><ul><li>Une objetos próximos </li></ul><ul><li>Une puntos blancos próximos </li></ul><ul><li>Elimina detalles negros pequeños </li></ul><ul><li>Erosión </li></ul><ul><li>Reduce bordes </li></ul><ul><li>Separa objetos próximos </li></ul><ul><li>Elimina puntos blancos separados </li></ul><ul><li>Amplía detalles negros pequeños </li></ul>
  26. 26. 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 Aplicación: Cuando se desea eliminar los pequeños objetos y mantener el tamaño en los grandes (eliminar ruído) ee=strel('diamond', 2); I1=imerode(I1,ee); I2=imdilate(I,ee); ee=strel('diamond', 2); I2=imopen(I,ee); Matlab
  27. 27. Apertura imshow(I2) ee=strel('diamond', 4); Sal = imopen(I2,ee); Sal1=im2bw(Sal, 0.9); <ul><li>Suaviza el contorno de un objeto </li></ul><ul><li>Separa pequeños enlaces </li></ul>
  28. 28. Apertura (II) Aislar formas, para contar
  29. 29. 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 Aplicación: Cuando se desea rellenar detalles y conectar objetos que están próximos entre sí ee=strel('diamond', 3); I1=imdilate(I,ee); I2=imerode(I1,ee); ee=strel('diamond', 3); I2=imclose(I,ee); Matlab
  30. 30. Cerradura ee=strel('diamond', 3); I2=imclose(I,ee);
  31. 31. 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
  32. 32. Comparación entre Apertura y Cerradura Elemento estructural: >> ee=strel('square', 12) Original Apertura Cerradura
  33. 33. Comparación entre Apertura y Cerradura (II) Elemento estructural: >> ee=strel('square', 12) Original Apertura Cerradura
  34. 34. Comparación entre Apertura y Cerradura (III) Apertura Cerradura
  35. 35. Ejemplo de Aplicación >> RGB = imread('pillsetc.png'); imshow(RGB); I = rgb2gray(RGB); threshold = graythresh(I); bw = im2bw(I,threshold); Definición de formas
  36. 36. Ejemplo de Aplicación (II) bw = bwareaopen(bw,30); Se eliminan los objetos con menos de 30 píxeles
  37. 37. Ejemplo de Aplicación (III) se = strel('disk',2); bw = imclose(bw,se); Llena espacio existente en el casquillo de la pluma
  38. 38. Otras operaciones compuestas: Transformada de ganancia o pérdida (hit-or-miss) Se define por la siguiente expresión: Imagen Complemento de la imagen Elemento Estructural 1 Elemento Estructural 2 Operación AND de la imagen, erosionada con un elemento estructural y el complemento de la imagen, erosionada con otro elemento estructural
  39. 39. 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);
  40. 40. Transformada de ganancia o pérdida (hit-or-miss) (II) Detectar esquinas
  41. 41. Transformada de ganancia o pérdida (hit-or-miss) (III) >> II=im2bw(I); % 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; >> eI1=strel('square', 5);    % Para facilitar la visualización (ampliación) >> VIII=imdilate(VII,eI1);
  42. 42. Obtención del perímetro Sustracción a la imagen la erosión de la imagen % Programa Matlab % Elemento estructural >>ee = strel('diamond',3) >>bw1=imerode(bw, ee); >>bw2=bw-bw1;
  43. 43. Obtención del perímetro (II) El perímetro puede ser más delgado en función del elemento estructural que se utilice
  44. 44. Obtención del perímetro (III) Sustracción a la dilatación de la imagen la erosión de la propia imagen % Programa Matlab % dilatación I1=imdilate(I,ee); % erosión I2=imerode(I,ee); % sustracción I3=imsubtract(I1,I2);
  45. 45. Obtención del perímetro (IV)
  46. 46. Obtención del perímetro (V) % 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);
  47. 47. Conectividad % Función para calcular el perímetro BW2 = bwperim(BW1,conn) Conectividad Depende de la vecindad de un píxel Vecindad horizontal/vertical Vecindad diagonal
  48. 48. 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]
  49. 49. Conectividad (III) Si conectividad 4: 2 objetos Si 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
  50. 50. 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 conectados X = 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
  51. 51. 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
  52. 52. 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
  53. 53. Función bwmorph BW2 = bwmorph(BW1,Operación,Número de veces que se repite) <ul><li>Operaciones descritas previamente </li></ul><ul><ul><li>'dilate‘ </li></ul></ul><ul><ul><li>'erode‘ </li></ul></ul><ul><ul><li>'open‘ </li></ul></ul><ul><ul><li>'close‘ </li></ul></ul><ul><ul><li>'skel’ </li></ul></ul><ul><li>Otras operaciones </li></ul><ul><ul><li>‘ bothat‘: Transformación bottom hat </li></ul></ul><ul><ul><li>‘ tophat‘: Transformación top hat </li></ul></ul><ul><ul><li>‘ clean’: Elimina píxeles aislados </li></ul></ul><ul><ul><li>‘ fill’: Rellena píxeles interiores aislados </li></ul></ul>
  54. 54. Transformación top hat Sustrae a la imagen la apertura de la imagen Aplicació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
  55. 55. Transformación bottom hat Sustrae a la imagen la cerradura de la imagen Aplicació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
  56. 56. Relleno de píxeles interiores aislados Aplicació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
  57. 57. 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
  58. 58. Elimina píxeles interiores aislados Aplicació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
  59. 59. Elimina píxeles interiores de una vecindad Aplicació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
  60. 60. Adiciona píxeles a un perímetro hasta mantener una vecindad Aplicació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
  61. 61. Ampliación de objeto Mantiene 8 conectados la frontera entre objetos
  62. 62. 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);
  63. 63. 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
  64. 64. Esqueleto de un conjunto (III)
  65. 65. 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 imagen b.- Erosionar para separar las posibles uniones entre números c.- Dilatar para recomponer números que tengas discontinuidades d.- Calcular el esqueleto de cada componente e.- Identificar con un sistema de inteligencia artificial (redes neuronales o sistemas neuroborrosos)
  66. 66. 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
  67. 67. 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
  68. 68. 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
  69. 69. 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)
  70. 70. Operaciones en escala de grises (V) Región máxima con umbral Pí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
  71. 71. Operaciones en escala de grises (VI) Región máxima con umbral Funció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)
  72. 72. Operaciones en escala de grises (VII) Región mínima con umbral Pí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
  73. 73. 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)
  74. 74. Operaciones en escala de grises (X) Suprimir región máxima Reduce 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]=150 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
  75. 75. 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!
  76. 76. 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
  77. 77. 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)
  78. 78. 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
  79. 79. 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

×