close_edges_length
— Schließen von Kanten gemäß Amplitudenbild.
close_edges_length(Edges, Gradient : ClosedEdges : MinAmplitude, MaxGapLength : )
close_edges_length
schließt die von einem Kantendetektor
gelieferten Kanten zu Konturen. Als Eingabe erwartet die Routine
also neben den Kanten (Edges
) auch ein Amplitudenbild
(Gradient
), wie es beispielsweise die Routinen
edges_image
oder sobel_amp
als Ergebnis
liefern.
Der Konturschluss erfolgt in zwei Schritten: Zunächst werden ein
Pixel große Lücken in den Eingabekonturstücken geschlossen und
isolierte Kantenpunkte eliminiert. Im zweiten Schritt werden dann
offene Konturen um maximal MaxGapLength
verlängert, bis entweder die Kontur geschlossen ist oder kein
Fortsetzungspunkt mit ausreichend signifikantem Gradienten mehr
gefunden werden kann. Ein Gradientenwert gilt dabei als
signifikant, wenn er größer oder gleich MinAmplitude
ist. Kandidaten für den nächsten Fortsetzungspunkt sind der
Nachbarpunkt in Richtung der Kontur (gemäß Gradient im aktuellen
Endpunkt) sowie die beiden angrenzenden Nachbarpunkte (8er
Nachbarschaft). Für jeden dieser drei potentiellen
Fortsetzungspunkte wird die Summe aus dem eigenen Gradienten und dem
maximalen Gradienten der nächsten drei möglichen
Fortsetzungspunkte gebildet (look ahead der Länge 1).
Der Punkt mit maximaler Summe wird dann als Fortsetzungspunkt ausgewählt.
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.
Edges
(input_object) region(-array) →
object
Region mit ein Pixel breiten Kanten.
Gradient
(input_object) singlechannelimage →
object (byte / uint2)
Kanten-Amplitudenbild.
ClosedEdges
(output_object) region(-array) →
object
Ausgaberegion (geschlossene Kanten).
MinAmplitude
(input_control) integer →
(integer)
Mindestamplitude für Kanten.
Defaultwert: 16
Wertevorschläge: 5, 8, 10, 12, 16, 20, 25, 30, 40, 50
Typischer Wertebereich: 1
≤
MinAmplitude
≤
255
Minimale Schrittweite: 1
Empfohlene Schrittweite: 1
Restriktion: MinAmplitude >= 0
MaxGapLength
(input_control) integer →
(integer)
Maximale Anzahl von Punkten, um die die Kanten verlängert werden.
Defaultwert: 3
Wertevorschläge: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 15, 20, 30, 40, 50, 70, 100
Typischer Wertebereich: 1
≤
MaxGapLength
≤
127
Minimale Schrittweite: 1
Empfohlene Schrittweite: 1
Restriktion: MaxGapLength > 0 && MaxGapLength <= 127
sobel_amp(Image,&EdgeAmp,"sum_abs",5); threshold(EdgeAmp,&EdgeRegion,40.0,255.0); skeleton(EdgeRegion,&ThinEdge); close_edges_length(ThinEdge,EdgeAmp,&CloseEdges,15,3);
Sind die Parameterwerte korrekt, dann liefert
close_edges_length
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
,
sobel_amp
,
threshold
,
skeleton
close_edges
,
dilation1
,
closing
M. Üsbeck: „Untersuchungen zur echtzeitfähigen Segmentierung“; Studienarbeit, Bayerisches Forschungszentrum für Wissensbasierte Systeme (FORWISS), Erlangen, 1993.
Foundation