《Kinect应用开发实战:用最自然的方式与机器对话》一3.6 创建你的Avatar-阿里云开发者社区

开发者社区> 华章出版社> 正文
登录阅读全文

《Kinect应用开发实战:用最自然的方式与机器对话》一3.6 创建你的Avatar

简介: 本节书摘来自华章出版社《Kinect应用开发实战:用最自然的方式与机器对话》一书中的第3章,第3.6节,作者 余涛,更多章节内容可以访问云栖社区“华章计算机”公众号查看

3.6 创建你的Avatar

Kinect可以识别追踪你的声音和肢体语言,但是面部表情呢?在CES 2011上,微软CEO鲍尔默曾以卡通形象出场,并且介绍Kinect Avatar服务,如图3-49所示。

image

Avatar卡通人物与真人相比特征鲜明,其可对你的面部表情进行识别并展示。Avatar Kinect为用户提供了一个虚拟平台,免费提供给所有Xbox Live会员,你可以与好友进行面对面的聊天交流。它能识别你的表情、眼神、口形、皱眉,这样可使用户更加“真实”地进行聊天,仿佛聚会时围坐一圈畅谈人生。
你站在那里,Kinect Avatar就出现了,举手投足,动作一致;一颦一笑,栩栩如生。这些在技术上如何实现的呢?

3.6.1 “有骨有肉”

前面我们花了很多篇幅来分析Kinect如何从深度图像中识别出人体骨骼,事实上Avatar是在人体骨骼基础上的进一步丰满的肢体。Avatar构建的整个过程好比人体素描,先勾勒出人体骨骼,再画出肌肉。

3.6.2 泊松方程噪声滤除

首先,我们来看如何创建与用户体型一致的Avatar身体。事实上,由于Kinect受成本所限,硬件能力并不强,因此,深度图像分辨率也不高。人体经过Kinect扫描得到的深度图,仿佛月球表面一样凹凸不平。如何将粗糙的表面还原为平滑的表面呢?传统图像处理中,中值滤波这种非线性平滑技术常用来保护边缘信息,是一种经典的平滑噪声的方法。
Kinect采用了泊松方程等算法进行噪声滤除,通过这种方法可判断人体表面特征点是噪声还是真实的存在。从技术算法层面上来看,先抓取特征点周边表面的角度和朝向,进而判断该点可能存在于空间的位置。同时根据朝向判断,在特征点周围形成一个虚拟的距离场。
泊松方程用于帮助建立这个距离场。根据采样特征点的位置,尽可能平均估计它对周围的影响,估计周围表面距离场情况。如果真实物体表面有一个洞的话,那么它的影响可以很好地扩散到周围,进而获得非常平滑的形状。每个特征点的最终状态和特征并不仅仅取决于它本身,还取决于周围很多点。如果在采样面中有一个凸起的点,这个点周围的点在朝向特性上都没有表现出这里有凸起的趋势,那么这个点就被判定为噪声并被去除,反之则保留。由于Kinect采样精度的限制,细小的表面特征信息也可能被误判为噪声。

3.6.3 粗糙变平滑、缺陷自动补齐

鲜活的Avatar表情是如何创建的呢?对很多需要实时绘制的娱乐类游戏来说,3000个顶点的人脸3D模型已经十分真实,目前Kinect的红外摄像头可以提供320×240的分辨率,可采集的特征点已经远远超过10000,除了脸上的皱纹之外,生成的多边形顶点人脸可表现绝大部分的表情特征。前面已经谈到,人脸表面的深度图像会出现缝隙和不连续的区域,修补这些缺陷主要借助上面所提到的泊松方程和平滑算法,判断漏洞附近的表面朝向,进而实现自动修补,从而粗糙变平滑、缺陷自动补齐。因此,你看到的Kinect Avatar一颦一笑,栩栩如生。
这其中涉及广泛的计算机视觉和图形学的知识,它们在深入理解问题并创建有效视觉交流方面的作用,已得到公认。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享: