var_thresholdvar_thresholdVarThresholdVarThreshold (Operator)

Name

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

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

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

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

Mit var_thresholdvar_thresholdVarThresholdVarThresholdVarThreshold ist es möglich, Pixel des Eingabebildes ImageImageImageImageimage zu selektieren, die

und

Damit ist es möglich, Regionen in einem unregelmäßigen, verrauschten oder ungleichmäßig ausgeleuchteten Hintergrund zu finden.

Hinweise zu den Eingabeparametern

MaskWidth, MaskHeight

Die Größe der Filtermaske, die durch MaskWidthMaskWidthMaskWidthMaskWidthmaskWidth und MaskHeightMaskHeightMaskHeightMaskHeightmaskHeight festgelegt wird, bestimmt die maximale Größe der Objekte, die segmentiert werden. Wenn die Maske allerdings zu groß ist, können Objekte, die dicht nebeneinander sind, miteinander verbunden werden.

(1) (2)
(3) (4)
(1) Ursprüngliches Bild; das Ziel ist es, die vertikalen Linien zu zählen. (2) MaskWidthMaskWidthMaskWidthMaskWidthmaskWidth := 12, MaskHeightMaskHeightMaskHeightMaskHeightmaskHeight := 12, StdDevScaleStdDevScaleStdDevScaleStdDevScalestdDevScale := 0.1, alle vertikalen Linien werden korrekt segmentiert. (3) Falls die Maskengröße zu gering gewählt wird (3), werden die gewünschten Regionen nicht korrekt ausgewählt. (4) Falls die Maske zu groß ist (40), werden Objekte, die dicht nebeneinander sind, miteinander verbunden.

Wenn MaskWidthMaskWidthMaskWidthMaskWidthmaskWidth oder MaskHeightMaskHeightMaskHeightMaskHeightmaskHeight gerade Werte enthalten, werden die nächstgrößeren ungeraden Werte genutzt. Insgesamt kann 3 als geringster sinnvoller Wert angesehen werden.

StdDevScale

Die lokale Standardabweichung wird als Maß für das Rauschen im Bild genutzt. Sie kann durch StdDevScaleStdDevScaleStdDevScaleStdDevScalestdDevScale auf die gewünschte Empfindlichkeit skaliert werden. Ein höherer Wert bedeutet, dass Pixel selektiert werden, die sich stark von ihrer Umgebung unterscheiden.

Ein sinnvoller Wertebereich für den Parameter StdDevScaleStdDevScaleStdDevScaleStdDevScalestdDevScale liegt zwischen -1.0 und 1.0. Vorgeschlagen wird der Wert 0.2. Wenn der Wert zu groß oder zu klein gewählt wird, kann eine komplett volle oder leere Region zurückgegeben werden.

(1) (2)
(1) Falls StdDevScaleStdDevScaleStdDevScaleStdDevScalestdDevScale zu groß gewählt wird (1.3), ist der Operator zu 'wählerisch'; nur Pixel, die ihrer Umgebung sehr ähnlich sind, werden ausgewählt. (2) Falls StdDevScaleStdDevScaleStdDevScaleStdDevScalestdDevScale zu gering ist (-0.3), werden zu viele Pixel ausgewählt, die ihrer Umgebung nur bedingt ähnlich sind.
AbsThreshold

In homogenen Bereichen eines Bildes ist die Standardabweichung gering; der Einfluss von einzelnen Grauwerten ist daher sehr hoch. Um die Empfindlichkeit des Operators in homogenen Bereichen zu reduzieren, kann AbsThresholdAbsThresholdAbsThresholdAbsThresholdabsThreshold angepasst werden. Damit können kleine Grauwertänderungen in homogenen Umgebungen ignoriert werden. Beachten Sie, falls Sie StdDevScaleStdDevScaleStdDevScaleStdDevScalestdDevScale negativ wählen, sollte AbsThresholdAbsThresholdAbsThresholdAbsThresholdabsThreshold entsprechend auch negativ sein.

LightDark

Wenn 'light'"light""light""light""light" oder 'dark'"dark""dark""dark""dark" ausgewählt sind, werden jeweils alle Pixel selektiert, die heller bzw. dunkler als ihre Umgebung sind. 'equal'"equal""equal""equal""equal" selektiert alle Pixel, die von keiner der beiden Einstellungen ausgewählt werden; also alle Pixel, die ihrer Umgebung recht ähnlich sind. 'not_equal'"not_equal""not_equal""not_equal""not_equal" vereint alle Pixel von 'light'"light""light""light""light" und 'dark'"dark""dark""dark""dark"; es werden also alle Pixel selektiert, die sich von ihrer Umgebung unterscheiden.

Die Berechnung

(1) (2)
(1) Ursprüngliches Bild. (2) Segmentiertes Bild (0.6, MaskWidthMaskWidthMaskWidthMaskWidthmaskWidth := 15, MaskHeightMaskHeightMaskHeightMaskHeightmaskHeight := 15, AbsThresholdAbsThresholdAbsThresholdAbsThresholdabsThreshold := 10). Die folgenden Bilder visualisieren beispielhaft, wie das Resultat entlang des blauen Pfeils entstanden ist.

