hough_lines_dirT_hough_lines_dirHoughLinesDirHoughLinesDirhough_lines_dir (Operator)
Name
hough_lines_dirT_hough_lines_dirHoughLinesDirHoughLinesDirhough_lines_dir
— Detect lines in edge images with the help of the Hough transform
using local gradient direction and return them in normal form.
Signature
Herror T_hough_lines_dir(const Hobject ImageDir, Hobject* HoughImage, Hobject* Lines, const Htuple DirectionUncertainty, const Htuple AngleResolution, const Htuple Smoothing, const Htuple FilterSize, const Htuple Threshold, const Htuple AngleGap, const Htuple DistGap, const Htuple GenLines, Htuple* Angle, Htuple* Dist)
void HoughLinesDir(const HObject& ImageDir, HObject* HoughImage, HObject* Lines, const HTuple& DirectionUncertainty, const HTuple& AngleResolution, const HTuple& Smoothing, const HTuple& FilterSize, const HTuple& Threshold, const HTuple& AngleGap, const HTuple& DistGap, const HTuple& GenLines, HTuple* Angle, HTuple* Dist)
HImage HImage::HoughLinesDir(HRegion* Lines, Hlong DirectionUncertainty, Hlong AngleResolution, const HString& Smoothing, Hlong FilterSize, Hlong Threshold, Hlong AngleGap, Hlong DistGap, const HString& GenLines, HTuple* Angle, HTuple* Dist) const
HImage HImage::HoughLinesDir(HRegion* Lines, Hlong DirectionUncertainty, Hlong AngleResolution, const char* Smoothing, Hlong FilterSize, Hlong Threshold, Hlong AngleGap, Hlong DistGap, const char* GenLines, HTuple* Angle, HTuple* Dist) const
HImage HImage::HoughLinesDir(HRegion* Lines, Hlong DirectionUncertainty, Hlong AngleResolution, const wchar_t* Smoothing, Hlong FilterSize, Hlong Threshold, Hlong AngleGap, Hlong DistGap, const wchar_t* GenLines, HTuple* Angle, HTuple* Dist) const
(Windows only)
static void HOperatorSet.HoughLinesDir(HObject imageDir, out HObject houghImage, out HObject lines, HTuple directionUncertainty, HTuple angleResolution, HTuple smoothing, HTuple filterSize, HTuple threshold, HTuple angleGap, HTuple distGap, HTuple genLines, out HTuple angle, out HTuple dist)
HImage HImage.HoughLinesDir(out HRegion lines, int directionUncertainty, int angleResolution, string smoothing, int filterSize, int threshold, int angleGap, int distGap, string genLines, out HTuple angle, out HTuple dist)
def hough_lines_dir(image_dir: HObject, direction_uncertainty: int, angle_resolution: int, smoothing: str, filter_size: int, threshold: int, angle_gap: int, dist_gap: int, gen_lines: str) -> Tuple[HObject, HObject, Sequence[float], Sequence[float]]
Description
The operator hough_lines_dirhough_lines_dirHoughLinesDirHoughLinesDirHoughLinesDirhough_lines_dir
selects line-like
structures in a region based on the Hough transform. The individual
points of a line can be unconnected. The region is given by the domain
of ImageDirImageDirImageDirImageDirimageDirimage_dir
. The lines are returned in Hessian normal form (HNF),
that is by the direction and length of their normal vector.
In contrast to hough_lineshough_linesHoughLinesHoughLinesHoughLineshough_lines
, additionally the edge direction in
ImageDirImageDirImageDirImageDirimageDirimage_dir
(e.g., returned by sobel_dirsobel_dirSobelDirSobelDirSobelDirsobel_dir
or
edges_imageedges_imageEdgesImageEdgesImageEdgesImageedges_image
) is taken into account. This results in a more efficient
computation and in a reduction of the noise in the Hough space.
The parameter DirectionUncertaintyDirectionUncertaintyDirectionUncertaintyDirectionUncertaintydirectionUncertaintydirection_uncertainty
describes how much the edge
direction of the individual points within a line is allowed to vary. For
example, with DirectionUncertaintyDirectionUncertaintyDirectionUncertaintyDirectionUncertaintydirectionUncertaintydirection_uncertainty
= 10 a horizontal
line (i.e., edge direction = 0 degrees) may contain points with an edge
direction between -10 and +10 degrees. The higher
DirectionUncertaintyDirectionUncertaintyDirectionUncertaintyDirectionUncertaintydirectionUncertaintydirection_uncertainty
is chosen, the higher the computation time
will be. For DirectionUncertaintyDirectionUncertaintyDirectionUncertaintyDirectionUncertaintydirectionUncertaintydirection_uncertainty
= 180
hough_lines_dirhough_lines_dirHoughLinesDirHoughLinesDirHoughLinesDirhough_lines_dir
shows the same behavior as
hough_lineshough_linesHoughLinesHoughLinesHoughLineshough_lines
, i.e., the edge direction is ignored.
DirectionUncertaintyDirectionUncertaintyDirectionUncertaintyDirectionUncertaintydirectionUncertaintydirection_uncertainty
should be chosen at least as high as the
step width of the edge direction stored in ImageDirImageDirImageDirImageDirimageDirimage_dir
. The minimum
step width is 2 degrees (defined by the image type 'direction').
The parameter AngleResolutionAngleResolutionAngleResolutionAngleResolutionangleResolutionangle_resolution
defines how accurately the
angles are determined. The accuracy amounts to 1 /
AngleResolutionAngleResolutionAngleResolutionAngleResolutionangleResolutionangle_resolution
degrees. A subsequent smoothing of the
Hough space results in an increased stability. The smoothing filter can be
selected by SmoothingSmoothingSmoothingSmoothingsmoothingsmoothing
, the degree of smoothing by the
parameter FilterSizeFilterSizeFilterSizeFilterSizefilterSizefilter_size
(see mean_imagemean_imageMeanImageMeanImageMeanImagemean_image
or
gauss_imagegauss_imageGaussImageGaussImageGaussImagegauss_image
for details).
The parameter ThresholdThresholdThresholdThresholdthresholdthreshold
determines by how many points of the original region a line's hypothesis
must at least be supported in order to be selected into the output.
The parameters AngleGapAngleGapAngleGapAngleGapangleGapangle_gap
and DistGapDistGapDistGapDistGapdistGapdist_gap
define a
neighborhood of the points in the Hough image in order to determine the
local maxima: AngleGapAngleGapAngleGapAngleGapangleGapangle_gap
describes the minimum distance of two
maxima in the Hough image in angle direction and DistGapDistGapDistGapDistGapdistGapdist_gap
in
distance direction, respectively. Thus, maxima exceeding
ThresholdThresholdThresholdThresholdthresholdthreshold
but lying close to an even higher maximum are eliminated.
This can particularly be helpful when searching for short and long
lines simultaneously. Besides the not smoothed Hough image
HoughImageHoughImageHoughImageHoughImagehoughImagehough_image
, the lines are returned in
HNF (AngleAngleAngleAngleangleangle
, DistDistDistDistdistdist
).
If the parameter GenLinesGenLinesGenLinesGenLinesgenLinesgen_lines
is set to 'true'"true""true""true""true""true", additionally
those regions in ImageDirImageDirImageDirImageDirimageDirimage_dir
are returned that contributed to the
local maxima in Hough space. They are stored in the parameter
LinesLinesLinesLineslineslines
.
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
ImageDirImageDirImageDirImageDirimageDirimage_dir
(input_object) singlechannelimage →
objectHImageHObjectHImageHobject (direction)
Image containing the edge direction. The edges are
described by the image domain.
HoughImageHoughImageHoughImageHoughImagehoughImagehough_image
(output_object) image →
objectHImageHObjectHImageHobject * (uint2)
Hough transform.
LinesLinesLinesLineslineslines
(output_object) region-array →
objectHRegionHObjectHRegionHobject *
Regions of the input image that contributed to the
local maxima.
DirectionUncertaintyDirectionUncertaintyDirectionUncertaintyDirectionUncertaintydirectionUncertaintydirection_uncertainty
(input_control) angle.deg →
HTupleintHTupleHtuple (integer) (int / long) (Hlong) (Hlong)
Uncertainty of edge direction (in degrees).
Default value: 2
Typical range of values: 2
≤
DirectionUncertainty
DirectionUncertainty
DirectionUncertainty
DirectionUncertainty
directionUncertainty
direction_uncertainty
≤
180
Minimum increment: 2
AngleResolutionAngleResolutionAngleResolutionAngleResolutionangleResolutionangle_resolution
(input_control) integer →
HTupleintHTupleHtuple (integer) (int / long) (Hlong) (Hlong)
Resolution in the angle area (in 1/degrees).
Default value: 4
List of values: 1, 2, 4, 8
SmoothingSmoothingSmoothingSmoothingsmoothingsmoothing
(input_control) string →
HTuplestrHTupleHtuple (string) (string) (HString) (char*)
Smoothing filter for hough image.
Default value:
'mean'
"mean"
"mean"
"mean"
"mean"
"mean"
List of values: 'gauss'"gauss""gauss""gauss""gauss""gauss", 'mean'"mean""mean""mean""mean""mean", 'none'"none""none""none""none""none"
FilterSizeFilterSizeFilterSizeFilterSizefilterSizefilter_size
(input_control) integer →
HTupleintHTupleHtuple (integer) (int / long) (Hlong) (Hlong)
Required smoothing filter size.
Default value: 5
List of values: 3, 5, 7, 9, 11
ThresholdThresholdThresholdThresholdthresholdthreshold
(input_control) integer →
HTupleintHTupleHtuple (integer) (int / long) (Hlong) (Hlong)
Threshold value in the Hough image.
Default value: 100
Typical range of values: 1
≤
Threshold
Threshold
Threshold
Threshold
threshold
threshold
AngleGapAngleGapAngleGapAngleGapangleGapangle_gap
(input_control) integer →
HTupleintHTupleHtuple (integer) (int / long) (Hlong) (Hlong)
Minimum distance of two maxima in the Hough image
(direction: angle).
Default value: 5
Typical range of values: 0
≤
AngleGap
AngleGap
AngleGap
AngleGap
angleGap
angle_gap
DistGapDistGapDistGapDistGapdistGapdist_gap
(input_control) integer →
HTupleintHTupleHtuple (integer) (int / long) (Hlong) (Hlong)
Minimum distance of two maxima in the Hough image
(direction: distance).
Default value: 5
Typical range of values: 0
≤
DistGap
DistGap
DistGap
DistGap
distGap
dist_gap
GenLinesGenLinesGenLinesGenLinesgenLinesgen_lines
(input_control) string →
HTuplestrHTupleHtuple (string) (string) (HString) (char*)
Create line regions if 'true'"true""true""true""true""true".
Default value:
'true'
"true"
"true"
"true"
"true"
"true"
List of values: 'false'"false""false""false""false""false", 'true'"true""true""true""true""true"
AngleAngleAngleAngleangleangle
(output_control) hesseline.angle.rad-array →
HTupleSequence[float]HTupleHtuple (real) (double) (double) (double)
Angles (in radians) of the detected lines' normal
vectors.
Typical range of values: -1.5707963
≤
Angle
Angle
Angle
Angle
angle
angle
≤
3.1415927
DistDistDistDistdistdist
(output_control) hesseline.distance-array →
HTupleSequence[float]HTupleHtuple (real) (double) (double) (double)
Distance of the detected lines from the origin.
Number of elements: Dist == Angle
Typical range of values: 0
≤
Dist
Dist
Dist
Dist
dist
dist
Result
The operator hough_lineshough_linesHoughLinesHoughLinesHoughLineshough_lines
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>)set_system("no_object_result",<Result>)SetSystem("no_object_result",<Result>)SetSystem("no_object_result",<Result>)SetSystem("no_object_result",<Result>)set_system("no_object_result",<Result>)
.
If necessary an exception is raised.
Possible Predecessors
edges_imageedges_imageEdgesImageEdgesImageEdgesImageedges_image
,
sobel_dirsobel_dirSobelDirSobelDirSobelDirsobel_dir
,
thresholdthresholdThresholdThresholdThresholdthreshold
,
nonmax_suppression_dirnonmax_suppression_dirNonmaxSuppressionDirNonmaxSuppressionDirNonmaxSuppressionDirnonmax_suppression_dir
,
reduce_domainreduce_domainReduceDomainReduceDomainReduceDomainreduce_domain
,
skeletonskeletonSkeletonSkeletonSkeletonskeleton
Possible Successors
gen_region_hlinegen_region_hlineGenRegionHlineGenRegionHlineGenRegionHlinegen_region_hline
,
select_matching_linesselect_matching_linesSelectMatchingLinesSelectMatchingLinesSelectMatchingLinesselect_matching_lines
See also
hough_line_trans_dirhough_line_trans_dirHoughLineTransDirHoughLineTransDirHoughLineTransDirhough_line_trans_dir
,
hough_line_transhough_line_transHoughLineTransHoughLineTransHoughLineTranshough_line_trans
,
gen_region_hlinegen_region_hlineGenRegionHlineGenRegionHlineGenRegionHlinegen_region_hline
,
hough_circleshough_circlesHoughCirclesHoughCirclesHoughCircleshough_circles
Module
Foundation