2015-02-11 107 views
5

我有一些数据,二维矩阵,我们会打电话给A,这我知道,在理论上可以通过另一个矩阵,我们会打电话给B的自卷积来描述:2D自解卷积在MATLAB

A=conv2(B,B) 

我想提取B.有没有办法在MATLAB中执行二维矩阵的自解卷积?任何人都可以将我指向正确的方向吗?

+0

你试过'deconvblind','deconvlucy','deconvreg'或'deconvwnr'功能吗?只是在黑暗中拍摄。我相信这是一个相当不确定的系统,一个图像的解卷积,很可能是不可能的,或者只能使用正则化技术和先验信息。如果你在这里没有得到答案,我建议你尝试在数学计算器stackoverflow – 2015-02-11 08:41:15

+0

通过二维矩阵,你的意思是你有像{{1,0,0},{2,2,0},{1,2 ,1}}你想要识别为{{1,0},{1,1}}的卷积平方? – 2015-02-11 09:29:56

+2

理论上可以通过执行傅立叶变换找到**一个**解,通过取频率图像的平方根(使用sqrtm()),然后执行傅立叶逆变换。但是,您需要考虑到FFT转换*循环*转换为乘法这一事实,并且我未能在MATLAB中找到直接执行DTFT的函数(因为FFT是DTFT的样本,这非常合理) - 所以应该以某种方式填充使用。我尝试了几次,并且由于最后一个问题而无法完成工作,但我认为这是正确的方向。 – Yellows 2015-02-11 15:17:08

回答

0

我们可以将A看作两个变量中的多项式系数,我们希望找到一个多项式B使得B^2 = A。这种类型的计算不是Matlab设计要做的,但我认为如果你有符号数学工具箱,你可以从A做一个符号多项式,取平方根,并将其转换回系数矩阵。如果A的系数是嘈杂的,那么你可以在距离A是0的几个(x,y)点上计算A,然后计算sqrt(A),对这些值拟合一个多项式B,并从B中提取系数。 B也会工作。尽量不要选择A为0的曲线分隔的点,也可以混合B和-B的值。