Main Content

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

rangefilt

イメージの局所的な範囲

説明

J = rangefilt(I) は、配列 J を返します。各出力ピクセルには、入力イメージ I の対応するピクセルの周りにある 3 × 3 の近傍の範囲値 (最大値 - 最小値) が含まれています。

J = rangefilt(I,nhood) は、指定された近傍 nhood を使用して、イメージ I の局所的な範囲を返します。

すべて折りたたむ

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

I = imread('liftingbody.png'); 

イメージをフィルター処理します。rangefilt は、配列を返します。各出力ピクセルには、入力イメージの対応するピクセルの周りにある 3 × 3 の近傍の範囲値 (最大値 - 最小値) が含まれています。

J = rangefilt(I);

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

imshowpair(I,J,'montage')

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

この例では、テクスチャ フィルター関数を使用してイメージ内のテクスチャの領域を検出する方法を説明します。

イメージをワークスペースに読み取って表示します。図を見ると、背景は滑らかです。つまり、グレー レベルの値の変動がほとんどありません。前景を見ると、コインの表面のでこぼこにテクスチャが見られます。このイメージの前景ピクセルは背景より変動性が高いので、範囲値が高くなります。

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

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

関数 rangefilt でイメージをフィルター処理して、その結果を表示します。範囲フィルターはコインのエッジとでこぼこが見えるようにします。

K = rangefilt(I);
figure
imshow(K)

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

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

I = imread('circuit.tif');
imshow(I);

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

近傍を定義します。この例では、近傍は、入力ピクセルの左右のピクセル値の間に大きな差がある場合に大きな値を返します。フィルター処理は、入力ピクセルの上下のピクセルを考慮しません。したがって、この近傍は垂直エッジを強調します。

nhood = [1 1 1];

この近傍を使用して範囲フィルター処理を実行します。比較のために、既定の 3 行 3 列近傍を使用して範囲フィルター処理を実行します。結果を比較します。

J = rangefilt(I,nhood);
K = rangefilt(I);
figure
imshowpair(J,K,'montage');
title('Range filtering using specified neighborhood (left) and default neighborhood (right)');

Figure contains an axes object. The axes object with title Range filtering using specified neighborhood (left) and default neighborhood (right) contains an object of type image.

指定した近傍を使用した結果は、予想どおり、垂直エッジを強調します。それと比較して、既定のフィルターはエッジの方向性には左右されません。

入力引数

すべて折りたたむ

フィルター処理されるイメージ。任意の次元の数値配列として指定します。

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

近傍。0 と 1 を含む logical 配列または数値配列として指定します。nhood のサイズは各次元で奇数でなければなりません。rangefilt は、floor((size(nhood) + 1)/2) で近傍の中心要素を決定します。

円板などの他の形状の近傍を指定するには、関数 strel を使用して目的の形状の構造化要素オブジェクトを作成します。その後、構造化要素オブジェクトの neighborhood プロパティから近傍を抽出します。

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

出力引数

すべて折りたたむ

フィルター処理されたイメージ。入力イメージ I と同じサイズの数値配列として返されます。

I がデータ型 doublesingle、または uint8 などの符号なしデータ型の場合、J のデータ型は I のデータ型と同じになります。Iint8int16、またはint32 の場合、J のデータ型はそれぞれ uint8uint16、または uint32 になります。

データ型: single | doubl | uint8 | uint16 | uint32

アルゴリズム

rangefilt は、モルフォロジー関数 imdilate および imerode を使用して、指定された近傍での最大値と最小値を決定します。その結果、rangefilt は、これらのモルフォロジー関数のパディング動作を使用します。

拡張機能

バージョン履歴

R2006a より前に導入

すべて展開する