ARToolKit NFT (ARToolKit NFT Version 3)
パターン作成 - 1
ここでは、ARToolKit NFT を用いてトラッキングする対象画像のパターンファイルを作成するためのツールについて説明します。
前章の作業が必須になります。
おさらい
前回の手順と同様に異なる画像を用いてパターンファイルを作成します。
今回使用する画像は下記になります。
1500 x 2000 pixels、解像度 200DPI、190 x 254 mmで印刷する事を想定しています。
このファイルは、target01.jpgとして%ARTOOLKIT_NFT_ROOT%\bin\Data\target01に保存します。
それではおさらいしていきましょう。
イメージセット(iset)作成
C:\User\ユーザー名> cd %ARTOOLKIT_NFT_ROOT%\bin
C:\ARToolworks\ARToolKitNFT\bin> genImageSet.exe Data\target01\target01.jpg
Reading JPEG file.
end.
Size = (1500,2000) DPI = 200.000000
Enter next output image resolution (in DPI), or press 'Return' to end.: 160
Enter next output image resolution (in DPI), or press 'Return' to end.: 120
Enter next output image resolution (in DPI), or press 'Return' to end.: 80
Enter next output image resolution (in DPI), or press 'Return' to end.: 40
Enter next output image resolution (in DPI), or press 'Return' to end.: 20
Enter next output image resolution (in DPI), or press 'Return' to end.: <エンタキー押下>
Selected resolutions (in DPI): 160.000000 120.000000 80.000000 40.000000 20.000000
Size = (1500,2000) Zoom = 0.333333
Generating ImageSet...
Done.
Saving to Data\target01\target01.iset.
Done.
今回は含める解像度を増やしています。
画像が表示されたらエスケープキーを押して終了させてください。
特徴マップ(fmap)作成
C:\ARToolworks\ARToolKitNFT\bin> genFeatureMap.exe Data\target01\target01.iset
Read ImageSet.
end.
Start for 160.000000 dpi image.
ImageSize = 1920000[pixel]
Extracted features = 42451[pixel]
_中略_
Filtered features = 604[pixel]
199/ 200.
Done.
特徴集合(fset)作成
C:\ARToolworks\ARToolKitNFT\bin> genFeatureSet.exe Data\target01\target01.iset
MAX_THRESH = 0.850000
MIN_THRESH = 0.650000
SD_THRESH = 10.000000
Read ImageSet.
end.
Read FeatureMap(160.000000 dpi).
end.
Max feature = 1216
1: (495,924) : 0.665179 min=0.677156 max=0.908090, sd=12.102511
_中略_
6: (138, 95) : 0.808626 min=0.682455 max=0.917171, sd=31.436526
---------------------------------------------------------------
Save FeatureSet.
end.
終わると画像の上に赤いボックスが表示されているウィンドウが開きます。
簡単にチェックしたらエスケープキーを押して終了して次に進みます。
設定ファイル(dat)ファイル作成
新規にメモ帳などで下記の内容を作成し、target01.datとして%ARTOOLKIT_NFT_ROOT%\bin\Data\target01に保存します。保存してください。
1
target01.iset
1.0000 0.0000 0.0000 0.0000
0.0000 1.0000 0.0000 0.0000
0.0000 0.0000 1.0000 0.0000
さて、ここまで出来ましたか?
それでは今回の本題に入りたいと思います。
KPMテンプレート(kpm)を印刷物を使って作成
webカメラを用いて作成しますが、その前に必ずARToolKitでも行ったカメラキャリブレーションを行って適切なカメラパラメータファイルを作成してください。
ここで異なるアスペクト比のもの……例えば、4:3のサイズで作成したキャリブレーションファイルを、16:9のサイズで使おうとすると先に進めなくなります。
色々と重要なので必ず個々にキャリブレーションを行ってください。
それでは印刷物とウェブカメラを準備して、コマンドラインからツールを起動します。
C:\ARToolworks\ARToolKitNFT\bin> makeKpmTemplate.exe
Enter width of area to be tracked [mm]: 190
Enter height of area to be tracked [mm]: 254
起動すると最初に印刷したもののサイズを質問されますので、幅、高さの順序で入力してください。
今回は 190 x 254 mm で印刷したのでその値を入力しています。
それが終わると、カメラの撮影サイズを聞いてくるのでカメラキャリブレーションした時のサイズと同じモノに合わせます。
その後、パラメータ等を設定するウィンドウが開くものもありますが、それは説明を省きまして、きちんと起動すれば下記のような画面が開きます。
ウェブカメラで今回のトラッキング対象画像の全体が表示されるように撮影している状態を維持したまま、ウィンドウを左クリックします。
そうするとシャッターを切ったかのように画面が止まり、コマンドプロンプト上に下記のような文言が表示されます。
bmpBufferSize = 921600, width = 640, height = 480
Video: Image size (x,y) = (640,480)
Pixel Format: AR_PIXEL_FORMAT_RGBA
*** Camera Parameter ***
--------------------------------------
SIZE = 640, 480
Distortion factor: k1=0.0791388974, k2=-0.1812048256, p1=-0.0013435410, p2=-0.0004586111
fx=535.590271, fy=530.641663, x0=316.101318, y0=223.474045, s=0.990136
540.92617 0.00000 316.10132 0.00000
0.00000 535.92826 223.47404 0.00000
0.00000 0.00000 1.00000 0.00000
--------------------------------------
(X,Y) = (397,416)
Click the Top-Left corner of the area to be tracked.
画面中のトラッキング対象画像の左上の角をクリックしてくださいと表示されていると思います。
これは指示に従ってできる限り正確にクリックしてください。
クリックすると上記のように罰印が表示され、コマンドプロンプト上に、左下の角をクリックしろというメッセージが出ます。
--------------------------------------
(X,Y) = (397,416)
Click the Top-Left corner of the area to be tracked.
(X,Y) = ( 27,291)
Click the Bottom-Left corner of the area to be tracked.
これも指示に従いクリックすると罰印が表示されます。以降、同じようにメッセージが表示され、右下、右上と続きます。
すべてクリックすると、コマンドプロンプト上でページ番号を入力するように促されます。
ここは、0を入力してください。
--------------------------------------
(X,Y) = (xxx,yyy)
Click the Top-Left corner of the area to be tracked.
(X,Y) = (xxx,yyy)
Click the Bottom-Left corner of the area to be tracked.
(X,Y) = (xxx,yyy)
Click the Bottom-Right corner of the area to be tracked.
(X,Y) = (xxx,yyy)
Click the Top-Right corner of the area to be tracked.
(X,Y) = (xxx,yyy)
Enter page number (in range 0 to ...): 0
そうすると処理が走り、下記のような表示に切り替わります。
一致する特徴点(Key-point)を結んでいるという表示です。
この画面が表示されず、コマンドプロンプト上にメッセージが表示される場合があります。
その場合は、カメラキャリブレーションファイルが異なる、または、印刷サイズと異なるサイズが指定されたり、Key-pointが少ない事が原因です。
この画面については、現状ではそれほど意味が無いので、映像中で右クリックして、2回目の測定に入ります。
撮影画像を反時計回りに90度回すなどして、またトラッキング対象画像の全体が表示されるようにしてから、左クリックで止めます。
先ほどと同じようにコマンドプロンプト上に左上の角をクリックするように指示されるので、それに従います。
ここで注意したいのが、ここで言う左上の角は、トラッキング対象画像の左上の角です。
画像を回しているので、最初の左上の角が今回は左下に来ています。
そのため、今回クリックする場所は左下の角から時計回りになります。
以降もそうですが、常にスタート箇所は同じ場所になります。
迷う場合は、印刷物の余白部分に順序を書いておくと良いかもしれません。
では、同じようにコマンドプロンプト上の指示に従ってクリックして進めてください。
また、最後に同じようにページ番号を入力するように促されますので、同じ画像(ページ)をチェックしているということから、0を入力します。
--------------------------------------
(X,Y) = (xxx,yyy)
Click the Top-Left corner of the area to be tracked.
(X,Y) = (xxx,yyy)
Click the Bottom-Left corner of the area to be tracked.
(X,Y) = (xxx,yyy)
Click the Bottom-Right corner of the area to be tracked.
(X,Y) = (xxx,yyy)
Click the Top-Right corner of the area to be tracked.
(X,Y) = (xxx,yyy)
Enter page number (in range 0 to ...): 0
そうすると下記のように表示されます。
赤い線は上下共通でみつかるkey-pointで、緑の線は片方だけで見つかるポイントになります。
この作業をこの2回を含めて、6~10回、異なるアングル、サイズで実行します。
今回は同じ手順で、4回ほど実行し、上記画面が表示されている状態でウィンドウを選択し、sキーを押してください。
コマンドプロンプト上に保存場所について入力を求められるので、それに従い入力します。
--------------------------------------
0: 145.000000 289.000000 --- 144.472922 289.295571
_中略_
Num = 348
Num = 342
Num = 324
Num = 345
Enter filename for KPM dataset (addition of .kpm suffix is recommended) : data\target01\target01.kpm
これで作成が完了しました。
動作確認
引き続きコマンドプロンプトから実行します。
C:\ARToolworks\ARToolKitNFT\bin> exampleNFT0.exe Data\target01\target01.dat
bmpBufferSize = 921600, width = 640, height = 480
Image size (x,y) = (640,480)
_省略_
印刷した画像をカメラで撮影すれば、枠とキューブが重畳されて表示されます。
まとめ
kpmファイルは画像から作成する方法とウェブカメラを経由する方法の2つがあります。
状況に応じて、どちらかを選択して使用してください。