CalibrateCamera (Exp)

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.
Can use available TwinCAT Job Tasks for executing parallel code regions.

Syntax

Definition:

HRESULT CalibrateCamera(
    HRESULT                       hrPrev,
    PVOID                         pSrcImages,
    USHORT                        nSrcArraySize,
    ITcVnContainer*               ipReferencePoints,
    TcVnMatrix3x3_LREAL&          aCameraMatrix,
    TcVnArray8_LREAL&             aDistortionCoefficients,
    TcVnMatrix3x3_LREAL&          aRotationMatrix,
    TcVnVector3_LREAL&            aTranslationVector,
    double&                       fReprojError,
    TcVnParamsBlobDetection&      stBlobDetectionParams,
    TcVnCameraCalibrationOptions& stCalibrationOptions,
    bool                          bSubpixelAccuracy = false,
    ETcVnEdgeDirection            eEdgeDirection = ED_DARK_TO_LIGHT,
    float                         fMinStrength = 50,
    ULONG                         nMaxThickness = 10,
    ULONG                         nSubpixelsIterations = 10,
    ULONG                         nSearchLines = 92,
    float                         fApproxPrecision = 0.001f,
    ETcVnEdgeDetectionAlgorithm   eAlgorithm = EDA_INTERPOLATION,
    ETcVnWorldCoordinateSystem    eWorldSystem = WCS_X_RIGHT_Y_DOWN
)

Parameters

Name

Type

Default

Description

hrPrev

HRESULT

 

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

pSrcImages

PVOID

 

Pointer to an array of source images, each containing the same calibration pattern (1 channel, USINT elements)

nSrcArraySize

USHORT

 

pSrcImages array size

ipReferencePoints

ITcVnContainer*

 

Reference calibration pattern point positions (ContainerType_Vector_TcVnPoint3_REAL)

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

double&

 

Returns the reprojection error

stBlobDetectionParams

TcVnParamsBlobDetection&

 

Parameters for the internally used F_VN_DetectBlobs function

stCalibrationOptions

TcVnCameraCalibrationOptions&

 

Calibration options

bSubpixelAccuracy

bool

false

If true, the pattern points are detected with subpixel accuracy

eEdgeDirection

ETcVnEdgeDirection

ED_DARK_TO_LIGHT

Specification of the edge direction to search for (from center to outside ellipse)

fMinStrength

float

50

Specification of the minimum strength (intensity difference) of the edge to search for

nMaxThickness

ULONG

10

Specification of the maximum thickness of the edge to search for, which means fMinStrength must be reached within nMaxThickness pixels

nSubpixelsIterations

ULONG

10

Specifies the number of subpixels (for INTERPOLATION, 10 - 20 usually is sufficient) or maximum number of iterations for optimizing the parameters (for APPROX_ERF and APPROX_GAUSSIAN, 50 - 100 usually is sufficient)

nSearchLines

ULONG

92

Specifies the amount of search lines, which are equally distributed in all directions (must be >= 8 and a multiple of 4)

fApproxPrecision

float

0.001f

Specifies the approximation precision for APPROX_ERF and APPROX_GAUSSIAN (0.001 usually is sufficient, unused for INTERPOLATION)

eAlgorithm

ETcVnEdgeDetectionAlgorithm

EDA_INTERPOLATION

Selection of the edge detection algorithm

eWorldSystem

ETcVnWorldCoordinateSystem

WCS_X_RIGHT_Y_DOWN

World coordinate system orientation

CalibrateCamera (Exp) 1: Return value

HRESULT

Required License

TC3 Vision Metrology 2D

System Requirements

Development environment

Target platform

PLC libraries to include

TwinCAT V3.1.4024.54 or later

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

Tc3_Vision