能量集中度基础: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 重要。

下面这张图展示了三者的逻辑关系:

能量集中度核心概念关系图 波前误差 点扩散函数 (PSF) 斯特列尔比 (SR) 环围能量 (EE) 工程应用:系统评价 / 像质判定 / 耦合效率 说明: PSF 是基础数据,SR 和 EE 从不同维度提取信息。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 告诉你“好在哪里”。两者结合,才能全面评价一个光学系统的能量集中度。