基于最小费用流(MCF)法的相位解包裹理论与实验验证-含Matlab代码

news2025/3/13 5:34:35

一、引言

最小费用流算法(Minimum cost flow, MCF) 最早是由 Costantini M. A1998 年提出的,该方法是将未解缠相位的相邻梯度差与解缠相位的相邻梯度差间的差异即不连续性最小化,具有极强鲁棒性与准确性,有基于规则与不规则网络之分。2002年,于勇、王超等人提出了一种在不规则网络下的最小费用流的解包裹算法,该算法仅处理干涉图中质量高的点,避免了低质量点会在运算中引起误差,最终获得真实的相位信息。2006年,杨锋涛等人将相位的二阶差分定义为权值融入到最小费用流的解包裹算法中,提高了解包裹精确性能。2017年,王国峰等人应用角反射器差分干涉方法及反距离加权最小费用流相位展开算法,经过实例证明了该方法得到的信息与真实值最为接近,并能应用于较小区域的地表变化监测中。

二、最小费用流算法原理

在这里插入图片描述

图1 网络流图解[1]

Costantini 网络流算法是以包裹与解包裹之间的相邻相位梯度差除以 2π 得到的整数所代表的残差为出发点,在网络上寻找最小成本流的问题。残差即相位图中不连续点,这表明,可以将相解包裹等同于一个求整数变量的极小化问题。网络流图解示意图如图1所示,图中的节点即为 ( i , j ) ∈ S 0 \left( i,j \right)\in {{S}_{0}} (i,j)S0 ,箭头的正方向为流入节点的流,箭头的负方向为流出节点的值。

φ(i, j) 为解包裹相位, 在这里插入图片描述为包裹相位,有:

在这里插入图片描述
在这里插入图片描述为解包裹相位梯度, 在这里插入图片描述为包裹相位梯度。定义:

在这里插入图片描述
定义满足且仅满足下式条件时,离散空间为无旋矢量场即无残差点:

在这里插入图片描述
其中,

在这里插入图片描述
解包裹相位梯度与包裹相位梯度间可由以下两式表示:

在这里插入图片描述
当包裹相位不存在残差点即为无旋场时,满足 在这里插入图片描述在这里插入图片描述 ,此时k1和k2数值为零。然而在现实测量中,包裹相位通常为有旋场即存在残差点,因此上式(1)所示的相位展开问题转换为求下列离散导数的问题:

在这里插入图片描述

计算残差 在这里插入图片描述在这里插入图片描述 的物理意义即求解包裹相位梯度在这里插入图片描述在这里插入图片描述需要修正的量。利用求得的残差 在这里插入图片描述在这里插入图片描述依据上述关系就可以求得离散偏导数 在这里插入图片描述在这里插入图片描述 ,进而应用下式求得真实解包裹相位在这里插入图片描述
在这里插入图片描述
定义非负实数 在这里插入图片描述以及在这里插入图片描述 为残差 在这里插入图片描述的加权,且定义数值必须较小。换句话说,是将在这里插入图片描述 的可信度加权为对在这里插入图片描述 的估计。由于网络流算法的最终目的是使相邻相位的不连续性最小化,故加权函数 在这里插入图片描述对最小化目标函数的影响不大。因此本文选取所有内部元素的权重为1,边缘像素的权重为0.5,角像素为0.25。

网络流算法目标函数就可以定义为:

在这里插入图片描述
且同时满足:

在这里插入图片描述
可以发现上述讨论的问题为一个带整数变量的非线性极小化问题,为了提高运算效率,可以通过进行下述线性最小化问题的转换,更加有效地解决这个最小化问题:

在这里插入图片描述
且同时满足:

在这里插入图片描述

若将该问题经过如下所示的变化,便可以将线性最小化的解转换为非线性最小化的解:

在这里插入图片描述
那么,通过网络优化的最小费用流算法解得 在这里插入图片描述在这里插入图片描述的值,
就可以得到在这里插入图片描述 的结果。运算步骤如下:

Step1由网络优化的最小费用流算法得到 在这里插入图片描述在这里插入图片描述

Step 2 通过(38)、 (39)式,得到 在这里插入图片描述的值;

Step 3 通过(27)、 (28)式,得到在这里插入图片描述 的值;

Step 4 最终,通过(29)式,便可得到在这里插入图片描述

三、仿真实验验证

3.1 实例演示一

仿真得到包裹相位图如下图所示,采用最小费用流算法解包裹相位如图2所示。

在这里插入图片描述

