第三章 色彩空间与色彩理论:RGB、HSV、Lab 详解

做暗光增强,说白了就是在跟像素值打交道。但像素值本身并不直观——你盯着一个 RGB 三元组 (12, 45, 78),能想象出它是什么颜色吗?反正我不能。

所以这一章,我们来聊聊色彩空间。我个人的经验是:选对色彩空间,后续的增强工作能省一半力气。

3.1 RGB 色彩空间:最熟悉的陌生人

RGB 是硬件最爱的颜色表达方式。显示器、摄像头、图像传感器,底层全是 RGB。它用红、绿、蓝三个通道的强度来混合颜色,每个通道通常 0-255(8 位)。

但 RGB 有个大问题:通道之间高度相关。你调整亮度,三个通道一起变;你调色温,三个通道也跟着一起变。这在暗光增强里非常头疼——你很难单独控制「亮度」和「颜色」。

核心认知:RGB 适合存储和显示,但不适合图像处理。尤其是暗光场景,RGB 三个通道的信噪比差异巨大,直接处理容易放大噪声。

我记得有一次做夜景视频增强,直接在 RGB 空间做直方图均衡化,结果绿色通道的噪声被放大了三倍,画面一片花绿。后来我学乖了——先转色彩空间,再动手。

3.2 HSV 色彩空间:把颜色拆开看

HSV 把颜色拆成三个独立分量:

  • H(Hue,色调):0°-360°,描述是什么颜色(红、绿、蓝等)
  • S(Saturation,饱和度):0-1,描述颜色有多纯
  • V(Value,明度):0-1,描述颜色有多亮

为什么 HSV 好用?因为 V 通道独立于 H 和 S。你调整亮度,不会改变颜色本身。这在暗光增强里简直是救命特性。

我的习惯:做暗光增强时,先转 HSV,只对 V 通道做亮度提升和对比度调整,H 和 S 通道保持不动或只做轻微去噪。这样能最大程度保留原始色彩。

但 HSV 也有坑。H 通道是角度值,0° 和 360° 其实是同一个颜色。做直方图操作时如果不做环形处理,会出现颜色跳变。我曾经因为这个 bug 调试了一整天——画面里红色区域突然变成紫色,找了好久才发现是 H 通道的边界问题。

3.3 Lab 色彩空间:人眼视角的终极方案

Lab 是 CIE 制定的色彩空间,目标是感知均匀——两个颜色在 Lab 空间里的欧氏距离,大致等于人眼感知到的颜色差异。

  • L(Lightness,亮度):0-100,纯黑到纯白
  • a(绿-红轴):负值偏绿,正值偏红
  • b(蓝-黄轴):负值偏蓝,正值偏黄

Lab 最大的优势是:L 通道完全独立于 a、b 通道。你可以在 L 通道上做任何亮度调整,a、b 通道纹丝不动。而且 Lab 的色域比 RGB 大得多,能覆盖所有人眼可见的颜色。

注意:Lab 空间不是线性空间。从 RGB 转到 Lab 需要经过 XYZ 中间空间,而且转换公式里包含非线性变换。代码实现时要注意数值范围,尤其是 L 通道的 0-100 和 a、b 通道的 -128~127 之间的映射关系。

我个人在色彩重建任务中,90% 的情况都用 Lab 空间。尤其是做色彩校正和色温调整时,在 a、b 通道上操作比在 RGB 上直接调三个通道要直观得多。

3.4 色温与白平衡:让白色回归白色

色温这个概念,说白了就是光源的颜色倾向。低色温(2000K-3000K)偏黄,像蜡烛光;高色温(6000K-8000K)偏蓝,像阴天的天空。

暗光场景下,光源色温往往不稳定。路灯可能是 2700K 的暖黄光,月光可能是 4100K 的冷白光。如果不做白平衡校正,整张照片会偏色严重。

白平衡的核心目标:找到场景中应该是白色的区域,然后调整 R、G、B 通道的增益,让这个区域变成纯白(R=G=B)。

常用的白平衡方法:

方法 原理 适用场景 缺点
灰度世界法 假设场景平均颜色为灰色 色彩丰富的场景 大块单色场景会失效
完美反射法 假设最亮像素为白色 有高光区域的场景 无高光时效果差
色温估计法 根据统计模型估计色温 已知光源类型 需要先验知识
学习法(CNN) 用神经网络预测白平衡参数 复杂混合光源 需要大量标注数据

避坑指南:我曾经在夜景视频里用灰度世界法做白平衡,结果因为画面大部分是黑色天空,算法把黑色当成了灰色,整段视频偏红得没法看。后来我加了前景检测,只对前景区域做白平衡估计,效果就好多了。

3.5 色彩重建的目标与评价指标

色彩重建,就是让增强后的图像颜色尽可能接近真实场景的颜色。但「真实」本身很难定义——暗光下我们根本看不清真实颜色是什么。

所以评价指标就很重要了。常用的有三个:

PSNR(峰值信噪比)

衡量像素级别的重建误差。值越大越好,通常 30dB 以上算不错。

PSNR = 10 * log10(MAX² / MSE)

其中 MAX 是像素最大值(255),MSE 是均方误差。

PSNR 的局限:它只关心像素值是否接近,不关心人眼看起来是否舒服。有时候 PSNR 很高,但画面看起来就是怪怪的。我见过 PSNR 38dB 但颜色完全偏掉的案例。

SSIM(结构相似性)

从亮度、对比度、结构三个维度比较两幅图像的相似度。值在 0-1 之间,越接近 1 越好。

SSIM(x, y) = [l(x,y)]^α · [c(x,y)]^β · [s(x,y)]^γ

SSIM 比 PSNR 更贴近人眼感知,但计算量也更大。

Delta E(色差)

在 Lab 空间里计算两个颜色的欧氏距离。Delta E 越小,颜色越接近。

ΔE = √[(L₁-L₂)² + (a₁-a₂)² + (b₁-b₂)²]

人眼能感知的最小色差大约是 Delta E = 1。Delta E < 3 通常认为颜色重建合格。

指标 范围 关注点 暗光场景下的表现
PSNR 0-∞ (dB) 像素级误差 噪声敏感,容易偏低
SSIM 0-1 结构相似性 对亮度变化不敏感,更稳定
Delta E 0-∞ 颜色差异 最能反映偏色问题

我的建议:做色彩重建评估时,三个指标一起看。PSNR 看整体误差,SSIM 看结构保留,Delta E 看颜色准确度。如果 PSNR 高但 Delta E 也高,说明图像虽然像素接近但颜色偏了——这种情况在暗光增强里很常见。

3.6 本章知识体系

下面这张图总结了三个色彩空间的关系、白平衡的作用以及评价指标的定位。你可以把它当作本章的思维导图。

色彩空间与色彩理论 · 知识体系 RGB 色彩空间 硬件原生 · 通道相关 HSV 色彩空间 色调/饱和度/明度 Lab 色彩空间 感知均匀 · 亮度独立 色温与白平衡 让白色回归白色 灰度世界法 完美反射法 色温估计法 学习法 (CNN) PSNR 峰值信噪比 SSIM 结构相似性 Delta E 色差 核心思路:选对色彩空间 → 做白平衡校正 → 用评价指标验证结果 暗光增强中,Lab 空间 + Delta E 是最佳组合

嗯,这张图把本章的核心脉络串起来了。你从 RGB 出发,可以转到 HSV 或 Lab 做处理,然后做白平衡校正,最后用三个指标来评估效果。每一步都有对应的工具和方法。