Calcular una homografía basada en líneas detectadas


12

Sé que puede calcular las homografías de la imagen al plano de la cámara utilizando puntos de correspondencia entre un "modelo perfecto" y los puntos de la imagen.

Lo estoy haciendo para un campo / campo de fútbol, ​​y he usado la detección de bordes para encontrar las líneas blancas en el campo.

Pero la cámara no (siempre) cubre todo el campo, por lo que no puedo ver todas las esquinas ... y solo las esquinas son puntos 100% conocidos en el modelo (no hay otros puntos distinguidos).

Entonces, el problema es que, a menos que la línea se cruce con otra línea y forme una esquina, solo conozco los puntos de imagen de la línea, no sus correspondientes coordenadas "perfecto / mundo real" en el modelo.

¿Hay alguna forma en que pueda usar las líneas detectadas para calcular una homografía, o incluso solo un conjunto de homografías candidatas , incluso si las líneas detectadas no se cruzan entre sí y crean una esquina?

Imagen de ejemplo, que muestra el campo, nuestro campo de visión y los puntos del campo donde puedo conocer las coordenadas correspondientes del mundo real / modelo (círculos verdes), y un ejemplo de 2 líneas que podrían ser completamente inútiles desde nuestro campo de visión , No tengo ni idea exactamente en qué punto comienzan o se detienen en el mundo real / modelo correspondiente de la cancha:

ingrese la descripción de la imagen aquí Las líneas rojas son ejemplos de líneas que me gustaría usar, pero no conozco sus coordenadas del mundo real, y es difícil estimarlas porque dependiendo de la pose de la cámara, los puntos correspondientes podrían estar "en cualquier lugar".


2
¿Tienes algunas imágenes de ejemplo? ¿O al menos un bosquejo de posibles casos para la detección de líneas? Creo que la respuesta corta a su pregunta es "sí, puede", pero más detalles de usted ayudarían a dar una respuesta más detallada :)
penelope

2
¿Puedes proporcionar una imagen de ejemplo? ¿Estás diciendo que los segmentos de línea detectados no se cruzan o has intentado extender los segmentos detectados a líneas y luego intentaste encontrar intersecciones?
ppalasek

3
Agregué una imagen de ejemplo a la pregunta
Henrik Kjus Alstad, el

1
Alguna vez resolviste esto ? También estoy interesado en los resultados.

Respuestas:


3

Explicaré dos enfoques para esto:

1) Un enfoque requeriría un algoritmo de coincidencia de línea. Después de hacer coincidir las líneas, simplemente puede usar los puntos finales de las líneas para calcular la homografía. Para lograr eso, los descriptores basados ​​en EDLine o LSD se han propuesto recientemente en OpenCV. Además, también se implementan el hash y la coincidencia rápida de ellos. Mira los videos aquí:

http://www.youtube.com/watch?v=MqMjvSkM39k

http://www.youtube.com/watch?v=naSWTlbg3To

El reciente repositorio de opencv_contrib contiene el código fuente de estos métodos.

En el caso de que los puntos finales de la línea sean ruidosos, puede utilizar directamente las líneas para calcular las homografías. Dichos documentos luego leerían:

Informe interno: 2005-V04 Homografías computacionales de tres líneas o puntos en un par de imágenes G. Lopez-Nicolas, JJ Guerrero, OA Pellejero, C. Sagues

Informe interno: 2003-V01 Coincidencia de línea robusta y estimación de homografías simultáneamente G. Lopez-Nicolas

Emparejamiento probabilístico de líneas para su homografía Taemin Kim, Jihwan Woo y In So Kweon

2) Aquí hay un método específico para los campos:

" Uso de las características de línea y elipse para la rectificación de la transmisión de video de hockey ", Gupta, Ankur, James J. Little y Robert J. Woodham Computer and Robot Vision (CRV), 2011 Canadian Conference on. IEEE, 2011.

y

" Combinando correspondencias de línea y punto para la estimación de la homografía ", Dubrofsky, Elan y Robert J. Woodham . Simposio internacional sobre informática visual. Springer Berlin Heidelberg, 2008.

La idea es la siguiente: cualquier línea, parametrizada por sus coeficientes asigna a en la otra imagen usando:li=(u,v,1)Tli=(x,y,1)T

li=HTli

De esta forma, la ecuación se puede conectar directamente al método DLT:

Ai=[u0uxv0vx10x0uuy0vvy01y]

La única diferencia es la normalización, que encontrará en las referencias anteriores.

Adición de elipses: cualquier punto encuentra en la sección cónica si . Esto da lugar a la relación de transformación:xCxTCx=0

C=HTCH1

Las referencias anteriores también explican cómo insertar esta restricción en el algoritmo DLT.

Usando elipses y líneas, es posible derivar una relación proyectiva robusta.


2

Si las líneas no son paralelas, puede calcular el punto de su intersección y usarlo como punto de referencia. En su pintura, también puede usar los puntos morados:

ingrese la descripción de la imagen aquí

Por cierto, la intersección de las líneas no necesita estar en la imagen. Mientras las líneas sean paralelas

Si las líneas son paralelas, puede usarlas para obtener restricciones adicionales. Por ejemplo, si tiene N <4 puntos y K líneas, puede estimar la transformación

Recordemos que la ecuación de transformación proyectiva es:

x=(a11x+a12y+a13)(a31x+a32y+1)y=(a21x+a22y+a23)(a31x+a32y+1)

Su objetivo es encontrar los coeficientesa11,a12,a13,a21,a22,a23,a31,a32

Por lo tanto, si hay una línea que se asigna a , entonces:ax+by+c=0Ax+By+C

Ax+By+C=0A(a21x+a22y+a23)+B(a21x+a22y+a23)+C(a31x+a32y+1)=0

Se puede reescribir como:

(AxAyABxByBCxCy)(a11a12a13a21a22a23a31a32)=C

( x , y ) a x + b y + c = 0A,B,C son valores conocidos, porque calculaste las ecuaciones de las líneas. Puede ingresar cualquier punto para el cual , y obtener una restricción adicional. Combínelos con las restricciones que obtiene de los puntos, y podría obtener información adicional. Tenga en cuenta que no obtendrá más información de más de dos puntos, ya que cualquier tercer punto agregará líneas lineales dependientes a la matriz de restricciones.(x,y)ax+by+c=0

Referencias adicionales " Estimación de la homografía por Elan Dubrovsky " - Ver parte 2.3.1, estimación de la homografía a partir de líneas.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.