Search code examples
matlabimage-processingnoise

How to remove grainy details from an image


I have used adapthisteq to improve the visibility of the foreground objects. However, this seems to have created grainy noisy details. How can I remove these grainy details from the image? I have tried Gaussian blurring through imgaussfilt and while it does remove some of the grainy details, the shape of the cells in the image become less defined. The second image shows the binary image of the first image.

<code>adapthisteq</code> <code>im2bw</code>


Solution

  • You can use a filter that takes into consideration the edge information like bilateral filter. https://en.wikipedia.org/wiki/Bilateral_filter The bilateral filter doesn't only weighs the value according to the distance in pixels (like a regular Gaussian blurring) but also according to the distance in color between the pixels.

    enter image description here taken from: http://www.slideshare.net/yuhuang/fast-edge-preservingaware-high-dimensional-filters-for-image-video-processing

    An Matlab implementation you can find here: https://www.mathworks.com/matlabcentral/fileexchange/12191-bilateral-filtering