Kinect七篇

2024-09-12

Kinect 篇1

关键词:人机交互,kinect,骨架跟踪,肤色模型,k曲率

人机交互(Human-Computer Interaction, HCI):是指为完成确定任务,在人与计算机之间进行信息交换的过程。传统的人机交互方式(鼠标、键盘、触摸屏)则由于其便携性不足而显得捉襟见肘。在人机交互的研究中,能够以自然的方式给计算机提供交互信息是当前人机交互系统研究的热点。

由于在传统的人机交互中人类输入给计算机的信息都是都是通过键盘和鼠标来完成的,而键盘和鼠标的操作都利用手部的动作来实现的,因此在自然的人机交互中利用手部动作来进行人机交互是首选的方式。手部的手指是人体最灵活的部位,因此手指的动作能提供丰富的三维信息,利用这些三维信息可以方便户以操作真实世界物体的方法去操作计算机,这必将极大的增强人机交互系统的真实感。对人体的手指进行识别,然后对识别后的手指指尖进行动态的跟踪,利用实时跟踪的动态三维信息来进行人机交互,在自然人机交互系统中有很大的应用前景。

随着微软Kinect设备的推出,利用这一廉价的硬件设备能够实时捕获场景的彩色和深度信息。该文实现了是利用kinect来实时检测手指的方法,本方法首先利用kinect的骨架信息定位关节点righthand和lefthand的位置信息[1],然后在此区域的附近利用肤色颜色模型来提取出人的手部区域,同时利用canny方法提取出手部的边缘信息,最后利用手部边缘曲线的曲率来判断手指的指尖。

1 基于kinect的骨架追踪

Kinect利用模式识别和机器学习的方法,识别出20个关节点,通过20个关节点来表示一个骨架的,具体由下图1可以看到。当你在Kinect前面做动作的时候,这些关节点的位置的也在不断的变化,因此,通过对关节点之间位置的变化信息可以识别出人体的动作。

Kinect SD中的骨豁追踪系统有四个主要的对象,分别是骨豁数据流(Skeleton Stream)、骨豁框架(Skeleton Frame)、骨豁模型(Skeleton)和关节点(Joint)。

当Kinect正确识别操作者后,kinect运行库中Skeleton Frame Ready事件被触发来处理骨骼跟踪,该事件的参数包含两个重要的对象:Skeleton Frame和Skeleton。在Skeleton对象的Joints属性集合中保存了所有关节点的信息。每个关节点的信息都是一个Joint对象,其中的Position的X、Y、Z表示了三维位置。其中Z是Kinect到识别对象的距离。

利用kinect sdk中的Map Skeleton Point To Color Point函数可以把骨骼空间的点映射到彩色图像空间中。因此只要在骨骼空间中找到代表hand right和hand left的骨架中的关节点,就能利用Map Skeleton Point To Color Point函数找到手部的区域大概位置。在此,以hand关节映射到彩色空间的点坐标为中心设定一个区域来查找手部的区域。

2 基于 YCb Cr 空间的手部区域提取

图像中皮肤的颜色主要取决于血红蛋白、黑色素和光照情况。由于颜色的浓度主要影响的是饱和度而不是色相,所以在光照一致的环境中,不同肤色人种的皮肤色调是大致不变的,这是静态肤色模型构建的基础。基于颜色的皮肤检测具有简单、快速、直观,不受物体形状变化及视点改变等影响的优势,受到研究者的普遍重视,具有重要的理论研究意义和应用价值。

本文需要寻找一个对人的肤色分布有着很好聚类性的颜色空间,在这个空间中,利用肤色信息可以有效的将人的手势和其他背景分离出来,传统的颜色空间有RGB,HSV,YCb Cr,LAB空间等,由于RGB空间的三个颜色分量具有较强的相关性,不能将色彩信息和亮度信息分离开来,故它不适合用于肤色分割,该文将重点放在YCb Cr空间上,并将YCb Cr空间的肤色分割用到本系统中[2]。通过研究表明,发现在YCb Cr颜色空间进行肤色分割具有如下特点[3]:

1) 在YCb Cr颜色空间,不同的肤色上分布在比较小的范围内;

2) 在YCb Cr颜色空间,肤色的色度受到亮度变化的影响较小;

3) 在YCb Cr颜色空间,肤色聚类性较好,适合做分割。

YCb Cr是色彩空间的一种,常用于数字视频领域,其中Y是指亮度分量,Cb指蓝色色度分量,而Cr指红色色度分量。YCb Cr它可以由RGB空间线性变换得到,RGB变换到YCb Cr空间的转换公式为:

通过实验表明,在YCb Cr颜色空间中进行肤色分割时,由于Y分量的值表示的是亮度的变化,对肤色的影响较小,故只用考虑Cb和Cr两个颜色分量。当Cb的数值在区间[77,127],Cr的数值在区间 [147,173]时能取得较好的效果。图显示了利用YCb Cr颜色模型分割手部区域的结果:

A 原始图B 肤色分割图

在获取了手部区域的图像之后,首先利用自适应阈值方法把彩色图像变化成二值图像,然后利用canny算法获取手部区域的边缘轮廓。实验结果如图所示,图3为有彩色图像变化得到的二值图,图4是手部的边缘轮廓图。

3 基于K曲率的手指定位

在得到了手部区域的轮廊之后,就可以利用某种算法来找出指尖点所处的位置。该文利用K曲率算法来进行手指指尖识别[4,5],如图5所示,P(i)为手部区域的轮廓线上的一个点。给定一个常数K,顺时方向前进K个点,得到点P(i+K),逆时针方向前进K个点,得到点P(i-K)。

图形轮廓上的点P(i)的K曲率计算方法如下:以P(i)为起点,P(i-k)为终点得到向量V1,以P(i)为起点,P(i+k)为终点得到向量V2。利用向量V1与的向量V2之间夹角α的余弦作为点P(i)的K曲率。夹角计算公式如公式(2)所示。

通过判断向量V1和V2的夹角α是否在某一范围内,来判断轮廓上的点P(i)是否为指尖点。所选择的判断角度大小要合适,如若判断角度太大,可能会将手腕处那一段误认为为指尖;当手指较短时或者由于离Kinect较远,造成截取图片中手指较短时,测出的角度会很大,如若判断角度太小,就无法识别出指尖。经过实验发现当K=20及α<50时,有比较理想的效果。

4结束语

Kinect 篇2

增强现实AR(augmented reality)技术[1]是一种利用计算机系统产生三维信息来增强用户对现实世界感知的新技术。在增强现实中,虚拟物体模型的建立与真实感绘制效果会对用户的感知能力产生影响。从用户所处的真实场景中准确地重建出真实物体的三维模型在增强现实中占有重要的地位。

在三维模型重构中,深度图的准确获取是非常关键的一点,是后续所有工作的基础。利用Kinect来获的深度图像中,噪声较传统扫描仪要大,主要分为两部分:一是噪声点,是指深度图像中没有获得深度值的点状区域,它是Kinect随机生成的,具有不确定性;二是空洞,是指深度图像中未获得深度值的块状区域,它是由于Kinect的红外发射器和接收器的位置不同,导致景深较大物体在靠近景深较小物体边缘的时候,深度信息不能被获取,形成了较大面积的空洞。这种情况形成的空洞在不改变Kinect和场景相对位置时,是不能直接获得,只能通过选择邻域中的有效深度点进行计算得到。中值滤波算法,Tomasi[2,3,4,5]提出的双边滤波算法,Chang、Moulin[6,7,8]等提出的高斯滤波对于彩色图像有较好的表现。但是在深度图中,这些算法不能很好地填补大范围空洞。Camplani M[9]等提出了基于双边滤波改进的时空空洞填补策略,但是该方法时间复杂度太高。

本文针对上述问题,提出了一种基于轮廓的自适应非对称高斯滤波算法(OAAG),较好地解决上述问题。

1 基于轮廓的OAAG算法空洞填补

