基于点云的管道三维自动建模方法研究
2023-09-21梁周雁焦宁邓先睿姜海峰
梁周雁,焦宁,邓先睿,姜海峰
(1.山东省国土测绘院,山东 济南 250013;2.山东永平测绘有限公司,山东 威海 264300)
0 引言
近年来许多城市开展了地下空间及市政基础设施资源和信息化项目,从而查清城市地下空间及市政基础设施种类、构成、规模、空间分布、属性信息等基本情况,绘制城市地上地下三维立体“一张图”,为城市地下空间及市政基础设施建设和管理提供数据支撑,促进地下空间资源合理利用和有序开发,进一步健全城市市政基础设施工作体系,提高城市建设管理水平。管廊作为城市地下空间的重要基础设施,承载着城市中各式各样物质的输送、各种信息传输和交换等工作,已经成为了社会和人们生产生活中不可缺少的物质条件,在城市的建设和发展过程中所发挥的作用越来越大[1-2]。
管廊是由管线、仪器和设备构成的一个庞大而复杂的系统,设备错综复杂,管道纵横交叠交错,空间关系复杂,传统的二维符号或者线条描述方式已不能完整地展示管线的全部信息[3-5]。三维激光扫描技术作为一种新兴的测量技术,在国外已被广泛地应用到石油化工、建筑工程、军事科技等领域,但在管廊数据获取及逆向建模等方面的应用实例较少[6]。本文将三维激光扫描技术应用于管廊数据的获取中。
三维激光扫描技术虽然可以快速获取目标表面的点云数据,但是如何将海量的管道点云数据快速构建为管道模型成为亟待解决的问题。李岸等[7]采用过渡特征提取原理获得管道面的一系列截面线,然后获得光滑均匀的脊线点列。用三次B样条曲线拟合采样点列而获得脊线。刘焕彬等[8]提出一种局部拟合管道圆柱面的方法,将点云数据分块拟合局部中心轴线的点,然后拟合中心轴线,最后根据中线轴线绘制管道。刘胜男等[9]通过三维激光扫描技术获取管道点云,并使用Cyclone软件对管线进行配准和建模。陈林[10]将地下管线抽象成圆柱体,使用WebGL开源框架Three.js针对从后台获取到的二维管线矢量数据进行批量建模可视化。本文提出一种基于点云的管道三维自动建模方法,采用三维激光扫描技术获取管廊的点云数据,并对点云数据中存在的噪点采用拉普拉斯算法进行去除,以提高管道中心线的提取效率。在此基础上提出一种基于RANSAC算法的管道中心线提取方法,并对提取的中心线进行等平面处理,基于OpenGL和MFC框架开源库结合RANSAC算法研发了利用点云进行管道三维自动建模模块,以便解决管廊的三维自动建模与可视化。图1为本文管道建模及可视化的基本流程。
图1 管道建模及可视化流程
1 RANSAC算法
RANSAC(random sample consensus)随机采样一致性算法是一种随机参数估计算法。RANSAC算法最早由Fischler和Bolles(1981)提出[11]。
RANSAC从样本中随机抽选出一个样本点子集,使用最小方差估算法对这个子集计算模型参数,然后计算所有样本与该模型的偏差,在使用一个预先设定好的阈值与偏差比较,当偏差小于阈值时,该样本点属于模型内样本点(inliers),本文中简称局内点,否则为模型外样本点(outliers),文中简称为局外点。记录下当前的局内点的个数,然后重复这一过程。每次重复都记录当前最佳的模型参数,所谓最佳即局内点个数最多。迭代结束后,最佳模型参数就是最终的模型参数估计值。如图2为RANSAC算法的流程图。
图2 RANSAC算法流程图
图3展示了RANSAC算法在二维数据集中的搜索过程。图3(a)示一组既包含局内点又包含局外点的数据集。红色点为局内点,蓝色点为局外点。图3(b)中红色线就是基于RANSAC得到的结果,此例中最终估计的模型是一条直线。
a—二维数据集;b—RANSAC算法估计结果
2 管道中心线提取方法
本文依据RANSAC算法建立管道圆柱面模型,提取管道中心线。并利用OpengGL和MFC实现管道可视化。
2.1 管道点云去噪
三维激光扫描仪获取的点云数据难免会存在噪声点,噪声信息属于无用信息,信息量较小,使得估计点云特征时导致错误的数值结果,从而可能导致点云后期处理失败。所以离群点表达的信息需要剔除。
本算法采用拉普拉斯算法[12-13]解决该问题:通过将高频几何噪声能量扩散到局部邻域中的其他点上实现,即通过多次迭代的方法将点移动到其邻域的几何重心处,其实质是通过把噪声能量转移到其邻域的其他点上而最终达到滤波的目的。
图4为原始的管道点云数据和去噪后的管道点云,左图红色区域为原始点云存在的噪点。
图4 点云去噪前后对比图
2.2 圆柱面模型建立
如果以拐弯处作为分割点,可以把管道看做是圆柱面的组合(图5)。空间圆柱面的数学表达式可表示为公式(1):
图5 空间圆柱示意图
(x-x0)2+(y-y0)2+(z-z0)2-r2=
(1)
式中:(x0,y0,z0)为圆柱轴线L上的任意一点;(l,m,n)为圆柱轴线L方向向量;r为圆柱的半径,而(x,y,z)则为要拟合该圆柱面的点云数据中的某一点坐标。这7个参数可以确定以圆柱方程,即可识别出该圆柱面。
2.3 RANSAC算法估计圆柱面模型
根据圆柱面的空间表达式,建立RANSAC算法的估计参数。本文借助于PCL(Point Cloud Library)[14]中的Sample_consensus模块,为管道点云的假定圆柱面建立参数。
PCL中提供了SACMODEL_CYLI,DER模型,此模型为圆柱面模型,共设置7个参数:
(1)从点集数据中随机取出n个点,用这n个点进行空间圆柱面拟合,用一个圆柱面模型适应于假设的局内点,可以计算出中心轴线上的点(x0,y0,z0)、轴线的方向向量(l,m,n)以及圆柱面的半径r。即所有的未知参数都能从假设的局内点计算得出,并将得到的带参数的圆柱面记为最佳圆柱面。
(2)用步骤(1)中得到的模型去测试所有的其他数据,并计算点到模型的误差,所以设置了点到圆柱面的距离阈值T1,如果这个误差小于阈值T1,则认为是有效点,把这个点放进最佳模型中,遍历点集中所有的点。
(3)如果有足够多的点被归类为假设的局内点,即局内点数不小于总数的80%,就可以认为估计的模型就足够合理。
(4)然后,用所有假设的局内点去重新估计模型,重新计算一下它的参数,因为它仅仅被初始的假设局内点估计过。
(5)如果此次遍历并没有达到可靠模型的最低点数要求,则返回第一步重新计算。
2.4 提取圆柱面中心线
管道点云数据经RANSAC算法估计后已经能够得到最为可靠的圆柱面参数,根据圆柱面参数即可建立中心线的方程,进而提取中心线。中心线方程为公式(2):
(2)
2.5 中心线等平面处理
经过RANSAC算法分析和处理,已经可以提取出各个圆柱面的中心轴线(图6)。
图6 圆柱面的中心轴线
但是提取出来的各中心轴线(如图7所示橙色线)因为误差原因不会在一个平面上(理想情况是一个平面),因此需要处理到相同的平面。因此,本算法首先计算这2个线段之间的公垂线,然后将2个点移动到公垂线的一半。这样保证所有相邻2个管道在一个平面上。
图7 等平面处理
2.6 拐弯弧线处理
通过以上处理得到管道中心线的结果如图8(a)中的绿线所示。其实误差比较小,该图指示为了说明经过处理后,不可能完全不保证直角,但整个误差很小,对后续的管道重构影响可以忽略。
a—等平面处理后结果; b—拐弯弧线处理
理想的实际管道应如图8(b)所示。因此后续需要对管道弧度弯角处进行处理,本文采用了较简单的方法,直接给出拐角的弧度,图8(a)中绿色的中心线进行截取,然后通过圆环进行即可。在本程序中,拐角圆弧的半径设置为管道半径的1.4倍,也可以通过操作界面人为进行设置,从而得到整个管道的中心线,整个步骤如图9所示。
图9 OpenGL图形操作步骤
3 模型重构
得到管道的中心线以后,根据拟合出的管道中心线构建管道模型,刘焕彬[8]曾经用四元数法根据中心线绘制圆的方法来构建管道模型,本文借助OpenGL实现管道模型的重构。OpenGL的全称是Open Graphics Library,它是图形硬件的软件接口,具有高度的可移植性,并具有非常快的渲染速度,允许创建交互式的程序,产生移动物体的彩色三维图像[15-16]。所有的数据经OpenGL处理之后都要将处理结果输出到二维屏幕上,其操作过程如图9所示。城市地下空间中的管线大部分都是呈圆柱形,而且其几何属性包括位置、管径、长度、厚等参数[17-19],本文在进行管道建模是暂时不考虑管壁的厚度。在OpenGL库中,内置函数gluCylinder( )可以快速实现圆柱面的绘制[20]。
3.1 平移操作
平移操作的函数原型为: void glTranslate(GLTYPEx,GLTYPEy,GLTYPEz)
其中:x,y,z分别表示x轴、y轴、z轴方向的平移量。平移矩阵T可用以下公式(3)计算。
(3)
3.2 旋转操作
旋转操作的函数原型为: void glRotate(GLTYPE angle,GLTYPEx,GLTYPEy,GLTYPEz)
其中:x,y,z分别指定的旋转轴;angle为指定的旋转角度。
3.3 缩放操作
缩放操作的函数原型为: void glScale(GLTYPEx,GLTYPEy,GLTYPEz)
其中:x,y,z分别表示3个坐标轴方向的缩放比例因子。当x,y,z的值大于1.0时,表示沿坐标轴方向放大,当x,y,z的值小于1.0时,表示沿坐标轴方向缩小。缩放矩阵S可以用公式(4)计算。
(4)
本文借助openGL开源库和MFC框架,结合RANSAC中心线拟合算法,研发了利用点云进行管线三维建模的模块,模块的功能包括读取点云数据,点云滤波,点云精简,中心线拟合,以及管道模型可视化等(图10)。
(a)软件界面;(b)管道点云数据显示;(c)RANSAC算法提取管道中心线;(d)管道重构
4 结论
(1)三维激光扫描技术可以快速获取地下空间复杂详尽的管道三维空间信息,采用拉普拉斯算法实现密集点云的去噪工作,从而得到纯净的管线的点云,提高了后续提取管道中心线的效率。
(2)提出基于RANSAC算法的管道中心线提取方法,实现了单一管道中心线的快速、自动提取。
(3)利用OpenGL开源库和MFC框架,结合RANSAC中心线提取算法,实现了利用点云进行管线三维自动建模,该模块的功能包括读取点云数据、点云滤波、点云精简、中心线拟合以及管道模型可视化等,取得了较好的可视化效果。