KlassenKlassenKlassenKlassen | | | | Operatoren

laplacelaplaceLaplacelaplaceLaplaceLaplace (Operator)

Name

laplacelaplaceLaplacelaplaceLaplaceLaplace — Näherung des Laplace-Operators durch finite Differenzen.

Signatur

laplace(Image : ImageLaplace : ResultType, MaskSize, FilterMask : )

Herror laplace(const Hobject Image, Hobject* ImageLaplace, const char* ResultType, const Hlong MaskSize, const char* FilterMask)

Herror T_laplace(const Hobject Image, Hobject* ImageLaplace, const Htuple ResultType, const Htuple MaskSize, const Htuple FilterMask)

Herror laplace(Hobject Image, Hobject* ImageLaplace, const HTuple& ResultType, const HTuple& MaskSize, const HTuple& FilterMask)

HImage HImage::Laplace(const HTuple& ResultType, const HTuple& MaskSize, const HTuple& FilterMask) const

HImageArray HImageArray::Laplace(const HTuple& ResultType, const HTuple& MaskSize, const HTuple& FilterMask) const

void Laplace(const HObject& Image, HObject* ImageLaplace, const HTuple& ResultType, const HTuple& MaskSize, const HTuple& FilterMask)

HImage HImage::Laplace(const HString& ResultType, const HTuple& MaskSize, const HString& FilterMask) const

HImage HImage::Laplace(const HString& ResultType, Hlong MaskSize, const HString& FilterMask) const

HImage HImage::Laplace(const char* ResultType, Hlong MaskSize, const char* FilterMask) const

void HOperatorSetX.Laplace(
[in] IHUntypedObjectX* Image, [out] IHUntypedObjectX*ImageLaplace, [in] VARIANT ResultType, [in] VARIANT MaskSize, [in] VARIANT FilterMask)

IHImageX* HImageX.Laplace(
[in] BSTR ResultType, [in] VARIANT MaskSize, [in] BSTR FilterMask)

static void HOperatorSet.Laplace(HObject image, out HObject imageLaplace, HTuple resultType, HTuple maskSize, HTuple filterMask)

HImage HImage.Laplace(string resultType, HTuple maskSize, string filterMask)

HImage HImage.Laplace(string resultType, int maskSize, string filterMask)

Beschreibung

laplacelaplaceLaplacelaplaceLaplaceLaplace filtert die Eingabebilder (ImageImageImageImageImageimage) mittels des Laplace-Operators. Abhängig vom Parameter FilterMaskFilterMaskFilterMaskFilterMaskFilterMaskfilterMask werden folgende lokale Approximationen an den Laplace-Operator zugrundegelegt:

'n_4'

                           1
                  1       -4      1
                           1

'n_8'

                  1       1       1
                  1       -8      1
                  1       1       1

'n_8_isotropic'

                  10      22     10
                  22     -128    22
                  10      22     10

Für die einzelnen Filtermasken werden folgende Normierungen der Ergebnisgrauwerte, (d.h. Division durch die angegebene Zahl) durchgeführt: 'n_4' Normierung durch 1, 'n_8', Normierung durch 2 und 'n_8_isotropic' Normierung durch 32.

Für eine 3x3 Laplace-Filterung (MaskSizeMaskSizeMaskSizeMaskSizeMaskSizemaskSize = 3) wird der entsprechende Filter direkt angewandt. Für größere Laplace-Filter wird das Eingabebild dagegen zunächst mit dem Gaußfilter (siehe gauss_imagegauss_imageGaussImagegauss_imageGaussImageGaussImage) oder einem Binomialfilter (siehe binomial_filterbinomial_filterBinomialFilterbinomial_filterBinomialFilterBinomialFilter) der Größe MaskSizeMaskSizeMaskSizeMaskSizeMaskSizemaskSize-2 geglättet. Der Gaußfilter wird durch die oben angegebenen Werte von ResultTypeResultTypeResultTypeResultTypeResultTyperesultType ausgewählt. Hierbei ist MaskSizeMaskSizeMaskSizeMaskSizeMaskSizemaskSize = 5, 7, 9, 11 oder 13 zu wählen. Der Binomialfilter wird ausgewählt, indem '_binomial'"_binomial""_binomial""_binomial""_binomial""_binomial" an die oben angegebenen Werte von ResultTypeResultTypeResultTypeResultTypeResultTyperesultType angehängt wird. Hier kann MaskSizeMaskSizeMaskSizeMaskSizeMaskSizemaskSize zwischen 5 und 39 gewählt werden. Zusätzlich ist es hier möglich, unterschiedliche Glättungen in Spalten- und Zeilenrichtung durch Angabe von zwei Werten in MaskSizeMaskSizeMaskSizeMaskSizeMaskSizemaskSize zu erreichen. Dabei entspricht der erste Wert der Maskenbreite (Glättung in Spaltenrichtung) und der zweite Wert der Maskenhöhe (Glättung in Zeilenrichtung) des Binomialfilters. Somit ist z.B.

     laplace(O:R:'absolute',MaskSize,N:)

