mARici-ten

mARici-ten(マリシテン)は視覚情報処理による実環境認識機能を応用した 高度な拡張現実を提供するプロジェクトです.

入力画像中からマーカーとして利用したい物を切り出し,保存することで 特別なタグを必要としない拡張現実機能を実現します.

2008年度下期IPA未踏IT人材発掘・育成事業において 「自然特徴点からマーカを自動生成する拡張現実システムの開発」 として採択されました.

(2010/12/4) 開発者の皆様へ

SourceForgeにてsvnリポジトリを公開しております. http://sourceforge.jp/projects/mariciten/

https://svn.sourceforge.jp/svnroot/mariciten/trunk/

からソースコードが入手できます.ただし,画像,モデルファイルなどの素材は一切付属しません. これは著作権上問題があると判断したためです. お手数ですが,別途画像ファイル,モデルファイルのご用意をお願いいたします.

プロモーションビデオ

開発の歴史





ニコニコ動画はhttp://www.nicovideo.jp/myvideo/11684436(アカウントが必要です).

ダウンロード(暫定版)

Windows専用のバイナリ+ソースファイルです. VC++ 2005 SP1ランタイムGTKランタイム(リンク先は開発用)をインストールする必要があります.

使用方法は同梱のREADME.txtもしくは以下のFAQをお読みください. また,現在開発中であるため動作が不完全であることが予想されます. 本ソフトウェアの使用により発生した損害について当方は一切責任を負いません.

使い方

mariciten.exeを起動すると,コンソールとDirectShowのウインドウのほかに 二つのウインドウが起動します.

メインウインドウ

ひとつは,機能選択と開始/停止を行い,合成結果を提示するためのメインウインドウです. は合成結果提示,は画像処理結果提示ウインドウです. は機能選択メニューです. ARToolkitと同様の機能を持つMonoMarkerモード, PTAMに類似した機能を持つMarkerlessモード, マーカーを自動生成するためのMarkerGenerationモード, 自動生成したマーカーを利用するためのGeneratedMarkerモード の選択を行います. はスタート/ストップボタンです. このボタンを押すことで各機能を利用することができます.

マーカーウインドウ

もうひとつは,生成したマーカー画像の管理を行うマーカーウインドウです. MarkerGenerationモードで使用します. にはMarkerGenerationモードが成功した場合に マーカーとして切り出された画像を表示します. のボタンを使って左回転, のボタンを使って右回転させます. のフィールドに名前を入れて のボタンを押すとJPEG形式でマーカーを保存します. のボタンで生成されたマーカーをセットします.

MonoMarkerモードでは,ARToolkitのようなARタグに対する拡張現実を提供します. 付属のmariciten_marker.pdfや ARToolkit用のARタグを見せてください.

Markerlessモードでは,PTAMのようなマーカーを用いない拡張現実を提供します. カメラをゆっくり動かすと,単眼立体視を行い三次元復元を行います. 現時点では動作が不完全であることが確認されています.

MarkerGenerationモードでは,長方形状のマーカー画像を自動生成します. 下の画像のように画面に書かれている赤丸にターゲットとなる物体が, 青丸にそれと関係ない背景が映るようにうまく調整してください. うまくいくと,境界線に黄色い直線が無数に表示され,赤い四角形で物体が囲まれるはずです. その状態でボタンを押すとマーカーウインドウに切り出された画像が表示されます. 赤四角が出ているのにうまくいかない場合何度かクリックしなおすとよいでしょう. この状態ではマーカーの上下左右が確定しないので, 画像の上下左右を左矢印,右矢印で回転させて調整します. 向きを合わせたらset markerボタンを押すとマーカーが登録されます. テキストエリアにファイル名を入れてsave markerを押すと画像をJPEGで保存できます.

マーカー生成の成功例

GeneratedMarkerモードでは, 生成されたマーカーを使って拡張現実を提供します. 作ったマーカーの元になった物体をもう一度カメラに見せてください.

GeneratedMarkerListモードでは, 複数のマーカー画像と入力画像との照合を行います. 現在実行時切り替えができないため,マーカー画像を変更するには再起動が必要です. マーカー画像ごとに異なる三次元モデルを表示できます. 作ったマーカーの元になった物体をもう一度カメラに見せてください.

FAQ:動作環境について

