Camera Calibration
In dem Tab Camera Calibration kann eine geometrische Kalibrierung von Flächenkameras mit Hilfe eines Kalibriermusters vorgenommen werden.
![Camera Calibration 1:](Images/png/18014409209966219__Web.png)
Bei der geometrischen Kamerakalibrierung von Flächenkameras wird der Abbildungsvorgang vom Bild aus rekonstruiert. Hierzu werden Punkte im Bild benötigt deren Position in der realen Welt bekannt sind. Dazu gibt es Kalibriermuster mit definierten Punkten von denen Aufnahmen gemacht werden.
Unterstützte Kalibriermuster:
Bildaufnahme / -auswahl
Für die Bildaufnahme gibt es wie im Configuration Assistant Vorschaubild, bei dem sich oberhalb Anzeigeoptionen und unterhalb Controls zur Bildaufnahme befinden:
![Camera Calibration 2:](Images/png/6202979851__Web.png)
![]() | Darstellung des Vorschaubildes Das Bild wird immer so dargestellt, wie es von der Kamera empfangen wird. Ein Bild im Bayer-Format wird also unkodiert als Grauwertbild angezeigt. An dieser Stelle wird das eingestellte Encoding noch nicht auf das Bild angewandt. Das Encoding ist nur für den Kalibrierungsprozess, aber nicht für das Vorschaubild relevant. |
Oberhalb des Vorschaufensters:
- Interpolation des Vorschaubildes:
Combobox zum Auswählen ob eine High Quality oder Nearest Neighbor Interpolation des Vorschaubildes erfolgen soll. Die Auswahl betrifft nur die Vorschau, die Kalibrierung erfolgt anhand der original Bilddaten. - Größe des Vorschaubildes
Ist Fit to window ausgewählt, wird das Bild jeweils auf die Größe des Vorschaufensters skaliert. Alternativ kann über den Slider auch eine Anzeigegröße vorgegeben werden.
Unterhalb des Vorschaufensters:
- Start Acquisition / Stop Acquisition
Button zum Starten bzw. Stoppen der Bildaufnahme. Der Streaming-Mode der Kamera muss dazu aktiv sein. - Grab Single
Button zum Triggern eines einzelnen Bildes. - Pixel Value
Hier wird der Farbwert des Pixels an der Maus-Cursor-Position auf dem Bild wiedergegeben. - Cursor Position
Hier wird die Maus-Cursor Position auf dem Bild wiedergegeben. Dabei ist zu beachten, dass der Null-Punkt bei Bildern immer oben links ist.
Befindet sich das Kalibriermuster passend im Sichtfeld der Kamera, kann das dazu gehörige Bild für die Kalibrierung ausgewählt werden. Hierzu befinden sich links unterhalb des Vorschaubildes die Controls und rechts daneben die Sammlung der Bilder für die Kalibrierung.
![Camera Calibration 4:](Images/png/6202982411__Web.png)
- Add current image >>
Über Add current image wird das aktuell angezeigte Kamerabild der Sammlung für die Kalibrierung hinzugefügt. - Start / Stop Adding
Anstelle eines einzelnen Bildes kann auch eine Bildserie der Sammlung hinzugefügt werden. Die Bildserie wird über Start Adding gestartet. Anschließend werden im Abstand der bei Interval eingestellten Zeit Bilder hinzugefügt bis die bei Count eingetragene Anzahl erreicht ist oder das Hinzufügen von Bildern über Stop Adding beendet wird. - Load Images...
Alternativ zur Bildaufnahme können über Load Images gespeicherte Bilder geladen werden. Dabei ist zu beachten, dass diese mit demselben Kamerasystem, mit denselben Kameraeinstellungen, denselben Objektiveinstellungen und demselben Kalibriermuster aufgenommen wurden. - Save All Images...
Über Save All Images kann die vollständige Bildsammlung gespeichert werden. - Delete Selected
Über Delete Selected werden die in der Sammlung markierten Bilder gelöscht. - Delete All
Über Delete All werden alle Bilder der Sammlung gelöscht.
![]() | Bildformat An dieser Stelle dürfen nur Mono8, RGB24 und Bayer8 Bilder verwendet werden. |
Einstellungen und Berechnungen
![Camera Calibration 6:](Images/png/9007209955231627__Web.png)
Encoding
Für Vermessungsaufgaben empfiehlt es sich, eine monochrome Kamera zu verwenden. Ist es dennoch notwendig eine Farbkamera mit Bayer-Pattern zu kalibrieren, muss das entsprechende Bayer-Pattern bei Encoding angegeben sein. Dies wird standardmäßig automatisch ausgewählt.
Algorithm
Für die Kreismustererkennung kann zwischen verschiedenen Funktionen der Kantenlokalisierung gewählt werden. Durch die Subpixel Funktion lässt sich, je nach Bildqualität, das Ergebnis verbessern. Damit benötigt der gesamte Vorgang aber auch mehr Zeit. Weitere Informationen zu der Subpixel Funktionalität finden Sie im Measurement Kapitel.
- Pixel Contours
Kontourbasiert - Subpixel Interpolation
Mit Subpixel durch Interpolation - Subpixel Erf Approximation
Mit Subpixel nach der Erf Approximation
Definition des Kalibriermusters
Unter Pattern wird das verwendete Kalibriermuster ausgewählt und definiert:
- Chessboard
Verwendung eines Schachbrettmusters - Circles Sym.
Verwendung eines symmetrischen Kreismusters - Circles Asym.
Verwendung eines asymmetrischen Kreismusters - Start Ident
Checkbox ob die erste Zeile des Kreismusters eingerückt ist. Im Standard ohne Haken wird eine nicht eingerückte Zeile erwartet. - Width
Anzahl der Merkmalspunkte in horizontaler Richtung - Height
Anzahl der Merkmalspunkte in vertikaler Richtung - Distance X
Abstand im Weltkoordinatensystem der Merkmalspunkte in horizontaler Richtung - Distance Y
Abstand im Weltkoordinatensystem der Merkmalspunkte in vertikaler Richtung - Dropdown-Menü für individuelle Kreismuster
Auswahl eines individuellen Kreismusters (Einträge werden nur angezeigt, wenn entsprechende Dateien in dem vorgesehenen Ordner gefunden würden) - Color inverted
Checkbox ob die Farbe des Bildes invertiert werden soll. Im Standard ohne Haken werden schwarze Objekte auf weißem Hintergrund erwartet.
![]() | Symmetrische Muster Bei gänzlich symmetrischen Mustern kann die Zuordnung der gefundenen zu den definierten Punkten abweichen bzw. kann der Koordinatenursprungspunkt in einem anderen Quadranten liegen. Wenn sich das Muster auf dem ausgewählten Bild in einer anderen Orientierung befindet als definiert wurde, kann das ebenfalls vorkommen. Daher sollten sie nach abgeschlossenem Kalibiervorgang kontrollieren, ob das Koordinatensystem ihrer Vorgabe entspricht. |
![]() | Prüfung auf gefüllte Kreise Bei Kreismustern wird zusätzlich überprüft, ob die Kreise in der entsprechenden Farbe gefüllt sind. Treten an dieser Stelle Abweichungen auf, wird der entsprechende Punkt nicht als Teil des Musters erkannt. |
Hinweise zu den Mustern und den Einstellungen der Parameter sind bei den unterstützten Kalibriermustertypen zu finden:
Intrinsic Options
![Camera Calibration 9:](Images/png/9007207368165643__Web.png)
- Fix Center Point: Der Prinzipalpunkt entspricht dem Bildmittelpunkt.
- Fix Aspect Ratio: Es werden quadratische Pixel auf dem Kamerasensor angenommen, sodass das Seitenverhältnis der Pixel ist in x- und y-Richtung gleich ist.
- p1=0, p2=0: Es wird angenommen, dass keine tangentialen Verzeichnungen existieren und die entsprechenden Koeffizienten werden auf 0 gesetzt.
- k3=0: nimmt den Radialverzerrungskoeffizient k3 als 0 an
- k4=0: nimmt den Radialverzerrungskoeffizient k4 als 0 an
- k5=0, k6=0: nimmt die Radialverzerrungskoeffizienten k5 und k6 als 0 an
Extrinsic Origin
![Camera Calibration 10:](Images/png/9007207369179019__Web.png)
Extrinsic Origin legt den Ursprungspunkt des Weltkoordinatensystems im Kalibriermuster fest.
Je nach ausgewähltem Kalibriermuster wird ein entsprechendes Hintergrundbild angezeigt.
![]() | Ursprungspunkt Der ausgewählte Ursprungspunkt bezieht sich auf den entsprechenden Punkt des Kalibriermusters, nicht auf das Gesamtbild. |
World Coordinates
![Camera Calibration 12:](Images/png/9007212446928907__Web.png)
World Coordinates legt die Ausrichtung des Weltkoordinatensystems fest. Damit kann eine abweichende Ausrichtung im Vergleich zum Bildkoordinatensystem eingestellt werden. Bei der abgebildeten Standardeinstellung stimmen die beiden Koordinatensysteme überein.
Aktionen
![Camera Calibration 13:](Images/png/9007207369181451__Web.png)
Calibrate Intrinsics
Durch Calibrate Intrinsics erfolgt die Berechnung der Kameramatrix und der Verzeichnungskoeffizienten. Dazu werden alle Bilder der Auswahl verwendet. Diese müssen dazu alle vollständig das definierte Kalibriermuster enthalten. Ist dies nicht der Fall, ist dies an einem negativen Reproj. Error zu erkennen.
Calibrate Extrinsics
Durch Calibrate Extrinsics erfolgt die Berechnung der Rotationsmatrix und des Translationsvektors. Voraussetzung dazu ist die intrinsische Kalibrierung (Kameramatrix und Verzeichnungskoeffizienten) sowie die Auswahl des Bildes, in dem sich die Punkte des 2D-Kalibriermusters in der späteren Messebene befinden.
![]() | Dauer einer Kalibrierung Die Dauer einer Kalibrierung erhöht sich mit der Anzahl der Referenzpunkte im Kalibriermuster und der Anzahl an Kalibrierbildern. Achten Sie daher bei der Auswahl eines Kalibriermusters darauf, dass die Dauer in einem für Sie akzeptablen Rahmen bleibt. |
![]() | Abweichung der Ergebnisse Aufgrund des verwendeten Algorithmus können die Ergebniswerte der Kalibrierung von Aufruf zu Aufruf leicht im Nachkommastellenbereich voneinander abweichen. Das betrifft sowohl die Ergebnisse der Kalibrierung im Kalibrationsassistenten und die in der SPS als auch zwischen beiden Kalibrationsvarianten. |
![]() | Übernahme der Einstellungen in das TwinCAT Projekt Die eingestellten Werte und Optionen werden nur nach dem Ausführen der Calibrate Intrinsics- oder Calibrate Extrinsics-Funktion in das TwinCAT Projekt übernommen. Wenn das Projekt danach abgespeichert wird, werden diese Werte beim erneuten Öffnen wieder geladen. Ansonsten werden immer die Default-Einstellungen verwendet. |
Advanced Options
Die Kreismustererkennung kann über die Advanced Calibration Options nachparametriert werden. Dies sollte nur erfolgen, wenn es Schwierigkeiten mit den Standardeinstellungen gibt. Zum besseren Verständnis der Einstellparameter hilft ein Blick in die Parametrierung der Funktion F_VN_DetectBlobs.
![Camera Calibration 17:](Images/png/6413645835__Web.png)
Ergebnisse
![Camera Calibration 18:](Images/png/9007207369183115__Web.png)
Reproj. Error
Der Reprojection Error gibt Aufschluss über das Ergebnis der intrinsischen Kalibrierung:
- >0: gültiges Ergebnis
- <1: gutes Ergebnis
- >2: ungenaues Ergebnis
- <0: Kein Ergebnis und spezifische Fehlernummer:
- -100: kein Bild gefunden
Für die intrinsische Kalibrierung wird auf die Sammlung an Bildern unterhalb des Vorschaufensters zurückgegriffen. Das Livebild einer Kamera wird nicht berücksichtigt. - -200: das Muster konnte in mindestens einem Bild nicht gefunden werden.
Auf allen Bildern in der Sammlung unterhalb des Vorschaufensters muss das Muster vollständig inkl. aller Merkmalspunkte abgebildet sein. Zur besseren Analyse werden unter C:\ProgramData\Beckhoff\Vision\_CalibrationAssistantOutput Ergebnisbilder erstellt, die zeigen, welche Merkmalspunkte gefunden wurden. - -300: keines der vorhandenen Bilder enthält das gewählte Muster.
Siehe Beschreibung zu -200, zudem empfiehlt es sich die Konfiguration des Musters zu überprüfen. - -400: Die benutzerdefinierte Beschreibungsdatei für ein individuelles Kalibriermuster ist ungültig.
- -500: Es ist ein Fehler aufgetreten.
Camera Matrix
Die Kameramatrix beschreibt den Abbildungsvorgang von 3D zu 2D.
![Camera Calibration 19:](Images/png/6416296587__Web.png)
- Die Parameter fx und fy geben die Brennweite in x- und y-Richtung wieder.
- Die Parameter cx und cy beschreiben den Schnittpunkt der optischen Achse mit dem Bild, der als Hauptpunkt bezeichnet wird. Im Idealfall liegt dieser im Bildmittelpunkt. Ist bei den Intrinisic Options der Fix Center Point ausgewählt, werden die Parameter cx und cy automatisch auf den Bildmittelpunkt gelegt.
Distortion Coefficients
Durch Abbildungsfehler des optischen Systems kommt es u.a. zu Verzeichnungen im Bild. Diese können zum Teil durch die Distortion Coefficients bei der Koordinatentransformation ausgeglichen werden.
![Camera Calibration 20:](Images/png/6416299147__Web.png)
- Die Koeffizienten k1 bis k6 beschreiben die radialen Verzeichnungen im Bild.
- Die Koeffizienten p1 und p2 die tangentialen Verzeichnungen im Bild.
Rotation Matrix
Durch die Rotationsmatrix wird die unterschiedliche Ausrichtung des Kamerakoordinatensystems zum Weltkoordinatensystem beschrieben und umgekehrt.
![Camera Calibration 21:](Images/png/6416301707__Web.png)
Translation Vector
Der Translationsvektor beschreibt die Verschiebung des Koordinatenursprungs vom Kamera- ins Weltkoordinatensystem und umgekehrt.
![Camera Calibration 22:](Images/png/6416307339__Web.png)
Write Results
Die Ergebnisse werden in das Image Provider TcCOM-Objekt der Kamera geschrieben. Dadurch sind diese aus der SPS über die Methoden des Funktionsbausteins F_VN_GevCameraControl abrufbar.
Auch wenn noch keine Kalibrierung durchgeführt wurde, wird die Beschreibung des eingestellten Kalibriermusters geschrieben. Diese kann in der SPS mit der Methode GetCalibPatternRef abgerufen werden. Alternativ kann die Beschreibung des Kalibriermusters über die F_VN_GenerateCalibrationPatternReferencePoints auch direkt in der SPS erzeugt werden.
Save To File...
Die Ergebnisse können in einer json-Datei gespeichert werden. Alternativ können die Ergebnisse über den FB_VN_ReadCalibrationResult in die SPS eingelesen werden.
Undistort Selected
Auf das ausgewählte Bild werden die Distortion Coefficients angewendet und das Ergebnis in einem separaten Fenster angezeigt.
Show Output
Öffnet das Verzeichnis C:\ProgramData\Beckhoff\Vision\_CalibrationAssistantOutput. In diesem werden Ergebnisbilder erstellt, um analysieren zu können, welche Merkmalspunkte gefunden und wie diese zugeordnet wurden.
Alternative in der SPS
Falls eine Kamera während der Maschinenlaufzeit kalibriert werden muss, steht dafür in der SPS die Funktion F_VN_CalibrateCamera zu Verfügung.
![]() | Kalibrierung in der SPS Die Dauer einer Kalibrierung kann wesentlich höher als ein SPS-Zyklus sein. Achten Sie daher darauf, dass in Ihrem Maschinenablauf keine Probleme verursacht werden, wenn Sie eine Kalibrierung in der SPS ausführen. |