Kalibrierung

Liste der Abschnitte ↓

Dieses Kapitel enthält Informationen zur Kalibrierung von Kameras.

Allgemein

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

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

beschrieben.

Kalibrierobjekt

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:

Kalibrierplatte mit hexagonal angeordneten Marken:

Als Suchmuster weisen gewisse Marken kreisförmige Löcher auf (siehe create_caltabcreate_caltabCreateCaltabCreateCaltabCreateCaltabcreate_caltab). 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 camera_calibrationcamera_calibrationCameraCalibrationCameraCalibrationCameraCalibrationcamera_calibration statt calibrate_camerascalibrate_camerasCalibrateCamerasCalibrateCamerasCalibrateCamerascalibrate_cameras genutzt, ist diese Platte nicht verwendbar.

HALCON Kalibrierplatte mit hexagonal angeordneten Marken.
Kalibrierplatte mit rechteckig angeordneten Marken:
Der schwarze Rahmen der Kalibrierplatte und die in der linken oberen Ecke befindliche dreieckige Orientierungsmarkierung sind das Suchmuster für Kalibrierplatten mit rechteckig angeordneten Marken (siehe gen_caltabgen_caltabGenCaltabGenCaltabGenCaltabgen_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.
HALCON Kalibrierplatte mit rechteckig angeordneten Marken.

Vorbereitung der Eingabekalibrierdaten

Vor dem Aufruf des Operators calibrate_camerascalibrate_camerasCalibrateCamerasCalibrateCamerasCalibrateCamerascalibrate_cameras sollten die benötigten Daten im Kalibrierdatenmodell gesammelt werden. Dabei müssen diese Schritte befolgt werden:

  1. Erstellen des Kalibrierdatenmodells mit dem Operator create_calib_datacreate_calib_dataCreateCalibDataCreateCalibDataCreateCalibDatacreate_calib_data, wobei die Anzahl der Kameras und die Anzahl der Kalibrierkörper im Modell festgelegt werden.

  2. Definieren des Kameratyps und der internen Kameraparameter für alle Kameras mit dem Operator set_calib_data_cam_paramset_calib_data_cam_paramSetCalibDataCamParamSetCalibDataCamParamSetCalibDataCamParamset_calib_data_cam_param.

  3. Definieren der Kalibrierkörperbeschreibung für alle Kalibrierkörper mit dem Operator set_calib_data_calib_objectset_calib_data_calib_objectSetCalibDataCalibObjectSetCalibDataCalibObjectSetCalibDataCalibObjectset_calib_data_calib_object.

  4. Sammeln von Beobachtungen mit den Operatoren find_calib_objectfind_calib_objectFindCalibObjectFindCalibObjectFindCalibObjectfind_calib_object oder set_calib_data_observ_pointsset_calib_data_observ_pointsSetCalibDataObservPointsSetCalibDataObservPointsSetCalibDataObservPointsset_calib_data_observ_points, d.h. die Bildkoordinaten der extrahierten Kalibrierkörpermarker und eine grob geschätzte Pose des Kalibrierkörpers relativ zur beobachtenden Kamera.

  5. Kalibrierprozess konfigurieren, z.B. bestimmte interne oder externe Kameraparameter von der Optimierung ausschließen. Diese Parameter können mit dem Operator set_calib_dataset_calib_dataSetCalibDataSetCalibDataSetCalibDataset_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:
    set_calib_data(CalibDataID, 'camera', 0, 'excluded_settings', ['sx','sy'])set_calib_data(CalibDataID, "camera", 0, "excluded_settings", ["sx","sy"])SetCalibData(CalibDataID, "camera", 0, "excluded_settings", ["sx","sy"])SetCalibData(CalibDataID, "camera", 0, "excluded_settings", ["sx","sy"])SetCalibData(CalibDataID, "camera", 0, "excluded_settings", ["sx","sy"])set_calib_data(CalibDataID, "camera", 0, "excluded_settings", ["sx","sy"]).

Die tatsächliche Kalibrierung durchführen und die Ergebnisse abfragen

Mit Hilfe der Informationen die im Kalibrierdatenmodell gespeichert wurden, kann die tatsächliche Kalibrierung mit dem Operator calibrate_camerascalibrate_camerasCalibrateCamerasCalibrateCamerasCalibrateCamerascalibrate_cameras 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.

Die Ergebnisse können dann mit get_calib_dataget_calib_dataGetCalibDataGetCalibDataGetCalibDataget_calib_data abgefragt werden.

Ergebnisse der Kalibrierung überprüfen

Nach erfolgreicher Kalibrierung gibt der Operator calibrate_camerascalibrate_camerasCalibrateCamerasCalibrateCamerasCalibrateCamerascalibrate_cameras die Wurzel des mittleren quadratischen Rückprojektionsfehlers (RMSE) der Optimierung im Parameter ErrorErrorErrorErrorerrorerror (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.

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.

Kameraparameter

Die Kameraparameter werden unterschieden nach internen und externen Kameraparametern.

Interne Kameraparameter:

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.

Kameras mit Flächensensor

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.

Flächenkameras mit normalen Objektiven

Projektive Flächenkameras mit normalen Objektiven

  • 'area_scan_division'"area_scan_division""area_scan_division""area_scan_division""area_scan_division""area_scan_division": ['area_scan_division', Focus, Kappa, Sx, Sy*, Cx, Cy, ImageWidth, ImageHeight]["area_scan_division", Focus, Kappa, Sx, Sy*, Cx, Cy, ImageWidth, ImageHeight]["area_scan_division", Focus, Kappa, Sx, Sy*, Cx, Cy, ImageWidth, ImageHeight]["area_scan_division", Focus, Kappa, Sx, Sy*, Cx, Cy, ImageWidth, ImageHeight]["area_scan_division", Focus, Kappa, Sx, Sy*, Cx, Cy, ImageWidth, ImageHeight]["area_scan_division", Focus, Kappa, Sx, Sy*, Cx, Cy, ImageWidth, ImageHeight]

  • 'area_scan_polynomial'"area_scan_polynomial""area_scan_polynomial""area_scan_polynomial""area_scan_polynomial""area_scan_polynomial": ['area_scan_polynomial', Focus, K1, K2, K3, P1, P2, Sx, Sy*, Cx, Cy, ImageWidth, ImageHeight]["area_scan_polynomial", Focus, K1, K2, K3, P1, P2, Sx, Sy*, Cx, Cy, ImageWidth, ImageHeight]["area_scan_polynomial", Focus, K1, K2, K3, P1, P2, Sx, Sy*, Cx, Cy, ImageWidth, ImageHeight]["area_scan_polynomial", Focus, K1, K2, K3, P1, P2, Sx, Sy*, Cx, Cy, ImageWidth, ImageHeight]["area_scan_polynomial", Focus, K1, K2, K3, P1, P2, Sx, Sy*, Cx, Cy, ImageWidth, ImageHeight]["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""area_scan_telecentric_division""area_scan_telecentric_division""area_scan_telecentric_division""area_scan_telecentric_division": ['area_scan_telecentric_division', Magnification, Kappa, Sx, Sy*, Cx, Cy, ImageWidth, ImageHeight]["area_scan_telecentric_division", Magnification, Kappa, Sx, Sy*, Cx, Cy, ImageWidth, ImageHeight]["area_scan_telecentric_division", Magnification, Kappa, Sx, Sy*, Cx, Cy, ImageWidth, ImageHeight]["area_scan_telecentric_division", Magnification, Kappa, Sx, Sy*, Cx, Cy, ImageWidth, ImageHeight]["area_scan_telecentric_division", Magnification, Kappa, Sx, Sy*, Cx, Cy, ImageWidth, ImageHeight]["area_scan_telecentric_division", Magnification, Kappa, Sx, Sy*, Cx, Cy, ImageWidth, ImageHeight]

  • 'area_scan_telecentric_polynomial'"area_scan_telecentric_polynomial""area_scan_telecentric_polynomial""area_scan_telecentric_polynomial""area_scan_telecentric_polynomial""area_scan_telecentric_polynomial": ['area_scan_telecentric_polynomial', Magnification, K1, K2, K3, P1, P2, Sx, Sy*, Cx, Cy, ImageWidth, ImageHeight]["area_scan_telecentric_polynomial", Magnification, K1, K2, K3, P1, P2, Sx, Sy*, Cx, Cy, ImageWidth, ImageHeight]["area_scan_telecentric_polynomial", Magnification, K1, K2, K3, P1, P2, Sx, Sy*, Cx, Cy, ImageWidth, ImageHeight]["area_scan_telecentric_polynomial", Magnification, K1, K2, K3, P1, P2, Sx, Sy*, Cx, Cy, ImageWidth, ImageHeight]["area_scan_telecentric_polynomial", Magnification, K1, K2, K3, P1, P2, Sx, Sy*, Cx, Cy, ImageWidth, ImageHeight]["area_scan_telecentric_polynomial", Magnification, K1, K2, K3, P1, P2, Sx, Sy*, Cx, Cy, ImageWidth, ImageHeight]

Flächenkameras mit Tiltobjektiven

Projektive Flächenkameras mit Tiltobjektiven

  • 'area_scan_tilt_division'"area_scan_tilt_division""area_scan_tilt_division""area_scan_tilt_division""area_scan_tilt_division""area_scan_tilt_division": ['area_scan_tilt_division', Focus, Kappa, ImagePlaneDist, Tilt, Rot, Sx, Sy*, Cx, Cy, ImageWidth, ImageHeight]["area_scan_tilt_division", Focus, Kappa, ImagePlaneDist, Tilt, Rot, Sx, Sy*, Cx, Cy, ImageWidth, ImageHeight]["area_scan_tilt_division", Focus, Kappa, ImagePlaneDist, Tilt, Rot, Sx, Sy*, Cx, Cy, ImageWidth, ImageHeight]["area_scan_tilt_division", Focus, Kappa, ImagePlaneDist, Tilt, Rot, Sx, Sy*, Cx, Cy, ImageWidth, ImageHeight]["area_scan_tilt_division", Focus, Kappa, ImagePlaneDist, Tilt, Rot, Sx, Sy*, Cx, Cy, ImageWidth, ImageHeight]["area_scan_tilt_division", Focus, Kappa, ImagePlaneDist, Tilt, Rot, Sx, Sy*, Cx, Cy, ImageWidth, ImageHeight]

  • 'area_scan_tilt_polynomial'"area_scan_tilt_polynomial""area_scan_tilt_polynomial""area_scan_tilt_polynomial""area_scan_tilt_polynomial""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_polynomial", Focus, K1, K2, K3, P1, P2, ImagePlaneDist, Tilt, Rot, Sx, Sy*, Cx, Cy, ImageWidth, ImageHeight]["area_scan_tilt_polynomial", Focus, K1, K2, K3, P1, P2, ImagePlaneDist, Tilt, Rot, Sx, Sy*, Cx, Cy, ImageWidth, ImageHeight]["area_scan_tilt_polynomial", Focus, K1, K2, K3, P1, P2, ImagePlaneDist, Tilt, Rot, Sx, Sy*, Cx, Cy, ImageWidth, ImageHeight]["area_scan_tilt_polynomial", Focus, K1, K2, K3, P1, P2, ImagePlaneDist, Tilt, Rot, Sx, Sy*, Cx, Cy, ImageWidth, ImageHeight]["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""area_scan_tilt_image_side_telecentric_division""area_scan_tilt_image_side_telecentric_division""area_scan_tilt_image_side_telecentric_division""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_division", Focus, Kappa, Tilt, Rot, Sx*, Sy*, Cx, Cy, ImageWidth, ImageHeight]["area_scan_tilt_image_side_telecentric_division", Focus, Kappa, Tilt, Rot, Sx*, Sy*, Cx, Cy, ImageWidth, ImageHeight]["area_scan_tilt_image_side_telecentric_division", Focus, Kappa, Tilt, Rot, Sx*, Sy*, Cx, Cy, ImageWidth, ImageHeight]["area_scan_tilt_image_side_telecentric_division", Focus, Kappa, Tilt, Rot, Sx*, Sy*, Cx, Cy, ImageWidth, ImageHeight]["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""area_scan_tilt_image_side_telecentric_polynomial""area_scan_tilt_image_side_telecentric_polynomial""area_scan_tilt_image_side_telecentric_polynomial""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]["area_scan_tilt_image_side_telecentric_polynomial", Focus, K1, K2, K3, P1, P2, Tilt, Rot, Sx*, Sy*, Cx, Cy, ImageWidth, ImageHeight]["area_scan_tilt_image_side_telecentric_polynomial", Focus, K1, K2, K3, P1, P2, Tilt, Rot, Sx*, Sy*, Cx, Cy, ImageWidth, ImageHeight]["area_scan_tilt_image_side_telecentric_polynomial", Focus, K1, K2, K3, P1, P2, Tilt, Rot, Sx*, Sy*, Cx, Cy, ImageWidth, ImageHeight]["area_scan_tilt_image_side_telecentric_polynomial", Focus, K1, K2, K3, P1, P2, Tilt, Rot, Sx*, Sy*, Cx, Cy, ImageWidth, ImageHeight]["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""area_scan_tilt_bilateral_telecentric_division""area_scan_tilt_bilateral_telecentric_division""area_scan_tilt_bilateral_telecentric_division""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_division", Magnification, Kappa, Tilt, Rot, Sx*, Sy*, Cx, Cy, ImageWidth, ImageHeight]["area_scan_tilt_bilateral_telecentric_division", Magnification, Kappa, Tilt, Rot, Sx*, Sy*, Cx, Cy, ImageWidth, ImageHeight]["area_scan_tilt_bilateral_telecentric_division", Magnification, Kappa, Tilt, Rot, Sx*, Sy*, Cx, Cy, ImageWidth, ImageHeight]["area_scan_tilt_bilateral_telecentric_division", Magnification, Kappa, Tilt, Rot, Sx*, Sy*, Cx, Cy, ImageWidth, ImageHeight]["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""area_scan_tilt_bilateral_telecentric_polynomial""area_scan_tilt_bilateral_telecentric_polynomial""area_scan_tilt_bilateral_telecentric_polynomial""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_bilateral_telecentric_polynomial", Magnification, K1, K2, K3, P1, P2, Tilt, Rot, Sx*, Sy*, Cx, Cy, ImageWidth, ImageHeight]["area_scan_tilt_bilateral_telecentric_polynomial", Magnification, K1, K2, K3, P1, P2, Tilt, Rot, Sx*, Sy*, Cx, Cy, ImageWidth, ImageHeight]["area_scan_tilt_bilateral_telecentric_polynomial", Magnification, K1, K2, K3, P1, P2, Tilt, Rot, Sx*, Sy*, Cx, Cy, ImageWidth, ImageHeight]["area_scan_tilt_bilateral_telecentric_polynomial", Magnification, K1, K2, K3, P1, P2, Tilt, Rot, Sx*, Sy*, Cx, Cy, ImageWidth, ImageHeight]["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""area_scan_tilt_object_side_telecentric_division""area_scan_tilt_object_side_telecentric_division""area_scan_tilt_object_side_telecentric_division""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_division", Magnification, Kappa, ImagePlaneDist, Tilt, Rot, Sx, Sy*, Cx, Cy, ImageWidth, ImageHeight]["area_scan_tilt_object_side_telecentric_division", Magnification, Kappa, ImagePlaneDist, Tilt, Rot, Sx, Sy*, Cx, Cy, ImageWidth, ImageHeight]["area_scan_tilt_object_side_telecentric_division", Magnification, Kappa, ImagePlaneDist, Tilt, Rot, Sx, Sy*, Cx, Cy, ImageWidth, ImageHeight]["area_scan_tilt_object_side_telecentric_division", Magnification, Kappa, ImagePlaneDist, Tilt, Rot, Sx, Sy*, Cx, Cy, ImageWidth, ImageHeight]["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""area_scan_tilt_object_side_telecentric_polynomial""area_scan_tilt_object_side_telecentric_polynomial""area_scan_tilt_object_side_telecentric_polynomial""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]["area_scan_tilt_object_side_telecentric_polynomial", Magnification, K1, K2, K3, P1, P2, ImagePlaneDist, Tilt, Rot, Sx, Sy*, Cx, Cy, ImageWidth, ImageHeight]["area_scan_tilt_object_side_telecentric_polynomial", Magnification, K1, K2, K3, P1, P2, ImagePlaneDist, Tilt, Rot, Sx, Sy*, Cx, Cy, ImageWidth, ImageHeight]["area_scan_tilt_object_side_telecentric_polynomial", Magnification, K1, K2, K3, P1, P2, ImagePlaneDist, Tilt, Rot, Sx, Sy*, Cx, Cy, ImageWidth, ImageHeight]["area_scan_tilt_object_side_telecentric_polynomial", Magnification, K1, K2, K3, P1, P2, ImagePlaneDist, Tilt, Rot, Sx, Sy*, Cx, Cy, ImageWidth, ImageHeight]["area_scan_tilt_object_side_telecentric_polynomial", Magnification, K1, K2, K3, P1, P2, ImagePlaneDist, Tilt, Rot, Sx, Sy*, Cx, Cy, ImageWidth, ImageHeight]

Flächenkameras mit hyperzentrischen Objektiven

Projektive Flächenkameras mit hyperzentrischen Objektiven

  • 'area_scan_hypercentric_division'"area_scan_hypercentric_division""area_scan_hypercentric_division""area_scan_hypercentric_division""area_scan_hypercentric_division""area_scan_hypercentric_division": ['area_scan_hypercentric_division', Focus, Kappa, Sx, Sy*, Cx, Cy, ImageWidth, ImageHeight]["area_scan_hypercentric_division", Focus, Kappa, Sx, Sy*, Cx, Cy, ImageWidth, ImageHeight]["area_scan_hypercentric_division", Focus, Kappa, Sx, Sy*, Cx, Cy, ImageWidth, ImageHeight]["area_scan_hypercentric_division", Focus, Kappa, Sx, Sy*, Cx, Cy, ImageWidth, ImageHeight]["area_scan_hypercentric_division", Focus, Kappa, Sx, Sy*, Cx, Cy, ImageWidth, ImageHeight]["area_scan_hypercentric_division", Focus, Kappa, Sx, Sy*, Cx, Cy, ImageWidth, ImageHeight]

  • 'area_scan_hypercentric_polynomial'"area_scan_hypercentric_polynomial""area_scan_hypercentric_polynomial""area_scan_hypercentric_polynomial""area_scan_hypercentric_polynomial""area_scan_hypercentric_polynomial": ['area_scan_hypercentric_polynomial', Focus, K1, K2, K3, P1, P2, Sx, Sy*, Cx, Cy, ImageWidth, ImageHeight]["area_scan_hypercentric_polynomial", Focus, K1, K2, K3, P1, P2, Sx, Sy*, Cx, Cy, ImageWidth, ImageHeight]["area_scan_hypercentric_polynomial", Focus, K1, K2, K3, P1, P2, Sx, Sy*, Cx, Cy, ImageWidth, ImageHeight]["area_scan_hypercentric_polynomial", Focus, K1, K2, K3, P1, P2, Sx, Sy*, Cx, Cy, ImageWidth, ImageHeight]["area_scan_hypercentric_polynomial", Focus, K1, K2, K3, P1, P2, Sx, Sy*, Cx, Cy, ImageWidth, ImageHeight]["area_scan_hypercentric_polynomial", Focus, K1, K2, K3, P1, P2, Sx, Sy*, Cx, Cy, ImageWidth, ImageHeight]

Beschreibung der internen Kameraparameter von Kameras mit Flächensensor:

CameraType:

Typ der Kamera, wie oben aufgelistet.

Focus:

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.

Magnification:

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.

Kappa :

Verzeichnungskoeffizient zur Modellierung der radialen Verzeichnungen mit dem Divisionsmodell.

Startwert: 0.0 .

K1, K2, K3, P1, P2:

Verzeichnungskoeffizienten zur Modellierung der radialen ( ) und tangentialen ( ) Verzeichnung mit dem Polynommodell.

Startwert für alle fünf Koeffizienten: 0.0

ImagePlaneDist:

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.

Tilt, Rot:

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.
image/svg+xml y x z y x z 2. tilt 1. rot ImagePlaneDist
Der Tilt eines Objektivs wird durch die Parameter , und ImagePlaneDist beschrieben. beschreibt die Orientierung der Tiltachse relativ zur x-Achse des Sensors und muss zuerst angebracht werden. beschreibt den tatsächlichen Tiltwinkel des Objektivs. ImagePlaneDist beschreibt den Abstand der Austrittspupille zur Bildebene.

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.

Sx, Sy:

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, FocusFocusFocusFocusfocusfocus, und gleichzeitig zu bestimmen. Daher wird nicht optimiert, sondern bleibt fest.

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, FocusFocusFocusFocusfocusfocus, , und die Verkippungsparameter und gleichzeitig zu bestimmen. Daher wird zusätzlich nicht optimiert, sondern bleibt fest.

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.

Cx, Cy:

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!

ImageWidth, ImageHeight:

Breite und Höhe des abgetasteten Bildes. Vorsicht: Bei Unterabtastung des Bildes verringern sich diese Werte!

Zeilenkameras

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.

Flächenkameras mit normalen Objektiven

Projektive Zeilenkameras mit normalen Objektiven

  • 'line_scan_division'"line_scan_division""line_scan_division""line_scan_division""line_scan_division""line_scan_division": ['line_scan_division', Focus, Kappa, Sx*, Sy*, Cx, Cy, ImageWidth, ImageHeight, Vx, Vy, Vz]["line_scan_division", Focus, Kappa, Sx*, Sy*, Cx, Cy, ImageWidth, ImageHeight, Vx, Vy, Vz]["line_scan_division", Focus, Kappa, Sx*, Sy*, Cx, Cy, ImageWidth, ImageHeight, Vx, Vy, Vz]["line_scan_division", Focus, Kappa, Sx*, Sy*, Cx, Cy, ImageWidth, ImageHeight, Vx, Vy, Vz]["line_scan_division", Focus, Kappa, Sx*, Sy*, Cx, Cy, ImageWidth, ImageHeight, Vx, Vy, Vz]["line_scan_division", Focus, Kappa, Sx*, Sy*, Cx, Cy, ImageWidth, ImageHeight, Vx, Vy, Vz]

  • 'line_scan_polynomial'"line_scan_polynomial""line_scan_polynomial""line_scan_polynomial""line_scan_polynomial""line_scan_polynomial": ['line_scan_polynomial', Focus, K1, K2, K3, P1, P2, Sx*, Sy*, Cx, Cy, ImageWidth, ImageHeight, Vx, Vy, Vz]["line_scan_polynomial", Focus, K1, K2, K3, P1, P2, Sx*, Sy*, Cx, Cy, ImageWidth, ImageHeight, Vx, Vy, Vz]["line_scan_polynomial", Focus, K1, K2, K3, P1, P2, Sx*, Sy*, Cx, Cy, ImageWidth, ImageHeight, Vx, Vy, Vz]["line_scan_polynomial", Focus, K1, K2, K3, P1, P2, Sx*, Sy*, Cx, Cy, ImageWidth, ImageHeight, Vx, Vy, Vz]["line_scan_polynomial", Focus, K1, K2, K3, P1, P2, Sx*, Sy*, Cx, Cy, ImageWidth, ImageHeight, Vx, Vy, Vz]["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""line_scan_telecentric_division""line_scan_telecentric_division""line_scan_telecentric_division""line_scan_telecentric_division": ['line_scan_telecentric_division', Magnification, Kappa, Sx*, Sy*, Cx, Cy, ImageWidth, ImageHeight, Vx, Vy, Vz*]["line_scan_telecentric_division", Magnification, Kappa, Sx*, Sy*, Cx, Cy, ImageWidth, ImageHeight, Vx, Vy, Vz*]["line_scan_telecentric_division", Magnification, Kappa, Sx*, Sy*, Cx, Cy, ImageWidth, ImageHeight, Vx, Vy, Vz*]["line_scan_telecentric_division", Magnification, Kappa, Sx*, Sy*, Cx, Cy, ImageWidth, ImageHeight, Vx, Vy, Vz*]["line_scan_telecentric_division", Magnification, Kappa, Sx*, Sy*, Cx, Cy, ImageWidth, ImageHeight, Vx, Vy, Vz*]["line_scan_telecentric_division", Magnification, Kappa, Sx*, Sy*, Cx, Cy, ImageWidth, ImageHeight, Vx, Vy, Vz*]

  • 'line_scan_telecentric_polynomial'"line_scan_telecentric_polynomial""line_scan_telecentric_polynomial""line_scan_telecentric_polynomial""line_scan_telecentric_polynomial""line_scan_telecentric_polynomial": ['line_scan_telecentric_polynomail', Magnification, K1, K2, K3, P1, P2, Sx*, Sy*, Cx, Cy, ImageWidth, ImageHeight, Vx, Vy, Vz*]["line_scan_telecentric_polynomail", Magnification, K1, K2, K3, P1, P2, Sx*, Sy*, Cx, Cy, ImageWidth, ImageHeight, Vx, Vy, Vz*]["line_scan_telecentric_polynomail", Magnification, K1, K2, K3, P1, P2, Sx*, Sy*, Cx, Cy, ImageWidth, ImageHeight, Vx, Vy, Vz*]["line_scan_telecentric_polynomail", Magnification, K1, K2, K3, P1, P2, Sx*, Sy*, Cx, Cy, ImageWidth, ImageHeight, Vx, Vy, Vz*]["line_scan_telecentric_polynomail", Magnification, K1, K2, K3, P1, P2, Sx*, Sy*, Cx, Cy, ImageWidth, ImageHeight, Vx, Vy, Vz*]["line_scan_telecentric_polynomail", Magnification, K1, K2, K3, P1, P2, Sx*, Sy*, Cx, Cy, ImageWidth, ImageHeight, Vx, Vy, Vz*]

Beschreibung der internen Kameraparameter von Zeilenkameras:

CameraType:

Typ der Kamera, wie oben aufgelistet.

Focus:

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.

Magnification:

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.

Kappa :

Verzeichnungskoeffizient zur Modellierung der radialen Verzeichnung mit dem Divisionsmodell.

Startwert: 0.0 .

K1, K2, K3, P1, P2:

Verzeichnungskoeffizienten zur Modellierung der radialen ( ) und tangentialen ( ) Verzeichnung mit dem Polynommodell.

Startwert für alle fünf Koeffizienten: 0.0

Sx:

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!

Sy:

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 !

Cx:

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!

Cy:

Abstand des Kamerahauptpunktes (Zentrum der radialen Verzeichnung) von der Sensorzeile in Bildzeilen. Der Startwert für die y-Koordinate des Kamerahauptpunktes ist normalerweise 0.

ImageWidth, ImageHeight:

Breite und Höhe des abgetasteten Bildes. Vorsicht: Bei Unterabtastung des Bildes verringern sich diese Werte!

Vx, Vy, Vz:

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.

Restriktionen für interne Kameraparameter

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:

Externe Kameraparameter:

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.

TransX:

Translation entlang der x-Achse des Kamerakoordinatensystems.

TransY:

Translation entlang der y-Achse des Kamerakoordinatensystems.

TransZ:

Translation entlang der z-Achse des Kamerakoordinatensystems.

RotX:

Rotationswinkel um die x-Achse des Kamerakoordinatensystems.

RotY:

Rotationswinkel um die y-Achse des Kamerakoordinatensystems.

RotZ:

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 OrderOfTransformOrderOfTransformOrderOfTransformOrderOfTransformorderOfTransformorder_of_transform, OrderOfRotationOrderOfRotationOrderOfRotationOrderOfRotationorderOfRotationorder_of_rotation und ViewOfTransformViewOfTransformViewOfTransformViewOfTransformviewOfTransformview_of_transform. Für detaillierte Informationen zu Posen siehe create_posecreate_poseCreatePoseCreatePoseCreatePosecreate_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 find_calib_objectfind_calib_objectFindCalibObjectFindCalibObjectFindCalibObjectfind_calib_object gewonnen werden. Alternativ kann bei HALCON-Kalibrierplatten mit rechteckiger Markenanordnung auch eine Kombination der beiden Operatoren find_caltabfind_caltabFindCaltabFindCaltabFindCaltabfind_caltab und find_marks_and_posefind_marks_and_poseFindMarksAndPoseFindMarksAndPoseFindMarksAndPosefind_marks_and_pose verwendet werden.

Einheiten der Parameter:

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 , ,

Zusätzliche Information über die Kalibrierung

Die folgenden Abschnitte befassen sich jeweils mit einzelnen Fragen, die sich bei der Verwendung von calibrate_camerascalibrate_camerasCalibrateCamerasCalibrateCamerasCalibrateCamerascalibrate_cameras stellen und sollen daher sowohl dem Verständnis als auch als Leitfaden für die eigene Anwendung dienen.

Was eignet sich als passender Kalibrierkörper?

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 find_calib_objectfind_calib_objectFindCalibObjectFindCalibObjectFindCalibObjectfind_calib_object extrahiert werden.

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.

Wie nehme ich geeignete Bilder auf?

Mit der zu kalibrierenden Kombination aus Objektiv (mit fester Scharfstellung), Kamera und Framegrabber wird der Kalibrierkörper aufgenommen, vgl. open_framegrabberopen_framegrabberOpenFramegrabberOpenFramegrabberOpenFramegrabberopen_framegrabber bzw. grab_imagegrab_imageGrabImageGrabImageGrabImagegrab_image.

Ihr lokaler Vertrieb bietet zur Kamerakalibrierung zwei verschiedene HALCON-Kalibrierkörper an: Kalibrierplatten mit hexagonaler Markenanordnung (siehe create_caltabcreate_caltabCreateCaltabCreateCaltabCreateCaltabcreate_caltab) und Kalibrierplatten mit rechteckiger Markenanordnung (siehe gen_caltabgen_caltabGenCaltabGenCaltabGenCaltabgen_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):

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.

Bezüglich des Kameraaufbaus:

  • 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.

Bezüglich der Platzierung der Kalibrierplatte:

  • 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).

Bezüglich Bildeigenschaften und -inhalt:

  • 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).

Welches Verzeichnungsmodell soll ich verwenden?

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.

Zugrundeliegendes 3D-Kameramodell

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:

Lochkamera mit Flächensensor:

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.

Telezentrische Kamera mit Flächensensor:

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.

Lochkamera mit Zeilensensor:

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.

Telezentrische Kamera mit Zeilensensor:

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“.

Transformationsschritt 1:

Der Punkt wird vom Welt- in das Kamerakoordinatensystem transformiert (Punkte in Form von homogenen Vektoren, vgl. affine_trans_point_3daffine_trans_point_3dAffineTransPoint3dAffineTransPoint3dAffineTransPoint3daffine_trans_point_3d): mit und als Rotations- und Translationsmatritzen (siehe Kapitel „Basics“, Abschnitt „3D Transformations and Poses“ im „Solution Guide III-C 3D Vision“ für detaillierte Informationen).

Transformationsschritt 2:

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.

Transformationsschritt 3:

Für alle Kameraarten kann die Verzeichnung entweder mit dem Divisionsmodell oder mit dem Polynommodell modelliert werden.

Das Divisionsmodell verwendet den Parameter KappaKappaKappaKappakappakappa, um die radiale Verzeichnung zu modellieren.

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.

Zusätzlicher Transformationsschritt für Tiltobjektive:

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_2dprojective_trans_point_2dProjectiveTransPoint2dProjectiveTransPoint2dProjectiveTransPoint2dprojective_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.

Transformationsschritt 4: /

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:

  1. Die Kamera bewegt sich mit konstanter Geschwindigkeit entlang einer Geraden.

  2. Die Orientierung der Kamera ist konstant.

  3. 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 find_calib_objectfind_calib_objectFindCalibObjectFindCalibObjectFindCalibObjectfind_calib_object auch nur die Pose der ersten Bildzeile bestimmt (und von calibrate_camerascalibrate_camerasCalibrateCamerasCalibrateCamerasCalibrateCamerascalibrate_cameras in den Kalibrierergebnissen gespeichert).

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:

Weitere Beschränkungen in Bezug auf spezifische Kameratypen

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 FocusFocusFocusFocusfocusfocus gemeinsam mit allen sechs externen Parametern zu bestimmen. So ist es z.B. unmöglich, in diesem Fall FocusFocusFocusFocusfocusfocus 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.

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 ErrorErrorErrorErrorerrorerror. Falls ErrorErrorErrorErrorerrorerror klein ist, beschreibt der optimierte Parametersatz die Abbildungsgeometrie innerhalb des kalibrierten Volumens konsistent und kann für genaue Messungen verwendet werden.

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 ErrorErrorErrorErrorerrorerror. Falls ErrorErrorErrorErrorerrorerror klein ist, beschreibt der optimierte Parametersatz die Abbildungsgeometrie innerhalb des kalibrierten Volumens konsistent und kann für genaue Messungen verwendet werden.

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')set_calib_data(CalibDataID, "camera", "general", "excluded_settings", "sx")SetCalibData(CalibDataID, "camera", "general", "excluded_settings", "sx")SetCalibData(CalibDataID, "camera", "general", "excluded_settings", "sx")SetCalibData(CalibDataID, "camera", "general", "excluded_settings", "sx")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')set_calib_data(CalibDataID, "camera", "general", "excluded_settings", "tilt")SetCalibData(CalibDataID, "camera", "general", "excluded_settings", "tilt")SetCalibData(CalibDataID, "camera", "general", "excluded_settings", "tilt")SetCalibData(CalibDataID, "camera", "general", "excluded_settings", "tilt")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 ErrorErrorErrorErrorerrorerror. Falls ErrorErrorErrorErrorerrorerror klein ist, beschreibt der optimierte Parametersatz die Abbildungsgeometrie innerhalb des kalibrierten Volumens konsistent und kann für genaue Messungen verwendet werden.

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')set_calib_data(CalibDataID, "camera", "general", "excluded_settings", "poly_tan_2")SetCalibData(CalibDataID, "camera", "general", "excluded_settings", "poly_tan_2")SetCalibData(CalibDataID, "camera", "general", "excluded_settings", "poly_tan_2")SetCalibData(CalibDataID, "camera", "general", "excluded_settings", "poly_tan_2")set_calib_data(CalibDataID, "camera", "general", "excluded_settings", "poly_tan_2").


Liste der Abschnitte