4

私はマトリックスa=[[1 2 3]; [4 5 6]; [7 8 9]]とサブマトリックスを持っていb=[[5 6];[8 9]]ます。

デコンボリューションのためのmatlabの方法はあり(a,b)ますか?

巨大行列の可能性がある部分行列の存在を認識する方法を探しています。一種のデコンボリューションによって1、部分行列が存在する場所とその周囲にゼロがある行列のようなものを取得することを期待しています。

上記の例で1は、右下隅に a があります。

4

2 に答える 2

6

より良い説明がここにあります


簡単にするために、1D デコンボリューションについて話しましょう。

信号はベクトルとして表すことができ、畳み込みは三重対角行列との乗算です。

例えば:

ベクトル/信号は次のとおりです。

    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 の場合はもう少し複雑ですが、考え方は同じです。

于 2012-06-27T15:23:55.610 に答える
3

別の行列内の小さな行列の存在または存在の可能性を見つけたい場合は、デコンボリューションではなく相関を探しています。

最も簡単な方法はnormxcorr2、値の行列 [-1..1] を返す を使用することです。ここで、1 は小さな行列が見つかったピクセルを意味します。

欠点/利点は、normxcorr2 がゲインに敏感でないことです。つまり、[1 2 3 4] を探している場合、[2 4 6 8] も見つかります。

于 2012-06-27T14:56:34.083 に答える