2017-07-21 8 views
1

画像全体ではなく特定のピクセル位置にmedfilt2関数を適用する方法はありますか?ピクセル位置は、IMaskと呼ばれるバイナリイメージを使用して表すことができる。Matlab、特定のピクセル位置にmedfilt2関数を適用する方法

私はポイントが表示されていないが、あなたが定義する場合は、 medfilt2に渡しているマトリックスは、あなたが を処理されている必要がありますが、パディングの(ゼロ/対称の/ etc値を世話をする必要があり、あなたのイメージのサブセットです

答えて

3

怠惰な方法は、画像全体にmedfilt2を適用し、特定の場所をコピーすることです。例えば。

A = magic(10); % sample matrix 
IMask = logical(randi([0 1],10)); % sample locations 

B = medfilt2(A); 
A(IMask) = B(IMask); 

非常にエレガントではないが、あなたの行列が巨大であるとIMaskは、ほとんどが偽でない限り、仕事を行います。

+1

これは残念なことに最速の方法です。 Parallel Computing Toolboxを使用している場合は、Intel IPPとオプションでCUDAによって 'medfilt2'が加速されるため、フィルタリングされないピクセルの分岐や例外の検出はフローを破壊します。これは、例えばCUDAとOpenCLでは非常に一般的です。 – rayryeng

0

境界で)。

その後、画像内の処理済みの行列を正しい位置に置き換えるだけで済みます。

関連する問題