mean_imagemean_imageMeanImageMeanImage (Operator)

Name

mean_imagemean_imageMeanImageMeanImage — 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)

Beschreibung

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

Für mean_imagemean_imageMeanImageMeanImageMeanImage 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" (siehe set_systemset_systemSetSystemSetSystemSetSystem) gesteuert werden. Falls 'mmx_enable'"mmx_enable""mmx_enable""mmx_enable""mmx_enable" auf '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_imageMeanImageMeanImageMeanImage, 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_imageMeanImageMeanImageMeanImage aus, wenn man die Eingaberegion von ImageImageImageImageimage 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 MaskHeightMaskHeightMaskHeightMaskHeightmaskHeight oder MaskWidthMaskWidthMaskWidthMaskWidthmaskWidth 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_imageMeanImageMeanImageMeanImage kann für byte-, int2-, uint2-, int4- und real-Bilder auf OpenCL Geräten ausgeführt werden, wenn MaskHeightMaskHeightMaskHeightMaskHeightmaskHeight kleiner als zweimal die Höhe von ImageImageImageImageimage 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 MaskWidthMaskWidthMaskWidthMaskWidthmaskWidth größer 9 ein vollständiger Scan jeder Zeile von ImageImageImageImageimage berechnet wird, kann es in diesem Fall auch bei byte-, int2- oder uint2-Bildern zu Überläufen kommen, wenn ImageImageImageImageimage sehr breit ist. In solchen Fällen muss die CPU-Version von mean_imagemean_imageMeanImageMeanImageMeanImage 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

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

Zu glättendes Bild.

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

Geglättetes Bild.

MaskWidthMaskWidthMaskWidthMaskWidthmaskWidth (input_control)  extent.x HTupleHTupleHtuple (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 ≤ 501

Minimale Schrittweite: 2

Empfohlene Schrittweite: 2

Restriktion: odd(MaskWidth)

MaskHeightMaskHeightMaskHeightMaskHeightmaskHeight (input_control)  extent.y HTupleHTupleHtuple (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 ≤ 501

Minimale Schrittweite: 2

Empfohlene Schrittweite: 2

Restriktion: odd(MaskHeight)

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_imageMeanImageMeanImageMeanImage 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>)SetSystem("no_object_result",<Result>)SetSystem("no_object_result",<Result>) festlegen. Gegebenenfalls wird eine Fehlerbehandlung durchgeführt.

Vorgänger

reduce_domainreduce_domainReduceDomainReduceDomainReduceDomain, rectangle1_domainrectangle1_domainRectangle1DomainRectangle1DomainRectangle1Domain

Nachfolger

dyn_thresholddyn_thresholdDynThresholdDynThresholdDynThreshold, regiongrowingregiongrowingRegiongrowingRegiongrowingRegiongrowing

Alternativen

binomial_filterbinomial_filterBinomialFilterBinomialFilterBinomialFilter, gauss_filtergauss_filterGaussFilterGaussFilterGaussFilter, smooth_imagesmooth_imageSmoothImageSmoothImageSmoothImage

Siehe auch

anisotropic_diffusionanisotropic_diffusionAnisotropicDiffusionAnisotropicDiffusionAnisotropicDiffusion, sigma_imagesigma_imageSigmaImageSigmaImageSigmaImage, convol_imageconvol_imageConvolImageConvolImageConvolImage, gen_lowpassgen_lowpassGenLowpassGenLowpassGenLowpass

Modul

Foundation