1. 色彩科学基础:人眼视觉特性、颜色三要素、加色法与减色法、色彩空间概念
各位同学好,我是这门课的主讲。在正式开始讲YUV、讲色彩空间转换之前,我觉得有必要先花一章把底层的色彩科学基础理清楚。你想想看,如果连人眼怎么看颜色、颜色怎么混合都不清楚,后面那些矩阵变换、量化公式,说白了就是一堆冰冷的数字。
我个人习惯是,学任何技术都要先问一句“为什么”。为什么YUV能压缩?为什么RGB不能直接拿来广播?答案都藏在这一章里。
1.1 人眼视觉特性——一切设计的起点
所有色彩工程,本质上都是在“骗”人眼。为什么?因为人眼本身就不是一台完美的相机。
我记得刚入行时,带我的老工程师跟我说过一句话:“你不需要把每个像素都还原得一模一样,你只需要让观众觉得‘对,就是这个颜色’就够了。”这句话我到现在都觉得是真理。
人眼视觉的几个关键特性:
- 亮度敏感度远高于色度敏感度——人眼对亮暗变化非常敏感,但对颜色细节的感知要粗糙得多。这就是YUV能压缩色度分量的根本原因。
- 对绿色最敏感,对蓝色最不敏感——这直接影响了RGB到YUV的转换系数。Y分量里绿色占比最高,蓝色占比最低。
- 视觉暂留效应——图像在人眼中会停留约0.1秒。电影24帧/秒能感觉流畅,就是利用了这一点。
我在项目中遇到过一件事:有一次做视频编码优化,我把色度分量的分辨率砍掉一半,肉眼几乎看不出区别。但如果把亮度分量砍掉一半,画面立马就糊了。这就是人眼特性在工程中的直接体现。
1.2 颜色三要素——描述颜色的三个维度
要描述一种颜色,至少需要三个参数。为什么是三个?因为人眼视网膜上有三种视锥细胞,分别对红、绿、蓝光最敏感。这是生理基础决定的。
| 要素 | 含义 | 工程中的对应 |
|---|---|---|
| 色相(Hue) | 颜色的种类,比如红、绿、蓝 | 色调角,0°~360° |
| 饱和度(Saturation) | 颜色的纯度,越纯越鲜艳 | 色度分量的幅度 |
| 明度(Brightness/Value) | 颜色的明亮程度 | Y分量、L分量 |
你想想看,RGB描述颜色用的是“红有多少、绿有多少、蓝有多少”,而HSV描述颜色用的是“这是什么颜色、有多纯、有多亮”。两种方式都能描述同一个颜色,只是坐标系不同。这就是色彩空间转换的本质——换一个坐标系来描述同一个物理量。
一个小技巧:在做图像处理时,如果只想调整亮度而不改变颜色,用RGB很难操作,但转到YUV或HSV里,直接改Y或V分量就行了。这就是为什么色彩空间转换如此重要。
1.3 加色法与减色法——两种混合逻辑
这里有一个容易混淆的点,我当年也搞错过。
加色法:光混合。红+绿+蓝=白。显示器、手机屏幕用的就是加色法。每个像素自己发光,叠加越多越亮。
减色法:颜料混合。青+品红+黄=黑。打印机、印刷品用的就是减色法。颜料吸收(减去)一部分光,叠加越多越暗。
我曾经在做一个色彩匹配项目时,把打印机的CMYK和显示器的RGB搞混了,结果打出来的样张颜色完全不对。嗯,从那以后我再也没犯过这个错。
| 特性 | 加色法(RGB) | 减色法(CMYK) |
|---|---|---|
| 原理 | 光叠加 | 光吸收 |
| 三原色 | 红、绿、蓝 | 青、品红、黄 |
| 混合结果 | 越混越亮,最终白色 | 越混越暗,最终黑色 |
| 典型应用 | 显示器、投影仪 | 印刷、打印 |
1.4 色彩空间概念——同一个颜色,不同的坐标系
说白了,色彩空间就是一套用数字描述颜色的规则。同一个物理颜色,在不同的色彩空间里,数值完全不同。
举个例子:一个纯红色,在sRGB里是(255, 0, 0),在Adobe RGB里可能是(255, 0, 0)但色域更大,在YUV里可能是(Y=76, U=84, V=255)。数值不一样,但人眼看到的颜色应该是一样的(前提是转换正确)。
常见的色彩空间有:
- RGB:最直观,硬件友好,但各分量相关性高,不适合压缩
- YUV/YCbCr:亮度和色度分离,适合视频压缩和广播
- HSV/HSL:符合人眼感知,适合图像编辑
- CMYK:印刷专用
- Lab:感知均匀,适合色彩测量
注意:不同色彩空间的色域范围不同。sRGB的色域比Adobe RGB小,比Rec.2020更小。在做色彩空间转换时,如果源色域比目标色域大,超出部分会被裁剪,造成颜色失真。这是工程中非常容易踩的坑。
下面这张图展示了本章的核心知识体系,我建议你多看几遍,把逻辑关系理清楚。
这一章的内容偏理论,但它是后面所有实战的基础。你理解了人眼为什么对亮度更敏感,就能理解YUV为什么要把亮度和色度分开;你理解了加色法和减色法的区别,就能理解为什么显示器和打印机的色彩管理那么复杂。