前情提要

上一篇博客里面,我们提到了如果不考虑冰晶大小导致的衍射扩散,会合成不真实的冰晕。为了使得合成的冰晕能够反应冰晶的大小分布(冰晶谱),我们需要对冰晕进行一定的模糊处理。

我们将会使用真实测量的冰晶谱作为合成冰晕的模糊依据,并根据近似的艾里斑模糊来处理图像,得到想要的结果。

WARNING:下文中你将会看到大量的不可靠的简单粗暴的近似、约等于、straight through 操作,非常不精确。

艾里斑

在圆孔衍射的问题中,艾里斑描述了理想光学系统(如透镜或圆形孔径)在衍射极限条件下,一个点光源经过系统后所形成的中心亮斑。由于光的波动性,即使系统完美无像差,点光源的像也不会是一个无限小的点,而是一个由明暗相间的圆环围绕的中央亮斑,即艾里斑

虽然冰晶不是圆孔,但是在冰晶折射阳光的时候,这个光路成立的部分在冰晶内部的截面积是有限的,等效于一个形状可能不太圆的孔,所以它也会带来衍射效果。我们这里近似圆孔衍射了。

艾里斑的半径通常定义为从中心最大值到第一个强度极小值(即第一暗环)的径向距离。其近似计算公式为:

$$ R \approx 1.22 \frac{\lambda f}{D} $$

其中: - $ R $ 是艾里斑的半径(通常在像平面上测量), - $ \lambda $ 是入射光的波长, - $ f $ 是光学系统的焦距(或者观察距离), - $ D $ 是孔径(或者冰晶的“直径”)。

这个公式来源于圆孔衍射的夫琅禾费衍射理论,其中的常数 1.22 是贝塞尔函数的第一个根对应的系数,它反映了圆形对称孔径的衍射特性。公式表明,艾里斑的半径与波长 $ \lambda $ 和焦距 $ f $ 成正比,与孔径直径 $ D $ 成反比。

如果我们把焦距移到等式左边去,然后假设只考虑很小的偏转角度, $R / f$ 会比较接近 0 ,那么直接近似 $\theta = \sin \theta = \sin(R / f) = R / f$。可以估算出来,艾里斑的第一个间隔(艾里斑的角度半径)为 $\theta_0 = 1.22 \lambda / d$。这意味着使用更短的波长或者更大的冰晶,可以得到更小的艾里斑。

艾里斑图形

艾里斑图形,上图中的横纵坐标的量纲都被消去了

上图中的横纵坐标的量纲都被消去了, $k = 2 \pi / \lambda$,$a$ 为圆孔/冰晶半径。

近似艾里斑

冰晕由于衍射扩散的过程,接近于通过艾里斑对冰晕进行卷积的操作。而且很容易发现,艾里斑的主瓣长得很像一个高斯曲线,所以我们可以直接用高斯函数卷积来近似。在图像处理中这个操作一般叫做高斯模糊,可以直接拿过来用非常方便。所以我们要想一下怎么近似。

我们这里在 [-3.5, 3.5] 的区间里面用高斯函数拟合艾里斑的光强,最小二乘法的损失函数,使用LM方法来进行优化(这一切都包装在了 scipy.optimize 里面)。得到的结果如下图所示:右侧红色虚线代表高斯函数,黄色实线代表艾里斑光强。

airy_disk_plot

右侧红色虚线代表高斯函数,黄色实线代表艾里斑光强

这里最重要的结论是,当高斯函数最能拟合艾里斑的时候,它的标准差 $\sigma$ 与艾里斑的半径比值为 $3.83/1.336=2.867$。我们先计算出来艾里斑应该有的半径之后,就可以计算高斯模糊的半径(标准差)。

接下来的事就很简单了,我们检查一下图片的 FOV 取一个均值(大部分设备都是 Rectlinear 投影不是等距的,高斯卷积核在画面中每个地方都应该不一样,这里直接近似一样了),用人眼最敏感的波长 550nm计算艾里斑大小,就能将高斯模糊的像素半径与冰晶大小联系在一起了:

  • 已知冰晶大小;
  • 计算艾里斑角度半径,计算高斯模糊角度半径,计算高斯模糊像素半径;
  • 操作,得到结果,结合上一篇博客的方法就完事了。

(这里还有一个近似,就是直接将 RGB 的数值与光线强度画等号了,实际上 RGB 像素值是要经过一个反 gamma 变换才是线性的 RGB 空间然后再处理,不过在 PS 里面操作的话可以不管这么多反正已经近似大量内容了不差这点)

