Kinect for Windowsで機器を作るヒント(3)――SDK1.5のサンプル紹介とビルド方法
前回はKinect for Windows SDK 1.5のインストールと簡単な内容を紹介しました.今回は豊富に用意されたサンプル・プログラムの内容についてさらに詳しく説明します.
●SDKの基本的な5種類のサンプル・プログラム
基本的なサンプル・プログラムとして, 音源特定,カラーカメラ,3D深度センサ,スケルトン・データ,音声認識の5種類が用意されています.
それぞれC++,C#,VB(Visual Basic)の開発言語別に3種類があり,それぞれの言語で試せます.それぞれのコードを比較すると,言語別での実装方法の違いが分かるかと思います.なお,描画の実装は,C#とVBはWPF(Windows Presentation Foundation),C++はDirect2Dで行われています.
●音源特定の基本サンプル
アレイ・マイクを使った音源特定の基本サンプルです.10°刻みのビームフォーミングの方向と,推定された音源方向(左右に±50°)をグラフィカルに表示します(図2).
Kinectのアレイ・マイクは一種の超指向性マイクとして動作しており,音源位置を正確に特定するためには,まずその方向へマイクを向ける必要があります.このマイクの方向がビーム・フォーミング角度です.角度はマニュアル設定も可能ですが,通常はKinectの自動追尾にまかせておけばよいでしょう.
図1 音源の基本サンプル

図2 Audio Basicsの実行画面

●カラーカメラの基本サンプル
カラーカメラの情報をそのまま表示します.スクリーン・ショットで画面をpngファイルとしてキャプチャすることもできます(図4).
図3 カラーカメラの基本サンプル

図4 Color Basics

●3D深度センサの基本サンプル
3D深度センサの基本サンプルも用意されています.3D深度センサから得られた距離情報を濃淡差で表しています(図6).
図5 3D深度センサの基本サンプル

図6 Depth Basics

●スケルトン・データの基本サンプル
深度センサから得られた情報を元に同時に2人までのスケルトン・データ(骨格情報)が得られるサンプルです.各ジョイント(関節)の座標を線で結んだ画像を表示します.
図8 ではSDK1.5で追加された「Seated Mode」(着座モード)のスケルトンデータを表示しています.ジョイント(関節)は10点までしか認識しないので首から上の情報しか取れません.表示させるとちょっと物足りない感じですが,リリース・ノートによるとノーマル・モード(20点)よりもCPUパワーが必要となるので注意が必要とのことです.
図7 スケルトンデータの基本サンプル

図8 Skeleton Basics

・音声認識の基本サンプル
音声を認識するサンプルも用意されています.SDK 1.5で追加された日本語の音声認識については,次回で詳細を解説する予定です.
サンプルを実行すると,音声を認識してカメのキャラクタが動きます(図10). サンプルは英語版なので正しく”Forward”と発音しないと動いてくれません.動作させるためには Microsoft Speech Platform SDKが必要ですのでDeveloper Tool Browser v1.5.0 - SDKsのリンクよりダウンロードしてください.
図9 音声認識の基本サンプル

図10 Speech Basics

====
●顔認識やクロマキー合成,ゲームのサンプルも!
各開発言語に共通するKinectの基本機能を試すサンプル以外にも,さまざまなサンプル・プログラムが用意されています.SDK 1.5で新しく追加された顔認識(フェース・トラッキング)についてのサンプルや,SDK 1.0に入っていたゲームの応用サンプルなどを紹介します.
・顔認識の基本サンプル
新しく追加された顔認識の基本サンプル・プログラムとして,C#で作成されているものがあります(図11). 実行すると,目,鼻,口など,顔の3Dメッシュ・データを取得することができます(図12).
図11 顔認識のサンプル

図12 Face Tracking Basics

・Face Tracking Visualization
C++で作成された顔認識の応用サンプルも用意されています(図13).実行すると,認識した表情を仮想的なアニメーション上にリアルタイムで反映させます(図14).表情を変えるとそのまま左側の線描の顔も同じように変化します.
サンプル・コードには2名同時に顔認識できるコードも含まれています.精密なCGモデリングに反映させればアバターとしていろいろな応用が考えられるでしょう.
図13 Face Tracking Visualization

図14 認識した表情を仮想的なアニメーション上にリアルタイムで反映

・ジェスチャ認識のサンプル
Slideshow Gesturesは,ジェスチャを認識させるためのサンプルです.Kinectの前で腕を振ることによりスライドショーのページ送りを行うことができます.右手と左手でそれぞれページ「送り」と「戻し」の操作となります.
図15 Slideshow Gestures-WPF

