2012-07-11 5 views
6

EDIT Berechnung: Ich habe diese ähnliche Frage mit einer sehr ausführlichen Antwort jetzt gefunden:die Zielpunkte für OpenCV des findHomography

proportions of a perspective-deformed rectangle


Ich verwende findHomography() und warpPerspective() Methoden der OpenCV zu "de skew" ein Foto von einem Blatt Papier. Ich habe das weitgehend funktioniert, aber ich bin auf ein Detail fest.

Der Teil, den ich nicht verstehe, ist, den optimalen Satz von Zielpunkten zur Eingabe in findHomography() zu berechnen. Ich weiß, dass meine Ausgabe rechteckig sein soll, aber ich kenne das Verhältnis von Breite zu Höhe des Rechtecks ​​nicht. Ich möchte auch, dass das Ausgabe-Rechteck so dimensioniert wird, dass es eine minimale Skalierung des Ausgabebildes gibt, wenn ich die Transformation über warpPerspective() anwende. Alles, was ich habe, sind die vier Punkte, die das Viereck bilden, das ich im Quellbild transformieren will. Wie berechne ich ein Ziel-Rechteck mit der optimalen Größe?

+0

Duplikat dieser Frage: http://stackoverflow.com/questions/1194352/proportions-of-a-perspective-deformed-rectangle – TomSwift

Antwort

4

Die Methode findHomography() benötigt vier Punkte (bei Verwendung von Direkte lineare Transformation). Wenn Sie die optimale Einstellung wünschen, benötigen Sie den 4-Punkte-Satz, dessen DLT-Homographie den minimalen Reprojektionsfehler ergibt. Ich meine, Sie benötigen eine Methode, die Inlier/Ausreißer für das bestimmte mathematische Modell od DLT erkennt. Diese Methode ist RANSAC, und OpenCV hat es implementiert. Sie finden Beispiele für findhomography() kombiniert mit RANSAC.

Ich persönlich finde ein Problem mit diesem und es ist die Anzahl der Iterationen von RANSAC in OpenCV, die zu hoch ist. Wenn Sie nach optimaler Geschwindigkeit suchen, müssen Sie sich in die Codes vertiefen.

+0

Dank; gute Info. Aber nicht was ich brauchte; mein primäres Bedürfnis war, das Verhältnis von W zu H für das Ausgangsrechteck zu finden, und ich fand die Antwort in der ähnlichen Frage, die ich fand und markierte. – TomSwift

+0

ist es in Ordnung, mehr als 4 Punkte in 'findHomography()' zu stecken? – solvingPuzzles

Verwandte Themen