UNIVERSIDAD AUTÓNOMA DE QUERÉTARO
FACULTAD DE INGENIERÍA
MAESTRÍA EN MECATRÓNICA
Nombre del alumno: Carlos Andrés Pérez Ramírez
Materia: Computación Avanzada
Actividad 9 Programación de los algoritmos Sobel y Roberts en Visual Studio
Nombre del Catedrático Catedrático Dr. Miguel Trejo Hernández
San Juan del Rio, Querétaro. 19 de junio de 2013
Objetivo
Realizar la programaciíon en Visual Studio del algoritmo de Sobel y Roberts empleados en la detección de bordes en imágenes.
Generalidades En el procesamiento de imágenes, la detección de bordes es un campo de aplicación sumamente importante debido a que en la mayoría de las imágenes, el resaltar cambios en la iluminación facilita la detección de características que permiten extraer información relevante para realizar una identificación de anormalidades con mayor facilidad. Los bordes son pixeles alrededor de los cuales la imagen presenta una brusca variación en los niveles de gris [1]. El objetivo consiste en dada una imagen, localizar los bordes más probables generados por los elementos de la escena y no por el ruido. En la figura 1 se puede observar que los bordes (transición de oscuro a claro o viseversa) se modelan como una rampa en lugar de hacerlo como un cambio brusco de intensidad, debido a que la imagen original puede estar desdibujada como resultado del muestreo.
Figura 1. Demostración de los cambios en una imagen con bordes.
La primera derivada es cero en todas las regiones de intensidad constante y tiene un valor constante en toda la transición de intensidad. La segunda derivada, en cambio es cero en todos los puntos, excepto en el comienzo y en el final de una transición de intensidad. Por lo tanto, un cambio de intensidad se manifiesta como un cambio brusco en la primera derivada y presenta un cruce por cero, es decir produce un cambio de signo en su valor, en la segunda derivada. Este cambio de signo se le conoce como “zero-crossing”. Basándose en estas observaciones es evidente que el valor de la primera derivada puede utilizarse para detectar la presencia de un borde así como el signo de la segunda derivada. Existen algunos operadores, basados en la primera derivada, que permiten detectar los bordes. Éstos son el algoritmo Sobel, Roberts, Prewitt y Frei-Chen [2].
El algoritmo de Sobel permite calcular la primera derivada de la imagen basándose en la siguiente ventana.
Figura 2. Ventanas empleadas en el algoritmo de Sobel.
Como se aprecia en la figura 2, existen 2 variantes para algoritmo de Sobel. En la parte derecha (c) de la figura se ilustra la ventana empleada para las filas. En la parte central (b) de la imagen se ilustra la ventana empleada para las columnas. En la parte izquierda (a) se muestra los elementos numerados Las fórmulas para ambas variantes es ( ) ( ) ( ) ( ) Entonces, un pixel en la ubicación (x,y) es considerado un pixel de borde si g≥T en esa
ubicación, donde T es un umbral que debe ser especificado. El algoritmo de Roberts a diferencia del algoritmo Sobel, marca solamente los puntos de borde, sin información sobre la orientación de éstos. Es un operador muy simple que trabaja con imágenes binarias. Opera según las dos diagonales perpendiculares mostradas en la figura 3 y definidas por la siguiente ecuación
Figura 3. Definición de las diagonales para el operador Roberts.
Existen dos formas del operador de Roberts: la raíz cuadrada de la suma de las diferencias de los vecinos diagonales al cuadrado y suma de la magnitud de las diferencias de los vecinos diagonales. Para la presente actividad se emplea el último enfoque. En las secciones se presenta la implementación en Visual Studio.
Desarrollo de la actividad El objetivo de la presente actividad consiste en realizar la programación de 2 algoritmos para detectar los bordes en una imagen. Para esto, se retoma el proyecto generado en la actividad previa, al cual se agregan al menú operaciones las opciones Sobel y Roberts, identificados como IDM_Operador_Sobel e IDM_Operador_Robert ilustrado en la figura 4.
Figura 4. Opciones programadas para Archivo.
Para realizar la implementación de estos operadores es necesario realizar un doble ciclo for para recorrer la imagen. Posteriormente es necesario guardar la ventana de la imagen que se desea procesar. Cuando se ha llenado el vector, debe ejecutarse el algoritmo, comparar con el umbral definido y mostrar cada pixel generado. Debe ejecutarse hasta el fin de la imagen. En las figuras 5 a 7 se muestra el código generado para implementar las funciones anteriormente descritas.
Figura 5. Código generado (1/4)
Figura 5. Código generado (2/2)
En la figuras 8 y 9 se muestran los algoritmos en ejecución
Figura 8. Código en ejecución. (1/2)
Figura 9. Código en ejecución. (2/2)
Con lo que se cumple con el objetivo planteado.
CONCLUSIONES
La detección de bordes es un preprocesamiento necesario debido a que éstos contienen información que debe ser resaltada para poder ser procesada posteriormente. Los algoritmos de Sobel y Robert son sencillos en su implementación. Sin embargo, son sensibles al ruido gaussiano. Su implementación en tecnologías de procesamiento en tiempo real es factible debido a que no posee una gran latencia.
BIBLIOGRAFÍA [1] Sánchez Rangel, Francisco Javier. Medición y análisis de las variaciones en el nivel de un modelo físico empleando imágenes. http://newton.azc.uam.mx/mcc/01_esp/11_tesis/tesis/Proyectos_investigacion_computacion_2/I nforme%20Proyecto%20v7.pdf [2] Moreira Quiroz, José; Valencia Delgado, Vladimir; Chávez B urbano, Patricia. Implementación de un algoritmo para la detección y conteo de células en imágenes microscópicas. http://www.dspace.espol.edu.ec/bitstream/123456789/8375/1/Implementaci%C3%B3n%20de%2 0un%20algoritmo%20para%20la%20detecci%C3%B3n%20y%20conteo%20de%20c%C3%A9lulas% 20en%20im%C3%A1genes%20microsc%C3%B3picas.pdf