我一直觉得,做图像这行久了,会养成一种职业病:别人看颜色靠感觉,我们看颜色靠数值。设计师说“这个蓝不够高级”,我的第一反应是打开取色器看RGB通道分布;客户说“照片拍出来发灰”,我脑子里先过一遍白平衡和Gamma曲线;现场反馈“检测系统颜色误判”,我下意识会追问光源色温和相机色彩空间。颜色这东西,在外行眼里是审美玄学,在图像工程师手底下,是一条从物理光谱到像素值、再到算法特征的完整链路。
这篇文章就聊聊图像工程师是怎么理解色彩与视觉的。它不是玄学,而是可测量、可计算、可调试的工程对象。我会从色彩科学基础讲到颜色传感器,再聊图像复原、视觉SLAM、大模型这些进阶方向里颜色扮演的角色,最后结合日常工具链给出一些实操经验。适合刚转图像算法的工程师、做工业视觉检测的现场人员,也想帮正在学视觉SLAM或图像处理的学生建立一套完整的颜色认知框架。
1. 颜色的主观是错觉,工程师眼里的颜色全是可计算量
1.1 颜色不是物体的属性,而是“光线-物体-观察者”三者的函数
很多人以为颜色是物体自带的性质,比如“苹果是红色的”。严格说,苹果本身没有颜色,它只是反射了一部分光谱。当一束光打到苹果表面,果皮吸收了大部分短波和中波能量,把长波能量反射出来,这些反射光进入人眼,经过感光细胞和大脑的解码,才产生了“红色”的知觉。
这就引出一个关键结论:颜色是“光源光谱、物体反射率、观察者光谱响应”三个变量的函数。光源换掉,颜色就变;观察者换掉,颜色也变。这也是为什么工业现场明明指示灯是同一颗红色LED,不同人拍出来却效果各异——相机传感器响应、白平衡策略、色彩编码全都参与了颜色生成。
在工程上,我们不需要哲学式地讨论“颜色的本质”,只需要把它定量化。CIE 1931色彩空间干的事,就是把“人眼的平均响应”变成一张查找表:任意一束光谱功率分布,通过XYZ三刺激值加权积分,就得到一个唯一的坐标。这个坐标不依赖主观描述,可以在色度图上被精确标定。所以当我说“这块区域的色度坐标是x=0.45、y=0.41”时,它比“这是橙色”严谨得多。
这类知识的价值,不只体现在学术论文里。我在做工业色差检测时,判定标准就写在“Lab色差值Delta E小于2”这类量化指标上,而不是“看起来差不多”。如果你正在做检测类项目,建议早点把颜色度量的思路建立起来,不然客户一句“颜色不对”而你只能凭肉眼调参,那才是真的玄学。
1.2 Gamma:像素值128并不等于50%亮度
再往深一层,像素值本身也不等于物理亮度。CRT时代的显示器和后来的各类屏幕,为了在有限的8bit精度里更好地利用人眼对暗部更敏感的特性,对亮度信号做了一次非线性编码,这个编码曲线就是Gamma。
sRGB标准里的Gamma大约是2.2。也就是说,某个像素值128存储的,并不是最大亮度的一半,而是约21.4%的线性亮度。反过来,当图像处理算法直接在sRGB像素值域里做加减乘除,结果往往不符合物理直觉。
举个非常实际的例子:给图像做高斯模糊。如果在sRGB空间对像素值直接做邻域平均,暗部区域会明显“变亮”,亮部区域会“变暗”,整体的饱和度还会偏移。正确做法是先把sRGB像素值通过de-gamma变换还原成线性光强,在线性空间里做模糊,最后再编码回sRGB。这个细节在图像融合、HDR合成、降噪、超分低层特征处理里都会遇到,处理和不处理的视觉差异,你放一张黄昏天空的照片对比一下就知道,差别大到离谱。
所以我的建议是:任何涉及像素运算的算法模块,先问自己一句,当前数据处在什么颜色空间、是否线性的。如果项目里还没有色彩管线图,赶紧补一张,把“采集→去马赛克→白平衡→Gamma编码→算法处理→输出显示”每一段标清楚,它能帮你避免八成说不清道不明的颜色bug。
1.3 白平衡:给颜色恒常性做一个工程近似
人眼有个特牛的能力叫颜色恒常性:一张白纸在日光下是白的,在烛光下你依然觉得它是白的,因为大脑会基于场景光源做自动补偿。相机没有这个本事,它只忠实记录光谱能量分布。在钨丝灯下拍照,整张图会偏黄;在阴天户外,偏蓝。这些偏差全部来自光源色温变化。
工程师解决这个问题的方法是白平衡。灰世界假设是其中一种:如果一张图里所有颜色的平均值是灰的,那么R、G、B三通道的均值应当相等,不相等就说明有光源偏色,用增益系数补偿回去。工业相机通常还支持自定义白平衡,拿标准灰卡放在目标位置采一帧,让相机记住“这个场景里什么才是白”。
白平衡这件事必须排在视觉算法前面,因为它直接决定后续颜色特征提取的阈值是否可靠。我在一个印刷品检测项目里遇到过:同样的墨色判定算法,上午OK下午NG,查到最后是车间窗户透进来的自然光随时间变化,导致白平衡漂移。后来在相机前加了偏振片、固定了光源色温,问题彻底消失。这个经验蛮多同事都踩过,颜色相关项目,环境光照控制永远优先于算法调参。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 设备端如何“看见”颜色:传感器、色彩空间与光源选型
2.1 颜色传感器是把颜色变成电路信号的工业级方案
除了相机,工业上还有一种更直
