RealSense技术在SR300摄像头上的应用
一、 实感摄像头
1、 RealSense技术
在计算机的发展过程中我们始终没有抛弃键盘和鼠标,前几年win8和触屏的配合形成
了一种新的电脑使用模式,但是依然没有打破传统的单向互动的使用习惯。直到RealSense技术的出现,计算机开始拥有了感知能力,并且带来全新的人机交互体验。
英特尔RealSense(实感)技术前身为英特尔Perceptual Computing(感知计算)技术,在2012年就已经着重开始研发,并且设重奖举办英特尔感知技术挑战赛。随着技术日趋成熟,2014年初更名为RealSense。在2015年IDF大会中,RealSense技术大放异彩,英特尔CEO科再奇现场演示了RealSense实感技术在不同设备上的表现,包括刷脸解锁PC屏幕等一系列动作,实现了从虚拟到现实的无缝衔接。
简单的说,RealSense技术相当于给电脑加了一双眼睛,技术本身是软件和硬件结合的体现。RealSense3D是一套感知计算解决的方案,通过一系列非常小的3D摄像头,加入红外传感组件以及实感图像处理芯片,通过传感技术实现深度感知、3D 图像、内部映射和特色跟踪,使得电脑能够精确识别人的手势动作、面部特征、前景和背景,让电脑理解人的动作和情感,在虚拟现实领域打造新一代互动体验,人类与计算机之间的交互变得更为自然。借助英特尔实感技术,人们手中的电脑、平板电脑等计算设备可实现手势控制、头部控制、人脸识别、3D扫描、景深识别、语音控制等功能。
2、 SR300结构详解
英特尔3D摄像头分为两种,一种是用于近距离,精度较高的前置3D摄像头,另一种是可用于较远距离,精度稍低的后置3D摄像头。英特尔®实感™摄像头SR300(Intel ®RealSense ™ Camera SR300,后面简称SR300)是英特尔公司推出的第二代前置摄像头。作为英特尔实感技术的重要产品,英特尔实感3D摄像头集成了3D深度和2D镜头模块的设备,能够赋予设备以类似于人眼的视觉深度,摄像头通过感知景深和跟踪人体运动将计算机的用户界面提升到一个新的水准。
SR300设备拥有三个镜头,分别是传统摄像头、红外摄像头和红外激光镜头。这三种镜头相互合作,通过探测挡在前面的物体所反射的红外线推断景深。这些视觉数据与英特尔RealSense技术动作跟踪软件相结合,便造就了可响应手部、手臂和头部运动以及面部表情的免触控界面。
图1:Intel ®RealSense ™ Camera SR300官方示意图解
图2:实验室SR300展示
3、 SR300工作原理
SR300设备的红外线发射器(IR Laser Projector)发射的“结构光”,经物体反射后会被红外线传感器(IR Camera Lens)接收。由于红外线到反射物体表面的距离不同,红外传感器捕到的“结构光”图案的位置和形状会发生变化,根据这些由实感图像处理芯片就能计算出物体表面的空间信息,再用三角测距原理进行“深度”计算,进而重现3D场景。
图3:典型“结构光”图案
二、 开发与应用
1、 DCM与SDK
DCM即景深摄像头管理器,可以为来自于实感摄像头的流视频提供接口,包括颜色和景深数据流,将其提供给SDK进行处理。这是一种摄像头服务,并且支持多个SDK应用同时访问来自摄像头的数据,不会相互妨碍。如果没有这一应用,每次就只能一个SDK访问来自摄像头的数据,才能确保收到正确的数据。DCM将英特尔实感摄像头和SDK客户端之间进行连接,给客户端系统提供所有扩展的2D和3D摄像头功能,并且允许用户直接使用这些功能。它还管理着摄像头控制、访问策略,负责多个SDK同时访问时的电源管理等。
图4:搭载了多个SDK的客户端系统
SDK(SoftwareDevelopment Kit)即软件开发工具包,目前英特尔针对SR300摄像头在官网中提供了五种功能的SDK下载,分别是游标模式、3D扫描、用户背景分段、面部跟踪和识别、全手跟踪和手势识别。
游标模式:SR300摄像头上最为突出的一个特点,该模式在手上返回单个点,确保能够实现准确和响应迅捷的3D光标点跟踪,适用于在高稳定性手势充足情况下进行更快、更轻、更精确的手部追踪。光标模式包含手部追踪动作和点击手势,相比于全手模式,它可将范围和速度提高两倍,范围扩大至85厘米,手部追踪速度高达2米/秒,同时不会产生延迟,且能耗非常低。
图5:游标模式
3D扫描:根据各种观察角度拍摄的一系列图像重建静态物体的形状和外观。 使用分段和跟踪技术,将图像序列转换成 3D 三角网格,用于模拟、编辑打印或分析。可扫描用户的面部,也可以扫描小型的物体,3D扫描块可以集成至游戏中,捕获用户的面部扫描图,并将其用于游戏人物。
用户背景分段:生成每一帧的分段图像,用于剔除或替换用户头部和肩部后面的图像部分(背景)。利用深度数据更加准确地理解场景,从而实现十分精确的增强现实。 移除图像背景以创建一个没有屏幕的绿屏。
面部跟踪和识别:辨认照相机范围内存在的面孔或者每一张面孔的脸部特征。通过对78个标志点进行数据记录从而提高准确性,真正的3D面部识别,以及面部三个维度的旋转。可将当前面部图像与已记录的用户数据库对比,识别用户身份。
全手跟踪和手势识别:适用于要求多种手势(例如竖起大拇指)而不需要精确手部运动跟踪的游戏和应用程序。空中操作界面元素,该SDK可追踪每只手的 22 个点,以实现准确的免触控手势识别。
图6:手势识别
英特尔实感SDK还在持续更新中,并具备多项出色的新特性:自动范围切换、高动态范围(HDR)模式和置信图。
自由范围切换:可提高图像质量,可以控制近距离范围的激光增益和远距离范围的曝光。
高动态范围(HDR)模式:是一种用来扩大图像动态范围的技巧。动态范围是图像中的明暗比率。HDR 模式非常适用于弱光或背光条件,并支持帧速率变化较大的应用。HDR 模式启用后,图像可反映更多有关普通头发和带强光效果的头发细节。
图7:改进带强光效果的头发
2、 主要参数和工作环境
在客户端系统中需要安装已经通电的USB3.0端口,SR300摄像头要求Windows1064位操作系统和第六代智能英特尔® 酷睿™ 处理器或更高版本。SR300 目标用途总的来说有八个,分别是全手骨骼追踪和手势识别,光标模式,头部追踪,3D 分割和背景移除,景深增强型增强现实,语音命令与控制,3D 扫描面部和小型物体,面部识别等。
表1:SR300主要参数详情
SR300 摄像头 |
|
范围 |
0.2 - 1.2 米,室内和间接阳光照射; |
景深/IR |
640x480 分辨率 (60 FPS) |
彩色摄像头 |
高达 1080p (30 FPS),720p (60 FPS) |
景深摄像头 |
高达 640x480 60 FPS(快速 VGA,VGA),HVGA 110 FPS |
IR 摄像头 |
高达 640x480 200 FPS |
主板接口 |
USB 3.0, 5V, GND |
开发人员套件尺寸 |
110 毫米 x 12.6 毫米 x 3.8–4.1 毫米 |
重量 |
9.4 克 |
所需操作系统 |
Microsoft Windows* 10 64 位 RTM |
语言 |
C++, C#, Visual Basic*, Java*, JavaScript* |
3、 SDK面部扫描映射为3D头部模型
用户使用摄像头扫描面部,将其投影至可定制头部网格然后添加后续处理效果,最终所得到可以适用于各种应用的结果。开发人员将这些工具集成到应用程序之中,支持用户对面部特征进行定制,还可以用于生产游戏角色内容等。
图8:从左至右:(a)SDK 扫描模块所返回的面部网格;(b)映射至完整头部模型;(c)进行形态目标调整后的头部模型几何体;(d) 经过调整并着色后的头部
在用户扫描完成或加载现有的扫描后,可以通过开发人员所推出的UI进行五种类型的定制,分别是
· 面部扫描:调整偏航、倾斜、旋转和z位移,以调整面部扫描的方向和位置;
· 头部塑形:使用提供的滑块改变头部模型的形状,使创建的头部与扫描人物的头部相符;
· 混合:使用色彩控制选择两种最适合肤色的颜色,第一种为基础色,第二种用于调整色调;
· 后期头部塑形:映射流程结束后,可对头部外形进行调整。可以改变体质指数、放大双眼等等。
· 后期混合:映射完成后,选择任意色彩效果并将其运用于整个头部,这些色彩效果不会影响嘴唇或眼睛,可以通过这个去调整头部的色调/饱和度/亮度。
通过这五种操作对原生对象进行处理后可以导出成.OBJ类型文件,也便于之后加载到其他应用进行使用。在这整个面部映射的过程中,可以分成四个阶段去理解头部模型的变化。第一个阶段为位移和色彩图阶段,在该阶段中,根据扫描面部网格生成位移贴图和颜色贴图。 摄像头对面部的扫描特征位置就投影到这些贴图上,这些贴图的用处就是通过使用正交投影矩阵渲染面部网格生成,并在下一个几何体阶段中用于投影至头部网络。
图9:位移图阶段创建的色彩和位移图
接下来就是几何体阶段,这一阶段主要是调整基础头部网格外形,并将位移图印在头上。将基础头部网格投射到特征网格,这一步骤关联头部顶点和特征网格上的单个三角形、重心坐标以及沿该三角形法线的偏移。需要创建位移和色彩图投影矩阵,其中矩阵就包括了投影中的比例变换、平移变换以及旋转变换。
图10:生成的颜色贴图以正交的方式投影至头部模型,可通过调整是两眼之间的锚点对齐
图11:含有明显特征的面部色彩图和包含明显头部特征的基础头部网格
图12:重新投影并置换顶点位置后包含特征网格的头部重叠
投影后进行渲染着色,着色又分为顶点着色器和像素着色器两步,由顶点着色器将位移贴图中的UV坐标传递至像素着色器,然后像素着色器针对每一像素进行着色。在这个混合面部扫描色彩数据的过程中,即称为混合阶段。混合阶段可由美术师进行一定程度上的创作,所有的混合操作均在GPU上完成。最后是头发几何体阶段,扫描面部不能提供头发信息,因此需要在应用上给模型提供头发才能创建完整的头部。应用上示例头发模型较少,无法提供完整的解决方案,可通过随头部外形的变化以编程的方式调整头发形状。该编程方式较为复杂,在此并不概述。在此阶段完成以后,则可以导出完整的OBJ文件保存。
最终得到的OBJ文件,可以将其导入到Unity3D软件中进行游戏创作了。
三、 发展前景
RealSense技术作为一项新兴的技术,有着非常亮眼的表现,使得人们对于未来VR领域中人机交互方式产生了更多的期待。应用领域也非常宽广,在游戏、电影、物联网、智能设备以及物流医疗等行业都可以做出非常巨大的改变。物流方面已经和京东进行了合作,可以利用3D扫描和尺寸识别去大规模处理物件,减轻人力成本和时间成本。也可以和无人机结合,使得无人机能够更快捷的识别周边物体,迅速做出反应而穿过障碍物。
图13:搭载了六台RealSense技术摄像头的无人机
虽然RealSense技术所实现的功能非常让人瞩目,但是发展到目前为止还是存在需要改进的地方,也期待着在VR领域中有着更大的突破。
1、 应用范围局限
RealSense的所收集到的特征数据没法单独提取出来,只能按照既定的模式进行存储,这就限制了技术本身的应用范围。如果要把所有人脸特征都整合起来存储在云端,然后做海量人脸搜索,依靠RealSense技术无法实现,它的应用范围限制在单机产品中。摄像头目前所捕捉的图像像素最高为1080P,满足不了人们对高清图像的需求。应用到游戏领域时,用户体验上比Leap Motion、Kinet2等同款产品体现不出明显的优势。
2、 运行环境要求高
摄像头本身价格并不昂贵,但是对于运行的环境要求非常严格。必须是中高端的Intel CPU上才能运行,而且系统环境也要求是win10,和AMD显卡不兼容,这不利于产品的大范围普及。
注:部分图片来自于英特尔开发论坛,侵删。