Open3Dの公式ページに書かれているReconstruction Systemを動かすまでに,ページに書かれていない細かな作業がそれなりに必要だったのでメモ書き程度に書き留めておきます.尚,執筆中に0.5から0.6にアップデートされていました.ということで,テストしたのはv0.5です.また,今回の例ではPythonしか使いません.そして,手元にIntel RealSense SR300があるので,これをOpen3Dを介して使う方法も書いておきます.
Open3Dのインストール
- CondaコマンドでOpen3Dをインストール
- つまり
conda install -c open3d-admin open3d
- 参考:http://www.open3d.org/docs/getting_started.html
- つまり
- GitHubからサンプルコードをダウンロード
- 尚,https://github.com/intel-isl/Open3D/tagsから正しいバージョンのものを選択すること
Open3D-0.5.0\examples\Python
フォルダにコードが入っている- 以降これを
PATH
とする
SR300をセットアップする
必要なライブラリのインストール
- OpenCVをインストール
- IntelRealsense SDKのインストール
- https://github.com/IntelRealSense/librealsense/releasesの
Intel.RealSense.SDK.exe
をインストールしたと想定
- https://github.com/IntelRealSense/librealsense/releasesの
C:\Program Files (x86)\Intel RealSense\bin\x64\
内のライブラリ群をsite-package
にコピペsite-package
はC:\Users\YourName\Anaconda3\Lib\site-packages
にあるかと思います
- PCを再起動
SR300の内部パラメータ
ここにある"Douglas K. Tue, 03/01/2016 - 00:51"のコメントによると以下のパラメータがデフォルトの様子.
|
|
|
---|---|---|
追記 (2019.7.30):よくよくexamples\Python\ReconstructionSystem\sensors\realsense_recorder.py
のコード(SR300を使ってRGBD画像列を保存の項を参照)を見てみると,内部パラメータがdataset\realsense\camera_intrinsic.json
に吐き出される仕様になっている.これでセンサ個別の内部パラメータが得られる.私の場合以下のようになっていました.尚,長いので小数点第二位以下は省略します.
fx | fy | cx | cy |
---|---|---|---|
613.5 | 613.5 | 319.1 | 240.7 |
RealSenseでの奥行画像のスケール
RealSense SDKのsamplesでは,奥行画像の画素値のどのくらいが1mに相当するかを決定するget_depth_scale
関数なるものが用意されていて,デバイスごとに異なるスケールをコードから参照できるようになっているようです.
SR300を使ってRGBD画像列を保存
基本的には公式ページの"Capture your own dataset -- Open3D"を参照のこと.
examples\Python\ReconstructionSystem\sensors\realsense_recorder.py
を開く96行目
で奥行画像の解像度をVGAに変更- つまり
(1280, 720)
を(640, 480)
に変更
- つまり
python realsense_recorder.py --record_imgs
でコードを実行- メモ:実行すると突如として録画が開始される
Reconstruction Systemを実行
マルチスレッディングに必要なjoblibをインストール
conda install -c anaconda joblib
を実行
本体のコードを実行
PATH\ReconstructionSystem
へ移動config_file
を開く"path_dataset"
を自分のパスに変更- 例:
"dataset\realsense"
- 例:
- コードを実行
python run_system.py config_file --make
python run_system.py config_file --register
python run_system.py config_file --refine
python run_system.py config_file --integrate
- もしくは一度に:
python run_system.py config_file --make --register --refine --integrate
出力結果
SceneNN No. 16データセットをDell New XPS13で処理した場合にこれくらいの時間がかかりました.
==================================== Elapsed time (in h:m:s) ==================================== - Making fragments 0:17:28.095645 - Register fragments 0:00:43.812156 - Refine registration 0:00:27.934999 - Integrate frames 0:01:48.144489 - Total 0:20:27.987289
最終的に作成された3次元モデルは,用意したデータセットのパス(「本体コードを実行のStep3」で設定したパス)の直下にあるscene
フォルダにintegrated.ply
として保存されています.