Análisis
 Morfológico
 en las señales
 gráficas 

 

 

 

 

 

 

 

 

 


1.     Introducción

2.    Transformaciones en imágenes binarias

3.    Transformaciones cuantitativas

3.1.        Erosión

3.2.        Dilatación

3.3.        Apertura y cierre

4.    Esqueletización de imágenes

4.1.        Transformaciones homotópicas

4.2.        Esqueleto

4.3.         Adelgazamiento y ensanchado

4.4.        Envoltura convexa de una región mediante morfología

4.5.        Rellenado de regiones

4.6.        Granulación

4.7.        Gradiente

5.    Morfología en imágenes de grises

5.1.        Dilatación y erosión

5.2.        Apertura y cierre

6.    Aplicaciones de técnicas morfológicas

7.    Ejemplos de aplicaciones en medicina

 

 

 

 

 

 

 

 

1.    Introducción

 

El análisis morfológico en imágenes se aplica basándose en  dos campos  la Geometría y la Forma.

 

Su utilización puede ser para distintos campos:

·          Suavizar los bordes de las figuras. Esto es útil si se quiere mejorar un borde ya que normalmente en las capturas de las imágenes usando las técnicas de segmentación estándar los bordes suelen presentarse con mucho ruido apareciendo pequeñas perturbaciones

·          Separar determinadas regiones. El proceso de segmentación puede unir regiones distintas que con el análisis morfológico son separables.

·          Unir regiones. Al igual que la segmentación puede unir regiones también puede separar partes de una región.

·          Facilita el cómputo de las regiones de una imagen.

 

 

Para el análisis se utilizan una serie de transformaciones más o menos complejas dependiendo de si trabajamos con imágenes binarias o con imágenes en las que lo que se estudia es la intensidad, sobre todo en el tratamiento de grises.

El símbolo que lo representa estas transformaciones es:

 

 

Volver al  índice.

 

 

2.    Transformaciones en imágenes binarias

 

Este tipo de transformaciones se basan en que toda imagen real se puede componer y ser modeladas como conjuntos de en cualquier dimensión.

 

Las computadoras usan unos conjuntos cuyos elementos son pares de enteros, así un punto viene dado por 2 coordenadas entonces una imagen binaria puede tratarse como un conjunto de puntos 2D.

 

Estos puntos se guardan en una matriz  cuya valor en i es su componente x en el espacio 2D y la componente j es la componente en y. Los  valores a 1 significan que ese píxel pertenece a la figura y los valores a 0 que no pertenece.

 

Una transformación morfológica viene dada por la relación del conjunto de valores a 1 de la matriz y un conjunto de valores llamados elemento estructural. Una transformación morfológica básicamente es desplazar el  elemento estructural por toda la imagen X, siendo X el conjunto de puntos de la figura o mejor dicho los valores a 1 de la matriz.

 

El píxel final de la imagen se calcula poniendo el centro del elemento estructural sobre el píxel y aplicando una relación, ya sea unión, intersección, contenido, etc.

 

Ejemplo:

M:  

El valor marcado con * es el origen de coordenadas

 

Tomamos X = {(0,1),(0,2),(0,3),(1,1),(1,2),(1,3),(2,2),(2,3),(3,2),(3,3)}

 

La transformación se aplicaría a X con una estructura por ejemplo:

 

E:         D:                  F:

El valor marcado con * será el que otorgue el valor final y se colocara encima del píxel que tratamos.  

 

 

Volver al  índice.

 

 

3.    Transformaciones cuantitativas

 

Def.- Una transformación morfológica es cuantitativa si cumple:

·          Compatibilidad con la translación: Sea  una transformación que depende del sistema de coordenadas y denotada por   si trasladamos todos los puntos por el vector -h que es equivalente a:  

                                                        

              Si   no depende del origen de coordenadas entonces             

                                                        

·          Compatibilidad con el cambio de escala: X =(multiplicar cada punto de X por el escalar ).

                                     

Si  no depende de la escala

                                     

·          Conocimiento local: A partir de un conjunto restringido de puntos Y en la transformación  (X) existe un conjunto restringido Z de forma que al conocer Z conocemos  (X) 

                                              

·          Continuidad -semi-superior: Este principio dice que la transformación morfológica no exhibe ningún cambio abrupto.

                                   

