Dieses Kapitel enthält Informationen zur Kalibrierung von Kameras.
Um maximale Messgenauigkeit für einen Kameraaufbau zu erzielen muss dieser entsprechend kalibriert werden. Daher wird ein Kameramodell berechnet, welches die Projektion eines 3D-Weltpunktes auf ein (Sub-)Pixel des Bildes beschreibt.
In HALCON wird eine Vielzahl an Operatoren zur Verfügung gestellt um diverse Aufgabenstellungen aus dem Bereich der Kalibrierung bewältigen zu können, darunter
die Beschreibung und Erkennung von Kalibrierobjekten (Kalibrierung / Kalibrierkörper),
die Projektion von Punkten aus 3D-Szenen auf die Bildebene und umgekehrt (Kalibrierung / Projektion, Kalibrierung / Inverse Projektion),
die Kompensation perspektivischer und radialer Verzerrungen (Kalibrierung / Rektifizierung),
die Handhabung der Kameraparameter Kalibrierung / Kameraparameter),
die Durchführung einer Selbstkalibrierung (Kalibrierung / Selbst-Kalibrierung), und
die Kalibrierung verschiedener Kameraaufbauten, bestehend aus
einer Kamera (Kalibrierung / Monokular),
mehrerer Kameras (Kalibrierung / Binokular, Kalibrierung / Mehrbild), oder
einer Kombination aus Kamera und Roboter (Kalibrierung / Hand-Auge).
Dieses Kapitel gibt Empfehlungen bezüglich des grundlegenden Konzepts zur Berechnung der internen und externen Parameter einer Kamera. Die folgenden Paragraphen beschreiben, wie eine Kamera erfolgreich kalibriert wird. Insbesondere werden darin
das benötigte Kalibrierobjekt,
die einzelnen Schritte der Kamerakalibrierung, darunter
wie die Vorbereitung der Eingabedaten erfolgt,
wie die Kalibrierung mittels
durchgeführt wird und
calibrate_cameras
wie der Erfolg der Kalibrierung überprüft werden kann
die Kameraparameter,
zusätzliche Informationen über den Kalibrierprozess, darunter
wie eine geeignete Kalibrierplatte bezogen werden kann,
wie eine Reihe geeigneter Bilder aufgenommen werden kann, und
welches Verzeichnungsmodell verwendet werden sollte,
die zur Verfügung stehenden 3D-Kameramodelle und wie 3D-Punkte in das Bildkoordinatensystem transformiert werden, und
Beschränkungen bezogen auf einzelne Kameratypen
beschrieben.
Für eine erfolgreiche Kalibrierung wird mindestens ein Kalibrierobjekt mit genau bekannten metrischen Abmessungen benötigt, z.B. eine HALCON-Kalibrierplatte. Für die Kalibrierung nehmen Sie eine Serie von Bildern des Kalibrierobjektes in unterschiedlichen Orientierungen auf. Der Erfolg der Kalibrierung hängt in hohem Maße von der Qualität der Kalibrierbilder ab. Deshalb wird bei der Aufnahme der Kalibrierbilder hohe Sorgfalt empfohlen. Siehe den Abschnitt „Wie nehme ich geeignete Bilder auf?" für weitere Informationen.
Eine Kalibrierplatte ist mit einer Vielzahl von Kalibriermarken bedeckt, welche auf den Kalibrierbildern extrahiert werden um ihre Koordinaten zu bestimmen. Der Ursprung des lokalen Koordinatensystems der Platte liegt im Schwerpunkt der Marken. Die Orientierung der Platte muss genau bestimmbar sein, daher ist auch ein Suchmuster Teil des Aufdrucks.
Ihr lokaler Vertrieb bietet zur Kamerakalibrierung zwei verschiedene HALCON-Kalibrierkörper an:
Als Suchmuster weisen gewisse Marken kreisförmige Löcher auf
(siehe
). Ein Suchmuster muss sichtbar sein um
die Kalibrierplatte zu lokalisieren, um festzustellen ob sie invertiert
ist müssen mindestens zwei Suchmuster zu sehen sein. Folglich muss die
Platte nicht vollständig auf dem Bild sichtbar sein.
Der Ursprung des Koordinatensystems liegt in der Mitte der zentralen Marke
des ersten Suchmusters.
Die z-Achse des Koordinatensystems zeigt in den Kalibrierkörper hinein,
die x-Achse (in z-Richtung blickend) nach rechts und die y-Achse nach unten.
Wird zur Kalibrierung create_caltab
statt
camera_calibration
genutzt, ist diese Platte nicht verwendbar.
calibrate_cameras
gen_caltab
).
Entsprechend muss die Kalibrierplatte vollständig im Bild sichtbar sein.
Der Ursprung des Koordinatensystems liegt im Mittelpunkt der
Kalibrierkörperoberfläche.
Die z-Achse des Koordinatensystems zeigt in den Kalibrierkörper hinein,
die x-Achse (in z-Richtung blickend) nach rechts und die y-Achse nach unten.
Vor dem Aufruf des Operators
sollten
die benötigten Daten im Kalibrierdatenmodell gesammelt werden.
Dabei müssen diese Schritte befolgt werden:
calibrate_cameras
Erstellen des Kalibrierdatenmodells mit dem Operator
, wobei die Anzahl der Kameras und die
Anzahl der Kalibrierkörper im Modell festgelegt werden.
create_calib_data
Definieren des Kameratyps und der internen
Kameraparameter für alle Kameras mit dem Operator
.
set_calib_data_cam_param
Definieren der Kalibrierkörperbeschreibung für alle
Kalibrierkörper mit dem Operator
.
set_calib_data_calib_object
Sammeln von Beobachtungen mit den Operatoren
oder
find_calib_object
, d.h. die Bildkoordinaten
der extrahierten Kalibrierkörpermarker und eine grob geschätzte
Pose des Kalibrierkörpers relativ zur beobachtenden Kamera.
set_calib_data_observ_points
set_calib_data
gesetzt
werden. Wenn bestimmte Kameraparameter genau bekannt sind,
z.B. die Zellgrößen des Kamerasensors von Kamera 0, brauchen sie
nicht kalibriert zu werden. Das kann mit folgendem Aufruf konfiguriert
werden:
Mit Hilfe der Informationen die im Kalibrierdatenmodell gespeichert wurden,
kann die tatsächliche Kalibrierung mit dem Operator
durchgeführt werden. Dabei wird das Eingabemodell verändert indem die
initialen internen Kameraparameter optimiert und weitere Daten wie
externe Parameter und Standardabweichungen hinzugefügt werden.
Außerdem werden die Standardabweichungen und Kovarianzen der kalibrierten
internen Parameter und die Wurzel des mittleren quadratischen
Rückprojektionsfehlers (RMSE) berechnet, um den Erfolg der Kalibrierung
bewerten zu können.
calibrate_cameras
Die Ergebnisse können dann mit
abgefragt werden.
get_calib_data
Nach erfolgreicher Kalibrierung gibt der Operator
die Wurzel des mittleren quadratischen
Rückprojektionsfehlers (RMSE) der Optimierung im Parameter
calibrate_cameras
(in Pixel) zurück. Dieser Fehler gibt einen
allgemeinen Hinweis darauf, ob die Optimierung erfolgreich war, da er die
durchschnittlichen Abweichungen (in Pixeln) zwischen den zurück projizierten
Kalibrierpunkten und den errechneten Bildkoordinaten angibt.
Error
Bei der Kalibrierung von nur einer einzelnen Kamera ist ein Fehler in der Größenordnung von 0.1 Pixel (der typische Detektionsfehler beim Extrahieren der Koordinaten der projizierten Kalibrierkörpermarken) ein Hinweis dafür, dass die Optimierung gut zu den Beobachtungsdaten passt. Wenn der Fehler deutlich über 0.1 Pixel liegt, wurde die Kalibrierung nicht gut ausgeführt. Die Gründe hierfür können z.B. eine schlechte Bildqualität, eine unzureichende Anzahl an Kalibrierbildern oder auch eine fehlerhafte Kalibrierplatte sein.
Für Informationen zur Überprüfung der Kalibrierung eines Mehrbild-Kameraaufbaus siehe die Kapitelreferenz Kalibrierung / Mehrbild.
Die Kameraparameter werden unterschieden nach internen und externen Kameraparametern.
Die internen Kameraparameter beschreiben die Beschaffenheit der verwendeten Kamera, insbesondere die interne Sensorgröße und die Abbildungseigenschaften der verwendeten Kombination von Objektiv, Kamera und Framegrabber. Unten sehen Sie eine Übersicht über alle verfügbaren Kameratypen und deren jeweilige Parameter. In der Liste bezieht sich „projektive Kameras“ auf die Eigenschaft, dass das Objektiv eine perspektivische Projektion auf der Objektseite des Objektivs durchführt, während sich „telezentrische Kameras“ auf die Eigenschaft bezieht, dass das Objektiv eine telezentrische Projektion auf der Objektseite des Objektivs durchführt.
haben 9 bis 16 interne Parameter abhängig vom Kameratyp.
Aus weiter unten genannten Gründen werden die mit einem * Sternchen gekennzeichneten Parameter nicht vom Algorithmus geschätzt, sondern bleiben fest.
Projektive Flächenkameras mit normalen Objektiven
'area_scan_division'
:
['area_scan_division', Focus, Kappa, Sx, Sy*, Cx,
Cy, ImageWidth, ImageHeight]
'area_scan_polynomial'
:
['area_scan_polynomial', Focus, K1, K2, K3, P1, P2,
Sx, Sy*, Cx, Cy, ImageWidth, ImageHeight]
Telezentrische Flächenkameras mit normalen Objektiven
'area_scan_telecentric_division'
:
['area_scan_telecentric_division', Magnification,
Kappa, Sx, Sy*, Cx, Cy, ImageWidth, ImageHeight]
'area_scan_telecentric_polynomial'
:
['area_scan_telecentric_polynomial', Magnification,
K1, K2, K3, P1, P2, Sx, Sy*, Cx, Cy, ImageWidth, ImageHeight]
Projektive Flächenkameras mit Tiltobjektiven
'area_scan_tilt_division'
:
['area_scan_tilt_division', Focus, Kappa,
ImagePlaneDist, Tilt, Rot, Sx, Sy*, Cx, Cy, ImageWidth, ImageHeight]
'area_scan_tilt_polynomial'
:
['area_scan_tilt_polynomial', Focus, K1, K2, K3, P1,
P2, ImagePlaneDist, Tilt, Rot, Sx, Sy*, Cx, Cy, ImageWidth,
ImageHeight]
'area_scan_tilt_image_side_telecentric_division'
:
['area_scan_tilt_image_side_telecentric_division',
Focus, Kappa, Tilt, Rot, Sx*, Sy*, Cx, Cy, ImageWidth, ImageHeight]
'area_scan_tilt_image_side_telecentric_polynomial'
:
['area_scan_tilt_image_side_telecentric_polynomial',
Focus, K1, K2, K3, P1, P2, Tilt, Rot, Sx*, Sy*, Cx, Cy,
ImageWidth, ImageHeight]
Telezentrische Flächenkameras mit Tiltobjektiven
'area_scan_tilt_bilateral_telecentric_division'
:
['area_scan_tilt_bilateral_telecentric_division',
Magnification, Kappa, Tilt, Rot, Sx*, Sy*, Cx, Cy,
ImageWidth, ImageHeight]
'area_scan_tilt_bilateral_telecentric_polynomial'
:
['area_scan_tilt_bilateral_telecentric_polynomial',
Magnification, K1, K2, K3, P1, P2, Tilt, Rot, Sx*, Sy*, Cx,
Cy, ImageWidth, ImageHeight]
'area_scan_tilt_object_side_telecentric_division'
:
['area_scan_tilt_object_side_telecentric_division',
Magnification, Kappa, ImagePlaneDist, Tilt, Rot, Sx, Sy*,
Cx, Cy, ImageWidth, ImageHeight]
'area_scan_tilt_object_side_telecentric_polynomial'
:
['area_scan_tilt_object_side_telecentric_polynomial',
Magnification, K1, K2, K3, P1, P2, ImagePlaneDist, Tilt,
Rot, Sx, Sy*, Cx, Cy, ImageWidth, ImageHeight]
Projektive Flächenkameras mit hyperzentrischen Objektiven
'area_scan_hypercentric_division'
:
['area_scan_hypercentric_division', Focus, Kappa, Sx, Sy*,
Cx, Cy, ImageWidth, ImageHeight]
'area_scan_hypercentric_polynomial'
:
['area_scan_hypercentric_polynomial', Focus, K1, K2, K3, P1,
P2, Sx, Sy*, Cx, Cy, ImageWidth, ImageHeight]
Typ der Kamera, wie oben aufgelistet.
Brennweite des Objektivs (nur für Kameras mit Objektiven, die auf der Objektseite eine perspektivische Projektion durchführen).
Startwert ist gleich der nominalen Brennweite des verwendeten Objektivs, also beispielsweise 0.008 m.
Vergrößerungsmaßstab des Objektivs (nur für Kameras mit Objektiven, die auf der Objektseite eine telezentrische Projektion durchführen).
Startwert ist der nominale Vergrößerungsmaßstab des verwendeten telezentrischen Objektivs (Bildgröße geteilt durch Objektgröße), beispielsweise 0.2.
Verzeichnungskoeffizient zur Modellierung der radialen Verzeichnungen mit dem Divisionsmodell.
Startwert: 0.0 .
Verzeichnungskoeffizienten zur Modellierung der radialen () und tangentialen () Verzeichnung mit dem Polynommodell.
Startwert für alle fünf Koeffizienten: 0.0
Abstand der Austrittspupille zur Bildebene. Die Austrittspupille ist das (virtuelle) Bild der Aperturblende (typischerweise die Irisblende), betrachtet von der Bildseite des Objektivs. Typische Werte liegen in der Größenordnung von wenigen Zentimetern bis zu sehr großen Werten, falls das Objektiv fast bildseitig telezentrisch ist.
Der Tiltwinkel , um den die optische Achse im Vergleich zur Normalen der Bildebene verkippt ist (entspricht einer Drehung um die x-Achse), und der Rotationswinkel , der beschreibt, in welche Richtung die optische Achse gekippt ist. Bei einer Rotation von wird die optische Achse vertikal um den Tiltwinkel nach unten (bezüglich des Kameragehäuses) gekippt, entspricht einer Verkippung nach links (Blickrichtung entlang der z-Achse), nach oben, und bei wird die optische Achse um den Winkel nach rechts gekippt.
Diese Parameter werden nur benötigt, falls ein Tiltobjektiv verwendet wird.Diese Winkel sind typischerweise aus den Überlegungen, die zur Verwendung des Tiltobjektivs geführt haben, bekannt oder können von dem Mechanismus, der zur Verkippung des Objektivs verwendet wird, abgelesen werden.
Skalierungsfaktoren. Entsprechen dem horizontalen und vertikalen Abstand zweier benachbarter Zellen auf dem Sensor. Da in der Regel das Bildsignal zeilensynchron ausgelesen wird, ist durch die Größe des Sensors exakt festgelegt und muss daher nicht durch die Kalibrierung bestimmt werden.
Die Startwerte für den Abstand zweier benachbarter Zellen hängen von der Größe des Chips der verwendeten Kamera ab und können den technischen Daten der Kamera entnommen werden. Vorsicht: Bei Unterabtastung des Bildes erhöhen sich diese Werte!
Da projektive Flächenkameras durch das Modell einer
Lochkamera mit Flächensensor beschrieben werden, ist es unmöglich,
, und
gleichzeitig zu bestimmen. Daher wird nicht
optimiert, sondern bleibt fest.Focus
Für telezentrische Objektive ist es
unmöglich, Magnification
,
und gleichzeitig zu bestimmen.
Daher wird nicht optimiert, sondern bleibt fest.
Bei bildseitig telezentrischen Tiltobjektiven ist es
unmöglich,
, , und
die Verkippungsparameter und
gleichzeitig zu bestimmen. Daher wird zusätzlich
nicht optimiert, sondern bleibt fest. Focus
Bei beidseitig
telezentrischen Tiltobjektiven ist es unmöglich,
Magnification
, , und
die Verkippungsparameter und
gleichzeitig zu bestimmen. Daher wird zusätzlich
nicht optimiert, sondern bleibt fest.
Spalten- () und Zeilenkoordinate () des Kamerahauptpunktes (Zentrum der radialen Verzeichnung).
Startwerte für die Koordinaten des Kamerahauptpunktes sind die halbe Bildbreite bzw. -höhe. Hinweis: Bei Unterabtastung des Bildes verringern sich die Werte entsprechend!
Breite und Höhe des abgetasteten Bildes. Vorsicht: Bei Unterabtastung des Bildes verringern sich diese Werte!
haben 12 oder 16 interne Parameter abhängig vom Kameratyp.
Aus weiter unten genannten Gründen werden die mit einem * Sternchen gekennzeichneten Parameter nicht vom Algorithmus geschätzt, sondern bleiben fest.
Projektive Zeilenkameras mit normalen Objektiven
'line_scan_division'
:
['line_scan_division', Focus, Kappa, Sx*, Sy*, Cx,
Cy, ImageWidth, ImageHeight, Vx, Vy, Vz]
'line_scan_polynomial'
:
['line_scan_polynomial', Focus, K1, K2, K3, P1, P2,
Sx*, Sy*, Cx, Cy, ImageWidth, ImageHeight, Vx, Vy, Vz]
Telezentrische Zeilenkameras mit normalen Objektiven
'line_scan_telecentric_division'
:
['line_scan_telecentric_division', Magnification,
Kappa, Sx*, Sy*, Cx, Cy, ImageWidth, ImageHeight, Vx, Vy, Vz*]
'line_scan_telecentric_polynomial'
:
['line_scan_telecentric_polynomail', Magnification,
K1, K2, K3, P1, P2, Sx*, Sy*, Cx, Cy, ImageWidth,
ImageHeight, Vx, Vy, Vz*]
Typ der Kamera, wie oben aufgelistet.
Brennweite des Objektivs (nur für Kameras mit Objektiven, die auf der Objektseite eine perspektivische Projektion durchführen).
Startwert ist gleich der nominalen Brennweite des verwendeten Objektivs, also beispielsweise 0.008 m.
Vergrößerungsmaßstab des Objektivs (nur für Kameras mit Objektiven, die auf der Objektseite eine telezentrische Projektion durchführen).
Startwert ist der nominale Vergrößerungsmaßstab des verwendeten telezentrischen Objektivs (Bildgröße geteilt durch Objektgröße), beispielsweise 0.2.
Verzeichnungskoeffizient zur Modellierung der radialen Verzeichnung mit dem Divisionsmodell.
Startwert: 0.0 .
Verzeichnungskoeffizienten zur Modellierung der radialen () und tangentialen () Verzeichnung mit dem Polynommodell.
Startwert für alle fünf Koeffizienten: 0.0
Skalierungsfaktor. Entspricht dem horizontalen Abstand zweier
benachbarter Zellen auf der Sensorzeile. Es ist zu beachten,
dass Focus
bzw. Magnification
und
nicht gleichzeitig bestimmt werden können.
Deshalb wird in der Kalibrierung festgehalten.
Der Startwert für den Abstand zweier benachbarter Zellen kann
den technischen Daten der Kamera entnommen werden. Vorsicht:
Bei Unterabtastung des Bildes erhöht sich dieser Wert!
Skalierungsfaktor, der im Rahmen der Kalibrierung nur in der Form auftritt. Daher können und nicht gleichzeitig bestimmt werden. Deshalb wird in der Kalibrierung fest gehalten. beschreibt den Abstand des Kamerahauptpunktes von der Sensorzeile in Metern. Der Startwert für die Größe einer Zelle senkrecht zur Richtung der Sensorzeile kann ebenfalls den technischen Daten der Kamera entnommen werden. Vorsicht: Bei Unterabtastung des Bildes erhöht sich der Wert von !
Spaltenkoordinate des Kamerahauptpunktes (Zentrum der radialen Verzeichnung).
Der Startwert für die x-Koordinate des Kamerahauptpunktes ist die halbe Bildbreite, d.h. die halbe Anzahl von Pixeln des Zeilensensors. Hinweis: Bei Unterabtastung des Bildes verringert sich der Wert für entsprechend!
Abstand des Kamerahauptpunktes (Zentrum der radialen Verzeichnung) von der Sensorzeile in Bildzeilen. Der Startwert für die y-Koordinate des Kamerahauptpunktes ist normalerweise 0.
Breite und Höhe des abgetasteten Bildes. Vorsicht: Bei Unterabtastung des Bildes verringern sich diese Werte!
Die x-, y- und z-Komponenten des Bewegungsvektors. Die Startwerte für die x-, y- und z-Komponente des Bewegungsvektors hängen vom Aufbau des gesamten Aufnahmesystems ab. Blickt die Kamera beispielsweise senkrecht auf ein Fließband, und ist dabei so um ihre optische Achse gedreht, dass die Sensorzeile senkrecht zur Bewegungsrichtung des Fließbandes steht, dass also die y-Achse des Kamerakoordinatensystems parallel zur Bewegungsrichtung des Fließbandes ausgerichtet ist, so sind die Startwerte = = 0. Der Startwert für lässt sich dann aus der Aufnahme eines Objektes dessen Größe bekannt ist (z.B. Kalibrierplatte, Lineal) folgendermaßen bestimmen:
Mit:
Wird die Kamera gegenüber diesem Aufbau z.B. um 30 Grad um die optische Achse, also die z-Achse des Kamerakoordinatensystems gedreht, so sind die oben bestimmten Startwerte folgendermaßen zu verändern:
Wenn die Kamera gegenüber dem ursprünglichen Aufbau z.B. um -20 Grad um die x-Achse des Kamerakoordinatensystems gedreht wird, so ergeben sich folgende Startwerte:
Die Qualität der Startwerte für , und ist entscheidend für den Erfolg der gesamten Kalibrierung. Werden zu schlechte Startwerte verwendet, kann dies zum Abbruch der Kamerakalibrierung führen.
Es ist zu beachten, dass für telezentrische Zeilenkameras der Wert von keinen Einfluss auf die Bildposition von 3D-Punkten hat und daher nicht bestimmt werden kann. Deswegen wird für telezentrische Zeilenkameras nicht optimiert und auf dem Startwert belassen. Der Startwert von sollte daher auf 0 gesetzt werden. Für Aufbauten mit mehreren telezentrischen Zeilenkameras, die einen gemeinsamen Bewegungsvektor besitzen (für eine genauere Erklärung siehe Kalibrierung / Mehrbild), kann hingegen basierend auf der Pose der Kameras bestimmt werden. Daher wird in diesem Fall optimiert.
Zu beachten ist, dass die Bezeichnung Focus im Allgemeinen nicht der realen Brennweite entspricht, wenn die Objektweite nicht unendlich ist. Der Einfachheit halber wird hier aber nicht zwischen Brennweite und Bildweite unterschieden.
Prüfen Sie für alle Operatoren, die Kameraparameter als Eingabe verwenden, ob die Werte der jeweiligen Kameraparameter folgende Restriktionen erfüllen:
Für manche Operatoren gibt es kleine Unterschiede in den Restriktionen. Im Speziellen für Operatoren, die Lochkameras mit Zeilensensor nicht unterstützen, gilt folgende Restriktion:
Die folgenden 6 Parameter beschreiben die 3D-Lage (Pose) des Weltkoordinatensystems relativ zum Kamerakoordinatensystem. Die x- und y-Achse des Kamerakoordinatensystems sind parallel zur Zeilen- und Spaltenachse der Abbildung, während die z-Achse rechtwinklig auf der Bildebene steht. Bei Kameras mit Zeilensensor bezieht sich die Pose des Weltkoordinatensystems auf das Kamerakoordinatensystem der ersten Bildzeile.
Translation entlang der x-Achse des Kamerakoordinatensystems.
Translation entlang der y-Achse des Kamerakoordinatensystems.
Translation entlang der z-Achse des Kamerakoordinatensystems.
Rotationswinkel um die x-Achse des Kamerakoordinatensystems.
Rotationswinkel um die y-Achse des Kamerakoordinatensystems.
Rotationswinkel um die z-Achse des Kamerakoordinatensystems.
Zusätzlich ist in dem Tupel, das die Pose beschreibt, als
siebtes Element der Darstellungstyp enthalten. Dieser codiert die
Kombination der Parameterwerte
,
OrderOfTransform
und OrderOfRotation
. Für detaillierte
Informationen zu Posen siehe ViewOfTransform
.
create_pose
Bei Benutzung einer HALCON-Kalibrierplatte definiert deren Koordinatensystem das Weltkoordinatensystem. Siehe dazu den obigen Abschnitt „Kalibrierobjekt“.
Startwerte für alle Parameter können bei Verwendung einer
HALCON-Kalibrierplatte mit dem Operator
gewonnen werden. Alternativ kann bei HALCON-Kalibrierplatten mit
rechteckiger Markenanordnung auch eine
Kombination der beiden Operatoren find_calib_object
und
find_caltab
verwendet werden.
find_marks_and_pose
Die HALCON-Kalibrierplatten verwenden Meter als Einheit. Die Kameraparameter gehen von entsprechenden Einheiten aus. Selbstverständlich kann die Kalibrierung auch in anderen Einheiten durchgeführt werden, doch müssen dann die zugehörigen Parameter adaptiert werden. Unten werden die HALCON Standard-Einheiten gelistet:
Parameter | Einheit | |
---|---|---|
Extern | RotX, RotY, RotZ | , , |
TransX, TransY, TransZ | , , | |
Intern | Cx, Cy | , |
Focus | ||
ImagePlaneDist | ||
ImageWidth, ImageHeight | , | |
K1, K2, K3 | , , | |
Kappa | ||
P1, P2 | , | |
Magnification | - (Skalar) | |
Sx, Sy | , | |
Tilt, Rot | , | |
Vx, Vy, Vz | , , |
Die folgenden Abschnitte befassen sich jeweils mit einzelnen Fragen,
die sich bei der Verwendung von
stellen
und sollen daher sowohl dem Verständnis als auch als Leitfaden für
die eigene Anwendung dienen.
calibrate_cameras
Hochgenaue Kalibrierkörper können Sie in verschiedenen Größen und
Materialien über Ihren lokalen HALCON-Vertrieb erhalten. Diese
Kalibrierplatten werden mit dazugehörigen Beschreibungsdateien
ausgeliefert und können einfach mit
extrahiert werden.
find_calib_object
Es ist auch möglich, beliebige Objekte zur Kalibrierung zu
verwenden. Einzige Voraussetzung ist, dass der Kalibrierkörper
charakteristische Merkmalspunkte aufweist, die robust in Bildern
erkannt werden können und deren 3D-Weltkoordination hochgenau
bekannt sind. Siehe den „Solution Guide III-C 3D Vision“
für
weitere Informationen.
Selbst ausgedruckte Kalibrierplatten sind normalerweise nicht genau genug für Anwendungen mit hohen Präzisionsanforderungen.
Mit der zu kalibrierenden Kombination aus
Objektiv (mit fester Scharfstellung), Kamera und Framegrabber wird
der Kalibrierkörper aufgenommen, vgl.
bzw. open_framegrabber
.
grab_image
Ihr lokaler Vertrieb bietet zur Kamerakalibrierung zwei verschiedene
HALCON-Kalibrierkörper an: Kalibrierplatten mit hexagonaler
Markenanordnung (siehe
) und Kalibrierplatten
mit rechteckiger Markenanordnung (siehe create_caltab
). Da sich
die beiden Kalibrierkörper deutlich voneinander unterscheiden sind
bei deren Verwendung neben den allgemeinen Hinweisen zusätzliche,
kalibrierplattenspezifische Besonderheiten zu beachten (siehe unten):
gen_caltab
Die Parameter und Hinweise in der folgenden Liste sollten bei der Aufnahme von Kalibrierbildern beachtet werden. Für eine erfolgreiche Kalibrierung müssen der Kameraaufbau und die Bilder gewissen Qualitätsansprüchen genügen. Diese Ansprüche sind von der Aufgabe und den damit verbunden Anforderungen abhängig. Um eine Orientierungshilfe zu geben werden hier Empfehlungen für einen einfachen Aufbau mit einer Kamera gegeben.
Es ist zu beachten, dass sich je nach Anwendungsbereich und verwendetem Kalibrierobjekt die optimalen Eigenschaften der Kalibrierbilder unterscheiden können. Die folgenden Werte und Hinweise sind Empfehlungen für einen Kameraaufbau mit einer Kamera.
Blende Die Blendeneinstellung der Kamera darf während der Aufnahmen nicht verändert werden. Wird die Blende nach der Kalibrierung verändert muss die Kamera neu kalibriert werden.
Kamerapose Die Position der Kamera darf während der Aufnahme der Bilder nicht verändert werden.
Fokus Die Kalibrierbilder sollten möglichst scharfgestellt sein, d.h. Übergänge zwischen Objekten sollten klar abgetrennt sein. Der Fokus, beziehungsweise die Brennweite darf während der Aufnahme der Bilder nicht verändert werden.
Sichtfeldabdeckung und Ausrichtung Durch die Serie von Kalibrierbildern sollte jeder Teil des Kamerasichtfeldes mindestens einmal durch eine Platte abgedeckt werden. Die Kalibrierplatte kann dabei auch das gesamte Sichtfeld ausfüllen. Die Orientierung der Platte sollte innerhalb der Serie von Bildern variieren.
Verkippung Die Serie von Kalibrierbildern sollte außerdem Bilder von gekippten Kalibrierplatten enthalten. Dabei sollte die Platte in verschiedene Richtungen um einen Winkel von etwa 30-45° gekippt werden. Falls der empfohlene Winkel nicht erreicht werden kann, z.B. wegen begrenzter Tiefenschärfe, sollte die Platte zumindest so weit wie mit dem Kameraaufbau möglich gekippt werden.
Anzahl Bilder/ Posen der Kalibrierplatte
Platte mit hexagonal angeordneten Marken: Mindestens 6 Bilder (Nicht alle, aber mindestens 4 davon mit gekippter Platte).
Platte mit rechteckig angeordneten Marken: Mindestens 15 Bilder.
Nichtsdestotrotz müssen die Posen der Kalibrierplatten auch die weiteren Anforderungen erfüllen.
Seitenverkehrte Aufnahme der Platte Die Kalibrierplatte darf nicht seitenverkehrt aufgenommen werden. Dies kann beispielsweise der Fall sein wenn eine Kalibrierplatte aus Glas verwendet wird und ihre Rückseite aufgenommen wird oder wenn eine Zeilenkamera sich nicht nach unten in Bezug auf das Bildkoordinatensystem bewegt (d.h. falls negativ ist).
Abdeckung der Kalibriermarken Wie viel von den Kalibriermarken mindestens im Bild enthalten sein muss hängt von der verwendeten Kalibrierplate ab.
Platte mit hexagonal angeordneten Marken: Mindestens ein Suchmuster muss sichtbar sein. Wenn mindestens zwei Suchmuster zu sehen sind kann erkannt werden, ob die Kalibrierplatte gespiegelt ist. In diesem Fall wird ein entsprechender Fehler zurückgegeben.
Platte mit rechteckig angeordneten Marken: Platte muss komplett sichtbar sein, da das Suchmuster der Rahmen ist, der die Kalibriermarken umgibt.
Dennoch ist es besser, wenn mehr Kalibriermarken für die Kamera sichtbar sind und mehr vom Sichtfeld durch die Kalibrierplatte ausgefüllt ist.
Markendurchmesser Die Marken der Kalibrierplatte sollten in jedem Bild mindestens einen Durchmesser von 20 Pixeln aufweisen. Diese Anforderung ist essentiell für eine erfolgreiche Kalibrierung.
Kontrast Der Kontrast zwischen hellen und dunklen Bereichen der Kalibrierplatte sollte mindestens 100 Grauwerte betragen (bezogen auf Byte-Bilder).
Überbelichtung Um Überbelichtung zu vermeiden sollten Grauwerte einen Wert von 240 (bezogen auf Byte-Bilder), besonders in der Nähe von Kalibriermarken, nicht überschreiten.
Homogenität Die Kalibrierplatte sollte homogen beleuchtet werden und Reflexionen sollten vermieden werden. Als grobe Faustregel sollte der Wertebereich der hellen Plattenbereiche 45 Grauwerte nicht überschreiten (bezogen auf Byte-Bilder).
Es stehen zwei unterschiedliche Verzeichnungsmodelle zur Verfügung: Das Divisionsmodell und das Polynommodell. Das Divisionsmodell verwendet einen Parameter, um die radiale Verzeichnung zu modellieren, während das Polynommodell fünf Parameter verwendet, um die radiale Verzeichnung und die tangentiale Verzeichnung zu modellieren (siehe die Abschnitte „Kameraparameter“ und „Zugrundeliegendes 3D-Kameramodell“).
Der Vorteil des Divisionsmodells ist, dass die Korrektur der Verzeichnung schneller berechnet werden kann, insbesondere, wenn Weltkoordinaten in ein verzeichnetes Bild projiziert werden und die Verzeichnung somit in der umgekehrten Richtung angebracht werden muss. Des Weiteren liefert das Divisionsmodell typischerweise stabilere Ergebnisse, wenn nur wenige Kalibrierbilder verwendet werden oder das Sichtfeld nicht ausreichend durch Kalibrierkörper abgedeckt ist. Der Hauptvorteil des Polynommodells ist, dass es die Verzeichnung genauer modellieren kann, weil einerseits Terme höherer Ordnung zur Modellierung der radialen Verzeichnung verwendet werden und andererseits auch die tangentiale Verzeichnung modelliert wird.
Normalerweise sollte das Divisionsmodell für die Kalibrierung verwendet werden. Reicht die Genauigkeit der Kalibrierung nicht aus, kann das Polynommodell verwendet werden. Hierbei ist dann aber besonders darauf zu achten, dass durch die Folge von Kalibrierbildern das gesamte Gebiet abgedeckt werden muss, in dem später gemessen werden soll. Die Verzeichnungskorrektur kann außerhalb des Gebietes, das durch Kalibrierkörper abgedeckt ist, fehlerhaft sein. Dies gilt sowohl für die Bildränder als auch für Bereiche innerhalb des Bildes, die nicht durch einen Kalibrierkörper abgedeckt sind.
Ganz allgemein bedeutet Kamerakalibrierung, diejenigen Parameter exakt zu bestimmen, die die (optische) Abbildung eines beliebigen 3D-Weltpunktes im Raum auf ein (Sub-)Pixel (r,c) im Bild modellieren. Dies ist insbesondere von Bedeutung, wenn aus dem Kamerabild die ursprüngliche räumliche Lage von Gegenständen im Bild bestimmt werden soll, beispielsweise bei der Vermessung von Werkstücken. Das passende Projektionsmodell ist von den verwendeten Kameratypen abhängig.
Für die Modellierung dieses Abbildungsvorganges, der durch die Kombination von Kamera, Objektiv und Framegrabber festgelegt ist, stellt HALCON die folgenden 3D-Kameramodelle zur Verfügung:
Die Kombination einer Kamera mit Flächensensor und einem Objektiv, das auf der Objektseite eine perspektivische Projektion durchführt, und das radiale und tangentiale Verzeichnung aufweisen kann. Das Objektiv kann ein Tiltobjektiv sein, d.h. die optische Achse kann schräg zum Sensor der Kamera stehen (dies wird manchmal auch als Scheimpflug-Objektiv bezeichnet). Da auch hyperzentrische Objektive eine perspektivische Projektion durchführen, sind Kameras mit hyperzentrischen Objektiven ebenfalls Lochkameras. Die Modelle für normale (d.h. nicht verschwenkbare) perspektivische oder bildseitig telezentrische Objektive sind identisch. Im Gegensatz hierzu unterscheiden sich die Modelle für perspektivische und bildseitig telezentrische Tiltobjektive erheblich, wie unten beschrieben.
Die Kombination einer Kamera mit Flächensensor mit einem Objektiv, das auf der Objektseite eine telezentrische Projektion (also eine Parallelprojektion) durchführt, und das radiale und tangentiale Verzeichnung aufweisen kann. Das Objektiv kann ein Tiltobjektiv sein. Die Modelle für normale (d.h. nicht verschwenkbare) beidseitig oder objektseitig telezentrische Objektive sind identisch. Im Gegensatz hierzu unterscheiden sich die Modelle für beidseitig und objektseitig telezentrische Tiltobjektive erheblich, wie unten beschrieben.
Die Kombination einer Kamera mit Zeilensensor mit einem zentralperspektivisch abbildenden Objektiv, das radiale Verzeichnung aufweisen kann. Tiltobjektive werden derzeit nicht für Zeilenkameras unterstützt.
Die Kombination einer Kamera mit Zeilensensor mit einem telezentrisch abbildenden Objektiv, das radiale Verzeichnung aufweisen kann. Tiltobjektive werden derzeit nicht für Zeilenkameras unterstützt.
Um einen 3D-Punkt in Weltkoordinaten in einen 2D-Punkt in Pixelkoordinaten umzuwandeln, ist eine Kette von Transformationen notwendig:
3D Punkt in Weltkoordinaten | |
3D Punkt, transformiert in das Kamerakoordinatensystem | |
Punkt, projiziert in die Bildebene (in metrischen Koordinaten) | |
Punkt unter Berücksichtigung der Linsenverzeichnung | |
Bei Verwendung eines Tiltobjektivs liegt nur auf einer virtuellen Bildebene eines Systems ohne Tiltobjektiv. In diesem Fall wird auf den Punkt in der gekippten Bildebene projiziert. | |
Bildpunkt in Pixelkoordinaten |
Im Folgenden werden die einzelnen Schritte genauer erläutert. Für eine noch
detailliertere Ausführung und Modellskizzen verweisen wir auf das Kapitel
„Basics“, Abschnitt „Camera Model and Parameters“ im
„Solution Guide III-C 3D Vision“
.
Der Punkt wird vom Welt- in das
Kamerakoordinatensystem transformiert (Punkte in Form von homogenen
Vektoren, vgl.
):
mit und als
Rotations- und Translationsmatritzen (siehe Kapitel „Basics“, Abschnitt
„3D Transformations and Poses“ im
affine_trans_point_3d
„Solution Guide III-C 3D Vision“
für detaillierte Informationen).
Falls als Kameramodell das einer Lochkamera mit Flächensensor verwendet wird, wird die Projektion von in die Bildebene mit der folgenden Gleichung beschrieben: wobei ist. Für Kameras mit hyperzentrischen Objektiven gilt:
Falls eine telezentrische Kamera mit Flächensensor verwendet wird, wird die Projektion mit der folgenden Gleichung beschrieben: wobei ist.
Für alle Kameraarten kann die Verzeichnung entweder mit dem Divisionsmodell oder mit dem Polynommodell modelliert werden.
Das Divisionsmodell verwendet den Parameter
, um die radiale Verzeichnung zu modellieren.
Kappa
Die folgenden Gleichungen werden verwendet, um mit Hilfe des Divisionsmodells die in der Bildebene gegebenen verzeichneten Koordinaten in Koordinaten ohne Verzeichnungen zu transformieren:
Diese Gleichungen lassen sich analytisch invertieren. Dies führt zu den folgenden Gleichungen, die mit Hilfe des Divisionsmodells verzeichnungsfreie Koordinaten zu Koordinaten mit Verzeichnung transformieren:
Das Polynommodell verwendet drei Parameter (), um die radiale Verzeichnung zu modellieren und zwei Parameter (), um die tangentiale Verzeichnung zu modellieren.
Die folgenden Gleichungen werden verwendet, um mit Hilfe des Polynommodells die in der Bildebene gegebenen verzeichneten Koordinaten in Koordinaten ohne Verzeichnungen zu transformieren: mit
Diese Gleichungen sind nicht analytisch invertierbar. Daher müssen die verzeichneten Koordinaten numerisch aus den Koordinaten ohne Verzeichnungen bestimmt werden.
Falls es sich beim Objektiv um ein Tiltobjektiv handelt, wird die Verkippung des Objektivs relativ zur Bildebene durch die zwei Parameter und beschrieben.
Bei diesem Schritt muss, wie unten beschrieben, zwischen verschiedenen Arten
von Tiltobjektiven unterschieden werden. Siehe Kapitel „Basics“, Abschnitt
„Camera Model and Parameters“ im
„Solution Guide III-C 3D Vision“
für
einen Überblick über die verschiedenen Arten von Tiltobjektiven.
Für zentralperspektivisch abbildende Tiltobjektive und
objektseitig telezentrische Tiltobjektive (die eine
perspektivische Projektion auf der Bildseite des Objektivs
durchführen), wird die Projektion des Punktes in den Punkt , der in der
verkippten Bildebene liegt, durch eine projektive 2D-Transformation,
d.h. durch eine homogene 3×3-Matrix
, beschrieben (siehe
):
projective_trans_point_2d
wobei die zusätzliche Koordinate aus der projektiven Transformation eines homogenen Punktes ist. wobei und mit und .
Für bildseitig telezentrische Tiltobjektive und beidseitig telezentrische Tiltobjektive (die eine Parallelprojektion auf der Bildseite des Objektivs durchführen) wird die Projektion auf die verkippte Bildebene durch eine lineare 2D-Transformation, d.h. eine 2×2-Matrix, beschrieben: wobei definiert ist wie bei zentralperspektivisch abbildenden Objektiven.
Schließlich wird die Transformation des Punktes (bzw. falls ein Tiltobjektiv verwendet wurde) vom Koordinatensystem der Bildebene ins Pixelkoordinatensystem folgendermaßen beschrieben:
Für Kameras mit Zeilensensor muss auch die Relativbewegung zwischen Kamera und Objekt modelliert werden. In HALCON werden hierzu die folgenden Annahmen getroffen:
Die Kamera bewegt sich mit konstanter Geschwindigkeit entlang einer Geraden.
Die Orientierung der Kamera ist konstant.
Die Relativbewegung ist für alle Bilder gleich.
Diese Bewegung wird durch den Bewegungsvektor beschrieben. Dieser Vektor muss in der Einheit [Meter/Bildzeile] im Kamerakoordinatensystem gegeben sein. Er beschreibt die Bewegung der Kamera in Bezug auf ein unbewegtes Objekt. Dies ist äquivalent zu der Annahme einer unbewegten Kamera und einem Objekt, das sich entlang bewegt.
Das Kamerakoordinatensystem ist für Kameras mit Zeilensensor folgendermaßen definiert. Der Ursprung liegt im Projektionszentrum (für Lochkameras) bzw. im Zentrum der Verzeichnungen (für telezentrische Kameras). Die z-Achse ist mit der optischen Achse identisch und ist so orientiert, dass alle Punkte, die von der Kamera aus sichtbar sind, positive z-Koordinaten haben. Die y-Achse ist senkrecht zur Sensorzeile und zur z-Achse. Sie ist so orientiert, dass der Bewegungsvektor eine positive y-Komponente hat. Die x-Achse ist senkrecht zur y- und z-Achse. Sie ist so orientiert, dass x-, y- und z-Achse ein rechtshändiges Koordinatensystem bilden.
Da sich die Kamera während der Bildaufnahme über das Objekt bewegt,
bewegt sich auch das Kamerakoordinatensystem relativ zum Objekt.
Das bedeutet, dass jede Bildzeile von einer anderen Position aus
aufgenommen wird, dass es also prinzipiell für jede Bildzeile eine
eigene Pose gibt. Zur Vereinfachung beziehen sich in HALCON alle
Transformationen zwischen Weltkoordinaten und Kamerakoordinaten auf
die Pose der ersten Bildzeile. Die Bewegung wird bei der
Projektion des Punktes in das Bild
berücksichtigt. Infolgedessen wird vom Operator
auch nur die Pose der ersten Bildzeile
bestimmt (und von find_calib_object
in den
Kalibrierergebnissen gespeichert).
calibrate_cameras
Die Transformation von Welt- in Kamerakoordinaten () ist für Zeilenkameras identisch. Daher wird Transformationsschritt 1, wie oben beschrieben auch hier angewandt.
Für Lochkameras mit Zeilensensor ist die Abbildung des Punktes , der im Kamerakoordinatensystem gegeben ist, auf ein (Sub-)Pixel im Bild folgendermaßen definiert:
Mit muss das folgende Gleichungssystem nach , und aufgelöst werden: wobei und die Entzerrungsfunktionen sind, die oben für Flächenkameras beschrieben wurden, und ist.
Für telezentrische Kameras mit Zeilensensor muss das folgende Gleichungssystem nach und aufgelöst werden: wobei , und wie oben definiert sind.
Die obigen Formeln beinhalten bereits die Kompensation der Verzeichnungen.
Zum Schluss wird der Punkt ins Pixelkoordinatensystem transformiert:
Für Lochkameras gilt: Falls die
Kalibrierplatten in allen Bildern parallel zueinander sind
(insbesondere, falls sie alle in derselben Ebene liegen), ist es
unmöglich, den
gemeinsam mit allen sechs externen
Parametern zu bestimmen. So ist es z.B. unmöglich, in diesem Fall
Focus
und den Abstand der Kalibrierplatte zur Kamera zu
bestimmen. Um alle Kameraparameter eindeutig bestimmen zu können,
muss die Kalibrierplatte in unterschiedlichen Orientierungen in den
Bildern aufgenommen werden. Insbesondere sollte die Kalibrierplatte
um die x- und y-Achsen des Kamerakoordinatensystems verkippt werden,
d.h. sie sollte relativ zur Bildebene verkippt werden.
Focus
Bei telezentrischen Objektiven hat der Abstand der Kalibrierplatte zur Kamera keine Auswirkung auf das Bild der Kalibrierplatte und kann nicht bestimmt werden. Daher wird die z-Komponente der Ergebnis-Pose in den Kalibrierergebnissen auf 1 m gesetzt. Weiterhin kann, wie zuvor beschrieben, für Zeilenkameras mit telezentrischen Objektiven nicht bestimmt werden und wird daher auf seinem Startwert belassen, außer es handelt sich um einen Aufbau mit mehreren Kameras, die einen gemeinsamen Bewegungsvektor besitzen, wo bestimmt werden kann.
Für Tiltobjektive kann die Verkippung umso präziser
bestimmt werden, je größer die Verzeichnungen des Objektivs
sind. Für Objektive mit geringer Verzeichnung kann die Verkippung
nicht robust bestimmt werden. Daher können die optimierten
Verkippungsparameter möglicherweise signifikant von den nominalen
Verkippungsparametern des Aufbaus abweichen. In so einem Fall prüfen
Sie bitte
. Falls Error
klein ist, beschreibt
der optimierte Parametersatz die Abbildungsgeometrie innerhalb des
kalibrierten Volumens konsistent und kann für genaue Messungen
verwendet werden.
Error
Für perspektivische Tiltobjektive und objektseitig
telezentrische Tiltobjektive kann der Abstand der Bildebene nur
eindeutig bestimmt werden, falls der Tilt nicht 0 Grad ist. Je kleiner
der Tilt ist, desto ungenauer kann der Abstand der Bildebene
bestimmt werden. Daher kann der optimierte Abstand der Bildebene
möglicherweise signifikant vom nominalen Abstand der Bildebene des
Aufbaus abweichen. In so einem Fall prüfen Sie bitte
. Falls Error
klein ist, beschreibt der
optimierte Parametersatz die Abbildungsgeometrie innerhalb des
kalibrierten Volumens konsistent und kann für genaue Messungen
verwendet werden.
Error
Für perspektivische Tiltobjektive und objektseitig telezentrische Tiltobjektive, die um die horizontale oder vertikale Achse verschwenkt sind, d.h. für die der Rotationswinkel 0, 90, 180 oder 270 Grad beträgt, können der Tilt-Winkel , Skalierungsfaktor , die Brennweite (für perspektivische Tiltobjektive) bzw. der Vergrößerungsmaßstab (für objektseitig telezentrische Tiltobjektive) und der Abstand der verkippten Bildebene vom Zentrum der perspektivischen Projektion nicht eindeutig bestimmt werden. In diesem Fall sollte durch folgenden Aufruf von der Optimierung ausgeschlossen werden:
.
set_calib_data(CalibDataID, 'camera', 'general', 'excluded_settings', 'sx')
Weiterhin ist zu beachten, dass es für Tiltobjektive nur möglich ist, und gleichzeitig zu bestimmen. Dies beruht auf einer Implementationsentscheidung, die dazu führt, dass die Optimierung numerisch stabiler wird. Folglich können und von der Optimierung nur gemeinsam und mit folgendem Aufruf ausgeschlossen werden:
.
set_calib_data(CalibDataID, 'camera', 'general', 'excluded_settings', 'tilt')
Lochkameras mit Tiltobjektiven mit großer Brennweite haben näherungsweise ein telezentrisches Abbildungsverhalten. Auch in diesem Fall sind, wie bereits beschrieben, und die Verkippungsparameter und korreliert. Sie können gleichzeitig nur unpräzise bestimmt werden. In diesem Fall ist es ratsam, von der Optimierung auszuschließen.
Bei telezentrischen Objektiven gibt es immer zwei mögliche Lagen einer
Kalibrierplatte pro Bild. Daher ist es
unmöglich, zu entscheiden, welche der beiden Lagen tatsächlich
vorhanden ist. Diese Mehrdeutigkeit wirkt sich auch auf die
Schwenkparameter und von
telezentrischen Tiltobjektiven aus. Folglich kann die
Kamerakalibrierung, abhängig von den Startparametern für
und alternative Werte statt der
nominalen zurückliefern. In so einem Fall prüfen Sie bitte
. Falls Error
klein ist, beschreibt der
optimierte Parametersatz die Abbildungsgeometrie innerhalb des
kalibrierten Volumens konsistent und kann für genaue Messungen
verwendet werden.
Error
Bei Zeilenkameras mit dem polynomiellen Verzeichnungsmodell (sowohl für Lochkameras als auch für Kameras mit telezentrischen Objektiven) sind die Parameter und hochgradig korreliert mit anderen Parametern des Kameramodells. Daher können sie typischerweise nicht verlässlich bestimmt werden und sollten von der Kalibrierung durch den folgenden Aufruf ausgeschlossen werden:
.
set_calib_data(CalibDataID, 'camera', 'general', 'excluded_settings', 'poly_tan_2')