基于GPU集群的三维重建算法并行化方法技术

技术编号:26421548 阅读:15 留言:0更新日期:2020-11-20 14:17
本发明专利技术公开了一种基于GPU集群的三维重建算法并行化方法,涉及计算机视觉技术领域。该方法以SfM算法为基础,研究无人机影像三维重建技术流程,同时针对无人机三维稠密重建处理耗时这一问题,采用GPU集群作为处理平台,具体地,基于SFM_MVS相关理论,掌握基于图片序列的实景三维重建相关流程,同时分别采用了MPI并行编程技术和GPU并行编程技术对三维重建流程部分环节进行优化加速研究工作,其中利用集群进行稀疏重建算法算子替换有效解决了无人机航拍影像数据量大、计算耗时的问题,稠密重建算法粗粒度数据并行与稠密匹配算法特征提取环节的细粒度并行及优化有效加速了三维重建后期稠密点云重建流程。

【技术实现步骤摘要】
基于GPU集群的三维重建算法并行化方法
本专利技术属于GPU集群与并行计算领域,涉及一种基于GPU集群的三维重建算法并行化方法。
技术介绍
近年来,无人机技术已经发展成为一种广泛使用的较为新颖的遥感数据获取平台。和其他遥感平台相比,无人机平台具有成本低廉、使用方便,结合地面站的航线规划功能上手快、外出实验操作简单等方面的优势。因无人机飞速发展产生的无人机三维重建技术,通过无人机搭载多角度相机拍摄地物,较为轻易地获取物体侧面纹理信息,从而能够获取更为全面的三维信息,在城市规划、建设、管理和应急响应中起着极其重要的作用。目前无人机三维重建技术主要是在Windows环境下依托专业的自动化程度较高的无人机测绘和摄影测量软件,能够进行全自动联合空中三角测量、三维模型构建、贴纹理等操作,形成最终三维真实场景。相比于传统的建模方法,利用无人机进行三维实景重建,在数据获取、处理方面效率都有着显著的提升。但是,在使用这些专业的商业软件时,依旧会存在以下问题:(1)相对于传统手工建模的方式,使用商业软件进行三维重建有着不少的效率提升,但进行大规模作业时,处理周期依然较长;(2)商业软件的硬件环境要求也随着软件版本的更新换代也在不断提高,普通办公所用的台式机往往无法满足,在一定程度上也带来了诸多不便;(3)某些商业软件虽然也能支持在局域网下进行并行化处理,但是其通信模块不能够很好承担各处理平台之间的通信问题,经常出现通信死锁、任务缺失问题;且商业软件闭源,无法进行进一步针对性的修改与开发。计算机视觉和传统摄影测量技术的融合发展,带来了运动恢复结构(SfM)这一新型的地形测量技术,它可以让人们以较低的成本获得关于地貌高质量的、密集的三维点云数据。采用开源的计算机视觉算法进行实景三维重建拥有着源码易获取、移植性高等特点,但是随着人们对点云质量要求的提高,SfM得到的稀疏点云无法直接进行应用,需要进一步三维重建得到三维稠密点云,此时的数据处理耗时变成为一大问题。采用高性能计算技术进行数据处理加速是一个高效的解决方案,其中的一个重要分支,CPU+GPU异构计算,结合了CPU和GPU两者的优势,被不少研究人员用于处理图形图像解决效率低下的首选方式。然而,单个文件/任务处理速度的降低依旧无法掩盖数据量的加大导致的处理时间漫长的问题,面对此类问题,相比于其他处理方式,采用集群处理方式使用多个节点同时进行处理则有着明显的优势。GPU集群系统和传统的集群有所不同,GPU集群中的每个计算节点在配备常规CPU计算核心的前提下,每个节点必备一个或者多个GPU处理器,这样能充分发掘CPU的逻辑运算能力和GPU的浮点计算能力,相较于传统计算平台能够发挥出难以匹敌的优势。因此,本专利技术基于计算机视觉相关算法,以SfM算法为基础,研究无人机影像三维重建技术流程,同时针对无人机三维稠密重建处理耗时这一问题,采用GPU集群作为处理平台,具有重要的理论研究和实践应用价值。
技术实现思路
本专利技术公开了一种基于GPU集群的三维重建算法并行化方法,该方法包括以下步骤:S1)给出基于图片特征的三维重建算法的具体流程;S2)分析三维重建算法的具体流程中最耗时的部分;S3)对三维重建流程中最耗时的部分进行并行优化;S4)对三维重建流程中的其余部分进行优化;其中,步骤S1)中基于图片特征的三维重建算法的具体流程包括:利用无人机获取到地物图像序列后,首先进行特征提取,在一系列不同的图像中识别同名关键点,正是这些关键点实现了不同图像间的匹配,以及场景几何的重构。一旦定位了每个图像中的关键点,就需要确定不同图像中关键点之间的对应关系,为了确保仅仅保留正确的对应关系,有必要采取进一步的步骤过滤掉剩余的任何错误的匹配,由于关键点仅限于具有几何一致性匹配的关键点,所以,每个图像对之间的链接可以被识别,并且组织为轨迹;然后运动恢复结构理论基于这些轨迹和关键点以及其他相关的图片信息,进行几何解算,可以粗略描述场景几何信息的稀疏点云,SfM产生的稀疏点云通常只是使用MVS生成更加密集点云数据的中间步骤;MVS的目标是从已知的相机参数的图像集合中提供完整的三维场景重建;选用开源的Bundler处理稀疏重建流程,选用PMVS算法软件处理稠密重建流程。步骤S2)中分析三维重建算法的具体流程中最耗时的部分包括:在Linux环境下通过处理不同规模的数据集,记录各环节耗时情况,采用多次实验求平均的思想,分析三维重建算法的具体流程中的瓶颈环节,得到在基于图像序列的三维重建算法的具体流程中,稠密重建流程耗时占比最大,至少占全部流程的60%以上。步骤S3)在深入分析算法原理与流程的基础上,分析并确定算法的可并行性及并行优化方法,实现在集群环境下基于MPI并行编程技术的CMVS稠密点云生成算法;为进一步加快三维重建流程,充分发挥GPU处理图形图像优势,本研究细化分析三维重建流程,根据流程热点分析结果结合GPU硬件特性,在GPU单节点环境下设计优化稠密重建面片优化环节,实现MPI+GPU的二级稠密重建并行流程;使用GPU并行技术处理稠密重建特征提取环节,同时采用合并核函数等方式,进一步优化对应的GPU并行算法,建立GPU集群环境下二级并行模型;步骤S4)将稀疏重建环节的特征提取阶段替换为基于GPU平台的优化算法,形成基于GPU环境下的稀疏重建流程,实现GPU环境下稀疏重建加速处理。本专利技术基于SFM_MVS相关理论,掌握了基于图片序列的实景三维重建相关流程。同时分别采用了MPI并行编程技术和GPU并行编程技术对三维重建流程部分环节进行优化加速研究工作,其中利用集群进行稀疏重建算法算子替换有效解决了无人机航拍影像数据量大、计算耗时的问题,稠密重建算法粗粒度数据并行与稠密匹配算法特征提取环节的细粒度并行及优化有效加速了三维重建后期稠密点云重建流程。附图说明图1为本专利技术的技术路线图图2为本专利技术的基于图像序列的三维重建算法流程示意图图3为本专利技术的CMVS并行优化设计图图4为本专利技术的调用串行PMVS过程程序流程图图5为本专利技术的面片及光度差异函数示意图图6为本专利技术的MPI+GPU二级并行优化稠密重建处理示意图图7为本专利技术的Harris特征提取原理图图8为本专利技术的梯度变化图图9位本专利技术的Harris特征提取环节并行化思路示意图图10为本专利技术的梯度计算并行算法的处理过程示意图图11为本专利技术的矩阵计算并行算法的处理过程示意图图12为本专利技术的Harris特征提取环节优化后并行示意图图13为本专利技术的SIFT-GPU加速示意图具体实施方式下面结合附图对本专利技术的具体实施方式以及工作原理作进一步详细说明。本专利技术技术路线如图1所示,首先掌握三维重建方法整体流程,了解各流程耗时情况,明确流程中耗时主体部分,即为三维稠密重建部分的前提下;之后依据原理流程分析可并行性,采用MPI并行编程技术,在多节点集群环境本文档来自技高网
...