Hay cuatro transformaciones morfológicas cuantitativas que forman un conjunto simple:

o       Dilatación

o       Erosión

o       Apertura

o       Cierre

 

 

Volver al  índice.

 

a)    Dilatación

 

La dilatación puede interpretarse como una transformación en la que los píxeles del fondo que están tocando al objeto cambian mientras el resto queda igual. Se designa por el operador

 

Se puede representar matemáticamente por la fórmula:

  para cada x  X  y b  B}

La dilatación tiene las siguientes propiedades:

·        Conmutativa

·        Asociativa

·        Es invariante a la transformación

·        Es una transformación creciente

El numero de filas de la matriz será igual o mayor que la inicial.

 

Gráficamente la dilatación se calcula:

Se va recorriendo la imagen y donde nos encontramos un 1 situamos el origen del elemento estructural. Se realiza la unión de la imagen con el elemento estructural en los puntos que coincidan. Si todos los 1 de la imagen coinciden con 1 del elemento estructural entonces marcamos el píxel del origen del elemento con un 1.

 

Ver ejemplo.

 

 

b)   Erosión

 

La erosión combina dos conjuntos utilizando la sustracción de vectores. Su representación es mediante el operador es . Gráficamente la erosión sería ir recorriendo toda la imagen y donde haya un 1 comparar con el elemento estructural y si todos los 1 del elemento coinciden con 1 de la imagen se pone 1 en el origen del elemento estructural.

 

Se puede representar matemáticamente por la fórmula:

       X para cada b B}

La erosión elimina objetos de poca importancia o muy simples además de simplificar la estructura de los objetos. Objetos complicados mediante erosión pueden quedar descompuestos en objetos más simples.

 

Propiedades:

·        Si el punto (0,0)  B entonces

·        Es invariante a la transformación

·        Es una transformación creciente

Si

·        Si un elemento estructural está contenido en otro entonces la erosión producida por el elemento mayor será más agresiva es decir la erosión estará comprendida dentro de la producida por el otro elemento estructural.

·        Al igual que la dilatación es dual.

    Siendo  el simétrico de Y

·        La erosión no es conmutativa

·        Es no invertible es decir una vez echa una erosión si después le realizas una dilatación es imposible recuperar la imagen original.

·        Aplicando la función XOR a una dilatación o erosión se obtiene los contornos de la figura.

 

Ver ejemplo.

 

 

c)     Apertura y Cierre

 

La apertura y el cierre son combinaciones de erosión y dilatación.

Sea B un elemento estructural entonces se define:

o       Apertura

o       Cierre    

 

Ambos aplicaciones tienen como utilidad el eliminar ciertos detalles específicos de menor tamaño que el elemento estructural. La estructura total de la imagen casi no se ve dañada ni modificada.

 

Propiedades:

·        Son invariantes a la translación del elemento estructural.

·        Son transformaciones crecientes.

·        La apertura es anti-extensiva

·        El cierre es extensivo

 

Ver ejemplo Apertura.  Ver ejemplo Cierre.

 

4.    Esqueletización de imágenes

a)    Transformaciones homotópicas 

Dentro de las transformaciones morfológicas hay un grupo llamado homotópicas que se definen por ser transformaciones en las que no cambia la relación de continuidad entre los huecos y las regiones en  las imágenes.

a)     Esqueleto

Esta operación trata de obtener un conjunto de líneas que corresponden al adelgazamiento completo de la región sin pérdida de la forma esencial.

 

El esqueleto se puede conseguir mediante combinación de erosión y apertura. El esqueleto tiene dos defectos para aplicaciones prácticas:

 

·        Necesita no ser homotópico

·        Consta de líneas que pueden ser más anchas que un píxel.

 

Estos problemas se pueden solucionar mediante adelgazamiento homotópico secuencial cuyo problema es que es del orden de 10 veces más lento.

 

 

b)   Adelgazamiento y ensanchado

 

Esta operación no depende de un elemento estructural sino que se compone de operaciones con conjuntos pertenecientes a la imagen misma. Viene dado por la siguiente ecuación:

                                  y 

Cualquier punto x cumple:

·        La parte  del elemento estructural compuesto cuyo punto representativo es x estaría contenido en X

·        La parte  del elemento estructural compuesto estaría contenido en

Esta operación se puede construir como combinación de erosión y dilatación de la siguiente forma:

                                

