2010年7月15日木曜日

FLARToolKitで実装する白黒以外のマーカーARのやりかた

例えば、下図の様に青色背景の中に、マーカーがある状態だとします。

FLARToolKitのサンプルを使って、マーカーを認識させようとすると下記のようになります。


FLARToolKitで解析している画像を表示していますが、マーカーの部分が真っ白け……つまり、青い部分のほとんどは黒色として扱われてしまい、マーカーの形が浮かび上がらない状態になっています。

そこで、Adobe Pixel Bender Toolkit を使ってフィルターを作成します。

実行すると、白黒になるようにフィルターを書きます。
書き終わったら、[File]メニューにある[Export Kernel File for Flash Player]で、Flexで使えるようにします。

続いて組み込み。
Filterである .pbj ファイルをロードして、ShaderFilterを作る。
次に、通常のサンプルだと、ウェブカメラからの入力を「背景描画」と「マーカー解析」に使っているのでこれを別々に分ける……
// 背景描画
this.background = new Bitmap(new BitmapData(this.captureWidth, this.captureHeight, false, 0), PixelSnapping.AUTO, true);
this.background.width = this.canvasWidth;
this.background.height = this.canvasHeight;
this.addChild(this.background);
こんな感じになるかなと。
これは、FLARTK_Example_Single_SimpleCube_PV3D.as で言うところの、273行目辺りに追加。その直後に // setup ARToolkit というコメントがくる感じ。
背景描画は、 this.background を使うので、this.capture は、addChildしないようにする。
// キャプチャーしている内容を addChild
// this.addChild(this.capture);
ここまでできたら、MarkerDetectの処理の直前でFilterをかける……
// Marker detect
var detected:Boolean = false;
try {
    // カラーフィルター適応
    var _data:BitmapData = this.raster.getBuffer() as BitmapData;
    _data.applyFilter(_data, _data.rect, ZERO_POINT, this.extShaderFilter);
    
    detected = this.detector.detectMarkerLite(this.raster, this._threshold) && this.detector.getConfidence() > 0.000001;
} catch (e:Error) {}
これでフィルターがかかって、実行すると下記のようになると。
実験的に組み込んだだけなので、Filterを毎回やらなきゃならんのかとか、背景描画用にBitmapクラス作らなきゃならんの?とか微妙なところは多いですが、参考までに。

全体コードはもうちょっと試したら、説明ページ作って公開します。

ちなみに、FLARToolKitでやっていますが、同じことをNyARToolKitでもできますし、ARToolKitでもできる。
今回のは色フィルターだけですが、解析する前に画像処理を掛けてあれこれ処理すれば、変わったマーカーも認識させたりできるかもかも。

白黒のマーカーに飽きた方はチャレンジしてみては如何?

2010年7月4日日曜日

ARマーカーの基本

いろいろと協力してもらって、ARToolKitなどで使うマーカーについての説明記事を書きましたよーというお知らせです。

ARマーカーの基本
http://sixwish.jp/Flartoolkit/Marker/section01/

記事の大本は、株式会社エム・ソフトの中の人に書いてもらって、こちらでアレンジし直したものになります。
それにしても、自分で検証すること無く公開してしまって良いものだろうか……と。
ついでにいうと、一ヶ月くらい放置していたネタでもあったり……

それはさておき、マーカーをデザインするときに一読しておく価値がある記事になります。
一部、マーカーをどのようにして認識しているかも説明されているので、どういう事をやっているのかを知るための一助になればと思います。

FLARToolKit v2.5.x 以上を利用したGPLでの商用利用の例

FLARToolKit v2.5系も安定してから数ヶ月、ようやく利用例が出始めたかなぁという感じです。

今回紹介するのは、その中でも商用利用しつつ、GPLを選択した事例です。

amazarashi のCDのおまけのARコンテンツ
http://www.amazarashi.com/ar/index.html

Sony Musicさんのところのアーティストらしいし、有名らしいのですが……知りませんでしたorz
まぁ、基本的にマイナーなものしか聴かないし、アニソン系が多い人ですから知らなくて当然ですね。
はい。

ちなみに、ソースコードは下記のサイトにて公開されています。

bmblog
http://totoro.ws/blog/archives/2010/06/cd-17.html

公開されているものが何一つ再現できない方法での公開なので、本気で叩いてみようかと思うけれどめんどいのでパス。
ていうか、楽曲管理でうるさい人達が率先してライセンス違反てどういう事なのよ……

色々と組み合わせているようなので、参考にしたい方はソニー・ミュージックに直接問い合わせてソースコード請求してみては如何でしょうか?

ちなみに、ASIAN KUNG-FU GENERATION のマジックディスクのARコンテンツはライセンスされたものとのこと……このコンテンツのソースコードは見てみたかった……残念なのですよ