CN102710951B - 基于散斑结构光深度相机的多视点计算成像方法 - Google Patents

基于散斑结构光深度相机的多视点计算成像方法 Download PDF

Info

Publication number
CN102710951B
CN102710951B CN201210142043.4A CN201210142043A CN102710951B CN 102710951 B CN102710951 B CN 102710951B CN 201210142043 A CN201210142043 A CN 201210142043A CN 102710951 B CN102710951 B CN 102710951B
Authority
CN
China
Prior art keywords
point
depth
map
value
pixel
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.)
Expired - Fee Related
Application number
CN201210142043.4A
Other languages
English (en)
Other versions
CN102710951A (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.)
Tianjin University
Original Assignee
Tianjin University
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 Tianjin University filed Critical Tianjin University
Priority to CN201210142043.4A priority Critical patent/CN102710951B/zh
Publication of CN102710951A publication Critical patent/CN102710951A/zh
Application granted granted Critical
Publication of CN102710951B publication Critical patent/CN102710951B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Image Processing (AREA)

Abstract

本发明属于图像处理技术领域。为提供一种多视点计算成像方法,获取的深度信息准确,精度高。为达到上述目的,本发明采取的技术方案是,基于散斑结构光深度相机的多视点计算成像方法,包括如下步骤:使用微软的人机交互设备Kinect,从中获取深度图和彩色图;先检测出彩色图的边缘,将空缺信息进行膨胀,直至膨胀的空缺覆盖了原先深度图附近对应于彩色图中的边缘停止膨胀;接着采用深度信息和彩色信息对空缺边缘的点使用双边滤波估值,估值的过程使用了彩色图的边缘信息进行限制,在获取彩色图和修复后的深度图后,将深度图转换成视差图,使用深度图像结合彩色图像的视差图合成方法合成任意数量的虚拟视点图。本发明主要应用于图像处理。

Description

