dyn_thresholddyn_thresholdDynThresholdDynThreshold (Operator)

Name

dyn_thresholddyn_thresholdDynThresholdDynThreshold — Segmentieren mit lokalem Schwellenwert.

Signatur

dyn_threshold(OrigImage, ThresholdImage : RegionDynThresh : Offset, LightDark : )

Herror dyn_threshold(const Hobject OrigImage, const Hobject ThresholdImage, Hobject* RegionDynThresh, double Offset, const char* LightDark)

Herror T_dyn_threshold(const Hobject OrigImage, const Hobject ThresholdImage, Hobject* RegionDynThresh, const Htuple Offset, const Htuple LightDark)

void DynThreshold(const HObject& OrigImage, const HObject& ThresholdImage, HObject* RegionDynThresh, const HTuple& Offset, const HTuple& LightDark)

HRegion HImage::DynThreshold(const HImage& ThresholdImage, const HTuple& Offset, const HString& LightDark) const

HRegion HImage::DynThreshold(const HImage& ThresholdImage, double Offset, const HString& LightDark) const

HRegion HImage::DynThreshold(const HImage& ThresholdImage, double Offset, const char* LightDark) const

HRegion HImage::DynThreshold(const HImage& ThresholdImage, double Offset, const wchar_t* LightDark) const   (Nur Windows)

static void HOperatorSet.DynThreshold(HObject origImage, HObject thresholdImage, out HObject regionDynThresh, HTuple offset, HTuple lightDark)

HRegion HImage.DynThreshold(HImage thresholdImage, HTuple offset, string lightDark)

HRegion HImage.DynThreshold(HImage thresholdImage, double offset, string lightDark)

Beschreibung

dyn_thresholddyn_thresholdDynThresholdDynThresholdDynThreshold wählt aus den Eingabebildern die Bildpunkte (g_{o} = g_{OrigImageOrigImageOrigImageOrigImageorigImage}) aus, die der Schwellenwertbedingung genügen. Sei g_{t} = g_{ThresholdImageThresholdImageThresholdImageThresholdImagethresholdImage} dann lautet diese Bedingung bei LightDarkLightDarkLightDarkLightDarklightDark = 'light': Bei LightDarkLightDarkLightDarkLightDarklightDark = 'dark' lautet sie: Bei LightDarkLightDarkLightDarkLightDarklightDark = 'equal': Und bei LightDarkLightDarkLightDarkLightDarklightDark = 'not_equal':

Typischerweise werden als Vergleichskomponenten das Original und eine geglättete Version eines Bildes verwendet (z.B. mean_imagemean_imageMeanImageMeanImageMeanImage, binomial_filterbinomial_filterBinomialFilterBinomialFilterBinomialFilter, gauss_filtergauss_filterGaussFilterGaussFilterGaussFilter, etc.). Dann entspricht dyn_thresholddyn_thresholdDynThresholdDynThresholdDynThreshold in seiner Wirkung etwa der Anwendung von thresholdthresholdThresholdThresholdThreshold auf ein hochpassgefiltertes Bild (highpass_imagehighpass_imageHighpassImageHighpassImageHighpassImage).

Es lassen sich Objektkanten finden, wobei die Größe (Durchmesser) der gesuchten Objekte durch die Maskengröße des Tiefpassfilters und die Steigung, bzw. Amplitude der Kante festgelegt wird.

Je größer der Maskendurchmesser gewählt wird, desto größer sind die gefundenen Regionen. Als Faustregel sollte die Maskengröße etwa doppelt so groß wie der Durchmesser der gesuchten Objekte sein. Es ist wichtig, den Parameter OffsetOffsetOffsetOffsetoffset nicht auf Null zu setzen, da dann zu viele kleine Regionen gefunden werden (Rauschen). Sinnvoll sind Werte, die betragsmäßig zwischen 5 und 40 liegen. Je größer OffsetOffsetOffsetOffsetoffset gewählt wird, desto weniger Punkte werden gefunden und umso kleiner werden die Regionen.

Alle Punkte eines Eingabebildes, die die obige Bedingung erfüllen, werden gemeinsam als eine Region abgespeichert. Die Zusammenhangskomponenten können gegebenenfalls mit connectionconnectionConnectionConnectionConnection berechnet werden.

Achtung

Wird OffsetOffsetOffsetOffsetoffset auf -1 .. 1 gesetzt, dann wird i.a. eine sehr verrauschte Region erzeugt, die viel Speicherplatz benötigt. Wird OffsetOffsetOffsetOffsetoffset zu groß gewählt (etwa > 60), dann kann es vorkommen, dass kein Punkt die Schwellenwertbedingung erfüllt (also eine leere Region berechnet wird). Wird OffsetOffsetOffsetOffsetoffset zu klein gewählt (etwa < -60) dann können alle Punkte die Schwellenwertbedingung erfüllen. Es wird also eine maximale Region erzeugt.

