KlassenKlassenKlassenKlassen | | | | Operatoren

trimmed_meantrimmed_meanTrimmedMeantrimmed_meanTrimmedMeanTrimmedMean (Operator)

Name

trimmed_meantrimmed_meanTrimmedMeantrimmed_meanTrimmedMeanTrimmedMean — Glättung mit einer beliebigen Rangmaske.

Signatur

trimmed_mean(Image, Mask : ImageTMean : Number, Margin : )

Herror trimmed_mean(const Hobject Image, const Hobject Mask, Hobject* ImageTMean, const Hlong Number, const char* Margin)

Herror T_trimmed_mean(const Hobject Image, const Hobject Mask, Hobject* ImageTMean, const Htuple Number, const Htuple Margin)

Herror trimmed_mean(Hobject Image, Hobject Mask, Hobject* ImageTMean, const HTuple& Number, const HTuple& Margin)

HImage HImage::TrimmedMean(const HRegion& Mask, const HTuple& Number, const HTuple& Margin) const

HImageArray HImageArray::TrimmedMean(const HRegion& Mask, const HTuple& Number, const HTuple& Margin) const

void TrimmedMean(const HObject& Image, const HObject& Mask, HObject* ImageTMean, const HTuple& Number, const HTuple& Margin)

HImage HImage::TrimmedMean(const HRegion& Mask, Hlong Number, const HTuple& Margin) const

HImage HImage::TrimmedMean(const HRegion& Mask, Hlong Number, const HString& Margin) const

HImage HImage::TrimmedMean(const HRegion& Mask, Hlong Number, const char* Margin) const

void HOperatorSetX.TrimmedMean(
[in] IHUntypedObjectX* Image, [in] IHUntypedObjectX* Mask, [out] IHUntypedObjectX*ImageTMean, [in] VARIANT Number, [in] VARIANT Margin)

IHImageX* HImageX.TrimmedMean(
[in] IHRegionX* Mask, [in] Hlong Number, [in] VARIANT Margin)

static void HOperatorSet.TrimmedMean(HObject image, HObject mask, out HObject imageTMean, HTuple number, HTuple margin)

HImage HImage.TrimmedMean(HRegion mask, int number, HTuple margin)

HImage HImage.TrimmedMean(HRegion mask, int number, string margin)

Beschreibung

trimmed_meantrimmed_meanTrimmedMeantrimmed_meanTrimmedMeanTrimmedMean führt eine nichtlineare Glättung der Grauwerte aller Eingabebilder (ImageImageImageImageImageimage) durch. Die Verschiebungsmaske (MaskMaskMaskMaskMaskmask) wird in Form einer Region übergeben. Berechnet wird der Mittelwert von NumberNumberNumberNumberNumbernumber Grauwert, die in der Nähe des Medians liegen. Es kann bei der Filterung zwischen verschiedenen Randbehandlungen (MarginMarginMarginMarginMarginmargin) gewählt werden:

    Grauwert     Bildpunkte außerhalb der Bildränder
                 werden als konstant (mit dem angegebenen
                 Grauwert) angenommen.
    'continued'  Fortsetzung der Randpunkte.
    'cyclic'     zyklische Fortsetzung der Bildränder.
    'mirrored'   Spiegelung der Bildpunkte an den Bildrändern.
Die angegebene Maske (= Region des Maskenbildes) wird so über die zu filternden Bilder geschoben, dass der Schwerpunkt der Maske alle Bildpunkte einmal berührt. Für jeden solchen Bildpunkt werden alle Nachbarpunkte, die von der Maske überdeckt werden, bzgl. ihrer Grauwerte aufsteigend sortiert. Jede solche sortierte Sequenz von Grauwerten enthält somit genau so viele Grauwerte, wie die Maske Bildpunkte hat. Sei F die Fläche der Maske, dann wird aus diesen Sequenzen der Mittelwert folgendermaßen berechnet: Die ersten (F - Number)/2 Grauwerte werden ignoriert. Dann werden die folgenden NumberNumberNumberNumberNumbernumber Grauwerte aufsummiert und durch NumberNumberNumberNumberNumbernumber dividiert. Die verbleibenden (F - NumberNumberNumberNumberNumbernumber)/2 Grauwerte werden wiederum ignoriert.

Achtung

Beachten Sie, dass Filteroperatoren eventuell unerwartete Resultate ausgeben, wenn ein Bild mit einer reduzierten Domäne als Input übergeben wird. Weitere Informationen können im Kapitel Filter gefunden werden.

Parallelisierung

Parameter

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

Zu filterndes Bild.

