【AR实验室】ARToolKit之概述篇

0x00 - 前言



我从去年就开始对AR(Augmented Reality)技术比较关注,但是去年AR行业一直处于偶尔发声的状态,丝毫没有其"异姓同名"的兄弟VR(Virtual Reality)火爆。至于MR(Mixed Reality)更像是Google Glass事情之后对AR的洗白。但是今年AR行业出了件大事,没错,别左右看了,说的就是你 —— Pokemon GO。暂且不讨论这款游戏是不是AR游戏,毕竟争议挺大,但是这款游戏着实是让AR火了一把。AR应用开发貌似也有了燎原之势。

0x01 - AR技术定义



目前对AR技术的常见理解就是CV(Computer Vision)+CG(Computer Graphic)。CV的方法很多,简单些比如FREAK+ICP(ARToolKit中的NFT),复杂些就是SLAM(Magic Leap)。CG就没什么好说的,利用CV算法获取到的图形相关信息(比如CG中的模型矩阵、视图矩阵、投影矩阵)进行绘制。从这一点上来说Pokemon GO确实不能算作AR游戏,毕竟人家只是基于LBS的。

知乎上有一个话题 - 我想给大家说下AR的昨天今天明天可以吗?欢迎一起讨论 关于未来的AR形态?里面提到了AR两种被广泛接受的定义:

1. 一种是Paul Milgram和Fumio Kishino于1994年定义的“现实-虚拟连续体”。他们描述了从真实环境到虚拟环境的连续体。如图1-2所示,真实场景和虚拟场景分布在两端,在这两者之间接近真实环境的是增强现实,接近虚拟场景的是增强虚拟(扩增虚境),而位于中间的部分叫做混合实境。

2. 另外一种定义是1997年北卡大学的Ronald Azuma提出的增强现实的定义。他认为增强现实技术应具有三个具体特征:三维注册、虚实融合以及实时交互。
作者:AR学院归海
链接:https://www.zhihu.com/question/33214635/answer/56058935
来源:知乎
著作权归作者所有,转载请联系作者获得授权。

如果从这两个定义来说,Pokemon GO也是可以算一种简单形式的AR游戏,至少给人在感官上的体验是符合AR的。其虽然我知道很多人认为下面这样才叫AR……但是我们还是要有信心的嘛!

这里我表达一下我个人对AR的看法:

不管是vision based还是LBS,AR在技术上的目标其实就是建立一个和现实场景1:1的虚拟世界。从CG的角度,AR最关键的技术点是建立一个相机坐标系,并能获取到现实场景中相应的模型信息(网格、位姿、材质等等)。那么vision based的方法目前可以做到对于已经注册过的识别对象,是可以获取到它在相机坐标系中的位姿信息。而LBS的方法更符合一般CG开发的流程,首先利用GPS建立一个世界坐标系,就可以获取到每个物体在世界坐标系的位置(包括相机),这样你就可以将这些物体转化到相机坐标系中,思路差不多是这样,只是精度上存在一定问题。目前给AR下一个精准的定义还太早,我认为用户感官上觉得是虚实融合就可以算是AR。

0x02 - AR技术现状



虽然上面提到了很多次Pokemon GO,但是LBS的AR系统并不是我想研究的重点,毕竟从目前来看vision based的AR系统才是主流。但是局限于我个人的见识,只使用过Vuforia、EasyAR、ARToolKit。大家有兴趣的话,可以看一下知乎上的讨论 - 有哪些比较优秀的AR开源项目,或者SDK?

Vuforia没得说,商业SDK,支持的特性也比较多,好像可以支持3D Object Tracking,具体支持到什么程度,还没有尝试,大家感兴趣可以登录Vuforia官网。EasyAR是国内的一款SDK,AR识别性能还是要赞一个,大家可以去看EasyAR官网视频,还是很真实地反映了其性能(不像Magic Leap之前那个鲸鱼的视频),个人还是很看好的,比起Vuforia最大优势是免费使用时不需要水印(^_^;)。而ARToolKit相对上述两个SDK在识别性能和特性上表现的不是很突出,但是ARToolKit胜在开源,如果你需要做一些AR业务扩展,而Vuforia和EasyAR不能满足你,ARToolKit是一个很好的选择。而且AR其中一个趋势就是集成到现有App中,那么使用Vuforia和EasyAR的代价就比较大了。另外作为一个学生,抱着研究学习的心态,ARToolKit就再合适不过了。