Para una imagen X y un elemento estructural B = () el adelgazamiento se define como:                            

                                 

y el ensanchado como:

                                 

Al producir un adelgazamiento una parte del borde es sustraída y en el ensanchamiento es aumentada.

Ambas operaciones son duales es decir cumplen:

                                       siendo    

Ambas operaciones se usan a menudo de forma secuencial es decir, sea  secuencia de elementos estructurales compuestos  entonces se define el adelgazamiento secuencial como:

                                 

y el ensanchado secuencial como:

                                 

q      Nota: el adelgazamiento secuencial suele usarse como sustitutivo del esqueleto ya que el resultado obtenido es el mismo.

 

Volver al  índice.

 

 

c)    Envoltura convexa de una región mediante morfología

 

La envoltura convexa de una figura es un descriptor útil para las regiones de las imágenes. Una manera de hallarlo es mediante operaciones morfológicas. Sea  , i = 1,2,3,4 un conjunto de elementos estructurales entonces

                                  i = 1, 2, 3, 4 y k = 1, 2, 3, …  con .

       Sea  indicando  “conv” la convergencia del sentido  entonces la envoltura convexa es:

                                  

Es decir consiste en aplicar iterativamente la transformación de añadir o eliminar para  hasta que no sucedan más cambios en ese momento lo unimos a A y le llamamos  así sucesivamente para todos los . La unión de todos los  resultantes da la envoltura convexa de A.

 

d)   Rellenado de regiones

 

Consiste en buscar un borde y todos los puntos que queden dentro de el serán puestos a 1 y

                        Los que no son borde se les asume el valor 0. Después se rellena la región con la siguiente función:

                         k = 1, 2, 3, …

        el algoritmo termina cuando en la iteración k 

 se inserta para limitar el resultado interior de la región de interés.

 

e)     Granulación

 

La granulación consiste en aislar partículas formadas a partir de erosiones de imágenes. Mediante este proceso las partículas pequeñas desaparecen mientras las grandes quedan reducidas a puntos siendo estos puntos el centro de gravedad de la figura.

f)      Gradiente

 

El gradiente consiste en la substracción de la imagen obtenida mediante la erosión de la imagen original a la imagen original tras aplicarle una dilatación. El resultado obtenido es el esqueleto de la figura aplicado al contorno es decir los bordes de la figura.

 

 

Volver al  índice.

 

5.     Morfología en imágenes de grises

 

El tratamiento de imágenes de grises es una extensión del de las imágenes binarias.

Las imágenes vienen dadas por  de dimensión M x N y el elemento estructural es una subimagen de dimensión n x m de forma   

 

a)     Dilatación y erosión

 

La dilatación se define como:

                            

y la erosión como:

                         

Ambas definiciones toman valores fuera de la imagen para estos valores se supone su nivel de gris igual a cero, .

Se define el elemento  como el elemento estructural cuyos elementos están reflejados respecto al origen. Su utilización se basa en que la dilatación trabaja con x-i e y-j para solucionar esto las coordenadas del elemento estructural tienen que estar reflejadas sobre el origen así la condición de i y j serían las opuestas a las de la formula.

El efecto de realizar una dilatación en imágenes de grises es doble:

·        Si todos los elementos de la imagen son positivos la imagen resultante tiene mayor brillo

·        Los elementos oscuros o bien son reducidos o eliminados dependiendo de su valor y el elemento estructural.

El efecto de realizar una erosión en imágenes de grises es:

·        Si todos los elementos de la imagen son positivos la imagen resultante tiende a ser más oscura que la original

·        Los elementos claros o brillantes son reducidos dependiendo de su valor, los valores colindantes y el elemento estructural.

b)    Apertura y Cierre

 

Estas operaciones se definen igual que para imágenes de mapa de bits pero aplicando la erosión y la dilatación mostradas en el punto anterior.

La interpretación geométrica de la apertura consiste en buscar los puntos cuyo valor de  sea de mayor valor en estas zonas y formen picos de menor anchura que el elemento estructural en este caso lo que se realiza es un suavizado de el pico mediante el elemento estructural.

La interpretación del cierre es lo opuesto a la apertura se buscan los valores mínimos de anchura menor que la del elemento estructural y se realzan sus imágenes mediante el elemento estructural. El cierre normalmente se utiliza para eliminar elementos oscuros

 