für MaskSize > 3 äquivalent zu

     gauss_image(O:G:MaskSize-2:) >
     laplace(G:R:'absolute',3,N:)

und

     laplace(O:R:'absolute_binomial',MaskSize,N:)

ist äquivalent zu

     binomial_filter(O:B:MaskSize-2,MaskSize-2:) >
     laplace(B:R:'absolute',3,N:).

laplacelaplaceLaplacelaplaceLaplaceLaplace liefert entweder den Absolutbetrag des Laplace-gefilterten Eingabebildes (ResultTypeResultTypeResultTypeResultTypeResultTyperesultType = 'absolute'"absolute""absolute""absolute""absolute""absolute") in einem byte/uint2-Bild oder unmittelbar das Filterergebnis (ResultTypeResultTypeResultTypeResultTypeResultTyperesultType = 'signed'"signed""signed""signed""signed""signed" oder 'signed_clipped'"signed_clipped""signed_clipped""signed_clipped""signed_clipped""signed_clipped") mit einem Pixeltyp mit Vorzeichen zurück. Dabei ist bei 'signed_clipped'"signed_clipped""signed_clipped""signed_clipped""signed_clipped""signed_clipped" der Ausgabebildtyp von derselben Anzahl von Bytes wie der Eingabebildtyp (also int1 oder int2), während bei 'signed'"signed""signed""signed""signed""signed" der Ausgabebildtyp die nächsthöhere Anzahl an Bytes besitzt (also int2 oder int4).

Parallelisierung

Parameter

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

Eingabebild.

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

Laplace-gefiltertes Ausgabebild.

ResultTypeResultTypeResultTypeResultTypeResultTyperesultType (input_control)  string HTupleHTupleHTupleVARIANTHtuple (string) (string) (HString) (char*) (BSTR) (char*)

Typ des Ergebnisbildes, wobei für byte und uint2 der Absolutbetrag zurückgegeben wird.

Defaultwert: 'absolute' "absolute" "absolute" "absolute" "absolute" "absolute"

Werteliste: 'absolute'"absolute""absolute""absolute""absolute""absolute", 'absolute_binomial'"absolute_binomial""absolute_binomial""absolute_binomial""absolute_binomial""absolute_binomial", 'signed'"signed""signed""signed""signed""signed", 'signed_binomial'"signed_binomial""signed_binomial""signed_binomial""signed_binomial""signed_binomial", 'signed_clipped'"signed_clipped""signed_clipped""signed_clipped""signed_clipped""signed_clipped", 'signed_clipped_binomial'"signed_clipped_binomial""signed_clipped_binomial""signed_clipped_binomial""signed_clipped_binomial""signed_clipped_binomial"

MaskSizeMaskSizeMaskSizeMaskSizeMaskSizemaskSize (input_control)  integer(-array) HTupleHTupleHTupleVARIANTHtuple (integer) (int / long) (Hlong) (Hlong) (Hlong) (Hlong)

Filtergröße.

Defaultwert: 3

Werteliste: 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33, 35, 37, 39

FilterMaskFilterMaskFilterMaskFilterMaskFilterMaskfilterMask (input_control)  string HTupleHTupleHTupleVARIANTHtuple (string) (string) (HString) (char*) (BSTR) (char*)

Filtermasle für den Laplace-Operator

Defaultwert: 'n_4' "n_4" "n_4" "n_4" "n_4" "n_4"

Werteliste: 'n_4'"n_4""n_4""n_4""n_4""n_4", 'n_8'"n_8""n_8""n_8""n_8""n_8", 'n_8_isotropic'"n_8_isotropic""n_8_isotropic""n_8_isotropic""n_8_isotropic""n_8_isotropic"

Beispiel (C)

read_image(&Image,"mreut");
laplace(Image,&Laplace,"signed",3,"n_8_isotropic");
zero_crossing(Laplace,&ZeroCrossings);

Ergebnis

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

Nachfolger

zero_crossingzero_crossingZeroCrossingzero_crossingZeroCrossingZeroCrossing, dual_thresholddual_thresholdDualThresholddual_thresholdDualThresholdDualThreshold, thresholdthresholdThresholdthresholdThresholdThreshold

Alternativen

diff_of_gaussdiff_of_gaussDiffOfGaussdiff_of_gaussDiffOfGaussDiffOfGauss, laplace_of_gausslaplace_of_gaussLaplaceOfGausslaplace_of_gaussLaplaceOfGaussLaplaceOfGauss, derivate_gaussderivate_gaussDerivateGaussderivate_gaussDerivateGaussDerivateGauss

Siehe auch

highpass_imagehighpass_imageHighpassImagehighpass_imageHighpassImageHighpassImage, edges_imageedges_imageEdgesImageedges_imageEdgesImageEdgesImage

Modul

Foundation


KlassenKlassenKlassenKlassen | | | | Operatoren