Q. 最低限動かすためにはどうしたらいいですか?
A. 最低限以下のものを用意してください. さらに以下のものをPCにインストールしてください. OpenCVのdllは同梱してあります. (やっていいかどうかはわからないけれど数が少ないし容量も小さかったので.) また,お使いのグラフィックボードのドライバのアップデートや DirectX9の最新版へのアップデートもしておくといいかもしれません.
Q. Windows Vista / 7 では動きますか?
A. Vista SP1では動くとの情報をいただきました. うまく動かない場合はAeroをきってください. 7は未確認ですがいけると思います.動作確認情報をいただけると大変ありがたいです.
Q. 64bit Windows では動きますか?
A. Vista 64bit で試したところ,OpenCVのリビルドが必要でした. 開発環境を整えてみてください.
Q. Windows 95 / 98 / Me / 2000 では動きますか?
A. 潔くPCを買い換えてください.
Q. Linux / Mac では動きますか?
A. 配布するバイナリは動きません.wineを使ってもDirectShowが動きません. しかしカメラキャプチャ以外はマルチプラットフォームなので, 同じ仕様のカメラキャプチャの用意とgccでのコンパイルができれば動くだろうと思います. こちらで対応する予定はありません.
Q. 動作が遅い
A. 複数の理由が考えられます. まず,PCの性能が十分であるか, ほかのアプリケーションにCPUを占有されていないか確認してください. また,カメラのフレームレートがそもそも遅くないか確認してください. 露出を自動調整できるカメラの場合,暗くなると極端に遅くなります. また,ネットブックなど低性能なPCでの動作確認はしていただけると大変ありがたいです.
Q. 表示がおかしい.ウインドウの中が黒い,3Dモデルの色がおかしい,など
A. まず最初に表示モードが32ビットモード(フルカラー)であることを確認してください.マルチディスプレイやプロジェクタ接続などを行っている場合,勝手に16ビット(ハイカラー)に落とされることがあります.この状態で動作を続けると最悪ブルースクリーンになることが確認されています.
そうでない場合...グラフィックカードの性能が低いと起きる問題のようです. Intel 945GMチップセットでおきていることを確認しています. また,複数の要因で起きたり起きなかったりしています. Intelチップセットについてはこちらでの対応を予定しています.
Q. カメラを複数つないだらどうなる?/カメラの選択はできるか?
A. 2009/6/25版で対応いたしました. 複数のカメラを検出した場合カメラ選択ダイアログが開きます. カメラを選択してOpenボタンを押すと選択されたカメラが使われます.
Q. 確実に動くハードウェアは?
A. 開発に使っている環境は次のようになっております. また,以下の環境では動作が確認されています. 逆に,以下の環境では正常に動作しませんでした.
Q. カメラの映像が,ぼけている,暗すぎる,歪んでいる,などしてどうしてもうまく動かない.
A. まずカメラの確認をしてください. 映像がぼける場合はレンズの焦点を合わせることができないか. 暗すぎるときは周囲がそもそも暗くないか. また,カメラの価格帯によってはしょぼすぎてだめということもありえます. 映像のゆがみはレンズのゆがみです.固定焦点ならキャリブレーションすれば直ります. (キャリブレーション対応は考え中.) 最近のいいカメラはオートフォーカスや露出補正,オートゲイン等が含まれていて便利です. 一万円程度のカメラを選ぶことをお勧めします.
Q. 私の環境だと動いたよ!/うまく動かないようですが...
A. 動作確認情報はお使いのPCについて,メーカー品の場合商品名,CPU,メモリ容量,グラフィックカード,Windowsのバージョン(SPまで),カメラの製品名をお書き添えの上,h-yaguchi あっとまーく jsk.t.u-tokyo.ac.jpまでご一報いただけると非常に助かります. ただし,だからといって必ず改善できるとは限らないのでご了承ください.

FAQ:ソフトウェアの使い方について

