一种基于异构加速平台的二维相位解缠绕方法

文档序号:6541014
一种基于异构加速平台的二维相位解缠绕方法
【专利摘要】本发明设计了一种基于异构加速平台的二维相位解缠绕方法。在Branch?cut步骤中加入了局部匹配,克服了并行实现的瓶颈;在算法的FloodFill步骤中使用Block的动态组织方式,解决了数据依赖;通过合并和压缩存储、创造数据的伪边界等优化方法,提高了执行速度,更大化地利用了硬件资源。本发明满足了二维相位解缠绕算法的实时性要求,也对并行编程和克服数据依赖提供了一定的指导意义。
【专利说明】一种基于异构加速平台的二维相位解缠绕方法
【技术领域】
[0001]本发明涉及计算机视觉和图像处理领域,具体来说,本发明涉及一种基于异构加速平台的加速二维解缠绕方法。
【背景技术】
[0002]许多应用需要用到相位数据,例如显微干涉、合成孔径雷达(synthetic apertureradar, SAR)、磁共振成像(magnetic resonance imaging, MRI)和自适应光学(adaptiveoptics)等。计算相位一般使用反正切函数,其值域是(-π,π),因而计算出来的相位被限定在(-1 )之内,直接计算得到的相位被“截断”了(也称为被“包裹”或“缠绕”,wrapped)。实际过程中必须将被截断(包裹)的相位连接起来,即解除相位“截断”,把被包裹的相位恢复到实际的相位值,这个过程称为相位解缠绕(unwrap)、相位解包裹或者相位展开等。
[0003]二维相位解缠绕(Phase unwrapping, PU)是数字图像处理上一个常用的方法,是一个计算量很大,很耗时的过程。有几十种算法来解决二维解缠绕问题,主要分为两类:Path following 方法和 Minimum-Norm 方法。Path following 方法主要包括 Goldstein’s算法、Quality-guided算法、Flynns最小不一致算法、PCG算法和Multigrid算法。而Minimum-Norm 方法贝U 有 Minimum Lp-norm 算法、Unweighted least-squares 算法和Weighted least-squares算法等。在这些算法中,Goldstein算法运行速度快、输入简单、易于实现,通常作为二维解缠绕问题的第一选择。
[0004]Goldstein算法分为三个过程。首先定义出相位数据中(通常是矩阵)的不一致点,表示可能的不连续位置的起始和结束,用Residue值来标记,用+/_1的Residue值来表示这些不一致点和其属性。然后用一个Branch cut过程连接相反极性的点,构成可能的不一致区域,该操作在图像中构成了一道道屏障,阻止在解缠绕操作时传播路径的通过,防止局部不一致的传播。最后,用一个FloodFill过程来实现解缠绕,从而得到连续的相位数据。
[0005](I)定义不一致点:图2和公式I~公式4描述了定义不一致点的过程。图2中,
a、b、C、d是图像数据中的邻接四个相位点,Λ i表示相位梯度,它是相邻之间的相位差“解缠”到(-JI,Ji)的值。首先求出四个相位差(公式1,δ表示相位差,P表示相位),然后解缠到(-π,+π)的范围内(公式2,公式3,W为解缠绕操作),称为相位梯度:△,最后累加四个相位梯度(公式4)。相位梯度和可以为{_2π,0,2π},即公式4中的η可能为{-1, O, 1},若η=1或n=-l表示该点存在不连续现象,为Residue值非O的点。
[0006]Si=F1-FH 公式 I
[0007]W(Pi) = Pi+2^ 31 kj e Z公式 2
[0008]Ai=W(Si) 公式 3
[0009]
【权利要求】
1.一种基于异构加速平台的二维相位解缠绕方法,其特征在于:所述方法各个步骤均在异构加速平台上实现,实现步骤如下: (1)异构加速平台上定义相位数据中不一致的点,即Residue值为+/-1的点; (11)把相位数据分块,读入共享内存,线程组(Block)中的每个线程计算一个点的Residue值,并保存;为了保证每个Block的最后一行和最后一列能按照一样的规则计算,每个Block需要多读入一行和一列数据; (12)在求出Residue值之后,进行寻找并匹配偶极子操作(Dipolecut),所述偶极子是指相邻并且有着相反极性的Residue值的点,如果该点的Residue值为+1,在该点周围寻找极性相反的点,如果有极性相反的点,则这两个点标记为BranchCut点,并分别把这两个对应的Residue值标记为+2或者-2,得到Residue数据; (2)异构加速平台上匹配不一致点的过程,即Branchcut步骤,该步骤分为两个过程:局部匹配和全局匹配; (21)首先进行局部匹配,把Residue数据分块后读入共享内存,在每一个Block内进行Branch cut操作,先由Residue值为+1的去寻找最近Residue值极性为负(_1、~2)的点或者数据边界,直到超过搜索范围;同步操作之后再由-1的点去寻找极性为正的点,每一个Block多读N圈的Residue输入数据,即上下左右各多读N行,N为一个正整数参数,提高精度;如果该Block有Residue值非O的点未匹配,则把对各Block的标识(BlockFlag)写为+1或者-1,其极性跟Residue值极性相同; (22)然后进行全局匹配,全局匹配与局部匹配使用一样的线程配置,采用一个线程读取BlockFlag标志,如果该BlockFlag标志为O,则结束;如果该BlockFlag标志不为O就说明该Block需要进行全局匹配;全局匹配过程时,若BlockFlag值为+1,则找到最近的BlockFlag为-1或者边界上的Block,计算它们之间的最远距离和最近距离作为搜索范围,在该范围中肯定能找到匹配的点,得到匹配后的BranchCut数据,BranchCut即各个点经过Branch cut操作后的值; (3)在异构加速平台上实现FloodFill步骤,输出解缠绕后的相位数据,具体实现如下: 输入匹配后的BranchCut数据,BranchCut数据中选取种子点作为起始点,标记为已经被解缠绕;所述种子点不能是被Branch cut的点,通过有限次重启设备函数Kernel,以一种动态的Block的组织方式把种子状态从中心往四周扩散;其中在Block内部,每个线程一次处理一行或者一列数据,然后四个方向,即从左到右、从上到下、从右到左、从下到上依次进行解缠绕处理,一个线程处理一行或一列后进行解缠绕处理需要一次同步,直到整个Block中没有需要被解缠绕的点时停止迭代,输出解缠绕后的相位数据。
2.根据权利要求1所述的基于异构加速平台的二维相位解缠绕方法,其特征在于:在所述方法的各个步骤中,对计算中使用和得到的各种数据均采用压缩存储,以提高运算速度。
3.根据权利要求1所述的基于异构加速平台的二维相位解缠绕方法,其特征在于:把所述(11)和(12)两个步骤合并,即在同一个Kernel内完成。
4.根据权利要求1所述的基于异构加速平台的二维相位解缠绕方法,其特征在于:在所述步骤(21)的局部匹配中,把Residue数据分块后读入共享内存之前,先给Residue数据伪造一个边界,称为伪边界,即对行或者列的数目不是16的倍数时,扩充为16的倍数,用一个Residue值域外的值填充补全的部分;每个Block中,用同样的方法给Residue数据补N圈。
5.根据权利要求1所述的基于异构加速平台的二维相位解缠绕方法,其特征在于:所述步骤(3)中,以一种动态的Block的组织方式把种子状态从中心往四周扩散式的实现过程为:将输入匹配后的BranchCut数据分为固定大小的块,称为small_block,—个Block处理 4 个邻接的 small_Block 组成的数据,称为一个big_Block ;small_BlockSbig_Block中的分布呈“田”字型;big_Block有两种不同的组织方式,连续两次重启Kernel,对应位置的Block处理的small_Blcok不完全相同,即big_Block的组织方式会发生改变,这样small_Block会在不同的big_Block之间轮换,有些small_Block刚被解缠绕后随即作为种子Block传播进另一个big_Block,这样就能使种子状态从中心往四周扩散;在上述操作中需要两个标志:Block_flag和Pixel_flag分别记录Block和每一个点的状态,Block_flag标识该small_Block是否已经被解缠,而Pixel_flag标识该点是否被解缠。
6.根据权利要求5所述的基于异构加速平台的二维相位解缠绕方法,其特征在于:所述步骤(3)中,所述Block_flag不仅能够确定该Block是否要执行解缠绕操作,还能够确定种子点是从big_ Block的哪一个角落传播进来的,然后确定四个方向的执行顺序。
【文档编号】G06T1/00GK103942095SQ201410101628
【公开日】2014年7月23日 申请日期:2014年3月18日 优先权日:2014年3月18日
【发明者】吴振华, 马文静, 龙国平, 李玉成 申请人:中国科学院软件研究所
再多了解一些
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1