文章目录
- 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)^2S≈exp−(λ2πσ)2≈1−(λ2πσ)2
式中λ \lambdaλ是工作波长,σ \sigmaσ是波前误差的均方根。
这个消色差透镜的Strehl比非常小,说明波前误差很大
psf.strehl_ratio()# 0.03504820744547657