Q. 何ができるの?
A. ARToolkitと同様の機能を持つMonoMarkerモード, PTAMに類似した機能を持つMarkerlessモード, マーカーを自動生成するためのMarkerGenerationモード, 自動生成したマーカーを利用するためのGeneratedMarkerモード, 複数マーカーを利用するためのGeneratedMarkerListモード があります. それぞれの機能は右下のプルダウンメニューから選んでstartボタンをクリックして実行できます. もう一度ボタンを押すととまります.
Q. MonoMarkerモード,Markerlessモードがきちんと動かない,しょぼい
A. 申し訳ありませんがこの二つはおまけ機能と考えてください. メインではないので特に改善,改良の予定はありません.
Q. うまくマーカーが作れない
A. 少々コツがいるので慣れてください. どうしてもだめなら背景の色がターゲットと違うものになるようにする, 画面中に斜めに映してみる,できる限りカメラを傾けず正面から撮る, などしてみてください. 検出精度よりも動作の高速性を重視しているため, 何度かボタンを連打して試行回数を増やしてみてください. 検出精度は改善を検討します. また,アスペクト比が極端であるとか そもそもマーカーの形状がうまく収まらない場合については 対応を検討しています.
Q. GeneratedMarkerモードでは何をしたらいい?
A. MarkerGenerationモードでマーカーを作るか すでにあるマーカー画像をmarmarker.iniで指定した状態で 生成されたマーカーの元物体をもう一度カメラに見せてください. marmarker.iniの先頭に書いてあるものが使われます. デフォルトでは初音ミクのパッケージ画像を同梱しています.
Q. GeneratedMarkerListモードでは何をしたらいい?
A. 複数のマーカー画像をmarmarker.iniで指定した状態で 生成されたマーカーの元物体をもう一度カメラに見せてください. 現在実行時切り替えができないため,marmarker.iniを書き直したら アプリケーションを再起動してみてください.
Q. GeneratedMarker,GeneratedMarkerListモードでマーカーを見せていないとき表示が遅い
A. 仕様です.探索処理が重いため発見されないと処理が重くなります.
Q. 三次元モデルがびくびくする.検出精度が悪い.
A. 照明が悪い,フレームレートが低い場合には 画像のぼけ,ぶれなどでうまくいかないことがあります. あとはアルゴリズムの問題もあります.改良を検討しています.
Q. 表示する三次元モデルを変えたい
A. marobj.iniを書き換えてください. GeneratedMarkerでは先頭のものが, GeneratedMarkerListでは画像と同じ順番のものが使われます. ループするのでマーカー画像数 > モデル数でもかまいません. 書式は同梱のファイル中に書いてあります.
Q. 三次元モデルの対応フォーマットについて
A. 現在モデルとして利用できるものは以下のとおりです. Wavefront obj形式ではmtlファイルにマテリアルカラーを記述してください. Blenderから出力されたobjファイルを前提としています. テクスチャ,uvマップが含まれると正常に動作しません.
MikuMikuDance PMD形式は読み込むことができますがいまだ対応が不完全です.
実行時切り替えや対応フォーマット拡充については対応を予定しています.
Q. 3Dモデルを複数表示したい / アニメーションしたい / あれやこれやさせたい
A. 複数表示は簡単に対応できると思います. アニメーションに関しては善処します. その他,たとえば空中にお絵かきしたいとかモデルに触りたいとかは ちょっと個別には対応しきれない問題です.
Q. 保存したマーカーを呼び出すには
A. marmarker.iniを書き換えてください. 実行時の切り替えについては対応を予定しています.
Q. この画像を印刷して使いたいんだけど/スキャナで取り込んだ画像がすでにあるんだけど
A. 原理的にマーカーにしたい画像を印刷して使ったり, スキャナで取り込んだものも利用できます. この場合,使用したい画像ファイルを読み込めば使えます. ただし画像形式はJPG,PNG,BMPなどOpenCVが解釈できるものにしてください.
Q. 複数のマーカーを扱いたい
A. 「入力画像中に複数のマーカーが存在する場合」 処理速度がかなり低下することが予想され,対応が難しいです. 「複数のマーカーを保持していて,そのうちのどれかを見せた場合」 については対応いたしました.
Q. 某動画サイトの動画でつかっている素材もつけてほしい
A. ハードコーディングで対応していたり著作権的にあれだったりするので できるところは対応するがだめなものはだめだと思ってください.

FAQ:開発者向け

Q. 最新版のソースはどこか
A. sourceforgeのsvnリポジトリを参照してください. http://sourceforge.jp/projects/mariciten/
Q. ビルドするにはどうしたらいいか
A. 実行に必要なものとは別に開発用のライブラリを入れる必要があります. 以上をインストールした後, Platform SDK / Windows SDKのSamples\Multimedia\DirectShow\BaseClasses をDebug/Releasでビルドしてください. 最後にVisual Studioにて Samples\Multimedia\DirectShow\BaseClasses以下のビルドされた場所と GTK,OpenCV等にパスを通してください. このときパスの順番によってはエラーが出るようです. Samples\Multimedia\DirectShow\BaseClasses ができる限り上に来る(先に読まれる)ようにするといいようです.
Q. 自作ソフトから機能を呼び出したい
A. ARToolkit,PTAMの劣化コピー機能に関しては本家を使うことをお勧めいたします. また三次元ビューワもそれなりにしょぼいのであまりお勧めできません. 本ソフトウェアで胸を張って人様にお勧めできる機能は マーカー自動生成機能と一般画像利用機能です. この二つについては,src/SURFConverter.{h,cpp},src/MarkerGeneration.{h,cpp}に書かれています.
Q. カメラキャプチャをDirectShow以外のものに変えたい
A. src/DSCapture.{h,cpp}をよく読んで,同じ仕様で作ると置換は可能です. またWindowsに依存する箇所はここだけなのでV4L2など他のプラットフォームへの対応も ここをいじってください.
Q. ドキュメントは?/ソースが読みづらいんだけど
A. この辺は個人開発ですので大目に見てやってください... そのうちなんとかしますので.

FAQ:権利関係について

Q. 商業利用は可能か?
A. 商業利用はできません. これは内部で使っているSURFアルゴリズムが非商用であるからです. もし商業利用を考えられている方はほかをあたることをお勧めいたします. (たとえば,metaioなど.)
Q. ライセンスはどうなっているのか?
A. new BSDとします.(GPLとしていたのはGTK利用時に制限が起きると解釈していたためですが GTK利用時においてもGPLの縛りはおきないようです) 個人的な範囲における利用,研究活動への応用においては 特に制限を設けるつもりはありません.改造,改良は大歓迎です.
Q. 著作権はどうなっているのか?
A. 私個人が保有いたします. その他各種ライブラリ,素材に関しては各々の開発者に著作権がございます.

Special Thanks: 利用している素材について

開発者プロフィール

h-yaguchi あっとまーく jsk.t.u-tokyo.ac.jp