F_VN_CalibrateCamera

F_VN_CalibrateCamera 1:

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

F_VN_CalibrateCamera 2: Inputs

Name

Type

Description

ipSrcImage

ITcVnImage

Source image containing a calibration pattern (1 channel, USINT elements)

ipReferencePoints

ITcVnContainer

Reference calibration pattern point positions (ContainerType_Vector_TcVnPoint3_REAL)

hrPrev

HRESULT

HRESULT indicating the result of previous operations (If SUCCEEDED(hrPrev) equals false, no operation is executed.)

F_VN_CalibrateCamera 3: In/Outputs

Name

Type

Description

aCameraMatrix

TcVnMatrix3x3_LREAL

Returns the camera matrix

aDistortionCoefficients

TcVnArray8_LREAL

Returns the lens distortion coefficients [k1, k2, p1, p2, k3, k4, k5, k6]

aRotationMatrix

TcVnMatrix3x3_LREAL

Returns the rotation matrix

aTranslationVector

TcVnVector3_LREAL

Returns the translation vector

fReprojError

LREAL

Returns the reprojection error

stBlobDetectionParams

TcVnParamsBlobDetection

Parameters for the internally used F_VN_DetectBlobs function

stCalibrationOptions

TcVnCameraCalibrationOptions

Calibration options

F_VN_CalibrateCamera 4: Return value

HRESULT

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:

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
F_VN_CalibrateCamera 5:

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

F_VN_CalibrateCamera 6:

Keine Schachbrettmuster

Da die Referenzpunkte als eine Blob-Struktur detektiert werden, ist die Verwendung von Schachbrettmustern nicht möglich.

Optionen für Kalibrierung

F_VN_CalibrateCamera 7:

Standardeinstellungen

Um die Standardeinstellungen aus dem Kalibrationsassistenten zu erhalten, müssen die Bits bFixAspectRatio, bFixPrincipalPoint, bFixK5, bFixK6 und bRationalModel auf TRUE gesetzt werden.

bFixPrincipalPoint = „Fix Center Point“

Das Bit bFixPrincipalPoint entspricht der Option „Fix Center Point“ im Kalibrationsassistenten der Kamera.

Beispiele

Required License

TC3 Vision Metrology 2D

System Requirements

Development environment

Target platform

PLC libraries to include

TwinCAT V3.1. 4024.44 or later

PC or CX (x64) with PL50, e.g. Intel 4-core Atom CPU

Tc3_Vision