F_VN_CalibrateCamera
Compute the camera parameters (intrinsic + extrinsic) by evaluating an image containing a calibration pattern (circles).
Can use available TwinCAT Job Tasks for executing parallel code regions.
Syntax
Definition:
FUNCTION F_VN_CalibrateCamera : HRESULT
VAR_INPUT
ipSrcImage : ITcVnImage;
ipReferencePoints : ITcVnContainer;
END_VAR
VAR_IN_OUT
aCameraMatrix : TcVnMatrix3x3_LREAL;
aDistortionCoefficients : TcVnArray8_LREAL;
aRotationMatrix : TcVnMatrix3x3_LREAL;
aTranslationVector : TcVnVector3_LREAL;
fReprojError : LREAL;
stBlobDetectionParams : TcVnParamsBlobDetection;
stCalibrationOptions : TcVnCameraCalibrationOptions;
END_VAR
VAR_INPUT
hrPrev : HRESULT;
END_VAR
Inputs
Name |
Type |
Description |
---|---|---|
ipSrcImage |
Source image containing a calibration pattern (1 channel, USINT elements) | |
ipReferencePoints |
Reference calibration pattern point positions (ContainerType_Vector_TcVnPoint3_REAL) | |
hrPrev |
HRESULT indicating the result of previous operations (If SUCCEEDED(hrPrev) equals false, no operation is executed.) |
In/Outputs
Name |
Type |
Description |
---|---|---|
aCameraMatrix |
Returns the camera matrix | |
aDistortionCoefficients |
Returns the lens distortion coefficients [k1, k2, p1, p2, k3, k4, k5, k6] | |
aRotationMatrix |
Returns the rotation matrix | |
aTranslationVector |
Returns the translation vector | |
fReprojError |
LREAL |
Returns the reprojection error |
stBlobDetectionParams |
Parameters for the internally used F_VN_DetectBlobs function | |
stCalibrationOptions |
Calibration options |
Weiterführende Informationen
Die Funktion F_VN_CalibrateCamera
berechnet die intrinsischen und extrinsischen Kameraparameter basierend auf einem Eingangsbild, das ein Kalibriermuster enthält. Dabei müssen die Elemente des Kalibriermusters als Blob detektierbar sein.
Eingangsbild
Das Eingangsbild ipSrcImage
muss ein 1-kanaliges Grauwertbild mit einer Bittiefe von 8 Bit sein. Dieses Bild muss ein Kalibrationsmuster mit Kreisen enthalten, welches mit den Referenz-Punkten ipReferencePoints
übereinstimmt. Die Funktion erwartet schwarze gefüllte Kreise auf weißem Hintergrund. Zum Invertieren des Bildes kann der ETcVnThresholdType = TCVN_TT_BINARY_INV
der Blob Funktion verwendet werden.
Für eine Kalibrierung mit mehreren Eingangsbildern wird die Expert-Variante F_VN_CalibrateCameraExp benötigt.
Referenz-Punkte
Der Container ipReferencePoints
muss die Referenz-Punkte enthalten, die auf dem Eingangsbild ipSrcImage
als Kalibrationsmuster dargestellt sind. Die Punkte müssen als 3-dimensionale Punkte vom Typ REAL
angegeben werden, sodass der Container den Typ ContainerType_Vector_TcVnPoint3_REAL
hat.
Die Referenz-Punkte können wie folgt erzeugt werden:
- Manuelles Erstellen einer XML-Datei und Einlesen mit dem Funktionsblock FB_VN_ReadCalibrationPattern.
- Konfigurieren im Kalibrationsassistenten, Speichern im TcCOM-Objekt durch Klick auf Write Results und Einlesen mit der Methode GetCalibPatternRef des Funktionsblocks FB_VN_GevCameraControl. Der eingestellte Mittelpunkt wird dabei berücksichtigt.
- Referenz-Punkte einzeln in einen Container einfügen.
Matrizen der Kamera-Parameter
Diese Matrizen geben die errechneten Parameter des Kamera-Modells zurück. Sie können daraufhin zum Kompensieren der Objektiv-Verzeichnungen und zum Umrechnen zwischen Pixel- und Weltkoordinaten genutzt werden.
- Kamera-Matrix
- Verzeichnungskoeffizienten
- Rotations-Matrix
- Translations-Vektor
Rundungsfehler Die errechneten Parameterwerte können aufgrund von Rundungsfehlern geringfügig von den im Kalibrationsassistenten errechneten Werten abweichen. |
Reprojektions-Fehler
Parameter für Blob-Detektion
Keine Schachbrettmuster Da die Referenzpunkte als eine Blob-Struktur detektiert werden, ist die Verwendung von Schachbrettmustern nicht möglich. |
Optionen für Kalibrierung
Standardeinstellungen Um die Standardeinstellungen aus dem Kalibrationsassistenten zu erhalten, müssen die Bits bFixPrincipalPoint = „Fix Center Point“ Das Bit |
Beispiele
Required License
TC3 Vision Metrology 2D
System Requirements
Development environment | Target platform | PLC libraries to include |
---|---|---|
TwinCAT V3.1.4024.59 or later | PC or CX (x64) with PL50, e.g. Intel 4-core Atom CPU | Tc3_Vision |