本文主要是介绍数字图像处理笔记——二维离散傅里叶变换(2D Discrete Fourier Transform),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
二维傅里叶变换
我们先来看看一维情况的傅里叶变换。在信号系统中讲过连续时间的傅里叶变换和离散时间的傅里叶变换,连续时间傅里叶变换在频谱上时非周期的,离散时间傅里叶变换(DTFT)在频谱上是周期的。在DSP中讲了离散傅里叶变换,它的思想是将时域周期化,反映在频域上就是对连续的周期频谱进行抽样
有了一维的离散傅里叶变换(DFT),我们可以将其推广到二维的情况
我们其实可以将二维离散傅里叶变换看成两次一维的离散傅里叶变换,在matlab中我们可以用fft2这个函数来计算
和一维DFT类似,二维DFT显示了图像的频率成分组成情况
如下图所示就是不同的频率成分,也就是说图像实际上是由以下各种不同的图像叠加而成
由于在某一幅特定的图像中,频谱值差距很大,因此我们通常会用log来调整。在实际调用的时候我们还可以采用频谱搬移的方法使得频谱特性更容易观察,例如out=fftshift(log(abs(fft2(im))));由于图像频谱具有中心对称性(一维傅里叶变换是轴对称,二维傅里叶变换是中心对称),我们实际上只需要看频谱的1/2就可以了
我们会看到图中会有两条白色的线,在课程中老师解释说是由于DFT会将图像进行周期化,使得图像的边缘不连续(也就是图像下半部分会与下一幅图的上半部分接壤,左半部分会与右半部分接壤),引入了高频成分导致的。但是关于这点我有点不是很理解,我认为对于一幅图像而言,我们直接对他进行DTFT得到的是一个连续的周期谱,我们对图像进行周期化的过程实际上只是对连续谱进行一个采样,而不会引入新的频率成分,也就是说周期化与否并不影响频谱成分,而差别只是频谱由连续变为离散了。因此我认为频谱存在横竖的白线仅仅是因为图像中存在水平或竖直的边缘(例如上图中的海水与海岸形成竖直的线,山峦与天空形成水平的线)导致的
那么为什么图像中的边缘会使得频谱中也出现相应的白线呢,我们先给出结论:如果图像中存在角度为θ的边线,那么在频谱中我们会看到角度为θ+90度的一条白线。我们在此不做数学上的推导而是举个例子让大家能够理解:我们假设有一幅图像是黑白相间的竖条纹,我们对这幅图像进行傅里叶变换,我们知道二维傅里叶变换可以看做两次一维的傅里叶变换,因此我们对产生图像的矩阵分别进行DFT,得到的结果就是只有频谱中央的一条横线上是有值的,而这个值具体是什么,跟条纹的图案有关
下图是一个实际的例子,我们可以看到对于一幅存在倾斜方格的图片,它的频谱也会出现对应角度的白线
二维傅里叶变换的性质
以下是二维傅里叶变换的一些性质,在这就不细讲了
要注意的是DTFT中的卷积性质到DFT中变成了循环卷积,也就是将信号周期化后做卷积(每个位置的值会被循环使用)
但是循环卷积出来的结果往往不是我们想要的,因为周期化的过程使得引入的循环部分也参与卷积运算,而这部分是我们不需要的,解决方法是在序列后面补零,使得循环卷积结果与普通卷积相同,好消息是我们在matlab中调用函数时这些函数会自动帮我们完成这些工作
这篇关于数字图像处理笔记——二维离散傅里叶变换(2D Discrete Fourier Transform)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!