CN107833270B - 基于深度相机的实时物体三维重建方法 - Google Patents

基于深度相机的实时物体三维重建方法 Download PDF

Info

Publication number
CN107833270B
CN107833270B CN201710893987.8A CN201710893987A CN107833270B CN 107833270 B CN107833270 B CN 107833270B CN 201710893987 A CN201710893987 A CN 201710893987A CN 107833270 B CN107833270 B CN 107833270B
Authority
CN
China
Prior art keywords
tsdf
value
depth
frame
camera
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201710893987.8A
Other languages
English (en)
Other versions
CN107833270A (zh
Inventor
曹彦鹏
许宝杯
曹衍龙
杨将新
何泽威
付贵忠
官大衍
叶张昱
董亚飞
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Zhejiang University ZJU
Original Assignee
Zhejiang University ZJU
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Zhejiang University ZJU filed Critical Zhejiang University ZJU
Priority to CN201710893987.8A priority Critical patent/CN107833270B/zh
Publication of CN107833270A publication Critical patent/CN107833270A/zh
Application granted granted Critical
Publication of CN107833270B publication Critical patent/CN107833270B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T5/00Image enhancement or restoration
    • G06T5/50Image enhancement or restoration by the use of more than one image, e.g. averaging, subtraction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/10Segmentation; Edge detection
    • G06T7/136Segmentation; Edge detection involving thresholding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/30Determination of transform parameters for the alignment of images, i.e. image registration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/10Image acquisition modality
    • G06T2207/10028Range image; Depth image; 3D point clouds
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20212Image combination
    • G06T2207/20221Image fusion; Image merging

Abstract

基于深度相机的实时物体三维重建方法,包括从深度相机中按顺序获取一帧深度图像作为当前帧并进行预处理;通过质心ICP算法估算出的当前帧和前一帧的相对位姿,用前一帧的精确位姿与当前帧和前一帧的相对位姿计算得到当前帧相机的精确位姿;利用相机的精确位姿将当前帧数据融合到局部TSDF中;从局部TSDF中获取步骤3中融合于局部TSDF的点云,以该点云作为前一帧的点云,或者将局部TSDF与全局TSDF进行匹配融合,并将局部TSDF初始化。本发明具有能够避免ICP匹配算法失效,降低累积误差提高模型精度的适用于重建指定物体或人的优点。

Description

基于深度相机的实时物体三维重建方法
技术领域
本发明涉及三维成像领域,特别是一种能够实时地对物体或人体进行三维重建的方法。
背景技术
三维重建技术一直是计算机图形学和计算机视觉领域的热点课题。三维重建就是从输入数据中建立3D模型。随着各种面向普通消费者的深度相机的出现,基于深度相机的三维扫描和重建技术得到了飞速发展。对于现实场景中的点,深度相机扫描得到的每一帧数据不仅包括了场景中的点的彩色RGB图像,还包括每个点到深度相机所在的垂直平面的距离值。这个距离值成为深度值(depth),这些深度值共同组成了这一帧的深度图像。
深度图像可以看做是一幅灰度图像,图像中的每一个点的灰度值代表了这个点在现实中的位置到相机所在垂直平面的真实距离距离。RGB图像中的每个点都会对应一个在相机的局部坐标系中的三维点。因此,深度相机的每一帧的深度图像相当于一个在相机的局部三维坐标系中的点云模型。基于深度相机的三维重建技术所使用的输入数据是RGB图像和深度图像,因此,这类技术也被称为基于RGBD数据的三维重建技术(D表示深度值,Depth)。
基于深度相机的三维重建的核心问题有:1、深度相机的数据量非常庞大,如何在重建过程中处理庞大的数据。并且,深度相机所得到的深度数据是存在误差的,即使相机位置固定,现实场景中的点在不同帧中的深度值也会有所区别,那么如何估计点的最终位置?2、相机位置的估计,即如何在位置环境中通过获取周围的环境数据来确定自己所在的位置?
Newcombe等人于2011年发表的“KinectFusion:real-time 3D reconstructionand interaction using a moving depth camera”提出了三维重建的经典方法KinectFusion,使用迭代最近点(Iterative closest point,ICP)方法来解决上述核心问题。KinectFusion提出在世界坐标系中定义一个立方体,并把该立方体按照一定的分辨率切割成小立方体,使用截断有符号距离函数(truncated signed distance function,TSDF)的方法来更新每个小网格中的一个数值,该数值代表该网格到模型表面的最近距离(TSDF值)。对于每个网格,在每一帧都会更新并记录TSDF值,通过TSDF值还原出重建模型。通过不断更新并“融合”TSDF值,来接近所需要的真实值。KinectFusion方法定义的立方体中的所有的网格中的TSDF都需要记录,即便这个网格在显示场景中根本没有点,这就造成极大的内存空间的浪费,并限制了扫描范围。
Thomas Whelan等人在2015年发表Kintinuous“Robust Real-Time VisualOdometry for Dense RGB-D Mapping”是在KinectFusion的基础上加入移动TSDF的技巧从而达到大范围场景重建,并且提出ICP+RGBD匹配算法提高点云匹配精度,加入回环检测从而平摊累积误差,提高估计的相机位姿精度。
但是无论是KinectFusion还是Kintinuous,都存在以下缺点:
1、未将物体或人从场景中分割出来,在重建对象为场景中的物体或人时,需要在重建后的三维模型中分割对象,分割的复杂度高,因此,不适合用于重建对象为场景中的物体或人的情况。
2、由于相机拍照的帧率是固定的,当扫描速度较快时,前后两帧相机位姿相差较大,导致KinectFusion以及Kintinuous使用的ICP+RGBD匹配算法匹配失败。
3、累积误差导致三维物体模型精度下降,虽然Kintinuous中已经加入回环检测并且对于场景重建时能够有效的检测出回环并进行回环优化从而修正模型,但是在人体扫描过程中此种回环检测方式经常会出现错误的回环或者无回环。
发明内容
本发明的目的在于提供一种能够避免ICP匹配算法失效,降低累积误差提高模型精度的适用于重建指定物体或人的基于深度相机的实时物体三维重建方法。
基于深度相机的实时物体三维重建方法,包括以下步骤:
步骤1:从深度相机中按顺序获取一帧深度图像作为当前帧,对当前帧进行预处理,预处理包括在深度图像中将对象从场景中分割出来、将分割出来的对象数据去除边界噪声,将去噪后的对象数据生成有序点云和用PCA(主成分分析)计算点云法向量;
步骤2:判断当前帧是否第一帧,若是,则获取相机的物理位姿作为相机的精确位姿,进入步骤3;若否,则通过质心ICP算法估算出的当前帧和前一帧的相对位姿,用前一帧的精确位姿与当前帧和前一帧的相对位姿计算得到当前帧相机的精确位姿,进入步骤3;
步骤3:利用相机的精确位姿将当前帧数据融合到局部TSDF中;
步骤4:判断是否有结束指令,若否,则从局部TSDF中获取步骤3中融合于局部TSDF的点云,以该点云作为前一帧的点云,重复步骤1-4;
若是,将局部TSDF与全局TSDF进行匹配融合,并将局部TSDF初始化;判断是否有程序结束指令,若是,从全局TSDF提取点云,并且使用贪婪三角化获得物体模型;若否,则从全局TSDF中获取在上一帧相机位姿下获取前一帧的点云,重复步骤1-步骤4。
进一步,步骤3中的结束指令含程序结束指令和局部TSDF融合所需帧数到达预定数量是发出的指令。
进一步,步骤2中,估算出的当前帧和前一帧的相对位姿时先通过前一帧点云的质心和当前帧点云的质心获得相机初始平移量,再使用ICP算法获取前一帧和当前帧的相对位姿。
进一步,步骤1中,在深度图像中将对象从场景中分割出来的方法是:
步骤1-1-1:压缩当前帧深度图像的深度图数据,压缩后的深度图数据的每一个数值代表一个区域的深度值;
步骤1-1-2:计算压缩后的深度图的深度直方图,取前N个峰值的深度值;判断这N个峰值的深度值是否在物体的深度值范围内,物体的深度值范围人为设定,若否,则放弃当前帧深度图像;若有多个峰值的深度值在物体的深度值范围内、则将前N个峰值的最大值作为输出值,若只有一个峰值的深度值在物体的深度值范围内、则将该峰值的深度值作为输出值,记为DH单位为m;
步骤1-1-3:将DH-0.2设为下阈值,DH+0.2设为上阈值,获得物体深度图Do
Figure BDA0001421764610000051
表示在像素点(u,v)上的原始深度值。
进一步,步骤1-1中的压缩公式为:
Figure BDA0001421764610000052
其中,
Figure BDA0001421764610000058
为向下取整函数,(u,v)表示像素点坐标,D(u,v)表示在像素点(u,v)上的原始深度值,Ds(u,v)表示在像素点(u,v)压缩之后的深度值。
进一步,步骤1中,将分割出来的对象数据去除边界噪声的方法为:采用7X7的窗口在整幅深度图像上进行滑窗,计算深度值与窗口中心的深度值的差值大于200mm的像素个数,像素个数记为count,若count>5时,就认为当前窗口中心是属于边界处或者噪点。
进一步,步骤1中,生成点云的方法为:
步骤1-3-1:有序点云有相机的针孔模型获得,相机的针孔模型为:
Figure BDA0001421764610000053
得到xc=zc(u-u0)/fx,yc=zc(v-v0)/fy,zc=D(u,v),
Figure BDA0001421764610000054
为有序点云在第i帧数据在(u,v)位置上的三维坐标;
步骤1-3-2:对于点云中的每个点
Figure BDA0001421764610000055
用N×N的窗口以点
Figure BDA0001421764610000056
为中心获取与点
Figure BDA0001421764610000057
最相近的k个相邻点,为这k个相邻点计算一个最小二乘意义上的局部平面Q,
Figure BDA0001421764610000061
其中
Figure BDA0001421764610000062
为平面Q的法向量,d为平面Q到坐标原点的距离;
步骤1-3-3:获得平面Q上的质心
Figure BDA0001421764610000063
对半正定的协方差矩阵M进行特征值分解,将对应于M最小特征值的特征向量作为点
Figure BDA0001421764610000064
的法向量;
Figure BDA0001421764610000065
其中,
Figure BDA0001421764610000066
为点
Figure BDA0001421764610000067
周围的任意一点,
Figure BDA0001421764610000068
的坐标由步骤1-3-1计算获得。
进一步,步骤2中,质心ICP算法为:
步骤2-1:计算当前帧和前一帧之间相机的平移量的初始值:
Figure BDA0001421764610000069
其中,
Figure BDA00014217646100000610
为第k-1帧点云的质心,
Figure BDA00014217646100000611
为第k帧点云的质心,(tx0,ty0,tz0)T为第k帧与第k-1帧相机的相对平移量的初始值;
步骤2-2:第k帧相机的姿态表示为:
Figure BDA00014217646100000612
其中,SE3:={R,t|R∈SO3,t∈R3},
步骤2-3:使用ICP算法估算出第k帧与第k-1帧相机的相对位姿。
进一步,步骤3中,将当前帧数据融合到局部TSDF中的方法为:
步骤3-1:构造表示指定尺寸的三维空间的立方体,并将该立方体细分为体素(即三维体素栅格),每个体素包含TSDF值
Figure BDA00014217646100000613
和权重值
Figure BDA00014217646100000614
Figure BDA00014217646100000615
为当前体素的坐标值;
每个体素通过TSDF(截断符号距离函数)存储该体素到真实场景表面的截断距离;体素位于真实场景表面之前时,TSDF值为正;体素被真实场景表面遮挡时,TSDF值为负;体素在真实场景表面上的点时,TSDF值为零;
步骤3-2:TSDF值
Figure BDA0001421764610000071
为:
Figure BDA0001421764610000072
其中,
Figure BDA0001421764610000073
其中:
Figure BDA0001421764610000074
表示点
Figure BDA0001421764610000075
在第k-1帧的权重值,
Figure BDA0001421764610000076
为在像素坐标
Figure BDA0001421764610000077
下第k帧深度值,Dk使用步骤1获得去除边界噪点后的物体深度图,λ表示深度值为1时、光线方向上点与相机光心之间的距离,π(·)表示将点投影到像素平面的函数,μ表示截断距离;
权重值
Figure BDA0001421764610000078
为:
Figure BDA0001421764610000079
其中:Wη表示权重值的最大值,
Figure BDA00014217646100000710
进一步,步骤4中局部TSDF与全局TSDF进行匹配融合的方法为:
步骤4-1:提取局部TSDF中零表面的点云,记为L;
步骤4-2:最小化点云L中的点到全局TSDF零表面距离的平方来获得局部TSDF与全局TSDF的相对位姿;
Figure BDA0001421764610000081
其中,n表示
Figure BDA0001421764610000082
的总点数,
Figure BDA0001421764610000083
表示
Figure BDA0001421764610000084
中第i个点,
Figure BDA0001421764610000085
表示将
Figure BDA0001421764610000086
映射到全局TSDF坐标上,
Figure BDA0001421764610000087
表示在全局TSDF的坐标
Figure BDA0001421764610000088
上的TSDF值,Voxel_x,Voxel_y,Voxel_z分别表示一个体素在x,y,z方向上所占据的空间大小,Volumeminx,Volumeminy,Volumeminz分别表示全局TSDF在x,y,z方向上的最小值,ξ=(β,γ,α,tx,ty,tz)T∈R6表示局部TSDF与全局TSDF之间的相对位姿;
步骤4-3:将局部TSDF的每个体素
Figure BDA0001421764610000089
转换为
Figure BDA00014217646100000810
Figure BDA00014217646100000811
步骤4-3:使用
Figure BDA00014217646100000812
Figure BDA00014217646100000813
转移到全局坐标系下,再反映射到全局TSDF空间上得到
Figure BDA00014217646100000814
步骤4-4:融合公式为:
Figure BDA00014217646100000815
其中Wη表示权重值的最大值,
Figure BDA00014217646100000816
表示在
Figure BDA00014217646100000817
位置上的全局的TSDF值,
Figure BDA00014217646100000818
表示在
Figure BDA00014217646100000819
位置上的全局的权重值,
Figure BDA00014217646100000820
表示在
Figure BDA00014217646100000821
位置上的全局的TSDF值,
Figure BDA00014217646100000822
表示在
Figure BDA00014217646100000823
位置上的全局的权重值。
本发明的技术构思是:再设置一个局部TSDF和一个全局TSDF,实时获取深度相机的深度图像,将每N帧组深度图像经预处理后匹配融合到局部TSDF中,N帧深度图像匹配融合形成的局部TSDF已去除噪点且信息丰富。再将局部TSDF匹配融合到全局TSDF后,将局部TSDF初始化,再将下一组N帧深度图像的融合形成局部TSDF中。在形成局部TSDF时即对每一帧深度图像进行了一次降噪和匹配,在将局部TSDF融合到全局TSDF中时又进行了一次匹配,因此本发明与直接将每帧深度图像融入全局TSDF相比具有更高的精度。
本发明的优点在于:
1.先将物体进行分割后再重建,减少后期将物体与周围环境分离的复杂操作,并且对后期的跟踪相机的位姿也有一定的辅助作用;本文提出一种自适应阈值分割法来提取物体,利用物体在前景部分及深度值的光滑连续性,使用深度直方图选取阈值,分割方法简单、速度快等优势,并且对扫描的方式不苛刻。
2.本文利用前后两帧点云之间的质心位置相近,从而得到相机平移量的初始值,再进行ICP匹配算法得到相机的位姿。此方法能够解决扫描速度快时,扫描过程中采集数据平台出现卡顿等问题,使得前后两帧之间的相机平移量较大从而导致ICP算法匹配失效。
3.本文在发现frame to modal的匹配方式在帧数较小且相机位姿变化不大的情形下能够得到较为精确的物体模型,使用两个TSDF容器,一个用来存储全局TSDF(即全局TSDF),另一个用来作为局部重建的缓存器(即全局TSDF),本文采用每隔50帧将局部缓存器中的TSDF与全局TSDF进行匹配融合,再将局部缓存器中的TSDF进行初始化。因此能够实现:1.在使用frame to modal的匹配方式在指定数量的帧内能够重建出精确的物体模型;2.在进行TSDF融合的过程中有均值除噪的效果,减少噪声对匹配算法精度的影响;3.此方法利用指定数量帧数据再进行匹配,具有更多的信息,有助于提高匹配的精确度。
附图说明
图1是算法流程图。
图2是步骤1的预处理过程图。
图3是提取TSDF为0的体素的示意图。
具体实施方式
物体三维重建算法总体流程如下:
步骤1.从深度相机中获取深度图,经过预处理中的物体分割、去边界除噪点和生成点云及利用PCA计算点云法向量得到去边界除噪点后的物体深度图和物体点云数据及法向量。
步骤2.利用前后两帧点云的质心得到相机平移量的初始值,再利用ICP算法估计出相机的精确姿态。
步骤3.利用估计出的相机精确位姿将该帧数据融合到局部TSDF中。
步骤4.判断是否有结束指令,结束指令指的是程序结束指令和局部TSDF融合所需帧数到达预定数量是发出的指令;如果不成立,利用Ray casting算法从局部TSDF中预测上一相机位姿下的点云,作为下一次第2步骤的输入;否则将局部TSDF与全局TSDF进行匹配融合,并将局部TSDF初始化,再判断是否有程序结束指令,如果成立,从全局TSDF提取点云,并且使用贪婪三角化获得物体模型,否则利用Ray casting算法从全局TSDF中预测上一相机位姿下的点云,作为下一次第2步骤的输入。
步骤1中,对深度图像的预处理过程如下:
1)物体分割
在扫描过程中,物体处于相机视场内的前景部分,所以本文采用阈值分割法来分割出物体。由于在扫描过程中,无法保证让物体离相机的深度值在一定值上,所以若阈值为定值时,容易导致分割不稳定。本文提出一种自适应阈值分割法来提取物体。
首先,将深度图0~8000mm(由于Kinect最高只能测8000mm的距离)数据压缩到0~255之间,使用
Figure BDA0001421764610000111
进行数据压缩,式子中
Figure BDA0001421764610000113
为向下取整函数,(u,v)表示像素点坐标,D(u,v)表示在像素点(u,v)上的原始深度值,Ds(u,v)表示在像素点(u,v)压缩之后的深度值;接着,计算压缩后的深度图Ds的深度直方图,取出前三个峰值的深度值,因为在扫描过程中,知道物体离深度相机的深度值为0.5m~1.5m,所以本文查看前三个峰值的深度值是否在此范围内,如果有多个峰值在此范围内,我们将这几个峰值的最大值作为此步骤的输出值,记为DH单位为m,如果没有峰值在此范围内,我们放弃此深度数据;最后,将DH-0.2设为下阈值,DH+0.2设为上阈值。
Figure BDA0001421764610000112
式中Do为物体深度图。
2)去边界除噪点
由于Kinect的扫描精度较低,尤其是在边界处,本文将噪声较大的点进行滤除。采用7X7的窗口在整副图像上进行滑窗,计算深度值与窗口中心的深度值的差值大于200mm的像素个数count,若count>5时,就认为窗口的中心点是属于边界处或者噪点。
3)生成点云并计算法向量
根据相机的针孔模型:
Figure BDA0001421764610000121
得到xc=zc(u-u0)/fx,yc=zc(v-v0)/fy,zc=D(u,v),
Figure BDA0001421764610000122
式子中
Figure BDA0001421764610000123
为有序点云在第i帧数据在(u,v)位置上的三维坐标。
虽然上一步骤去除了噪点,但是输出的点云还是存在着微小的噪声,若是使用相邻的顶点计算法向量:
Figure BDA0001421764610000124
Figure BDA0001421764610000125
再进行归一化
Figure BDA0001421764610000126
计算出的法向量对噪声的敏感度高,所以本文使用PCA(主成分分析)方法计算法向量。
假设点云的采样平面是处处光滑的,因此,任何点的局部邻域都可以用平面进行很好的拟合;为此,对于点云中的每个点
Figure BDA0001421764610000127
获取与其最相近的k个相邻点,由于本文所提供的点云属于有序点云,所以寻找点的相邻点比较简单,本文选取的窗口为7x7,然后为这些点计算一个最小二乘意义上的局部平面Q。此平面可以表述如下:
Figure BDA0001421764610000131
其中
Figure BDA0001421764610000132
为平面P的法向量,d为平面P到坐标原点的距离。
通过简单的运算可知,得到平面q上的质心
Figure BDA0001421764610000133
同时,法向量
Figure BDA0001421764610000134
需要满足
Figure BDA0001421764610000135
因此问题可以转化为对下述式子中半正定的协方差矩阵M进行特征值分解,对应于M最小特征值的特征向量可被当做v的法向量。
Figure BDA0001421764610000136
1.跟踪相机的位姿
本文通过刚体变换矩阵来表示第k帧6DOF相机姿态:
Figure BDA0001421764610000137
式中SE3:={R,t|R∈SO3,t∈R3},此刚体变换矩阵表示第k帧相机坐标系到全局坐标系下的映射关系,例如
Figure BDA0001421764610000138
表示在第k帧相机坐标系下的点,通过
Figure BDA0001421764610000139
转换到全局坐标系下。
要将第k帧深度数据融合到TSDF中,我们必须要知道第k帧深度相机相对于全局坐标系的姿态Tg,k。为了减小累积误差对重建模型精度的影响,本文使用frame-to-modal的匹配方式进行跟踪相机位姿,利用Ray casting算法从TSDF中获得上一帧相机姿态下的点云与法向量。本文使用ICP(最邻近点迭代)算法估计相机姿态,最小化当前帧中的顶点到前一帧中表面的距离误差:
Figure BDA0001421764610000141
式中
Figure BDA0001421764610000142
表示第k-1帧第i点在全局坐标系下的坐标,
Figure BDA0001421764610000143
表示第k帧第i点在第k帧相机坐标系下的坐标,
Figure BDA0001421764610000144
Figure BDA0001421764610000145
为匹配点,
Figure BDA0001421764610000146
表示第k-1帧第i点在全局坐标系下的法向量,Tg,k-1表示第k-1帧相机姿态,
Figure BDA0001421764610000147
表示第k帧与第k-1帧相机的相对姿态,ξ=(β,γ,α,tx,ty,tz)T∈R6为第k帧与第k-1帧相机的相对旋转矢量和平移量,是需要求解的参数,假设相邻两帧之间转动的角度较小,我们将上述能量函数进行线性化,得到:
Figure BDA0001421764610000148
在进行ICP算法之前先寻找匹配点,即寻找最邻近点。寻找匹配点的方式:由于本文使用的点云都是有序点云,所以寻找最邻近点的方式为将当前帧的点云转换到上一帧坐标系下,并将其投影到图像坐标系下得到相对应的像素坐标,上一帧点云此像素坐标的点就是此点的对应点,计算两点之间的距离及法向量的夹角,若是超过阈值则不认为是匹配点,否则认为是匹配点。
试验发现当扫描速度较快时,ICP算法匹配失败。经测试发现当我们扫描速度较快时,相邻两帧之间相机的转动量增幅较小,平移量增幅较大。当两帧之间相机平移量较大时,一开始得到的匹配点对较少,容易掉入局部最优或者直接匹配失效。并且发现相邻两帧之间匹配之后的质心基本在同一个位置上。所以本文利用这一特性,得到平移量的初始值。
Figure BDA0001421764610000151
式中
Figure BDA0001421764610000152
为第k-1帧点云的质心,
Figure BDA0001421764610000153
为第k帧点云的质心,(tx0,ty0,tz0)T为第k帧与第k-1帧相机的相对平移量的初始值。接着再进行上述的ICP算法计算出第k帧与第k-1帧相机的相对姿态。
2.更新TSDF
本文通过构造一个立方体来表示特定尺寸的三维空间。而后对该立方体进行细分为小的三维体素栅格(5123),每个体素通过截断符号距离函数(TSDF)来存储其到真实场景表面的相对距离。如果体素位于表面之前,则符号距离函数值为正,若在表面遮挡的一侧,那么函数值为负,而符号函数值的过零点(zero-crossing)即为真实场景表面上的点。通过以上操作,深度数据帧对应的三维点云即可通过符号距离函数计算映射到立方体体素中。每个体素上包含TSDF值
Figure BDA0001421764610000154
和权重值
Figure BDA0001421764610000155
Figure BDA0001421764610000156
为该体素在全局坐标系下的坐标值。
Figure BDA0001421764610000161
Figure BDA0001421764610000162
Figure BDA0001421764610000163
Figure BDA0001421764610000164
式中
Figure BDA0001421764610000165
为在像素坐标
Figure BDA0001421764610000166
下第k帧深度值,Dk使用第一步骤中去边界除噪点后得到的物体深度图,λ表示深度值为1时,光线方向上点与相机光心之间的距离,π(·)表示将点投影到像素平面函数,μ表示截断距离,本文设置为0.03m。本文设
Figure BDA0001421764610000167
利用下列公式更新TSDF值
Figure BDA0001421764610000168
和权重值
Figure BDA0001421764610000169
Figure BDA00014217646100001610
Figure BDA00014217646100001611
式中Wη表示权重值的最大值。
3.局部TSDF与全局TSDF匹配融合
匹配:
首先,提取局部TSDF中零表面的点。在体素(x,y,z)((x,y,z)为该体素在局部坐标系下的坐标)处,检查图中三条红线上是否存在TSDF为0的点,即(x,y,z)与(x+1,y,z),(x,y,z)与(x,y+1,z)和(x,y,z)与(x,y,z+1)之间。首先,检查在体素(x,y,z)上tsdf(x,y,z)=1是否成立,如果成立,说明在这三条边上不可能存在TSDF为0的点;其次,以(x,y,z)与(x+1,y,z)这条边为例,检查tsdf(x,y,z)tsdf(x+1,y,z)≤0是否成立,如果成立,则在这条边上存在着TSDF为0的点;最后利用线性插值的方式将边上TSDF为0的点提取出来:
Figure BDA0001421764610000171
y′=y
z′=z
式子中(x′,y′,z′)为在(x,y,z)与(x+1,y,z)这条边上的TSDF为0的点,如图3所示。
通过上述方法提取出局部TSDF中零表面的点云,记为L。因为我们知道L中的点都是在局部TSDF零表面上,所以本文通过匹配L与全局TSDF得到局部TSDF与全局TSDF的相对位姿。本文通过最小化L中的点到全局TSDF零表面距离的平方来获得局部TSDF与全局TSDF的相对位姿。
Figure BDA0001421764610000172
Figure BDA0001421764610000173
式子中n表示L的总点数,
Figure BDA0001421764610000174
表示将
Figure BDA0001421764610000175
映射到TSDF坐标上,
Figure BDA0001421764610000176
表示在位置
Figure BDA0001421764610000177
上的TSDF值,Vosel_x,Vosel_y,Vosel_z分别表示一个体素在x,y,z方向上所占据的空间大小,Volumeminx,Volumeminy,Volumeminz分别表示TSDF在x,y,z方向上的最小值,ξ=(β,γ,α,tx,ty,tz)T∈R6表示局部TSDF与全局TSDF之间的相对位姿。
本文利用高斯-牛顿法求解上述最优化问题。假设局部TSDF与全局TSDF之间的相对位姿较小,化简得到:
Figure BDA0001421764610000181
Figure BDA0001421764610000182
Figure BDA0001421764610000183
式中
Figure BDA0001421764610000184
表示全局TSDF在x,y,z方向上的梯度,为1×3矩阵;
Figure BDA0001421764610000185
表示
Figure BDA0001421764610000186
Figure BDA0001421764610000187
的雅克比矩阵,为3×4矩阵;
Figure BDA0001421764610000188
Figure BDA0001421764610000189
对ξ的雅克比矩阵,为4×6矩阵。通过对能量函数进行求导,得到:
Figure BDA00014217646100001810
式中
Figure BDA00014217646100001811
表示Fg对ξ的雅克比矩阵,为n×6矩阵。
融合:
通过匹配局部TSDF与全局TSDF之后得到两者之间的相对位姿Tl,g。将局部TSDF的每个体素
Figure BDA00014217646100001812
转换成
Figure BDA00014217646100001813
Lx=xVoxel_x+Volumeminx,Ly=yVoxel_y+Volumeminy,Lz=zVoxel_z+Volumeminz。再通过
Figure BDA00014217646100001814
将L转换到全局坐标系下,再反映射到TSDF空间上得到
Figure BDA00014217646100001815
最后利用下述公式进行融合:
Figure BDA0001421764610000191
Figure BDA0001421764610000192
式中Wη表示权重值的最大值,
Figure BDA0001421764610000193
分别表示在
Figure BDA0001421764610000194
位置上的全局的TSDF值和权重值,
Figure BDA0001421764610000195
分别表示在
Figure BDA0001421764610000196
位置上的局部的TSDF值和权重值。

