当前位置:首页 期刊杂志

基于QT的机载三维激光扫描仪软件系统设计①

时间:2024-05-04

王吕梁, 郭唐永, 李世鹏, 李 欣, 朱 威, 王 磊, 秦珺馨(中国地震局 地震研究所 地震大地测量重点实验室, 武汉 430071) (中国地震局 地壳应力研究所武汉科技创新基地, 武汉 430071)

基于QT的机载三维激光扫描仪软件系统设计①

王吕梁, 郭唐永, 李世鹏, 李 欣, 朱 威, 王 磊, 秦珺馨
(中国地震局 地震研究所 地震大地测量重点实验室, 武汉 430071) (中国地震局 地壳应力研究所武汉科技创新基地, 武汉 430071)

随着测绘技术的发展, 利用机载三维激光扫描仪获取点云数据, 从点云数据中提取模型信息成为现代测绘技术的一种发展趋势. 点云数据处理的相关应用也越来越多, 点云数据的处理软件参差不齐, 需求和功能也各不相同. 针对上述问题, 在基于QT编程平台下, 利用PCL开发机载三维激光扫描仪点云数据处理软件, 集中处理点云数据. 该系统由点云数据读写、三维显示、点云滤波、网格重构、点拾取、点云分割及NARF关键点提取等功能模块组成. 各模块采用面向对象的思想设计, 功能易于扩展, 以完成进一步的测绘工作. 实践表明, 该系统具有良好的工程实用价值, 可以快速完成机载三维激光扫描仪的数据处理工作.

机载激光; 点云; PCL; 滤波; 网格重构

三维激光扫描技术是上世纪九十年代中期开始出现的一项高新技术. 它通过激光测距的方法, 大面积地快速获取被测对象表面的三维坐标数据, 获取点的空间坐标信息, 完成三维模型或场景的快速重构. 三维激光扫描技术在国内也越来越备受关注. 由于三维激光扫描仪可以密集地大量获取目标对象的数据点,因此相对于传统的单点测量, 三维激光扫描技术是一次重大的技术突破. 该技术在文物古迹保护[1]、城市三维建模[2]、工厂改造、室内设计、交通事故处理、法律证据收集、灾害评估、环境监测、逆向工程、3D打印、无人机等领域也有了诸多尝试与应用.

与传统的测量仪器相比较, 三维激光扫描仪的测量结果具有更强大的可视化与可操作性, 表达的信息更加具体全面, 数据以基本的三维坐标为数据存储基础, 可附加RGB颜色信息和强度信息, 直观地用三维数据实时显示出来, 可完成场景的实时重构[3], 全景还原, 这些都是一些传统测量技术无法做到的. 本文立足于机载三维激光扫描仪, 基于QT平台和PCL(Point Cloud Library), 对点云数据进行处理, 实现点云数据的优化处理和三维建模等相关功能.

1 系统方案构建

QT是奇趣公司旗下的软件开发平台, 它是一款优秀的基于C++的跨平台GUI应用程序框架, 同时为用户提供了良好的封装库, 特别是使用信号/槽机制来取代回调函数, 使得界面和代码相互配合. 在界面编程中, 使用QT平台开发软件非常方便[4-6].

PCL(Point Cloud Library)是一个开源的三维点云处理库, 由ROS(Robot Operating System)开源项目于2011年独立而来. PCL积累了大量的算法模块, 吸收了点云领域相关研究成果而建立起的大型跨平台开源C++编程库, 发展迅猛. 在激光遥感测量领域, 相较于传统的数据测量方式, PCL在数据获取和自动化处理上有着极大的补充. 在普通开发环境下, 各种算法的结果和实际结果差别甚大, 各算法的衔接性并不是特别良好, 而PCL中的强大模块可以弥补上述缺陷, 从而更加方便地助力于点云数据处理.

系统采用QT平台搭建, 利用PCL中的VTK(Visualization Toolkit)可视化控件来显示三维点云模型; 充分利用PCL中的CUDA和OpenMP技术和它的Boost指针类, 减小内存占用量, 提高计算速度, 加快了点云数据处理速度[7]; 利用模板类库实现点云操作可视化等功能的无缝对接[8].

2 系统功能设计

结合机载三维激光扫描仪的系统特点及其功能上的需求, 对软件模块结构进行设计, 主要由数据的读写、点云数据显示、点云滤波[9]、网格化建模[10-14]、选点和NARF关键点提取等功能组成. 系统的总体功能设计框架如图1所示.

