私は現在、正の値と負の値の両方を含む大きなマトリックスM(〜100x100x50要素)を持っています。現時点では、この行列を平滑化したい場合は、このsmooth3関数を使用して、3D行列全体にガウスカーネルを適用します。
私が達成したいのは、この行列内の可変レベルの平滑化です。マトリックスのさまざまな部分はM、同様の3Dマトリックスのd値(0から1の範囲の値)に応じて、さまざまなレベルのシグマに平滑化されます。dが0の場合、スムージングは発生しません。ここで、1dは、スムージングの最大レベルが発生します。
行列が3次元であるという事実は自明です。3次元での平滑化は優れていますが、必須ではありません。現在のコード(他のさまざまな操作を実行)は、Mとにかく50スライスのそれぞれを個別に処理します。smooth3ガウス関数を使用した畳み込みに置き換えて、Mこの畳み込みを各スライスに対して個別に実行できることをうれしく思います。私が理解できないのは、このガウス関数のシグマレベルを(に基づいてd)その位置を指定して変更しM、それに応じて結果を出力する方法です。
別のアプローチは、マトリックスdを非常に滑らかなバージョンのマトリックスのマスクとして使用しMs、何らかの方法で操作Mして同等の結果を出すことですが、結合する関数を考えることができないため、これが機能するとMsは確信していません。それぞれのアーティファクトが得られない、または0 << 1の場合...何か考えはありますか?MMdMMsd
[私は2009bを使用しており、信号処理ツールボックスにしかアクセスできません。]