0x00 - 前言


PS : 我突然意识到ARToolKit本质可能就是一个可以实时求解相机内外参的解决方案。

拿到一个新的SDK,90%的人应该都会先跑一下Example。拿到ARToolKit的SDK,也不例外。不过本人之前是做iOS开发的,所以从官网下载的是ARToolKit5-bin-5.3.2-iOS.tar.gz。后面的博客内容基本上也都是围绕这个SDK进行的。当然,如果今年秋季出了ARToolKit6,我也会立马跟进的,听说ARToolKit加入了SLAM。

0x01 – 示例简介


example pattern result
ARApp
解锁技能:触摸该正方体,正方体将会旋转
ARApp2
总共4个marker

支持multi markers
ARAppOSG
总共2个marker
ARAppMovie
ARAppNFT
ARAppNFTOSG
ARAppCameraTest 主要是为了测试相机的若干功能,比如屏幕分辨率切换、截屏、前后摄像头切换。
ARAppES1

0x02 - Pattern文件


pattern指的是你识别的图片模板,虽然上述表格使用图片来表示pattern,但是在ARToolKit中,我们需要对图片进行训练,对于marker类型的图片是输出”.patt”文件以便ARToolKit进行识别。而NFT(Natural Feature Tracking)自然图片是输出FeatureList,比如上述使用的pinball.jpg输出的FeatureList就是“pinball.fset”、”pinball.fset3”(而pinball.iset表示的是pinball.jpg的image set,即原始的图片信息)。关于图片/marker训练这一部分后面会专门开一章详解

pattern的图片可以打印出来,example中的pattern图片都是放在doc/patterns文件夹下。比如hiro pattern的pattern文件就是hiro.patt。

打开hiro.patt文件,你可以看到里面全是数字,不过很明显,这些应该都是颜色值:

考虑到hiro是黑白图,所以我将这些颜色值当做灰度值进行了图片输出,得到了下面这张图片。敢情hiro.patt的本质其实是这样的:

而pinball.jpg的pattern文件是这样的:

pinball.fset
&pinball.fset3

Tip

pattern的图片存放在doc/patterns文件夹下,hiro pattern有两张图片

hiro pattern with border hiro pattern

实际使用中,可以明显发现hiro pattern with border的识别率远远高于hiro pattern,这是因为有了border的对比(注意到border和pattern黑色边缘的对比明显),对于pattern的识别率有显著提高。


0x03 - 其他配置文件


除了pattern文件,每个example都有三个同样的文件 – camera_para.dat、markers.dat、models.dat。

  • camera_para.dat

相机标定获取到的相机内参。

下图解释了内参与外参的含义(来源自知乎机器视觉的相机标定到底是什么?)。

  • markers.dat

  • models.dat

另外还有TRANSPARENT选项,添加这个字段表示该模型有透明部分。

其实你也可以通过修改程序,增加自己的配置选项,还是很方便扩展的。

