www.gusucode.com > images 案例代码 matlab源码程序 > images/ApplyGaussianSmoothingFiltersToImagesExample.m

    %% Apply Gaussian Smoothing Filters to Images
% This example shows how to apply different Gaussian smoothing filters to
% images using |imgaussfilt|. Gaussian smoothing filters are commonly used
% to reduce noise.
%%
% Read an image into the workspace.

% Copyright 2015 The MathWorks, Inc.

I = imread('cameraman.tif');
%%
% Filter the image with isotropic Gaussian smoothing kernels of increasing
% standard deviations. Gaussian filters are generally isotropic, that is,
% they have the same standard deviation along both dimensions. An image can
% be filtered by an isotropic Gaussian filter by specifying a scalar value
% for |sigma|.
Iblur1 = imgaussfilt(I,2);
Iblur2 = imgaussfilt(I,4);
Iblur3 = imgaussfilt(I,8);
%%
% Display the original image and all the filtered images.
figure
imshow(I)
title('Original image')

figure
imshow(Iblur1)
title('Smoothed image, \sigma = 2')

figure
imshow(Iblur2)
title('Smoothed image, \sigma = 4')

figure
imshow(Iblur3)
title('Smoothed image, \sigma = 8')
%%
% Filter the image with anisotropic Gaussian smoothing kernels.
% |imgaussfilt| allows the Gaussian kernel to have different standard
% deviations along row and column dimensions. These are called axis-aligned
% anisotropic Gaussian filters. Specify a 2-element vector for |sigma| when
% using anisotropic filters.
IblurX1 = imgaussfilt(I,[4 1]);
IblurX2 = imgaussfilt(I,[8 1]);
IblurY1 = imgaussfilt(I,[1 4]);
IblurY2 = imgaussfilt(I,[1 8]);
%%
% Display the filtered images.
figure
imshow(IblurX1)
title('Smoothed image, \sigma_x = 4, \sigma_y = 1')

figure
imshow(IblurX2)
title('Smoothed image, \sigma_x = 8, \sigma_y = 1')

figure
imshow(IblurY1)
title('Smoothed image, \sigma_x = 1, \sigma_y = 4')

figure
imshow(IblurY2)
title('Smoothed image, \sigma_x = 1, \sigma_y = 8')
%%
% Suppress the horizontal bands visible in the sky region of the original
% image. Anisotropic Gaussian filters can suppress horizontal or vertical
% features in an image. Extract a section of the sky region of the image
% and use a Gaussian filter with higher standard deviation along the X
% axis (direction of increasing columns).
I_sky = imadjust(I(20:50,10:70));
IblurX1_sky = imadjust(IblurX1(20:50,10:70));
%%
% Display the original patch of sky with the filtered version. 
figure
imshow(I_sky), title('Sky in original image')
figure
imshow(IblurX1_sky), title('Sky in filtered image')