Ich verwendete OpenCVs cv::findHomography
API, um die Homographie-Matrix von zwei planaren Bildern zu berechnen. Die übereinstimmenden Schlüsselpunkte werden von SIFT extrahiert und von BFMatcher abgeglichen. Wie ich weiß, cv:findHomography
verwenden RANSAC Iteration, um die besten vier entsprechenden Punkte zu ermitteln, um die Homographie-Matrix zu erhalten. Also zeichne ich die ausgewählten vier Punktepaare mit der berechneten Kontur unter Verwendung der homographischen Matrix der Kante des Objekts. Das Ergebnis sind als Links:Wie verbessert man die Homographiegenauigkeit?
http://postimg.org/image/5igwvfrx9/
Wie wir die gewählten sehen können, Punkte angepasst RANSAC korrekt sind, aber die Kontur zeigt, dass die Homografie nicht korrekt ist.
Aber dieser Test zeigt, dass sowohl die ausgewählten Punkte angepasst und die Homografie korrekt sind:
http://postimg.org/image/dvjnvtm53/
Meine Vermutung ist, dass, wenn die gewählte abgestimmt Punkte zu nahe sind, die kleinen Fehler der Pixelposition wird zu dem signifikanten Fehler der Homographiematrix führen. Wenn die vier Punkte in der Ecke des Bildes liegen, dann hat die Verschiebung der angepaßten Punkte um 4-6 Pixel immer noch eine gute Homographie-Matrix. (entsprechend der homogenen Koordinate, ich denke, es ist vernünftig, da der kleine Fehler in der nahen Ebene wird in der weit weg verstärkt werden)
Meine Frage ist:
1.Is meine Vermutung richtig? 2. Da die vier übereinstimmenden Punkte durch die RANSAC-Iteration erzeugt werden, ist der Gesamtfehler aller Schlüsselpunkte minimal. Aber wie kann man die stabile Homographie erhalten, indem man zumindest das Mapping der Kontur korrekt macht? Die Theorie bewies, dass, wenn die vier entsprechenden Punkte in einer Ebene gefunden werden, die Homographiematrix berechnet werden sollte, aber gibt es einen Trick in der Ingenieurarbeit?
Vielen Dank.
Haben Sie eine Lösung oder Erklärung gefunden? Ich habe das gleiche Problem – MMH