KlassenKlassenKlassenKlassen | | | | Operatoren

var_thresholdvar_thresholdVarThresholdvar_thresholdVarThresholdVarThreshold (Operator)

Name

var_thresholdvar_thresholdVarThresholdvar_thresholdVarThresholdVarThreshold — Segmentieren mit Schwellen durch lokale Analyse von Mittelwert und Standardabweichung.

Signatur

var_threshold(Image : Region : MaskWidth, MaskHeight, StdDevScale, AbsThreshold, LightDark : )

Herror var_threshold(const Hobject Image, Hobject* Region, const Hlong MaskWidth, const Hlong MaskHeight, double StdDevScale, double AbsThreshold, const char* LightDark)

Herror T_var_threshold(const Hobject Image, Hobject* Region, const Htuple MaskWidth, const Htuple MaskHeight, const Htuple StdDevScale, const Htuple AbsThreshold, const Htuple LightDark)

Herror var_threshold(Hobject Image, Hobject* Region, const HTuple& MaskWidth, const HTuple& MaskHeight, const HTuple& StdDevScale, const HTuple& AbsThreshold, const HTuple& LightDark)

HRegion HImage::VarThreshold(const HTuple& MaskWidth, const HTuple& MaskHeight, const HTuple& StdDevScale, const HTuple& AbsThreshold, const HTuple& LightDark) const

HRegionArray HImageArray::VarThreshold(const HTuple& MaskWidth, const HTuple& MaskHeight, const HTuple& StdDevScale, const HTuple& AbsThreshold, const HTuple& LightDark) const

void VarThreshold(const HObject& Image, HObject* Region, const HTuple& MaskWidth, const HTuple& MaskHeight, const HTuple& StdDevScale, const HTuple& AbsThreshold, const HTuple& LightDark)

HRegion HImage::VarThreshold(Hlong MaskWidth, Hlong MaskHeight, const HTuple& StdDevScale, const HTuple& AbsThreshold, const HString& LightDark) const

HRegion HImage::VarThreshold(Hlong MaskWidth, Hlong MaskHeight, double StdDevScale, double AbsThreshold, const HString& LightDark) const

HRegion HImage::VarThreshold(Hlong MaskWidth, Hlong MaskHeight, double StdDevScale, double AbsThreshold, const char* LightDark) const

void HOperatorSetX.VarThreshold(
[in] IHUntypedObjectX* Image, [out] IHUntypedObjectX*Region, [in] VARIANT MaskWidth, [in] VARIANT MaskHeight, [in] VARIANT StdDevScale, [in] VARIANT AbsThreshold, [in] VARIANT LightDark)

IHRegionX* HImageX.VarThreshold(
[in] Hlong MaskWidth, [in] Hlong MaskHeight, [in] VARIANT StdDevScale, [in] VARIANT AbsThreshold, [in] BSTR LightDark)

static void HOperatorSet.VarThreshold(HObject image, out HObject region, HTuple maskWidth, HTuple maskHeight, HTuple stdDevScale, HTuple absThreshold, HTuple lightDark)

HRegion HImage.VarThreshold(int maskWidth, int maskHeight, HTuple stdDevScale, HTuple absThreshold, string lightDark)

HRegion HImage.VarThreshold(int maskWidth, int maskHeight, double stdDevScale, double absThreshold, string lightDark)

Beschreibung

Der Operator var_thresholdvar_thresholdVarThresholdvar_thresholdVarThresholdVarThreshold selektiert die Regionen des Eingabebildes ImageImageImageImageImageimage, in denen die Bildpunkte eine Schwellenwertbedingung erfüllen. Der Schwellenwert wird aus dem Mittelwert und der Standardabweichung in einem lokalen Fenster der Größe MaskWidthMaskWidthMaskWidthMaskWidthMaskWidthmaskWidth x MaskHeightMaskHeightMaskHeightMaskHeightMaskHeightmaskHeight um jeden Bildpunkt (x,y) berechnet. Wenn MaskWidthMaskWidthMaskWidthMaskWidthMaskWidthmaskWidth oder MaskHeightMaskHeightMaskHeightMaskHeightMaskHeightmaskHeight gerade Werte enthalten, werden die nächstgrößeren ungeraden Werte genutzt. Das Maskenfenster sollte größer als die zu segmentierenden Bildmerkmale sein und mindestens drei Pixel umfassen.

Sei g(x,y) der Grauwert des Eingabebildes ImageImageImageImageImageimage an der Position (x,y) und m(x,y) sowie d(x,y) der korrespondierende Mittelwert und die Standardabweichung der Grauwerte im Fenster um den Bildpunkt und

  v(x,y) = max( StdDevScaleStdDevScaleStdDevScaleStdDevScaleStdDevScalestdDevScale * d(x,y),AbsThresholdAbsThresholdAbsThresholdAbsThresholdAbsThresholdabsThreshold) für
  StdDevScaleStdDevScaleStdDevScaleStdDevScaleStdDevScalestdDevScale >= 0

oder

  v(x,y) = min( StdDevScaleStdDevScaleStdDevScaleStdDevScaleStdDevScalestdDevScale * d(x,y),AbsThresholdAbsThresholdAbsThresholdAbsThresholdAbsThresholdabsThreshold) für
  StdDevScaleStdDevScaleStdDevScaleStdDevScaleStdDevScalestdDevScale < 0.

Die Standardabweichung wird als Maß für das Rauschen im Bild genutzt und durch StdDevScaleStdDevScaleStdDevScaleStdDevScaleStdDevScalestdDevScale auf die gewünschte Empfindlichkeit skaliert. Der Schwellenwert wird in Abhängigkeit vom Parameter LightDarkLightDarkLightDarkLightDarkLightDarklightDark bestimmt durch:

