実験用ARマーカの作り方

NyARToolkitを使うためにはマーカを印刷する必要があります。
通常はコピー用紙にレーザプリンタなどで印字することが多いと思いますが、実験などで繰り返し使用するためには強度や反射特性が不十分な場合があります。
厚紙に張るなどの工作をしても良いですが、面倒な作業です。
ここでは、出来るだけ工作をせずに、性能の良い名刺サイズの実験用マーカを製造する方法を紹介します。

マーカの仕様

  • カードサイズ – 名刺サイズ(55[mm]x91[mm])
  • マーカサイズ – 40mm
  • マーカタイプ – NyIdマーカ10 種 NyARToolkit/nyar4psg/FLARToolkit対応
  • 用紙マット紙 – (名刺専用用紙)
  • 印刷方式 – インクジェット方式(モノクロ1色)

必要機材と材料

既製の名刺用紙と、モノクロインクジェットプリンターを利用します。プリンタの種類は、印字部(黒色)の部分の反射特性に大きな影響があります。

インクジェットプリンターはカラーのものでも構いませんが、モノクロモードで印刷してください。

  • 名刺用紙 KJ-VHA10LB
    コクヨ インクジェットプリンタ用名刺用紙 クリアカット 両面マット紙 厚口 10 面 10枚入
    クール白
  • プリンタ PX-K150
    EPSON A4モノクロプリンター 無線LAN・有線LAN対応

製造方法

印刷設定

PX-K150の場合、印字設定を以下のように設定します。他のプリンタの場合でも、用紙→「マット
紙」 品質→「きれい」のように、品質は最高位、用紙は普通紙ではなく「マット紙」に設定してくだ
さい。他のプリンタでの設定は、用紙パッケージ裏のプリンタ用紙設定条件を参考にしてください。

PK-K150の詳細設定

用紙設定の説明

印刷設定が適切でないと、擦れや印刷ズレが発生します。

左:正常印刷/右:設定不良

印刷

名刺用紙KJ-VHA10LBに印刷できるIDマーカセットのpdfを準備しました。pdfをダウンロード
し、実サイズで印刷します。
http://sourceforge.jp/projects/nyartoolkit/docs/NyIdMarkerCard_00_09_KJ-VHA10LB/ja/1/NyIdMarkerCard_00_09_KJ-VHA10LB.pdf

プリンタに用紙をセットして印刷をします。印刷実サイズで印刷をしてください。

切り離し

印刷が完了したら、用紙を取り外します。クリアカット用紙なので、折り曲げて外します。

印刷後の名刺用紙
カードの切り離し

評価

強度

名刺サイズにすることで、コピー用紙と比較して十分な曲げ強度を確保できます。

名刺用紙に印刷したマーカ

コピー用紙に印刷したマーカ

認識距離

マーカサイズが40mmのため、正確な姿勢検出が可能な距離は若干小さくなります。
距離は、VGA画像の場合約60cm、QVGAの場合約30cmです。
※NyARToolkitは32x32pixel以上のマーカを識別できます。

反射特性

強力な光源からの反射に対しては、他の印刷方式に対して差はありません。
蛍光灯などのスポット光の反射に対しては、インク面に光沢のあるレーザプリンタ・オンデマンド/オフセット印刷と比較して少なくなります。(インクジェット印刷)

インクジェット印刷図

オンデマンド印刷(上質紙)

オフセット印刷(マットコート)

評価装置全景

製造コスト

一枚当りの単価は以下の通りとなります。

  • 用紙: 約6円
  • インク: 約1円 (3000枚/カートリッジ)
  • プリンタ 約1円 (10000枚印刷時)
  • 計 約8円

まとめ

  • 名刺サイズのマーカ用紙は取り扱いやすく強度があり、短距離での実験に使用するには十分な性能を持ちます。
  • 製造コストは1枚当り8円とやや高価ですが、小ロット多品種製造では妥当な範囲です。
  • マーカのインク面反射の抑制には、インクジェットプリンタのモノクロ印刷が有効です。

テンプレート

名刺サイズマーカ印刷用のテンプレートファイルです。名刺用紙(KJ-VHA10LB)に合わせて編集してありますので、そのまま印刷できます。

この記事のpdfはここからダウンロードできます。

射影変換再び

以前実装した高速射影変換パラメータ計算器に不具合が見つかった。

見つけてくれたのはFLARManagerを作っているericさん。ありがたやー。

不具合の内容は、マーカが0,90,180,270度ぴったりのときに、高速射影変換パラメータ計算器がゼロ除算を起こして、パターン認識ができないとのこと。

原因を調べてみると、これは8元一次方程式の解き方の問題らしく、2.4系の頃からずっとあったらしい。気がつかなかったなぁ。ピボット操作をまともにしないで方程式を解いていたせいで、誤差蓄積の結果、計算に失敗するみたいだった。

というわけで、逆行列を使って誤差蓄積を少なくする方法に変更。でも8×8行列は重いので、4×4行列と2×2行列を組み合わせて解く方法を考えた。

理屈はこのへんにまとめたので、興味のある人は読んでみてね。
http://sourceforge.jp/projects/nyartoolkit/docs/tech_document0001/ja/2/tech_document0001.pdf

結果、パターン認識が失敗しにくくなり、小さいサイズのマーカの認識精度も向上。該当処理にかかる時間が倍になったのは残念だけど、全体への影響は1%以下なのでまあいいか。

実装はNyARToolkit2.5.2系としてリリース予定。既にtrunkにはコミット済みです。2.5.2では、ラスタ処理系の見直しや、静止画対応のサンプルなどをリリースする予定です。