ここで実行するマーカーのパターン(pat)ファイル作成にはWebカメラが必要です。
具体的な作成方法は以下を参照。
このサイトには下で使用するパターン(pat)ファイル作成用のswfのソースも公開されています。
Creating and training new ARToolKit markers
下のようなマーカーを使うとします。
以下のFlashでカメラの使用を許可して、上のマーカー画像をカメラに収めてください。
この画像をクリックすれば、元のサイズで別ウィンドウで表示されます。
(タブブラウザの場合は新しいウィンドウで開いてください)
マーカー画像が赤い枠で囲まれたらパターン取得の準備ができたということなので、「Get Pattern」をクリック。
「Save Current」をクリックしてpatファイルを保存してください。
保存先は、Eclipseプロジェクトのassets/AR/dataです。
反映させるには、AndMmdActivity.javaのaddARMarker関数を使います。
引数は4つありますが最初の引数でpatファイルをasset内のパスで指定。
2番目の引数はMarker Segmentの値。16x16のままなら訂正不要です。
3番目の引数は外枠が画像全体に占める割合(%)。
4番目の引数は、マーカー画像の実寸法(mm単位)です。
外枠は黒が認識されやすいですが、
寒色系の濃い目の色ならいけそうです。
(黒枠ってのは、ちょっと抵抗があるし)
例えばこんな感じ。
この画像をマーカー(latmiku16.pat)にした場合、addARMarker関数はこんな風。
Marker Segments -> 16x16
a x b x 4/a^2 ≒ 0.12(重複部分をはしょってます、小数点以下切捨て)
a = 135(mm)
this._mid=this._ms.addARMarker(assetMng.open("AR/data/latmiku16.pat"),16,12,135);
このpatファイルです
NyARToolkitのコードを眺めてみると、どうも四角い画像の四隅の点と辺から認識を始めるみたい。
で、重要なのはこの「枠を持った四角」ということのようで、テスト中に「単なる四角い枠」をマーカーとして認識した例があります。
でも、中央の画像を変えると認識する/しないが機能するし。
ただの偶然なのか何なのかは不明のままです....。
PS
いろいろ試して分かったこと...。
外枠は背景の白と区別できるなら何色でもいいみたいですね。
(ただし、薄めのグレイや黄色はだめでした、多分枠の近傍の背景色と関係しているのでしょうね)
最初にパターンファイルを作った後、外枠の色をいろいろ変えてみたのですが、背景の白と区別できて外枠あると検出器が認識すればマーカーとしてOKなようです。
では、四隅にある程度の大きさのマークを置いただけの場合....ペケです。
外枠は必要で、addARMarkerに割合の値を渡しているのはこれで次に検出する範囲を決めている....んでしょうね。
外枠の色を変えてもOKなのは、画像を二値化した時、明確に値が出ればいいからなのでしょう。
で、その後四角形を探す作業に入るので枠は必要...ということかな。
で、パターンファイルを作った後で、マーカーを以下の2つの場合に変更しても検出できたのだが、
これってどういうことだろう?理にはかなっている..のかな?
ちなみに、枠の太さは少なくとも4ピクセルは必要なようです。