基于散斑结构光深度相机的多视点计算成像方法
技术领域
本发明属于图像处理技术领域。具体讲,涉及基于散斑结构光深度相机的多视点计算成像方法。
背景技术
当前计算机视觉获取场景深度的方法有很多种,有通过双目测量,投影仪搭配摄像头等方法,也有聚焦深度等三角化计算方法,但这些方法都是通过繁琐复杂的计算来获取深度图,近些年来较常用的获取深度图的方法就是使用深度相机。TOF是其中的一种深度相机,其利用主动射出的红外光往返的相位差来测量深度。该相机获取的深度信息准确,精度高,但是有着较大的缺点,价格高,分辨率低。然而,近期微软推出了一种新的深度相机,该相机价格便宜,方便了很多适用深度信息进行的研究。
这款深度相机的名字为Kinect,Kinect是微软于2010年11月在北美上市的XBOX体感交互外设。该设备是一种3D体感摄像机,拥有导入动态捕捉,影像识别,麦克风输入,语音识别等功能。Kinect的核心技术是由微软在2010年3月收购的专门从事研发3D动作侦测和识别技术的以色列公司Primesense授权的。Kinect利用连续光对测量空间进行编码,通过感应器读取编码的光线,交给晶片运算进行解码后,产生一张具有深度的图像。该种技术的关键是Laser Speckle镭射光散斑,当镭射光照射到粗糙物体,或者穿透毛玻璃后,会形成随机的反射斑点(散斑)。散斑具有高度的随机性,会随距离的而变换图案。空间中的任何两处的散斑都是不同的图案,这就等同于将整个空间加上了标记,当任何物体进入该空间及其移动的时候,Kinect都可以据此都可以确切记录物体的位置。
但从Kinect中捕捉的深度图有着较大的问题,其不仅存在较大的噪声,同时在一些深度不连续的边缘处和光滑透明处平面处会存在信息的空缺。如果直接使用这种深度图进行深入的研究的话会对实验结果造成极大的影响,这就需要对Kinect获取的深度图进行修复。从Kinect刚出来后不久,国际涌现了许多修复Kinect深度图的方法,不过现存的技术在修复深度图方面有着明显的不足,尤其是对于存在透明和多边缘的图像,修复后得到的深度图匹配到彩色图的时候有着较大的偏差,边缘处存在许多缺陷。并且这些方法有些花费的时间过长,有些运行速度快但最终的结果并不太理想。
发明内容
本发明旨在克服现有技术的不足,提供一种多视点计算成像方法,获取的深度信息准确,精度高。为达到上述目的,本发明采取的技术方案是,基于散斑结构光深度相机的多视点计算成像方法,包括如下步骤:使用微软的人机交互设备Kinect,从中获取深度图和彩色图;先检测出彩色图的边缘,将空缺信息进行膨胀,直至膨胀的空缺覆盖了原先深度图附近对应于彩色图中的边缘停止膨胀;接着采用深度信息和彩色信息对空缺边缘的点使用双边滤波估值,估值的过程使用了彩色图的边缘信息进行限制,在获取彩色图和修复后的深度图后,将深度图转换成视差图,使用深度图像结合彩色图像的视差图合成方法合成任意数量的虚拟视点图。
所属步骤进一步细化为:
1)使用OpenNI平台结合PrimeSense驱动从Kinect帧流中捕捉一帧的彩色图像C和深度图像D;
2)根据1)中获取的深度图D映射出一张只包含0/1值的映射图Dm,根据1)中的彩色图C进行边缘检测得到Ce
3)膨胀2)中映射图Dm的空洞,直至所有的空洞都覆盖了其附近的边缘,得到图像D′m,将图像D′m映射至深度图D,得到图Dd,映射方法如下:对于图像D′m中值为0的点P,深度图D对应的像素点的值不变,其他的像素点的值为0;
4)检测3)中处理后的深度图Dd的空洞边缘,并将空洞边缘点压入堆栈,如果该点属于2)中检测的彩色图像边缘点之一且第一次访问该点则不将该点放入堆栈,第二次遇到该彩色图像边缘点的时候将该点放入堆栈;
5)取出栈顶的点,使用滤波窗口内不在空洞区的像素的深度值进行双边插值得该点深度值;
6)不断重复4)和5)操作,直至深度图中不存在空缺信息,得到最终修复的深度图Dr
7)对6)中的深度图Dr进行计算,得到对应的视差图V,视差图V里像素点的值和深度图Dr像素点的值成反比例关系。
所述步骤2)-5)进一步细化为:
根据获取的深度图D,根据以下公式生成对应的映射图Dm
Figure BDA00001620742100021
对彩色图C进行边缘检测得到Ce
Figure BDA00001620742100022
对于Dm(x,y)=1的点
Figure BDA00001620742100023
分别以点
Figure BDA00001620742100024
为中心,上下左右分别扫描R个像素,R<40,如果扫到的像素Ce(x+T,y+T)=1,记录markR=T,同时停止该方向的扫描;在扫描过程中不断更新markR=max(markR,T);接下来对Dm中空缺信息进行膨胀操作,使用膨胀的结构元素为以markR为半径的球形元素,膨胀后得到D′m,将D′m映射至深度图,得到Dd,映射操作如下:
Figure BDA00001620742100025
这里使用Alexandru Telea在其论文An Image Inpainting Technique Based on the FastMarching Method提出的fast marching method来收集Dd空洞边缘点,并将Dd空洞边缘点收集于堆栈Stack之中,在收集点的过程中,使用一个标记数组Flag(640,480),将其初始化为全0,如果找到一个空洞边缘点
Figure BDA00001620742100031
该点处于深度不连续处,也就意味着该点Ce(x,y)=1,这个时候不将该点放入堆栈,将Flag(x,y)置1,下次再次搜索到该点的时候,如果该点是边缘点且其标记值为1,那么将该点放入堆栈进行插值。
具体的插值步骤是,对从栈顶取出的点
Figure BDA00001620742100032
使用以
Figure BDA00001620742100033
为中心半径为w的方形窗口进行双边滤波,其中滤波过程分为两种情况:
(1)若窗口内不存在点Ce(x,y)=1,意味着窗口内不存在位于深度不连续的地方的点,直接使用窗口内不处于空缺处的点的深度信息和该点相对于
Figure BDA00001620742100034
的距离信息进行填补,公式中的p表示的是点q表示的是滤波窗口内区别于
Figure BDA00001620742100036
的点
Figure BDA00001620742100037
其中
occlusion = { P D d ( x , y ) | D d ( x , y ) = 0 } ;
D d p r = 1 W ξ Σ q ∈ w * w , q ∉ occlusion [ G λ ( | | p - q | | ) G ξ ( | | D d p - D d q | | ) D d q ] - - - ( 4 )
W ξ = Σ q ∈ w * w , q ∉ occlusion [ G λ ( | | p - q | | ) G ξ ( | | D d p - D d q | | ) ] - - - ( 5 )
(2)窗口内存在点Ce(x,y)=1,说明滤波窗口位于深度存在骤变的边界上,P1和P2表示滤波正方形窗口边缘和彩色图中物体边缘交界的两点,将这两点连成一条直线
Figure BDA000016207421000311
使用叉乘
Figure BDA000016207421000312
判断点和线的关系,得到窗口内剔除掉和
Figure BDA000016207421000313
所处直线
Figure BDA000016207421000314
方向不同的点得到集合
Figure BDA000016207421000315
在集合中再次剔除处于空缺处的点,得到点集合
Figure BDA000016207421000317
此刻使用彩色图信息和距离信息对
Figure BDA000016207421000318
的深度进行填补,sign表示叉乘结果:
sign [ ( P 1 - P D d ) &CircleTimes; ( P 2 - P D d ) ] = 1 [ ( P 1 - P D d ) &CircleTimes; ( P 2 - P D d ) ] > 0 0 [ ( P 1 - P D d ) &CircleTimes; ( P 2 - P D d ) ] = 0 - 1 [ ( P 1 - P D d ) &CircleTimes; ( P 2 - P D d ) ] < 0 - - - ( 6 )
Set &prime; &prime; ( P D d ) = { P D d | sign [ ( P 1 - P D d &prime; ) &CircleTimes; ( P 2 - P D d &prime; ) ] = sign [ ( P 1 - P D d ) &CircleTimes; ( P 2 - P D d ) ] } - - - ( 7 )
D d p r = 1 W u &Sigma; q &Element; w * w , q &NotElement; occlusion [ G &lambda; ( | | p - q | | ) G &mu; ( | | C p - C q | | ) D d q ] - - - ( 8 )
W &mu; = &Sigma; q &Element; w * w , q &NotElement; occlusion [ G &lambda; ( | | p - q | | ) G &mu; ( | | C p - C q | | ) ] - - - ( 9 )
其中上述公式中的高斯核函数分别如下:
G &lambda; ( | | p - q | | ) = e - { [ p ( x ) - q ( x ) ] 2 + [ p ( y ) - q ( y ) ] 2 } / ( 2 * &lambda; 2 ) - - - ( 10 )
G &xi; ( | | D d p - D d q | | ) = e - ( D d p - D d q ) 2 / ( 2 * &xi; 2 ) - - - ( 11 )
G &mu; ( | | C p - C q | | ) = e - [ ( C r p - C r q ) 2 + ( C g p - C g q ) 2 + ( C b p - C b q ) 2 ] / ( 2 * &mu; 2 ) - - - ( 12 )
Figure BDA00001620742100042
填补后,将其周围的点集加入栈中;不断重复上述的过程,直至所有的空缺都被填补,得到修复好的深度图为Dr,式中:
p(x),p(y),q(x),q(y)分别表示点
Figure BDA00001620742100044
Figure BDA00001620742100045
的x,y坐标值,markR为使用膨胀结构的半径;
表示彩色图C中对应于深度图Dd
Figure BDA00001620742100047
位置的点的三通道的颜色值,
Figure BDA00001620742100048
表示彩色图C中对应于深度图Dd
Figure BDA00001620742100049
位置的点的三通道的颜色值;
Cq表示彩色图C中对应于深度图Dd
Figure BDA000016207421000410
位置的点的彩色信息值,Cp表示彩色图C中对应于深度图Dd
Figure BDA000016207421000411
位置的点的彩色信息值;
Figure BDA000016207421000412
分别表示深度图Dd中处于位置
Figure BDA000016207421000413
Figure BDA000016207421000414
处的深度值;
λ为空间邻近度高斯核的权值因子,ξ为深度相似度高斯核的权值因子,μ为亮度相似度高斯核的权值因子,λ,ξ,μ取值空间在[3,10]间;
Gμ.(|| ||)为亮度相似度高斯核函数,Gλ.(|| ||)为空间邻近度高斯核函数,Gξ.(|| ||)为深度相似度高斯核函数;
表示修复好的深度图Dr位置
Figure BDA000016207421000416
的深度值,Wξ为空间-深度归一化因子,Wμ为空间-亮度归一化因子;
Dm(x,y),Ce(x,y),Dd(x,y),D(x,y),C(x,y),V(x,y)分别表示图Dm,Ce,Dd,D,C,V中位置(x,y)的点的值,x表示点的横坐标,y表示点的纵坐标。
在得到修复后的深度图,根据下面的公式得到视差图:
V = b * f D r - - - ( 13 )
b的值为Kinect的IR发生器和接收器的距离,f为Kinect的焦距。
使用最终的视差图Dp和彩色图C进行虚拟视点合成,C(x,y)表示C中的点(x,y),Cvirt((x,y),k)表示第k个视点中位置处于(x,y)像素点的值,视点合成的方法如下:
Cvirt((x,y),k)=C(x+k*fact*V(x,y),y+k*fact*V(x,y))           (14)
k表示视点合成的第k个视点,fact为偏转因子,表示生成视点相对于原视点偏转长度;上述公式表示的是对于合成的第k个视点中(x,y)像素,其像素值对应于彩色图像的原始图像的(x+k*fact*V(x,y),y+k*fact*V(x,y))位置的像素值;当某些像素值存在错误,采取搜索错误像素位置的上下左右的像素,取其最近的正确的点的像素值进行代替;
在执行完上述的操作后,因为视差的后景是黑的,所以在视点转移后一些像素可能和别的像素没有一致的方向,根据像素在原图像的方向检测出错误的像素并使用左边界的像素点来进行填补;
对于左视点,前景像素右移,那么在后景中会存在左边界的空缺;对于右视点,背景像素左移,那么在后景会存在右边界的空缺。对于这两种情况,需要使用后景中最邻近空缺处的像素点进行填补。
本发明的技术特点及效果:
1)方法简单,容易实现,运行时间短,能在该发明基础上使用GPU加速。
2)本发明中,在对空洞点进行插值前对空洞进行膨胀覆盖其附近边界,这样做带来两个好处。Kinect的深度图成像不稳定,尤其在边缘处会存在小范围的边缘内的值超出边缘范围替代实际的深度值,或者边缘外的值进入边缘内取代边缘内的点的值。膨胀操作很好地将上面的问题统一化,使得边缘外的点要么缺失要么是边缘外的点,边缘内的点要么缺失要么是边缘内的点。
3)在修复的过程中有效利用了彩色图像的边缘信息,修补的过程不会使得插值越过实际边界,严格限定了深度不连续处边缘左右(上下)的深度信息严格不同。
4)对边界信息做了标记,第一次访问的时候不加入堆栈,第二次加入堆栈,合理地避免了边界空洞点在3)的限制下不放入堆栈处理导致最后结果存在多处细间隙没有进行填补的情形。
5)填补平滑区域单独使用窗口的深度信息,无需使用彩色信息。在边界处采用了彩色信息是考虑到深度出现骤变处其彩色信息很大可能是不同的,如此很好地限制了最后的结果,同时使用叉乘判断只取与插值点同方向的点来进行插值,结果可靠。
6)本发明提出的修复深度图的方法,具有较好的拓展性,能推广到其他设备的深度图修复。
7)采用Kinect同时获取彩色和深度图,使用彩色图和深度图进行任意视点的合成,这为3DTV提供了一种新的成像方式。
附图说明
图1是本发明实施的深度图彩色图修复及多视点合成的流程图;
图2和图3是从Kinect中捕捉的两张不同场景的深度彩色图以及对应修复后的深度图;
图4是进行多视点合成算法使用测试图像生成8视点的彩色图像;
图5(a)和(b)是Kinect捕捉的一帧原始图像。
(c)是经过修复后的深度图像。
(d)是根据(c)计算得到的视差图。
图6是根据图5(a)和(d)计算得到的N=8个不同视点的虚拟图。
具体实施方式
本发明是基于使用微软的人机交互设备Kinect,从中获取深度图和彩色图,分别经过处理后进行多视点成像计算合成的方法。
本发明提出了一种修复Kinect深度图方法,该方法作用于一张640×480图像,需要10秒左右,运算复杂度不高,修复出来的深度图效果好。
本发明在修复深度图后,使用该深度图和彩色图进行视点合成。目前存在的虚拟视点合成的方法大致可以分为三种。第一种是使用彩色图像对插值生成虚拟图像,运动插值补偿就是其中的一种。第二种是使用深度图像结合彩色图像。第三种是使用深度图像结合彩色图像以及其中隐藏的阶级信息。本发明采用的是第二种方式。
本发明先检测出彩色图的边缘,将空缺信息进行膨胀,直至膨胀的空缺覆盖了原先深度图附近对应于彩色图中的边缘停止膨胀。接着对空缺边缘的点使用双边滤波估值,其间采用深度信息和彩色信息。估值的过程使用了彩色图的边缘信息进行限制,避免了估值的过程出现了深度信息超出实际中对应点在彩色图中该处的深度。实验结果表明,该种方法能够有效地修复深度图。
在获取彩色图和修复后的深度图后,将深度图转换成视差图,使用上述的视差图合成方法合成任意数量的虚拟视点图。
本发明所要解决的技术问题是,提供一种准确修复Kinect捕捉的深度图,并根据修复好的深度图结合彩色图生成任意路的虚拟视点图。具体方法如下:
1)使用OpenNI平台结合PrimeSense驱动从Kinect帧流中捕捉一帧的彩色图像C和深度图像D;
2)根据1)中获取的深度图D映射出一张只包含0/1值的图像Dm。根据1)中的彩色图C进行边缘检测得到Ce
3)膨胀2)中Dm的空洞,直至所有的空洞都覆盖了其附近的边缘,得到图像D′m。将D′m映射至深度图D得到Dd,映射方法如下:对于D′m中值为0的点P,深度图D对应的像素点的值不变,其他的像素点的值为0;
4)检测3)中得到的深度图Dd的空洞边缘,并将空洞边缘点压入堆栈,如果该点属于2)中检测的彩色图像边缘点之一且第一次访问该点则不将该点放入堆栈,第二次遇到该彩色图像边缘点的时候将该点放入堆栈。
5)取出栈顶的点,使用滤波窗口内不在空洞区的像素的深度值进行双边插值得该点深度值。
6)不断重复4)和5)操作,直至深度图中不存在空缺信息,得到最终修复的深度图Dr
7)根据公式(13)对6)得到的深度图Dr进行计算,得到对应的视差图V;
根据多视点合成的第二种方法合成N个视点。
下面结合实施例和附图5、图6对本发明的基于散斑结构光深度相机的多视点计算成像方法做出详细说明。
本发明的基于散斑结构光深度相机的多视点计算成像方法,具体步骤如下:
1)根据获取的深度图D,根据以下公式生成对应的映射图Dm
Figure BDA00001620742100071
根据2)中的彩色图C进行边缘检测得到Ce
Figure BDA00001620742100072
对于Dm(x,y)=1的点
Figure BDA00001620742100073
分别以点
Figure BDA00001620742100074
为中心,上下左右分别扫描R(R<40)个像素,如果扫到的像素Ce(x+T,y+T)=1,记录markR=T,同时停止该方向的扫描。在扫描过程中不断更新markR=max(markR,T)。接下来对Dm中空缺信息进行膨胀操作,使用膨胀的结构元素为以markR为半径的球形元素,膨胀后得到D′m,将D′m映射至深度图,得到Dd,映射操作如下:
Figure BDA00001620742100075
这里使用Alexandru Telea在其论文An Image Inpainting Technique Based on the FastMarching Method提出的fast marching method来收集Dd空洞边缘点,并将Dd空洞边缘点收集于堆栈Stack之中。在收集点的过程中,使用一个标记数组Flag(640,480),将其初始化为全0,如果找到一个空洞边缘点
Figure BDA00001620742100076
该点处于深度不连续处,也就意味着该点D(x,y)=1,这个时候不将该点放入堆栈,将Flag(x,y)置1,下次再次搜索到该点的时候,如果该点是边缘点且其标记值为1,那么将该点放入堆栈进行插值。
具体的插值步骤如下:
2)对从栈顶取出的点
Figure BDA00001620742100077
使用以
Figure BDA00001620742100078
为中心半径为w的方形窗口进行双边滤波,其中滤波过程分为两种情况:
(1)若窗口内不存在点Ce(x,y)=1,意味着窗口内不存在位于深度不连续的地方的点,直接使用窗口内不处于空缺处的点的深度信息和该点相对于
Figure BDA00001620742100079
的距离信息进行填补。Gλ.(|| ||)为空间邻近度高斯核,Gξ.(|| ||)为深度相似度高斯核。p表示的是点
Figure BDA000016207421000710
q表示的是滤波窗口内区别于
Figure BDA000016207421000711
的点。其中
Figure BDA000016207421000712
D d p r = 1 W &xi; &Sigma; q &Element; w * w , q &NotElement; occlusion [ G &lambda; ( | | p - q | | ) G &xi; ( | | D d p - D d q | | ) D d q ] - - - ( 4 )
W &xi; = &Sigma; q &Element; w * w , q &NotElement; occlusion [ G &lambda; ( | | p - q | | ) G &xi; ( | | D d p - D d q | | ) ] - - - ( 5 )
(2)窗口内存在点Ce(x,y)=1,说明滤波窗口位于深度存在骤变的边界上。记录窗口边缘上处于彩色图边界的两点P1和P2,将这两点连成一条直线
Figure BDA000016207421000715
使用叉乘
Figure BDA000016207421000716
判断点和线的关系,得到窗口内剔除掉和
Figure BDA000016207421000717
所处直线
Figure BDA000016207421000718
方向不同的点得到集合
Figure BDA000016207421000719
在集合
Figure BDA00001620742100081
中再次剔除处于空缺处的点,得到点集合
Figure BDA00001620742100082
此刻使用彩色图信息和距离信息对
Figure BDA00001620742100083
的深度进行填补。Gμ.(|| ||)为亮度相似度高斯核,sign表示叉乘结果。
sign [ ( P 1 - P D d ) &CircleTimes; ( P 2 - P D d ) ] = 1 [ ( P 1 - P D d ) &CircleTimes; ( P 2 - P D d ) ] > 0 0 [ ( P 1 - P D d ) &CircleTimes; ( P 2 - P D d ) ] = 0 - 1 [ ( P 1 - P D d ) &CircleTimes; ( P 2 - P D d ) ] < 0 - - - ( 6 )
Set &prime; &prime; ( P D d ) = { P D d | sign [ ( P 1 - P D d &prime; ) &CircleTimes; ( P 2 - P D d &prime; ) ] = sign [ ( P 1 - P D d ) &CircleTimes; ( P 2 - P D d ) ] } - - - ( 7 )
D d p r = 1 W u &Sigma; q &Element; w * w , q &NotElement; occlusion [ G &lambda; ( | | p - q | | ) G &mu;&xi; ( | | C p - C q | | ) D d q ] - - - ( 8 )
W &mu; = &Sigma; q &Element; w * w , q &NotElement; occlusion [ G &lambda; ( | | p - q | | ) G &mu; ( | | C p - C q | | ) ] - - - ( 9 )
其中上述公式中的高斯核函数分别如下:
G &lambda; ( | | p - q | | ) = e - { [ p ( x ) - q ( x ) ] 2 + [ p ( y ) - q ( y ) ] 2 } / ( 2 * &lambda; 2 ) - - - ( 10 )
G &xi; ( | | D d p - D d q | | ) = e - ( D d p - D d q ) 2 / ( 2 * &xi; 2 ) - - - ( 11 )
G &mu; ( | | C p - C q | | ) = e - [ ( C r p - C r q ) 2 + ( C g p - C g q ) 2 + ( C b p - C b q ) 2 ] / ( 2 * &mu; 2 ) - - - ( 12 )
字符注释:
p(x),p(y),q(x),q(y)分别表示点
Figure BDA000016207421000811
的x,y坐标值。markR为使用膨胀结构的半径。p表示的是点
Figure BDA000016207421000813
q表示的是滤波窗口内区别于
Figure BDA000016207421000814
的点。
Figure BDA000016207421000815
为滤波窗口中处于彩色图像边缘的一条直线;
Figure BDA000016207421000816
表示滤波窗口内和
Figure BDA000016207421000817
所处直线
Figure BDA000016207421000818
位置(位置只能有三种:处于
Figure BDA000016207421000819
左边;处于
Figure BDA000016207421000820
右边;处于
Figure BDA000016207421000821
上)相同的点的集合。
Figure BDA000016207421000822
表示处于表示滤波窗口内和
Figure BDA000016207421000823
所处直线
Figure BDA000016207421000824
位置相同并且不处在空缺处的点的集合;
Figure BDA000016207421000825
表示彩色图C中对应于深度图Dd
Figure BDA000016207421000826
位置的点的三通道的颜色值。
Figure BDA000016207421000827
表示彩色图C中对应于深度图Dd位置的点的三通道的颜色值;
Cq表示彩色图C中对应于深度图Dd位置的点的彩色信息值,Cp表示彩色图C中对应于深度图Dd
Figure BDA000016207421000830
位置的点的彩色信息值;
Figure BDA000016207421000831
分别表示深度图Dd中处于位置
Figure BDA000016207421000833
处的深度值;
λ为空间邻近度高斯核的权值因子。ξ为深度相似度高斯核的权值因子。μ为亮度相似度高斯核的权值因子。λ,ξ,μ取值空间可在[3,10]间;
Gμ.(|| ||)为亮度相似度高斯核函数,Gλ.(|| ||)为空间邻近度高斯核函数,Gξ.(|| ||)为深度相似度高斯核函数。具体的实现方法如公式(10)-(12)所示;
Figure BDA00001620742100091
表示修复好的深度图Dr位置
Figure BDA00001620742100092
的深度值。P1和P2表示滤波窗口边缘和彩色图中物体边缘发生交界的两点。Wξ为空间-深度归一化因子,Wμ为空间-亮度归一化因子。
Figure BDA00001620742100093
填补后,将其周围的点集邻域,
Figure BDA00001620742100095
加入栈中。不断重复上述的过程,直至所有的空缺都被填补。修复好的深度图为Dr
Dm(x,y),Ce(x,y),Dd(x,y),D(x,y),C(x,y),V(x,y)分别表示图Dm,Ce,Dd,D,C,V中位置(x,y)的点的值,x表示点的横坐标,y表示点的纵坐标。
3)在得到修复后的深度图,根据下面的公式得到视差图:
V = b * f D r - - - ( 13 )
b的值为Kinect的IR发生器和接收器的距离,f为Kinect的焦距,b的值参考官方的数据为7.5cm。f通过对Kinect进行标定为582,此数值根据不同的设备而上下波动小段范围。
使用最终的视差图V和彩色图C进行虚拟视点合成,C(x,y)表示C中的点(x,y),Cvirt((x,y),k)表示第k个视点中位置处于(x,y)像素点的值。视点合成的方法如下:
Cvirt((x,y),k)=C(x+k*fact*V(x,y),y+k*fact*V(x,y))            (14)
k表示视点合成的第k个视点,fact为偏转因子,表示生成视点相对于原视点偏转长度。上述公式表示的是对于合成的第k个视点中(x,y)像素,其像素值对应于彩色图像的原始图像的(x+k*fact*V(x,y),y+k*fact*V(x,y))位置的像素值。但是由于k*fact*V(x,y)往往不是一个整数值,导致某些像素值存在错误,这时候采取搜索错误像素位置的上下左右的像素,取其最近的正确的点的像素值进行代替。
在执行完上述的操作后,因为视差的后景是黑的,所以在视点转移后一些像素可能和别的像素没有一致的方向。根据像素在原图像的方向检测出错误的像素并使用左边界的像素点来进行填补。
对于左视点,前景像素右移,那么在后景中会存在左边界的空缺;对于右视点,背景像素左移,那么在后景会存在右边界的空缺。对于这两种情况,需要使用后景中最邻近空缺处的像素点进行填补。

