Contents — find the section you need

Visuelles SLAM, visuelle Odometrie, epipolare Geometrie und PnP setzen eine korrekte Abbildung von Pixelkoordinaten in den 3D-Raum voraus. Doch Licht, das durch eine Linse fällt, erzeugt niemals ein Bild, wie es beispielsweise eine Lochkamera im Lehrbuch erwarten würde. Wie groß ist die Brennweite in Pixeln? Wie weit ist der Hauptpunkt vom Bildzentrum entfernt? Wie stark wird eine gerade Linie im Bild gekrümmt? Die Kamerakalibrierung dient der numerischen Bestimmung dieser Größen. Wird bei der Kalibrierung gespart, breitet sich – unabhängig von der Komplexität des darauf aufbauenden SLAM- oder SfM-Algorithmus – ein systematischer Fehler von der Grundlage aus.

0. 30-Sekunden-Zusammenfassung

  • Die Kamerakalibrierung ist der Prozess der Schätzung intrinsischer Parameter (Brennweite, Hauptpunkt, Schräglage) und Verzeichnungskoeffizienten anhand bekannter Korrespondenzen zwischen 3D-Punkten und Bildpunkten. Extrinsische Parameter (die Kameraposition bei jeder Aufnahme) werden gleichzeitig ermittelt.

  • Objektive weisen sowohl radiale als auch tangentiale geometrische Verzeichnungen auf. Die Standarddarstellung ist das Brown-Conrady-Modell, das die radiale Verzeichnung als k_1,k_2,k_3 und die tangentiale Verzeichnung als p_1,p_2 ausdrückt. Weitwinkel- und Fisheye-Objektive erfordern ein anderes Modell.

  • Die Zhang-Methode – das Aufnehmen eines planaren Musters (z. B. eines Schachbrettmusters) aus verschiedenen Positionen, die lineare Berechnung der intrinsischen Parameter aus der Homographie jeder Ansicht und die anschließende Verfeinerung einschließlich der Verzeichnung durch nichtlineare Optimierung – ist die Standardkalibrierungsmethode in der Praxis.

  • Die Kalibrierungsqualität wird anhand des Reprojektionsfehlers beurteilt. Die Betrachtung des Mittelwerts allein reicht nicht aus – Sie müssen auch die räumliche Verteilung des Fehlers im Bild und die Varianz über verschiedene Posen hinweg überprüfen, sonst übersehen Sie lokale Verzerrungen, die nicht vollständig erfasst wurden.

– Die Kalibrierung ist keine Konstante, die nach ihrer Bestimmung dauerhaft gültig ist. Zoom, Fokus, Temperatur, Erschütterungen sowie Änderungen der Auflösung oder des Bildausschnitts können die intrinsischen Parameter verändern. Nachgelagerte Verfahren wie Visual SLAM, VO und PnP verschlechtern sich unbemerkt, sobald diese Annahme nicht mehr zutrifft.

1. Das Lochkameramodell aus Koordinaten

Ein Weltkoordinatenpunkt \mathbf{X}=(X,Y,Z,1)^\mathsf{T} (homogene Koordinaten) wird im Lochkameramodell maßstabsgetreu auf das Bild projiziert:

\tilde{\mathbf{x}} \sim P\mathbf{X},\qquad P=K[R\mid\mathbf{t}]

R\in SO(3) und \mathbf{t} sind die Rotation und Translation von Weltkoordinaten zu Kamerakoordinaten (die extrinsischen Parameter), und K ist die intrinsische Matrix.

K=\begin{bmatrix}f_x&s&c_x\\0&f_y&c_y\\0&0&1\end{bmatrix}

Dabei sind f_x,f_y die Brennweiten in Pixeln, (c_x,c_y) der Hauptpunkt (der Schnittpunkt der optischen Achse mit der Bildebene) und s die Schräglage (nahezu null bei den meisten modernen Sensoren). Die Kalibrierung ist das inverse Problem, die K, die Verzerrungskoeffizienten und die R,\mathbf{t} jedes Schusses ausschließlich aus den beobachteten Daten zu rekonstruieren.

Diagram 1 · Use the button to switch views
Recovering intrinsic parameters from a checkerboard seen in multiple poses A diagram showing a planar pattern photographed several times at different angles and distances by a fixed camera, and the intrinsic matrix K and distortion coefficients being jointly estimated from each view's homography. Camera (fixed) Pose 1 Pose 2 Pose 3 K, k1,k2,k3 p1,p2 R,t for each pose

