Kinect for Windows v2
Kinect v2は、2014年07月15日に発売されたTOF方式のRGB-Dセンサです。今回、Kinect v1と同様にKinectFusionを試してみました。
KinectFusion
KinectFusionとは、Kinectを用いてSLAM(Simultaneous Localization and Mapping):自己位置推定と地図作成を同時に行う技術である。
SDK Browser (Kinect for Windows) v2.0でも体験できるが、実際にソースコードをいじって、3D点群と自己位置を得てみた。
ソースコードのダウンロード
UnaNancyOwenさんがKinect v2のサンプルプログラムを公開していらっしゃいます。ありがとうございます。
(参照コード)https://github.com/UnaNancyOwen/Kinect2Sample
- KinectFusion.cpp ・・・メイン
- KinectFusionHelper.cpp ・・・関数
- KinectFusionHelper.h ・・・関数の定義
引用、一部改変しました。
(参照コード) https://github.com/SatoshiRobatoFujimoto/KinectFusionV2
- Colorを追加
- 点群ファイルの保存(.ply, .stl, .obj)
- カメラ位置を保存するプログラムを追加(.ply)
実行の手順
- Releaseモードで実行して、's'キーで保存、'r'キーでリセット、'esc'キーで終了します。※Debugモードでウィンドウ名が文字化けするバグ有り
- 保存されたCameraPose.ply(カメラ位置の点群)ファイルとmesh.ply(再構築した点群)ファイルをMeshLab等で開いてください。
動作環境
- PC (Windows8.1, RAM 8GB, 2 cores @ 2.1GHz)
- Visual Studio 2013
- OpenCV2.4.9
- Kinect for WIndows SDK v2.0_1409
結果
障子を撮影しました。3D点群ファイルと自己位置(赤い点群)を示します。
STLファイルやOBJファイルにも対応しています。(自己位置は保存してません。色もついてません。)
Kinect v1によるKinectFusionはこちら