Leap Motion + Kinect

Leap Motionが届いたので、前からやってみたかったkinectのスケルトンデータとの統合をやってみた。

Leap Motion?

ちょっと早めに届いてたひとのレビュー
http://blog.livedoor.jp/k_yon/archives/52452827.html
http://blog.impartech-lab.org/?p=114
を見るといいと思います。

LM + kinect

こんな感じで配置してみます。

で、kinectからのデータと、leapからのデータを適当に変換してやればいいのですが、どちらも右手系で、mとmmが違うだけなので簡単です。とりあえず適当にメジャーで測った精度の悪い定数をハードコードしてます。

すると・・・














一応動いています。が・・・

世の中に魔法はない!

とりとめのない感想

ポジティブなレビューは他の人に任せておくとして、実際何には使えなさそうかという点から書いてみる。
これを書いた時のSDKがv0.7.3で、ファームウェアもアップデート出来るみたいなので時間が経つと良くなるかもしれない。

まず、LMの動作原理ですが、どうも(広角の)ステレオカメラになってるようです。光源としては肉眼でも見えるぐらい*1明るい赤外線LEDが3つついてます。赤外線カメラで見ても特にパターンを照射してるようには見えないですが、フリッカーが見えるので(部屋を暗くしてゆっくり振ってみると分かります)変調してSN比を上げたりはしてるようです。

で、手というとあまりテクスチャがなくてステレオカメラからの深度の抽出はわりと難しいので、シルエットの方を主に使ってるか、すごく解像度を高く露出時間を短くしてがんばってマッチングしてるかのどっちか(あるいは両方?)だろう。

それはともかく、LMと垂直に手のひらを向けるのがワーストケースで、指がほとんど遮蔽されてしまうわけです。このとき、LMは手に特化したデバイスなのでわりとインテリジェントなpriorがあっていい感じに補完してくれるのかと期待してたがそんなことはなかった。見えないだろうな〜という場面では指はトラッキング結果から消えます。もっとも今後のアップデートですごく良くなる可能性は無くはない。

あと、さっきの例のようにkinectと組み合わせる方法ですが、身体の動きと比較するとLMが動く範囲はかなり狭いので、どっちも固定して使うのはちょっと微妙っぽい。

ただ、動いてる時にはかなり精度がいいので、自然な動作とかモーションキャプチャーとかあんまり考えずに、新しい入力方法を考えるのが良さそうだ。(あるいはシンプルに空中の仮想タッチパネル的な)

*1:可視光に近い赤外LEDは波長の広がりがちょっと可視光とかぶる