segment_image_mserT_segment_image_mserSegmentImageMserSegmentImageMsersegment_image_mser (Operator)

Name

segment_image_mserT_segment_image_mserSegmentImageMserSegmentImageMsersegment_image_mser — Segmentieren von Maximally Stable Extremal Regions (MSER).

Signatur

segment_image_mser(Image : MSERDark, MSERLight : Polarity, MinArea, MaxArea, Delta, GenParamName, GenParamValue : )

Herror T_segment_image_mser(const Hobject Image, Hobject* MSERDark, Hobject* MSERLight, const Htuple Polarity, const Htuple MinArea, const Htuple MaxArea, const Htuple Delta, const Htuple GenParamName, const Htuple GenParamValue)

void SegmentImageMser(const HObject& Image, HObject* MSERDark, HObject* MSERLight, const HTuple& Polarity, const HTuple& MinArea, const HTuple& MaxArea, const HTuple& Delta, const HTuple& GenParamName, const HTuple& GenParamValue)

HRegion HImage::SegmentImageMser(HRegion* MSERLight, const HString& Polarity, const HTuple& MinArea, const HTuple& MaxArea, const HTuple& Delta, const HTuple& GenParamName, const HTuple& GenParamValue) const

HRegion HImage::SegmentImageMser(HRegion* MSERLight, const HString& Polarity, Hlong MinArea, Hlong MaxArea, Hlong Delta, const HTuple& GenParamName, const HTuple& GenParamValue) const

HRegion HImage::SegmentImageMser(HRegion* MSERLight, const char* Polarity, Hlong MinArea, Hlong MaxArea, Hlong Delta, const HTuple& GenParamName, const HTuple& GenParamValue) const

HRegion HImage::SegmentImageMser(HRegion* MSERLight, const wchar_t* Polarity, Hlong MinArea, Hlong MaxArea, Hlong Delta, const HTuple& GenParamName, const HTuple& GenParamValue) const   (Nur Windows)

static void HOperatorSet.SegmentImageMser(HObject image, out HObject MSERDark, out HObject MSERLight, HTuple polarity, HTuple minArea, HTuple maxArea, HTuple delta, HTuple genParamName, HTuple genParamValue)

HRegion HImage.SegmentImageMser(out HRegion MSERLight, string polarity, HTuple minArea, HTuple maxArea, HTuple delta, HTuple genParamName, HTuple genParamValue)

HRegion HImage.SegmentImageMser(out HRegion MSERLight, string polarity, int minArea, int maxArea, int delta, HTuple genParamName, HTuple genParamValue)

def segment_image_mser(image: HObject, polarity: str, min_area: MaybeSequence[Union[int, float]], max_area: MaybeSequence[Union[int, float]], delta: Union[int, float], gen_param_name: Sequence[str], gen_param_value: Sequence[Union[str, float, int]]) -> Tuple[HObject, HObject]

Beschreibung

segment_image_msersegment_image_mserSegmentImageMserSegmentImageMserSegmentImageMsersegment_image_mser segmentiert ein Bild in Regionen mit homogenen Grauwerten. Dies erfolgt mit Hilfe der Methode der Maximally Stable Extremal Regions (MSER). Die Homogenität einer Region wird bestimmt, indem ihre lokale Umgebung betrachtet wird. Der Operator ist daher besonders für die Segmentierung von Objekten vor einem inhomogenen Hintergrund und für Anwendungen mit wechselnder Beleuchtung geeignet.

Parameter

PolarityPolarityPolarityPolaritypolaritypolarity

Der Parameter PolarityPolarityPolarityPolaritypolaritypolarity bestimmt, ob MSERs extrahiert werden, die dunkler als ihre Umgebung sind, oder solche, die heller als ihre Umgebung sind.

Wert Bedeutung
'dark'"dark""dark""dark""dark""dark" Es werden nur MSERs extrahiert, die dunkler als ihre Umgebung sind.
'light'"light""light""light""light""light" Es werden nur MSERs extrahiert, die heller als ihre Umgebung sind.
'both'"both""both""both""both""both" (Defaultwert) Es werden beide Arten von MSERs extrahiert.
MinAreaMinAreaMinAreaMinAreaminAreamin_area, MaxAreaMaxAreaMaxAreaMaxAreamaxAreamax_area

