ガンマ補正(ルックアップテーブルの例)

ルックアップテーブルLookup Table【略LUT】)は、ある値の答えが必ず1つの値となる場合、あらかじめ答えを計算しておき、配列に格納しておくことで、毎回の計算をすることなく、 配列(テーブル)を参照することで効率的に処理を行う手法です。

 

画像処理では、コントラスト調整やガンマ補正などによく用いられます。

 

例えば、ガンマ補正の場合、ガンマ補正値をγ、補正前の輝度値をsrc
補正後の輝度値をdstとすると、補正式は

 

 

となりますが、この計算を全ての画素に対して処理を行うのは非常に非効率です。
そこで、例えばLUTという配列に、ガンマ補正の計算結果を以下のように格納しておきます。

 

src 0 1 2 3 ・・・ 252 253 254 255
dst 0 16 23 28 ・・・ 253 254 254 255

 

 

あとは、各画素に対して、

 

dst = LUT[src]

 

という変換をすればよいだけなので、高速に処理を行うことができます。
こうする事でルックアップテーブルを用いない場合は、画素数分のガンマ補正計算をしないといけないのが、ルックアップテールを用いる事で、この例の場合では、たかだか256回の計算だけで済みます。

 

ガンマ補正例

  • ガンマ補正前

 

  • ルックアップテーブル

 

  • ガンマ補正後

 

他にも二値化処理や、輝度値を0~255の範囲内に収めるための if 文の代わりなどにも応用できる場合があるので、処理を高速にしたい場合は、このルックアップテーブルが使えるかどうか?検討してみるのも良いと思います。

 

画像処理アルゴリズムへ戻る

 

ガンマ補正(ルックアップテーブルの例)」への2件のフィードバック

  1. ピンバック: 画像処理フィルタ一覧、比較 | イメージングソリューション

  2. ピンバック: 【OpenCV】ガンマ補正 | イメージングソリューション

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください