MicrosoftのKinectFusionを動かした話
[KinectFusionとは]
ざっくり言うと,リアルタイムで表面再構成を行う方法です!
表面再構成ってなに?となると思うんですけど,簡単に言えば3次元データをメッシュ化することです!
そもそも3次元データってなに?ってなると思います.
例えば,カメラで動画や写真のように平面のデータをスマホとかで見てると思うんですけど,今はVirtualReality(VR)やAugmented Reality(AR)といった技術で360度どこからでも映像を見ることができるようになりました.
その映像が360度どこからでも見れるっていうことは,今まで平面だったデータが立体のデータになったということです!
つまり3次元データっていうのは平面のデータに加えて奥行きがある立体データのことです!
その立体データは点群で表せたり,メッシュで表せたりするのですがメッシュで表すのは計算コストがかかってしまい,リアルタイムでメッシュ化するのが難しいのです!
KinectFusionはそのリアルタイムでメッシュ化を行う方法の一つです!
今回はそれを実装したライブラリをMicrosoftがリリースしているので環境構築していこうと思います!
基本的にこのサイトの通りにやっていけばいいのですが,変わっているところだけしっかり書こうと思います.
[環境構築]
まず,動作環境
・Windows10
・Visual Studio2019
・Azure Kinect DK
・Azure Kinect SDK1.4.1
・CMake 3.17.2
・OpenCV 4.1.0
・OpenCV Contrib 4.1.0
・VTK 8.2.0
特にOpenCV, OpenCV Contrib, VTK, CMakeのバージョンは揃えないと動作しませんでしたのでお気を付けてください.(OpenCVの古いバージョンはCMakeでbuildするときにエラーが出てしまいます.)
➀VisualStudio2019のダウンロード
②Azure Kinect SDKのインストール
③AzureKinectのファームウェアのアップデートを行います.
この時にWindows Power Shellをつかってコマンドを打っていくのですが,以下のコマンドの最後の部分binファイル名がAzure Kinect SDKのバージョンによって違うので,ここのフォルダまでいき,確認して変えて下さい.
.\AzureKinectFirmwareTool.exe -u .\firmware\AzureKinectDK_Fw_1.6.108079014.bin
④AzureKinectが正常に動いているかの確認
⑤CMakeのインストール(*必ずこのバージョンをインストールしてください)
⑥VTK8.2.0のインストールとCMakeでのビルド
ビルド完了したらslnファイルを開いてコンパイル
⑦OpenCV + OpenCV Contrib のインストール
OpenCV4.1.0をCMakeでビルド
ビルド完了したらslnファイルを開いてコンパイル
⑧Kinect-Fusion-Samplesをクローン
紹介した記事では書かれていないのですが,ないフォルダは自分で作ります!
D:\opencv-4.1.0\install\include を
opencv-kinfu-samples\extern\opencv-4.1.0\include へコピペ
D:\opencv_contrib-4.1.0\opencv_contrib-4.1.0\modules\rgbd\include を
opencv-kinfu-samples\extern\opencv_contrib-4.1.0\modules\rgbd\include へコピペ
D:\opencv_contrib-4.1.0\opencv_contrib-4.1.0\modules\viz\include を
opencv-kinfu-samples\extern\opencv_contrib-4.1.0\modules\viz\include へコピペ
⑨opencv-kinfu-samples フォルダ内に extern\lib\Release フォルダを作成して、ビルドに必要なファイルをコピペします。
opencv_calib3d410.lib
opencv_core410.lib
opencv_highgui410.lib
opencv_imgproc410.lib
opencv_rgbd410.lib
opencv_viz410.lib
※上記 6つの lib ファイルは D:\opencv-4.1.0\install\x64\vc16\lib フォルダ内に全て存在する
⑩紹介した記事ではファイルの内容を変更するように書かれていますが変更なくて大丈夫です!
⑪また紹介した記事にはかかれていないのですが,k4aがみつからないよーっていうエラーがでたら,
C:\Program Files\Azure Kinect SDK v1.4.1\sdk\include\k4aを
D:\M1resercah\Azure-Kinect-Samples-master\opencv-kinfu-samples\externにコピペしてください
⑫main.cpp 456行目の setUseOptimized(true); を setUseOptimized(false);
にする.また,28行目の#define HAVE_OPENCVのコメントを外す
⑬最後に
opencv-kinfu-samples\x64\Release フォルダ内に
D:\opencv-4.1.0\install\x64\vc16\bin フォルダ内にある全ての dll ファイル
D:\VTK-8.2.0\install\bin フォルダ内にある全ての dll ファイル
をコピペ
あとはデバッグなしで実行を行うと出来るはずです!
お疲れさまでした!
この記事が気に入ったらサポートをしてみませんか?