Creating and Training Traditional Template Square Markers

创建并训练传统的Template Square Marker

  Marker是ARToolKit 的光学输入信号。传统的Template Square Marker 是一种能够被ARToolKit 在视频流中识别并跟踪的标记符号。标记符号就是一个简单的图形图像。ARToolKit 中包含了一些png,jpeg 和PDF格式的图案样例,以及一些样本文件。如下图所示,这是一个Hiro 的Square Marker,打印后贴到硬卡纸上的样子(贴到硬卡纸上是为了保持它的平整)。
  
  
  
  Square marker 只拥有几条约束条件。

  • 它们必须是正方形的.
  • 它们必须有一个连续的边框(通常来说不是纯黑就是纯白色)。同时,它的底色一定要与图案颜色有鲜明的对比(通常就是深色和浅色)。边框的厚度默认为这个Marker边界长度的25%。
  • 最后一条规定是,边框中的图案必须是不对称的。这个图案区域可以是黑白的,也可以是彩色的(ARToolKit 对于彩色图案拥有更准确的识别方法)。
      ARToolKit 支持类似于二维码这类的矩阵Marker 识别。 矩阵Marker 可以在多Marker 场景下提升跟踪效率,在使用了错误检测与修正(EDC)后,也能更有效地防止一个marker被误认为另一种marker的情况。

设计一个新的 Square Marker

  你可以通过修改ARToolKit SDK提供的样板图像来设计并制作一个全新的Marker:doc/patterns/Blank pattern.png。Marker 可以在任何大小被放置在场景的任何位置。ARToolKit中有一个专门用来设置marker大小以及其他属性的数据文件生成工具。
  
  Creating and Training Traditional Template Square Markers_第1张图片
  
  Marker 内部的50%区域被ARToolKit 认为是图像区,就像上面那张图一样。要注意,这个图像区可以是彩色的,也可以是白底黑字或是黑底白字,同时这个图像区前也可以扩展到边框区域中。但是要牢记这一点,超出内部50%区域的图像将被ARToolKit 忽略掉,同时也不要让图像区扩展得太大,否则在非常倾斜的时候ARToolKit 将再也无法识别这个Marker。
  
  Julian Looser’s web-based marker generator 十分的好用。
  
  如果你想使用二维码Marker, 可以在doc/patterns/Matrix code 3×3/这个目录下找到marker 图像。

训练 ARToolKit 来识别新的 Marker

  对于一个全新的Square Marker,ARToolKit 必须通过训练才能识别出它。这个训练过程的输出结果就是一个对应新Marker 的数据文件,也被称为”pattern file”。这个数据文件能够使ARToolKit 在捕获的视频流中检测,识别并跟踪新的Marker。
  
  二维码Marker 不需要数据文件,取而代之的是它们各自对应的数字。
  
  训练可以使用ARToolKit SDK 中的mk_patt 工具来进行。或者,也可以使用在线的训练工具:”Tarotaro”。(基于Adobe Flash的应用)

Using mk_patt

  mk_patt 是一款简单易用的新Marker 训练工具。Open a command-line session window (on Mac OS X / Linux, open a Terminal window, on Windows, choose “Run” from the Start menu, type “cmd”). 打开一个命令行输入窗口(Mac OS X 或Linux系统上打开Terminal 窗口,在Windows系统上进入开始菜单选择”运行”,输入cmd)。
  在 Linux / OS X 系统上输入:

 ./mk_patt

  在 Windows 系统上输入:

mk_patt.exe

  将会在窗口看到和下面类似的信息:

Enter camera parameter filename(Data/camera_para.dat):

  mk_patt 提示你加载摄像头校准文件(文件扩展名为.dat)。你可以使用ARToolKit SDK 提供的另一个工具来校准你的摄像头。这个工具为每一个摄像头都生成一个指定的校准数据文件。如果已经有一个可用的摄像头校准文件,就直接键入它的地址。
  
  你可以先不为你的摄像头创建校准数据文件而是直接使用ARToolKit SDK 提供的默认校准文件。要这么做,就在上面提示出现后直接点击回车。
  
  现在,你的摄像头就被启动了:
  
  
  将你的摄像头对准你的Marker图像。试着让Marker 正对摄像头,在屏幕上呈现正方形并适当的填充整个屏幕。如果Marker 的边框出现了红色和绿色的线,说明ARToolKit 已经识别了它。
  
  旋转Marker 让正方形线框上红色的角对应在它的左上角位置,然后点击鼠标左键(对于左撇子用户,这可能需要你们配置一下鼠标键位)。 这个图像就将被捕获,在你的终端窗口会看到如下提示:

Enter filename:

  为了方便标识输入一个以”patt.”为开头的唯一文件名并点击返回键。如果你不想保存它,可以点击返回键重新开始视频捕捉。就像这样,你可以训练更多的图案或者通过点击鼠标右键来退出程序。
  
  同时在你训练识别marker 时,也有更多的自定义选项(比如说设定marker 边框的大小)。使用–help 选项来运行工具将会显示出修改默认设定的很多命令行。这些帮助文本如下所示:

                (not inclusive).
-border=f: specify the width of the pattern border, as a percentage
           of the marker width. Range (0.0 - 0.5) (not inclusive).
--cpara <camera parameter file for the camera>
-cpara=<camera parameter file for the camera>
--vconf <video parameter for the camera>
-h -help --help: show this message

测试新的Marker 和生成的Pattern File

  你可以将新的图案添加到一个简单的样例程序中并重新编译它。首先把Pattern File 放到bin/Data directory 目录下。然后,在你的源码中找到 *patt_name = “Data/patt.hiro” 这一句,将patt.hiro 换成你的新图案名称。重新编译,就可以看到效果了。

Marker 自定义

改变 Marker 边框宽度

  Marker的边框是可以实时设定的。详情请查看 arSetPattRatio 文档。

改变 Marker 图案大小

  在ARToolKit 5.3版本中,Marker 的图案大小(图案的像素获取数)是可以实时改变的。默认设定为16×16 像素,如果你想保持对之前版本的兼容性的话,建议你保持这个设定。如果你希望在AR 初始化时改变这个大小,那么好好使用arPattCreateHandle2这个函数的参数吧。

使用大型 Square Marker

  如果要使用较大的图像,你最好去config.h文件中更改一下AR_SQUARE_MAX, AR_CHAIN_MAX, and AR_PATT_NUM_MAX 这几个参数的定义。这将影响内存使用,所以通常保守的设定为最小值。

为了获取最好的效果

  如果应用使用的摄像头与训练使用的摄像头是同一个,那么Marker 会取得最好的效果。训练摄像头在运行mk_patt之前应该先进行校准。
  
  不要忘记Marker 是可以使用彩色的,而且使用彩色Marker 可以提升AR 应用的表现。
  
  一个常见的错误是使用十分精细的图案进行跟踪。ARToolKit 的默认像素取样数量为16×16,很多细节的差异在图像减低到16×16像素时是无法区分的,因此会导致错误识别。

你可能感兴趣的:(ar,ARToolKit)