ClassesClasses | | Operators

binomial_filterbinomial_filterBinomialFilterBinomialFilter (Operator)

Name

binomial_filterbinomial_filterBinomialFilterBinomialFilter — Smooth an image using the binomial filter.

Signature

binomial_filter(Image : ImageBinomial : MaskWidth, MaskHeight : )

Herror binomial_filter(const Hobject Image, Hobject* ImageBinomial, const Hlong MaskWidth, const Hlong MaskHeight)

Herror T_binomial_filter(const Hobject Image, Hobject* ImageBinomial, const Htuple MaskWidth, const Htuple MaskHeight)

void BinomialFilter(const HObject& Image, HObject* ImageBinomial, const HTuple& MaskWidth, const HTuple& MaskHeight)

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

static void HOperatorSet.BinomialFilter(HObject image, out HObject imageBinomial, HTuple maskWidth, HTuple maskHeight)

HImage HImage.BinomialFilter(int maskWidth, int maskHeight)

Description

binomial_filterbinomial_filterBinomialFilterBinomialFilterBinomialFilter smooths the image ImageImageImageImageimage using a binomial filter with a mask size of MaskWidthMaskWidthMaskWidthMaskWidthmaskWidth * MaskHeightMaskHeightMaskHeightMaskHeightmaskHeight pixels and returns the smoothed image in ImageBinomialImageBinomialImageBinomialImageBinomialimageBinomial. The binomial filter is a very good approximation of a Gaussian filter that can be implemented extremely efficiently using only integer operations. Hence, binomial_filterbinomial_filterBinomialFilterBinomialFilterBinomialFilter is very fast. Let m = MaskHeightMaskHeightMaskHeightMaskHeightmaskHeight and n = MaskWidthMaskWidthMaskWidthMaskWidthmaskWidth. Then, the filter coefficients are given by binomial coefficients

as follows:
Here, i = 0, ..., m-1 and j = 0, ..., n-1. The binomial filter performs approximately the same smoothing as a Gaussian filter with , where for simplicity it is assumed that m = n. In detail, the relationship between n and is:

n
3 0.7523
5 1.0317
7 1.2505
9 1.4365
11 1.6010
13 1.7502
15 1.8876
17 2.0157
19 2.1361
21 2.2501
23 2.3586
25 2.4623
27 2.5618
29 2.6576
31 2.7500
33 2.8395
35 2.9262
37 3.0104

If different values are chosen for MaskHeightMaskHeightMaskHeightMaskHeightmaskHeight and MaskWidthMaskWidthMaskWidthMaskWidthmaskWidth, the above relation between n and still holds and refers to the amount of smoothing in the row and column directions.

binomial_filterbinomial_filterBinomialFilterBinomialFilterBinomialFilter can be executed on OpenCL devices for all supported image types.

For an explanation of the concept of smoothing filters see the introduction of chapter Filters / Smoothing.

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

Parameters

ImageImageImageImageimage (input_object)  (multichannel-)image(-array) objectHImageHImageHobject (byte* / uint2* / real*) *allowed for compute devices

Input image.

ImageBinomialImageBinomialImageBinomialImageBinomialimageBinomial (output_object)  (multichannel-)image(-array) objectHImageHImageHobject * (byte / uint2 / real)

Smoothed image.

MaskWidthMaskWidthMaskWidthMaskWidthmaskWidth (input_control)  integer HTupleHTupleHtuple (integer) (int / long) (Hlong) (Hlong)

Filter width.

Default value: 5

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

MaskHeightMaskHeightMaskHeightMaskHeightmaskHeight (input_control)  integer HTupleHTupleHtuple (integer) (int / long) (Hlong) (Hlong)

Filter height.

Default value: 5

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

Result

If the parameter values are correct the operator binomial_filterbinomial_filterBinomialFilterBinomialFilterBinomialFilter returns the value 2 (H_MSG_TRUE). The behavior in case of empty input (no input images available) is set via the operator 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>). If necessary an exception is raised.

Possible Predecessors

read_imageread_imageReadImageReadImageReadImage, grab_imagegrab_imageGrabImageGrabImageGrabImage

Possible Successors

regiongrowingregiongrowingRegiongrowingRegiongrowingRegiongrowing, thresholdthresholdThresholdThresholdThreshold, sub_imagesub_imageSubImageSubImageSubImage, dyn_thresholddyn_thresholdDynThresholdDynThresholdDynThreshold, auto_thresholdauto_thresholdAutoThresholdAutoThresholdAutoThreshold

Alternatives

gauss_filtergauss_filterGaussFilterGaussFilterGaussFilter, smooth_imagesmooth_imageSmoothImageSmoothImageSmoothImage, derivate_gaussderivate_gaussDerivateGaussDerivateGaussDerivateGauss, isotropic_diffusionisotropic_diffusionIsotropicDiffusionIsotropicDiffusionIsotropicDiffusion

See also

mean_imagemean_imageMeanImageMeanImageMeanImage, anisotropic_diffusionanisotropic_diffusionAnisotropicDiffusionAnisotropicDiffusionAnisotropicDiffusion, sigma_imagesigma_imageSigmaImageSigmaImageSigmaImage, gen_lowpassgen_lowpassGenLowpassGenLowpassGenLowpass

Module

Foundation


ClassesClasses | | Operators