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 通常可以拆成三部分:

  1. BRDF(反射):散射光在入射面同侧
  2. BTDF(透射):散射光在入射面异侧
  3. BDDF(衍射):由表面微结构引起的衍射效应

⚠️ 避坑指南:

我曾经在分析一个红外系统时,直接用了供应商提供的“反射率”数据,没要BSDF数据。结果仿真出来的杂散光水平比实测低了两个数量级。后来才发现,那个“反射率”是积分球测的总反射率,完全没考虑角度分布。记住:杂散光分析必须用BSDF,不能用简单的反射率/透过率

常见的BSDF模型有:

  • 朗伯模型:理想漫反射,BSDF = 常数。适用于粗糙黑漆表面。
  • 高斯模型:适用于抛光金属表面,散射集中在镜面反射方向附近。
  • ABg 模型:工程上最常用,参数 A、B、g 可以通过实测数据拟合得到。

ABg 模型的数学形式:

BSDF(β) = A / (B + |β - β0|^g)

其中 β 是散射角的正弦值,β0 是镜面反射角的正弦值。这个模型的好处是,用一个公式就能覆盖从镜面到漫射的广泛范围。

实战建议:

如果你手头没有实测BSDF数据,别慌。可以先用 ABg 模型,参数从文献或类似材料的数据里找。然后做灵敏度分析——把BSDF值上下调一个数量级,看看杂散光水平变化大不大。如果变化不大,说明这个表面不是关键路径;如果变化剧烈,那这个表面你必须拿到准确的实测数据。

2.3 杂散光传输路径分析:追着光跑

有了辐射度学和BSDF这两个工具,我们就可以来分析杂散光是怎么在系统里“乱窜”的了。

路径分析的核心思想很简单:找到从光源到探测器,所有可能的光线路径。这些路径可以分为几类:

  1. 直接路径:光源 → 探测器(通常是我们想要的信号光)
  2. 一次散射路径:光源 → 表面A(散射)→ 探测器
  3. 二次散射路径:光源 → 表面A(散射)→ 表面B(散射)→ 探测器
  4. 多次散射路径:三次及以上散射
  5. 衍射路径:光经过孔径边缘或结构边缘时发生衍射

在实际工程中,一次散射路径二次散射路径 贡献了绝大部分杂散光。三次以上的散射,能量衰减很快,通常可以忽略。

下面这张图,是我自己总结的杂散光路径分析框架,你可以把它当作一个检查清单:

杂散光传输路径分析框架 光源 探测器 直接路径(信号光) 表面A 一次散射 表面B 表面C 二次散射 孔径边缘 衍射路径 直接路径 一次散射 二次散射 衍射路径

路径分析的具体步骤,我一般这么干:

  1. 列出所有“关键表面”:包括镜筒内壁、遮光罩、透镜边缘、机械结构件等。这些表面是杂散光的“策源地”。
  2. 判断“关键路径”:从光源出发,看哪些表面能被直接照亮。这些被照亮的表面,就是一次散射的源头。
  3. 计算“能量传递”:用辐射度学公式,结合BSDF数据,计算每条路径到达探测器的能量。
  4. 排序与筛选:把贡献最大的前几条路径找出来,重点处理。

一个实用的经验法则:

在大多数光学系统中,80%的杂散光问题,来自于20%的关键路径。你不需要把所有路径都分析一遍。先把那些“光源直接照射到、又能直接看到探测器”的表面找出来,这些通常是最危险的。

举个例子。我在做一款星载相机时,发现探测器上有一个奇怪的亮斑。按照路径分析框架,我很快锁定了镜筒内壁的一个台阶面。那个台阶面刚好被太阳光直接照射,又恰好能通过一次反射把光送到探测器上。解决方案很简单——在那个台阶面上加一道消光螺纹,问题就解决了。

我的分析工具链:

我习惯先用 Zemax 或 Code V 做光线追迹,找出所有可能的路径。然后用 Python 写个小脚本,批量计算每条路径的杂散光贡献。最后用 Pareto 图(帕累托图)把贡献最大的路径标出来。这样,跟领导汇报时,一张图就能说清楚问题在哪、该改哪里。

好了,这一章的内容就到这里。辐射度学给你一把尺子,BSDF给你一面镜子,路径分析给你一张地图。有了这三样,你就能在杂散光的迷宫里找到方向了。


专注资料整理