【AR实验室】ARToolKit之Example篇的更多相关文章

  1. 【AR实验室】mulberryAR : ORBSLAM2+VVSION

    本文转载请注明出处 —— polobymulberry-博客园 0x00 - 前言 mulberryAR是我业余时间弄的一个AR引擎,目前主要支持单目视觉SLAM+3D渲染,并且支持iOS端,但是该引 ...

  2. 【AR实验室】mulberryAR:并行提取ORB特征

    本文转载请注明出处 —— polobymulberry-博客园 0x00 - 前言 在[AR实验室]mulberryAR : ORBSLAM2+VVSION末尾提及了iPhone5s真机测试结果,其中 ...

  3. 【AR实验室】ARToolKit之概述篇

    0x00 - 前言 我从去年就开始对AR(Augmented Reality)技术比较关注,但是去年AR行业一直处于偶尔发声的状态,丝毫没有其"异姓同名"的兄弟VR(Virtual ...

  4. 【AR实验室】ARToolKit之制作自己的Marker/NFT

    0x00 - 前言 看过example后,就会想自己动动手,这里改改那里修修.我们先试着添加自己喜欢的marker/nft进行识别. 比如我做了一个法拉利的marker: 还有网上找了一个法拉利log ...

  5. 【AR实验室】OpenGL ES绘制相机(OpenGL ES 1.0版本)

    0x00 - 前言 之前做一些移动端的AR应用以及目前看到的一些AR应用,基本上都是这样一个套路:手机背景显示现实场景,然后在该背景上进行图形学绘制.至于图形学绘制时,相机外参的解算使用的是V-SLA ...

  6. 【AR实验室】mulberryAR :添加连续图像作为输入

    本文转载请注明出处 —— polobymulberry-博客园 0x00 - 前言 之前mulberryAR只能利用手机相机实时捕捉图像作为系统的输入,这也比较符合用户的习惯.但是在开发的过程中,有时 ...

  7. AR增强现实开发介绍

    AR增强现实开发介绍 ---理论篇 ​ AR增强现实开发最近做一些AR增强现实的内容,一些普及性的内容,与大家分享. 一: 什么是AR增强现实技术: 是一种将真实世界信息和虚拟世界信息“无缝”集成的新 ...

  8. 手牵手,使用uni-app从零开发一款视频小程序 (系列上 准备工作篇)

    系列文章 手牵手,使用uni-app从零开发一款视频小程序 (系列上 准备工作篇) 手牵手,使用uni-app从零开发一款视频小程序 (系列下 开发实战篇) 前言 好久不见,很久没更新博客了,前段时间 ...

  9. OpenCV笔记大集锦(转载)

    整理了我所了解的有关OpenCV的学习笔记.原理分析.使用例程等相关的博文.排序不分先后,随机整理的.如果有好的资源,也欢迎介绍和分享. 1:OpenCV学习笔记 作者:CSDN数量:55篇博文网址: ...

随机推荐

  1. 我为Net狂 ~ 社交平台系列小集合!

    微信平台: 我为Net狂(dotNetCrazy) 资源贴吧: http://tieba.baidu.com/f?kw=毒逆天 个人博客: http://dunitian.cnblogs.com/ h ...

  2. 自定义Inspector检视面板

    Unity中的Inspector面板可以显示的属性包括以下两类:(1)C#以及Unity提供的基础类型:(2)自定义类型,并使用[System.Serializable]关键字序列化,比如: [Sys ...

  3. .net Elasticsearch 学习入门笔记

    一. es安装相关1.elasticsearch安装  运行http://localhost:9200/2.head插件3.bigdesk插件安装(安装细节百度:windows elasticsear ...

  4. [WARNING] Using platform encoding (GBK actually) to copy filtered resources, i.e. build is platform

    eclipse maven clean install 报错 1. 修改properties-->resource-->utf-8仍然报错 2.修改项目pom.xml文件,增加: < ...

  5. SDWebImage源码解读 之 NSData+ImageContentType

    第一篇 前言 从今天开始,我将开启一段源码解读的旅途了.在这里先暂时不透露具体解读的源码到底是哪些?因为也可能随着解读的进行会更改计划.但能够肯定的是,这一系列之中肯定会有Swift版本的代码. 说说 ...

  6. MJRefresh 源码解读 + 使用

    MJRefresh这个刷新控件是一款非常好用的框架,我们在使用一个框架的同时,最好能了解下它的实现原理,不管是根据业务要求在原有的基础上修改代码,还是其他的目的,弄明白作者的思路和代码风格,会受益匪浅 ...

  7. web api接口同步和异步的问题

    一般来说,如果一个api 接口带上Task和 async 一般就算得上是异步api接口了. 如果我想使用异步api接口,一般的动机是我在我的方法里面可能使用Task.Run 进行异步的去处理一个耗时的 ...

  8. java面向对象六原则一法则

    1. 单一职责原则:一类只做它该做的事. 2. 里氏替换原则:子类必须能够替换基类(父类),否则不应当设计为其子类. 3. 依赖倒换原则:设计要依赖于抽象而不是具体化. 4. 接口隔离原则:接口要小而 ...

  9. EC笔记:第4部分:21、必须返回对象时,别返回引用

    使用应用可以大幅减少构造函数与析构函数的调用次数,但是引用不可以滥用. 如下: struct St { int a; }; St &func(){ St t; return t; } 在返回t ...

  10. C++常见笔试面试要点以及常见问题

    1. C++常见笔试面试要点: C++语言相关: (1) 虚函数(多态)的内部实现 (2) 智能指针用过哪些?shared_ptr和unique_ptr用的时候需要注意什么?shared_ptr的实现 ...