clear;
close all;
I = imread('E:/lena.bmp');
J = imnoise(I,'salt & pepper',0.02);%加入噪声和椒盐
K = medfilt2(J);imshow(J);
title('噪声干扰图像'),figure, imshow(K);%medfilt2 系统子代的函数
title('medfilt2滤波图像')
X=J;a=3;b=3;k=floor(a*b/2)+1;
[M,N]=size(X);
uint8 Y=zeros(M,N);
funBox=zeros(a,b);
temp=zeros(a*b);
for i=1:M-a
for j=1:N-b
funBox=X(i:i+a,j:j+b);
temp=funBox(:);
tempSort=sort(temp); %sort 对数进行从打到小的排列
Y(i,j)=tempSort(k);
end
end
figure, imshow(Y);title('自编程序滤波图像')
clear;close all;c=imread('E:/lena_c.bmp'); %把彩色图片转化成灰度图片,256级
figure,imshow(c),title('原始图象'); %显示原始图象
g=imnoise(c,'gaussian',0.1,0.002); %加入高斯噪声
figure,imshow(g),title('加入高斯噪声之后的图象'); %显示加入高斯噪声之后的图象
n=3;
a(1:n,1:n)=1;%a即n×n模板,元素全是1
[p q]=size(g); %输入图像是p×q的,且p>n,q>n
x1=double(g);x2=x1;%A(a:b,c:d)表示A矩阵的第a到b行,第c到d列的所有元素
for i=1:p-n+1
for j=1:q-n+1
c=x1(i:i+(n-1),j:j+(n-1)).*a; %取出x1中从(i,j)开始的n行n列元素与模板相乘
s=sum(sum(c)); %求c矩阵(即模板)中各元素之和
x2(i+(n-1)/2,j+(n-1)/2)=s/(n*n); %将模板各元素的均值赋给模板中心位置的元素
end
end
%未被赋值的元素取原值
d=uint8(x2);%实验步骤三:用自己的编写的函数进行均值滤波 %调用自编函数进行均值滤波,n为模板大小
figure,imshow(d),title('自编程序滤波图像'); %显示滤波后的图象
clear;
close all;
I = imread('E:/lena.bmp');
J = imnoise(I,'salt & pepper',0.02);%加入噪声和椒盐
K = medfilt2(J);imshow(J);
title('噪声干扰图像'),figure, imshow(K);%medfilt2 系统子代的函数
title('medfilt2滤波图像')
X=J;a=3;b=3;k=floor(a*b/2)+1;
[M,N]=size(X);
uint8 Y=zeros(M,N);
funBox=zeros(a,b);
temp=zeros(a*b);
for i=1:M-a
for j=1:N-b
funBox=X(i:i+a,j:j+b);
temp=funBox(:);
tempSort=sort(temp); %sort 对数进行从打到小的排列
Y(i,j)=tempSort(k);
end
end
figure, imshow(Y);title('自编程序滤波图像')
clear;close all;c=imread('E:/lena_c.bmp'); %把彩色图片转化成灰度图片,256级
figure,imshow(c),title('原始图象'); %显示原始图象
g=imnoise(c,'gaussian',0.1,0.002); %加入高斯噪声
figure,imshow(g),title('加入高斯噪声之后的图象'); %显示加入高斯噪声之后的图象
n=3;
a(1:n,1:n)=1;%a即n×n模板,元素全是1
[p q]=size(g); %输入图像是p×q的,且p>n,q>n
x1=double(g);x2=x1;%A(a:b,c:d)表示A矩阵的第a到b行,第c到d列的所有元素
for i=1:p-n+1
for j=1:q-n+1
c=x1(i:i+(n-1),j:j+(n-1)).*a; %取出x1中从(i,j)开始的n行n列元素与模板相乘
s=sum(sum(c)); %求c矩阵(即模板)中各元素之和
x2(i+(n-1)/2,j+(n-1)/2)=s/(n*n); %将模板各元素的均值赋给模板中心位置的元素
end
end
%未被赋值的元素取原值
d=uint8(x2);%实验步骤三:用自己的编写的函数进行均值滤波 %调用自编函数进行均值滤波,n为模板大小
figure,imshow(d),title('自编程序滤波图像'); %显示滤波后的图象