Calcul d'une homographie basée sur des lignes détectées


12

Je sais que vous pouvez calculer les homographies de l'image au plan de la caméra en utilisant des points de correspondance entre un "modèle parfait" et les points d'image.

Je le fais pour un terrain / terrain de football, et j'ai utilisé la détection des bords pour trouver les lignes blanches dans le terrain.

Mais la caméra ne couvre pas (toujours) tout le terrain, donc je ne peux pas voir tous les coins ... et moi seuls les coins sont des points 100% connus dans le modèle (pas d'autres points distingués).

Donc, le problème est qu'à moins que la ligne ne croise une autre ligne et forme un coin, je ne connais que les points d'image de la ligne, pas ses coordonnées "parfaites / réelles" correspondantes dans le modèle.

Existe-t-il un moyen d' utiliser les lignes détectées pour calculer une homographie, ou même simplement un ensemble d'homographies candidates , même si les lignes détectées ne se croisent pas et créent un coin?

Exemple d'image, montrant le terrain, notre champ de vision et les points du terrain où je peux connaître les coordonnées réelles du monde / modèle (cercles verts), et un exemple de 2 lignes qui pourraient être complètement inutiles car dans notre champ de vision , Je n'ai aucune idée exactement à quel point ils commencent ou s'arrêtent dans le monde réel / modèle correspondant du terrain:

entrez la description de l'image ici Les lignes rouges sont des exemples de lignes que j'aimerais utiliser, mais je ne connais pas leurs coordonnées réelles, et c'est un peu difficile à estimer car selon la pose de la caméra, les points correspondants peuvent être "n'importe où".


2
Avez-vous des exemples d'images? Ou au moins une esquisse de cas possibles pour la détection de ligne? Je pense que la réponse courte à votre question est "oui, vous pouvez", mais plus de détails de votre part aideraient à donner une réponse plus détaillée :)
penelope

2
Pouvez-vous fournir un exemple d'image? Êtes-vous en train de dire que les segments de ligne détectés ne se croisent pas ou avez-vous essayé d'étendre les segments détectés aux lignes, puis de rechercher des intersections?
ppalasek

3
J'ai ajouté un exemple d'image à la question
Henrik Kjus Alstad

1
Avez-vous déjà compris cela? Je suis également intéressé par les résultats.

Réponses:


3

J'expliquerai deux approches pour cela:

1) Une approche nécessiterait un algorithme de correspondance de lignes. Après avoir fait correspondre les lignes, vous pouvez simplement utiliser les extrémités des lignes afin de calculer l'homographie. Pour y parvenir, des descripteurs basés sur EDLine ou LSD ont récemment été proposés dans OpenCV. De plus, leur hachage et leur correspondance rapide sont également implémentés. Découvrez les vidéos ici:

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

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

Le récent référentiel opencv_contrib contient le code source de ces méthodes.

Dans le cas où les points de fin de ligne sont bruyants, vous pouvez alors utiliser directement les lignes pour calculer les homographies. Ces documents se liraient alors:

Rapport interne: 2005-V04 Calcul d'homographies à partir de trois lignes ou points dans une paire d'images G. Lopez-Nicolas, JJ Guerrero, OA Pellejero, C. Sagues

Rapport interne: 2003-V01 Correspondance linéaire robuste et estimation des homographies simultanément G. Lopez-Nicolas

Correspondance probabiliste des lignes pour leur homographie Taemin Kim, Jihwan Woo et In So Kweon

2) Il existe une méthode spécifique aux champs indiqués ici:

" Utilisation des fonctions de ligne et d'ellipse pour la rectification d'une vidéo de hockey diffusée .", Gupta, Ankur, James J. Little et Robert J. Woodham Computer and Robot Vision (CRV), Conférence canadienne 2011 sur. IEEE, 2011.

et

" Combinaison de correspondances de lignes et de points pour l'estimation d'homographie .", Dubrofsky, Elan et Robert J. Woodham . Symposium international sur l'informatique visuelle. Springer Berlin Heidelberg, 2008.

li=(u,v,1)Tli=(x,y,1)T

li=HTli

Sous cette forme, l'équation peut être directement connectée à la méthode DLT:

Ai=[u0uxv0vx10x0uuy0vvy01y]

La seule différence est la normalisation, que vous trouverez dans les références ci-dessus.

xCxTCx=0

C=HTCH1

Les références ci-dessus expliquent également comment insérer cette contrainte dans l'algorithme DLT.

En utilisant des ellipses et des lignes, il est possible de dériver une relation projective robuste.


2

Si les lignes ne sont pas parallèles, vous pouvez calculer le point de leur intersection et l'utiliser comme point de référence. Dans votre peinture, vous pouvez également utiliser les points violets:

entrez la description de l'image ici

Soit dit en passant, l'intersection des lignes n'a pas besoin d'être dans l'image. Tant que les lignes sont parallèles

Si les lignes sont parallèles, vous pouvez les utiliser pour obtenir des contraintes supplémentaires. Par exemple, si vous avez N <4 points et K lignes, vous pourrez peut-être estimer la transformation

Rappelons que l'équation de la transformation projective est:

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

a11,a12,a13,a21,a22,a23,a31,a32

ax+by+c=0Ax+By+C

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

Il peut être réécrit comme:

(AxAyABxByBCxCy)(a11a12a13a21a22a23a31a32)=C

A,B,C(x,y)ax+by+c=0

Références supplémentaires " Estimation d'homographie par Elan Dubrovsky " - Voir partie 2.3.1, estimation d'homographie à partir de lignes.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.