一、前言
此示例演示如何使用三种不同的照明算法估计场景的照明和执行白平衡。
眼睛非常善于判断不同照明条件下的白色。然而,数码相机如果不进行某种调整,就可以很容易地捕捉到具有强烈色偏的不真实图像。自动白平衡(AWB)算法试图以最少的用户输入来校正环境光,以便生成的图像看起来像我们眼睛看到的。
自动白平衡分两步完成:有几种不同的算法来估计场景光源。
每种算法的性能取决于场景、照明和成像条件。本示例通过将一个特定图像的三种算法与使用 控制图计算的地面真实场景光源进行比较来判断这些算法的质量。
二、读取和预处理原始相机数据
AWB算法通常在经过最少量的预处理后,在图像被压缩并保存到存储卡之前应用于原始图像数据。
将 16 位原始映像读入工作区。是一个图像文件,其中包含校正黑电平并将强度缩放到每像素 16 位后的原始传感器数据。此图像没有相机完成的白平衡以及其他预处理操作,例如去马赛克、去噪、色差补偿、色调调整和伽马校正。
2.1 插值以恢复丢失的颜色信息
数码相机使用叠加在成像传感器上的滤色阵列来模拟色觉,因此每个像素对红色、绿色或蓝色都很敏感。
2.2 用于检测和显示的伽马校正图像
图像包含线性 RGB 值。线性 RGB 值适用于估计场景光源和校正图像的色彩平衡。但是,如果您尝试显示线性RGB图像,由于显示设备的非线性特性,它将显得非常暗淡。显示伽马校正前后的去马赛克图像。
三、使用颜色检查器图表测量真实光源
使用场景中包含的颜色检查器控制图计算实际值光源。该图表由 24 个具有已知光谱反射率的中性和色块组成。
使用颜色检查器函数检测伽玛校正图像中的图表。线性 RGB 图像太暗,无法自动检测图表。确认正确检测到图表。
获取图表四个角的注册点的坐标。从线性 RGB 数据创建新对象。使用注册点的坐标指定图表的位置。测量线性 RGB 数据的地面真实光源。
四、创建颜色检查器图表的蒙版
测试 AWB 算法时,请通过屏蔽图表来防止算法不公平地利用图表。使用绘制多边形函数在图表上创建多边形 ROI。将多边形的顶点指定为注册点。
将多边形 ROI 转换为二进制掩码。反转蒙版。图表中的像素将从蒙版中排除,场景其余部分的像素包含在蒙版中。要确认蒙版的准确性,请在图像上显示蒙版。蒙版中包含的像素具有蓝色色调。
五、角度误差
您可以将光源视为 3-D RGB 色彩空间中的矢量。估计光源的大小与其方向无关紧要,因为光源的方向是用于白平衡图像的方向。
要评估估计光源的质量,请计算估计光源与实际值之间的角度误差。角度误差是由两个向量形成的角度(以度为单位)。角度误差越小,估计越好。
为了更好地理解角度误差的概念,请考虑以下任意光源的可视化和使用 ColorChecker 控制图测量的地面实况。帮助程序函数在 3-D RGB 颜色空间中绘制光源的单位矢量,并在示例末尾定义。
六、白色斑块视网膜
用于光源估计的白色斑块 Retinex 算法假定场景包含明亮的消色差斑块。此色块反射每个色带可能的最大光线,即场景光源的颜色。使用“亮白”函数通过白斑 Retinex 算法估计照明。
6.1 包括所有场景像素
使用场景中的所有像素估计光源。使用名称-值对参数从场景中排除颜色检查器图表。
计算使用白色斑块 Retinex 估计的光源的角度误差。使用色度调整功能对图像进行白平衡。指定估计光源,并指示颜色值位于线性 RGB 颜色空间中。
显示伽玛校正的白平衡图像。
6.2 排除最亮像素
当像素曝光过度时,白色斑块 Retinex 算法表现不佳。若要提高算法的性能,请排除最亮像素的前 1%。计算估计光源的角度误差。误差小于使用所有像素估计光源时。使用估计光源在线性 RGB 色彩空间中对图像进行白平衡。使用新光源显示伽玛校正的白平衡图像。
七、灰色世界
用于光源估计的灰色世界算法假定世界的平均颜色为灰色或消色差。因此,它将场景光源计算为图像中的平均RGB值。使用照明灰度函数通过灰色世界算法估计照明。
7.1 包括所有场景像素
首先,使用图像的所有像素(不包括与颜色检查器控制图对应的像素)估计场景光源。该函数提供了一个参数,用于指定要排除的底部和顶部值(按亮度排序)的百分位数。在这里,将百分位数指定为 0。
计算估计光源与地面实况光源之间的角度误差。使用估计光源在线性 RGB 色彩空间中对图像进行白平衡。显示伽玛校正的白平衡图像。
7.3 排除最亮和最暗的像素
当像素曝光不足或曝光过度时,灰色世界算法表现不佳。若要提高算法的性能,请排除最暗和最亮像素的前 1%。计算估计光源的角度误差。误差小于使用所有像素估计光源时。使用估计光源在线性 RGB 色彩空间中对图像进行白平衡。使用新光源显示伽玛校正的白平衡图像。
八、程氏主成分分析(PCA)方法
Cheng的光源估计方法从空间域方法中汲取灵感,该方法假设图像的梯度是消色差的。他们表明,可以通过打乱图像块人为地引入强渐变来改善灰边,并得出结论,最强的渐变遵循光源的方向。他们的方法包括根据像素沿平均图像颜色方向的投影规范对像素进行排序,并保留底部和顶部百分位数。这两组对应于图像中的强渐变。最后,他们对保留的像素执行主成分分析(PCA),并将第一个分量作为估计光源返回。
8.1 包括默认的底部和顶部 3.5% 的像素
首先,使用 Cheng PCA 方法的默认百分比值估计光源,不包括与颜色检查器控制图对应的光源。计算估计光源与地面实况光源之间的角度误差。使用估计光源在线性 RGB 色彩空间中对图像进行白平衡。显示伽玛校正的白平衡图像。
8.2 包括底部和顶部 5% 的像素
现在,使用沿平均颜色方向的底部和顶部 5% 像素估计场景光源。函数的第二个参数指定要排除的底部和顶部值(按亮度排序)的百分位数.
计算估计光源与地面实况光源之间的角度误差。该误差小于使用默认百分比估算光源时。使用估计光源在线性 RGB 色彩空间中对图像进行白平衡。显示伽玛校正的白平衡图像。
九、查找最佳参数
要找到用于每种算法的最佳参数,您可以扫描一个范围并计算每种算法的角度误差。三种算法的参数具有不同的含义,但这些参数的相似范围使得以编程方式搜索每种算法的最佳参数变得容易。
使用热图功能显示角度误差的热图。深蓝色表示角度误差低,而黄色表示角度误差高。最优参数的角度误差最小。
找到每种算法的最佳参数。显示 RGB 色彩空间中每个最佳光源的角度误差。
使用最佳光源计算每种算法的最佳白平衡图像。在蒙太奇中为每个算法显示最佳白平衡图像。