news 2026/5/1 4:43:02

生成模拟干涉图

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
生成模拟干涉图

移相算法求解相位,相位解包裹,泽尼克多项式拟合程序

最近在实验室折腾相位测量,发现光干涉数据处理的三个关键环节:移相算法提取相位、相位解包裹操作、泽尼克多项式拟合。这几个步骤环环相扣,实测中经常需要代码实现,咱们今天就手撕几个代码片段来聊聊。

移相算法实战

假设我们拿到四幅移相干涉图(相位差π/2),核心代码其实就五行:

import numpy as np I1 = 100 + 50*np.cos(phase) # 0相位 I2 = 100 + 50*np.cos(phase + np.pi/2) # π/2 I3 = 100 + 50*np.cos(phase + np.pi) # π I4 = 100 + 50*np.cos(phase + 3*np.pi/2) # 3π/2 # 计算包裹相位 calc_phase = np.arctan2(I4 - I2, I1 - I3) # 关键操作

这里有个坑要注意:np.arctan2直接算出[-π, π]的包裹相位,但实际相位可能是连续变化的。比如当真实相位是3π时,这里会被压缩成-π,这时候就得靠相位解包裹来展开。

相位解包裹的暴力美学

最简单的行展开法代码长这样:

def unwrap_row(phase): offset = 0 unwrapped = np.zeros_like(phase) for i in range(1, len(phase)): delta = phase[i] - phase[i-1] if delta > np.pi: offset -= 2*np.pi elif delta < -np.pi: offset += 2*np.pi unwrapped[i] = phase[i] + offset return unwrapped

这方法在噪声大的地方容易翻车,实测中发现用skimage的unwrap_phase更靠谱:

from skimage import restoration unwrapped_phase = restoration.unwrap_phase(wrapped_phase)

但自己实现的版本有助于理解原理——本质上就是在相位跳变超过π时加减2π的补偿操作。

泽尼克多项式拟合实战

测完相位数据后,我们经常要分解波前像差。泽尼克系数计算可以用现成轮子:

from zernike import RZern cart = RZern(6) # 6阶多项式 cart.fit(phase_data) # 拟合数据 coef = cart.coef # 获取系数

想自己造轮子的话,得先实现泽尼克基函数。比如径向多项式部分:

def zernike_radial(n, m, rho): if (n - m) % 2 != 0: return 0 total = 0 for k in range((n - m)//2 + 1): num = (-1)**k * np.math.factorial(n - k) den = (np.math.factorial(k) * np.math.factorial((n + m)//2 - k) * np.math.factorial((n - m)//2 - k)) total += num / den * rho**(n - 2*k) return total

这个递归实现效率不高,但胜在直观。实际项目里建议用矩阵最小二乘法求解系数,避免重复计算基函数。

调试时记得验证拟合效果——把拟合后的波前与原始数据相减,残差应该接近随机噪声。遇到过拟合的情况就把泽尼克阶数调低,实测发现前15项通常能搞定大部分光学系统的像差分析。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/26 10:35:39

【Docker多平台适配秘诀】:掌握这4种技术,轻松应对ARM与x86差异

第一章&#xff1a;Docker多平台适配的背景与挑战随着云计算和微服务架构的广泛应用&#xff0c;应用部署环境日益多样化。Docker 作为容器化技术的核心工具&#xff0c;需要在不同 CPU 架构&#xff08;如 x86_64、ARM&#xff09;和操作系统&#xff08;如 Linux、Windows&am…

作者头像 李华
网站建设 2026/4/29 0:02:55

缎蓝园丁鸟优化算法复现(SBO算法:非均匀变异策略+非线性权重改进位置更新+互利因子改进)

缎蓝园丁鸟优化算法&#xff08;SBO&#xff09;文章复现&#xff08;非均匀变异策略非线性权重改进位置更新互利因子改进位置更新&#xff09;——ISBO。 复现内容包括:改进算法实现、23个基准测试函数、文中相关因子分析、文中相关图分析、与SBO对比等。 代码基本上每一步都有…

作者头像 李华
网站建设 2026/4/25 19:02:18

为什么你的Docker镜像在M1芯片上跑不起来?真相只有一个

第一章&#xff1a;为什么你的Docker镜像在M1芯片上跑不起来&#xff1f;真相只有一个当你在搭载M1芯片的Mac上运行Docker容器时&#xff0c;突然发现某些镜像无法启动&#xff0c;或者报出“exec user process caused: exec format error”的错误&#xff0c;问题根源往往并非…

作者头像 李华
网站建设 2026/4/28 21:13:53

揭秘Docker Rollout 升级全流程:3个关键阶段与避坑策略

第一章&#xff1a;揭秘Docker Rollout升级的核心机制Docker Rollout 升级机制是实现容器化服务无缝更新的关键技术&#xff0c;广泛应用于生产环境中以保障服务的高可用性与稳定性。其核心基于滚动更新&#xff08;Rolling Update&#xff09;策略&#xff0c;通过逐步替换旧版…

作者头像 李华
网站建设 2026/4/23 1:18:16

青云QingCloud GPU实例:私有网络+安全组配置AI指导

青云QingCloud GPU实例&#xff1a;私有网络安全组配置AI指导 在人工智能模型日益庞大的今天&#xff0c;一个反向趋势正悄然兴起——轻量级大模型凭借其高效推理能力&#xff0c;在特定任务中展现出惊人的表现。VibeThinker-1.5B-APP 就是这样一个典型代表&#xff1a;仅用15亿…

作者头像 李华
网站建设 2026/4/28 5:24:20

为什么你的Docker微服务扩展总是失败?90%的人都忽略了这4个关键点

第一章&#xff1a;为什么你的Docker微服务扩展总是失败&#xff1f;在构建基于Docker的微服务架构时&#xff0c;许多团队会遇到服务无法按预期扩展的问题。尽管容器化技术提供了快速复制和部署的能力&#xff0c;但实际横向扩展过程中常因设计缺陷或配置疏漏导致失败。无状态…

作者头像 李华