当前位置:文档之家› kinect三维重建

kinect三维重建

上海大学2014 ~2015学年秋季学期研究生课程考试课程设计大作业课程名称:建模与仿真课程编号: 09SAS9011论文题目: 基于Kinect的三维重建研究生姓名: 邵军强学号: 14721629 论文评语:成绩: 任课教师:评阅日期:基于Kinect的三维重建邵军强(上海大学机电工程与自动化学院)摘要:三维重建是计算机视觉的一个重要目标,可以帮助人们快速精确地将日常生活中的物体数字化,并有着广泛的应用前景。

本文叙述了一种成本低廉、快速且操作简便的三维重建方法。

借助于微软公司的Kinect 体感传感器作为采集深度图像和彩色图像的输入设备,通过对原始深度图像的去噪、平滑、表面重建等一系列方法,最终可以获得在三维空间中的点云模型。

关键词:三维重建,Kinect,点云模型Based on Kinect 3D ReconstructionSHAO JUNQIANG( Shanghai University EMSD and automation College)Abstract:3 D reconstruction is an important goal of computer vision, and can help people quickly and accurately to digital objects in everyday life, and has a broad application prospect. This paper describes a kind of low cost, quick and easy operation method of 3 d reconstruction. By using Microsoft's device body feeling sensor as a collection of depth image and color image input device, through the depth of the original image denoising and smoothing, surface reconstruction and a series of methods, finally can get the point cloud model in three-dimensional space.Keywords:3D Reconstruction,Kinect, point cloud model1 引言Kinect 传感器是一种RGB-D 传感器,即可以同时获得环境颜色值(RGB)和深度值(depth)的传感器.它的采集速度快,精度高,且价格低廉,使其迅速被运用到很多领域.机器人领域也开始了对Kinect 传感器广泛的研究[1].利用Kinect 传感器对室内环境进行3D 重构,获得环境的3D 点云模型是研究热点之一.华盛顿大学与微软实验室[2],开发了基于SIFT (尺度不变特征变换)特征匹配定位及TORO(Tree-basednetwORk Optimizer)优化算法的实时视觉SLAM系统来建立3D 点云地图.德国Freiburg 大学[3]提出了RGBD-SLAM 算法,采用了与华盛顿大学类似的方法,但是为了提高实时性,使用了Hogman(hierarchical optimization for pose graphs on manifolds)图优化算法,同时在相对位姿检测上采用了SURF (加速鲁棒特征)特征进行对应配.KinectFusion 算法与这些算法不同,它仅使用深度信息,通过设计高效及高度并行的算法在GPU(图形处理单元)上运行达到了非常高的实时性,在试验中,在配置4000 元左右的电脑上运行速度达到了18 帧/秒(在同样配置的计算机上前面两种算法仅达到2 帧/秒),在进行场景建立时有良好的用户体验,甚至可以用来做一些人机交互方面的应用[4-5].同时KinectFusion 采用了基于TSDF(truncated signed distancefunction)模型的点云融合方法,构建的点云模型冗余点少.而前面的方法因为没有进行点云融合,所以在地图创建过程中,点云的容量将不断增加[1].除此之外,KinectFusion 算法也存在一些问题,由于其重建过程是在GPU上的实时重建,因此,受GPU 内存限制,只能建立较小规模环境。

其算法注重效率的提升,在鲁棒性方面有不足之处,比如在一些环境中容易出现定位失效而无法正常建模。

2 Kinect 传感器Kinect 传感器如图1,它包括随机红外点云投射器、红外相机和彩色相机.图1 Kinect传感器结构红外点云投射器和红外相机构成了一个结构光3D 成像系统[8].Kinect可以同时采集到环境的深度信息数据和颜色信息数据,其中深度信息数据是一个2 维矩阵,它的元素值表示环境中物体到相机中心的距离值,可以作为灰度图像进行处理.不同于普通的通过计算得到物体3D坐标的设备,Kinect可以直接获取物体与摄像头之间的距离,这是Kinect最受人瞩目的一个功能。

