Herror ::detect_edge_segments (
Hobject Image,
const HTuple &SobelSize,
const HTuple &MinAmplitude,
const HTuple &MaxDistance,
const HTuple &MinLength,
HTuple *BeginRow,
HTuple *BeginCol,
HTuple *EndRow,
HTuple *EndCol
)
HTuple HImage::DetectEdgeSegments (
const HTuple &SobelSize,
const HTuple &MinAmplitude,
const HTuple &MaxDistance,
const HTuple &MinLength,
HTuple *BeginCol,
HTuple *EndRow,
HTuple *EndCol
) const
HTuple HImageArray::DetectEdgeSegments (
const HTuple &SobelSize,
const HTuple &MinAmplitude,
const HTuple &MaxDistance,
const HTuple &MinLength,
HTuple *BeginCol,
HTuple *EndRow,
HTuple *EndCol
) const
Detect straight edge segments.
::detect_edge_segments detects straight edge segments in the gray
image Image. The extracted edge segments are returned as
line segments with start point (BeginRow,BeginCol)
and end point (EndRow,EndCol). Edge detection
is based on the Sobel filter, using 'sum_abs' as parameter and
SobelSize as the filter mask size (see
::sobel_amp). Only pixels with a filter response larger
than MinAmplitude are used as candidates for edge points.
These thresholded edge points are thinned and split into straight
segments. Due to technical reasons, edge points in which several
edges meet are lost. Therefore, ::detect_edge_segments usually
does not return closed object contours. The parameter
MaxDistance controls the maximum allowed distance of an
edge point to its approximating line. For efficiency reasons, the
sum of the absolute values of the coordinate differences is used
instead of the Euclidean distance. MinLength controls
the minimum length of the line segments. Lines shorter than
MinLength are not returned.
Parameters
Image (input_object)
|
(multichannel-)image(-array) -> Hobject: HImage(Array) ( byte )
|
|
Input image. |
SobelSize (input_control)
|
integer -> HTuple.long
|
|
Mask size of the Sobel operator. |
|
Default value: 5 |
|
List of values: 3, 5, 7, 9, 11, 13 |
MinAmplitude (input_control)
|
integer -> HTuple.long
|
|
Minimum edge strength. |
|
Default value: 32 |
|
Suggested values: 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 80, 90, 100, 110 |
|
Typical range of values: 1 <= MinAmplitude <= 255 |
|
Minimum increment: 1
|
Recommended increment: 1
|
|
Restriction: MinAmplitude >= 0 |
MaxDistance (input_control)
|
integer -> HTuple.long
|
|
Maximum distance of the approximating line to
its original edge. |
|
Default value: 3 |
|
Suggested values: 2, 3, 4, 5, 6, 7, 8 |
|
Typical range of values: 1 <= MaxDistance <= 30 |
|
Minimum increment: 1
|
Recommended increment: 1
|
|
Restriction: MaxDistance >= 0 |
MinLength (input_control)
|
integer -> HTuple.long
|
|
Minimum lenght of to resulting line segments. |
|
Default value: 10 |
|
Suggested values: 3, 5, 7, 9, 11, 13, 16, 20 |
|
Typical range of values: 1 <= MinLength <= 500 |
|
Minimum increment: 1
|
Recommended increment: 1
|
|
Restriction: MinLength >= 0 |
BeginRow (output_control)
|
line.begin.y-array -> HTuple.long *
|
|
Row coordinate of the line segments' start points. |
BeginCol (output_control)
|
line.begin.x-array -> HTuple.long *
|
|
Column coordinate of the line segments' start points. |
EndRow (output_control)
|
line.end.y-array -> HTuple.long *
|
|
Row coordinate of the line segments' end points. |
EndCol (output_control)
|
line.end.x-array -> HTuple.long *
|
|
Column coordinate of the line segments' end points. |
Example
Htuple SobelSize,MinAmplitude,MaxDistance,MinLength;
Htuple RowBegin,ColBegin,RowEnd,ColEnd;
create_tuple(&SobelSize,1);
set_i(SobelSize,5,0);
create_tuple(&MinAmplitude,1);
set_i(MinAmplitude,32,0);
create_tuple(&MaxDistance,1);
set_i(MaxDistance,3,0);
create_tuple(&MinLength,1);
set_i(MinLength,10,0);
T_detect_edge_segments(Image,SobelSize,MinAmplitude,MaxDistance,MinLength,
&RowBegin,&ColBegin,&RowEnd,&ColEnd);
Result
::detect_edge_segments returns H_MSG_TRUE if all parameters are
correct. If the input is empty the behaviour can be set via
::set_system('no_object_result',<Result>). If
necessary, an exception handling is raised.
Possible Predecessors
::sigma_image,
::median_image
Possible Successors
::select_lines,
::partition_lines,
::select_lines_longest,
::line_position,
::line_orientation
Alternatives
::sobel_amp,
::threshold,
::skeleton
Module
Image filters
Copyright © 1996-2002 MVTec Software GmbH