色彩处理是ISP管线中最关键的环节之一,直接影响最终图像的视觉质量和色彩准确性。本章深入探讨ISP中的色彩科学基础,从色彩空间转换、白平衡算法到色彩校正和增强技术,全面剖析如何在硬件约束下实现高质量的色彩再现。我们将特别关注自动驾驶和具身智能场景下的色彩处理需求,如何在保证色彩准确性的同时优化硬件资源消耗。
RGB是ISP处理的基础色彩空间,直接对应图像传感器的拜耳模式输出。在线性RGB空间中,色彩值与光强度成正比关系:
\[L = R \cdot \lambda_R + G \cdot \lambda_G + B \cdot \lambda_B\]其中$\lambda_R$、$\lambda_G$、$\lambda_B$分别代表红、绿、蓝三个通道的光谱响应函数。
硬件实现时,RGB数据通常采用定点表示,常见位宽配置:
位宽选择需要权衡图像质量与硬件成本:
动态范围(dB) = 20 × log₁₀(2^n) ≈ 6.02 × n
YUV色彩空间将亮度(Y)与色度(UV)分离,这种设计充分利用人眼对亮度比色度更敏感的特性,实现高效的数据压缩。
标准转换公式(ITU-R BT.601): \(Y = 0.299R + 0.587G + 0.114B\) \(U = -0.147R - 0.289G + 0.436B\) \(V = 0.615R - 0.515G - 0.100B\)
硬件优化的定点实现(避免浮点运算): \(Y = (77R + 150G + 29B) >> 8\) \(U = (-38R - 74G + 112B + 32768) >> 8\) \(V = (112R - 94G - 18B + 32768) >> 8\)
色度子采样格式对比:
YUV444: Y Y Y Y 完整色度信息
U U U U
V V V V 带宽:100%
YUV422: Y Y Y Y 水平2:1子采样
U U
V V 带宽:67%
YUV420: Y Y Y Y 水平垂直2:1子采样
U
V 带宽:50%
CIE XYZ是与设备无关的色彩空间,基于人眼三色视觉理论。从RGB到XYZ的转换需要色彩特征化矩阵:
\[\begin{bmatrix} X \\ Y \\ Z \end{bmatrix} = M_{RGB→XYZ} \cdot \begin{bmatrix} R \\ G \\ B \end{bmatrix}\]其中转换矩阵$M_{RGB→XYZ}$依赖于RGB原色的色度坐标和白点定义。
Lab色彩空间进一步提供感知均匀性,其非线性变换:
\(L^* = 116f(Y/Y_n) - 16\) \(a^* = 500[f(X/X_n) - f(Y/Y_n)]\) \(b^* = 200[f(Y/Y_n) - f(Z/Z_n)]\)
其中: \(f(t) = \begin{cases} t^{1/3} & \text{if } t > \delta^3 \\ \frac{t}{3\delta^2} + \frac{4}{29} & \text{otherwise} \end{cases}\)
$\delta = 6/29$,$(X_n, Y_n, Z_n)$为参考白点。
色彩空间转换的硬件实现需要考虑:
RGB Input
|
[3×3 Matrix] ← 系数寄存器
|
[Clipping] ← 防止溢出
|
YUV Output
自动白平衡(AWB)的目标是消除光源色温对图像色彩的影响,还原物体在标准光源下的真实色彩。在自动驾驶场景中,AWB的准确性直接影响目标识别和场景理解的可靠性。
灰世界假设:自然场景中所有颜色的平均值应该是中性灰。基于此假设,AWB增益计算公式:
\[G_R = \frac{Y_{avg}}{R_{avg}}, \quad G_G = \frac{Y_{avg}}{G_{avg}}, \quad G_B = \frac{Y_{avg}}{B_{avg}}\]其中$Y_{avg} = (R_{avg} + G_{avg} + B_{avg})/3$。
算法实现步骤:
硬件优化考虑:
白点检测通过识别图像中的白色或灰色区域来估计光源色温。关键步骤:
候选白点筛选: \(\frac{R}{G} \in [R_{min}, R_{max}], \quad \frac{B}{G} \in [B_{min}, B_{max}]\)
色温相关的阈值范围:
2500K (白炽灯): R/G=[1.3,1.5], B/G=[0.4,0.5]
4000K (荧光灯): R/G=[1.0,1.2], B/G=[0.6,0.7]
5500K (日光): R/G=[0.9,1.0], B/G=[0.9,1.0]
7000K (阴天): R/G=[0.8,0.9], B/G=[1.0,1.1]
置信度评估: \(Conf = \frac{N_{white}}{N_{total}} \cdot \exp(-\sigma_{RGB}^2/\sigma_{th}^2)\)
其中$N_{white}$为白点像素数,$\sigma_{RGB}$为RGB通道标准差。
色温模型直接估计光源的相关色温(CCT),提供更精确的白平衡控制:
普朗克轨迹建模: \(\frac{1}{T} = A + B \cdot \ln\left(\frac{R/G}{C}\right)\)
其中T为色温(K),A、B、C为标定系数。
CCT(K) | R_gain | G_gain | B_gain
--------|--------|--------|--------
2500 | 1.000 | 1.453 | 2.892
3000 | 1.000 | 1.334 | 2.311
4000 | 1.000 | 1.174 | 1.689
5500 | 1.000 | 1.000 | 1.000
6500 | 1.076 | 1.000 | 0.831
多光源处理: 混合光源场景的加权平均: \(G_{final} = \sum_{i} w_i \cdot G_i\)
权重$w_i$基于各光源的贡献度和置信度。
稳定的AWB收敛对用户体验至关重要:
时域滤波: \(G_t = \alpha \cdot G_{new} + (1-\alpha) \cdot G_{t-1}\)
自适应滤波系数: \(\alpha = \begin{cases} \alpha_{fast} & \text{if } |G_{new} - G_{t-1}| > \theta_{large} \\ \alpha_{slow} & \text{if } |G_{new} - G_{t-1}| < \theta_{small} \\ \alpha_{mid} & \text{otherwise} \end{cases}\)
合理范围:0.5 < G_R, G_B < 2.0
变化速率:|ΔG/Δt| < 0.1/帧
死区设置:|G_new - G_old| < 0.02时不更新
自动驾驶场景的特殊考虑:
色彩矩阵校正通过线性变换补偿传感器光谱响应与标准色彩空间的差异,是实现准确色彩再现的关键步骤。
色彩校正的数学模型: \(\begin{bmatrix} R' \\ G' \\ B' \end{bmatrix} = CCM \cdot \begin{bmatrix} R \\ G \\ B \end{bmatrix} = \begin{bmatrix} m_{11} & m_{12} & m_{13} \\ m_{21} & m_{22} & m_{23} \\ m_{31} & m_{32} & m_{33} \end{bmatrix} \cdot \begin{bmatrix} R \\ G \\ B \end{bmatrix}\)
CCM设计目标:
CCM标定流程:
色卡采集: 使用标准24色Macbeth色卡,在标准光源(D65)下采集RAW数据。
最小二乘优化: 目标函数: \(E = \sum_{i=1}^{24} w_i \cdot \Delta E_{ab}^2(C_i^{ref}, CCM \cdot C_i^{raw})\)
其中$\Delta E_{ab}$为CIE Lab色差,$w_i$为各色块权重。
| 对角占优:$ | m_{ii} | > | m_{ij} | , i \neq j$(稳定性) |
正则化策略: \(CCM_{opt} = \arg\min_{CCM} \{E + \lambda \cdot ||CCM - I||_F^2\}\)
正则化参数$\lambda$平衡准确性与鲁棒性。
不同光源需要不同的CCM,实际应用中通过插值实现平滑过渡:
光源 | 色温(K) | CCM矩阵
--------|---------|----------
A光源 | 2856 | CCM_A
TL84 | 4000 | CCM_TL84
D50 | 5000 | CCM_D50
D65 | 6500 | CCM_D65
线性插值: \(CCM(T) = \frac{T_2 - T}{T_2 - T_1} \cdot CCM_1 + \frac{T - T_1}{T_2 - T_1} \cdot CCM_2\)
其中$T_1 < T < T_2$为相邻色温点。
CCM硬件模块设计:
输入:12-bit RGB
系数:S2.14格式(16-bit,2位整数,14位小数)
中间结果:28-bit(防止溢出)
输出:12-bit RGB(带饱和处理)
Stage 1: 矩阵乘法第一行
R' = m11*R + m12*G + m13*B
Stage 2: 矩阵乘法第二行
G' = m21*R + m22*G + m23*B
Stage 3: 矩阵乘法第三行
B' = m31*R + m32*G + m33*B
Stage 4: 饱和处理与输出
评估指标:
平均色差: \(\overline{\Delta E} = \frac{1}{N} \sum_{i=1}^{N} \Delta E_{ab}(C_i^{ref}, C_i^{corrected})\)
工业标准:$\overline{\Delta E} < 2$为优秀,$< 5$为良好。
最大色差: \(\Delta E_{max} = \max_i \{\Delta E_{ab}(C_i^{ref}, C_i^{corrected})\}\)
关键色彩(肤色、天空蓝)的容差更严格。
色域覆盖:
sRGB覆盖率 = V_{overlap} / V_{sRGB} × 100%
车载应用通常要求>95% sRGB覆盖。