图像频域处理的概述Word格式.docx
《图像频域处理的概述Word格式.docx》由会员分享,可在线阅读,更多相关《图像频域处理的概述Word格式.docx(17页珍藏版)》请在冰豆网上搜索。
2二维傅里叶变换
由于图像的频率是表征图像中灰度变化剧烈程度的指标,是灰度在平面空间上的梯度。
傅立叶变换在实际中的物理意义,设f是一个能量有限的模拟信号,则其傅立叶变换就表示f的谱。
从纯粹的数学意义上看,傅立叶变换是将一个函数转换为一系列周期函数来处理的。
从物理效果看,傅立叶变换是将图像从空间域转换到频率域,其逆变换是将图像从频率域转换到空间域。
换句话说,傅立叶变换的物理意义是将图像的灰度分布函数变换为图像的频率分布函数,傅立叶逆变换是将图像的频率分布函数变换为灰度分布函数。
2.1二维连续傅里叶变换
如果二维连续函数f(x,y)满足狄里赫莱条件,则将有下面的傅立叶变换对存在:
与一维傅立叶变换类似,二维傅立叶变换的傅立叶谱和相位谱为:
2.2二维离散傅里叶变换
一个M×
N大小的二维函数f(x,y),其离散傅立叶变换对为:
在数字图像处理中,图像一般取样为方形矩阵,即N×
N,则其傅立叶变换和其逆变换为:
2.3二维离散傅里叶变换的性质
离散傅里叶变换主要有以下性质:
1.平移性质2.分配律3.尺度变换(缩放)4.旋转性5.周期性和共轭对称性6.平均值7.可分性8.卷积9.相关性。
这里主要简述周期性,卷积相关内容会在下一节中介绍。
离散傅里叶变换有如下周期性性质:
反变换也是周期性的:
频谱也是关于原点对称的:
这些等式的有效性是建立在二维离散傅里叶变换公式基础上的。
图像的周期性在图像处理中有非常重要的作用,下面会在卷积部分继续阐述周期性的相关内容。
3卷积相关知识介绍
共分二个定理:
时域卷积定理;
频域卷积定理。
3.1时域卷积定理
给定两个时间函数
已知:
则:
时域卷积 频域相乘
即两个时间函数卷积的频谱等于各个时间函数频谱的乘积。
3.2频域卷积定理
频域卷积 时域相乘。
即两个时间函数频谱的卷积等效于各个时间函数的乘积(乘以系数1/
)。
3.3周期延拓在卷积中的作用
基于卷积理论,频率域的乘法相当于空间域的卷积,反之亦然。
当处理离散变量和傅里叶变换时,要记住不同函数所包含的周期性(4.6.1节)。
虽然可能不太直观,但周期性是定义离散傅里叶变换对时产生的数学副产品。
周期性是处理操作的一部分,不应忽视。
图3.1列举了周期性的重要性。
图3.1左边(a~e):
两个离散函数的卷积右边(f~j):
相同
函数的卷积,考虑DFT周期性的应用。
图的左边一列是用下式的一维形式计算的卷积:
在此详细地解释卷积运算的过程。
为简化表示,简单的数字将代替那些表示函数长度和高度的通用符号。
图3.1(a)和(b)是两个要进行卷积的函数。
每个函数包含400个点。
卷积的第一步是将一个函数关于原点进行镜像映射(倒转),在本例情况下,对第二个函数进行,在图3.1(c)中以h(-m)示出。
下一步是将h(-m)滑过f(m)。
这要增加一个常数x到h(-m),即变成h(x-m),如图3.1(d)所示。
注意只有一个置换值。
在第一次遇到时.这个简单步骤通常是引起混乱的根源。
而这恰好是卷积计算的全部关键。
换言之,为了执行卷积,倒转了一个函数,并将它滑过另一个函数。
在每一个置换点(的每一个值)都要计算式的全部总和。
这个总和不比在给定位移处f和h乘积的和更太。
位移x的范围为h完全滑过f需要的所有值。
图3.1(e)显示了h完全滑过f后的结果,并在x的每个点计算式。
在此例中,为使h(x-m)完全滑过f,x值的范围是从0到799。
这幅图是两个函数的卷积。
要清楚地记住卷积中的变量是x.
从上面介绍的卷积理论可知,由F(u)H(u)的傅里叶反变换能得到同样的准确结果。
但是,从前面对周期性的讨论又知离散傅里叶变换自动地将输入函数周期化。
换言之,采用DFT允许在频率域进行卷积计算,但函数必须看做周期性的,且周期等于函数的长度。
可以通过图3.1右边一列考察这种隐含的周期性。
图3.1(f)同图3.1(a)一样,但同样的函数在两个方向上周期性地无限扩展(扩展部分用虚线表示)。
从图3.1(g)到图3.1(i)同样应用该扩展。
现在,可以通过将h(x-m)滑过f(m)进行卷积。
如前面一样,变化x完成滑动。
然而,h(x-m)的周期性扩展产生了图3.1左边的计算中所没有的值。
例如,在图3.1(i)中,当x=0时,看到h(x-m)右侧第一个扩展周期的一部分进入图3.1(f)中所示的f(m)(从原点开始)的一部分。
当h(x-m)向右滑动时,在f(m)中的那部分开始向右侧移出,但被h(x-m)左侧相同部分所取代。
这引起卷积产生一个常量值,如图3.1(j)所示的[0,100]的一段.从100到4OO的一段是正确的,但周期性是周而复始的,这样就引起卷积函数尾部的一部分丢失,由图3.1(j)和图3.1(e)实线部分的比较可以看出这一点。
在频率域,该过程需要计算图3.1(a)和(b)中函数的傅里叶变换。
根据卷积理论,两个变换要相乘,再计算傅里叶反变换。
结果包含40O个点的卷积,如图3.1(j)的实线部分所示。
简单的解释表明当使用傅里叶变换得出卷积函数时,错误地处理周期性将得到错误的结论。
结果,在开头有错误数据,结尾将丢失数据。
问题的解决办法很简单。
假设f和h分别由A和B个点组成。
对两个函数同时添加零,以使它们具有相同的周期,表示为P。
这个过程产生扩展的或延拓的函数,如下所示:
和
可以看出,除非选择P≥A+B-1,否则卷积的独立周期将会混叠。
已经在图3.1中看到了这种现象的结果,这通常归于缠绕误差。
若P=A+B-1,周期便会邻接起来。
若P>A+B-1,周期将会是分隔开的,分隔的程度等于P与A+B-1的差。
扩展后的卷积结果如图3.2所示。
在这里,选择P=A+B-1(799),即可知卷积周期是相邻的。
遵循与前面的解释相同的过程,得到如图3.2(e)所示的卷积函数。
该结果的一个周期与图3.1(e)相同,是正确的。
这样,如果要在频率域计算卷积,应该:
(1)得到两个扩展序列的傅里叶变换(每个序列有8OO个点);
(2)将两个变换相乘;
(3)计算傅里叶反变换。
结果便得到正确的8OO个点的卷积函数,见图3.2(e)中周期加重的部分。
图3.2(a~e)用扩展函数执行卷积的结果
这些概念扩展到二维函数时遵循了相同的前提。
假设有f(x,y)和h(x,y)两幅图像,大小分别为A×
B和C×
D。
如同一维情况,这些行列必须假定在x方向上有相同的周期P,在y方向上有相同的周期Q。
二维卷积的混叠可由选择如下周期避免:
扩展f(x,y)和h(x,y)形成如下周期性序列:
为了简化图例,假设f和h是方形的,且大小相同,
图3.3对二维函数周期延拓的说明。
(a)没有延拓执行二维卷积的结果;
(b)合格的函数延拓;
(c)正确的卷积结果。
图3.3(a)显示了图像没有延拓时得到的滤波结果。
这通常是由于没有对一幅输入图像进行延拓就进行傅里叶变换,然后又乘上同样大小的函数(也没有延拓),计算傅里叶反变换。
结果就是与输入图像相同的大小为A×
B的图像,如图3.3(a)左上象限所示。
如同一维情况,图像前面边沿(阻影部分)由于周期性而引入了错误数据,而在尾部边沿将丢失数据。
如图3.3(b)所示,通过对输入图像和函数进行合适的延拓,将得到正确的、大小为P×
Q的过滤图像,如图4.38(c)所示。
这幅图像在两个坐标方向上是原始图像的两倍大小,有原始图像4倍数量的像素点。
4程序设计
MATLAB中提供的变换函数
(1)fft2:
用于计算二维快速傅立叶变换,语句格式:
B=fft2(I,m,n)按指定的点数计算m,返回矩阵B的大小为m×
n,不写默认为原图像大小。
(2)ifft2:
用于计算图像的二维傅立叶反变换,语法格式:
B=ifft2(i)
这里在MATLAB工作路径里输入两副灰度图像,分别为‘1.jpg’和‘2.jpg’,如下图所示。
图4.11.jpg
图4.22.jpg
%直接卷积程序
I1=imread('
1.jpg'
);
I2=imread('
2.jpg'
I5=conv2(I1,I2);
figure
(2);
imshow(I5,[]);
%正确的频域处理程序
[m1,n1]=size(I1);
[m2,n2]=size(I2);
I1(m1+m2-1,n1+n2-1)=0;
I2(m1+m2-1,n1+n2-1)=0;
I3=ifft2(fft2(I1).*fft2(I2));
I3=I3(1:
m1+m2-1,1:
n1+n2-1);
I3=real(I3);
figure
(1);
imshow(I3,[]);
%比较频域方法与直接卷积的结果,显示差矩阵并且显示错误数据数
F=minus(I3,I5);
figure(3)
imshow(F);
s=0;
fori=1:
m1+m2-1
forj=1:
n1+n2-1
if(minus(abs(F(i,j)),0.000001)>
0)
s=s+1;
end;
end;
%补0不够的频域处理程序
I1(m1+m2-100,n1+n2-100)=0;
I2(m1+m2-100,n1+n2-100)=0;
m1+m2-100,1:
n1+n2-100);
I3(m1+m2-1,n1+n2-1)=0;
m1+m2-100
n1+n2-100
5运行结果和结果分析
在MATLAB中输入程序后,显示的卷积结果如下,
图5.1正确延拓频域法得到的卷积图像
图5.2补0不够频域法得到的卷积图像
图5.3直接函数卷积得到的图像
图5.4正确延拓差矩阵的二值图像
图5.5补0不够的差矩阵的二值图像
比较图5.1和图5.3,看不出两个图像有任何区别。
通过作差,认为舍入误差小于0.000001的均可作为0来处理,这里S=76295,差值矩阵的二值图像全为黑,可以认为两图几乎没有任何区别,即频域方法的卷积结果是完全正确的。
比较图5.2和图5.3,表面上也看不出两个图像有什么区别,图5.2的靠左和靠上部分有亮度增加,这部分是叠加错误,而靠下和靠右部分是两条黑杠,这是补零的数据,也就是原来丢失的数据。
通过检测差值矩阵,S=327863,错误的有很多,即没有补0的频域方法计算的结果不正确。
值得注意的是这里差值矩阵应该四周都是白色,因为左边和上边是混叠错误的地方应该为,行数:
100,列数100;
同理右边和下边是数据丢失人为补0的地方也有与混叠相同的行数和列数。
但因为这里‘2.jpg’周围为0,因此正确卷积的结果也为0,因此差矩阵得到的相应区域也为0,显示的2值图像就看不到白色地方了。
通过以上分析说明,二维图像或矩阵的线性卷积可以通过补零周期延拓后,经二维傅里叶变换相乘,再做反变换来实现。
而不补零或补零不足,用此方法求得卷积图像靠左靠上会有叠加错误和靠下靠右会有数据丢失。
6心得体会
数字图像处理是一门理论与实践紧密结合的课程。
做大量的上机实验有助于进一步理解和巩固理论知识,还有助于提高分析和解决问题的能力。
MATLAB强大的运算和图形处理功能,可以使数字图像处理效率大大提高,使数字图像处理工作变得十分简单和直观。
这次数字图像处理课程设计历时四天,在整整四天的日子里,可以说得是苦多于甜,但是可以学到很多很多的的东西,特别是学到了很多在书本上所没有学到过的知识。
以前总是在课堂上面听老师讲一些理论方面的知识,看着觉得简单。
但这次课设,当我在实际中自己处理问题时,才发现有许多我们不了解的细节方面的知识,这些都需要我们在实践中去尝试解决。
刚开始题目给的不清楚,没有搞明白是要干什么,通过老师的指导明确了这次课程设计的目的。
这次课设说白了就是让我们验证卷积定理,用傅里叶变换和反变换都很简单。
但要真正弄明白补0周期延拓还要仔细看课本,搞明白原理。
而且怎么样去比较两种算法的结果,这里想到用求差的方法,通过用差矩阵来变现两个结果的差异。
但是傅里叶变换带来了复述,这里肯定有舍入误差,相减不会为0,因此要选择一个较小合适的数字来作为差值的比较,小于即作为0来处理。
其次,以前对于MATLAB的使用还处于一知半解的状态上,但是经过这次课程设计,对于怎么去使用函数,怎样去查看一个函数的功能,在正确使用MATLAB的语法规则上都有了很大程度的提高。
通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,从而提高自己的实际动手能力和独立思考的能力。
参考文献
[1].(美)冈萨雷斯等.数字图像处理(MATLAB版).阮秋奇等译.北京:
电子工业出版社,2005
[2].(美)冈萨雷斯等.数字图像处理(中文版).第二版.阮秋奇等译.北京:
电子工业出版社,2007
[3].贾永红.数字图像处理.武汉:
武汉大学出版社,2003
[4].贺兴华等.MATLAB7.X图像处理.北京:
人民邮电出版社,2006
[5].朱衡君.MATLAB语言和实践教程.北京:
清华大学出版社,2005
[6].阮秋奇.数字图像处理学.北京:
电子工业出版社,2000
致谢
首先想要感谢学校给我们这次课程设计的机会。
在这次课程设计中,我们遇到了一些问题,刚开始不知道题目是什么意思,感谢黄朝兵老师不厌其烦的给我回邮件给我解释题目的意思,课设的目的,否则我也无法顺利完成这次课程设计。
还要感谢您平时对我们的悉心教导,以和答辩花费去大量的时间和精力。
其次还要感谢身边的同学,感谢你们对我的帮助,在你们的帮助下我学会了很多东西。