Detección de formas
Para esta tarea se debe realizar un programa el cual pueda detectar las formas en una imagen cualquiera, las cuales se deben de pintar de diferentes colores tomado en cuenta que la mayor siempre se pintara de color gris, y se colocara un centro de masa en cada figura detectada en la imagen y será etiquetada.
Para poder realizar esta acción es necesario tener ya realizada la parte de la detección de bordes por medio de la convolución, ya realizado con anterioridad, después de realizar la detección de bordes en necesario binarizar la imagen, también realizado anteriormente.
Para esta actividad usaremos el Algoritmo BFS (Breadth First Search) el cual es un algoritmo que se utiliza para encontrar diversas formas, partiendo de la raíz de un nodo y recorriendo todos los vértices. Este algoritmo funciona con una cola esto permite que nunca pase por el mismo nodo dos veces.
Imágenes originales
A las cuales se les aplico el método de convolución para detectar los bordes de las imágenes
Para esto es necesario primero tener un coloreo de las figuras, para esto se saca un porcentaje dependiendo la cantidad de píxeles que cubre la figura en la imagen con respecto al total habidos en dicha imagen, ya que se tenga la figura de mayor porcentaje se pintara con un fondo gris mientras que las otras figuras de menor porcentaje se pintaran de diferentes colores.
Después de colorear tenemos que dibujar sus centros de masa la cual obtenemos sumando las coordenadas "x" y "y" para después sacar su promedio, a cada centro de masa se le agrega una etiqueta identificandolo de los demás centros.
Teniendo la primer imagen 8 centros de masa
Teniendo la segunda imagen 13 centros de masa
Código de detección de formas
Mi repositorio
El código ocupa comentarios y un formateo más legible. En esta ocasión no quito puntos por ello, pero tómalo en cuenta en el futuro, por favor. 5 pts.
ResponderEliminar