广东工业大学学报  2017, Vol. 34Issue (6): 61-67.  DOI: 10.12052/gdutxb.170002.
0

引用本文 

杨泽鑫, 彭林才, 刘定宁, 丁琼. 基于PCL和Qt的点云处理系统设计与开发[J]. 广东工业大学学报, 2017, 34(6): 61-67. DOI: 10.12052/gdutxb.170002.
Yang Ze-xin, Peng Lin-cai, Liu Ding-ning, Ding Qiong. Development of Point Cloud Processing System Based on PCL and Qt[J]. JOURNAL OF GUANGDONG UNIVERSITY OF TECHNOLOGY, 2017, 34(6): 61-67. DOI: 10.12052/gdutxb.170002.

基金项目:

广东省自然科学基金资助项目(2015A030310155);大学生创新创业训练计划项目(201611845151,yj201611845384)

作者简介:

杨泽鑫(1994–),男,硕士研究生,主要研究方向为点云处理与三维建模。

通信作者

丁琼(1983–),女,讲师,博士,主要研究方向为LiDAR数据处理和算法研究等. E-mail:qding_cn@163.com

文章历史

收稿日期:2016-12-28
基于PCL和Qt的点云处理系统设计与开发
杨泽鑫1,2, 彭林才1, 刘定宁1, 丁琼1     
1. 广东工业大学 土木与交通工程学院,广东 广州  510006;
2. 同济大学 测绘与地理信息学院,上海  200092
摘要: 三维激光扫描技术得到越来越多的应用, 而目前已有点云处理软件存在算法单一、交互性弱的缺点, 经常需要多个软件联合操作, 耗费大量时间和精力. 因此, 本研究基于PCL和Qt自主开发一套点云处理系统, 包含点云读取、滤波、分割、建模等模块, 同时提供友好的用户交互界面, 为每个经典算法提供关键参数交互设置, 提高点云处理效率及可靠性.
关键词: 点云处理    系统开发    PCL    Structure Sensor    
Development of Point Cloud Processing System Based on PCL and Qt
Yang Ze-xin1,2, Peng Lin-cai1, Liu Ding-ning1, Ding Qiong1     
1. School of Civil and Transportation Engineering, Guangdong University of Technology, Guangzhou 510006, China;
2. College of Surveying and Geo-Informatics, Tongji University, Shanghai 200092, China
Abstract: 3D laser scanning technology has been widely used in various disciplines, but current point cloud processing software lacks efficient algorithms and user interaction, causing large time and effort consumption. This research aims to develop a new point cloud processing software which includes data importing, filtering, segmentation and modeling based on PCL and Qt. It provides key parameters setting for each typical algorithm and user friendly interface to produce optimal results for each module.
Key words: Point cloud processing    system design    PCL    Structure Sensor    

随着互联网、3S、计算机、虚拟现实等技术的迅猛发展,大量的三维地理信息创新应用不断涌现,它们基于高精度的三维空间数据及虚拟现实技术来还原真实世界,给人身临其境的体验,成为地理信息系统发展的主导方向. 三维激光扫描技术(LiDAR)可以快速高效获得研究对象的三维信息,目前在各个领域得到广泛的应用. 而如何快速高效地处理海量点云数据来满足日益增加的高精度三维数据需求,越来越受到国内外学者的广泛关注[1-3].

纵观国内外现状,众多学者对点云数据处理方法进行了深入的研究。Vosselman[4]提出基于坡度的滤波算法,Lindenberger[5]提出数学形态学滤波算法,Axelsson[6]提出的基于不规则三角网的渐进加密滤波算法等. 随着LiDAR研究在国内的推广,国内也有很多学者提出了新的算法,张小红[1]提出了基于移动曲面拟合的滤波算法;隋立春等[7]将“带宽”引入点云形态滤波学;左志权等[8]提出基于知识的三角形渐进滤波法. 在点云处理软件上面,国际上主要有Terrasolid系列软件、REALM、SCOP++等,然而在实际应用中仍然需要耗费大量的手工操作完成点云的去噪、分类与建模. 国内也有不少单位在研发点云处理软件,但是目前未有大量推广的软件,需要对数据处理进一步研究.

