我目前的目标是针对2D信号(图像)优化我的快速小波变换(FWT)算法。它的工作原理如下:
转换是交互式应用程序的一部分,用于演示小波及其用法。它的工作速度相当快,通常可以实时响应用户的交互。但如果过滤器很长,则会出现一些性能问题。我已经读过,使用快速傅里叶变换(FFT)代替卷积对于足够长的滤波器是有效的。
我已经实施了1D FFT,但问题是如何使用它来实现最高效率?我应该在单个1D FWT之前转换输入数据,然后执行卷积(对应于频域中的乘法),然后使用逆FFT将数据转换回来? 此外,如何完成乘法运算?例如,长度为256的输入数据和长度为4的滤波器都使用FFT进行变换,然后在将数据转换回来之前,只将输入数据的前4个值相乘?我挣扎了一点点关于细节,非常感谢对此的任何见解。
修改 我已经发现,在我的情况下,我在循环卷积之后,因此滤波器应该填零,以使其长度与输入数据的长度相同。但我对效率的质疑仍然存在。我应该如何使用FFT进行FWT计算才能获益?
编辑2: dsp.stackexchange.com已回答了这个问题。
答案 0 :(得分:1)
这是一种非常优雅的方式。如果你感兴趣的话,我可以挖掘出我的代码,很久以前就已经开始了(参见这两个出版物for the non-redundant(FWT) case(图3)和for the shift-invariant case)。移位不变的情况可能不是你所追求的,但它使用相同的技巧。它的描述稍微透彻here in Appendix B。