《iPhone X ARKit Face Tracking》

本文介绍了iPhone X如何利用ARKit进行3D人脸识别追踪,包括ARFaceTrackingConfiguration接口、人脸位置与方向、面部表情追踪等,并展示了如何创建基于人脸的AR体验,如使用SceneKit构建京剧变脸效果。
摘要由CSDN通过智能技术生成

本文来自于腾讯Bugly公众号(weixinBugly), 作者:jennysluo,未经作者同意,请勿转载,原文地址:http://mp.weixin.qq.com/s/YJ82vQYHAMmtueDgHgKcNA

iPhone X前置深度摄像头带来了Animoji和face ID,同时也将3D Face Tracking的接口开放给了开发者。有幸去Cupertino苹果总部参加了iPhone X的封闭开发,本文主要分享一下iPhone X上使用ARKit进行人脸追踪及3D建模的相关内容。

iPhone X前置深度摄像头识别人脸视频

新增接口

ARFaceTrackingConfiguration

ARFaceTrackingConfiguration利用iPhone X前置深度摄像头识别用户的人脸。由于不同的AR体验对iOS设备有不同的硬件要求,所有ARKit配置要求iOS设备至少使用A9及以上处理器,而face tracking更是仅在带有前置深度摄像头的iPhone X上才会有。因此在进行AR配置之前,首先我们需要确认用户设备是否支持我们将要创建的AR体验

ARFaceTrackingConfiguration.isSupported

对于不支持该ARKit配置的设备,提供其它的备选方案或是降级策略也是一种不错的解决方案。然而如果你的app确定ARKit是其核心功能,在info.plist里将ARKit添加到UIRequiredDeviceCapabilities里可以确保你的app只在支持ARKit的设备上可用。
当我们配置使用ARFaceTrackingConfigurationsession会自动添加ARFaceAnchor对象到其anchor list中。每一个face anchor提供了包含脸部位置,方向,拓扑结构,以及表情特征等信息。另外,当我们开启isLightEstimationEnabled设置,ARKit会将检测到的人脸作为灯光探测器以估算出的当前环境光的照射方向及亮度等信息(详见ARDirectionalLightEstimate对象),这样我们可以根据真实的环境光方向及强度去对3D模型进行照射以达到更为逼真的AR效果。

ARFrame

当我们设置为基于人脸的AR(ARFaceTrackingConfiguration),session刷新的frame里除了包含彩色摄像头采集的颜色信息以外(capturedImage),还包含了由深度摄像头采集的深度信息(capturedDepthData)。其结构和iPhone7P后置双摄采集的深度信息一样为AVDepthData。当设置其它AR模式时该属性为nil。在iPhone X上实测效果比7P后置的深度信息更为准确,已经可以很好的区分人像和背景区域。

需注意的是,深度摄像头采样频率和颜色摄像头并不一致,因此ARFrame的capturedDepthData属性也可能是nil。实测下来在帧率60的情况下,每4帧里有1帧包含深度信息。

ARFaceAnchor

前面说过,当我们配置使用ARFaceTrackingConfigurationsession会自动添加ARFaceAnchor对象到其anchor list中。每一个face anchor提供了包含脸部位置,方向,拓扑结构,以及表情特征等信息。比较遗憾的是,当前版本只支持单人脸识别,未来如果ARKit提供多人脸识别后开发者应该也能较快的进行版本升级。

  • 人脸位置和方向

    父类ARAnchor的transform属性以一个4*4矩阵描述了当前人脸在世界坐标系的位置及方向。我们可以使用该矩阵来放置虚拟3D模型以实现贴合到脸部的效果(如果使用SceneKit,会有更便捷的方式来完成虚拟模型的佩戴过程,后面会详述)。该变换矩阵创建了一个“人脸坐标系”以将其它模型放置到人脸的相对位置,其原点在人头中心(鼻子后方几厘米处),且为右手坐标系—x轴正方向为观察者的右方(也就是检测到的人脸的左方),y轴正方向延人头向上,z轴正方向从人脸向外(指向观察者)

  • 人脸拓扑结构 ARFaceGeometry

    ARFaceAnchor的geometry属性封装了人脸具体的拓扑结构信息,包括顶点坐标、纹理坐标、以及三角形索引(实测下来单个人脸包含1220个3D顶点以及2304个三角面片信息,精准度已经相当高了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值