optiland点扩散函数PSF

optiland点扩散函数PSF

文章目录

    • PSF简介与测试
    • FFTPSF参数
    • strehl比

PSF简介与测试

点扩散函数(Point Spread Function, PSF)是评估光学系统成像质量的最核心、最本质的物理量。简单来说,就是当一个理想的无限小点光源,经过实际光学系统后,在像平面(探测器)上形成的光强分布。

设物平面的光强分布为I o ( x , y ) I_o(x,y)Io(x,y),像平面的光强分布为I i ( x , y ) I_i(x,y)Ii(x,y),在空间不变假设下,成像过程可表示为

I i ( x , y ) = I o ( x , y ) ⊗ P S F ( x , y ) + N ( x , y ) I_i(x,y)=I_o(x,y)\otimes PSF(x,y)+N(x,y)Ii(x,y)=Io(x,y)PSF(x,y)+N(x,y)

其中,⊗ \otimes为卷积,N NN为噪声,P S F PSFPSF即点扩散函数。则不考虑噪声的情况下,对上述过程进行Fourier变换,则

F [ P S F ] = F [ I i ] F [ I o ] \mathcal F[PSF]=\frac{\mathcal F[I_i]}{\mathcal F[I_o]}F[PSF]=F[Io]F[Ii]

即通过快速Fourier变换,可以快速计算点扩散函数。所以optiland中提供了FFTPSF类,用于计算点扩散函数。

下面以消色差胶合透镜为例,其结构如下

其点扩散函数为

代码如下

importmatplotlib.pyplotaspltfromoptiland.samplesimportCementedAchromat lens=CementedAchromat()lens.draw()plt.show()fromoptiland.psfimportFFTPSF psf=FFTPSF(lens,field=(0,1),wavelength=0.65)psf.view()plt.show()

FFTPSF参数

除了Optic类型的光学系统之外,【FFTPSF】在初始化时还可以传入以下参数

  • 【field】视场范围,格式是H x , H y H_x, H_yHx,Hy,代表的是视场边缘位置。
  • 【wavelength】波长,除了可以输入以微米为单位的浮点型数值外,还可以输入‘primary’表示光学系统的主波长。
  • 【num_rays】定义追迹光线数,默认128。
  • 【grid_size】FFT网格尺寸。
  • 【strategy】计算策略,可选参数包括chief_ray(以主光线为参考), centroid(以光斑质心为参考)和best_fit(以最佳拟合球面为参考),默认chief_ray.
  • 【remove_tilt】布尔型,是否在计算结果中自动移除“倾斜 (Tilt)”和“活塞(Piston)”项(这两项通常不影响成像清晰度,仅代表参考系的偏移)。

FFTPSF的返回值是一个ScalarFFTPSF对象,对象中的【psf】存储了点扩散函数的离散数组。

strehl比

Strehl表示实际光学系统 PSF 的中心峰值光强 与 同口径、同波长下完美无像差(衍射极限)系统的 PSF 中心峰值光强 之比,即

S = I a c t u a l ( 0 , 0 ) I i d e a l ( 0 , 0 ) S=\frac{I_{actual}(0,0)}{I_{ideal}(0,0)}S=Iideal(0,0)Iactual(0,0)

S SS越小,代表波前误差越大,能量从中心主斑扩散到了周围的旁瓣或背景中,成像越模糊。

根据Maréchal 近似,

S ≈ exp ⁡ − ( 2 π σ λ ) 2 ≈ 1 − ( 2 π σ λ ) 2 S\approx \exp-\left(\frac{2\pi\sigma}{\lambda}\right)^2\approx 1-\left(\frac{2\pi\sigma}{\lambda}\right)^2Sexp(λ2πσ)21(λ2πσ)2

式中λ \lambdaλ是工作波长,σ \sigmaσ是波前误差的均方根。

这个消色差透镜的Strehl比非常小,说明波前误差很大

psf.strehl_ratio()# 0.03504820744547657