假设我们有一个表示为二维整数数组的位图图像,
int [,] image2D;
其 FFT 为Complex[,] fftImage2D;
假设,我们有一个表示为 2D 整数数组的内核,
int [,] kernel2D;
其 FFT 为Complex[,] fftKernel2D;
我们知道,和的卷积(在空间域中)将是image2D
,kernel2D
int Rows = image2D.GetLength(0);
int Cols = image2D.GetLength(1);
for(int i=0 ; i<Rows ; i++)
{
for(int j=0 ; j<Cols ; j++)
{
//sweep the kernel2D across image2D
//...........................
}
}
我们还知道,频域中的卷积将是 和 之间的fftImage2D
乘积fftKernel2D
。
我怎样才能做这个乘法?
如何将两个Complex [,]
不同维度的二维数组相乘?我已经理解了这个理论。我的问题是实际实施。正如我在问题中描述的那样,
图像的 DFT 和内核的 DFT 是否会具有不同的大小?大概吧。那么,我怎样才能将它们逐个元素相乘呢?
在我的代码中,每个 DFT 都由 2D 复数表示。我应该根据复数的乘法规则将它们相乘吗?可能是。但是,只有当它们的尺寸相同时。正确的?