一种航拍地形三维重建系统中的点云及网格分块方法与流程

文档序号:18974636发布日期:2019-10-29 03:10阅读:425来源:国知局
一种航拍地形三维重建系统中的点云及网格分块方法与流程

本发明属于无人机航拍数据应用领域,特别涉及一种航拍地形三维重建系统中的点云及网格分块方法。



背景技术:

随着国家对无人机空域的严格管控,工业无人机的安全性和稳定性有了大幅提升。随即而来基于无人机的工业级应用层出不穷,其中以航拍测绘类和行业巡检类最为突出。这些应用都具有大场景2d地图拼接和3d地形重建的需求,但由于该类项目存在图像分辨率高和图像数量大等特点,因此实现场景重建不仅对pc平台的硬件性能有更多依赖,而且对三维重建系统的算法鲁棒性也提出了更高要求。

因此,在实现大场景地形重建的前提下能够进一步提升算法鲁棒性并降低硬件性能要求就显得尤为重要。现有的方法航拍大场景2d地图拼接和3d地形重建中因数据量过大导致无法正常生成dom和dsm的问题。



技术实现要素:

本发明的目的在于提供一种航拍地形三维重建系统中的点云及网格分块方法,以解决上述问题。

为实现上述目的,本发明采用以下技术方案:

一种航拍地形三维重建系统中的点云及网格分块方法,包括以下步骤:

步骤1:在三维重建系统中采用slam或者sfm技术通过非线性优化的方式估算出相机位姿和场景的稀疏点云,对稀疏点云进行分块处理,分块后对稀疏点云做稠密化操作;

步骤2:在点云稠密化结束后,对稠密点云分块处理,对稠密点云分块后,对稠密点云进行三角网格化操作;

步骤3:在得到三角网格后,在纹理贴图处理前对三角网格进行分块,实现生成大分辨率dom和dsm图像的需求。

进一步的,步骤1中,稀疏点云分块的大小通过以下公式表示:

bsparse=f(nview,gdense,npoint,cram)

其中,bsparse表示稀疏点云分块的大小,nview表示视图的数量,gdense表示稠密化的等级,npoint表示点云的数量,cram表示内存的剩余空间。

进一步的,步骤1的实现流程为:先通过cram和gdense确定当前内存所能容忍的视图数量阈值及点云数量阈值,然后沿着视图拍摄的航线走向,累积nview和npoint的数量,直到找到满足阈值情况下最大的分块为止。

进一步的,步骤2中,稠密点云分块的大小通过以下公式表示:

bdense=f(npoint,cram)

其中,bdense表示稠密点云分块的大小,npoint表示点云的数量,cram表示内存的剩余空间。

进一步的,步骤2的实现流程为:首先根据内存剩余空间的大小确定点云数量的阈值,然后沿着视图拍摄的航线走向,累积npoint的数量,直到找到满足阈值情况下最大的分块为止。

进一步的,步骤3中,三角网格分块的关系用以下公式表示:

bmesh=f(rdom/dsm,cram)

其中,bmesh表示三角网格分块的大小,rdom/dsm表示dom和dsm的分辨率,cram表示内存的剩余空间。

进一步的,步骤3中,在得到网格分块的尺寸后,按照固定的坐标轴方向将网格在水平投影面上进行切分,生成相互独立的三角网格块;在网格切分的过程中需要对网格中的顶点、面片及视图进行拆分、删除、重新建立索引关系操作,在操作的过程中避免出现顶点剔除不干净或面片丢失的现象;在网格分块时应保证相邻网格间存在一定的重叠度。

与现有技术相比,本发明有以下技术效果:

本发明以生成的点云作为原始输入,在常规流程的基础上中加入了三个数据分块处理的过程,分别是稀疏点云分块的过程、稠密点云分块的过程和三角网格分块的过程。通过本发明所提出的方法可以实现逐层分块,以确保在不同硬件平台上都可以灵活实现大场景数据的处理,最大限度的降低合并误差。

本发明通过将大场景三维重建的数据逐层分块,解决了因平台资源不足对算法鲁棒性带来的影响,并最终实现生成大分辨率dom和dsm图像的需求。

本发明降低了三维重建系统运行的硬件门槛,能够很好地保留分块后的块内及块间关系,为生成大场景高分辨率的数字正射影像(dom)和数字地表模型(dsm)奠定了坚实基础。