获取冰晶谱

接下来我们只要搞到卷云冰晶谱就可以了。这方面公开研究很多,有很飞飞机实地探测卷云冰晶大小的气象观测项目都贡献了相关的数据集。这里有一个汇总了很多前人数据的研究,而且它对数据进行了标准化处理得到了一个很好用的数据集,非常方便。数据集来自于这篇文章

rice_nice_heatmap_with_median_all

上图为热带卷云数据集(ACRIDICON, CONTRAST, ATTREX, POSIDON, STRATOLIM)的冰晶截面积加权半径(微米)数量浓度对数(cm^-1) 的二维直方图,红线为中位数。数据集中原始的冰晶等效直径是质量加权的,这里假设了 gamma 分布的冰晶谱换算成了截面积加权的绘制。

这张图的意思就是,我们假设有一个冰晶的大小,这个大小的冰晶在我们筛选出的云物理条件范围内,这可能出现的数量浓度是多少范围,这个范围是一个分布而且跨越了很多数量级,我们简单取中位数。那么这么看的话,这里需要做的是从这个总的数据集里面切分出我们想要的卷云云微物理条件范围以及冰晶范围,然后统计一下有效冰晶直径的分布,然后就可以得到一个比较可能的冰晶谱。

冰晶直径与等效衍射直径

我们好像还没定义过冰晶的直径。如果直接看那种数学上的定义,直径一般定义为冰晶内部距离最远的两个点的距离。但是实际去测量的时候,尤其是测量小冰晶,经常测量的是一个等效的直径(比如散射光去测量与粒子截面相关的信号),比较接近粒子的截面积等效直径。

而等效衍射直径这个数值就更加有点难以计算了,我不会算,也许和具体光路、冰晶形状、取向、还有角度都有关系。但是我们就假设一个平均的面积比例,非常非常的粗糙,假设一个 c/a ratio = 1 的正六棱柱冰晶,它的一个侧面面积为 1/2,侧面投影面积为 1,直径为 $ \sqrt{2} $ ,因此等效衍射直径就是侧面投影面积的一半。那我们就按照一半来计算吧,那么衍射的小孔半径就是冰晶半径的 $\sqrt{2}/2$ 倍。如果谁知道怎么算请务必告诉我,我觉得这可能会导致不同种冰晕的模糊度有差异。

锥晶幻日 case study

冰晶谱

这里我们就设置一个南方夏季的锥晶幻日的典型案例来做这件事。这里我们会用很多经验性的,不是一定可靠的条件筛选想要的卷云物理条件,这一步会大幅度影响得到的冰晶谱以及最后的冰晕模糊度。

假设这些锥晶幻日出现在 [-80, -60] 摄氏度的范围内,出现高度高于 12000m ASL,限制含冰量的范围处于 [0.001, 10] ppmv 的范围内(这一条限制没有依据),统计一下半径平方加权(也就是截面积求和加权的)冰晶尺度分布。我们假设没有直径超过50微米的冰晶,多出来那些冰晶的假设都是噪音(比如从云砧里面掉出来的很少量大冰晶不会出现在 in-situ 形成的热带对流层高层薄卷云里面,但是也被数据集测量到了)对于这个温度的卷云来说是比较合理的。

rice_weighted_trend

灰色垂直虚线代表5分位数的半径,红色星号代表半径平方加权的半径在分位数区间内的均值

对应的热力图为:

rice_nice_heatmap_with_median_0p001_10

对应的 Gaussian 卷积核半径(550nm)分别为:

区间 加权平均半径 高斯卷积核半径 (550nm)
0–20% 5.65 μm 1.677°
20–40% 9.58 μm 0.990°
40–60% 12.47 μm 0.760°
60–80% 15.73 μm 0.603°
80–100% 21.59 μm 0.439°

如果我们的垂直 FOV 是 40 度,像素也是 4000 个的话,那么角度对应到 px 就直接乘 100 就行了,非常方便。就算不是的话,也是一个比较简单的正比例计算即可。

对于非 550nm 的光线,需要通过多个通道分别计算卷积核半径,然后进行对应的高斯卷积后再加起来。这一步是很必要的,我们发现锥晶幻日内部的红色边缘会依赖这个衍射与波长的依赖性而增强

我们先模拟了一个普通的锥晶幻日设置了两种取向不一样摆动范围的冰晶(分别为5度和23度)。

锥晶幻日

然后我们对通道进行分离的模糊以及根据大气消光的叠加。使用了 0.8 个光学厚度(700nm)的消光,让阳光颜色变成橘黄色。

