7. Extracción de Contornos Universidad de Valladolid
Extracción de Contornos. 1. La derivada discreta 2. La operación de filtrado 3. Gradiente de una imagen 4. Localización de los puntos de contorno 5. Derivada segunda. Laplaciana de gaussiana 6. Detección de contornos con MATLAB 7. Conclusiones Visión Artificial Industrial. Univ. Valladolid
Introducción Los contornos corresponden a transiciones bruscas en la intensidad de la imagen. Convierten una imagen 2D en un conjunto de cadenas de píxeles. Extraen las características más resaltables de la escena Visión Artificial Industrial. Univ. Valladolid
Introducción ¿Cómo hallar los píxeles de contorno? Visión Artificial Industrial. Univ. Valladolid
Introducción Como los contornos corresponden a cambios bruscos en la intensidad de la imagen para detectar estos cambios utilizaremos derivadas que es un concepto matemático asociado al cambio de una variable. Visión Artificial Industrial. Univ. Valladolid
Extracción de contornos ¿Dónde está el contorno?! Máximos y mínimos de la derivada Visión Artificial Industrial. Univ. Valladolid
¿Cómo se puede derivar una imagen digital f[x,y]? La derivada discreta ¿Cómo se puede derivar una imagen digital f[x,y]? Opción 1: reconstruir la imagen continua y hallar el gradiente Opción 2: Hallar la derivada discreta Visión Artificial Industrial. Univ. Valladolid
La derivada discreta marca los cambios Perfil horizontal de una línea que presenta un salto de 50 niveles de gris (contorno vertical) Derivada discreta de ese perfil Visión Artificial Industrial. Univ. Valladolid
Extracción de contornos empleando la derivada discreta 1 2 3 4 5 6 7 1 2 3 4 5 6 7 1 -1 1 -1 1 -1 1 -1 255 1 1 255 2 2 3 3 4 4 5 5 6 6 7 7 -1*0 + 1*255 = 255 -1*0 + 1*0 = 0 -1*0 + 1*0 = 0 -1*0 + 1*0 = 0 Visión Artificial Industrial. Univ. Valladolid
Extracción de contornos empleando la derivada discreta 4 5 6 7 1 2 3 1 2 3 4 5 6 7 Imagen Contornos verticales Visión Artificial Industrial. Univ. Valladolid
Efecto del ruido. Filtrado. La diferenciación numérica amplifica las altas frecuencias de ruido Se precisa siempre del empleo de filtros suavizantes previos Visión Artificial Industrial. Univ. Valladolid
Efecto del ruido. Filtrado. Consideremos el perfil de una fila o columna de la imagen señal Su derivada será: ¡¡¿dónde está el contorno?!!
Solución: Suavizar primero Señal Kernel de Gaussiana Convolución Derivada de h*f Para obtener el contorno buscar máximo en
Propiedad asociativa de la convolución Esto ahorra una operación: Señal Kernel Convolución Visión Artificial Industrial. Univ. Valladolid
Gradiente de una imagen Como las imágenes son bidimensionales para derivar precisamos del concepto matemático de gradiente. En cada punto de la imagen tendremos un gradiente. Este tomará un valor muy alto en los contornos. El gradiente apunta en la dirección del cambio de la intensidad Visión Artificial Industrial. Univ. Valladolid
Derivada en sentido horizontal dI/dx Las imágenes son bidimensionales Derivada en sentido horizontal dI/dx 4 5 6 7 1 2 3 1 2 3 4 5 6 7 Imagen Contornos verticales Visión Artificial Industrial. Univ. Valladolid
Las imágenes son bidimensionales Derivada en sentido vertical dI/dy 1 2 3 4 5 6 7 1 2 3 4 5 6 7 1 1 2 2 3 3 4 4 5 5 6 6 7 7 Imagen Contornos horizontales Visión Artificial Industrial. Univ. Valladolid
Gradiente de una imagen La intensidad de un contorno viene dada por el módulo del gradiente La dirección del gradiente viene dada por: Visión Artificial Industrial. Univ. Valladolid
El operador de Sobel Los operadores de Sobel son los más utilizados para calcular el gradiente -1 1 -2 2 1 2 -1 -2 Visión Artificial Industrial. Univ. Valladolid
Otros operadores Gradiente (a): Roberts’ cross operator (b): 3x3 Prewitt operator (c): Sobel operator (d) 4x4 Prewitt operator Visión Artificial Industrial. Univ. Valladolid
Filtro de derivada primera 1 2 4 1 -1 2 -2 derivada de Gaussiana Gaussiana >> dg=imfilter(g,[1 -1]); >> mesh (dg) >> g=fspecial('gaussian',[64 64],10); >> mesh(g),axis off Visión Artificial Industrial. Univ. Valladolid
Imagen original Visión Artificial Industrial. Univ. Valladolid
Derivada Horizontal dI/dx 1 -1 2 -2 Visión Artificial Industrial. Univ. Valladolid
Derivada Vertical dI/dy 1 2 -1 -2 Visión Artificial Industrial. Univ. Valladolid
Módulo del Gradiente Visión Artificial Industrial. Univ. Valladolid
Eliminación de píxeles con gradiente bajo El contorno estará formado por aquellos píxeles donde el gradiente es relativamente alto. De entrada, eliminaremos aquellos píxeles que tengan un módulo del gradiente por debajo de un umbral predeterminado. Visión Artificial Industrial. Univ. Valladolid
Eliminación de píxeles con gradiente bajo Mod.Gradiente umbralizado (umbral=0.40). ¡Ojo! no es una binarización. Los píxeles con modulo por debajo del umbral se ponen a cero pero el resto mantienen los valores que tenían Visión Artificial Industrial. Univ. Valladolid
Búsqueda de máximos en la dirección del grad Los contornos que quedan todavía son gordos. Un contorno tiene que tener un píxel de ancho. Detalle del diente superior donde se aprecia el grosor del contorno que hemos obtenido hasta el momento calculando el módulo del gradiente y eliminando los valores bajos. Visión Artificial Industrial. Univ. Valladolid
Búsqueda de máximos en la dirección del grad Este es un detalle de la imagen de contornos que tenemos que obtener. Nótese que tiene un pixel de ancho. ¿Cómo se han logrado unos contornos finos? Visión Artificial Industrial. Univ. Valladolid
Búsqueda de máximos en la dirección del grad El gradiente es una magnitud vectorial. Hasta ahora sólo hemos utilizado el módulo pero también tiene un argumento que emplearemos a continuación. Para adelgazar los contornos hallados nos quedaremos con los píxeles que tienen el valor mayor en el módulo del gradiente respecto a sus píxeles adyacentes. Visión Artificial Industrial. Univ. Valladolid
Búsqueda de máximos en la dirección del grad Dirección del gradiente Detalle de la imagen donde se refleja la dirección que toma el gradiente en cada pixel. Visión Artificial Industrial. Univ. Valladolid
Búsqueda de máximos en la dirección del grad ¿Con qué píxeles adyacentes hay que comparar? Con los que estén en la dirección del gradiente. Por eso hay que mirar el argumento del gradiente. Cuantificamos los argumentos en 4 zonas Zona 0 Zona 1 Zona 2 Zona 3 Visión Artificial Industrial. Univ. Valladolid
Búsqueda de máximos en la dirección del grad Módulo del gradiente Dirección del gradiente En la figura de la dcha. se muestra un detalle de la imagen donde están codificados en distintos niveles de gris las cuatro direcciones que consideraremos en el gradiente. Visión Artificial Industrial. Univ. Valladolid
Dirección del gradiente Módulo del gradiente Dirección del gradiente Contorno Visión Artificial Industrial. Univ. Valladolid
Resumen Extracción de Contornos con grad -1 -2 1 2 Máx.direc.grad. umbral 1 -1 2 -2 Img.de Contornos Visión Artificial Industrial. Univ. Valladolid
La derivada segunda Otra forma de detectar los cambios en la señal de la imagen es utilizar la derivada segunda. Los contornos vendrán determinados por los pasos por cero de la derivada segunda. Visión Artificial Industrial. Univ. Valladolid
es el operador Laplaciano: La derivada segunda es el operador Laplaciano: Visión Artificial Industrial. Univ. Valladolid
Laplaciana de Gaussiana Consideremos Señal Kernel de Laplaciana de Gaussiana Convolución Visión Artificial Industrial. Univ. Valladolid
Laplaciana de Gaussiana Visión Artificial Industrial. Univ. Valladolid
Laplaciana de Gaussiana Contornos: pasos por cero Visión Artificial Industrial. Univ. Valladolid
Filtro de derivada segunda Laplaciana de Gaussiana Gaussiana >> l=fspecial('laplacian') l = 0.1667 0.6667 0.1667 0.6667 -3.3333 0.6667 >> log=imfilter(g,l); >> mesh(log),axis off >> g=fspecial('gaussian',[64 64],5); >> mesh(g),axis off Visión Artificial Industrial. Univ. Valladolid
Detección Cont. por Diferencia de Gaussianas Original Suavizada con Gaussiana Visión Artificial Industrial. Univ. Valladolid
Detección Cont. por Diferencia de Gaussianas ¿Por qué funciona? suavizada – original (realzada, offset +128)
Laplaciana de Gaussiana Gaussiana - Imagen Gaussiana Función delta Visión Artificial Industrial. Univ. Valladolid Laplaciana de Gaussiana
Extracción de contornos con MATLAB %Derivadas con Sobel >> Sy=fspecial(‘sobel’); >> Fy=imfilter(I,Sy); >> Sx=Sy’; % Sx es la traspuesta de Sy >> Fx=imfilter(I,Sx); % Gradiente >> Grad=abs(Fx)+abs(Fy); % otra forma calculo gradiente >> [Fx,Fy] = gradient(I); % contornos directamente >> C=edge(I); >> C=edge(I,'sobel',THRESH); %Con Sobel y un determ umbral >> C=edge(I,'log',THRESH); %Con LoG y un determ umbral >> C=edge(I,'zerocross',H); %Con pasos por cero y filtro H Visión Artificial Industrial. Univ. Valladolid
Conclusiones La detección de contornos permite reducir la gran cantidad de datos presentes en la imagen extrayendo de ellas las zonas que contienen más información: siluetas de los objetos, cambios de color, variaciones en la orientación de las superficies, etc. Los contornos se obtienen generalmente empleando operadores diferenciales que detectan los cambios de intensidad en la imagen. Al ser las imágenes un campo bidimensional se suele emplear el gradiente para cuantificar la variación en los niveles de gris. La derivación de una señal conlleva la amplificación del ruido que contiene por lo que siempre es muy recomendable un suavizado previo. Visión Artificial Industrial. Univ. Valladolid
Conclusiones Uno de los filtros más conocidos para el cálculo del gradiente es el filtro de Sobel, que es un filtro lineal que suaviza y obtiene la derivada en cualquiera de las dos direcciones dependiendo de la elección de una máscara asimétrica 3x3. La detección de contornos puede llevarse a cabo también determinando los píxeles donde la derivada segunda se hace cero en la imagen. Visión Artificial Industrial. Univ. Valladolid