基于相机运动和图像明暗的Kinect深度重建算法的制作方法

文档序号:12471988阅读:205来源:国知局

本发明涉及计算机图像处理中的深度重建领域,尤其是指一种基于相机运动和图像明暗的Kinect深度重建算法。



背景技术:

随着近些年一些价格相对低廉的民用深度摄像头,例如Microsoft Kinect和Asus Xtion Pro等的面世和推广,深度信息被广泛用于体感游戏、实时三维重建、增强现实、虚拟现实等各个领域,对深度信息的应用已经成为了新型人机交互方式的发展的重要依托。然而,目前市面上较为流行的民用深度摄像头大多存在深度探测精度不够以及干扰噪声太大的问题,严重地影响了基于深度信息的应用产品的质量。因此,如何获取更为精确的深度信息,对于基于深度信息开发的应用而言具有非常重要的意义。

正因为上述的需求,深度重建算法越来越受到学术界和产业界的关注。目前有一种新颖的办法是结合计算机图形学中三维重建方面的思路辅助深度图进行重建,而本专利也是沿用了这个思路。而目前三维重建方面主要方法有从运动信息中恢复三维场景结构、从图像的明暗情况重构物体形状、光度立体法等。而本专利主要是利用从运动信息中恢复三维场景结构以及从图像的明暗情况重构物体形状两种方法。

从运动信息中恢复三维场景结构的方法主要利用摄像机的运动过程而动态生成和修正三维点云,它的典型代表是基于单目摄像头的SLAM系统。而从图像的明暗情况重构物体形状的方法则是利用图像的明暗情况,建立有效的光照模型并使用优化的方法对其进行求解,进而可以获取目标的表面形状信息。

对上述两种方法的思想加以利用和改进,以及利用深度图与点云二者之间紧密的关系,就可以有效的对深度图进行优化和重建,得到更精确的深度结果。



技术实现要素:

本发明的目的在于克服现有的民用深度摄像头的深度探测精度不够的不足,提供一种基于相机运动和图像明暗的Kinect深度重建算法,该算法不需要对深度摄像头进行物理上的改进,也不需要设计复杂的装置组合,以及不需要传统深度重建方法中经常使用的一般只能局限在实验室条件下而不具备现实应用价值的复杂而条件苛刻的光照标定步骤,相比传统的方法而言,具有更大的现实应用价值和意义。

为实现上述目的,本发明所提供的技术方案为:基于相机运动和图像明暗的Kinect深度重建算法,包括以下步骤:

1)在Kinect深度摄像头和RGB摄像头标定对齐的情况下,通过第三方接口将Kinect采集的数据上传到电脑;

2)从RGB视频序列中恢复三维场景结构和kinect RGB相机的运动轨迹,得到点云和相机运动关系;

3)结合步骤2)中获得的点云和相机运动关系,利用图像的明暗情况信息对图像深度进行重建。

所述步骤2)包括以下步骤:

2.1)在系统初始化的时候读入一张RGB图片并作为关键帧,给关键帧绑定一个深度图,深度图和灰度图有相同的维度,遍历深度图,给每个像素位置赋一个随机值;

2.2)每读取一张RGB图片,都构造如下的代价函数:

其中||·||δ是哈勃算子,rp代表误差,代表误差的方差;

哈勃算子的定义如下:

δ是哈勃算子的参数;

误差函数的定义rp如下:

rp(p,ζji)=Ii(p)-Ij(w(p,Di(p),ζji))

Ii(p)表示当前帧中像素p的位置的灰度值,ζji表示将i坐标下的三维点旋转平移到j坐标下的刚体变换的李代数,Di(p)表示参考帧的深度图中像素p对应的位置的深度值,w(p,Di(p),ζji)表示参考帧i中像素p位置对应的三维点经过旋转平移刚体变换到当前帧中j位置,变换公式如下:

其中X,Y,Z分别表示相机坐标系下的三维点在XYZ三个方向上的坐标;u,v表示像素坐标;fx,fy分别表示X,Y方向上焦距;

方差的定义如下:

其中表示图片灰度的方差,Vi(p)表示参考帧深度图像素点p的方差;

2.3)用高斯牛顿迭代法求解步骤2.2)中代价函数最小时的ζ,得到参考帧和当前帧之间的旋转平移关系;

