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)

imshow(BW2)

入力引数

すべて折りたたむ

入力イメージ。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 に置き換えます。入力引数を変更する必要はありません。

参考