OpenCV 4.11.0
开源计算机视觉库
加载中…
搜索中…
无匹配项
基于学习的白平衡算法训练

简介

许多传统的白平衡算法都是基于统计的,即它们依赖于某些假设在正确白平衡的图像中成立,例如众所周知的灰世界假设。然而,通过在基于学习的框架中利用具有地面实况光照的大型图像数据集,通常可以获得更好的结果。本教程演示如何训练基于学习的白平衡算法并评估结果的质量。

如何训练模型

  1. 下载用于训练的数据集。在本教程中,我们将使用Gehler-Shi 数据集。将所有 568 张训练图像解压到一个文件夹中。包含地面实况光照值的文件 (real_illum_568..mat) 单独下载。
  2. 我们将使用Python 脚本进行训练。使用以下参数调用它:
    python learn_color_balance.py -i <训练图像文件夹路径> -g <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
  3. 在构造 LearningBasedWB 实例时,通过传递其路径来使用训练好的模型。
    Ptr<xphoto::LearningBasedWB> wb = xphoto::createLearningBasedWB(modelFilename);

如何评估模型

  1. 我们将使用基准测试脚本将我们训练的模型与经典的灰世界算法在数据集剩余的 1/3 上进行比较。使用以下参数调用脚本:
    python color_balance_benchmark.py -a grayworld,learning_based:color_balance_model.yml -m <包含模型的文件夹的完整路径> -i <训练图像文件夹路径> -g <real_illum_568..mat 文件路径> -r 379,567 -d "img"
  2. 客观评估结果存储在 white_balance_eval_result.html 中,生成的具有白平衡的图像存储在 img 文件夹中,用于算法的定性比较。不同算法的比较是根据估计光照和地面实况光照之间的角度误差进行的。