F_VN_CalibrateCameraExp
Compute the camera parameters (intrinsic + extrinsic) by evaluating images containing a calibration pattern (circles). The extrinsic parameters are computed for the first image in the array. (expert function)
Can use available TwinCAT Job Tasks for executing parallel code regions.
Syntax
Definition:
FUNCTION F_VN_CalibrateCameraExp : HRESULT
VAR_INPUT
pSrcImages : PVOID;
nSrcArraySize : UINT;
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 |
---|---|---|
pSrcImages |
PVOID |
Pointer to an array of source images, each containing the same calibration pattern (1 channel, USINT elements) |
nSrcArraySize |
UINT |
pSrcImages array size |
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_CalibrateCameraExp
ist die Expert-Variante von F_VN_CalibrateCamera. Sie ermöglicht die Verwendung von mehreren Eingangsbildern zur Kalibrierung der Kamera.
Parameter
Eingangsbilder
Die Eingangsbilder für die Kamera-Kalibrierung werden mit Hilfe des Pointers pSrcImages
und der Anzahl der Bilder nSrcArraySize
an die Funktion übergeben. Die einzelnen Bilder müssen ansonsten die gleichen Anforderungen erfüllen wie bei der Standard Funktion.
Hinweis | |
Pointer-Handhabung Achten Sie darauf, dass die Angabe des Pointers und der Array-Größe mit den tatsächlichen Daten übereinstimmt. Sonst kann es zu einem unerlaubten Speicherzugriff und einem daraus resultierenden Systemabsturz kommen. |
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 |
Anwendung
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 |