MATLAB源代码
A = imread(‘yuantu.jpg’);
A = rgb2gray(A);
A1 = imnoise(A,‘speckle’,0.1);
A2 = imnoise(A, ‘salt & pepper’ ,0.1);
subplot(3,2,1),imshow(A1),title(‘加入乘性噪声后的图像’);
subplot(3,2,2),imshow(A2),title(‘加入椒盐噪声后的图像’);
subplot(3,2,3),imshow(junzhi(A1,3)),title(‘乘性噪声均值滤波’);
subplot(3,2,4),imshow(junzhi(A2,3)),title(‘椒盐噪声均值滤波’);
subplot(3,2,5),imshow(zhongzhi(A1,3)),title(‘乘性噪声中值滤波图像’);
subplot(3,2,6),imshow(zhongzhi(A2,3)),title(‘椒盐噪声中值滤波图像’);
%调用函数
function d=junzhi(x,n)
a(1:n,1:n)=1; %a即n×n模板,元素全是1
p=size(x); %输入图像是p×q的,且p>n,q>n
x1=double(x);
x2=x1;
%A(a:b,c:d)表示A矩阵的第a到b行,第c到d列的所有元素
for i=1:p(1)-n+1
for j=1:p(2)-n+1
c=x1(i:i+(n-1),j:j+(n-1)).a; %取出x1中从(i,j)开始的n行n列元素与模板相乘
s=sum(sum©); %求c矩阵(即模板)中各元素之和
x2(i+(n-1)/2,j+(n-1