DFT,FFT和卷积(笔记)

来源:互联网 发布:php连接数据库语句 编辑:程序博客网 时间:2024/05/20 07:53

在学习图像处理的过程中,首先碰上的是滤波算法,在滤波算法中首先碰到了难以理解的卷积运算,关于卷积的概念,刚上来看维基百科中的卷积概念,我看完是崩溃的,很难理解,当时也没有学习离散数学,对于计算机离散的概念并不是很理解,作为计算机的学生,也没有学习复变函数和数字信号处理,对这些概念的确难以理解,现在看了,难度被自己放大了。
虽然难以理解,但是看到图像卷积与滤波的一些知识点这篇文章后,可以使用卷积这种东西了。在这里滤波的时候我是看做一种平均运算来理解的。现在看了《数字信号处理》之后对卷积和DFT有了些认识。

离散卷积

定义在维基百科上有,卷积是一种由2个输入函数生成1个输出函数的数学算子。

现在的数字计算机计算的都是离散信号,无法计算连续的模拟信号。Lyons的《数字信号处理》中有下面的描述。

离散卷积是一个输入为两个序列,输出为单一序列的过程。卷积输入可以是两个时间序列,这时输出的> 是一个时间序列;也可以是两个频率序列,输出是一个频率序列(尽管两个输入序列必须同时在时域
或频域才能使卷积过程有实际意义,但是他们的长度不要求相等)。

这样看来,说白了,卷积就是一种类似加减乘除却更复杂的数学运算,本身不具有什么意义,但是当它放到具体的应用中的时候,它就会产生特定的一些意义了。
卷积定义:
这里写图片描述
离散卷积定义:
这里写图片描述

从这里可以看出来,g函数是要翻转的,也就是将g这个输入序列的顺序反过来。在图像处理的过程中,图像就可以作为一个输入,那么用的卷积核也就是第二个输入了,从上面的定义中可以看出为什么为什么输入信号要先翻转一下(很多时候可以不翻转)。比较简单的线性滤波就是这样一种简单的重复运算,”滑动平均“(具体的实现可以看文章开头给出的那篇介绍卷积的文章)。那在这里,卷积就起到了一种平均的作用,其实这里的应用并不复杂。

离散傅里叶变换(DFT)

之所以扯上了傅里叶变换,是因为上面的卷积运算太慢,太费时间。傅里叶变换中的快速傅里叶变换的运算速度非常快,可以用来就算卷积。 为什么呢?这里给出卷积定理

如果两个时间序列h(k)和x(k)的DFT分别为H(m)和X(m),那么h(k) * x(k)的DFT为H(m) 点乘X(m)H(m) 点乘X(m)的IDFT为`h(k) * x(k)。

因为傅里叶变化是将时域上的信号变为了频域上的信号,所以会常常看到时域上的序列卷积等于它们对应频域上的点积的说法。
最后,如果已经看过了离散傅里叶的计算过程,会发现离散傅里叶的计算复杂度也是相当的大,当处理的信号N过大时耗费的时间非常多,这就有了计算傅里叶的快速方法——快速傅里叶变换(FFT)。快速傅里叶的算法思想并不太难,如果学过算法这门课程的应该可以看出,FFT应用的是分治算法,分而治之。具体到算法还是有些复杂的,不过思路就是讲N点的DFT不断等分,直到分到很小,计算2点,4点或者混合基的DFT,可以大大的降低计算DFT的计算复杂度。 从这也能看出,FFT不是新的理论,只是DFT的一种计算方法,而且计算的是DFT的精确结果,不是DFT的近似结果。

0 0