lunes, 15 de abril de 2013

Visión Computaciónal ellipse

9Bueno en esta ocasión les hablaremos  de una forma para detectar una ellipse y tratar de identificarla en una imagen, bueno empezemos.


Lo primero que tenemos que realziar es detectar los bordes de la imagen, en anteriores post hemos hablado de como se realiza esto.

Ellipse normal :

Detectando sus bordes y binarizandola queda de la siguiente manera:


Lo primero que se tiene que hacer es leer todo los bordes de la figura, posterioremente se creo un filtro de los mismos puntos  de los bordes, con respecto a los diferentes gradientes para que no exista pixeles sin ninguna dirección o ángulo.

Aquí el código1:


Ya teniendo este filtro se procede hacer las iteraciones para sacar el centro del ellipse, entre mas iterraciones es mas seguro encontrar las ellipeses.

Al iniciar  se van seleccionando dos pares de pixeles, estos pixeles se eligen con pendientes diferentes a ceros, ademas que se busca que las pendientes una sea positiva y otra negativa para el sentido de la orientación y con un rango de valores especificos.


Aquí el código 2:


La pendiente como se puede observar se saca usando los gradientes que significan el cambio de movimiento de los pixeles, y la pendiente es su inclinacion

 pendiente = gradiente y / gradiente x

Ya teniendo las pendientes se pasan a sacar la ecuacion de la recta para sacar nuestra tangente para ambos casos, para esto se realiza lo siguiente:

Primero se sabe que la ecuacion de la recta tiene esta forma : y = ax + b, donde a es la pendiente y b e sla intersseccion en el eje y. Bueno para sacar el valor de la interseccion se puede hacer lo siguiente:

P = y2 - y1 / x2 - x1, 

Donde usaremos siempre en "x1" e "y1" el valor de los pixeles donde se usaron sus gradientes para sacar la pendiente.
Para hacer la recta solo es necesario ir sustituyendo los valores, para ir sacando nuevos valores de "x2" e "y2" y realizar la línea. Teniendo cada uno de los puntos una misma pendiente.

Aquí el código 3

Aquí el código 3

Y aquí una imagen mostrando lo que paso en la imagen:

-

-

Posteriormente se saca una recta con respecto a las dos tangentes generadas en la intersección donde estos se juntan y se toma una votación apartir de  la unión de los puntos que se usaron para la generación de la tangente.

-

-
Si nos fijamos bien los mayores puntos se enceuntran en el medio, es por eso que se utiliza la votación.

Aquí el código 4

Aquí el código 4


Y se repite nuevemente el proceso guardando todos los votos en un diccionario y al final elegir el punto con mas votos y ese punto es nuestro centro de la ellipse. Para sacar lso focos solo es necesario recorrer del punto a la izquierda y a la derecha para medir la longuitud y sacar los focos.

Aquí el código de esto

Aquí el código de esto


Resultado final:

Varias imagenes de diferentes pruebas:


Donde el centro es el cuadro verde y los rojos sus correspondientes focos

Original


Final



Gracias eso es todo


Aqui unas paginas sobre rectas y gradientes












1 comentario: