Kinect
MicrosoftがXBOX360用に発売した新コントローラがKinectです。Kinectは,専用のカメラを使うことでプレイヤーの動き・姿勢をリアルタイムに認識し,その動き・姿勢をゲーム中のキャラクターの動きとリンクすることができる,世界初の非接触型ゲームコントローラーだそうです。*1
Kinectの原理
Webを検索していると,Kinectのキー技術は,MSのCambridge研究所で発明されたという記事があった。
ここのJamie Shottonさんという人のチームが,「プレーヤー姿勢推定」する事を開発したとある。
Kinectが持っている距離画像センサ,PrimeSense社が開発した物で(すでにMSに吸収されている),このセンサで取得した距離画像をもとに,Jamie Shottonさんらが作った人の姿勢推定ソフトウェアを用いて,プレイヤーの姿勢を認識すると言うことです。
キーポイントは2つ,
- Light Coding
いままでの距離画像センサは,TOFシステムが主流でリアルタイムで認識出来るものは非常に高価であった。PrimeSense社は「Light Coding」という,ある赤外線パターンを照射して,物体から反射して来た歪んだパターンをCMOSカメラで解析することで,距離画像センサとして機能している。
この方式で,コンシューマ向けの安価なセンサが提供できるようになった。(\14,800という驚異的低価格)
- 姿勢推定アルゴリズム
通常人間のモーションをトラッキングするには基準点(マーカー)を使うが,多量のサンプル画像(人間のいろいろな姿勢や動き)を学習させることで,各場所を認識出来るようにし,その動きを過リアルタイムで計測することにより,動きをトラッキング出来るようになったらしい。力技かもしれないが凄いですね。
Kinectの構成
- 距離画像を取得
赤外線の照射・赤外線カメラ・RGBカメラ
Light Codingって呼ばれる特殊なパターンを赤外線レーザーで照射し,帰ってきた歪んだ画像から各場所の位置を測定するようにしている。
部屋を暗くすると,このパターンが確認できる。
- 体の部位を推定する
上記で取得した距離画像を用いて,その画像がどこの部位に相当するかの識別を行う。Kinectでは,20の部位分けてそれをトラッキングしているそうだ。ここも1フレームごとの処理であり,時間情報は考慮していない。
衣服・体系・姿勢なんかに大量のバリエーションがあるんで,学習させるためのサンプル画像は大量で,およそ100万個の画像を使っているとのこと。
- 部位の配置の抽出
得られた毎フレームごとに検出された各部位を用いて,運動力学的観点と時間的な一貫性が保たれるように,3Dで部位の配置を抽出する。たぶん見えていない部分は考慮されてないから完全な骨組み(スケルトン)ではなくて,あくまで距離画像から識別できた部位のみ集めた配置になる。
ここまでだと,複数プレイヤーの区別はまだついていない。
- スケルトンのトラッキング
上記で得られた部位の仮の配置から,実際の人間の骨組み(スケルトン)の動きを推定する。
仮の配置から確率的に一番もっともらしい3D配置を計算して(どうやっているかは不明),プレーヤーごとのスケルトンが確定する。これをゲーム入力として利用する事になる。
コネクタ
KinectとXBOXがセットになっていて安いやつ(29,800円)を購入したんだけど,PCに接続しようと思ったら,どうもうまくささらない。よーくみるとUSBコネクタとは違うじゃん。Kinect単品だとUSB変換ケーブルとACアダプタが付いてるらしいんだけど・・・ 
繋げられないと困っちゃうんで無理やり接続するケーブルを自作しました。
Kinectのコネクタと自作の接続ケーブル
Kinectのコネクタを調べてみた。ピンピッチとかも変なコネクタです。
作成したケーブルは,USBの延長ケーブルを2本使いコネクタを作成。
新しくコメントをつける