OpenISP 模块拆解 · 第10讲:颜色空间转换 (CSC)

OpenISP 模块拆解 · 第10讲:颜色空间转换 (CSC)

模块作用

CSC 是颜色空间转换模块,openISP 用它把 RGB 转为 YUV。转换后,亮度 Y 和色度 U/V 分离,方便后续分别做亮度降噪、锐化、色度抑制、饱和度控制。

openISP 实现

源码类名为 CSC(img, csc)csc 是 3x4 矩阵:

text 复制代码
Y = (R*c00 + G*c01 + B*c02 + c03) / 1024
U = (R*c10 + G*c11 + B*c12 + c13) / 1024
V = (R*c20 + G*c21 + B*c22 + c23) / 1024

配置文件中的小数系数在主程序里乘以 1024,形成固定点矩阵。

默认转换

配置类似 limited range RGB to YUV:

text 复制代码
Y =  0.257R + 0.504G + 0.098B + 16
U = -0.148R - 0.291G + 0.439B + 128
V =  0.439R - 0.368G - 0.071B + 128

其中 Y offset 为 16,U/V 中性点为 128。

为什么转 YUV

图像质量调校常常希望分离亮度和色度:

  • Y 通道:降噪、锐化、亮度对比度。
  • UV 通道:饱和度、色相、伪彩抑制。

这样可以减少亮度处理对颜色的副作用。

读源码注意点

源码没有显式 clipping,最后直接转 uint8。若矩阵输出超出范围,真实系统应做饱和裁剪。

面试问答

Q1: YUV 中 Y 是不是等于绿色通道?

不是。Y 是由 RGB 加权得到的亮度分量,只是 G 权重通常最大,因为人眼对绿色更敏感。

Q2: U/V 为什么常以 128 为中性点?

在 8-bit 无符号表示中,色度需要表达正负偏移。用 128 作为零色度中心,低于或高于 128 表示不同色度方向。

Q3: 为什么锐化通常只做 Y 通道?

人眼对亮度细节更敏感,对色度分辨率较低。只锐化 Y 能增强清晰度,同时避免放大色噪和彩边。

Q4: CSC 和 CCM 都是矩阵,有什么区别?

CCM 是颜色校正,用于传感器 RGB 到目标 RGB 的颜色还原。CSC 是颜色空间转换,例如 RGB 到 YUV,用于后续编码或调校。

Q5: limited range 和 full range YUV 有什么区别?

limited range 通常 Y 在 16...235,UV 在 16...240;full range 使用 0...255。范围不同会影响黑位、白位和显示兼容性。

相关推荐
几司20 小时前
第8章:ISP降噪技术全景
isp
几司20 小时前
第6章:ISP前端处理:像素级处理
isp
几司2 天前
第5章:ISP前端处理:光学缺陷校正
isp
几司2 天前
第2章:CMOS图像传感器原理与技术
isp
几司2 天前
第4章:ISP前端处理:原始数据校正
isp
几司2 天前
第3章:图像传感器与ISP协同设计
isp
几司5 天前
第1章:ISP概述与发展历程
isp
木 东12 天前
图像高亮处过曝,该如何解决
图像处理·数码相机·camera·isp
岁月蹉跎的一杯酒15 天前
全志ISP调试相关文档—持续更新
isp
几司17 天前
OpenISP 模块拆解 · 第9讲:伽马校正 (GAC)
isp