| Operatoren |
edges_color — Farbkantendetektion mit Canny-, Deriche- oder Shen-Filtern.
edges_color extrahiert Farbkanten aus dem Eingabebild Image. Zur Definition von Farbkanten wird das mehrkanalige Bild Image als Abbildung betrachtet, wobei n der Anzahl der Kanäle in Image entspricht. Für solche Funktionen existiert eine natürliche Erweiterung des Gradienten: der metrische Tensor G, welcher es erlaubt, die Größe der Veränderung von f für jede beliebige Richtung, die durch den Richtungsvektor v gegeben ist, zu berechnen. Zur Vereinfachung der Notation wird G als zweidimensionale Matrix betrachtet. Damit kann die Größe der Veränderung von f in Richtung v durch berechnet werden. Dabei ist
Die „Filterbreite“ (d.h. das Einzugsgebiet der Filter) ist für alle Filter außer 'sobel_fast' (wo die Filtergröße 3x3 ist und Alpha ignoriert wird) frei wählbar und kann mittels info_edges für konkrete Werte des Parameters Alpha abgeschätzt werden. Sie nimmt bei den Deriche- und Shen-Filtern mit Alpha ab bzw. beim Canny-Filter zu (Alpha ist in diesem Fall die Standardabweichung der zugrundeliegenden Gaußfunktion). „Breite“ Filter weisen eine höhere Rauschinvarianz, aber auch ein verringertes Auflösungsvermögen für Bilddetails auf. Nicht-rekursive Filter, wie hier die Canny-Filter, werden mittels Filtermasken realisiert. In diesem Fall erhöht sich die Laufzeit mit wachsender Filterbreite. Die Laufzeit der rekursiver Filter ist hingegen konstant. Das Einzugsgebiet der Deriche- und Shen-Filter ist also ohne Mehraufwand beliebig vergrößerbar. Der daraus resultierende Laufzeitvorteil gegenüber dem Canny-Filter nimmt naturgemäß mit wachsender „Filterbreite“ zu. Zur Randbehandlung wird bei den rekursiven Filtern angenommen, das Bildsignal falle außerhalb des Bildes auf Null ab. Beim Canny-Operator wird hingegen das Bild durch Spiegelung der Randpunkte fortgesetzt. Vergleichbare Einzugsgebiete der Filter erhält man bei folgender Wahl von Alpha:
Alpha('deriche2') = Alpha('deriche1') / 2,
Alpha('shen') = Alpha('deriche1') / 2,
Alpha('canny') = 1.77 / Alpha('deriche1').
edges_color bietet (optional) die Weiterverarbeitung der Filterergebnisse mittels Non-Maximum-Suppression (NMS = 'nms'/'inms'/'hvnms', sonst Wert 'none') und Hysterese-Schwellenwertoperation (Low,High, falls nicht erwünscht: einer der Werte negativ). Dies entspricht im wesentlichen nachfolgenden Aufrufen der Routinen
nonmax_suppression_dir(...,NMS,...)
hysteresis_threshold(...,Low,High,1000,...).
Die Hysterese-Schwellenwertoperation wird nicht angewandt, wenn NMS auf 'none' gesetzt ist.
Für 'sobel_fast' wird für alle Werte von NMS außer 'none' dieselbe Non-Maximum-Suppression ausgeführt. Zusätzlich wird für 'sobel_fast' auch noch eine Verdünnung der Kanten auf ein Pixel Breite durchgeführt.
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.
Amplitudenbild.
Richtungsbild.
Gewünschter Kanten-Operator.
Defaultwert: 'canny'
Werteliste: 'canny', 'deriche1', 'deriche2', 'shen', 'sobel_fast'
Filterparameter: kleine Werte bewirken starke Glättung, also auch weniger Bilddetails (bei 'canny' umgekehrt).
Defaultwert: 1.0
Wertevorschläge: 0.1, 0.2, 0.3, 0.4, 0.5, 0.7, 0.9, 1.0, 1.1, 1.2, 1.5, 2.0, 2.5, 3.0
Typischer Wertebereich: 0.2 ≤ Alpha ≤ 50.0
Minimale Schrittweite: 0.01
Empfohlene Schrittweite: 0.1
Restriktion: Alpha > 0.0
Non-Maximum-Suppression ('none', falls nicht erwünscht).
Defaultwert: 'nms'
Werteliste: 'hvnms', 'inms', 'nms', 'none'
Untere Schwelle für Hysterese-Schwellenwertoperation (negativ, falls keine Schwellwertbildung erwünscht).
Defaultwert: 20
Wertevorschläge: 5, 10, 15, 20, 25, 30, 40
Typischer Wertebereich: 1 ≤ Low
Minimale Schrittweite: 1
Empfohlene Schrittweite: 5
Restriktion: Low >= 1 || Low < 0
Obere Schwelle für Hysterese-Schwellenwertoperation (negativ, falls keine Schwellwertbildung erwünscht).
Defaultwert: 40
Wertevorschläge: 10, 15, 20, 25, 30, 40, 50, 60, 70
Typischer Wertebereich: 1 ≤ High
Minimale Schrittweite: 1
Empfohlene Schrittweite: 5
Restriktion: High >= 1 || High < 0 && High >= Low
Sind die Parameterwerte korrekt und tritt kein Fehler während der Berechnung auf, liefert edges_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_image, edges_sub_pix, info_edges, nonmax_suppression_amp, hysteresis_threshold
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: „Unbiased Extraction of Curvilinear Structures from 2D
and 3D Images“; Herbert Utz Verlag, München; 1998.
S. Di Zenzo: „A Note on the Gradient of a Multi-Image“; Computer
Vision, Graphics, and Image Processing, vol. 33; pp. 116-125;
1986.
Aldo Cumani: „Edge Detection in Multispectral Images“; Computer
Vision, Graphics, and Image Processing: Graphical Models and Image
Processing, vol. 53, no. 1; pp. 40-51; 1991.
J.Canny: „Finding Edges and Lines in Images“; Report, AI-TR-720;
M.I.T. Artificial Intelligence Lab., Cambridge; 1983.
J.Canny: „A Computational Approach to Edge Detection“; IEEE
Transactions on Pattern Analysis and Machine Intelligence; PAMI-8,
vol. 6; pp. 679-698; 1986.
R.Deriche: „Using Canny's Criteria to Derive a Recursively
Implemented Optimal Edge Detector“; International Journal of
Computer Vision; vol. 1, no. 2; pp. 167-187; 1987.
R.Deriche: „Fast Algorithms for Low-Level Vision“; IEEE
Transactions on Pattern Analysis and Machine Intelligence; PAMI-12,
no. 1; pp. 78-87; 1990.
J. Shen, S. Castan: „An Optimal Linear Operator for Step Edge
Detection“; Computer Vision, Graphics, and Image Processing:
Graphical Models and Image Processing, vol. 54, no. 2;
pp. 112-133; 1992.
Foundation
| Operatoren |