附图说明

图1是本发明所提出的分块方法在三维重建系统中的流程图;

图2是本发明中步骤s1和s2中点云分块策略的示意图;

图3是本发明中步骤s3中三角网格分块策略的示意图;

图4是本发明中步骤s3网格分块完成后相邻块之间重叠区域的示意图;

图5为本发明在管道巡检项目中的运用示例图。

具体实施方式

以下结合附图对本发明进一步说明:

请参阅图1至图5,一种航拍地形三维重建系统中的点云及网格分块方法,包括以下步骤:

步骤1:在三维重建系统中采用slam或者sfm技术通过非线性优化的方式估算出相机位姿和场景的稀疏点云,对稀疏点云进行分块处理,分块后对稀疏点云做稠密化操作;

步骤2:在点云稠密化结束后,对稠密点云分块处理,对稠密点云分块后,对稠密点云进行三角网格化操作;

步骤3:在得到三角网格后,在纹理贴图处理前对三角网格进行分块,实现生成大分辨率dom和dsm图像的需求。

步骤1中,稀疏点云分块的大小通过以下公式表示:

bsparse=f(nview,gdense,npoint,cram)

其中,bsparse表示稀疏点云分块的大小,nview表示视图的数量,gdense表示稠密化的等级,npoint表示点云的数量,cram表示内存的剩余空间。

步骤1的实现流程为:先通过cram和gdense确定当前内存所能容忍的视图数量阈值及点云数量阈值,然后沿着视图拍摄的航线走向,累积nview和npoint的数量,直到找到满足阈值情况下最大的分块为止。

步骤2中,稠密点云分块的大小通过以下公式表示:

bdense=f(npoint,cram)

其中,bdense表示稠密点云分块的大小,npoint表示点云的数量,cram表示内存的剩余空间。

步骤2的实现流程为:首先根据内存剩余空间的大小确定点云数量的阈值,然后沿着视图拍摄的航线走向,累积npoint的数量,直到找到满足阈值情况下最大的分块为止。

步骤3中,三角网格分块的关系用以下公式表示:

bmesh=f(rdom/dsm,cram)

其中,bmesh表示三角网格分块的大小,rdom/dsm表示dom和dsm的分辨率,cram表示内存的剩余空间。

步骤3中,在得到网格分块的尺寸后,按照固定的坐标轴方向将网格在水平投影面上进行切分,生成相互独立的三角网格块;在网格切分的过程中需要对网格中的顶点、面片及视图进行拆分、删除、重新建立索引关系操作,在操作的过程中避免出现顶点剔除不干净或面片丢失的现象;在网格分块时应保证相邻网格间存在一定的重叠度。

三维重建系统一般分为点云生成和模型构建两部分,点云生成是指采用slam或者sfm技术通过非线性优化的方式估算出相机位姿和场景的稀疏点云,而模型构建是在稀疏点云的基础上通过点云稠密化、三角网格化和纹理贴图等主要模块生成dom和dsm。当点云数据量过大、点云稠密化的等级过高或者纹理贴图的分辨率过大时,上述三个模块的运算压力都将增大,其中以内存不足引起的中断最为常见。本发明所提出的点云及网格分块方法就是为了解决该问题,以生成的点云作为原始输入,主要针对模型构建部分进行处理,其流程如图1所示:在常规流程的基础上中加入了三个数据分块处理的过程,分别是稀疏点云分块的s1过程、稠密点云分块的s2过程和三角网格分块的s3过程。通过本发明所提出的方法可以实现逐层分块,以确保在不同硬件平台上都可以灵活实现大场景数据的处理,最大限度的降低合并误差。

所述方法的具体实施步骤如下:

步骤s1:

三维重建时,在得到稀疏点云后,为了得到更丰富的细节,需要对稀疏点云做稠密化操作。在点云稠密化模块中,首先会对稀疏点云所覆盖的所有视图分别求解深度图,这些深度图所占用的内存大小跟稠密化等级相关,稠密化等级越高所占内存越大;然后将所有视图的深度图融合成一个完整的深度图。在这个过程中,图密集度、稠密化等级以及点云覆盖范围等因素都会对硬件内存造成不同程度的压力,并可能因内存不足而引发算法崩溃、流程停止等问题。考虑上述影响因素,可将稀疏点云分块的大小通过公式1表示:

bsparse=f(nview,gdense,npoint,cram)(公式1)

