这不是一个“编程”问题.但我确信这是在这个社区广为人知和理解的东西.
我有一个图像,x和一个小得多的图像y,我需要通过乘以它们来对两者进行卷积.但由于它们的大小不同,我不知道如何进行频域乘法.
我采用x的(二维)FFT(这是一个尺寸为4096 x 4096的整数矩阵),它给出了频域表示X(这是一个复数矩阵,我认为它的维数是2048 x 2048 ).
类似地,我采用(二维FFT的y(这是一个64 x 64的整数矩阵),它给出了频域表示,Y(也是一个复数矩阵,我认为它的维度是32 x 32).
我正在使用数字配方中的fourn函数,所以我的输入矩阵x和y必须折叠成一维数组,然后由它们的离散傅立叶变换X和Y代替.重点是即使这是一个图像的二维问题,我正在使用一维数组.
如果我试图卷积两个完全相同尺寸的图像,x和y.这一切都非常简单:
X = FFT(x) Y = FFT(y) Z = X * Y (term by term multiplication) Convolution of x and y = IFFT(Z)
但如果X和Y的长度不同,我该如何进行乘法?
一种可能性是填充y以具有与x相同的尺寸.但这似乎非常低效.另一种可能性是将Y填充为与X具有相同的尺寸.但我不知道这在频率空间中意味着什么.
这是提出这个问题的另一种方式:如果我想使用FFT对两个不同维度的图像进行卷积,那么我可以对它们的光谱进行乘法(频域表示),我该如何进行乘法?
谢谢,
〜迈克尔.