jueves, 2 de mayo de 2013

Deteccion de poligonos

Para esta entrada se nos encargo detectar polígonos en una imagen. Nos basamos en el algoritmo de las diapositivas de la Dra.

'''
Dado los segmentos de línea S que pertenecen a un mismo objeto

• Segmento por segmento, haz lo siguiente
• Calcula el largo del segmento L (i.e., distancia euclideana de sus
puntos finales).
• Calcula su pendiente (desde los puntos finales)
• Calcula el punto intermedio del segmento (xm, ym).
• Calcula el vector de traslado perpendicular al segmento S para
acercar el punto intermedio una distancia L / 2 hacia en interior el
objeto.
• Aplica este mismo vector de traslado a todos los pixeles de S
para obtener los votos.
• El pico es el centro del polígono y la manera en que se
distribuyen revela información sobre el polígono.
'''
Texto tomado de aqui

De esos pasos lo mas difícil es detectar los segmentos de cada objeto detectado, para esto lo primero que hacemos es calcular la tangente de los pixeles y si "casi" se parecen, significa que pertenecen a la misma linea.


'''
Calcular el pendiente (tangente) local para cada pixel y agrupar
pixeles conectados con orientaciones similares para identificar todos
los segmentos de línea rectos presentes en la imagen.
• Determinar el pendiente representativo del segmento.
• Almacenar el segmento como lista de pixeles y además puntos
finales teóricos ((x1, y1), (x2, y2)) donde las coordenadas son de
punto flotante y producen el pendiente correcto.
• Identificar cuáles segmentos coinciden con los bordes de un
sólo objeto (ya saben detectar objetos) y luego se les procesa
con un GHT como un conjunto, objeto por objeto.
• Contando cuántos segmentos tiene el objeto, ya lo
podemos clasificar como polígono, dado que los
segmentos cubren satisfactoriamente todo el borde.
'''
Texto tomado de aqui


Agrupamos los pixeles que forman la linea, buscamos cual de ellos son los menores y los menores en los ejes "x" y "y" respectivamente con esos puntos tenemos el punto medio de una linea de la figura, seguimos haciendo lo mismo hasta que hayamos recorrido todos los pixeles del objeto.


CODIGO 



RESULTADOS

Se agrega un etiqueta al objeto tipo poligono detectado.

REFERENCIAS

http://elisa.dyndns-web.com/~elisa/teaching/comp/vision/poligonos.pdf