Die Kamerakalibrierung wird zur Korrektur von Objektivverzerrungen usw. verwendet, aber es scheint schwierig zu verstehen, wie sich jeder Koeffizient darauf auswirkt.
Also werde ich versuchen, es intuitiv zu verstehen.
Sofern es sich nicht um ein ideales Lochkameramodell handelt, ist das Bild wie links gezeigt verzerrt. Durch Auffinden des der Kamera eigenen Verzerrungskoeffizienten ist es möglich, ein derart verzerrtes Bild zu korrigieren.
Wenn Sie Ihre Kamera kalibrieren, drucken Sie ein sogenanntes Schachbrett.
Nehmen Sie mit der Kamera, deren Parameter Sie messen möchten, Dutzende von Fotos aus allen Winkeln auf.
Jetzt können Sie die zweidimensionale Koordinate $ x $ der Kamera mit der dreidimensionalen Koordinate $ X $ des Raums abgleichen.
x = P X
Dieses $ P $ ist die Kameramatrix. Sie kann durch gleichzeitige Gleichungen mit 3 Zeilen und 4 Spalten berechnet werden.
P = K [R|t]
$ P $ kann in die obere Dreiecksmatrix $ K $ und die normale orthogonale Matrix $ R $ zerlegt werden.
$ K $ ...... Interner Parameter, intrinsischer Parameter (Brennweite, optisches Zentrum, Scherkoeffizient) $ [R | t] $ ... Externer Parameter, extrinsischer Parameter (Kameradrehung und -konvertierung)
Es wird sein.
Dieser interne Parameter $ K $
K = \begin{pmatrix}
f_x & s & c_x \\
0 & f_y & c_y \\
0 & 0 & 1 \\
\end{pmatrix}
Es repräsentiert die Brennweite $ (f_x, f_y) $, das optische Zentrum $ (c_x, c_y) $ und den Scherkoeffizienten $ s $.
In Python können Sie OpenCV verwenden, um $ K $ (mtx) wie folgt zu finden.
#Erkennen Sie Punkte vom Schachbrett
ret, corners = cv2.findChessboardCorners(gray, (8,6), None)
#Kalibrierung
ret, mtx, dist, rvecs, tvecs = cv2.calibrateCamera(objpoints, imgpoints, img_size,None,None)
#Verzerrungskorrektur
dst = cv2.undistort(img, mtx, dist, None, newMtx)
Animieren wir Parameter wie Brennweite, optisches Zentrum bzw. Scherkoeffizient. Aus der erhaltenen Kameramatrix werden nur die Zielparameter geändert.
Unendlichkeit → Angemessene Brennweite → Klein
(1)
(2)
(3)
Negativ → richtige Position → positiv
(1)
(1)
Negativ → richtiger Wert → positiv Auf Englisch ist es Skew.
Wie war das. Es stellt sich heraus, dass die Kamerakalibrierung zur Korrektur von Verzerrungen verwendet wird.
Ich möchte auch den Verzerrungskoeffizienten in radialer Richtung und den Verzerrungskoeffizienten in Umfangsrichtung machen.
https://github.com/DavidWangWood/Camera-Calibration-Python https://jp.mathworks.com/help/vision/examples/evaluating-the-accuracy-of-single-camera-calibration.html