图1 包裹相位图

在这里插入图片描述

图2 最小费用流算法解包相位

3.2 实例演示二

另一演示实例如下图所示,包裹相位图如图3所示,采用最小费用流算法解包裹后的相位如图4所示。
在这里插入图片描述

图3包裹相位图

在这里插入图片描述

图4 最小费用流算法解包相位

四、参考文献

[1] 赵亚迪. 双波长数字全息成像方法及应用 [D]; 华北理工大学, 2019.

五、Matlab程序获取

上述演示程序可从以下链接获取:
https://download.csdn.net/download/qq_36584460/87782444

博主在读博士期间从事过相关研究,相关Matlab程序开发、实验指导,请私信博主,联系方式见文章底部。


⭐️◎⭐️◎⭐️◎⭐️ · · · **博 主 简 介** · · · ⭐️◎⭐️◎⭐️◎⭐️

▁▂▃▅▆▇ 博士研究生生 ,研究方向主要涉及定量相位成像领域,具体包括干涉相位成像技术(如**全息干涉☑**、散斑干涉☑等)、非干涉法相位成像技术(如波前传感技术☑相位恢复技术☑)、此外,还对各种相位解包裹算法☑相干噪声去除算法☑等开展过深入的研究。

程序获取、程序开发、实验指导,科研服务,请私信博主,联系方式见文章最底部。

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

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

相关文章

Python实现ACO蚁群优化算法优化XGBoost分类模型(XGBClassifier算法)项目实战

说明:这是一个机器学习实战项目(附带数据代码文档视频讲解),如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 蚁群优化算法(Ant Colony Optimization, ACO)是一种源于大自然生物世界的新的仿生进化算法&#xff0c…

Flutter的Stack和Positioned的控件

简介 Flutter中的Stack控件是一种可用于将多个子控件重叠在一起的布局控件。Stack将所有子控件放在同一个位置,它们可以根据需要进行定位、缩放或旋转。Stack中的子控件可以是任何类型的控件,例如文本、图像、按钮等。 主要属性 Stack控件的主要属性包…

Qcom Camera HAL 流程详解

和你一起终身学习,这里是程序员Android 经典好文推荐,通过阅读本文,您将收获以下知识点: 一、概览二、基本组件概念三、组件结构关系四、关键流程详解 一、概览 回顾高通平台Camera HAL历史,之前高通采用的是QCamera & MM-Cam…

chatgpt赋能python:Python并列输出——让你的数据展示更加美观

Python并列输出——让你的数据展示更加美观 在数据分析和机器学习中,输出数据的格式和展示方式都十分重要。而对于Python程序员来说,如何实现并列输出是一个必须掌握的技能。本文将向您介绍Python的并列输出方式,并教您如何将其结合使用&…

SpringBoot项目实战:自定义异常和统一参数验证(附源码)

你好,我是田哥 在实际开发过程中,不可避免的是需要处理各种异常,异常处理方法随处可见,所以代码中就会出现大量的try {...} catch {...} finally {...} 代码块,不仅会造成大量的冗余代码,而且还影响代码的可…

如何将一个实例的内存二进制内容读出来?

一、读取实例在内存中的字节 如下所示的PrintBytes<T>会将指定实例在内存中的字节输出到控制台上。如代码片段所示&#xff0c;我们先调用《如何计算一个实例占用多少内存&#xff1f;》中定义了SizeCalculator将承载实例内容的字节数计算出来&#xff0c;并创建对应长度…

阅读理解解题思路汇总

阅读理解解题思路汇总 一、规范解题流程&#xff1a; 1&#xff0e;读题&#xff1a; &#xff08;1&#xff09;论据→证明→论点&#xff1b; &#xff08;2&#xff09;题号&#xff1a;命题顺序与行文顺序一致&#xff1b; &#xff08;3&#xff09;题干&#xff1a;找可定…

居然生成这样的答案,AI简直离了大谱...

前文介绍了我认为目前最强的AI工具Claude&#xff1a; &#xff08;1&#xff09;目前最强的内容生成能力&#xff1b; &#xff08;2&#xff09;目前最强的个性化能力&#xff1b; &#xff08;3&#xff09;目前最强的上下文关联能力&#xff1b; &#xff08;4&#xff09;…

岩土工程中振弦采集仪的完整解决方案分析

振弦采集仪是岩土工程中用于测量地震波传播速度和土层结构信息的重要仪器。其完整解决方案包括以下几个方面&#xff1a; 1. 仪器选择&#xff1a;要选择合适的振弦采集仪&#xff0c;需要考虑测量范围、精度、可靠性、操作简便等因素。市场上常见的振弦采集仪品牌有多种&#…

