LocateCircularArc
Locate a circular arc.
Can use available TwinCAT Job Tasks for executing parallel code regions.
Can return partial results when canceled by Watchdog.
Syntax
Definition:
HRESULT LocateCircularArc(
HRESULT hrPrev,
ITcVnImage* ipSrcImage,
TcVnCircularArc& stCircularArc,
TcVnPoint2_REAL& aCenter,
float fSearchRadius,
double fArcDirectionRad,
ETcVnEdgeDirection eEdgeDirection,
float fMinStrength,
double fAngleStepRad = 0.1,
ULONG nMaxThickness = 10,
bool bInvertSearchDirection = false,
ULONG nSubpixelsIterations = 10,
float fApproxPrecision = 0.001f,
ETcVnEdgeDetectionAlgorithm eAlgorithm = EDA_INTERPOLATION,
ITcVnContainer** pipContourPoints = nullptr
)
Parameters
Name |
Type |
Default |
Description |
---|---|---|---|
hrPrev |
|
HRESULT indicating the result of previous operations (If SUCCEEDED(hrPrev) equals false, no operation is executed.) | |
ipSrcImage |
|
Source image (1 channel) | |
stCircularArc |
|
Returns the circular arc parameters | |
aCenter |
|
Input estimated circle center (only used as a starting point to search for the circle contour, not used for the circle center estimation) | |
fSearchRadius |
float |
|
Input search radius (starting from aCenter, should be greater than the actual circle radius but aCenter + fSearchRadius should be within the image borders) |
fArcDirectionRad |
double |
|
Input search starting direction in radian. Valid range is [-pi, +pi], where right is 0 rad, top is -pi/2 rad and bottom +pi/2 rad. The circular arc should at least be valid in range fArcDirectionRad +- 4 * fAngleStepRad) |
eEdgeDirection |
|
Specification of the edge direction to search for | |
fMinStrength |
float |
|
Specification of the minimum strength (intensity difference) of the edge to search for |
fAngleStepRad |
double |
0.1 |
Search step in rad (should be chosen so that about 20 - 60 steps are available for the whole arc. In most cases 0.1 rad (5.7 deg) is a good value) |
nMaxThickness |
ULONG |
10 |
Specification of the maximum thickness of the edge to search for, which means fMinStrength must be reached within nMaxThickness pixels |
bInvertSearchDirection |
bool |
false |
If true, the search starts from outside the circular arc in direction of the center |
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) |
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 | |
pipContourPoints |
nullptr |
Returns the subpixel accurate contour (optional, set to 0 if not required; ContainerType_Vector_TcVnPoint2_REAL; Non-zero interface pointers are reused.) |
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 |