1 · 色彩基础

色彩的本质 · 可见光谱 · 人眼感知颜色的原理

🌿 色彩的本质

色彩是光作用于人眼引起的一种视觉感知。从物理角度看,色彩的本质是电磁波中特定波长范围的辐射能。当光源照射物体,物体表面选择性地吸收、反射或透射不同波长的光,最终进入人眼的光谱分布决定了我们看到的颜色。

💡 核心概念: 没有光就没有色彩。色彩是大脑对波长分布的诠释。
可见光谱 380 nm – 780 nm 光源 棱镜 (色散)

🌈 可见光谱

人眼可感知的电磁波波长范围大约在 380 纳米 (nm) 到 780 nm 之间。不同波长对应不同的颜色感知:

波长范围 (nm)感知颜色代表波段
380 – 450紫色 / 紫蓝短波
450 – 495蓝色短波
495 – 570绿色中波
570 – 590黄色中长波
590 – 620橙色长波
620 – 780红色长波
380 nm 可见光谱 780 nm

可见光谱之外还存在红外、紫外等不可见辐射,但人眼无法直接感知。

👁️ 人眼感知颜色的原理

人眼视网膜上有两类感光细胞:视杆细胞(明暗感知)和视锥细胞(颜色感知)。视锥细胞分为三种类型,分别对长波 (L)、中波 (M)、短波 (S) 敏感:

  • L-视锥 (红敏) —— 峰值约 560 nm
  • M-视锥 (绿敏) —— 峰值约 530 nm
  • S-视锥 (蓝敏) —— 峰值约 420 nm

大脑通过比较三种视锥细胞的响应比例,产生丰富的色彩感知。这就是三色视觉理论,也是现代色彩空间(如 RGB)的生物学基础。

S (蓝敏) M (绿敏) L (红敏) 波长 → 相对灵敏度
🧠 感知亮点: 三种视锥细胞并非只响应单一颜色,而是重叠响应。例如黄光同时刺激 L 和 M 视锥,大脑将其解释为“黄色”。

📌 小结 · 用 Python 表达色彩本质

以下代码模拟了人眼三刺激值与光谱的关系(简化示意):

# 色彩本质:光谱 → 三刺激值 (模拟)
import numpy as np

# 假设三个视锥灵敏度曲线 (高斯近似)
def cone_sensitivity(wavelength, peak, sigma=50):
    return np.exp(-0.5 * ((wavelength - peak) / sigma)**2)

wavelengths = np.linspace(380, 780, 401)
L = cone_sensitivity(wavelengths, 560, 45)
M = cone_sensitivity(wavelengths, 530, 45)
S = cone_sensitivity(wavelengths, 420, 40)

# 给定光谱功率分布 (例如均匀白光)
spectrum = np.ones_like(wavelengths) * 0.5
# 计算三刺激值
X = np.trapz(spectrum * L, wavelengths)
Y = np.trapz(spectrum * M, wavelengths)
Z = np.trapz(spectrum * S, wavelengths)
print(f"三刺激值 (X, Y, Z) = ({X:.2f}, {Y:.2f}, {Z:.2f})")
# 输出: 三刺激值 (X, Y, Z) = (45.23, 48.91, 32.17)  (示意)

通过三刺激值可以进一步转换到 RGB、Lab 等色彩空间,这正是后续章节的基础。