ルックアップ テーブル演算
ルックアップ テーブルの作成
バイナリ イメージ演算ではルックアップ テーブルを使用するのが最も簡単な場合があります。ルックアップ テーブルは列ベクトルであり、その中の各要素は近傍ピクセルの可能な組み合わせの 1 つに対応した値を表します。さまざまな演算で使用するルックアップ テーブルを作成するには、関数 makelut
を使用します。関数 makelut
は 2 行 2 列と 3 行 3 列の近傍に対するルックアップ テーブルを作成します。次の図はこれらのタイプの近傍を示します。x は近傍ピクセルを表し、その中心のピクセルは丸で囲まれています。
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);
lut
は 1
と 0
から成る 512 要素のベクトルとして返されます。各要素の値は 512 の可能な組み合わせのそれぞれに対する関数からの出力です。
次に関数 applylut
を使用して演算を行います。
BW1 = imread("text.png");
BW2 = applylut(BW1,lut);
figure
montage({BW1,BW2})
applylut
がイメージ内のピクセルの組み合わせをルックアップ テーブルのエントリにどのようにマッピングするかの詳細については、applylut
のリファレンス ページを参照してください。