●インストール後のフォルダ構成
Kinect for Windows SDKベータ版をインストールすると、(デフォルトでは)「C:\Program Files\Microsoft Research KinectSDK\」フォルダ(32bit環境の場合の例)の配下に、ファイルとフォルダが配置される。次の画面は、このフォルダをWindowsエクスプローラで開いたところだ。
主要なフォルダやファイルについて簡単に説明しておこう。
○「docs」フォルダ
このフォルダには、コンパイルされたHTMLヘルプである「KinectSDK.chm」ファイルがある。このヘルプには、「Kinect for Windows SDK C++ Reference」(C++用)と「Kinect for Windows SDK Managed Code Reference」(C#/VBなどの.NET言語用)のリファレンスがある。言語は英語である。
○「Drivers」フォルダ
このフォルダには、Kinect用のデバイス・ドライバがある。本稿の手順に従った場合、Kinect for Windows SDKベータ版をインストールした時点でドライバはインストール済みなので、特に気にする必要はない。
○「inc」フォルダ/「lib」フォルダ
このフォルダには、C++で開発する際に利用するヘッダ(.hファイル)とライブラリ(.libファイル)が格納されている。
○「Readme.htm」ファイル
Kinect for Windows SDK from Microsoft Researchのdocumentで公開されている Readme と同等の物である。
○「EULA.RTF」ファイル
利用許諾のドキュメントである。
○各種DLLファイル(「Microsoft.Research.Kinect.dll」ファイルなど)
Kinect for Windows SDKベータ版のコアとなるライブラリ群などである。
○「SkeletalViewer.exe」ファイル
次の画面の例のように、深度センサーのイメージ、骨格の表示、実画像の表示を行うデモ・アプリケーションである。
上の画面の一番右端の画像は、実際のカメラ画像である。
一番左側の画像は、深度センサーのイメージを出力している。奥行き情報に応じて色の濃淡が変化し、人体部分を検出すると、その部分に色が付く。
左から2番目の画像は、骨格情報である。取得した骨格情報は20点あり、2人までの骨格情報を検出取得できる。この20点は、『プログラミング・ガイド』(英語)に下図のように示されている。
せっかくなので、もう少し詳しくデモ・アプリケーションを実験してみよう。
では、実際に2人の骨格情報を認識してみる。その結果は、以下のとおりである。ただし、左下に隣接して置いていた椅子までもが人物の一部として認識されており、左側の大人の骨格を示す黄色が少し異なった形になってしまっている。
この骨格情報は、完全に人物が立っていなくても、あるいは一部分しか写っていなくても、「それらしく」取得できた。つまり椅子に座った状態でも取得できていた(……「Xbox360が家庭用ゲーム機であるため、座ったままのプレイヤーがいる可能性もあることが考慮されているのかも」と想像が膨らむ)。
実際に椅子に座った状態で見てみると(次の画面を参照)、下半身の足の部分がないが、人物として認識され、骨格情報も取得できている。左端に筆者の一部が写っているが、これはさすがに人物として認識できないようである。
○「ShapeGame.exe」ファイル
Kinectを使った体感ゲームである。上部からさまざまなシェイプ(=図形)が落下してくるので、それをプレイヤーがはじき飛ばし、シェイプを消すゲームである。プレイヤーの動きは、Kinectを利用して操作する。次の画面は、そのゲームの実行例だ。
上のゲーム画面を見ると分かるが、右上に実際のプレイヤーがカメラ映像で表示されており、その動きに合わせた骨格モデルが中央のゲーム画面を動き回る。「シェイプに触れると、シェイプが消え点数が加算される」という単純なゲームであるが、Kinectらしいゲームである。
●サンプル・プログラムのフォルダ構成
Kinect for Windows SDKのサンプル・プログラムは、「C:\Users\Public\Documents\Microsoft Research Kinect SDK Samples\」フォルダの配下に格納されている。このサンプル・プログラムは、Kinect for Windows SDKを把握するのに絶好の題材だ。次の画面は、このフォルダをWindowsエクスプローラで開いたところである。
このフォルダの構成は、以下のようになっている。
C:\Users\Public\Documents\Microsoft Research KinectSDK Samples
├─Audio
│ ├─AudioCaptureRaw
│ │ └─CPP
│ ├─MFAudioFilter
│ │ └─CPP
│ ├─MicArrayEchoCancellation
│ │ └─CPP
│ ├─RecordAudio
│ │ └─CS
│ └─Speech
│ └─CS
└─NUI
├─ShapeGame
│ └─CS
└─SkeletalViewer
├─CPP
└─CS
「Audio」と「NUI」の2種類のサンプルがあり、C#サンプル(=「CS」フォルダ)、もしくはC++サンプル(=「CPP」フォルダ)、あるいは両方で記述されたサンプルとなっている。
ここでは、各サンプルについて簡単に紹介する。
●「NUI」サンプル
まずは、2つの「NUI」のサンプルだ。この2つは、先ほどの動作させたサンプル・アプリケーションそのものである。
○SkeletalViewer(C++/C#)
C++版のSkeletalViewerは、DirectXを利用しているネイティブ・アプリケーションである。C#版のSkeletalViewerは、WPFを利用している。
○ShapeGame((C#))
ShapeGameはC#版しかなく、こちらもWPFを利用している。
●「Audio」サンプル
次に、次の5つの「Audio」のサンプルを紹介する。
○AudioCaptureRaw(C++)
Kinectのマイク・センサー・アレイを利用して音声を録音し、.wavファイルに書き出すサンプルである。COMベースのWASAPI(Windows Audio Session API)を利用して「raw audio」(=生の音声)を取得し、4chの.wavファイルに書き出す。
○MFAudioFilter(C++)
Kinectのマイク・センサー・アレイを利用するサンプルである。このサンプルでは、Kinect Audio DMO(DirectX Media Object:COMベースのデータ・ストリーミング・コンポーネント)(=MSRKinectAudio)を初期化・設定し、Media Foundation経由でマイク・センサー・アレイのデータを.wmaファイルに書き出す。
○MicArrayEchoCancellation(C++)
Kinectのマイク・センサー・アレイ(=4つのマイクが並んでいる)を利用して、エコー・キャンセルと音源の位置(角度)を取得するサンプルである。
○RecordAudio(C#)
Kinectのマイク・センサー・アレイを利用して音声を録音し、.wavファイルに書き出し、音源の位置(角度)を取得するサンプルで、前述の「AudioCaptureRaw(C++)」「MicArrayEchoCancellation(C++)」と同等の機能をC#で実現している。
プログラムを起動し、Kinectの周辺で音を出すと、その位置をコンソールに出力する。
○Speech(C#)
Kinectのマイク・センサー・アレイとMicrosoft Speech Platformを利用して音声コマンドを認識するサンプルである。“red”“blue”“green”があらかじめ認識対象として登録されており、その言葉をKinectに顔を向けてしゃべると、コンソールに認識結果が出力される。
Kinect for Windows SDKベータ版のドキュメントとしてオンライン・ドキュメントがある。
上記のリンク先の上部にある[documentation]をクリックしたときに表示されるページには、ここまでに何度か登場した『プログラミング・ガイド(Programming Guide: Getting Started with the Kinect for Windows SDK Beta)』をはじめとした各種ドキュメントが提供されている。ただし現在は、英語ドキュメントのみである。
今回は、KinectとKinect SDKについて簡単に紹介した後、Kinect for Windows SDKベータ版の導入を行った。また、Kinect for Windows SDKベータ版に含まれるサンプル・プログラムの紹介を行ってきた。
次回は、今回のサンプルのうち、C#のものを中心に、Kinect for Windows SDKベータ版の利用方法について解説する予定である。
Copyright© Digital Advantage Corp. All Rights Reserved.