news 2026/8/21 15:25:19

生成模拟干涉图

作者头像

张小明

前端开发工程师

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/8/19 20:53:07

OpenCV图像处理流水线设计:输入需求输出Python调用链

VibeThinker-1.5B-APP&#xff1a;小模型如何在编程与数学推理中超越大模型&#xff1f; 当我们在准备一场算法竞赛&#xff0c;面对一道复杂的动态规划题时&#xff0c;是否曾希望有一个“外脑”能快速给出解题思路&#xff1f;或者在深夜调试代码时&#xff0c;渴望一个不依…

作者头像 李华
网站建设 2026/8/21 4:14:04

GitHub镜像推荐:一键部署VibeThinker-1.5B-APP进行高效算法推理

GitHub镜像推荐&#xff1a;一键部署VibeThinker-1.5B-APP进行高效算法推理 在当前大模型动辄数百亿、数千亿参数的浪潮中&#xff0c;一个仅15亿参数的小模型却悄然在数学与代码推理领域掀起波澜——VibeThinker-1.5B-APP。它没有华丽的通用对话能力&#xff0c;也不擅长写诗…

作者头像 李华
网站建设 2026/8/19 16:24:44

CPU和内存总是爆满?,深度解析Docker资源限制与调优策略

第一章&#xff1a;CPU和内存爆满的根源剖析在高并发或资源管理不当的系统中&#xff0c;CPU和内存使用率飙升是常见且棘手的问题。其根本原因往往涉及程序逻辑缺陷、系统配置不足以及外部负载异常等多个层面。深入分析这些因素&#xff0c;有助于快速定位并解决性能瓶颈。资源…

作者头像 李华
网站建设 2026/8/19 16:26:18

Docker边缘计算实战部署方案(边缘场景优化全解析)

第一章&#xff1a;Docker边缘计算部署概述随着物联网和5G技术的快速发展&#xff0c;边缘计算已成为现代分布式系统架构中的关键组成部分。在资源受限、网络不稳定或延迟敏感的边缘环境中&#xff0c;传统应用部署方式难以满足实时性和可维护性的需求。Docker凭借其轻量级容器…

作者头像 李华
网站建设 2026/8/21 10:55:58

Docker日志轮转终极指南(从小白到专家的4种实战方案)

第一章&#xff1a;Docker日志轮转的核心挑战与重要性在容器化部署日益普及的今天&#xff0c;Docker日志管理成为保障系统稳定运行的关键环节。默认情况下&#xff0c;Docker使用json-file日志驱动记录容器输出&#xff0c;若不加以控制&#xff0c;日志文件将持续增长&#x…

作者头像 李华
网站建设 2026/8/19 16:23:59

【多架构支持从入门到精通】:用Buildx实现Docker跨平台编译的完整路径

第一章&#xff1a;Docker跨平台兼容性的核心挑战Docker 的普及使其成为现代应用部署的基石&#xff0c;但其跨平台兼容性仍面临诸多挑战。不同操作系统架构、内核特性以及容器运行时环境的差异&#xff0c;直接影响镜像的可移植性和运行稳定性。操作系统架构差异 Docker 镜像依…

作者头像 李华