mean_imagemean_imageMeanImageMeanImagemean_image (Operator)

Name

mean_imagemean_imageMeanImageMeanImagemean_image — Glättung durch Mittelwertbildung.

Signatur

mean_image(Image : ImageMean : MaskWidth, MaskHeight : )

Herror mean_image(const Hobject Image, Hobject* ImageMean, const Hlong MaskWidth, const Hlong MaskHeight)

Herror T_mean_image(const Hobject Image, Hobject* ImageMean, const Htuple MaskWidth, const Htuple MaskHeight)

void MeanImage(const HObject& Image, HObject* ImageMean, const HTuple& MaskWidth, const HTuple& MaskHeight)

HImage HImage::MeanImage(Hlong MaskWidth, Hlong MaskHeight) const

static void HOperatorSet.MeanImage(HObject image, out HObject imageMean, HTuple maskWidth, HTuple maskHeight)

HImage HImage.MeanImage(int maskWidth, int maskHeight)

def mean_image(image: HObject, mask_width: int, mask_height: int) -> HObject

Beschreibung

mean_imagemean_imageMeanImageMeanImageMeanImagemean_image führt eine lineare Glättung mit den Grauwerten aller Eingabebilder (ImageImageImageImageimageimage) durch. Die Filtermatrix besteht aus Einsen (gleich gewichtet) und hat die Größe MaskHeight x MaskWidth. Das Ergebnis der Faltung wird durch MaskHeight x MaskWidth dividiert. Als Randbehandlung werden die Grauwerte an den Bildrändern gespiegelt.

Für mean_imagemean_imageMeanImageMeanImageMeanImagemean_image sind spezielle Optimierungen unter Verwendung von SIMD Technologie implementiert. Ob diese tatsächlich zur Anwendung kommen, kann über den Systemparameter 'mmx_enable'"mmx_enable""mmx_enable""mmx_enable""mmx_enable""mmx_enable" (siehe set_systemset_systemSetSystemSetSystemSetSystemset_system) gesteuert werden. Falls 'mmx_enable'"mmx_enable""mmx_enable""mmx_enable""mmx_enable""mmx_enable" auf 'true'"true""true""true""true""true" gesetzt wird (und die verwendete Hardware SIMD Technologie unterstützt), wird die Berechnung intern unter Verwendung von SIMD Technologie durchgeführt. Es ist zu beachten, dass der Beschleunigungseffekt von SIMD Technologie bei großen, kompakten Eingaberegionen am größten ist. Im Einzelfall kann aber die Ausführung von mean_imagemean_imageMeanImageMeanImageMeanImagemean_image, abhängig von der Eingaberegion und den Hardwareeigenschaften, mit SIMD Technologie auch länger dauern als ohne.

In jedem Falle wirkt es sich günstig auf das Laufzeitverhalten von mean_imagemean_imageMeanImageMeanImageMeanImagemean_image aus, wenn man die Eingaberegion von ImageImageImageImageimageimage so wählt, dass es zu keiner Randbehandlung kommt.

Das Konzept der Glättungsfilter ist in der Einleitung zum Kapitel Filter / Glättung beschrieben.

Achtung

Werden für MaskHeightMaskHeightMaskHeightMaskHeightmaskHeightmask_height oder MaskWidthMaskWidthMaskWidthMaskWidthmaskWidthmask_width gerade statt ungerade Werte übergeben, verwendet die Routine an ihrer Stelle die nächstgrößeren ungeraden Werte (damit ist der Schwerpunkt der Filtermaske immer eindeutig bestimmt).

mean_imagemean_imageMeanImageMeanImageMeanImagemean_image kann für byte-, int2-, uint2-, int4- und real-Bilder auf OpenCL-Geräten ausgeführt werden, wenn MaskHeightMaskHeightMaskHeightMaskHeightmaskHeightmask_height kleiner als zweimal die Höhe von ImageImageImageImageimageimage ist. Der OpenCL Code berechnet die Filterantwort intern mit 32 bit Integerarithmetik (für real-Bilder wird einfach genaue Fließkommaarithmetik verwendet). Dies kann zu Überläufen (und damit zu fehlerhaften Ergebnissen) führen, wenn der gesamte Wertebereich von int4- oder real-Bildern verwendet wird. Da zur Verbesserung der Laufzeit für eine MaskWidthMaskWidthMaskWidthMaskWidthmaskWidthmask_width größer 9 ein vollständiger Scan jeder Zeile von ImageImageImageImageimageimage berechnet wird, kann es in diesem Fall auch bei byte-, int2- oder uint2-Bildern zu Überläufen kommen, wenn ImageImageImageImageimageimage sehr breit ist. In solchen Fällen muss die CPU-Version von mean_imagemean_imageMeanImageMeanImageMeanImagemean_image verwendet werden.

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.