Wie das Diagramm zeigt, lassen sich die intrinsischen Parameter mit einer einzelnen Aufnahme nicht von den extrinsischen Parametern trennen. Nur durch die Erfassung mehrerer Beobachtungen in verschiedenen Posen (Neigung, Abstand) kann K nahezu eindeutig bestimmt werden – und genau dies ist die Kernidee von Zhangs Methode, die im Folgenden erläutert wird.

2. Eine Linse ist kein ideales Loch: Das Verzeichnungsmodell

Reale Linsen weisen radiale und tangentiale Verzeichnung auf. Schreiben des normalisierten Bildes Mit den Koordinaten (x,y)=(X_c/Z_c,\,Y_c/Z_c) und dem Radius r^2=x^2+y^2 lässt sich das Brown-Conrady-Verzerrungsmodell wie folgt darstellen:

x_d = x\left(1+k_1r^2+k_2r^4+k_3r^6\right) + 2p_1xy+p_2\left(r^2+2x^2\right)
y_d = y\left(1+k_1r^2+k_2r^4+k_3r^6\right) + p_1\left(r^2+2y^2\right)+2p_2xy

k_1,k_2,k_3 sind die Koeffizienten der radialen Verzeichnung und p_1,p_2 die Koeffizienten der tangentialen Verzeichnung. Die radiale Verzeichnung beschreibt die Verzeichnung des Bildes mit zunehmendem Abstand vom Objektivzentrum. Sie äußert sich in der ausgeprägten „Tonnenverzeichnung“ bei Weitwinkelobjektiven oder der „Kissenverzeichnung“ bei Teleobjektiven. Die tangentiale Verzeichnung ist eine kleinere, asymmetrische Komponente, die durch Ungenauigkeiten in der Fertigung entsteht, da die Linsengruppe und der Bildsensor nicht perfekt parallel ausgerichtet sind. Die endgültigen Pixelkoordinaten werden als \tilde{\mathbf{x}}_{px}=K(x_d,y_d,1)^\mathsf{T} ermittelt.

Diagram 2 · Use the button to switch views
Comparing an undistorted grid to barrel-type radial distortion The left side shows an ideal grid whose lines stay straight; the right side shows the same grid appearing as a barrel shape, curving inward more toward the outer edges, due to a lens's radial distortion. Ideal (no distortion) Barrel-type radial distortion

Bei Objektiven mit extrem weitem Bildwinkel, wie z. B. Fisheye-Objektiven, divergiert das Brown-Conrady-Polynommodell an den Rändern und ist daher unpraktisch. Üblicherweise wird stattdessen eine winkelbasierte äquidistante Projektionsnäherung verwendet, wie beispielsweise das Fisheye-Modell von OpenCV. Anstatt sich ein einziges Verzerrungsmodell einzuprägen, sollte man stets beachten, dass das Modell anhand des Bildwinkels und des optischen Designs des Objektivs ausgewählt werden sollte.

3. Zhangs Methode: Kalibrierung mit einem planaren Muster

Die heute am weitesten verbreitete Methode ist die von Zhengyou Zhang im Jahr 2000 veröffentlichte Kalibrierungsmethode mit planaren Mustern. Es wird keine spezielle 3D-Kalibrierungsvorrichtung benötigt – es genügt, ein planares Muster, beispielsweise ein gedrucktes Schachbrettmuster, aus verschiedenen Positionen zu fotografieren, wobei die Kamera oder das Muster selbst bewegt wird.

Die Abbildung der Musterebene (durch Drehen von Z=0) in einer bestimmten Position i auf das Bild kann mithilfe der ersten und zweiten Spalte der Rotationsmatrix \mathbf{r}_1,\mathbf{r}_2 und der Translation \mathbf{t} als Homographie dargestellt werden.

H_i \sim K\begin{bmatrix}\mathbf{r}_1&\mathbf{r}_2&\mathbf{t}\end{bmatrix}

Hier kann die H_i jeder Pose linear aus den bekannten Gitterpunkten des Musters und ihren Bildkorrespondenzen mithilfe der im Homography Primer beschriebenen DLT-Methode geschätzt werden. Unter der Bedingung, dass die Spalten der Rotationsmatrix orthonormal sind – \mathbf{r}_1^\mathsf{T}\mathbf{r}_2=0,\ \|\mathbf{r}_1\|=\|\mathbf{r}_2\| – ergibt sich eine lineare Gleichung in B=K^{-\mathsf{T}}K^{-1}:

