lunes, 18 de febrero de 2013

Visión Computacional Clase 3

Buenas compañeros y gente que nos visita, en esta ocasión les traemos una manera de detectar objetos y además colorear cada uno de ellos.

Esto se realiza por medio de un algoritmo de búsqueda.

EL proceso es el siguiente:


  • Se agrega un primer elemento a la cola
  • Posteriormente se checa con sus vecinos cual de ellos es apto para agregarlo a la cola
  • Se agregan todos los elementos aptos y se cambian de color el elemento actual y al finalizar se elimina este elemento
  • Se marca como visitado el elemento borrado
  • Posteriormente si la cola llega en un tamaño de cero, esto nos indica que el objeto a sido pintado y verifica que elementos no han sido visitados
  • Se agrega el nuevo elemento y se repite el proceso
  • El algoritmo termina cuando todos los pixeles han sido recorrido

Para poder realizar este algoritmo es necesario que los bordes de la imagen estén bien cerrados, para esto se utilizo normalización y binarización para limpiar la imagen y hacer un poco más gruesos los bordes.

Aquí primero la imagen original:



Aquí la imagen con bordes:



Aquí con normalización para cerrar las líneas y haceras más gruesas:



Pintamos la imagen:




Para el punto del medio se realizó el siguiente método:
Primero se guardo en una lista los diferentes x e y para cada uno de los objetos. Posteriormente  se verificó el punto del medio sacando el promedio entre la coordenada de x mayor y x menor para sacar la coordenada x final. De la misma manera con y. Estos valores se guardarón en un arreglo para pintar los diferentes círculos en grises.


Aquí el código completo del programa:


1 comentario:

  1. Los discos de centros de masa son enormes :P Intenta cuidar la ortografía en los comentarios; en el gist, pon solamente el código relevante a la cosa nueva (por ejemplo aquí las normalizaciones y binarizaciones no son relevantes para ver) y deja el código completo en el Git, con liga en el blog. 5 pts.

    ResponderEliminar