clc;clear;close all;
I=imread(‘hua.jpg’);
[N,M,C]=size(I);
subplot(1,3,1);
imshow(I),title(‘原图’);
NoiseI=imnoise(I,‘gaussian’);%添加高斯噪声
subplot(1,3,2);
imshow(NoiseI),title(‘添加高斯噪声后’);
sigma=10;
r=3;
Newr=2r+1;%取奇数
H=zeros(Newr,Newr);
sum=0;
for i=1:Newr
for j=1:Newr
zhishu=double(-((i-r-1)2+(j-r-1)2)/(2sigmasigma));
H(i,j)=(exp(zhishu))/(2pisigmasigma);
sum=sum+H(i,j);
end
end
H=H/sum;%归一化处理
NewImage=zeros(N+2r,M+2r,C);
for k=1:C
for i=1:N
for j=1:M
NewImage(i+r,j+r,k)=NoiseI(i,j,k);%将原图周围置0
end
end
end
Change=zeros(N,M,C);
for k=1:C
for i=1+r:N+r
for j=1+r:M+r
change=0;
for m=1:Newr
for n=1:Newr
change=change+(NewImage(i-r+m-1,j-r+n-1,k)*H(m,n));
end
end
Change(i-r,j-r,k)=change;
end
end
end
subplot(1,3,3);
Change=uint8(Change);
imshow(Change),title(‘高斯滤波后图像’);
老师布置的题目,记录一下。
四层嵌套运算量有点多,程序运行太慢了。。
不采用MATLAB函数,实现对一幅真彩色图像的高斯滤波。
最新推荐文章于 2024-05-06 18:30:54 发布