jueves, 21 de febrero de 2013

Actividad 3 Lab : Convex hull

Para esta semana la tarea fue procesar una imagen para obtener el convex hull o envoltura convexa que es la unión de los puntos que se encuentran en el borde o silueta de una figura y que al unirse no cortan la imagen. Se explica mejor en la siguiente imagen:



Para lograr esta actividad, hayvarias técnicas que se pueden seguir como: Graham Scan, Chan´s Algorithm, Jarvis March, Divide and Conquer. Yo utilice Jarvis March.

Lo que hace este algoritmo es tomar un punto e ir buscando el siguiente punto de manera que el nuevo sea el que tenga el mayor o menor(dependiendo de que variación se elija) ángulo formado con respecto al punto anterior.
Ya al momento de realizar esto sobre la imagen, dado que ya tenemos la matriz de los valores de los píxeles es fácil solo checar cuales puntos están más un lado que otros.

Para el código combine el código de la tarea de la clase para detección de formas(bfs) con el algoritmo de jarvis(tome como referencia el algoritmo que viene en wikipedia para ordenar las partes y el código de un tipo, que dejo el link al final).

El código aquí:



El resultado final fue este:



No trabaja correctamente ya que falta que cierre una línea, creo es porque no estoy tomando bien los recorridos de los puntos dentro del convex hull para dibujar las líneas.

Otros intentos fallidos:




El link de mi git: https://github.com/alexgzz/Vision-Computacional
_________________________________________________________________________________
Enlaces:
http://en.wikipedia.org/wiki/Gift_wrapping_algorithm
http://www.exa.unicen.edu.ar/catedras/aydalgo2/docs/Teorica-5.pdf
http://www.pythonware.com/library/pil/handbook/

3 comentarios: