Funciones > Procesamiento de imágenes > Extracción de función > Ejemplo: transformada de distancia euclidiana
Ejemplo: transformada de distancia euclidiana
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.
Para obtener información sobre el uso de este ejemplo, consulte Acerca de los ejemplos de procesamiento de imágenes
Matriz de imagen
1. Defina una matriz de imagen y aplíquele distform.
Pulse aquí para copiar esta expresión
Pulse aquí para copiar esta expresión
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.
Pulse aquí para copiar esta expresión
Pulse aquí para copiar esta expresión
Pulse aquí para copiar esta expresión
Pulse aquí para copiar esta expresión
Pulse aquí para copiar esta expresión
2. Aplique distform a la imagen:
Pulse aquí para copiar esta expresión
Pulse aquí para copiar esta expresión
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:
Pulse aquí para copiar esta expresión
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:
Pulse aquí para copiar esta expresión
Pulse aquí para copiar esta expresión
Pulse aquí para copiar esta expresión
Pulse aquí para copiar esta expresión
Pulse aquí para copiar esta expresión
Pulse aquí para copiar esta expresión
Pulse aquí para copiar esta expresión
2. Utilice la función scale para escalar el círculo.
Pulse aquí para copiar esta expresión
3. Utilice la función WRITEBMP para grabar el círculo escalado en un fichero.
Pulse aquí para copiar esta expresión
4. Aplique la función distform al círculo, escálelo y guarde los resultados en un nuevo fichero.
Pulse aquí para copiar esta expresión
Pulse aquí para copiar esta expresión
Pulse aquí para copiar esta expresión
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.
Pulse aquí para copiar esta expresión
2. Utilice la función translate para crear versiones trasladadas de la imagen y grabe dichas imágenes en ficheros.
Pulse aquí para copiar esta expresión
Pulse aquí para copiar esta expresión
Pulse aquí para copiar esta expresión
Pulse aquí para copiar esta expresión
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.
Pulse aquí para copiar esta expresión
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.
Pulse aquí para copiar esta expresión
Pulse aquí para copiar esta expresión
Pulse aquí para copiar esta expresión
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.
Pulse aquí para copiar esta expresión
Pulse aquí para copiar esta expresión
Pulse aquí para copiar esta expresión
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.
Pulse aquí para copiar esta expresión
2. Aplique los dos detectores de bordes canny y binarize a la imagen, y grabe los resultados en ficheros externos.
Pulse aquí para copiar esta expresión
Pulse aquí para copiar esta expresión
Pulse aquí para copiar esta expresión
Pulse aquí para copiar esta expresión
3. Inserte y compare visualmente las dos imágenes.
(lena_e1.bmp)
(lena_e2.bmp)
4. Calcule la distancia total entre los bordes.
Pulse aquí para copiar esta expresión
Pulse aquí para copiar esta expresión
¿Fue esto útil?