本文提出的算法基本思想是:首先,对Kinect进行标定;然后对获得的同一场景中一系列图像进行处理,在去除零星的噪声点的同时,获得场景的模板深度图像;再利用获取的彩色图片取得场景的轮廓图;最后利用OAAG算法对模板深度图像的空洞进行填补,得到最终的深度图像。

1.1 深度图噪点去除

定义Di(m,n)是获得的彩色图对应Kinect获得的一系列深度图,深度图有M×N个点,那么Di(m,n)∈Q,其中:

从Kinect视频流中取出n帧连续深度图像:

D1,D2,…,Dn,点(m,n)在这n帧图像中相应位置值定义为:d1(m,n),d2(m,n),d3(m,n),…,dn(m,n)。

式(1)表示di(m,n)所表示的值是否为有效值,在默认的模式下,(0.8~4 m)为有效深度范围;在近模式下,(0.4~3.5 m)为有效深度范围。计算n幅深度图像中该点深度有效的个数Ssum,如果Ssum大于我们给定的阈值则Sth这个点可以被填补,然后计算出像素点n副图像中的平均值davg(m,n):

然后把得到davg(m,n)依次记录到深度模板Dv中对应的位置;否则丢弃。把最后得到的有效的点都记录得到被填补空洞的深度图模板Dv:

1.2 计算RGB图像的梯度图和提取轮廓

定义C(m,n)表示彩色图像转换的图像中,每个点的梯度变化率,C(m,n)∈P,其中P={C(m,n)|m∈[1,M]∩n∈[1,N]}。若要得到很好的边缘信息往往需要达到亚像素级别。

首先将彩色图像按照式(4):对图像进行灰度化。

其中x+y+z=1,x、y、z的选取根据图像选取;然后对灰度图进行轮廓提取。图像中边缘通常是灰度值急剧变化部分,而梯度值反映为一阶导数的二维等效函数式。本文采用改进的Canny算法[10]进行轮廓提取。x、y方向的梯度计算公式:

在改进的Canny算法中,对于梯度的计算选取的是Isotropic Sobel模板[11],x、y方向的方差fx(m,n)、fy(m,n)分别为:

其中:I[m,n]=(▽G(m,n))×davg(m,n)=▽(G(m,n)×davg(m,n))G(m,n)是图像高斯平滑滤波核;f(m,n)为原像素点的值。我们得到的该点的幅值方向:

Isotropic Sobel算子不仅能解决计算梯度幅值时准确边缘定位问题,还能抑制噪声。

利用插值法改进传统的Canny算法中非极大值抑制,根据该点的fx、fy符号、方向以及θ值进行选取插值的点,最后得到:

其中r(H1)、r(H2)、r(H3)、r(H4),分别为该点四周选取的插值点的幅值,若r(m,n)>X1、r(m,n)>X2同时成立,则r(m,n)为极大值点。最后对梯度进行双阈值处理得到轮廓。

1.3 OAAG权值计算

对获得的深度模版进行空洞填补:设置一个W:Z×Z的滑动窗口,对窗口内的空洞点进行填补。首先判断窗口内的Davg的比例Davg%,即窗口内有效的深度值点的个数和窗口内总的点数比例,如果Davg%小于给定的阈值Dth%。那就暂时不对这个窗口内的中心点进行填补,等待下一次遍历时候处理;如果大于Dth%,则再判断窗口中是否有轮廓点,如果没有轮廓点,则对中心点进行立即填补,如果含有轮廓点,那么这些轮廓信息会把窗口内的深度点分割成几个部分,需要分别对这几个部分的中心点进行填补,分别对这些部分的有效点比例进行计算,这个比例应该是每个部分的有效像素点个数和该部分总的像素点个数的比例。看这个比例是否大于给定的阈值Dth%,若小于阈值,则暂时不对该部分中心点进行填补;若大于阈值,则对这部分的中心点进行填补。

基于轮廓的自适应非对称高斯滤波(OAAG)邻域各点的权值计算表达式为:

其中:

式中,ε需要用实验确定。若被填补的点的窗口中没有轮廓,则g(Z)=1。

若被填补的点的窗口中有轮廓,则:

对权值进行归一化:

式中,W(m,n),即为最后的权值。

n为窗口内有效深度点个数。窗口每次移动一个像素,窗口遍历完所有深度点后,判断填补的效果是否达到要求,若没有,则根据对效果的需求选择需要的迭代次数,直至得到最后的深度图Dlast。

算法的流程图如图1所示。

2 实验结果和比较

在实验之前,首先对Kinect进行标定和对齐,以便获取的彩色图和深度图能够对齐。

2.1 本文算法与传统滤波算法比较

目前常见的深度图去噪和空洞填补的方法有中值滤波、双边滤波、高斯滤波等。下面是分别用这些传统的去噪算法和OAAG算法对Kinect获得的深度图进行空洞填补,并进行比较。滑动窗口设为5×5。

图2为深度图对应的彩色图,图3是根据改进的Canny算法,从彩色图中获取的轮廓图。

图4、图5分别是深度模版图所对应的Matlab显示的立体视图和平面视图,在图5中可以很直观地看出对应轮廓的部分出现了较大面积的空洞;对应在Matlab中,x、y轴表示该点在深度图中对应的坐标位置,单位是一个像素;z轴表示深度图中的深度值,单位是一个灰度值(深度值映射到灰度图像的一个像素值)。图像4中纯黑色部分表示空洞。不同的灰度值代表着不同的深度。

图6和图7分别表示中值滤波后深度图由Matlab显示的立体效果图和平面效果图,从平面图中可以看出对深度图中零星的噪声点处理的很好,但是对于空洞的填补效果比较差,并且在边缘处有明显的模糊。对空洞处理效果很差。

图8和图9分别表示深度图双边滤波处理后过后Matlab立体显示和平面显示的效果图。从两个效果图中可以看出图像边缘被明显的模糊,但空洞并没有很好的得到填补。

图10和图11分别表示深度图高斯滤波多次迭代过后由Matlab立体显示和平面显示的效果图。传统高斯滤波对图像边缘的模糊过于严重,多次迭代过后边缘基本模糊不清。

图12和图13分别是OAAG对空洞填补完成后,由Matlab显示的立体显示和平面显示图。在图12中,在相应的轮廓边上的颜色分别和轮廓两边的颜色相同,也就是轮廓两边的深度值分别和邻近的深度值相近。可以得出该算法对空洞填补的深度值和实际值相近,很好地对空洞进行了填补。图13中显示出的轮廓和图3中的轮廓一致,并且空洞填补的效果很好。

从上述实验中可以看出,本文提出的OAAG算法能够很好地解决传统滤波算法对深度图空洞填补的缺点,在有效填补空洞的同时能够很好地解决边缘模糊问题。填补后的深度值也较为精确。

2.2 深度图处理前后的彩色纹理贴合效果比较

最后,我们将处理前后的深度图分别与RGB图像融合,按照对应坐标,把彩色纹理贴合到深度图中,最后通过点云库(PCL)显示出来。

从图14和图15可以看出,填补后的深度图贴合纹理信息后效果很好,可以使得三维重建的效果反映更真实的场景信息。

3 结语

本文提出的基于轮廓的自适应非对称高斯滤波方法,通过彩色图中精确的轮廓信息来保存深度图中轮廓信息,保证在提高深度值填补准确性的同时,边缘在去噪过程中不会被模糊。文中提出的OAAG算法经过与传统算法的实验比较,明显提高了填补效果,并且填补的信息的准确性也要优于传统算法。通过该方法填补的深度图用于三维场景重建,可以更好地应用于增强现实系统中,增加沉浸感的同时,也为三维注册、虚实融合、虚实交互等提供便利。

参考文献

[1]陈一民,李启明,马德宜,等.增强虚拟现实技术研究及其应用[J].上海大学学报:自然科学版,2011,17(4):412-428.

