%利用 matlab 函数进行噪声模拟,并用 matlab 自带函数进行图像滤波。
clc;
clear all;
Original_Image = imread('图3-5lena.jpg');
%~~~~~~~~~~~~~~~~~~~~~~~~~~~噪声模拟~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Gaussian_Image = imnoise(Original_Image,'Gaussian'); %高斯白噪声模拟
Poisson_Image = imnoise(Original_Image,'Poisson'); %泊松噪声模拟
Speckle_Image = imnoise(Original_Image,'speckle'); %斑点噪声模拟
%localvar_Image = imnoise(Original_Image,'localvar'); %与图象灰度值有关的零均值高斯白噪声模拟
%salt_pepper_Image = imnoise(Original_Image,'salt&pepper'); %椒盐噪声模拟
figure;
subplot(221);imshow(Original_Image);title('Original Image');
subplot(222);imshow(Gaussian_Image);title('Gaussian Image');
subplot(223);imshow(Poisson_Image);title('Poisson Image');
subplot(224);imshow(Speckle_Image);title('Speckle Image');
%subplot();imshow(localvar_Image);title('localvar Imagee');
%subplot();imshow(salt & pepper_Image);title('salt & pepper Image');
%~~~~~~~~~~~~~~~~~~~~~~~~~~~3*3均值滤波~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Three_filter=fspecial('average',3); %生成系统预定义的3X3滤波器
%用生成的滤波器进行滤波,并归一化
Gaussian_Average_filter = filter2(Three_filter,Gaussian_Image)/255;
Poisson_Average_filter = filter2(Three_filter,Poisson_Image)/255;
Speckle_Average_filter = filter2(Three_filter,Speckle_Image)/255;
figure;
subplot(321);imshow(Gaussian_Image);title('Gaussian Image');
subplot(322);imshow(Gaussian_Average_filter);title('Gaussian Average filter');
subplot(323);imshow(Poisson_Image);title('Poisson Image');
subplot(324);imshow(Poisson_Average_filter);title('Poisson Average filter');
subplot(325);imshow(Speckle_Image);title('Speckle Image');
subplot(326);imshow(Speckle_Average_filter);title('Speckle Average filter');
%~~~~~~~~~~~~~~~~~~~~~~~~~~~3*3中值滤波~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Gaussian_Median_filter = medfilt2(Gaussian_Image,[3 3]);
Poisson_Median_filter = medfilt2(Poisson_Image,[3 3]);
Speckle_Mediane_filter = medfilt2(Speckle_Image,[3 3]);
figure;
subplot(321);imshow(Gaussian_Image);title('Gaussian Image');
subplot(322);imshow(Gaussian_Median_filter);title('Gaussian Median filter');
subplot(323);imshow(Poisson_Image);title('Poisson Image');
subplot(324);imshow(Poisson_Median_filter);title('Poisson Median filter');
subplot(325);imshow(Speckle_Image);title('Speckle Image');
subplot(326);imshow(Speckle_Mediane_filter);title('Speckle Median filter');
%~~~~~~~~~~~~~~~~~~~~~~~~~~~均值为5,方差为1的高斯滤波~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Gauss_Sequences=fspecial('gaussian',5,1); %生成高斯序列
Gaussian_Gauss_filter = filter2(Gauss_Sequences,Gaussian_Image)/255;
Poisson_Gauss_filter = filter2(Gauss_Sequences,Poisson_Image)/255;
Speckle_Gauss_filter = filter2(Gauss_Sequences,Speckle_Image)/255;
figure;
subplot(321);imshow(Gaussian_Image);title('Gaussian Image');
subplot(322);imshow(Gaussian_Gauss_filter);title('Gaussian Gauss filter');
subplot(323);imshow(Poisson_Image);title('Poisson Image');
subplot(324);imshow(Poisson_Gauss_filter);title('Poisson Gauss filter');
subplot(325);imshow(Speckle_Image);title('Speckle Image');
subplot(326);imshow(Speckle_Gauss_filter);title('Speckle Gauss filter');
评论0