Kinect for Windowsで機器を作るヒント(7) ―― 実験でもっと深くKinectを理解する
●Kinect for Windows Developer Toolkit Ver1.5.2
第5回目の記事「Kinect for Windowsで機器を作るヒント(5)」では,Developer Toolkitのバージョン1.5.1を紹介しましたが,その後,8月にToolkitのバージョンが1.5.2にアップデートされました.そこで,まずはV1.5.2の変更内容を紹介します.
Developer Toolkit v1.5.2 は次のURLから入手可能です.
http://www.microsoft.com/en-us/kinectforwindows/develop/developer-downloads.aspx
図1の「DOWNLOAD TOOLKIT」のボタンをクリックして,KinectDeveloperToolkit-v1.5.2-Setup.exe をダウンロードし実行します.
今回のバージョンアップもDeveloper Toolkitのみのアップデートで,Kinect for Windows SDKについてはv1.5からの変更はありません(Kinectセンサーのデバイス・ドライバやランタイム・モジュール類はv1.5のまま利用できます).
また,今回からリリースノートがバージョンごとに用意され読み易くなりました.リリースノートには,新しく追加された機能の説明のほか,既知の問題などの情報もありますので,内容を確認することをお勧めします.
・Release Note V1.5.2 Toolkit Release
http://msdn.microsoft.com/en-us/library/jj591489
・Release Note V1.5.1 Toolkit Release
http://msdn.microsoft.com/en-us/library/jj572481
・V1.5.0 SDK and Toolkit Release
http://msdn.microsoft.com/en-us/library/jj160161
●Toolkit v1.5.2の変更点
今回のToolkit v1.5.2では,次の2つの変更がありました.
(1)新しいサンプル「WPFD3Dinterop」の追加
Developer Toolkit Browserに「WpfD3DInterop」という名前で新しいサンプルが追加されています(図2).このサンプルは,C#/WPF(Windows Presentation Foundation)のコードから,DirectX 11のレンダリング機能を利用するC++のコードを呼び出して利用するサンプルです.WPFでユーザーインターフェイスを設計しながら,Direct3Dによる高度なグラフィックス処理を実装できます.
このサンプルを実行するには,DirectX End-User Runtimesをインストールする必要があります(ソースコードをビルドするには,DirectX SDKが必要).Developer Toolkit Browser からダウンロードページに移動できるので,入手してインストールします(図3).
(2)Kinect Studio の再生機能の改善
SDK v1.5で追加されたKinectアプリケーションの開発支援ツール「Kinect Studio」(図4)も変更されています.使い方は第2回目の記事「Kinect for Windowsで機器を作るヒント(2)」でも紹介していますが,Kinect Studio を利用すると,Kinectセンサーの深度カメラとカラーカメラから取得したストリームデータを記録し,後から再生する事ができるようになります.
記録したデータは.XEDファイルとして保存され,このファイルを別のPCにコピーしても再生できます. Kinect Studio V1.5.1では,.XEDファイルを再生する際に,記録時に利用したKinectセンサーと同一のKinectセンサーが無ければ,深度カメラとカラーカメラ間の正確な同期が取れないといった問題があったようですが,今回のアップデートではこの問題が解決され,記録時と同一のKinectセンサーが無くても正しく再生できるように改善されています.
====
●Kinectセンサーをより深く理解するための実験
ここからは,Kinectセンサーを活用する上でのヒントとなるような情報を紹介します.
●Kinectの赤外線投影パターンを見てみる
Kinectは深度センサーを搭載しているので,対象の物体までの距離(奥行)を測定することができるのが特徴です.Kinectを利用した装置の開発として筆者が相談を頂く中には,Kinectを使わずに一般的なWebカメラでも十分実現できるような内容もありますが,この深度センサーをいかに活用するかが,Kinectを利用する判断基準になると考えています.
Kinectの深度センサーの認識範囲は,水平方向に57.7°,垂直方向に43.5°とされています.また,上下に角度を変えることができるチルト・モータが付いているので,-27°から+27°までの範囲で稼働します(図5).
Kinectが奥行を測定する詳しい仕組みは公開されていませんが,赤外線プロジェクタから照射されたパターンを赤外線カメラで読み取り,そのパターンの変化から物体の奥行を測定しているようです.
赤外線は肉眼で見ることができませんが,今回はSONYのナイトビジョン機能搭載カメラを使い,Kinectが出力している赤外線の投影パターンを撮影しました(写真1).
Kinectの赤外線プロジェクタからは,赤外線の無数のドット(点)が照射されています.照射された赤外線のドットは壁より手前にいる人物に当たり,その後ろの壁の所で陰になっています.Kinectは自身が投影したドットパターンの変化を読み取り,人物が壁より手前にいることを認識するようです.
実際にこのような形で赤外線パターンが照射されているという仕組みを知り,Kinectのアプリケーションを開発する際に参考にしてください.