Operatoren |
lines_facet — Erkennen von Linien mit dem Facet-Modell.
Mit lines_facet können Linien (gekrümmt-lineare Strukturen) aus einem Bild Image extrahiert werden. Die extrahierten Linien werden in Lines als subpixel-genaue XLD-Konturen zurückgegeben. Der Parameter LightDark bestimmt, ob helle oder dunkle Linien extrahiert werden sollen.
Zur Extraktion werden in jedem Punkt des Bildes unter Verwendung des Facet-Modells die Parameter eines quadratischen Polynoms in x und y als Least-Squares-Anpassung an die Bilddaten berechnet. Der Parameter MaskSize bestimmt dabei die Größe des Bereichs, über den angepasst wird. Große Werte für MaskSize sorgen für eine stärkere Glättung der Eingabedaten, können aber zu ungenauerer Lokalisation der Linien und zu stark schwingenden Linien führen. Mit Hilfe der Parameter des Polynoms wird in jedem Bildpunkt die Linienrichtung bestimmt. Bildpunkte, die ein lokales Maximum in der zweiten Richtungsableitung senkrecht zur Linienrichtung besitzen, werden als Linienpunkte markiert. Die gefundenen Linienpunkte werden hierauf zu Konturen zusammengefasst. Dabei werden Punkte, die eine zweite Richtungsableitung, die größer als High ist, sofort als sichere Linienpunkte akzeptiert. Punkte, deren zweite Ableitung kleiner als Low ist, werden sofort verworfen. Alle Punkte, die eine zweite Ableitung zwischen diesen zwei Werten besitzen, werden akzeptiert, wenn sie durch einen Pfad mit sicheren Punkten verbunden sind. Dies ist ähnlich zu einer Hysterese-Schwellenwert-Operation mit unbegrenzter Pfadlänge (siehe hysteresis_threshold). Allerdings wird diese Funktion nicht benutzt, da sonst keine subpixel-genaue Extraktion möglich wäre.
Für die Wahl der Schwellenwerte gilt sinngemäß das bei der Beschreibung von lines_gauss gesagte. Ein Wert von Sigma = 1.5 dort entspricht in etwa einer Maskengröße MaskSize von 5 hier.
Die extrahierten Linien werden in einer topologisch „sauberen“ Struktur in Lines zurückgeliefert. Das bedeutet, dass die Linien an Kreuzungspunkten sauber aufgetrennt werden.
lines_facet definiert folgende Attribute für jeden Linienpunkt:
'angle' | Der Winkel der Richtung senkrecht zur Linie |
'response' | Die Größe der zweiten Ableitung |
Diese Attribute können mit get_contour_attrib_xld ausgelesen werden.
Je kleiner der Einzugsbereich MaskSize des Operators gewählt wird, desto mehr kurze, zerstückelte Linien werden gefunden. Dadurch kann die Verarbeitungszeit beträchtlich ansteigen.
Beachten Sie, dass Filteroperatoren eventuell unerwartete Resultate ausgeben, wenn ein Bild mit einer reduzierten Domäne als Input übergeben wird. Weitere Informationen können im Kapitel Filter gefunden werden.
Eingabebild.
Extrahierte Linien.
Größe der zu verwendenden Maske zur Bestimmung der Parameter des Facet-Modells.
Defaultwert: 5
Werteliste: 3, 5, 7, 9, 11
Untere Schwelle für Hysterese-Schwellenwertoperation.
Defaultwert: 3
Wertevorschläge: 0, 0.5, 1, 2, 3, 4, 5, 8, 10
Typischer Wertebereich: 0 ≤ Low ≤ 20
Empfohlene Schrittweite: 0.5
Restriktion: Low >= 0
Obere Schwelle für Hysterese-Schwellenwertoperation.
Defaultwert: 8
Wertevorschläge: 0, 0.5, 1, 2, 3, 4, 5, 8, 10, 12, 15, 18, 20, 25
Typischer Wertebereich: 0 ≤ High ≤ 35
Empfohlene Schrittweite: 0.5
Restriktion: High >= 0 && High >= Low
Helle oder dunkle Linien extrahieren.
Defaultwert: 'light'
Werteliste: 'dark' , 'light'
* Detection of lines in an aerial image read_image(Image,'mreut4_3') lines_facet(Image,Lines,5,3,8,'light') dev_display(Lines)
Sei A die Anzahl von Pixeln in der Region von Image. Dann ist die Laufzeitkomplexität O(A*MaskSize).
Der Bedarf an temporären Speicher ist abhängig von der Höhe H der Region von Image und der Breite W von Image. Sei S = W*H, dann benötigt lines_facet mindestens 55*S Bytes an temporärem Speicher bei der Ausführung.
Sind die Parameterwerte korrekt und tritt kein Fehler während der Berechnung auf, liefert lines_facet den Wert 2 (H_MSG_TRUE). Das Verhalten bei leerer Eingabe (keine Eingabebilder vorhanden) lässt sich mittels set_system(::'no_object_result',<Result>:) festlegen. Gegebenenfalls wird eine Fehlerbehandlung durchgeführt.
bandpass_image, dyn_threshold, topographic_sketch
A. Busch: „Fast Recognition of Lines in Digital Images Without User-Supplied Parameters“. In H. Ebner, C. Heipke, K.Eder, eds., „Spatial Information from Digital Photogrammetry and Computer Vision“, International Archives of Photogrammetry and Remote Sensing, Vol. 30, Part 3/1, pp. 91-97, 1994.
2D Metrology
Operatoren |