天为什么是蓝色——纯正的天蓝色是什么样的?
天为什么是蓝色——纯正的天蓝色是什么样的?
为什么天空是蓝色的?这是一个看似简单却蕴含着丰富物理原理的问题。本文将从光源、介质和接收器三个角度,结合物理学原理、数学公式和实验验证,深入探讨这个有趣的现象。
理论分析
光的传播离不开光源-介质-接收器,后文便也按这个思路分析:
光源:黑体辐射
太阳发光近似看作黑体,黑体辐射的波长-光强满足普朗克定律:
[I(\lambda, T) = \frac{2 h c^2}{\lambda^5} \frac{1}{e^{\frac{h c}{\lambda k_B T}} - 1} ]
关于黑体:黑体能够吸收任意波长的入射电磁波,同时辐射的电磁波满足普朗克定律。说到黑体,印象中往往只要温度不变辐射就满足固定分布,这背后同时也隐含着吸收的能量,因为温度不变下,辐射能量完全等于吸收能量,吸收和辐射是一体俩面的。太阳能够近似为黑体,也源自极其的吸收能力。
太阳的温度约为 5778 K,其辐射曲线(光谱)如下:
其中绿色是可见光波长范围(380-780nm),选取了三个点,分别代表典型的紫光(410nm)、蓝光(475nm)以及红光(685nm)的波长。
可以看到蓝光的波长接近辐射极大值,这是否是天空呈现蓝色的原因呢?且待后文进一步分析。
关于光谱:光谱的概念很像频域,如果按频域的概念,信号实际上是一堆在正交坐标系下分解的分量的叠加(加权和),横坐标代表频域,纵坐标代表该频率分量大小,则原始信号则是按照某种加权积分(傅里叶逆变换)。但光并非可以简单叠加不同频率的成分,绘制光谱暗含了假设各个成分是非偏振的。这个理解很合理,因为正交意味着相互垂直,没有投影,互不干扰,只有非偏振,各向振幅随机才能满足该性质。
介质:瑞利散射
瑞利散射描述了散射下角度、波长以及光强之间的关系。什么是散射?听名称,散射既改变了传播方向,又增加了传播路径的数量,也就是折射plus。全反射也是“聚是一团火,散是满天星”,全反射是否也是散射呢?询问 GPT 老师,散射还隐含着偏向性,即各向异性的,而全反射是各向同性的。所以散射是改变了传播方向、增加了传播路径数量且满足各向异性的一种玩意儿。
弄明白散射再来看看瑞利散射,其公式如下:
[I_s = I_0 \frac{1 + \cos^2 \theta}{2R^2} \left( \frac{2\pi}{\lambda} \right)^4 \left( \frac{n^2 - 1}{n^2 + 2} \right)^2 r^6 ]
其中(I_0)是原始光强,(\theta)是散射角(散射方向和原始方向夹角),(R)代表接受距离散射点距离,(r)代表散射粒子半径。
抽离和波长相关的部分,散射强度和波长(\lambda)成四次方反比,假设(\lambda \rightarrow 0),岂不是有光强(I_s \rightarrow \infty)的离谱结论?原来瑞利公式成立需要满足(r << \lambda),散射粒子足够小,远远小于波长。空气分子尺寸大概在 0.1~1 nm 数量级,远远小于可见光 100nm 的量级,瑞利散射成立。但对于 PM 2.5,2.5um 左右的颗粒就不满足瑞利散射的条件了我知道是达尔文效应(雾)。
从散射角看,(\theta)为 0 或 180 ° 时角度因子最大,90 ° 时因子最小,也就是散射光在正向或者反向强度最大,在侧向最小。
实际光线经过厚厚的大气层,不断散射散射,所看到的光是散射光的累加。但这样分析太过复杂,不妨假设大气厚度趋于0,只散射一次,且正午太阳直射,我们以(90° - \theta)角度抬起脑袋仰望天空,接受到了距离为(R)处发生散射的光线。也就是说,只考虑和波长成四次方反比。
[I_s \propto \frac{1}{\lambda ^ 4} ]
接收器:三视锥细胞
光进入眼前含有一堆复杂成分,人是怎么处理将其映射到某一个颜色的呢?
肉眼中存在三种视锥细胞,分别对可见光内不同的成分敏感。对于一个成分为(S(\lambda))的光,有公式:
[\begin{align*} X &= k \int_{380}^{780} S(\lambda) \overline{x}(\lambda) d\lambda\ Y &= k \int_{380}^{780} S(\lambda) \overline{y}(\lambda) d\lambda\ Z &= k \int_{380}^{780} S(\lambda) \overline{z}(\lambda) d\lambda \end{align*} ]
其中(\overline{x}, \overline{y}, \overline{z})叫做 Color Matching Functions, 代表不同视锥细胞对颜色的刺激。对多数个体实验记录得到函数形式大概如下:
CMF 在频域上按光频率强度在可见光范围积分,得到得称作对于该视锥细胞的刺激值。X、Y、Z 的比例,反应了得到颜色的色相,X、Y、Z 总刺激的平均,反应了颜色的光强。
刺激值和色相的转换可视化图如下,称作 CIE 1931 色度空间,横纵坐标代表 X、Y 刺激值,因为色相只需要反映三者比例,归一化只需要二维表示。而图形的边缘,正好是纯色可见光的色相,因此能直接对应波长。
看 DNN 早期可解释性就有用这个模型解释的,CMF 相当于权重,(S(\lambda))相当于输入 feature,加权积分就是 MAC,而从刺激值到色彩空间的变换是非线性的相当于激活函数。不过引用陈云霁老师的话,人工神经网络之于神经网络,米老鼠之于老鼠啦!
实验结论
选取 380-780nm 范围作为可见光范围,
- 根据普朗克公式计算出 5578K 下可见光波长内的光谱;
- 经过瑞利散射,按照波长四次方反比关系滤波信号;
- 最后和 CMF 加权求积分,结果转换到 RGB 空间
可视化颜色,如图:
R: 140, G: 178, B: 253,就是在这个简单模型下的纯正的天蓝色!
消融实验
蓝色是否是黑体辐射引起的呢?假设光强按均匀分布,最后得到的颜色数值也近似天蓝色,数值为 R:147 G:176 B:254,变化很小,所以蓝色并非是由黑体辐射导致光源波长分布不均匀导致。
而若取消瑞利散射的滤波,则得到近似白色。所以蓝天是因为瑞利散射的结论是正确的。
之于天为什么不是紫色从数学上也大概能看出,总体颜色是对各个波长的积分,在紫色红色一搅合,最后呈现中间的蓝色了。
这么说,网上一般说法瑞利散射,对蓝光散射强,红光散射弱,所以呈蓝色不完全正确。严谨的表述应是:瑞利散射波长短散射强,波长强散射弱,可见光内紫光散射强,红光散射弱,一强一弱,原本混合白色的太阳光向中间的蓝色偏移了。
相关代码开源在github