0%

Camera-Raw域AWB自动白平衡

颜色恒常理论

人类视觉特性

人眼中存在一种感应亮度的杆细胞(rod)和三种感应颜色的视锥体细胞(cone)。锥体细集中分布在视网膜(retina)上的中央窝(fovea centralis)区域。中央窝之外全部是杆细胞,总数约有1200万,三种视锥体细胞用L,M,S(或R,G,B)符号加以区分,总数大约有600万~700万,根据实验结果分析,L占64%,M占32%,S占2%。

这三种视锥细胞分别感应不同波长范围(频段)的光刺激,响应灵敏度也不同。从下图可以看到,感应蓝光的视锥细胞灵敏度最低(细胞数量最少)。

如果只需要考虑响应的波段问题,而不需要研究灵敏度差异,则经常使用用归一化响应。

颜色恒常理论

人类视觉系统(Human Visual System, HVS)能够在各种不同的光照条件下识别物体的颜色,这种自动排除光源影响的能力称为颜色恒常(color constancy)。

根据德国生理学家Johannes von Kries 于1902年提出的猜想,颜色恒常现象总结下来有几个要点:

  • 视锥细胞会根据周围环境光的情况独立地调整颜色通道的敏感度。举例来说,如果环境光中的长波段(红色)功率较大,则感应长波的L视锥细胞的敏感度会下降,但M和S视锥细胞的敏感度则不会随L细胞同步变化
  • 在任何光照下,当三种视锥细胞的响应均达到各自的最大值时,激发的知觉都是白色,此时三种视锥细胞的响应组合(Lw,Mw,Sw)称为白场响应
  • 如果光照环境不同,白场响应值也不同,即(Lw, Mw, Sw)α ≠(Lw, Mw, Sw)β
  • 人类知觉到的颜色取决于三刺激值相对于白场响应的比值,并非完全取决于三刺激值本身。在不同光照下,如果两个颜色在视锥细胞上激发的比值(三刺激值/白场响应)相同,则产生的颜色知觉也(基本)相同。这就为颜色恒常提供了可能
  • 要点4所描述的比值在现实世界中的对应物(counterpart)其实就是物体表面对光线的反射率(surface reflectance)。如果一个物体表面对光线的反射特性不随光照条件而变化(除了变色龙外大多数物体都满足),那么该表面的光亮度与环境光亮度的比值也恒等,数值上等于视锥细胞的三刺激值与白场响应的比值,因此该表面在各种光照下激发的颜色知觉都(基本)相同。这就是颜色恒常的原理

人类视觉对颜色的分辨能力是存在一定的精度限制的,当两个颜色在色度图(chromaticity diagram)上的距离小于颜色宽容量时,人类将无法区分这两个颜色的差异。人类对低色温的颜色表现出更小的颜色宽容量,对高色温的颜色宽容量更大,这个现象对白平衡的精度做出了一定的约束。

在研究白平衡问题时,有时会把颜色变换到HCL空间,其中H代表色调Hue,C代表色温,L代表亮度Luma。在CIE-1931 xyY 色度图上,中间向下凹的曲线叫普朗克曲线,描述黑体作为光源在各种温度(0, +∞)下呈现的颜色,色温表征光源的冷暖倾向(偏蓝或偏红)。在现实生活中很多人造光源的光谱与黑体光谱差异很大,光源颜色常落在普朗克曲线之外。色度图上与普朗克曲线相交的直线称为相关色温线(CCT),用于定义非黑体光源的等效色温,同时也表征光源的色调倾向(偏绿或偏紫)。

白平衡的作用就是模拟人类的色彩恒常能力,在图像中去除光源引起的偏色。

CIE1931色域

上图是由CIE国际照明委员于1931年发布的,它们是在20世纪20年代后期由William David Wright 和John Guild 将实验结果合并到CIE RGB色彩空间的规范中,从中导出CIE XYZ色彩空间。肉眼能够看到的色彩空间就是这些了,但是显示器并没有这么大的空间,和人眼相比,显示器能够显示的色域更小。

sRGB

sRGB是最早期的色域标准之一,至今仍有非常重要的影响力。它是由当时的微软(software)与惠普(Hewlett-Packard)共同定制于1996年,并且得到了来自业界的W3C、Exif、Intel、Pantone、Corel以及其它许多业界厂商的支持。

上图的三角形就是sRGB的范围,相当于CIE 1931的一个子集,覆盖面比较小,小s的意思是standard,标准。不过由于sRGB标准定制较早,很多技术和概念都不成熟,

sRGB色彩空间大概只有当时CIE色域标准的30%,色彩还原度不高,而且观察色域范围你就会发现一个很严重的问题,sRGB对于绿色部分色域覆盖非常少。这个就导致一个很严重的问题,那就是对花草森林等场景的色彩表现力不足。也正是因为这样,它对显示器的要求不高,所以现在市面上大多数显示器都能达到sRGB100%。

对于需要在sRGB标准显示器上显示的图像,白平衡算法需要将拍摄场景色温下的白色映射为D65色温下的白色。这就相当于实现了人类视觉的颜色恒常特性。白平衡的第一步也是最重要的一步是对拍摄场景进行光源颜色估计(light source color estimation),估计的结果可以用于下一步的色适应(chromatic adaptation)。色适应的作用是去除图像的偏色(color cast),使原始场景中的白色物体在D65色温下仍然是白色。

