Utilice la función distform para calcular la transformada de distancia euclídea de la matriz M, considerando los píxeles con el valor fg como píxeles de primer plano.
1. Defina una matriz de imagen y aplíquele distform.
El valor de cada píxel de salida es la distancia al píxel de primer plano de entrada más cercano (valor 100):
◦ Para los píxeles de primer plano de entrada, la distancia de salida es cero.
◦ Para los vecinos horizontales y verticales, la distancia es 1.
◦ Para los vecinos diagonales, la distancia es la raíz cuadrada de 2 o 1.414
Imagen con un solo píxel cuyo valor no es cero
1. Defina una imagen con un solo píxel cuyo valor no sea cero.
2. Aplique distform a la imagen:
La distancia aumenta monótonamente a medida que se aleja del píxel de primer plano (el píxel central) de la imagen de entrada.
La transformada de distancia produce una distancia euclídea de forma aproximada. En el ejemplo anterior, se puede ver que la salida de la transformada de distancia euclídea exacta para la posición de la matriz (0,1) debería ser:
mientras que en nuestra imagen de salida, el valor es 5.243.
Imagen de un objeto circular
1. Defina una imagen de un círculo:
2. Utilice la función scale para escalar el círculo.
3. Utilice la función WRITEBMP para grabar el círculo escalado en un fichero.
4. Aplique la función distform al círculo, escálelo y guarde los resultados en un nuevo fichero.
5. Inserte las imágenes de los dos ficheros y compare el resultado.
(sc.bmp)
(scdist.bmp)
Los valores de distancia son cero para todos los puntos del círculo y aumentan monotónicamente a medida que se avanza hacia afuera, pero no son exactamente iguales a la distancia euclídea; de lo contrario, la salida sería simétrica radialmente.
Dos imágenes binarias de un solo objeto
1. Lea una imagen.
2. Utilice la función translate para crear versiones trasladadas de la imagen y grabe dichas imágenes en ficheros.
3. Inserte las imágenes de los tres ficheros y compare el resultado.
(flower.bmp)
(flower_d2.bmp)
(flower_d3.bmp)
4. Utilice la función distform para calcular la transformada de distancia de D1.
5. Utilice las funciones mask y mean para enmascarar la imagen transformada de distancia con las imágenes D2 y D3, y calcular la media de la imagen completa. Esto es una medida de la distancia entre dos imágenes.
La distancia entre D1 y D1 es cero, y la distancia entre D1 y las demás imágenes aumenta con el grado de traslación.
6. Calcule la distancia de Hausdorff.
La distancia de Hausdorff se define como el máximo de la distancia más cercana entre puntos de dos conjuntos. Para calcular la distancia de Hausdorff entre las dos imágenes, utilice la función max en lugar de la función mean.
Dos imágenes de bordes
Es posible comparar el rendimiento de los detectores de bordes calculando la distancia entre dos imágenes de bordes. Utilice la media o el máximo de las distancias enmascaradas como una medida de la distancia de los bordes.
1. Utilice la función READ_IMAGE para leer un fichero de imagen.
2. Aplique los dos detectores de bordes canny y binarize a la imagen, y grabe los resultados en ficheros externos.
3. Inserte y compare visualmente las dos imágenes.