Claims (3)

1.基于深度相机的实时物体三维重建方法,包括以下步骤:
步骤1:从深度相机中按顺序获取一帧深度图像作为当前帧,对当前帧进行预处理,预处理包括在深度图像中将对象从场景中分割出来、将分割出来的对象数据去除边界噪声,将去噪后的对象数据生成有序点云和用PCA计算点云法向量;
在深度图像中将对象从场景中分割出来的方法是:
步骤1-1-1:压缩当前帧深度图像的深度图数据,压缩后的深度图数据的每一个数值代表一个区域的深度值;
步骤1-1-2:计算压缩后的深度图的深度直方图,取前N个峰值的深度值;判断这N个峰值的深度值是否在物体的深度值范围内,物体的深度值范围人为设定,若否,则放弃当前帧深度图像;若有多个峰值的深度值在物体的深度值范围内、则将前N个峰值的最大值作为输出值,若只有一个峰值的深度值在物体的深度值范围内、则将该峰值的深度值作为输出值,记为DH单位为m;
步骤1-1-3:将DH-0.2设为下阈值,DH+0.2设为上阈值,获得物体深度图Do
Figure FDA0002436133560000011
D(u,v)表示在像素点(u,v)上的原始深度值;
步骤1-1中的压缩公式为:
Figure FDA0002436133560000021
其中,
Figure FDA00024361335600000210
为向下取整函数,(u,v)表示像素点坐标,D(u,v)表示在像素点(u,v)上的原始深度值,Ds(u,v)表示在像素点(u,v)压缩之后的深度值;
将分割出来的对象数据去除边界噪声的方法为:采用7X7的窗口在整幅深度图像上进行滑窗,计算深度值与窗口中心的深度值的差值大于200mm的像素个数,像素个数记为count,若count>5时,就认为当前窗口中心是属于边界处或者噪点;
生成点云的方法为:
步骤1-3-1:有序点云有相机的针孔模型获得,相机的针孔模型为:
Figure FDA0002436133560000022
得到xc=zc(u-u0)/fx,yc=zx(v-v0)/fy,zc=D(u,v),
Figure FDA0002436133560000023
Figure FDA0002436133560000024
为有序点云在第i帧数据在(u,v)位置上的三维坐标;
步骤1-3-2:对于点云中的每个点
Figure FDA0002436133560000025
用N×N的窗口以点
Figure FDA0002436133560000026
为中心获取与点
Figure FDA0002436133560000027
最相近的k个相邻点,为这k个相邻点计算一个最小二乘意义上的局部平面Q,
Figure FDA0002436133560000028
其中
Figure FDA0002436133560000029
为平面Q的法向量,d为平面Q到坐标原点的距离;
步骤1-3-3:获得平面Q上的质心
Figure FDA0002436133560000031
对半正定的协方差矩阵M进行特征值分解,将对应于M最小特征值的特征向量作为点
Figure FDA0002436133560000032
的法向量;
Figure FDA0002436133560000033
其中,
Figure FDA0002436133560000034
为点
Figure FDA0002436133560000035
周围的任意一点,
Figure FDA0002436133560000036
的坐标由步骤1-3-1计算获得;
步骤2:判断当前帧是否第一帧,若是,则获取相机的物理位姿作为相机的精确位姿,进入步骤3;若否,则通过质心ICP算法估算出的当前帧和前一帧的相对位姿,用前一帧的精确位姿与当前帧和前一帧的相对位姿计算得到当前帧相机的精确位姿,进入步骤3;
则通过质法ICP算法估算出的当前帧和前一帧的相对位姿具体包括:
步骤2-1:计算当前帧和前一帧之间相机的平移量的初始值:
Figure FDA0002436133560000037
其中,
Figure FDA0002436133560000038
为第k-1帧点云的质心,
Figure FDA0002436133560000039
为第k帧点云的质心,(tx0,ty0,tz0)T为第k帧与第k-1帧相机的相对平移量的初始值;
步骤2-2:第k帧相机的姿态表示为:
Figure FDA00024361335600000310
其中,SE3:={R,t|R∈SO3,t∈R3},
步骤2-3:使用ICP算法估算出第k帧与第k-1帧相机的相对位姿;
步骤3:利用相机的精确位姿将当前帧数据融合到局部TSDF中;
将当前帧数据融合到局部TSDF中的方法为:
步骤3-1:构造表示指定尺寸的三维空间的立方体,并将该立方体细分为体素,每个体素包含TSDF值
Figure FDA0002436133560000041
和权重值
Figure FDA0002436133560000042
Figure FDA0002436133560000043
为当前体素的坐标值;
每个体素通过TSDF(截断符号距离函数)存储该体素到真实场景表面的截断距离;体素位于真实场景表面之前时,TSDF值为正;体素被真实场景表面遮挡时,TSDF值为负;体素在真实场景表面上的点时,TSDF值为零;
步骤3-2:TSDF值
Figure FDA0002436133560000044
为:
Figure FDA0002436133560000045
其中,
Figure FDA0002436133560000046
其中:
Figure FDA0002436133560000047
表示点
Figure FDA0002436133560000048
在第k-1帧的权重值,
Figure FDA0002436133560000049
为在像素坐标
Figure FDA00024361335600000410
下第k帧深度值,Dk使用步骤1获得去除边界噪点后的物体深度图,λ表示深度值为1时、光线方向上点与相机光心之间的距离,π(·)表示将点投影到像素平面的函数,μ表示截断距离;
权重值
Figure FDA0002436133560000051
为:
Figure FDA0002436133560000052
其中:Wη表示权重值的最大值,
Figure FDA0002436133560000053
步骤4:判断是否有结束指令,若否,则从局部TSDF中获取步骤3中融合于局部TSDF的点云,以该点云作为前一帧的点云,重复步骤1-4;
若是,将局部TSDF与全局TSDF进行匹配融合,并将局部TSDF初始化;判断是否有程序结束指令,若是,从全局TSDF提取点云,并且使用贪婪三角化获得物体模型;若否,则从全局TSDF中获取在上一帧相机位姿下获取前一帧的点云,重复步骤1-步骤4;
局部TSDF与全局TSDF进行匹配融合的方法为:
步骤4-1:提取局部TSDF中零表面的点云,记为L;
步骤4-2:最小化点云L中的点到全局TSDF零表面距离的平方来获得局部TSDF与全局TSDF的相对位姿;
Figure FDA0002436133560000054
其中,n表示
Figure FDA0002436133560000055
的总点数,
Figure FDA0002436133560000056
表示
Figure FDA0002436133560000057
中第i个点,
Figure FDA0002436133560000058
表示将
Figure FDA0002436133560000059
映射到全局TSDF坐标上,
Figure FDA00024361335600000510
表示在全局TSDF的坐标
Figure FDA00024361335600000511
上的TSDF值,Voxel_x,Voxel_y,Voxel_z分别表示一个体素在x,y,z方向上所占据的空间大小,Volumeminx,Volumeminy,Volumeminz分别表示全局TSDF在x,y,z方向上的最小值,ξ=(β,γ,α,tx,ty,tz)T∈R6表示局部TSDF与全局TSDF之间的相对位姿;
步骤4-3:将局部TSDF的每个体素
Figure FDA0002436133560000061
转换为
Figure FDA0002436133560000062
Figure FDA0002436133560000063
步骤4-3:使用
Figure FDA0002436133560000064
Figure FDA0002436133560000065
转移到全局坐标系下,再反映射到全局TSDF空间上得到
Figure FDA0002436133560000066
步骤4-4:融合公式为:
Figure FDA0002436133560000067
其中Wη表示权重值的最大值,
Figure FDA0002436133560000068
表示在
Figure FDA0002436133560000069
位置上的全局的TSDF值,
Figure FDA00024361335600000610
表示在
Figure FDA00024361335600000611
位置上的全局的权重值,
Figure FDA00024361335600000612
表示在
Figure FDA00024361335600000613
位置上的全局的TSDF值,
Figure FDA00024361335600000614
表示在
Figure FDA00024361335600000615
位置上的全局的权重值。
2.如权利要求1所述的基于深度相机的实时物体三维重建方法,其特征在于:步骤3中的结束指令含程序结束指令和局部TSDF融合所需帧数到达预定数量是发出的指令。
3.如权利要求2所述的基于深度相机的实时物体三维重建方法,其特征在于:步骤2中,估算出的当前帧和前一帧的相对位姿时先通过前一帧点云的质心和当前帧点云的质心获得相机初始平移量,再使用ICP算法获取前一帧和当前帧的相对位姿。
CN201710893987.8A 2017-09-28 2017-09-28 基于深度相机的实时物体三维重建方法 Active CN107833270B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710893987.8A CN107833270B (zh) 2017-09-28 2017-09-28 基于深度相机的实时物体三维重建方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710893987.8A CN107833270B (zh) 2017-09-28 2017-09-28 基于深度相机的实时物体三维重建方法