・ゲームのサンプル
SDK1.0にも入っていたKinectのゲームの応用編です.実行すると,認識されたスケルトンデータと連動して画面内のキャラクタが動きます.上から降ってくるオブジェクトに触れると跳ね返ったりします.音声認識も同時に機能しており,(英語で)色や形を喋るとオブジェクトが変化します.
図16 Shape Game

====
●Kinectアプリケーションのビルドを体験
・人物の動きをそのままCGキャラクタに反映させるサンプル
スケルトン・データを使って人物の動きをそのままCGキャラクタに反映させるサンプル「Avateering」も用意されています(図17).従来,同様のことを実現するには体のあちこちにマーカを張り付け,それを複数のカメラで撮影し,最後に各マーカの位置を画像から計算するという大変な作業が必要でした.Kinectの3D深度センサであれば面倒な準備は必要ありません.
図17 Avateering

このサンプルには実行形式のモジュールは用意されていないので実際にビルド(※)して試してみましょう.
AvateeringのInstall★を選んで適当なフォルダを指定するとソースコードなどのプロジェクト一式が作成されます.インストールしたフォルダを確認すると,図18のようになっているはずです.
図18 インストールしたフォルダを確認

Avateering-XNA.shlをダブルクリックすると,Visual Studio 2010が起動してビルド環境が構築されます.あとはソリューションをビルドするだけです([F7]キーで可能).
ビルドが完了すれば図19のように実行ファイルが作成されます.構成マネージャの設定によってDebugまたはReleaseフォルダが異なります.
図19 実行ファイルが作成された

Avateering.exeを実行すると,Kinectで認識された動作が画面内のアバター・キャラクタに連動します(図20,図21).アバター・キャラクタはカーソルキーと[Z][X]キーを使って,見る視点と大きさを変化させることができます.開発環境以外で動作させる場合はXNA4.0のランタイムが必要なので,実行させても何も起きないときはXNAの環境を確認してください.
図20 Avateering.exeを実行した

図21 ユーザの動きに合わせてアバターが動く

※ ビルドにはVisual Studio 2010が必須なのはもちろんですが,このサンプルをビルドするにはXNA Game StudioV4.0も必要です.XNA Game Studioは,Visual Studio でWindowsPC(Windows Phone / Xbox 360)用のゲームを開発できるプログラミング環境です.インストールされていない場合はSDKsの図Aのリンク先より入手してインストールしておいてください.
図A XNA Game Studio 4.0

====
●クロマキー合成のサンプルを改造して背景も合成できる
・クロマキー合成
図22は,C#とC++のサンプルとして入っているグリーン・スクリーンのデモです.グリーン・スクリーンとは馴染みのない言葉ですが,日本ではクロマキー合成と呼んだ方が分かりやすいでしょう.青色の背景の前で人物を撮影し,人物だけを抜き出して他の画像と合成する技術です.肌の色との相性により,欧米では「青」ではなく「緑」が使われるのでグリーンスクリーンと呼ばれます.
図22 GreenScreen-WPF

Kinectであれば3D深度センサの情報を使って背景を排除できるのでブルーバックの舞台は必要ありません.図23の例はサンプル・コードを少し変更して背景を変更したものです.
図23 クロマキー合成で背景を変更した

※ ※ ※
Kinectの人気を裏付けるように,国内でも既に「Interface」1月号の特集や,数冊のKinectアプリ開発に関連する書籍が発刊されています.細かい機能,APIなどについてはこのような書籍などを利用していただければよいでしょう.また,有用なオープン・ソースのライブラリもWebサイトに数多く公開されています.
次回は,SDK1.5で新しく対応された日本語音声認識の利用方法と,商用利用する場合に必要となるKinect Runtimeについて説明する予定です.
●グランプリ100万円のKinect for Windows コンテスト
Kinect for Windows コンテスト2012の応募締切が近づいてきました.ぜひ奮ってご参加ください.見たこともないようなアプリケーションのご応募をお待ちしています.
目的 | Kinect for Windowsを活用したサービスやアプリケーションの普及を目指したアイデアの募集 |
エントリー締切 | 2012年8月24日(金) ※日程が変わりました |
コンテスト開催日 | 2012年9月14日(金) ※日程が変わりました |
参加資格 | コンテスト当日に応募アイデアをプレゼンテーション(必須)または展示(任意)できること |
賞金 | グランプリ100万円 |
公式ページ | http://k4wa.com ※公式サイトをリニューアルし,詳しい応募要項などを掲載しています |
いしぐろ・かずとし
東京エレクトロン デバイス(株)