微软先后于2009年和2010年收购了3DV Systems(TOF)和PrimeSense(Light Coding)这两家以色列公司,并最终采用了Light Coding 技术作为Kinect体感设备的深度摄像功能的基础。

Light Coding技术理论是利用连续光(近红外线)对测量空间进行编码,经感应器读取编码的光线,交由晶片运算进行解码后,产生一张具有深度的图像。

Light Coding技术说到底还是结构光技术。

但与传统的结构光方法不同的是,他的光源打出去的并不是一副周期性变化的二维的图像编码,而是一个具有三维纵深的“体编码”。

这种光源叫做激光散斑(laser speckle),是当激光照射到粗糙物体或穿透毛玻璃后形成的随机衍射斑点。

这些散斑具有高度的随机性,而且会随着距离的不同变换图案,空间中任何两处的散斑都会是不同的图案,等于是将整个空间加上了标记,所以任何物体进入该空间以及移动时,都可确切记录物体的位置。

光源标定:测量前对原始空间的散斑图案做记录,先做一次光源的标定,方法是每隔一段距离,取一个参考平面,把参考平面上的散斑图案记录下来;假设Kinect规定的用户活动范围是距离摄像头1~4m,每隔10cm取一个参考平面,标定后保存了30幅散斑图像;测量时拍摄一幅待测场景的散斑图案,将这幅图像和保存的30幅参考图像依次做互相关运算,得到30幅相关度图像;空间中有物体存在的位置,在相关度图像上就会显示出峰值。

把这些峰值一层层叠在一起,经过插值运算,即可得到整个场景的三维形状。

Kinect就是以红外线发出人眼看不见的class 1镭射光,透过镜头前的diffuser(光栅)将镭射光均匀分布投射在测量空间中,再透过红外线CMOS传感器记录下空间中的每个散斑,结合原始散斑图案,再透过晶片计算成具有3D深度的图像。

传感器是通过黑白光谱的方式来感知环境的,纯黑代表无穷远,纯白代表无穷近,黑白间的灰色对应着物体到传感器的物理距离,如图2。

图2 Kinect激光点阵Kinect 的主要技术参数如图3:检测距离0.5m~ 7m,检测角度水平方向57◦,竖直方向43◦,采集帧率为30 帧/秒,误差在4m 远处为1.4%.图3 Kinect相关参数3 KinectFusion 算法KinectFusion 算法通过将Kinect 采集到的深度数据进行匹配定位与融合来实现3D 场景重构.它的算法流程如图4[4] 所示,主要由4 个部分组成:a) 深度数据处理,是将传感器原始的深度数据转换成3D 点云,得到点云中顶点的3 维坐标和法向量;b) 相机跟踪,是将当前帧3D 点云和由现有模型生成的预测的3D 点云进行ICP 匹配,计算得到当前帧相机的位姿;c) 点云融合,是根据所计算出的当前相机位姿,使用TSDF 点云融合算法[9]将当前帧的3D 点云融合到现有模型中;d) 场景渲染,是使用光线跟踪的方法,根据现有模型和当前相机位姿预测出当前相机观察到的环境点云,一方面用于反馈给用户,另一方面提供给b) 进行ICP 匹配.图4 KinectFusion 算法流程图4、KinectFusion 对原始深度图的处理由于获得的原始深度图像据有较多的噪点,不利于基于ICP算法的相机姿态追踪。

所以需要对原始深度图做去噪处理以增加配准的准确度和速度。

双边滤波是比较理想的滤波方法。

双边滤波是一种保边缘的光滑图象处理技术,它可以追溯到1995 年Aurich和Weule [9]非线性高斯滤波器的工作,他后来被Smith 和Brady[10]重新发现,并且作为其SUSAN 框架的一部分,Tomasi 和Manduchi[11]给出了它目前的名称。

自那时以来,双边滤波的使用迅速发展和普及,现在在图像处理中的应用已经随处可见,它已被用于多中应用领域,在理论和应用方面都有了很大的发展。

