Color Constancy のアルゴリズム (第2回)
さて、前回に引き続きましてColor Constancyのアルゴリズムです。前回の記事はこちらからどうぞ。
今回は後半の3つのアルゴリズム、
- Rahmanのアルゴリズム
- 準同型フィルタを用いたアルゴリズム
- Faugerasのアルゴリズム
を紹介したいと思います。それでは、レッツスタート!
Rahmanのアルゴリズム
RahmanのアルゴリズムはMooreのアルゴリズムとほぼ同等の仮定に基づいています。Mooreのアルゴリズムでは光源色が一定と考えられる範囲がガウシアンフィルタのσによってきめられていましたが、Rahmanのアルゴリズムは異なるσでMooreのアルゴリズムを実行し、その結果を重みつき平均することでより良い結果を作っています。
おそらくここで紹介している6つのアルゴリズムの中ではこれが一番良い結果だと思います。
準同型フィルタを用いたアルゴリズム
準同型というとなんか大学の代数の時間でやったよく分からないやつだなぁ、と思うわけですが、ここで言っているのは信号の和にフーリエ変換をかけたものは、元の信号それぞれにフーリエ変換をかけたものの和になっているというだけの意味です。このアルゴリズムはかなり古典的で、画像信号の低周波数成分を弱めて、高周波数成分を強めるというもので、あまり結果は良くないですが、アルゴリズムは分かりやすいです。
Faugerasのアルゴリズム
Faugerasのアルゴリズムは準同型フィルタを用いたアルゴリズムの改良版です。このアルゴリズムはまず画像を人間の視覚系に近い3つの成分、すなわち「明るさ」、「赤緑」、「青黄」で書き直します。例えばLab色空間とかLuv色空間がそうですね。この空間で色を表す「赤緑」と「青黄」の成分にだけ準同型フィルタのアルゴリズムを適用します。このときに低周波と高周波の減衰・強調の割合も微妙に変えています。
ソースコード
アルゴリズムは以上です。いかがだったでしょうか?といっても特にアルゴリズムの詳細は説明していませんので、結果を見て、違いを感じとってもらえればと思います。あまり、アルゴリズムの中身を紹介してしまうと本がある意味がなくなってしまうので、悪しからず。前回同様、ソースコードは僕のGitHubで公開しています。