[2]Smith S M,Brady J M.SUSAN a new approach to low level image processing[J].International Journal of Computer Vision,1997,23(1):45-78.

[3]Tomasi C,Manduchi R.Bilateral filtering for gray and color images[C]//Computer Vision,1998.Sixth International Conference on.IEEE,1998:839-846.

[4]靳明,宋建中.一种自适应的图像双边滤波方法[J].光电工程,2004(7):65-68.

[5]杜小燕,姜晓峰,郝传刚,等.点云模型的双边滤波去噪算法[J].计算机应用与软件,2010,27(7):245-246,264.

[6]Chang S G,Bin Y M Vetterli.Adaptive wavelet thresholding for image denoising and compression[J].IEEE Transactions on Image Processing,2000,9(9):1532-1546.

[7]Chang S G,Bin Y,Vetterli M.Spatially adaptive wavelet thresholding with context modeling for image denoising[C]//International Conference on Image Processing(ICIP 98),1998:535-539.

[8]Moulin P,Juan L.Analysis of multiresolution image denoising schemes using generalized Gaussian and complexity priors[J].IEEE Transactions on Information Theory,1999,45(3):909-919.

[9]Camplani M,Salgadol.Efficient spatio-temporal hole filling strategy for kinect depth maps[C]//Proceedings of SPIE,2012:8920.

[10]张玲艳,闰丽,王大凯.图像梯度分类的概率模型及在边缘检测中的应用[J].Computer Engineering and Applications,2010,46(18):180-182.

Kinect:人机交互新入口 篇3

这款小小的游戏设备带来的影响远不止在游戏领域。Kinect刚一问世,就以其创新的设计吸引了大量黑客的目光。他们显然不想让这个神奇的东西仅仅用来玩游戏。于是各种各样新奇的点子开始围绕Kinect产生出来。

从外观上看,Kinect象是一个笨重的电脑摄像头,比普通的电脑摄像头个头要大。看似普通的外表下,是两颗摄像头,一颗是普通的RGB摄像头,和平时见到的摄像头并无二致;另一颗是红外摄像头,用来检测物体到摄像头的距离。基于这样的硬件,背后的算法实现了更多的基础功能,例如检测人体的骨架,检测四肢的动作等等。

有了底层硬件和算法的支持,微软提供的专为Kinect设计的一系列游戏也充满了新奇的乐趣。

Kinect的创新之处,主要在于利用两个摄像头来识别人体的各种动作,从而实现无接触式操作。这一创新突破了几代人机交互界面必须接触设备的限制,此前的无论是键盘、鼠标、触摸板还是触摸屏,甚至于Wii的体感控制手柄,都需要手和这些设备直接接触。而Kinect则在人体和设备不接触的情况下实现了对系统的控制。看似很小的一步,实则凝聚了大量的技术,否则也不会引来黑客界一片喝彩了。其实Kinect也配有麦克风,可以进行语音控制,但这个功能跟体感控制相比显然只是附加的。

让微软始料未及的是,围绕Kinect的开发热潮迅速席卷了全球,黑客们开发了很多好玩的应用,例如手势输入法、体感浏览器等等。微软顺势推出了给电脑使用的Kinect设备以及相关的编程接口。除了提供技术上的支持,微软还采用了现在火爆的创业孵化器的形式,和在美国仅次于YCombinator的孵化器公司TechStars联手,举办了Kinect加速器。全球范围内微软广发英雄帖,共有超过500个团队被吸引参选,最终有11个队伍参加了最后的孵化器。参加孵化的这11个队伍,代表了当前Kinect应用开发的最高水平。这些应用五花八门,利用了Kinect的不同特性。

利用Kinect检测人体动作这一特性的公司有Gesture, 他们研发了基于Kinect的模拟鼠标系统,市场目标是手术室的医生。由于无菌的要求,医生无法直接使用鼠标或者键盘这样的接触式设备。一般的解决方法是停下手术戴着厚手套操作,或者由医生指挥护士操作。这显然不如Kinect控制电脑来的方便和直接。另一家利用了姿势检测的公司Jintronix也瞄准了医疗市场,他们设计的软件用来帮助中风病人恢复。通过Kinect可以知道病人的动作做的标准不标准,并且给出康复计划,监控恢复进度等等。这样的治疗方案比起医生的治疗要廉价很多,使得更多的人能够负担得起。Ubi使用Kinect检测手指的动作,从而能够将手指在投影上的动作识别为点击、拖动等触摸屏的操作,利用这一创意,他们可以将任何显示屏或者投影变成“可触摸”的体验。

前面提到Kinect有两个摄像头,除了一个普通的RGB摄像头,另有一个检测深度的红外摄像头。我和合作伙伴一起创办的公司NConnex就是利用了这一特性,实现了将Kinect变成3D扫描仪的算法。用户只需要拿着Kinect绕着物体走一圈,就可以得到物体的3D模型了。第一批用户主要来自家具行业,他们利用这一解决方案将店里的家具变为3D模型,再利用NConnex提供的iPad增强现实应用,使得要购买家具的消费者可以在家里提前感受一下家具的真实大小和风格是否和房间匹配,从而方便消费者挑选家具,减少退货率。 另一家利用红外摄像头做3D扫描的是Styku,不过他们选择的领域是服装试穿,通过扫描身体,得到一个人体的3D模型,再给消费者推荐合适尺码的服装,帮助网购的消费者挑到正确的衣服。

还有剑走偏锋的Kimetric公司,试图利用Kinect检测到的人体骨架来判断消费者的年龄、性别、身高等数据,从而得到一个自动统计系统。目前他们正将这套系统给美国的一些商场试用,商场可以在想检测的商品柜台前安装一个Kinect,从而知道关注该商品的消费者的一些群体特征。还有其他一些公司将Kinect用于老人行动监测,体育教学等领域,也带来了不少新意。

Kinect从发布到现在还不到两年时间,不过前景一片光明。参加孵化器的这些公司虽然也只是刚刚起步,但是已经获得了风险投资的支持来进行更大的发展。微软也宣布将会在Windows8中直接支持Kinect,更是表明了对这一设备的看好。Kinect给人机交互带来的革命,将使它走出客厅,走进办公室,走进医院,走进车间,走进健身房,甚至走向太空。

kinect外文文献翻译解析 篇4

摘要

我们分析的Kinect作为3D测量设备,实验调查深度测量分辨率和误差性能和使超高动力学的定量比较精度立体声重建从单反相机和一个3D-TOF相机。我们提出的Kinect几何模型和它的校准程序提供精确的校准Kinect的3D测量和Kinect摄像头。我们通过整合演示的Kinect校准的功能它变成一个SFM管道,其中三维测量从运动的Kinect被变换成一个共同的坐标系统通过从比赛计算相对姿态 彩色摄像机。

1.简介

Kinect正成为一个重要的三维传感器。它接收了大量的关注表示感谢,以人迅速对构成三维测量上开发识别系统。测量的成本低,可靠性承诺使Kinect的主要3D测量室内机器人,三维场景重建设备,和物体识别。

在本文中,我们提供的几何分析Kinect的,设计它的几何模型,提出了一个校准过程,并展示其性能。方法建模Kinect的几何形状,从而出现近日,为了解一个良好的基础传感器。主要有以下几种最相关的作品。文献结合OpenCV的摄像机标定用Kinect的逆差距的计量模型来获得基本Kinect的校准程序。他没有学习Kinect的传感器的特定功能,并没有纠正他们。几乎相同的程序实施活性氧,其中该红外线之间的表观位移和深度图像被校正。这种做法的另一个变化出现在,其中的OpenCV校准替换通过Bouguet的校准工具箱。我们建立在以前的工作之上,并设计了一个精确的校准程序的基础上考虑的几何模型,以及作为一个额外的校正程序会计“学习”对于剩下的非建模误差。我们使用全相机型号和他们的校准程序为实现在,超高动力学逆视差之间的关系和深度如,正确深度和红外图像位移如,并添加其他校正训练有素的校准板的例子。我们证明该校准超高动力学可以与结构相结合运动来获得三维数据一致的坐标系中,允许通过多视角来构建观测到的景物的表面立体声。我们的对比表明,Kinect是优越在精度SwissRanger SR-40003D-TOF相机接近中等分辨率单反立体声钻机。我们的研究结果是根据[10]其中兼容观测关于Kinect的深度量化被提及。

