基于Kinect的三维重建技术研究毕业论文
2020-02-17 21:59:01
摘 要
微软公司发布的Kinect体感相机为我们提供了低成本研究三维重建的平台。本文研究利用Kinect2.0进行三维重建,旨在了解目前计算机视觉的发展现状、学习三维重建需用到的开发平台的使用以及对各种算法的仿真实现。全文按照三维重建的流程进行组织,工作内容如下:
针对利用Kinect获取点云数据,本文首先介绍了Kinect的结构、参数及其工作原理,然后对比了OpenNI2.0和Kinect SDK for Windows2.0两个开发框架,其两者都为三维数据获取和处理提供了统一的编程接口,其中OpenNI可以兼容多个平台且开源而Kinect SDK则充当了微软官方驱动的角色且提供了很多供开发学习的实例。
针对Kinect获取的点云数据的噪声及预处理,本文分析了点云获取阶段的各种噪声的来源以及滤波方法。在点云预处理方面,本文借助PCL实现了点云的数据组织和表面法线估计。
针对Kinect获取的不同视角的多片点云的拼接,本文介绍了点云拼接的基本概念以及目前常用的PCL库中的几种点云自动拼接的算法,分析了各种算法的特点及其局限性,最后实现了NDT算法和ICP算法,展示了两者的拼接效果。
设计的软件开发全部基于Visual Studio 2017结合OpenNI2、OpenCV、PCL1.9开发库进行,并最终实现了从Kinect2.0数据获取到生成完整三维模型的完整三维重建流水线。
关键词:三维重建;机器人视觉;Kinect2.0;PCL库
Abstract
The Kinect somatosensory camera released by Microsoft provides us with a platform for low-cost research on 3D reconstruction. This paper studies the use of Kinect2.0 for 3D reconstruction, aiming to understand the current development of computer vision, the use of development platforms for learning 3D reconstruction, and the implementation of various algorithms. The full text is organized according to the process of 3D reconstruction. The work contents are as follows:
For the use of Kinect to obtain point cloud data, this paper first introduces the structure, parameters and working principle of Kinect, and then compares the two development frameworks of OpenNI2.0 and Kinect SDK for Windows2.0, both of which are three-dimensional data acquisition and processing. Provides a unified programming interface, OpenNI can be compatible with multiple platforms and open source, and Kinect SDK acts as the official driver of Microsoft and provides many examples for development and learning.
According to the noise and preprocessing of point cloud data acquired by Kinect, this paper analyzes the sources of various noise and filtering methods in the point cloud acquisition stage. In terms of point cloud preprocessing, this paper uses PCL to realize point cloud data organization and surface normal estimation. In view of the splicing of multiple points of cloud from different perspectives obtained by Kinect, this paper introduces the basic concepts of point cloud splicing and the algorithms of several point cloud automatic splicing in the commonly used PCL library, and analyzes the characteristics and limitations of various algorithms. Sexuality, and finally realized the NDT algorithm and ICP algorithm, showing the splicing effect of the two.
The software development of the design is all based on Visual Studio 2017 combined with OpenNI2, OpenCV, PCL1.9 development library, and finally realizes the complete 3D reconstruction pipeline from Kinect2.0 data acquisition to the generation of complete 3D model.
Key Words:Three-dimensional Reconstruction; Robot Vision; Kinect 2.0; PCL Library
目 录
摘 要 I
Abstract II
第1章 绪论 1
1.1 课题研究的背景、目的和意义 1
1.2 国内外研究现状 2
1.2.1 点云数据的获取方法 2
1.2.2 点云数据的处理研究现状 3
1.3 研究内容及文章结构 4
第2章 点云的获取与预处理 6
2.1 点云数据的获取 6
2.1.1 Kinect简介 6
2.1.2 开发框架简介 7
2.1.3 获取点云数据 8
2.2 干扰来源及处理方法 9
2.2.1 干扰来源 9
2.2.2 使用滤波去除环境背景 10
2.2.3 使用滤波器移除离群点 11
2.3 数据组织结构 12
2.4 表面法线估计 12
2.5 本章小结 13
第3章 点云的配准与表面重建 14
3.1 配准概述与常用算法 14
3.1.1 配准概述 14
3.1.2 NDT算法概述 14
3.1.3 ICP算法概述 15
3.2 点云配准算法仿真 17
3.2.1 NDT算法仿真 17
3.2.2 ICP算法仿真 18
3.3 表面重建 20
3.4 本章小结 21
第4章 全文总结 22
参考文献 23
致 谢 24
第1章 绪论
1.1 课题研究的背景、目的和意义
随着人工智能技术以及计算机辅助技术的不断发展,人们不在拘泥于传统二维的世界,各领域对于三维数据的应用越来越广泛,目前三维重建技术已经在诸多高科技领域发挥着重要的作用。
- 在测绘领域,三维重建可以利用飞行器或者人造卫星在高空直接获得高精度的三维地面数据,避免了传统地形勘测的巨大人力消耗同时可以很方便的测得危险、无人地区的地形数据。
- 在自动驾驶领域中,三维重建是车辆进行感知、决策、规划等人工智能行为的数据来源,同时通过三维重建技术自动驾驶车辆可以与周围环境进行实时交互,在解放驾驶员的同时确保乘载的人员的安全。目前自动驾驶有者极好的发展前景和对高科技发展的促进作用。
- 移动机器人领域:现代智能机器人对其周围环境的正确感应、认知与辨识,是其完成自己的工作需求,达到一定的可靠性要求并对自身进行不断优化迭代的基础。怎么有效的识别与分类机器人工作场景中的物体是三维重建在移动机器人领域要解决的核心问题,目前该领域采取的一种场景认知方法是用图像处理技术来识别物体。此方法有一个非常大的局限性:2D图像处理对与图像本身的画质有一定的要求,但是在光线不充足的场景,我们很难得到能够保证识别准确度的图像。主动光学式三维传感器给机器人视觉领域带来了一股新的研究热潮:用2D信息结合深度图像进行场景重构。三维的场景感知能力能够使机器人更好地在复杂环境中工作,同时赋予机器人更多的智能。
- 人机交互领域:虚拟现实技术(VR),是现代人机交互领域的研究热门。提供交互性、沉浸性的高级人机界面是VR技术的基本特征。VR包括了仿真技术、计算机网络技术、计算机图形学、人工智能技术、多传感器技术和并行处理技术等多种高科技领域,因此它在为我们带来广阔的多维度的信息空间的同时还能够促进多个高科技领域的发展。目前VR技术也有着极好的发展前景。
- 逆向工程与其他自动化领域:CAD模型是大部分工业产品的来源,但是在实际的操作中,设计师有时也会直接对实物进行修改,加之各种实物的引进以及可能存在的三维数据的丢失,这些情况下,根据物体本身来获取三维数据的技术需求便应用而生。这种技术及所谓逆向工程。逆向工程技术能够测绘产品表面的三维信息用于产品的重构、模型的生产以及数字化文档的获取等工作。
除上述计算机领域,三维重建在文物保护、工程质量检测与管理、建筑拆迁管理以及建筑改造或装修领域也都发挥着重要作用。
研究学习相关的技术,对我而言可以进一步深入了解计算机视觉技术、熟悉相关的平台、学习相关语言与算法。为以后的进一步学习打下良好的基础。
同时由于Kinect设备的价格亲民,研究基于Kinect的三维重建技术,对3D打印、虚拟现实、增强现实等如今热门的前沿技术的低成本普及以及扩大应用也有着重要意义。
1.2 国内外研究现状
三维重建技术是移动机器人、自动驾驶、虚拟现实等前沿领域的难点和热点,点云为表示三维数据的一种重要形式,本文的三维重建也全部基于点云库。点云数据的获取与处理是三维重建研究的重要方向之一。下面对点云数据的获取和处理现状做简单说明。
1.2.1 点云数据的获取方法
由于Kinect的广泛提供普通人现在可以很容易的接触到三维数据。与此同时,其他蓬勃发展的3D技术,如增强现实、立体电影和3D打印,也越来越接近我们的日常生活。尽管如此因为三维数据的获取与处理是一项需要专业知识且耗时的艰巨工作,目前三维重建还是停留在专业领域。下面统计了各专业领域的各种三维数据采集方式。
三维数据的获取方式可根据传感器是否与物体接触分为非接触式与接触式两大类。其具体分类如下图1.1所示。
图1.1 数据采集方式
接触式的测量方法主要应用于高精度要求的场景,例如三维坐标测量机。三维坐标测量机以精密机械为基础,综合计算机技术、光学技术、和自动化技术于一体,其测量精度一般可达微米级。接触式的测量方式虽然精度高,可测量形状复杂的物体,但是由于庞大的体积、较慢的测量速度、昂贵的造价以及对被测量物体的苛刻要求,接触式三维测量在计算机视觉以及人工智能领域受到了极大的限制。
非接触式三维测量就是利用光、电磁、声波作为介质,在避免直接物理接触被测物体的情况下,完成对被测物体三维信息的获取。其中工业CT、核磁共振、激光结构光、RGBD摄像头、声呐均属于非接触式三维测量。目前非接触式光学主动测量是研究的热点。
本文所用的Kinect设备即属于光学主动测量中的类红外测量。Kinect通过自带的红外线发射器发射一种近红外光,对物体表面进行编码,红外感应器读取物体表面反射的红外光并将信息交给处理芯片计算,进而得到物体的三维信息。这种测量方式相比传统的激光测量由于不需要昂贵的激光设备成本可以下降许多,且获取数据具有一定的实时性这也是本文选择用Kinect作为点云获取设备的重要原因。
1.2.2 点云数据的处理研究现状
点云的处理是一项复杂的工作,为了方便开发研究工作,PCL(点云库)运用而生。点云库为需要进行三维数据处理的开发者提供了一个功能强大的平台,而且点云库中拥有大量的涉及各领域的实际开发案例供开发者学习使用。PCL可以说是3D领域的OpenCV,是3D信息获取与处理的结晶。下面收集了一些国内外的基于PCL与Kinect的点云处理以及三维重建方法。
其中在国外Zhang[2]等人首先提出了Kinect的标定方法:利用Kinect从不同的多个角度拍摄棋盘,然后利用棋盘上的特征点与像点的对应关系完成对相机的标定。针对Kinect获取的图像的噪声问题,Vijayanagar K R [7]提出通过对连续的多帧图像取平均值进而得到平滑的点云数据,而对于孔洞可以利用其它帧的数据对当前数据进行填补,并用高斯滤波器进行处理。
国内2016年李诗锐[4]等设计了一种有效的针对Kinect2.0获取的点云的去噪算法,大大提高Kinect三维重建的质量,并率先实现了一套基于新一代Kinect 2.0的三维重建系统,在保证实时性的同时还兼顾较高的精度。2013年陈晓明[12]分析Kinect成像的干扰来源并提出深度图像滤波方法和时空域联合修复方法,保证了配准过程的准确性。2012西安电子科技大学范哲[14]提出了一种帧间滤波算法,经过该滤波算法处理的Kinect深度图像可以拥有更好的质量。2014年重庆大学韦羽棉[15]针对ICP算法中的目标误差函数,提出对不同的点的类型采用不同的误差评估函数,改进后的算法相对标准的ICP算法拥有更高的精度。2013年叶日藏[16]提出了一种基于特征的配准算法,并针对配准过程中产生的误差进行了优化。
1.3 研究内容及文章结构
本文详细研究了基于Kinect的三维重建的完整流水线的各个过程。首先从微软X-box配套的体感相机Kinect2.0入手,研究Kinect深度相机获取点云数据的原理,然后通过Kinect SDK2.0以及OpenNI2.0提供的标准化API获取Kinect2.0采集的信息,将其转化为统一的格式提供给上层应用。最终在在Visual Studio 2017环境下,结合Kinect SDK、OpenNI2、OpenCV、PCL开发库以及一些已有的算法进行数据处理实现完整的三维模型建立。系统流程框图如图1.2所示:
图1.2 系统流程图
全文按照三维重建的流程进行组织,一共分为四章,各部分类容具体如下:
第一章为绪论,是对论文研究的背景、目的和意义、国内外研究现状、课题研究内容等进行综合论述。首先本章在研究背景中本文对点云数据的获取和处理现状做了详细的调研与阐述,然后我们绘制了三维重建的流程图,这也是本文的组织结构,最后我们对本文的每章内容进行了概括。
第二章研究了点云数据的获取以及预处理。本章首先利用OpenNI开发框架和PCL库完成了对Kinect点云数据的获取、保存以及可视化;接着我们利用直通滤波对点云数据的坐标范围进行限定,去除背景与Kinect获取的无用的数据,此过程替代了点云分割操作;对于点云数据中存在的干扰及离群点,本文分析了干扰对于后续处理的影响以及去除干扰的点云滤波方法;对于数据组织,领域搜索本文采用K-d tree数算法实现快速领域搜索;对于表面法线估计,本文采用一种分析一个协方差矩阵的特征矢量和特征值的方法进行。
第三章为匹配各视角下的点云以及表面的重建,这是Kinect三维重建的核心工作。本章首先学习了点云配准过程中的一个重要参数:刚体变换矩阵,分析了两种常见的点云配准算法ICP和NDT的优点和缺点,并指出对于本文的三维重建环境,这两种算法都不太合适,因而提出来本文的三维重建思路:将点云配准分为两个阶段;然后第二节阐述了点云配准过程中使用的关键点算法,快速点特征直方图以及使用采样一致性算法进行初步配准,接着利用交互式迭代最近点算法进行进准配准并进行了多个不同视角点云的配准实验,验证算法的可行性;最后介绍了基于贪婪三角化算法的物体表面重建,以得到完整的曲面模型。
第四章为全文总结,总结了整个三维重建系统的完成程度与工作效果,同时分析了工作过程中的一些不足与难点,为进一步的研究学习打下基础。
第2章 点云的获取与预处理
2.1 点云数据的获取
2.1.1 Kinect简介
本文采用Kinect作为点云数据获取设备。Kinect本是微软进军游戏市场的重要一员,为Xbox游戏机的实时人机交互的一款周边设备,其开发的目的最初也就是为了增加游戏的可玩性。然而Kinect的出现却在全球掀起了一股研究廉价三维重建的热潮。随着对Kinect相机的研究不断推进,基于Kinect三维重建的各种应用实例也越来越多。例如,虚拟试衣境、手语翻译系统、图书馆交互系统等。
Kinect属于主动光学式三维传感器,其内部放置了红外线发射装置和红外线接收装置。红外线发射器将红外线结构光打在物体上,接收装置接收到物体反射的红外线。内置处理器协同发射器与接收器计算中间的时间差进而得到物体的三维数据。
根据官方给出的数据,Kinect2.0的可视范围在0.5到4.5米之间,视角为水平70度垂直60度。试验表明对于太近的物体,其成像容易产生空白无数据区域,而距离太远则会导致数据误差太大,且红外线发射器的功率也是其限制因素。因此,本文在采集点云数据的环节都将物体放置于Kinect正前方1.5米处。Kinect2.0采集的彩色图像分辨率为1080×1920 30fps,深度图像的分辨率为512×424 30fps。Kinect原型如图2.1所示,具体参数如表2.1.
以上是毕业论文大纲或资料介绍,该课题完整毕业论文、开题报告、任务书、程序设计、图纸设计等资料请添加微信获取,微信号:bysjorg。
相关图片展示: