实验三 图像频域低通滤波
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数字图像处理实验报告
姓名:田蕾 学号:20091202098 专业:信号与信息处理 年级:09
实验三 图像频域低通滤波
一、 实验目的
掌握常用频域低通滤波器的设计。 进一步加深理解和掌握图像频谱的特点和频域低通滤波的原理。理解图像低通滤波的处理过程和特点。
二、 实验内容
设计程序,分别实现截止频率半径分别为5、15、30、80理想低通滤波器、二阶巴特沃斯低通滤波器、二阶高斯低通滤波器对图像的滤波处理。观察处理前后图像效果,分析实验结果和算法特点。
三、 实验原理
二维理想低通滤波器的传递函数为:
001.(,)(,)0.(,)D u v D H u v D
u v D ≤⎧=⎨>⎩ D0是指定非负数值,D (u ,v )是(u ,v )点距频率中心的距离。如果要研究的图像尺寸为M X N ,则它的变换也有相同的尺寸。在半径为D0的圆内,所有频率无衰减地通过滤波器,而在此半径之外的所有频率完全被衰减掉。
巴特沃斯高通滤波器的传递函数为: 20
1(,)(,)1[]n H u v D u v D =+ 式中D0为截止频率距远点距离。一阶巴特沃斯滤波器没有振铃。在二阶中振铃通常很微小,但在阶数增高时振铃便成为一个重要因素。
高斯高通滤波器传递函数为:
220
(,)/2(,)D u v D H u v e -=
D (u ,v )是距傅立叶变换中心原点的距离。D0是截止频率。高斯低通滤波器的傅立叶变换也是高斯的。
四、 算法设计(含程序设计流程图)
五、 实验结果及分析(需要给出原始图像和处理后的图像)
原图
I L P F 滤波(d0=5)
ILPF 滤波(d0=15)
I L P F 滤波(d0=30)
ILPF 滤波(d0=80)
原图
BLPF 滤波(d0=5)
B L P F 滤波(d0=15)
BLPF 滤波(d0=30)
B L P F 滤波(d0=80)
原图
G L P F 滤波(d0=5)
G L P F 滤波(d0=15)
G L P F 滤波(d0=30)
GLPF滤波(d0=80)
实验结果分析:(1)对于理想的低通滤波器,当截止频率D0较低的时候,图像严重模糊,被滤去的高频部分的能量包含了图像的主要的边缘信息,同时振铃效应也非常的明显。随着截止频率的增加,模糊地程度减少,这是因为保留的边缘信息增加了。(2)巴特沃思滤波器和高斯滤波器滤去的频率和通过的频率之间没有明显的不连续性,图像的模糊程度降低,而且也没有振铃效应,这是由于在低频和高频之间,滤波器平滑过渡的缘故。
附:程序源代码
(1)理想低通滤波器(以D0=5为例)
I1=imread('D:\Matlab\project\低通、高通滤波实验原图.jpg'); imshow(I1);title('原图');
>> %将灰度图像的二维不连续Fourier 变换的零频率成分移到频谱的中心
s=fftshift(fft2(I1));
[M,N]=size(s); %分别返回s的行数到M中,列数到N中
n1=floor(M/2); %对M/2进行取整
n2=floor(N/2); %对N/2进行取整
%ILPF滤波,d0=5,15,30 (程序中以d0=5为例)
d0=5; %初始化d0
for i=1:M
for j=1:N
d=sqrt((i-n1)^2+(j-n2)^2); %点(i,j)到傅立叶变换中心的距离
if d<=d0 %点(i,j)在通带内的情况
h=1; %通带变换函数
else %点(i,j)在阻带内的情况
h=0; %阻带变换函数
end
s(i,j)=h*s(i,j); %ILPF滤波后的频域表示
end
end
s=ifftshift(s); %对s进行反FFT移动
%对s进行二维反离散的Fourier变换后,取复数的实部转化为无符号8位整数
s=uint8(real(ifft2(s)));
figure; %创建图形图像对象
imshow(s); %显示ILPF滤波后的图像
(2)巴特沃斯低通滤波:(以D0=5为例):
I1=imread('D:\Matlab\project\低通、高通滤波实验原图.jpg'); imshow(I1);title('原图'); >> s=fftshift(fft2(I1));
[M,N]=size(s); %分别返回s的行数到M中,列数到N中
n=2; %对n赋初值
%BLPF滤波,d0=5,15,30,80(程序中以d0=15为例)
d0=5; %初始化d0
n1=floor(M/2); %对M/2进行取整
n2=floor(N/2); %对N/2进行取整
for i=1:M
for j=1:N
d=sqrt((i-n1)^2+(j-n2)^2); %点(i,j)到傅立叶变换中心的距离
h=1/(1+(d/d0)^(2*n)); %BLPF滤波函数
s(i,j)=h*s(i,j); %BLPF滤波后的频域表示end
end
s=ifftshift(s); %对s进行反FFT移动
%对s进行二维反离散的Fourier变换后,取复数的实部转化为无符号8位整数
s=uint8(real(ifft2(s)));
figure; %创建图形图像对象
imshow(s); %显示BLPF滤波处理后的图像
title('BLPF滤波(d0=5)');
(3)高斯低通滤波器:(以D0=5为例):
I1=imread('D:\Matlab\project\低通、高通滤波实验原图.jpg'); imshow(I1);title('原图'); s=fftshift(fft2(I1));
[M,N]=size(s); %分别返回s的行数到M中,列数到N中
n=2; %对n赋初值
%GLPF滤波,d0=5,15,30(程序中以d0=30为例)
d0=5; %初始化d0
n1=floor(M/2); %对M/2进行取整
n2=floor(N/2); %对N/2进行取整
for i=1:M
for j=1:N
d=sqrt((i-n1)^2+(j-n2)^2); %点(i,j)到傅立叶变换中心的距离
h=1*exp(-1/2*(d^2/d0^2)); %GLPF滤波函数
s(i,j)=h*s(i,j); %GLPF滤波后的频域表示end
end
s=ifftshift(s); %对s进行反FFT移动
%对s进行二维反离散的Fourier变换后,取复数的实部转化为无符号8位整数
s=uint8(real(ifft2(s)));
figure; %创建图形图像对象
imshow(s); %显示GLPF滤波处理后的图像