2.4)对参考帧灰度图上所有点求梯度,选取其中梯度大于门限的点;接着对这些点进行筛选;遍历所有符合要求的点,根据极线集合搜索这些点在当前帧极线上的对应点;并根据单目视觉三维重建几何知识计算点的空间坐标;

2.5)用卡曼滤波器对新得到的深度值与参考帧深度图中的深度值融合。

所述步骤3)包括以下步骤:

3.1)进行当前帧下的深度摄像头采集到的深度图像与单目彩色摄像头采集到的彩色图像的对齐;由于彩色摄像头与深度摄像头之间存在视场范围的差异,所以只有二者视场重叠部分才具有有效的深度值,因此对齐后得到的是不完整的深度图;

3.2)按照深度摄像头中针孔相机的模型,将该不完整的深度图进行三维点云的生成;针孔相机模型简述为:一个空间点的空间坐标[x,y,z]与它在图像中的像素坐标[u,v,d]之间的关系表述为:

z=d/s

x=(u-cx)·z/fx

y=(v-cy)·z/fy

其中,d是深度图中每个像素的深度值,s是深度图的缩放因子,cx与cy是主点的横纵坐标,fx与fy是横坐标方向和纵坐标方向的焦距分量;

利用上述公式对每个像素的像素坐标转换成对应的空间坐标,即可完成深度图到三维点云的转换;

3.3)将单目算法中生成的点云与上述不完整的深度图生成的点云二者使用点对点的迭代最近邻点ICP算法进行配准得到二者之间的旋转矩阵R和平移矩阵T;

3.4)根据上述得到的旋转矩阵和平移矩阵,将单目算法获得的点云转换到不完整的深度图生成的点云的坐标体系下,并将二者拼接成一个大的点云;

3.5)对于深度图中由于视场范围不重叠而形成的深度值无效区域,对每个处于无效区域中的像素,计算其空间位置;若该像素对应的空间点位置正好与大的点云中某点空间位置重合,则直接将该点的z坐标也就是深度值赋予该像素作为其深度值;若该像素对应的空间点并未与点云中的点重合,则计算该空间点与它在大的点云中的相邻点云点的距离之和的平均值,若该值大于某个阈值,则将该值作为该像素值的深度值;

3.6)检测深度图中是否还有未有有效值的像素点;若仍有未有有效值的像素点,则使用联合双边滤波器对深度图进行深度值填补,确保深度图中每个像素点都具有深度值;

3.7)使用关于每个像素点的法线向量为变量的扩展内在图像分解模型函数作为每个像素点的光照模型函数;使用到的扩展内在图像分解模型函数为:

3.8)为图像中的每个像素计算明暗信息;明暗信息函数使用零阶和一阶球谐系数与点云表面法线向量的线性多项式的矩阵形式表示,也就是:

首先计算出每个点的法线向量,然后通过最小化明暗函数与真实光照强度间的差值的目标函数,从而求解出明暗函数的参数向量,从而为每个像素点确定了明暗函数值;

3.9)为图像中的每个像素计算反照率;由于明暗信息函数仅仅考虑到远距离光源和环境光源,因此它是对光照的初步预测,因而为了考虑到镜面反射、阴影以及近光源造成的效果,需要为每个像素引入不同的反照率;

构造最小化目标函数为:

其中,ρ是每个像素的反照率,I是每个像素的光照强度,N是全图迭代操作中当正在操作的像素的一个邻域,ρk是该邻域内的像素点,λρ是参数,而且,

3.10)类似步骤3.9)中的方法,为图像中的每个像素计算由于局部光照差异所导致的光照差异值;

构造最小化目标函数为:

其中,β是每个像素点的光照差异值,βk是全图迭代操作中当正在操作的像素的一个邻域内的像素点;是参数;

3.11)构造明暗模型与实际测量到的光照强度之间的目标函数,并使用改进的深度增强加速算法对该目标函数进行最小化,从而得到优化后的深度图;

首先将每个像素对应的点云上的点的法线表示成深度图的梯度形式,即:

其中,

是深度图的梯度;

然后建立深度优化的目标函数为:

其中,

Δz是深度图的拉普拉斯变换;是参数;

然后使用加速深度增强算法对深度进行迭代优化,如下:

①输入初始的深度图,以及球谐系数以及向量化的反照率向量ρ和光照差异值向量β;

②当深度优化目标函数值一直处于减小状态时,循环执行步骤③到⑤;

③更新其中

④更新

⑤更新zk,使得f(zk)更小;

