eliminate_min_maxeliminate_min_maxEliminateMinMaxEliminateMinMaxeliminate_min_max (Operator)


eliminate_min_maxeliminate_min_maxEliminateMinMaxEliminateMinMaxeliminate_min_max — 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)

def eliminate_min_max(image: HObject, mask_width: int, mask_height: int, gap: float, mode: int) -> HObject


eliminate_min_maxeliminate_min_maxEliminateMinMaxEliminateMinMaxEliminateMinMaxeliminate_min_max 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). GapGapGapGapgapgap controls the strictness of replacement: Only gray values that exceed all other values within their local neighborhood more than GapGapGapGapgapgap and all values that fall below their neighboring more than GapGapGapGapgapgap 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;

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

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

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

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

MaskWidthMaskWidthMaskWidthMaskWidthmaskWidthmask_width and MaskHeightMaskHeightMaskHeightMaskHeightmaskHeightmask_height specify 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_maxEliminateMinMaxEliminateMinMaxEliminateMinMaxeliminate_min_max only can work on byte images (HALCON image type BYTE_IMAGE). If MaskWidthMaskWidthMaskWidthMaskWidthmaskWidthmask_width or MaskHeightMaskHeightMaskHeightMaskHeightmaskHeightmask_height 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


ImageImageImageImageimageimage (input_object)  (multichannel-)image(-array) objectHImageHObjectHImageHobject (byte / uint2)

Image to smooth.

FilteredImageFilteredImageFilteredImageFilteredImagefilteredImagefiltered_image (output_object)  (multichannel-)image(-array) objectHImageHObjectHImageHobject * (byte / uint2)

Smoothed image.

MaskWidthMaskWidthMaskWidthMaskWidthmaskWidthmask_width (input_control)  extent.x HTupleintHTupleHtuple (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 mask_width ≤ width(Image)

Minimum increment: 2

Recommended increment: 2

Restriction: odd(MaskWidth)

MaskHeightMaskHeightMaskHeightMaskHeightmaskHeightmask_height (input_control)  extent.y HTupleintHTupleHtuple (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 mask_height ≤ width(Image)

Minimum increment: 2

Recommended increment: 2

Restriction: odd(MaskWidth)

GapGapGapGapgapgap (input_control)  number HTuplefloatHTupleHtuple (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

ModeModeModeModemodemode (input_control)  integer HTupleintHTupleHtuple (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_maxEliminateMinMaxEliminateMinMaxEliminateMinMaxeliminate_min_max returns TRUE if all parameters are correct. If the input is empty eliminate_min_maxeliminate_min_maxEliminateMinMaxEliminateMinMaxEliminateMinMaxeliminate_min_max returns with an error message.

Possible Successors

wiener_filterwiener_filterWienerFilterWienerFilterWienerFilterwiener_filter, wiener_filter_niwiener_filter_niWienerFilterNiWienerFilterNiWienerFilterNiwiener_filter_ni

See also

mean_spmean_spMeanSpMeanSpMeanSpmean_sp, mean_imagemean_imageMeanImageMeanImageMeanImagemean_image, median_imagemedian_imageMedianImageMedianImageMedianImagemedian_image, median_weightedmedian_weightedMedianWeightedMedianWeightedMedianWeightedmedian_weighted, binomial_filterbinomial_filterBinomialFilterBinomialFilterBinomialFilterbinomial_filter, gauss_filtergauss_filterGaussFilterGaussFilterGaussFiltergauss_filter, smooth_imagesmooth_imageSmoothImageSmoothImageSmoothImagesmooth_image


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.