假设A * X = B
是full-convolution
;因此,如果matrix A
是N x N且matrix X
是M x M,则matrix B
必须是(N + M-1)x(N + M-1)。我知道A
和B
,但不知道X
;所以我想找到它。
由于傅里叶变换的反卷积要求所有相关矩阵具有相同的大小,我们用{0}填充A
成为(N + M-1)x(N + M-1)。
这很容易在Python中完成,
import numpy as np
from numpy.fft import fft2, ifft2
shape = B.shape
X_pre = ifft2(fft2(B, shape) / fft2(A, shape)).real
X = X_pre[:??, :??] # what do I put here to extract the latent kernel X?
问题是X_pre
的大小是(N + M-1)x(N + M-1),但我想得到大小为M x M的X
。知道M
比N
小得多,我如何提取潜在内核X
?
提前致谢...