所以后期我还是专注于ARToolKit的研究上,听说今年秋天ARToolKit6将发布,还是很期待的,ARToolKit官网链接请戳

0x03 - ARToolKit概述



ARToolKit系统核心思路是这样的:

下面以NFT(自然图片追踪,Natural Feature Tracking)为例,简述AR实现流程

1. 通过相机校准(标定),获取到因为相机制造工艺偏差而造成的畸变参数,也就是相机内参(intrinsic matrix),来复原相机模型的3D空间到2D空间的一一对应关系。这对后面的特征提取步骤有很大作用。

2. 根据相机本身的硬件参数,我们可以计算出相应的投影矩阵(Projection Matrix)。

3. 对待识别的自然图片(也就是任意的一张二维图片)进行特征提取,获取到一组特征点{P1}。

4. 实时对相机获取到的图像进行特征提取,也是一组特征点{P2}。

5. 使用ICP(Iterative Closest Point)算法来迭代求解这两组特征点的RT矩阵(Rotation&Translation),即Pose矩阵,也就是图形学中常说的模型视图矩阵(Model View Matrix)。

6. 有了MVP矩阵(Model View Projection),就可以进行图形绘制了。

0x04 - ARToolKit支持特性



目前来说,ARToolKit支持自然图片/Marker/2D BarCode的识别。

  • 自然图片处理

这个应用比较广泛,对用户的限制也会小很多。不过最好使用一些特征比较明显的图像,效果会更好。

  • Marker/MultiMarker

这是一种经过特殊处理的图像,需要在边缘包裹两层,最外侧是包裹了白色/浅色边缘,内侧是包裹了黑色边缘,大家猜也能猜出来这样做主要是提高识别度,同时也方便计算Pose(因为可以直接提取边缘来计算Pose)。如下图:

  • 2D BarCode(二维码)

这个没什么好说的,最常见的。

另外ARToolKit目前支持的渲染引擎是OSG(OpenSceneGraph),不过版本比较低。当然,你也可以使用OpenGL ES进行绘制。毕竟我们只需要获取到了MVP矩阵,理论上绘制部分是可以完全分开的。

0x05 - 参考资料


时间: 2024-08-25 14:25:56

【AR实验室】ARToolKit之概述篇的相关文章

Java架构师成长之道之计算机组成原理概述篇

Java架构师成长之道之计算机组成原理概述篇 Java架构师成长之道 1.1 计算机的发展简史 1.1.1 计算机发展的四个阶段 自从1945年至今,计算机经历了电子管计算机,晶体管计算机,集成电路计算机以及超大规模集成电路计算机. 电子管计算机(1945年-1957年) 第二次世界大战是电子管计算机产生的催化剂,而最著名的电子管计算机是来自美国的埃尼阿克(ENIAC),这一时期的计算机有如下特点: 集成度小,占用空间大 功耗高,运行速度慢 操作复杂,更换程序需要接线 晶体管计算机(1957年-

Android核心分析 ----- Android电话系统-概述篇

Android电话系统之概述篇 首先抛开Android的一切概念来研究一下电话系统的最基本的描述.我们的手机首先用来打电话的,随后是需要一个电话本,随后是PIM,随后是网络应用,随后是云计算,随后是想我们的手机无所不能,替代PC.但是作为一个电话的基本功能如下: 0)拨叫电话,接听电话,挂断电话,发送短信,网络连接,PIM管理 1)由于电话运营商为我们提供了呼叫等待,电话会议等补充业务,所以我们的手机需要管理多路通话,如何管理? 2)来电时,我们要播出来电铃声,接通时我们需要切换语音通道,这个又

【AR实验室】ARToolKit之Example篇

