Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 矩阵与子矩阵的反褶积_Matlab_Image Processing_Convolution_Deconvolution - Fatal编程技术网

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;