色彩空间与模型:RGB、CMYK、Lab 色彩空间详解
各位好,我是老张。干印刷控制这行快二十年了,今天咱们聊聊色彩空间。
说实话,刚入行那会儿,我也被 RGB、CMYK、Lab 这些词搞得晕头转向。后来在车间里跟老师傅们泡了几个月,才慢慢摸到门道。你想想看,一台显示器能显示 1600 万色,一台印刷机只能印几千种,这中间的差距怎么补?答案就在色彩空间里。
一、RGB:光的加法游戏
RGB 是红绿蓝三原色。显示器、手机屏、投影仪,全用这套规则。它的原理很简单:光越多,颜色越亮。
我记得有一次调试数码打样机,客户非说屏幕上的红色跟印出来的不一样。我让他把显示器亮度调到最大,结果他更懵了——屏幕上的红都快变成粉了。这就是 RGB 的典型问题:它依赖发光设备,不同屏幕差异极大。
核心公式:R + G + B = 白色(255, 255, 255)
每个通道 0-255,共 256 级。三个通道组合,就是 256³ ≈ 1670 万色。
我个人习惯:做屏幕设计时用 RGB,但一旦涉及印刷,立刻转 CMYK。千万别混着用,否则你会哭的。
二、CMYK:印刷的减法逻辑
CMYK 是青、品红、黄、黑。印刷机用的是油墨,油墨越厚,颜色越暗。这就是减法混色——油墨越多,吸收的光越多。
为什么要有 K(黑色)?理论上 CMY 叠加就能出黑色,但实际印出来是深褐色,而且浪费油墨。加个黑色通道,既省钱又干净。
| 色彩空间 | 应用场景 | 色域范围 |
|---|---|---|
| RGB | 显示器、手机、投影 | 较大(约 1600 万色) |
| CMYK | 印刷、打印、包装 | 较小(约 5 万色) |
| Lab | 色彩管理、设备校准 | 最大(人眼可见全部) |
我曾经犯过一个低级错误:把 RGB 的纯蓝色(0,0,255)直接转 CMYK,结果印出来偏紫。后来才明白,RGB 的蓝在 CMYK 里根本印不出来,必须做色域映射。
三、Lab:人眼的参考系
Lab 是 CIE 定义的色彩空间。它不依赖任何设备,只跟人眼视觉有关。L 是亮度,a 是红绿轴,b 是黄蓝轴。
为什么需要 Lab?因为 RGB 和 CMYK 都是设备相关的。同一张图,换台显示器颜色就变了。Lab 就像一把尺子,谁都能用,谁都不偏袒。
我建议你记住一点:Lab 是色彩管理的锚点。所有设备校准、色彩转换,最终都要落到 Lab 上。
四、色彩转换原理
转换不是简单的数学公式,而是查表。每个设备都有自己的特性文件(ICC Profile),里面记录了该设备能显示/印刷的颜色在 Lab 空间中的位置。
举个例子:RGB 的 (255,0,0) 在 Lab 里是 (53, 80, 67)。但印刷机印不出这么鲜艳的红,只能映射到 (50, 70, 60) 附近。这个映射过程叫色域压缩。
转换流程:RGB → Lab → CMYK
中间经过 Lab,就是为了保证颜色尽可能接近人眼看到的。
五、Gamma 校正
Gamma 校正是个坑,我踩过好几次。简单说,人眼对暗部变化敏感,对亮部变化迟钝。但显示器是线性的——电压翻倍,亮度翻倍。这就导致暗部细节丢失。
Gamma 校正就是给信号加个指数曲线,让暗部更亮一些。标准 Gamma 值是 2.2,Windows 和 Mac 都默认这个值。
# Gamma 校正示例(Python)
import numpy as np
def gamma_correct(pixel, gamma=2.2):
# 归一化到 0-1
normalized = pixel / 255.0
# 应用 Gamma 曲线
corrected = np.power(normalized, 1/gamma)
# 还原到 0-255
return int(corrected * 255)
# 测试:暗部像素 50
print(gamma_correct(50)) # 输出约 130
你看,50 的像素经过校正变成了 130,暗部细节就出来了。但要注意,Gamma 校正只在 RGB 空间做,CMYK 不需要。
我个人习惯:做印刷前,先把显示器的 Gamma 校准到 2.2。用蜘蛛校色仪跑一遍,能省很多麻烦。
六、知识体系结构图
下面这张图是我自己画的,把本章的核心逻辑串起来了。你仔细看看,应该能理解色彩空间之间的关系。
嗯,这里要注意:Lab 虽然色域最大,但计算复杂,不适合直接用于图像存储。它只做中间转换用,别想着用 Lab 存图片。
好了,这一章就聊到这儿。色彩空间是印刷控制的基础,搞懂了这些,后面讲 ICC 特性文件、色域映射、分色算法,你才能跟得上。
公众号:蓝海资料掘金营,微信deep3321