我对2D傅里叶变换有疑问。我目前正在理解这背后的数学,并且有一些我不理解的东西。就我而言,DFT的复杂度为O(N*N)
。如果我查看以下算法:
我不明白它是如何运作的。我们是否要对转换后的图像中的每个像素进行此计算?
示例
这是它的工作原理还是我错过了什么?因为我现在看到它的方式,它的复杂性为O(N^4)
答案 0 :(得分:3)
等式意味着“在像素(u,v)处获得F的值,评估(右侧的公式)。”因此,要获得整个变换后的图像,需要对变换后的图像中的每个像素进行评估。
要计算DFT,使用公式,您需要为每个输出值的每个输入值执行O(1)计算。 (对于某些类型的数据,还有其他更快的算法。)在2D DFT情况下,算法具有复杂度O((M * N)^ 2),因为输入像素的数量是M * N而且数量是输出像素也是M * N.
编辑:通过在单独的步骤中变换行和列,可以在O(NM ^ 2 + MN ^ 2)中计算2D矩阵DFT。算法在这里:http://fourier.eng.hmc.edu/e101/lectures/Image_Processing/node6.html