Claims (6)

1.一种基于散斑结构光深度相机的多视点计算成像方法,其特征是:包括如下步骤:使用微软的人机交互设备Kinect,从中获取深度图和彩色图;先检测出彩色图的边缘,将空缺信息进行膨胀,直至膨胀的空缺覆盖了原先深度图附近对应于彩色图中的边缘停止膨胀;接着采用深度信息和彩色信息对空缺边缘的点使用双边滤波估值,估值的过程使用了彩色图的边缘信息进行限制,在获取彩色图和修复后的深度图后,将深度图转换成视差图,使用深度图像结合彩色图像的视差图合成方法合成任意数量的虚拟视点图;
其中,将空缺信息进行膨胀具体为:根据获取的深度图D,由公式生成对应的映射图Dm
Figure FDA0000489475160000011
膨胀映射图Dm的空洞;
接着采用深度信息和彩色信息对空缺边缘的点使用双边滤波估值具体为:膨胀映射图Dm的空洞,直至所有的空洞都覆盖了其附近的边缘,得到图像D'm,将图像D'm映射至深度图D,得到图Dd,其中:对于图像D'm中值为0的点P,深度图D对应的像素点的值不变,其他的像素点的值为0;再对图Dd的空洞边缘信息使用双边滤波估值;
使用彩色图的边缘信息进行限制具体为:如果该点属于检测到的彩色图像边缘点之一且第一次访问该点则不将该点放入堆栈,第二次遇到该彩色图像边缘点的时候将该彩色图像边缘点放入堆栈。
2.如权利要求1所述的基于散斑结构光深度相机的多视点计算成像方法,其特征是,所属步骤进一步细化为:
1)使用OpenNI平台结合PrimeSense驱动从Kinect帧流中捕捉一帧的彩色图像C和深度图像D;
2)根据1)中获取的深度图D映射出一张只包含0/1值的映射图Dm
Figure FDA0000489475160000012
根据1)中的彩色图C进行边缘检测得到Ce
3)膨胀2)中映射图Dm的空洞,直至所有的空洞都覆盖了其附近的边缘,得到图像D'm,将图像D'm映射至深度图D,得到图Dd,映射方法如下:对于图像D'm中值为0的点P,深度图D对应的像素点的值不变,其他的像素点的值为0;
4)检测3)中处理后的深度图Dd的空洞边缘,并将空洞边缘点压入堆栈,如果Dd所处的位置对应于彩色图中的点属于2)中检测的彩色图像边缘点之一且第一次访问该点则不将该位于Dd空洞边缘上的点放入堆栈,在第二次遇到该彩色图像边缘点位置的时候将该位于Dd空洞边缘上的点放入堆栈;
5)取出栈顶的点,使用滤波窗口内不在空洞区的像素的深度值进行双边插值得该点深度值;
6)不断重复4)和5)操作,直至深度图中不存在空缺信息,得到最终修复的深度图Dr
7)对6)中的深度图Dr进行计算,得到对应的视差图V,视差图V里像素点的值和深度图Dr像素点的值成反比例关系。
3.如权利要求2所述的基于散斑结构光深度相机的多视点计算成像方法,其特征是,所述步骤2)-5)进一步细化为:
根据获取的深度图D,根据以下公式生成对应的映射图Dm
Figure FDA0000489475160000021
对彩色图C进行边缘检测得到Ce
Figure FDA0000489475160000022
对于Dm(x,y)=1的点分别以点
Figure FDA0000489475160000026
为中心,上下左右分别扫描R个像素,R<40,如果扫到的像素Ce(x+T,y+T)=1,记录markR=T,同时停止该方向的扫描;在扫描过程中不断更新markR=max(markR,T);接下来对Dm中空缺信息进行膨胀操作,使用膨胀的结构元素为以markR为半径的球形元素,膨胀后得到D'm,将D'm映射至深度图,得到Dd,映射操作如下:
Figure FDA0000489475160000023
这里使用快速匹配法(fast marching method)来收集Dd空洞边缘点,并将Dd空洞边缘点收集于堆栈Stack之中,在收集点的过程中,使用一个标记数组Flag(640,480),将其初始化为全0,如果找到一个空洞边缘点
Figure FDA0000489475160000027
该点处于深度不连续处,也就意味着该点Ce(x,y)=1,这个时候不将该点放入堆栈,将Flag(x,y)置1,下次再次搜索到该点的时候,如果该点是边缘点且其标记值为1,那么将该点放入堆栈进行插值。
4.如权利要求2所述的基于散斑结构光深度相机的多视点计算成像方法,其特征是,具体的插值步骤是,对从栈顶取出的点
Figure FDA0000489475160000028
使用以
Figure FDA0000489475160000029
为中心半径为w的方形窗口进行双边滤波,其中滤波过程分为两种情况:
(1)若窗口内不存在点Ce(x,y)=1,意味着窗口内不存在位于深度不连续的地方的点,直接使用窗口内不处于空缺处的点的深度信息和该点相对于
Figure FDA00004894751600000210
的距离信息进行填补,公式中的p表示的是点
Figure FDA00004894751600000211
q表示的是滤波窗口内区别于的点
Figure FDA00004894751600000213
其中 occlusion = { P D d ( x , y ) | D d ( x , y ) = 0 } ;
D d p r = 1 W &xi; &Sigma; q &Element; w * w , q &NotElement; occlusion [ G &lambda; ( | | p - q | | ) G &xi; ( | | D d p - D d q | | ) D d q ] - - - ( 4 )
W &xi; = &Sigma; q &Element; w * w , q &NotElement; occlusion [ G &lambda; ( | | p - q | | ) G &xi; ( | | D d p - D d q | | ) ] - - - ( 5 )
(2)窗口内存在点Ce(x,y)=1,说明滤波窗口位于深度存在骤变的边界上,P1和P2表示滤波正方形窗口边缘和彩色图中物体边缘交界的两点,将这两点连成一条直线
Figure FDA00004894751600000320
使用叉乘
Figure FDA00004894751600000319
判断点和线的关系,得到窗口内剔除掉和
Figure FDA00004894751600000321
所处直线
Figure FDA00004894751600000322
方向不同的点得到集合
Figure FDA00004894751600000323
在集合
Figure FDA00004894751600000324
中再次剔除处于空缺处的点,得到点集合
Figure FDA00004894751600000325
此刻使用彩色图信息和距离信息对
Figure FDA00004894751600000326
的深度进行填补,sign表示叉乘结果:
sign [ ( P 1 - P D d ) &CircleTimes; ( P 2 - P D d ) ] = 1 [ ( P 1 - P D d ) &CircleTimes; ( P 2 - P D d ) ] > 0 0 [ ( P 1 - P D d ) &CircleTimes; ( P 2 - P D d ) ] = 0 - 1 [ ( P 1 - P D d ) &CircleTimes; ( P 2 - P D d ) ] < 0 - - - ( 6 )
Set &prime; &prime; ( P D d ) = { P D d | sign [ ( P 1 - P D d &prime; ) &CircleTimes; ( P 2 - P D d &prime; ) ] = sign [ ( P 1 - P D d ) &CircleTimes; ( P 2 - P D d ) ] } - - - ( 7 )
D d p r = 1 W u &Sigma; q &Element; w * w , q &NotElement; occlusion [ G &lambda; ( | | p - q | | ) G &mu; ( | | C p - C q | | ) D d q ] - - - ( 8 )
W &mu; = &Sigma; q &Element; w * w , q &NotElement; occlusion [ G &lambda; ( | | p - q | | ) G &mu; ( | | C p - C q | | ) ] - - - ( 9 )
其中上述公式中的高斯核函数分别如下:
G &lambda; ( | | p - q | | ) = e - { [ p ( x ) - q ( x ) ] 2 + [ p ( y ) - q ( y ) ] 2 } / ( 2 * &lambda; 2 ) - - - ( 10 )
G &xi; ( | | D d p - D d q | | ) = e - ( D d p - D d q ) 2 / ( 2 * &xi; 2 ) - - - ( 11 )
G &mu; ( | | C p - C q | | ) = e - [ ( C r p - C r q ) 2 + ( C g p - C g q ) 2 + ( C b p - C b q ) 2 ] / ( 2 * &mu; 2 ) - - - ( 12 )
Figure FDA0000489475160000039
填补后,将其周围的点集
Figure FDA00004894751600000310
加入栈中;不断重复上述的过程,直至所有的空缺都被填补,得到修复好的深度图为Dr,式中:
p(x),p(y),q(x),q(y)分别表示点的x,y坐标值,markR为使用膨胀结构的半径;
Figure FDA00004894751600000313
表示彩色图C中对应于深度图Dd位置的点的三通道的颜色值,表示彩色图C中对应于深度图Dd位置的点的三通道的颜色值;
Cq表示彩色图C中对应于深度图Dd
Figure FDA00004894751600000317
位置的点的彩色信息值,Cp表示彩色图C中对应于深度图Dd
Figure FDA00004894751600000318
位置的点的彩色信息值;
Figure FDA0000489475160000041
分别表示深度图Dd中处于位置
Figure FDA0000489475160000043
处的深度值;
λ为空间邻近度高斯核的权值因子,ξ为深度相似度高斯核的权值因子,μ为亮度相似度高斯核的权值因子,λ,ξ,μ取值空间在[3,10]间;
Gμ.(|| ||)为亮度相似度高斯核函数,Gλ.(|| ||)为空间邻近度高斯核函数,Gξ.(|| ||)为深度相似度高斯核函数;
Figure FDA0000489475160000045
表示修复好的深度图Dr位置
Figure FDA0000489475160000046
的深度值,Wξ为空间-深度归一化因子,Wμ为空间-亮度归一化因子;
Dm(x,y),Ce(x,y),Dd(x,y),D(x,y),C(x,y),V(x,y)分别表示图Dm,Ce,Dd,D,C,V中位置(x,y)的点的值,x表示点的横坐标,y表示点的纵坐标。
5.如权利要求2所述的基于散斑结构光深度相机的多视点计算成像方法,其特征是,在得到修复后的深度图,根据下面的公式得到视差图:
V = b * f D r - - - ( 13 )
b的值为Kinect的IR发生器和接收器的距离,f为Kinect的焦距。
6.如权利要求1所述的基于散斑结构光深度相机的多视点计算成像方法,其特征是,使用最终的视差图Dp和彩色图C进行虚拟视点合成,C(x,y)表示C中的点(x,y),Cvirt((x,y),k)表示第k个视点中位置处于(x,y)像素点的值,视点合成的方法如下:
Cvirt((x,y),k)=C(x+k*fact*V(x,y),y+k*fact*V(x,y))     (14)
k表示视点合成的第k个视点,fact为偏转因子,表示生成视点相对于原视点偏转长度;上述公式表示的是对于合成的第k个视点中(x,y)像素,其像素值对应于彩色图像的原始图像的(x+k*fact*V(x,y),y+k*fact*V(x,y))位置的像素值;当某些像素值存在错误,采取搜索错误像素位置的上下左右的像素,取其最近的正确的点的像素值进行代替;
在执行完上述的操作后,因为视差的后景是黑的,所以在视点转移后一些像素可能和别的像素没有一致的方向,根据像素在原图像的方向检测出错误的像素并使用左边界的像素点来进行填补;
对于左视点,前景像素右移,那么在后景中会存在左边界的空缺;对于右视点,背景像素左移,那么在后景会存在右边界的空缺。对于这两种情况,需要使用后景中最邻近空缺处的像素点进行填补。
CN201210142043.4A 2012-05-09 2012-05-09 基于散斑结构光深度相机的多视点计算成像方法 Expired - Fee Related CN102710951B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201210142043.4A CN102710951B (zh) 2012-05-09 2012-05-09 基于散斑结构光深度相机的多视点计算成像方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210142043.4A CN102710951B (zh) 2012-05-09 2012-05-09 基于散斑结构光深度相机的多视点计算成像方法