Die Parameter MinAreaMinAreaMinAreaMinAreaminAreamin_area und MaxAreaMaxAreaMaxAreaMaxAreamaxAreamax_area beschränken die Größe der zurückgegebenen MSERs.

Sehr kleine Werte von MinAreaMinAreaMinAreaMinAreaminAreamin_area, z.B. Werte kleiner als 5, können zu deutlich höheren Laufzeiten führen. Dies gilt insbesondere dann, wenn das zu segmentierende Bild starkes Rauschen enthält.

Wird für MaxAreaMaxAreaMaxAreaMaxAreamaxAreamax_area ein leeres Tupel übergeben (Default), werden nur MSERs zurückgegeben die echte Teilmengen der Zusammenhangskomponenten des Bilddefinitionsbereiches sind.

DeltaDeltaDeltaDeltadeltadelta

Der Parameter DeltaDeltaDeltaDeltadeltadelta beeinflusst die Selektivität des Verfahrens. Größere Werte erhöhen die Selektivität und führen zu weniger MSERs. Kleinere Werte führen zu mehr MSERs.

Eine genauere Beschreibung der Parameter und ihrer Auswirkungen findet sich im Abschnitt Segmentierungsprozess.

Die folgenden generischen Parameter können die für eine Feinanpassung der MSER-Segmentierung verwendet werden. Die generischen Parameter können mittels GenParamNameGenParamNameGenParamNameGenParamNamegenParamNamegen_param_name und GenParamValueGenParamValueGenParamValueGenParamValuegenParamValuegen_param_value gesetzt werden.

'max_variation'"max_variation""max_variation""max_variation""max_variation""max_variation":

Die maximale Variation der Fläche einer Region im Bereich von DeltaDeltaDeltaDeltadeltadelta Schwellenwerten. Größere Werte führen zu mehr MSERs. Kleinere Werte führen zu weniger MSERs.

Eine Definition des Begriffs 'variation' sowie eine genauere Beschreibung des generischen Parameters 'max_variation'"max_variation""max_variation""max_variation""max_variation""max_variation" und seiner Auswirkungen findet sich im Abschnitt Segmentierungsprozess.

Werte: reelle Werte größer gleich 0.0

Vorgeschlagene Werte: 0.1, 0.2, 0.5, 1.0, 2.0, 5.0

Defaultwert: 0.2

'min_diversity'"min_diversity""min_diversity""min_diversity""min_diversity""min_diversity":

Die Verschiedenartigkeit (minimale relative Größendifferenz oder 'diversity') zweier sich überlappender MSERs. Kleinere Werte führen zu mehr MSERs. Größere Werte führen zu weniger MSERs.

Eine Definition des Begriffs Verschiedenartigkeit ('diversity') sowie eine genauere Beschreibung des generischen Parameters 'min_diversity'"min_diversity""min_diversity""min_diversity""min_diversity""min_diversity" und seiner Auswirkungen findet sich im Abschnitt Segmentierungsprozess.

Werte: reelle Werte größer gleich 0.0

Vorgeschlagene Werte: 0.1, 0.5, 0.8, 1.0, 2.0, 5.0

Defaultwert: 0.8

'may_touch_border'"may_touch_border""may_touch_border""may_touch_border""may_touch_border""may_touch_border":

Steuert die Behandlung von Regionen, die den Rand des Definitionsbereiches des Eingabebildes berühren.

Wird der Parameter 'may_touch_border'"may_touch_border""may_touch_border""may_touch_border""may_touch_border""may_touch_border" auf 'false'"false""false""false""false""false" gesetzt, so werden alle Regionen verworfen, die den Rand des Definitionsbereiches berühren. Wird der Parameter 'may_touch_border'"may_touch_border""may_touch_border""may_touch_border""may_touch_border""may_touch_border" auf 'true'"true""true""true""true""true" gesetzt, so werden solche Regionen zurück gegeben.

