OpenCV Kamerakalibrierung: Punkte mit Kamera-Intrinsik / Extrinsik neu verzerren

8

Wie kann ich ein 2D-Punkt-Set anwenden, wenn ich das Gegenteil von undistortPoints anwende?

Ich habe die Kamera intrinsics und distCoeffs und möchte (zum Beispiel) ein Quadrat erstellen und es verzerren, als ob die Kamera es durch die Linse betrachtet hätte.

Ich habe hier einen 'verzerrten' Patch gefunden: Ссылка , aber es scheint, das ist nur gut für Bilder, ich möchte an spärlichen Punkten arbeiten.

Danke

    
Andy 07.06.2012, 16:25
quelle

4 Antworten

5

Eine einfache Lösung besteht darin, initUndistortRectifyMap zu verwenden, um eine Karte von unverzerrten Koordinaten zu verzerrten Koordinaten zu erhalten:

%Vor%

Ich bearbeite, um klarzustellen, dass der Code korrekt ist:

Ich zitiere die Dokumentation von initUndistortRectifyMap :

  

für jedes Pixel (u, v) im Ziel (korrigiert und korrigiert)   Bild berechnet die Funktion die entsprechenden Koordinaten in der   Quellbild (also im Originalbild von der Kamera.

     

map_x (u, v) = x''f_x + c_x

     

map_y (u, v) = y''f_y + c_y

    
ChronoTrigger 26.12.2013 12:27
quelle
5

Diese Frage ist ziemlich alt, aber da ich hier von einer Google-Suche endete, ohne eine saubere Antwort zu sehen, entschied ich mich trotzdem, sie zu beantworten.

Es gibt eine Funktion namens projectPoints das macht genau das. Die C-Version wird intern von OpenCV verwendet, wenn Kameraparameter mit Funktionen wie calibrateCamera und stereoCalibrate

BEARBEITEN: Um 2D-Punkte als Eingabe zu verwenden, können wir alle Z-Koordinaten mit morotspaj 26.12.2013 12:04

quelle
1

Ich hatte genau das gleiche Bedürfnis. Hier ist eine mögliche Lösung:

%Vor%     
Pascal T. 08.12.2012 15:19
quelle
0

undistortPoint ist eine einfache Umkehrversion der Projektpunkte

In meinem Fall würde ich gerne Folgendes machen:

Undistort-Punkte:

%Vor%

Dadurch werden die Punkte bis auf die sehr ähnliche Koordinate des Ursprungsbildes ohne Verzerrung entstort. Es ist das Standardverhalten der cv :: undistort () - Funktion.

redistort Punkte:

%Vor%

Das Problem besteht darin, zuerst die Punkte auf z = 1 Ebene mit einem linearen Kameramodell zu projizieren. Danach projizieren Sie es mit dem ursprünglichen Kameramodell.

Ich fand diese nützlich, ich hoffe, es funktioniert auch für Sie.

    
xu bin 26.01.2016 14:47
quelle

Tags und Links