Kinect for Windows SDK v2.0 开发笔记 (十一) 高清面部帧(2) 面部特征对齐

(转载请注明出处)

使用SDK: Kinect for Windows SDK v2.0 public preview1408

根据前一节的说明,这节就是关于面部特征对齐的。

接口为IFaceAlignment,因为SDK还在Beta中,提供官网的连接可能会失效,所以不提供了。

需要可以到微软官方查询。目前,面部特征对齐主要可以干:

0. 获取面部外框 —— 面部帧也能。但是经测试,精度高得多,抖动大概在几像素内

1. 获取头部旋转中心 ——结果是一个相机空间坐标,大致位置就是颈部中心

2. 获取头部旋转四元数 —— 面部帧也能。但是这个精度高,抖动小,抖动范围大致在3°以内。

3. 获取动画单元 —— 目前有高达17种动画单元(高达:谁叫我....)

等等....

动画声明如下:

enum _FaceShapeAnimations
    {
        FaceShapeAnimations_JawOpen	= 0,
        FaceShapeAnimations_LipPucker	= 1,
        FaceShapeAnimations_JawSlideRight	= 2,
        FaceShapeAnimations_LipStretcherRight	= 3,
        FaceShapeAnimations_LipStretcherLeft	= 4,
        FaceShapeAnimations_LipCornerPullerLeft	= 5,
        FaceShapeAnimations_LipCornerPullerRight	= 6,
        FaceShapeAnimations_LipCornerDepressorLeft	= 7,
        FaceShapeAnimations_LipCornerDepressorRight	= 8,
        FaceShapeAnimations_LeftcheekPuff	= 9,
        FaceShapeAnimations_RightcheekPuff	= 10,
        FaceShapeAnimations_LefteyeClosed	= 11,
        FaceShapeAnimations_RighteyeClosed	= 12,
        FaceShapeAnimations_RighteyebrowLowerer	= 13,
        FaceShapeAnimations_LefteyebrowLowerer	= 14,
        FaceShapeAnimations_LowerlipDepressorLeft	= 15,
        FaceShapeAnimations_LowerlipDepressorRight	= 16,
        FaceShapeAnimations_Count	= ( FaceShapeAnimations_LowerlipDepressorRight + 1 )
    } ;

术语:

(FACS)AU: Action Unit,动作单元 参考前一节

(FACS)AD: Action Descriptor, 动作描述符,和AU差不多。

FaceShapeAnimations_JawOpen: 

(微软目前还没有进行说明)就是将下巴张开,下巴张开不一定是张开嘴巴。

FACS编码应该是指AU26(Jaw Drop)

浮点模拟量范围 [0, 1],  都快掉下巴了,才到1,个人建议阈值0.8

FaceShapeAnimations_LipPucker:

撅嘴,FACS编码: AU18

浮点模拟量范围 [0, 1], 本人最大值0.8X.......

FaceShapeAnimations_JawSlideRight:

下巴往右滑动, FACS编码:
R-AD30

浮点模拟量范围
[-1, 1]
,
负数表示往左(L-AD30),本人最大值0.2X......

FaceShapeAnimations_LipStretcherRight:

嘴角向右拉伸, FACS编码: R-AU20

浮点模拟量范围
[0, 1]

FaceShapeAnimations_LipStretcherLeft:

嘴角向左拉伸,
FACS编码: L-AU20

浮点模拟量范围
[0, 1]

FaceShapeAnimations_LipCornerPullerLeft:

拉动嘴角倾斜向左上,
FACS编码: L-AU12

浮点模拟量范围
[0, 1]

FaceShapeAnimations_LipCornerPullerRight:

拉动嘴角倾斜向右上,
FACS编码: R-AU12

浮点模拟量范围
[0, 1]

FaceShapeAnimations_LipCornerDepressorLeft:

拉动嘴角向左下倾斜, FACS编码: L-AU15

浮点模拟量范围
[0, 1]

