2. 杂散光基础理论:辐射度学基础、双向散射分布函数(BSDF)、杂散光传输路径分析
各位工程师朋友,咱们直接进入正题。
做杂散光抑制,说白了就是跟“不该出现的光”作斗争。你想想看,一个光学系统设计得再好,如果杂散光没控住,那成像质量就是一坨浆糊。我这些年踩过的坑,十有八九都跟基础理论没吃透有关。
这一章,咱们把三个最核心的概念掰开揉碎讲清楚:辐射度学、BSDF、还有传输路径。这三样东西,是后续所有实战操作的根基。
2.1 辐射度学基础:光能量的“度量衡”
做杂散光分析,首先得知道“光有多少”。辐射度学就是干这个的。它不像光度学那样考虑人眼视觉函数,它只关心物理能量。
我个人习惯,把几个关键量记在脑子里,随时调用:
| 物理量 | 符号 | 单位 | 一句话解释 |
|---|---|---|---|
| 辐射通量 | Φ | W(瓦特) | 光源每秒发出的总能量 |
| 辐射强度 | I | W/sr | 单位立体角内的辐射通量 |
| 辐射照度 | E | W/m² | 单位面积上接收到的辐射通量 |
| 辐射亮度 | L | W/(m²·sr) | 单位面积、单位立体角内的辐射通量 |
这里面,辐射亮度 L 是杂散光分析里最重要的量。为什么?因为BSDF的定义就是基于它。我在项目中遇到过不少新手,拿着照度值去算杂散光,结果完全对不上。记住:杂散光传输,本质上是在传递“亮度”。
核心公式(辐射亮度守恒):
在无损耗、无散射的理想介质中,沿光线路径的辐射亮度 L 是守恒的。
这意味着:你看到的光源有多亮,它在传播过程中基本不变(不考虑吸收)。杂散光之所以产生,就是因为“非理想”的表面破坏了这种守恒。
我的小习惯:
做仿真前,先用手算一遍关键路径的辐射照度变化。虽然粗糙,但能帮你快速发现量级上的错误。我曾经靠这个习惯,在项目评审前揪出一个单位换算错误,避免了返工。
2.2 双向散射分布函数 (BSDF):表面的“指纹”
BSDF,全称 Bidirectional Scattering Distribution Function。它是描述一个表面如何散射光的函数。
你想想看,一束光打到镜面上,它会反射;打到白纸上,它会漫散射。BSDF 就是用一个数学函数,把所有这些行为统一描述出来。
BSDF 的定义式:
BSDF(θi, φi, θs, φs) = dLs(θs, φs) / dEi(θi, φi)
其中:
- θi, φi:入射光的方向(天顶角、方位角)
- θs, φs:散射光的方向
- dLs:散射方向的辐射亮度增量
- dEi:入射方向的辐射照度增量
说白了,BSDF 就是“出射亮度 / 入射照度”。它的单位是 sr⁻¹(每球面度)。
BSDF 通常可以拆成三部分:
- BRDF(反射):散射光在入射面同侧
- BTDF(透射):散射光在入射面异侧
- BDDF(衍射):由表面微结构引起的衍射效应
⚠️ 避坑指南:
我曾经在分析一个红外系统时,直接用了供应商提供的“反射率”数据,没要BSDF数据。结果仿真出来的杂散光水平比实测低了两个数量级。后来才发现,那个“反射率”是积分球测的总反射率,完全没考虑角度分布。记住:杂散光分析必须用BSDF,不能用简单的反射率/透过率。
常见的BSDF模型有:
- 朗伯模型:理想漫反射,BSDF = 常数。适用于粗糙黑漆表面。
- 高斯模型:适用于抛光金属表面,散射集中在镜面反射方向附近。
- ABg 模型:工程上最常用,参数 A、B、g 可以通过实测数据拟合得到。
ABg 模型的数学形式:
BSDF(β) = A / (B + |β - β0|^g)
其中 β 是散射角的正弦值,β0 是镜面反射角的正弦值。这个模型的好处是,用一个公式就能覆盖从镜面到漫射的广泛范围。
实战建议:
如果你手头没有实测BSDF数据,别慌。可以先用 ABg 模型,参数从文献或类似材料的数据里找。然后做灵敏度分析——把BSDF值上下调一个数量级,看看杂散光水平变化大不大。如果变化不大,说明这个表面不是关键路径;如果变化剧烈,那这个表面你必须拿到准确的实测数据。
2.3 杂散光传输路径分析:追着光跑
有了辐射度学和BSDF这两个工具,我们就可以来分析杂散光是怎么在系统里“乱窜”的了。
路径分析的核心思想很简单:找到从光源到探测器,所有可能的光线路径。这些路径可以分为几类:
- 直接路径:光源 → 探测器(通常是我们想要的信号光)
- 一次散射路径:光源 → 表面A(散射)→ 探测器
- 二次散射路径:光源 → 表面A(散射)→ 表面B(散射)→ 探测器
- 多次散射路径:三次及以上散射
- 衍射路径:光经过孔径边缘或结构边缘时发生衍射
在实际工程中,一次散射路径 和 二次散射路径 贡献了绝大部分杂散光。三次以上的散射,能量衰减很快,通常可以忽略。
下面这张图,是我自己总结的杂散光路径分析框架,你可以把它当作一个检查清单:
路径分析的具体步骤,我一般这么干:
- 列出所有“关键表面”:包括镜筒内壁、遮光罩、透镜边缘、机械结构件等。这些表面是杂散光的“策源地”。
- 判断“关键路径”:从光源出发,看哪些表面能被直接照亮。这些被照亮的表面,就是一次散射的源头。
- 计算“能量传递”:用辐射度学公式,结合BSDF数据,计算每条路径到达探测器的能量。
- 排序与筛选:把贡献最大的前几条路径找出来,重点处理。
一个实用的经验法则:
在大多数光学系统中,80%的杂散光问题,来自于20%的关键路径。你不需要把所有路径都分析一遍。先把那些“光源直接照射到、又能直接看到探测器”的表面找出来,这些通常是最危险的。
举个例子。我在做一款星载相机时,发现探测器上有一个奇怪的亮斑。按照路径分析框架,我很快锁定了镜筒内壁的一个台阶面。那个台阶面刚好被太阳光直接照射,又恰好能通过一次反射把光送到探测器上。解决方案很简单——在那个台阶面上加一道消光螺纹,问题就解决了。
我的分析工具链:
我习惯先用 Zemax 或 Code V 做光线追迹,找出所有可能的路径。然后用 Python 写个小脚本,批量计算每条路径的杂散光贡献。最后用 Pareto 图(帕累托图)把贡献最大的路径标出来。这样,跟领导汇报时,一张图就能说清楚问题在哪、该改哪里。
好了,这一章的内容就到这里。辐射度学给你一把尺子,BSDF给你一面镜子,路径分析给你一张地图。有了这三样,你就能在杂散光的迷宫里找到方向了。