2.3.1 白平衡
白平衡(White Balance,WB),一言以蔽之,就是“不管在任何光源下,都能将白色物体还原为白色”。人类视觉系统是可以根据环境光照颜色进行自适应调整的,能够在不同的光照环境下正确感知“白色是白色”,尽量在脑中还原物体原本的颜色。以图2-11为例,下图是上图在改变光照颜色为偏蓝后的图像,但人依然能感知到玩偶的裤子是红色的、上衣是黄色的。但如果抛开整张图作为环境,仅看下图中某一像素的颜色值,却完全无法辨认这原本是红色或黄色。相机不具备像人脑一样的自适应调整功能,只会将所见的光强度记录下来。相机记录下的颜色会受到光源的光谱功率分布的影响,例如,原本白色的物体在非白色的光源下同样会被相机拍摄为非白色。这种现象首先会降低一些不拥有自适应调整能力的计算机视觉算法的性能;其次,由于人在观察照片时通常是适应所处环境的光源,而非适应照片中的光源,所以虽然人类拥有自适应调整能力,但若不根据照片的光源颜色进行校正,人也会不容易正确感知照片中物体的颜色。因此,“将白色物体还原为白色”,也就是白平衡,是一个较为重要的步骤。
图2-11 人类视觉系统色调感知的自适应能力(基于CMU 15-463[1]课程讲义插图重新绘制)
为符号表示方便及可视化起见,本节中假定白平衡前的图像已经进行过去马赛克操作(见本章2.3.2节),为RGB三通道图像。若要对去马赛克前的单通道图像进行白平衡,只需将原本对每个通道进行的操作改为对每种颜色对应的CFA像素进行的操作即可。
调整白平衡的方法通常是对于RGB三通道的每个通道,将其像素值整体乘以一个放大系数,从而调整全局颜色。白平衡可以分为手动白平衡与自动白平衡。一种手动白平衡的方法是人工选定场景中的一个参照物体,认为该物体本身近似是白色的,然后使用摄得的该物体的颜色对整张图像进行“归一化”。如图2-12所示,可以通过选定参考物体(纸张或风扇)为白色来进行手动白平衡。另外一种方式是根据拍摄时的光源种类(如正午日光、阴天和闪光灯等)选定某个白平衡预置参数(如图2-13所示),也被称为半自动白平衡,是实际手动白平衡中较为常见的方式。预置白平衡也可通过手动选定光源色温来实现。色温较低时,物体外观偏红色;而色温较高时,物体外观偏蓝色。
较为简单及经典的自动白平衡算法包括灰色世界假设算法(gray world assump-tion)与白色世界假设算法(white world assumption)。灰色世界假设算法假定白平衡后图像的平均值应为灰色,三通道均值应相等。步骤如下:逐通道计算RGB的平均值,逐通道利用平均值归一化,并乘以绿色通道平均值作为增益。此处,为了符号表示的便利性,假定图像为去马赛克后的图像,每个像素均具有三通道强度。对去马赛克前的图像,只需将每通道的计算均值及放大等操作限制到相应通道的像素即可,而非全像素。算法如式(2.2)所示,其中r,g,b∈RHW为白平衡前图像R,G,B通道的像素值分别组成的列向量(即“摊平”后的图像),r′,g′,b′∈RHW为白平衡后图像R,G,B通道的像素值分别组成的列向量,H为图像竖直方向像素数量,W为图像水平方向像素数量,:RHW→R为求均值操作。
图2-12 选定参考物体以进行手动白平衡(使用Sony α7R III相机拍摄得到)
图2-13 数码相机中常见的白平衡预置参数
白色世界假设算法与灰色世界假设算法类似,假定白平衡后图像的最大值应为白色。步骤如下:逐通道计算RGB的最大值、逐通道利用最大值归一化,并乘以绿色通道最大值作为增益。如式(2.3)所示,其中max(·):RHW→R为求最大值操作。
图2-14展示了分别使用灰色世界假设算法及白色世界假设算法进行白平衡的结果。通常情况下,两者计算出的白平衡系数不同,因此输出图像也是不同的。
图2-14 自动白平衡算法(基于CMU 15-463[1]课程讲义插图重新绘制)
需要注意的是,白平衡的三通道增益系数均需要大于或等于1,否则原本过曝区域的部分通道强度值会变小,产生色彩伪影。例如,考虑将上述算法中绿色通道增益为1的要求去除,令其可以小于1。则图2-15展示了一个错误的示例:使用Sony α7R III相机对日光灯进行拍摄并处理,但由于在白平衡时绿色通道的增益系数小于1,而红蓝通道的增益大于1,导致原本白色的过曝区域的绿色通道强度在处理后相比其他通道更小,从而过曝区域变为粉色。查看过曝色彩伪影区域的像素值可以发现,RGB通道的平均强度为{255,219,255}。因此,在通过白平衡算法计算出RGB三通道增益系数后,需要将最小系数归一化为1。
除了灰色世界假设法及白色世界假设这两种简单的全局自动白平衡算法之外,也存在一些经典的、较为复杂的自动白平衡算法,如迭代法、光照投票法(illuminant voting)等。感兴趣的读者可以查阅参考文献[4]的第10章“Automatic White Balancing in Digital Photography”。此外,现在许多相机的白平衡使用更加复杂的算法,例如使用局部白平衡算法(不同位置的像素的白平衡系数可能不同),甚至使用额外的输入进行白平衡(如华为P40 Pro+手机使用五通道多光谱传感器感知环境色温)。
图2-15 白平衡系数小于1导致过曝区域变为粉色(使用Sony α7R III相机拍摄)