Kinect v2.0原理介绍之九:高清面部帧(2) 面部特征对齐
来源:互联网 发布:二战江河级护卫舰数据 编辑:程序博客网 时间:2024/05/17 02:50
~~有兴趣的小伙伴,加kinect算法交流群:462964980。
使用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秒钟))
- Kinect v2.0原理介绍之九:高清面部帧(2) 面部特征对齐
- Kinect for Windows SDK v2.0 开发笔记 (十一) 高清面部帧(2) 面部特征对齐
- Kinect v2.0原理介绍之十:获取高清面部帧的AU单元特征保存到文件
- Kinect v2.0原理介绍之八:高清面部帧(1) FACS 介绍
- Kinect v2.0原理介绍之十三:面部帧获取
- Kinect for Windows SDK v2.0 开发笔记 (十) 高清面部帧(1) FACS 介绍
- Kinect for Windows SDK v2.0 开发笔记 (十二) 高清面部帧(3) 面部模型(2D)
- Kinect for Windows SDK v2.0 开发笔记 (十三) 高清面部帧(4) 面部模型构建器
- Kinect for Windows SDK v2.0 开发笔记 (十四) 高清面部帧(5) 面部模型 3D
- kinect v2 面部模型
- Kinect for Windows SDK v2.0 开发笔记 (九)面部帧获取
- EmguCV+Kinect2.0获取高清面部帧
- Kinect2.0+Opencv获取高清面部信息
- Kinect面部模型(2D)
- Kinect v2.0原理介绍之七:彩色帧获取
- 面部特征点定位
- Kinect v2.0原理介绍之十一:录制视频
- Kinect v2.0原理介绍之十二:音频获取
- 线段树
- Aspen Technology AspenONE Suite v8.8 Win7_8-ISO 3DVD(完全解密版,包括DVD1和DVD2)
- mac手动删除MySQL
- [leetcode][sort] H-Index
- 隐式转换和显式转换及强制转换的区别
- Kinect v2.0原理介绍之九:高清面部帧(2) 面部特征对齐
- 数据结构---抽象建模
- socket通信之九:使用完成端口实现的一个聊天室
- 哲学家就餐问题
- [刷题]Hash Function
- 犀牛——第8章函数 8.7函数属性、方法和构造函数
- 51nod 求子段和问题总结(DP)
- python & opencv 环境搭建
- static变量与全局、局部变量的区别 !