Main Content

nlfilter

一般的なスライディング近傍演算

説明

B = nlfilter(A,[m n],fun) は関数 fun を、グレースケール イメージ Amn 列の各スライディング ブロックに適用します。

B = nlfilter(A,'indexed',___) は、A をインデックス付きイメージとして処理します。A のクラスが uint8uint16 または logical の場合は 0 をパディングし、その他の場合は 1 をパディングします。

メモ

nlfilter で大きなイメージを処理するには、時間がかかることがあります。関数 colfilt を使用すると、同じ演算をより高速に行うことができる場合があります。

すべて折りたたむ

この例では、nlfilter を使用してメディアン フィルターをイメージに適用する方法を説明します。この例では、3 行 3 列の近傍で medfilt2 を呼び出したのと同じ結果が得られます。

イメージをワークスペースに読み取ります。

A = imread('cameraman.tif'); 

イメージを double に変換します。

A = im2double(A);

イメージに適用する関数 (メディアン フィルター) を作成します。

fun = @(x) median(x(:));

フィルターをイメージに適用します。

B = nlfilter(A,[3 3],fun); 

元のイメージとフィルター処理されたイメージを並べて表示します。

montage({A,B})
title('Original Image (Left) and Median Filtered Image (Right)')

入力引数

すべて折りたたむ

フィルター処理されるイメージ。fun によってサポートされる任意のクラスの数値配列として指定します。A がグレースケールの場合、任意の数値型または logical にすることができます。A にインデックスが付いている場合は、logicaluint8uint16single または double を使用できます。

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

ブロック サイズ。正の整数の 2 要素ベクトルとして指定します。m はブロックの行数で、n は列数です。

例: B = nlfilter(A,[3 3],fun);

データ型: single | double | logical

関数ハンドル。ハンドルとして指定されます。この関数は、mn 列の行列を入力として受け入れ、スカラーの結果を返さなければなりません。

c = fun(x)

c は、mn 列のブロック x の中央ピクセルの出力値です。nlfilter は、A のピクセルごとに fun を呼び出します。nlfilter は必要に応じて、エッジにある mn 列のブロックをゼロ パディングします。

データ型: function_handle

出力引数

すべて折りたたむ

フィルター処理されたイメージ。数値配列として返されます。B のクラスは fun からの出力のクラスに依存します。

バージョン履歴

R2006a より前に導入