Publications (2)

Publication Number Publication Date
CN102710951A CN102710951A (zh) 2012-10-03
CN102710951B true CN102710951B (zh) 2014-06-25

Family

ID=46903484

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210142043.4A Expired - Fee Related CN102710951B (zh) 2012-05-09 2012-05-09 基于散斑结构光深度相机的多视点计算成像方法

Country Status (1)

Country Link
CN (1) CN102710951B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104506838A (zh) * 2014-12-23 2015-04-08 宁波盈芯信息科技有限公司 一种符号阵列面结构光的深度感知方法、装置及系统

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102999910B (zh) * 2012-11-27 2015-07-22 宁波盈芯信息科技有限公司 一种图像深度计算方法
WO2015013851A1 (zh) * 2013-07-29 2015-02-05 北京大学深圳研究生院 一种虚拟视点合成方法及系统
CN103413276B (zh) * 2013-08-07 2015-11-25 清华大学深圳研究生院 一种基于纹理分布特征的深度增强方法
CN104346804A (zh) * 2013-08-08 2015-02-11 联想(北京)有限公司 图像处理的方法及电子设备
CN103456012B (zh) * 2013-09-03 2016-06-01 北京大学深圳研究生院 基于最大稳定曲率区域的视觉人手检测跟踪方法及系统
CN103561257B (zh) * 2013-11-01 2015-05-13 北京航空航天大学 一种基于深度参考平面的无干扰的光编码深度提取方法
CN104330038B (zh) * 2014-11-26 2017-02-22 厦门优策信息科技有限公司 一种尺寸测量的方法
CN104680496B (zh) * 2015-03-17 2018-01-05 山东大学 一种基于彩色图像分割的Kinect深度图修复方法
CN104809698A (zh) * 2015-03-18 2015-07-29 哈尔滨工程大学 一种基于改进三边滤波的Kinect深度图像修复方法
CN104780355B (zh) * 2015-03-31 2017-01-04 浙江大学 一种视点合成中基于深度的空洞修复方法
CN105141936B (zh) * 2015-06-15 2017-06-23 浙江工商大学 针对虚拟视点图像的带方向fmm图像修复方法
CN105261008A (zh) * 2015-09-15 2016-01-20 天津大学 一种基于结构信息的边界保护深度视频估计方法
CN105551006B (zh) * 2015-12-01 2018-06-05 深圳大学 一种深度图像缺失像素的修复方法及系统
CN105741265B (zh) * 2016-01-21 2019-03-01 中国科学院深圳先进技术研究院 深度图像的处理方法及装置
CN106651794B (zh) * 2016-12-01 2019-12-03 北京航空航天大学 一种基于虚拟相机的投影散斑校正方法
CN108269238B (zh) * 2017-01-04 2021-07-13 浙江舜宇智能光学技术有限公司 深度图像采集装置和深度图像采集系统及其图像处理方法
CN107392874B (zh) * 2017-07-31 2021-04-09 Oppo广东移动通信有限公司 美颜处理方法、装置及移动设备
CN107622480B (zh) * 2017-09-25 2020-11-24 长春理工大学 一种Kinect深度图像增强方法
CN108234874B (zh) * 2018-01-10 2020-07-21 南京华捷艾米软件科技有限公司 体感摄像头的成像精度的调节方法及调节装置
CN108648222B (zh) * 2018-04-27 2021-08-17 华中科技大学 结构光深度数据空间分辨率的提升方法及装置
CN108805841B (zh) * 2018-06-12 2021-01-19 西安交通大学 一种基于彩色图引导的深度图恢复及视点合成优化方法
CN109598736B (zh) * 2018-11-30 2021-09-10 奥比中光科技集团股份有限公司 深度图像与彩色图像的配准方法及装置
CN111123757B (zh) * 2019-10-29 2020-11-27 青田县武莲科技有限公司 定时驱动命令大数据触发系统
CN111862077A (zh) * 2020-07-30 2020-10-30 浙江大华技术股份有限公司 视差图的处理方法及装置、存储介质、电子装置
CN113936315B (zh) * 2021-10-14 2022-03-25 北京的卢深视科技有限公司 Doe脱落检测方法、装置、电子设备和存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101388967A (zh) * 2008-10-20 2009-03-18 四川虹微技术有限公司 一种用于视图合成的空洞填充方法
TW201123072A (en) * 2009-12-31 2011-07-01 Ind Tech Res Inst Method and system for rendering multi-view image
CN102307312A (zh) * 2011-08-31 2012-01-04 四川虹微技术有限公司 一种对dibr技术生成的目标图像进行空洞填充的方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7272264B2 (en) * 2003-09-11 2007-09-18 International Business Machines Corporation System and method for hole filling in 3D models

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101388967A (zh) * 2008-10-20 2009-03-18 四川虹微技术有限公司 一种用于视图合成的空洞填充方法
TW201123072A (en) * 2009-12-31 2011-07-01 Ind Tech Res Inst Method and system for rendering multi-view image
CN102307312A (zh) * 2011-08-31 2012-01-04 四川虹微技术有限公司 一种对dibr技术生成的目标图像进行空洞填充的方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104506838A (zh) * 2014-12-23 2015-04-08 宁波盈芯信息科技有限公司 一种符号阵列面结构光的深度感知方法、装置及系统

