Logica difusa para efecto de dibujo a partir de imágenes digitales
Victor Hugo Soliz Kuncar, [email protected]
Carrera de Informática, Universidad Mayor de San Andrés,
Facultad de ciencias naturales, La Paz Bolivia
Resumen
Los filtros gráficos para crear imágenes con la apariencia de dibujos, pinturas o bocetos a mano son a menudo incluidos en programas de edición gráfica para ayudar a los artistas a crear efectos a partir de fotos. También tienen un auge en la web como opción entretenida en los sitios para compartir fotos. El presente trabajo propone un método de generación de imágenes que simulan el dibujo a mano a partir de imágenes combinando el concepto de detección de bordes y lógica difusa.
Palabras clave: detección de bordes, lógica difusa, procesamiento de imágenes
1. Introducción
Las aplicaciones de gráficos generalmente incluyen una colección de efectos y filtros que se pueden usar en una imagen. Desde cambiar el brillo y contraste de una fotografía hasta hacerla parecer una pintura al óleo pasando por el cambio de los tonos de color para que parezca una foto en sepia antigua. Los usos para estos filtros varían, desde personas que quieren entretenerse modificando sus fotos a profesionales en diseño que los utilizan como efectos especiales para sus productos.
En este artículo exploraremos la creación de un efecto de dibujo a trazos a partir de fotografías digitales. Este problema es un efecto interesante que necesita que se puedan diferenciar los contornos de los objetos en la imagen automáticamente. Lo que nos lleva al problema de la detección de bordes.
2. Detección de bordes
La detección de bordes en imágenes digitales consiste en determinar si un punto dado de la imagen es el contorno de algún objeto o figura. Es un problema no trivial desde el momento en que se define. ¿Qué representa un borde en el momento de estudiar una imagen?.
En nuestro caso nos enfocaremos en la detección de bordes en imágenes en blanco y negro. Consideraremos a una imagen digital
como una matriz de píxeles con un número de columnas y de final .Cada píxel .será un número de 0 a 255 representando la cantidad de iluminación, siendo 0 el más oscuro (negro) y 255 el más claro (blanco). Entonces podemos definir a un borde como un conjunto de puntos que separan dos áreas que tienen valores de iluminación suficientemente diferentes.
La detección de bordes es un problema que ha estado presente desde los tiempos tempranos del procesamiento de imágenes. A continuación veremos 2 métodos muy populares para lograr este objetivo.
3. Operador de Sobel
El operador de Sobel asume que los puntos discretos de una imagen son en realidad muestras de una función continúa de 2 dimensiones. La función es aproximada a partir de los puntos y se define al gradiente de esta función como un indicador de qué tan abruptamente o suavemente cambia la intensidad de la imagen en cada punto. En los puntos en los que no exista gran cambio, el gradiente será 0. El resultado se alejará del 0 a medida que los cambios sean más bruscos.
La aproximación de la función se hace a partir de los 9 puntos que forman el cuadrado de 3x3 alrededor de cada pixel. Para cada celda (i,j):
G x i , j =−A i−1, j−1−2 Ai , j−1−Ai1, j−1Ai−1, j12 A i , j1Ai1, j1
G y i , j=−Ai−1, j−1−2 Ai−1, j −Ai−1, j1Ai1, j−12 A i1, j Ai1, j1
f i , j=G x i , j 2G y i , j 2
Valores altos de gradiente indican que el punto es un borde. Este método normal es implementado por 2 matrices de tamaño 3x3 que se convolucionan a la imagen original para encontrar Gx y Gy de cada celda.
G x=[−1 0 1−2 0 2−1 0 1]∗A
G y=[−1 −2 −10 0 01 2 1 ]∗A
G=G x2G y
2
El método de Sobel es popular. Aunque los resultados no son en general los mejores, éste método es fácil de implementar y rápido.
4. Detector de bordes de Canny
El detector de bordes de Canny es muy importante. Desarrollado en 1986, sigue siendo uno de los métodos más fiables en el caso general. Consiste de varias fases:
– Filtro Gaussiano (Reducción de ruido). Se aplica un filtro de señal a la imagen para reducir el efecto del ruido. Básicamente haciendo más borrosa a la imagen.
–
- Gradiente de intensidad. Se utiliza un método (Como por ejemplo, Sobel) para encontrar el gradiente de intensidad de la imágen. Además del gradiente, se considera la dirección atan(Gy, Gy), que se redondea a ángulos horizontales, verticales o diagonales en el cuadrante.
- Supresión de máximos falsos. Se confirma si los puntos en los que los gradientes son altos son máximos locales, utilizando la dirección obtenida anteriormente para confirmar si, comparando con los puntos en esa dirección, el gradiente es más grande.
- Trazado de los bordes.. Se buscan curvas continuas que agrupen puntos marcados como posibles bordes en el anterior paso.
5. Lógica difusa
La lógica difusa es una forma de lógica multivalorada en la que el grado de verdad de las proposiciones es un número real entre 0 y 1.
Relacionados a la lógica difusa, los conjuntos difusos tienen una función de pertenencia que relaciona a posibles elementos con un grado de pertenencia.
Para realizar detección de imágenes definimos los siguientes conjuntos:
• Negro: El pixel es negro/oscuro
• Gris :El pixel es gris/tono intermedio
• Blanco: El pixel es blanco/claro
Funciones de pertenencia.
Fuente: Elaboración propia, basada en imagen generada por MATLAB.
Las funciones determinan en qué medida se puede considerar un pixel como negro, por ejemplo. Si el valor del pixel es 0, el grado de pertenencia al conjunto negro es 1, el grado de pertenencia al conjunto gris es 0 y el grado de pertenencia al conjunto blanco es 0. En cambio, si el valor del pixel es 100, el grado de pertenencia al conjunto negro es 0.61, Al conjunto blanco es 0.39 y al conjunto gris 0.78.
5.1 Inferencia difusa
Definimos a la vecindad de un pixel en la posición (x,y) como el conjunto de los píxeles que son adyacentes o comparten equinas con él:
(x-1,y+1) (x,y+1) (x+1,y+1)
(x-1,y) (x,y) (x+1,y)
(x-1,y-1) (x,y+1) (x+1,y+1)
Para poder decidir si (x,y) es un borde utilizando
reglas lógicas utilizamos la idea previa de que un borde es un punto que separa a dos áreas que tienen tonos de color diferentes entre sí. Definimos 9 variables de entrada para cada pixel:
m7 =(x-1,y+1) m8 = (x,y+1) m9 = (x+1,y+1)
m4 = (x-1,y) m5 = (x,y) m6 = (x+1,y)
m1 = (x-1,y-1) m2 = (x,y+1) m3 = (x+1,y+1)
Se utilizaron 26 reglas de inferencia:
Reglas de inferencia
Fuente: Elaboración propia.
Cada uno de los esquemas anteriores representa un caso en el que se puede concluir que la celda del centro es un borde. Por ejemplo, el siguiente esquema:
Se traduce en la siguiente regla:
Antecedente: Si (m7 es Blanco) y (m4 es Blanco) y (m1 es Blanco) y (m9 es Negro) y (m6 es Negro) y (m3 es Negro).
Consecuente: Entonces la celda del centro es borde.
También necesitamos reconocer las situaciones en las que podemos estar seguros que no existe un borde, esto sucede cuando todos los colores de la vecindad son iguales.
Para evaluar la conjunción de dos expresiones difusas de los antecedentes utilizamos la función mínimo. El valor de verdad mínimo de todas las funciones de pertenencia del antecedente se convierte en su grado de verdad.
Para cada resultado (Es borde / no es borde), se acumulan los valores de verdad de los antecedentes utilizando la función máximo.
Para realizar la inferencia utilizaremos el método de Mamdani. Para aquello necesitamos definir dos conjuntos para la variable de salida:
Funciones de pertenencia de la salida
Fuente: Elaboración propia
La implicación de Mamdani está basada en la función mínimo. Se aplica el mínimo entre el antecedente y la función del consecuente.
Fuente: Elaboración propia
m7 m8 m9 m7 m8 m9 m7 * m9 m7 * m9
* * * * * * m4 * m6 m4 * m6
m1 m2 m3 m1 m2 m3 m1 * m3 m1 * m3
m7 m8 * m7 m8 * * m8 m9 * m8 m9
m4 * m6 m4 * m6 m4 * m6 m4 * m6
* m2 m3 * m2 m3 m1 m2 * m1 m2 *
m7 m8 m9 m7 m8 m9 m7 * m9 m7 * m9
* * * * * * m4 * m6 m4 * m6
m1 m2 m3 m1 m2 m3 m1 * m3 m1 * m3
m7 m8 * m7 m8 * * m8 m9 * m8 m9
m4 * m6 m4 * m6 m4 * m6 m4 * m6
* m2 m3 * m2 m3 m1 m2 * m1 m2 *
m7 m8 m9 m7 m8 m9 m7 * m9 m7 * m9
* * * * * * m4 * m6 m4 * m6
m1 m2 m3 m1 m2 m3 m1 * m3 m1 * m3
m7 m8 * m7 m8 * * m8 m9 * m8 m9
m4 * m6 m4 * m6 m4 * m6 m4 * m6
* m2 m3 * m2 m3 m1 m2 * m1 m2 *
m7 * m9
m4 * m6
m1 * m3
m7 m8 m9 m7 m8 m9 m7 m8 m9
m4 m5 m6 m4 m5 m6 m4 m5 m6
m1 m2 m3 m1 m2 m3 m1 m2 m3
El resultado es una función que se puede decodificar de varias formas. Utilizamos el método de los centroides. Básicamente busca el centro de gravedad de la curva total. El punto de éste centro, un valor entre 0 a 495. determina que tanto es un borde. Un valor cercano a 0 tiene certeza de ser un borde. Los valores mayores iguales a 495 se consideraran
equivalentes a 255.
5.3 Herramienta de programación
La herramienta de programación utilizada fue MATLAB. MATLAB posee un motor de inferencia difusa que permite definir los conjuntos , reglas y formas de inferencia.
6. Casos de prueba y resultados
Una colección de fotografías en la que serán aplicados el método presentado, y también los gradientes hallados por Sobel y el método de Canny.
6.1
a) Original
Fuente: imagepageprocessingplace.com
b) Canny
c) Sobel d) Método propuesto
6.2
a) Original
Fuente: Wikimedia commons
b) Canny
c) Sobel d) Método propuesto
6.3
a) Original
Fuente: imagepageprocessingplace.com
b) Canny
c) Sobel d) Método propuesto
6.4
a) Original
Fuente: Wikimedia commons
b) Canny
c) Sobel d) Método propuesto
6.5
a) Original
Fuente: imagepageprocessingplace.com
b) Canny
c) Sobel d) Método propuesto
6.6
a) Original
Fuente: Wikimedia commons
b) Canny
c) Sobel d) Método propuesto
6.7
a) Original
Fuente: imagepageprocessingplace.com
b) Canny
c) Sobel
d) Método propuesto
7. Discusión
Los resultados del método propuesto suelen ser parecidos a los del método de Sobel al usarlo en esta aplicaciones. Se pueden apreciar casos en que algunos bordes son encontrados por Sobel y no por el nuevo método y vice versa. El método propuesto tiene la ventaja de que por su característica difusa, puede crear contornos suaves más frecuentemente, los que aumenta el efecto de dibujo de boceto. Por otro lado, esta sensibilidad viene a cambio de artefactos - Aproximaciones al gris en la escala de colores pueden causar que el método dibuje lineas o incluso manchas en lugares equivocados.
En realidad, el método es aún una versión exploratoria y hace falta intentar con variaciones en la definición de conjuntos y de reglas. Las manchas que pueden aparecer a veces son causadas por el hecho de que los tonos más grises tienen un valor de pertenencia relevante tanto al conjunto “blanco” como al “negro”. El conjunto “noborde” en la salida y su situación lejos del color blanco funciona para compensar este efecto.
El método de Canny está en cambio especializado en encontrar curvas sólidas. Los resultados son más precisos que los de Sobel y el método propuesto, pero la falta de diferenciación entre bordes fuertes y débiles no le permite ser una solución completa para la aplicación buscada. Es posible que las curvas resultantes se puedan utilizar como una fase intermedia.
8. Conclusión
La lógica difusa ofrece una nueva perspectiva para solucionar problemas que aún no tienen una solución definitiva utilizando matemática y lógica clásica. Con reglas de inferencia difusas basadas en “el sentido común” se puede realizar un algoritmo que es capaz de detectar bordes y tiene una aplicación apropiada en crear un efecto de dibujo a mano a partir de imágenes digitales.
9. Agradecimiento
A Guillermo Choque Ausipiazu Phd. por sus correcciones al método propuesto y revisión de éste artículo.
10. Referencias
• Abdallah A. Alshennawy, and Ayman A. Aly;. Edge Detection in Digital Images Using Fuzzy Logic Technique
http://www.waset.org/journals/waset/v51/v51-30.pdf
Ultimo acceso: 16 de Junio de 2012
• H. R. Tizhoosh , Fuzzy Edge Detection
http://pami.uwaterloo.ca/tizhoosh/edge.htm
Ultimo acceso: 16 de Junio de 2012