增强现实引擎ARToolKit工作原理简介

iefreer 发表于 2018-11-19 17:46:47

标签: webar, artoolkit, webxr

- +

ARToolkit是一个基于CV(计算机视觉)和Marker(标识)的开源增强现实引擎。

其具备如下功能特性:

A. 鲁棒跟踪,包括基于标记的跟踪与基于特征的跟踪; 

B. 强用力的摄像头/相机标定支持(摄像头/相机标定需要确定中心点坐标(光心)、摄像机实际焦距(fx=α∗f,fy=β∗f)(fx=α∗f,fy=β∗f)与镜头畸变参数(取决于畸变模型);主要提供两种标定方法:两步标定法与一步标定法;当已知摄像头/相机内部参数时,ARToolkit程序就可以在运行时自动矫正摄像头畸变); 

C. 多目标支持与单目相机支持; 

D. 移动设备优化;

E. Unity3D、OpenSceneGraph支持;

F. 支持WebAR。(JSARToolkit或AR.js)


ARToolkit通过计算机视觉来判断是否找到标记及在标识识别成功后计算虚拟物体所处位置,其流程图如下:

artoolkit.gif

A. 摄像机捕获真实世界的视频,并将其传送给计算机; 

B. 软件监控视频流中的每一帧图像,并在其中搜索所有的正方形(方形标记); 

C. 如果找到并且匹配和识别方形标记(方形和嵌入的图像)后,计算出相对摄像头的图形标记位置和图案方向(投影变换矩阵/位姿); 

D. 利用摄像头位姿来调整模型的位置和方向; 

E. 将模型渲染到标记卡所在(帧画面)的位置(叠加在视频图像帧上)。


基于ARToolkit的AR系统(或应用程序)工作流程如下:

A. 系统初始化:初始化视频捕捉、载入模板及其对应虚拟对象、相机内参(光心|焦距|畸变参数); 

B. 标记检测(搜索整个图像,寻找含有正确标识模板的标记):计算分割阈值、图像分割、模板匹配、计算投影变换矩阵; 

C. 3D场景渲染:匹配成功则利用ARToolkit传递的投影变换矩阵计算3D场景(一般是虚拟物体模型)叠加位置并最终渲染显示。

possitive(2) negative(0) views650 comments0
私信 收藏 分享
分享到

发送私信

最新评论

请先 登录 再评论.
相关文章
  • ARCore基本概念和工作原理简介

    谷歌的WebAROnARCore项目基于Android手机提供的ARCore增强现实引擎,要了解WebAROnARCore,需要先了解ARCore的工作原理。基本上ARCore做了两件事,首先跟踪手机...

  • Monaco Editor 编辑器拷贝粘贴功能调用和获取选中文本

    有时候需要在monaco editor外部调用编辑器的内置功能比如希望在页面主工具栏实现一些快捷操作。button

  • CSS3属性选择器特性使用详解

    CSS3除了引入动画、滤镜(用于特效)以及新的布局技术外,在选择器(selector)方面也有增强。属性选择器根据元素的属性(attributes)来匹配。这可以是一个单独...

  • CSS3原生变量(Native Variables)新特性简介

    对Web开发者来说,一个盼望已久的特性是CSS终于支持原生变量了!
    变量是程序语言中用来解决代码重复和进行表达式计算的关键概念(想想数学方程式中的x)。...

  • CSS3人行走动作图解和动画实现

    对于人类而言,行走是一种很自然的想要前进并防止跌倒的一组动作重复。大部分人1岁就学会了走路,但至此以后的几十年间,或许我们从来没留意过自己行走姿势。当...

  • JavaScript语言多编程范式简介

    和C++等语言类似,JS支持多范式(paradigms)编程。我们常常混合这些范式来完成一些大型Web项目。JS支持3种编程范式:命令式、面向对象和函数式。命令式(Imperative JavaScript)命令式就是简单的从上而下完成任务,流水账过程式编码风格:function

  • CSS3弹性布局内容对齐(justify-content)属性使用详解

    内容对齐(justify-content)属性应用在弹性容器上,把弹性项沿着弹性容器的主轴线(main axis)对齐。该操作发生在弹性长度以及自动边距被确定后。 它用来在存...

  • Three.js入门教程5 - 10个必须知道的编程技巧

    作者为Google的Paul,关于如何写出好的WebGL代码的文章。和很多开发者一样,我通过实践学习,但同时我也向其他更有经验的开发者们学习。在过去的几个月中,我在c...

  • WebGL入门教程4 - 使用纹理贴图(Texture Map)

    3D建模和纹理贴图的关系就好比人体和皮肤(或着装)的关系,3D建模用来处理空间属性,而贴图适合用来处理细腻的表面属性。如果不使用贴图,而想在表面达到足够的...

  • Three.js 开发基础知识 - 绘制3D对象

    Three.js是一个用来简化WebGL开发的JavaScript库,比如绘制一个三维立方体,使用WebGL需要100多行,那Three.js只要10几行就能够完成。本文通过创建一个立方体来...

  • 使用CSS3实现流星雨动画教程

    很多营销页面中需要实现类似流星雨的动画背景,营造节日浪漫的气氛。要实现这样的效果,有两种方法,一个是使用Canvas,一个是使用纯CSS3,我们这里介绍第2种方...

  • 更多...