Werte: 'false'"false""false""false""false""false", 'true'"true""true""true""true""true"

Defaultwert: 'false'"false""false""false""false""false", wenn der maximale Definitionsbereiches eines Bildes verwendet wird; 'true'"true""true""true""true""true", wenn der Definitionsbereiche reduziert wird.

'min_gray'"min_gray""min_gray""min_gray""min_gray""min_gray", 'max_gray'"max_gray""max_gray""max_gray""max_gray""max_gray":

Die Werte 'min_gray'"min_gray""min_gray""min_gray""min_gray""min_gray" und 'max_gray'"max_gray""max_gray""max_gray""max_gray""max_gray" reduzieren den Eingabedefinitionsbereich dynamisch durch die Anwendung eines Schwellenwertes (thresholdthresholdThresholdThresholdThresholdthreshold) auf dem Eingabebild. Alle Pixel außerhalb des angegebenen Grauwertbereiches werden bei der Segmentierung nicht beachtet. Dadurch kann die Laufzeit erheblich reduziert werden.

Bitte beachten Sie, dass falls das Eingabebild ImageImageImageImageimageimage einen maximalen Definitionsbereich hat, der durch Eingabe von 'min_gray'"min_gray""min_gray""min_gray""min_gray""min_gray" und 'max_gray'"max_gray""max_gray""max_gray""max_gray""max_gray" verkleinert wird, kann die Standardeinstellung von 'may_touch_border'"may_touch_border""may_touch_border""may_touch_border""may_touch_border""may_touch_border" dazu führen, dass mehr Ergebnisregionen zurückgegeben werden, als ohne Einschränkung des Graubereiches.

Werte: ganzzahlige Werte größer gleich 0

Defaultwert: 'min_gray'"min_gray""min_gray""min_gray""min_gray""min_gray": 0, 'max_gray'"max_gray""max_gray""max_gray""max_gray""max_gray": 255 für Byte-Bilder, 65535 für uint2-Bilder

'max_gray'"max_gray""max_gray""max_gray""max_gray""max_gray":

Der maximale Grauwert der Pixel, die im Segmentierungsprozess berücksichtigt werden sollen. Wird der Parameter auf einen Wert kleiner als der größte im Bild vorkommenden Grauwert gesetzt, werden alle Pixel mit Grauwerten größer als dieser Wert bei der Extraktion der MSER ignoriert. Dadurch kann die Laufzeit erheblich reduziert werden. Bitte beachten Sie, dass das Bild mit den gesetzten Schwellenwerten in einem Vorverarbeitungsschritt segmentiert wird. Dadurch entsteht eine neue Bilddomäne mit einem neuen Rand. Deswegen kann es notwendig sein 'may_touch_border'"may_touch_border""may_touch_border""may_touch_border""may_touch_border""may_touch_border" auf 'true'"true""true""true""true""true" zu setzen um die gewünschten Regionen zu erhalten.

Werte: ganzzahlige Werte größer gleich 0.

Vorgeschlagene Werte: 200, 230

Defaultwert: 255 für Bilder vom Typ byte und 65535 für Bilder vom Typ uint2.

Segmentierungsprozess

In einem ersten Schritt wird das Eingabebild mit allen Schwellenwerten t, von 0 bis zum maximal vorkommenden Grauwert, segmentiert.

Zur Erläuterung wird im folgenden Beispiel ein Eingabebild mit zwölf Grauwerten (0...11) verwendet. Auf der rechten Seite der folgenden Abbildung sind die Ränder der resultierenden Schwellenwert-Regionen dargestellt.

Beispielbild mit den Grauwerten 0 (= schwarz) bis 11 (= weiß)
Ränder der Schwellenwert-Regionen für alle Schwellenwerte (t = 0...11)