图1 系统功能设计框架图

系统通过串口传输数据, 或者从扫描仪的SD卡中直接读取扫描后的数据, 导入软件系统中, 利用点云库函数进行坐标系的转换, 统一成绝对坐标系, 方便点云数据的可视化操作. 为了让处理后的数据得到保存并作后期的数据处理, 软件可以对精简后的点云和网格数据保存, 供其他功能模块调用. 点云坐标系转换后, 显示点云数据, 利用可视化工具控件, 对点云不同视图进行操作. 软件中给出了八种视图显示模式, 用户可根据实际需要选择合适的视图, 同时提供颜色选择的功能. 利用鼠标左键实现旋转操作, 右键实现缩放操作, 鼠标中键实现点云的平移操作, 也可以利用快捷键R迅速切换至视图, 快捷键F实现全屏显示. 由于环境和仪器等因素的影响, 原始点云数据中存在着大量的噪声点, 例如离群点、飞点等, 这些点散布在整个点云空间中, 严重影响后期点云处理, 三维建模, 因此, 软件需要对这些数据作初步的处理,对数据精简压缩, 同时这也是特征提取、三角化曲面重建的基础步骤. 点云滤波后, 根据网格重构的相关算法, 对点云进行网格曲面重建, 生成三角形或者立方网格曲面, 完成实体模型重构, 点云数据处理的流程如图2所示, 在应用功能中, 提供了选点、关键点提取和边界提取等功能.

图2 点云数据处理流程图

选点操作可以让用户在点云数据中手动选择需要的点, 把该点用不同的颜色标识出来, 从而获取点的数据信息. 选点操作在手动测距、手动删点、关键点获取后的信息提取及手动配准等工作中有着重要的应用. 从扫描仪获取带深度信息的点云数据, 要从深度图像中提取NARF(Normal Aligned Radial Feature)关键点, 就要在深度图像中提取特征稳定的点, 然后在特征稳定的点处估算特征描述子, 接着在一个深度图像和三维视图中可视化这些关键点位置, 自动标识加粗,这些兴趣点可加快后续处理时, 识别、追踪等算法的运行速度.

3 关键技术开发

3.1 滤波算法

软件系统采用了三种滤波算法, 分别是直通滤波、体素栅格滤波及外点移除滤波算法. 这三种算法优缺点各异, 针对不同的数据类型可选择最优的滤波方法, 达到滤波优化的效果, 使点云分布更均匀化.

直通滤波中, 先根据Filter类构造直通滤波器, 设置滤波器的输入点云数据, 然后指定点云过滤时的字段, 即设置滤波的方向, 通常为坐标系的三个方向,再设置滤波字段的范围值, 在滤波后有一个保留范围的设置来判断是保留设置范围内的数据还是过滤范围内的数据, 最后将滤波后的数据储存起来.

体素栅格滤波是在一个空间中设置一个微小的立方体滤波器, 给定立方体的三边大小, 如图3a, 立方体中散布着有限数量的点, 用体素中所有点的重心P来近似显示体素中其他点, 替代后的效果如图3b所示,可以使采样点对应的曲面表示得更为准确, 最终体素内的点都用这个重心点[x,y,z]来表示, 重心点的计算如公式(1)所示. 落在体素立方体网格中的点经过重心替换后, 由重心点P来表示, 从而达到滤波精简的效果, 滤波后生成的曲面效果也更好.

图3 体素栅格滤波示意图

外点移除滤波是一种统计学滤波的方法, 软件首先对每个点的邻域做一个统计分析, 假设这些点符合某一种统计学分布, 其形状由均值和标准差决定, 软件计算每个点的邻域点到它的平均距离, 平均距离在某个范围之外的点会被移除, 仅保留符合分布要求的点, 从而完成外点移除滤波操作.

3.2 网格重构

该软件系统采用了三种网格重构算法, 分别是贪婪投影三角化算法、栅格投影方法和移动最小二乘法算法.其中前两种方法分别是三角网格重构和立方体网格重构,最后一种方法需要结合其他方法实现网格化重构.

