How to filter an signal(image) data best

6 views (last 30 days)
Hi,
I have an almost urgent problem to solve. I have a 2 dimensional 152x2000 matrix, B. We can say time domain signal or image. I have to filter, remove(supress) unwanted like noise parts and improve the image(2 dimensional signal). It can be thought that focusing to the high intensity part of the image.
This is the image I have by imagesc abs of B; http://i.imgur.com/wTpFGqh.jpg
Finally, I want to get an image only the circle like shape with yellow and red colours. I want to remove the other light blue pixels(signals).
I want to filter this image or signal matrix by filtering along two dimensions seperate and orderly.
If I say approx. the middle of this circle like shape image is at (29,1334) and then when I plot of abs of B(signal matrix) along 29th row, this is the result ; http://i.imgur.com/QB0C9KD.jpg
When I plot of abs of B along 1334 column, the result is ; http://i.imgur.com/jcLThnr.jpg
According to these all info, which best filter along row and column has to implemented ?
Bandpass ? , how, could you write the necessary code for the best filtering along two dimensions orderly ?
Any fast help greatly appreciated :)

Accepted Answer

Image Analyst
Image Analyst on 1 Jun 2013
If you want to extract the bright section, why are you talking about filters like band pass filters? Just threshold it.
% Find out where it's dark/dim.
binaryImage = grayImage < 1.5;
% Blacken out where it's below the threshold.
grayImage(binaryImage) = 0;
imshow(grayImage, []);
If you do want to do noise reduction, there are plenty of filters to choose from, from the easy box filter and median filter, to better but more complicated filters like bilateral and Savitzky-Golay, to even better and even more complicated like BM3D, non-local means, K-SVD, K-LLD, etc. I'd start simple and move on up to the better noise reduction filters until you get a level of noise reduction that you can live with. If I had to take a guess I'd say a Savitky-Golay filter might give you a acceptably smoother filter without too much blurring. Let me know if you (or anyone else) wants a demo of a 2D Savitzky-Golay filter (it requires the Signal Processing Toolbox).
  2 Comments
hans
hans on 2 Jun 2013
Edited: Image Analyst on 3 Jun 2013
Thanks for the quick answer :)
Actually, I figured out that it should be better, If it is done in terms of signal processing like implementing a Band Pass filter below;
[cs1,cs2]=butter(9,[0.09,0.45]);
As I know, if we get a signal which has a main peak and low side lobes then this is the desired result right ? According to that, Should I decide my filter type and boundaries in f domain ? If so, this is the frequency domain signal of 29th row by writing 'fftshift(abs(fft(29th_row)))';
And this is the 1334th column in frequency domain by same type coding above w.r.t column;
For better response, Do I have to cut the all frequencies except the main peak ? and will it give better qualified version of this image above in the previous message(
Which filtering across the two dimensions is best ? BP LP ? then how filter coding ? filter(cs1,cs2,B,?,1)
In addition, If I take psd(periodogram) of the vectors, then the result is not same as getting from fftshift(abs(fft(vector))). Why ?
thanks WR
Image Analyst
Image Analyst on 3 Jun 2013
I don't see any difference between the first image and the last image. Why don't you just play around, zeroing out frequencies, and see what gives the best results? Right now, I'm not really sure what you'd like to see as "the ideal image." Perhaps you can create that, in Photoshop or something, and upload that.

Sign in to comment.

More Answers (1)

Shaveta Arora
Shaveta Arora on 29 Feb 2016
How can we design a fuzzy based filter and use it with command imfilter?

Community Treasure Hunt

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

Start Hunting!