Also Published As

Publication number Publication date
CN102710951A (zh) 2012-10-03

Similar Documents

Publication Publication Date Title
CN102710951B (zh) 基于散斑结构光深度相机的多视点计算成像方法
Liu et al. 3D imaging, analysis and applications
Remondino et al. State of the art in high density image matching
CN101512601B (zh) 从图像中确定深度图的方法以及确定深度图的设备
US20200380711A1 (en) Method and device for joint segmentation and 3d reconstruction of a scene
CN102774325B (zh) 一种后视倒车辅助系统和形成后视障碍图像的方法
CN104156957B (zh) 一种稳定高效的高分辨率立体匹配方法
US20160093101A1 (en) Method And System For Generating A Three-Dimensional Model
CN108734776A (zh) 一种基于散斑的三维人脸重建方法及设备
CN104680496A (zh) 一种基于彩色图像分割的Kinect深度图修复方法
CN104065947B (zh) 一种集成成像系统的深度图获取方法
US20220051425A1 (en) Scale-aware monocular localization and mapping
KR20210005621A (ko) 포인트 클라우드의 채색에 사용하기 위한 방법 및 시스템
CN102036094B (zh) 一种基于数字分数延时技术的立体匹配方法
CN108088391A (zh) 一种三维形貌测量的方法和系统
JP2009139995A (ja) ステレオ画像対における画素のリアルタイムマッチングのための装置及びプログラム
CN105389774A (zh) 对齐图像的方法和装置
CN109564687A (zh) 学习方法和程序
JP5852093B2 (ja) 映像処理装置、映像処理方法、プログラム
CN113065397B (zh) 行人检测方法及装置
Shi et al. An improved lightweight deep neural network with knowledge distillation for local feature extraction and visual localization using images and LiDAR point clouds
CN104778673B (zh) 一种改进的高斯混合模型深度图像增强方法
CN105374043B (zh) 视觉里程计背景过滤方法及装置
Li et al. Multi-frame super-resolution for time-of-flight imaging
Lv et al. Semantically guided multi-view stereo for dense 3d road mapping

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20140625

CF01 Termination of patent right due to non-payment of annual fee