图像处理实验图像频域变换
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
南京信息工程大学 实验(实习)报告 实验名称 实验五 图像频域增强 实验日期 得分 指导教师 徐旦华 院 计算机与软件学院 专业 计算机科学与技术 年级 2012 班次 3 姓名 宗仰 学号 20121308097
一、 实验目的
1.掌握怎样利用傅立叶变换进行频域滤波
2.掌握频域滤波的概念及方法
3.熟练掌握频域空间的各类滤波器
4.利用MATLAB 程序进行频域滤波
二、 实验原理及知识点
频域滤波分为低通滤波和高通滤波两类,对应的滤波器分别为低通滤波器和高通滤波器。频域低通过滤的基本思想:
G(u,v)=F(u,v)H(u,v)
F(u,v)是需要钝化图像的傅立叶变换形式,H(u,v)是选取的一个低通过滤器变换函数,G(u,v)是通过H(u,v)减少F(u,v)的高频部分来得到的结果,运用傅立叶逆变换得到钝化后的图像。
理想地低通滤波器(ILPF)具有传递函数:
00
1(,)(,)0(,)ifD u v D H u v ifD u v D ≤⎧=⎨>⎩ 其中,0D 为指定的非负数,(,)D u v 为(u,v)到滤波器的中心的距离。0(,)D u v D =的点的轨迹为一个圆。
n 阶巴特沃兹低通滤波器(BLPF)(在距离原点0D 处出现截至频率)的传递函数为
201
(,)1[(,)]n H u v D u v D =+
与理想地通滤波器不同的是,巴特沃兹率通滤波器的传递函数并不是在0D 处突然不连续。 高斯低通滤波器(GLPF)的传递函数为
222),(),(σv u D e
v u H =
其中,σ为标准差。 相应的高通滤波器也包括:理想高通滤波器、n 阶巴特沃兹高通滤波器、高斯高通滤波器。给定一个低通滤波器的传递函数(,)lp H u v ,通过使用如下的简单关系,可以获得相应高通滤波器的传递函数:1(,)hp lp H H u v =-
三、实验内容
1. 调入并显示所需的图片;
2.利用MA TLAB提供的低通滤波器实现图像信号的滤波运算,并与空间滤波进行比较。
3.利用MATLAB提供的高通滤波器对图像进行处理。
4.记录和整理实验报告。
四、实验步骤
创建脚本一,输入以下代码:
function g = dftfilt(f,H)
F = fft2(f, size(H,1), size(H,2));
g = real(ifft2(H.*F));
g = g(1:size(f,1),1:size(f,2));
创建脚本二,输入以下代码:
function H = hpfilter(M, N, D0)
u = 0:(M - 1);
v = 0:(N - 1);
idx = find(u > M/2);
u(idx) = u(idx) - M;
idy = find(v > N/2);
v(idy) = v(idy) - N;
[V, U] = meshgrid(v, u);
D = sqrt(U.^2 + V.^2);
H = 1-exp(-(D.^2)./(2*(D0^2)));
再输入以下代码:
close all
f=imread('4.jpg');
F=fft2(f); %对图像进行傅立叶变换
suptitle('20121308097频域显示');
%对变换后图像进行对数变化,并对其坐标平移,使其中心化
subplot(1,2,1),imshow(f),title('原图')
S=fftshift(abs(F));
S=(S-min(min(S)))/(max(max(S))-min(min(S)))*255;%归一化subplot(1,2,2),imshow(S),title('频域图像') %显示频谱图像
h=fspecial('sobel'); %产生空间‘sobel’模板
figure(2),freqz2(h),title('频域滤波器图像') %查看相应频域滤波器的图像
PQ=size(f); %产生滤波时所需大小的矩阵
H=freqz2(h,PQ(1),PQ(2)); %产生频域中的‘sobel’滤波器
H1=ifftshift(H); %重排数据序列,使得原点位于频率矩阵的左上角
figure(3);
suptitle('宗仰显示滤波器');
subplot(1,2,1),imshow(abs(H),[]),title('图形显示sobel滤波器') %以图形形式显示滤波器
subplot(1,2,2),imshow(abs(H1),[]),title('重排数据序列后滤波器')
gs=imfilter(double(f),h); %用模板h进行空域滤波
gf=dftfilt(f,H1);%用滤波器对图像进行频域滤波
figure(4);
subplot(2,2,1),imshow(gs,[]),title('对模版空域滤波后') subplot(2,2,2),imshow(gf,[]),title('对模版频域滤波后') subplot(2,2,3),imshow(abs(gs),[]),title('对模版空域滤波后')
subplot(2,2,4),imshow(abs(gf),[]),title('对模版频域滤波后')
运行:
因为图片格式的原因重新换了图片,得出第四张图:
T=imread('rice.png'); %读取图片
PQ=size(f); %产生滤波时所需大小的矩阵
D0=0.05*PQ(1); %设定高斯高通滤波器的阈值
H=hpfilter(PQ(1),PQ(2),D0); %产生高斯高通滤波器
g=dftfilt(f,H); %对图像进行滤波
figure(5);
subplot(1,2,1),imshow(f),title('原图像') %显示原图像subplot(1,2,2),imshow(g,[]),title('滤波图像') %显示滤波后图像