ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

medfilt2

2 次元のメディアン フィルター処理

説明

J = medfilt2(I) は、イメージ I に 2 次元のメディアン フィルター処理を適用します。各出力ピクセルは、入力イメージの対応するピクセル周辺にある 3 行 3 列の近傍の中央値を含んでいます。

オプションで、正規化された相互相関の計算を GPU を使用して実行できます (Parallel Computing Toolbox™ が必要)。詳細は、GPU での画像処理を参照

J = medfilt2(I, [m n]) は、メディアン フィルター処理を実行します。ここで、各出力ピクセルは、入力イメージ内の対応するピクセル周辺にある mn 列近傍の中央値を含んでいます。

J = medfilt2(___,padopt) は、medfilt2 によるイメージ境界のパディング方法を制御します。

GPU では、この構文はサポートされていません。

すべて折りたたむ

イメージをワークスペースに読み取って表示します。

I = imread('eight.tif');
figure, imshow(I)

ごま塩ノイズを追加します。

J = imnoise(I,'salt & pepper',0.02);

メディアン フィルターを使用して、ノイズを除去します。

K = medfilt2(J);

結果を並べて表示します。

imshowpair(J,K,'montage')

イメージを gpuArray に読み取ります。

I = gpuArray(imread('eight.tif'));

イメージにノイズを追加し、メディアン フィルター処理を実行して結果を表示します。

J = imnoise(I,'salt & pepper',0.02);
K = medfilt2(J);
figure, montage({J,K})

入力引数

すべて折りたたむ

入力イメージ。2 次元グレースケールまたはバイナリ イメージとして指定します。

GPU を使用してメディアン フィルター処理を実行するには、I を 2 次元のグレースケール イメージまたはバイナリ イメージを含む gpuArray として指定します。

データ型: single | double | int8 | int16 | int32 | uint8 | uint16 | uint32 | logical

近傍のサイズ。実数の正の整数の 2 要素ベクトルとして指定します。

GPU を使用してメディアン フィルター処理を実行する場合、近傍は辺の長さが 3 ~ 15 の奇数となる正方形でなければなりません。

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

パディング オプション。以下のいずれかの値に指定します。

説明
'zeros' (既定の設定)イメージを 0 でパディングします。
'symmetric'境界でイメージを対称的に拡張します。
'indexed'I のクラスが double の場合は 1 で、その他の場合は 0 でイメージをパディングします。

メモ

GPU では padopt 引数はサポートされていません。

データ型: char | string

出力引数

すべて折りたたむ

出力イメージ。入力イメージ I と同じクラスの数値行列として返されます。

GPU を使用してメディアン フィルター処理を実行する場合、J は数値行列を含む gpuArray として返されます。

ヒント

  • メディアン フィルター処理は、"ごま塩" ノイズを低減させるために画像処理の中でよく使われる非線形フィルター処理です。メディアン フィルターは、ノイズを低減し、かつエッジを保存することを目的とするとき、畳み込みよりも、より効果的です。性能に関する詳細は、「ordfilt2」を参照してください。

  • 入力イメージ I が整数クラスの場合、出力値はすべて整数として返されます。近傍内のピクセル数 (m*n) が偶数の場合、中央値が整数にならない可能性があります。この場合、小数点以下が切り捨てられます。論理入力も同様に処理されます。たとえば、以下の uint8 配列内の 2 行 2 列の近傍における真の中央値は 4.5 ですが、medfilt2 は小数部を破棄し、4 を返します。

    1 5
    4 8
  • padopt'zeros' または 'indexed' として指定する場合、パディングによってイメージ境界に近い中央値が歪む場合があります。エッジから近傍の幅の 2 分の 1 ([m n]/2) の範囲にあるピクセルは歪んで見える可能性があります。

アルゴリズム

CPU では、medfilt2ordfilt2 を使用してフィルター処理を実行します。

参照

[1] Lim, Jae S., Two-Dimensional Signal and Image Processing, Englewood Cliffs, NJ, Prentice Hall, 1990, pp. 469-476.

拡張機能

R2006a より前に導入