ABD*_*ven 19 signal-processing numpy fft convolution scipy
所以我知道FFT的卷积比现实空间中的卷积具有更低的计算复杂度.但是FFT卷积的缺点是什么?
内核大小是否始终必须与图像大小匹配,或者是否有用于处理此问题的函数,例如在pythons numpy和scipy包中?那么抗锯齿效果呢?
Jai*_*ime 24
FFT卷积是基于卷积定理,其中指出givem两个函数f和g,如果Fd()与Fi()分别表示直接和逆傅立叶变换,*和.卷积和乘法,则:
f*g = Fi(Fd(d).Fd(g))
Run Code Online (Sandbox Code Playgroud)
要将其应用于信号f和内核g,您需要注意以下事项:
f并且g必须具有相同的大小才能使乘法步骤成为可能,因此您需要对内核进行零填充.如果您的信号和内核大小是,f_l并且g_l在时域中进行简单的卷积需要g_l * (f_l - g_l + 1)乘法和(g_l - 1) * (f_l - g_l + 1)加法.
对于FFT方法,您必须至少进行3次FFT大小f_l + g_l,以及f_l + g_l乘法.
对于大尺寸两个f和g的FFT是其明显优于n*log(n)复杂.对于小内核,直接方法可能更快.
scipy.signal既有convolve和fftconvolve方法供你玩.并且fftconvolve为您透明地处理上述所有填充.
Mar*_*ing 15
虽然快速卷积比直接形式卷积具有更好的"大O"复杂度; 有一些缺点或警告.我之前写过一篇文章,我对这个主题做了一些思考.
更好的"大O"复杂性并不总是更好.对于小于特定大小的滤波器,直接形式卷积可能比使用FFT更快.确切的大小取决于所使用的平台和实现.交叉点通常在10-40系数范围内.
潜伏.快速卷积本质上是一种块状算法.在转换它们之前一次排队数百或数千个样本对于某些实时应用来说可能是不可接受的.
实施复杂性.直接形式在内存,代码空间和编写者/维护者的理论背景方面更简单.
在定点DSP平台(不是通用CPU)上:定点FFT的有限字大小考虑使得大的定点FFT几乎无用.在尺寸范围的另一端,这些芯片具有专门用于执行直接形式FIR计算的MAC指令,增加了te O(N ^ 2)直接形式比O(NlogN)更快的范围.这些因素倾向于创造一个有限的"最佳点",其中定点FFT对快速卷积很有用.
| 归档时间: |
|
| 查看次数: |
10237 次 |
| 最近记录: |