理论上,双边滤波和robust statistics, PDEs, Local mode filtering 一样,是一种各向异性扩散方法[12],它是几种框架连接的桥梁。

双边滤波的两种加速算法,一种是分段线性近似[13],即将双边滤波线性化并用下采样来加速,这种算法极大地降低了运算时间,但是并没有理论基础,近似的精度也不清楚。

另一种是将双边滤波表示成较高维空间的卷积[14],而卷积计算可以进行下采样,并不明显影响结果的准确性。

这种近似算法实现了几个数量级的加速。

再有就是双边滤波器两个参数的选取,可以自适应地根据噪声选取参数,能得到最好的滤波效果,而且省去了以往实验多次来选择参数的麻烦。

双边滤波的广泛应用是因为它有以下几个特征:1、表述简单:每个像素被相邻像素的加权平均所取代。

这个方面是重要的,因为它更容易获得有关其行为的直觉,更容易适应特定要求的应用并实现它。

2、效果完全取决于两个参数,这两个参数表示保持图像特征的大小和对比度。

3、可用于非迭代的方式。

这些参数不具有累积性的迭代,这使得参数易于设置。

4、可以以一种交互的速度计算大的图象,这要基于有效的计数算法,如果图形硬件是可用的,甚至可以实时计算[15]。

5 KinectFusion 中的ICP 定位方法ICP 定位环节将当前帧3D 点云和预测得到的3D 点云进行匹配时,由以下步骤来实现:A) 利用投影法来确定对应点关系.用一个2 维ICP 来表示其过程,如图5 所示.图5(a) 中黑色曲线是环境中的物体,相机在连续两个位置分别对其进行采样和预测,O k 和O k−1 分别是当前相机和前一帧相机的坐标系原点.首先将k 和k−1 时刻的两个点云都转换到当前帧k 的相机坐标系下,然后将两个点云通过相机中心O k 向像平面上投影,两个点云中具有相同的像平面上的投影点的点即为对应点,如图5(b) 中的P1 和P2 两点.算法中还通过对应点间的欧氏距离和法方向夹角来对对应点进行筛选.图5 2D 的ICP 例子示意图B) 利用点到平面的误差机制来衡量当前相对位姿的准确度.如图5(b) 所示,在2 维情况下,P1 和P2 间的误差为P1 到P2 点的切线的距离d.所有对应点间的总误差公式如下:其中Ω(u) ∅表示当前点云中的一个点u存在对应点,T g,k 是一个4×4 的位姿矩阵,表示当前帧相机在世界坐标系下的绝对位姿,世界坐标系定义为第一帧的相机坐标系,k(u) 为当前帧中u点的顶点坐标,是u点在预测帧中对应点的顶点坐标,为对点的法向量.C) 通过优化式(1) 得到最佳的相对位姿T g,k.采用线性化的方法将优化问题转化为一个最小二乘优化,通过计算一个线性方程组如式(2) 来计算最优解x.其中,,,D) 迭代A) ~B)10 次.6 KinectFusion 中的TSDF 点云融合算法TSDF 算法用一个立方体栅格来表示3 维空间(如图4步骤(c)),立方体中每一个栅格存放的是该栅格到物体模型表面的距离,同时使用正负来表示在表面被遮挡一侧和可见一侧,而过零点就是表面上的点,如图6 中左侧的立方体中的一个物体模型.当有新的数据需要加入模型时会按照式(3)和(4),进行融合处理,式中i+1 表示当前点云对应的栅格距离值,i 表示原有的栅格距离值,同一个栅格的距离值通过一个权重W 来进行融合,新的权重为两个权重之和,示意图如图6 中右侧.在KinectFusion 算法中当前点云的权重为1.图6 基于空间体的点云融合这种方法是具有最小二乘优化性质的,同时使用了权重值来进行融合,对传感器的一些噪声具有一定的抑制作用{1}。

相关主题