FaceShapeAnimations_LipCornerDepressorRight:

拉动嘴角向右下倾斜, FACS编码: R-AU15

浮点模拟量范围
[0, 1]

FaceShapeAnimations_LeftcheekPuff:

鼓起左脸颊, FACS编码: L-AD34

浮点模拟量范围
[0, 1]

FaceShapeAnimations_RightcheekPuff:

鼓起右脸颊, FACS编码: R-AD34

浮点模拟量范围
[0, 1]

FaceShapeAnimations_LefteyeClosed:

闭左眼, FACS编码: L-AU43

浮点模拟量范围
[0, 1]

FaceShapeAnimations_RighteyeClosed:

闭右眼, FACS编码: R-AU43

浮点模拟量范围
[0, 1]

(戴着眼镜或者眼睛比较小、离得远的可能就直接识别为闭着眼睛了)

FaceShapeAnimations_RighteyebrowLowerer:

右皱眉, FACS编码: R-AU4

浮点模拟量范围
[-1, 1], 负数表示右眉上挑(
R-AU1+2)

FaceShapeAnimations_LefteyebrowLowerer:

左皱眉, FACS编码: L-AU4

浮点模拟量范围
[-1, 1], 负数表示左眉上挑(
L-AU1+2)

FaceShapeAnimations_LowerlipDepressorLeft:

拉动下唇向左下, FACS编码: L-AU16

浮点模拟量范围
[0, 1]

FaceShapeAnimations_LowerlipDepressorRight:

拉动下唇向右下, FACS编码: R-AU16

浮点模拟量范围
[0, 1]

共计17个单元。使用IFaceAlignment::GetAnimationUnits获取

大致步骤: (参考面部帧)

不同于面部帧的:

创建高清面部帧源:   CreateHighDefinitionFaceFrameSource

创建面部特征对齐:    CreateFaceAlignment

使用高清面部帧源,轮询还是事件随意啦,注意跟踪id丢失或者无效。

获取到正确的高清面部帧后,使用

IHighDefinitionFaceFrame::GetAndRefreshFaceAlignmentResult

刷新面部特征对齐对象,之后就可以获取前面所说的4个基本东西了。

这个东西可能会消耗比普通面部帧更大的计算机资源,所以我们这次就对一个人跟踪即可。

效果如下:

(自然也需要"NuiDatabase"文件夹,但是创建高清面部帧的耗时远远小于普通面部帧(感觉不到 vs 5秒钟))

下载地址: CSDN抽了? 上传了看不到,可以的话,请到笔者的资源列表里面看看,不行再向笔者索要吧



时间: 2024-11-03 10:40:15

Kinect for Windows SDK v2.0 开发笔记 (十一) 高清面部帧(2) 面部特征对齐的相关文章

Kinect for Windows SDK v2.0 开发笔记 (十三) 高清面部帧(4) 面部模型构建器

 (转载请注明出处) 使用SDK: Kinect for Windows SDK v2.0 public preview1409 同前面,因为SDK未完成,不附上函数/方法/接口的超链接. 这次让我们让面部捕捉更加稳定/精确吧! 自从一直8月有了高清面部帧的例子后,觉得IFaceModel::GetFaceShapeDeformations它不干正事,一直返回0.0f的数据. 与其他开发者简单交流后,发现了问题的根本所在,需要面部模型构建器(IFaceModelBuilder). 好了,那么

