|
ブルーバック不要な画像合成処理により、マーカーレス 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(); getLive() メソッドは、動画を表示するスプライト(デモ画面左上)を返します。 ライブ(生)の現在の動画です。背景に使えます。 getBackground() メソッドは、静止背景を表示するスプライト(デモ画面右上)を返します。 背景静止を認識できた状態の静止画です。これも背景に使えます。 getMask() メソッドは、ブルーバックの透過スプライト(デモ画面左下)を返します。 通常は使いません。 getForeground() メソッドは、人物などの前景スプライト(デモ画面右下)を返します。 実体は、Live スプライト(マイナス)Mask スプライトです。 LiveChromaKey の主な使い方は、Live スプライトと Foreground スプライトの間に 何か表示することで、ビデオ画像の上に載せる AR (augmented ON reality) でなく、 ビデオ画像に入り込んだ AR (augmented IN reality) を実現することになります。 そのほか利用できるプロパティは以下の通りです。 init() メソッドを呼び出す前に、設定してください。 chromakey.captureX = 320;ウェブカム入力の解像度・フレームレートを指定します。 chromakey.displayX = 640;出力スプライトのピクセル数を指定します。 chromakey.workX = 80;マスク生成処理の解像度を指定します。 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 を使うともっとエレガント(かつ高速・高解像度?)に書けそうな気がする。 |
| << 前記事(2009/05/23) | トップへ | 後記事(2009/05/24)>> |
| タイトル (本文) | ブログ名/日時 |
|---|
| 内 容 | ニックネーム/日時 |
|---|
| << 前記事(2009/05/23) | トップへ | 後記事(2009/05/24)>> |