Ausführungsinformationen

Parameter

ImageImageImageImageimageimage (input_object)  (multichannel-)image(-array) objectHImageHObjectHImageHobject (byte* / int2* / uint2* / int4* / int8 / real* / vector_field) *erlaubt für Compute Devices

Zu glättendes Bild.

ImageMeanImageMeanImageMeanImageMeanimageMeanimage_mean (output_object)  (multichannel-)image(-array) objectHImageHObjectHImageHobject * (byte / int2 / uint2 / int4 / int8 / real / vector_field)

Geglättetes Bild.

MaskWidthMaskWidthMaskWidthMaskWidthmaskWidthmask_width (input_control)  extent.x HTupleintHTupleHtuple (integer) (int / long) (Hlong) (Hlong)

Breite der Filtermaske.

Defaultwert: 9

Wertevorschläge: 3, 5, 7, 9, 11, 15, 23, 31, 43, 61, 101

Typischer Wertebereich: 1 ≤ MaskWidth MaskWidth MaskWidth MaskWidth maskWidth mask_width ≤ 501

Minimale Schrittweite: 2

Empfohlene Schrittweite: 2

Restriktion: odd(MaskWidth) && MaskWidth < width(Image) * 2

MaskHeightMaskHeightMaskHeightMaskHeightmaskHeightmask_height (input_control)  extent.y HTupleintHTupleHtuple (integer) (int / long) (Hlong) (Hlong)

Höhe der Filtermaske.

Defaultwert: 9

Wertevorschläge: 3, 5, 7, 9, 11, 15, 23, 31, 43, 61, 101

Typischer Wertebereich: 1 ≤ MaskHeight MaskHeight MaskHeight MaskHeight maskHeight mask_height ≤ 501

Minimale Schrittweite: 2

Empfohlene Schrittweite: 2

Restriktion: odd(MaskHeight) && MaskHeight < height(Image) * 2

Beispiel (HDevelop)

read_image(Image,'fabrik')
mean_image(Image,Mean,3,3)
dev_display(Mean)

Beispiel (C)

read_image(&Image,"fabrik");
mean_image(Image,&Mean,3,3);
disp_image(Mean,WindowHandle);

Beispiel (HDevelop)

read_image(Image,'fabrik')
mean_image(Image,Mean,3,3)
dev_display(Mean)

Beispiel (HDevelop)

read_image(Image,'fabrik')
mean_image(Image,Mean,3,3)
dev_display(Mean)

Beispiel (HDevelop)

read_image(Image,'fabrik')
mean_image(Image,Mean,3,3)
dev_display(Mean)

Komplexität

Pro Bildpunkt: O(15).

Ergebnis

Sind die Parameterwerte korrekt, dann liefert mean_imagemean_imageMeanImageMeanImageMeanImagemean_image den Wert 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>)SetSystem("no_object_result",<Result>)SetSystem("no_object_result",<Result>)set_system("no_object_result",<Result>) festlegen. Gegebenenfalls wird eine Fehlerbehandlung durchgeführt.

Vorgänger

reduce_domainreduce_domainReduceDomainReduceDomainReduceDomainreduce_domain, rectangle1_domainrectangle1_domainRectangle1DomainRectangle1DomainRectangle1Domainrectangle1_domain

Nachfolger

dyn_thresholddyn_thresholdDynThresholdDynThresholdDynThresholddyn_threshold, regiongrowingregiongrowingRegiongrowingRegiongrowingRegiongrowingregiongrowing

Alternativen

binomial_filterbinomial_filterBinomialFilterBinomialFilterBinomialFilterbinomial_filter, gauss_filtergauss_filterGaussFilterGaussFilterGaussFiltergauss_filter, smooth_imagesmooth_imageSmoothImageSmoothImageSmoothImagesmooth_image

Siehe auch

anisotropic_diffusionanisotropic_diffusionAnisotropicDiffusionAnisotropicDiffusionAnisotropicDiffusionanisotropic_diffusion, sigma_imagesigma_imageSigmaImageSigmaImageSigmaImagesigma_image, convol_imageconvol_imageConvolImageConvolImageConvolImageconvol_image, gen_lowpassgen_lowpassGenLowpassGenLowpassGenLowpassgen_lowpass

Modul

Foundation