Volver al  índice.

 

6.     Aplicaciones de las técnicas morfológicas

 

Mediante la combinación de todos estos elementos se crean unas ciertas aplicaciones para el tratamiento de imágenes:

 

o       Suavizado de la imagen

o       Gradiente morfológico

o       Top-hat

o       Segmentación de texturas

 

Suavizado de la imagen

Esta aplicación elimina los brillos y las zonas oscuras para ello efectúa una apertura y al resultado un cierre.

 

Gradiente morfológico

Esta aplicación se aplica para obtener los bordes de la figura mediante la combinación de dilatación y erosión a partir de la siguiente formula

                                            

 

Top-hat

Para el uso de esta aplicación se necesita un elemento estructural rectangular donde la primera o primeras filas sean todo 1 esta característica es la que le da el nombre a la aplicación. Se aplica para el realzado de formas en imágenes en las que hay sombras. Viene dada por la siguiente fórmula:

                                          

          Segmentación de texturas

Mediante la combinación de todos las aplicaciones morfológicas se puede eliminar figuras así por ejemplo la utilización reiterada de cierre con elementos estructurales cada vez mayores produciría la eliminación de los objetos oscuros de tamaño igual al elemento estructural dejando en su lugar la zona iluminada. Este método es dependiente de la imagen y de lo que queramos aislar o eliminar.

 

 

 

Volver al  índice.

 

 

 

 

7.    Ejemplos de estas aplicaciones sobre aplicaciones médicas:

 

Estos ejemplos son sobre aplicaciones morfológicas en Matlab.

1.      Dilatación:

Imagen binaria:

f=mmbinary(mmreadgray('blob.tif'));

Warning: Converting image from binary uint8 to uint8.

bimg=mmbinary(mmreadgray('blob1.tif'));

Warning: Converting image from binary uint8 to uint8.

b=mmimg2se(bimg);

mmshow(f);

mmshow(mmdil(f,b));

mmshow(mmdil(f,b),mmgradm(f));

image

(f)

image

(mmdil(f,b))

image

(mmdil(f,b),mmgradm(f))

 

2.    Erosión:

Imagen binaria:

 

b=mmimg2se(bimg);

g=mmero(f,b);

mmshow(f);

mmshow(g);

mmshow(g,mmgradm(f));

image

(f)

image

(g)

image

(g,mmgradm(f))

 

3.    Apertura:

   Imagen binaria:

 

f=mmbinary(mmreadgray('blob.tif'));

Warning: Converting image from binary uint8 to uint8.

bimg=mmbinary(mmreadgray('blob1.tif'));

Warning: Converting image from binary uint8 to uint8.

b=mmimg2se(bimg);

mmshow(f);

mmshow(mmopen(f,b));

mmshow(mmopen(f,b),mmgradm(f));

image

(f)

image

(mmopen(f,b))

image

(mmopen(f,b),mmgradm(f))

 

 

4.    Cierre:

Imagen binaria:

 

f=mmbinary(mmreadgray('blob.tif'));

Warning: Converting image from binary uint8 to uint8.

bimg=mmbinary(mmreadgray('blob1.tif'));

Warning: Converting image from binary uint8 to uint8.

b=mmimg2se(bimg);

mmshow(f);

mmshow(mmclose(f,b));

mmshow(mmclose(f,b),mmgradm(f));

image

(f)

image

(mmclose(f,b))

image

(mmclose(f,b),mmgradm(f))

 

Area apertura, con algoritmo sobre Matlab

 

Gray-scale image

a=mmreadgray('bloodcells.tif');

b=mmareaopen(a,500);

mmshow(a);

mmshow(b);

image

(a)

image

(b)

Equation

equation

Algorithm

function y = mmareaopen_equ(f, a, Bc)

if nargin == 2

  Bc = mmsecross;

end

if mmis(f,'binary')

  fr = mmlabel(f,Bc);      % binary area open, use area measurement

  g = mmblob(fr,'area');

  y = mmthreshad(g,a);

else

  y=zeros(size(f));

  for k=1:mmmaxlevel(f)  % gray-scale area open, use thresholding decomposition

    fk = mmthreshad(f,k);

    fo = mmareaopen(fk,a,Bc);

    if mmcmp(fo,'==',0)

      break;

    end

    y = y + double(fo);

  end