区间 加权平均半径 高斯卷积核半径 (550nm) 像素数 权重
0-20% 5.65 µm 1.677° 32 1
20-40% 9.58 µm 0.990° 19 1
40-60% 12.47 µm 0.760° 15 1
60-80% 15.73 µm 0.603° 12 1
80-100% 21.59 µm 0.439° 8 1

日落锥晶幻日

合成,拉一下曲线让亮度增加一些。

合成锥晶幻日

有一说一,这个 v 还是太明显了,这可能反过来说明冰晶谱里面大冰晶的区域还需要被压一下(或者取向还是太好了,也有可能是前面的冰晶谱的IWC上限过高,或者衍射等效孔径有点大了)。我们随手设置一个权重:

[3, 3, 2, 1, 1]

得到的锥晶幻日就模糊了,冰晶的典型直径可能就落到 20um 以下的区域了,相当的微小,这个大小的云滴都能形成日华了。

锥晶幻日合成权重

锥晶切弧反推冰晶大小

我们这里用去年最著名的 2025.5.12 广西崇左市特大锥晶切弧幻日事件的图来作为案例对照。

广西崇左市特大锥晶切弧幻日

对于 HaloRay 模拟得到的锥晶切弧、幻日的图进行了精细调整之后,模拟图(高度918px, 垂直 FOV=70度)的高斯模糊半径使用了3个,分别为 3px、6px、9px。

广西崇左市特大锥晶切弧幻日模拟

分别对应的锥晶的半径为 14.61 um、21.18 um、42.36 um。这个冰晶大小看起来要比南方盛夏的锥晶幻日大小大了不少,直径的典型值大约是 50um。

相比之下,锥晶幻日的冰晶直径典型值似乎只有不到 25um(由于模拟幻日过于清晰所以大概率小于25um,可能不到20um),这个锥晶切弧冰晶直径的典型值大约是 50um,大了一倍多。

锐利的外接日晕

这张图展示了一个极其锐利的外接日晕,以及一点点 Parry 弧。我们只看外接日晕的部分。

原图

我们这里分别使用 3px、4px、6px 的模糊半径进行处理,对应的冰晶半径分别是 51.82um、38.86um、25.91um。

3

高斯模糊半径 3px, 冰晶半径为 51.82um

4

高斯模糊半径 4px, 冰晶半径为 38.86um

6

高斯模糊半径 6px, 冰晶半径为 25.91um

我们大概毛估估了一下,发现 38.86um 半径(也就是 77.72um 直径)的冰晶形成的外接日晕似乎很对应。这意味着这张图里面的锐利外接日晕冰晶大小比上面两个案例都要大不少,快要接近 100um 了,算相当大的冰晶。虽然这里面涉及了很多数据,但没有严肃的定量结论,都是定性的。

结语

通过艾里斑的衍射模型近似与真实冰晶谱数据的结合,我们成功为合成的冰晕图像添加了关键的物理细节——冰晶大小分布导致的扩散效果。这一过程虽然充满了简化和近似,但它揭示了从理想几何光路迈向现实光学现象的关键一步:波动性。正是这种微观尺度上的光波行为,让冰晕在天空中呈现出柔和而迷离的边界,而非生硬的几何线条。

模拟中使用的热带卷云冰晶谱数据,让我们得以窥见自然界中冰晶尺寸的多样性,并将其量化应用到图像处理中。分离RGB通道进行波长依赖的模糊操作,更是捕捉到了锥晶幻日边缘常见的红色增强特征,进一步提升了合成的真实感。

然而,最终的图像也提醒我们,目前的模型仍有许多局限。等效衍射直径的粗糙估算、高斯模糊对艾里斑的近似、以及投影和线性化处理的简化,都意味着这只是一个“物理启发式”的视觉模拟,而非严格的物理仿真。但或许正是这种在精确与可行之间寻找平衡的尝试,让我们对冰晕——这一天空中的光学奇迹——有了更深一层的理解和欣赏。

最终,我们手中的不再只是一张由光线和冰晶构筑的几何图案,而是一幅承载着云微物理、大气光学与自然之美的综合画卷。它提醒我们,每一次抬头所见的天空奇景,背后都隐藏着一整套复杂而优雅的自然法则。


天空是一块巨大的画布,而阳光与冰晶,是它最灵动的画笔。

Share on: TwitterFacebookEmail


sdc Avatar sdc In charge of the website

Related Posts


Published

Category

博客

Tags

Contact