Kinect for Windowsとfor XBOX360の比較

KinectをWindows PCで使うのが正式に許されたKinect for Windowsですが、目玉は

 

●商用利用が可能

●Nearモードの対応

 

ですが、実際に使ってみた比較をまとめてみたいと思います。

 

仕様についての比較はUnaNancyOwenさんのまとめ?ブログが詳しいので、そちらを参照下さい。

 

まず、Kinect for Windowsの特徴Nearモードですが、センサーから40cmまでプレーヤーを認識してくれるというモードで、このよう↓にモニタの上に配置して比較してみました。

 

 

この配置で机に座ると、センサから顔までの距離が約40cmm

 

最初はNearモードは近い距離でも測定できるように広角撮影をしてくれるのか?と思っていましたが、見え方はDefaultモードでも同じで、測定可能範囲がNearモードで、400~3000mm、Defaultモードで800~4000mmになります。
(別のドライバを使っていた時は400mm~でDepthデータは拾えていたので、XBOX360そのものは400mmからの測定能力を持っていると思うのだが...)

 

ただし、プレーヤーを認識するまでには、一度、約120cmぐらい離れないと認識してくれません。

 

また、通常のモードではプレーヤーのスケルトン(関節の位置)も認識してくれますが、Nearモードではユーザーの中心(おそらくプレーヤー領域の重心)のみ1点の認識となります。

 

これについては次期SDKのバージョン1.5で改善されるようです。

(参考)

http://blogs.msdn.com/b/kinectforwindows/archive/2012/03/26/what-s-ahead-a-sneak-peek.aspx

 

深度データそのものに関してはNearモードもDefaultモードも変わらず、表示方法が変わるだけのようです。

 

実際に撮影した様子はこちら↓

■Kinect for Windowsで撮影(Nearモードで撮影しています。)

 

Kinect for XBOX360で撮影

 

まず、気になるのがカラー画像の画質の違い。

Kinect for Windowsでは全体的に霧がかかったようで、少し暗くてボケた感じ。

Kinect for XBOX360の方がキレイな感じがします。

 

そこで、Kinect本体をよーく見てみると、カラーカメラそのものが別物でした。

Kinect for Windowsカメラ Kinect for XBOX360カメラ

 

Kinect for Windowsにはピンホールカメラっぽい物が付いています。

 

また、細かい部分ですが、Kinect for Windowsでは台座を左右に回す事が出来ます。(マニュアルで)

 

 

と言う事で、Kinectが商用利用できるという事はインパクトが大きいのですが、今のところは無理してKinect for Windowsを買う必要は無かったかも?

 

次のバージョンのSDKでどれだけ関節の位置を認識してくれるか?によって、使い方も広がっていくと思われます。

 

※注意点(私がハマった事)
Kinect for Windowsセンサーの箱の底にも書いてありますが、センサをPCに接続する時はUSB2.0のバスを占有するように接続して下さい。
例えば、DualでKinectを接続したい場合やUSBカメラと同時に接続したい場合など、近い場所のUSBポートに接続すると何かしらのデバイスが認識しなくなる場合があります。
その場合はUSBポートを遠い場所(全面と背面とか)やUSBコネクタを抜差ししてみるなど、してみて下さい。

 

ちなみに、今回はモニタの上にそ~っとKinectを置いてみましたが、専用のマウントホルダーなる物も販売されていました。

 

 

後日、マウントホルダーを購入しました。

 

これを使うと机周りもスッキリしてオススメです!

 

【参考書籍】KINECT for Windows SDK プログラミング C#編

2012年2月の初旬に公開されたKinect for WindowsのSDKですが、もうすでにこのSDKの書籍が発刊されました。

 

著者はKinect + OpenNIの本(KINECTセンサープログラミング)を書いた中村薫さんほか。

仕事が早い!!!

 

 

Kinect for Windos SDKにはC++とC#のサンプルがあるのですが、今回はそのC#版について。

 

C#版のSDKは良く出来ていて、カラー画像、深度データ、スケルトンがそれぞれイベントで取得できるので、非常に簡単にデータが取得できます。

この本ではKinectの概要からインストール方法、応用へと、この一冊でほぼ網羅されているのではないでしょうか?

