ドキュメンテーション

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

medfilt2

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

構文

  • B = medfilt2(A)
  • B = medfilt2(A, [m n])
  • B = medfilt2(___,padopt)
  • gpuarrayB = medfilt2(gpuarrayA,___)

説明

B = medfilt2(A) は、行列 A に 2 次元のメディアン フィルター処理を適用します。各出力ピクセルには、入力イメージ内の対応するピクセル周辺にある 3 行 3 列近傍の中央値が含まれています。medfilt2 ではイメージのエッジが 0 でパディングされるため、エッジから近傍の幅の 2 分の 1 ([m n]/2) の範囲にある点の中央値は歪んで見える可能性があります。

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

B = medfilt2(___,padopt) は、medfilt2 による行列の境界のパディング方法を制御します。

gpuarrayB = medfilt2(gpuarrayA,___) は、GPU でメディアン フィルター処理を実行します。入力イメージと出力イメージは gpuArray です。gpuArray を使用する場合、medfilt2 では辺の長さが 3 ~ 15 の奇数となる正方形の近傍のみがサポートされます。この構文では Parallel Computing Toolbox™ が必要です。

コード生成 サポート: あり。

MATLAB Function ブロック サポート: あり。

すべて折りたたむ

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

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'));

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

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

入力引数

すべて折りたたむ

入力行列。2 次元、実数、非スパースの数値配列または論理配列として指定します。

例: I = imread('eight.tif’); J = medfilt2(I);

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

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

例: J = medfilt2(gpuarrayI,[5 5]);

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

GPU 実行時の入力行列。gpuArray として指定します。

例: gpuarrayI = gpuArray(imread('your_image_file.tif')); J = medfilt2(gpuarrayI);

パディング オプション。以下のいずれかの文字列として指定します。

説明
'zeros'0 でパディングします。これは既定の設定です。
'symmetric'境界で対称的に拡張します。
'indexed'A のクラスが double の場合は 1 で、その他の場合は 0 でパディングします。

例: K = medfilt2(J,'symmetric');

データ型: char

出力引数

すべて折りたたむ

出力行列。入力イメージ A と同じクラスの 2 次元配列として返されます。

GPU 実行時の出力イメージ。gpuArray として返されます。

詳細

すべて折りたたむ

コード生成

この関数では MATLAB® Coder™ を使用した C コードの生成がサポートされています。汎用の MATLAB Host Computer ターゲット プラットフォームを選択した場合、プリコンパイルされたプラットフォーム固有の共有ライブラリを使用するコードが、この関数によって生成されます。共有ライブラリを使用するとパフォーマンスの最適化は維持されますが、コードを生成できるターゲット プラットフォームが限定されます。詳細は、「Image Processing Toolbox のコード生成について」を参照してください。

コードを生成する際、引数 padopt にはコンパイル時の定数を指定しなければなりません。

MATLAB Function ブロック

この関数は Simulink の MATLAB Function ブロックで使用できます。

入力引数 [m n] はコンパイル時の定数でなければなりません。

ヒント

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

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

    1 5
    4 8

アルゴリズム

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

参照

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

R2006a より前に導入

この情報は役に立ちましたか?