2012.09.11
KINECT2台で簡易3Dスキャナー
Kinect 2台を使用して簡易スキャナを作りました。OpenNI版とKinect for Windows 公式SDK版の2種。ドライバの違いで深度データの精度が違いますね。また、OpenNI版だとバスパワーで動作するXtionでの動作も期待できるので、同じ機能を持つアプリを2種のドライバに対応させておくと用途によって活用範囲が広がる気がします。
いずれのドライバを使用したものも、表面がでこぼこしています。これは赤外線センサーを使用するうえでの宿命でして、滑らかにするには、過去何世代か分のHistoryを配列で保存して、それぞれの平均値を取るのがよろしいかと思います。
また、そのさいにはOpenCVのフレームワークを使用して対象物の縁取りを行ってその中だけを配列化→平均値取得とすると良いかと。今後のアプリ改修時には取り入れていきたいかなと。
OpenNI版
OpenNI版だとKinect以外にもXtionでも動く(はず)ので、用途は広いように思います。ただ、MacBookAirで開発したためか、深度情報の解像度を320*240より上にすると重くて動作しませんでした。
深度情報は正確で顔の目鼻や肩の辺りのブラウスのひだもきれいに取れています。
この辺は開発機を限定してスペックの高いもので行えば640*480くらいまではいけるのではないかと思います。
いちおう、ドライバ的には1280*960までDepthの解像度は取れます。ただし、1台接続での情報なので2台接続で正常動作できる速度なのかははなはだ疑問です。
開発環境
OS | Windows 7/MacBookAir BootCamp |
OpneNI | 1.5.2.23 |
NITE | 1.5.2.21 |
avin2 SensorKinect | v5.1.0.25 |
Depthの解像度 | 320*240 |
Kinect for Windows 1.5版(略称公式SDK版)
公式SDKのほうが簡単にマルチキネクトできます。コードも書いていて分かりやすいです。でも、深度情報が平面的で人体の丸みが取れていないように思います。顔の目鼻の状態もわかりませんよね。。。。
Depthの解像度は640*480なのでそれなりにはみえるものの、開発者としては少しがっかりかな。
OS | Windows 7/Mac mini BootCamp |
Kinect for Windows SDK | 1.5.2.317 |
Depthの解像度 | 640*480 |
クレジット
プログラミング | SIHO |
動画撮影協力 | 中西 栄二、仲座 沙織 |