其中,bsparse表示稀疏点云分块的大小,nview表示视图的数量,gdense表示稠密化的等级,npoint表示点云的数量,cram表示内存的剩余空间。该方法的实现流程是先通过cram和gdense确定当前内存所能容忍的视图数量阈值及点云数量阈值,然后沿着视图拍摄的航线走向,累积nview和npoint的数量,直到找到满足阈值情况下最大的分块为止。

相比于视图数量等间隔分块和空间距离等间隔分块这两种常用方法,本文的方法具有更高的鲁棒性。视图数量等间隔分块会受视图重叠度的影响而难以综合考虑到视图数量与点云之间的关系;空间距离等间隔分块在处理诸如航线变化复杂的场景时,会产生更多的碎片数据并造成更大的合并误差。

稀疏点云的分块策略如附图2所示:按照本文提出的稀疏点云分块方法沿着航线的走向将区域中视图所覆盖的点云进行切分,由于视图与视图之间存在一定的重叠度,因此相邻块之间会存在一定的重叠点云,这些重叠点云是建立相邻块之间合并关系的保证。

步骤s2:

在点云稠密化结束后,点云的数量会急剧增大,稠密化后的点云称为稠密点云。在点云之间建立三角面片关系的过程称为三角网格化,三角网格化会删除点云中多余的点并对生成的网格进行光滑处理以得到理想的表面。三角网格化过程中会使用图割对网格进行优化,该过程会消耗大量的内存,如果点云数量过大时会出现内存不足的问题,稠密点云分块的目的就是为了解决该问题。

通过图割求解最优表面的过程中,点云的数量直接关系到图的大小。点云的数量越大,图的体量和复杂度也就越高,消耗的内存也就越大。因此,可将稠密点云分块的大小通过公式2表示:

bdense=f(npoint,cram)(公式2)

其中,bdense表示稠密点云分块的大小,npoint表示点云的数量,cram表示内存的剩余空间。本步骤的实现流程同步骤s1相似,首先根据内存剩余空间的大小确定点云数量的阈值,然后沿着视图拍摄的航线走向,累积npoint的数量,直到找到满足阈值情况下最大的分块为止。

步骤s3:

在得到三角网格后,可以根据三角面片的形状生成场景的dsm;也可以根据顶点与视图之间的关系寻找到每个三角面片对应的最优纹理贴片,并最终生成场景中带有纹理信息的dom。在dsm和dom生成的过程中都需要申请一块存储图像数据的内存空间,该空间的大小与网格大小和图像分辨率成正比例关系,而网格的数据量过大或者要求生成的拼图分辨率过高都会造成内存申请失败。因此,将剩余内存和拼图分辨率作为网格分块的依据可以解决该问题,三角网格分块的关系可用公式3表示:

bmesh=f(rdom/dsm,cram)(公式3)

其中,bmesh表示三角网格分块的大小,rdom/dsm表示dom和dsm的分辨率,cram表示内存的剩余空间。网格的分块策略和点云的分块策略有所不同,图像所占用的内存空间与图像的像素面积相关,为了保证每个分块在生成dom和dsm的过程中能够申请到足够的内存空间,分块在水平投影面上的面积应得到约束,该面积的大小决定了分块的尺寸,主要由cram和rdom/dsm这两个因素决定。三角网格分块的策略如附图3所示,在得到网格分块的尺寸后,按照固定的坐标轴方向将网格在水平投影面上进行切分,生成相互独立的三角网格块。

在网格切分的过程中需要对网格中的顶点、面片及视图进行拆分、删除、重新建立索引关系等操作,在操作的过程中应避免出现顶点剔除不干净或面片丢失的现象。此外,为了避免后续dom和dsm图像合并过程中产生误差,在网格分块时应保证相邻网格间存在一定的重叠度,如附图4中所示,图a、图b为两相邻网格块之间的边缘,图c中的高亮部分为两网格块之间重叠的三角面片区域。

总之,通过以上三个步骤可以将大场景三维重建的数据逐层分块,解决了因平台资源不足对算法鲁棒性带来的影响,并最终实现生成大分辨率dom和dsm图像的需求。

图5为本发明所提出的方法在管道巡检项目中的运用,对于20km长的一段管线,采集了658张分辨率为6000×4000的图像,运用该分块策略可实现在低配置平台上的全分辨率图像拼接。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1