Ausführungsinformationen

Parameter

OrigImageOrigImageOrigImageOrigImageorigImage (input_object)  singlechannelimage(-array) objectHImageHImageHobject (byte / int2 / uint2 / int4 / real)

Eingabebild.

ThresholdImageThresholdImageThresholdImageThresholdImagethresholdImage (input_object)  singlechannelimage(-array) objectHImageHImageHobject (byte / int2 / uint2 / int4 / real)

Bild mit den lokalen Werten.

RegionDynThreshRegionDynThreshRegionDynThreshRegionDynThreshregionDynThresh (output_object)  region(-array) objectHRegionHRegionHobject *

Segmentierte Region.

OffsetOffsetOffsetOffsetoffset (input_control)  number HTupleHTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)

Schwellenwert für die Segmentation.

Defaultwert: 5.0

Wertevorschläge: 1.0, 3.0, 5.0, 7.0, 10.0, 20.0, 30.0

Typischer Wertebereich: -255.0 ≤ Offset Offset Offset Offset offset ≤ 255.0 (lin)

Minimale Schrittweite: 0.01

Empfohlene Schrittweite: 5

Restriktion: -255 < Offset && Offset < 255

LightDarkLightDarkLightDarkLightDarklightDark (input_control)  string HTupleHTupleHtuple (string) (string) (HString) (char*)

Helle,dunkle oder ähnliche Bereiche suchen.

Defaultwert: 'light' "light" "light" "light" "light"

Werteliste: 'dark'"dark""dark""dark""dark", 'equal'"equal""equal""equal""equal", 'light'"light""light""light""light", 'not_equal'"not_equal""not_equal""not_equal""not_equal"

Beispiel (HDevelop)

* Looking for regions with the diameter D
mean_image(Image,Mean,D*2+1,D*2+1)
dyn_threshold(Image,Mean,Seg,5,'light')
connection(Seg,Regions)

Beispiel (C)

/* Looking for regions with the diameter D */
mean_image(Image,&Mean,D*2+1,D*2+1);
dyn_threshold(Image,Mean,&Seg,5.0,"light");
connection(Seg,&Region);

Beispiel (HDevelop)

* Looking for regions with the diameter D
mean_image(Image,Mean,D*2+1,D*2+1)
dyn_threshold(Image,Mean,Seg,5,'light')
connection(Seg,Regions)

Beispiel (HDevelop)

* Looking for regions with the diameter D
mean_image(Image,Mean,D*2+1,D*2+1)
dyn_threshold(Image,Mean,Seg,5,'light')
connection(Seg,Regions)

Beispiel (HDevelop)

* Looking for regions with the diameter D
mean_image(Image,Mean,D*2+1,D*2+1)
dyn_threshold(Image,Mean,Seg,5,'light')
connection(Seg,Regions)

Komplexität

Sei A die Fläche der Eingaberegion, dann ist die Laufzeitkomplexität O(A)

Ergebnis

dyn_thresholddyn_thresholdDynThresholdDynThresholdDynThreshold liefert den Wert 2 (H_MSG_TRUE), falls die Parameter korrekt sind. Für das Verhalten bzgl. der Eingabebilder und Ausgaberegionen sind die Flags 'no_object_result'"no_object_result""no_object_result""no_object_result""no_object_result", 'empty_region_result'"empty_region_result""empty_region_result""empty_region_result""empty_region_result" und 'store_empty_region'"store_empty_region""store_empty_region""store_empty_region""store_empty_region" einstellbar (siehe set_systemset_systemSetSystemSetSystemSetSystem). Gegebenenfalls wird eine Fehlerbehandlung durchgeführt.

Vorgänger

mean_imagemean_imageMeanImageMeanImageMeanImage, smooth_imagesmooth_imageSmoothImageSmoothImageSmoothImage, binomial_filterbinomial_filterBinomialFilterBinomialFilterBinomialFilter, gauss_filtergauss_filterGaussFilterGaussFilterGaussFilter

Nachfolger

connectionconnectionConnectionConnectionConnection, select_shapeselect_shapeSelectShapeSelectShapeSelectShape, reduce_domainreduce_domainReduceDomainReduceDomainReduceDomain, select_grayselect_graySelectGraySelectGraySelectGray, rank_regionrank_regionRankRegionRankRegionRankRegion, dilation1dilation1Dilation1Dilation1Dilation1, openingopeningOpeningOpeningOpening, erosion1erosion1Erosion1Erosion1Erosion1

Alternativen

check_differencecheck_differenceCheckDifferenceCheckDifferenceCheckDifference, thresholdthresholdThresholdThresholdThreshold

Siehe auch

highpass_imagehighpass_imageHighpassImageHighpassImageHighpassImage, sub_imagesub_imageSubImageSubImageSubImage

Modul

Foundation