此步骤结束后,再返回单目算法中运行相应的算法步骤,程序将一直执行直至得到结束程序的键盘输入或强制关闭程序的操作。

本发明与现有技术相比,具有如下优点与有益效果:

1、本发明能较好的完善Kinect深度传感器获得深度图,解决仅深度传感器采集数据中有空缺,深度值不准确的缺点。

2、解决了Kinect设备对被测物体深度值范围的约束,拓宽了可测量深度的范围。

3、本发明使用了特别设计的单目测距的对点进行筛选的算法,使得深度的精度远远高于普通方法。

4、本发明使得Kinect能适应复杂的光照变换环境,同时又解决了Kinect在室外不适用的问题。

5、本发明在计算物体的全局明暗程度时使用了结合三维表征的表面法线向量的光照模型,更好地对全局光照进行了描述。

6、本发明考虑并利用了现实光照环境下光照射在物体上时的全局光照效应和局部光照效应,对处理不同光照下的深度重建更具有鲁棒性和实用意义。

7、本发明使用了深度增强加速算法对深度优化步骤进行了算法上的优化,大大地减低了优化步骤的计算量,减低了算法的运行时间。

具体实施方式

下面结合具体实施例对本发明作进一步说明。

本实施例所述的基于相机运动和图像明暗的Kinect深度重建算法,包括以下步骤:

1)在Kinect深度摄像头和RGB摄像头标定对齐的情况下,通过第三方接口将Kinect采集的数据上传到电脑。

2.1)在系统初始化的时候读入一张RGB图片并作为关键帧,给关键帧绑定一个深度图,深度图和灰度图有相同的维度,遍历深度图,给每个像素位置赋一个随机值;

2.2)每读取一张RGB图片,都构造如下的代价函数:

其中||·||δ是哈勃算子,rp代表误差,代表误差的方差,。

哈勃算子的定义如下:

δ是哈勃算子的参数。

误差函数的定义rp如下:

rp(p,ζji)=Ii(p)-Ij(w(p,Di(p),ζji))

Ii(p)表示当前帧中像素p的位置的灰度值,ζji表示将i坐标下的三维点旋转平移到j坐标下的刚体变换的李代数,Di(p)表示参考帧的深度图中像素p对应的位置的深度值,w(p,Di(p),ζji)表示参考帧i中像素p位置对应的三维点经过旋转平移刚体变换到当前帧中j位置,变换公式如下:

其中X,Y,Z分别表示相机坐标系下的三维点在XYZ三个方向上的坐标,u,v表示像素坐标,fx,fy分别表示X,Y方向上焦距。

方差的定义如下:

其中表示图片灰度的方差,Vi(p)表示参考帧深度图像素点p的方差。

2.3)用高斯牛顿迭代法求解步骤2.2)中代价函数最小时的ζ,得到参考帧和当前帧之间的旋转平移关系。

2.4)对参考帧灰度图上所有点求梯度,选取其中梯度大于门限的点。接着对这些点进行筛选。计算对应点的单位梯度方向g,梯度大小g0。计算g和l的内积,并计算

如果则这个点是合格的。

遍历所有符合要求的点,根据极线几何:

E=[t]xR

l=Fx

计算当前帧中要求解深度的点所在极线的位置。其中K1是RGB相机的内参矩阵,t和R是步骤2.2)中的ζ李代数分解为旋转平移的形式。l是当前帧中对应的极线,x是参考帧中要求解深度的像素点的坐标。

搜索这些点在当前帧极线上的对应点。并根据单目视觉三维重建几何知识计算点的空间坐标:

根据

x(p3TX)-(p1TX)=0

y(p3TX)-(p2TX)=0

x(p2TX)-y(p1TX)=0

的形式构造AX=0的矩阵,其中P矩阵是旋转平移矩阵和内参矩阵的积,piT是P矩阵的第i行,X是求解点的三维坐标。x,y是当前帧中对应点的横轴方向和数轴方向的坐标。对A矩阵尽心svd分解,对应特征值最小的特征向量就是点的空间坐标。

2.5)用卡曼滤波器对新得到的深度值与参考帧深度图中的深度值融合。

更新深度值为:

更新深度的方差为:

其中do是深度图中原来的深度,dp是新计算得到的深度,σo是深度图中维护的深度方差,σp是新计算求得深度方差。