\mathbf{h}_1^\mathsf{T}B\mathbf{h}_2=0,\qquad \mathbf{h}_1^\mathsf{T}B\mathbf{h}_1=\mathbf{h}_2^\mathsf{T}B\mathbf{h}_2

diese liefert zwei solche Gleichungen pro Pose (\mathbf{h}_1,\mathbf{h}_2 sind die erste und zweite Spalte von H_i). Da B eine symmetrische Matrix mit 6 Freiheitsgraden ist, kann B bei 3 oder mehr Posen mittels linearer Ausgleichsrechnung bestimmt werden. Anschließend lässt sich K in geschlossener Form durch ein Verfahren ermitteln, das der Cholesky-Zerlegung entspricht. Daher benötigt Zhangs Methode nur wenige Aufnahmen einer Ebene. Sind jedoch alle Posen nahezu parallel zur Bildebene (frontoparallel), degenerieren die Gleichungen, sodass Posen mit verschiedenen Neigungswinkeln erforderlich sind.

Die geschlossene Lösung stellt lediglich einen Startwert dar, der Verzerrungen ignoriert. Anschließend werden in der Praxis üblicherweise alle Parameter, einschließlich der Verzerrungskoeffizienten, mittels nichtlinearer Optimierung (üblicherweise Levenberg-Marquardt) verfeinert. Als Zielfunktion dient dabei der im nächsten Abschnitt beschriebene Reprojektionsfehler.

4. Reprojektionsfehler und Parameteroptimierung

Die Zielfunktion der Kalibrierung besteht darin, für jede Pose und jeden Gitterpunkt die Differenz zwischen dem beobachteten Pixel und der mit den geschätzten Parametern berechneten projizierten Position zu minimieren. Die Beobachtung an Pose i, Punkt j wird als \mathbf{u}_{ij} und der entsprechende bekannte 3D-Punkt in der Ebene als \mathbf{X}_j bezeichnet.

E(K,\boldsymbol{\kappa},\{R_i,\mathbf{t}_i\})= \sum_{i=1}^{n}\sum_{j=1}^{m} \left\|\mathbf{u}_{ij}-\pi_d\!\left(K,\boldsymbol{\kappa},R_i\mathbf{X}_j+\mathbf{t}_i\right)\right\|^2

ist der zu minimierende Wert. \boldsymbol{\kappa}=(k_1,k_2,k_3,p_1,p_2) ist der Verzerrungskoeffizientenvektor und \pi_d die Projektionsfunktion inklusive Verzerrung. Die Unbekannten sind groß – K (4–5 Freiheitsgrade), \boldsymbol{\kappa} (3–5 Freiheitsgrade) und R_i,\mathbf{t}_i pro Pose (6 Freiheitsgrade × Anzahl der Posen) –, aber mit genügend beobachteten Punkten lässt sich das Problem gut eingrenzen. Diese Formulierung kann als Spezialfall des im Bundle Adjustment Primer beschriebenen Ansatzes zur gemeinsamen Optimierung von Kamerapose und 3D-Struktur betrachtet werden. Da die 3D-Punktkoordinaten bekannt und in der Kalibrierung fixiert sind, handelt es sich um ein einfacheres Teilproblem als die gewöhnliche Bündelausgleichung.

Häufig wird der quadratische Mittelwert (RMS) des Reprojektionsfehlers \left\|\mathbf{u}_{ij}-\hat{\mathbf{u}}_{ij}\right\| als „Kalibrierungsgenauigkeit“ angegeben, es ist jedoch riskant, die Kalibrierung allein anhand des Mittelwerts zu beurteilen. Prüfen Sie außerdem stets Folgendes:

  • Varianz des mittleren Fehlers der einzelnen Posen (eine Pose mit einem besonders großen Fehler in einem bestimmten Winkel deutet auf Musterverzerrung, Bewegungsunschärfe oder ungleichmäßige Beleuchtung hin).

  • Die räumliche Verteilung des Fehlers im Bild (systematische Fehler an den Rändern deuten darauf hin, dass die Ordnung oder der Typ des Verzerrungsmodells unzureichend sein könnte).

  • Subpixelgenauigkeit der Gitterpunkterkennung (wenn die Eckenerkennung selbst instabil ist, kann keine Optimierung dies vom Modellfehler unterscheiden).

