MATLAB多方法去高斯白噪声
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1、用matlab实现多幅图像平均去高斯白噪声. clear;
I=imread('2222.jpg');
I=rgb2gray(I);
imshow(I);
[a,b]=size(I);
I2=zeros(a,b);
noise=randn(a,b)*25;
I1=double(I)+noise;
figure(2);
imshow(uint8(I1));
for n=1:30
noise=randn(a,b)*25;
I1=double(I)+noise;
I2=I2+double(I1);
end;
I2=I2/n;
figure(3);
imshow(uint8(I2));
原图加了白噪声多图去除白噪声
2、用matlab 实现均值滤波去除高斯白噪声.
clear;
I=imread('2222.jpg');
I=rgb2gray(I);
figure;
imshow(I);
noise=randn(a,b)*25;
I=double(I)+noise;
[a,b]=size(I);
I2=zeros(a+2,b+2);
I3=zeros(a,b);
for n=1:a
for m=1:b
原图I2(n+1,m+1)=I(n,m);
end;
end;
for n=2:a
for m=2:b
I3(n-1,m-1)=[I2(n-1,m-1)+I2(n-1,m)+I2( n-1,m+1)+I2(n,m-1)+I2(n,m)+I2(n,m+1) +I2(n+1,m-1)+I2(n+1,m)+I2(n+1,m+1)]/ 9;
end;
均值滤波后图
3、用matlab实现中值滤波去除脉冲噪声. clear;
I=imread('2222.jpg');
I=rgb2gray(I);
figure(1);
imshow(I);
%I0=zeros(1:9);
[a,b]=size(I);
I2=zeros(a+2,b+2);
I3=zeros(a,b);
for n=1:a
for m=1:b
I2(n+1,m+1)=I(n,m);
end;
end;
for n=0:100
I2(round(rand*a),round(rand*b))=0; end; for n=0:200
I2(round(rand*a),round(rand*b))=255; end;
figure(2)
imshow(uint8(I2));
I2=double(I2);
for n=2:a
for m=2:b
I0=[I2(n-1,m-1),I2(n-1,m),I2(n-1,m+1),I2(n,m-1), I2(n,m),I2(n,m+1),I2(n+1,m-1),I2(n+1,m),I2(n+1 ,m+1)];
I0=sort(I0);
I3(n-1,m-1)=I0(5);
end;
end;
处理前原图
添加随机脉冲噪声
处理后图片
心得体会:这两次作业是一起做的,所以心得也基本一样吧,主要是在边缘扩展的时候感觉有点怪怪的,不知道那么扩展对不对,还有不知道除了0扩展之外其他扩展怎么写和效果怎么样,有时间试试看。
题目没看清楚把第三道题做成高斯噪声了,重新改过。
再检查发觉均衡化处理的后的图片的直方图没有遍布0到255,在0到55出现空白,不知道到是什么原因,用其他图片测试正常,就这张图片出现这个问题。