0x00 - 前言 PS : 我突然意识到ARToolKit本质可能就是一个可以实时求解相机内外参的解决方案. 拿到一个新的SDK,90%的人应该都会先跑一下Example.拿到ARToolKit的SDK,也不例外.不过本人之前是做iOS开发的,所以从官网下载的是ARToolKit5-bin-5.3.2-iOS.tar.gz.后面的博客内容基本上也都是围绕这个SDK进行的.当然,如果今年秋季出了ARToolKit6,我也会立马跟进的,听说ARToolKit加入了SLAM. 0x01 – 示例简介

掌上快递 APP 项目之概述篇

概述 学习Android开发也有一段时间了,利用业余时间独立制作的一款快递类APP软件.大概2个多星期吧,自己将其定位为"集快递信息追踪.附近快递点查询. 快递公司投诉功能为一体的便民生活类快递 app".难度不是非常大,主要是是能够锻炼一下自己近来所学的,这个小项目涉及到前端到后台.从数据模型到网络数据解析,还有百度map,为了使側滑效果好看还使用了slidingmenu_library开源库. 主要实现了下面功能: [1]输入快递单号或者扫描二维码 查询快递信息 [2]收藏当前快递

基于ONOS的SDN-IP架构概述篇

编者按:SDN-IP是ONOS上的一个应用程序,允许软件定义网络使用标准的边界网关协议(BGP)连接到外部网络.从BGP角度看,SDN网络表现为单一的自治系统(AS),其行为与任何传统的AS一样.基于AS的SDN-IP应用提供BGP和ONOS之间的集成整合机制,在协议层SDN-IP的行为作为一个有规则的BGP发言人.从ONOS的角度来看,它只是使用其服务,在SDN数据平面安装和更新相应的转发状态的应用程序. 1 架构目标  1.1 SDN-IP设计目标 (1)兼容性Compatibility:S

敏捷开发 之 理论概述篇

一. 敏捷实践 1. 敏捷宣言 个体与交互 胜过 过程和工具 可以工作的软件 胜过 面面俱到的文档 客户合作   胜过 合同谈判 响应变化   胜过 遵循计划 1.1 个体与交互胜过过程和工具 合作.沟通以及交互能力要比单纯的编程能力更为重要. 工具要选用合适的,不要一开始就盲目选择所谓强大的.要从小工具开始尝试,直到无法适用再去更换. 1.2 可以工作的软件胜过面面俱到的文档 面面俱到的文档需要花费大量的时间成本来编写和维护.过时的文档比没有文档更具危害性. Martin文档第一定律:直到迫切

Proxy --概述篇

概述: Proxy 用于修改某些操作的默认行为,等同于在语言层面做出修改,所以属于一种"元编程"(meta programming),即对编程语言进行编程. Proxy 可以理解成,在目标对象之前架设一层"拦截",外界对该对象的访问,都必须先通过这层拦截,因此提供了一种机制,可以对外界的访问进行过滤和改写.Proxy 这个词的原意是代理,用在这里表示由它来"代理"某些操作,可以译为"代理器". var obj = new Pr

Ceph企业分布式存储——概述篇

一.概述 Ceph是可靠的.可扩展的.统一的.开源分布式的存储系统.可以同时提供对象存RADOSGW(Reliable.Autonomic.Distributed.Object Storage Gateway).块存储RBD(Rados Block Device).文件系统存储Ceph FS(Ceph Filesystem)3种功能. Ceph是一个开源的分布式文件系统.因为它还支持块存储.对象存储,所以很自然的被用做云计算框架openstack或cloudstack整个存储后端.当然也可以单独

WPF学习笔记之-WPF概述篇(两大亮点)

WPF的两大亮点 一.硬件加速 WPF 图形显示是基于DirectX(最初是为游戏显示开发的图形显示引擎),而非GDI/GDI+. WPF的目标是将尽可能多的工作交给显卡处理,所以复杂图形通常属于渲染范围(由GPU处理)而不属于处理器范围(由计算机的CPU处理).也就是说,可以让CPU空闲下来去完成其他工作,充分利用显卡的功能,并且还可以充分利用未来新显卡所具备的不断增加的新功能. WPF渲染级别(WPF TIERS) 显卡功能的区别是非常重要的.当WPF访问显卡时,它会考虑许多因素,包括显卡上