Kinect for Windowsで機器を作るヒント(1) ―― ジェスチャも音声も認識できる
●Kinectの機能としくみ
それでは最初にKinectの機能について理解を深めましょう.またKinectの動作原理についても知っておけば,どのような場面に利用できるのか,あるいはできないのかといったKinectの得意不得意な点も分かっていただけると思います.
Kinect本体の外観は,幅30センチ弱の棒状です.もともとはゲーム用デバイスであることからテレビ画面の上に置いて使用することが前提の設計となっています.すぐに気が付くのは特徴的な3個の目です.
中央の目は通常のRGBカラー・カメラであり,一般的なWebカメラ程度のものと考えてもらえばよいでしょう.解像度は高精細モードで1280×960で,リフレッシュ・レートは毎秒12フレームです.ですから動画としてはかなりカクカクとした印象になります.画質をVGAモード(640×480)にすれば毎秒30フレームのスムーズな動画を取り込むこともできます.リフレッシュ・レートを上げると画質が犠牲になるわけであり,このあたりは作成するアプリケーションによって適宜選択することになります.
次に両側の二つの目ですが,少し左側に偏って配置されているのは目ではなく赤外線プロジェクタです.製品説明書にはクラス1レーザ製品と記載されていることからも,この部分にはレーザ光が使用されているものと思われます.反対の右側の目はその赤外線を受光するカメラ(受光できる最大の大きさはVGA 640×480)となります.
この赤外線プロジェクタからは,その名の通り赤外線による特殊なパターンが正面に向かって照射されています.赤外線なので実際に肉眼で見ることはできませんが,Kinect前面の対象物にはそのパターンが投影されていることになります.このパターンは特殊なもので,複数のKinectが近くにあってもお互いに干渉しないというすぐれものです.Kinect動作中はプロジェクタの内側が赤くきらきらと光っていることが確認できます.ただし,あまり見つめることはよろしくないようです.
赤外線プロジェクタによって照射されたパターンは対象物によって歪み,また距離が離れればパターンはより大きく広がり,これらの情報を統計分析することでKinectは対象物との距離を計測しています.Kinectが人の動きを検出するのはこの両側のセンサ(3D深度センサ)の機能であり,中央のRGBカメラ画像はその画角に対応した付随情報となります.これが今までの画像処理によって人物を抽出する技術とは大きく異なる部分です.この原理を理解するとKinectが認識できるのは赤外線ビームが届く範囲内であり,暗い場所に強く,逆に明るすぎる対象物や反射率の高い素材に弱いという特性を理解できると思います.
Kinectにはカメラだけではなくマイクの機能も装備されています.ちょっと見ただけではどこにマイクの穴があるのか分かりませんが,4つのアレイマイクとして筐体の下方部に配置されています.なぜマイクが4つもあるかというと,それぞれのマイクで収集した音声を分析することで音の遅れ具合などから音源位置を割り出すためです.音源位置は左右に±50°の範囲で検出可能であり,複数のプレイヤーがKinectの前にいたとき,誰が発声しているのかを判別できます.またマイクにはエコー・キャンセラ機能が備えられており,実際にゲームを行っているときのBGM,効果音などと音声を分離しています.
Kinectの開発キット「Kinect for Windows SDK」には音声認識ライブラリも含まれています.最初のSDK 1.0では英語だけでしたが,新しいKinect for Windows SDK 1.5では日本語にも対応されました.
その他,Kinectを支える支持部にはモータが内蔵されており,上下方向のチルトがそれぞれ±27°を1°刻みでソフトウェア制御できるようになっています.水平方向には回転できませんが,よくリクエストされる機能なので将来のKinectでは自由に首を振ることができるようになるかもしれません.