domingo, 17 de febrero de 2013

Tarea 2: Identificación de figuras

Para la tarea dos de la materia de Visión Computacional, se nos pide hacer un programa en donde identifiquemos los objetos, al igual que poner etiquetas y detectar el fondo de alguna imagen, por lo que para realizar este programa, utilizo la manera de detectar los bordes como lo hicimos en el laboratorio anterior en donde obtengo la diferencia del promedio y sacar el cambio para poder después binarizar y obtener una imagen con bordes definidos.



Para esta parte de la tarea es agregar primero que nada que los contornos sean definidos y continuos, por lo que estuve trabajando para mejorar mi código anterior y obtener unos mejores contornos, hice varias veces el promedio y la binarización para hacerlos más anchos y así no tener problemas de continuidad.


Ahora después de tener los contornos marcados y continuos, realicé una subrutina que hace una búsqueda en anchura para ir determinando los pixeles vecinos y saber si pertenecen a una figura o no, al momento de ir rellenando las figuras, vamos descartando aquellas que se encuentren con pixeles negros, siendo solamente objetos que van a procesarse para obtener figuras completas y de ahí sacar sus datos importantes.


Luego de obtener las diferentes figuras, calculamos su centro de masa, esto simplemente checando sus coordenadas para después dividirlos entre el total y colocándolos dentro de la ventana.

También detecto el fondo de manera que cambie de color gris, este simplemente calculo el porcentaje de color de cada figura y obtengo el más grande asegurando que es el fondo, para luego proceder en cambiar su color a gris.


Para obtener bordes más definidos, vario los valores de umbral para la binarización, por lo que obtenemos imágenes con bordes resultados y sin tanto ruido, como podemos ver en esta imagen la cual es la misma que la anterior pero con valores umbral diferentes.


Ahora muestro capturas de pantalla de algunas imágenes que verifique.






A continuación muestro el código, en donde las funciones relevantes son BFS, aplicar_BFS, pintar_fondo.


Esta sería mi tarea 2 de visión computacional, si tienen alguna duda, favor de hacérmelo saber.

1 comentario: