2024年10月7日发(作者:禚晓兰)
Microsoft微软Xbox360Kinect工作原理
1Youarethecontroller.
首先,让我们从指导Kinect研发的概念原理开始。
传统编程基于一系列的规则:原因和结果,非黑即白,非真即假。在为输入
输出数目有限的简单系统建模时,这种方式工作得挺好。就拿小时候玩儿过的小
霸王或者索尼游戏机来说吧,我们只能通过摇杆来控制游戏人物,所有的动作都
局限于一个游戏手柄上。可以说,我们的游戏世界并不真实并不数字化,是模拟
的。
在模拟世界中,并不是只有简单的“是”和“否”,还有“也许是/否”;
不仅有“对”和“错”,还有“对/错的可能性”。让我们想象一下挥手这一简
单动作的所有可能性:身体运动的幅度,环境差异,衣服质地的不同,文化差异
造成的动作差异等等。你可能需要研究10的23次方这么多的可能性,显然用传
统编程方式来解决这类问题是不现实的。
我们从一开始就知道必须采用一种全新的,接近于人脑工作的方式来解决这
一问题。当你遇到一个人的时候,你的大脑立即将注意力集中在他身上,并根据
经验辨识出他的身份。这一过程并不是通过数百层的决策树来实现,人脑就是知
道。婴儿很难区分出两个人的不同,但我们通过多年的学习和训练可以在几分之
一秒内做到。事实上,你也许还能蛮准确地估摸出他们的年龄、性别、心情甚至
个性。这也是让我们成就为人类的原因之一。
Kinect以类似的方法被创造出来。它观察身边的世界,它注意观察你的动
作。即使Kinect从来没见过你挥过手,也能很快地从它学习过的TB级数据中猜
测出你所做动作的含义。
2Kinect总览
先由Kinect的运作原理开始吧,Kinect一次可撷取三种东西,分别是彩色
影像、3D深度影像、以及声音讯号。首先是Kinect机身上有3颗镜头,中间的
镜头是一般常见的RGB彩色摄影机,左右两边镜头则分别为红外线发射器和红外
线CMOS摄影机所构成的3D深度感应器,Kinect主要就是靠3D深度感应器侦测
玩家的动作。
中间视讯镜头则是用来辨识玩家身分(靠着人脸辨识和身体特征)、以及辨
识基本的脸部表情,此外也能应用在扩增实境游戏、以及视讯通话时;同时
Kinect还搭配了追焦技术,底座马达会随着对焦物体移动跟着转动。
都用上了不用遥控器的体感装置,哪里还要玩家头上挂个耳麦的道理,因此
Kinect也内建了麦克风系统,用的还是阵列式麦克风。它的好处是藉由多组麦
克风同时收音,比对后消除掉杂音,等于提供了降噪功能,让玩家的声音能更清
楚的传递出去。
▲Kinect中间的镜头是摄影机、左右两颗镜头则是3D深度感应器;同时具有追
焦功能,底座马达可左右旋转27度。此外还有阵列式麦克风。
▲Kinect可同时获取彩色影像、3D深度影像、以及声音讯号。
▲Kinect的架构图。
3Kinect工作原理
3.1Kinect侦测3D影像
Kinect就是以红外线发出人眼看不见的class1雷射光,透过镜头前的
diffuser(光栅、扩散片)将雷射光均匀分布投射在测量空间中,再透过红外线
摄影机记录下空间中的每个散斑,撷取原始资料后,再透过晶片计算成具有3D
深度的图像。
▲LightCoding是以发射红外线产生散斑,透过感应器纪录讯号后,交由晶片
运算出深度图像。
3.1.1Kinect传感器
Kinect骨架追踪处理流程的核心是一个无论周围环境的光照条件如何,都
可以让Kinect感知世界的CMOS红外传感器。该传感器通过黑白光谱的方式来感
知环境:纯黑代表无穷远,纯白代表无穷近。黑白间的灰色地带对应物体到传感
器的物理距离。它收集视野范围内的每一点,并形成一幅代表周围环境的景深图
像。传感器以每秒30帧的速度生成景深图像流,实时3D地再现周围环境。如果
你玩过pinpointimpression3D针模玩具可能更容易理解这一技术——将你的
手(或者脸,如果你愿意的话)按压在这种玩具上,就可以产生你身体某一部位
的简单3D模型。
3.1.2寻找移动部位
Kinect需要做的下一件事是寻找图像中较可能是人体的移动物体,就像人
眼下意识地聚焦在移动物体上那样。接下来,Kinect会对景深图像进行像素级
评估,来辨别人体的不同部位。同时,这一过程必须以优化的预处理来缩短响应
时间。
Kinect采用分割策略来将人体从背景环境中区分出来,即从噪音中提取出
有用信号。Kinect可以主动追踪最多两个玩家的全身骨架,或者被动追踪最多
四名玩家的形体和位置。在这一阶段,我们为每个被追踪的玩家在景深图像中创
建了所谓的分割遮罩,这是一种将背景物体(比如椅子和宠物等)剔除后的景深
图像。在后面的处理流程中仅仅传送分割遮罩的部分,以减轻体感计算量。
3.2Kinect
侦测
3D
影像
了解Kinect如何获得影像后,接下来就是进行辨识的工作。透过Light
Coding技术所获得的只是基本的影像资料,重点还是要辨识影像,转换为动作
指令。
3.2.1Kinect的大脑
分割化玩家图像的每一个像素都被传送进一个辨别人体部位的机器学习系
统中。随后该系统将给出了某个特定像素属于哪个身体部位的可能性。比如,一
个像素有80%的几率属于脚,60%的几率属于腿,40%的几率属于胸部。看起来这
时候我们就可以把几率最大的可能性当作结果,但这么做未免太过武断了。我们
的做法是将所有的这些可能性输入到接下来的处理流程中并且等到最后阶段再
做判断。
3.2.2生成骨架系统
处理流程的最后一步是使用之前阶段输出的结果,根据追踪到的20个关节
点来生成一幅骨架系统。Kinect会评估Exemplar输出的每一个可能的像素来确
定关节点。通过这种方式Kinect能够基于充分的信息最准确地评估人体实际所
处位置。另外我们在模型匹配阶段还做了一些附加输出滤镜来平滑输出以及处理
闭塞关节等特殊事件。
骨架追踪系统的目标之一是为处理流程的各种输出提供一种菜单式的选择
界面。游戏开发者可以选择任意的系统部件组合来开发各种游戏体验。
3.2
实际应用限制
Kinect侦测的最佳距离为1.2公尺到3.5公尺间,水平视野则是57度,侦
测范围似乎比原本想像的还要小,看来还是不能站的太随意;Kinec也配备了追
焦系统,如果玩家超出影像范围,底座马达可驱动Kinect左右旋转27度。整体
看来Kinect对操作空间的限制,似乎比其他体感装置更严格些。
▲Kinect一次可追踪2人的动态,每人能追踪高达20组细节。
2024年10月7日发(作者:禚晓兰)
Microsoft微软Xbox360Kinect工作原理
1Youarethecontroller.
首先,让我们从指导Kinect研发的概念原理开始。
传统编程基于一系列的规则:原因和结果,非黑即白,非真即假。在为输入
输出数目有限的简单系统建模时,这种方式工作得挺好。就拿小时候玩儿过的小
霸王或者索尼游戏机来说吧,我们只能通过摇杆来控制游戏人物,所有的动作都
局限于一个游戏手柄上。可以说,我们的游戏世界并不真实并不数字化,是模拟
的。
在模拟世界中,并不是只有简单的“是”和“否”,还有“也许是/否”;
不仅有“对”和“错”,还有“对/错的可能性”。让我们想象一下挥手这一简
单动作的所有可能性:身体运动的幅度,环境差异,衣服质地的不同,文化差异
造成的动作差异等等。你可能需要研究10的23次方这么多的可能性,显然用传
统编程方式来解决这类问题是不现实的。
我们从一开始就知道必须采用一种全新的,接近于人脑工作的方式来解决这
一问题。当你遇到一个人的时候,你的大脑立即将注意力集中在他身上,并根据
经验辨识出他的身份。这一过程并不是通过数百层的决策树来实现,人脑就是知
道。婴儿很难区分出两个人的不同,但我们通过多年的学习和训练可以在几分之
一秒内做到。事实上,你也许还能蛮准确地估摸出他们的年龄、性别、心情甚至
个性。这也是让我们成就为人类的原因之一。
Kinect以类似的方法被创造出来。它观察身边的世界,它注意观察你的动
作。即使Kinect从来没见过你挥过手,也能很快地从它学习过的TB级数据中猜
测出你所做动作的含义。
2Kinect总览
先由Kinect的运作原理开始吧,Kinect一次可撷取三种东西,分别是彩色
影像、3D深度影像、以及声音讯号。首先是Kinect机身上有3颗镜头,中间的
镜头是一般常见的RGB彩色摄影机,左右两边镜头则分别为红外线发射器和红外
线CMOS摄影机所构成的3D深度感应器,Kinect主要就是靠3D深度感应器侦测
玩家的动作。
中间视讯镜头则是用来辨识玩家身分(靠着人脸辨识和身体特征)、以及辨
识基本的脸部表情,此外也能应用在扩增实境游戏、以及视讯通话时;同时
Kinect还搭配了追焦技术,底座马达会随着对焦物体移动跟着转动。
都用上了不用遥控器的体感装置,哪里还要玩家头上挂个耳麦的道理,因此
Kinect也内建了麦克风系统,用的还是阵列式麦克风。它的好处是藉由多组麦
克风同时收音,比对后消除掉杂音,等于提供了降噪功能,让玩家的声音能更清
楚的传递出去。
▲Kinect中间的镜头是摄影机、左右两颗镜头则是3D深度感应器;同时具有追
焦功能,底座马达可左右旋转27度。此外还有阵列式麦克风。
▲Kinect可同时获取彩色影像、3D深度影像、以及声音讯号。
▲Kinect的架构图。
3Kinect工作原理
3.1Kinect侦测3D影像
Kinect就是以红外线发出人眼看不见的class1雷射光,透过镜头前的
diffuser(光栅、扩散片)将雷射光均匀分布投射在测量空间中,再透过红外线
摄影机记录下空间中的每个散斑,撷取原始资料后,再透过晶片计算成具有3D
深度的图像。
▲LightCoding是以发射红外线产生散斑,透过感应器纪录讯号后,交由晶片
运算出深度图像。
3.1.1Kinect传感器
Kinect骨架追踪处理流程的核心是一个无论周围环境的光照条件如何,都
可以让Kinect感知世界的CMOS红外传感器。该传感器通过黑白光谱的方式来感
知环境:纯黑代表无穷远,纯白代表无穷近。黑白间的灰色地带对应物体到传感
器的物理距离。它收集视野范围内的每一点,并形成一幅代表周围环境的景深图
像。传感器以每秒30帧的速度生成景深图像流,实时3D地再现周围环境。如果
你玩过pinpointimpression3D针模玩具可能更容易理解这一技术——将你的
手(或者脸,如果你愿意的话)按压在这种玩具上,就可以产生你身体某一部位
的简单3D模型。
3.1.2寻找移动部位
Kinect需要做的下一件事是寻找图像中较可能是人体的移动物体,就像人
眼下意识地聚焦在移动物体上那样。接下来,Kinect会对景深图像进行像素级
评估,来辨别人体的不同部位。同时,这一过程必须以优化的预处理来缩短响应
时间。
Kinect采用分割策略来将人体从背景环境中区分出来,即从噪音中提取出
有用信号。Kinect可以主动追踪最多两个玩家的全身骨架,或者被动追踪最多
四名玩家的形体和位置。在这一阶段,我们为每个被追踪的玩家在景深图像中创
建了所谓的分割遮罩,这是一种将背景物体(比如椅子和宠物等)剔除后的景深
图像。在后面的处理流程中仅仅传送分割遮罩的部分,以减轻体感计算量。
3.2Kinect
侦测
3D
影像
了解Kinect如何获得影像后,接下来就是进行辨识的工作。透过Light
Coding技术所获得的只是基本的影像资料,重点还是要辨识影像,转换为动作
指令。
3.2.1Kinect的大脑
分割化玩家图像的每一个像素都被传送进一个辨别人体部位的机器学习系
统中。随后该系统将给出了某个特定像素属于哪个身体部位的可能性。比如,一
个像素有80%的几率属于脚,60%的几率属于腿,40%的几率属于胸部。看起来这
时候我们就可以把几率最大的可能性当作结果,但这么做未免太过武断了。我们
的做法是将所有的这些可能性输入到接下来的处理流程中并且等到最后阶段再
做判断。
3.2.2生成骨架系统
处理流程的最后一步是使用之前阶段输出的结果,根据追踪到的20个关节
点来生成一幅骨架系统。Kinect会评估Exemplar输出的每一个可能的像素来确
定关节点。通过这种方式Kinect能够基于充分的信息最准确地评估人体实际所
处位置。另外我们在模型匹配阶段还做了一些附加输出滤镜来平滑输出以及处理
闭塞关节等特殊事件。
骨架追踪系统的目标之一是为处理流程的各种输出提供一种菜单式的选择
界面。游戏开发者可以选择任意的系统部件组合来开发各种游戏体验。
3.2
实际应用限制
Kinect侦测的最佳距离为1.2公尺到3.5公尺间,水平视野则是57度,侦
测范围似乎比原本想像的还要小,看来还是不能站的太随意;Kinec也配备了追
焦系统,如果玩家超出影像范围,底座马达可驱动Kinect左右旋转27度。整体
看来Kinect对操作空间的限制,似乎比其他体感装置更严格些。
▲Kinect一次可追踪2人的动态,每人能追踪高达20组细节。