Discover MakerZone

MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn more

Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply Today

To resolve issues starting MATLAB on Mac OS X 10.10 (Yosemite) visit: http://www.mathworks.com/matlabcentral/answers/159016

How to design a 5by5 ,5cross and X-1 median filter

Asked by chitra on 23 Mar 2013

I need to filter speckle noise from a noisy image by the application of 5*5 median filter,cross shaped median filter and a X-1 shaped median filter. I just cannot understand and do the code for it. Request for code.Thank you.

0 Comments

chitra

1 Answer

Answer by Anand on 23 Mar 2013
Edited by Anand on 25 Mar 2013
Accepted answer

You can use the following two functions:

medfilt2 and ordfilt2

Here's an example:

out = medfilt2(im,[5 5]); %5x5 neighborhood

For a neighborhood that is not all 1's, use

nhood = [1 0 0 0 1;...
         0 1 0 1 0;...
         0 0 1 0 0;...
         0 1 0 1 0;...
         1 0 0 0 1;];
out = ordfilt2(im,ceil(nnz(nhood)/2),nhood); %cross-shaped neighborhood

8 Comments

chitra on 24 Mar 2013

I did imshow(filtered_img) the output of which is a black image. The values of maxValue = 0 and minValue = 0. The original iamge is subjected to speckle noise and I intend to filter is with a cross shaped/plus filter.

Anand on 25 Mar 2013

I just realized the mistake in my call to ordfilt2. Here's how you use it:

out = ordfilt2(im,ceil(nnz(nhood)/2),nhood);

The domain has nnz(nhood) non-zero elements, and so the median is the (nnz(nhood)/2)th element.

chitra on 25 Mar 2013

Yes now it works.So,could you please explain why you are dividing the mask by 2 and using nnz?

Anand

Contact us