CalibrateLinescanCamera

Compute the camera parameters (intrinsic + extrinsic) by evaluating images containing a line calibration pattern. The pattern must consist of alternating vertical and diagonal lines, with each diagonal having the same constant slope: |\|\|...\|. The results are only valid for the x-direction of a line scan image. To get accurate x-values for a transformation into world coordinates, the y-coordinate must be set to half the sensor width and so equal to the cy-value of the camera matrix. For other y-values, the results are approximated and can be inaccurate. 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 CalibrateLinescanCamera(
    HRESULT                       hrPrev,
    PVOID                         pSrcImages,
    USHORT                        nSrcArraySize,
    ITcVnContainer*               ipPatternLineOrigins,
    double                        fSlopeRad,
    TcVnMatrix3x3_LREAL&          aCameraMatrix,
    TcVnArray8_LREAL&             aDistortionCoefficients,
    TcVnMatrix3x3_LREAL&          aRotationMatrix,
    TcVnVector3_LREAL&            aTranslationVector,
    double&                       fReprojError,
    TcVnCameraCalibrationOptions& stCalibrationOptions,
    ETcVnEdgeDirection            eEdgeDirection,
    float                         fMinStrength = 100,
    ULONG                         nMaxSearchLines = 11,
    ULONG                         nMaxThickness = 5,
    ULONG                         nSubpixelsIterations = 50,
    float                         fApproxPrecision = 0.001f,
    ETcVnEdgeDetectionAlgorithm   eAlgorithm = EDA_APPROX_ERF
)

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 1 or more source images (1 channel). If the images have more than 1 row, each row must contain an image of the same pattern position.

nSrcArraySize

USHORT

 

pSrcImages array size

ipPatternLineOrigins

ITcVnContainer*

 

X position of the pattern line origins (ContainerType_Vector_REAL, usually same origin for vertical and following diagonal line)

fSlopeRad

double

 

Slope of the diagonal line in rad (> 0, < PI/2), relative to the vertical line (i.e., 0 would be a vertical line, PI/2 a horizontal line)

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

stCalibrationOptions

TcVnCameraCalibrationOptions&

 

Calibration options (recommended to set bFixAspectRatio, bFixPrincipalPoint, bZeroTangentDist)

eEdgeDirection

ETcVnEdgeDirection

 

Specification of the edge direction to search for

fMinStrength

float

100

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

nMaxSearchLines

ULONG

11

Maximum number of search lines (equally distributed over the image height, at most 1 searchline per image row)

nMaxThickness

ULONG

5

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

nSubpixelsIterations

ULONG

50

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)

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_APPROX_ERF

Selection of the edge detection algorithm

CalibrateLinescanCamera 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