图1.Kinect的由红外(IR)投影仪,红外照相机和RGB摄像头。

图2.Kinect的两尼康D60单反相机钻机。

2.作为Kinect的三维测量装置

Kinect是由一个红外投影仪的复合设备一图案和IR照相机,其用于三角测量点在太空中。它可以作为一个深度摄像头,以及一颜色(RGB)相机,它可以用来识别图像内容和纹理的3D点,图1作为测定装置,超高动力学提供三种输出:红外图像,RGB图像,以及(逆向)深度图像。

2.1 红外图像

IR(1280×1024像素的57×45度视场,6.1 mm焦距长,5.2μm像素大小)摄像头是用来观察和解码红外投射图案三角3D场景。如果由卤素灯[16,19],同时提供适当的照明红外投影受阻,如图7(c,d)中,它可以可靠地校正由[2]使用用于相同的棋盘图案在RGB摄像头。相机表现出不可忽略的径向和切向变形,标签2。

2.2 RGB图像

RGB(1280×1024像素的63×50度视场,2.9毫米焦距,2.8μm像素大小)相机提供介质质量的图像。它可以由[2]进行校准和用于跟踪由SFM系统,例如照相机运动[17,7]。

2.3 深度图像

超高动力学的主要原料输出是对应的图像到的深度在场景中。而不是提供实际深度z,Kinect的返回“逆深度”d图。图3(a)。考虑到深度分辨率达到的Kinect的(部分2.4),我们通过模型等式。5建议在[3]。深度图像是通过三角测量构造从红外图像和投影,因此它是由IR图象,等式“携带”。5。

2.4 深度解析

图3(b,c)表示深度分辨率的函数距离。深度决议通过移动测量Kinect的距离(0.5米,15米)从平面靶足够精心录制返回所有值约5◦视图围绕图像中心领域。量化步骤q的大小,也就是距离两个连续的记录值之间,被发现是深度z的以下函数:

q(z)= 2.73 z2 + 0.74 z − 0.58 [mm].(1)以Z米。q中开始,RESP值。的操作范围在末端,分别为q(0.50 m)=0.65 mm, resp.q(15.7 m)= 685 mm.(a)Kinect逆深度作为实际深度的函数。

(b)深入Kinect的量化步长Q(0-15米)。

(c)Kinect的深度量化步长(0-5米细节)。

2.5 红外图像和深度图像之间切换

发现IR和深度图像被移位。为了确定移位[U0,V0]?几个不同的目标被捕获红外和深度图像,图。图4(a)。对比目标从背景和分割出移是通过使分割的形状在确定最好对准,图图4(b)。几个实验对象不同结果形状如表1所示。1.移估计为平均值在所有实验。我们的结果表明,在深度使用尺寸的相关窗口7×7像素计算处理。这是接近9×9的窗口大小估计在[11]。

(a)对准前

(b)对准后

图4.红外深度图像移位和校正。

一个目标的红外图像显示为黑色。的深度图像目标是通过其白边表示。

表1.红外深度摄像头像素位置偏移。

3.Kinect的几何模型

我们建模的Kinect作为由多视图系统RGB,红外和深度摄像头。RGB的几何模型和红外摄像机,其投射一个三维点X为图像点[U,V]?,由[2]给出的失真参数K =[K1,K2。。,K5],摄像机标定矩阵K,旋转R和摄像机中心C[6]。

图5.Kinect的几何模型。

超高动力学的深度相机相关联的几何红外相机。它返回逆深度d沿z轴,图5,对每个像素[U,V]的红外摄像机作为

其中,U,V是由方程给出。3,真正的深度z由公式。4,[U0,V0]按Tab键。1,X代表一个3D的三维坐标点,以及C1和C0是模型的参数。我们联想Kinect的坐标系与红外相机,因此得到RIR=我和CIR=03D点XIR构造从测量[X,Y,D]在深度图像通过

并投射到RGB图像作为

其中,存款保险计划是由等式给出的失真函数。3,基里巴斯,kRGB是红外的各自失真参数和RGB摄像头,KIR是红外摄像机标定矩阵KRGB,RRGB,CRGB是校准矩阵,所述旋转矩阵和中心将RGB摄像头。

4.Kinect的标定

我们校正[2] Kinect的摄像头一起通过展示相同的校准目标到IR和RGB照相机,图7(c)。以这种方式,两个照相机被校准w.r.t.该相同的3D点和相机WRT的因此姿势点可以链接给他们的相对姿态,图8.以直角坐标红外相机作为系统Kinect的全球坐标系,使相机相对造成等于RRGB,CRGB。标签。2,第3显示内部参数和图图6显示效果在摄像机的扭曲。我们包括切线畸变,因为它的非忽略增加了整体三维测量的精度。图。图7(a)示出了该IR图像在正常运行的Kinect标定板当它是由其IR发射照亮。更好的图像是通过阻断红外投影仪和照明获得由卤素灯图偏出。图7(b)。

图6.既Kinect的摄像头预估失真的影响。

红色数字表示的尺寸和箭头的方向像素位移引起的透镜失真。交叉显示图像中心的圆的主点的位置。

图7.在IR,RGB和深度图像的校准板。

参数C0,深度相机的C1被校准如下。我们得到了N次测量,正从深度图像全部校准点,图7(d)。笛卡尔坐标相同XIRi校准点测量在IR笛卡尔系统通过交叉投影点进去红外图像的光线用最好的平面装配到重建的校准点。参数C0,C1进行了优化,以最合适的XDI到使用等式6。

表2.Kinect的红外摄像机内部参数。

表3.Kinect的摄像头RGB内部参数。

图8.位置和Kinect的IR和RGB摄像头的方向

与单反一对立体声(左,右)与3D完全校准重建在平面校准目标点。

图9.平面残差拟合出的固定模式噪声

从不同的距离的深度图象。

表4.评价的z修正。的标准偏差

平面的残差拟合到平面目标的测量已经减少。

4.1 学习复杂的剩余误差

它已经观察到超高动力学校准与上述程序仍然呈现小而相对复杂的残余错误近距离测量。图。9显示残差平面拟合到校准Kinect的测量后平面靶的跨越视场。目标已被抓获,从18个不同的距离,从0.7至1.3米,高度相关的残差进行核算。沿250水平深度图像行残差图10(a)。残值是一贯的积极中心和负在外围。为了补偿该残留误差,我们形成z值的Z校正图像构造为所有的残余图像的逐像素平均。的z校正图像是从z中减去坐标XIR的计算等式所。6。为了评估该修正方法,在z校正图像从甚至图像,然后对残差构建施加到奇数(表的第一行。4)和偶数(第二行选项卡中。4)深度图像。的标准偏差残差下降。施加的z校正Kinect的测量后从在第5.1节,平均所描述的实验的残留误差减少了约0.25毫米,图。图10(b)。在4410点的残差进行评价跨越视场。

5.验证

5.1 Kinect的,SLRStereo和3DTOF的比较

我们比较的平面靶的测定精度通过Kinect的,单反立体声和3D TOF相机。Kinect和单反立体声(图像尺寸2304×1536像素)分别为刚性地安装(图2)和校准(图8)在一起。单反立体声被重建校准点完成由[2]提取并通过线性最小二乘三角三角[6]。他们测量了同一平面靶中315控制校准点在每个14的目标。SR-40003D TOF[13]不同的测量平面靶,但在一个可比的距离范围0.9Kinect的标定:代码完成。http://,2010年2月

