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:
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.
quelle
Antworten:
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:
2) Es gibt eine Methode, die für die hier angegebenen Felder spezifisch ist:
und
In dieser Form kann die Gleichung direkt in die DLT-Methode eingefügt werden:
Der einzige Unterschied ist die Normalisierung, die Sie in den obigen Referenzen finden.
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.
quelle
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:
Ü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:
Es kann umgeschrieben werden als:
Zusätzliche Referenzen " Homographieschätzung von Elan Dubrovsky " - Siehe Teil 2.3.1, Schätzung der Homographie aus Linien.
quelle