一维相位解包裹

news2024/12/25 9:33:38

一维相位解包裹


  本文首先介绍最简单的一维的位相解包裹算法。设W是包裹运算符,\varphi中是解包裹位相,\varphi是包裹的位相。则一维位相解包裹可表示为:

解包裹就是要选取正确的k,满足:

两个相邻像素位相的差值如下:

由式(2-1)和式(2-3)能够得创包裹位相的差位如下:

那么该值的主值为:
 


因为包裹之后的位相主值分布在(-\pi\pi)之问,所以式(2-5)中的△k,+k,要等于0,才可以满足:

那么,式(2-5)改写为:

通过式(2-3)、式(2-7)可知:

 从上式能够看出,对包裹位相的差值进行求积分就得到了解包裹位相。

一维的位相解包裹如图2-所示。从图2-1能够看出,一维的位相解包裹是比较简单的,它的积分路径是唯一的。 Itoh's算法是其中的经典算法,这个算法步骤如下:

①计算包裹位相的差值:

②进行初始化:令

 ③对包裹位相进行求和,获得解包裹位相:

代码:  这里直接用到一行函数unwrap进行了解包裹

import numpy as np
import matplotlib.pyplot as plt

def unwrap_phase(phase):
    """
    Unwraps a 1D phase array.
    """
    return np.unwrap(phase)

# 示例数据
phase_data = np.array([0, np.pi/2, np.pi, -np.pi, -np.pi/2, 0, np.pi/2, np.pi])

# 解包裹
unwrapped_phase_data = unwrap_phase(phase_data)

# 绘制结果图
plt.figure(figsize=(12, 6))

# 原始相位数据
plt.subplot(1, 2, 1)
plt.plot(phase_data, marker='o')
plt.title("Original Phase Data")
plt.xlabel("Sample")
plt.ylabel("Phase (radians)")
plt.ylim(-np.pi-0.5, np.pi+0.5)

# 解包裹后的相位数据
plt.subplot(1, 2, 2)
plt.plot(unwrapped_phase_data, marker='o', color='orange')
plt.title("Unwrapped Phase Data")
plt.xlabel("Sample")
plt.ylabel("Phase (radians)")

# 显示图表
plt.tight_layout()
plt.show()

在相位解包裹的过程中,确实可能遇到解包裹结果不准确的情况,尤其是当存在噪声、快速相位变化或者相位跳变不明显时。为了确保准确解包裹,你需要关注以下几点:

  1. **噪声水平:**如果数据中有很高的噪声,它可能导致错误的相位跳变判断。
  2. **相位变化速率:**如果相位在一个像素到下一个像素之间变化超过π,这会导致解包裹算法难以准确跟踪相位变化。
  3. **相位梯度:**相位解包裹算法通常假设相位变化是逐渐的,如果梯度很大,可能会出现问题。

下面是matlab 代码:

clc;
close all;
clear;
% 模拟数据
n = 150; % 像素点数量
x = linspace(0, 5*pi, n); % x轴范围,确保有足够的周期

% 生成连续的解包裹相位曲线
unwrapped_phase = 4 * sin(x) + 2 * sin(2*x) + randn(1, n) * 0.2; % 添加一些噪声

% 生成包裹相位曲线
wrapped_phase = mod(unwrapped_phase + pi, 2*pi) - pi;

% 绘制结果
figure;
plot(x, unwrapped_phase, 'b-', 'LineWidth', 1.5, 'DisplayName', 'Unwrapped Phase'); % 解包裹相位曲线
hold on; % 保持当前图形
plot(x, wrapped_phase, 'r--', 'LineWidth', 1.5, 'DisplayName', 'Wrapped Phase'); % 包裹相位曲线
hold off; % 结束绘图

title('Wrapped and Unwrapped Phase Simulation');
xlabel('Pixels');
ylabel('Phase (radians)');
legend show; % 显示图例

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1292960.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

从零开始学习 JS APL(六):完整指南和实例解析

学习目标: 1. 能够利用正则表达式校验输入信息的合法性 2. 具备利用正则表达式验证小兔鲜注册页面表单的能力 学习内容: 正则表达式 综合案例 阶段案例 学习时间: 周一至周五晚上 7 点—晚上9点周六上午 9 点-上午 11 点周日下午 3 点-下…

PCIe 数据链路层

PCIe 总线的数据链路层处于事务层和物理层之间,主要功能是保证来自事务层的TLP在PCle链路中的正确传递,为此数据链路层定义了一系列数据链路层报文,即DLLP。数据链路层使用了容错和重传机制保证数据传送的完整性与一致性,此外数据…

frp内网穿透部署,轻松实现内网服务对外访问

FRP(Fast Reverse Proxy)是一种轻量级、高性能的反向代理工具,利用反向代理技术将公网请求转发至内网服务器上,并将内网服务器的响应再次转发至公网请求者。在实现内网穿透时,FRP能够将公网与内网之间的隔离突破&#…

每日一题:Leetcode1926.迷宫中离入口最近的出口

给你一个 m x n 的迷宫矩阵 maze (下标从 0 开始),矩阵中有空格子(用 . 表示)和墙(用 表示)。同时给你迷宫的入口 entrance ,用 entrance [entrancerow, entrancecol] 表示你一开始…

MYSQL练题笔记-聚合函数-游戏玩法分析

仍需成长啊,干自己认为的想干的事情的时候都有很大的挫败,那做别人分配给你的你自然会更难受些,尤其是你不懂的时候,所以加油,好好看待挫折和未成长的路啊!! 一、题目相关内容 1)相…