为此,本文总结归纳了点云数据处理中的基本流程,并结合每一关键流程中的经典算法,基于PCL和Qt开发了一套全新的点云处理系统,实现点云数据的读取、去噪、滤波、分割、建模及显示等功能,同时为用户提供友好交互界面,针对每种算法提供关键参数供用户调节以期得到一种更为实用、稳健的处理结果,提高点云数据处理的精度和效率.

1 PCLab点云处理模块及流程

结合点云处理流程及基本功能需求,进行软件系统功能模块结构设计. PCLab(Point Cloud Lab)共分为6个功能模块,如图1所示. 其中,以点云数据模块为基础进行其他模块的开发,以点云滤波、点云分割、模型重建模块作为整个应用程序的主体,以可视化模块来实现上述其他模块的人机交互,以辅助函数模块来补充前5个功能模块的需求.

(1) 点云数据. 该模块实现常规点云数据读取、存储、转换和点云基本结构信息查询,同时提供多点云数据的合并功能,为大场景多数据项目提供整合基础.

点云数据结构:主要支持PCD格式点云文件,其头文件中声明点云数据的特性,包含字段有:VERSION(文件版本)、FIELDS(点维度)、SIZE(维度大小)、TYPE(维度类型)、COUNT(每个维度的元素个数)、WIDTH(点云数据集宽度)、HEIGHT(点云数据集高度)、VIEWPOINT(视点)、POINTS(点云总数)、DATA(点云存储类型,有ascii和二进制两种),头文件后的内容即视为点云信息. 其中点云合并通过读取头文件中数据属性信息实现合并操作.

图 1 PCLab组织结构图 Figure 1 PCLab organization chart

(2) 点云可视化. 显示、浏览及简单交互功能,包括为方便查看可更改点云颜色、大小,对点云进行平移、缩放及旋转,以及处理后点云及模型的查看.

(3) 点云滤波. 获取点云数据时,由于仪器及环境的影响难免产生噪声点及冗余点. 该模块提供多种滤波方法实现数据去噪及数据压缩. 其中数据压缩模块提供体素化网格法,通过创建三维体素化网格选取重心点取代体素中其他点来实现数据压缩;数据去噪模块提供直通滤波、限定半径滤波和统计分析滤波法供用户选择实现点云去噪. 其中直通滤波用户可直接指定坐标范围截取点云;限定半径滤波以某点为中心画一个圆计算落在该圆中点的数量,当数量大于给定值时,则保留该点,数量小于给定值则剔除该点;统计分析滤波假设每个点都表达一定信息量,某个区域点越密集则可能信息量越大,噪声信息属于无用信息,信息量较小,当给定阈值可剔除离群点.

(4) 点云分割. 实现将无序点云分割成多个点云,每个点云聚类对应独立对象. 分割算法一般选定若干个点,利用算法判定待定点和待分割模型之间的关系,遍历完所有点后得出分割结果. 该模块提供RANSAC、欧式聚类和区域增长法经典点云分割算法,并为每种算法提供关键参数设置修改界面.

(5) 模型重建. 基于分割后的每个聚类,提供多种建模方法实现点云三维重建,包括狄洛尼二维重建、狄洛尼四面体剖分以及贪婪投影三角化重建方法.

(6) 辅助函数. 提供法线估计、边界提取及软件界面更新辅助功能.

2 系统开发及环境搭建

本系统开发采用VC++,利用PCL以及Qt完成软件的开发设计. PCL是一个强大的处理点云数据的大型跨平台开源C++编程库,包含多种先进的点云处理算法[9]. 它实现了大量点云相关的通用算法和高效数据结构,涉及点云获取、滤波、分割、配准、检索、特征提取、识别、追逐、曲面重建、可视化等,支持多种操作系统平台,可在Windows、Linux、Mac OS X等系统上运行. Qt是一个跨平台的C++应用程序开发框架,广泛用于开发GUI程序. 本研究采用VS2013从源码编译PCL1.8.0,并在Qt中搭建好基于PCL的GUI程序开发环境.