[20]柳树车库。摄像机标定和三维重建。HTTP:// OPENCV。

willowgarage.com/documentation/cpp/camera_calibration_and_3d_reconstruction。HTML,2011年6月

Kinect 篇5

关键词:指尖识别,Kinect,OpenNI,手势识别,人机交互

在研究和工业领域, 自然人机交互 (N-HCI) 一直是重要的研究课题[1], 而手势具有直观性、自然性等特点。近几年, 针对基于Kinect深度图像的指尖、手势识别技术这个问题已经有许多相关的研究[2]。例如:陈艳艳等人[3]提出在形态学操作下, 基于形状对手掌部分进行剔除, 并结合手心位置从手指部分识别指尖的方法。这种方法的误差较大只能处理手掌展开且正对摄像头的情况, 鉴于手掌的自遮挡概率较高以及不同人手掌尺寸的差异性较大, 根据某一特定比例剔除手掌来分离手指的效果并不理想。邓瑞等人[4]提出使用支持向量机 (SVM) 进行特征训练, 并识别手势的方法。但该方法只能识别出经过训练的特定手势, 无法识别出指尖的具体位置。Feng等人[5]提出基于K均值聚类的方法将整个前臂的深度图分割成手和手臂两个区域, 分析手臂部分的方向识别出手的区域, 并根据该区域中的点到其他簇中心的距离来检测指尖的方法。这种方法可以得出指尖的位置信息, 但只能处理仅有一根手指伸出的情况, 且聚类的结果一般不够理想。

本文提出一种借助计算手形的凸包点来分析并识别指尖, 来判断手势的方法。通过Kinect传感器获取深度图像信息, 利用Open NI手部分析模块获取手心的位置, 并结合最近邻法从深度图中分割出手的部分。提取手形轮廓, 采用射线求交法优化传统的Graham Scan算法, 并计算出手形的凸包点集合, 然后利用轮廓分析法对凸包点进行指尖检测。本文最后基于检测得到的指尖数目, 结合手形面积和凸包面积的比例等因素, 实现了对“抓取”动作的判定, 实验结果表明, 该方法具有良好的识别效果及鲁棒性。

1 Kinect设备获取手部信息

1.1 Kinect简介

2010年11月, 微软发布了一款针对XBOX360游戏机开发的体感外设, 其核心是三维体感摄像机, 能够实现即时动作捕捉、影像辨识、语音输入等功能, 图1为Kinect外观图。

如图1所示, Kinect主要是由红外线发射器、RGB彩色摄像头和红外线CMOS摄像头所构成的3D深度传感器所组成[6]。与普通摄像头相比, Kinect的主要特点是具有CMOS红外传感器, 通过这个传感器感知周边环境, 而且不受周围光照环境的影响。红外传感器通过黑白光谱的方式来标度被测物体的深度值, 即其距离传感器的距离:越黑表示距离越远, 越白表示距离越近[7]。它收集感知范围中每一点的深度信息并保存成一幅深度图像。传感器以每秒30帧的速度生成深度图像流, 以达到对周围环境的实时监测。

1.2 Open NI获取手心位置

Open NI是一个多语言、跨平台的框架。该框架定义了编写自然交互程序所需要的API接口, 以方便利用视觉、声音等设备进行开发。目前Open NI支持的硬件包括:3D Sensor、RGB Camera、IR Camera和Audio Device4类[7]。

目前Prime Sense已经提供了一套NITE作为最主要的中间件, 并提供上述4种功能。利用第2个手部分析的功能即可得到手心的位置信息, 图2为利用NITE识别出的掌心位置。

识别手心需要通过挥手的动作激活。将手掌伸开, 指尖朝上放在离Kinect一定距离 (20 cm~1 m) 的范围内, 挥动手掌, 不能过快或过慢, 且幅度不能太小。NITE识别出手掌以后, 用灰色点来标识出掌心的位置, 如图2所示。

2 指尖识别及手势判定

2.1 Kinect坐标系

设Kinect捕获的深度图像尺寸为w×h (默认640×480像素) , 则其坐标系如图3所示。

其中, 原点为摄像头的位置;z轴为摄像头到物体的方向。

2.2 最近邻法分割手部

为了实现指尖识别的功能, 首先需要从深度图中分割出手的部分。手掌具有一定厚度, 且手心的位置之前已经利用Prime Sense的NITE提取出来, 因此可以利用最近邻法从深度图像中分离出手部。

首先对Kinect深度图进行高斯滤波处理, 其作用是对整幅图像进行加权平均, 使其中每个像素的值都由周围邻域内像素点的值加权平均得到, 从而减少噪声的干扰。其次分离手部深度图像, 并对其二值化。Kinect捕捉的深度图用灰度的方式表示物体离摄像头的距离。约定识别时手部伸到身体前侧, 这样手的部分在深度图中的灰度值会比后方身体及周边环境的灰度小, 然后根据事先获取的手心的深度值, 在z轴方向上设定一个阈值T, 将在手心深度加、减T的范围内的点按照式 (1) 提取并进行二值化。

式 (1) 中, d为手心的深度值;T为手掌厚度阈值;depth (x, y) 为深度图像中坐标为 (x, y) 的点的深度值;hand (x, y) 即为分离出的手部深度图像中坐标为 (x, y) 的点经过二值化处理后的值。

图4为手部分割的效果, 其中图4 (a) 为Kinect深度图, 被白色矩形圈出来的为手部, 图4 (b) 为用最近邻法分离出来, 并经过二值化的手部图像。

2.3 手形的提取

从深度图中分离出手部的二值化图像以后, 需要接着将手形轮廓从二值化图像中提取出来, 以方便后面对凸包的计算。

本文采用了一种比较简便的方法获取手形轮廓:逐行遍历二值化图像, 用一个变量pre Color来标记前一个像素点的颜色值, 每次与当前点的颜色值进行比较, 如果颜色值不同, 即说明当前点为轮廓上的点, 将该点保存到轮廓数组中。遍历完整幅图像后, 得到一个保存了所有轮廓点的集合, 作为下一步计算凸包的输入。

2.4 优化Graham Scan算法计算凸包

本文提出的指尖识别算法基于计算凸包点实现。手掌在处于伸开状态时, 通常情况下5个指尖均是凸包点之一, 因此在识别指尖之前, 需要计算出手形轮廓点集的凸包。

平面点集Q的凸包 (Convex Hull) 是一个最小的凸多边形P, 满足Q中的每个点或者在P的边界上, 或者在P的内部, 本文中凸包用CH (Q) 来表示。对于平面中点集Q的N个点p0, p1, p2, …, pN, 其凸包CH (Q) 可以表示为

式 (2) 中, CH (Q) 为凸包;pi为凸包内第i个点;N为凸包内点的数量;λi为pi的权值。

如图5所示, 点集Q={p1, p2, …, p12}的凸包为由p0, p1, p3, p10, p12围成的凸多边形, 其中p0, p1, p3, p10, p12为凸包点。

本文采用Graham Scan算法[8]来计算凸包。Graham Scan算法实现简单, 时间复杂度为O (Nlog N) , 其中, N代表参与计算凸包点的候选点的个数, 亦即在上一步提取出的手形轮廓点。由于N的值比较大, 因此带来的计算量也会增大, 考虑到本文的指尖识别需要应用到实时3D虚拟试衣系统中, 过大的计算量可能导致系统无法达到实时的交互效果, 因此在计算凸包点之前, 需要对候选点集合进行优化。

本文采用基于射线求交的扫描方法对Graham Scan算法进行改进。基本思路为:在执行扫描算法之前, 首先遍历轮廓点集合Contour, 找到最顶、最底、最左、最右的4个点PT、PB、PL、PR, 如图6 (a) 所示。在计算这4个点的过程中, 对于顶端和底端的点, 如果有多个点有相同的纵坐标, 则取横坐标最小的点;同样对于最左和最右的点作为PT (或PB) , 如果有多个点拥有相同的横坐标, 则取纵坐标最小的点作为PL (或PR) 。找到4个端点以后, 由这4个点构成一个四边形LTRB, 见图6 (a) 中的四边形。可以证明在此四边形内部的轮廓点均不是凸包上的点, 可以将其剔除。实验表明, 剔除率平均水平高达60%, 这样可以大幅提高扫描算法的效率, 保障了系统的实时性。

