はじめに
従来のホワイトバランスアルゴリズムの多くは統計ベースであり、つまり、よく知られたグレーワールド仮定のように、適切にホワイトバランスが取れた画像では特定の仮定が成り立つはずだという事実に依存している。しかし、正解の光源 (ground-truth illuminant) を持つ大規模な画像データセットを学習ベースのフレームワークで活用することで、しばしばより良い結果を得ることができる。このチュートリアルでは、学習ベースのホワイトバランスアルゴリズムを学習させ、その結果の品質を評価する方法を示す。
モデルの学習方法
- 学習用のデータセットをダウンロードする。このチュートリアルでは Gehler-Shi データセットを使用する。568枚すべての学習画像を1つのフォルダに展開する。正解の光源値を含むファイル (real_illum_568..mat) は別途ダウンロードされる。
- 学習には Python スクリプトを使用する。次のパラメータを指定して呼び出す。
python learn_color_balance.py -i <path to the folder with training images> -g <path to real_illum_568..mat> -r 0,378 --num_trees 30 --max_tree_depth 6 --num_augmented 0
これにより、最初の378枚の画像(データセット全体の2/3)でモデルの学習が開始されるはずである。モデルのサイズを特徴あたり30個の回帰木ペアに設定し、木の深さを6以下に制限している。デフォルトでは、得られたモデルは color_balance_model.yml に保存される。
- LearningBasedWB のインスタンスを構築する際に学習済みモデルのパスを渡すことで、そのモデルを使用する。
Ptr<xphoto::LearningBasedWB> wb = xphoto::createLearningBasedWB(modelFilename);
モデルの評価方法
- ベンチマークスクリプトを使って、学習させたモデルと古典的なグレーワールドアルゴリズムを、データセットの残り1/3で比較する。次のパラメータを指定してスクリプトを呼び出す。
python color_balance_benchmark.py -a grayworld,learning_based:color_balance_model.yml -m <full path to folder containing the model> -i <path to the folder with training images> -g <path to real_illum_568..mat> -r 379,567 -d "img"
- 客観的な評価結果は white_balance_eval_result.html に保存され、ホワイトバランスを適用した結果画像は、アルゴリズムの定性的な比較のために img フォルダに保存される。各アルゴリズムは、推定された光源と正解の光源との間の角度誤差によって比較される。