【技术保护点】
1.一种基于GPU集群的三维重建算法并行化方法,其特征在于,该方法包括以下步骤:/nS1)给出基于图片特征的三维重建算法的具体流程;/nS2)分析三维重建算法的具体流程中最耗时的部分;/nS3)对三维重建流程中最耗时的部分进行并行优化;/nS4)对三维重建流程中的其余部分进行优化;/n其中,步骤S1)中基于图片特征的三维重建算法的具体流程包括:利用无人机获取到地物图像序列后,首先进行特征提取,在一系列不同的图像中识别同名关键点,正是这些关键点实现了不同图像间的匹配,以及场景几何的重构,一旦定位了每个图像中的关键点,就需要确定不同图像中关键点之间的对应关系,为了确保仅仅保留正确的对应关系,有必要采取进一步的步骤过滤掉剩余的任何错误的匹配,由于关键点仅限于具有几何一致性匹配的关键点,所以,每个图像对之间的链接可以被识别,并且组织为轨迹;然后运动恢复结构理论基于这些轨迹和关键点以及其他相关的图片信息,进行几何解算,可以粗略描述场景几何信息的稀疏点云,SfM产生的稀疏点云通常只是使用MVS生成更加密集点云数据的中间步骤;MVS的目标是从已知的相机参数的图像集合中提供完整的三维场景重建;选用开源的Bundler处理稀疏重建流程,选用PMVS算法软件处理稠密重建流程;/n步骤S2)中分析三维重建算法的具体流程中最耗时的部分包括:在Linux环境下通过处理不同规模的数据集,记录各环节耗时情况,采用多次实验求平均的思想,分析三维重建算法的具体流程中的瓶颈环节,得到在基于图像序列的三维重建算法的具体流程中,稠密重建流程耗时占比最大,占三维重建算法的具体流程的60%以上。/n步骤S3)中对三维重建流程中最耗时的部分,即稠密重建流程进行并行优化包括:/nS31)稠密重建任务划分:当图像数量增加时,处理稠密重建流程PMVS算法软件的计算负担迅速增加,进而出现可扩展性的问题,对于内存的需求,也随着稠密重建过程中使用图像数量的增加而增加,并且实际限制了同时匹配的图像数量,图像聚类是这类内存问题的解决方法,也就是把大型项目拆分成为不同的块,MVS聚类视图(Clustering Views forMVS,CMVS)的预处理步骤将图像集分解为重叠视图群集,以使稠密重建任务被划分为一个个占用内存较小的重建任务图像集,由SfM生成的稀疏点云被用于生成大小可控的重叠图像集群,使得目标生成点云中的每个三维点至少由一个图像任务群重构,分解完毕之后,再利用PMVS算法进行稠密点云生成,即基于CMVS和PMVS稠密点云重建的流程一般分为三步:/n(1)任务拆分,确定子任务图像集;/n(2)依据子任务图像集生成配置文件;/n(3)根据配置文件进行PMVS稠密重建;/nS32)CMVS并行算法实现:使用MPI并行编程技术,并采用数据的并行,将CMVS依据需求分割生成多个子图像任务集,并生成对应的任务信息文件option 0,option 1,…….option N,任务信息文件由Master按情况分发给各个Worker,Worker收到任务信息文件后开始各自调用稠密重建算法进行稠密点云生成,进行工作得到结果,其具体的实现过程如下:/n(1)主节点和计算节点初始化以后,主节点开始预处理操作,这些操作包括配置错误日志文件,处理和校正输入参数,访问shell文件中所有的‘option’记录;/n(2)根据用户选择将记录分解成一系列小的‘shell’文件,如果有需要的话,还需要检查‘option’文件的正确性;/n(3)主节点将随后把必要的参数广播给其他计算节点;/n(4)当所有的进程接收到相应的参数后,主节点和计算节点进入到处理和沟通环节,即每个计算节点在处理之前都先创建适合自己使用的正确的PMVS运行环境;/n(5)当所有的子任务完成后,整个程序将终止;/nS33)剖析PMVS稠密重建内部流程,依照实际算法运行顺序进行耗时热点分析,在此基础上,针对耗时热点尝试采用GPU加速处理,进一步加速稠密重建流程:PMVS算法具有三个步骤:图像特征处理,即匹配步骤;面片生成与扩散,即扩散步骤;过滤不正确匹配,即过滤步骤;在匹配步骤中,使用Harris算子等特征提取算法检测角点和团块特征,然后在多个图像中进行匹配,所得的特征匹配点作为下一步面片生成的基础;在扩散步骤中,从初始匹配,即稀疏面片开始,考虑对投影面片图像中的相邻像素进行扩散,这样可以通过扩散重建来创建密集的面片,如果相邻图像单元已经被重建或发生深度不连续的情况,那么不再进行扩散;在过滤步骤中,通过处理模型中的遮挡,可见性约束被随后用于过滤不正确的匹配,通过滤除异常块强制执行全局可见一致性,然后通过进一步的过滤删除仅在少数深度图上可见的面片;/nS331)稠密重建的算法耗时热点在稠密重建的面片处理阶段,对其实现基于GPU环境下的加速处理...

