メインコンテンツ

bwlookup

ルックアップ テーブルを使用した非線形フィルター処理

説明

A = bwlookup(BW,lut) は、バイナリ イメージ BW に対し 2 行 2 列または 3 行 3 列の非線形近傍フィルタリング演算を実行します。近傍処理は、ルックアップ テーブル lut 内の値にアクセスするために使用する整数インデックス値を決定します。取得された lut 値は、出力イメージ A 内のターゲット位置にあるピクセルの値となります。

すべて折りたたむ

BW の 2 行 2 列の近傍で 4 つのピクセルすべてが 1 に設定されているときにのみ、入力イメージ内のターゲットとなるピクセル位置に 1 が配置されるようなフィルタリング演算により、ルックアップ テーブル lut を作成します。

lutfun = @(x)(sum(x(:))==4);
lut = makelut(lutfun,2);

バイナリ イメージを読み込みます。

BW1 = imread("text.png");

16 要素のベクトル lut を使用して 2 行 2 列の近傍処理を実行します。

BW2 = bwlookup(BW1,lut);

元のイメージと収縮後のイメージを表示します。

h1 = subplot(1,2,1); imshow(BW1); title("Original Image")
h2 = subplot(1,2,2); imshow(BW2); title("Eroded Image")

Figure contains 2 axes objects. Hidden axes object 1 with title Original Image contains an object of type image. Hidden axes object 2 with title Eroded Image contains an object of type image.

ズームインしてテキストの収縮効果を確認します。

set(h1,Ylim=[1 64],Xlim=[1 64]);
set(h2,Ylim=[1 64],Xlim=[1 64]);

Figure contains 2 axes objects. Hidden axes object 1 with title Original Image contains an object of type image. Hidden axes object 2 with title Eroded Image contains an object of type image.

入力引数

すべて折りたたむ

非線形近傍フィルタリング演算で変換するバイナリ イメージ。2 次元 logical 行列または 2 次元数値行列として指定します。数値入力の場合、非ゼロのピクセルは 1 (true) であると見なされます。

出力ピクセル値のルックアップ テーブル。16 要素または 512 要素のベクトルとして指定します。lut のサイズにより、2 つの近傍処理のうちのどちらを実行するかが決まります。ルックアップ テーブルは関数 makelut を使用して作成できます。

  • lut に 16 個のデータ要素が含まれていれば、近傍行列は 2 行 2 列です。

  • lut に 512 個のデータ要素が含まれていれば、近傍行列は 3 行 3 列です。

出力引数

すべて折りたたむ

出力イメージ。入力イメージ BW と同じサイズの logical 行列または数値行列として返されます。ピクセル値はルックアップ テーブル lut の内容によって決定され、lut と同じデータ型になります。

アルゴリズム

すべて折りたたむ

関数 bwlookup は、以下のステップを実行し、処理されたイメージ A に含まれる各ピクセルの値を判定します。

  • A 内のターゲット ピクセルの座標に基づいて、入力イメージ BW 内のピクセル近傍の位置を特定します。近傍が BW のエッジを超えて広がっている場合、この関数は、イメージ BW の境界ピクセルをゼロ パディングします。

  • 近傍のバイナリ ピクセル パターンに基づいて、インデックス idx を計算します。

  • A 内のターゲット ピクセルを、ルックアップ テーブルのインデックス idx の位置にある値 (つまり、lut(idx) の値) として設定します。

このアルゴリズムの各ステップを示す例については、サンプル ピクセルのルックアップ値を参照してください。

拡張機能

すべて展開する

バージョン履歴

R2012b で導入

すべて展開する

参考