Google
 

lunes, 13 de abril de 2009

DETECCION DE BORDES: algoritmo de Canny

El operador de detección de bordes de Canny fue desarrollado por un catedrático de la universidad de Berkeley (EEUU) en 1986 y se basa en un algoritmo de múltiples fases para detectar un amplio rango de bordes. Es sin duda el operador más utilizado en la detección de bordes
El objetivo de Canny era descubrir el algoritmo óptimo para la detección de bordes. Un detector óptimo significará una buena detección, el algoritmo debe marcar tantos bordes reales como sea posible, una buena localización, los bordes marcados deben estar lo más cerca posible del borde en la imagen real, y por último una mínima respuesta, es decir, un borde dado debe ser marcado sólo una vez y donde sea posible el ruido presente en la imagen no debería crear falsos bordes.

  1. Operador de Canny:
    Esta técnica, que se caracteriza por estar optimizada para la detección de bordes diferenciales, consta de 3 fases pero algunos autores agregan una ultima fase, siendo en total 4 fases.

  2. Fases de detección de bordes de canny:
    -Obtención del gradiente
    -Supresión no máxima al resultado del gradiente
    -Histéresis de umbral a la supresión no máxima
    -Cierre de contornos abiertos
    Obtención del gradiente:

    ·
    Para obtener el gradiente se tiene que suavizar la imagen
    -Aplicar a la imagen I un suavizado gaussiano G o filtro gaussiano (también se puede aplicar otros filtros ) J = I * G
    - Para calcular el kernel gaussiano G utilizar la siguiente ecuación · En seguida calcular el gradiente:
    - Para cada pixel de la imagen J(i,j)
    ->Calcular las componentes del gradiente Jx y Jy
    ->Calcular la magnitud de los bordes
    ->Estimar la orientación de la normal de los bordes Supresión no máxima al resultado del gradiente
    El objetivo de este paso es Obtener bordes de 1 pixel de grosor al considerar únicamente pixels cuya magnitud es máxima en bordes gruesos y descartar aquellos cuyas magnitudes no alcancen ese máximo.
    a) Para todo punto se obtiene la dirección más cercana dk a 0º, 45º,90º y 135º en Ea(i,j)
    b) Si Em(i,j) es menor que uno de sus dos vecinos en la dirección dk,IN(i,j)=0. Si no IN(i,j)=Em(i,j)
    Histéresis de umbral a la supresión no máxima
    Permite eliminar máximos procedentes de ruido, etc.
    -Entrada IN, Ea, y dos umbrales T1 y T2 (T2>T1)
    -Para todo punto en IN, y explorando en un orden:
    ->Localizar el siguiente punto tal que IN(i,j) > T2
    ->Seguir las cadenas de máximos locales a partir de IN(i,j) en ambas direcciones perpendiculares a la normal al borde siempre que IN>T1. Marcar los puntos explorados.
    -La salida es un conjunto de bordes conectados de contornos de la imagen, así como la magnitud y orientación.
    Cierre de contornos abiertos (Algoritmo de Deriche y Cocquerez)
    a) La imagen de entrada es una imagen de contornos binarizada (1= borde; 0=no borde)
    b) Para cada punto de borde de un extremo abierto se le asigna un código que determina las direcciones de búsqueda para el cierre del contorno
    c) Para los pixels marcados con este código se marca como pixel de borde el de máximo gradiente en las tres direcciones posibles.
    d) Se repiten los pasos hasta que se cierren todos los contornos.


  3. Resultados:
  4. Conclusiones:
    a) Este algoritmo está considerado como uno de los mejores métodos de detección de contornos mediante el empleo de máscaras de convolución.

    b) El algoritmo Canny es adaptable a los varios ambientes. Sus parámetros permiten que sea adaptado al reconocimiento de los bordes de características que diferencian dependiendo de los requisitos particulares de una puesta en práctica dada.

  5. Ejecutable:

    Se implemento en matlab y en el programa se podra selecionar diferentes imagenes de prueba pero bien se puden poner otras imagenes con los mismos nombres. Para ejecutar el programa primero se debe tener instalado el matlab 7.4 si no se tiene intalado ninguna version o otras versiones anteriores se debe instalar el componente (descargar las las 4 partes)
    Descargar Componente parte1
    Descargar Componente parte2
    Descargar Componente parte3
    Descargar Componente parte4

    Descargar Algortimo de Canny