ClassesClassesClassesClasses | | | | Operators

median_separatemedian_separateMedianSeparatemedian_separateMedianSeparateMedianSeparate (Operator)

Name

median_separatemedian_separateMedianSeparatemedian_separateMedianSeparateMedianSeparate — Separated median filtering with rectangle masks.

Signature

median_separate(Image : ImageSMedian : MaskWidth, MaskHeight, Margin : )

Herror median_separate(const Hobject Image, Hobject* ImageSMedian, const Hlong MaskWidth, const Hlong MaskHeight, const char* Margin)

Herror T_median_separate(const Hobject Image, Hobject* ImageSMedian, const Htuple MaskWidth, const Htuple MaskHeight, const Htuple Margin)

Herror median_separate(Hobject Image, Hobject* ImageSMedian, const HTuple& MaskWidth, const HTuple& MaskHeight, const HTuple& Margin)

HImage HImage::MedianSeparate(const HTuple& MaskWidth, const HTuple& MaskHeight, const HTuple& Margin) const

HImageArray HImageArray::MedianSeparate(const HTuple& MaskWidth, const HTuple& MaskHeight, const HTuple& Margin) const

void MedianSeparate(const HObject& Image, HObject* ImageSMedian, const HTuple& MaskWidth, const HTuple& MaskHeight, const HTuple& Margin)

HImage HImage::MedianSeparate(Hlong MaskWidth, Hlong MaskHeight, const HTuple& Margin) const

HImage HImage::MedianSeparate(Hlong MaskWidth, Hlong MaskHeight, const HString& Margin) const

HImage HImage::MedianSeparate(Hlong MaskWidth, Hlong MaskHeight, const char* Margin) const

void HOperatorSetX.MedianSeparate(
[in] IHUntypedObjectX* Image, [out] IHUntypedObjectX*ImageSMedian, [in] VARIANT MaskWidth, [in] VARIANT MaskHeight, [in] VARIANT Margin)

IHImageX* HImageX.MedianSeparate(
[in] Hlong MaskWidth, [in] Hlong MaskHeight, [in] VARIANT Margin)

static void HOperatorSet.MedianSeparate(HObject image, out HObject imageSMedian, HTuple maskWidth, HTuple maskHeight, HTuple margin)

HImage HImage.MedianSeparate(int maskWidth, int maskHeight, HTuple margin)

HImage HImage.MedianSeparate(int maskWidth, int maskHeight, string margin)

Description

The operator median_separatemedian_separateMedianSeparatemedian_separateMedianSeparateMedianSeparate carries out a variation of the median filtering: First two auxiliary images are created. The first one originates from a median filtering with a horizontal mask with a height of one pixel and the width MaskWidthMaskWidthMaskWidthMaskWidthMaskWidthmaskWidth followed by filtering with a mask with the height MaskHeightMaskHeightMaskHeightMaskHeightMaskHeightmaskHeight. The second auxiliary image is created by filtering with the same masks, but with a reversed sequence of the operation: first the vertical, then the horizontal mask. The output image results from averaging the two auxiliary images pixel by pixel.

The operator median_separatemedian_separateMedianSeparatemedian_separateMedianSeparateMedianSeparate is clearly faster than the normal operator median_imagemedian_imageMedianImagemedian_imageMedianImageMedianImage because both masks are one pixel wide, facilitating a very effecient processing. The runtime is practically independent of the size of the mask. For example, the operator median_separatemedian_separateMedianSeparatemedian_separateMedianSeparateMedianSeparate can be well used after texture filters, where large masks are needed.

The filter can also be used several times in a row in order to enhance the smoothing.

Parallelization

Parameters

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

Image to be filtered.

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

Median filtered image.

MaskWidthMaskWidthMaskWidthMaskWidthMaskWidthmaskWidth (input_control)  extent.x HTupleHTupleHTupleVARIANTHtuple (integer) (int / long) (Hlong) (Hlong) (Hlong) (Hlong)

