图像基础与色彩空间:RGB、HSV、YUV详解

做图像处理这些年,我越来越觉得色彩空间是基本功中的基本功。你想想看,一张低照度照片,在RGB空间里调了半天,效果就是上不去。换个色彩空间,可能几行代码就搞定了。说白了,选对色彩空间,比调参数更重要。

RGB色彩空间:最直观,但不一定最好用

RGB是硬件最爱的色彩空间。显示器、摄像头传感器,出来的数据都是RGB。三个通道分别代表红、绿、蓝,每个通道0-255,组合起来就是1600多万种颜色。

核心认知:RGB的三个通道高度相关。亮度变了,三个通道一起变。这在低照度增强时特别麻烦——你想提亮暗部,结果颜色也跟着漂移了。

我在项目中遇到过一个问题:用RGB直方图均衡化做低照度增强,结果人脸变成了青灰色。为什么?因为三个通道分别做均衡化,破坏了原有的色彩比例。

特性 RGB 适用场景
通道相关性 高(亮度与颜色耦合) 显示、存储
光照敏感性 敏感(光照变化三通道都变) 不推荐直接做增强
人眼感知 不直观(人眼不按RGB感知) 算法内部处理

HSV色彩空间:把颜色和亮度分开

HSV把颜色拆成三个维度:色相(H)、饱和度(S)、明度(V)。这玩意儿太适合做图像增强了。你想提亮?只动V通道就行,颜色不会跑偏。

  • H(色相):0-360度,代表颜色种类。红色0度,绿色120度,蓝色240度。
  • S(饱和度):0-1,颜色纯度。0是灰色,1是最鲜艳。
  • V(明度):0-1,亮度信息。0是黑色,1是白色。

我的习惯:做低照度增强时,先把RGB转HSV,只对V通道做直方图均衡化或Gamma校正,S和H保持不动。这样亮度提上去了,颜色还是原来的味道。

嗯,这里要注意一个坑。HSV的V通道和亮度不是完全线性关系。我试过把V从0.2拉到0.8,结果图像发白,像蒙了一层雾。后来加了饱和度补偿,效果才自然。

YUV色彩空间:视频领域的王者

YUV是视频压缩和ISP(图像信号处理器)的标配。Y是亮度,U和V是色度。为什么视频用YUV?因为人眼对亮度敏感,对颜色不敏感。压缩时可以多保留Y的细节,少保留UV的细节,文件体积直接减半。

// RGB转YUV(BT.601标准)
Y =  0.299 * R + 0.587 * G + 0.114 * B
U = -0.147 * R - 0.289 * G + 0.436 * B + 128
V =  0.615 * R - 0.515 * G - 0.100 * B + 128

我曾经踩过的坑:YUV的U和V是有符号的,范围-128到127。很多新手直接当无符号处理,结果颜色全乱套。转回RGB时,记得把UV加上128再计算。

三种色彩空间对比

维度 RGB HSV YUV
亮度与颜色 耦合 分离 分离
人眼感知 不匹配 较匹配 匹配(亮度优先)
低照度增强 不推荐 推荐(只动V) 推荐(只动Y)
3A算法 AWB常用 AE/AF辅助 AE/AWB核心
计算复杂度 低 中(需转换) 低(硬件原生)

直方图:图像的统计密码

直方图说白了就是统计每个像素值出现了多少次。一张低照度图像,直方图会挤在左边(暗部)。一张过曝的图像,直方图会挤在右边(亮部)。

我个人习惯先看直方图再决定增强策略:

  • 直方图左偏:低照度,用Gamma校正或直方图均衡化
  • 直方图右偏:过曝,用Gamma校正(gamma > 1)
  • 直方图中间集中:对比度低,用直方图拉伸
  • 直方图有断档:量化损失,需要平滑处理

实战技巧:不要只看RGB直方图。我建议分别看Y通道(亮度)和S通道(饱和度)的直方图。Y通道直方图告诉你亮度分布是否均匀,S通道直方图告诉你颜色是否过饱和或欠饱和。

图像统计特征:量化你的图像

做3A算法调优时,不能只靠眼睛看。需要量化指标:

统计特征 公式/定义 在低照度增强中的作用
均值 所有像素的平均值 判断整体亮度水平(低照度时均值偏低)
标准差 像素值的离散程度 衡量对比度(低照度时标准差偏小)
偏度 直方图的对称性 判断暗部/亮部占比(正偏态=暗部多)
峰度 直方图的尖锐程度 判断噪声水平(峰度低=噪声大)
信息熵 -∑p(i)log₂p(i) 衡量图像信息量(增强后熵应增加)

我的经验:低照度增强的目标不是让均值变高,而是让标准差变大。均值从30提到80,但标准差从20掉到10,这增强就是失败的——图像变亮了,但对比度反而下降了。

知识体系结构图

图像基础与色彩空间知识体系 色彩空间与统计特征 RGB色彩空间 HSV色彩空间 YUV色彩空间 通道耦合 · 硬件原生 亮度/颜色分离 · 增强首选 亮度优先 · 视频标准 直方图与图像统计特征 均值 · 标准差 偏度 · 峰度 信息熵 直方图分布形态 应用:低照度增强 · 3A算法调优 · ISP Pipeline

实战中的选择建议

做低照度图像增强时,我建议按这个顺序选色彩空间:

  1. 首选YUV:如果ISP硬件原生支持YUV,直接用Y通道做增强,效率最高
  2. 次选HSV:如果做算法原型验证,HSV更灵活,可以同时调亮度和饱和度
  3. 避免RGB:除非你只做白平衡(AWB),否则RGB空间做增强容易出问题

注意:色彩空间转换是有精度损失的。RGB→HSV→RGB,来回转几次,像素值就变了。我一般只在算法开始时转一次,处理完再转回来,中间不反复转换。

嗯,这一章的内容就这些。色彩空间和统计特征是后续所有增强算法的基础。你把这些搞明白了,后面讲3A算法联动调优时,理解起来会轻松很多。