OpenISP 模块拆解 · 第8讲:颜色校正矩阵 (CCM)

OpenISP 模块拆解 · 第8讲:颜色校正矩阵 (CCM)

模块作用

CCM 是颜色校正矩阵,位于 CFA 后的 RGB 域。它把传感器 RGB 映射到目标 RGB 色彩空间,用于修正传感器光谱响应与标准颜色之间的差异。

openISP 实现

源码类名为 CCM(img, ccm)ccm 是 3x4 矩阵,前三列做 RGB 混合,第四列是 offset。

对每个像素:

text 复制代码
R' = (m00*R + m01*G + m02*B + m03) / 1024
G' = (m10*R + m11*G + m12*B + m13) / 1024
B' = (m20*R + m21*G + m22*B + m23) / 1024

1024 表示固定点缩放基准。配置文件默认是单位矩阵,所以默认不改变颜色。

为什么需要 CCM

传感器的 R/G/B 滤色片响应和标准 RGB 不一致,存在通道串扰。即使白平衡正确,颜色也可能不准确。CCM 通过线性组合修正颜色。

参数说明

参数 含义
ccm_00..ccm_22 3x3 颜色混合系数
ccm_03/13/23 每个输出通道 offset
/1024 固定点缩放,方便整数硬件实现

标定思路

真实 CCM 常通过拍摄标准色卡获得。流程通常是:

  1. 拍摄 RAW 并完成 BLC、AWB、CFA。
  2. 读取色卡每个色块的传感器 RGB。
  3. 与目标标准色值做最小二乘拟合。
  4. 加约束,避免负值过大或过饱和。
  5. 结合主观色彩风格微调。

读源码注意点

openISP 的 CCM 输出最后直接 astype(np.uint8),没有显式 clipping。如果矩阵输出超出 0..255,真实使用中应做饱和裁剪。

面试问答

Q1: AWB 和 CCM 的区别是什么?

AWB 是按通道增益校正光源色温,主要解决白点问题。CCM 是通道线性混合,主要解决传感器颜色空间到目标颜色空间的映射问题。

Q2: 为什么 CCM 通常在 demosaic 后?

CCM 需要完整 RGB 三通道输入。demosaic 前每个像素只有一个颜色采样,无法直接做完整 3x3 矩阵变换。

Q3: CCM 系数为什么可能有负数?

为了抵消通道串扰,某个输出通道可能需要减去其他输入通道的一部分。负系数可以提高色彩分离度,但过大会导致噪声和 clipping 风险。

Q4: CCM 会影响亮度吗?

会。虽然目标是颜色校正,但矩阵行和、offset 都会影响通道值,从而影响亮度和饱和度。所以 CCM 需要和 tone/gamma 协同调校。

Q5: 怎么判断 CCM 调得不好?

常见现象是肤色不自然、植物绿偏黄或偏荧光、天空蓝异常、某些色块饱和度过高或过低,以及不同光源下颜色不稳定。

相关推荐
资质小秘书3 天前
2026 年全国 ISP 许可证办理周期深度解析与提速指南
isp·许可证·isp许可证·增值电信业务
一只嵌入式爱好者4 天前
深入理解ISP
图像处理·isp
AomanHao4 天前
【ISP】sensor高亮灰度溢出及anti-bloomimg功能
接口隔离原则·isp·sensor
大熊背7 天前
ISP FPN噪声消除逻辑
人工智能·isp·noise·fpn
橘色的喵9 天前
一根数据源,两条出图路:UVC(USB)与 CSI-2(MIPI)对比解读
usb·isp·mipi·uvc·csi-2
岁月蹉跎的一杯酒18 天前
模组选型指标对图像质量影响
isp
Industio_触觉智能1 个月前
瑞芯微ISP内核驱动深度解析|ISP39 AI协处理器与完整业务链路总结(下篇)
人工智能·嵌入式硬件·硬件架构·硬件工程·rk3588·isp·rk3576
AomanHao1 个月前
【阅读笔记】彩色转黑白Real-time Contrast Preserving Decolorization
图像处理·isp
Industio_触觉智能1 个月前
瑞芯微ISP内核驱动深度解析|RKISP39从架构到Probe初始化全流程(上篇)
linux·嵌入式硬件·硬件架构·摄像头·isp·瑞芯微·rk3576
ShiMetaPi1 个月前
ShiMetaPi Pico-G1:百元级黑光全彩AI ISP开发板
人工智能·嵌入式硬件·pico·isp