Windows用のKinectはXbox用と何が違うの?
こんにちは。薬師寺国安@PROJECT KySSです。今回から、Kinect for Windowsのプログラミング解説(基本編)をはじめます。どうかよろしくお願いいたします。
突然ですが、皆さんはKinectをご存じですか?知らない方はあまりいないと思いますが、はじめにKinectの概要からお話ししていきましょう。
図1:Kinect for Windows |
画期的なセンサーデバイスのKinect
Kinect(キネクト)は2010年にマイクロソフトから発売されたセンサーデバイスです。当初はゲーム機であるXbox 360向けの「Kinect for Xbox 360」として、本体やゲームとともにリリースされましたが、 2012年2月には、Windows PCで自由に開発ができる、商用利用が可能な「Kinect for Windows」が発売されました。
今回は、このKinect for Windowsを使って、センサーを使ったアプリの開発について解説していきます。以下、特に断り書きがない場合、KinectとはKinect for Windowsのことを指します。
Kinectには、RGBカメラ・深度センサー・マルチアレイマイクロフォンと、専用ソフトを動作させるプロセッサ内臓のセンサーから構成されています。このことにより、最も大きな特徴である人体のモーションキャプチャーの他、カメラ画像の撮影や距離画像の取得、音源位置を推定したりすることができます。
ハードウェア要件は以下の通りです。
- OSはWindows 7/Embedded Standard 7となっております。
- CPUは、デュアル・コア 2.66 GHz 以上のプロセッサ。
- USB 2.0 の専用バス(USB 2.0、ポートを他の機器と共有せず、本製品がバスを専有するようにする)。
- 2GB RAM。
- Microsoft Kinect Windows センサー。
また、1台のPCに最大4台のKinectセンサーの接続が可能です。
Microsoft Storeでの直販価格は24,800円、現在ではAmazonでも購入が可能です。
(*)開発時には通常、Kinect for Xbox 360を使うこともできますが、新たに提供されるSDKおよびランタイムの利用には、Kinect for Windowsに含まれるKinectハードウェアが必要であり、非商用利用であっても、Kinect for Xbox 360との組み合わせで実装することは認められておりません。新しいソフトウェアを実装したい場合は、非商用利用の場合も、商用向けパッケージのKinect for Windowsを利用する必要がありますので、注意してください。
Kinect for Windows SDKでできること
Kinectセンサーは、図1のようなデバイスを内蔵しています。深度センサーはKinectの重要な部分で、その名の通り、「深度情報」(深度画像)を取得します。赤外線を使って深度(センサーからの距離)を測定しています。
「RGBカメラ」は一般のビデオカメラと同じようなRGBカラー画像(実写)のカメラです。
Kinectセンサーから得た各種の生データをプログラマが使いやすい形に加工し、提供するのがSDKの役割です。プログラムでは以下のデータを取得できます。
- RGBカラー画像(実写画像)
- 深度画像
- プレイヤー(人間)のインデックス
- 人間の関節
- 音声
- 音源位置
「プレイヤー(人間)のインデックス」とは、Kinectセンサーが認識した人間に振った番号のことです。Kinectセンサーは最大6人までを同時に識別することができます。そのうち2人の関節を同時に追跡できます。
このSDKを使うと、わずかなコードで、手を使って3Dの地球を自由に回転させたり、実写と画像を同時に表示して、実写の人間が画像のオブジェクトに触れられるような処理を実現することができます。また、図8の動画のように、実写上に楕円を描いてその中をくぐるといった処理も可能です。このような動作には演者の演技力も必要ですが・・・(笑)。これらは開発者にとって大変に魅力的なことだと思います。
XBOX版との相違点
Windows用のKinectとXbox用のKinectでは何が違うのでしょうか。下の表をご覧ください。
表1:Windows用KinectとXbox用Kinectの違い
Kinect for Windows | Kinect for Xbox | |
---|---|---|
商用利用 | 可 | 不可 |
Kinect for Windows SDK | 可 | 可 |
Kinect for Windows SDK User Runtime | 可 | 不可 |
Xbox360での利用 | 不可 | 可 |
Nearモード* | 可 | 不可 |
(*)Kinect for Windows センサーには、深度情報の計測範囲に2つのモードが用意されています。
1つは、Xbox版 Kinect センサーと同じ計測可能範囲(80cm~4m)の「Defaultモード」、もう1つは、近距離での操作を可能にするために、40cmからの計測が可能な「Nearモード」です。Nearモードに設定した場合、追跡可能なスケルトンは、6人全て「腰の位置(HIP_CENTER)」のみとなり、身体全体のジョイント情報は取得できなくなります。
Defaultモードではスケルトンジョイントの20点全て取得可能ですが、Nearモードでは「腰の位置(HIP_CENTER)」のみの取得しかできません。各ジョイントの位置は図2のようになります。
Defaultモード、NearモードのKinect センサーからの距離に付いては、図3を、DefaultモードとNearモードについては図4を参照してください。
図2:人間の身体に対応したスケルトンジョイントの位置と名称(クリックで拡大) |
図3:Kinect センサーからの距離(m)(クリックで拡大) |
図4:DefaultモードとNearモード(クリックで拡大) |
※図2~図4はKinect for Windowsのヘルプより抜粋
連載バックナンバー
Think ITメルマガ会員登録受付中
全文検索エンジンによるおすすめ記事
- Kinectプログラミングのための環境構築と簡単なサンプル
- Kinectで人体を認識して棒人間を動かすサンプル
- Kinectを使って、顔の動きを認識して画面に表示する
- 人物特定に使える!?実際の映像で顔を認識するKinectプログラム
- Kinectで手の動きに合わせてモニタ上の画像を動かすサンプル
- Kinectを使って、自分の手のひらに小さな分身を出現させてみる
- 人物を切り抜いて画面に表示するKinectサンプル
- プレイヤーの身体パーツを判別するKinectサンプル
- 声で選んだアイテムをプレイヤーの身体に装着・連動させるKinectサンプル
- Kinectで手の動きに合わせて波紋を発生させるサンプル