MaskMaskMaskMaskMaskmask (input_object)  region objectHRegionHRegionHRegionHRegionXHobject

Bild, dessen Region als Filtermaske dient.

ImageTMeanImageTMeanImageTMeanImageTMeanImageTMeanimageTMean (output_object)  (multichannel-)image(-array) objectHImageHImageHImageHImageXHobject * (byte / int2 / uint2 / int4 / real)

Gefiltertes Ergebnisbild.

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

Anzahl der Punkte über die gemittelt wird. Typischer Wert: Fläche(Mask) / 2.

Defaultwert: 5

Wertevorschläge: 1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31

Typischer Wertebereich: 1 ≤ Number Number Number Number Number number ≤ 401

Minimale Schrittweite: 1

Empfohlene Schrittweite: 2

MarginMarginMarginMarginMarginmargin (input_control)  string HTupleHTupleHTupleVARIANTHtuple (string / integer / real) (string / int / long / double) (HString / Hlong / double) (char* / Hlong / double) (BSTR / Hlong / double) (char* / Hlong / double)

Randbehandlung.

Defaultwert: 'mirrored' "mirrored" "mirrored" "mirrored" "mirrored" "mirrored"

Wertevorschläge: 'mirrored'"mirrored""mirrored""mirrored""mirrored""mirrored", 'cyclic'"cyclic""cyclic""cyclic""cyclic""cyclic", 'continued'"continued""continued""continued""continued""continued", 0, 30, 60, 90, 120, 150, 180, 210, 240, 255

Beispiel (HDevelop)

read_image(Image,'fabrik')
draw_region(Region,WindowHandle)
trimmed_mean(Image,Region,TrimmedMean,5,'mirrored')
dev_display(TrimmedMean)

Beispiel (C)

read_image(&Image,"fabrik");
draw_region(&Region,WindowHandle);
trimmed_mean(Image,Region,&TrimmedMean,5,"mirrored");
disp_image(TrimmedMean,WindowHandle);

Beispiel (HDevelop)

read_image(Image,'fabrik')
draw_region(Region,WindowHandle)
trimmed_mean(Image,Region,TrimmedMean,5,'mirrored')
dev_display(TrimmedMean)

Beispiel (HDevelop)

read_image(Image,'fabrik')
draw_region(Region,WindowHandle)
trimmed_mean(Image,Region,TrimmedMean,5,'mirrored')
dev_display(TrimmedMean)

Beispiel (HDevelop)

read_image(Image,'fabrik')
draw_region(Region,WindowHandle)
trimmed_mean(Image,Region,TrimmedMean,5,'mirrored')
dev_display(TrimmedMean)

Beispiel (HDevelop)

read_image(Image,'fabrik')
draw_region(Region,WindowHandle)
trimmed_mean(Image,Region,TrimmedMean,5,'mirrored')
dev_display(TrimmedMean)

Ergebnis

Sind die Parameterwerte korrekt, dann liefert trimmed_meantrimmed_meanTrimmedMeantrimmed_meanTrimmedMeanTrimmedMean 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

read_imageread_imageReadImageread_imageReadImageReadImage, draw_regiondraw_regionDrawRegiondraw_regionDrawRegionDrawRegion, gen_circlegen_circleGenCirclegen_circleGenCircleGenCircle, gen_rectangle1gen_rectangle1GenRectangle1gen_rectangle1GenRectangle1GenRectangle1

Nachfolger

thresholdthresholdThresholdthresholdThresholdThreshold, dyn_thresholddyn_thresholdDynThresholddyn_thresholdDynThresholdDynThreshold, regiongrowingregiongrowingRegiongrowingregiongrowingRegiongrowingRegiongrowing

Alternativen

sigma_imagesigma_imageSigmaImagesigma_imageSigmaImageSigmaImage, median_weightedmedian_weightedMedianWeightedmedian_weightedMedianWeightedMedianWeighted, median_imagemedian_imageMedianImagemedian_imageMedianImageMedianImage

Siehe auch

gen_circlegen_circleGenCirclegen_circleGenCircleGenCircle, gen_rectangle1gen_rectangle1GenRectangle1gen_rectangle1GenRectangle1GenRectangle1, gray_erosion_rectgray_erosion_rectGrayErosionRectgray_erosion_rectGrayErosionRectGrayErosionRect, gray_dilation_rectgray_dilation_rectGrayDilationRectgray_dilation_rectGrayDilationRectGrayDilationRect

Literatur

R. Haralick, L. Shapiro; „Computer and Robot Vision“; Addison-Wesley, 1992, Seite 320

Modul

Foundation


KlassenKlassenKlassenKlassen | | | | Operatoren