Die resultierenden Schwellenwert-Regionen werden in ihre Zusammenhangskomponenten (4-er Nachbarschaft) zerlegt. Da die einzelnen Komponenten durch wachsende Schwellenwerte entstehen, nimmt ihre Fläche mit jedem neuen Schwellenwert zu. Diese Flächenveränderung der einzelnen Komponenten wird im Folgenden ausgewertet. Eine MSER ist eine Komponente, deren Fläche im Bereich von DeltaDeltaDeltaDeltadeltadelta Schwellenwerten nicht signifikant variiert. Um als MSER akzeptiert zu werden, muss die Variation der Fläche ein lokales Minimum sein, und sie darf nicht größer als 'max_variation'"max_variation""max_variation""max_variation""max_variation""max_variation" sein. Darüber hinaus muss die Verschiedenartigkeit ('diversity') von sich überlappenden MSERs größer als 'min_diversity'"min_diversity""min_diversity""min_diversity""min_diversity""min_diversity" sein (siehe unten).

Die Variation der Fläche einer Komponente ist wie folgt definiert: wobei

Ein Verkleinern des Wertes von 'max_variation'"max_variation""max_variation""max_variation""max_variation""max_variation" führt zu einer geringeren Anzahl akzeptierter Regionen.

In unserem Beispiel besteht jede Region nur aus einer einzigen Komponente. Daher werden die Bezeichnungen (Schwellenwert-)Region und Komponente im Folgenden synonym verwendet. Die folgende Tabelle zeigt die Fläche der Schwellenwert-Regionen und ihre Variation für DeltaDeltaDeltaDeltadeltadelta gleich 1 und für DeltaDeltaDeltaDeltadeltadelta gleich 2.

Schwellenwert t Schwellenwert-Region Fläche der Schwellenwert-Region Variation der Fläche (für DeltaDeltaDeltaDeltadeltadelta = 1) Variation der Fläche (für DeltaDeltaDeltaDeltadeltadelta = 2)

0
320 0.28 0.53
1
410 0.41 0.54
2
490 0.27 0.49
3
540 0.13 0.31
4
560 0.07 0.25
5
580 0.12 0.29
6
630 0.21 0.38
7
710 0.24 0.44
8
800 0.23 0.41
9
890 0.18 1.67
10
960 1.36 1.46
11
2200 0.56 0.60

Die Fläche der Schwellenwert-Regionen steigt mit wachsendem Schwellenwert t an. Für DeltaDeltaDeltaDeltadeltadelta gleich 1, treten lokale Minima der Variation für die Schwellenwerte t = 0, t = 4, t = 9 und t = 11 auf. Daher sind die entsprechenden Schwellenwert-Regionen MSER-Kandidaten. Für DeltaDeltaDeltaDeltadeltadelta gleich 2 entsprechen die MSER-Kandidaten den Schwellenwert-Regionen für t = 0, t = 4, t = 8 und t = 11.

Standardmäßig werden die Zusammenhangskomponenten des Definitionsbereichs nicht als MSERs zurückgegeben. Dieses Verhalten kann dadurch geändert werden, dass 'may_touch_border'"may_touch_border""may_touch_border""may_touch_border""may_touch_border""may_touch_border" auf 'true'"true""true""true""true""true" und MaxAreaMaxAreaMaxAreaMaxAreamaxAreamax_area auf einen Wert größer der Fläche des Definitionsbereichs, gesetzt wird. Auf diese Weise können auch die Zusammenhangskomponenten selbst als MSERs extrahiert werden. In unserem Beispiel führt das Standardverhalten dazu, dass die MSER-Kandidaten die den Schwellenwert-Regionen für t = 11 entsprechen, eliminiert werden.

Die folgende Abbildung zeigt die resultierenden MSER-Kandidaten für DeltaDeltaDeltaDeltadeltadelta gleich 1 und für DeltaDeltaDeltaDeltadeltadelta gleich 2 (mit 'max_variation'"max_variation""max_variation""max_variation""max_variation""max_variation" gleich 1.0). Die MSERs sind dabei jeweils dem Eingabebild überlagert.

MSER-Kandidaten für Delta gleich 1 MSER-Kandidaten für Delta gleich 2
entspricht t = 0
entspricht t = 0
entspricht t = 4
entspricht t = 4
entspricht t = 9
entspricht t = 8

