F_VN_CalibrateCameraExp3
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_CalibrateCameraExp3 : 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
bSubpixelAccuracy : BOOL;
eEdgeDirection : ETcVnEdgeDirection;
fMinStrength : REAL;
nMaxThickness : UDINT;
nSubpixelsIterations : UDINT;
nSearchLines : UDINT;
fApproxPrecision : REAL;
eAlgorithm : ETcVnEdgeDetectionAlgorithm;
eWorldSystem : ETcVnWorldCoordinateSystem;
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) | |
bSubpixelAccuracy |
BOOL |
If true, the pattern points are detected with subpixel accuracy |
eEdgeDirection |
Specification of the edge direction to search for (from center to outside ellipse) | |
fMinStrength |
REAL |
Specification of the minimum strength (intensity difference) of the edge to search for |
nMaxThickness |
UDINT |
Specification of the maximum thickness of the edge to search for, which means fMinStrength must be reached within nMaxThickness pixels |
nSubpixelsIterations |
UDINT |
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 |
UDINT |
Specifies the amount of search lines, which are equally distributed in all directions (must be >= 8 and a multiple of 4) |
fApproxPrecision |
REAL |
Specifies the approximation precision for APPROX_ERF and APPROX_GAUSSIAN (0.001 usually is sufficient, unused for INTERPOLATION) |
eAlgorithm |
Selection of the edge detection algorithm | |
eWorldSystem |
World coordinate system orientation | |
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 |
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 |