3.1)进行当前帧下的深度摄像头采集到的深度图像与单目彩色摄像头采集到的彩色图像的对齐。由于彩色摄像头与深度摄像头之间存在视场范围的差异,所以只有二者视场重叠部分才具有有效的深度值,因此对齐后得到的是不完整的深度图。

3.2)按照深度摄像头中针孔相机的模型,将该不完整的深度图进行三维点云的生成。针孔相机模型可以简述如下,一个空间点的空间坐标[x,y,z]与它在图像中的像素坐标[u,v,d]之间的关系可以表述为:

z=d/s

x=(u-cx)·z/fx

y=(v-cy)·z/fy

其中,d是深度图中每个像素的深度值,s是深度图的缩放因子,cx与cy是主点的横纵坐标,fx与fy是横坐标方向和纵坐标方向的焦距分量。

利用上述公式对每个像素的像素坐标转换成对应的空间坐标,即可完成深度图到三维点云的转换。

3.3)将单目算法中生成的点云与上述不完整的深度图生成的点云二者使用点对点的迭代最近邻点(ICP)算法进行配准得到二者之间的旋转矩阵R和平移矩阵T。

3.4)根据上述得到的旋转矩阵和平移矩阵,将单目算法获得的点云转换到不完整的深度图生成的点云的坐标体系下,并将二者拼接成一个大的点云。

3.5)对于深度图中由于视场范围不重叠而形成的深度值无效区域,对每个处于无效区域中的像素,我们计算其空间位置。若该像素对应的空间点位置正好与大的点云中某点空间位置重合,则直接将该点的z坐标也就是深度值赋予该像素作为其深度值。若该像素对应的空间点并未与点云中的点重合,则我们计算该空间点与它在大的点云中的相邻点云点的距离之和的平均值,若该值大于某个阈值,则将该值作为该像素值的深度值。

3.6)检测深度图中是否还有未有有效值的像素点。若仍有未有有效值的像素点,则使用联合双边滤波器对深度图进行深度值填补,确保深度图中每个像素点都具有深度值。

3.7)使用关于每个像素点的法线向量为变量的扩展内在图像分解模型函数作为每个像素点的光照模型函数。使用到的扩展内在图像分解模型函数为:

3.8)为图像中的每个像素计算明暗信息。明暗信息函数使用零阶和一阶球谐系数与点云表面法线向量的线性多项式的矩阵形式表示。也就是:

首先计算出每个点的法线向量,然后通过最小化明暗函数与真实光照强度间的差值的目标函数,从而求解出明暗函数的参数向量,从而为每个像素点确定了明暗函数值。

3.9)为图像中的每个像素计算反照率。由于明暗信息函数仅仅考虑到远距离光源和环境光源,因此它是对光照的初步预测,因而为了考虑到镜面反射、阴影以及近光源造成的效果,需要为每个像素引入不同的反照率。

构造最小化目标函数为:

其中,ρ是每个像素的反照率,I是每个像素的光照强度,N是全图迭代操作中当正在操作的像素的一个邻域,ρk是该邻域内的像素点,λρ是参数,而且,

3.10)类似步骤3.9)中的方法,为图像中的每个像素计算由于局部光照差异所导致的光照差异值。

构造最小化目标函数为:

其中,β是每个像素点的光照差异值,βk是全图迭代操作中当正在操作的像素的一个邻域内的像素点,是参数。

3.11)构造明暗模型与实际测量到的光照强度之间的目标函数,并使用改进的深度增强加速算法对该目标函数进行最小化,从而得到优化后的深度图。

首先将每个像素对应的点云上的点的法线表示成深度图的梯度形式,即:

其中,

是深度图的梯度。

然后建立深度优化的目标函数为:

其中,

Δz是深度图的拉普拉斯变换,是参数。

然后使用加速深度增强算法对深度进行迭代优化:

①输入初始的深度图,以及球谐系数以及向量化的反照率向量ρ和光照差异值向量β。

②当深度优化目标函数值一直处于减小状态时,循环执行步骤③到⑤。

③更新其中

④更新

⑤更新zk,使得f(zk)更小。

此步骤结束后,再返回单目算法中运行相应的算法步骤,程序将一直执行直至得到结束程序的键盘输入或强制关闭程序的操作。

以上所述之实施例子只为本发明之较佳实施例,并非以此限制本发明的实施范围,故凡依本发明之形状、原理所作的变化,均应涵盖在本发明的保护范围内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1