上一篇博客里面,我们提到了这些重要结论:
- 塑料卷云背景图同时承载了无规律散射角度函数、冰晶质量空间分布两个信息;
- 模拟的理想化冰晕图像,提供了光学质量最好的冰晶的散射角度函数图形;
- 我们需要把一部分的无规律散射角度函数去除,再在冰晶质量与光学厚度较合适的区域叠加光学质量最好的冰晶的散射角度函数图形,合成最终的冰晕图像。
我们需要的材料有:
- 塑料卷云背景图;
- 理想化冰晕模拟得到的模拟图;
- 对齐上述两者的相机参数,例如 azimuth、pitch、FOV、投影方式等等;
材料
- 塑料卷云,拍摄于 2024年10月28日 13:08 的地坛公园,当时太阳高度角为 34.9度。卷云的冰晶质量很差,只有勉强可见的一点点上切弧,而且极为模糊。

-
对齐照片拍摄的方位角,Pitch=31.90°,Yaw=31.52°,设备是 iPhone 15 的广角模式,对应的垂直方向 FOV 大约是 82°。
-
生成模拟图,反正都是合成的不如做个好看的,我们设置了一系列的三角和长条的锥晶叠加 Parry+Lowitz 的取向合成的 Display。我们使用 HaloRay 实现了模拟图生成,因为速度比较快,生成质量也比较好。这里需要注意,要多增加一些模拟点(原设置的3倍)来减小采样噪声点,输出的时候亮度需要适当调低(比如10-15)防止模拟图这一步就过曝了导致失去饱和度。

提取冰晶质量空间分布
这一步我们希望将天空中的卷云部分提取出来,变成类似卷云掩码的东西。这一步我们的操作步骤是:
- 通道混合:将红色通道拉高,蓝色降低,先将天空中云与非云区域的对比度增大;我们配置 (R,G,B) = (200%,10%,-90%) 的单色混合。

然后我们要将卷云与非卷云部分区分来开,而且还要保留卷云的细节。为什么不能直接用上面的图当正片叠底呢,因为这张图距离太阳比较近,由于卷云杂乱的米散射本身会有一个比较低频率的散射角度函数(空间分布缓慢变化的意思),这一部分在提取卷云形态的时候是要被去掉的,还要保留高频的卷云纹理,因此我们要对原图进行一个高频滤波。
当然光高频率波本身也是不够用的,高频滤波会损失掉卷云本身分布的低频信息,导致卷云大块的明暗对比分布不见了只剩下细节,所以一部分低频信息最后还要加回来。
所以这里我们的操作是,使用多个高斯模糊减去原来的图像,留下高频信息,作为正片叠底的图。
-
准备两个高斯模糊的图像,高斯模糊使用的标准差要不一样,我们这里用了 130px 与 250px(原图 4032x3024)。前者能够留下较高频率的云细节信息,后者能留下部分卷云本身的大范围分布。
-
注意模糊完了之后调整一下曲线,防止待会减去的时候截断了一些信息。调整曲线一定要用直线,一定要保持斜率=1。

- 然后,两个模糊后的图和原图相减得到高频信息图。这两个高频信息图可能还要手动上拉一下曲线让像素分布均匀一点,然后最后加权叠加得到近似的冰晶质量空间分布。

可能还要添加一个地物 mask 什么的遮挡一下地面附近的部分。
效果调优
最后就比较简单了,将冰晕模拟图(调整色彩均衡到偏黄一些)与冰晶质量空间分布正片叠底,再与原图滤色叠加就可以了。
- 注意在叠加之前,可以在原图背景上线性加深的叠加一个透明度的冰晕亮度负片(只需要5%的透明度,蓝灰色)来降低原本位置的云层亮度,防止叠加之后亮度过高。这也是在模拟消除原本的部分散射角度函数来叠加新的角度散射函数,某种程度上维护原图亮度的“无偏性”。
然后就叠加:

额,不过看起来好像还是不太可以。很明显这张图的冰晕颜色过于鲜明了,而且边缘太锐利了。
理想化模拟得到的冰晕都是锐利的、颜色分离较为清晰的。模拟中没有考虑冰晶的衍射的效应,纯粹按照几何光学的方式模拟光线的传播。衍射会导致冰晶折射反射的阳光变得更发散,形成的冰晕更“奶糊”。这种效应是如此的常见与明显,以至于直接将这种模拟图与天空背景合成冰晕会得到不真实的结果。在让结果变得更真实的动机驱动下,通过调整合成参数,让冰晕变得更加“符合经验”。
不过问题不大,我们可以用高斯模糊去模拟衍射的效果。我们加上了 10px 半径的高斯模糊,事情就变得合理起来了。

不过我们模拟的取向还是有点太好了,紫光过多了一点点。但大致方向上已经比较对了。
这个高斯模糊的半径与衍射产生的艾里斑大小(虽然不是圆孔衍射但是可以近似远场的光强分布)是有关系的,所以这里就出现一个很有意思的点,可以通过冰晕的模糊度(这东西我不知道怎么定义)定性反推冰晶大小大致处于的区间范围。
如果想要特别写实,可以多模拟几个不同强度的模糊图像后,加权平均一下。有的时候,高强度的模糊会导致冰晕内边缘过于不清晰,但低强度的模糊又会漏出来一点点锥晶幻日的"v"形。这一点可以通过引入部分大冰晶来缓解。比如下面这个图里面的锥晶幻日就是使用三个不同大小的冰晶形成的光斑模糊得到的,并且三个大小的模糊图像进行了一定的加权求和,来模拟冰晶的谱宽度。怎么确定模糊强度以及与谱宽联系起来的内容下一章节涉及。

小冰晶对应的模糊

三种冰晶加权后对应的模糊

2022/8/21安徽安庆锥晶冰晕,来自 Sufflection 以及对 storm-chasers.cn 图片链接的引用。实际的锥晶冰晕更类似一些中间状态,20度幻日似乎有更大的冰晶。
AIGC 后处理
后处理的过程主要是为了消除掉一些由于分辨率不同、色阶断层或者压缩算法导致的细节问题(比如冰晕细节上会有一些奇怪的方块形状,放大看上图可以看到)。我们这里可以借助 AIGC 的能力让 AI 重绘来消除这些东西。一个比较好的提示词思路是,让AI消除地面景物中不重要的东西,保持其他部分完全不变。比如这里给豆包(对应的图像生成模型是 Seedream 4.0)说:
消除画面下方的人
就会得到:

虽然很不幸地面上的细密的砖石平行线被 AI 重绘的过程扭曲了,产生了新的细节问题,但问题不大。