Die Segmentierungsmethode teilt das Bild nicht in disjunkte Regionen, sondern extrahiert alle gültigen MSERs, welche sich im Allgemeinen auch überlappen dürfen. Nachdem die MSER-Kandidaten durch wachsende Schwellenwerte entstehen, bestehen zwei sich überlappende Regionen immer aus einer größeren und einer kleineren Region, wobei die kleinere komplett in der größeren enthalten ist. Die Verschiedenartigkeit ('diversity') beschreibt, wie stark sich die Flächen der sich überlappenden Regionen unterscheiden. Sie wird als relative Flächendifferenz berechnet: wobei : die Flaeche des aktuellen MSER-Kandidaten ist und : die Flaeche des MSER-Kandidaten ist, der den aktuellen enthält.

Es werden nur MSER-Kandidaten zurück gegeben, deren Verschiedenartigkeit ('diversity') mindestens dem Wert 'min_diversity'"min_diversity""min_diversity""min_diversity""min_diversity""min_diversity" entspricht. Der Parameter 'min_diversity'"min_diversity""min_diversity""min_diversity""min_diversity""min_diversity" kann daher verwendet werden, um die Anzahl sich überlappender Regionen zu steuern. Größere Werte für 'min_diversity'"min_diversity""min_diversity""min_diversity""min_diversity""min_diversity" reduzieren die Anzahl sich überlappender Regionen und kleinere Werte erhöhen diese Anzahl. Die jeweils größten MSER-Kandidaten, d.h. die Kandidaten, die nicht in einem anderen enthalten sind, werden aber in jedem Fall zurück gegeben.

Index i des MSER-Kandidaten Schwellenwert Fläche der Schwellenwert-Region Verschiedenartigkeit ('diversity') des MSER-Kandidaten
0 0 320 0.75
Delta=1 1 4 560 0.59
2 9 890 N/A
0 0 320 0.75
Delta=2 1 4 560 0.43
2 8 800 N/A

Zuerst wird der MSER-Kandidat mit der kleinsten Verschiedenartigkeit ('diversity') gelöscht, falls sein Wert kleiner als 'min_diversity'"min_diversity""min_diversity""min_diversity""min_diversity""min_diversity" ist. In unserem Beispiel wurde der Wert für 'min_diversity'"min_diversity""min_diversity""min_diversity""min_diversity""min_diversity" auf 0.5 gesetzt. Für Delta gleich 2 wird daher der MSER-Kandidat mit der Verschiedenartigkeit 0.43 gelöscht. Daraufhin werden die Werte für die Verschiedenartigkeit der verbleibenden MSER-Kandidaten neu berechnet. Hierbei erhält der MSER-Kandidat 0 einen Wert von 1.5. Damit haben jetzt alle MSER-Kandidaten eine Verschiedenartigkeit die größer als 0.5 ist und werden als MSERs akzeptiert.

Das Segmentierungverfahren berechnet MSERs innerhalb jeder Zusammenhangskomponente des Definitionsbereiches des Eingabebildes.

Ausführungsinformationen

Dieser Operator unterstützt Cancel-Timeouts und Interrupts.

Parameter

ImageImageImageImageimageimage (input_object)  singlechannelimage objectHImageHObjectHImageHobject (byte / uint2)

Eingabebild.

MSERDarkMSERDarkMSERDarkMSERDarkMSERDarkmserdark (output_object)  region-array objectHRegionHObjectHRegionHobject *

Segmentierte dunkle MSERs.

MSERLightMSERLightMSERLightMSERLightMSERLightmserlight (output_object)  region-array objectHRegionHObjectHRegionHobject *

Segmentierte helle MSERs.

PolarityPolarityPolarityPolaritypolaritypolarity (input_control)  string HTuplestrHTupleHtuple (string) (string) (HString) (char*)

Polarität der segmentierten MSERs.

Defaultwert: 'both' "both" "both" "both" "both" "both"

Werteliste: 'both'"both""both""both""both""both", 'dark'"dark""dark""dark""dark""dark", 'light'"light""light""light""light""light"

MinAreaMinAreaMinAreaMinAreaminAreamin_area (input_control)  number(-array) HTupleMaybeSequence[Union[int, float]]HTupleHtuple (integer / real) (int / long / double) (Hlong / double) (Hlong / double)

