matlab實現平滑濾波

clc;clear;close all;
 
im=imread('p1.jpg');
im = rgb2gray(im);
im=double(im);
im=im/max(im(:));
figure('Name','原圖','NumberTitle','off');imshow(im,[0,1]);

P1 = imnoise(im,'gaussian',0,0.005);  % adding gaussian noise 這裏im是原始圖像,添加了均值是0,方差是0.005的高斯噪聲。
figure('Name','高斯噪聲','NumberTitle','off');imshow(P1,[0,1]); 
P2 = imnoise(im,'salt & pepper',0.02);  % adding impulse noise  添加鹽和胡椒噪聲,默認噪聲密度爲0.05。這會影響大約5%的像素。
figure('Name','椒鹽噪聲','NumberTitle','off');imshow(P2,[0,1]);

a=[1 1 1;1 1 1;1 1 1];  %定義一個3X3的全爲1的模板
template1=(1/9)*a;

%對高斯噪聲進行濾波操作
imAve=conv2(double(P1),double(template1));% 返回矩陣 a 和 template1 的二維卷積。
figure('Name','高斯噪聲:均值濾波','NumberTitle','off');imshow(imAve,[0,1]);
 
imMed=medfilt2(P1,[3,3],'symmetric'); %執行中值濾波,其中每個輸出像素包含輸入圖像中相應像素周圍的m按n鄰域的中值。
figure('Name','高斯噪聲:中值濾波','NumberTitle','off');imshow(imMed,[0,1]);
 
psf=fspecial('gaussian',3,1);    %返回大小爲 hsize 的旋轉對稱高斯低通濾波器,標準差爲 sigma。
imGau=imfilter(P1,psf,'conv','symmetric'); %根據一個或多個返回大小爲 hsize 的旋轉對稱高斯低通濾波器,標準差爲 sigma。
figure('Name','高斯噪聲:高斯濾波','NumberTitle','off');imshow(imGau,[0,1]);

%對椒鹽噪聲進行濾波操作
imAve=conv2(double(P2),double(template1));% 返回矩陣 a 和 template1 的二維卷積。
figure('Name','椒鹽噪聲:均值濾波','NumberTitle','off');imshow(imAve,[0,1]); title('average filter');
 
imMed=medfilt2(P2,[3,3],'symmetric'); %執行中值濾波,其中每個輸出像素包含輸入圖像中相應像素周圍的m按n鄰域的中值。
figure('Name','椒鹽噪聲:中值濾波','NumberTitle','off');imshow(imMed,[0,1]);
 
psf=fspecial('gaussian',3,1);    %返回大小爲 hsize 的旋轉對稱高斯低通濾波器,標準差爲 sigma。
imGau=imfilter(P2,psf,'conv','symmetric'); %根據一個或多個返回大小爲 hsize 的旋轉對稱高斯低通濾波器,標準差爲 sigma。
figure('Name','椒鹽噪聲:高斯濾波','NumberTitle','off');imshow(imGau,[0,1]);


原圖

image-20201204224515986

椒鹽噪聲

image-20201204224606433

高斯噪聲

image-20201204224553121

椒鹽噪聲:高斯濾波

image-20201204224628459

椒鹽噪聲:中值濾波

image-20201204224642931

椒鹽噪聲:均值濾波

image-20201204224659752

高斯噪聲:高斯濾波

image-20201204224714899

高斯噪聲:中值濾波

image-20201204224732514

高斯噪聲:均值濾波

image-20201204224747977

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章