5. Implementierungsgerüst in OpenCV

Die typische Kalibrierung mit einer einzelnen Kamera sieht folgendermaßen aus: Die Festlegung der Aufnahmebedingungen (Auflösung, Zoom, Fokus) und das Fotografieren des Musters an den vier Ecken, in der Bildmitte und bei verschiedenen Neigungen machen 90 % einer guten Kalibrierung aus.

import cv2 as cv
import numpy as np

pattern_size = (9, 6)  # number of internal corners
objp = np.zeros((pattern_size[0]*pattern_size[1], 3), np.float32)
objp[:, :2] = np.mgrid[0:pattern_size[0], 0:pattern_size[1]].T.reshape(-1, 2)
objp *= square_size_m  # measured side length of one square [m]

obj_points, img_points = [], []
for gray in calibration_images:  # multiple frames shot at different poses
    found, corners = cv.findChessboardCorners(gray, pattern_size)
    if found:
        corners = cv.cornerSubPix(gray, corners, (11, 11), (-1, -1),
                                   (cv.TERM_CRITERIA_EPS + cv.TERM_CRITERIA_MAX_ITER, 30, 0.001))
        obj_points.append(objp)
        img_points.append(corners)

ret, K, dist, rvecs, tvecs = cv.calibrateCamera(
    obj_points, img_points, gray.shape[::-1], None, None)
# ret is the RMS reprojection error [px]. Also compute per-pose error separately to check.

Verwenden Sie für Weitwinkel- oder Fisheye-Objektive die API-Familie cv.fisheye.calibrate anstelle der üblichen calibrateCamera. Für ein Stereo-Rig verwenden Sie cv.stereoCalibrate, um die relative Pose zusätzlich zu den intrinsischen Parametern beider Kameras zu bestimmen, und cv.stereoRectify, um die linken und rechten Bilder an horizontalen Epipolarlinien auszurichten. Dieses Verfahren knüpft direkt an das in How Stereo Cameras Work und How Depth Cameras Work beschriebene Basisdesign an.

6. Warum Kalibrierungsdrift nachgelagerte Systeme beeinträchtigt

Viele mathematische Berechnungen in Visual SLAM, VO und PnP basieren auf der Annahme, dass Kalibrierungswerte konstant bleiben, solange sich die Aufnahmebedingungen nicht ändern. Die Schätzung der Essentiellen Matrix in The Epipolar Geometry Primer setzt normalisierte Koordinaten voraus (K^{-1}\tilde{\mathbf{x}}). Die Minimierung des Reprojektionsfehlers im PnP Primer geht ebenfalls davon aus, dass K bekannt ist. Stimmen K oder die Verzeichnungskoeffizienten nicht mehr mit dem tatsächlichen optischen System überein, werden alle Berechnungen effektiv mit falschen Werten durchgeführt.

Konkret verschlechtern sich Kalibrierungswerte aus folgenden Gründen:

  • Zoom-/Fokusänderungen: Bei einem Objektiv mit veränderlicher Brennweite ändert sich f_x,f_y von Aufnahme zu Aufnahme. Die Verwendung des Autofokus führt dazu, dass die intrinsischen Parameter zum Zeitpunkt der Kalibrierung und während der Laufzeit nicht mehr übereinstimmen.

  • Temperatur- und mechanische Erschütterungen: Eine geringfügige Positionsverschiebung im Objektivtubus oder der Sensorhalterung verändert den Hauptpunkt und die Verzeichnungskoeffizienten. Dies ist insbesondere bei Anwendungen im Freien, in der Automobilindustrie und bei Drohnen nicht zu vernachlässigen.

  • Änderungen der Auflösung, des Beschneidens oder des digitalen Zooms: Da K ein Parameter in Pixeln ist, muss f_x,f_y,c_x,c_y bei einer Größenänderung oder einem Beschneiden des Bildes entsprechend angepasst werden. Dies zu vergessen, ist ein sehr häufiger Fehler.

  • Verformung der linken/rechten Kameraanordnung: Bei Stereo-Setups führt eine leichte Verschiebung der relativen Pose (extrinsische Kalibrierung) – nicht nur der intrinsischen Parameter – im Laufe der Zeit zu einem systematischen Fehler in der aus der Disparität berechneten Tiefe.