Minimale Fläche der MSERs.

Defaultwert: 10

Wertevorschläge: 1, 10, 100, 10000

Typischer Wertebereich: 1 ≤ MinArea MinArea MinArea MinArea minArea min_area

MaxAreaMaxAreaMaxAreaMaxAreamaxAreamax_area (input_control)  number(-array) HTupleMaybeSequence[Union[int, float]]HTupleHtuple (integer / real) (int / long / double) (Hlong / double) (Hlong / double)

Maximale Fläche der MSERs.

Defaultwert: []

Wertevorschläge: 1, 10, 100, 10000

Typischer Wertebereich: 1 ≤ MaxArea MaxArea MaxArea MaxArea maxArea max_area

DeltaDeltaDeltaDeltadeltadelta (input_control)  number HTupleUnion[int, float]HTupleHtuple (integer / real) (int / long / double) (Hlong / double) (Hlong / double)

Bereich von DeltaDeltaDeltaDeltadeltadelta Schwellenwerten, für den eine MSER stabil sein muss.

Defaultwert: 15

Wertevorschläge: 5, 10, 20, 50

Typischer Wertebereich: 1 ≤ Delta Delta Delta Delta delta delta ≤ 65535

GenParamNameGenParamNameGenParamNameGenParamNamegenParamNamegen_param_name (input_control)  attribute.name-array HTupleSequence[str]HTupleHtuple (string) (string) (HString) (char*)

Namen der generischen Parameter.

Defaultwert: []

Werteliste: 'max_gray'"max_gray""max_gray""max_gray""max_gray""max_gray", 'max_variation'"max_variation""max_variation""max_variation""max_variation""max_variation", 'may_touch_border'"may_touch_border""may_touch_border""may_touch_border""may_touch_border""may_touch_border", 'min_diversity'"min_diversity""min_diversity""min_diversity""min_diversity""min_diversity", 'min_gray'"min_gray""min_gray""min_gray""min_gray""min_gray"

GenParamValueGenParamValueGenParamValueGenParamValuegenParamValuegen_param_value (input_control)  attribute.value-array HTupleSequence[Union[str, float, int]]HTupleHtuple (string / real / integer) (string / double / int / long) (HString / double / Hlong) (char* / double / Hlong)

Werte der generischen Parameter.

Defaultwert: []

Wertevorschläge: 0.5, 0.8, 'true'"true""true""true""true""true", 'false'"false""false""false""false""false", 30, 50, 200, 230

Beispiel (HDevelop)

read_image (Image,'pellets')
segment_image_mser (Image, MSERDark, MSERLight, 'light',\
                    1000, 10000, 3, [],[])

Ergebnis

Sind alle Eingabeparameter korrekt, gibt segment_image_msersegment_image_mserSegmentImageMserSegmentImageMserSegmentImageMsersegment_image_mser den Wert 2 (H_MSG_TRUE) zurück. Andernfalls wird eine Fehlerbehandlung durchgeführt.

Nachfolger

select_shapeselect_shapeSelectShapeSelectShapeSelectShapeselect_shape, select_grayselect_graySelectGraySelectGraySelectGrayselect_gray

Alternativen

auto_thresholdauto_thresholdAutoThresholdAutoThresholdAutoThresholdauto_threshold, binary_thresholdbinary_thresholdBinaryThresholdBinaryThresholdBinaryThresholdbinary_threshold, char_thresholdchar_thresholdCharThresholdCharThresholdCharThresholdchar_threshold, local_thresholdlocal_thresholdLocalThresholdLocalThresholdLocalThresholdlocal_threshold, watershedswatershedsWatershedsWatershedsWatershedswatersheds, regiongrowingregiongrowingRegiongrowingRegiongrowingRegiongrowingregiongrowing

Literatur

J. Matas, O. Chum, M. Urban, and T. Pajdla: „Robust wide baseline stereo from maximally stable extremal regions.“; Proc. of British Machine Vision Conference, pages 384-396; 2002.

Modul

Foundation