PCLab的界面设计充分考虑用户体验,推崇易学易用原则,软件的主要界面如图2所示. PCLab共有菜单区、工具区、功能区、对象区以及可视化区5个分区. 其中,菜单区(顶部第一行)包含点云文件、点云滤波、点云分割、三维建模4个模块功能;工具区(顶部第二行)采用相应图标体现常用功能;功能区(界面右侧)采用了tab层叠设计,当用户唤醒多个工具设置页时,不同的设置页间以标签的形式层叠排列,用户可在该处对关键参数进行修改设置以得到满意结果,增强了交互性. 功能区引入dock设计,所有功能区均可以变为悬浮窗口,方便用户同时操作多个工具并进行个性化设计;对象区(界面左侧)展示了所有数据对象,提供了修改名称和删除对象的功能;可视化区(界面心区部)支持点云数据和三维模型两种形式的显示.

图 2 PCLab界面 Figure 2 PCLab interface

PCLab采用面向对象的编程思想实现,将类的私有成员和方法封装在内部,只对外部开放公有成员变量和方法,提高软件安全性和开发维护便利性. 并类的可继承与多态属性提高了软件开发的效率和灵活性. 下文将对软件系统的类结构设计进行阐述.

2.1 点云数据类

点云数据类负责点云数据的管理,实现点云数据的类型转换、点云拼接、点云信息的输出等功能. 其派生出点云数据文件类实现点云数据文件的存取、转换功能. 类及点云文件类的关系如图3所示.

图 3 点云数据类结构设计 Figure 3 Point cloud structure
2.2 点云滤波类

点云滤波类(Filter)作为实现点云滤波功能的抽象类,其派生出了三维体素化网格滤波类(VoxelGridFilter)用于实现数据压缩功能、直通滤波类(PassThroughFilter)和统计分析法滤波类(StatisticalOutlierRemovalFilter)用于实现数据降噪功能. 点云滤波类与其派生类之间的关系如图4所示.

2.3 点云分割类

点云分割类(Segment)作为实现点云分割功能的抽象类,其派生出了基于随机采样一致性的模型分割类(SAC Model Segment)、欧氏聚类分割类(Euclidean Cluster Segment)和区域增长法分割类(Region Growing Segment)用于实现点云模型分割功能和聚类分割功能. 其与派生类之间的关系如图5所示.

2.4 曲面重建类

曲面重建类(Surface)作为实现三维建模功能的抽象类,其派生出了狄洛尼二维建模类(Delaunay2D)、狄洛尼三维建模类(Delaunay3D)和贪婪投影三角化类(GreedyProjection)用于实现二维和三维表面重建功能. 其与派生类之间的关系如图6所示.

2.5 可视化类

可视化类(Visualization)作为实现三维数据可视化的抽象类,其派生出了点云显示风格类(PointCloudDisplayStytle)和模块可视化类(ModuleVisualization). 其中,点云显示风格类实现了点云的自定义渲染功能;模块可视化类则为其他功能模块定制了多样的可视化解决方案. 可视化类与其派生类之间的关系如图7所示.

图 4 点云滤波类结构设计 Figure 4 Point cloud filter structure
图 5 点云分割类结构设计 Figure 5 Point cloud segmentation structure
图 6 曲面重建类结构设计 Figure 6 Surface reconstruction structure
图 7 可视化类结构设计 Figure 7 Visualization structure
图 8 PCLab点云处理实验 Figure 8 PCLab point cloud processing experiment
3 实验及结果分析

为验证PCLab实现室内场景特征提取和三维建模效果,实验采用Structure Sensor获取实验数据. 它是一款安置在ipad/iphone背面、操作简单但具有强大功能的3D深度传感设备,能直接得到近景物体三维点云,同时与ipad/iphone摄像头对接获取目标图像信息. 由于其便携性高、自动实时配准数据、开放应用接口等优势在各领域中得到广泛应用.

