nikuyoshiのブログ

記事の内容については個人の見解であり、所属企業の意見を代表するものではありません

KinectSDK、OpenNIどちらを使うか

卒論において特に重要だと思っている機能は、

  • 感知できる関節数
  • 動作の感知精度

以上の2点です。それを重視してどちらかに絞ろうと思っています。

OpenNIとKinectSDKとの違いをまとめてくれているサイトがあるので紹介しておきます。
事前にどの程度機能が異なるのかを調べておきました。

KINECT for Windows SDK と OpenNI の比較 - かおるんダイアリー
f:id:nikuyoshi:20111111215347p:image

それをふまえて、実際にサンプルプログラムを動かしてみました。

まずはKinectSDK

  • KinectSDK_SkeletalViewer1(足先まできちんと映さない場合)

  • KinectSDK_SkeletalViewer2(足先まである程度きちんと映す場合)

次にOpenNI

  • OpenNI_Sample-NiUserTracker1(足先まできちんと映さない場合)

  • OpenNI_Sample-NiUserTracker2(足先まである程度きちんと映す場合)

実際に実行してみて思ったことは以下の3点です。

  • OpenNIの方がモーション感知の精度が高い
  • KinectSDKだと、動いてないのに動いていると勝手に認識することがある(KinectSDK1の手首を見るとよく分かる)
  • 下半身、手がきちんと映っていない場合、KinectSDKは補完をしようとしておかしな動きをする

サンプルプログラムとはいえ、KinectSDKの補完が今後どう影響するか分からないのが怖いところです。
キャリブレーションポーズが必要ですが、卒論では精度がある程度必要になってくるので、現時点ではOpenNIでプログラムを組んでいこうかなーと思っています。少しでも体の一部が隠れるだけで動作がおかしくなるのは結構怠いです。

あとはプログラミング言語をどうするかですね。Cか、C++か、はたまたprocessingか…