OpenCV: Wie man inlier Punkte mit findHomography()/findFundamental() und RANSAC

OpenCV bietet keine RANSAC-Funktion per se oder zumindest in einer solchen form, dass Sie können einfach rufen und mit ihm getan werden (z.B. cv::ransac(...)). Alle Funktionen/Methoden, die in der Lage sind zu verwenden, RANSAC, eine Flagge, die es ermöglicht. Dies ist jedoch nicht immer sinnvoll, wenn Sie wirklich wollen, um etwas anderes zu tun, mit der inliers RANSAC berechnet nach haben Sie geschätzt, ein homography/grundlegende matrix für das Beispiel erstellen Sie ein schönes Grundstück in Oktav-oder ähnliche software/Bibliothek der Punkte, zusätzliche algorithmen, die auf der restlichen Menge des gefilterten Spiele etc.

Nach dem matching in zwei Bildern erhält man einen Vektor, der die Spiele. Zusammen mit, dass haben wir natürlich 2 paar Eckdaten (einer für jedes Bild), die verwendet wurden, in den matching-Prozess. Spiele und Eckdaten erstellen wir zwei Vektoren der Punkte (z.B. cv::Point2f points) und übergeben Sie diese zu findHomography(). Von diese und diese Beiträge habe ich entdeckt, wie genau die inliers sind gekennzeichnet mit einer Maske, die wir passieren, um auf die Funktion. Jede Zeile innerhalb der Maske bezieht sich auf eine inlier/Ausreißer. Aber ich bin nicht in der Lage, um herauszufinden, wie man den row-index-Informationen aus meinen zwei Sätzen von Punkten. Auf der Suche im OpenCV source code hat mich nicht zu weit. In findFundamental() (ähnlich findHomography() wenn es um seine Unterschrift und die Maske-Teil) verwenden Sie compressPoints(), das scheint irgendwie kombinieren Sie die zwei Sätze haben wir als Eingabe - (Quell-und Ziel-Punkte) in einem. Während des Tests, um zu bestimmen, die Art der Maske, die ich habe versucht, 2 sets von aufeinander abgestimmten Punkte (Umgerechnet cv::Keypoints zu cv::Point2f - ein standard-Verfahren). Jedes set enthält 300 Punkte also insgesamt haben wir 600 Punkte. Die zurückgegebenen Maske enthält 300 Zeilen (Werte sind nicht wichtig für dieses Thema bei der hand).

EDIT: Beim schreiben dieses entdeckte ich die Antwort (siehe unten), aber beschlossen, an Stelle diese Frage trotzdem, falls jemand braucht diese Informationen so bald wie möglich und in kompakter form. Beachten Sie, dass wir noch einen brauchen der OpenCV - Funktion, die Unterstützung von RANSAC. Also, wenn Sie haben eine Reihe von Punkten, aber nicht die Absicht computing homography oder grundlegende matrix, das ist natürlich nicht die Art und Weise, und ich wage zu sagen, dass ich nicht in der Lage war zu finden, alles, was nützlich in OpenCV API, die helfen können, vermeiden Sie dieses Hindernis daher müssen Sie verwenden eine externe Bibliothek.

InformationsquelleAutor rbaleksandar | 2014-06-27

Schreibe einen Kommentar