Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

medfilt2

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

説明

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

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

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

すべて折りたたむ

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

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

Figure contains an axes object. The axes object contains an object of type image.

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

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

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

K = medfilt2(J);

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

imshowpair(J,K,'montage')

Figure contains an axes object. The axes object contains an object of type image.

入力引数

すべて折りたたむ

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

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

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

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

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

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

データ型: char | string

出力引数

すべて折りたたむ

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

ヒント

  • メディアン フィルター処理は、"ごま塩" ノイズを低減させるためにイメージ処理の中でよく使われる非線形フィルター処理です。メディアン フィルターは、ノイズを低減し、かつエッジを保存することを目的とするとき、畳み込みよりも、より効果的です。性能に関する詳細については、「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 より前に導入

すべて展開する