KlassenKlassenKlassenKlassen | | | | Operatoren

gauss_filtergauss_filterGaussFiltergauss_filterGaussFilterGaussFilter (Operator)

Name

gauss_filtergauss_filterGaussFiltergauss_filterGaussFilterGaussFilter — Glättung mit diskreten Gaußfunktionen.

Signatur

gauss_filter(Image : ImageGauss : Size : )

Herror gauss_filter(const Hobject Image, Hobject* ImageGauss, const Hlong Size)

Herror T_gauss_filter(const Hobject Image, Hobject* ImageGauss, const Htuple Size)

Herror gauss_filter(Hobject Image, Hobject* ImageGauss, const HTuple& Size)

HImage HImage::GaussFilter(const HTuple& Size) const

HImageArray HImageArray::GaussFilter(const HTuple& Size) const

void GaussFilter(const HObject& Image, HObject* ImageGauss, const HTuple& Size)

HImage HImage::GaussFilter(Hlong Size) const

void HOperatorSetX.GaussFilter(
[in] IHUntypedObjectX* Image, [out] IHUntypedObjectX*ImageGauss, [in] VARIANT Size)

IHImageX* HImageX.GaussFilter([in] Hlong Size)

static void HOperatorSet.GaussFilter(HObject image, out HObject imageGauss, HTuple size)

HImage HImage.GaussFilter(int size)

Beschreibung

gauss_filtergauss_filterGaussFiltergauss_filterGaussFilterGaussFilter glättet Bilder mittels der diskreten Gaußfunktion, welche eine Ahnnärung der kontinuierlichen Gauß-Funktion ist, die durch die folgende Formel definiert wird,

Die glättende Wirkung erhöht sich dabei mit zunehmender Filtergröße. Es werden folgende Filtergrößen (SizeSizeSizeSizeSizesize) unterstützt (in Klammer steht der sigma-Wert der Gaußfunktion):

    3    (0.600)
    5    (1.075)
    7    (1.550)
    9    (2.025)
    11   (2.550)
Zur Randbehandlung werden die Grauwerte der Bilder an den Bildrändern gespiegelt. Im Gegenteil zu dem Operator gauss_imagegauss_imageGaussImagegauss_imageGaussImageGaussImage, wächst den Wert des Sigma Parameters gradlinig mit der Filtergröße.

Als Alternative zu gauss_filtergauss_filterGaussFiltergauss_filterGaussFilterGaussFilter bietet sich binomial_filterbinomial_filterBinomialFilterbinomial_filterBinomialFilterBinomialFilter an. binomial_filterbinomial_filterBinomialFilterbinomial_filterBinomialFilterBinomialFilter ist deutlich effizienter als gauss_filtergauss_filterGaussFiltergauss_filterGaussFilterGaussFilter. Es ist zu beachten, dass die Maskengröße in binomial_filterbinomial_filterBinomialFilterbinomial_filterBinomialFilterBinomialFilter nicht dieselbe Glättung wie bei gauss_filtergauss_filterGaussFiltergauss_filterGaussFilterGaussFilter bewirkt. Korrespondierende Maskengrößen lassen sich über die jeweiligen sigma-Werte der Gaußfunktion bestimmen.

gauss_filtergauss_filterGaussFiltergauss_filterGaussFilterGaussFilter kann auf OpenCL Geräten ausgeführt werden. Allerdings kann das Ergebnis von dem der skalaren Implementierung geringfügig abweichen.

Achtung

Damit gauss_filtergauss_filterGaussFiltergauss_filterGaussFilterGaussFilter auf einem OpenCL-Gerät ausgeführt werden kann, muss ImageImageImageImageImageimage eine Breite und Höhe von mindestens 64 Pixeln aufweisen.

Parallelisierung

Parameter

ImageImageImageImageImageimage (input_object)  (multichannel-)image(-array) objectHImageHImageHImageHImageXHobject (byte* / int2* / uint2* / int4* / real*) *erlaubt für Compute Devices

Zu glättendes Bild.

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

Gefiltertes Bild.

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

Gewünschte Filtergröße.

Defaultwert: 5

Werteliste: 3, 5, 7, 9, 11

Beispiel (HDevelop)

gauss_filter(Input,Gauss,7)
regiongrowing(Gauss,Segments,7,7,5,100)

Beispiel (C)

gauss_filter(Input,&Gauss,7,);
regiongrowing(Gauss,&Segments,7,7,5,100,);

Beispiel (HDevelop)

gauss_filter(Input,Gauss,7)
regiongrowing(Gauss,Segments,7,7,5,100)

Beispiel (HDevelop)

gauss_filter(Input,Gauss,7)
regiongrowing(Gauss,Segments,7,7,5,100)

Beispiel (HDevelop)

gauss_filter(Input,Gauss,7)
regiongrowing(Gauss,Segments,7,7,5,100)

Beispiel (HDevelop)

gauss_filter(Input,Gauss,7)
regiongrowing(Gauss,Segments,7,7,5,100)

Komplexität

Pro Bildpunkt: O(Size * 2).

Ergebnis

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

Nachfolger

regiongrowingregiongrowingRegiongrowingregiongrowingRegiongrowingRegiongrowing, thresholdthresholdThresholdthresholdThresholdThreshold, sub_imagesub_imageSubImagesub_imageSubImageSubImage, dyn_thresholddyn_thresholdDynThresholddyn_thresholdDynThresholdDynThreshold, auto_thresholdauto_thresholdAutoThresholdauto_thresholdAutoThresholdAutoThreshold

Alternativen

binomial_filterbinomial_filterBinomialFilterbinomial_filterBinomialFilterBinomialFilter, smooth_imagesmooth_imageSmoothImagesmooth_imageSmoothImageSmoothImage, derivate_gaussderivate_gaussDerivateGaussderivate_gaussDerivateGaussDerivateGauss, isotropic_diffusionisotropic_diffusionIsotropicDiffusionisotropic_diffusionIsotropicDiffusionIsotropicDiffusion

Siehe auch

mean_imagemean_imageMeanImagemean_imageMeanImageMeanImage, anisotropic_diffusionanisotropic_diffusionAnisotropicDiffusionanisotropic_diffusionAnisotropicDiffusionAnisotropicDiffusion, sigma_imagesigma_imageSigmaImagesigma_imageSigmaImageSigmaImage, gen_lowpassgen_lowpassGenLowpassgen_lowpassGenLowpassGenLowpass

Modul

Foundation


KlassenKlassenKlassenKlassen | | | | Operatoren