Note that,for images, this filter has been superceded by the Structurally Varying Bitonic Filter, also available on file exchange.
This is a filter for removing noise in signals and images whilst preserving edges and other bitonic data, ie. anything with either one local maximum or minimum within the range of the filter. It has better edge-preserving properties than a median filter, whilst also removing noise similarly to a Gaussian filter. It has wide applicability and very few parameters, with no need for training or prior knowledge of the noise variance, and is hence particularly suited to situations where the noise is varying.
See the bitonic_demo script for an example.
Also included is RANKFILT2, which is a faster replacement for ORDFILT2 when the data is of type uint8.
More information is available from a technical report at:
Graham Treece (2020). Bitonic filter (https://www.mathworks.com/matlabcentral/fileexchange/54514-bitonic-filter), MATLAB Central File Exchange. Retrieved .
cool stuff, thank you!
However, compiling the rankfilt2 function is a factor of 5 SLOWER, than just using rankfilt2.m or even ordfilt, they're both about the same speed for me. So I'd be reall interested to find my mistake here. I generate the mex like you suggest (mex rankfilt2.cpp). This results in 500% the calculation time though.
I use an Intel 9900k running Matlab 2018b on Windows 10.
Thank you for the implementation. Really good paper and code too.
biotonic filter is edge preserving filters, author has really worked hard to implement this code ,,I wish him.best of luck , and I suggest other students and researchers to see at this filter
biotonic filter is good image filtering filter , i suggest authors o try his
Change to description.
Minor correction to rankfilt2.cpp which makes filtering more efficient in some cases.
Added link to technical report.
Updated the description to include rankfilt2.