跳转至

一、色温

当某光源之色度与黑体在某温度下辐射之色度相同时,则将此黑体之温度称为光源的颜色温度,简称色温(color temperature, \(T_c\))。

AWB_色温与黑体轨迹.png

白炽灯的色度点分布几乎落在黑体轨迹上,因此可以用 \(T_c\)。但其他光源之色度点可能会落在黑体轨迹之外,必须选择与其色度点最接近的黑体辐射色度的温度,因此称为相对色温/相关色温(correlated color temperature, \(T_{cp}\)来源。如果不需要特别区分的情形,一般也把相关色温称为色温了。

相关色温标度基于色温标度和等温线,由 D.B. Judd 于 1936 年提出。沿给定等温线的所有颜色具有相同的相关色温。

色温和相对色温之间的区别

  • 色温是用于描述普朗克轨迹上的光的颜色、并且由普朗克辐射器产生的度量。这是一个相当有限的指标,因为它仅适用于普朗克辐射器的光线颜色。每个色温单位在给定的色彩空间中具有一组色度坐标,并且该组坐标位于普朗克轨迹上。
  • 相关色温是用于描述位于普朗克轨迹附近的光的颜色的度量。该度量具有更广泛的实用性,因为它适用于各种制造的光源,其中每个光源产生的光谱功率分布不同于普朗克辐射器。然而,它不如色温度量精确,因为沿着等温线的色度图中的许多点将具有相同的相关色温。

二、色彩恒常性

颜色恒常性(Color Constancy):人眼具有在光照变化的情况下保持景象色彩一致的能力 来源。对人眼来说,无论在何种光源下白色物体均呈现白色(这里的白色物体指的是固有色为白色的物体)。

因此,在色温均匀的场景下,可以使用色卡来进行白平衡处理。比如拍了图片,已知白色背景 RGB 分别是 240 255 255,那就是画面偏红了或者白色背景区域偏红了:

\[ img_{校正后} = img_{偏色} \times \mathrm{diag}(255/240,\ 1,\ 1) \]

色彩恒常性并非总是成立,所以不同光源照在物体上所表现的颜色也有所差异,评价光源的方法有两种:

  1. 两种光源光谱分布的差异;
  2. 两种光源照在标准物体上其色外貌(color appearance)之差异——显色指数

AWB_显色指数.png

颜色形成涉及四部分:光照、物体、眼睛、大脑。系统中,假设人眼相同、物体一定、光照变化,为了保证输出一致,大脑需要进行相应的"补偿"。

但颜色恒常性不仅对观察主体起作用,也受观察环境影响,因此图片会有冷暖调的变化。在多色温光源的场景下,AWB 计算应权衡各个光源的影响。

AWB_多光源色彩恒常.png

三、光源

来源

光源分类低色温 ←3300K→ 中色温 ←5300K→ 高色温

低色温

  • H:色温 2300K,模拟水平日光(Horizon);
  • F:色温 2700K,模拟家庭酒店暖色灯光、比色参考光源,夕阳光、黄光源、落日黄,多为英式灯箱使用;
  • A:色温 2856K,美式橱窗射灯,功率 60W,多为美式灯箱使用。

中色温

  • CWF:色温 4150K,模拟美国冷白商店光源(Cold White Fluorescent),功率 20W;
  • TL84:色温 4000K(3750K),模拟欧洲、日本、中国商店灯光;
  • F:同 TL84 光源,荧光灯(Fluorescent)。

高色温

  • S:色温 7000K,阴影(Shade);
  • D:Daylight,日光,色温 5200K。

阴影/阴天下色温高:短波穿透力更强。 黄昏色温低:低空中大分子物质多,短波散射,长波绕射。

统计点分布图(AWB light area):

AWB_统计点分布.png

tuning 说,\(x = \log(b/r)\)\(y = \log(rb/g^2)\),再加上一个旋转。估计 x 轴反映色温,为橙蓝调;y 轴为绿品调。

四、AWB 机制与策略

机制:Each AWB algorithm consists of two steps. The first step is illumination estimation, and the second step is image compensation.

来源

基于灰度世界假设,AWB 处理通过求取 R/G-B/G 空间中灰色统计数据(统计点)位置的平均值,与参考点/灰色区进行比较,进而估计光源。

4.1 灰世界法

灰度世界算法以灰度世界假设为基础,该假设认为:对于一幅有着大量色彩变化的图像,三个分量的平均值趋于同一灰度值。

从物理意义上讲,灰色世界法假设自然界景物对于光线的平均反射的均值在总体上是个定值,这个定值近似地为"灰色"。颜色平衡算法将这一假设强制应用于待处理图像,可以从图像中消除环境光的影响,获得原始场景图像。

这种算法简单快速,但是当图像场景颜色并不丰富时,尤其出现大块单色物体时,该算法常会失效。

4.2 最大亮点法

最大亮点法假定图像中某些点对各个频率的色光具有最大的反射率,即认为亮度最大的点(一般认为 R+G+B 或 Y 最大)为白色点,并以该点为参考点进行 AWB 算法。

4.3 区域分割法

来源

该算法会预先在各个色温下(2500~7500K)拍几张白纸照片,假设拍 6 张(2500, 3500…7500),作为色温参考表,然后根据这些数据插值出各个色温下的对应数据,如 R/G、B/G。

接下来会将整个图像分为 \(M\times N\) 个 block,并统计每一个 block 的信息,如"白色像素"的数量及 R/G/B 通道分量的均值。根据这些统计值,就找出图像中所有白色的 block,并根据拟合的色温曲线来判断该 block 的色温。最后只需要统计在所有白色 block 中色温最多的那个即可。

4.3.1 参考点、灰色区

每个光源都具有不同的光谱能量分布,每个传感器都具有不同的光谱敏感度。参考点指的是不同传感器在不同光源下测得的灰色 R/G 和 B/G 比率。

AWB 可基于这些参考点创建一个灰色区,从而对给定场景中的统计数据进行筛选。灰色区用于排除来自非灰色物体的统计数据。参考点用作计算给定场景中不同 Bayer 网格统计数据和估计光源相关色温(CCT)的锚点;参考点和两个相邻参考点之间的线用作计算统计数据距离的锚点。

4.3.2 权重

由于灰世界假设,给定统计数据的权重是统计数据的一种概率,代表给定统计数据是灰色统计数据的可能性。光源权重向量模块会计算不同 CCT 和照明条件(即亮度 Lux 级不同)下加权统计数据的平均值。AWB 处理会收集灰色统计数据,用于估算 AWB 增益。

4.4 其他算法

最后其实 AWB 算法还有很多,如色域界限法、完美反射法等等,这里不多做赘述。AWB 在 ISP pipeline 中属于 color rendition 部分,对于成像画质的影响比较大,因此一般在后续还会有 AWB tuning 的过程来进一步改善整体的成像效果。

五、照度估计算法 A

这里只涉及照度估计。

The algorithm in [1] selects out gray color points from an image to judge the illumination condition. Gray color points can be a white object, a shadow, a black object and so on. Each gray color point has a little deviation from the color gray under different color temperature light sources. Gray color points can be extracted using the following criterion:

\[ F(Y,U,V) = \frac{|U|+|V|}{Y} < T \]

where threshold \(T \ll 1\), and where \(Y\) is the luminance component, and \(U\) and \(V\) are two chrominance components in YUV coordinate.

\(\bar{R}_\Omega\) denote the average of R components of \(\Omega\), where \(\Omega\) is the set of gray color points.

\[ \bar{RG}_\Omega = |\bar{R}_\Omega - \bar{G}_\Omega| \]
\[ \bar{BG}_\Omega = |\bar{B}_\Omega - \bar{G}_\Omega| \]

If \(|\bar{RG}_\Omega - \bar{BG}_\Omega| \le D_{AWBthres}\), the AWB control is done.

AWB_灰色统计.png

因此,在给定输入统计数据中选择真实的灰色统计数据至关重要。在多变的环境下,灰色统计数据的平均值会遭到灰色区中的非灰色统计数据干扰。因此,估计结果的精确性依赖于准确地选择灰色统计数据和移除非灰色统计数据 来源

六、色坐标

  • CIE 1931 是 x y 坐标系,应用最广,但是属于不均匀色度图;
  • CIE 1960 是 u v 坐标系,常用来计算 CCT 和 Duv;
  • CIE 1976 是 u' v' 坐标系,属于均匀色度图,计算颜色漂移和颜色均匀性时用的较多 来源

6.1 CIE 1931

来源

CIE 1931:国际照明委员会(CIE)1931 年制定了一个色度图,用组成某一颜色的三基色比例来规定这一颜色,即用三种基色相加的比例来表示某一颜色。

颜色匹配函数

AWB_颜色匹配函数.png

三原色:

  • 红光(R)= 700 nm
  • 绿光(G)= 546.1 nm
  • 蓝光(B)= 435.8 nm

三原色光的相对亮度比例为 \(1.0000 : 4.5907 : 0.0601\) 时就能匹配出等能白光 来源

CIE 1931 XYZ

\[ \begin{aligned} X &= k \int_{vis} S(\lambda) \cdot R(\lambda) \cdot \bar{x}(\lambda) \,\textrm{d}\lambda \\ Y &= k \int_{vis} S(\lambda) \cdot R(\lambda) \cdot \bar{y}(\lambda) \,\textrm{d}\lambda \\ Z &= k \int_{vis} S(\lambda) \cdot R(\lambda) \cdot \bar{z}(\lambda) \,\textrm{d}\lambda \end{aligned} \]

其中,\(k\) 为常数,\(S(\lambda)\) 代表光源光谱分布,\(R(\lambda)\) 则为物体的反射光谱,积分 \(\int_{vis}\) 取自 360nm~830nm。

CIE 1931 x-y 马蹄形色度坐标系:由于三维空间表示颜色不易理解,将其投影到二维空间。

AWB_CIE1931马蹄形.png

\[ \begin{aligned} x &= \frac{X}{X+Y+Z} \\ y &= \frac{Y}{X+Y+Z} \\ z &= 1 - x - y \end{aligned} \]

在马蹄形曲线包括的面积中,有一条弯曲线,它代表各种绝对温度下黑体辐射轨迹,又称普朗克轨迹(Planckian locus)。

色温(Correlated color temperature)可以通过近似公式求,误差一般不大:

\[ CCT(x, y) = -449n^3 + 3525n^2 - 6823.3n + 5520.33 \]
\[ n = (x - x_e)/(y - y_e),\quad (x_e = 0.3320,\ y_e = 0.1858) \]

来源

6.2 CIE 1960

CIE 1960 UCS 图的色度用 u 和 v 表示,以区分色空间和 CIE 1931(x, y)色度图。

等温线与 CIE 1960 UCS 图中的普朗克轨迹垂直,但是不在其他颜色空间中(注意:CIE 1960 UCS 图比其他颜色空间有一些优点,计算等温线的容易程度就是其中之一)。

AWB_CIE1960.png

七、显色指数/演色指数

[!note] 公式推导待补 显色指数(Color Rendering Index, CRI)选择特定颜色作为参考色,因此容易被 bug(参考色选择不同会导致评价偏差)来源

八、调色方案

来源

  • 基础调色方案:AWB + CCM + GAMMA 控制(所有平台必有)。
  • 高级调色方案:系统的颜色主要由 AWB + CCM + CLUT + GAMMA + CA 控制,颜色风格可以按需调节(海思平台方案,其他平台可能会有所不同)。

8.1 CCM

CCM(Color Correction Matrix,色彩校正):AWB 已经将白色校准了,CCM 就是用来校准白色以外其他颜色的准确度的,用一个 3×3 的 CCM 矩阵来校准。由 CCM 的 3×3 矩阵将 sensor 的 native 色彩空间(设备相关的色彩)转换到 sRGB 标准定义的色彩空间(设备无关的色彩)。特点是 sensor 的响应被线性扩展到目标空间,即各种颜色获得同样的线性扩展。颜色的呈现随着 sensor 的光谱响应特性的不同而变化。

AWB_CCM矩阵.png

为了保证白平衡不受破坏,参数必须满足条件:

\[ a_{i0} + a_{i1} + a_{i2} = 1 \]

R' 中主要应该还是 R 分量的部分居多,因此必须满足条件:

\[ a_{ii} \ge 1 \]

CSC 模块把 RGB 转到 YUV 色彩空间后,CA(Color Adjustment)颜色调整模块支持在 YUV 空间进行色域调整的操作。在 CA 模式下,通过下面的公式可以将一个像素点 \((Y, U, V)\) 映射到另一个像素点 \((Y', U', V')\)

\[ Y' = Y;\quad U' = aU;\quad V' = aV \]

8.2 CLUT

CLUT(Color LUT)是一个改变线性 RGB 值的模块,这个模块把用户的颜色调节需求转化为源和目标 RGB 对的数据映射关系。CLUT 利用线性 RGB 空间 27×27×27 分格的 3D LUT 实现复杂的颜色调整操作,比如亮度、饱和度、色调的调整,可以对阴影、中间亮度、高亮区域分别调整。可参考论文《Strengths and limitations of a uniform 3D-LUT approach for digital camera characterization》。

九、实现视角(3A 框架)

本节来自相机 3A 框架的实现笔记,补充 AWB 在手机平台上的落地方式。代码细节(属性键、tuning 文件)属工程实现,会随平台/版本变化,仅作概念理解。

9.1 AWB pipeline

AWB 在 pipeline 中分两阶段落地:P1 gain 由 AWB 决定,P2 gain 由 flash 决定。整体流程为:

  1. 硬件统计:pre-gain 1 作 AWB 校准增益并补偿传感器响应差;计算各统计单元的有效性与 RGB 均值。
  2. 光源估计:多光源的 pre-gain 补偿;按统计块估计光源类型,分中性色/非中性色;设置排除区域;多种光源概率估计。
  3. AWB 增益估计:根据光源信息估计当前帧 AWB gain,含收敛程度控制、静态增益、空域增益、光源偏好增益。
  4. 空域时域预测:对不可靠部分进行估计。
  5. 融合:融合当前帧可靠部分与空域时域预测,对额外颜色、天空颜色处理,最终生成平滑后的 AWB gain。

9.2 统计块层级

AAO 基本单元 Main Stat Window(MSW),\(i\times j\) 个 window 组成 Child Block(CB),\(m\times n\) 个 Child Block 组成 Parent Block(PB)。硬件支持 128×128 个 window,每个 window 最大支持 256K 像素。

AWB_统计块层级.png

9.3 多光源概率估计

给出光源 \(L_i\) 的可能性:

\[ P(L_i) = P_0(L_i) \times P_1(L_i) \times P_2(L_i) \]
  • \(P_0(L_i)\):weighted parent block number(WPBN)概率——\(P_0(L_i) = \dfrac{WPBN(L_i)}{\sum_j WPBN(L_j)}\),统计 neutral PB 的数据,并适当降低非主导光源的统计。
  • \(P_1(L_i)\):scene luminance level 概率——不同亮度下的色温概率不同,例如 Daylight 下各色温概率相等,但 Tungsten 在高亮度环境下概率基本为 0。其中 \(LV = EV - \log_2(ISO\ Speed / 100)\)
  • \(P_2(L_i)\):green/magenta offset 概率——在室外有干扰颜色(confusion color)的场景,或 neutral PB 数量少时 \(P_2\) 作用过强,应减少其影响(\(P_2\) 都向 100 靠、各值相等即相当于不起作用),称为 P2 Stability。

AWB_光源估计.png

9.4 对数色度坐标系

AWB 统计常用对数色度坐标系:

  • x 轴:\(\log(R/G)\)
  • y 轴:\(\log(B/G)\)

因此左下角为绿色偏移,由互补色原理,右上角为品色偏移。日光轨迹(Daylight Locus)中,左上角为冷调增加,右下为暖调增加。某光源的统计点距离日光轨迹的距离小于偏移阈值(Offset)时,认为人眼能做到完全白平衡(Full AWB);大于阈值时则部分收敛。

  • GMOffset(Green & Magenta Offset):统计点到日光轨迹的欧氏距离;
  • DLOffset(Daylight Locus Offset):投影到日光轨迹后到原点的距离。

AWB_对数色度坐标系.png

9.5 Prefer color(颜色偏好)

颜色偏好用于控制 Tungsten、WF 和 Shade 的白平衡收敛度——对这些光源,白平衡并非全收敛,而是部分收敛,从而符合人眼感知(人眼在暖光下习惯偏暖的画面)。最终偏好增益:

\[ FinalPreferGain = DLOffsetGain \times DLOffsetPrefGain \times GMOffsetGain \times GMOffsetPrefGain / 512^3 \]

9.6 时域与空域

根据当前 AAO 的中性色 PB 数量,将 AWB 分为全可靠模式(0)、部分可靠模式(1)和不可靠模式(2)。

  • 空域:在 PB 不可靠模式下,根据亮度、人脸概率确定 spatial gain。
  • 时域:入队按 enqueue policy(如不同光源的 PB 数量作为判断条件);出队选择 LV 相近的数帧(如 4 帧),按各图的中性色 PB 数量给权重。当时域预测的 PB 与当前中性色 PB 距离太远时,降低时域影响。

实现中手动白平衡(MWB)通过客制化 meta 传入色温值,由 AWB 模块应用对应的 CCT 增益。

十、CCT 传感器

cct(色温传感器):在拍照时可以探测环境的色温,拍出来的图片色彩更准确;还可以针对不同的拍摄场景,通过自动识别,对拍摄图像进行针对性的优化,带来更出色的照片效果。

十一、参考

  1. Vuong, Quoc Kien, Se-Hwan Yun, and Suki Kim. "A new auto exposure and auto white-balance algorithm to detect high dynamic range conditions using CMOS technology." Proceedings of the world congress on engineering and computer science. IEEE, 2008. PDF
  2. 李正中, 楊宗勳, 廖詩芳. "光學薄膜於色彩顯示之應用(上)." 科儀新知 177 (2010): 48-60. PDF