矩阵与子矩阵之间的反卷积

问题描述 投票:4回答:2

我有一个矩阵a=[[1 2 3]; [4 5 6]; [7 8 9]]和一个子矩阵b=[[5 6];[8 9]]

matlab中是否有用于解卷积(a,b)的方法?

我正在寻找一种方法来识别可能的巨型矩阵中子矩阵的存在。通过某种反卷积,我希望获得类似于矩阵的东西,该矩阵周围都为零,并且在存在子矩阵的地方为1

在上面的示例中,右下角为1

matlab image-processing convolution deconvolution
2个回答
6
投票

有一个更好的解释here


为了简单起见,我们讨论一维反卷积。

您的信号可以表示为矢量,并且卷积与三对角矩阵相乘。

例如:

您的矢量/信号是:

    V1
    V2
    ...
    Vn

您的过滤器(卷积元素)是:

  [b1 b2 b3];

所以矩阵是nxn :(让它叫做A):

[b2 b3 0  0  0  0.... 0]
[b1 b2 b3 0  0  0.... 0]
[0  b1 b2 b3 0  0.... 0]
.....
[0  0  0  0  0  0...b2 b3]

卷积为:

  A*v;

反卷积是

  A^(-1) * ( A) * v;

显然,在某些情况下,无法进行反卷积。然后您将使用单数A。但是,如果A^-1存在,则需要对其进行计算,并将其应用于结果。


对于2D情况,它稍微复杂一点,但是思想是相同的。


3
投票

如果要查找另一个内部小的矩阵的存在或存在的可能性,那么您正在寻找相关性,而不是去卷积。

最简单的方法是使用normxcorr2,它返回值[-1..1]的矩阵,其中1表示找到小矩阵的像素。

缺点/好处是normxcorr2对增益不敏感,这意味着如果您正在寻找[1 2 3 4],那么您还会发现[2 4 6 8]

© www.soinside.com 2019 - 2024. All rights reserved.