2

numpy または scipy には、n 次元の「勾配」fn の逆関数が含まれていますか?

たとえば、「画像」に 2D マトリックスが含まれている場合、次のように動作する関数 inv_gradient が必要です。

(gx, gy) = numpy.gradient(image)
constant_vector_0 = image[0,:] - inv_gradient(gx, gy)[0,:]
constant_vector_1 = image[:,0] - inv_gradient(gx, gy)[:,0]
image == inv_gradient(gx, gy) + tile(constant_vector_0,(shape(image)[0],1)) + transpose(tile(constant_vector_1,(shape(image)[1],1)))
4

1 に答える 1

3

あなたが説明しているのは、基本的に逆フィルターです。これらは存在しますが、制限されています。

これを理解する 1 つの方法は、畳み込み定理を使用して、勾配を畳み込みの特定のカーネル (この場合は 1D の (-1, 0, 1) のようなもの) と考えることです。問題は、カーネルのフーリエ変換 (FT) がゼロを持ち、カーネルと信号の FT が乗算されると、カーネルの FT のゼロがこの部分の元のデータからすべてのデータを消去することです。スペクトル (画像にノイズが追加されると、これはさらに問題になります)。特に勾配については、f=0 バンドで 0 パワーがあり、これはコメントで言及されていることですが、他の情報も失われています。

それでも、逆フィルターから多くのことを得ることができ、おそらく必要なものを得ることができます。それはかなりケース固有です。

これは、問題の非常に基本的で簡単な説明と例です(ただし、グラデーションは対象外です)。

于 2012-04-23T05:40:56.513 に答える