メディアンフィルタ適用時特定の要素を除外する方法

3 Ansichten (letzte 30 Tage)
Takanori Aihara
Takanori Aihara am 7 Okt. 2024
Kommentiert: Takanori Aihara am 9 Okt. 2024
medfilt2関数で[9 9]の範囲にメディアンフィルタ処理を行う際、0の要素を計算対象外に指定したいのですが可能なのか分かりません。
ご存じの方いらっしゃればご教授お願いします。

Akzeptierte Antwort

Akira Agata
Akira Agata am 7 Okt. 2024
関数 nlfilter を使って実現することができます。
たとえば 2次元配列 I に対して [9 9] の範囲で値が 0 の要素を計算対象外とした median フィルタ処理をするには、以下のようになります。
% 値が 0 の要素を計算対象外とした median フィルタ処理
myMedfilt = @(x) median(x(x~=0));
J = nlfilter(I, [9 9], myMedfilt);
  3 Kommentare
Akira Agata
Akira Agata am 9 Okt. 2024
はい、ご理解のとおりです。
ちなみに、万が一 [9 9] の範囲内がすべて 0 の領域があった場合、その部分は出力が nan となってしまう点ご注意下さい。もしそのようなケースにも対応する (たとえば nan ではなく 0 を出力する) には、myMedfilt の部分を無名関数ではなくカスタム関数として作成するのが良いかと思います。
Takanori Aihara
Takanori Aihara am 9 Okt. 2024
Akira Agata 様
承知いたしました。
先にご教授いただいたメディアンフィルタの処理、当方の求めていた処理が可能になりました。
ありがとうございます。

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Produkte


Version

R2024a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!