Main Content

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

applylut

ルックアップ テーブルを使用したバイナリ イメージの近傍演算

applylut は推奨されません。代わりに bwlookup を使用してください。

説明

A = applylut(BW,lut) は、ルックアップ テーブル lut を使用して、バイナリ イメージ BW で 2 行 2 列または 3 行 3 列の近傍演算を実行します。ルックアップ テーブルは、可能なすべての 2 行 2 列または 3 行 3 列近傍の出力値で構成されています。

すべて折りたたむ

ルックアップ テーブルを作成します。

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

イメージをワークスペースに読み取って、ルックアップ テーブルをイメージに適用します。出力ピクセルは、4 つの入力ピクセルの近傍ピクセルすべてが on となる場合にのみ、on となります。

 BW1 = imread("text.png");
 BW2 = applylut(BW1,lut);

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

imshow(BW1)

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

imshow(BW2)

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

入力引数

すべて折りたたむ

入力イメージ。2 次元バイナリ イメージとして指定します。数値入力の場合、非ゼロのピクセルは 1 (true) であると見なされます。

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

出力ピクセル値のルックアップ テーブル。makelut によって返される 16 要素または 512 要素のベクトルとして指定します。

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

出力引数

すべて折りたたむ

出力イメージ。ピクセル値の分布がルックアップ テーブル lut の内容によって決まるグレースケール イメージまたはバイナリ イメージとして返されます。出力イメージ J は入力イメージ I と同じサイズです。

  • lut のすべての要素が 0 または 1 の場合、A のデータ型は logical となります。

  • lut のすべての要素が 0 ~ 255 の整数の場合、A のデータ型は uint8 となります。

  • これ以外の場合、A のデータ型は double となります。

データ型: double | uint8 | logical

アルゴリズム

すべて折りたたむ

applylut は、インデックスの配列を lut に生成してそのインデックスを lut の実際値に置き換えることにより、バイナリ イメージに対して近傍演算を実行します。使用する特定のアルゴリズムは、2 行 2 列と 3 行 3 列のどちらの近傍を使用するかによって決まります。

2 行 2 列近傍

2 行 2 列近傍の場合、length(lut) は 16 となります。各近傍には 4 つのピクセルがあり、また、各ピクセルには 2 つの取りうる状態があります。よって、順列の合計は 24 = 16 となります。

インデックス行列を生成するため、applylut は、バイナリ イメージ BW とこの行列を畳み込みます。

8     2
4     1

得られる畳み込みには、[0, 15] の範囲の整数値が含まれています。applylut は、BW と同じサイズの畳み込みの中心部分を使用し、各値に 1 を追加して範囲を [1, 16] にシフトします。その後、関数は、インデックス行列のセル内の値をインデックスが示す lut 内の値に置き換えることで A を構築します。

3 行 3 列近傍

3 行 3 列近傍の場合、length(lut) は 512 となります。各近傍には 9 つのピクセルがあり、また、各ピクセルには 2 つの取りうる状態があります。よって、順列の合計は 29 = 512 となります。

インデックス行列を生成するため、applylut は、バイナリ イメージ BW とこの行列を畳み込みます。

256    32     4
128    16     2
 64     8     1

得られる畳み込みには、[0, 511] の範囲の整数値が含まれています。applylut は、BW と同じサイズの畳み込みの中心部分を使用し、各値に 1 を追加して範囲を [1, 512] にシフトします。そして、インデックス行列のセル内の値をインデックスが示す lut 内の値に置き換えることで A を構築します。

バージョン履歴

R2006a より前に導入

すべて折りたたむ

R2012b: applylut は非推奨

R2012b 以降、ルックアップ テーブルを使用してバイナリ イメージで近傍演算を実行するには、bwlookup を使用します。bwlookup の場合、返されるイメージのデータ型はルックアップ テーブルのデータ型と同じです。bwlookup はコード生成をサポートしています。現時点では applylut を削除する予定はありません。

コードを更新するには、applylut のインスタンスを bwlookup に置き換えます。入力引数を変更する必要はありません。

参考