光学算法——经典枝切法(解包裹算法)
作者:翟天保Steven
版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处
注:本文所讲内容为本人硕士毕业论文:《基于干涉图像质量分析的激光干涉仪抗振技术研究》,如有引用需要标注来源哈,如有疑问可以评论回复也可以邮箱1257147469@qq.com联系我。
前言
随着光学技术的不断发展,越来越多的学者从事光学领域的相关学术研究工作,而相位解包裹就是光学相位测量领域中至关重要的一项技术,解缠效果的好坏直接影响了测试的精度和准确性,相位解包裹技术目前也被广泛应用于散斑干涉测量、移相干涉测量、合成孔径雷达、磁共振成像等各个方向。
基于算法实现原理可将解包裹技术大致分为两类:路径跟踪类算法和路径无关类算法。路径跟踪类算法代表用简单行列法、枝切法和质量图法,此类算法的核心在于确定积分结构与路径无关的条件,在满足条件的前提下,通过路径积分算法沿合适的路径还原相位,路径跟踪类算法所求解的相位更加精准;路径无关类代表为各类基于最小二乘原理的解包裹算法,此类算法核心在于运用各类原理或方法进行最小二乘求解,以获得最优的结果数据,常见的求解方法有快速傅里叶变换法(FFT)、迭代法、离散余弦变换法(DCT)等。路径无关类算法所求解相位优化性较好,但并不是精确的相位信息。
本文介绍了其中一种最经典和应用广泛的相位解包裹算法——枝切法,包括一维相位解包裹原理、二维行列法解包裹原理、枝切法原理和算法流程、代码实现。
一、一维相位解包裹原理
之所以有相位解包裹存在,是因为计算机在进行相位提取时,所得的相位因反正切函数arctan影响,均被折叠在(-π,π)区间内,因而产生区间边缘点的相位突变情况,形成包裹相位,实际效果如图1所示,该图是通过实际测量的干涉图进行计算所得。为了还原其真实的相位信息,必须对包裹相位进行相位解包裹处理,进而通过解完的相位信息计算出所需要的面形信息。
为了更好地理解相位解包裹的原理,先分析最简单的一维解包裹。对一维(只有X轴)的包裹相位而言,其相位折叠于(-π,π)区间内,如图2中蓝线所示,当连续的相位信息超过一个周期后,之后的相位信息骤减降回(-π,π)之间,即出现截断相位。解包裹过程为:从最开始的像素点开始遍历,比较前后两个相位值的大小;如果后相位值比前相位值小超过π,说明出现了截断相位,即相位被包裹,判断间隔k个周期,再令后相位值加上2πk使其回归真实周期;如果后相位值比前相位值大超过π,同理先判断间隔k个周期,再令后相位值减去2πk。
设包裹相位为,真实相位为,上述算法逻辑用公式(1)表示:
(1) |
综上可对一维包裹相位进行解包裹工作,以还原出真实相位信息。
二、二维行列法解包裹原理
第一部分讲解了一维相位解包裹的原理,据此可推导出一般意义上的二维解包裹逻辑,先一维展开再逐行或者逐列进一步展开即可实现二维解包裹,这就是行列法的原理,它是二维解包裹算法中最简单的一种,其具体实现过程为:
- 设干涉图大小为R×C,R为干涉图行数,C为干涉图列数。取C/2列为中心列,对该列的相位信息进行一维解包裹处理,如式(1);此时干涉图中心列的相位信息完成解缠,恢复到真实的相对相位状态,效果图如图3所示;
- 之后,以中心列上的相位数据为起点,分别对每个点的左右两侧的行数据进行解包裹操作,最终可实现全图相位信息的解缠,效果图如图4所示。
该方法运算效率极高,可随意选择路径并依次展开,但是它对噪声的抵抗力较差,当路径中出现异常的数据信息时,并不会将其忽略或跳过,而是沿着错误的信息继续进行解缠操作,这就容易使后续正常的相位信息受到噪声干扰,进而造成误差在路径上持续传播,最终导致相位解包裹失败。
综上,行列式解包裹算法适合对较理想的包裹相位进行解缠,其运算速度极快;当所测面形质量较差时,其解相后相位信息的解缠工作不适用该算法。其算法流程图如图5所示。
三、枝切法原理和算法流程
若要应对噪声对相位解缠的误差传递,则需对噪声区进行标记和隔离,而经典的枝切式解包裹算法可满足该条件,枝切法的原理:首先,现实环境下因为外在扰动的原因,会使相位数据受到噪声影响而出现非连续点的情况,标记包裹相位图中非连续点作为残差点(正负极性电荷);其次,将全图的残差点在小范围内进行配对连接,使残差点集合达到极性平衡,该范围一般尽可能小,即枝切线尽可能短;之后,从干涉图中某一非残差点位置开始向四周方向进行解包裹操作,若遇到枝切线上的点则解缠停止,直至全图所有正常相位点完成解缠;最后,分析枝切线周围的正常点相位信息,结合正常信息对枝切线上的相位进行最终的解缠。
其具体实现过程为:
1)判定包裹相位图中残差点位置。设第i行第j列的包裹相位为, 该值处于(-π,π)区间中;定义一个2×2大小的残差点判断窗口,如图6所示,沿顺时针方向计算相邻相位的差值,当差值超过(-π,π)区间时,对其进行缠绕操作W(对该值加减2π,确保其回归到单周期内),用表示该窗口中各个相邻相位间的缠绕差值。
的表达式为公式(2):
(2) |
若窗口中的相位差均在(-π,π)内,则相加为零,说明四个点连续的;反之则为不连续的异常点,此时将(i,j)作为残差点记录下来,残差点的缠绕差值和为2π的正负整数倍,若是正整数倍,则认为该残差点的极性电荷q为正,称作正残差点,值设为1,相反为负残差点,值设为-1:
(3) |
步骤一的算法流程图如图7所示。
2)将所有残差点按一定顺序排列,选取序列中第一个残差点开始第一轮搜索,以该残差点为中心设置大小为r×r(初始r为3)的搜索窗口来遍历窗口边缘的像素信息,当寻找到另一残差点时连接构成枝切线(两点间近似直线上所有像素点均认为在线上)并判断其极性。两点极性相反即达到平衡态(极性电荷和为0),直接结束该轮搜索工作;若极性相同则未达平衡态,继续寻找下一残差点,当搜索窗口遍历完成时,再以边缘残差点为中心,以同样大小的搜索窗口进行搜寻工作,假如仍未达到平衡态,则扩大搜索窗口尺寸再以开始的中心残差点为起点遍历窗口边缘,尺寸每次增加2(如5×5、7×7)直到达到设置的最大尺寸值(一般为7×7),当完成最大尺寸的遍历工作后无论是否达到平衡,该轮均认为结束。除此之外,当搜索过程中达到图像边缘,同样认为该轮搜索结束。
第一轮结束后,所有连接过的残差点无论整体是否平衡,均标记为已连接状态,若某点在整轮过程中没有任何一个残差点可以与其连接,则继续扩大搜索尺寸直到找到一个可以连接的点(不论正负)并连接,可有效避免某些残差点的遗漏现象发生;再以第二个未连接过的残差点为中心开启下一轮搜索,只搜索未连接过的残差点,以此类推直到全图残差点均被连接完毕,此时相位图的枝切线构建完毕。
步骤二算法流程图如图8所示。
3)开始解包裹:选取某非枝切线上点为起点,分别向其四周开始进行解包裹操作,解包裹之前首先判断其是否为图像边缘点(或掩膜点),再判断其是否已被其他路径进行过解包裹处理,最后判断其是否为枝切线上的点,当上述判断均为否时确认可进行解缠工作;再以四周进行完解包裹的点为起点,同样判断其四周情况,选择合适路径步进;依此类推,可遍历全图正常的包裹相位并完成对其解缠处理,若枝切线闭合则形成“孤岛”。
4)对全图未进行解包裹操作的点作处理。这部分点基本分布在枝切线上,判断点的四周是否存在正常已经解包裹的相位信息。若有则通过正常的相位信息对其进行解缠处理,若无则该点被认为是解缠失败的噪声点,即“异常点”。最终获得真实相位分布图,该相位分布信息有效隔离了噪声带来的误差传递。
步骤三和四的算法流程图如图9所示。
枝切式解包裹算法能精确地计算出真实的相位信息,相比迭代法之类的解包裹算法要高效许多,且有效避免了某些异常值的误差传递问题,对残差点较少的包裹相位图能起到很好的解包裹作用。其不足之处在于当干涉图中瑕疵过多时,如残差点密集分布,导致枝切线围绕某个区域进行了围绕式连接,进而会使该区域成为一片“孤岛”,其内的相位无法被展开,针对“孤岛”数据,可等第四步枝切线的点计算完再折返回来计算“孤岛”数据。
综上,枝切式解包裹算法能完成绝大多数包裹相位的解缠工作,而那部分少数因包含过多噪声而出现“孤岛”,并导致解缠效果异常的相位信息图,往往从肉眼即可看出较大的瑕疵,不需要应用移相干涉测量技术即可对此类质量差的元件进行过滤。因此,枝切式解包裹算法可以胜任绝大多数场景的解包裹工作。
四、代码实现
matlab代码见:matlab枝切法解包裹_解包裹图-图像处理文档类资源-CSDN下载
C++代码暂不公开分享,如有需要可评论留下邮箱,我将unwrap类中枝切法相关的实现函数单独分享。
总结
以上就是本文所讲的内容,简单介绍了相位解包裹的原理和枝切法的算法逻辑。
光学算法——经典枝切法(解包裹算法)相关推荐
- matlab中枝切法解包裹,一种基于改进枝切法的激光散斑相位解包裹方法与流程
本发明属于激光散斑干涉测量领域,涉及一种激光散斑相位解包裹方法. 背景技术: 散斑干涉相位图解包裹是激光散斑测量的关键步骤,Goldstein枝切法解包裹算法由于可识别残差点,防止误差传递,解缠精度高 ...
- 相位解包裹(五)枝切法(Goldstein’s branch cut algorithm)
上一篇文章讲了相位解包裹算法的分类,那从这一篇文章开始,就可以开始介绍具体的相位解包裹算法了. 因为介绍过了残点的运算,所以这里首先介绍利用残点的特性去进行相位解包裹算法的一种经典算法,枝切法(Gol ...
- 基于Glodstein枝切法相位解包裹算法
一.原理 1988年Goldstein提出了采用枝切法进行相位解包裹,他先根据提取的包裹相位信息,确定所有残差点的正负极性和位置分布,再将相邻的残差点连接起来,这样就绘制形成了枝切线,连线的过程中必须 ...
- 相位解包裹(四)两类相位解包裹算法
前文讲到了残点的计算,从残点出发,发展出了一类相位解包裹算法,空间(空域)相位解包裹(Spatial phase unwrapping). 各种算法的具体流程还是放到后面再说,本文先讲讲相位解包裹算法 ...
- 基于加权最小二乘法的相位解包裹算法
一.背景 1994年,Ghiglia和Romero提出了加权最小二乘迭代解包裹算法,其基本原理是通过加权系数来构造基于泊松方程的迭代公式,该算法运算速度快,并且稳健,还可以通过加权系数去控制平滑误差的 ...
- 基于强度传输方程的相位解包裹算法
一.引言 2016年印度理工学院的 pandey等首次提出了基于强度传播方程的相位解包裹算法.该算法通过将包裹相位生成一个复数场,之后将其传播到一段距离.从而在复数场中紧密间隔的平面上模拟两个强度图像 ...
- 基于可靠度排序的非连续路径解包裹算法实例分析
一.理论分析 对于大多数需要处理的包裏相位图来说包含大量噪声,有时存在不连续处,针对此情况,Miguel提出了一种基于可靠度排序非连续路径的快速二维解包裹算法,该算法是路径跟踪算法中质量引导路径方法中 ...
- 基于Flynn最小不连续相位解包裹算法
一.Flynn最小不连续算法原理 Fynn最小不连续算法是求解包裹相位的最小加权不连续解 在此定义一对毗邻像素的差分超过π时为不连续,毗邻像素可能是垂直方向或水平方向,定义差分的最邻近整数个2π为跳变 ...
- 基于多次傅里叶变换算法的快速相位解包裹算法研究
▒▒本文目录▒▒ 一.前言 二.快速相位解包裹算法实例分析 三.参考文献 一.前言 一般而言,干涉相位图中的相位值通常被限制在主值区间内,这种相位被称为缠绕相位.在缠绕相位图中,像素点的相位值在-π或 ...
最新文章
- 开启JAVA自学新篇章
- 静态配置_【实验】华为静态路由基础配置
- 面向对象编程语言中的接口(Interface)
- c++并发编程实战_Java 并发编程实战:JAVA中断线程几种基本方法
- java自定义迭代器作用_Java实现的自定义迭代器功能示例
- MacOS中Dock栏的设置和使用技巧,新手必看
- cls certificate.php,php加密解密处理类
- 北京大学2016年高等代数与解析几何考研试题
- Linux内核分析 - 网络[五]:vlan协议-802.1q
- 机器学习基石12-Nonlinear Transformation
- 全国计算机化学年会,第15届全国计算(机)化学学术会议第一轮通知
- 微波工程基础_军工央企丨上海微波设备研究所
- Icon图标格式(用于生成*.ico图标)
- 计算机课程word教学,浅谈计算机Word表格的制作课程教学
- Linux驱动编程 step-by-step
- 近似概率编程文献综述
- 美术初学者画速写人物遇到的问题有哪些
- 腾讯云远程链接桌面教程 腾讯云桌面远程链接桌面
- 计算机中负数取余和数学上的取余
- 四川农业大学计算机专业答辩,四川农业大学远程教育2016年下半年本科论文答辩安排及注意事项...
热门文章
- 在不熟悉C/C++情况下,hook windows事件
- Oracle——distinct的用法
- DOM 提供了一些滚动页面设置指定可见
- screen的一些常用命令和快捷键
- 90.根据指令修改发往上游的请求
- Java 和C# 最大的不同是对底层的控制能力不同
- 程序员们,在你当领导前,有些事你得先知道
- electron 改变窗体 大小_「Science子刊」约翰·霍普金斯大学创造灰尘大小设备,可协助药物在胃肠道停留24小时之久...
- linux中的lock文件,linux – 为什么即使文件被锁定,File :: FcntlLock的l_type总是“F_UNLCK”?...
- 样条曲面_用SolidWorks曲面将六个小圆管向大圆管过渡