1. 色转换基础:色度学基础、RGB与CMYK色彩模型、色域与色温概念
各位同学好,我是老张。在显示行业摸爬滚打了十几年,今天咱们来聊聊色转换这件事。说实话,色转换是显示系统的核心,你想想看,从摄像头采集到屏幕显示,再到打印输出,每一步都在做颜色空间的转换。如果基础没打牢,后面做串扰分析时就会一头雾水。
这一章,我们先打好地基。我会从色度学的基本概念讲起,然后对比RGB和CMYK这两个最常见的色彩模型,最后聊聊色域和色温。嗯,都是些看似简单但容易踩坑的知识点。
1.1 色度学基础:人眼是怎么感知颜色的?
先问大家一个问题:颜色是客观存在的吗?其实不是。颜色是人眼对特定波长可见光的主观感知。我记得刚入行时,总以为颜色是物体的固有属性,直到做了一次色彩匹配实验才恍然大悟——同样的光谱,不同人看到的颜色可能不一样。
色度学要解决的,就是如何用数学方法把这种主观感知量化。目前最通用的标准是CIE 1931色度系统,它基于三色刺激理论:人眼视网膜上有三种锥状细胞,分别对红、绿、蓝光最敏感。
核心概念:三色刺激值
任何颜色都可以用三个基色(R、G、B)的混合来匹配。CIE通过大量实验,定义了标准色度观察者的颜色匹配函数,也就是我们常说的CIE 1931 XYZ色彩空间。
这里有个关键参数——色度坐标。我们用(x, y)两个值就能在色度图上定位一个颜色。为什么不用三个?因为亮度信息被单独拎出来了。我在项目中遇到过不少新人,拿着色度坐标直接对比颜色,结果忽略了亮度差异,导致色偏。
| 参数 | 含义 | 典型值范围 |
|---|---|---|
| x | 红色刺激比例 | 0 ~ 0.8 |
| y | 绿色刺激比例 | 0 ~ 0.9 |
| z | 蓝色刺激比例(z = 1 - x - y) | 0 ~ 1 |
| Y | 亮度(明度) | 0 ~ 100 |
我的小技巧:做色转换算法时,先把RGB转到XYZ空间再处理,比直接在RGB空间做线性变换要准得多。我曾经在某个项目中偷懒,直接在RGB空间做色温调整,结果偏色得一塌糊涂。
1.2 RGB与CMYK色彩模型:加色法与减色法
这两个模型,说白了就是两种完全相反的混色逻辑。RGB是加色法,CMYK是减色法。你想想看,显示器是发光的,所以用RGB;印刷品是反射光的,所以用CMYK。
1.2.1 RGB色彩模型
RGB模型基于加色法原理:当红、绿、蓝三束光叠加时,颜色会越来越亮。三束光全开就是白色,全关就是黑色。这个模型覆盖了人眼能感知的大部分颜色,但有个问题——它严重依赖设备。
举个例子,同一张图片在不同显示器上颜色不一样,就是因为它们的RGB基色坐标不同。我建议在做跨设备色转换时,一定要先做设备色彩特性化,把设备相关的RGB转成设备无关的XYZ或Lab。
// RGB到XYZ的转换矩阵(以sRGB为例)
// 先做gamma校正,再乘以转换矩阵
double r_lin = (r > 0.04045) ? pow((r + 0.055) / 1.055, 2.4) : r / 12.92;
double g_lin = (g > 0.04045) ? pow((g + 0.055) / 1.055, 2.4) : g / 12.92;
double b_lin = (b > 0.04045) ? pow((b + 0.055) / 1.055, 2.4) : b / 12.92;
double X = 0.4124564 * r_lin + 0.3575761 * g_lin + 0.1804375 * b_lin;
double Y = 0.2126729 * r_lin + 0.7151522 * g_lin + 0.0721750 * b_lin;
double Z = 0.0193339 * r_lin + 0.1191920 * g_lin + 0.9503041 * b_lin;
1.2.2 CMYK色彩模型
CMYK是印刷行业的标准。它用青(C)、品红(M)、黄(Y)三种颜料来吸收光线,理论上CMY叠加就能得到黑色,但实际印刷中CMY叠加出来的黑色偏暗偏脏,所以额外加了黑色(K)通道。
这里有个常见的坑:RGB转CMYK时,很多人直接用公式算,但忽略了总墨量限制。我曾经在打印一批样张时,因为总墨量超过300%,导致纸张起皱、墨水不干。后来我学乖了,做ICC配置文件时一定会检查总墨量上限。
避坑指南:我曾经在RGB转CMYK时直接套用标准公式,结果打印出来的深色区域出现严重色偏。后来发现是黑版生成策略没选对——GCR(灰成分替代)和UCR(底色去除)的参数需要根据印刷工艺调整,不能一概而论。
| 对比项 | RGB | CMYK |
|---|---|---|
| 混色原理 | 加色法(光叠加) | 减色法(颜料吸收) |
| 应用场景 | 显示器、投影仪、相机 | 印刷、打印、喷绘 |
| 色域范围 | 较大(取决于设备) | 较小(受限于油墨) |
| 通道数 | 3通道(R/G/B) | 4通道(C/M/Y/K) |
| 设备相关性 | 强依赖设备 | 强依赖设备+介质 |
1.3 色域与色温概念
这两个概念,我建议你放在一起理解。色域决定了你能显示哪些颜色,色温决定了颜色的整体基调。
1.3.1 色域:能显示的颜色范围
色域就是设备能呈现的所有颜色的集合。在CIE xy色度图上,色域通常用一个三角形来表示,三角形的三个顶点就是设备的三基色坐标。三角形越大,能显示的颜色越多。
常见的色域标准有sRGB、Adobe RGB、DCI-P3、Rec.2020等。sRGB是最基础的,覆盖了CIE色度图的约35%;DCI-P3是数字影院标准,覆盖约45%;Rec.2020是超高清电视标准,覆盖约76%。
我在做色转换方案时,最头疼的就是色域映射。源色域比目标色域大时,那些超出目标色域的颜色怎么处理?是裁剪还是压缩?裁剪会丢失细节,压缩会降低饱和度。没有标准答案,得看具体应用场景。
色域映射的三种策略:
- 感知映射:保持颜色之间的相对关系,适合照片
- 饱和度映射:尽量保持颜色的鲜艳度,适合图表
- 绝对色度映射:保持色度坐标不变,超出部分裁剪,适合品牌色
1.3.2 色温:颜色的冷暖基调
色温用开尔文(K)表示。你想想看,把一块铁加热到不同温度,它会发出不同颜色的光。温度低时偏红,温度高时偏蓝。这就是色温的物理本质。
常见的色温值:烛光约1800K,白炽灯约3200K,日光约5500K,阴天约6500K,蓝天约10000K。显示行业的标准白点是D65(6504K),相当于平均日光。
这里有个容易混淆的概念:色温越高,颜色越偏蓝;色温越低,颜色越偏红。我见过不少新人搞反了,调色温时越调越偏。
我的经验:做显示器校准时,色温偏差超过200K人眼就能察觉。但不同应用场景要求不同——印刷行业要求D50(5000K),因为印刷品通常在标准光源下观看;而显示器行业用D65(6504K),因为屏幕本身发光,需要更亮的白点。
1.4 本章小结
好了,这一章的内容就这些。色度学基础、RGB与CMYK、色域与色温,这三个概念是色转换的基石。我个人觉得,理解色度学比记住公式更重要——知道颜色是怎么被量化的,后面做色域映射、串扰补偿时才能游刃有余。