Para esta primera parte lo que realice fue primero la imagen original la pase a escala de grises, después de eso, hice una copia de esa imagen y le aplique el filtro de la mediana, en seguida reste las dos imágenes la del filtro de la mediana menos la gris original lo que da como resultado bordes marcados de color gris obscuro y las esquinas de un tono un poco más claras, por lo que apliqué después el umbral para obtener solo las esquinas. Aquí están los resultados:
Prueba #1
Imagen original |
Imagen filtro mediana |
Resultado de la diferencia |
Binarizada |
Prueba #2
Imagen original |
Imagen con filtro mediana |
Resultado de la diferencia |
Binarizada |
Parte avanzada:
Teniendo las esquinas, podemos sacar un “wire-frame” al borde.
Uniendo las esquinas con segmentos de líneas rectas (u otras curvas estimadas desde las partes de borde cubiertas).
Recorriéndolos en un orden que sigue el borde (que habría que detectarse aparte con las técnicas ya conocidas) para saber en qué orden conectar las esquinas.
Lo que se hace es primeramente hacer BFS en las partes que son detectadas como esquinas para tener listas que contienen los pixeles de cada esquina, después se hace de la imagen original también un recorrido BFS para poder saber que esquina corresponde a cada imagen.
El BFS tiene que saber regresar todos los puntos del borde pero no como lo hacemos siempre, necesitamos que lo recorra en una sola dirección es por eso que se pone como una especie de tope a cada figura al inicio del recorrido BFS y así aseguramos que siempre vaya en una dirección y no se confundan las esquinas.
Yo dibuje un circulo de 6 de diámetro y con esto aseguro tapar una parte del borde y así el recorrido se va por una sola dirección, se puede dibujar una línea también o lo que sea.
Con el tope se ve así:
Corte del borde con una línea negra delgada |
Corte del borde con un circulo de 6 de diámetro. |
BFS modificado:
Lo que se hace ahora es recorrer todos los puntos del borde en el orden ya dicho, y se busca alguna coincidencia con los puntos que ya teníamos guardados previamente de las esquinas, y cuando coincidan se guarda el punto en una lista a la que llamé vértices, y cuando termina el recorrido de cada figura se empiezan a dibujar las líneas:
Resultados:
Esquinas conectadas |
Esquinas conectadas |
Referencias
Repositorio
Perfecto; 10 pts.
ResponderEliminar