2014-04-14 16:07:13
分享

什么是白平衡? ROM之家详细告诉你

标签:白平衡,ROM之家

  首先要明白什么是白平衡,它指的是在图像处理的过程中,对原本材质为白色的物体的图像进行色彩还原,去除外部光源色温的影响,使其在照片上也显示白色。

  那色温是怎么理解的呢?这个概念其实有点绕, 它是开尔文通过黑体(blackbody) 这一理想光源, 在不同温度下, 所发出光线的颜色特性来定义的。黑体是一个理想化的概念。它是这么一个物体, 能发光, 但会吸收掉任何来自外部的光线, 同时又会把吸收的所有能量以光的形式完全释放出来, 所以叫做黑体。黑体的温度单叫做开尔(K)。从 3300K 到 9300K 的温度变化情况下, 它发光的颜色分别是, 红色, 白色、蓝色。便于理解, 你可以这么想象, 火焰你肯定见过, 内焰温度较低, 外焰温度较高(蓝色), 内焰温度较低的地方是黄色的(暖色), 于是火焰最外面温度最高的地方反而会是蓝色的(冷色), 是不是有点反常识。而色温就是借助黑体的这个温度变化特性来量化色彩倾向的。色温数值低, 偏黄, 色温数值高, 偏蓝, 所谓的冷暖色调就是一种比较感性的叫法了。

  《3300K

  暖色

  3300~6000K

  白色

  》6000K

  冷色

  以下是几个常见场景的色温:

  烛光 1930K, 钨丝灯 2900K, 中午阳光 5600K, 蓝天 18000K

  讲白平衡是如何修正之前, 有两个很重要的理论需要知道:

  灰度世界理论:这个理论蛮有意思, 与其说是色彩学, 我觉得更像是统计学的范畴, 它认为任何一幅图像, 当有足够的色彩变化时, 其R, G, B分量均值会趋于平衡(即 RGB 三个数值相等, 也就是说应当是黑白灰类型的颜色)。这个理论在全局白平衡中得到广泛应用, 特点是能够利用更多的图像信息来做判断, 但在面对色彩较为单一的图像时就显得有些乏力了。

  全反射理论:一幅图像中亮度最大的点就是白点, 即假设在 YCbCr 空间中Y值最大的点为白色, 以此来校正整幅图像。特点是只考虑色彩最亮的那部分, 跟上面的灰度世界理论正好相反, 在处理色彩偏单调的图像时效果好些, 但面对颜色丰富的图片时, 因为最亮的点不一定是白色的, 可能会出现偏色的情况。

  这两个理论分别对应着两种色彩空间 RGB 和 YCbCr 调整白平衡的理论基础:判断一张图片白平衡是否准确, 如果不准确, 如何量化其偏离数值。

  白平衡就是一个纠正画面整体偏色的过程, 那为什么人眼不需要呢?其实在你看到一个东西的时候, 眼睛就已经对它进行了色彩修正。相机肯定没有人眼那么智能(至少现在没有), 概括的说, 它的自动白平衡算法就是设定一个范围, 如果拍摄照片的色彩平均值落在这个范围里面, 那就 OK, 说明无需修正。如果偏离出这个范围, 就需要调整参数, 并校正色彩数据直到其均值落入指定的范围内。这就是WB白平衡修正的过程。

  下面就来简单介绍几个白平衡算法大致原理, 但具体的增益计算和数学建模过程就不作赘述了, 这东西正常人看了都会头大的。

  1. 灰度世界算法(Gray World Assumption)

  这个算法原理很简单, 就是根据前面所说的灰度世界理论, 将原始图像的RGB均值分别调整到R=G=B即可。不完美的地方就是这个算法对颜色不丰富的图像敏感程度一般, 处理起来效果也就不会很理想, 局限性较大。

  2. 标准差加权灰度世界算法(Standard DeviationWeighted Gray World Assumption)

  标准差加权灰度世界算法是针对上一个算法的改进, 它的原理是把图像等分成几块, 然后对每个块利用统计学进行分析, 看里面颜色的丰富程度, 颜色多的就加权, 颜色少得就减少权重, 最后求和得出一个均值。根据这个相对精确的数值来进行RGB数值的修正。

  3. 全反射算法(Perfect Reflector Assumpution)

  这个是基于前面介绍的全反射理论生成的算法, 理解起来也不难, 它认为中最亮的那个点就一定是白色的, 如果原始图像中最亮的那个点不是, 那就针对偏离白色的数值进行逆向修正。缺点就是如果图像色彩复杂或者就是没有高光点, 它的修正效果就会比较乏力。

  上面三个算法比较简单, 运算量不大, 但各有优缺点, 也就进一步衍生出了更加有效但是却要复杂的多一些混合算法, 例如:亮度加权灰度世界算法与全反射算法的正交组合算法(QuadraticCombining Luminance Weighted Gray World & Prefect Reflector Assumption)。看这么长的名字就知道, 这个算法很复杂, 白平衡修正效果也是蛮不错的, 而且它本身是收敛的, 在对图像处理的时候不会带来太多损失, 但可惜运算量巨大, 对硬件资源的要求过高。

  算法方面挺枯燥的, 非理工科对数学没兴趣的也可以直接略过, 大体知道这么回事儿就行。但我可以给出的结论是:最终效果越好的算法, 其复杂程度就越高, 运算量就越大, 对硬件电路的要求也高。具体的实现还需要在白平衡校正能力, 算法执行效率, 处理器硬件性能三个方面进行权衡。

  而通过上面的了解你就会发现, 如果ISP图像处理器的性能够高, 白平衡算法施展的空间就会大了很多。某些时候白平衡不准确, 一定程度上确实是与ISP性能跟不上有关, 当然, 这里也要看各家厂商在算法优化方面的功底。一般来说同一代各个品牌的旗舰处理性能差别不会特别大, 虽然软件方面下的功夫不容易看到, 但重要性确实毋庸置疑的, 能否把硬件整体性能充分发挥出来才是关键。

  举例来说, 在单反刚刚数码化的那个年代, 相机的图像处理器性能比较低下, 难以承受高运算强度的白平衡算法的蹂躏, 于是很多单反相机(如佳能1D, 尼康D2, 奥林巴斯E-1等) 机身上是有一个白平衡感应装置的(就是机身正面的那个小白点), 这个可以辅助提高白平衡准确度。到后来随着相机图像处理器的性能飙升, 大概是从富士通给尼康代工的Expeed一代处理器开始, 就取消了外置白平衡感应器这个装置。通过越来越多的RGB测光分区数, 配合越发强大的处理器来进行更加准确的色温修正。这里多说两句, 分区越多, 白平衡采样处理就越准确, 但同时也会带来计算量上面的飙升, 从最初的只有几个分区, 到 D800 上面用的 9.1 万像素 RGB 感应器, 在同时完成测光和白平衡计算的同时, 甚至还能够余出力气进行人脸识别, 背后那块改用了 ARM 架构 Expeed 3 才是最大的功臣。而像 DC 啊, 手机摄像头啊这类连续取景的相机, 则是用前一帧图像的处理结果应用到后面的图像上去的, 实现方式同单反上面那个单独的测光感应器还不太一样的。这是产品本身结构差异性导致的。

  现如今手机上自带相机的白平衡功能不太强, 可以从图像处理器性能不够强的角度上去理解, 但也不否认, 一些品牌在优化方面依然可以做的很好, 就像拓海开他爸那辆老掉牙的AE86在秋名山上一样能赢GTR一样, 内功外功都很重要。