西安电子科技大学课程论文数字图像处理高斯白噪声滤波班级:070821作者:***学号:********时间:2011-06-30高斯白噪声滤波实验要求对实际Lena 图像分别加入噪声标准差σ=15,20,25的高斯白噪声,用理想低通滤波器、高斯低通滤波器、算术均值滤波器和中值滤波器对实际Lena 图像进行去噪,比较其去噪效果。
实验内容1.对Lena 图像加高斯白噪声 1.1原始图例:采用经典Lena 图像作为实验样例进行本实验的操作,原始Lena 图像见图1.图1 原始Lena 图1.2加噪结果:图20.15σ=的噪声图 图3 0.20σ=的噪声图图40.25σ=的噪声图结论:经过对以上三图的分析知σ越大图像越不清晰。
1.3源程序:X=imread('Lena.jpg');J1=imnoise(X,'gaussian',0,0.15^2); imshow(J1);J2=imnoise(X,'gaussian',0,0.20^2); imshow(J2);J2=imnoise(X,'gaussian',0,0.25^2); imshow(J2)2对高斯白噪声进行滤波 2.1理想低通滤波器: 2.1.1滤波原理理想低通滤波器:其传递函数为:()()010c c H j at ωωωωωϕω⎧⎧≤⎪=⎪⎨>⎪⎨⎩⎪=-⎩理想低通滤波器的冲激响应为:()()()()000sin c c cc c t t h t Sa t t t t ωωωωπωπ-=⋅=⋅-⎡⎤⎣⎦- 2.1.2滤波结果图5 不同0(5,15,30)d 值下对图2的滤波结果图6 不同0(5,15,30)d 值下对图3的滤波结果图7 不同0(5,15,30)d 值下对图4的滤波结果2.1.3源代码X=imread('Lena(25).jpg');%读取图像I=rgb2gray(X);%将图像变为灰度图figure;%创建图形图像对象imshow(I);%显示灰度图像title('原始图像');%加标题%将灰度图像的二维不连续Fourier变换的零频率成分引导频谱的中心s=fftshift(fft2(I));figure;%创建图形图像对象imshow(log(abs(s)),[]);%显示对s的绝对值取对数后的图像title('傅里叶频谱图');%加标题[M,N]=size(s);%分别返回s的行数到M中,列数到N中n1=floor(M/2);%对M/2进行取整n2=floor(N/2);%对N/2进行取整%ILPF滤波,d0=5,15,30d0=XX;%初始化d0for i=1:Mfor j=1:Nd=sqrt((i-n1)^2+(j-n2)^2);%点(i,j)到傅里叶变换中心的距离if d<=d0 %点(i,j)在通带内的情况h=1;%通带变换函数else %点(i,j)在阻带内的情况h=0;%阻带变换函数ends(i,j)=h*s(i,j);%ILPF滤波后的频域表示endends=ifftshift(s);%对s进行反FFI移动%对进行二维反离散的Fourier变换后,取复数的实部转化为无符号8位整数s=uint8(real(ifft2(s)));figure;imshow(s);%显示ILPF滤波后的图像title('ILPF滤波(d=XX)');2.2高斯低通滤波器:2.2.1滤波原理由于高斯函数的傅里叶变换仍是高斯函数,因此高斯函数能够成为在时域和频域都具有平滑性能的低通滤波器。
2.2.2滤波结果图8 均值为1,方差依次为0.01,0.02,0.03,0.04,0.05,0.06的高斯低通滤波对图2滤波的结果图9 均值为1,方差依次为0.01,0.02,0.03,0.04,0.05,0.06的高斯低通滤波对图3滤波的结果图10 均值为1,方差依次为0.01,0.02,0.03,0.04,0.05,0.06的高斯低通滤波对图4滤波的结果2.2.3源代码function d=gaussfilt(k,n,s)%s是需要滤波的图像,n是均值,k是方差Img=double(s);n1=floor((n+1)/2);%计算图像中心b=zeros(n,n);for i=1:nfor j=1:nb(i,j)=exp(-((i-n1)^2+(j-n1)^2)/(4*k))/(4*pi*k);endend%生成高斯序列Img1=conv2(Img,b,'same');%用生成的高斯序列卷积运算,进行高斯滤波d=uint8(Img1);主函数:h=imread('LenaXX.jpg');c=rgb2gray(h);figureimshow(c);title('加噪图像');n=1;k;%n是均值,k是方差,n选定1,k可以变化A2=gaussfilt(k,n,c);figureimshow(A2);title('高斯滤波')2.3算术均值滤波器:2.3.1滤波原理均值滤波也称为线性滤波,其采用的主要方法为领域平均法。
其基本原理是用均值代替原图像中的各个像素值,即对待处理的当前像素点(,)x y,选择一个模板,该模板由其近邻的若干像素组成,求模板中所有像素的均值,再把该均值赋予当前像素点(,)g x y,即:x y,作为处理后图像在该点上的灰度个(,)=∑g x y m f x y(,)1/(,)m为该模板中包含当前像素在内的像素总个数。
2.3.2滤波结果图11 模板为分别为5和3的均值滤波器对图2进行滤波的结果图12 模板为分别为5和3的均值滤波器对图3进行滤波的结果图13 模板为分别为5和3的均值滤波器对图4进行滤波的结果2.3.3源代码function d=avefilt(x,n)a(1:n,1:n)=1;%a即n*n模板,元素全为1p=size(x);%输入图像是p*q的,且p>n,q>nx1=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));%求c矩阵(即模板)中个元素之和x2(i+(n-1)/2,j+(n-1)/2)=s/(n*n);%将模板各元素的均值赋给模板中心位置的元素endend %未被赋值的元素取原值d=uint8(x2);主函数:h=imread('LenaXX.jpg');c=rgb2gray(h);figureimshow(c);title('加噪图像');A2=avefilt(c,n);%n表示模块,在本实验中分别取5和3figureimshow(A2);title('均值滤波')2.4 中值滤波器:2.4.1滤波原理中值滤波是基于排序统计理论的一种能有效抑制噪声的非线性信号处理技术,基本原理是把数字图像或数字序列中一点的值用该点的一个邻域中各点值的中值代替,让周围的像素值接近真实值,从而消除孤立的噪声点。
方法是在某种结构的二维滑动模板下,将板内像素按照像素值的大小进行排序,生成单调上升(或下降)的二维数据序列。
二维中值滤波输出为:g x y mid f x k y l k l W=--∈(,){(,),(,)}其中(,),(,)f x yg x y分别为原始图像和处理后图像。
W为二维模板,通常为2*2,3*3区域,也可以是不同的形状,如线状,圆形,十字形,圆环形等。
2.4.2滤波结果图14 模板为分别为5和3的中值滤波器对图2进行滤波的结果图15 模板为分别为5和3的中值滤波器对图3进行滤波的结果图16 模板为分别为5和3的中值滤波器对图4进行滤波的结果2.4.3源代码function d=midfilt(x,n)p=size(x); %输入图像是p*q 的,且p>n,q>n x1=double(x); x2=x1;for i=1:(p(1)-n+1) for j=1:(p(2)-n+1)c=x1(i:i+(n-1),j:j+(n-1)); %取出x1中从(i,j)开始的n 行n 列元素 e=c(1,:);%c 矩阵的第一行 for k=2:ne=[e,c(k,:)];%将c 矩阵变为一个行矩阵 endmm=median(e);%mm 是中值x2(i+(n-1)/2,j+(n-1)/2)=mm;%将模板各元素的中值赋给模板中心位置元素 endend %未被赋值的元素取原值 d=uint8(x2);主函数:h=imread('LenaXX.jpg'); c=rgb2gray(h); figure imshow(c);title('加噪图像');A2=midfilt(c,n);%n 表示模块,在本实验中分别取5和3 figure imshow(A2); title('中值滤波')实验结果分析:通过以上四种滤波方法的实验及其结果,可以看出理想低通滤波器的滤波效果并不理想,特别是当0d 的水平很低时,图像非常模糊,即使提高0d 的水平,仍然存在图像边缘不清晰的情况,相对的均值滤波器和中值滤波器就没有出现这样的现象,而且实现起来较容易,同时通过提高模板维数,滤波效果也有所提高,然而,就均值滤波器和中值滤波器这两种滤波器来看,它们的整体效果并没有显著的差异。
其次,结果比较特殊的就是高斯低通滤波器,可以看到随着滤波方差的提高,图像由亮到暗,通过的像素点增多,但是滤波后图像并没有显著的提高加噪图像的清晰度。