当前位置: 首页 > 科技观察

东方世界的杨晓:探索AR开发技术要点

时间:2023-03-13 12:14:37 科技观察

【.com原稿】据市场研究公司Digi-Capital数据显示:到2020年,AR市场规模将达到1200亿美元。AR的快速发展,自然离不开背后的技术支持。东方世界3D研发中心副主任杨晓在WOT2018全球软件与运维技术峰会上以《AR开发中的主要技术点探索》为主题发表演讲。杨老师从AR应用中的视频处理、人脸特征点识别应用等入手,对AR技术进行了详细讲解。图1东方世界3D研发中心副主任杨小义AR技术概述AR技术是一种将现实世界信息与虚拟世界信息“无缝”融合的技术。是将虚拟世界的信息叠加在现实世界之上,实现超越现实的感官体验,广义的信息叠加,包括视觉、声音、触觉等。本次演讲的主要内容是视觉信息方向。AR一般是通过摄像头捕捉现实世界,然后在现实世界的基础上加入一些虚拟世界的内容,形成增强的虚拟融合世界。理想状态是人们无法区分叠加的虚拟物体。AR具有虚实结合、实时交互、三维定位三大特点。1.虚拟现实与实时交互的结合图2虚拟现实与实时交互的结合摄像头捕捉到现实世界的视频图像后,需要利用3D引擎技术将3D虚拟物体叠加到现实中世界。但是,此时的虚拟世界和现实世界对比,还是会出现失真的问题。如果想让AR世界更逼真,就需要根据现实世界中的光量来增加光照,让虚拟世界中的物体可以根据真实环境的亮度来增减亮度.但以上只是一些机械的叠加,整体缺乏真实感。因此,在整个世界的渲染完成后,可以利用实时交互技术,让叠加的虚拟世界与现实世界进行交互,让人感觉到虚拟物体是真实的。的。实时交互既包括传统的触屏交互,也包括相对新颖的交互技术,比如微软的HoloLens手势交互或语音识别。2.三维定位三维定位技术也是AR的关键部分。常用的三维技术有以下几种:扫描二维图片:扫描特定的二维图片,识别出图片内容后,在图片内容的基础上叠加3D物体,早期的很多AR应用都是用这个形式,让人误以为AR就是扫描一张图片,图片上会出现一些虚拟的物体。扫描3D物体:通过扫描3D物体,可以显示物体的详细信息。比如:支付宝可以识别花,通过AR扫描花,就可以知道花的名字和花的介绍。SLAM(SimultaneousLocalizationandMapping,实时定位与地图构建):通俗地说,就是在将虚拟场景叠加到目标上时,估计相机的位置和方向,从而使虚拟物体叠加到合适的位置增加真实感。它的核心是解决“我在哪里”的问题。这是一个非常复杂的问题。HoloLens使用4个环境感知摄像头、1个深度摄像头和1个惯性测量单元,通过多个传感器提供冗余数据,以在部分摄像头被遮挡时实现稳健定位。.在无人驾驶领域,一般会结合激光雷达进行定位。移动应用程序不需要高精度。一般通过单目摄像头进行SLAM定位就足够了。但是,需要利用图像的特征点。特征点一般是纹理变化比较大的位置,比如瓦片的边界点或者角点。对于摄像头得到的两帧图像,很容易匹配特征点,然后根据图像的变化进行逆向计算。相机的移动,从而定位相机的位置,构建平面。图3三维定位AR开发其实分为两层,一层是AR相关的SDK(SoftwareDevelopmentKit,软件开发工具包),另一层是应用层。ARSDK层提供底层支持,包括获取视频流、获取特征点重构平面等,而应用层可以根据底层提供的视频流和特征点构建自己的趣味应用。图4AR相关SDK3、AR相关SDK下面介绍几个常用的ARSDK。Vuforia(可以扫描识别图片):后台上传需要识别二维图片,可以通过SDK扫描识别,可以添加一些物体,实现简单的AR效果和应用。Wikitude(可扫描构建平面):它是一个广泛使用的SDK。目前在全球100多个国家拥有10万名开发者。集成单摄像头SLAM功能,定位摄像头位置和检测平面。它还支持iOS和Android系统。它有Unity开发插件,开发者使用起来比较方便。但在使用过程中,也出现了飞机跟踪不够稳定,容易丢失飞机等问题。后来东方世界用伪AR效果解决了这些问题。即在空间中构造一个虚拟平面(非真实跟踪的平面),根据手机陀螺仪获取手机的旋转信息,驱动虚拟相机旋转,让人感觉当手机转动,虚拟物体(虚拟相机)的位置也会发生变化。旋转感觉虚拟物体存在于现实世界中,也在一定程度上达到了AR效果。ARInterface:Unity2017.2.1以上版本已经提供。它的底层是统一封装的ARKit和ARCore,减少了开发者的工作量,开发者仍然可以通过ARKitInterface访问ARCore和ARKit的接口。4.应用层应用层主要包括两部分:基于视频的应用和基于特征的应用。基于视频的应用:ARSDK通过摄像头将现实世界传递给应用,应用自身可以对视频进行处理,得到属于自己的特殊应用。比如可以通过绿屏抠图得到一些自己感兴趣的图像,这样就可以将真人叠加到虚拟场景中,在雪山上进行直播等。基于特征点的应用:3D平面可以通过ARSDK获取,在平面上叠加3D虚拟物体,达到AR龙的效果(此应用可在AppStore下载)。此外,还可以通过OpenCV等提取人脸特征点,利用人脸特征点实现换脸、换脸等效果,或者其他好玩的效果。***R技术应用场景AR应用不仅限于计算机领域,还可以应用于其他领域:·情感分析,可以根据表情分析情绪;·路口人脸识别,记录闯红灯人员;目标识别解决维护问题;信息增益可以在相机识别出感兴趣的目标或人脸后叠加所需的显示;AR显示尚处于2D屏幕显示或头盔式显示阶段,目前缺乏触摸屏的优势智能手机的革命性变化;处理、感知、扫描,AR最好的解决方案是重建一个3D场景,这样当虚拟物体叠加在真实场景上时,可以解决视频中真实物体被遮挡的问题,有利于系统了解场景。二、AR应用中的视频处理1.AR视频直播应用系统架构图***R应用中的视频处理如图5所示。在一个典型的AR直播系统架构中,上层是视频相关的内容,而下层是3D虚拟对象显示引擎。通过普通摄像头、3D摄像头或全景摄像头获取视频。3D摄像头由左右两个普通摄像头组成,可以模拟人的左右眼。摄像头构图,每台摄像头拍摄不同角度,形成360度拍摄,通过软件拼接成视频。所以三个摄像头的后续处理是一样的。视频通过普通摄像头、3D摄像头、全景摄像头拍摄后,通过CDN解码压缩、推流、分发,通过播放器播放视频流。三种视频的播放方式不同,需要在播放器中进行特殊配置。处理,比如全景视频将画面投影到球面上,人站在球心观察,同时获取手机陀螺仪的方位,驱动视频的渲染。看起来效果就是人们在不同的方向看到不同的画面。在玩家层播放的同时,通过3D引擎层将虚拟物体作为道具进行叠加,达到虚实叠加的效果。3D摄像头部分,东方视界采用裸眼3D设备,播放层需要特殊交织处理,即不戴VR眼镜也能在裸眼3D画面上看到3D效果。同样,下方的虚拟物体层也可以通过特殊架构处理,实现裸眼3D效果。2.ARFusion和Pseudo-ARProcessing图6ARFusion和Pseudo-ARProcessingAR融合的核心是平面检测和跟踪。这部分ARSDK已经提供。它是现实世界和虚拟世界之间的桥梁。在这个位面,看起来就像是现实世界的地面上真的有一个物体。由于平面跟踪的不稳定性,部分应用采用伪AR处理技术,构建虚拟平面,将物体放置在虚拟平面上,在相机旋转时获取陀螺仪数据,利用陀螺仪数据驱动虚拟相机进行执行旋转操作,人眼看起来和虚拟空间中的物体感觉几乎一样。其技术关键点是利用陀螺仪数据驱动虚拟摄像头,达到伪AR的效果。3、绿屏二次抠图视频处理中另一个实用的技术是绿屏抠图。绿屏抠图其实在影视中用的比较多,影视中的抠图是离线处理的,效果会更好。绿屏抠图就是把人物抠出来替换背景,或者把人物抠出来放在虚拟场景中。这方面的研究已经很多,但是东方世界通过测试发现基于颜色的二次抠图效果更好。方法是设置一个背景颜色阈值,然后去除背景。然而,人发的边缘往往有绿边,这并不容易。切出clean,然后调高底色的阈值,做第二次切出。3、建军70周年之际,人民日报推出军装照片,可以用不同时期的军装换脸,引发“换脸”热潮。还有像FaceU这样的软件,也可以在脸上加上一些特殊的装饰,或者素颜的脸上化了妆。这些应用主要是利用特征点识别技术实现的,但是如何利用这些特征点进行识别和应用主要从以下几个方面入手。1.特征点的来源图7.人脸特征点的应用在开发特征点应用之前,首先需要获取特征点。基于OpenCV和Dlib的特征点识别库,可以提取一些稳定的特征点,还有其他收费的特征点识别库,比如Face++等。例如图7中,特征点识别在鼻子,眼睛,和小猫的嘴巴,这些特征点都标有序号,方便后续在应用中使用。具体的特征点个数会根据不同的特征点库不同而不同。例如OpenCV或OpenCV+Dlib特征点有68个特征点模板,而Face++有100多个特征点模板。特征点越多,识别越精细。2.3D视频卡口有明确的特点,可以用于哪些应用?其中之一是3D珠宝支架。3D配件挂钩可以在识别人脸后添加一些头饰或者眼镜,或者改变人脸,甚至可以估计头部姿势,然后添加一些3D物体,装饰品,头盔等。根据这些特征点,位置和方向可以直接估计虚拟相机,叠加3D物体时,整个AR场景可以基于虚拟相机看起来更逼真。图83D珠宝支架3D珠宝支架最重要的是定位3D相机。通过2D特征点和虚拟3D物体的位置可以反推虚拟3D相机的位置。具体的反算过程比较复杂。简单的说就是相机标定和相机外参的计算。在实际应用中,OpenCV可以解决逆计算的问题,在Calib3d和solvePnP之间可以调用。获取3D相机的具体位置后,直接将3D眼镜或其他配件叠加在头部模型的合适位置。基于特征点的3D头部模型和3D配件不是固定的,而是根据2D特征点计算出合适的相机位置。当相机位置移动时,模拟的3D饰品也会随之移动,就好像3D饰品真的贴在了真人脸上一样。3、换脸应用原理3D配件是基于面部特征点的应用。另一个重要的应用是换脸。换脸应用背后的原理是什么?我们来看看换脸应用的处理流程。图9换脸应用原理如图9所示,人脸图像1是摄像头拍摄的真实图像,人脸图像2是你要交换的虚拟图像。可以通过OpenCV等特征点识别库提供人脸区域识别,实现OpenCV多人脸识别。识别之后会出现人脸区域1和人脸区域2,然后可以进行简单的归一化,根据特征点进行一些选择性的交换。图10换脸应用图10显示了一个基本的“换脸”示例。要想实现“换脸”,首先要建立一个基于特征点的换脸模型,然后将提取的面部特征点(眉毛、鼻子等)与模型进行匹配,并替换区域1的纹理与区域2中的纹理。特征点位置对应的纹理,这样就可以实现“换脸”。需要注意的是眉毛以上没有特征点,眉毛以下有特征点。不过为了避免模特更换后的过渡过于突兀,东方世界采用了在眉毛上方增加一部分模特的方式。眉毛上方新添加的部分用作额头。做一些渐变处理,这样会让整个脸看起来更自然。那么,如果要将照片中的人脸替换掉,就像人民日报的军装照片一样,需要用到什么方法呢?首先,你需要在模型中创建一个有脸的标准模型,然后把你要改变的脸和真实脸的特征点粘贴到标准模型上,然后应用建模和替换脸就可以了通过使用纹理映射来实现。以上内容是记者根据东方世界杨晓在WOT2018全球软件与运维技术峰会上的演讲内容整理而成。更多WOT资讯请关注51cto.com。