ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

applylut

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

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

構文

A = applylut(BW,LUT)

説明

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

クラス サポート

BW には数値または論理値が使用できますが、実数で 2 次元の非スパースでなければなりません。LUT には数値または論理値が使用できますが、16 または 512 要素をもつ実数ベクトルでなければなりません。LUT のすべての要素が 0 または 1 の場合、A は論理値となります。LUT のすべての要素が 0 ~ 255 の整数の場合、Auint8 となります。これ以外の場合は Adouble となります。

すべて折りたたむ

LUT を作成します。

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

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

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

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

 figure, imshow(BW1);
 figure, imshow(BW2);

アルゴリズム

すべて折りたたむ

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 より前に導入

この情報は役に立ちましたか?