贪婪投影算法通过法线投影到空间的一个平面上,对该平面上的投影点三角化处理, 得到各点之间的连接关系. 在平面区域三角化的过程中使用了基于Delaunay的空间区域增长算法, 如图4中的六幅图所示, 在K-dTree范围内查找, 开始时所有点的为自由点状态, 将邻节点加入三角网格中, 形成种子三角形,如图4a所示. 继续加入点4, 边23和34挡住了点1的投影路径, 点2、3、4形成了网络边缘点, 点1变为边界点状态, 如图4b所示. 在图4c中, 按搜索顺序取出点2, 加入该点的邻域点形成三角形, 类似于点1,点2成为边界点, 边缘点由点3、4、5组成. 图4d中添加点3, 与周围的邻域点形成三角网格, 此时三角形将其完全包围, 点3变成完全被包围状态. 在图4e中,点1、2、4、5、6将点3包围, 成为了边界点, 而在图4f中, 其他点发现自己变成了边界点, 没有点可以继续生成三角形, 所有的点会转换成完全被包围状态,完成了局部空间的三角网格生成过程. 然后在整个点云空间中继续寻找其他自由状态的点, 依次按照上述操作, 直到网格生成结束, 得到一个完整的三角网格曲面. 最后根据投影点云的连接关系确定各原始三维点之间的连接关系, 得到空间中的三角网格曲面模型.

图4 贪婪投影三角化过程示意图

栅格投影方法主要针对带有法线数据的点云, 在栅格化之前需要对点云数据法线估计, 将带法线点云数据与原始数据拼接合成, 设置邻域搜索点的个数和栅格立方体的边长, 根据二分法确定投影点的位置,利用填充区域对点云数据作修复填补, 最后得到空间上的三维立方体网格曲面.

移动最小二乘法算法可实现点云的平滑处理、数据重采样, 并可计算优化的法线, 输入的是原始点云数据, 输出的是处理后的平滑的重采样点云数据. 软件使用多项式对数据点进行拟合, 需要设置多项式的阶数, 得到一个平滑的表面函数. 为了让数据更加平滑有序, 还可以通过计算后的表面函数重新计算点云数据中的单个点的法向量. 此外还需设置搜索半径,确定多项式拟合时所用的邻域点. 完成数据拟合后需要上采样, 让数据密集均匀化, 有利于网格生成, 三维平面上的点云数据拟合与法线生成过程如图5所示.

图5 移动最小二乘法示意图

3.3 应用功能

手动选择点云中的点, 主要通过PCL提供的选点回调注册函数来实现, 通过声明静态成员函数, 对鼠标的事件进行响应. 在选点操作时, 获取点的坐标,将选取的点进行压栈处理, 并标记选中的点, 传回至注册函数中, 最终在VTK控件界面中显示出来.

点云分割是将点云数据中的单个模型提取出来,常用的算法有平面点云分割、欧式聚类分割和区域生长分割等算法. 点云分割前会采用滤波算法进行精简,再利用平面拟合、聚类等方法提取点云模型. 用三维激光扫描仪进行室外扫描时, 会充斥着大量的噪声点,针对建筑模型的提取, 点云分割可以去除无用噪声点,得到基本的场景点云模型图.

关键点也是兴趣点, 在点云数据中, 软件需要找到具有稳定特性和明显区别性的点集, 与局部特征描述子一起组成关键点描述子, 常用来形成原始数据的紧凑表示, 方便后续的识别追踪配准, 提高数据的处理速度, 方便后续添加功能模块的调用.

4 软件系统界面及运行效果

系统界面主要由菜单、工具栏、工作区及显示区组成, 界面最左侧是工具栏, 上侧是菜单栏, 其中工作区的左半栏是滤波算法区, 右半栏是三角网格重构算法区. 实验场地为武汉茶港小区附近的区域, 先利用激光扫描仪进行探测得到原始点云数据, 然后用该软件对原始点云数据进行整体显示, 原始点云场景如图6所示. 由于受环境中树木、草地和路灯等物体的影响, 原始点云中存在着大量的噪声点和孔洞, 先采取体素栅格算法对点云精简滤波, 再利用RANSAC算法和平面模型进行拟合, 采用欧式聚类, 分割出点云中的建筑物模型, 得到附近小区的员工宿舍楼点云模型如图7所示. 最后利用贪婪投影三角网格算法, 对分割的建筑点云数据模型三角化操作, 得到建筑点云的重建效果如图8所示.

图6 原始点云图

图7 聚类分割图

5 结语

