Can you please tell me how to filter this image of noise without suppressing the border information?

There are three objects not connected to each other. I want to filter the middle part to measure the distance between them. If I use linear filter it suppresses the border information. Opening the image did not give any results either. Kindly suggest how to enhance this image for the same.

Answers (2)

Well morphological opening definitely won't help! I'd suggest you use anisotropic diffusion. It will smooth along features while preserving edges. Sometimes used for fingerprint enhancement. Peter Kovesi has some code for you to use: http://www.csse.uwa.edu.au/~pk/Research/MatlabFns/#anisodiff If you want to do it manually, you can use imdistline() or improfile().

10 Comments

Sorry, I don't have time for that. What algorithm are you using to find the distance end points?
i cant find the distance till i enhance the image. i wont be able to.
Let's pretend for a moment that it were "enhanced" and looking as perfect as you can possibly imagine. Then what would you do? What you do may have some influence on how you "enhance" the image.
can u please send me the file for convex hull function?
How to use it to enhance the above image. I apparantly am suppose to enhance the shap of the three objects by using it.but wn i use it vth the binary image i get an err.same for grayscale. give me thr code for same. Just to get an output binary image from the same function as and alsothe datatype of the inp
Convex hull does not do any enhancement on images. You can use bwconvhull() to get the convex hulls of the three shapes, once you've processed the image enough to where you can thresholded it.
No I cant find bwconvhull either. Not aailable in r2010. Plz gv me the link to the file.

Sign in to comment.

hi, Richa,
I think Image Analyst can give the solution , anyway i tried to filter your image with Wiener filter, i can not download your image, but i took a similar one ( MRI of the Brain, its standard 4D image in MathW) :
load MRI
D=squeeze(D);
I=im2double(D(:,:,15)); % 15th slice as example
imshow(I)
noisyI=imnoise(I,'Gaussian');
figure, imshow(noisyI)
F1=wiener2(I,[5 5]);
figure, imshow(F1)
Try to take a look at Wiener filter in the Doc . we applied the filter with a 5x5 windows, the default is 3x3, you can also try 7x7.
If this solution gives you good result, we can work on it to get enhanced filtering , by using a method to estimate the noise of power .

4 Comments

Hi. Yes i tried. It blurs the boundries.i am using difference of gaussian filter.can u give me the file for bwconvhull? I dont hv it in r2010.
Can you upgrade? Otherwise you'll have to do it yourself with convhull(), which is not as easy. There are some filters that make areas uniform and sharpen boundaries, such as the "mean shift filter". You can try that instead if you want.
The only mean shift code I have is from the File Exchange. You can search that yourself, as well as the entire web.

Sign in to comment.

Asked:

on 9 Feb 2013

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!