LightDarkLightDarkLightDarkLightDarkLightDarklightDark = 'light'"light""light""light""light""light":

  g(x,y) >= m(x,y) + v(x,y).

LightDarkLightDarkLightDarkLightDarkLightDarklightDark = 'dark'"dark""dark""dark""dark""dark":

  g(x,y) <= m(x,y) - v(x,y).

LightDarkLightDarkLightDarkLightDarkLightDarklightDark = 'equal'"equal""equal""equal""equal""equal":

  m(x,y) - v(x,y) <= g(x,y)
      <= m(x,y) + v(x,y).

LightDarkLightDarkLightDarkLightDarkLightDarklightDark = 'not_equal'"not_equal""not_equal""not_equal""not_equal""not_equal":

  m(x,y) - v(x,y) > g(x,y)   oder   g(x,y) > m(x,y) + v(x,y).

Alle Bildpunkte, die die obige Bedingung erfüllen, werden in einer Ausgaberegion RegionRegionRegionRegionRegionregion zusammengefasst.

Ein sinnvoller Wertebereich für den Parameter StdDevScaleStdDevScaleStdDevScaleStdDevScaleStdDevScalestdDevScale liegt zwischen -1.0 und 1.0. Empfohlen wird der Wert 0.2. Wenn der Wert dieses Parameters zu groß oder zu klein gewählt wird, kann eine komplett volle oder leere Region zurückgegeben werden. Der Parameter AbsThresholdAbsThresholdAbsThresholdAbsThresholdAbsThresholdabsThreshold bildet eine zusätzliche Schwelle für StdDevScaleStdDevScaleStdDevScaleStdDevScaleStdDevScalestdDevScale*d(x,y). Ist StdDevScaleStdDevScaleStdDevScaleStdDevScaleStdDevScalestdDevScale*d(x,y) kleiner als AbsThresholdAbsThresholdAbsThresholdAbsThresholdAbsThresholdabsThreshold bei positivem StdDevScaleStdDevScaleStdDevScaleStdDevScaleStdDevScalestdDevScale bzw. größer bei negativem StdDevScaleStdDevScaleStdDevScaleStdDevScaleStdDevScalestdDevScale, wird stattdessen AbsThresholdAbsThresholdAbsThresholdAbsThresholdAbsThresholdabsThreshold verwendet.

Parallelisierung

Parameter

ImageImageImageImageImageimage (input_object)  singlechannelimage(-array) objectHImageHImageHImageHImageXHobject (byte / int2 / int4 / uint2 / real)

Eingabebild.

RegionRegionRegionRegionRegionregion (output_object)  region(-array) objectHRegionHRegionHRegionHRegionXHobject *

Segmentierte Regionen.

MaskWidthMaskWidthMaskWidthMaskWidthMaskWidthmaskWidth (input_control)  extent.x HTupleHTupleHTupleVARIANTHtuple (integer) (int / long) (Hlong) (Hlong) (Hlong) (Hlong)

Breite des Maskenfensters für Mittelwert- und Standardabweichungsberechnung.

Defaultwert: 15

Wertevorschläge: 9, 11, 13, 15

Restriktion: MaskWidth >= 1

MaskHeightMaskHeightMaskHeightMaskHeightMaskHeightmaskHeight (input_control)  extent.y HTupleHTupleHTupleVARIANTHtuple (integer) (int / long) (Hlong) (Hlong) (Hlong) (Hlong)

Höhe des Maskenfensters für Mittelwert- und Standardabweichungsberechnung.

Defaultwert: 15

Wertevorschläge: 9, 11, 13, 15

Restriktion: MaskHeight >= 1

StdDevScaleStdDevScaleStdDevScaleStdDevScaleStdDevScalestdDevScale (input_control)  number HTupleHTupleHTupleVARIANTHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong) (double / Hlong) (double / Hlong)

Faktor für die Standardabweichung der Grauwerte.

Defaultwert: 0.2

Wertevorschläge: -0.2, -0.1, 0.1, 0.2

AbsThresholdAbsThresholdAbsThresholdAbsThresholdAbsThresholdabsThreshold (input_control)  number HTupleHTupleHTupleVARIANTHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong) (double / Hlong) (double / Hlong)

Minimale Grauwertdifferenz zum Mittelwert.

Defaultwert: 2

Wertevorschläge: -2, -1, 0, 1, 2

LightDarkLightDarkLightDarkLightDarkLightDarklightDark (input_control)  string HTupleHTupleHTupleVARIANTHtuple (string) (string) (HString) (char*) (BSTR) (char*)

Schwellenwerttyp.

Defaultwert: 'dark' "dark" "dark" "dark" "dark" "dark"

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

Komplexität

Sei A die Größe der Eingaberegion, dann beträgt die Laufzeit O(A).

Ergebnis

var_thresholdvar_thresholdVarThresholdvar_thresholdVarThresholdVarThreshold gibt 2 (H_MSG_TRUE) zurück, wenn alle Parameter korrekt angegeben sind. Das Verhalten bezüglich der Eingabebilder und Ausgaberegionen kann mit den Werten von 'no_object_result', 'empty_region_result', und 'store_empty_region' im Operator set_systemset_systemSetSystemset_systemSetSystemSetSystem kontrolliert werden. Wenn nötig wird eine Ausnahmebehandlung vorgenommen.

Alternativen

dyn_thresholddyn_thresholdDynThresholddyn_thresholdDynThresholdDynThreshold, thresholdthresholdThresholdthresholdThresholdThreshold

Literatur

W.Niblack, “An Introduction to Digital Image Processing“, Page 115-116, Englewood Cliffs, N.J., Prentice Hall, 1986

Modul

Foundation


KlassenKlassenKlassenKlassen | | | | Operatoren