射线扫描法的关键问题在于如何快速地判断候选点在四边形的内部还是外部。具体的思想如下:首先, 设4个顶点的坐标分别为PT (x1, y1) 、PL (x2, y2) 、PR (x3, y3) 、PB (x4, y4) 。根据坐标分别写出4条直线的方程, 以直线LB为例, 其方程为

然后, 对于某个候选点P (x, y) , 沿着平行于X轴的方向, 向某一方向做射线, 并分别求出与LB、BR、RT、TL四条直线的交点。可以证明, 倘若交点个数为奇数, 则说明点P在四边形内部;反之若为偶数, 说明点P在四边形外部。如图5 (b) 所示, 分别由点P1、P2水平向右做射线, 求出交点个数:P1为奇数, 在四边形内部;P2为偶数, 在四边形外部。利用射线扫描法对候选点进行优化后, 就可以运用经典的Graham Scan算法计算出凸包点。

2.5 轮廓分析法识别指尖

从凸包点中识别出指尖的方法主要有模板匹配和轮廓分析两种[6]。模板匹配的效率不高, 因此本文采用基于曲率特征的轮廓分析方法对指尖进行识别。

对每个候选凸包点, 如图7 (a) 中点P (x, y) , 从轮廓数组Contour中分别找出位于P左右两侧, 且到P的距离均为特定长度d的点P1和P2。分别做线段PP1和PP2的中垂线L1和L2, 求出交点O, 则线段OP即为过P、P1和P2三点的圆的半径r。以r来表示点P处的曲率特征, 设定阈值T, 如式 (4) 所示, 当满足r在阈值范围内时, 即判定凸包点P为指尖

经过实验测试, 定长d选择约在30像素, 阈值T设定约在35像素时, 效比较理想。

2.6 手势的判定

本文的手势判定算法主要针对Kinect体感三维虚拟试衣软件的交互情况进行研究。在三维虚拟试衣软件中, 主要用到的手势即为“抓取”手势, 用户通过该手势来表达“选中”的命令, 因此本文主要对“抓取”动作进行识别。抓取动作分为两个状态:手掌张开和手掌握拳, 对于单独每帧的状态, 本文提出根据指尖的数目和面积比例进行判断的方法进行判定。

根据提出的指尖识别算法, 可以计算出每帧图像中指尖的数目Ntips。利用Open CV的Contour Area函数分别计算出手形轮廓的面积Shand和凸包的面积Sctr, 二者的比例s

设定阈值T1和T2 (实验中T1和T2分别设置为0.82和2) , 当指尖数目≤T1, 并且s>T2时, 判定此时状态为握拳状态;而其余情况下, 则判定当前为张开状态。

在单帧手势状态判定的基础上, 本文采用大小为N的缓冲队列对“抓取”手势进行识别。程序运行时, 统计队列中握起状态的数量, 当大于阈值M (实验中设定为8) 时, 判定发生“抓取”动作。算法流程图如图8所示。

在其他领域的研究及实际开发中, 经常需要对其他类型的手势进行识别, 而本文提出的基于指尖识别的手势判定方法具有一定的通用性和可扩展性, 该算法可以扩展到除“抓取”手势之外的其他手势的识别上, 如用手指表示罗马数字1~5的手势以及其他一些与指尖的数量相关的手势, 使用指尖数目结合特定的判定条件即可实现对其他相关手势的判定。

3 实验结果与分析

3.1 手势判定实验

“抓取”动作发生时, 手的朝向会有多种情况, 图9所示的分别为在手指朝上、朝下、朝左、朝右的情况下“抓取”动作的识别。

本文分别针对手指朝上、朝下、朝左、朝右4种情况进行了实验, 分别采集了10为实验对象的手势, 每位实验对象针对每种姿势做5次“抓取”动作, 每种情况下最终得到50次抓取实验结果。

3.2 实验结果分析

实验中, 每种情况下“抓取”动作的识别次数及准备率如表1所示。实验结果表明, 在手的每种朝向下, “抓取”动作的识别率都在80%以上, 对于识别失败的情况, 主要原因有:首先是Kinect体感设备返回的深度图时而会出现破碎的情况, 导致凸包点的识别出现错误, 最终致使识别结果出错;其次, 在朝下和朝左两种情况下手腕会发生偏转, 导致提取出的手形轮廓在手腕处容易出现尖角, 且较难过滤, 因此偶尔会被指尖识别算法误判为指尖, 从而导致这两种情况下手势判断的准确率相对较低, 在今后的工作中还将对指尖识别算法进一步改进。总体上, 本文的手势识别算法具有较高的识别率及较强的鲁棒性。

4 结束语

本文利用射线求交法对Graham Scan算法进行了优化, 改善了凸包的计算效率。另外, 本文使用轮廓分析法识别指尖, 相较于模板匹配法, 该方法具有更高的准确性。最后, 本文提出了一种基于指尖数目和面积比例判断“抓取”手势的方法, 实验表明, 该方法具有良好的识别率。在今后的工作中, 将对轮廓分析法进行完善和改进, 提高复杂情况下的识别准确率及鲁棒性, 并增加对更多其他手势的识别。

参考文献

[1]YEO H S, LEE B G, LIM H.Hand tracking and gesture recognition system for human-computer interaction using lowcost hardware[J].Multimedia Tools and Applications, 2013 (6) :1-29.

[2]REN Z, YUAN J, MENG J, et al.Robust part-based hand gesture recognition using kinect sensor[J].IEEE Transactions on Multimedia, 2013, 15 (5) :1110-1120.

[3]陈艳艳, 陈正鸣, 周小芹.基于Kinect的手势识别及在虚拟装配技术中的应用[J].电子设计工程, 2013, 21 (10) :4-7.

[4]邓瑞, 周玲玲, 应忍冬.基于Kinect深度信息的手势提取与识别研究[J].计算机应用研究, 2013, 30 (4) :1263-1265.

[5]ZHANG X, YE Z, JIN L, et al.A new writing experience:finger writing in the air using a kinect sensor[J].IEEE Trancesactions on MultiMedia, 2013, 20 (4) :85-93.

[6]LEE C K, LEE V Y.Fall detection system based on kinect sensor using novel detection and posture recognition algorithm[M].Germany:Springer, 2013.

[7]YANG K-P, VAN DELDEN S, BOND E.KinectFlix:a hand gesture recognition application for kinect to watch netflix[J].World, 2014, 2 (1) :6-9.

Kinect 篇6

当客户在商场中面对着各式多样的服装店中品种繁多的服装, 考虑服饰的搭配又要进行频繁的试穿, 这相对于大部分人来说是一个异常艰辛的过程。现场快速进行交互试衣搭配, 同时还为提供评分、照片等大量的丰富有趣的应用。满足客户试衣需求又兼具娱乐性。而针对服装店降低了对服务服务人员的依赖从而降低人力成本, 在销售方面试衣镜能够一方面能够提供大量的可展示服装, 减少由于店铺面积小造成的局限。三维虚拟试衣系统技术是一项新兴的技术, 该技术涉及三维建模、体感交互及人体模型重建及模拟等。当前, 该领域的技术研究一直是世界上研究的热点。针对三维虚拟试衣系统技术的研究具有重要的科学意义。目前现有的三维虚拟试衣系统使用较复杂的方法实现, 导致添加一款衣服时需要花长时间完整一件衣服的信息

2. 相关工作

2.1 Microsoft Kinect

