Para ésta tarea se debieron programar las rutinas para detectar esquinas en imagenes. Para ello se utilizó una combinación entre filtro mediano y filtro en escala de grises.
Teoría
- Aplicar filtro mediano a la imágen
- Aplicar filtro escala de grises a la imágen
- Por cada pixel, restar el valor del filtro mediano al filtro en escala de grises, dicha diferencia al final resaltará las esquinas a color blanco.
- Identificar las coordenadas donde se encuentra cada esquina y asignarlas al objeto al que pertenecen. Se puede utilizar detección de bordes y BFS para dicho objetivo.
- Se hace un corte pequeño en los bordes detectados (borde discontinuo), al utilizar BFS nuevamente el corte obligará al BFS a recorrer los pixeles en una sola dirección, lo que permitirá darle un orden al las esquinas detectadas.
- Con las esquinas asignadas a cada objeto y ordenasas, conectarlas con una línea para obtener el wireframe de cada objeto o polígono detectado.
- Dibujar las lineas, y si se requiere, etiquetar las esquinas y objetos.
Las imagen utilizada para las pruebas fue la siguiente:
Imágen original
Se eligió la imágen porque cuenta con varias figuras para hacer diferentes pruebas, es una imágen con poco ruido en realidad y por ahora es necesario que las figuras se encuentren separadas y rellenas de un color solido para poder resaltar sus bordes correctamente.
Objetos completamente sólidos
Resultados
Para los resultados primero se sacan los bordes
Bordes detectados
Después realizamos el corte en los bordes, no se alcanza a ver muy bien, pero haciendo zoom en la imágen se alcanza a ver muy bien
Corte en la primer esquina detectada
Lo demás ya es automático, recorriendo los bordes podemos fácilmente ordenar las esquinas, ya solo es de etiquetarlas y dibujar el wireframe, es éste caso es de color negro y muy delgado pero ahí esta. En la terminal se ve un paso intermedio, donde se asignan las esquinas a cada objeto, por ello hay 4 listas.
En la imágen, el wireframe con las esquinas y objetos etiquetados.
En la terminal, las esquinas asignadas a cada objeto.
Código
En el repositorio encuentran la implementación completa en código, la carpeta marcada como Tarea 9.
Para la detección de esquinas
Para dibujar en la GUI
Referencias:
- Elisa Schaeffer, 2013, Detección de polígonos y esquinas, PDF Slides, extraído de: http://elisa.dyndns-web.com/~elisa/teaching/comp/vision/poligonos.pdf
Bien; 10 pts.
ResponderEliminar