median_separateπ
Short descriptionπ
median_separate β Separated median filtering with rectangle masks.
Signatureπ
median_separate( image Image, out image ImageSMedian, extent.x MaskWidth, extent.y MaskHeight, string Margin )
Descriptionπ
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
having a height of one pixel and the width MaskWidth
followed by filtering with a vertical mask having the height
MaskHeight and width of one pixel.
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 efficient 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.
For an explanation of the concept of smoothing filters see the introduction of chapter Filters / Smoothing.
Attentionπ
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.
Due to performance reasons, the input Image is not checked whether
it contains NaNs. Using an input image with NaNs crashes HALCON.
Execution informationπ
Execution information
-
Multithreading type: reentrant (runs in parallel with non-exclusive operators).
-
Multithreading scope: global (may be called from any thread).
-
Automatically parallelized on tuple level.
-
Automatically parallelized on channel level.
-
Automatically parallelized on domain level.
Parametersπ
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: 25
Suggested values: 1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 27, 43, 51, 67, 91, 121, 151
Value range: 1 β€ MaskWidth β€ 401
Minimum increment: 2
Recommended increment: 2
MaskHeight (input_control) extent.y β (integer)
Height of rank mask.
Default: 25
Suggested values: 1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 27, 43, 51, 67, 91, 121, 151
Value range: 1 β€ MaskHeight β€ 401
Minimum increment: 2
Recommended increment: 2
Margin (input_control) string β (string / integer / real)
Border treatment.
Default: 'mirrored'
Suggested values: 'mirrored', 'cyclic', 'continued', 0, 30, 60, 90, 120, 150, 180, 210, 240, 255
Exampleπ
(HDevelop)
read_image(Image,'fabrik')
median_separate(Image,MedianSeparate,5,5,3)
dev_display(MedianSeparate)
(C)read_image(&Image,"fabrik")\;
median_separate(Image,&MedianSeparate,5,5,3)\;
disp_image(MedianSeparate,WindowHandle)\;
Complexityπ
For each pixel: O(40).
Combinations with other operatorsπ
Combinations
Possible predecessors
texture_laws, sobel_amp, deviation_image
Possible successors
learn_ndim_norm, regiongrowing, auto_threshold
Alternatives
See also
Referencesπ
R. Haralick, L. Shapiro; βComputer and Robot Visionβ; Addison-Wesley, 1992, Seite 319
Moduleπ
Foundation