MeasureEdgeDistance
Measure the distance between 2 parallel edges.
Can use available TwinCAT Job Tasks for executing parallel code regions.
Can return partial results when canceled by Watchdog.
Syntax
Definition:
HRESULT MeasureEdgeDistance(
HRESULT hrPrev,
ITcVnImage* ipSrcImage,
float& fAvgDistance,
TcVnPoint2_REAL& aStartPoint,
TcVnPoint2_REAL& aEndPoint,
ETcVnEdgeDirection eEdgeDirection,
float fMinStrength,
ULONG nSearchLines,
float fSearchLineDist = 1,
ULONG nMaxThickness = 10,
bool bInvertSearchDirection = false,
float fSearchGap = 0,
ULONG nSubpixelsIterations = 10,
float fApproxPrecision = 0.001f,
ETcVnEdgeDetectionAlgorithm eAlgorithm = EDA_INTERPOLATION,
ITcVnContainer** pipEdgePoints1 = nullptr,
ITcVnContainer** pipEdgePoints2 = nullptr,
ITcVnContainer** pipDistances = 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) | |
fAvgDistance |
float& |
|
Returns the average distance between the detected edges |
aStartPoint |
|
Position from which to start the search process (in the direction of aEndPoint) | |
aEndPoint |
|
Position where the search process ends | |
eEdgeDirection |
|
Specification of the edge direction from aStartPoint to aEndPoint to search for | |
fMinStrength |
float |
|
Specification of the minimum strength (intensity difference) of the edge to search for |
nSearchLines |
ULONG |
|
Width of the search window, i.e. the number of search lines (1, 3, 5, 7, ...), centered around the line specified by aStartPoint and aEndPoint |
fSearchLineDist |
float |
1 |
Distance between the search lines in pixels (> 0) |
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 the center point between aStartPoint and aEndPoint in both directions |
fSearchGap |
float |
0 |
Optional width of a gap (>= 0, centered between aStartPoint and aEndPoint), that is neglected for searching edges (can reduce execution time). The 2 edges to search for must be on different sides of the gap. |
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 | |
pipEdgePoints1 |
nullptr |
Returns the detected edge points of the edge near aStartPoint (optional, set to 0 if not required; ContainerType_Vector_TcVnPoint2_REAL) | |
pipEdgePoints2 |
nullptr |
Returns the detected edge points of the edge near aEndPoint (optional, set to 0 if not required; ContainerType_Vector_TcVnPoint2_REAL) | |
pipDistances |
nullptr |
Returns the distances between the detected edge points (optional, set to 0 if not required; ContainerType_Vector_REAL) |
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 |