サンプルプログラムもVisual C# 2010 Express版で公開されているので、役にたつと思います。

どこでもタッチスクリーンというサンプルも面白そう。

 

ただ、WPFをやった事の無い私にとって、その部分がちょっと引っかかるのですが、ソースを見た限りだと、そんなにも難しくないかも?

と思っていたら、ちゃんとWPFを使わないFormを使った説明もありました。

 

このFormを使った方法については、私も以前、作った事があるので、下記のページ

 

Kinect for Windows SDK C#サンプルプログラム

 

も参考にして頂けると幸いです。

(深度データをBitmapへ渡す部分が本のサンプルとちょっと違います。)

 

また、OpenCVやOpenGLを使った例が載っていますが、それぞれ.NETのラッパーライブラリを使ったものなので、少しは簡単?だと思われます。(まだ未評価なもので。)

 

目次

1.導入

1.1 Kinectの概要
1.2 ライセンス
1.3 セットアップ
1.4 プロジェクトの作成

2.基本機能

2.1 Kinect for Windowsの概要
2.2 RGBカメラ
2.3 距離カメラ
2.4 プレイヤーの認識
2.5 スケルトンの認識
2.6 WindowsFormsを利用した実装
2.7 音声の取得
2.8 延元後方の取得
2.9 チルトモーター
2.10 Kinectの挿抜検出
2.11 ここまでの全プログラム

3.応用編

3.1 OpenCVを利用した顔認識
3.2 身長を測る
3.3 どこでもタッチスクリーン
3.4 背景マスク
3.5 光学迷彩
3.6 ポーズを認識する
3.7 ロボットを操作する
3.8 Kinectをマウス代わりにする
3.9 音声を認識する
3.10 音源方向のプレイヤーを特定する
3.11 OpenGLを利用した点群の表示

4.便利なライブラリ

4.1 Coding4Fun Kiect Toolkit
4.2 Kinect Toolbox

5.APIリファレンス

5.1 Kinect制御関連APIリファレンス
5.2 RGBカメラ関連APIリファレンス
5.3 距離カメラ関連APIリファレンス
5.4 骨格関連APIリファレンス
5.5 音声関連APIリファレンス

6.ユーザビリティ

6.1 ユーザビリティとは
6.2 良いデザイン
6.3 NUI(ナチュラルユーザーインターフェース)
6.4 Kinectを利用したインターフェース
6.5 最後に

補遺
A StreamingWavePlayer
B SendInput

 

Kinect for Windows SDK C#サンプルプログラム

先日公開されたKinect for Windowsと、そのSDKですが、これまでKinectは研究用途で黙認状態でしたが、このKinect for Windows(Kinect本体)を使う事で商用が可能となるインパクトは大きく、これからもKinectを使ったアプリもどんどん出て来ると思います。

 

しかし、SDKはC#版とC++とがあり、C#なら簡単に出来るかな~?!と思ってもKinect for WindowsのSDKではC#とWPFを使うので、WPFをやった事がないと少し分かりづらいと思います。

 

そんなWPFなんて分からない!という人(私)向けにC#だけサンプルプログラムを作ってみました。

 

基本はC#+WPFのKinect Explorerのサンプルをベースにして、分かり易さ重視?!で音声部分や必要の無さそうな部分は削除しました。(エラー処理もあまり考えていません...)

 

作成したプログラムはこんな感じ↓

 

サンプルプログラムはこちら↓よりダウンロードして下さい。

Kinect for Windows SDK C#サンプル (Visual Studio 2010 C#)

 

このサンプルを実行するには別途、Kinect for WindowsのSDKをインストールしておく必要があります。

SDKはこちら↓のページよりダウンロード可能です。

http://www.microsoft.com/en-us/kinectforwindows/develop/overview.aspx

 

インストール方法については、他の人のページですが、このへん↓

 

Kinect3 -Kinect for Windows SDK

 

を参考にしてみて下さい。

 

ちなみに、このサンプルプログラムを作るのには、Kinect for Windows SDKのヘルプファイルのHow Tosの部分がともて参考になりました。

 

英語ですが一度、目を通して見てみて下さい。