median_image ( Image : ImageMedian : MaskType, Radius, Margin : )

Median filtering with different rank masks.

The operator median_image carries out a non-linear smoothing of the gray values of all input images (Image). The shift mask (MaskType) is transmitted in the form of an object (more precisely: its region). Several border treatments can be chosen for filtering (Margin):

    gray value   Pixels outside of the image edges
                 are assumed to be constant (with the
                 indicated gray value).
    'continued'  Continuation of edge pixels.
    'cyclic'     Cyclic continuation of image edges.
    'mirrored'   Reflection of pixels at the image edges.
The indicated mask (= region of the mask image) is put over the image to be filtered in such a way that the center of the mask touches all pixels of the objects once. For each of these pixels all neighboring pixels covered by the mask are sorted in an ascending sequence according to their gray values. Thus, each of these sorted gray value sequences contains exactly as many gray values as the mask has pixels. From these sequences the median is selected and entered as resulting gray value at the corresponding output image.


Parameters

Image (input_object)
(multichannel-)image(-array) -> object : byte / int2 / uint2 / int4 / real
Image to be filtered.

ImageMedian (output_object)
(multichannel-)image(-array) -> object : byte / int2 / uint2 / int4 / real
Median filtered image.

MaskType (input_control)
string -> string
Type of median mask.
Default value: 'circle'
List of values: 'circle', 'rectangle'

Radius (input_control)
integer -> integer
Radius of median mask.
Default value: 1
Suggested values: 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 15, 19, 25, 31, 39, 47, 59
Typical range of values: 1 <= Radius <= 101
Minimum increment: 1
Recommended increment: 2

Margin (input_control)
string -> string / integer / real
Border treatment.
Default value: 'mirrored'
Suggested values: 'mirrored', 'cyclic', 'continued', 0, 30, 60, 90, 120, 150, 180, 210, 240, 255


Example
read_image(Image,'fabrik') 
median_image(Image,Median,'circle',3,'continued')  
disp_image(MedianWeighted,WindowHandle).

Complexity

For each pixel: O(sqrt(F) * 5) with F = area of MaskType.


Result

If the parameter values are correct the operator median_image 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>). If necessary an exception handling is raised.


Parallelization Information

median_image is reentrant and automatically parallelized (on tuple level, channel level, domain level).


Possible Predecessors

read_image


Possible Successors

threshold, dyn_threshold, regiongrowing


Alternatives

rank_image


See also

gen_circle, gen_rectangle1, gray_erosion_rect, gray_dilation_rect


References

R. Haralick, L. Shapiro; ``Computer and Robot Vision''; Addison-Wesley, 1992, Seite 318-319


Module

Image filters



Copyright © 1996-2005 MVTec Software GmbH