

一、问题的提出:为什么世界看起来是稳定的?
在物理层面上,物体呈现的颜色并不是固定的。
进入人眼的光信号取决于两个因素:I(λ)=E(λ)⋅R(λ)
其中:
- I(λ):进入视网膜的光谱能量
- E(λ):光源光谱分布
- R(λ):物体表面反射率
当光源变化(太阳光、LED灯、阴影环境)时,E(λ) 会明显改变,因此 I(λ) 也会改变。
然而,我们仍然会认为:
- 苹果是红色
- 叶子是绿色
- 纸张是白色
这种能力就是 Color Constancy(颜色恒常性)。
二、核心定义
Color Constancy 是指:
在光源变化条件下,人类视觉系统对物体固有颜色的稳定感知能力。
本质上,这是一个从混合信号中分离反射率的过程。
但问题在于:
我们只观察到 I,却想求 R。
这是一个典型的:
欠定问题(ill-posed problem)
理论上没有唯一解。
三、视觉系统如何实现颜色恒常性?
1️⃣ Retinex 理论
由 Edwin Land 提出。
核心思想:
颜色不是绝对亮度决定,而是通过邻域对比决定。
视觉系统会:
- 比较同一物体不同区域
- 比较物体与周围背景
- 计算整体场景的平均色调
这是一种空间对比机制。
2️⃣ 光源假设机制
视觉系统隐含假设:
- 光源通常接近“白光”
- 场景中存在接近白色的参考物体
这与相机中的“白平衡”算法类似。
3️⃣ 记忆颜色机制(Memory Color)
我们对某些物体具有颜色先验:
- 香蕉应为黄色
- 天空应为蓝色
- 人脸应为肤色
当视觉输入偏离经验过多,大脑会自动进行补偿。
四、经典视觉现象
1️⃣ Checker Shadow Illusion
由 Edward Adelson 设计。
阴影中的方块与非阴影区域的方块:
- 实际像素值相同
- 感知亮度不同
因为大脑自动扣除了“阴影光源”。
2️⃣ “The Dress” 现象
网络广泛传播的裙子图片:
- 有人看到蓝黑
- 有人看到白金
原因在于:
不同观察者对光源的假设不同。
这说明:
Color Constancy 并非固定算法,而是依赖推断机制。
五、三通道线性模型
在计算机视觉中常使用简化 RGB 模型:Ic=Ec⋅Rc
其中:
- c∈{R,G,B}
- Ic:观测值
- Ec:光源强度
- Rc:反射率
若估计出光源 Ec^,则:Rc^=Ec^Ic
问题转化为:
如何估计光源向量?
六、常见算法
1️⃣ Gray World 假设
假设:
整个场景的平均颜色应为灰色。
通过计算图像平均 RGB 来估计光源。
优点:简单
缺点:当场景颜色偏向单一色调时失效
2️⃣ White Patch 假设
假设:
场景中存在最亮白色区域。
通过最大像素值估计光源。
对噪声敏感。
3️⃣ Retinex 算法
基于对数域与多尺度空间对比。
更接近人类视觉机制。
4️⃣ 深度学习方法
现代方法:
- CNN-based illumination estimation
- Transformer-based color correction
通过大量数据学习光源分布。
优点:精度高
缺点:依赖数据分布
七、颜色恒常性的物理与认知本质
可以从三个层次理解:
① 物理层
光谱分解问题
② 计算层
从观测信号中估计光源
③ 认知层
构建稳定世界模型
视觉系统并不是追求物理精确,而是:
构建一个稳定、可预测的环境表征。
八、应用场景
Color Constancy 影响广泛:
- 相机自动白平衡
- 工业视觉检测
- 医疗影像分析
- 自动驾驶感知
- 食品颜色质量检测
如果不做校正:
同一物体在不同光源下会被误判为不同类别。
九、一个更深层理解
视觉系统在解决一个根本问题:如何区分“物体属性”与“环境影响”?
这不仅是视觉问题,也是认知问题。
我们感知到的“稳定颜色”其实是:
经过推断后的结果,而非直接输入。
十、总结
Color Constancy 是:
- 一个物理层面的分解问题
- 一个数学层面的欠定问题
- 一个认知层面的推断问题
- 一个工程层面的白平衡问题
它解释了:
为什么世界在变化光源下仍然显得稳定。