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. Linien werden in Hessescher
Normalform, d.h durch Richtung und Länge ihres Normalenvektors
repräsentiert.
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
Berechung; 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 wieviel 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 Richtung der Distanz. Dadurch werden Maxima, die zwar die
vorgegebene
Schwelle Threshold
überschreiten, jedoch sehr nahe an einem
noch höheren Maximum liegen, eliminiert. Dies 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 (Angle
, Dist
)
zurückgeliefert.
Mit Hilfe des Parameters GenLines
kann darüberhinaus 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).
Defaultwert: 2
Typischer Wertebereich: 2
≤
DirectionUncertainty
≤
180
Minimale Schrittweite: 2
AngleResolution
(input_control) integer →
(integer)
Auflösung im Winkelbereich (in 1/Grad).
Defaultwert: 4
Werteliste: 1, 2, 4, 8
Smoothing
(input_control) string →
(string)
Glättungsfilter für Hough-Bild.
Defaultwert: 'mean'
Werteliste: 'gauss' , 'mean' , 'none'
FilterSize
(input_control) integer →
(integer)
Gewünschte Größe des Glättungsfilters.
Defaultwert: 5
Werteliste: 3, 5, 7, 9, 11
Threshold
(input_control) integer →
(integer)
Schwellenwert im Hough-Bild.
Defaultwert: 100
Typischer Wertebereich: 1
≤
Threshold
AngleGap
(input_control) integer →
(integer)
Minimaler Abstand zwischen zwei Maxima im Hough-Bild (in Richtung des Winkels).
Defaultwert: 5
Typischer Wertebereich: 0
≤
AngleGap
DistGap
(input_control) integer →
(integer)
Minimaler Abstand zwischen zwei Maxima im Hough-Bild (in Richtung der Distance).
Defaultwert: 5
Typischer Wertebereich: 0
≤
DistGap
GenLines
(input_control) string →
(string)
Generiert Geraden-Regionen, wenn 'true' .
Defaultwert: 'true'
Werteliste: 'false' , 'true'
Angle
(output_control) hesseline.angle.rad-array →
(real)
Winkel (im Bogenmaß) der Normalenvektoren der gefundenen Linien.
Typischer Wertebereich: -1.5707963
≤
Angle
≤
3.1415927
Dist
(output_control) hesseline.distance-array →
(real)
Abstände der gefundenen Linien vom Koordinatenursprung.
Parameteranzahl: Dist == Angle
Typischer 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