Can you please tell me how to filter this image of noise without suppressing the border information?
Show older comments
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)
Image Analyst
on 9 Feb 2013
0 votes
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
Richa Nayak
on 11 Feb 2013
Image Analyst
on 11 Feb 2013
Sorry, I don't have time for that. What algorithm are you using to find the distance end points?
Richa Nayak
on 11 Feb 2013
Image Analyst
on 11 Feb 2013
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.
Richa Nayak
on 14 Feb 2013
Image Analyst
on 14 Feb 2013
It's built in to the Image Processing Toolbox.
Richa Nayak
on 14 Feb 2013
Image Analyst
on 14 Feb 2013
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.
Youssef Khmou
on 14 Feb 2013
hi, did you try Wiener Filter ?
Richa Nayak
on 15 Feb 2013
Youssef Khmou
on 14 Feb 2013
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
Richa Nayak
on 15 Feb 2013
Image Analyst
on 15 Feb 2013
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.
Richa Nayak
on 15 Feb 2013
Image Analyst
on 15 Feb 2013
The only mean shift code I have is from the File Exchange. You can search that yourself, as well as the entire web.
Categories
Find more on Image Filtering and Enhancement in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!