Matlab 矩阵与子矩阵的反褶积
我有一个矩阵Matlab 矩阵与子矩阵的反褶积,matlab,image-processing,convolution,deconvolution,Matlab,Image Processing,Convolution,Deconvolution,我有一个矩阵a=[[1233];[456];[789]和一个子矩阵b=[[566];[899] matlab中是否有解卷积的方法(a,b) 我正在寻找一种方法来识别可能的巨矩阵中是否存在子矩阵。通过一种反褶积,我希望得到一种类似于矩阵的东西,它的四周都是零,在子矩阵存在的地方1 在上面的例子中,右下角有一个1。如果你想在另一个矩阵中找到小矩阵的存在或存在的可能性,那么你要寻找的是相关性,而不是反褶积 最简单的方法是使用normxcorr2,它返回一个值矩阵[-1..1],其中1表示找到小矩阵的像
a=[[1233];[456];[789]
和一个子矩阵b=[[566];[899]
matlab中是否有解卷积的方法(a,b)
我正在寻找一种方法来识别可能的巨矩阵中是否存在子矩阵。通过一种反褶积,我希望得到一种类似于矩阵的东西,它的四周都是零,在子矩阵存在的地方1
在上面的例子中,右下角有一个
1
。如果你想在另一个矩阵中找到小矩阵的存在或存在的可能性,那么你要寻找的是相关性,而不是反褶积
最简单的方法是使用normxcorr2
,它返回一个值矩阵[-1..1],其中1表示找到小矩阵的像素
缺点/好处是normxcorr2对增益不敏感,这意味着如果您正在寻找[1 2 3 4],那么您也会发现[2 4 6 8]有更好的解释
为了简单起见,我们来谈谈一维反褶积 信号可以表示为向量,卷积是与三对角矩阵相乘 例如: 你的向量/信号是:
V1
V2
...
Vn
您的过滤器(卷积元件)是:
因此矩阵是nxn
:(将其称为A
):
卷积是:
A*v;
反卷积是
A^(-1) * ( A) * v;
显然,在某些情况下,解卷积是不可能的。然后您将得到单数A
。
但是如果A^-1
存在,则需要计算它,并将其应用于结果
对于2D的情况,它有点复杂,但想法是一样的。不清楚卷积是从哪里进入讨论的。你是说你有一个矩阵
c=conv2(a,b)
,你想去卷积吗?如果不是,你能用一个比“去卷积”更准确的术语吗?看起来这只是在矩阵中找到一个子矩阵。其中有两个问题。第一个是关于matlab的。如果我有c=conv2(a,b)
,如何通过解卷积c和a来恢复b?第二个更“哲学”。假设a
是对象之间交互(卷积)的结果。假设您不知道这些对象。只需对其中一个进行建模。我想在a
(大画面)和我对一个物体的假设表示之间应用一种反褶积。我的目标是获得一个矩阵(与a
大小相同),其中/如果对象可以出现在a
中。不幸的是,这两个问题都没有清楚地表达出来。如果你真的想要答案,可以问一些更精确的问题。另外,还可以看看:A
看起来像是一个托普利茨矩阵。众所周知,如果我们有两个信号a
和b
,c=conv2(a,b)=a*b'
,其中a
是a
的toeplitz矩阵。问题是A
的列数必须等于b
的列数,如果我们想通过b'=A^-1*c
来解卷积c,A
,则A
必须是正方形。我不太清楚如何操纵这些大小。。@NasserM.Abbasi,A是正方形的-它是两个维度中信号的大小。过滤器大小是非零对角线的数量。
A*v;
A^(-1) * ( A) * v;