Berechnung einer Homographie basierend auf erkannten Linien

12

Ich weiß, dass Sie Homographien von Bild zu Kameraebene mithilfe von Korrespondenzpunkten zwischen einem "perfekten Modell" und den Bildpunkten berechnen können.

Ich mache das für ein Fußballfeld und habe die Kantenerkennung verwendet, um die weißen Linien auf dem Spielfeld zu finden.

Die Kamera deckt jedoch nicht (immer) die gesamte Tonhöhe ab, sodass ich nicht alle Ecken sehen kann ... und nur die Ecken sind zu 100% bekannte Punkte im Modell (keine anderen hervorgehobenen Punkte).

Das Problem ist also, dass ich nur die Bildpunkte der Linie kenne, es sei denn, die Linie schneidet sich mit einer anderen Linie und bildet eine Ecke. Es handelt sich nicht um die entsprechenden "Perfekt / Real-Welt" -Koordinaten im Modell.

Gibt es eine Möglichkeit, mit den erkannten Linien eine Homographie oder auch nur eine Reihe von Kandidatenhomographien zu berechnen , selbst wenn sich die erkannten Linien nicht schneiden und eine Ecke bilden?

Beispielbild, das die Tonhöhe, unser Sichtfeld und die Punkte der Tonhöhe zeigt, an denen ich die entsprechenden Koordinaten der realen Welt / des Modells (grüne Kreise) erkennen kann, sowie ein Beispiel von zwei Linien, die seitdem in unserem Sichtfeld möglicherweise völlig unbrauchbar sind Ich habe keine Ahnung, an welchem ​​Punkt sie in der jeweiligen realen Welt / dem Modell des Spielfelds genau beginnen oder enden:

Bildbeschreibung hier eingeben Die roten Linien sind Beispiele für Linien, die ich verwenden möchte, aber ich kenne ihre realen Koordinaten nicht und es ist schwierig, sie abzuschätzen, da die entsprechenden Punkte je nach Kameraposition "überall" sein können.

Henrik Kjus Alstad
quelle
2
Haben Sie einige Beispielbilder? Oder zumindest eine Skizze möglicher Fälle zur Linienerkennung? Ich denke, die kurze Antwort auf Ihre Frage ist "Ja, Sie können", aber mehr Details von Ihnen würden helfen, detailliertere Antworten zu geben :)
Penelope
2
Können Sie ein Beispielbild zur Verfügung stellen? Wollen Sie damit sagen, dass sich die erkannten Liniensegmente nicht schneiden, oder haben Sie versucht, die erkannten Segmente auf Linien auszudehnen, und dann versucht, Schnittpunkte zu finden?
ppalasek
3
Ich habe der Frage ein Beispielbild hinzugefügt
Henrik Kjus Alstad
1
Hast du das jemals herausgefunden? Ich interessiere mich auch für die Ergebnisse.

Antworten:

3

Ich werde dazu zwei Ansätze erläutern:

1) Ein Ansatz würde einen Zeilenanpassungsalgorithmus erfordern. Nachdem Sie die Linien abgeglichen haben, können Sie einfach die Endpunkte der Linien verwenden, um die Homographie zu berechnen. Um dies zu erreichen, wurden kürzlich in OpenCV EDLine- oder LSD-basierte Deskriptoren vorgeschlagen. Auch Hashing und schnelles Matching sind implementiert. Schauen Sie sich die Videos hier an:

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

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

Das aktuelle opencv_contrib-Repository enthält den Quellcode für diese Methoden.

In dem Fall, dass die Linienendpunkte verrauscht sind, können Sie die Linien direkt verwenden, um die Homographien zu berechnen. Solche Papiere würden dann lesen:

Interner Bericht: 2005-V04 Berechnen von Homografien aus drei Linien oder Punkten in einem Bildpaar G. Lopez-Nicolas, JJ Guerrero, OA Pellejero, C. Sagues

Interner Bericht: 2003-V01 Robuster Linienabgleich und gleichzeitige Schätzung von Homographien G. Lopez-Nicolas

Probabilistisches Matching von Linien für ihre Homographie Taemin Kim, Jihwan Woo und In So Kweon

2) Es gibt eine Methode, die für die hier angegebenen Felder spezifisch ist:

" Verwenden von Linien- und Ellipsenfunktionen zur Berichtigung von Broadcast-Hockey-Videos .", Gupta, Ankur, James J. Little und Robert J. Woodham, Computer- und Robotervision (CRV), Kanadische Konferenz 2011, Kanada. IEEE, 2011.

und

" Kombinieren von Linien- und Punktkorrespondenzen für die Homografieschätzung ", Dubrofsky, Elan und Robert J. Woodham . Internationales Symposium für Visual Computing. Springer Berlin Heidelberg, 2008.

lich=(u,v,1)Tlich=(x,y,1)T

lich=HTlich

In dieser Form kann die Gleichung direkt in die DLT-Methode eingefügt werden:

EINich=[-u0ux-v0vx-10x0-uuy0-vvy0-1y]

Der einzige Unterschied ist die Normalisierung, die Sie in den obigen Referenzen finden.

xCxTCx=0

C=H-TCH-1

Die obigen Referenzen erläutern auch, wie diese Einschränkung in den DLT-Algorithmus eingefügt wird.

Aus Ellipsen und Linien lässt sich eine robuste projektive Beziehung ableiten.

Tolga Birdal
quelle
2

Wenn die Linien nicht parallel sind, können Sie den Schnittpunkt berechnen und als Referenzpunkt verwenden. In Ihrem Bild können Sie auch die violetten Punkte verwenden:

Bildbeschreibung hier eingeben

Übrigens muss der Schnittpunkt der Linien nicht im Bild sein. Solange die Linien parallel sind

Wenn die Linien parallel sind, können Sie sie verwenden, um zusätzliche Einschränkungen zu erhalten. Wenn Sie beispielsweise N <4 Punkte und K Linien haben, können Sie möglicherweise die Transformation abschätzen

Denken Sie daran, dass die Gleichung der projektiven Transformation lautet:

x=(ein11x+ein12y+ein13)(ein31x+ein32y+1)y=(ein21x+ein22y+ein23)(ein31x+ein32y+1)

ein11,ein12,ein13,ein21,ein22,ein23,ein31,ein32

einx+by+c=0EINx+By+C

EINx+By+C=0EIN(ein21x+ein22y+ein23)+B(ein21x+ein22y+ein23)+C(ein31x+ein32y+1)=0

Es kann umgeschrieben werden als:

(EINxEINyEINBxByBCxCy)(ein11ein12ein13ein21ein22ein23ein31ein32)=-C

EIN,B,C(x,y)einx+by+c=0

Zusätzliche Referenzen " Homographieschätzung von Elan Dubrovsky " - Siehe Teil 2.3.1, Schätzung der Homographie aus Linien.

Andrey Rubshtein
quelle