| Operatoren |
lines_color — Extraktion von Farblinien und deren Breite.
lines_color(Image : Lines : Sigma, Low, High, ExtractWidth, CompleteJunctions : )
lines_color extrahiert Farblinien aus dem Eingabebild Image und gibt die extrahierten Linien als subpixel-genaue XLD-Konturen in Lines zurück. Farblinien werden dabei als dunkle Linien im Amplitudenbild des Farbkantenfilters definiert (siehe edges_color). Der verwendete Farbkantenfilter ist bei lines_color immer der Canny-Farbkantenfilter. Die benötigten partiellen Ableitungen des Bildes werden also immer mit partiellen Ableitungen von Gaußmasken berechnet (siehe derivate_gauss). Die zugehörige Glättung wird durch den Parameter Sigma festgelegt.
Durch die Definition von Farblinien als dunkle Linien im Amplitudenbild wird im Gegensatz zu lines_gauss bei einkanaligen Bildern nicht unterschieden, ob die Linien heller oder dunkler als die Umgebung sind. Weiterhin werden von lines_color auch Treppenstufenlinien zurückgeliefert, d.h. Linien, bei denen der Grauwert der Linie zwischen den Grauwerten in der linken und rechten Umgebung der Linie liegt. Bei mehrkanaligen Bildern kann durch die obige Definition sogar jeder Kanal einen unterschiedlichen Linientyp aufweisen. Bei einem dreikanaligen Bild kann z.B. der erste Kanal eine dunkle Linie, der zweite Kanal eine helle Linie und der dritte Kanal eine Treppenstufenlinie an derselben Position aufweisen.
Wenn ExtractWidth auf 'true' gesetzt wird, so wird für jeden Linienpunkt die Linienbreite extrahiert. Da der Linienextraktor aus differentialgeometrischen Gründen bestimmte Kreuzungspunkte nicht extrahieren kann, wird versucht, diese mit anderen Mitteln zu extrahieren, falls CompleteJunctions='true' gesetzt wird.
lines_color verknüpft die einzelnen Kantenpunkte mit einem Hysterese-Schwellenwert-artigen Verfahren, wie es auch in lines_gauss und edges_color_sub_pix verwendet wird, zu Linien. Dabei werden Punkte, deren Amplitude größer als High ist, sofort als sichere Linienpunkte akzeptiert. Punkte, deren Amplitude kleiner als Low ist, werden sofort verworfen. Alle Punkte, die eine Amplitude zwischen diesen zwei Werten besitzen, werden akzeptiert, wenn sie durch einen Pfad mit sicheren Punkten verbunden sind (siehe lines_gauss). Dabei ist die Amplitude der Punkte als die Linienstärke der dunklen Linie im Amplitudenbild zu verstehen (siehe lines_gauss und lines_facet). Dieser Wert entspricht der dritten Richtungsableitung des geglätteten Eingabebildes in Richtung senkrecht zur Linie.
Bei der Wahl der Schwellenwerte High und Low ist zu beachten, dass die dritte Richtungsableitung von der Amplitude und Breite der Linie, sowie von der Größe des Glättungsparameters Sigma abhängt. Dabei ist die Abhängigkeit von der Amplitude der Linie linear, d.h., je größer die Amplitude, desto größer die dritte Ableitung. Für die Breite der Linie besteht ein umgekehrter Zusammenhang: Je breiter die Linie ist, desto kleiner ist die dritte Ableitung. Analoges gilt für die Abhängigkeit von Sigma: Je größer Sigma gewählt wird, desto kleiner wird die dritte Ableitung. Das bedeutet, dass für starke Glättung entsprechend kleinere Werte für High und Low gewählt werden müssen.
Die extrahierten Linien werden in einer topologisch „sauberen“ Struktur in Lines zurückgeliefert. Das bedeutet, dass die Linien an Kreuzungspunkten sauber aufgetrennt werden.
lines_color definiert folgende Attribute für jeden Linienpunkt, falls ExtractWidth auf 'false' gesetzt wurde:
| 'angle' | Der Winkel der Richtung senkrecht zur Linie (so orientiert, dass die Normalenvektoren auf die rechte Seite der Linie in Durchlaufrichtung der Linie zeigen; die Winkel sind bzgl. der Zeilenachse des Bildes angegeben.) |
| 'response' | Die Größe der dritten Ableitung |
Falls ExtractWidth auf 'true' gesetzt wurde, werden zusätzlich noch folgende Attribute definiert:
| 'width_left' | Die Linienbreite links von der Linie |
| 'width_right' | Die Linienbreite rechts von der Linie |
Diese Attribute können mit get_contour_attrib_xld ausgelesen werden.
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.
Stärke der Gaußschen Glättung.
Defaultwert: 1.5
Wertevorschläge: 1, 1.2, 1.5, 1.8, 2, 2.5, 3, 4, 5
Typischer Wertebereich: 0.7 ≤ Sigma ≤ 20
Empfohlene Schrittweite: 0.1
Untere Schwelle für Hysterese-Schwellenwertoperation.
Defaultwert: 3
Wertevorschläge: 0, 0.5, 1, 2, 3, 4, 5, 8, 10
Typischer Wertebereich: 0 ≤ Low
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
Empfohlene Schrittweite: 0.5
Restriktion: High >= 0 && High >= Low
Soll die Linienbreite extrahiert werden?
Defaultwert: 'true'
Werteliste: 'false', 'true'
Sollen die Kreuzungspunkte vervollständigt werden?
Defaultwert: 'true'
Werteliste: 'false', 'true'
Der Bedarf an temporären Speicher ist abhängig von der Höhe H der Region von Image.
Sind die Parameterwerte korrekt und tritt kein Fehler während der Berechnung auf, liefert lines_color 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.
edges_color, edges_color_sub_pix
C. Steger: „Subpixel-Precise Extraction of Lines and Edges“;
International Archives of Photogrammetry and Remote Sensing,
vol. XXXIII, part B3; pp. 141-156; 2000.
C. Steger: „An Unbiased Detector of Curvilinear Structures“; IEEE
Transactions on Pattern Analysis and Machine Intelligence; vol. 20,
no. 2; pp. 113-125; 1998.
C. Steger: „Unbiased Extraction of Curvilinear Structures from 2D
and 3D Images“; Herbert Utz Verlag, München; 1998.
2D Metrology
| Operatoren |