views:

297

answers:

1

For an m x n array of elements with some noisy images, I want to perform Gaussian smoothing. How do you do that in MatLab? I've read the math involves smoothing everything with a kernel at a certain scale but have no idea how to do this in MatLab. Im pretty new to this...

+3  A: 

Hopefully, you have the Image Processing toolbox. If so, then you can create a Gaussian filter with the fspecial function like so:

myfilter = fspecial('gaussian',[3 3], 0.5);

I have used the default values for hsize ([3 3]) and sigma (0.5) here, but you might want to play around with them. hsize is just the size of the filter, in this case it is a 3 x 3 matrix. Sigma is the sigma of the gaussian function (see the bottom of the fspecial function page).

Now you can use imfilter to filter your image:

myfilteredimage = imfilter(unfilteredimage, myfilter, 'replicate');

here I have simply passed in the unfilteredimage, the filter, and a parameter that says how the filter should handle the boundaries. In this case, I've chosen replicate which sets input array values outside the bounds of the array to the nearest array border value, but you can try some other values (or leaving off that option sets all outside of image values to 0).

Justin Peel