【技术特征摘要】
1.一种基于GPU集群的三维重建算法并行化方法,其特征在于,该方法包括以下步骤:
S1)给出基于图片特征的三维重建算法的具体流程;
S2)分析三维重建算法的具体流程中最耗时的部分;
S3)对三维重建流程中最耗时的部分进行并行优化;
S4)对三维重建流程中的其余部分进行优化;
其中,步骤S1)中基于图片特征的三维重建算法的具体流程包括:利用无人机获取到地物图像序列后,首先进行特征提取,在一系列不同的图像中识别同名关键点,正是这些关键点实现了不同图像间的匹配,以及场景几何的重构,一旦定位了每个图像中的关键点,就需要确定不同图像中关键点之间的对应关系,为了确保仅仅保留正确的对应关系,有必要采取进一步的步骤过滤掉剩余的任何错误的匹配,由于关键点仅限于具有几何一致性匹配的关键点,所以,每个图像对之间的链接可以被识别,并且组织为轨迹;然后运动恢复结构理论基于这些轨迹和关键点以及其他相关的图片信息,进行几何解算,可以粗略描述场景几何信息的稀疏点云,SfM产生的稀疏点云通常只是使用MVS生成更加密集点云数据的中间步骤;MVS的目标是从已知的相机参数的图像集合中提供完整的三维场景重建;选用开源的Bundler处理稀疏重建流程,选用PMVS算法软件处理稠密重建流程;
步骤S2)中分析三维重建算法的具体流程中最耗时的部分包括:在Linux环境下通过处理不同规模的数据集,记录各环节耗时情况,采用多次实验求平均的思想,分析三维重建算法的具体流程中的瓶颈环节,得到在基于图像序列的三维重建算法的具体流程中,稠密重建流程耗时占比最大,占三维重建算法的具体流程的60%以上。
步骤S3)中对三维重建流程中最耗时的部分,即稠密重建流程进行并行优化包括:
S31)稠密重建任务划分:当图像数量增加时,处理稠密重建流程PMVS算法软件的计算负担迅速增加,进而出现可扩展性的问题,对于内存的需求,也随着稠密重建过程中使用图像数量的增加而增加,并且实际限制了同时匹配的图像数量,图像聚类是这类内存问题的解决方法,也就是把大型项目拆分成为不同的块,MVS聚类视图(ClusteringViewsforMVS,CMVS)的预处理步骤将图像集分解为重叠视图群集,以使稠密重建任务被划分为一个个占用内存较小的重建任务图像集,由SfM生成的稀疏点云被用于生成大小可控的重叠图像集群,使得目标生成点云中的每个三维点至少由一个图像任务群重构,分解完毕之后,再利用PMVS算法进行稠密点云生成,即基于CMVS和PMVS稠密点云重建的流程一般分为三步:
(1)任务拆分,确定子任务图像集;
(2)依据子任务图像集生成配置文件;
(3)根据配置文件进行PMVS稠密重建;
S32)CMVS并行算法实现:使用MPI并行编程技术,并采用数据的并行,将CMVS依据需求分割生成多个子图像任务集,并生成对应的任务信息文件option0,option1,…….optionN,任务信息文件由Master按情况分发给各个Worker,Worker收到任务信息文件后开始各自调用稠密重建算法进行稠密点云生成,进行工作得到结果,其具体的实现过程如下:
(1)主节点和计算节点初始化以后,主节点开始预处理操作,这些操作包括配置错误日志文件,处理和校正输入参数,访问shell文件中所有的‘option’记录;
(2)根据用户选择将记录分解成一系列小的‘shell’文件,如果有需要的话,还需要检查‘option’文件的正确性;
(3)主节点将随后把必要的参数广播给其他计算节点;
(4)当所有的进程接收到相应的参数后,主节点和计算节点进入到处理和沟通环节,即每个计算节点在处理之前都先创建适合自己使用的正确的PMVS运行环境;
(5)当所有的子任务完成后,整个程序将终止;
S33)剖析PMVS稠密重建内部流程,依照实际算法运行顺序进行耗时热点分析,在此基础上,针对耗时热点尝试采用GPU加速处理,进一步加速稠密重建流程:PMVS算法具有三个步骤:图像特征处理,即匹配步骤;面片生成与扩散,即扩散步骤;过滤不正确匹配,即过滤步骤;在匹配步骤中,使用Harris算子等特征提取算法检测角点和团块特征,然后在多个图像中进行匹配,所得的特征匹配点作为下一步面片生成的基础;在扩散步骤中,从初始匹配,即稀疏面片开始,考虑对投影面片图像中的相邻像素进行扩散,这样可以通过扩散重建来创建密集的面片,如果相邻图像单元已经被重建或发生深度不连续的情况,那么不再进行扩散;在过滤步骤中,通过处理模型中的遮挡,可见性约束被随后用于过滤不正确的匹配,通过滤除异常块强制执行全局可见一致性,然后通过进一步的过滤删除仅在少数深度图上可见的面片;
S331)稠密重建的算法耗时热点在稠密重建的面片处理阶段,对其实现基于GPU环境下的加速处理:
经过前期特征处理后,对于每张图像中的任意特征点f,都能通过特征匹配找出其在其他图像中的对应同名点f′,从而构成一个集合F;将集合中的每个(f,f′)进行三角测量原理构建即可生成三维空间点,生成三维点之后将这个三维空间点作为一个可能的面片中心,尝试生成空间面片,面片(patch)是近似于物体表面的局部正切平面,包括中心c(p),法向量n(p),参考影像R(p)。面片的一条边与参考相机,即拍摄参考影像的相机的x轴平行,patch上有μ×μ的格网;
构建过程如下:



