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

2 ビュー (過去 30 日間)
Takanori Aihara
Takanori Aihara 2024 年 10 月 7 日
コメント済み: Takanori Aihara 2024 年 10 月 9 日
medfilt2関数で[9 9]の範囲にメディアンフィルタ処理を行う際、0の要素を計算対象外に指定したいのですが可能なのか分かりません。
ご存じの方いらっしゃればご教授お願いします。

採用された回答

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

サインインしてコメントする。

その他の回答 (0 件)

製品


リリース

R2024a

Community Treasure Hunt

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

Start Hunting!