65.9K
CodeProject 正在变化。 阅读更多。
Home

使用 Intel® RealSense™ SDK 进行面部和头部跟踪

2015年5月13日

CPOL

5分钟阅读

viewsIcon

27505

使用 Intel® RealSense™ SDK 进行面部和头部跟踪

Intel®Developer Zone 提供跨平台应用程序开发工具和操作指南、平台和技术信息、代码示例以及同行专业知识,帮助开发人员创新并取得成功。加入我们的社区,了解物联网Android*Intel® RealSense™ TechnologyWindows*,下载工具、访问开发套件、与志同道合的开发人员分享想法,并参与黑客松、竞赛、路演和本地活动。

技巧、用例、API 和示例代码(BlockHead

  • 所需操作系统:Windows 8.1 桌面版

Intel® RealSense™ SDK 提供一套 API,开发人员可以调用这些 API 来实现以下功能:

  • 面部位置检测
  • 地标检测
  • 姿态检测
  • 表情检测
  • 面部识别。
  • 注意:还有情绪检测,目前仅处于实验阶段(非黄金版)。

这些交互产生的数据可以被应用程序近乎实时地捕获和使用。以下是一些在开发使用面部分析模块的 RSSDK 软件时充分利用面部模块的技巧。

  • 良好的光照对二维 RGB 跟踪很重要
  • 避免阴影、逆光或强定向光——包括阳光。
  • 请缓慢移动以获得最佳跟踪效果
  • 范围 up to 1.2 米
  • 头部倾斜角度不要超出屏幕的 30 度(任意轴)。
  • 请记住,相机有一个视野,最远的距离会在屏幕中央。
  • 有关每种模式可以跟踪的内容的示例,请参阅 RSSDK/bin 文件夹中的 face_viewer 示例。

面部位置检测

  • 跟踪多达 4 张面孔,并用矩形标记面部边界
  • 您可以选择检测哪 4 张面孔
  • 只有一张面孔具有地标
  • 有关面部识别,请参阅下文
  • 启用:PXC[M]FaceConfiguration
  • 检索面部位置数据:QueryDetection

地标检测

  • 适用于有/没有胡须和眼镜的面孔
  • 78 个面部地标点的三维跟踪,支持头像创建、情绪识别和面部动画。
  • 最好只跟踪所需的地标(甚至只跟踪鼻尖)。
  • 不专门支持眼球注视点跟踪。
  • 启用:PXC[M]FaceConfiguration
  • 检索检测到的地标:QueryLandmarks

姿态检测(偏航、俯仰、滚转)

  • 沿三维轴检测头部方向——偏航、俯仰和滚转。
  • 在偏航、滚转和俯仰接近 0 度时, frontal axis +/- 15 度效果最佳。
  • 面部与屏幕的夹角在 30 度以内(偏航和俯仰)效果最佳。
  • 可用作判断用户视线的粗略方式。
  • 检测用户头部的指向,或用于控制角色左右移动。
  • 启用:PXC[M]FaceConfiguration
  • QueryPose 检索检测到的姿态数据。

面部表情检测

  • 最适合感知自然表情、一些情绪和参与度。
  • 当用户佩戴眼镜时,可靠地捕获表情信息(例如,EXPRESSION_MOUTH_OPEN、EXPRESSION_SMILE)可能会有问题。
  • 每秒 30 帧,图像尺寸为 48 x 48 像素。
  • 面部毛发、眼镜可能会使情绪检测更困难。
  • 支持 6 种主要情绪——愤怒、厌恶、恐惧、喜悦、悲伤、惊讶。
  • 使用二维 RGB 数据。
  • 使用强度(0 到 1)或证据(对数尺度)查询情绪数据。
  • 可以组合情绪(例如:厌恶 + 恐惧 + 愤怒 = 负面)。
  • 使用 ExpressionsConfiguration 接口。
  • QueryExpressions 检索任何检测到的表情数据。

人脸识别

  • 每秒 30 帧,图像尺寸为 48 x 48 像素。
  • 将当前面孔与识别数据库中的参考对象进行比较。
  • 使用 RecognitionConfiguration 接口创建多个识别数据库。
  • QueryUserID 用于将当前面孔与活动识别数据库进行比对以执行识别。
  • 可以针对图片使用,但会增加安全风险。
  • 目前存在一个已知问题,关于重复使用现有数据库和用户数量,该问题将在 R2 版本中修复。(有关更多信息,请参阅论坛讨论)

情绪检测 - 仅处于实验阶段。

Intel RealSense SDK 为托管和非托管代码都提供了功能。

  • C++ - pxcfacemodule.h
  • C# .NET4 – libpxcclr.cs.dll
  • Unity – libpxcclr.unity.dll
  • Java – libpxcclr.java.jar (R1 版本库中并非所有模式都可用)。

在 Intel RealSense SDK 面部分析模块 (PXCFaceModule) 中查找以下 API:

  • PCM[M]FaceConfiguration
  • PXC[M]FaceData
  • PXC[M]Emotion (实验性)

以下是您可以使用面部模块 API 完成的一些用例:

游戏/应用程序增强

  • 头部跟踪和方向可用于导航、视差、视角变化或躲避掩体。
  • 地标跟踪可用于识别用户的表情。

面部增强

使用头部跟踪以卡通或写实的方式增强屏幕上的用户面部。

头像创建

创建模仿用户面部的卡通或写实风格的头像。请尽量使用更抽象或卡通化的头像,以避免“恐怖谷”效应,并获得更鲁棒、可预测的面部模仿。

情感计算

  • 您可以隐式或显式地识别并响应用户的情绪和参与度。
  • 请注意,Intel RealSense SDK 中的情绪 API 目前处于实验阶段。

您可以从 Intel Developer Zone 下载示例代码 "BlockHead"。

BlockHead 演示了在 C#/WPF 桌面应用程序中使用 Intel RealSense SDK for Windows*。该示例利用了 Intel RealSense SDK 的三项功能:(注意:此示例应用程序的全部功能需要面向前方的 Intel RealSense 3D 摄像头。)

  • 捕获并显示 RGB 相机的彩色流。
  • 检索面部位置和头部姿态估计数据。
  • 检索并评估面部表情数据。

BlockHead 由 Intel 开发人员关系部门的软件应用程序工程师 Bryan Brown 编写。他的专业经验涵盖软件、电子和系统设计工程。他的技术兴趣集中在自然交互和脑机接口技术的应用,并积极参与了这些领域各种新兴技术的 Alpha 开发人员计划。

在 Twitter 上关注 Bryan:@BryanBrownHMT

© . All rights reserved.