eliminate_min_maxeliminate_min_maxEliminateMinMaxEliminateMinMax (Operator)


eliminate_min_maxeliminate_min_maxEliminateMinMaxEliminateMinMax — Smooth an image in the spatial domain to suppress noise.


eliminate_min_max(Image : FilteredImage : MaskWidth, MaskHeight, Gap, Mode : )

Herror eliminate_min_max(const Hobject Image, Hobject* FilteredImage, const Hlong MaskWidth, const Hlong MaskHeight, double Gap, const Hlong Mode)

Herror T_eliminate_min_max(const Hobject Image, Hobject* FilteredImage, const Htuple MaskWidth, const Htuple MaskHeight, const Htuple Gap, const Htuple Mode)

void EliminateMinMax(const HObject& Image, HObject* FilteredImage, const HTuple& MaskWidth, const HTuple& MaskHeight, const HTuple& Gap, const HTuple& Mode)

HImage HImage::EliminateMinMax(Hlong MaskWidth, Hlong MaskHeight, double Gap, Hlong Mode) const

static void HOperatorSet.EliminateMinMax(HObject image, out HObject filteredImage, HTuple maskWidth, HTuple maskHeight, HTuple gap, HTuple mode)

HImage HImage.EliminateMinMax(int maskWidth, int maskHeight, double gap, int mode)


eliminate_min_maxeliminate_min_maxEliminateMinMaxEliminateMinMaxEliminateMinMax smooths an image by replacing gray values with neighboring mean values, or local minima/maxima. In order to prevent edges and lines from being smoothed, only those gray values that represent local minima or maxima are replaced (if there is a line or edge within an image there will be at least one neighboring pixel with a comparable gray value). GapGapGapGapgap controls the strictness of replacment: Only gray values that exceed all other values within their local neighborhood more than GapGapGapGapgap and all values that fall below their neighboring more than GapGapGapGapgap are replaced: E(x,y) represents a NxM sized rectangular neighborhood of an pixel at position (x,y), containing all pixels within the neighborhood except the pixel itself;

ModeModeModeModemode specifies how to perform the new value in case of a replacement.

ModeModeModeModemode = 1 --> replace a local maximum with next minor local maximum and replace a local minimum with next bigger local minimum

ModeModeModeModemode = 2 --> replace with mean value of all pixels within the local neighborhood (including the replaced pixel)

ModeModeModeModemode = 3 --> replace with median value of all pixels within the local neighborhood (including the replaced pixel (this is default and used if ModeModeModeModemode has got any other value than 1 or 2)

MaskWidthMaskWidthMaskWidthMaskWidthmaskWidth and MaskHeightMaskHeightMaskHeightMaskHeightmaskHeight specifiy the width and height of the rectangular neighborhood. Border treatment: Pixels outside the image border are not considered (e.g.: With a local 3x3-mask the neighborhood of a pixel at (0,0) reduces to the pixels at (1,0),(0,1) and (1,1)).

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


eliminate_min_maxeliminate_min_maxEliminateMinMaxEliminateMinMaxEliminateMinMax only can work on byte images (HALCON image type BYTE_IMAGE). If MaskWidthMaskWidthMaskWidthMaskWidthmaskWidth or MaskHeightMaskHeightMaskHeightMaskHeightmaskHeight is an even number, it is replaced by the next higher odd number (this allows the unique extraction of the center of the filter mask). Width/height of the mask may not exceed the image width/height.

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


ImageImageImageImageimage (input_object)  (multichannel-)image(-array) objectHImageHImageHobject (byte / uint2)

Image to smooth.

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

Smoothed image.

MaskWidthMaskWidthMaskWidthMaskWidthmaskWidth (input_control)  extent.x HTupleHTupleHtuple (integer) (int / long) (Hlong) (Hlong)

Width of filter mask.

Default value: 3

Suggested values: 3, 5, 7, 9

Typical range of values: 3 ≤ MaskWidth MaskWidth MaskWidth MaskWidth maskWidth ≤ width(Image)

Minimum increment: 2

Recommended increment: 2

Restriction: odd(MaskWidth)

MaskHeightMaskHeightMaskHeightMaskHeightmaskHeight (input_control)  extent.y HTupleHTupleHtuple (integer) (int / long) (Hlong) (Hlong)

Height of filter mask.

Default value: 3

Suggested values: 3, 5, 7, 9

Typical range of values: 3 ≤ MaskHeight MaskHeight MaskHeight MaskHeight maskHeight ≤ width(Image)

Minimum increment: 2

Recommended increment: 2

Restriction: odd(MaskWidth)

GapGapGapGapgap (input_control)  number HTupleHTupleHtuple (real) (double) (double) (double)

Gap between local maximum/minimum and all other gray values of the neighborhood.

Default value: 1.0

Suggested values: 1.0, 2.0, 5.0, 10.0

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

Replacement rule (1 = next minimum/maximum, 2 = average, 3 =median).

Default value: 3

List of values: 1, 2, 3


eliminate_min_maxeliminate_min_maxEliminateMinMaxEliminateMinMaxEliminateMinMax returns 2 (H_MSG_TRUE) if all parameters are correct. If the input is empty eliminate_min_maxeliminate_min_maxEliminateMinMaxEliminateMinMaxEliminateMinMax returns with an error message.

Possible Successors

wiener_filterwiener_filterWienerFilterWienerFilterWienerFilter, wiener_filter_niwiener_filter_niWienerFilterNiWienerFilterNiWienerFilterNi

See also

mean_spmean_spMeanSpMeanSpMeanSp, mean_imagemean_imageMeanImageMeanImageMeanImage, median_imagemedian_imageMedianImageMedianImageMedianImage, median_weightedmedian_weightedMedianWeightedMedianWeightedMedianWeighted, binomial_filterbinomial_filterBinomialFilterBinomialFilterBinomialFilter, gauss_filtergauss_filterGaussFilterGaussFilterGaussFilter, smooth_imagesmooth_imageSmoothImageSmoothImageSmoothImage


M. Imme:“A Noise Peak Elimination Filter”; S. 204-211 in CVGIP Graphical Models and Image Processing, Vol. 53, No. 2, March 1991
M. Lückenhaus:“Grundlagen des Wiener-Filters und seine Anwendung in der Bildanalyse”; Diplomarbeit; Technische Universität München, Institut für Informatik; Lehrstuhl Prof. Radig; 1995.