Introducción al Procesamiento de Imágenes

por Juan Manuel Vuletich
Volver al estudio de Juan


Trabajos Prácticos 3 y 4

Ejercicio 1 - Detección de Bordes por la Derivada Primera

Introducción

    Se solicitó implementar detección de bordes por la derivada primera. Esto se hace convolucionando la imagen con un filtro que aproxime la derivada primera, y despues considerando borde aquellos pixels cuyo valor absoluto supere cierto umbral.

Desarrollo

    Como aproximaciones de la derivada primera, incluí los siguientes filtros pasa-altos: Compass Horizontal, CompassVertical, Compass 45o, Compass -45o, Roberts 45o, Roberts -45o. Para todos estos filtros incluí tres maneras de determinar el umbral:     Se observa que cada filtro detecta con mayor facilidad los bordes paralelos a la dirección del filtro (por ejemplo, Compass Horizontal detecta con mayor facilidad bordes horizontales). Se obtienen buenos resultados obteniendo los bordes por dos filtros perpendiculares entre sí y combinando luego los resultados.

Inclusión de la Varianza Local

    Se solicitó tambien exigir que un pixel, para ser considerado borde, este en una vecindad que tenga una varianza local que supere cierto umbral. En el caso de los bordes detectados por la derivada primera esto no provoca ninguna mejora, ya que todos los bordes considerados están en zonas de alta varianza local (por esto es que su derivada primera tiene un valor absoluto alto).

Ejercicio 2 - Detección de Bordes por la Derivada Segunda

Introducción

    Se solicitó implementar detección de bordes por la derivada segunda. Esto se hace convolucionando la imagen con un filtro que aproxime la derivada segunda, y después considerando borde aquellos pixels que representen un cruce por cero.

Desarrollo

    Como aproximaciones de la derivada segunda primera, incluí los siguientes filtros laplacianos:

a) 0  1  0     b) 1  1  1     c) -1  2 -1
   1 -4  1        1 -8  1         2 -4  2
   0  1  0        1  1  1        -1  2 -1

    Como criterios de vecindad (qué vecinos tomar en cuanta para considerar o no cruce por cero a un pixel), implemente 4 vecinos (arriba, abajo, derecha e izquierda) y 8 vecinos (incluyendo tambien a los vecinos en diagonal).

    El resultado de esta técnica no es satisfactorio porque más de la mitad de los pixels de la imagen son considerados bordes. Esto empeora al considerar 8 vecinos. La utilidad de esta técnica aparece cuando se aplica un umbral sobre la varianza local.

Inclusión de la Varianza Local

    Se solicitó tambien exigir que un pixel, para ser considerado borde, este en una vecindad que tenga una varianza local que supere cierto umbral. En este caso se obtiene una mejora considerable, detectándose bordes que no se detectaban al aplicar la derivada primera, sin detectar más bordes espúreos.

Ejercicio 3 - Detección de Bordes por el Laplaciano del Gausiano

Introducción

Se solicitó implementar detección de bordes por el Laplaciano del Gausiano. Esto se hace convolucionando la imagen con este filtro que aproxime la derivada segunda, y después considerando borde aquellos pixels que representen un cruce por cero.

Desarrollo

    El armado del filtro Laplaciano del Gausiano se hace en función del parametro sigma, ingresado por el usuario. El programa calcula la imagen más pequeña que incluya a todos los valores cuyo valor absoluto sea mayor que 0.001. Por ejemplo, para sigma = 1 la imagen construida es de 13 x 13; para 1.2 es de 15 x 15 y para 2 es de 21 x 21.

    Posteriormente se convoluciona la imagen con el filtro, y se consideran bordes a los cruces por cero. Como criterios de vecindad (qué vecinos tomar en cuanta para considerar o no cruce por cero a un pixel), implemente 4 vecinos (arriba, abajo, derecha e izquierda) y 8 vecinos (incluyendo tambien a los vecinos en diagonal).

    El resultado de este filtro es visualmente muy atractivo. De cualquier manera, detecta una enorme cantidad de bordes espúreos.

Inclusión de la Varianza Local

    Se solicitó tambien exigir que un pixel, para ser considerado borde, este en una vecindad que tenga una varianza local que supere cierto umbral. Al aplicar esta técnica juntamente con el Laplaciano del Gausiano se obtiene el mejor resultado de todas las técnicas implementadas.

Ejercicio 4 - Sensibilidad al Ruido

Introducción

    Se solicitó estudiar el comportamiento de todos los métodos de detección de bordes ya descriptos frente a imágenes ruidosas.

Desarrollo

    Se aplicaron todos los métodos a imagenes sin ruido y posteriormente a imágenes contaminadas. Se preparó la matriz de resultados solicitada.
 

Técnica aplicada

a - Compass Horizontal
b - Compass Vertical
c – Laplaciano A con 4 vecinos y con Varianza Local.
d – Laplaciano del Gausiano, con sigma = 1.2 y varianza local.

Tipo de contaminación

1 - S&P (10, 255, 0)
2 – Aditivo Gaussiano con media 0 y desvio estándar 30, al 100%. Antes de la detección se limito la imagen a valores entre 0 y 255.

Resultados obtenidos

a1  0.95 0.22 Indice: 0.156
    0.05 0.78

b1  0.91 0.22 Indice: 0.183
    0.09 0.78

c1  0.99 0.42 Indice: 0.274
    0.01 0.58

d1  0.86 0.41 Indice: 0.379
    0.14 0.59

a2  0.98 0.01 Indice: 0.015
    0.02 0.99

b2  0.93 0.01 Indice: 0.042
    0.07 0.99

c2  0.82 0.01 Indice: 0.105
    0.18 0.99

d2  0.85 0.01 Indice: 0.087
    0.15 0.99

    Nota: Al procesar imágenes con ruido aditivo gaussiano con algún metodo que incluya varianza local, resulta indispensable ajustar el umbral de varianza local para que sea no menor que la varianza del ruido. De otra manera, el resultado es inutilizable.

    En los casos estudiados, el Laplaciano del Gausiano consistentemente supera a la Derivada Segunda.

    En imágenes sin ruido, el Laplaciano del Gausiano da siempre los mejores resultados. Pero en imágenes ruidosas, la Derivada Primera resulta menos afectada. Esto significa que (segun el caso) los resultados obtenidos por la Derivada Primera pueden ser mejores que los obtenidos por el Laplaciano del Gausiano.