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 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 |
|
Reference calibration pattern point positions (ContainerType_Vector_TcVnPoint3_REAL) | |
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 |
double& |
|
Returns the reprojection error |
stBlobDetectionParams |
|
Parameters for the internally used F_VN_DetectBlobs function | |
stCalibrationOptions |
|
Calibration options | |
bSubpixelAccuracy |
bool |
false |
If true, the pattern points are detected with subpixel accuracy |
eEdgeDirection |
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 |
EDA_INTERPOLATION |
Selection of the edge detection algorithm | |
eWorldSystem |
WCS_X_RIGHT_Y_DOWN |
World coordinate system orientation |
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 |