AR 原理与技术分析

作者: ZIM东东 | 来源:发表于2017-05-25 12:01 被阅读648次

    开发场景介绍:

    开发场景介绍摘自电脑爱好者2016年21期


    AR可以让用户在扫描特定的图片、二维码时展现相应的视频场景,
    那么这种特效是怎么实现的?
    先来了解一下AR程序运行流程是怎么样的?

    开启手机摄像头对准特定的宣传画扫描,
    接着手机屏幕上就会出现和相应产品对应的自然元素组成的视频。
    这个视频展现,其实就是一个典型AR场景的再现
    

    AR效果的实现

    第一步:

    制作方要对扫描的实物进行建模。
    我们需要先扫描该物品的3D模型,并对其进行关键帧标定,
    比如:瓶盖、瓶身某位置或者图片的不同画面,
    然后根据不同的识别准备对应的动态视频数据

    第二步:

    当扫描标定的关键帧,系统就会去寻找AR场景中与之最接近的关键帧,
    根据关键帧上的特征点,然后利用特定的算法找到AR场景中对应的视频,
    并将其展现在用户的手机画面中;

    关键技术:<识别跟踪>

    在这个AR应用中技术核心就是<识别跟踪>技术,
    AR应用首先要识别标示物,然后进行跟踪(跟踪用户扫描到的产品标记),
    接着就在用户手机上展示对应的视频场景。

    AR应用是通过“特征点”进行识别的;
    检测到特征点还不行,如果要判断两张图片是否是同一张图片,
    识别设备还要判断两张图片的特征点是否一致;

    识别技术不在介绍,(开发时这里了解,不做过多陈述,我也不懂)

    第三步: AR视频是由多帧图片组成

    在完成一幅图片的比对后还要对视频帧的其他图片进行跟踪比对。
    特征跟踪有两种方式:
    一种是对视频流中的每一帧图像进行特征点匹配;
    二种则在第一幅图像中,寻找可能的特征位置
    然后在后续的图像中搜索它们的对应位置。
    这样完成对识别图片的跟踪后,
    AR应用就会在用户的手机上显现对应的视频画面了。

    最后:

    AR应用会先将图片进行特征点的识别,并存储在应用中。
    这样当用户使用手机扫描到符合特征点的瓶身图片,
    AR应用会将当前图片和存储的图片进行比对,如果是一致的图片,
    AR应用就会将特定的视频展示在用户手机屏幕上。
    当然AR应用还会进行跟踪,如扫描不同的区域显示不同的视频,
    或者在扫描其他图片时快速识别并显示预置的视频到用户手机上。


    ARinChina地址:汇总了一些资源👇传送门:

    http://dev.arinchina.com/forum.php

    AR原理篇,带你增强现实的思路

    (摘自)[AR报告第二章:AR的工作原理]脑补画面

    1 首先对现实场景的理解和重构

    在AR(增强现实)系统中
    首先要解决“是什么”的问题,
    也就是要理解、知道场景中存在什么样的对象和目标。
    第二要解决“在哪里”的问题,也就是要对场景结构进行分析,
    实现跟踪定位和场景重构。

    2 物体的检测和识别技术

    物体检测和识别的目的是发现并找到场景中的目标,
    这是场景理解中的关键一环。
    广义的物体检测和识别技术是基于:
    "图像"的基本信息(各类型特征)和先验知识模型(物体信息表示)
    通过相关的算法实现对场景内容分析的过程。

    (开发中可能遇到需要识别图片的场景,但是算法不是自己写,就先别管怎么识别出来啦)

    在增强现实领域,常见的检测和识别任务有,
    人脸检测、
    行人检测、
    车辆检测、
    手势识别、
    生物识别、
    情感识别、
    自然场景识别等
    

    这里我只提取介绍一种图像识别:

    识别是从图像匹配的角度出发,
    数据库中保存了图像的特征以及对应的标注信息,
    在实际使用过程中,通过图像匹配的方法找到最相关的图像,
    从而定位环境中的目标,进一步得到识别图像和目标图像的精确位置,
    这种识别适用于需要对环境进行精确跟踪的应用场景

    (开发经常使用的识别图片,其他需要智能识别这里不做介绍);

    另一方面,图像本身还受到噪声、尺度、旋转、光照、姿态等因素的影响

    视觉跟踪技术

    根据数据的生成方式,视觉跟踪技术的算法可以分为两种,
    一种是基于模板匹配的方式,
    预先对需要跟踪的target进行训练,
    在跟踪阶段通过不断的跟预存训练数据进行比对 解算当前的位姿。
    这类方法的好处是速度较快、数据量小、系统简单,适用于一些特定的场景,
    但不适用于大范围的场景

    另外一种是SLAM方法,也就是即时定位和地图构建技术。(不做介绍)

    3 增强现实的显示技术

    摄像头获取外部真实环境的图像,
    也就是通过摄像头来采集真实场景的图像进行传递。
    计算机通过场景理解和分析将所要添加的信息和图像信号叠加
    在摄像机的视频信号上,将计算机生成的虚拟场景与真实场景进行融合


    实现篇:

    现在不少移动端加入了AR的功能作为功能的拓展与补充。
    如淘宝过年期间的AR福字扫描,人脸识别,还有一个AR的游戏等等。
    那么我们今天就说几个可以在移动端实现AR功能的解决方案。

    AR在开发ios的时候使用Xcode+Realmax SDK,
    也可以使用Unity+Realmax SDK开发导成api,再导入Xcode编译;

    注:需要跨平台使用实现那些炫酷效果需要使用unity来做;

    这里没尝试,不懂,再此先不做介绍;研究了补充上说明文档;

    解决方案

    1 利用第三方AR开发包去实现。

    时至今日,AR技术有了一定的发展,
    可以利用第三方的framework开发包导入工程来实现。
    支持的SDK:Metaio被苹果收购、Vuforia被高通(Qualcomm)卖给PTC后,
    相对较好的有ARToolKit、Wikitude

    国外的介绍高通的AR实现方案
    在高通VR的官网 :https://developer.vuforia.com/
    有关识别后显示3D物体,video等的一些基础与高级识别结果

    注:本着能不看英文就不看英文的想法,可以跳过高通的方案;
    

    不过国内也有不错的一个国内的引擎:EasyAR
    国内的有easyAR 地址: http://www.easyar.cn/

    文档和demo真的是干净,没有什么注释说明,
    刚刚接触的使用xcode打开demo看起来是不是一脸懵逼,
    没事不用懂代码都什么东西,使用unity配置好,玩玩导出ios的就可以了....
    
    屏幕快照 2017-05-26 上午9.24.36.png 屏幕快照 2017-05-26 上午9.26.01.png

    (👇图是博客园里的盗图,如有雷同是我抄袭,如果看到原出处,请告知,谢谢)
    图片地址:http://www.cnblogs.com/guanshenbao/p/5744407.html

    图片.png

    看到👆的图,应该就能猜测到,需要识别的图,
    和识别之后显示的酷炫效果是需要使用unity来制作的;

    EasyAR跟高通AR有类似的功能,两者的操作方法略有不同,
    高通需要把图片传到其网站上的,
    而easyAR是可以直接在工程上替换想要识别的图片的,(识别的图片)
    所以说在设定识别图片的方便度上,
    easyAR要比高通AR做的好一些。
    而在示例demo上高通做的比easyAR要好一些,
    比如识别后显示video上,高通有点击暂停,在点击播放的效果,
    而且可以转入到本地播放器,而easyAR就没有这个功能。

    HiAR不推荐,不做介绍,有兴趣的自己查阅;

    2 随着VR、AR、MR的火热,unity3D的发展也是水涨船高,
    其跨平台性更是其一大亮点,(跨平台)
    可以通过unity3D导出xcode工程的方法实现AR功能

    高通AR,easyAR,HiAR,都有对应的unity3D的开发包,
    导入开发包之后便可进行操作,
    可以显示需要的3D或2D场景,而且也都支持云识别等。

    注意开发时在plist文件中加入允许使用相机的属性。(权限问题,不然报错哈)

    3 关于人脸识别解决方案,可以利用opencv的一些东西。
    当然也可以用已经写好的一些第三方,比如face++,讯飞人脸识别等。

    解决方案参考了: CSDN:baidu_33735542的博客
    http://blog.csdn.net/baidu_33735542/article/details/55045539?locationNum=11&fps=1

    相关文章

      网友评论

        本文标题:AR 原理与技术分析

        本文链接:https://www.haomeiwen.com/subject/dnoaxxtx.html