end

 

 

 

Aplicaciones del análisis morfológico en casos reales:

Detectar Gusanos Filiares.


Descripcción

Este  procedimiento extrae los gusanos filiares desde una imagen compleja de microscopio mediante la eliminación progresiva de otros objetos presentes en la imagen. La selección de las estructuras empieza con una escala del nivel de gris, seguida por una apertura y continua con basándose en las propiedades del objeto.

 

Imagen del microscopio.

 

 

a = imread('danaus.tif');

mmshow(a);

image

(a)

 

Regularización del fondo.

Se aplica un top-hat tras un cierre para marcar y realzar el fondo.

b = mmcloserecth(a,mmsebox(5));

mmshow(b);

image

(b)

 

Eliminado de elementos estrechos.

 

Mediante una apertura se eliminan los objetos finos.

c = mmopen(b);

mmshow(c);

image

(c)

Eliminado de objetos pequeños

Mediante una apertura de área se eliminan los objetos pequeños.

d = mmareaopen(c,200);

mmshow(d);

image

(d)

 

 

 

 

 

 

 

 

Bordeado

El bordeado es usado para seleccionar las estructuras principales incluidos los gusanos.

e = mmthreshad(d,50);

Warning: Converting image from scalar to uint8.

mmshow(e);

image

Esqueleto.

El objetivo de esta secuencia de transformaciones es crear el esqueleto de las figuras que quedan. Empezando con una esqueletización homotópica. Usando como parámetros que los gusanos son más largos se eliminan el resto de figuras.

f = mmthin(e);

mmshow(f);

image

(f)

 

 

 

 

 

 

 

Eliminación de estructuras cortas.

Se eliminan las elementos de poca dimensión dejando sólo los 2 gusanos.

g = mmthin(f,mmendpoints, 12);

mmshow(g);

image

(g)

Reconstrucción de los gusanos a partir de su esqueleto.

h = mminfrec(g,e);

mmshow(h);

image

(h)

Imagen final

Se resaltan los dos gusanos en la imagen original.

mmshow(a,h);

image

(a,h)

 

 

Extracción del ventrículo lateral del cerebro mediante una MRI imagen.


Imagen original.

The MRI image of a brain slice is read.

a = mmreadgray('mribrain.tif');

mmshow(a);

image

(a)

Detección del ventrículo I

b = mmopen(a,mmsedisk(10));

c = mminfrec(b,a);

mmshow(b);

mmshow(c);

image

(b)

image

(c)

 

 

 

 

 

Detección del ventrículo II

d = mmsubm(a,c);

mmshow(d);

e = mmcmp(d,'>=',uint8(50));

mmshow(e);

image

(d)

image

(e)

Selección del ventrículo e imagen final.

f= mmareaopen(e,70);

mmshow(f);

mmshow(a,f);

image

(f)

image

(a,f)

 

 

 

 

 

 

 

 

Marcado de las celdas de la Córnea.


 

Imagen original

a = imread('corneacells.tif');

mmshow(a);

b = mmsurf(a);

mmshow(b);

image

(a)

image

(b)

Filtrado y detección de celdas

c = mmasf(a,'oc',mmsecross,2);

d = mmregmax( c);

mmshow(mmsurf(c));

mmshow(mmsurf(c), d);

image

(mmsurf(c))

image

(mmsurf(c), d)

Buscado de fondo

e = mmneg(a);

f = mmcwatershed(e, d, mmsebox);

mmshow(e,d);

mmshow(e,f,d);

image

(e,d)

image

(e,f,d)

Etiquetado de celdas y gradientes

g = mmgray(f, 'uint16', 1);

h1 = mmaddm(mmlabel(d), uint16(1));

h = mmintersec(mmgray(d,'uint16'), h1);

i = mmunion( g, h);

mmlblshow(i);

j = mmgradm( a);

mmshow(j);

image

(i)

image

(j)

Busqueda de claves para las zonas etiquetadas

k = mmcwatershed(j, i);

mmshow( k);

mmshow(a, k, k);

image

( k)

image

(a, k, k)

 

 

 

 

 

 

 

 

 

II.    Extracción de las células de la sangre.


1.    Lectura y eliminación de poros

a = imread('bloodcells.tif');
mmshow(a);
b = mmareaopen(a, 200);
mmshow(b);

