Herror ::select_lines (
    const HTuple &RowBeginIn,
    const HTuple &ColBeginIn,
    const HTuple &RowEndIn,
    const HTuple &ColEndIn,
    const HTuple &Feature,
    const HTuple &Operation,
    const HTuple &Min,
    const HTuple &Max,
    HTuple *RowBeginOut,
    HTuple *ColBeginOut,
    HTuple *RowEndOut,
    HTuple *ColEndOut
)

Select lines according to various criteria.

The operator ::select_lines chooses lines according to various criteria. For every input line the indicated features (Feature) are calculated. If each (Operation = 'and') or at least one (Operation = 'or') of the calculated features is within the given limits (Min,Max) the line is transferred into the output.

Condition:   Min_i <= Feature_i(Line) <= Max_i
Possible values for Feature:
  - 'length'       (Euclidean) length of the line
  - 'row'          Line index of the center
  - 'column'       Column index of the center
  - 'phi'          Orientation of the line (-pi/2 < phi <= pi/2)


Attention

If only one feature is used the value of Operation is meaningless. Several features are processed according to the sequence in which they are passed.


Parameters

RowBeginIn (input_control)
line.begin.y-array -> HTuple.long
Row coordinates of the starting points of the input lines.

ColBeginIn (input_control)
line.begin.x-array -> HTuple.long
Column coordinates of the starting points of the input lines.

RowEndIn (input_control)
line.end.y-array -> HTuple.long
Row coordinates of the ending points of the input lines.

ColEndIn (input_control)
line.end.x-array -> HTuple.long
Column coordinates of the ending points of the input lines.

Feature (input_control)
string(-array) -> HTuple.char *
Features to be used for selection.
Default value: 'length'
List of values: 'length', 'row', 'column', 'phi'

Operation (input_control)
string -> HTuple.char *
Desired combination of the features.
Default value: 'and'
List of values: 'and', 'or'

Min (input_control)
string(-array) -> HTuple.char * / long / double
Lower limits of the features or 'min'.
Default value: 'min'

Max (input_control)
string(-array) -> HTuple.char * / long / double
Upper limits of the features or 'max'.
Default value: 'max'

RowBeginOut (output_control)
line.begin.y-array -> HTuple.long *
Row coordinates of the starting points of the output lines.

ColBeginOut (output_control)
line.begin.x-array -> HTuple.long *
Column coordinates of the starting points of the output lines.

RowEndOut (output_control)
line.end.y-array -> HTuple.long *
Row coordinates of the ending points of the output lines.

ColEndOut (output_control)
line.end.x-array -> HTuple.long *
Column coordinates of the ending points of the output lines.


Result

The operator ::select_lines returns the value H_MSG_TRUE if the parameter values are correct. Otherwise an exception is raised.


Possible Predecessors

::sobel_amp, ::edges_image, ::threshold, ::hysteresis_threshold, ::split_skeleton_region, ::split_skeleton_lines


Possible Successors

::set_line_width, ::disp_line


Alternatives

::line_orientation, ::line_position, ::partition_lines


See also

::partition_lines, ::select_lines_longest, ::detect_edge_segments, ::select_shape


Module

Region processing



Copyright © 1996-2002 MVTec Software GmbH