chatgpt赋能python:Python并行处理介绍

Python并行处理介绍 Python是一种高级编程语言&#xff0c;通常用于数据分析&#xff0c;人工智能&#xff0c;机器学习等领域。随着数据量的增加和计算要求的增加&#xff0c;使用单个Python线程可能会变得不够快。在这种情况下&#xff0c;我们需要并行处理&#xff0c;以在…

职场上除了「躺」与「卷」,是否有第三种选择存在?

大家好&#xff0c;我是校长。 昨天在知乎上看到一个问题&#xff1a;职场上除了「躺」与「卷」&#xff0c;是否有第三种选择存在&#xff1f; 当我看到这个问题的时候&#xff0c;我想到了两本书&#xff0c;以及我看到的一些最新的观点&#xff0c;我试图结合我看到的书以及…

淘宝拍照基于端云协同的视频流实时搜索实践

本文介绍了实时视频流的主体识别场景&#xff0c;未来实时搜将会融合图搜主链路并在XR场景发力&#xff0c;未来的场景我们取名为“元视界”&#xff08;MetaSight&#xff09; 引言 很多熟悉淘宝的用户知道&#xff0c;点击首页搜索框的相机icon&#xff0c;就可以使用淘宝拍照…

助力长城汽车数据管道平台连接“数据孤岛”,加强数据一元化,Apache DolphinScheduler 的角色定位...

点击蓝字 关注我们 讲师简介 长城汽车-IDC-数据中台部-刘永飞 高级工程师 我是长城汽车 IDC-数据中台部的刘永飞&#xff0c;给大家分享一下我们自研的一个数据同步工具平台&#xff0c;以及在使用这个工具过程中遇到的问题。今天的分享主要有四个部分&#xff1a; 1. 我们自研…

语法——时态总结

一般现在时 1.概念&#xff1a;经常、反复发生的动作或行为及现在的某种状况。 2.基本结构&#xff1a;①is/am/are;②do/does否定形式&#xff1a;①am/is/are not;②此时态的谓语动词若为行为动词&#xff0c;则在其前加don‘t&#xff0c;如主语为第三人称单数&#xff0…

软考A计划-系统架构师-论文应试技巧

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例点击跳转>软考全系列 &#x1f449;关于作者 专注于Android/Unity和各种游戏开发技巧&#xff…

Collection接口详细介绍(上)

前言&#xff1a; 本篇文章主要讲解Java中的Collection接口以及相关实现类的知识。该专栏比较适合刚入坑Java的小白以及准备秋招的大佬阅读。 如果文章有什么需要改进的地方欢迎大佬提出&#xff0c;对大佬有帮助希望可以支持下哦~ 小威在此先感谢各位小伙伴儿了&#x1f601…

利用神经网络重建三维数字孪生

利用神经网络重建三维数字孪生 从点云重建光滑表面是创建真实世界对象和场景的数字孪生的基本步骤。 表面重建算法出现在各种应用中&#xff0c;例如工业模拟、视频游戏开发、建筑设计、医学成像和机器人技术。 神经核表面重建 (NKSR) 是新的 NVIDIA 算法&#xff0c;用于从大…

Java学习路线一条龙

作者 | 磊哥 来源 | Java中文社群&#xff08;ID&#xff1a;javacn666&#xff09; 转载请联系授权&#xff08;微信ID&#xff1a;GG_Stone&#xff09; Java 要掌握的技术点如下&#xff1a; JavaSE&#xff08;Java Standard Edition&#xff0c;Java 基础&#xff09;计算…

常用命令之Proxmox qm命令

一、Proxmox简介 Proxmox是一款基于Debian Linux的开源虚拟化平台&#xff0c;它允许用户在单个物理主机上运行多个虚拟机&#xff0c;并提供了许多高级功能&#xff0c;如高可用性、备份和恢复、集群管理等。Proxmox支持多种虚拟化技术&#xff0c;包括KVM和LXC&#xff0c;而…

【RISC_V课程笔记】导论

目标 完成以cpu的设计&#xff0c;三级流水线结构。取指(if), 译码(id), 执行(ex)cpu中断系统的设计以cpu为核心的SOC设计&#xff0c;完成rom,ram,time的外设的设计用uvm对cpu进行验证(system verilog) 理论 数字逻辑电路 数字信号&#xff1a;用二进制表示的信号&#xf…