Microsoft Kinect是微软公司于2010年推出的游戏机体感周边外设的名称, Kinect打开了新的与XBOX互动的方式。它使用了一个传感器装置, 具有身体运动, 面部以及语音识别功能。玩家可以通过口头命令和使用手部和身体动作交互。

Microsoft Kinect提供我们系统中所需要的功能:

2.1.1 骨骼识别

Kinect设备具有骨骼识别的功能, 设备可以识别用户的骨骼关节点在三维空间的位置。我们系统中使用骨骼识别功能用来识别用户的手势以及识别用户的姿势。

2.1.2 原始深度信息

Kinect提供的深度数据包括骨骼在三维空间的位置。系统使用用户里Kinect的距离计算衣服模型的大小调整。

2.2 Unity3D引擎

Unity3D是由Unity Technologies公司开发的一个跨平台的游戏制作系统, 包括游戏引擎和集成开发环境 (Integrated Development Environment, IDE) 。我们选择Unity3D开发平台的其中一个原因也是因为Unity3D的开发平台里面的功能支持我们在开发试衣系统中所需要的功能。首先Unity3D支持Kinect设备, 使用“Kinect with MS-SDK“。在使用的过程中, 首先需要安装Kinect with Microsoft SDK。在本系统最常用的函数和功能主要都在Kinect Wrapper包。

另一个重要的部分是Unity3D里面的插件InteractiveCloth, 也就是Unity3D开发平台的布料系统。

3. 系统流程

根据以上国内和国外的研究现状, 我们的研究目的是展示衣服的三维模型, 使得用户可以叠加衣服或者配件的三维模型或图像在顾客的实时视频。叠加的衣服的三维模型或图像将跟踪客户的运动, 从而使显示如用户是项目里的戴虚拟衣服在视频图。

通过获取用户在Kinect面前的真人用户的信息, 给用户试穿, 呈现出三维效果, 然后对布料的动态模拟进行模拟并完成。研究对最优的方式呈现一个一个增强现实的基于Kinect的真人虚拟试衣系统。主要研究内容包括:Kinect的提取信息, 处理用户信息以及显示部分。

以下图1所示为系统的流程图。

Kinect提取信息主要的内容是从Kinect设备获取系统需要的信息。其中包括获取Kinect设备的状态, 设置Kinect设备的角度, 以及获取Kinect设备的数据。Kinect设备的数据包括:深度数据, 彩色数据, 以及骨骼数据。

处理用户信息包括:识别用户以及跟踪用户。识别用户主要的内容是处理Kinect的数据, 识别该被识别的用户。用户跟踪部分包括:跟踪用户的骨骼以及跟踪用户的位置。

我们使用虚拟人偶模型和用户骨骼信息做绑定。

显示部分主要包括三个部分:GUI, 衣服动态展示以及视频展示。

GUI部分主要是界面的部分包括按钮以及鼠标部分。衣服动态展示包括衣服在大屏幕的展示部分。视频展示主要是显示用户实时的视频部分。

3.1. 处理用户信息

处理用户信息为系统最核心的部分, 主要是处理从Kinect设备获取的数据, 为了显示衣服的效果。

3.1.1. 获取关节点信息

Kinect设备具有深度摄像头, 使用深度摄像头设备, Kinect具有识别骨骼的功能, 通过20个关节点表示用户的骨架。当用户走进Kinect设备也视野范围内的时候, Kinect可以把20个关节点的位置找到, 位置是通过三维空间 (X, Y, Z) 坐标来表示。通过获取的每个关节点的三维空间坐标, 系统做出下一步的处理。

在系统开始启动的时候, 系统实时的测试在Kinect前面是否识别到用户。当系统识别到用户时, 系统保存用户实时的数据。以下图2为Kinect设备可以识别的关节点。

3.1.2. 跟踪用户的姿势

用户跟踪过程的目的是为了把人体模型的姿势匹配与用户的身体姿势。通过Kinect设备获取用户的骨骼信息然后把骨骼的每个关节点保存在一个容器, 再把骨骼信息应用在已建立好的人体模型使得人体模型模仿用户的姿势。第二章已详细的解释Kinect设备具有深度摄像头, 使用深度摄像头设备, Kinect具有识别骨骼的功能, 通过20个关节点表示用户的骨架。当用户走进Kinect设备也视野范围内的时候, Kinect可以把20个关节点的位置找到, 位置是通过三维空间 (X, Y, Z) 坐标来表示。通过获取的每个关节点的三维空间坐标, 系统做出下一步的处理。

在系统开始启动的时候, 系统实时的测试在Kinect前面是否识别到用户。当系统识别到用户时, 系统保存用户实时的数据。

为了保存骨骼信息, 我们建立了一个虚拟人体模型以及根据每个关节的关系建立了一个骨架的作为保存骨架数据的容器。

3.1.3. 调整衣服模型的大小

为了调整衣服模型的大小, 我们使用用户的点数来分别衣服模型的大小。首先我们获取用户当前的信息, 其中包括两个肩膀在空间的距离。然后根据不同的比例调整衣服模型的大小。

4. 测试与结果

我们使用两个用户做试验测试, 一个女性身高为163厘米, 一个男性身高为170厘米。

以下图3所示, 在使用具有少于5000个顶点的布料模拟的衣服模型时可以流畅进行试衣。但是在布料模拟的衣服模型多余5000个顶点会影响到整个系统的效率。

5. 总结

我们展现了一个使用Kinect设备的虚拟试衣系统。系统可以展现基于用户动作的衣服效果, 同时也可以在家庭环境使用。新添加的背景替换功能也可以更好地把用户带入到新的环境体验虚拟试衣。

摘要:本论文描述并解释详细的创新关于使用Kinect设备实现三维真人虚拟试衣系统的研究, 尤其是实现三维真人试衣系统中的衣服大小调整的方法研究。我们的系统可以使用用户的姿势控制三维衣服模型, 显示实时视频图, 以及根据用户的位置匹配三维衣服模型的位置和动作。三维衣服模型会与实时的跟踪用户的姿势和位置。然后根据用户在屏幕中的大小调整衣服模型在屏幕中的大小。本文也描述了未来的计划以及下一步可以研究的工作。

关键词:Kinect,增强现实,试衣镜

参考文献

[1]H.T.Chang, Y.W.Li, H.T.Chen, S.Y.Feng, and T.T.Chien, 2013.A Dynamic Fitting Room Based on Microsoft Kinect and Augmented Reality Technologies.[J]Springer-Verlag Berlin Heidelberg 2013 Human-Computer Interaction, Part IV, HCII 2013, LNCS 8007, pp.177╞185, 2013.

[2]Z.L.Zhou, B.Shu, S.J Zhuo, X.M.Deng, P.Tan, S.Lin, 2012.Image-based clothes animation for Virtual Fitting.[J]SIGGRAPH Asia 2012Technical Briefs, ACM.

[3]P.Presle, 2012.A Virtual Dressing Room based on Depth Data.[J]Vienna University of Technology.

[4]S.Hauswienser, M.Straka, G.Reitmayr, 2013.Virtual Try-On through Image-Based Rendering.[J]IEEE Transactions on visualization and computer graphics, Vol.19, no.9.

[5]Mankoff, K.D.and T.A.Russo, 2013.The Kinect:a low-cost, high-resolution, short-range 3D camera.[J]Earth Surface Processes and Landforms, 38 (9) :pp.926-936, 2013.

Kinect 篇7

关键词:Kinect,云数据,三点对齐法,Delaunay三角剖分法,三维人体建模

0 引言

随着电子化服装的量身定制和个性化生产逐渐成为服装行业的发展趋势,产生了非接触式三维人体测量技术,其在人体动画[1],服装设计,电脑游戏等方面有着广泛的应用[2,3,4,5]。

目前实现三维分块点云数据的拼接的常用方法主要包括转台法[6],标记点法[7]和ICP(迭代最近点)算法[8]。其中,转台法对硬件设备要求较高,不易保证定位精度。三点标记点法简单易行,能够得到最优变换矩阵,提高拼接精确度,在实际中应用广泛。

