基于Kinect的三维重建
- 格式:doc
- 大小:526.50 KB
- 文档页数:22
使用计算机视觉技术进行三维重建的步骤和技巧近年来,计算机视觉技术的发展使得三维重建变得更加便捷和精确。
通过使用计算机软件和图像处理算法,我们可以将二维图像转化为逼真的三维模型。
本文将介绍使用计算机视觉技术进行三维重建的一般步骤和一些技巧。
第一步:数据采集三维重建的第一步是收集所需的数据。
通常,我们可以使用各种不同的方法来获取数据,包括摄影、激光扫描、结构光等。
其中最常见的方法是使用照相机拍摄一系列图像,并确保在拍摄过程中覆盖被重建对象的各个角度。
此外,还可以使用专业的三维扫描仪来获取更准确的数据。
在数据采集的过程中,确保图像的清晰度和质量是非常重要的,这将直接影响到后续重建的精确度。
第二步:图像处理在数据采集完成后,下一步是对采集到的图像进行处理。
这一步骤主要包括图像去噪、图像配准、图像校正等。
去噪是指消除图像中的噪声,以提高图像质量。
图像配准是指将不同角度拍摄的图像进行对齐,以确保后续处理的准确性。
而图像校正则是针对拍摄过程中可能出现的畸变进行修正,以保证图像的几何属性。
第三步:特征提取在图像处理完成后,接下来需要进行特征提取。
特征提取是将图像中的关键点或特征进行检测和提取的过程。
常用的特征包括角点、边缘、纹理等。
通过提取这些特征,可以帮助计算机对图像进行更准确的分析和处理。
特征提取的目的是为后续的三维重建提供更具信息量的数据。
第四步:三维重建在完成特征提取后,接下来就是执行三维重建算法。
三维重建算法有多种,包括从图像对中恢复相机姿态、三角测量、体素表示等。
从图像对中恢复相机姿态是指分析两个或多个图像之间的关系,恢复相机的位置和姿态信息。
三角测量是通过计算多个相机拍摄的图像中特征点的三角化位置,来恢复三维点的坐标。
体素表示则是将三维空间划分为小的立方体,通过求解每个立方体的属性,来重建整个三维模型。
第五步:模型优化和重建结果调整在三维重建完成后,可能需要对生成的模型进行优化和调整。
这包括去除不准确的部分、填充缺失的区域、平滑表面等。
基于kinect的3D人脸识别技术摘要在2D人脸识别技术不断发展的今天,深度学习的出现让2D人脸识别技术的准确率已经达到了97.54%,2D技术的发展空间越来越小。
而随着3D技术也越来越成熟,将3D技术融合到人脸识别技术中是一种新的发展方向。
而现阶段,kinect这种体积轻巧,价格便宜,捕获3D数据效率高而且分辨率不低的设备成了许多研究人员的研究对象。
在本文中我们也利用了kinect设备完成了一个基于kinect的3D人脸识别研究的过程。
首先通过kinect设备采集了一批数据,接着实现了一种基于熵图和显著性图,利用HOG特征算子,和随机森林分类器和SVM分类器进行识别的算法系统。
通过我们的实验,利用随机森林分类器实现的分类器准确率只有73%,而利用SVM分类器达到的准确率有83.19%。
但是因为采集数据的范围小,以及算法的不完善性,我们的系统还有很大的提升空间。
关键词:kinect,RGB-D,显著性,熵图,随机森林,SVM,人脸识别AbstractWith the fast development of the face recognition based 2D data, the deep learning technology makes the accuracy of the face recognition based 2D data have reached in 97.54% and the development of the 2D technology in face recognition has reached the bottleneck. However, with the 3D technology becoming more and more mature, it is a new development direction to fuse the 3D technology into face recognitiontechnology. In the meanwhile, the Kinect which is portable, inexpensive and has high capturing rate and moderate definition becomes the research object of many researchers.In our paper, we used the Kinect equipment to finish a project which is about face recognition based 3D data. First of all, we collected enough RGB-D data using Kinect. Then we implemented the algorithm system which is based the entropy map and the visual saliency map, gets the feature vector using the HOG descriptor and using random decision forest and support vector machine to classify the data.The result of our experiment is not very well. The accuracy of the recognition with random decision forest classifier reaches only 73%. However, the accuracy of the recognition with support vector machine reaches 83.19%. Because of the small scale in the database and the imperfect algorithm, our system can still make great progress.Key words:Kinect, RGB-D, salience, entropy, RDF, SVM, face recognition1,绪论1.1研究背景随着人们对人工智能,机器学习算法的研究的不断深入,其分支领域中的计算机视觉中的人脸识别技术也得到了充分的发展和巨大的进步。
3D重建算法原理3D重建算法原理三维重建(3D Reconstruction)技术⼀直是计算机图形学和计算机视觉领域的⼀个热点课题。
早期的三维重建技术通常以⼆维图像作为输⼊,重建出场景中的三维模型。
但是,受限于输⼊的数据,重建出的三维模型通常不够完整,⽽且真实感较低。
随着各种⾯向普通消费者的深度相机(depth camera)的出现,基于深度相机的三维扫描和重建技术得到了飞速发展。
以微软的Kinect,华硕的XTion以及因特尔的RealSense等为代表的深度相机造价低廉,体积适当,操作⽅便,并且易于研究者和⼯程师进⾏开发。
三维重建技术也是增强现实(Augmented Reality,简称AR)技术的基础,经过扫描重建后的三维模型可以直接应⽤到AR或VR的场景中。
本⽂将简单介绍基于深度相机的三维重建技术的基本原理及其应⽤。
背景对⼏何3D模型不断增长的需求:电影游戏虚拟环境等⾏业VR&AR的⽕爆房地产三维地图等领域的需求中国古代建筑三维数字化保护三维数字化城市三维地图VR&&AR游戏,电影等医疗⾏业:三维⼼脏教育⾏业等应⽤⽅法介绍传统的三维重建主要是依靠昂贵的三维扫描设备,并且需要被扫描的⽬标保持⼀段时间的稳定。
近年来,由于计算机硬件⼤规模计算能⼒的发展,特别是GPU和分布式计算的发展,实时⾼效的解决⽅案成为了可能。
⽬前主流的⽅法主要分为以下两类:基于深度相机的三维重建基于图像的三维重建原理主要有以下三种:结构光,这个技术的代表产品是 Kinect ⼀代,它的传感器芯⽚⽤的是 PrimeSense 家的。
PrimeSense 现在是苹果旗下的公司。
TOF,time-of-flight,代表产品是 Kinect ⼆代,由于微软对于 One 这个单词的热爱,它的官⽅名字是 Kinect One。
双⽬摄像头,代表产品是 Google Tango 以及 Leap Motion,前者配有四台摄像头,后者有两个三维重建算法⼴泛应⽤于⼿机等移动设备中,常见的算法有SfM,REMODE和SVO等。
计算机视觉技术中的三维重建方法与工具推荐计算机视觉技术已经逐渐成为科学研究和工业应用中的重要工具。
在计算机视觉领域中,三维重建是一个重要的任务,它可以从一系列的二维图像或视频中恢复出场景的三维形状和纹理信息,为许多领域提供了强大的分析和设计能力。
本文将介绍几种常见的三维重建方法,并推荐一些常用的工具。
一、三维重建方法1. 隐式体素方法隐式体素方法是一种利用体素(体积像素)来表示和重建三维几何结构的方法。
该方法通常使用点云数据或体积数据作为输入,将对象建模为精细的体素网格,并从中提取几何信息。
常用的隐式体素方法有薄片轮廓隐式体素(TSDF)、体素边界网格(Voxel Boundary Grid)等。
这些方法虽然能够实现较高精度的三维重建,但由于体素表示的计算量较大,对计算资源的要求较高。
2. 稠密点云重建方法稠密点云重建方法使用从图像中提取的稀疏点云作为输入,通过使用匹配、滤波和插值等技术,将稀疏点云扩展为稠密点云。
该方法中常用的算法有基于多视图几何的方法和基于结构光的方法。
基于多视图几何的方法利用多个视角的图像进行几何重建,常用的算法包括光束法、三角测量法和基于匹配的方法。
而基于结构光的方法则是通过投射结构光或使用红外深度传感器捕捉场景中光的反射来获取场景的三维信息,常用的工具有Microsoft Kinect、Intel RealSense等。
3. 深度学习方法深度学习方法在计算机视觉领域中得到了广泛的应用。
在三维重建领域,深度学习方法可以通过训练神经网络来提取图像中的特征,并推断出场景的三维信息。
常用的深度学习方法包括卷积神经网络(CNN)和生成对抗网络(GAN)。
CNN 可以通过图像识别和分割来获取场景的二维特征,然后通过几何推理方法将其转化为三维信息。
GAN可以通过自适应学习生成具有真实感的三维模型。
这些方法在三维重建中取得了较好的效果,但对于数据量的要求较高,需要较大规模的训练数据集。
基于机器人视觉的三维场景重建与定位研究近年来,基于机器人视觉的三维场景重建与定位研究成为了人工智能领域的热点之一。
通过将机器人与视觉技术相结合,可以实现机器人在复杂环境中的感知与理解,为机器人导航、自主控制等提供了有效的支持。
本文将探讨基于机器人视觉的三维场景重建与定位的相关研究内容及应用前景。
首先,基于机器人视觉的三维场景重建是指利用机器人的摄像头或激光雷达等传感器,通过采集环境中的图像或点云数据,利用计算机视觉算法对这些数据进行处理与分析,从而获取并重建出环境的三维模型。
这种方法可以精确地描述物体的形状、大小、位置等属性,为机器人的导航与操作提供准确的场景信息。
在三维重建中,常用的技术包括结构光、视觉SLAM (Simultaneous Localization and Mapping),以及点云融合等。
结构光是一种基于红外相机和投影仪的三维重建方法,通过将结构光投影在目标物体上,利用红外相机对结构光进行拍摄,然后根据光的形变来重建出物体的三维形状。
这种方法适用于对静态物体进行精确重建,但对于动态场景则存在一定的限制。
视觉SLAM是指通过机器人的摄像头或激光雷达等传感器,实时地获取环境的图像或点云数据,并通过同时进行定位与地图构建的方式,来实现对机器人路径的跟踪与建模。
视觉SLAM方法常用的算法有ORB-SLAM、DSO等,它们通过特征点的提取与匹配,实现对机器人位置与环境地图的实时更新。
视觉SLAM的优势在于可以实现实时定位与地图构建,并且对于环境的要求较低,但对于大场景或者特定光照条件下的视觉SLAM仍然存在一定的挑战。
点云融合是指将多个传感器采集到的点云数据进行融合,得到更精确的三维模型。
常用的点云融合方法包括ICP(Iterative Closest Point)、RGB-D SLAM等,它们通过将不同传感器获取到的点云进行配准与融合,得到精确的三维重建结果。
点云融合方法适用于对大型场景进行建模,但对传感器之间的标定及数据同步要求较高。
kinect fusion算法摘要:1.引言2.Kinect Fusion算法概述3.算法原理3.1 点云处理3.2 表面重建3.3 优化与可视化4.应用领域5.算法优缺点6.总结正文:【引言】在计算机视觉和增强现实领域,Kinect Fusion算法独树一帜。
它通过将多个Kinect传感器采集的数据进行融合,实现对场景的实时三维重建。
本文将对Kinect Fusion算法进行详细解析,带你领略其魅力所在。
【Kinect Fusion算法概述】Kinect Fusion算法是一种基于Kinect传感器的三维重建技术。
它通过实时捕捉场景中的深度信息和彩色信息,对场景进行三维重建。
与其他三维重建方法相比,Kinect Fusion算法具有更高的实时性和准确性。
【算法原理】Kinect Fusion算法主要包括以下三个部分:【3.1 点云处理】Kinect传感器捕捉到的深度数据是连续的深度值,需要将这些深度值转化为点云数据。
点云数据是由一系列三维坐标点组成的数据集,能更好地反映场景中的物体形状和位置信息。
【3.2 表面重建】在得到点云数据后,需要对点云数据进行表面重建。
表面重建的目的是从点云数据中提取出物体的表面信息,以便后续处理。
常用的表面重建方法有Poisson表面重建、球形重建等。
【3.3 优化与可视化】表面重建完成后,需要对结果进行优化和可视化。
优化主要包括降噪、平滑等处理,以提高表面质量。
可视化则是将重建结果以直观的方式展示出来,便于用户观察和分析。
【应用领域】Kinect Fusion算法在许多领域都有广泛应用,如虚拟现实、增强现实、机器人导航等。
通过实时三维重建,Kinect Fusion算法为这些领域提供了强大的技术支持。
【算法优缺点】Kinect Fusion算法具有以下优点:1.实时性:能够实时捕捉场景信息并进行三维重建。
2.准确性:与其他三维重建方法相比,Kinect Fusion算法具有较高的准确性。
kinectfusion算法详解KinectFusion算法是一种利用微软Kinect传感器进行三维重建的技术。
它能够实时地将物体或环境的三维形状转化为点云数据,从而实现对实时场景的三维建模。
本文将对KinectFusion算法进行详细解析,包括算法原理、实现步骤以及应用场景等方面。
我们来看一下KinectFusion算法的原理。
该算法主要依赖于Kinect传感器提供的深度图像和彩色图像。
深度图像是通过红外光和红外摄像头测量物体与Kinect传感器之间的距离而得到的。
而彩色图像则是通过普通的RGB摄像头获取的。
基于这两个输入,KinectFusion算法能够实时地生成环境中物体的三维模型。
KinectFusion算法的实现步骤如下:1. 初始化:首先,需要将深度图像和彩色图像进行配准,以保证它们的空间对齐。
这一步骤通常需要使用传感器提供的内置标定参数。
2. 预处理:在进行三维重建之前,需要对深度图像进行预处理。
这包括去除噪声、填充空洞等操作,以提高后续处理的准确性和稳定性。
3. 三维重建:在预处理完成后,可以开始进行三维重建。
首先,需要根据深度图像和内置标定参数计算相机的内外参数。
然后,将深度图像转化为点云数据,并将其与彩色图像进行配准。
最后,利用体素格网(Voxel Grid)等方法将点云数据进行三维重建,生成物体的三维模型。
4. 实时更新:一旦生成了初始的三维模型,KinectFusion算法可以实时地将新的深度图像与已有的模型进行融合。
这样,即使物体在移动或者场景发生变化,也能够及时地更新模型,保持模型的准确性和完整性。
KinectFusion算法在虚拟现实、增强现实等领域具有广泛的应用。
例如,在虚拟现实游戏中,可以利用该算法实时地将玩家的动作转化为三维模型,实现身临其境的游戏体验。
在医学领域,可以利用该算法进行手术模拟和病灶分析等工作。
此外,KinectFusion算法还可以应用于室内导航、机器人感知等领域,为相关应用提供三维环境模型。
kinect fusion算法摘要:1.引言2.Kinect Fusion算法简介3.算法原理4.应用领域5.算法优缺点6.发展趋势7.总结正文:【引言】随着科技的不断发展,传感器技术在各类设备中的应用日益广泛。
其中,Kinect作为一种混合传感器,集成了深度摄像头、彩色摄像头和麦克风阵列等多种功能,为用户提供了一个全新的交互方式。
本文将重点介绍Kinect Fusion算法,分析其原理、应用领域以及优缺点,并探讨发展趋势。
【Kinect Fusion算法简介】Kinect Fusion算法是一种基于深度数据的实时三维重建技术。
通过将多个Kinect设备采集到的深度数据进行融合,算法可以实时地生成精确的三维模型。
这一技术在虚拟现实、增强现实等领域具有广泛的应用前景。
【算法原理】Kinect Fusion算法主要基于以下几个原理:1.深度数据融合:对多个Kinect设备采集到的深度数据进行整合,提高数据的精确度。
2.表面重建:通过最小二乘法或其他算法对融合后的深度数据进行表面重建,生成三维模型。
3.实时渲染:将生成的三维模型实时渲染到场景中,实现实时交互。
【应用领域】Kinect Fusion算法在以下领域具有广泛应用:1.虚拟现实:为用户提供真实感强烈的虚拟环境,应用于游戏、教育、医疗等领域。
2.增强现实:将虚拟物体与现实世界相结合,应用于导航、机器人、智能家居等领域。
3.机器人视觉:通过实时三维重建,为机器人提供周围环境的感知能力,提高导航、避障、定位等性能。
【算法优缺点】优点:1.实时性:Kinect Fusion算法能够实时地生成三维模型,满足实时交互的需求。
2.精确度:通过多台Kinect设备的深度数据融合,提高了三维模型的精确度。
3.易用性:算法已逐步成熟,有较多的开源库和工具可供开发者使用。
缺点:1.设备依赖:Kinect Fusion算法依赖于Kinect设备,限制了其在其他平台上的应用。
基于Kinect非规则投影表面几何校正技术研究发布时间:2022-08-17T02:01:44.616Z 来源:《中国科技信息》2022年第4月第7期作者:黄鑫李根[导读] 构建投影显示系统的一个关键技术就是高精度的几何校正,投影仪投射图像到非规则表面上,黄鑫李根中国联合网络通信有限公司吉林省分公司长春市 130000)摘要:构建投影显示系统的一个关键技术就是高精度的几何校正,投影仪投射图像到非规则表面上,投影图像会发生变形扭曲现象,严重影响观察者的视觉效果。
针对此,提出了一种非规则投影表面的几何校正算法,该算法首先用Kinect对非规则投影表面进行三维重建。
通过建立目标校正平面以确定理想观察视点,在该视点下建立视点坐标系,将非规则投影表面特征点的三维世界坐标值转换为理想观察视点坐标系下的坐标值,根据解算对应区域的单应性矩阵并对原图像进行预处理。
通过实验结果表明,该算法不以摄像机为基准,适用于任意、非规则的投影表面,无需专业的投影幕布,得到校正后的投影图像符合观察者正常视觉效果。
关键词:几何校正;投影;Kinect;非规则表面1 引言随着投影显示技术在军事模拟、科学研究、广告媒体等领域的广泛应用,其相关技术也成为备受关注的研究热点[1,2]。
精确的几何校正是投影显示技术的关键技术之一,其基础是建立投影仪缓存图像与投影表面图像之间的几何位置对应关系[3,4]。
当投影仪投射图像到非规则表面上,投影表面图像会扭曲变形,严重影响观察者的视觉效果,因此需要对投影仪缓存图像进行预处理,预处理后的图像再经过投影仪投射到非规则表面上,使观察者能够正常识别投影图像的显示内容[5,6]。
近年来,随着投影显示技术的不断提高,出现了由摄像机代替观察者观察投影画面的自动几何校正方法,对摄像机和投影仪分别进行标定得到对应的内外参,再通过摄像机反馈的信息对图像的扭曲部分进行反向校正,从而对投影图像进行必要的几何校正[7,8]。
《精密测试理论与技术B》综合设计题目微软Kinect三维测量及人体姿势识别班级测控一班姓名王一霖学号3012210020指导教师孙长库微软Kinect三维测量及人体姿势识别王一霖(精仪学院,测控一班,3012210020)摘要:微软的kinect技术已经问世数年,由于它对空间的额测量比较准确,围绕它可以进行有效的三维测量和姿势识别。
本文详细分析介绍了kinect的三维人体跟踪算法、深度识别算法、人体姿势识别算法,通过分析Kinect 获取的深度图信息来对人体轮廓进行区分判定,提取前景目标区域以及计算目标区域的深度直方图。
通过对深度直方图进行分析去除背景区域部分,根据获取的深度直方图求取跟踪图像的深度反向投影; 最后结合Camshift 算法确定当前选取目标区域的尺寸和中心位置来进行对人体的实时跟踪。
还利用kinect进行了导轨直线度的设计测量,并分析了测量不确定度。
关键词:kinect;深度信息;Camshift算法;反向投影1.引言姿势识别是机器视觉领域的研究热点.被广泛应用在人机交互、行为分析、多媒体应用和运动科学等领域。
姿势识别主要有两种方法。
第一种是利用可穿戴传感器,比如戴在身体上的加速度计或装在衣服上的张力传感器。
可穿戴传感器具有精确直接的特点,但会对肢体运动造成束缚,会给用户带来额外的负担。
第二种是利用视觉捕捉技术,例如视频或者静态图像,通过对视觉数据的处理来判断用户的动作。
基于视觉捕捉技术在特征表达方面,起初是采用人体轮廓作为姿势特征表达。
但是轮廓特征从整体角度描述姿势,忽略了身体各部位的细节,不能精确地表示丰富多彩的人体姿势。
有研究采用基于身体部位的姿势表达,即把人体轮廓分成若干个身体部位,例如颈部、躯干和腿。
[1]由于这些姿势特征都是从二维彩色图像中抽取而来.需要处理人体定位、肢体被遮挡、不同光照条件等问题。
近年来,Kinect等深度传感器不仅提供彩色图像数据,而且提供了三维深度图像信息。
Computer Engineering and Applications 计算机工程与应用基金项目:中国医学科学研究院北京协和医院“863”计划基于荧光检测技术的自动化临床微生物检测分析仪器研制(NO.754214019) 作者简介:夏文玲(1987-),女,硕士研究生,主要研究方向为计算机视觉导航与定位、嵌入式系统;顾照鹏(1981-),男,博士研究生,讲师,主要研究领域为基于视觉的实时定位系统;杨唐胜(1967-),男,博士研究生,副教授,主要研究方向智能算法、智能仪器。
E-mail: xia1234zhao@实时三维重建算法的实现——基于Kinect 与单目视觉SLAM 的三维重建夏文玲1,顾照鹏2,杨唐胜2XIA Wenling 1 ,GU Zhaopeng 2, YANGTangsheng 2 1. 湖南大学 电气与信息工程学院,湖南 长沙 4100002. 北京大学深圳研究院 信息工程学院,广东 深圳 5180001. College of Electrical and Information Engineering ,Hunan University, Changsha, Hunan 410000,China2. XIA Wenling ,Abstract Mapping) by introducing the RGB-D camera Kinect to obtain the depth information of the 3D scene, an Key Words Kinect摘 要环境地图创建(关键词:1 引言维表示主要有两类方法,一类是利用几何建模软件,如3DMAX 、Maya 、AutoCAD 、UG 等,另一类则是通过一定的手段获取真实物体的几何形状,主要包括数据获取、预处理、点云拼接和特征分析等步骤。
目前在单目视觉的同步定位与地图创建TOF 相机,一类即为Kinect(Kinect for Xbox360)[4]。
kinect fusion算法摘要:一、kinect fusion算法简介1.什么是kinect fusion算法2.kinect fusion算法的发展历程二、kinect fusion算法的原理1.点云数据的处理2.空间三角测量3.优化与融合三、kinect fusion算法的应用1.虚拟现实2.增强现实3.人体运动捕捉四、kinect fusion算法的优缺点1.优点a.高精度b.实时性c.低成本2.缺点a.计算复杂度高b.对环境光照敏感正文:kinect fusion算法是一种通过对kinect深度传感器采集的点云数据进行处理,实现对三维场景的实时重建和呈现的技术。
该算法自2010年微软发布kinect以来,得到了广泛的关注和研究。
在kinect fusion算法中,首先对kinect深度传感器采集的点云数据进行处理,包括去噪、配准等操作。
然后通过空间三角测量方法,对点云数据进行三角化,生成三维网格模型。
最后,通过优化和融合算法,提高三维模型的精度和质量。
kinect fusion算法在虚拟现实、增强现实和人体运动捕捉等领域有着广泛的应用。
在虚拟现实中,kinect fusion可以实时地捕捉玩家的动作,并将其映射到虚拟角色上,提高虚拟现实的沉浸感。
在增强现实中,kinect fusion可以将虚拟物体与现实环境进行融合,实现真实感的增强。
在人体运动捕捉领域,kinect fusion可以实时捕捉人体的运动轨迹,为运动分析、人机交互等提供数据支持。
尽管kinect fusion算法具有高精度、实时性和低成本等优点,但同时也存在一些缺点。
例如,由于需要对大量的点云数据进行处理,kinect fusion算法的计算复杂度较高,对计算资源的需求较大。
基于Unity3D与Kinect的体感交互技术应用研究基于Unity3D与Kinect的体感交互技术应用研究近年来,人机交互技术在游戏、教育和医疗等领域中的应用逐渐受到关注。
随着虚拟现实技术的不断发展和普及,基于体感交互的技术也逐渐成为一种热门形式。
本文将探讨基于Unity3D与Kinect的体感交互技术应用研究。
一、引言体感交互是一种通过人体的动作和动态姿态来与计算机进行交互的技术。
它不仅可以提供更加自然和直观的交互方式,还可以增强用户的沉浸感和参与感。
其中,Unity3D是一款跨平台的游戏引擎,广泛应用于游戏开发、可视化设计等领域;而Kinect是微软研发的一种基于深度摄像头和红外线投射器的体感设备,能够实时捕捉和识别人体骨骼和动作。
二、Unity3D与Kinect的结合Unity3D与Kinect的结合可以实现更加真实和直观的人机交互体验。
通过Kinect设备,Unity3D可以实时捕捉用户的动作和姿态,并将其转化为游戏或应用中的控制命令。
同时,Unity3D还可以利用Kinect的深度信息和图像识别技术,实现更加精准的交互响应和环境感知。
三、体感交互技术在游戏领域中的应用基于Unity3D与Kinect的体感交互技术在游戏领域中有着广泛的应用。
例如,可以借助Kinect设备实时捕捉玩家的动作,然后在Unity3D中进行运算和渲染,实现真实的游戏角色动作。
通过体感交互技术,游戏可以更加刺激和有趣,玩家可以通过身体的运动参与游戏,极大地增强了游戏的娱乐性和沉浸感。
四、体感交互技术在教育领域中的应用基于Unity3D与Kinect的体感交互技术在教育领域中也有着潜在的应用价值。
例如,可以开发一款体感交互的虚拟实验室,让学生通过身体的动作和操作来进行实验操作,从而增加学习的趣味性和参与度。
此外,还可以开发一款体感交互的教育游戏,通过身体的运动和操作来进行学习和知识的巩固,激发学生的学习积极性。
五、体感交互技术在医疗领域中的应用体感交互技术在医疗领域中也有着广阔的应用前景。
基于视觉的三维重建关键技术研究综述一、本文概述三维重建技术是指从二维图像中恢复出三维物体的几何形状和结构信息的技术。
随着科技的发展,基于视觉的三维重建技术在医疗、工业、安防、娱乐等领域得到了广泛应用。
本文旨在综述三维重建的关键技术,为相关领域的研究提供参考。
二、三维重建技术概述2、1随着计算机视觉和图形学技术的飞速发展,基于视觉的三维重建技术已成为当前研究的热点之一。
三维重建技术旨在从二维图像或视频序列中恢复出物体的三维形状和结构,具有广泛的应用前景。
在医疗、工业、虚拟现实、增强现实、文物保护、安防监控等领域,三维重建技术都发挥着重要的作用。
在医疗领域,三维重建技术可以用于辅助诊断和治疗,如通过CT或MRI等医学影像数据生成三维人体内部结构模型,帮助医生更准确地了解病情并制定治疗方案。
在工业领域,三维重建技术可以用于产品质量检测、逆向工程等,提高生产效率和产品质量。
在虚拟现实和增强现实领域,三维重建技术可以为用户提供更加真实、沉浸式的交互体验。
在文物保护领域,三维重建技术可以用于对文物进行数字化保护和展示,让更多人能够欣赏到珍贵的文化遗产。
在安防监控领域,三维重建技术可以用于实现更加智能的监控和预警,提高安全防范能力。
因此,研究基于视觉的三维重建关键技术对于推动相关领域的发展和应用具有重要意义。
本文将对基于视觉的三维重建关键技术进行综述,旨在为相关领域的研究人员和实践者提供参考和借鉴。
21、2近年来,深度学习在计算机视觉领域取得了巨大的成功,其强大的特征提取和学习能力为三维重建带来了新的机遇。
深度学习模型,如卷积神经网络(CNN)和循环神经网络(RNN),能够从大量的图像数据中学习到有效的特征表示,进而用于三维重建任务。
深度学习模型,尤其是卷积神经网络,已被广泛用于从单张或多张图像中预测三维形状。
这类方法通常利用大量的图像-三维模型对作为训练数据,通过监督学习的方式学习从二维图像到三维形状的映射关系。
第46卷第4期自动化学报Vol.46,No.4 2020年4月ACTA AUTOMATICA SINICA April,2020基于视觉的三维重建关键技术研究综述郑太雄1黄帅1李永福2冯明驰1摘要三维重建在视觉方面具有很高的研究价值,在机器人视觉导航、智能车环境感知系统以及虚拟现实中被广泛应用.本文对近年来国内外基于视觉的三维重建方法的研究工作进行了总结和分析,主要介绍了基于主动视觉下的激光扫描法、结构光法、阴影法以及TOF(Time offlight)技术、雷达技术、Kinect技术和被动视觉下的单目视觉、双目视觉、多目视觉以及其他被动视觉法的三维重建技术,并比较和分析这些方法的优点和不足.最后对三维重建的未来发展作了几点展望.关键词三维重建,主动视觉,被动视觉,关键技术引用格式郑太雄,黄帅,李永福,冯明驰.基于视觉的三维重建关键技术研究综述.自动化学报,2020,46(4):631−652DOI10.16383/j.aas.2017.c170502Key Techniques for Vision Based3D Reconstruction:a ReviewZHENG Tai-Xiong1HUANG Shuai1LI Yong-Fu2FENG Ming-Chi1Abstract3D reconstruction is important in vision,which can be widely used in robot vision navigation,intelligent vehicle environment perception and virtual reality.This study systematically reviews and summarizes the progress related to3D reconstruction technology based on active vision and passive vision,ser scanning,structured light,shadow method,time offlight(TOF),radar,Kinect technology and monocular vision,binocular vision,multi-camera vision,and other passive visual methods.In addition,extensive comparisons among these methods are analyzed in detail.Finally, some perspectives on3D reconstruction are also discussed.Key words3D reconstruction,active vision,passive vision,key techniquesCitation Zheng Tai-Xiong,Huang Shuai,Li Yong-Fu,Feng Ming-Chi.Key techniques for vision based3D reconstruc-tion:a review.Acta Automatica Sinica,2020,46(4):631−652三维重建经过数十年的发展,已经取得巨大的成功.基于视觉的三维重建在计算机领域是一个重要的研究内容,主要通过使用相关仪器来获取物体的二维图像数据信息,然后,再对获取的数据信息进行分析处理,最后,利用三维重建的相关理论重建出真实环境中物体表面的轮廓信息.基于视觉的三维重建具有速度快、实时性好等优点,能够广泛应用于人工智能、机器人、无人驾驶、SLAM (Simultaneous localization and mapping)、虚拟现收稿日期2017-10-24录用日期2018-07-05Manuscript received October24,2017;accepted July5,2018国家自然科学基金(61773082,51505054),重庆市基础与前沿技术项目(cstc2018jcyjAX0684),重庆邮电大学交叉项目(A2018-02),重庆市重点产业共性关键技术创新专项项目(cstc2015zdcy-ztzx60002)资助Supported by National Natural Science Foundation of China (61773082,51505054),Basic Science and Emerging Technology of Chongqing(cstc2018jcyjAX0684),Project of Crossing and Emerging Area of CQUPT(A2018-02),and Chongqing Science and Technology Commission(cstc2015zdcy-ztzx60002)本文责任编委桑农Recommended by SANG Nong1.重庆邮电大学先进制造工程学院重庆4000652.重庆邮电大学自动化学院重庆4000651.College of Advanced Manufacturing Engineering,Chongqing University of Posts and Telecommunications,Chongqing4000652.College of Automation,Chongqing University of Posts and Telecommunications,Chongqing400065实和3D打印等领域,具有重要的研究价值[1−3],也是未来发展的重要研究方向.1963年,Roberts[4]首先提出了使用计算机视觉的方法从二维图像获取物体三维信息的可能性,也就是从这时开始,基于视觉的三维重建快速发展,涌现出了许多新方法.从发表在ICCV(Interna-tional Conference on Computer Vision)、ECCV (European Conference on Computer Vision)和CVPR(International Conference on Computer Vision and Pattern Recognition)等知名国际会议上的相关论文数量增长情况便可看出其研究发展程度.发达国家对于三维重建技术的研究工作起步比较早,研究相对比较深入.1995年,日本东京大学的Kiyasu等[5]利用物体反射的M-array coded 光源影像对物体表面进行三维重建.随着研究更进一步的深入,2006年,Snavely等[6]开发出了Photosynth和Photo Tourism两个三维重建系统.这两个系统的优点是能够自动计算每一帧图像的视点,从而可以重建出物体的稀疏三维模型.遗憾的是,稀疏三维模型重建的效果并不是很清晰,可视化程度较低,需要进行稠密三维模型重建.2008年,632自动化学报46卷Pollefeys等[7]在相机焦距不变的条件下对重建物体的周围拍摄多幅图像,通过特征提取、匹配和多视几何关系等步骤对相机进行标定并重建三维模型. 2009年,Furukawa等[8]提出了一种基于面片的多视图立体重建方法,这种方法的优点是重建出的物体轮廓完整性较好、适应性较强,而且不需要初始化数据.此外,2013年,微软研究院推出的Kinect Fusion项目[9]在三维重建领域取得了重大突破,与三维点云拼接不同,它主要采用一台Kinect围绕物体进行连续扫描,并且实时地进行物体的三维模型重建,这样做有效地提高了重建精度.微软研究院(Microsoft Research)在ISMAR2015会议上公布了Mobile Fusion项目[10],这个项目使用手机作为一台3D扫描仪,可以拍摄出各种3D场景图像.国内对于三维重建的研究虽然相对落后,但也取得了不错的成果.1996年,中科院的李利等[11]提出了恢复室内场景的三维重建技术.2002年,中科院的Zhong等[12]提出了一种新的匹配方法–半稠密匹配法,这种方法解决了稀疏匹配重建出的物体信息较少和稠密匹配重建出的点云物体信息较多等问题. 2003年,中科院的Lei等[13]利用Kruppa方程进行相机的自标定,成功研发出了CVSuite软件[14],该软件实现了利用不同视角的影像进行三维建模. 2014年,西安电子科技大学的张涛[15]提出了一种基于单目视觉的三维重建方法,这种方法利用获取的空间稀疏三维点云,再使用欧氏重建和射影重建方法,从而重建出获取图像的真实场景.近年来,三维重建技术的研究和应用得到了快速的发展,但仍然面临着许多问题.为此,本文将对近些年来基于视觉的三维重建技术方法的主要进展和部分具有代表性的研究成果进行介绍,为科研人员提供参考,并以此为基础,通过对比和分析,探究三维重建技术研究中的难点和热点,以及可能的发展趋势.在接下来章节中,本文将从现有技术分析总结和未来发展方向两个方面讨论三维重建关键技术问题,具体安排如下:第1节总结了三维重建的方法;第2节对各种方法进行了分析,并比较了各种方法的优缺点、自动化程度、重建效果、实时性以及应用场景;第3节总结了三维重建关键技术以及未来的发展方向,并总结概括了本文内容.1三维重建方法从整体上来看,三维重建技术主要通过视觉传感器来获取外界的真实信息,然后,再通过信息处理技术或者投影模型得到物体的三维信息,也就是说,三维重建是一种利用二维投影恢复三维信息的计算机技术[16−17].1997年,V´a rady等[18]将数据获取方式分为接触式和非接触式两种.2005年,Isgro 等[19]又将非接触式方法分为主动式和被动式两类.主动式需要向场景中发射结构光源,然后再通过计算和提取光源在场景中的投影信息来检测目标位置并进行测量.被动式不使用任何其他能量,而是通过获取外界光源的反射来进行三维测量.接触式方法其实就是利用某些仪器能够快速直接测量场景的三维信息[20],主要包括触发式测量、连续式测量、CMMs(Coordinate measuring ma-chines)和RA(Robotics arms)等.虽然,接触式方法有其独特的优点,但是该方法只能应用于仪器能够接触到测量场景的场合.而且,在测量某些加工精密物体表面时,很可能会划伤被测物体的表面,造成被测物体某种程度的损坏,影响其性能.非接触式方法是在不接触被测量物体的前提下,利用影像分析模型原理来获取被测物体的数据信息.虽然,这种方法的精度并没有接触式高,但是,这种方法的应用范围比接触式方法更广泛.由于接触式测量不属于视觉测量,因此本文只对非接触式方法进行详细介绍.非接触式主要包括主动视觉法和被动视觉法;主动视觉又包括激光扫描法、结构光法、阴影法、TOF 技术、雷达技术、Kinect技术等;被动视觉法根据摄像机数目的不同分为单目视觉法、双目视觉法和多目视觉法;根据原理(匹配方法)不同又可以分为区域视觉法、特征视觉法等;根据应用方法也可以分为运动恢复结构法和机器学习法等.三维重建技术的分类如图1所示.1.1基于主动视觉的三维重建技术基于主动视觉的三维重建技术主要包括激光扫描法[21−22]、结构光法[23]、阴影法[24]和TOF技术[25]、雷达技术[26]、Kinect技术[27]等.这些方法主要利用光学仪器对物体表面进行扫描,然后,通过分析扫描数据,重建物体表面的三维结构.此外,这些方法还可以获取目标表面的其他一些细节信息,从而能够精确地重建出目标物的三维结构.1.1.1激光扫描法激光扫描法其实就是利用激光测距仪来进行真实场景的测量.首先,激光测距仪发射光束到物体的表面,然后,根据接收信号和发送信号的时间差确定物体离激光测距仪的距离,从而获得测量物体的大小和形状.该方法的优点是不仅可以建立简单形状物体的三维模型,还能生成不规则物体的三维模型,而且生成的模型精度比较高.激光扫描数据处理流程如图2所示,首先,通过激光扫描法获取点云数据,然后与原始获得的数据进行配准获得配准后的点云数据,最后对获取的点云数据进行一系列的处理,从而获取目标物的三维模型.4期郑太雄等:基于视觉的三维重建关键技术研究综述633图1三维重建技术分类Fig.1Classification of3D reconstructiontechnology图2激光扫描数据处理流程Fig.2The process of laser scanning data processing20世纪60年代,欧美一些国家就已经对三维激光扫描技术进行了研究.在很早以前,斯坦福大学就已经开展了大规模的地面固定激光扫描系统的研究,获得了较精确的实验结果.1999年,Yang等[28]介绍了三角法激光扫描,详细地论述了在大型曲面测量原理的基础上影响激光扫描测量精度的几个因素.2003年,Boehler等[29]分析并验证了使用不同种类的三维激光扫描仪对实验结果的影响.更进一步,2006年,Reshetyuk[30]详细地分析了脉冲式地面激光扫描仪的误差来源以及影响程度,并对该误差模型进行了评价.2007年,Voisin等[31]研究环境光线对三维激光扫描的影响.至此,三维激光扫描仪步入了一个新的里程碑.1.1.2结构光法随着科技的不断进步,三维重建技术涌现出了许多研究方向,其中结构光法就是三维重建技术的主要研究方向之一[32].结构光法的原理是首先按照标定准则将投影设备、图像采集设备和待测物体组成一个三维重建系统;其次,在测量物体表面和参考平面分别投影具有某种规律的结构光图;然后再使用视觉传感器进行图像采集,从而获得待测物体表面以及物体的参考平面的结构光图像投影信息;最后,利用三角测量原理、图像处理等技术对获取到的图像数据进行处理,计算出物体表面的深度信息,从而实现二维图像到三维图像的转换[33−36].按照投影图像的不同,结构光法可分为:点结构光法、线结构光法、面结构光法、网络结构光和彩色结构光.基于结构光法的三维重建主要利用光学三角测量原理来计算物体的深度信息.它主要通过扫描仪中的光源、光感应器和反射点构成的三角关系来计算目标物体的深度信息,从而实现目标物体的三维重建.三角测量又可以分为:单光点测量、单光条测634自动化学报46卷量和多光条测量.如图3为结构光三角测量原理示意图.图3结构光三角测量原理示意图Fig.3Schematic diagram of the principle of structuredlight triangulation如图3所示,假设物体坐标(X W ,Y W ,Z W )为世界坐标与被测量的图像坐标(u,v )以及投影角θ之间的关系如下:[X W ,Y W ,Z W ]=bf cos θ−u[u,v,f ](1)自20世纪80年代以来,基于结构光法的三维重建越来越受到国外研究人员的关注.2000年,Kowarschik 等[37]采用了一种光栅结构法的三维测量系统,解决了结构光在测量中存在的遮挡问题.2002年,Shakhnarovich 等[38]提出了利用多种点结构光投影的光点法进行三维重建.2004年,Salvi 等[39]采用结构光条法,将激光发射的光束直接通过圆柱体透镜,然后,再使用步进电机匀速转动圆柱体透镜,使光束能够完全扫过测量物体的表面,进而可以获得物体的图像信息并进行信息的提取和三维测量.国内也在这方面做了大量的研究,2002年,张广军等[40]建立了结构光三维双视觉RBF (Radial basis function)神经网络模型,这种模型的优点是不需要考虑外在因素的影响,从而使该模型具有较高的精度.同年,天津大学首先研制了可以应用于生物医学、工业测量等领域的线结构光轮廓传感器[41].2004年,清华大学研究出了线结构光的多用途传感器,这种传感器的优点是可以对运动的物体以及腐蚀性的物体进行三维测量和重建,特别适合于对移动物体和腐蚀性表面的快速、在线、非接触的测量与重建[42].1.1.3阴影法阴影法是一种简单、可靠、低功耗的重建物体三维模型的方法[43−44].这是一种基于弱结构光的方法,与传统的结构光法相比,这种方法要求非常低,只需要将一台相机面向被灯光照射的物体,通过移动光源前面的物体来捕获移动的阴影,再观察阴影的空间位置,从而重建出物体的三维结构模型.这种方法的优点是检测速度快、精度高.阴影法主要分为这几种类型:平行光的直接阴影法、点光源发散光的直接阴影法、微观阴影法、聚焦阴影法、立体和全息阴影法和大型阴影法.最经典的平行光阴影法如图4所示,该方法使用点光源通过聚焦透镜和针孔,再利用凹透镜原理使其转换成平行光投影到毛玻璃片上,其中ε表示平行光投影到毛玻璃片上产生的误差.图4平行光阴影法Fig.4Parallel photocathode从国内外的研究来看,阴影被分为硬阴影和软阴影.与硬阴影相比,软阴影要考虑物体之间的几何特征,更加难以实现,但是,显示效果更加真实.在真实的世界中,由于光源比较复杂以及物体之间有光照的影响,形成的阴影明暗程度并不是唯一的,所以,使用阴影法实现三维空间的物体重建是非常复杂的过程[45−48],该方法不适合于实时性较高的三维场景.1.1.4TOF 技术TOF (Time of flight)法是主动测距技术的一种,可从发射极向物体发射脉冲光,遇到物体反射后,接收器收到反射光时停止计时,由于光和声在空气中的传播速度是不变的,从而通过发射到接收的时间差来确定物体的距离,进而确定产生的深度信息,其原理如式(2)所示:d =n +ϕ2π2λ(2)其中,λ表示脉冲的波长;n 表示波长的个数;ϕ表示脉冲返回时的相位;d 表示物体离发射之间的距离.TOF 相机的研究相对比较早,与二维测距仪相比具有较大的优势,它可以从三维点云中直接获取场景的几何信息.2014年,微软推出了Kinect 2.04期郑太雄等:基于视觉的三维重建关键技术研究综述635传感器,采用TOF技术来计算深度,从而获得三维点云信息.文献[49−50]使用TOF相机获取的深度信息提取出场景中的几何信息.2008年,May等[49]使用两帧之间匹配数据中对应的方向向量来提高定位精度.2009年,Hedge等[50]运用提取的方向向量来探测不容易识别的路平面.同年,Pathak等[51]利用方向向量建立三维地图,为移动机器人提供导航信息.然而,由于TOF相机获取的三维点云信息存在比较多的误差点,只依靠几何信息来构建地图和定位会产生较大的误差.Stipes等[52]采用ICP(Iterative closest point)算法拼接TOF两帧之间的数据,通过获取的三维点云来实现ICP的迭代过程.May等[53]通过SLAM算法解决两帧之间的数据匹配问题.1.1.5雷达技术雷达作为一种很常见的主动视觉传感器,可以通过发射和接收的光束之间的时间差来计算物体的距离、深度等信息.如式(3)所示:d=c∆t2(3)式中,c为光速;∆t为发射与接受的时间间隔;d表示雷达到物体之间的距离.在20世纪60年代激光雷达传感器迅速发展,这种传感器通过激光束的扫描,可以得到周围环境的深度信息.本部分仅介绍激光雷达的相关应用,其他雷达不再赘述.激光雷达的数学模型可以表示为:XYZ=λa1a2a3b1b2b3c1c2c3xyz+X SY SZ S(4)其中,X,Y,Z是空间点的三维坐标;a i,b i,c i为3个空间姿态角组成的方向余弦;x,y,z为空间扫描点坐标;X S,Y S,Z S为激光雷达扫描器的直线外方位元素;通过式(4)可以获得物体的空间三维坐标.2004年,Streller等[54]对激光雷达获取的扫描点进行聚类,从而实现智能车前方目标的检测.2005年,Schwalbe等[55]利用激光雷达获取点云数据,然后采用线追踪近邻面将点云数据进行分段投影,最后重建出建筑物的三维模型.2007年,Weiss等[56]使用激光雷达聚类的方法来提取智能车前方车辆的轮廓信息,然后对目标车辆进行三维重建,从而获取形状信息,最后采用模式识别算法,结合得到的轮廓和形状信息对目标车辆进行检测.2010年,胡明[57]提出了边界保持重建算法,利用激光雷达获取的点云数据选取二次曲面进行局部拟合,再使用单元分解的方法对拟合曲面进行点云拼接,从而实现了点云的三维重建.2012年,魏征[58]使用车载激光雷达获取建筑物的点云数据进行了几何重建.1.1.6Kinect技术Kinect传感器是最近几年发展比较迅速的一种消费级的3D摄像机,它是直接利用镭射光散斑测距的方法获取场景的深度信息[59],Kinect在进行深度信息获取时采用的是第1.1.2节所介绍的结构光法,下面主要是对Kinect技术研究现状进行简要概述.由于Kinect价格便宜,自2010年发售以来,受到了国内外的广泛关注,并开始使用Kinect进行三维重建的研究.Kinect传感器如图5所示.图5Kinect传感器Fig.5Kinect sensorKinect传感器中间的镜头为摄像机,左右两端的镜头被称为3D深度感应器,具有追焦的功能,可以同时获取深度信息、彩色信息、以及其他信息等. Kinect在使用前需要进行提前标定,大多数标定都采用张正友标定法[60].2011年,Smisek等[61]为了解决Kinect传感器无法找到棋盘格角点问题,对Kinect深度相机自身的红外发射器进行遮挡,并使用卤素灯生成红外图像,从而标定Kinect传感器两个相机之间的位置.2014年,Zollh¨o fer等[62]为了解决Kinect获取的深度信息含有噪声的问题,使用高斯滤波器进行滤波处理,从而减小了噪声影响.目前,使用Kinect进行三维重建的研究比较流行.2014年,Henry等[63]最早使用Kinect相机对室内环境进行三维重建,得到的效果不是很好,重建的模型有很多黑色斑点,实时性也较差,需要进一步提高其性能.为了解决这些问题,2012年,Henry 等[64]使用了重投影误差的帧间配准、FAST特征等优化方法对其进行了改进,实时性得到了显著提高.2011年,Newcombe和Izadi等[65−66]开发了Kinect Fusion系统,该系统利用获取的深度信息生成三维点云及法向量,从而可以对场景进行三维重建,其结果更加精确.2013年,吴侗[67]采用体密度变化率直方图的方法对点云数据进行分割和检测,然后,对于Kinect采集到的纹理信息使用卷包裹算法,从而完成了对点云数据的三维重建.表1所示为主动视觉常用方法优缺点的对比.636自动化学报46卷表1主动视觉方法对比Table1Active visual method comparison方激光扫描结构光阴影TOF技雷达技Kinect技法法[28−31]法[32−42]法[43−48]术[49−53]术[54−58]术[59−67]1.重建结果 1.简单方便、 1.设备简单,图像 1.数据采集频 1.视场大、扫描 1.价格便宜、轻优很精确;无破坏性;直观;率高;距离远、灵敏度便;2.能建立形 2.重建结果速 2.密度均匀, 2.垂直视场角高、功耗低; 2.受光照条件的点状不规则物率快、精度高、简单低耗,对图像大; 2.直接获取深度影响较小;体的三维模能耗低、抗干的要求非常低. 3.可以直接提信息,不用对内部 3.同时获取深度型.扰能力强.取几何信息.参数进行标定.图像和彩色图像.1.需要采用 1.测量速度慢; 1.对光照的要求较 1.深度测量系统 1.受环境的影响 1.深度图中含有算法来修补 2.不适用室外高,需要复杂的记误差大;较大;大量的噪声;漏洞;场景.录装置; 2.灰度图像对比 2.计算量较大, 2.对单张图像的缺 2.得到的三 2.涉及到大口径度差、分辨率低;实时性较差;重建效果较差.维点云数据的光学部件的消 3.搜索空间大、量非常庞大,像差设计、加工效率低;点而且还需要和调整. 4.算法扩展性差,对其进行配空间利用率低.准,耗时较长;3.价格昂贵.1.2基于被动视觉的三维重建技术1.2.1根据相机数目分类基于被动视觉的三维重建技术是通过视觉传感器(一台或多台相机)获取图像序列,进而进行三维重建的一种技术.这种技术首先通过视觉传感器(一台或多台相机)获取图像序列,然后提取其中有用的信息,最后,对这些信息进行逆向工程的建模,从而重建出物体的三维结构模型.该方法的优点是能够应用于各种复杂的环境中,对主动视觉法具有很好的补足.另外,它具有价格较低,操作简单,实时性较高,对光照要求较低以及对场景没有要求的优点,容易实现;不足的是重建精度不是很高.由于主动视觉方法受环境及设备等因素的限制,近几年,人们投入大量精力用于被动视觉方法的研究上.根据相机数量的不同,被动视觉的三维重建技术可以分为单目视觉、双目视觉和多目视觉,这一部分将重点从相机数目的角度对被动视觉的三维重建技术进行总结和分类.1.2.1.1单目视觉法单目视觉是仅使用一台相机进行三维重建的方法,该方法简单方便、灵活可靠、处理时间相对较短,而且价格便宜,使用范围比较广,能够使用在三维测量和检测等领域.为了进一步表示空间中任意一个三维点P在世界坐标系转换到二维图像坐标系之间的关系,关系坐标可以表示为:uv1=f x0u00f y v0001·R t01X WY WZ W1(5)其中,(X W,Y W,Z W)为空间中的三维点;(R t)称为旋转矩阵和平移向量;f x和f y是摄像机在两个方向上的焦距;(u0,v0)是摄像头主点在图像坐标系下的坐标;(u,v)是图像坐标系下的坐标;从而通过式(5)可以求解出任意空间一点的三维坐标.基于单目视觉的三维重建流程如图6所示.单目视觉主要提取图像中的亮度、深度、纹理、轮廓、几何形状、特征点等特征信息.由于这些特征信息已经在文献[68]中详细阐述过,为了使相关研究人员以及读者能够更好地了解发展趋势以及能够清楚它们之间在三维重建中的优缺点,这一部分简要的概述图像中所包含的特征信息.1)明暗度恢复形状法明暗度恢复形状法,简称SFS(Shape from shading),即通过分析图像中的明暗度信息,利用表面的反射模型,获取物体表面的法向信息,从而恢复出物体的三维轮廓,图像在(u,v)处的像素强度4期郑太雄等:基于视觉的三维重建关键技术研究综述637I uv 可以表示为:I uv =R I (ρ,n,s,v )(6)其中,R I 表示反射图;ρ为表面反射率;n 是表面法向量;s 表示入射光方向;v 表示反射光方向.明暗度恢复形状法的概念最早由Horn [69]于1970年提出.1989年,Penna [70]提出了PSFS (Per-spective shape from shading)方法,这种方法其实就是用透视投影替代正交投影的明暗度恢复法.1994年,Bakshi 等[71]提出了使用非朗伯特模型的明暗度法.2008年,Vogel 等[72]综合以上两种方法又提出了基于非朗伯特模型的PSFS 方法.图6基于单目视觉的三维重建流程Fig.63D reconstruction process based onmonocular vision2)光度立体视觉法虽然SFS 可以从单幅图像中获取物体的三维信息,但是其信息量比较少,而且重建出来的三维模型的效果也不是很好.于是,Woodham [73]于1980年对明暗度恢复形状法的不足进行改进,提出了光度立体视觉法,简称PS (Photometric stereo).光度立体视觉法首先将单个摄像机固定在目标物体的正上方,然后通过光源发出的光线从不同的角度射到目标物体的表面,最后通过摄像机获取多幅图像,从而得到图像的灰度值与目标物体的关系以此来恢复三维物体的形状.随后,许多研究人员在光度立体视觉法的基础上又有了进一步的研究.2003年,Noakes 等[74]在光度立体视觉法中提出非线性与噪声减除的方法.2004年,Horovitz 等[75]在光度立体视觉法中引入了控制点和梯度场的概念.2005年,Tang 等[76]使用可信度传递与马尔科夫随机场[77]的方法对光度立体视觉法进行了优化.2007年,Sun 等[78]采用非朗伯特模型的光度立体视觉法.2009年,Vlasic 等[79]提出了使用多视角进行三维重建的方法.2010年,Shi 等[80]提出了自标定的光度立体视觉法.Morris 等[81]使用了动态折射立体法对物体表面进行三维重建.Higo [82]提出了对非刚性不规则物体进行三维重建的方法.这些方法在一定程度上提高了三维重建的精度.这种方法可以用亮度方程进行表示:I (x,y )=k (x,y )×N (x,y )×S (7)其中,I 为图像亮度;S 为光源向量;N 为物体表面的法向量;k 是由物体表面反射系数、光源强度、摄像机对光敏感度共同决定的系数.光度立体视觉法在不同光照的条件下通过摄像机拍摄多幅图像,再根据不同图像的亮度方程进行联立,从而求解出物体表面的法向量,进而恢复物体的几何形状.3)纹理法纹理法简称SFT (Shape from texture).这种方法通过分析图像中物体表面的纹理大小和形状,来获取物体的三维信息,进而重建出物体的三维模型.纹理法分为两种,一种是基于频谱分析的方法,这种方法主要通过频域变换分析纹理单元的谱信息来恢复物体表面的法向,利用这些法向重建出物体的三维模型.1988年,Brown 等[83]采用傅里叶变换对物体的纹理进行了三维重建.2002年,Clerc 等[84]使用小波变换对物体表面进行了纹理分析和三维重建.另外一种则是在正交投影条件下基于后验概率分布的方法,这个方法是由Wiktin [85]于1981年最早提出的.2010年,Warren 等[86]为了使重建效果有进一步的提高,采用了透视投影模型对Wiktin 的方法进行了改进,通过实验验证了这种方法的可行性.4)轮廓法轮廓法简称SFS/SFC (Shape from silhou-ettes/contours).该方法主要是通过一个相机从多个角度拍摄图像来获取物体的轮廓信息,通过这些轮廓信息恢复物体的三维结构模型.轮廓法又可以分为体素法[87]、视壳法[88]和锥素法[89−91]三种.采用轮廓进行三维重建是由Martin 等[87]于1983年首次提出的方法,这种方法首先将物体所在的三维几何空间离散化为体素,然后再使用正向试探法,消除投影在轮廓区域以外的体素,进而可以获得物体的三维信息.为了进一步研究轮廓法的相关。
基于Kinect-OpenNI-OpenCV-OpenGL的环境三维重构
项目源码详见:/forum/viewtopic.php?f=1&t=13042
前几天刚入手了期待已久的Kinect ,用于实验室机器人项目的视觉导航与环境理解。
首先要做的是破解-->连接PC-->获取深度数据和图像数据-->三维点云显示这么几项基本工作。
开始仿照的是饮水思源[1]博客的方法(使用VS2008在windows平台上试用Kinect[2]),利用CL-NUI-Platform 来破解,它的最新版是1.0.0.1210,但我在XP上用会当机,后来换1.0.0.1121 版的就可以用了。
CL NUI 提供了十分简便易用的接口,在OpenCV 上调用很简单,另外它还提供了Kinect 底座马达的控制接口和LED 灯颜色的选择接口,其例程中可以操控Kinect 上下摆动。
如果只需要获取深度数据和图像数据,CL NUI 就够用了。
不过要做深入的应用,比如人体姿态识别、骨架提取、深度数据与图像数据的合并等等,就该用到OpenNI 了。
国的CNKINECT[3]是个不错的Kinect 开发论坛,版块丰富,有很多资料可供借鉴。
我通过论坛介绍的方法[4]成功配置了OpenNI + Kinect,先是用最新版的OpenNI+SensorKinect+NITE ,但在XP 下不能正常运行,可能跟 .net 平台有关,老实按上面论坛的方法装就成功了。
另外用CMake + VS2008 装了最新的OpenCV_SVN,开始试过在CMake 里选择With TBB,但诡异的是TBB 似乎只适用于VS2005,在VS2008 编译后试用里面的samples 老是提示报错找不到msvcp80.dll,重新用CMake 配置取消了With TBB,就一切正常了。
[编辑]
一、深度摄像机的视角调整与深度/彩色图像的合并
通过研究OpenCV_SVN 与OpenNI 相关的代码(cap_openni.cpp)发现,OpenCV 目前只支持对Kinect的深度图、视差图和彩色/灰度图及相关属性的读取,更进一步的设置还没有实现。
参考Heresy’space[5]的博客文章《透过OpneNI 合并Kinect 深度以及彩色影像资料》[6],想把深度图和彩色图合并显示,但是由于Kinect 的深度摄像机和彩色摄像机是在不同的位置,而且镜头本身的参数也不完全相同,所以两个摄像机所取得的画面会有些微的差异(如图1 左下角子图OpenGL三维点云显示窗口所示,天花板的两个日光灯对应深度图和彩色图的区域并没有重合,而是错位了)。
图1
根据Heresy 的分析,需要对深度摄像机的视角进行修正,在OpenNI 下只需要一行代码就可以实现:
// 6. correct view port
mDepthGenerator.GetAlternativeViewPointCap().SetViewPoint( mImageGenerato r );
不过在OpenCV 中并没有提供这一项设置,其源代码modules\highgui\src\cap_openni.cpp 中setDepthGeneratorProperty 并没有任何
实质的属性设置。
为此,需要改写该函数,并且要在相应的头文件modules\highgui\include\opencv2\highgui\highgui_c.h 中添加新的参数id,具体如下:
1.将cap_openni.cpp 第344 行的setDepthGeneratorProperty 改写如下:
1.在highgui_c.h 的第348 行下添加改变视角的参数ID 号:
然后在第352 行下添加:
从而使得OpenCV 的VideoCapture 属性关于OpenNI 的如下所示:
CV_CAP_OPENNI_DEPTH_GENERATOR_BASELINE =
CV_CAP_OPENNI_DEPTH_GENERATOR + CV_CAP_PROP_OPENNI_BASELINE, CV_CAP_OPENNI_DEPTH_GENERATOR_FOCAL_LENGTH =
CV_CAP_OPENNI_DEPTH_GENERATOR +
CV_CAP_PROP_OPENNI_FOCAL_LENGTH,
'''CV_CAP_OPENNI_DEPTH_GENERATOR_VIEW_POINT =
CV_CAP_OPENNI_DEPTH_GENERATOR +
CV_CAP_PROP_OPENNI_VIEW_POINT'''
改写完上述源代码后保存,并且用CMake 和VS2008 重新编译一次OpenCV,我们就可以用OpenCV 的接口来控制Kinect 深度摄像头的视角,使其深度数据和图像数据能够很好的重合起来,如图2所示,注意与图1相比,右上角的伪彩色视差图四周出现了黑边,这就是视角调整后的效果:
图2
[编辑]
二、三维点云坐标的计算
在OpenCV 中实际上已经提供了三维点云坐标计算的接口,通过Kinect 的深度数据可以很快换算出三维点云坐标,cap_openni.cpp 中这部分代码具体如下:
不过可以看到上面核心的代码就一行:
具体是怎样实现的呢?我们可以进一步找OpenNI 的源代码来分析。
不过这里我是从原来双目视觉的经验上自己编写代码来实现三维点云坐标的计算。
实际上Kinect 的深度摄像头成像也类似于普通的双目立体视觉,只要获取了两个摄像头之间的基线(baseline)和焦距(focal length)、以及视差数据,通过构造矩阵Q,利用OpenCV 的reprojectimageTo3D 函数,也可以计算出三维坐标。
下面我们通过以下代码看看矩阵Q 的构造过程:
而三维点云坐标的计算,以及深度、视差、彩色图像的读取,则如下所示:
这里值得注意的是,在计算视差时,如果视差图是采用默认的CV_8UC1 格式(参数ID是CV_CAP_OPENNI_DISPARITY_MAP),由于视差被限制在[0-255]整数围,造成一定的误差,所得到的三维坐标数据会出现分层,如图3和图4所示:
图3 Matlab绘制的三维点云,不同深度上有明显分层
图4 左为直接得到的深度数据Mesh图,中为由8位视差数据计算得到的深度数据,右为对应的视差数据
而采用32 位浮点格式来获取视差数据(参数ID:CV_CAP_OPENNI_DISPARITY_MAP_32F),则消除了这种因视差误差造成深度数值分层的现象,如图5、6所示:
图5 深度数值的分层现象基本消除
图6 两种方式得到的深度数据一致
[编辑]
三、利用OpenGL显示三维点云数据
这方面主要是基于学习笔记(15)[7]的容,不过当时是通过另设OpenCV 窗口设置Trackbar 来调整OpenGL 的视点位置和摄像机位置。
在这里则主要参考了OpenCV 论坛的帖子《[HQ] OpenCV和OpenGL编程:关于显示点云数据-Stereo Vision源码分享》[8]中villager5 提供的方法来调整摄像机位置,做了一定的修改,使得鼠标左键拖曳能够实现对上下左右的视角变换,鼠标右键拖曳能够实现视距远近的变换,不再需要用Trackbar 来调整。
下面是相关的代码:。