Skip to content

select_matching_linesSelectMatchingLinesSelectMatchingLinesselect_matching_linesselect_matching_lines🔗

Short description🔗

select_matching_linesSelectMatchingLinesSelectMatchingLinesselect_matching_linesselect_matching_lines — Select those lines from a set of lines (in HNF) which fit best into a region.

Signature🔗

select_matching_lines( region RegionIn, out region RegionLines, hesseline.angle.rad AngleIn, hesseline.distance DistIn, integer LineWidth, integer Thresh, out hesseline.angle.rad AngleOut, out hesseline.distance DistOut )void SelectMatchingLines( const HObject& RegionIn, HObject* RegionLines, const HTuple& AngleIn, const HTuple& DistIn, const HTuple& LineWidth, const HTuple& Thresh, HTuple* AngleOut, HTuple* DistOut )static void HOperatorSet.SelectMatchingLines( HObject regionIn, out HObject regionLines, HTuple angleIn, HTuple distIn, HTuple lineWidth, HTuple thresh, out HTuple angleOut, out HTuple distOut )def select_matching_lines( region_in: HObject, angle_in: MaybeSequence[float], dist_in: MaybeSequence[float], line_width: int, thresh: int ) -> Tuple[HObject, Sequence[float], Sequence[float]]

def select_matching_lines_s( region_in: HObject, angle_in: MaybeSequence[float], dist_in: MaybeSequence[float], line_width: int, thresh: int ) -> Tuple[HObject, float, float]Herror select_matching_lines( const Hobject RegionIn, Hobject* RegionLines, double AngleIn, double DistIn, const Hlong LineWidth, const Hlong Thresh, double* AngleOut, double* DistOut )

Herror T_select_matching_lines( const Hobject RegionIn, Hobject* RegionLines, const Htuple AngleIn, const Htuple DistIn, const Htuple LineWidth, const Htuple Thresh, Htuple* AngleOut, Htuple* DistOut )

HRegion HRegion::SelectMatchingLines( const HTuple& AngleIn, const HTuple& DistIn, Hlong LineWidth, Hlong Thresh, HTuple* AngleOut, HTuple* DistOut ) const

HRegion HRegion::SelectMatchingLines( double AngleIn, double DistIn, Hlong LineWidth, Hlong Thresh, double* AngleOut, double* DistOut ) const

HRegion HRegion.SelectMatchingLines( HTuple angleIn, HTuple distIn, int lineWidth, int thresh, out HTuple angleOut, out HTuple distOut )

HRegion HRegion.SelectMatchingLines( double angleIn, double distIn, int lineWidth, int thresh, out double angleOut, out double distOut )

Description🔗

Lines which fit best into a region can be selected from a set of lines which are available in HNF with the help of the operator select_matching_linesSelectMatchingLines; the region itself is also transmitted as a parameter (RegionInregionInregion_in). The width of the lines can be indicated by the parameter LineWidthlineWidthline_width. The selected lines will be returned in HNF and as regions (RegionLinesregionLinesregion_lines).

The lines are selected iteratively in a loop: At first, the line showing the greatest overlap with the input region is selected from the set of input lines. This line will then be taken over into the output set whereby all points belonging to that line will not be considered in the further steps determining overlaps. The loop will be left when the maximum overlap value of the region and the lines falls below a certain threshold value (Threshthreshthresh). The selected lines will be returned as regions as well as in HNF.

Execution information🔗

Execution information
  • Multithreading type: reentrant (runs in parallel with non-exclusive operators).

  • Multithreading scope: global (may be called from any thread).

  • Processed without parallelization.

Parameters🔗

RegionInregionInregion_in (input_object) region → objectHObjectHRegionHObjectHobject

Region in which the lines are to be matched.

RegionLinesregionLinesregion_lines (output_object) region(-array) → objectHObjectHRegionHObjectHobject *

Region array containing the matched lines.

AngleInangleInangle_in (input_control) hesseline.angle.rad(-array) → (real)HTuple (double)HTuple (double)MaybeSequence[float]Htuple (double)

Angles (in radians) of the normal vectors of the input lines.

Value range: -1.5707963 ≤ AngleIn ≤ 3.1415927

DistIndistIndist_in (input_control) hesseline.distance(-array) → (real)HTuple (double)HTuple (double)MaybeSequence[float]Htuple (double)

Distances of the input lines form the origin.

Number of elements: DistIn == AngleIn

LineWidthlineWidthline_width (input_control) integer → (integer)HTuple (Hlong)HTuple (int / long)intHtuple (Hlong)

Widths of the lines.

Default: 77
Value range: 1 ≤ LineWidth

Threshthreshthresh (input_control) integer → (integer)HTuple (Hlong)HTuple (int / long)intHtuple (Hlong)

Threshold value for the number of line points in the region.

Default: 100100
Value range: 1 ≤ Thresh

AngleOutangleOutangle_out (output_control) hesseline.angle.rad(-array) → (real)HTuple (double)HTuple (double)Sequence[float]Htuple (double)

Angles (in radians) of the normal vectors of the selected lines.

Number of elements: AngleOut <= AngleIn
Value range: -1.5707963 ≤ AngleOut ≤ 3.1415927

DistOutdistOutdist_out (output_control) hesseline.distance(-array) → (real)HTuple (double)HTuple (double)Sequence[float]Htuple (double)

Distances of the selected lines from the origin.

Number of elements: DistOut == AngleOut
Value range: 0 ≤ DistOut

Result🔗

The operator select_matching_linesSelectMatchingLines returns the value 2 (H_MSG_TRUE) if the input is not empty. The behavior in case of empty input (no input regions available) is set via the operator set_system('no_object_result',<Result>), the behavior in case of empty region is set via set_system('empty_region_result',<Result>). If necessary an exception is raised.

Combinations with other operators🔗

Combinations

Possible predecessors

hough_linesHoughLines

Module🔗

Foundation