KlassenKlassenKlassenKlassen | | | | Operatoren

close_edges_lengthclose_edges_lengthCloseEdgesLengthclose_edges_lengthCloseEdgesLengthCloseEdgesLength (Operator)

Name

close_edges_lengthclose_edges_lengthCloseEdgesLengthclose_edges_lengthCloseEdgesLengthCloseEdgesLength — Schließen von Kanten gemäß Amplitudenbild.

Signatur

close_edges_length(Edges, Gradient : ClosedEdges : MinAmplitude, MaxGapLength : )

Herror close_edges_length(const Hobject Edges, const Hobject Gradient, Hobject* ClosedEdges, const Hlong MinAmplitude, const Hlong MaxGapLength)

Herror T_close_edges_length(const Hobject Edges, const Hobject Gradient, Hobject* ClosedEdges, const Htuple MinAmplitude, const Htuple MaxGapLength)

Herror close_edges_length(Hobject Edges, Hobject Gradient, Hobject* ClosedEdges, const HTuple& MinAmplitude, const HTuple& MaxGapLength)

HRegion HRegion::CloseEdgesLength(const HImage& Gradient, const HTuple& MinAmplitude, const HTuple& MaxGapLength) const

HRegionArray HRegionArray::CloseEdgesLength(const HImage& Gradient, const HTuple& MinAmplitude, const HTuple& MaxGapLength) const

void CloseEdgesLength(const HObject& Edges, const HObject& Gradient, HObject* ClosedEdges, const HTuple& MinAmplitude, const HTuple& MaxGapLength)

HRegion HRegion::CloseEdgesLength(const HImage& Gradient, Hlong MinAmplitude, Hlong MaxGapLength) const

void HOperatorSetX.CloseEdgesLength(
[in] IHUntypedObjectX* Edges, [in] IHUntypedObjectX* Gradient, [out] IHUntypedObjectX*ClosedEdges, [in] VARIANT MinAmplitude, [in] VARIANT MaxGapLength)

IHRegionX* HRegionX.CloseEdgesLength(
[in] IHImageX* Gradient, [in] Hlong MinAmplitude, [in] Hlong MaxGapLength)

static void HOperatorSet.CloseEdgesLength(HObject edges, HObject gradient, out HObject closedEdges, HTuple minAmplitude, HTuple maxGapLength)

HRegion HRegion.CloseEdgesLength(HImage gradient, int minAmplitude, int maxGapLength)

Beschreibung

close_edges_lengthclose_edges_lengthCloseEdgesLengthclose_edges_lengthCloseEdgesLengthCloseEdgesLength schließt die von einem Kantendetektor gelieferten Kanten zu Konturen. Als Eingabe erwartet die Routine also neben den Kanten (EdgesEdgesEdgesEdgesEdgesedges) auch ein Amplitudenbild (GradientGradientGradientGradientGradientgradient), wie es beispielsweise die Routinen edges_imageedges_imageEdgesImageedges_imageEdgesImageEdgesImage oder sobel_ampsobel_ampSobelAmpsobel_ampSobelAmpSobelAmp 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 MaxGapLengthMaxGapLengthMaxGapLengthMaxGapLengthMaxGapLengthmaxGapLength 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 MinAmplitudeMinAmplitudeMinAmplitudeMinAmplitudeMinAmplitudeminAmplitude 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.

Parallelisierung

Parameter

EdgesEdgesEdgesEdgesEdgesedges (input_object)  region(-array) objectHRegionHRegionHRegionHRegionXHobject

Region mit ein Pixel breiten Kanten.

GradientGradientGradientGradientGradientgradient (input_object)  singlechannelimage objectHImageHImageHImageHImageXHobject (byte / uint2)

Kanten-Amplitudenbild.

ClosedEdgesClosedEdgesClosedEdgesClosedEdgesClosedEdgesclosedEdges (output_object)  region(-array) objectHRegionHRegionHRegionHRegionXHobject *

Ausgaberegion (geschlossene Kanten).

MinAmplitudeMinAmplitudeMinAmplitudeMinAmplitudeMinAmplitudeminAmplitude (input_control)  integer HTupleHTupleHTupleVARIANTHtuple (integer) (int / long) (Hlong) (Hlong) (Hlong) (Hlong)

Mindestamplitude für Kanten.

Defaultwert: 16

Wertevorschläge: 5, 8, 10, 12, 16, 20, 25, 30, 40, 50

Typischer Wertebereich: 1 ≤ MinAmplitude MinAmplitude MinAmplitude MinAmplitude MinAmplitude minAmplitude ≤ 255

Minimale Schrittweite: 1

Empfohlene Schrittweite: 1

Restriktion: MinAmplitude >= 0

MaxGapLengthMaxGapLengthMaxGapLengthMaxGapLengthMaxGapLengthmaxGapLength (input_control)  integer HTupleHTupleHTupleVARIANTHtuple (integer) (int / long) (Hlong) (Hlong) (Hlong) (Hlong)

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 MaxGapLength MaxGapLength MaxGapLength MaxGapLength maxGapLength ≤ 127

Minimale Schrittweite: 1

Empfohlene Schrittweite: 1

Restriktion: MaxGapLength > 0 && MaxGapLength <= 127

Beispiel (C)

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);

Ergebnis

Sind die Parameterwerte korrekt, dann liefert close_edges_lengthclose_edges_lengthCloseEdgesLengthclose_edges_lengthCloseEdgesLengthCloseEdgesLength den Wert 2 (H_MSG_TRUE). Das Verhalten bei leerer Eingabe (keine Eingabebilder vorhanden) lässt sich mittels set_system('no_object_result',<Result>)set_system("no_object_result",<Result>)SetSystem("no_object_result",<Result>)set_system("no_object_result",<Result>)SetSystem("no_object_result",<Result>)SetSystem("no_object_result",<Result>) festlegen. Gegebenenfalls wird eine Fehlerbehandlung durchgeführt.

Vorgänger

edges_imageedges_imageEdgesImageedges_imageEdgesImageEdgesImage, sobel_ampsobel_ampSobelAmpsobel_ampSobelAmpSobelAmp, thresholdthresholdThresholdthresholdThresholdThreshold, skeletonskeletonSkeletonskeletonSkeletonSkeleton

Alternativen

close_edgesclose_edgesCloseEdgesclose_edgesCloseEdgesCloseEdges, dilation1dilation1Dilation1dilation1Dilation1Dilation1, closingclosingClosingclosingClosingClosing

Literatur

M. Üsbeck: „Untersuchungen zur echtzeitfähigen Segmentierung“; Studienarbeit, Bayerisches Forschungszentrum für Wissensbasierte Systeme (FORWISS), Erlangen, 1993.

Modul

Foundation


KlassenKlassenKlassenKlassen | | | | Operatoren