Separated median filtering with rectangle masks.
The operator median_separate 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 MaskWidth followed by filtering with a mask with the height MaskHeight. 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_separate is clearly faster than the normal operator median_image 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_separate 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.
|
Image (input_object) |
(multichannel-)image(-array) -> object : byte / int2 / uint2 / int4 / real |
| Image to be filtered. | |
|
ImageSMedian (output_object) |
(multichannel-)image(-array) -> object : byte / int2 / uint2 / int4 / real |
| Median filtered image. | |
|
MaskWidth (input_control) |
extent.x -> integer |
| 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 <= 401 | |
| Minimum increment: 2 | |
|
Recommended increment: 2 | |
|
MaskHeight (input_control) |
extent.y -> integer |
| 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 <= 401 | |
| Minimum increment: 2 | |
|
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 | |
read_image(Image,'fabrik') median_separate(Image,MedianSeparate,5,5,3) disp_image(MedianSeparate,WindowHandle).
For each pixel: O(40).
median_separate is reentrant and automatically parallelized (on tuple level, channel level, domain level).
texture_laws, sobel_amp, deviation_image
learn_ndim_norm, learn_ndim_box, median_separate, regiongrowing, auto_threshold
R. Haralick, L. Shapiro; ``Computer and Robot Vision''; Addison-Wesley, 1992, Seite 319
Image filters