本文实验数据取景于自习室,采集范围内实物有墙面、地面、椅子和桌子,如图8①所示. 具体过程如下:(1) 实验人员手持Struture Sensor对目标进行扫描获取实验数据;(2) 将采集数据导入PCLab软件并在视窗中查看点云数据基本信息,如图8②所示,可清晰看到包含墙面、地面和桌椅的点云信息,并确保数据无漏洞;(3) 对原始数据进行滤波降噪,剔除离群点,得到质量较好的局内点(图8③),其中红色为噪声点;(4) 通过PCLab提供的平面分割算法去除地面点与墙壁点,如图8④所示三面墙壁已分割为3个聚类并用黄、紫、蓝三色标出,剩下用户关注的场景特征(红色点云);(5) 采取欧式聚类分割算法实现场景内各特征的提取,如图8⑤所示,桌椅已成功分割出;(6) 最后选择三维重建算法对各个点云子集进行三维建模(图8⑥),并将建模结果保存至硬盘,完成任务. 由图8可知,PCLab能实现室内场景特征的自动去噪、分割及建模等点云处理流程并在各模块算法上提供关键参数交互选项来得到较好的结果,极大地减少了人工操作,提高了点云处理的效率.

4 结语

面对海量三维点云数据,如何进行快速高效的处理来满足应用需求是国内外学者关注热点. 本文结合PCL和Qt开发设计PCLab系统. 该系统集点云数据读取、显示、滤波、分割、建模等功能于一体,并在关键算法的处理上提供关键参数设置选项,降低了点云处理的复杂程度,减少了处理时间与工作量,极大地提高了数据处理的有效性. 此外,该系统由于其平台的开放性和通用性,为后期开发更为稳健、实用、高效的点云处理系统奠定坚实的基础.

参考文献
[1] 张小红. 机载激光雷达测量技术理论与方法[M]. 武汉: 武汉大学出版社, 2007.
[2] 程效军, 贾东峰, 程小龙. 海量点云数据处理理论与技术[M]. 上海: 同济大学出版社, 2014.
[3] 丁琼, 吕俊涛, 陈高文, 等. LiDAR 安置误差对定位精度影响分析[J]. 广东工业大学学报, 2015, 32(3):115-118.
DING Q, LYU J T, CHEN G W, et al. Influence of LiDAR systematic Error on Positioning Accuracy[J]. Journal of Guangdong University of Technology, 2015, 32(3):115-118.
[4] VOSSELMAN G. Slope based filtering of laser altimetry data[J]. International Archives of Photogrammetry and Remote Sensing, 2000, 33(63/2): 935-942.
[5] LINDENBEIGER J. Laser-Profilmessungen zur topographischen Gelandeaufhahine [D]. Stuttgart: Universitat Stuttgart, Verlag der Bayerischen Akademie der Wissenschafen, 1993.
[6] AXELSSON P. DEM generation from laser scanner data using adaptive TIN models[J]. International Archives of Photogrammetry and Remote Sensing, 2000, 33(84/1): 111-118.
[7] 隋立春, 杨耘. 基于car(p,q)模型和数学形态学理论的LiDAR点云数据滤波[J]. 测绘学报, 2012, 41(2): 219-224.
SUI L C, YANG Y. Filtering of airborne LiDAR point cloud based on car(p, q) model and mathematical morphology[J]. Acta Geodaetica et Cartographica Sinica, 2012, 41(2): 219-224.
[8] 左志权, 张祖勋, 张剑清. 知识引导下的城区LiDAR点云高精度三角网渐进滤波方法[J]. 测绘学报, 2012, 41(2): 246-251.
ZUO Z Q, ZHANG Z X, ZHANG J Q, et al. A high-quality filtering method with adaptive TIN models for urban LiDAR points based on priori-knowledge[J]. Acta Geodaetica et Cartographica Sinica, 2012, 41(2): 246-251.
[9] RUSU R B. Semantic 3D object maps for everyday manipulation in human living environments [D]. Garching: Institut für Informatik, Technische Universität München, 2009.