MATLAB Answers


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.


Log in to comment.

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


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.

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.

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

Log in to comment.

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

MATLAB Academy

New to MATLAB?

Learn MATLAB today!