OpenCV2.3からOpenNIがサポートされたそうです。
ということは、Kinectから簡単にデータが取得できることになります。
本当でしょうか?
検証のため、以下のコードを実行します。
実行結果
本当だった。
すごいと思ったことを以下に書き連ねます。
・深度画像の計測範囲が広い。
具体的数値としてNIは 約500mm から 5000mm、KinectSDK は 約1000mm から 5000mm です。
(指の認識とか考えている場合 KinectSDK を選択すると難易度が上がります。)
・カラー画像と深度画像の応答が速い。
体感ですが、KinectSDKと比べてレイテンシが小さい。(10倍くらい速く感じます。というか KinectSDK が遅いと思います。)
・ポイントクラウド(3次元点群)が取得できる。
KinectSDKにこの機能はない。(確か)
・カラー画像にマッチングするように画像座標を補正した深度画像を取得できる。
(KinectSDKでできないこともないけど、ちょっと面倒な処理を挟むことになるはず。 )
・通常取得でミラーリングしない。(KinectSDKでは統一されていない。基本的にミラーリングされる)
・商用利用できる。
ライセンスはそれぞれ OpenNIはLGPLv3、OpenCVは修正版BSDです。
さて、OpenCV、OpenNI の dll を利用する一般的な使い方をする分には
作ったソースを非公開にしつつ販売することができる。
ちなみに KinectSDK は商用利用不可です。KinectSDKで作ったプログラムは販売できません。
・録画、再生機能がある(CVからのは詳しく調べてないけどあるはず
OpenNI にあるのは確認済み、研究作業には必須とも言える機能ですね)
KinectSDKにこの機能はありません。
・アプリケーションを終了すると、IRのレーザーも切れる(これはすごいことじゃないけど…)
KinectSDKにはバグがあり、シャットダウンしてもレーザーは出っぱなしになる。
KinectSDK ではなくOpenCV + OpenNI で何か作ろうと心に決めた日でした。
以上です。
2011/07/10 最終更新