matlab中的二维反卷积

信息处理 图像处理 matlab 反卷积 二维
2022-02-08 00:53:01

我正在尝试为 h([MxM 矩阵])求解以下方程:

k[τ1,τ2]=i1=0Mi2=0Mh[i1,i2]x[τ1i1]x[τ2i2]

我有 k,它是一个 2D [MxM] 对称矩阵,我有 x,它也是一个 2D [MxM] 对称 toeplitz(自相关)矩阵。

我知道这基本上是一个二维反卷积问题,但这不是我的领域,我不知道如何在 MATLAB 中做到这一点。

另外,如果可能的话,我更喜欢时域解决方案,但频域也可以!

尝试的解决方案#1:频域划分:

h_pred=ifft(fft2(k)./fft2(x));

我认为这应该可行,但由于某种原因,它一直给我一个想象的答案!

尝试的解决方案 #2:Toeplitz 矩阵求逆:

h_pred=inv(x)*k;

这效果更好,但是虽然恢复的 h_pred 更接近真实的 h,但它仍然很远......

请帮忙谢谢!

2个回答

1) 第一个等式应如下所示:h_pred = ifft2 ( fft2(k) ./ fft2(x) )我相信你有一个小错字。

确保首先将内核零填充到图像的大小。

2)MATLAB还有盲反卷积功能: http: //www.mathworks.com/help/images/ref/deconvblind.html

我不知道您是否指的是这个,但对于 Toeplitz 方法,我会指:

[1] PC Hansen,“Toeplitz 矩阵的反卷积和正则化”,数值算法,第一卷。29,没有。4,第 323-378 页,2002 年。

我想到了。正确答案是:

H=X1KX1