martes, 16 de abril de 2013

Tarea 5: Visión Computacional

Esta entrada es para la detección de elipses:



Primero que nada lo que realizamos es identificar los pixeles de borde de un objeto, para poder realizar lo anterior lo realice con el bfs que es una función que ya tenia para poder trabajar con lo que son las formas y solo traerme los pixeles de los bordes en cada una de ellas, el código es el siguiente:


Los puntos seleccionados son al azar ya que se selecciona un punto y despues otro de una misma figura, y después de hacer esto es calcular sus pendientes lo cual lo realizo con la formula m=Gy/Gy la pendiente se reliza para cada punto, después de esto checamos si las pendientes son iguales si lo son esos puntos son descartados.

Ya cuando tenemos las pendientes de los dos puntos tenemos que checar en donde es que se intersectan sus pendientes, como saben para poder hacer lo anterior trabajaremos con las ecuaciones de las rectas de cada uno de los puntos que son:
punto 1:   y1=m1x1+b1
punto 2:  y2=m2x2+b2

Si queremos que se intersecten en este caso la (x,y) deben de ser la misma en las dos ecuaciones, pero primero debemos obtener el valor de b1 y de b2.

Para obtener el valor de b1 y b2 utilizamos la misma formula anterior solo que ahora (x,y) tienen el valor de las coordenadas de nuestro pixel donde nos encontramos. Despejamos la ecuacion anterior y otenemos la ecuacion para encontrar b.
b1=y1-m1x1

Ahora ya encontrada la b seguimos con el paso de encontrar (x,y) el punto donde se intersectan, para encontrar primero la x igualamos las ecuaciones de punto1 y punto 2 anteriores:

punto 1:   y1=m1x1+b1
punto 2:  y2=m2x2+b2


m1x+b1 =m2x+b2



De lo anterior despejamos x y nos queda de la siguiente manera:
x=(b2-b1)/(m1-m2)

ya sacando lo que es x vamos a obtener el valor de y esto lo encontramos facilmente sustituyendo la x en una de las ecuaciones anteriores:

y1=m1x1+b1
y=m1*x+b1
y=m1((b2-b1)/(m1-m2))+b1

Ahora ya tenemos donde se intersectan lo que son sus tangentes, nos toca sacar su punto medio y para sacar e punto medio entre dos puntos utilizamos la siguiente formula:

Xm = (x1 + x2)/2
Ym = (y1 + y2)/2

Punto medio:
P = (Xm, Ym)

Después de sacar el punto medio necesitamos obtener la linea que pasa por la intersección y el punto medio.


Obteniendola lo que nos importa es la linea marcada de rosa ya que estos cuentan como centros potenciales para un elipse.


Los pasos anteriores se repiten para cada par de puntos seleccionados y asi se tiene que ir votando cierto pixel para poder seleccionar el que tuvo mas votos y en este caso seria nuestro centro del elipse, de ahi solo se pasaria a dibujarlo.

Hasta el momento lo que tengo hasta el punto de obtener el punto medio entre los dos pixeles sacar la recta para poder checar los posibles centros potenciales.


El código es:





1 comentario: