jueves, 18 de abril de 2013

Laboratorio 6: Relleno de Elipses

Para la detección de elipses, en la tarea de laboratorio se pidió realizar lo siguiente:
  • Identificar cada círculo o elipse individual
    • Rellenarlo de un color aleatorio
    • Marcar su centro con un punto e ID con etiqueta
  • Imprimir un listado de las áreas de los círculos o elipses
    • En porcentaje de la imagen completa.
Para hacerlo, utilicé el mismo código que la entrada de la clase, pero limitandolo a la localización del centro del elipse. Conociendo el centro, se puede aplicar un recorrido BFS desde ese punto a sus vecinos de color similar, hasta pintar todo el interior del elipse o círculo en cuestión.

Con el mismo recorrido además contamos cuantos pixeles tiene en su interior el elipse o círculo. Así obtenemos un área aproximada, la cual estimamos su porcentaje en cuanto al total de la imagen, el total siendo el número de pixeles totales de la imagen (ancho x largo).

Código

El código es básicamente el mismo que la entrada de clase, modificado para al localizar un centro y comprobar que es una elipse/círculo aplicar bfs a los pixeles del mismo color que el centro.



Ejemplos:










1 comentario:

  1. Estoy segura que esto no es una manera muy óptima de validar si algo es un elipse:

    for point in coords:
    for p in elipse:
    if p == point:
    #print p, point
    c += 1
    total = len(elipse)
    porcentaje = (c / float(total) ) * 100.0
    #print porcentaje
    if porcentaje < 80.0:
    return True
    else:
    return False

    Además hubiera estado padre determinar cuáles sí son círculos.

    9 pts.

    ResponderEliminar