一维相位解包裹

一维相位解包裹


  本文首先介绍最简单的一维的位相解包裹算法。设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 pltdef 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.mzph.cn/news/205149.shtml

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

相关文章

C语言——2048完整版

2048是一个简单又有趣的小游戏,相信大家都接触并了解过,那如何通过代码来实现他呢?下面就让我们来一起看看。 目录 1、头文件 2、主函数 3、 StarGame 4、GetNum 5、Show 6、Picture 7、GetButton 8、MergeLeft 9、MergeUp 10、MergeR…

ESP32 S3+3线SPI+HX8347

HX8347 240*320 TFT屏 3线SPI(CS,SCL,SDI)用ESP32 S3驱动 一、源码 /* SPI Master exampleThis example code is in the Public Domain (or CC0 licensed, at your option.)Unless required by applicable law or agreed to in writing, thissoftware i…

基于下游竞争的在线评论引入策略研究

基于下游竞争的在线评论引入策略研究 分析一下这篇文章吧 中国管理科学的2023年10月的文章,非常新 文章的结论 引入在线评论会使得线下零售商在持续销售阶段降价,线上零售商在持续销售阶段提价,从而使得线上线下零售商的价格差异增大&…

Python 作业解答

1. 在给定的一些数字中找出2个数,使得它们的和为N 题目要求 如给定5个数字 [3,4,9,7,10] 从中选择两个数使用它们的和为11。必须保证这些数据中有答案,并且只有一个答案。 1.1 解题思路一:双…

第2讲、布署Hyper-V软硬件需求:

硬件: 1、处理器(CPU): a.处理器必须是64位,1.4GHz b.处理器必须支持硬件虚拟化技术 CPU(主板BIOS启用): Intel VT AMD-V 2、需要启用硬件数据保…

Android平板还能编程?Ubuntu本地安装code-server远程编程写代码

文章目录 1.ubuntu本地安装code-server2. 安装cpolar内网穿透3. 创建隧道映射本地端口4. 安卓平板测试访问5.固定域名公网地址6.结语 1.ubuntu本地安装code-server 准备一台虚拟机,Ubuntu或者centos都可以,这里以VMwhere ubuntu系统为例 下载code server服务,浏览器…

Spark - 输出parqute文件

pom.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/POM/4.0.0 …

[RK-Linux] 移植Linux-5.10到RK3399(四)| 检查HDMI配置与打开内核LOGO显示

文章目录 一、HDMI二、VOP三、显示内核LOGO一、HDMI RK3399 的 HDMI 接口如图: datasheet 介绍: HDMI 接口各个引脚的作用如下: 接口标签作用HDMI_TX0P HDMI_TX0PA差分信号线,用于传输 HDMI 通道 0 的正向数据HDMI_TX0N HDMI_TX0NA

JavaWeb-Tomcat

1. Web服务器 web服务器由硬件和软件组成&#xff1a; 硬件&#xff1a;计算机系统软件&#xff1a;计算机上安装的服务器软件&#xff0c;安装后可以为web应用提供网络服务。 常见的JavaWeb服务器&#xff1a; Tomcat&#xff08;Apache&#xff09;&#xff1a;应用最广泛的…

数据结构 | 查漏补缺之求叶子结点,分离链接法、最小生成树、DFS、BFS

求叶子结点的个数 参考博文&#xff1a; 树中的叶子结点的个数 计算方法_求树的叶子节点个数-CSDN博客 分离链接法 参考博文 数据结构和算法——哈希查找冲突处理方法&#xff08;开放地址法-线性探测、平方探测、双散列探测、再散列&#xff0c;分离链接法&#xff09;_线性…

如何选择性能测试工具?ab和其它工具的对比分析!

性能测试是保证应用程序高效可靠的重要手段之一&#xff0c;在进行性能测试时&#xff0c;选择合适的性能测试工具非常重要。应当根据测试需求来选择适合的测试工具&#xff0c;本文将会详细介绍ApacheBench&#xff08;简称ab&#xff09;和其他性能测试工具的区别以及如何选择…

Peter算法小课堂—贪心算法

课前思考&#xff1a;贪心是什么&#xff1f;贪心如何“贪”&#xff1f; 课前小视频&#xff1a;什么是贪心算法 - 知乎 (zhihu.com) 贪心 贪心是一种寻找最优解问题的常用方法。 贪心一般将求解过程分拆成若干个步骤&#xff0c;自顶向下&#xff0c;解决问题 太戈编程第…

排序:快速排序(hoare版本)

目录 快速排序&#xff1a; 概念&#xff1a; 动画分析&#xff1a; 代码实现&#xff1a; 代码分析&#xff1a; 代码特性&#xff1a; 常见问题&#xff1a; 快速排序&#xff1a; 概念&#xff1a; 快速排序是Hoare于1962年提出的一种二叉树结构的交换排序方法&a…

【项目日记(一)】高并发内存池项目介绍

&#x1f493;博主CSDN主页:杭电码农-NEO&#x1f493;   ⏩专栏分类:项目日记-高并发内存池⏪   &#x1f69a;代码仓库:NEO的学习日记&#x1f69a;   &#x1f339;关注我&#x1faf5;带你学习C   &#x1f51d;&#x1f51d; 项目日记 1. 前言2. 什么是高并发内存池…

SCI常用的连接词

1、描述相似性连词 Similarly 类似地&#xff0c;相似地 Likewise 同样地 Correspondingly 相应地 Equally 同样地 Not only ….but also 不仅…….而且 In the same way 以同样的方式 2、表示因果关系 Therefore 所以 Thus 因此, 从而&#xff0c;这样 H…

《opencv实用探索·十三》opencv之canny边缘检测

1、canny边缘检测应用场景 目标检测&#xff1a; Canny边缘检测可以用于检测图像中的目标边缘&#xff0c;从而帮助识别和定位物体。在目标检测的流程中&#xff0c;边缘通常是检测的第一步。 图像分割&#xff1a; Canny边缘检测可用于图像分割&#xff0c;即将图像划分为具有…

微服务--08--Seata XA模式 AT模式

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 分布式事务Seata 1.XA模式1.1.两阶段提交1.2.Seata的XA模型1.3.优缺点 AT模式2.1.Seata的AT模型2.2.流程梳理2.3.AT与XA的区别 分布式事务 > 事务–01—CAP理论…

class050 双指针技巧与相关题目【算法】

class050 双指针技巧与相关题目【算法】 算法讲解050【必备】双指针技巧与相关题目 code1 922. 按奇偶排序数组 II // 按奇偶排序数组II // 给定一个非负整数数组 nums。nums 中一半整数是奇数 &#xff0c;一半整数是偶数 // 对数组进行排序&#xff0c;以便当 nums[i] 为…

HarmonyOS开发(十):通知和提醒

1、通知概述 1.1、简介 应用可以通过通知接口发送通知消息&#xff0c;终端用户可以通过通知栏查看通知内容&#xff0c;也可以点击通知来打开应用。 通知使用的的常见场景&#xff1a; 显示接收到的短消息、即使消息...显示应用推送消息显示当前正在进行的事件&#xff0c…

dbug_hub 错误 使用多个ILA导致

记录一下vivado调整dbg_hub时钟调整的方法 (dengkanwen.com) 解决方法参考以上链接。 或&#xff0c;使用高速下载器&#xff1f;