Main Content

ルックアップ テーブル演算

ルックアップ テーブルの作成

バイナリ イメージ演算ではルックアップ テーブルを使用するのが最も簡単な場合があります。ルックアップ テーブルは列ベクトルであり、その中の各要素は近傍ピクセルの可能な組み合わせの 1 つに対応した値を表します。さまざまな演算で使用するルックアップ テーブルを作成するには、関数 makelut を使用します。関数 makelut は 2 行 2 列と 3 行 3 列の近傍に対するルックアップ テーブルを作成します。次の図はこれらのタイプの近傍を示します。x は近傍ピクセルを表し、その中心のピクセルは丸で囲まれています。

The center of a 2-by-2 neighborhood is the top-left pixel, and the center of a 3-by-3 neighborhood is the center pixel.

2 行 2 列の近傍では、近傍ピクセルの可能な組み合わせが 16 あります。したがって、この演算のルックアップ テーブルは 16 要素のベクトルになります。3 行 3 列の近傍では、組み合わせが 512 あり、ルックアップ テーブルは 512 要素のベクトルになります。

メモ

関数 makelut と関数 applylut がサポートするのは 2 行 2 列と 3 行 3 列の近傍のみです。3 行 3 列の近傍より大きなルックアップ テーブルは実用的ではありません。たとえば、4 行 4 列の近傍では 65,536 のエントリができます。

ルックアップ テーブルの使用

作成されたルックアップ テーブルは、関数 applylut を使う演算で使用できます。

次の例では、テキストを含むイメージを変更するためにルックアップ テーブル演算を使用しています。この例では、3 行 3 列の近傍で 3 個以上のピクセルが 1 のとき 1 を返し、それ以外のときは 0 を返す無名関数を作成します。次に関数 makelut が呼び出されて、この情報が最初の引数として渡され、2 番目の引数で 3 行 3 列のルックアップ テーブルが指定されます。

f = @(x) sum(x(:)) >= 3;
lut = makelut(f,3);

lut10 から成る 512 要素のベクトルとして返されます。各要素の値は 512 の可能な組み合わせのそれぞれに対する関数からの出力です。

次に関数 applylut を使用して演算を行います。

BW1 = imread("text.png"); 
BW2 = applylut(BW1,lut);
figure
montage({BW1,BW2})

Image of text before and after applying a lookup table operation.

applylut がイメージ内のピクセルの組み合わせをルックアップ テーブルのエントリにどのようにマッピングするかの詳細については、applylut のリファレンス ページを参照してください。