【发布时间】:2016-04-06 18:14:51
【问题描述】:
我目前的目标是针对 2D 信号(图像)优化我的快速小波变换 (FWT) 算法。它的工作原理如下:
- 一维 FWT 的一次迭代使用选定的一维滤波器(长度从 2 到大约 60)对一维输入数据进行卷积,并对结果进行下采样
- 2D 变换算法对输入图像的所有行和所有列执行 1D FWT
- 如果需要更多级别,它会进行迭代
变换是演示小波及其使用的交互式应用程序的一部分。它的工作速度相当快,通常实时响应用户的交互。但是如果过滤器很长,就会出现一些性能问题。我读过使用快速傅立叶变换 (FFT) 而不是卷积对于足够长的滤波器是有效的。
我已经实现了 1D FFT,但问题是如何使用它来实现最大效率?我是否应该在单个 1D FWT 之前转换输入数据,然后执行卷积(对应于频域中的乘法),然后使用逆 FFT 将数据转换回来? 另外,乘法是如何完成的?例如,长度为 256 的输入数据和长度为 4 的滤波器都使用 FFT 进行转换,然后只有输入数据的前 4 个值相乘,然后再将数据转换回来? 我在详细信息,非常感谢您对此的任何见解。
编辑: 我发现在我的情况下,我在循环卷积之后,因此过滤器应该是零填充的,以便它的长度与输入数据的长度相同。但是我关于效率的问题仍然存在。我应该如何使用 FFT 进行 FWT 计算才能发挥作用?
编辑 2: 此问题已在 dsp.stackexchange.com 上回答。
【问题讨论】:
标签: c# image-processing optimization fft wavelet