lunes, 18 de febrero de 2013

Tarea2: Detección de formas

En está entrada tenemos que detectar formas en una imagen a partir de la tarea 1, lo que debemos de tener primero para comenzar es aplicarle convolucion a la imagen y después de eso normalizarla y binarizarla.

Imagen a utiliar:


Imagen aplicando convolución:


Imagen normalizada:


Imagen binarizada:



Ahora que tenemos lo anterior basandome en el código que realizo la Dra. Elisa del bfs detecte las formas y las pinte de un color cada una. El bfs lo que realiza es buscar los vecinos y agregarlos a una cola (los vecinos tienen q ser del mismo color que el pixel original), cada vez q cheka un pixel sus vecinos de ese pixel se agregan a la cola.


Cuando la imagen esta completamente pintada sacando su porcentaje de cada uno de las formas pinte la más grande de color gris:




El código es el siguiente del bfs y para pintar las formas:



Código para pintar de gris la forma con más porcentaje:


Después coloco los centros de masa de cada una de las formas:

Para colocar estos centros me base en el método de las áreas:



A cada pixel lo tome como una área y su ordenada y su abscisa como x y como y de la ecuación anterior.

Para poder realizar esto cada vez que recorria la imagen pintando pixel por pixel del mismo color agregue su ordenada y su abscisa a dos listas y para sacar su centro de masa:

en x= sum(abscisa)/float(num_pixels)
en y=sum(ordenada)/float(num_pixels)

El área de cada pixel es 1.



Les agrego la étiqueta a cada uno de ellos

Para añadir la étiqueta solo utilice el label de TKinter y lo acomode alado del centro de masa de cada forma.



Código:




Y al final en la términal imprime los id y el porcentaje de cada forma:


Código:

El código esta completo en mi repositorio: Link

 Más imagenes




1 comentario: