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

Learn moreOpportunities for recent engineering grads.

Apply Today**New to MATLAB?**

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.

Answer by Anand
on 23 Mar 2013

Edited by Anand
on 25 Mar 2013

Accepted answer

You can use the following two functions:

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

Show 5 older 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.

## 0 Comments