Color Constancy のアルゴリズム (第2回)

さて、前回に引き続きましてColor Constancyのアルゴリズムです。前回の記事はこちらからどうぞ。

Color Constancy のアルゴリズム (第1回)

今回は後半の3つのアルゴリズム、

  • Rahmanのアルゴリズム
  • 準同型フィルタを用いたアルゴリズム
  • Faugerasのアルゴリズム

を紹介したいと思います。それでは、レッツスタート!


Rahmanのアルゴリズム

RahmanのアルゴリズムはMooreのアルゴリズムとほぼ同等の仮定に基づいています。Mooreのアルゴリズムでは光源色が一定と考えられる範囲がガウシアンフィルタのσによってきめられていましたが、Rahmanのアルゴリズムは異なるσでMooreのアルゴリズムを実行し、その結果を重みつき平均することでより良い結果を作っています。

入力画像01
input01

出力画像01
rahman01

入力画像02
input02

出力画像02
rahman02

おそらくここで紹介している6つのアルゴリズムの中ではこれが一番良い結果だと思います。


準同型フィルタを用いたアルゴリズム

準同型というとなんか大学の代数の時間でやったよく分からないやつだなぁ、と思うわけですが、ここで言っているのは信号の和にフーリエ変換をかけたものは、元の信号それぞれにフーリエ変換をかけたものの和になっているというだけの意味です。このアルゴリズムはかなり古典的で、画像信号の低周波数成分を弱めて、高周波数成分を強めるというもので、あまり結果は良くないですが、アルゴリズムは分かりやすいです。

出力画像01
homo01

出力画像02
homo02


Faugerasのアルゴリズム

Faugerasのアルゴリズムは準同型フィルタを用いたアルゴリズムの改良版です。このアルゴリズムはまず画像を人間の視覚系に近い3つの成分、すなわち「明るさ」、「赤緑」、「青黄」で書き直します。例えばLab色空間とかLuv色空間がそうですね。この空間で色を表す「赤緑」と「青黄」の成分にだけ準同型フィルタのアルゴリズムを適用します。このときに低周波と高周波の減衰・強調の割合も微妙に変えています。

faurages01

faurages02


ソースコード

アルゴリズムは以上です。いかがだったでしょうか?といっても特にアルゴリズムの詳細は説明していませんので、結果を見て、違いを感じとってもらえればと思います。あまり、アルゴリズムの中身を紹介してしまうと本がある意味がなくなってしまうので、悪しからず。前回同様、ソースコードは僕のGitHubで公開しています。

Color Constancy – GitHub by tatsy