jueves, 2 de mayo de 2013

[Lab VC] Actividad 7: Detección de polígonos


Para ésta tarea se debieron programar las rutinas para detectar polígonos con base en las líneas rectas detectadas en la imagen. Para ello se utilizó la Transformada de Hough.


Teoría

Primeramente, los pasos necesarios para la detección son:
  • Trabajar con la imagen en escala de grises.
  • Detectar los bordes, altamente recomendable que los bordes sean continuos.
  • Separar los polígonos por su borde, es decir, agrupar los pixeles contiguos utilizando alguna técnica como BFS.
  • A cada lista de borders, aplicar la convolucion discreta, en este caso se elegieron 2 máscaras de Sobel
  • A partir de las matrices de gradientes obtenidas, calcular la pendiente local para cada pixel.
  • Agrupar los pixeles con la misma pendiente. Cada grupo representa un posible segmento, eliminar aquellos grupos que generan ruido, por ejemplo, si tienen pocos pixeles.
  • Ordenar los pixeles de cada segmento para obtener los puntos teóricos inicial y final.

Práctica

Las imagen utilizada para las pruebas fueron las siguientes:

Original
Binarizada
Contornos

La prueba realizada fue muy simple, detección de bordes e identificación del posible segmento, sin embargo podemos notar que se obtenía mucho ruido.
Se cubren los requisitos de detectar bordes y agrupar los objetos por su borde, aplicar la convolución discreta para obtener las gradientes y calcular las pendientes, y de agrupar los segmentos por su pendiente.


Resultados




Sin embargo, aquí aplico a las pendientes la función floor al valor de la pendiente lo que parece limpiar un poco los resultados.



Cabe mencionar que las lineas dibujadas corresponden a los segmentos detectados, se puede ver, por ejemplo, en el pentágono algunos segmentos detectados cubren en realidad 2 lados de la figura y en el caso del hexágono hasta 3 lados.

Esta de mas decir que los resultados no fueron los esperados.


Código


En el repositorio encuentran la implementación completa en código, la carpeta marcada como Tarea 8.

Referencias:

1 comentario:

  1. Pues, tiene sus detalles en agrupar bien las direcciones de gradiente. 6 pts.

    ResponderEliminar