光学相位恢复新手指南:从原理到Python实现(TIE方法详解)

张开发
2026/4/6 19:02:19 15 分钟阅读

分享文章

光学相位恢复新手指南:从原理到Python实现(TIE方法详解)
光学相位恢复新手指南从原理到Python实现TIE方法详解在光学成像和干涉测量领域相位恢复是一个关键问题。当我们只能直接测量光强而无法直接获取相位信息时强度传输方程TIE提供了一种优雅的解决方案。本文将带你从零开始理解TIE方法的物理原理并通过Python代码实现完整的相位恢复流程。1. 相位恢复与TIE方法基础相位信息在光学成像中至关重要。传统的光强测量只能获取振幅信息而相位则携带了物体的三维结构和折射率分布等关键数据。TIE方法通过测量不同焦平面上的光强变化巧妙地重建出丢失的相位信息。TIE的核心方程可以表示为∇·(I∇φ) -k ∂I/∂z其中I是光强分布φ是待恢复的相位k是波数k2π/λ∂I/∂z表示沿光轴方向的光强变化率这个方程的美妙之处在于它将难以直接测量的相位梯度与可测量的光强变化联系起来。通过求解这个偏微分方程我们就能从一系列光强图像中恢复出完整的相位分布。注意实际应用中我们通常需要测量至少两个不同焦平面的光强分布来计算∂I/∂z。2. TIE方程的数学推导与理解要深入理解TIE方法我们需要从标量波动方程出发。在傍轴近似下复振幅U可以表示为U(x,y,z) √I(x,y,z) exp[iφ(x,y,z)]将其代入亥姆霍兹方程并分离实部和虚部经过一系列推导后得到TIE方程。这个推导过程虽然有些复杂但物理意义非常明确它描述了光强沿传播方向的变化与相位横向梯度之间的关系。在实际应用中我们通常采用以下步骤求解测量至少两个焦平面的光强分布I₁和I₂计算轴向光强导数∂I/∂z ≈ (I₂-I₁)/Δz求解泊松方程得到相位分布3. Python实现从模拟数据到相位恢复现在让我们用Python实现完整的TIE相位恢复流程。我们将使用NumPy和SciPy库来处理数据和求解方程。3.1 生成模拟数据首先我们需要创建一些模拟数据来测试我们的算法。假设我们有一个高斯型的相位分布import numpy as np import matplotlib.pyplot as plt from scipy.ndimage import laplace # 参数设置 nx, ny 256, 256 # 图像尺寸 x np.linspace(-1, 1, nx) y np.linspace(-1, 1, ny) X, Y np.meshgrid(x, y) # 模拟相位分布高斯型 wavelength 0.5e-6 # 波长500nm k 2 * np.pi / wavelength phi_true 2 * np.exp(-(X**2 Y**2)/0.3**2) # 真实相位 # 生成两个焦平面的光强分布 delta_z 0.01 # 焦平面间距(m) I0 np.abs(np.fft.ifft2(np.fft.fft2(np.exp(1j * phi_true))))**2 I1 np.abs(np.fft.ifft2(np.fft.fft2(np.exp(1j * (phi_true delta_z * laplace(phi_true)/2/k)))))**2 # 添加噪声模拟真实测量 noise_level 0.02 I0 noise_level * np.random.randn(nx, ny) I1 noise_level * np.random.randn(nx, ny)3.2 TIE相位恢复实现现在我们可以实现TIE相位恢复算法了def tie_phase_recovery(I0, I1, delta_z, k): # 计算轴向光强导数 dI_dz (I1 - I0) / delta_z # 预处理去除背景和归一化 I_mean (I0 I1)/2 mask I_mean 0.1*np.max(I_mean) # 求解泊松方程 ∇²φ -k/I0 * dI/dz rhs -k * dI_dz / np.maximum(I_mean, 1e-3) phi np.zeros_like(rhs) # 使用离散余弦变换求解泊松方程 from scipy.fftpack import dctn, idctn rhs_dct dctn(rhs, normortho) Nx, Ny rhs.shape x np.arange(Nx) y np.arange(Ny) X, Y np.meshgrid(x, y, indexingij) with np.errstate(divideignore): phi_dct rhs_dct / (2*(np.cos(np.pi*X/Nx) np.cos(np.pi*Y/Ny) - 2)) phi_dct[0,0] 0 # 设置直流分量为零 phi idctn(phi_dct, normortho) # 应用掩模 phi phi * mask return phi # 执行相位恢复 phi_recovered tie_phase_recovery(I0, I1, delta_z, k)3.3 结果可视化与评估让我们将恢复结果与真实相位进行比较plt.figure(figsize(15,5)) plt.subplot(131) plt.imshow(phi_true, cmapviridis) plt.title(真实相位) plt.colorbar() plt.subplot(132) plt.imshow(phi_recovered, cmapviridis) plt.title(恢复相位) plt.colorbar() plt.subplot(133) plt.imshow(phi_recovered - phi_true, cmapRdBu, vmin-0.5, vmax0.5) plt.title(误差分布) plt.colorbar() plt.tight_layout() plt.show()4. 实际应用中的注意事项与优化虽然TIE方法原理简单但在实际应用中需要注意以下几个关键点4.1 焦平面间距的选择Δz的选择对结果影响很大Δz太大有限差分近似不准确Δz太小光强变化太小易受噪声影响经验法则是选择满足以下条件的ΔzΔz ≈ λ / (2NA²)其中NA是数值孔径。4.2 噪声处理策略实测数据总是包含噪声我们可以采用以下方法改善结果多平面测量使用多于两个焦平面通过最小二乘拟合提高∂I/∂z估计精度正则化在求解泊松方程时加入正则化项抑制高频噪声迭代优化将恢复结果作为初始猜测迭代优化相位分布4.3 边界条件处理泊松方程的求解对边界条件敏感。在实际应用中可以扩展图像边缘以减少边界效应采用反射或周期边界条件使用加权最小二乘法处理边界区域5. 进阶应用与扩展掌握了基本TIE方法后可以进一步探索以下方向5.1 大相位物体的恢复基本TIE假设相位变化较小。对于大相位物体可以采用多步迭代法非线性TIE扩展强度传输方程的积分形式5.2 结合深度学习近年来深度学习在相位恢复中显示出强大潜力使用CNN网络直接从光强图像预测相位将TIE结果作为网络输入或先验知识端到端学习从多焦平面图像到相位分布的映射5.3 三维相位成像通过扫描不同深度或结合层析技术TIE可以扩展到三维相位成像轴向扫描获取多个焦平面解耦横向和轴向相位变化重建三维折射率分布

更多文章