如何有效的模拟散射?

2018-01-08

概要

OpticStudio中,有两个用来提升散射模拟效率的工具:ScatterToList以及ImportanceSampling。在这篇文章中,我们详细讨论了这两个工具,并且以一个杂散光分析为例示范了如何使用ImportanceSampling。

如何有效的模拟散射

对于绝大多数光学系统进行散射模拟是非常重要的,尤其在杂散光分析中散射模拟更是关键所在。ZemaxOpticStudio有很多内建散射模型,这些模型支持使用者输入任何散射分布。在非序列光线追迹中,需要使用非常多的光线射向模拟物件才能精确而适当的模拟散射分布。特别是当观察目标相对于散射点占据的立体角很小时,这个问题会更加严重。最简单直接的办法就是增加入射或是散射的光线数量使更多的光线到达要观察目标。但是追迹更多光线会需要更多的时间,因此模拟散射就变的非常费时。

在OpticStudio中,我们可以使用“ScatterToList”来改进散射模拟效率,此设定强制系统只追迹那些散射到指定物件的光线而忽略其他光线。不过这并不是说光线一定会散射到指定物件上,因此对于大量光线模拟这种方法并不能改善太多。另一个OpticStudio中的“ImportanceSampling”设定,则可以大幅地增进散射模拟的效率。这两个工具都可以在ObjectProperties的ScatterTo标签中找到。


ImportanceSampling原理上与ScatterToList大不相同。如果我们在ImportanceSampling中加入一个物件,OpticStudio则会以这个物件为中心画出一个虚拟的球体,然后所有的散射光将只会往这个球体过去。OpticStudio还会考虑散射分布,调整这些光线的权重,让被照物体的散射光通量合理分布,这可以让信噪比提升。当然,使用者可以自定义目标的虚拟球体的大小,以决定散射光要应用的立体角大小。

在下面的系统中,一道光束入射到一个Lambertian散射的平面上,可以看到散射光线形成一个半球。即使每条入射光线有多达10条散射光线,还是只有一小部分的散射光才能击中探测器。


但是如果我们开启ImportanceSampling,如下图,就会有大量的光线到达探测器。


使用ImportanceSampling时有几个重要的特性须先了解。首先,散射光线的目标并不是物件本身,而是以该物件中心为圆心所形成的一个虚拟球体。此外,这个目标球体应该要比物件本身稍微大,以确保散射光线可以填满整个物体。

设定目标球体时,有一个Limit参数主要用来确保散射面的BSDF分布在目标立体角中不会剧烈变化。这个参数必须设定,与OpticStudio分配这些散射光能量的方式有关。就像我们前面提到的,光线的散射方向与BSDF无关,因此这些光线的光通量必须要能适当调整。每个由ImportanceSampling设定产生的散射光线都会有相同数量的光通量。OpticStudio会把立体角内的BSDF平均分配到每一条散射光线。下图的散射函数图中,我们在MagnitudeofScatterVector区域中标出一个特定区段(垂直的红线),并显示OpticStudio会如何选取一个概略的BSDF值(水平的红线)来分配给所有的ImportanceSampling散射光线。


如果BSDF在所选立体角内有很明显的变化,光通量在目标球体上的分布就会不正确。

下图是一般散射与ImportanceSampling的比较表。图表系统中,共有10万条光线(AnalysisRays),而散射的目标物体相对于散射点占据0.2球面度的立体角,图表中纵轴显示的则是有击中目标物体的数量。


可以看到开启ImportanceSampling时,击中探测器的光线数量远大于一般散射,并仅耗费相当于追踪一条散射光线的时间。

模拟望远镜中的散射光

太空望远镜是最常被提到使用杂散光分析的光学系统。原因是目标信号(外太空的星体)通常非常弱,任何杂散光造成的无用信号会掩盖目标信号。本文范例中,我们将会测量在望远镜镜筒内散射,并且最终击中探测器的杂散光。


这个系统为Maksutov望远镜,内建有一个离轴的光源,用来模拟系统杂光的来源。此光源的光线先进入望远镜,然后在镜筒的表面上反射/散射。请注意:在光学元件的表面上也可能会有一些散射,但我们为了演示功能,只考虑镜筒造成的杂散光。我们把望远镜筒的内侧表面设为Lambertian散射特性,散射比例为100%。假设这个镜筒消除了镜面反射(SpecularReflection)。如果我们执行光线追迹,DetectorViewer就会给出下图。


探测器显示大约有4%的光线(0.6%的能量)真正到达探测器上。因此要精准的测量散射光在探测器上的能量,我们会需要尽可能多的光线击中探测器。

现在我们使用ImportanceSampling,在第二个校正镜上设定一个目标球体;我们无法使用探测器本身,因为它并没有直接的从任何散射点接收到光线。请注意:Size栏位定义目标球体的半径。我们故意把这个参数设的比主镜的孔径大一点,以确保可以包含到所有可能击中探测器的路径。Limit栏位保持预设值。


再一次光线追迹后,我们可以看到如下的探测器统计结果。


通过使用ImportanceSampling,我们可以让探测器上的光线提高到约两倍,并且可以更清楚看到散射的分布状况。在探测器上的总能量也明显增加了,这代表之前的取样光线数不够。

现在我们测量到达探测器的能量,我们可以决定是否需要进一步的测量分析以消除杂散光。如果信噪比仍然很高,高于我们的需求,我们也许就可以省下在望远镜内放置挡板的时间以及成本。如果需要更进一步的降低杂散光信号,我们可能就需要分析如何放置挡板,以让信噪比符合要求。

总结

OpticStudio中的ImportanceSampling功能增强了散射效率。因其限制让杂散光永远只往目标物体射去,就可以让该物件上能量的信噪比提升。

分享到:
相关阅读
文章评论
© 2018 一灯头条 t.ledcax.com 一灯网 浙ICP备17043565号
违法和不良信息举报:lixuda@ledcax.com