【AR实验室】ARToolKit之制作自己的Marker/NFT
0x00 - 前言
看过example后,就会想自己动动手,这里改改那里修修。我们先试着添加自己喜欢的marker/nft进行识别。
比如我做了一个法拉利的marker:
还有网上找了一个法拉利logo的图片用于NFT(Natural Feature Tracking):
对应显示的模型是这样的(仅供参考^_^!)
0x01 - marker制作流程
1.制作marker图片
首先我们找到doc/patterns/Blank pattern.png,使用这个空白的marker图片制作出自己想要的marker。之所以使用这个blank pattern,是因为这个空白marker图片的符合marker的基本要求:
- 必须是方形。
- 必须有连续的边缘(一般来说全是白色或黑色)。另外在marker里面的pattern部分,我们使用差别较大的两种颜色分别表示前后景(比如此处我用黑色表示法拉利logo,白色作为其背景)。默认情况下,边缘的厚度占pattern图片的1/4。
- 被边缘所包围的部分就是我们所称的pattern,其必须具有旋转不对称性。pattern可以是黑白的,也可以是彩色的。
我们将法拉利的logo弄成黑白的,再添加到blank pattern中。得到以下maker:
2.训练marker图片
我们使用这个在线工具"Tarotaro"进行训练(如果想离线训练,可以使用ARToolKit提供的mk_patt的离线工具)。
a.打开Tarotaro网站并点击下面红框链接。
b.会打开如下的工具。这时将你需要训练的marker放入摄像头视野中,直到marker边缘出现红色边框。
界面介绍:
Mode Select:有Camera Mode和Load marker image两种方式。我们下面使用的就是Camera Mode方式。Load marker image是直接输入本地的marker图片进行训练。
Marker Segments和Marker Size我还不是很清楚是什么。我们这选择默认参数即可。
c.当marker边缘出现红色边框后,我们点击Get Pattern按钮,就可以得到下图,我们可以看到marker边框变成绿色了,此时我们选择Save Current按钮就可以得到对应的pattern文件,此处将其命名为ferrari.patt(初始后缀是pat,可以自己修改为patt)。
3.修改配置文件
我们选择example中的ARApp2的配置文件进行更改。主要是更改models.dat和markers.dat文件。
我们先将ferrari.patt文件和网上搜罗来的ferrari模型文件导入到ARApp2中。
在markers.dat添加
在model.dat添加
4.编译运行
配置文件修改完成后,我们就可以编译运行了。请看结果:
0x02 - NFT制作流程
1.选择图片
NFT其实就是提取图片的Natural Feature(自然特征)然后进行跟踪。ARToolKit中会先对图片进行处理,得到一组数据,后续追踪过程使用的其实是处理得到的数据集。并不是什么图片都可以进行NFT,对于进行NFT的图片,有以下一些要求:
- 追踪的图片必须是矩形图片。
- 图片必须是jpeg格式。(大部分商用AR SDK支持多种图片格式,比如EasyAR)
- 图片本身要有足够多的细节和边缘(自相似度较低,并且空间频率较高)。如果图片带有大量模糊或者细节较少的色块,追踪效果会比较差。
- 图片分辨率的提升会使ARToolKit提取出更多的特征点,这对于相机接近图片的情况或者使用高精度相机的情况,会大大提升追踪效果。
所以我选择下面这张图片做NFT:
2.提取图片特征
利用genTexData来生成对应的追踪数据
选择提取图片特征的程度,数值越大提取的特征越多。当相机离图片越近的时候,追踪效果会越好。此处使用默认值。
使用Photoshop查看该图片:
发现其分辨率是72,所以Enter resolution to use这部分输入72。
而最大最小分辨率范围,根据Training ARToolKit Natural Feature Tracking (NFT) to Recognize and Track an Image文章中提到的,根据不同相机分辨率及相机远近有不同取值,一般使用20~120最为合适。而我们这边最大分辨率只有72,所以我选择20~72。
得到image set(ferrari-nft.iset)和featureList(ferrari.fset&ferrari.fset3)两组数据
我们使用dispFeatureSet工具可以显示一下看看特征点提取情况:
3.修改配置文件
我们修改ARAppNFT的配置文件来试验我们的成果。
首先添加对应训练数据:
修改markers.dat
和上面marker图片训练一样,添加法拉利模型,并在models.dat中添加法拉利模型显示信息:
4.编译运行
0x03 - 参考资料
Creating and Training Traditional Template Square Markers
Training ARToolKit Natural Feature Tracking (NFT) to Recognize and Track an Image
【AR实验室】ARToolKit之制作自己的Marker/NFT的更多相关文章
- 【AR实验室】mulberryAR : ORBSLAM2+VVSION
本文转载请注明出处 —— polobymulberry-博客园 0x00 - 前言 mulberryAR是我业余时间弄的一个AR引擎,目前主要支持单目视觉SLAM+3D渲染,并且支持iOS端,但是该引 ...
- unity3D AR涂涂乐制作浅谈
unity3D AR涂涂乐制作浅谈 AR为现在是虚拟现实较为火爆的一个技术,其中有个比较炫酷的就是AR涂涂乐的玩法,这个技术可以把扫描到的图片上的纹理 粘贴到模型上实现为模型上色的功能,但是我们需要怎 ...
- 【AR实验室】mulberryAR:并行提取ORB特征
本文转载请注明出处 —— polobymulberry-博客园 0x00 - 前言 在[AR实验室]mulberryAR : ORBSLAM2+VVSION末尾提及了iPhone5s真机测试结果,其中 ...
- 【AR实验室】ARToolKit之概述篇
0x00 - 前言 我从去年就开始对AR(Augmented Reality)技术比较关注,但是去年AR行业一直处于偶尔发声的状态,丝毫没有其"异姓同名"的兄弟VR(Virtual ...
- 【AR实验室】ARToolKit之Example篇
0x00 - 前言 PS : 我突然意识到ARToolKit本质可能就是一个可以实时求解相机内外参的解决方案. 拿到一个新的SDK,90%的人应该都会先跑一下Example.拿到ARToolKit的S ...
- 【AR实验室】OpenGL ES绘制相机(OpenGL ES 1.0版本)
0x00 - 前言 之前做一些移动端的AR应用以及目前看到的一些AR应用,基本上都是这样一个套路:手机背景显示现实场景,然后在该背景上进行图形学绘制.至于图形学绘制时,相机外参的解算使用的是V-SLA ...
- 【AR实验室】mulberryAR :添加连续图像作为输入
本文转载请注明出处 —— polobymulberry-博客园 0x00 - 前言 之前mulberryAR只能利用手机相机实时捕捉图像作为系统的输入,这也比较符合用户的习惯.但是在开发的过程中,有时 ...
- VR与AR的发展趋势分析
概要 你是否想象过与神秘的深海生物近距离接触?你是否梦想过穿戴钢铁侠那样的超先进科技装备成为超级英雄?你又是否幻想过与梦中的女神面对面的交流?这些可能在以前都只能是存在于脑海中的幻想,可是在如今有一项 ...
- GNU的ar,ranlib和nm
转:http://blog.csdn.net/yuntongsf/article/details/6284517 RANLIB 的作用: CC = CC=/usr/local/ndk/toolchai ...
随机推荐
- shell注释
sh里没有多行注释,只能每一行加一个#号.只能像这样: #-------------------------------------------- # 这是一个自动打ipa的脚本,基于webfrogs ...
- sonn_game网站开发01:写在最前面
之前做的个人博客项目,日向博客现在已经进入后期完善阶段了.是时候开始打造一个新坑了. 然而改造个什么坑呢?构思了好几天,想了好多方案,都觉得没啥动手欲望.因为,我想做的是那种,自己能用得上,而且有一定 ...
- Android中手机录屏并转换GIF的两种方式
之前在博文中为了更好的给大家演示APP的实现效果,本人了解学习了几种给手机录屏的方法,今天就给大家介绍两种我个人用的比较舒服的两种方法: (1)配置adb环境后,使用cmd命令将手机界面操作演示存为视 ...
- 年度巨献-WPF项目开发过程中WPF小知识点汇总(原创+摘抄)
WPF中Style的使用 Styel在英文中解释为”样式“,在Web开发中,css为层叠样式表,自从.net3.0推出WPF以来,WPF也有样式一说,通过设置样式,使其WPF控件外观更加美化同时减少了 ...
- 写出易调试的SQL
h4 { background: #698B22 !important; color: #FFFFFF; font-family: "微软雅黑", "宋体", ...
- 【云知道】究极秒杀Loadrunner乱码
Loadrunner乱码一击必杀 之前有介绍一些简单的针对Loadrunner脚本或者调试输出内容中乱码的一些设置,但是并没能完全解决一些小伙伴的问题,因为那些设置实在能力有限,还是有很多做不到的事情 ...
- 微信小程序教程汇总
目前市面上在内测期间出来的一些实战类教程还是很不错的,主要还是去快速学习小程序开发的整体流程,一个组件一个组件的讲的很可能微信小程序一升级,这个组件就变了,事实本就如此,谁让现在是内测呢.我们不怕,下 ...
- atitit.细节决定成败的适合情形与缺点
atitit.细节决定成败的适合情形与缺点 1. 在理论界有两种观点:一种是"细节决定成败",另一种是"战略决定成败".1 1.1. 格局决定成败,方向决定成败 ...
- 微软开放.NET框架源代码和Mono
微软一直在朝着更加开放的方向努力.例如,公司首席执行官萨特亚纳德拉(Satya Nadella)在Windows 10预览发布会上声称微软喜欢Linux,这并不出人意料,但是对于一家将Linux视作威 ...
- 【Web动画】CSS3 3D 行星运转 && 浏览器渲染原理
承接上一篇:[CSS3进阶]酷炫的3D旋转透视 . 最近入坑 Web 动画,所以把自己的学习过程记录一下分享给大家. CSS3 3D 行星运转 demo 页面请戳:Demo.(建议使用Chrome打开 ...