其中,参考影像R(p)要求面片在参考影像中可见;O(I)为参考图像光心,Ii表示一个任务集合中的影像;
由于生成的面片可能会含有错误的点,所以还需要考虑面片向量与图像光心向量的相互关系,即这两者的夹角需要小于给定阈值τ,只有符合该条件,才认为面片对于相片,即影像所在的投影平面是可见的,即:



其中,V(p)为经过筛选后的参考影像集,Im表示一个面片任务的影像集合。
对侯选面片的参数进行初始化后,首先利用面片优化方法对n(p)和c(p)进行优化,得到更为准确的面片及对应的图像集信息,在进行面片优化的过程中,主要依赖于光度差异函数,现详细说明如下:
假设物点X对应的片面为p(X)=p,R(p)为面片p的参考图像,V(p)代表所有可以在照片中看见空间面片p的照片集合,面片p的像素点的个数为n,在面片p的可见图像I1,I2∈V(p)上的投影分别为pp1和pp2,那么,面片p在I1,I2上的光度差异性被定义为h(p,I1,I2):
h(p,I1,I2)=1-NCC(pp1,pp2)(公式3)



其中,NCC(NormalizedCrossCorrelation)是两个面片投影之间的归一化互相关关系。pp1(j)和pp2(j)分别代表了面片p的第j个像素在图像I1,I2上的像素值。和分别代表了pp1和pp2的像素平均值;
利用h(p,I1,I2),便可定义物点X对应面片p的总的光度差异函数:



为了降低干扰,算法还需要筛选出那些与参考图像R(p)的光度差异值低于给定阈值的图像,即
V*(p)={I|I∈V(p),h(p,I,R(p))≤α}(公式6)
优化过程中更新的|V*(p)|≥γ,γ为预先设定的阈值,若面片生成成功,则把p存储在对应的cell里并同时更新以(i,j)为中心的生成面片Q(i,j)和其中符合面片可见条件的面片Q*(i,j),为了加快计算速度,只要存在一个面片被重建成功,则这个存储面片的cell终止更新;
初始化面片生成之后,开始试图在面片领域内生成新的面片,给定面片p,首先确定一个满足一定规则的邻居图像cel1集C(p),然后对每个cel1执行面片扩展策略,其中:
C(p)={Ci(x′,y′)|p∈Qi(x,y),|x-x′|+|y-y′|=1}(公式7)
其中,Ci(x′,y′)是由(x,y)的邻域(x′,y′)组成的cell集;
当面片p与片p′满足以下公式时,不需要扩散,并从Ci(x′,y′...

【专利技术属性】
技术研发人员:黄方彭书颖杨浩铁博陈胤杰
申请(专利权)人:电子科技大学
类型:发明
国别省市:四川;51

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1