本文完成了基于QT的机载三维激光扫描仪软件系统的设计架构和相关功能模块的实现. 由于软件采用的PCL在点云数据处理上的强大功能, 以及PCL和QT的开源跨平台特性, 软件代码可以很好地移植到不同的平台. 加之PCL强大高效的算法库, 还可以在此之上对系统功能进行扩展, 应用到更多的领域中. 这套软件系统具有良好的性能, 数据处理速度快, 能够配合激光扫描仪进行点云数据操作, 具有快速实现滤波和三维网格重建等功能, 显示直观, 操作简单, 为现场技术人员操作决策提供了方便. 软件系统采用VTK显示点云数据, 大型点云文件处理的速度及图像显示的流畅度还有待提高, 重构后的网格有时会存在破洞, 这块涉及到网格破洞修复相关的算法. 在后期的工作中, 还有一些功能需要完善,如配准、破洞修复、体积测量和剖面切割等. 这些功能可以增强软件的整体性能, 提高实用性, 使软件在三维激光测绘、灾害评估可视化等领域中获得广泛的应用前景.

图8 贪婪三角网格化

1 孙修恩,张典华,孙昕萍.三维数字重建在青铜器修复中的应用研究.图学学报,2014,(6):912–917.

2 党梦林,裴海龙.基于QT的机载三维激光地形测绘软件构建.计算机测量与控制,2013,(4):1084–1086,1089.

3 李艺.基于单摄像头的三维扫描系统的设计与实现[硕士学位论文].北京:北京交通大学,2013.

4 袁媛,王延红,江凌,林成地,王玥.基于Qt及OpenCASCADE的建模技术研究.现代电子技术, 2013,(10):74–77.

5 杨厚丽,郭唐永,邹彤,刘延飞.基于Qt平台的绝对重力仪数据处理软件设计.内陆地震,2015,(3):280–285.

6 步国超,汪沛.三维树木点云数据处理软件系统设计.计算机应用与软件,2016,(4):68–71.

7 王运森,唐忠伟,徐帅.基于PCL与HOOPS的空区点云处理系统的设计与开发.金属矿山,2015,(6):108–112.

8 朱德海.点云库PCL学习教程.北京:北京航空航天大学出版社,2012.

9 Liu C, Li J, Zhang S, et al. A point clouds filtering algorithm based on grid partition and moving least squares. Procedia Engineering, 2012, (28): 476–482.

10 Marton ZC, Rusu RB, Beetz M. On fast surface reconstruction methods for large and noisy point clouds. IEEE International Conference on Robotics & Automation. 2009. 3218–3223.

11 Alexa M, Behr J, Cohen-Or D, et al. Computing and rendering point set surfaces. IEEE Trans. on Visualization & Computer Graphics, 2003, 9(1): 3–15.

12 Voa AV, Linh TH, Laefera DF, Bertolottod M. Octree-based region growing for point cloud segmentation. ISPRS Journal of Photogrammetry and Remote Sensing, 2015, (104): 88–100.

13 姜如波.基于三维激光扫描技术的建筑物模型重建.测绘通报,2013,S1:80–83,120.

14 丁延辉,邱冬炜,王凤利,杨锐.基于地面三维激光扫描数据的建筑物三维模型重建.测绘通报,2010,(3):55–57.

Software System Design of Airborne 3D Laser Scanner Based on QT

WANG Lv-Liang, GUO Tang-Yong, LI Shi-Peng, LI Xin, ZHU Wei, WANG Lei, QIN Jun-Xin1(Key Laboratory of Earthquake Geodesy, Institute of Seismology, CEA, Wuhan 430071, China)2(Wuhan Base of Institute of Crustel Dynamics, CEA, Wuhan 430071, China)

With the development of surveying and mapping technology, it has become a tendency of modern surveying and mapping technology to use airborne 3D laser scanner to obtain point cloud data, and extract the model information from the point cloud data. Relevant applications of point cloud data processing are also increased quickly, but the point cloud data processing softwares are uneven, and the demand and functions are different as well. In view of the above problems, using PCL to develop the 3D laser scanner point cloud data processing software based on the QT programming platform, the dissertation focuses on processing point cloud data in a software system. The system is composed of point cloud data reading and writing module, three-dimensional display module, point cloud filtering module, mesh reconstruction module, point picking, point cloud segmentation and NARF key points extraction functions. Each module uses the object-oriented thought, in which the function is easy to expand to complete further surveying and mapping work. Practice shows that the system has good engineering practical value and can quickly complete the data processing of airborne 3D laser scanner.

airborne laser; point cloud; PCL; filter; mesh reconstruction

2016-07-30;收到修改稿时间:2016-09-27

10.15888/j.cnki.csa.005751

免责声明

我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!