能量集中度基础:PSF、斯特列尔比与环围能量
各位好,欢迎来到第二章。上一章我们聊了波前图怎么看,但波前误差最终会怎么影响成像?说白了,就是能量能不能集中到该去的地方。这一章我们就把能量集中度的三个核心概念讲透——点扩散函数、斯特列尔比、环围能量。
我个人习惯把这三者比作一套组合拳:PSF 是基础,斯特列尔比是快速指标,环围能量是工程判据。咱们一个一个来。
2.1 点扩散函数(PSF)——系统的“指纹”
点扩散函数,英文 Point Spread Function,简称 PSF。它描述的是:一个理想点光源经过光学系统后,在像面上变成了什么样子。
理想情况下,点光源应该还是一个点。但受限于衍射、像差、加工误差,实际成像会变成一个弥散斑。这个弥散斑的强度分布,就是 PSF。
数学表达:PSF(x, y) = |FT{P(u, v)}|²
其中 P(u, v) 是光瞳函数,FT 表示傅里叶变换。说白了,PSF 就是光瞳函数的傅里叶变换模平方。
我在项目中遇到过一件事:有一次调试一套显微成像系统,怎么调都觉得图像模糊。后来一测 PSF,发现根本不是衍射极限,而是镜片装调偏心导致的彗差。PSF 的形状直接告诉了我问题出在哪——不对称的拖尾,就是彗差的典型特征。
PSF 的几个关键特征:
- 中心峰值——能量最集中的位置
- 半高全宽(FWHM)——衡量弥散斑大小的常用指标
- 旁瓣结构——衍射环或像差导致的能量泄漏
你想想看,如果 PSF 的旁瓣很高,说明能量分散了,对比度就会下降。这在天文观测里尤其致命——暗弱目标会被旁瓣淹没。
2.2 斯特列尔比(Strehl Ratio)——一个数字定乾坤
斯特列尔比,简称 SR。定义很简单:
SR = 实际PSF峰值 / 理想衍射极限PSF峰值
这个比值在 0 到 1 之间。1 表示完美系统,0 表示完全不成像。工程上通常认为 SR ≥ 0.8 就是“衍射极限”系统。
为什么会是 0.8?这其实是马雷夏尔判据(Marechal Criterion)的结论:当波前 RMS 误差 ≤ λ/14 时,SR ≥ 0.8。这个判据在光学设计里被广泛使用。
| 波前 RMS 误差 | 斯特列尔比(近似) | 系统评价 |
|---|---|---|
| λ/20 | 0.98 | 极好 |
| λ/14 | 0.80 | 衍射极限 |
| λ/10 | 0.67 | 良好 |
| λ/5 | 0.37 | 较差 |
| λ/2 | 0.10 | 不可用 |
我的经验:SR 是一个快速筛选指标,但它不告诉你能量分布的具体细节。两个系统可能有相同的 SR,但一个 PSF 是均匀弥散,另一个是带彗差的拖尾——这对实际使用影响完全不同。所以 SR 要配合 PSF 形状一起看。
2.3 环围能量(Encircled Energy)——工程判据
环围能量,也叫包围能量。它描述的是:以 PSF 中心为圆心,在给定半径的圆内,包含了总能量的百分之多少。
公式很简单:
EE(r) = ∫₀ʳ∫₀²π PSF(ρ, θ) ρ dρ dθ / ∫₀^∞∫₀²π PSF(ρ, θ) ρ dρ dθ
说白了,就是算一个累积能量百分比。
我在做激光聚焦系统时,最常用的指标就是“80% 环围能量半径”。客户要求:80% 的能量必须落在 10 μm 以内。这个指标比 SR 更直观——它直接告诉你能量到底集中到了多小的区域。
环围能量的典型应用场景:
- 激光加工——能量集中度决定加工精度
- 光纤耦合——耦合效率直接由环围能量决定
- 探测器匹配——像元尺寸需要匹配环围能量半径
我曾经踩过的坑:有一次做红外光学系统,只看 SR 觉得没问题(0.85),结果装到系统里发现探测器响应不均匀。后来一测环围能量,发现 90% 的能量集中在中心 3 个像元,但外围像元几乎没信号。SR 没告诉我能量分布的形状,环围能量曲线才暴露了问题。
2.4 三者的关系与对比
这三个指标不是孤立的。我习惯这样理解:
- PSF 是原始数据,包含全部信息
- SR 是峰值对比,快速判断系统好坏
- EE 是能量累积,工程应用直接参考
举个例子:一个系统 SR=0.9,但 EE(1λ) 只有 50%,说明能量虽然峰值高,但扩散范围大。另一个系统 SR=0.75,但 EE(1λ)=80%,说明能量更集中。哪个好?看应用——如果是探测弱信号,SR 重要;如果是激光加工,EE 重要。
下面这张图展示了三者的逻辑关系:
2.5 实际计算示例
光说不练假把式。咱们用 Python 算一个简单的例子:
import numpy as np
import matplotlib.pyplot as plt
# 模拟一个带像差的 PSF(简化版)
def compute_psf(wavefront_rms, grid_size=256):
# 生成光瞳函数
x = np.linspace(-1, 1, grid_size)
xx, yy = np.meshgrid(x, x)
pupil = np.where(xx**2 + yy**2 <= 1, 1, 0)
# 添加波前误差(随机)
np.random.seed(42)
wavefront = np.random.randn(grid_size, grid_size) * wavefront_rms
pupil_complex = pupil * np.exp(1j * 2 * np.pi * wavefront)
# 傅里叶变换得到 PSF
psf = np.abs(np.fft.fftshift(np.fft.fft2(pupil_complex)))**2
psf /= psf.sum() # 归一化
return psf
# 计算 SR
def strehl_ratio(psf, ideal_psf):
return psf.max() / ideal_psf.max()
# 计算 EE
def encircled_energy(psf, radius_pixels):
center = psf.shape[0] // 2
yy, xx = np.ogrid[:psf.shape[0], :psf.shape[1]]
mask = (xx - center)**2 + (yy - center)**2 <= radius_pixels**2
return psf[mask].sum()
# 示例
ideal_psf = compute_psf(0.0)
real_psf = compute_psf(0.1) # λ/10 RMS
sr = strehl_ratio(real_psf, ideal_psf)
ee_3px = encircled_energy(real_psf, 3)
print(f"斯特列尔比: {sr:.3f}")
print(f"3像素环围能量: {ee_3px:.3f}")
我的建议:实际项目中,不要只算一个半径的 EE。我习惯画一条 EE 曲线——横轴是半径,纵轴是累积能量。这条曲线能告诉你:能量在哪个半径范围内快速上升,哪个半径之后趋于饱和。这才是真正的工程语言。
2.6 本章小结
这一章我们讲了三个核心概念:
- PSF——系统的脉冲响应,包含全部信息
- 斯特列尔比——快速判断系统是否接近衍射极限
- 环围能量——工程上直接可用的能量集中度指标
记住:SR 告诉你“有多好”,EE 告诉你“好在哪里”。两者结合,才能全面评价一个光学系统的能量集中度。