Esta semana para la clase se encargo detectar agujeros en imágenes a partir de sus histogramas laterales de intensidades de pixeles. Para comprender más acerca de como funcionan los histogramas, ver el post de laboratorio.
Lo solicitado fue:
- Detectar todos los agujeros de una imagen.
- Los agujeros se marcan con bordes morado oscuro y relleno de morado claro.
- Tonos ligeramente diferentes para cada agujero.
- Se debe marcar el centro de cada agujero con un punto amarillo.
- En el centro de cada agujero se agrega una etiqueta con el ID del agujero.
- El programa al final imprime un listado que indica para cada ID, el tamaño del agujero en porcentaje al tamaño de la imagen.
Para realizar lo anterior, se hace uso del script de laboratorio que localiza un área donde se encuentra un agujero. Al encontrar esta área, se aplica un BFS a los pixeles que corresponden al agujero, para recorrer y almacenar todas las posiciones de los pixeles en una lista. Con dicha lista, podemos calcular el centroide y además conocer el área del agujero.
Teniendo el centro entonces, utilizamos el tamaño asumido (medido previamente) de los agujeros para trazar un círculo alrededor del centro, pintando los bordes del círculo de color morado oscuro y el interior de morado claro. Para esto se genera un color aleatorio, teniendo en cuenta que el morado esta hecho de combinaciones principalmente de rojo y azul, y un porcentaje de verde. Entre más altos los valores de rojo y azul más claro, y entre más bajos más oscuro.
(El agujero grande fue detectado como pequeño debido a que se buscaban agujeros del tamaño de pixeles de los pequeños.)
....
Código:
Bien; 5 pts.
ResponderEliminar