Dieses Kapitel beschreibt den Kalibriervorgang für verschiedene Mehrbild-Kameraaufbauten.
Um eine höchstmögliche Messgenauigkeit zu erreichen muss ein Kamerasystem entsprechend kalibriert werden. Im Gegensatz zu einem Kameraaufbau mit einer Kamera gelten für einen Mehrbild-Kameraaufbau einige zusätzliche Anforderungen. Die folgenden Abschnitte enthalten Informationen über die Kalibrierung von Mehrbild-Kameraaufbauten. Für generelle Informationen zur Kalibrierung von Kameras siehe die Kapitelreferenz Kalibrierung.
Vor dem Aufruf des Operators
sollten
die benötigten Daten im Kalibrierdatenmodell gesammelt werden (wie in
Kalibrierung beschrieben).
Für Mehrbild-Kameraaufbauten sollten diese zusätzlichen Aspekte berücksichtigt
werden:
calibrate_cameras
Die Anzahl an Kameras und die Anzahl an Kalibrierobjekten für den
Aufbau kann mit
gesetzt werden.
create_calib_data
Beim Spezifizieren des Kameratyps mit
ist zu beachten, dass nur Kameras vom selben Typ (d.h. Flächen- oder
Zeilenkameras) in einem einzelnen Aufbau kalibriert werden können.
set_calib_data_cam_param
Mit
kann der Kalibriervorgang konfiguriert
werden, z.B. durch die Bestimmung der Referenzkamera. Dabei können Posen
von Kalibrierobjekten oder auch Parameter sowohl für den gesamten
Kameraaufbau als auch für einzelne Kameras gesetzt werden.
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.
calibrate_cameras
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.
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 enthalten weitere Details zur Kalibrierung verschiedener Kameraaufbauten. Außerdem werden Informationen zur Kalibrierung von Zeilenkameras aufgeführt.
Für einen Aufbau mit projektiven Flächenkameras wird die Kalibrierung in den oben erläuterten vier Schritten durchgeführt. Im ersten Schritt versucht der Algorithmus dabei eine Kette von Beobachtungsposen zu bilden, welche alle Kameras und Kalibrierobjektposen verbindet (siehe Abbildung).
(1) | (2) |
Mögliche projektive Flächenkameras sind:
'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'
'area_scan_hypercentric_polynomial'
Für einen Aufbau mit telezentrischen Flächenkameras 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.
Mögliche telezentrische Flächenkameras sind:
'area_scan_telecentric_division'
'area_scan_telecentric_polynomial'
'area_scan_tilt_bilateral_telecentric_division'
'area_scan_tilt_bilateral_telecentric_polynomial'
'area_scan_tilt_object_side_telecentric_division'
'area_scan_tilt_object_side_telecentric_polynomial'
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) |
Aufbauten mit telezentrischen Zeilenkameras
('line_scan_telecentric'
) verhalten sich identisch wie
Aufbauten mit telezentrischen Flächenkameras und es gelten
dieselben Einschränkungen und Mehrdeutigkeiten, die oben
beschrieben sind. Für diese Art von Aufbau können zwei
Konfigurationen unterschieden werden. In der ersten Konfiguration
sind alle Kameras starr und unbeweglich montiert und das Objekt
wird linear vor den Kameras bewegt. Alternativ dazu können alle
Kameras starr zueinander montiert sein und mit demselben
Linearmechanismus über das Objekt bewegt werden. In beiden Fällen
besitzen alle Kameras denselben Bewegungsvektor, der im
Kamerakoordinatensystem der Referenzkamera modelliert wird und
mittels des Rotationsteils der Pose der jeweiligen Kamera in das
Koordinatensystem aller anderen Kameras transformiert wird. Diese
Konfiguration wird als Voreinstellung angenommen. In der zweiten
Konfiguration werden die Kameras durch unabhängige
Linearmechanismen in unterschiedliche Richtungen bewegt. In
diesem Fall besitzt jede Kamera einen unabhängigen
Bewegungsvektor. Die Art des Aufbaus kann mit
festgelegt werden.
set_calib_data
(1) | (2) | (3) |
Es sind zwei verschiedene Aufbauten für Stereosysteme, die Zeilenkameras mit telezentrischen Objektiven verwenden, üblich. Für beide Typen von Aufbauten wird vorausgesetzt, dass sich Objekt beziehungsweise das Kamerasystem linear und mit konstanter Geschwindigkeit bewegt.
Bei Along-Track-Setups (Aufbauten entlang der Bewegungsrichtung) wird die erste Kamera vorne, mit Blickrichtung nach hinten montiert, während die zweite Kamera dahinter, mit Blickrichtung nach vorne platziert wird. Dabei sollte die Kameraausrichtung jeweils schräg zur Bewegungsrichtung sein.
Die Kameras bei einem Across-Track-Setup (Aufbau quer zur Bewegungsrichtung) sind alle rechtwinklig zur Bewegungsrichtung angebracht, wobei die Sichtebenen möglichst koplanar sein sollten. Dadurch ist allerdings die Tiefenschärfe des Systems eingeschränkt, wodurch dieser Ansatz nur für Messungen im Schnittbereich der jeweiligen Tiefenschärfebereiche geeignet ist.
(1) | (2) |
Für projektive Zeilenkameras ('line_scan'
) existieren
folgende Beschränkungen: Es kann nur eine Kamera pro Aufbau
kalibriert werden und nur ein Kalibrierobjekt pro Aufbau verwendet
werden.
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“ des Kapitels Kalibrierung.
create_caltab
Bei der gleichzeitigen Kalibrierung mehrerer Kameras ist der Wert des Fehlers schwieriger zu beurteilen als bei einer einzelnen Kamera. 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.
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
Es ist zu beachten, dass bei telezentrischen Kameras die Lage nur bis auf ihre Verschiebung entlang der z-Achse des Koordinatensystems der jeweiligen Kamera bekannt ist. Daher 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.
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