Adobe RGB

Adobe RGB就是由大名鼎鼎的Adobe公司所发布的:

dobe RGB色域可以说是sRGB色域的升级版,因为它主要解决了印刷与电脑显示器显现颜色不同的问题,并且提高了在青绿色系上的显示,也正因为如此,它占据CIE色域达50%之多。目前也只有部分高端显示器能够做到99%的Adobe RGB色域,基本都是用在设计方面。

DCI-P3

DCI-P3是一款更加注重于视觉冲击,而不是色彩全面性的色域。并且相对其他色彩标准,它拥有更广阔的红色/绿色系色彩范围。

白平衡算法

灰度世界模型(Gray World model, GW)

该模型基于灰度世界假设,该假设认为:对于一幅有着大量色彩变化的图像,R,G, B三个分量的统计平均值趋于同一灰度值。 从物理意义上讲,灰度世界模型假设自然界景物对于光线的反射系数的均值在总体上是个定值,这个定值近似地为“灰色”。 依据灰度世界模型实现的白平衡算法认为图像中R,G,B分量的平均值如果偏离1:1:1则一定是因为环境光线变化引起的,算法会据此对R,G,B增益进行反馈调节以补偿环境光的变化,使三个分量的平均值重新回到1:1:1。

在实际应用中这个模型的基本假设经常是不成立的,所以实用的灰度世界模型都会对基本假设做出各种修正以适应假设失效的场景。一种修正的方法是限定RGB分量的取值范围,抛弃偏离灰色太远的像素。

举例来说,像素值(R,G,B)只有满足以下条件才能参与白平衡估计:

  • |B-G| < a
  • |R-G| < b
  • |B-G|+|R-G| < c

其中a, b, c 为参数,可以根据标定得到。使用a,b,c可以围成下图所示的画线区域。

还有一种方法是抛弃静态的背景像素,只统计动态的前景像素。这个方法可以过滤大范围单色背景对算法的干扰,但是对于面积较大的单色运动物体则无能为力。

白点统计模型

该模型假设正常的画面中总会存在一些白色(灰色)区域,这些区域在不同光照条件下会表现出不同的(R/G,B/G)比值。在实验室环境下可以事先标定出参考白色在不同色温下的(R/G,B/G)比值,实际工作时,ISP硬件可以将符合白色比值关系的像素区域筛选出来生成统计信息,得到所有白色的平均比值,自动白平衡算法根据硬件报告的平均比值反推当前环境的色温,并根据预测的环境色温选择合适的RGB增益和其它色彩控制参数。

在实际应用中,白点统计模型偶尔也会遇到基本假设不成立的情况,主要存在于画面亮度很低,或者一些比较特殊的场景。 在白点统计模型中,如何定义白色区域是一个主要课题,围绕这个课题衍生了多种方法。一种简单的判据是在YUV空间为颜色设置经验阈值,通过阈值过滤掉偏离灰色较远的像素,如下所示。

有人提出了一组模糊规则(Fuzzy Rules Model,FRM)用于更好地筛选白点,基本思想是,

  • 如果像素的亮度Y过大或过小,则该像素携带的色度信息较少,应赋予较小的权重
  • 在一定范围内,亮度高的像素权重应大于亮度低的像素,因为亮度低的像素受噪声影响更大
  • 白平衡统计时通常会把图像划分为MxN个分区(zone),如果多个相邻分区的颜色几乎相同,应赋予较小的权重,防止单一物体权重过大引发超调
  • 果某颜色的Cb,Cr分量同时落在-1.5~-0.5区间内,则较可能是白色,应赋予较大权重

其它一些算法基于不同的原理实现白平衡,如

  • WP算法,假设场景中存在一块白色块(White Patch),它对各个波段的光线都近乎完全反射,因此是图像中最亮的点,其颜色能够反映光源的光谱特性,凭借这一信息可以在图像中去除光源的颜色。

  • PRM算法,与WP算法原理类似,假设图像中最亮的像素携带了较多光源本身的信息,是主要的白色参考,称为完美反射模型(Perfect Reflector Model)。

  • SoG算法,利用灰阶的特性(Shades of Gray) Finlayson 等人发现,灰度世界模型的数学本质是取所有像素的1-范数,而WP模型本质是取所有像素的∞-范数。如果推广起来其实可以一般地考察像素的p-范数,从而找到最合适的模型,这就是SoG算法的基本思想。

  • BP算法,利用亮像素的特性(Bright Pixels)

  • GE算法,改进的灰度世界模型

白平衡的评价标准

自动白平衡调整的关键环节,首先是要及时检测出环境光色温的变化,其次是要对环境色温变化及时做出响应。针对这一过程可以有不同的实现方法,而评价一个白平衡算法的性能通常有以下几个维度

  • 准确性,衡量指标为白平衡稳定后18度灰卡实际颜色与理想颜色之间的色差∆C,一般应在10以内
  • 收敛速度,从场景切换到白平衡稳定所需的时间,以图像帧数来衡量,一般应该30帧以内
  • 稳定性,在视频序列中,白平衡应保持稳定或平滑过渡,不应出现跳变、振荡等异常现象

参考文献

https://zhuanlan.zhihu.com/p/98835300
https://zhuanlan.zhihu.com/p/348162070