2016-05-30 17 views
1

Ich muss die Verzerrung meiner Kamera korrigieren, ohne ein Schachbrett-Ziel zu verwenden. Ich habe einen Schnappschuss von einem rechteckigen Objekt. Dazu habe ich zuerst einige Punkte des rechteckigen Objekts auf meinem Bild gefunden. Als Ergebnis habe ich die Koordinaten von realen Objektpunkten und von Punkten der Objektkontur im Bild. Dies wird hier auf dem Bild dargestellt: https://yadi.sk/i/PgPYJvAQs8YwQ https://drive.google.com/file/d/0B1uajFxXL5MUMnFiVjVjbF8tTVE/viewKameraverzeichnung ohne Schachbrett, nach Objekt und Konturpunkten entfernen

Wie kann ich auf JavaCV oder OpenCV vorgehen?

+0

Ihre Google Drive-Datei wird nicht geteilt. –

+0

Entschuldigung, ich habe es behoben. – FedorM

+1

Warum können Sie nicht einfach ein Kalibrierungsmuster verwenden? Ist deine Kamera auf dem Mond, so dass du sie nicht erreichen kannst? Das macht keinen Sinn. – Piglet

Antwort

0

Sie können versuchen, die Funktion findHomography in opencv zu verwenden, die RANSAC verwendet, um Ausreißer zu berücksichtigen und eine erste Schätzung der Bildumwandlung zu erhalten.

Mat h = findHomography(distorted_src,undistort_dst); 
warpPerspective(im_src, im_undistort, h, size); 
+0

Wenn ich richtig verstehe Sie - diese Methode lassen mich perpictive Transorm auf meinen Bildern korrigieren. Aber ich brauche eine korrekte Objektivtönerverzerrung in diesem Bild. (Die Korrektur der Perspektive ist bereits durchgeführt, und die Seiten des rechteckigen Objekts sind korrekt auf dem Ergebnisbild gemalt und dieses Objekt befindet sich zentral) – FedorM

0

Einige Punkte:

  1. Ihre Wahl der entsprechenden Ihrem Beispiel das Bild verzerrt/unverfälschte Punkte ist falsch. Da Sie nur an einer radialen Verzerrung interessiert sind, sollten die übereinstimmenden Punkte auf den gleichen Radien liegen.
  2. Wenn Ihre Korrespondenzen genau sind, was bedeutet, dass Sie die unverzerrten Versionen jedes verzerrten Punktes identifizieren können und ihre unverzerrten Koordinaten kennen, dann ist das Problem nicht anders als bei einem "Schachbrettmuster": Sie nähern es einfach als Standard nicht an Lineares Fehlerquadrat-Problem
  3. Wenn die Korrespondenzen ungenau sind, können Sie nur die Bedingung aufstellen, dass gerade Linien gerade sein müssen. Die Hauptreferenz für diesen Ansatz ist https://hal.inria.fr/inria-00267247/document