ここでは、ARToolKit NFT を用いてトラッキングする対象画像のパターンファイルを作成するためのツールについて説明します。
前章の作業が必須になります。
前回の手順と同様に異なる画像を用いてパターンファイルを作成します。
今回使用する画像は下記になります。
1500 x 2000 pixels、解像度 200DPI、190 x 254 mmで印刷する事を想定しています。
このファイルは、target01.jpgとして%ARTOOLKIT_NFT_ROOT%\bin\Data\target01に保存します。
それではおさらいしていきましょう。
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.
今回は含める解像度を増やしています。
画像が表示されたらエスケープキーを押して終了させてください。
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.
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.
終わると画像の上に赤いボックスが表示されているウィンドウが開きます。
簡単にチェックしたらエスケープキーを押して終了して次に進みます。
新規にメモ帳などで下記の内容を作成し、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
さて、ここまで出来ましたか?
それでは今回の本題に入りたいと思います。
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つがあります。
状況に応じて、どちらかを選択して使用してください。