Kawanet Blog II

アクセスカウンタ

zoom RSS LiveChromaKey ライブラリの使い方(AS3でAR画像合成)

<<   作成日時 : 2009/05/23 03:19   >>

驚いた ブログ気持玉 7 / トラックバック 0 / コメント 0

ブルーバック不要な画像合成処理により、マーカーレス AR を実現する
ActionScript 3.0 ライブラリLiveChromaKey の使い方をご紹介します。

ソースコード:http://www.libspark.org/svn/as3/LiveChromaKey/trunk/
デモその1:エジプト旅行に行ってきましたデモ
デモその2:『マイノリティレポート』みたいに画像が浮くデモ

デモその3:LiveChromaKey が提供する4つのスプライト

デモ実行にはウェブカメラが必要です。マーカー印刷・ブルーバックは不要です。
起動すると、まず静止背景の認識処理が始まるので、ウェブカメラのアングルに
自分の体が写り込まない画面の脇に隠れて、2〜3秒間程度お待ち下さい。
画面内で何かが動いていると、認識処理が終わらないのでご注意下さい。
左下の Mask 欄がブルー一色になったら、準備完了です。

デモ3で使っている各画像を取得するコード例:

var chromakey:LCK_Core = new LCK_Core();
chromakey.init();

var spLive:Sprite = chromakey.getLive();
var spBack:Sprite = chromakey.getBackground();
var spMask:Sprite = chromakey.getMask();
var spFore:Sprite = chromakey.getForeground();

this.addChild( spLive );
this.addChild( spBack );
this.addChild( spMask );
this.addChild( spFore );

getLive() メソッドは、動画を表示するスプライト(デモ画面左上)を返します。
ライブ(生)の現在の動画です。背景に使えます。

getBackground() メソッドは、静止背景を表示するスプライト(デモ画面右上)を返します。
背景静止を認識できた状態の静止画です。これも背景に使えます。

getMask() メソッドは、ブルーバックの透過スプライト(デモ画面左下)を返します。
通常は使いません。

getForeground() メソッドは、人物などの前景スプライト(デモ画面右下)を返します。
実体は、Live スプライト(マイナス)Mask スプライトです。

LiveChromaKey の主な使い方は、Live スプライトと Foreground スプライトの間に
何か表示することで、ビデオ画像の上に載せる AR (augmented ON reality) でなく、
ビデオ画像に入り込んだ AR (augmented IN reality) を実現することになります。

そのほか利用できるプロパティは以下の通りです。
init() メソッドを呼び出す前に、設定してください。
chromakey.captureX = 320;
chromakey.captureY = 240;
chromakey.captureFPS = 30;
ウェブカム入力の解像度・フレームレートを指定します。
chromakey.displayX = 640;
chromakey.displayY = 480;
出力スプライトのピクセル数を指定します。
chromakey.workX = 80;
chromakey.workY = 60;
マスク生成処理の解像度を指定します。
chromakey.smoothing = false;
ウェブカメラの画像を拡大するときにスムージングするかを指定します。

init() 直後に自動的に静止背景の認識処理が始まりますが、
例えば、カメラのアングルを変更したり、背景が変わった場合など、
改めて認識処理を再実行することも可能です。
chromakey.runDetector()
静止背景の認識処理を起動するメソッド
chromakey.ready
静止背景の認識状況を取得するプロパティ (read)

コンパイル方法:


ソースコードのダウンロード用のアーカイブは用意していません。

svn co http://www.libspark.org/svn/as3/LiveChromaKey/trunk/ livechromakey

でダウンロード(checkout)してください。
examples フォルダ内の .as3proj ファイルで FlashDevelop+Flex SDK でコンパイルできます。
もちろん、Flash CS4 でもコンパイルできます。
外部の依存ライブラリはありません。

TODO:


デフォルトの静止背景認識処理エンジン LCK_Detector は、
10フレームの平均値を取って静止を認識して、背景画像を作成しています。
workX×workY の配列を使って、ガシガシ ActionScript で計算していますが、
処理速度と精度確保のため、解像度が少し粗くなっています。
背景認識エンジンは、後で LCK_IMask インターフェース経由で差し替え可能なので、
ActionScript の BlendMode を使うともっとエレガント(かつ高速・高解像度?)に書けそうな気がする。

テーマ

関連テーマ 一覧


月別リンク

ブログ気持玉

クリックして気持ちを伝えよう!
ログインしてクリックすれば、自分のブログへのリンクが付きます。
→ログインへ
気持玉数 : 7
驚いた 驚いた
面白い 面白い
なるほど(納得、参考になった、ヘー)
ナイス
ガッツ(がんばれ!)

トラックバック(0件)

タイトル (本文) ブログ名/日時

トラックバック用URL help


自分のブログにトラックバック記事作成(会員用) help

タイトル
本 文

コメント(0件)

内 容 ニックネーム/日時

コメントする help

ニックネーム
本 文
LiveChromaKey ライブラリの使い方(AS3でAR画像合成) Kawanet Blog II/BIGLOBEウェブリブログ
文字サイズ:       閉じる