PrimeSense社の世界最小3D深度センサー「Capri」とは?

CES 2013で発表されたものなのでやや話題的には古いと思いますが、国内のメディアであまり取り扱われいない話題なので紹介させてもらいます。

capri-gum

PrimeSense社(イスラエル)がこのたびCES 2013にて従来の「Xtion」に比べ、10分の1に小型化された3D深度センサー「Capri 1.25」を展示しました。Xtionといえば、Microsoft社の「Kinect」に搭載されていることで有名なセンサーモジュールですが、より小型・高性能になっての登場です。

以下に公開されている情報を記載します。

  • 画角 水平57.5° 垂直45°
  • 有効距離 0.8m-3.5m
  • 深度センサの解像度 VGA(680×480)
  • USB2.0バスパワー対応
  • 従来品と同構成
  • OpenNi対応

 これらの情報について、解説していきます。

キャプチャ範囲

Capriキャプチャ範囲

上画像はイメージです。

従来のKinectの画角(水平57°、垂直43°)に比べると、わずかですが広くなっていることが分かります。また有効距離ですが、Kinectの1.2m~3.5mに比べ、より近距離での深度の取得が可能になりました。部屋が狭く十分にスペースが取れない場合でもジェスチャーの検出が可能になるのは、ユーザーにとって喜ばしいことです。アプリケーションの製作者側にとってもプログラムのバグ確認がより近くで行えるため楽になります。

USB2.0バスパワー対応

Kinectと違い、USB2.0バスパワー動作に対応するようです。KinectとXboxを接続する際はバスパワーで動作しますが、PCでKinectを操作する際には別途AC電源が必要という欠点がありました。また、ASUSからでている同等品の「Xtion PRO LIVE」では既にUSB2.0バスパワーに対応しています。

3Dsensor比較

OpenNI対応

OpenNIってなに?という方のために簡単な解説です。

OpenNIとは、PrimeSense社、Willow Garage社(OpenCV)、ASUS社などが協力して提供しているKinect用ライブラリ(プログラム作成を補助してくれる詰め合わせだと思ってください)のことです。プログラマーはこのライブラリを利用することで簡単に人の骨格を検出することができます。また、Microsoft社が提供する同等品に「Kinect for WIndows SDK」がありますが、こちらはWindowsでしか動きません。

その他の構成は現在分かる範囲では従来品と同等ですが、一番の利点である小型化によって様々な変化がありそうです。PrimeSense社ではこのセンサーをPC、タブレット、携帯、テレビ、ロボットなどに搭載することができると言っています。また、チップ内部での処理も3年前に比べて向上したため、パワフルなコンピュータやゲーム用コンソールのみではなくARMプロセッサーでも動作するようになり、実際にCES 2013では「Nexus 7」にCapriを搭載した展示が行われていたようです。

Capri-1.25-5

Capriのサンプル出荷は今年の半ばを予定しているとのこと。

Google社の「Project Grass」等、各社が競い合う次世代インターフェースのひとつとして挙げられるMicrosoft社のKinectを代表とする3D深度センサですが、これからはより様々な場所で用いられるようになるかもしれません。

以下おまけ

なんとなく、知っていそうで知らないKinectの動作原理について解説したいと思います。また以下で解説する手法は推測を基にしており、公式に公表されているものでは無いため、誤っている可能性があることをご了承ください。(内容的に点の密集がたくさん出てきます、苦手な方はそっと記事を閉じてください。)

Kinectの原理

よく勘違いされがちなのですが、実はキネクトには通常のRGBカメラはひとつしかありません。残りの二つの目は近赤外線用のプロジェクタとカメラなのです。

Kinect

この近赤外線用のプロジェクタとカメラが水平にずれていることが、3D測定用の肝になっています。また、近赤外線プロジェクタが実際に照射しているパターンが以下のようになります。

照射パターン

このように無数の点でできたランダムパターンを物体に照射し、カメラでそれを撮影することで物体の凹凸を判別しています。ちなみに右のような写真を撮影する場合はカメラの赤外線カットフィルターを外して、さらに赤外線透過フィルムを通して撮影するようです。これらのドットパターンからどのようにして3Dスキャンを行うかと言うと、大まかに以下の図のように行っています。

Kinectの原理図

プロジェクタとカメラは水平に位置がずれているため、壁とカメラの間に板を挟むと、カメラ側からは板のとなりに生じる影が見えます。つまり、影が生じている部分はドットパターンの間隔が広くなっており、反対側は狭くなっていることが分かります。この間隔のずれが大きいほど板が手前側にあることが分かるのです。

視差から得る情報

Kinectはこのようにして物体の3次元の位置や凹凸を判別している訳なのですが、Kinectの真髄は実はこれではなく(十分すごいのですが)、人間の骨格の追跡技術にあります。どうやら膨大な数のデータから機械学習によって教師データを作成し、それと照らし合わせることで人間の部位を検出してるようです。その後、検出した部位同士から連続しているものを確率的に探し出し、一人の人間の骨格として検出してるのだとか。(このあたりは上手く解説できそうにありませんので、よろしければお調べください。)

discover_features_v2

最後に、先に述べましたが検出の手法は公式に発表されていません、様々な方の推測を元に今回は私なりに解説させていただきました。私自身、ゲーム作成にKinectを使用した事がありますが、ちょっとプログラムをかじった人なら簡単に骨格の追跡機能を使うことができるようになっています。興味がある方は、是非挑戦してみてください!

[engadgetTHETECKJOURNALVB]

ソーシャルシェア

このニュースでディスカッション
  • コメントを投稿する際には「コメントガイドライン」を必ずご覧ください
  • コメントを投稿した際には、コメント機能利用規約(ガイドライン)に同意したものとみなされます
  • 主要ニュースサイトなどの「許可サイト」以外のURLを含む投稿はコメントが保留されます