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

Figure contains an axes. The axes with title Original Image (Left) and Median Filtered Image (Right) contains an object of type image.

入力引数

すべて折りたたむ

フィルター処理されるイメージ。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 より前に導入