Dieses Kapitel beschreibt den Kalibriervorgang für verschiedene Mehrbild-Kameraaufbauten.
Um eine höchstmögliche Messgenauigkeit zu erreichen muss ein Kamerasystem entsprechend kalibriert werden. Dazu wird ein Kameramodell bestimmt, welches die (sub-)pixelgenaue Projektion eines 3D-Weltpunktes in ein Bild beschreibt.
Die folgenden Abschnitte erläutern die Durchführung der Kalibrierung verschiedener Kameraaufbauten. 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,
calibrate_cameras
wie der Erfolg der Kalibrierung überprüft werden kann, und
wie die Kalibrierergebnisse ausgelesen werden können,
die Kameraparameter,
zusätzliche Infromationen über den Kalibrierprozess,
die zur Verfügung stehenden 3D-Kameramodelle, und
Beschränkungen aufgrund einzelner Kameratypen
beschrieben.
Für eine erfolgreiche Kalibrierung wird mindestens ein
Kalibrierobjekt mit genau bekannten metrischen Abmessungen benötigt,
z.B. eine HALCON-Kalibrierplatte. Vor dem Aufruf von
nehmen Sie eine Serie von Bildern des
Kalibrierobjektes in unterschiedlichen Orientierungen auf, so dass
das gesamte Blickfeld bzw. Messvolumen ausgefüllt wird. 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.
calibrate_cameras
Im Folgenden wird der Kalibrierprozess im Detail erläutert:
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
. Zu beachten ist, dass nur Kameras
vom gleichen Typ in einem Aufbau kalibriert werden können.
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
Kalibrierprozess konfigurieren, z.B. die
Referenzkamera setzen oder bestimmte interne oder externe
Kameraparameter von der Optimierung ausschließen.
Kalibriereinstellungen für den ganzen Aufbau oder für einzelne
Kameras bzw. Kalibrierkörperposen können mit dem Operator
angepasst 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:
set_calib_data (CalibDataID, 'camera', 0, \
'excluded_settings', ['sx','sy']).
set_calib_data
Je nach Kameratypen, welche im Aufbau kalibriert werden, führt
die Kalibrierung auf unterschiedliche
Weisen durch. Während sich unterschiedliche Kameraaufbauten zum Teil in
ihren Anforderungen an die Bildaufnahme unterscheiden, sind die
grundsätzlichen Schritte des Kalibriervorgangs für Aufbauten mit projektiven
und/oder telezentrischen Kameras gleich:
calibrate_cameras
Kette von Beobachtungen bilden:
Im ersten Schritt versucht der Operator
eine durchgehende Kette von Beobachtungsposen zu
bilden, welche alle Kameras und Kalibrierobjektposen miteinander verbindet.
Je nach Kameraaufbau unterscheiden sich die Bedingungen für eine gültige
Kette von Posen. Die entsprechenden Anforderungen an die speziellen
Aufbauten werden in den entsprechenden Abschnitten unterhalb dieses
Paragraphs erläutert.
Falls eine Kamera nicht erreicht werden kann (d.h. die Kamera
beobachtet keine Kalibrierkörperpose, die in der Kette eingegliedert
ist), wird der Kalibrierprozess abgebrochen und ein Fehler
zurückgegeben. Ansonsten initialisiert der Algorithmus die Posen
aller Objekte im Aufbau beim Durchlaufen der Kette.
calibrate_cameras
Erste Optimierung:
In diesem Schritt optimiert
alle Kamera- und
Kalibrierkörperposeparameter, die nicht explizit von der Optimierung
ausgeschlossen wurden.
calibrate_cameras
Zweite Optimierung:
Hierbei korrigiert der Algorithmus anhand des soweit kalibrierten
Kameraaufbaus jene Beobachtungen, die Konturdaten enthalten (siehe
), und kalibriert den Aufbau zur
Berücksichtigung der Korrekturen erneut. Sollten keine
Konturbeobachtungsdaten im Modell vorhanden sein, wird dieser
Schritt übersprungen.
find_calib_object
Berechnung der Qualität der Parameterschätzung:
Im letzten Schritt berechnet
die
Standardabweichungen und die Kovarianzen der kalibrierten Kameraparameter.
calibrate_cameras
Die folgenden Abschnitte geben, wie erwähnt, weitere Details zur Kalibrierung verschiedener Kameraaufbauten. Außerdem werden Informationen zur Kalibrierung von Zeilenkameras aufgeführt.
Für einen Aufbau mit projektiven Flächenkameras
('area_scan_division'
, 'area_scan_polynomial'
,
'area_scan_tilt_division'
,
'area_scan_tilt_polynomial'
,
'area_scan_tilt_image_side_telecentric_division'
,
'area_scan_tilt_image_side_telecentric_polynomial'
,
'area_scan_hypercentric_division'
und
'area_scan_hypercentric_polynomial'
) wird
die Kalibrierung in den oben erläuterten vier Schritten durchgeführt.
Im ersten Schritt versucht der Algorithmus dabei, so wie in unten stehender
Abbildung zu sehen, eine Kette von Beobachtungsposen zu bilden, welche alle
Kameras und Kalibrierobjektposen verbindet.
(1) | (2) |
Für einen Aufbau mit telezentrischen Flächenkameras
('area_scan_telecentric_division'
,
'area_scan_telecentric_polynomial'
,
'area_scan_tilt_bilateral_telecentric_division'
,
'area_scan_tilt_bilateral_telecentric_polynomial'
,
'area_scan_object_side_telecentric_polynomial'
oder
'area_scan_tilt_object_side_telecentric_polynomial'
)
werden dieselben vier Schritte durchlaufen wie oben aufgelistet.
Für den ersten Schritt (Aufbau einer Kette von
Beobachtungen, die alle Kameras und Kalibrierobjektposen
verbindet) gelten hier jedoch zusätzliche Voraussetzungen. Da
die Lage eines Objektes mit nur einer Kamera nur bis auf eine
Verschiebung entlang der optischen Achse bestimmt werden kann, muss
ein Kalibrierkörper von mindestens zwei Kameras beobachtet werden,
damit seine relative Lage bestimmt werden kann. Sonst wird er aus
der Kalibrierung entfernt. Außerdem gilt: Da ein planares
Kalibrierobjekt aus jeweils zwei Winkeln gleich erscheint, kann die
relative Lage der Kameras untereinander nicht eindeutig bestimmt
werden. Es gibt immer zwei gültige Varianten der relativen Lage der
zweiten Kamera. Beide Alternativen stellen ein konsistentes
Kamerasetup dar und können zum Messen benutzt werden. Da die
Mehrdeutigkeit nicht aufgelöst werden kann, wird die erste Lösung
zurückgeliefert. Wenn die zurückgegebene Pose nicht die reell
vorliegende sondern die alternative Lösung ist, so sind die damit
rekonstruierten Daten gespiegelt.
Für einen gemischten Aufbau mit projektiven und telezentrischen Flächenkameras durchläuft der Algorithmus dieselben Schritte wie oben aufgelistet. Mögliche Mehrdeutigkeiten während des ersten Schrittes (Aufbau einer Kette von Beobachtungen, die alle Kameras und Kalibrierobjektposen verbindet), die bei einem reinen telezentrischen Flächenkameraaufbau auftreten, können bei einem gemischten Aufbau verhindert werden. Voraussetzung dafür ist die Existenz einer Kette, die aus allen projektiven Flächenkameras und einer ausreichenden Anzahl an Kalibrierobjekten besteht. Hierbei bedeutet eine ausreichende Anzahl, dass jede telezentrische Flächenkamera mindestens zwei Kalibrierobjekte dieser Kette beobachtet.
(1) | (2) |
Für Zeilenkameras ('line_scan'
) existieren einige
Beschränkungen: Es kann nur eine Kamera pro Aufbau kalibriert werden
und nur ein Kalibrierobjekt pro Aufbau verwendet werden. Weiterhin
werden keine Informationen über die Standardabweichungen und die
Kovarianzen der geschätzten Kameraparameter geliefert.
Schließlich muss beachtet werden, dass bei Kalibrierplatten mit rechteckiger
Markenanordnung (siehe
) keine Beobachtungen
akzeptiert werden, in denen nicht alle Kalibrierkörpermarken
extrahiert wurden. Bei Kalibrierplatten mit hexagonaler
Markenanordnung (siehe gen_caltab
) gilt diese
Einschränkung nicht. Weitere Informationen zu Kalibrierplatten und der
Aufnahme von Kalibrierbildern finden sich im Abschnitt „Zusätzliche
Information über die Kalibrierung“.
create_caltab
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ückprojizierten
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. Bei der gleichzeitigen Kalibrierung mehrerer
Kameras ist der Wert des Fehlers schwieriger zu beurteilen. Als
Faustregel sollte der Fehler so klein wie möglich sein oder
zumindest kleiner als 1.0 sein, da dies ein Hinweis ist, dass mit
den kalibrierten Parametern eine subpixelgenaue Evaluierung der
Daten noch möglich ist. Bei bestimmten Konfigurationen kann es
schwierig sein, diesen Wert zu erreichen. Eine weitere Analyse der
Kalibrierqualität kann anhand der zurückgegebenen
Standardabweichungen und Kovarianzen der Kameraparameter
erfolgen. Dies ist zurzeit nur bei Flächenkameras möglich (siehe
).
get_calib_data
Alle Ergebnisse der Kalibrierung, d.h. die internen
Kameraparameter, die Kameraposen (externe Parameter), die
Kalibrierkörperposen usw., können mit
abgefragt werden.
get_calib_data
Da bei telezentrischen Kameras die Lage nur bis auf ihre Verschiebung entlang der z-Achse des Koordinatensystems der jeweiligen Kamera bekannt ist, werden die Kameraposen entlang dieser Richtung so verschoben, dass alle Kameras auf einer gemeinsamen Kugel liegen. Der Mittelpunkt der Kugel wird in den ersten Kalibrierkörper gelegt. Der Radius dieser Kugel variiert je nach gegebenem Aufbau. Falls ein gemischter Aufbau mit projektiven und telezentrischen Kameras vorliegt, wird als Radius das Maximum über alle Abstände zwischen projektiven Kameras und dem ersten Kalibrierkörper gewählt. Falls nur telezentrische Kameras im Aufbau vertreten sind, beträgt der Radius 1m.
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 Flächenkameras“ auf die Eigenschaft, dass das Objektiv eine perspektivische Projektion auf der Objektseite des Objektivs durchführt, während sich „telezentrische Flächenkameras“ 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
'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
'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
'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
'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,
,
und gleichzeitig zu bestimmen.
Daher wird nicht optimiert, sondern bleibt fest.Magnification
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,
, , und
die Verkippungsparameter und
gleichzeitig zu bestimmen. Daher wird zusätzlich
nicht optimiert, sondern bleibt fest.
Magnification
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!
Zeilenkameras haben die folgenden 12 internen Parameter:
['line_scan', Focus, Kappa, Sx*, Sy*, Cx, Cy, ImageWidth,
ImageHeight, Vx, Vy, Vz]
Aus weiter unten genannten Gründen werden die mit einem * Sternchen gekennzeichneten Parameter nicht vom Algorithmus geschätzt, sondern bleiben fest.
Typ der Kamera ('line_scan'
)
Brennweite des Objektivs.
Startwert ist gleich der nominalen Brennweite des verwendeten Objektivs, also beispielsweise 0.008 m.
Verzeichnungskoeffizient zur Modellierung der radialen Verzeichnung mit dem Divisionsmodell.
Startwert: 0.0 .
Skalierungsfaktor. Entspricht dem horizontalen Abstand zweier
benachbarter Zellen auf der Sensorzeile. Es ist zu beachten,
dass Focus
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 Meter. 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.
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. Bei Kalibrierplatten
mit hexagonaler Markenanordnung (siehe
)
befindet sich der Ursprung des Koordinatensystems in der Mitte der
zentralen Marke des ersten Suchmusters. Bei Kalibrierplatten
mit rechteckiger Markenanordnung (siehe create_caltab
) liegt
der Ursprung im Mittelpunkt der Kalibrierkörperoberfläche. In
beiden Fällen zeigt die z-Achse des Koordinatensystems in den
Kalibrierkörper hinein, die x-Achse (in z-Richtung blickend) nach
rechts und die y-Achse nach unten.
gen_caltab
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
. Dabei sollten folgende allgemeine
Hinweise berücksichtigt werden:
grab_image
Insgesamt sollten mindestens 10 bis 20 Bilder zur Verfügung stehen.
Es sollten keine Reflexionen o.ä. auf dem Kalibrierkörper sein.
Die Blende der Kamera(s) darf sich während der Aufnahme der Bilder zu keinem Zeitpunkt ändern. Wird die Blende der Kamera(s) nach der Kalibrierung verstellt, so ist die Kamera(s) erneut zu kalibrieren.
Die Position der Kamera darf sich während der Bildaufnahme nicht verändern.
Innerhalb der zur Kalibrierung verwendeten Bilder sollte der Kalibrierkörper jeweils unterschiedlich im Bild erscheinen: Z.B. in allen vier Ecken, in der Mitte und am Rand, sowie in verschiedenen Entfernungen. Dabei sollte der Kalibrierkörper am besten jeweils verdreht und um etwa 45 Grad gekippt gehalten werden, so dass die perspektivische Verzerrung der Kalibrierkörpermarken gut sichtbar ist.
Der Kalibrierkörper sollte jeweils mindestens etwa ein Viertel des gesamten Bildes ausfüllen, damit die Marken robust detektiert und die radialen Verzeichnungen vernünftig modelliert werden können.
Die Kalibriermarken dürfen nicht seitenverkehrt aufgenommen werden. Dies kann z.B. passieren, wenn ein Glas-Kalibrierkörper von der Rückseite aufgenommen wird.
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 auch
gen_caltab
):
find_calib_object
HALCON-Kalibrierplatten mit hexagonaler Markenanordnung
Der Kalibrierkörper darf das ganze Bild ausfüllen und sogar teilweise über den Rand hinausragen. Es ist ausreichend, wenn mindestens ein Suchmuster des Kalibrierkörpers im Bild sichtbar ist. Es sollte dennoch darauf geachtet werden, dass möglichst viele Marken von der Kamera aus gesehen werden. Dadurch können pro Bild mehr Marken extrahiert werden, was nicht nur eine robuste Kalibrierung mit wenigen Bildern, sondern auch eine zuverlässige Schätzung der Verzeichnung ermöglicht.
Aufgrund der großen Markenanzahl werden in der Regel weniger Bilder (mindestens 6) für eine genaue Kalibrierung benötigt als bei Kalibrierplatten mit rechteckiger Markenanordnung.
Sind mindestens zwei Suchmuster im Bild zu sehen, ist es möglich zu erkennen, ob die Kalibrierplatte gespiegelt im Bild zu sehen ist. In dem Fall gibt HDevelop eine adäquate Fehlermeldung zurück.
HALCON-Kalibrierplatten mit rechteckiger Markenanordnung
Der Kalibrierkörper muss jeweils komplett (inkl. Rand!) im Bild sein, sodass die projizierten Koordinaten aller Kalibriermarken ermittelt werden können.
Für Kameras mit Flächensensor 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 Projektionsmodel 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 drei 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.
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 Tiltobjektives 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 beide Kameraarten mit Flächensensor 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. 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 Lochkameras mit Zeilensensor identisch. Daher wird Transformationsschritt 1, wie oben beschrieben auch hier angewandt. Im Anschluss daran 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: mit
Dies beinhaltet bereits die Kompensation der radialen Verzeichnung. Für Lochkameras mit Zeilensensor ist nur das Divisionsmodell verfügbar.
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.
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 Abbildungverhalten. 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
calibrate_cameras
clear_calib_data
clear_camera_setup_model
create_calib_data
create_camera_setup_model
deserialize_calib_data
deserialize_camera_setup_model
get_calib_data
get_calib_data_observ_contours
get_calib_data_observ_points
get_camera_setup_param
query_calib_data_observ_indices
read_calib_data
read_camera_setup_model
remove_calib_data
remove_calib_data_observ
serialize_calib_data
serialize_camera_setup_model
set_calib_data
set_calib_data_calib_object
set_calib_data_cam_param
set_calib_data_observ_points
set_camera_setup_cam_param
set_camera_setup_param
write_calib_data
write_camera_setup_model