Width of rank mask.

Default value: 25

Suggested values: 1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 27, 43, 51, 67, 91, 121, 151

Typical range of values: 1 ≤ MaskWidth MaskWidth MaskWidth MaskWidth MaskWidth maskWidth ≤ 401

Minimum increment: 2

Recommended increment: 2

MaskHeightMaskHeightMaskHeightMaskHeightMaskHeightmaskHeight (input_control)  extent.y HTupleHTupleHTupleVARIANTHtuple (integer) (int / long) (Hlong) (Hlong) (Hlong) (Hlong)

Height of rank mask.

Default value: 25

Suggested values: 1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 27, 43, 51, 67, 91, 121, 151

Typical range of values: 1 ≤ MaskHeight MaskHeight MaskHeight MaskHeight MaskHeight maskHeight ≤ 401

Minimum increment: 2

Recommended increment: 2

MarginMarginMarginMarginMarginmargin (input_control)  string HTupleHTupleHTupleVARIANTHtuple (string / integer / real) (string / int / long / double) (HString / Hlong / double) (char* / Hlong / double) (BSTR / Hlong / double) (char* / Hlong / double)

Border treatment.

Default value: 'mirrored' "mirrored" "mirrored" "mirrored" "mirrored" "mirrored"

Suggested values: 'mirrored'"mirrored""mirrored""mirrored""mirrored""mirrored", 'cyclic'"cyclic""cyclic""cyclic""cyclic""cyclic", 'continued'"continued""continued""continued""continued""continued", 0, 30, 60, 90, 120, 150, 180, 210, 240, 255

Example (HDevelop)

read_image(Image,'fabrik')
median_separate(Image,MedianSeparate,5,5,3)
disp_image(MedianSeparate,WindowHandle)

Example (C)

read_image(&Image,"fabrik");
median_separate(Image,&MedianSeparate,5,5,3);
disp_image(MedianSeparate,WindowHandle);

Example (HDevelop)

read_image(Image,'fabrik')
median_separate(Image,MedianSeparate,5,5,3)
disp_image(MedianSeparate,WindowHandle)

Example (HDevelop)

read_image(Image,'fabrik')
median_separate(Image,MedianSeparate,5,5,3)
disp_image(MedianSeparate,WindowHandle)

Example (HDevelop)

read_image(Image,'fabrik')
median_separate(Image,MedianSeparate,5,5,3)
disp_image(MedianSeparate,WindowHandle)

Example (HDevelop)

read_image(Image,'fabrik')
median_separate(Image,MedianSeparate,5,5,3)
disp_image(MedianSeparate,WindowHandle)

Complexity

For each pixel: O(40).

Possible Predecessors

texture_lawstexture_lawsTextureLawstexture_lawsTextureLawsTextureLaws, sobel_ampsobel_ampSobelAmpsobel_ampSobelAmpSobelAmp, deviation_imagedeviation_imageDeviationImagedeviation_imageDeviationImageDeviationImage

Possible Successors

learn_ndim_normlearn_ndim_normLearnNdimNormlearn_ndim_normLearnNdimNormLearnNdimNorm, learn_ndim_boxlearn_ndim_boxLearnNdimBoxlearn_ndim_boxLearnNdimBoxLearnNdimBox, regiongrowingregiongrowingRegiongrowingregiongrowingRegiongrowingRegiongrowing, auto_thresholdauto_thresholdAutoThresholdauto_thresholdAutoThresholdAutoThreshold

Alternatives

median_imagemedian_imageMedianImagemedian_imageMedianImageMedianImage

See also

rank_imagerank_imageRankImagerank_imageRankImageRankImage

References

R. Haralick, L. Shapiro; “Computer and Robot Vision”; Addison-Wesley, 1992, Seite 319

Module

Foundation


ClassesClassesClassesClasses | | | | Operators