Skip to content

laplaceLaplaceLaplacelaplacelaplace🔗

Short description🔗

laplaceLaplaceLaplacelaplacelaplace — Calculate the Laplace operator by using finite differences.

Signature🔗

laplace( image Image, out image ImageLaplace, string ResultType, integer MaskSize, string FilterMask )void Laplace( const HObject& Image, HObject* ImageLaplace, const HTuple& ResultType, const HTuple& MaskSize, const HTuple& FilterMask )static void HOperatorSet.Laplace( HObject image, out HObject imageLaplace, HTuple resultType, HTuple maskSize, HTuple filterMask )def laplace( image: HObject, result_type: str, mask_size: MaybeSequence[int], filter_mask: str ) -> HObject

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 )

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

HImage HImage::Laplace( const wchar_t* ResultType, Hlong MaskSize, const wchar_t* FilterMask ) const (Windows only)

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

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

Description🔗

laplaceLaplace filters the input images Imageimageimage using a Laplace operator. Depending on the parameter FilterMaskfilterMaskfilter_mask the following approximations of the Laplace operator are used:

  • 'n_4'"n_4"

                                 1
                        1       -4      1
                                 1
    
  • 'n_8'"n_8"

                        1       1       1
                        1       -8      1
                        1       1       1
    
  • 'n_8_isotropic'"n_8_isotropic"

                        10      22     10
                        22     -128    22
                        10      22     10
    

For the three filter masks the following normalizations of the resulting gray values is applied, (i.e., by dividing the result by the given divisor): 'n_4'"n_4" normalization by 1, 'n_8'"n_8", normalization by 2 and for 'n_8_isotropic'"n_8_isotropic" normalization by 32.

For a Laplace operator with size 3x3, the corresponding filter is applied directly, while for larger filter sizes the input image is first smoothed using a Gaussian filter (see gauss_imageGaussImage) or a binomial filter (see binomial_filterBinomialFilter) of size MaskSizemaskSizemask_size-2. The Gaussian filter is selected for the above values of ResultTyperesultTyperesult_type. Here, MaskSizemaskSizemask_size = 5, 7, 9, 11, or 13 must be used. The binomial filter is selected by appending '_binomial'"_binomial" to the above values of ResultTyperesultTyperesult_type. Here, MaskSizemaskSizemask_size can be selected between 5 and 39. Furthermore, it is possible to select different amounts of smoothing for the column and row direction by passing two values in MaskSizemaskSizemask_size. Here, the first value of MaskSizemaskSizemask_size corresponds to the mask width (smoothing in the column direction), while the second value corresponds to the mask height (smoothing in the row direction) of the binomial filter. Therefore,

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

for MaskSizemaskSizemask_size \(>\) 33 is equivalent to

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

and

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

is equivalent to

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

laplaceLaplace either returns the absolute value of the Laplace filtered image (ResultTyperesultTyperesult_type \(=\) 'absolute'"absolute") in a byte or uint2 image or the signed result (ResultTyperesultTyperesult_type \(=\) 'signed'"signed" or 'signed_clipped'"signed_clipped"). Here, the output image type has the same number of bytes per pixel as the input image (i.e., int1 or int2) for 'signed_clipped'"signed_clipped", while the output image has the next larger number of pixels (i.e., int2 or int4) for 'signed'"signed".

Attention🔗

Note that filter operators may return unexpected results if an image with a reduced domain is used as input. Please refer to the chapter Filters.

Execution information🔗

Execution information
  • Multithreading type: reentrant (runs in parallel with non-exclusive operators).

  • Multithreading scope: global (may be called from any thread).

  • Automatically parallelized on tuple level.

  • Automatically parallelized on channel level.

  • Automatically parallelized on domain level.

Parameters🔗

Imageimageimage (input_object) (multichannel-)image(-array) → object (byte / uint2)HObject (byte / uint2)HImage (byte / uint2)HObject (byte / uint2)Hobject (byte / uint2)

Input image.

ImageLaplaceimageLaplaceimage_laplace (output_object) (multichannel-)image(-array) → object (byte / uint2 / int2 / int2 / int4)HObject (byte / uint2 / int2 / int2 / int4)HImage (byte / uint2 / int2 / int2 / int4)HObject (byte / uint2 / int2 / int2 / int4)Hobject * (byte / uint2 / int2 / int2 / int4)

Laplace-filtered result image.

ResultTyperesultTyperesult_type (input_control) string → (string)HTuple (HString)HTuple (string)strHtuple (char*)

Type of the result image, whereas for byte and uint2 the absolute value is used.

Default: 'absolute'"absolute"
List of values: 'absolute', 'absolute_binomial', 'signed', 'signed_binomial', 'signed_clipped', 'signed_clipped_binomial'"absolute", "absolute_binomial", "signed", "signed_binomial", "signed_clipped", "signed_clipped_binomial"

MaskSizemaskSizemask_size (input_control) integer(-array) → (integer)HTuple (Hlong)HTuple (int / long)MaybeSequence[int]Htuple (Hlong)

Size of filter mask.

Default: 33
List of values: 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33, 35, 37, 393, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33, 35, 37, 39

FilterMaskfilterMaskfilter_mask (input_control) string → (string)HTuple (HString)HTuple (string)strHtuple (char*)

Filter mask used in the Laplace operator

Default: 'n_4'"n_4"
List of values: 'n_4', 'n_8', 'n_8_isotropic'"n_4", "n_8", "n_8_isotropic"

Example🔗

(C)

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

Result🔗

laplaceLaplace returns 2 (H_MSG_TRUE) if all parameters are correct. If the input is empty the behavior can be set via set_system('no_object_result',<Result>). If necessary, an exception is raised.

Combinations with other operators🔗

Combinations

Possible successors

zero_crossingZeroCrossing, dual_thresholdDualThreshold, thresholdThreshold

Alternatives

diff_of_gaussDiffOfGauss, laplace_of_gaussLaplaceOfGauss, derivate_gaussDerivateGauss

See also

highpass_imageHighpassImage, edges_imageEdgesImage

Module🔗

Foundation