同时含有椒盐噪声和高斯噪声的图像消噪处理
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
同时含有椒盐噪声和高斯噪声的图像消噪处理
引言
所谓噪声是电路或系统中不含信息量的电压或电流。在工业与自然界中,存在着各种干扰源(噪声源),如大功率电力电子器件的接入、大功率用电设备的开启与断开、雷击闪电等都会使空间电场和磁场产生有序或无序的变化,这些都是干扰源(或噪声源)。这些源产生的电磁波或尖峰脉冲通过磁、电耦合或是通过电源线等路径进入放大电路,各种电气设备,形成各种形式的干扰。
高斯噪声是指噪声的概率密度函数服从高斯分布(即正态分布)的一类噪声。如果一个噪声,它的幅度分布服从高斯分布,而它的功率谱密度又是均匀分布的,则称它为高斯白噪声。高斯白噪声的二阶矩不相关,一阶矩为常数,是指先后信号在时间上的相关性。高斯白噪声包括热噪声和散粒噪声。而椒盐噪声是指椒盐噪声是由图像传感器,传输信道,解码处理等产生的黑白相间的亮暗点噪声。椒盐噪声往往由图像切割引起。本文将采用中值滤波和维纳滤波对含有高斯噪声和椒盐噪声的图像进行处理,通过比较两种滤波技术对图像处理的效果,可以看出哪种滤波技术对椒盐噪声更起作用,哪种滤波技术对高斯噪声更有效果,再根据同一种滤波技术对不同窗口尺寸的图像进行滤波,比较处理效果,最终将选出对图像采用哪种滤波技术或者对同一种滤波技术哪种窗口尺寸滤波效果更好。
中值滤波:是一种非线性平滑技术,它将每一象素点的灰度值设置为该点某邻域窗口内的所有象素点灰度值的中值.
实现方法:
1:通过从图像中的某个采样窗口取出奇数个数据进行排序
2:用排序后的中值取代要处理的数据即可
中值滤波在图像处理中,常用于用来保护边缘信息,是经典的平滑噪声的方法。
中值滤波原理
中值滤波是基于排序统计理论的一种能有效抑制噪声的非线性信号处理技术,中值滤波的基本原理是把数字图像或数字序列中一点的值用该点的一个邻域中各点值的中值代替,让周围的像素值接近的真实值,从而消除孤立的噪声点。方法是去某种结构的二维滑动模板,将板内像素按照像素值的大小进行排序,生成单调上升(或下降)的为二维数据序列。二维中值滤波输出为g(x,y)=med{f(x-k,y-l),(k,l∈W)} ,其中,f(x,y),g(x,y)分别为原始图像和处理后图像。W为二维模板,通常为2*2,3*3区域,也可以是不同的的形状,如线状,圆形,十字形,圆环形等。
中值滤波
用3*3的滤波窗口进行中值滤波处理:
程序如下:
>> i=imread('Winter.jpg'); %读入图像
subplot(2,2,1);
imshow(i); %显示原始图像
title('original'); %设置图像标题
j = imnoise(i,'salt & pepper',0.02); %加均值为0,方差为0.02的椒盐噪声
subplot(2,2,2);
imshow(j); %显示处理后的图像
title('加入椒盐噪声');
k = imnoise(i,'gaussian',0.02); %加均值为0,方差为0.02的加入高斯噪声l = imnoise(k,'salt & pepper',0.02); %加均值为0,方差为0.02的椒盐噪声subplot(2,2,3);
imshow(l);
title('加入椒盐噪声和高斯噪声');
r=l(:,:,1);
g=l(:,:,2);
b=l(:,:,3);
[m,n]=size(r);
for i=1:m
for j=1:n
if(i==1|i==m|j==1|j==n)
G(i,j)=r(i,j);
else
hao(1)=r(i-1,j-1);
hao(2)=r(i-1,j);
hao(3)=r(i-1,j+1);
hao(4)=r(i,j-1);
hao(5)=r(i,j);
hao(6)=r(i,j+1);
hao(7)=r(i+1,j-1);
hao(8)=r(i+1,j);
hao(9)=r(i+1,j+1);
hao=sort(hao);
G(i,j)=hao(5);
end
end
end
>> for i=1:m
for j=1:n
if(i==1|i==m|j==1|j==n)
K(i,j)=g(i,j);
else
hao(1)=g(i-1,j-1);
hao(2)=g(i-1,j);
hao(3)=g(i-1,j+1);
hao(4)=g(i,j-1);
hao(5)=g(i,j);
thao(6)=g(i,j+1);
hao(7)=g(i+1,j-1);
hao(8)=g(i+1,j);
hao(9)=g(i+1,j+1);
hao=sort(hao);
K(i,j)=hao(5);
end
end
end
>> for i=1:m
for j=1:n
if(i==1|i==m|j==1|j==n) L(i,j)=b(i,j);
else
hao(1)=b(i-1,j-1);
hao(2)=b(i-1,j);
hao(3)=b(i-1,j+1);
hao(4)=b(i,j-1);
hao(5)=b(i,j);
hao(6)=b(i,j+1);
hao(7)=b(i+1,j-1);
hao(8)=b(i+1,j);
hao(9)=b(i+1,j+1);
hao=sort(hao);
L(i,j)=hao(5);
end
end
end
>> l(:,:,1)=G;
>> l(:,:,2)=K;
>> l(:,:,3)=L;
>> subplot(2,2,4);
>> imshow(l);