MicrosoftのKinectFusionを動かした話

画像1

[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 ファイル
をコピペ

あとはデバッグなしで実行を行うと出来るはずです!
お疲れさまでした!

この記事が気に入ったらサポートをしてみませんか?