var_thresholdvar_thresholdVarThresholdVarThresholdVarThreshold selektiert die Regionen des Eingabebildes ImageImageImageImageimage, in denen die Bildpunkte eine Schwellenwertbedingung erfüllen. Der Schwellenwert wird aus dem Mittelwert und der Standardabweichung in einer lokalen Maske der Größe MaskWidthMaskWidthMaskWidthMaskWidthmaskWidth x MaskHeightMaskHeightMaskHeightMaskHeightmaskHeight um jeden Bildpunkt (x,y) berechnet.

Sei

Der ursprüngliche Grauwert (GrayValue), der korrespondierende Mittelwert (Mean), und die Standardabweichung (StdDev) der Grauwerte in der Maske um diese Bildpunkte.

Der variable Schwellenwert v(x,y) ist dann definiert als

oder

Interpretation: Für eine positive StdDevScaleStdDevScaleStdDevScaleStdDevScalestdDevScale wird jeder Pixel analysiert. Es wird überprüft, ob der benutzerdefinierte Wert von AbsThresholdAbsThresholdAbsThresholdAbsThresholdabsThreshold oder die skalierte Standardabweichung größer ist. Der größere Wert wird als variabler Schwellenwert v(x,y) genutzt. Für eine negative StdDevScaleStdDevScaleStdDevScaleStdDevScalestdDevScale wird der jeweils kleinere Wert genutzt.

Die Standardabweichung kann mit StdDevScaleStdDevScaleStdDevScaleStdDevScalestdDevScale skaliert werden.
Der variable Schwellenwert wird aus der skalierten Standardabweichung und AbsThresholdAbsThresholdAbsThresholdAbsThresholdabsThreshold berechnet.

Welche Pixel basierend auf dem variablen Schwellenwert ausgewählt werden, bestimmt der Parameter LightDarkLightDarkLightDarkLightDarklightDark:

LightDarkLightDarkLightDarkLightDarklightDark = 'light'"light""light""light""light":

Interpretation: Falls ein Pixel um v(x,y) heller ist als seine Umgebung, wird er selektiert.

LightDarkLightDarkLightDarkLightDarklightDark = 'dark'"dark""dark""dark""dark":

Interpretation: Falls ein Pixel um v(x,y) dunkler ist als seine Umgebung, wird er selektiert.

LightDarkLightDarkLightDarkLightDarklightDark = 'equal'"equal""equal""equal""equal":

Interpretation: Es werden genau die Pixel ausgewählt, die weder von 'light'"light""light""light""light" noch von 'dark'"dark""dark""dark""dark" ausgewählt werden, also die Pixel, die ihrer Umgebung recht ähnlich sind.

LightDarkLightDarkLightDarkLightDarklightDark = 'not_equal'"not_equal""not_equal""not_equal""not_equal":

Interpretation: Es werden alle Pixel von 'light'"light""light""light""light" und 'dark'"dark""dark""dark""dark" ausgewählt, also alle Pixel, die sich um v(x,y) von ihrer Umgebung unterscheiden.

'light'"light""light""light""light" und 'dark'"dark""dark""dark""dark" basieren auf dem korrespondierenden Mittelwert und dem variablen Schwellenwert.
Zum Beispiel werden, wenn 'dark'"dark""dark""dark""dark" ausgewählt ist, alle Pixel selektiert, bei denen die 'Dark'-Kurve über der 'GrayValues'-Kurve ist.

Achtung

Dieser Operator liefert eventuell unerwartete Resultate zurück, wenn ein Bild mit einer reduzierten Domäne als Input übergeben wird. Weitere Informationen können im Kapitel Filter gefunden werden.

Ausführungsinformationen

Parameter

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

Eingabebild.

RegionRegionRegionRegionregion (output_object)  region(-array) objectHRegionHRegionHobject *

Segmentierte Regionen.

MaskWidthMaskWidthMaskWidthMaskWidthmaskWidth (input_control)  extent.x HTupleHTupleHtuple (integer) (int / long) (Hlong) (Hlong)

Breite des Maskenfensters für Mittelwert- und Standardabweichungsberechnung.

Defaultwert: 15

Wertevorschläge: 9, 11, 13, 15

Restriktion: MaskWidth >= 1

MaskHeightMaskHeightMaskHeightMaskHeightmaskHeight (input_control)  extent.y HTupleHTupleHtuple (integer) (int / long) (Hlong) (Hlong)

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

Defaultwert: 15

Wertevorschläge: 9, 11, 13, 15

Restriktion: MaskHeight >= 1

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

Faktor für die Standardabweichung der Grauwerte.

Defaultwert: 0.2

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

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

Minimale Grauwertdifferenz zum Mittelwert.

Defaultwert: 2

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

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

Schwellenwerttyp.

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

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"

Komplexität

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

Ergebnis

var_thresholdvar_thresholdVarThresholdVarThresholdVarThreshold 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_systemSetSystemSetSystemSetSystem kontrolliert werden. Wenn nötig wird eine Ausnahmebehandlung vorgenommen.

Alternativen

dyn_thresholddyn_thresholdDynThresholdDynThresholdDynThreshold, thresholdthresholdThresholdThresholdThreshold

Literatur

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

Modul

Foundation