Kinect for Windows SDK v2.0 开发笔记 (十五) 手势帧

 (转载请注明出处) 使用SDK: Kinect for Windows SDK v2.0 public preview1409 同前面,因为SDK未完成,不附上函数/方法/接口的超链接. 这次终于是新的东西了,是"手势帧",不过原名是"可视化手势构建器"(Visual Gesture Builder)帧,是 SDK 2.0自带的手势解决方案,不过,如果您觉得微软写得不可靠,甚至垃圾,您可以尝试自己写个,笔者在 提供的范例中,写了个简单的样子(几十行而已,不要期

Kinect for Windows SDK v2.0 开发笔记 (十六) SDK2.0正式发布 与 自带工具

(转载请注明出处) 使用SDK: Kinect for Windows SDK v2.0 1409 来了,微软于10月22日正式发布了SDK v2.0,前兆是发现了API文档正常了... 话说为什么是1409而不是1410 于是从这节开始,开始附上API的超链接.正式版的体积也是可观,整整(比7月版)大了一倍 这节说说自带的软件,本打算录下来,但是太懒了 先附上微软自己的地址,Part1,Part2,这是手势的,虽然是使用C#,不过工具使用是完全一样的. 先看看SDK中自带的工具: 0. Kin

Kinect for Windows SDK v2.0 开发笔记 (十七) 深度帧3D

 (转载请注明出处) 使用SDK: Kinect for Windows SDK v2.0 1409 这节算是补充节吧,以3D方式显示深度帧,SDK更新的则在后面的章节说明. 之前想错了,以为每帧显示所谓的点云,GPU负担很大, 背景每帧都要传送 500 * 400 * 3 * 4 , 才2M的数据,之前估计错了. 3D接口依然是D3D11,这次简单多了,顺带复习一下吧 要点: 0. 初始化..  仅仅需要: IKinectSensor(使用 GetDefaultKinectSensor)

Kinect for Windows SDK v2.0 开发笔记 博客学习网址,Mark!!!

http://blog.csdn.net/u014365862?viewmode=contentshttp://blog.csdn.net/dustpg/article/category/2408183

Kinect for Windows SDK 2.0新特性

这些新特性包括, 1,改善的骨骼,手,关节方位------具有跟踪6个人全骨骼,每个人25个关节点(新增加手的中指指尖,拇指和shoulder center)的能力,以及对软组织连接和身体定位的改善. 2,支持新的开发环境------支持更快,高效,高品质的跨平台开发,让开发者使用已知的工具在Windows store 开发产品. 3,powerful tooling-----有了记录和playback 功能,让开发者可以摆脱必须有Kinect sensor的束缚. 4,进阶的脸部跟踪功能---

Kinect 开发 —— Kinect for windows SDK

开发 -- 基本的SDK和Windows 编程技巧(彩色图像视频流,深度图像视频流的采集,骨骼跟踪,音频处理,语音识别API) 深度数据,就是Kinect的精髓和灵魂,很多问题都转换为深度图像的模式识别问题 AForge.NET 是一套C#编写的Framework,提供计算机视觉,机器学习 www.aforgenet.com 图像处理需要消耗大量的计算资源,使用C#这类托管语言并不明智,应多使用OpenCV 应用层API详解 NUI API Kinect Audio DMO :提供束波成形和音源

VS2008下 使用C#做windows mobile 6.0开发 使用sqlite数据库

我使用的VS2008英文版的,不喜欢用中文版的. 现在用C#做相关开发,用到sqlite数据库. 网上找了很多,真正的教程特别少,都是贴的一堆垃圾代码.要么是无法配置通过的,错误一大堆,哎. 最后还是自己想办法解决了. 1.下载sqlite的运行库,首先网上的教程是让我们去http://system.data.sqlite.org/index.html/doc/trunk/www/downloads.wiki下载,但是页面上那么多,我们该选择哪个呢?   网页翻到最下面的  Legacy Ver

OpenCV、PCL;Xtion、kinect;OpenNI、kinect for windows SDK比较

一.对比介绍: 1. OpenCV:开源跨平台,OpenCV于1999年由Intel建立,如今由Willow Garage提供支持. 2. OpenNI:OpenNI组织创建于2010年11月.主要成员之一是PrimeSense公司(以色列一家公司,被苹果收购(2013年11月25),Kinect1核心芯片,华    硕Xtion).其他成员还有开发ROS的机器人公司Willow Garage,以及游戏公司Side-Kick.(因此OpenNI完全支持华硕,而不完全支持kinect2) 3. P