hough_lines_dir — Finden von Linien in Kantenbildern mit Hilfe der Hough-Transformation
unter Berücksichtigung der lokalen Gradientenrichtung und
Ausgabe in Hessescher Normalform.
hough_lines_dir(ImageDir : HoughImage, Lines : DirectionUncertainty, AngleResolution, Smoothing, FilterSize, Threshold, AngleGap, DistGap, GenLines : Angle, Dist)
Mit Hilfe von hough_lines_dir können in einer Region linienhafte
Strukturen selektiert werden. Dabei müssen die einzelnen Punkte einer
Linie nicht zusammenhängen. Das Verfahren basiert auf der
Hough-Transformation. Die Region muss als Definitionsbereich in
ImageDir übergeben werden.
Im Unterschied zu hough_lines wird hier jedoch zusätzlich
die in ImageDir übergebene Kantenrichtung berücksichtigt, die
z.B. mit Hilfe von sobel_dir oder edges_image bestimmt
werden kann. Dies
führt zu einer effizienteren Berechnung und zu einer Reduktion des
Rauschens im Hough-Raum.
Der Parameter DirectionUncertainty beschreibt hierbei, wie stark
die Kantenrichtung der einzelnen Punkte innerhalb einer Linie variieren
darf. Ist z.B. DirectionUncertainty = 10, werden einer
waagrechten Linie (d.h. Kantenrichtung = 0 Grad) nur Punkte mit einer
Kantenrichtung zwischen -10 und +10 Grad zugeordnet. Je größer
DirectionUncertainty gewählt wird desto langsamer ist die
Berechnung; für DirectionUncertainty = 180 entspricht
das Verhalten von hough_lines_dir dem von
hough_lines, d.h. die Kantenrichtung wird ignoriert.
DirectionUncertainty sollte mindestens so groß gewählt werden
wie die Winkelschrittweite, in der die Kantenrichtungen in
ImageDir gespeichert werden; die minimale Schrittweite beträgt
2 Grad (vorgegeben vom Bildtyp 'direction').
Mit AngleResolution wird die Genauigkeit bei der Bestimmung der
Winkel definiert. Sie beträgt 1 / AngleResolution Grad.
Eine Glättung des Hough-Raumes nach der Transformation erhöht die
Stabilität des Verfahrens. Die Art der Glättung kann mit
Smoothing festgelegt werden. Der Glättungsgrad kann mit
FilterSize
analog zu gauss_filter oder mean_image angegeben werden.
Der Parameter Threshold bestimmt, durch wie viel Punkte der
Ausgangsregion eine Linienhypothese wenigstens gestützt werden muss, um in
die Ausgabe zu gelangen. AngleGap und DistGap
definieren eine Umgebung um die Punkte im Hough-Bild für die Bestimmung der
lokalen Maxima: AngleGap beschreibt den minimalen Abstand zweier
Maxima im Hough-Bild in Richtung des Winkels und DistGap
entsprechend in Richtung der Distanz. Dadurch werden Maxima, die zwar die
vorgegebene Schwelle Threshold überschreiten, jedoch sehr nahe an
einem noch höheren Maximum liegen, eliminiert. Falls mehrere Maxima in
dieser Umgebung gleich hoch sind, werden alle zurückgegeben. Dieses
Eliminationsverfahren kann vor allem bei der gleichzeitigen Suche nach
langen und kurzen Linien hilfreich sein.
Neben dem ungeglätteten Hough-Bild HoughImage
werden die Linien in Hessescher Normalform zurückgeliefert, d.h. durch
Richtung Angle und Länge Dist ihres Normalenvektors
repräsentiert.
Mit Hilfe des Parameters GenLines kann darüber hinaus festgelegt
werden, ob zusätzlich diejenigen Regionen in ImageDir
zurückgeliefert werden sollen, die zur Bildung der lokalen Maxima
beigetragen haben.
Für GenLines = 'true' werden diese dann in
Lines gespeichert.
ImageDir (input_object) singlechannelimage → object (direction)
Kantenrichtungsbild mit auf die Kanten eingeschränktem Definitionsbereich.
HoughImage (output_object) image → object (uint2)
Hough-Transformation.
Lines (output_object) region-array → object
Regionen des Eingabebildes, die zur Bildung der lokalen Maxima beigetragen haben.
DirectionUncertainty (input_control) angle.deg → (integer)
Kantenungenauigkeit (in Grad).
Default: 2
Wertebereich:
2
≤
DirectionUncertainty
≤
180
Minimale Schrittweite: 2
AngleResolution (input_control) integer → (integer)
Auflösung im Winkelbereich (in 1/Grad).
Default: 4
Werteliste: 1, 2, 4, 8
Smoothing (input_control) string → (string)
Glättungsfilter für Hough-Bild.
Default: 'mean'
Werteliste: 'gauss', 'mean', 'none'
FilterSize (input_control) integer → (integer)
Gewünschte Größe des Glättungsfilters.
Default: 5
Werteliste: 3, 5, 7, 9, 11
Threshold (input_control) integer → (integer)
Schwellenwert im Hough-Bild.
Default: 100
Wertebereich:
1
≤
Threshold
AngleGap (input_control) integer → (integer)
Minimaler Abstand zwischen zwei Maxima im Hough-Bild (in Richtung des Winkels).
Default: 5
Wertebereich:
0
≤
AngleGap
DistGap (input_control) integer → (integer)
Minimaler Abstand zwischen zwei Maxima im Hough-Bild (in Richtung der Distance).
Default: 5
Wertebereich:
0
≤
DistGap
GenLines (input_control) string → (string)
Generiert Geraden-Regionen, wenn 'true'.
Default: 'true'
Werteliste: 'false', 'true'
Angle (output_control) hesseline.angle.rad-array → (real)
Winkel (im Bogenmaß) der Normalenvektoren der gefundenen Linien.
Wertebereich:
-1.5707963
≤
Angle
≤
3.1415927
Dist (output_control) hesseline.distance-array → (real)
Abstände der gefundenen Linien vom Koordinatenursprung.
Parameteranzahl: Dist == Angle
Wertebereich:
0
≤
Dist
hough_lines_dir liefert den Wert 2 (
H_MSG_TRUE)
,
falls die Eingabe nicht leer
ist. Das Verhalten bei leerer Eingabe (keine Eingaberegionen vorhanden)
lässt sich mittels set_system('no_object_result',<Result>)
festlegen.
Gegebenenfalls wird eine Fehlerbehandlung durchgeführt.
edges_image,
sobel_dir,
threshold,
nonmax_suppression_dir,
reduce_domain,
skeleton
gen_region_hline,
select_matching_lines
hough_line_trans_dir,
hough_line_trans,
gen_region_hline,
hough_circles
Foundation