File Exchange

image thumbnail

Masked k-order statistic filters for 2D data

version 1.6 (619 KB) by

Morphological erosion, dilation, median filter and generic k-order statistic filter implementation



View License

Masked k-order statistic filter for double data

refer to: F. Bellavia, D. Tegolo, C. Valenti, "Improving Harris corner selection strategy", IET Computer Vision 5(2), 2011. Only for academic or other non-commercial purposes.

With respect to standard matlab routines, any kernel mask can be used and it is faster for large kernel size (i.e. more than 30x30 kernel mask)

im - input 2D matrix
ker - kernel binary mask
idx - k-order index, in range [1,sum(ker(:)))

Use idx=1 for min filter (graylevel erosion), idx=sum(ker(:))/2+0.5 for median filter, idx=sum(ker(:)) for max filter (graylevel dilation), any other value for k-selection filter, non integer values interpolate between values, i.e. 5.6 give 0.4*I(5)+0.6*I(6) where I(n) is the n-th values in the sorted order inside the kernel mask.

r - result 2D matrix, of the same size of im, zero padding is used for the border.

The median filter implementation is based on:
W. Hardle, W. Steiger, "Algorithm AS 296: Optimal Median Smoothing", Journal of the Royal Statistical Society, Series C (Applied Statistics), pp. 258-264.

Comments and Ratings (3)

It works

Jenny, change the two occurrences of calloc with mxCalloc in ordstatfilt2.c, rebuild the mex file and try again. I've uploaded the fixed (I hope) version with an usage example demo. This will be available as soon as matlab administrator will approve the submission, so check the file in the next days.


Jenny (view profile)

MATLAB crashes any time I try to use it.



added support to build the mex file with microsoft visual studio (thanks to Giosue' Lo Bosco)


fix crash on newer matlab version
add usage demo


2nd revision: removed some comment typos

MATLAB Release
MATLAB 7.13 (R2011b)

Download apps, toolboxes, and other File Exchange content using Add-On Explorer in MATLAB.

» Watch video