第三篇 KinectV2骨骼获取原理和获取方法及源代码

第三篇  KinectV2骨骼获取原理和获取方法及源代码

 

首先声明一下,本系统所使用的开发环境版本是计算机系统Windows 10、Visual Studio 2013、Opencv3.0和Kinect SDK v2.0。这些都可以在百度上找到,download下来安装一下即可。

通过上一篇文章,我们已经基本学会如何获取Kinect 的各种数据源,对于骨骼数据的获取是稍微复杂的那一个,将在本篇文章详细讲解和深度剖析Kinect v2 获取骨骼数据的原理,最后将利用骨骼数据做一个好玩的东西。废话少说,我们开始吧。

 

一、骨骼跟踪的原理

1.骨骼图是由深度图获取得到的

(1)Kinect v1生成3D深度的图像的原理

   采用的是PrimeSence公司Light Coding技术。Light Coding技术理论是利用连续光(近红外线)对测量空间进行编码,经感应器读取编码的光线,交由晶片运算进行解码后,产生成一张具有深度的图像。 Light Coding技术的关键是Laser Speckle雷射光散斑,当雷射光照射到粗糙物体、或是穿透毛玻璃后,会形成随机的反射斑点,称之为散斑。散斑具有高度随机性,也会随着距离而变换图案,空间中任何两处的散斑都会是不同的图案,等于是将整个空间加上了标记,所以任何物体进入该空间、以及移动时,都可确切纪录物体的位置。Light Coding发出雷射光对测量空间进行编码,就是指产生散斑。Kinect就是以红外线发出人眼看不见的class 1雷射光,透过镜头前的diffuser(光栅、扩散片)将雷射光均匀分布投射在测量空间中,再透过红外线摄影机记录下空间中的每个散斑,撷取原始资料后,再透过晶片计算成具有3D深度的图像。 

 

(2)Kinect v2则采用了更为先进的TOF技术。红外发射器主动投射经调制的近红外光线,红外光线照到视野里的物体上就会发生反射,红外相机接收反射回来的红外线,采用TOF技术测量深度,计算光的时间差(通常是通过相位差来计算的),根据,可得物体的深度(即物体到深度相机的距离)。

 

2、Kinect骨骼跟踪的原理

  了解Kinect如何获得影像后,接下来就是进行辨识的工作。透过Light Coding技术所获得的只是基本的影像资料,重点还是要辨识影像,转换为动作指令。

 

   微软将侦测到的3D深度图像,转换到骨架追踪系统。该系统最多可同时侦测到6个人,包含同时辨识2个人的动作;每个人共可记录20组细节,包含躯干、四肢以及手指等都是追踪的范围,达成全身体感操作。为了看懂使用者的动作,微软也用上机器学习技术(machine learning),建立出庞大的图像资料库,形成智慧辨识能力,尽可能理解使用者的肢体动作所代表的涵义。

下面更加详细的来探讨一下骨骼跟踪的原理:

Kinect骨骼跟踪不受周围光照的影响,主要是因为红外信息,产生3D深度图像,上文已经介绍。

另外,Kinect采用分隔策略将人体从复杂的背景中区分出来,在这个阶段,为每个跟踪的人在深度图像中创建所谓的分割遮罩(分割遮罩为了排除人体以外背景图像,采取的图像分割的方法),如图1这是一个将背景图像(比如椅子和宠物等)剔除后的景深图像。在后面的处理流程中仅仅转送人体图像即可,以减轻体感计算量。



                    图1 剔除背景后的景深图像

Kinect需做的下一件事情就是寻找图像中较可能是人体的物体,接下来kinect会对景深图像(机器学习)进行评估,来判别人体的不同部位。

在识别人体的各部位之前,微软是通过开发的一个人工智能(被称为Exemplar(模型)系统),数以TB计的数据输入到集群系统训练模型,图2就是用来训练和测试Exemplar的数据之一。


评论 36
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值