为了检验Kinct获取三维人体表面点云数据对模型的恢复程度,需要对人体模型进行恢复重建。目前常用的三维人体建模方法主要包括线框建模[9],实体建模[10,11]和曲面建模[12]。线框建模产生的信息量有限,存在表达的二义性,不能进行剖面的操作处理及自动消隐。实体建模运算复杂度高,耗时长,对硬件要求高,重建模型存在失真情况,很难表现人体的动态特性。曲面建模能够灵活反映模型表面的形貌特征,能方便地对曲面模型进行局部修改。

目前,三维分块点云数据的拼接技术及模型重建技术一直是逆向工程[13],是计算机视觉和模式识别等领域的研究热点与难点。Weiss等[14]提出用单台Kinect获取使用者在4个视角下的三维人体点云数据,通过对点云的建模得到轮廓信息估计人体的姿势和体型。Tong等[15]提出一种使用3台Kinect采集点云数据并实现三维点云的非刚性注册算法,结合图像序列的特征点对应关系进行三维人体建模。周瑾等[16]提出使用迭代最近点查找确定输入点云与可变模型之间的对应点对,将可变形人体模型拟合扫描点云数据,迭代生成三维人体模型。本文采用Kinect在视频速率下获取人体表面的独立分块点云数据,为了得到与原模型一致的分块点云数据和解决Kinect直接获取的点云坐标与实际不相符的问题,本文推导出合理的坐标变换公式对点云进行处理,利用三点对齐法拼接点云数据并采用Delaunay三角剖分法进行模型重建,精确地提取人体深度图像的同时简化了传统三维人体建模的复杂性。

1 获取分块点云数据

用Kinect对人体的不同区域进行多次测量,进而获得多个独立的分块点云数据。由于人体表面点云是三维的数据信息,而深度数据只能代表一个维度的信息,因此必须获取另外两个维度的信息得到完整的人体表面点云。由于测量深度信息的红外摄像头支持的最大成像是640×480,那么本文所使用Kinect获取的深度图像的分辨率则为640×480,利用像素点在深度图像[17]中相对位置作为三维人体的高度和宽度的坐标。为了保证拼接的准确性及后续重建模型的相似度,使得模型点云与实际模型成比例,获得与原模型一致的点云数据,本文推导出合理的坐标变换公式以求取点云高和宽的实际坐标,使点云的大小保持与模型实际大小相同。

由文献[18]可知,Kinect的视场为棱长相等的四棱锥,垂直视角43°,水平视角57°,最大探测距离400 cm,物体离Kinect距离越远则所造成的成像区域的横截面积就越大。为了对点云的坐标进行量化,根据Kinect视场的特点建立直角坐标系,如图1所示。图中x、y、z轴分别表示模型的宽度、高度和深度,箭头所指方向均为正方向,xoy平面为成像区域,虚线框表示模型在成像区域内所成的像。

其中z坐标为成像距离减去深度信息,深度信息可以由Kinect直接获取,在空间坐标系内可表示为该点到过Kinect红外摄像头所在点平行于xoy的平面的距离。

已知该点在深度图像上的对应点的位置,则像点坐标可由深度图像像素间的间隔与其表示的成像平面上的物距之间的关系求得。设Kinect成像的距离为L(即Kinect到成像区域的距离),成像区域高度为H,宽度为W,视场所成的四棱锥的棱长为l,α、β分别为两个侧面的底角。获取的深度图像中,高方向上的像素点的个数为n1,其相邻两个像素点表示的成像物距为h。宽方向上的像素点个数为n2,其相邻两个像素点表示的成像物距为w。则相邻两个像素点表示的成像物距由式(1)得出:

由Kinect视场的原理,可以得出四棱锥棱长l,如式(2)所示:

求得实际探测的高H和宽W,如式(3)所示:

将式(2)和式(3)代入式(1),得出相邻两像素点表示的成像物距与探测距离L的关系,如式(4)所示:

设模型上一点P在x和y轴方向上的二维坐标为(x,y),该点在深度图像上对应的像素点D的坐标为(xD,yD),求得像点P'在成像区域上的坐标(x',y'),如式(5)所示:

通过像点与该点在成像区域上投影点之间的关系,求得该点的x,y坐标,如图2所示。S为过红外摄像头与成像区域平行的平面,M为红外摄像头所在位置,S'为深度图像的成像区域,N为成像区域的中心点,P为模型上任一点,P'为其在成像区域上的像点位置,P″为其在成像区域上的投影点,|MN|即为成像距离,|MQ|为P点到面S的距离即点P的深度信息,成像区域宽为W,高为H则:

设P在x和y轴方向上的二维坐标为(x,y),则P″在x和y轴方向上的二维坐标为(x,y),P'在成像区域上的坐标(x',y'),d为P的深度信息,L为成像距离,根据式(6)的比例关系,P″即P的x,y坐标由式(7)计算得出:

由式(8)可计算出z的坐标:

则模型上任一点的坐标如式(9)所示:

本文采用女性无臂上半身白色模型,其表面质地为棉布,如图3所示。先将人体表面分成多个子区域,用Kinect对人体的不同区域进行多次测量,经过深度双阈值法去除背景后的处理获得深度图像,运用式(9)得到三维人体坐标并将其写成pts点云数据文件,从而获得多个独立的分块点云数据。为了实现点云数据的可视化,本文将Kinect得到的点云数据与Pro/E软件相连接的,运用Pro/E软件进行pts文件的读取,从而完成点云数据的可视化。图4为原人体模型以及人体模型正面和背面的分块点云图。

2 拼接分块独立点云

采用三点坐标对齐变换的方法进行独立点云的拼接,测量时,取模型上不同位置的三个点,标记为基准点。获取模型表面数据时,如果模型位置发生改变,每次变动必需重复测量基准点。对于不同测量坐标下得到的测量数据,通过使用三点坐标对齐法使基准点移动对齐,将数据统一在一个造型坐标下。其基本原理包括:设测量基准点p1、p2和p3。第二次测量时,基准点坐标变为q1、q2和q3。通过三个步骤即可实现坐标的变换:(1)变换p1到q1;(2)变换矢量(p2-p1)到(q2-q1)(这里只考虑方向);(3)将包含三点p1、p2和p3的平面变换到包含q1、q2和q3的平面。

算法步骤主要包括:作矢量(p2-p1)、(p3-p1)、(q2-q1)和(q3-q1),令V1=(p2-p1),W1=(q2-q1)。作矢量V3与W3:

作矢量V2与W2:

作单位矢量。把系统[v]的任一点通过变换关系变换到系统[w],如式(12)所示:

由于[v]和[w]都是单位矢量矩阵,所以[w]=[v]R,所求的关于[w]坐标系统的旋转矩阵为:

使P'1=q1和P1=p1,代入式(13),可得平移矩阵T,如式(14)所示:

将方程改写为式(15):

用三点对齐变化法对前后两块人体分块点云数据进行拼接,并对不完整处进行修补,得到正面、背面、左侧面、右侧面的拼接图,实验结果如图5所示。

3 重建人体模型

采用Delaunay三角剖分法中分治算法的思想,首先把拼接好的三维人体模型点云数据进行去噪,平滑及精简等预处理并将其分成正面和背面两个点云子集,分别对两个点云子集按Delaunay三角优化准则进行三角剖分及网格填充,然后把两个子集合并。最后对在子集边界处由于合并而新生成的三角形进行优化并对网格进行填充,从而完成了模型的重建。

本文在模型重建之前对点云数据进行去噪,平滑及精简等预处理,然后以MATLAB为平台进行仿真,重建后的模型如图6所示。

4 结语

【Kinect】推荐阅读:

Kinect应用系统06-27

Kinect传感器07-13

上一篇:敏感特性下一篇:作文语言话鲜活

热搜文章

    相关推荐