Diese Fehler sind bei einer einzelnen, isolierten Pose-Schätzung kaum wahrnehmbar. In Systemen, die die Pose jedoch sequenziell über die Zeit integrieren, wie z. B. VO oder SLAM, akkumuliert sich der systematische Reprojektionsfehler als Drift (Drift) und erzeugt eine verzerrte Karte, die durch Schleifenschluss (CV-Loop-Closure) nicht vollständig korrigiert werden kann. In Produktionssystemen empfiehlt es sich, Kalibrierungsabweichungen online anhand fester, bekannter 3D-Merkmale (z. B. gerade Linien an einem Gebäude, Schilder bekannter Größe) zu überwachen oder eine regelmäßige Neukalibrierung zu implementieren.

7. Häufige Fehler und Gegenmaßnahmen

Fehlermuster Was passiert Gegenmaßnahme
Unzureichende Posenvielfalt (nur Frontalaufnahmen) K und Verzerrungen werden ungenau bestimmt, insbesondere k_3 und der Hauptpunkt Aufnahmen von den vier Ecken, der Bildmitte und aus verschiedenen Neigungswinkeln

Verzerrtes Muster außerhalb einer Ebene | Die Kalibrierung selbst ist nicht mehr möglich, wodurch sich ein systematischer Fehler ausbreitet | Montage auf einer starren, flachen Platte; Korrektur von Skalierungsfehlern durch physische Messung |

| Grobe Eckenerkennungsgenauigkeit | Erhöht den Reprojektionsfehler unabhängig von der Ausdruckskraft des Modells | Subpixelkorrektur, ausreichende Auflösung, Fokus- und Belichtungsmanagement |

Anwendung eines herkömmlichen Lochkamera-Verzerrungsmodells auf ein Weitwinkelobjektiv | Divergente Fehler an den Bildrändern, instabile Optimierung | Wählen Sie ein zum Bildfeld passendes Modell, z. B. ein Fisheye-Modell |

Keine Aktualisierung von K nach Größenänderung/Zuschneiden | Hauptpunkt und Brennweite sind nicht mehr skalierbar, was zu systematischen Fehlern bei der Lagebestimmung führt | Konvertieren Sie K bei jeder Bildtransformation in die entsprechende Skala |

Ignorieren des Rolling-Shutter-Effekts | Der tatsächliche Projektionsmittelpunkt variiert von Zeile zu Zeile, selbst innerhalb eines einzelnen Bildes | Verwenden Sie einen Global Shutter oder korrigieren Sie mit einem Zeilen-Timing-Modell |

8. Zusammenfassung

Die Kamerakalibrierung ist der erste Schritt, der ein Bild von einer „einfachen 2D-Anordnung“ in eine „geometrisch interpretierbare Beobachtung“ verwandelt. Die intrinsischen und extrinsischen Parameter des Lochkameramodells sowie die radialen und tangentialen Verzerrungskoeffizienten werden – analog zu Zhangs Methode mit planaren Mustern – aus Beobachtungen in verschiedenen Positionen ermittelt und abschließend durch nichtlineare Optimierung des Reprojektionsfehlers verfeinert. Die Qualität dieser Kalibrierung spiegelt sich nicht in der Genauigkeitsmetrik einzelner Algorithmen wider, sondern bildet die Grundlage jeder Gleichung in jeder nachfolgenden Stufe – von der Epipolargeometrie über PnP und Visual SLAM bis hin zu SfM und Bündelausgleichung. Kalibrierung ist kein einmaliger Vorgang, sondern Teil einer Pipeline, die bei sich ändernden Aufnahmebedingungen kontinuierlich überwacht werden muss.

Überprüfen Sie Ihr Verständnis
Ist ein kleiner Fehler in einem Kalibrierungsbild ausreichend?

Die Anpassung könnte diese Ansicht stützen. Prüfen Sie verschiedene Neigungen, Bildkanten und separate Validierungsbilder.

Referenzen

What to read next

Continue the seriesGrundlagen der MerkmalserkennungExplore another aspect of this fieldLab für Bildhelligkeit und Leuchtdichte — Belichtung, Gamma und ClippingExplore another aspect of this fieldLabor zur Merkmalserkennung — Harris und Shi–Tomasi vergleichen