过滤n × nn×n图像由可分离的过滤器。使用 FFT、2D 卷积和两个 1D 卷积进行滤波的计算时间米×米m×m

信息处理 图像处理 fft 卷积 在家工作
2022-01-08 09:16:48

考虑用正方形、可分离的图像。n×nm×m

  1. 给出以下方法的计算时间的一般方程:

    • 使用 FFT 过滤
    • 二维卷积
    • 两个一维卷积

使用大写字母表示依赖于实现的常量。

  1. 对于第 1 部分中过滤方法的特定实现)记录了以下计算时间:

    n=64 m=3 FFT=2,498,561 2-D 卷积=73,829 两个 1-D 卷积=245,761
    n=256 m=5 FFT=53,084,161 二维卷积=1,179,649 两个一维卷积=3,932,161
    n=1024 m=3 FFT=1,059,061,761 二维卷积=18,874,369 两个一维卷积=62,914,561
    n=1024 m=11 FFT=1,059,061,761 二维卷积=471,859,201 两个一维卷积=314,572,801
    

    将与实现相关的常量的值估计为 1)

  2. 对于 2) 中的实现,给出预期 FFT 实现最快mn

关于我的观点:

  • FFT 是:首先对每一列分别应用 FFT,然后对每一行应用 FFT。个数据点的FFT大约需要次乘法,对于图像,它将是次乘法。其次,逆 FFT 以恢复合理的图像。另一个第三,乘以核的 FT,就是复数乘法,即实数乘法。因此,FFT 的计算时间为那是对的吗?N2NlogNn×n2n2nlogn2n2nlognn24n2O1(8n2logn+4n2)
  • 二维卷积:我对此感到困惑。它可能是这是正确的吗?O2(n2m2)
  • 两个一维卷积:首先,每行卷积。它应该是其次,转置图像的矩阵。这个过程会包括计算时间吗?第三,再次对行进行卷积。另一个第四,第二次转置,将图像恢复到原来的方向。计算方程为(n+m1)2(n+m1)2O3(2(n+m1)2)

但是,根据我的计算方程,我不能将我的方程与记录的计算时间妥协。这样,我认为我需要修正我的方程来解决第 3 部分中的问题)。

1个回答

我不确定您到底在追求什么,只是想尝试添加数据:

  1. 使用过滤器的可分离性属性始终是正确的选择。
  2. 鉴于它是可分离的,我们现在必须应用一维卷积。选择哪种方法(频域/空间域)取决于滤波器的长度和图像每个维度的像素数。
    在某些情况下,最好对行进行 FFT,对列进行空间卷积。
  3. 当“计数”FLOPS 时,这一切都是正确的。现实生活中的时机远不止于此。例如,如果您正在使用高度调整的卷积实现,但“经典”DFT 实现,您可能会更快地执行空间方式,即使对于分析计算预测的维度,最好在频域中完成。