image

(a)

image

(b)

2.    Apertura

c = mmcmp( uint8(0), '<=', b, '<=', uint8(140));
mmshow(c);
d = mmopen(c,mmsedisk(2,'2D','OCTAGON'));
mmshow(d);

image

(c)

image

(d)

 

 

 

Marcado

e1 = mmdist(d, mmsebox,'EUCLIDEAN');
e2 = mmsurf(e1);
mmshow( e2);
e3 = mmregmax(e1);
e  = mmdil(e3);
mmshow( e2, e);

image

( e2)

image

( e2, e)

3.    Geodesic SKIZ

f = mmneg(e1);
fs = mmsurf(f);
mmshow(fs);
g = mmcwatershed( f, e, mmsebox);
mmshow(fs, g, e);

image

(fs)

image

(fs, g, e)

4.    Separación de las celdas

mmshow(c,g);
h = mmintersec(c,mmneg(g));
mmshow(h);

image

(c,g)

image

(h)

5.    Edge off

Las células que tocan los bordes de la imagen son borradas.

i = mmedgeoff(h);
mmshow(i);

image

(i)

Imagen final.

j=mmgradm(i);
mmshow(a,j);

image

(a,j)

 

Volver al  índice.

 

Ejemplos generales sobre aplicaciones no médicas.

 

Adición de dos imágenes con saturación.

 

f=uint8([255   255    0   10    0   255   250]);

g=uint8([ 0    40   80   140  250    10    30]);

y1=mmaddm(f,g)

 

y1 =

   255   255    80   150   250   255   255

y2=mmaddm(g,uint8(100))

 

y2 =

   100   140   180   240   255   110   130

 

a = imread('keyb.tif');

b = mmaddm(a,128);

Warning: Converting image from scalar to uint8.

mmshow(a);

mmshow(b);

image

(a)

image

(b)

 

 

Intersección.

a)    Con datos numéricos:

f=uint8([255   255    0   10    0   255   250]);
g=uint8([ 0    40   80   140  250    10    30]);
y1=mmintersec(f,g)
 
y1 =
     0    40     0    10     0    10    30
y2=mmintersec(f,uint8(0))
 
y2 =
     0     0     0     0     0     0     0

 

b)   Con imágenes binarias:

a = mmreadgray('form-ok.tif');
b = mmreadgray('form-1.tif');
c = mmintersec(a,b);
mmshow(a);
mmshow(b);
mmshow(c); 

image

(a)

image

(b)

image

(c)

c)    con imágenes de grises:

d = mmreadgray('tplayer1.tif');
e = mmreadgray('tplayer2.tif');
f = mmreadgray('tplayer3.tif');
g = mmintersec(d,e,f);
mmshow(d);
mmshow(e);
mmshow(f);
mmshow(g); 

image

(d)

image

(e)

image

(f)

image

(g)

Negación de una imagen

a)             imagen binaria:

a = mmreadgray('gear.tif');
b = mmneg(a);
mmshow(a);
mmshow(b);

image

(a)

image

(b)

 

b)             imagen de grises:

c = mmreadgray('astablet.tif');
d = mmneg(c);
mmshow(c);
mmshow(d);

image

(c)

image

(d)

Substracción de dos imágenes con saturación.

a = mmreadgray('boxdrill-C.tif');
b = mmreadgray('boxdrill-B.tif');
c = mmsubm(a,b);
mmshow(a);
mmshow(b);
mmshow(c); 

image

(a)

image

(b)

image

(c)

Diferencia simétrica de dos imágenes.

a = uint8([1 2 3 4 5]);
b = uint8([5 4 3 2 1]);
mmsymdif(a,b)
 
ans =
     4     2     0     2     4

 

c = mmreadgray('tplayer1.tif');
d = mmreadgray('tplayer2.tif');
e = mmsymdif(c,d);
mmshow(c);
mmshow(d);
mmshow(e); 

image

(c)

image

(d)

image

(e)

 

Unión de dos imágenes.

d = mmbinary(mmreadgray('pcb1bin.tif'));
Warning: Converting image from binary uint8 to uint8.
e = mmreadgray('danaus.tif');
f = mmunion(mmgray(d),e);
mmshow(d);
mmshow(e);
mmshow(f); 

image

(d)

image

(e)

image

(f)