N26:构建无缝体验的平台工程之路-Part 1

在 N26,在生产环境中仅需一小时即可完成启动一个新的服务,包括所有必要的基础设施依赖项、功能,以及专用的数据库集群,并且其 API 可以用于通过身份验证的请求。在激烈竞争的金融市场中,迅速推出新产品和服务对于吸引和…

接口测试:身份认证(Auth认证的接口)+查询发布会

上一篇:接口测试case:查询发布会-CSDN博客(无身份认证版) 1、前置基础 一般测试工具都会提供一个User Auth/Authorization的选项,要求输入username/password字段。 系统登录功能时的username/password,是…

ke13--10章-1数据库JDBC介绍

注册数据库(两种方式),获取连接,通过Connection对象获取Statement对象,使用Statement执行SQL语句。操作ResultSet结果集 ,回收数据库资源. 需要语句: 1Class.forName("DriverName");2Connection conn DriverManager.getConnection(String url, String user, String…

机器学习 类别特征编码:Category Encoders 库的使用

✅作者简介:人工智能专业本科在读,喜欢计算机与编程,写博客记录自己的学习历程。 🍎个人主页:小嗷犬的个人主页 🍊个人网站:小嗷犬的技术小站 🥭个人信条:为天地立心&…

java设计模式学习之【组合模式】

文章目录 引言组合模式简介定义与用途:实现方式UML 使用场景优势与劣势组合模式在Spring中的应用员工结构示例代码地址 引言 设想您正在组织一个大型派对,需要将各种食品和饮料按类型整理。您可能有单独的物品,如一瓶苏打水,也可…

您知道计算机是怎么分类的嘛

地表最强计算机 第 61 版全球最强大的超级计算机已经发布。名为 Top500,顾名思义,该列表列出了全球 500 台最强大的超级计算机。榜单显示,美国的AMD、英特尔和IBM处理器是超级计算系统的首选。在 TOP10 中,有四个系统使用 AMD 处理…

JWT安全及WebGoat靶场

JWT 安全 cookie(放在浏览器) cookie 是一个非常具体的东西,指的就是浏览器里面能永久存储的一种数据,仅仅是浏览器实现的一种数据存储功能。 cookie 由服务器生成,发送给浏览器,浏览器把 cookie 以 kv 形式保存到某个目录下的…

1+x网络系统建设与运维(中级)-练习题4

一.设备命名 LSW1 <Huawei>sys [Huawei]sysn LSW1 [LSW1]un in en 同理可得&#xff0c;给所有设备如以上命令一样配置 二.VLAN LSW1 [LSW1]vlan ba 1 10 20 100 [LSW1]int g0/0/1 [LSW1-GigabitEthernet0/0/1]port link-type trunk [LSW1-GigabitEthernet0/0/1]port tru…

axios调接口传参特殊字符丢失的问题(encodeURI 和 encodeURIComponent)

1、axios调接口特殊字符丢失的问题 项目开发过程中遇到一个接口传参&#xff0c;参数带特殊字符&#xff0c;axios调接口特殊字符丢失的问题 例如接口&#xff1a; get/user/detail/{name} name是个参数直接调接口的时候拼到接口上&#xff0c;get/user/detail/test123#$%&am…

记一次Java内存溢出导致程序宕机的问题及排查

Hi, I’m Shendi 记一次Java内存溢出导致程序宕机的问题及排查 问题场景 今天在使用工具中的 word 转 pdf 出了问题&#xff0c;报502错误&#xff0c;打开服务器发现服务被关闭了&#xff0c;起初以为是误关&#xff0c;打开后重新转换又出现了这个问题&#xff0c;在项目文件…

微信机器人接口开发

简要描述&#xff1a; 设置http回调地址 请求URL&#xff1a; http://域名地址/setHttpCallbackUrl POST 请求头Headers:&#xff08;别忘了传&#xff09; Content-Type&#xff1a;application/jsonAuthorization&#xff1a;login接口返回 参数&#xff1a; 参数名必…

【尘缘送书第五期】Java程序员:学习与使用多线程

目录 1 多线程对于Java的意义2 为什么Java工程师必须掌握多线程3 Java多线程使用方式4 如何学好Java多线程5 参与方式 摘要&#xff1a;互联网的每一个角落&#xff0c;无论是大型电商平台的秒杀活动&#xff0c;社交平台的实时消息推送&#xff0c;还是在线视频平台的流量洪峰…

【Java 基础】23 国际化

文章目录 1.概念2.原理1&#xff09;Locale2&#xff09;ResourceBundle3&#xff09;MessageFormat 3.例子1&#xff09;准备资源文件2&#xff09;加载资源文件3&#xff09;格式化消息&#xff08;非必须&#xff09; 总结 在全球化的今天&#xff0c;开发支持多语言的应用变…

配置BFD状态与接口状态联动示例

1、BFD检测IP链路。 在IP链路上建立BFD会话&#xff0c;利用BFD检测机制快速检测故障。BFD检测IP链路支持单跳检测和多跳检测&#xff1a; BFD单跳检测是指对两个直连系统进行IP连通性检测&#xff0c;“单跳”是IP链路的一跳。 BFD多跳检测是指BFD可以检测两个系统间的任意路…

每日一练:插入排序

1. 概念及原理 插入排序是一种简单直观的排序算法&#xff0c;其基本思想是将一个元素插入到已经排序好的部分&#xff0c;然后不断地重复这个过程&#xff0c;直到整个数组有序。下面是插入排序的算法原理&#xff1a; 初始状态&#xff1a; 数组被分为已排序和未排序两个部分…