Publications (2)

Publication Number Publication Date
CN107833270A CN107833270A (zh) 2018-03-23
CN107833270B true CN107833270B (zh) 2020-07-03

Family

ID=61643684

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710893987.8A Active CN107833270B (zh) 2017-09-28 2017-09-28 基于深度相机的实时物体三维重建方法

Country Status (1)

Country Link
CN (1) CN107833270B (zh)

Families Citing this family (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108120473B (zh) * 2017-11-23 2019-07-16 浙江大学 基于深度相机的温室作物三维形态监测装置及监测方法
CN108876897B (zh) * 2018-04-20 2022-10-18 杭州电子科技大学 快速运动下的场景三维重建方法
CN110415328B (zh) * 2018-04-26 2024-03-26 清华大学 三维场景图生成方法、装置和机器人
CN108665537B (zh) * 2018-05-15 2020-09-25 清华大学 联合优化人体体态与外观模型的三维重建方法及系统
CN108734772A (zh) * 2018-05-18 2018-11-02 宁波古德软件技术有限公司 基于Kinect fusion的高精度深度图像获取方法
CN108961390B (zh) * 2018-06-08 2020-05-19 华中科技大学 基于深度图的实时三维重建方法
CN109255801B (zh) * 2018-08-03 2022-02-22 百度在线网络技术(北京)有限公司 视频中三维物体边缘追踪的方法、装置、设备及存储介质
CN109035305B (zh) * 2018-08-10 2021-06-25 中北大学 一种基于rgb-d低视角情况下的室内人体检测与跟踪方法
CN111666935A (zh) * 2019-03-06 2020-09-15 北京京东尚科信息技术有限公司 物品中心定位方法、装置以及物流系统和存储介质
CN109961506B (zh) * 2019-03-13 2023-05-02 东南大学 一种融合改进Census图的局部场景三维重建方法
CN110047144A (zh) * 2019-04-01 2019-07-23 西安电子科技大学 一种基于Kinectv2的完整物体实时三维重建方法
CN111951325B (zh) * 2019-05-14 2024-01-12 虹软科技股份有限公司 位姿跟踪方法、位姿跟踪装置及电子设备
CN112150529B (zh) * 2019-06-28 2023-09-01 北京地平线机器人技术研发有限公司 一种图像特征点的深度信息确定方法及装置
CN110695990A (zh) * 2019-09-23 2020-01-17 江苏理工学院 一种基于Kinect手势识别的机械臂控制系统
CN110706332B (zh) * 2019-09-25 2022-05-17 北京计算机技术及应用研究所 一种基于噪声点云的场景重建方法
CN110874864B (zh) * 2019-10-25 2022-01-14 奥比中光科技集团股份有限公司 获取对象三维模型的方法、装置、电子设备及系统
CN110793441B (zh) * 2019-11-05 2021-07-27 北京华捷艾米科技有限公司 一种高精度物体几何尺寸测量方法及装置
CN112819700B (zh) * 2019-11-15 2023-04-25 阿里巴巴集团控股有限公司 一种点云数据的去噪方法、装置及可读存储介质
CN111292326A (zh) * 2019-11-29 2020-06-16 北京华捷艾米科技有限公司 一种基于3d深度相机的体积测量方法及系统
CN111243093B (zh) * 2020-01-07 2023-05-12 腾讯科技(深圳)有限公司 三维人脸网格的生成方法、装置、设备及存储介质
CN111260713B (zh) * 2020-02-13 2023-04-14 青岛联合创智科技有限公司 一种基于图像的深度计算方法
CN111340960B (zh) * 2020-02-21 2021-06-04 北京五一视界数字孪生科技股份有限公司 图像的建模方法、装置、存储介质和电子设备
CN113362382A (zh) * 2020-03-04 2021-09-07 华为技术有限公司 三维重建方法和三维重建装置
CN113643342B (zh) * 2020-04-27 2023-11-14 北京达佳互联信息技术有限公司 一种图像处理方法、装置、电子设备及存储介质
CN112053435A (zh) * 2020-10-12 2020-12-08 武汉艾格美康复器材有限公司 一种自适应的实时人体三维重建方法
CN113205605B (zh) * 2021-05-29 2022-04-19 浙江大学 一种从深度图像中获取手部三维参数化模型的方法
CN113706707B (zh) * 2021-07-14 2024-03-26 浙江大学 一种基于多源信息融合的人体三维表面温度模型构建方法
CN113436242B (zh) * 2021-07-22 2024-03-29 西安电子科技大学 基于移动深度相机的获取静态物体高精度深度值方法
CN113902847B (zh) * 2021-10-11 2024-04-16 岱悟智能科技(上海)有限公司 基于三维特征约束的单目深度图像位姿优化方法
CN113902846B (zh) * 2021-10-11 2024-04-12 岱悟智能科技(上海)有限公司 一种基于单目深度相机和里程传感器的室内三维建模方法
CN113689503B (zh) * 2021-10-25 2022-02-25 北京市商汤科技开发有限公司 目标对象的姿态检测方法、装置、设备及存储介质
CN113989434A (zh) * 2021-10-27 2022-01-28 聚好看科技股份有限公司 一种人体三维重建方法及设备
CN114700949B (zh) * 2022-04-25 2024-04-09 浙江工业大学 基于体素抓取网络的机械臂灵巧抓取规划方法
CN114812540B (zh) * 2022-06-23 2022-11-29 深圳市普渡科技有限公司 一种建图方法、装置和计算机设备
CN115311424B (zh) * 2022-08-02 2023-04-07 深圳市华赛睿飞智能科技有限公司 一种目标场景的三维重建方法、装置、无人机及存储介质
CN116824070B (zh) * 2023-08-31 2023-11-24 江西求是高等研究院 一种基于深度图像的实时三维重建方法及系统

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103106688A (zh) * 2013-02-20 2013-05-15 北京工业大学 基于双层配准方法的室内三维场景重建方法
CN106803275A (zh) * 2017-02-20 2017-06-06 苏州中科广视文化科技有限公司 基于相机位姿估计和空间采样的2d全景视频生成
CN106803267A (zh) * 2017-01-10 2017-06-06 西安电子科技大学 基于Kinect的室内场景三维重建方法
CN106910242A (zh) * 2017-01-23 2017-06-30 中国科学院自动化研究所 基于深度相机进行室内完整场景三维重建的方法及系统

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103106688A (zh) * 2013-02-20 2013-05-15 北京工业大学 基于双层配准方法的室内三维场景重建方法
CN106803267A (zh) * 2017-01-10 2017-06-06 西安电子科技大学 基于Kinect的室内场景三维重建方法
CN106910242A (zh) * 2017-01-23 2017-06-30 中国科学院自动化研究所 基于深度相机进行室内完整场景三维重建的方法及系统
CN106803275A (zh) * 2017-02-20 2017-06-06 苏州中科广视文化科技有限公司 基于相机位姿估计和空间采样的2d全景视频生成

Also Published As

Publication number Publication date
CN107833270A (zh) 2018-03-23

Similar Documents

Publication Publication Date Title
CN107833270B (zh) 基于深度相机的实时物体三维重建方法
CN109872397B (zh) 一种基于多目立体视觉的飞机零件的三维重建方法
CN109544456B (zh) 基于二维图像和三维点云数据融合的全景环境感知方法
EP3695384B1 (en) Point cloud meshing method, apparatus, device and computer storage media
CN109242873B (zh) 一种基于消费级彩色深度相机对物体进行360度实时三维重建的方法
CN106910242B (zh) 基于深度相机进行室内完整场景三维重建的方法及系统
US8385630B2 (en) System and method of processing stereo images
Mattoccia Stereo vision: Algorithms and applications
Long et al. Adaptive surface normal constraint for depth estimation
US20160321838A1 (en) System for processing a three-dimensional (3d) image and related methods using an icp algorithm
CN108564616A (zh) 快速鲁棒的rgb-d室内三维场景重建方法
CN109448045B (zh) 基于slam的平面多边形物体测量方法及机器可读存储介质
CN109961506A (zh) 一种融合改进Census图的局部场景三维重建方法
CN108776989B (zh) 基于稀疏slam框架的低纹理平面场景重建方法
WO2013029675A1 (en) Method for estimating a camera motion and for determining a three-dimensional model of a real environment
CN111160291B (zh) 基于深度信息与cnn的人眼检测方法
Ummenhofer et al. Point-based 3D reconstruction of thin objects
CN113744337A (zh) 一种融合视觉、imu与声纳的同步定位与建图方法
Xu et al. Survey of 3D modeling using depth cameras
WO2018133119A1 (zh) 基于深度相机进行室内完整场景三维重建的方法及系统
EP3149707A1 (en) Method and apparatus for object tracking and segmentation via background tracking
CN114782628A (zh) 基于深度相机的室内实时三维重建方法
CN112365516B (zh) 一种增强现实中虚实遮挡处理方法
Johannsen et al. Variational Separation of Light Field Layers.
Zhao et al. 3D object tracking via boundary constrained region-based model

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant