自分で取得したデータでreconstructionsystemの実行
実行環境
Ubuntu20.04(noetic)
注意
この章を実行するには、realsense、anacondaを実装し、opencv,pyreslsense2のインストールをしておく必要があります。
opencvのインストール $ pip install opencv-python
pyrealsense2のインストール $ pip install pyrealsense2
インストール方法
open3dはpython3で動作する.
sudo apt-get install open3d
pip3 install opencv-python
pip3 install pyrealsense2
reconstraction_systemを使うために、以下のgithubをクローンする.
cd ~
git clone https://github.com/isl-org/Open3D
実行方法
-
使用するファイル構成
以下のPathにreconstruction_systemのフォルダがある.
cd ~/Open3D/examples/python/reconstruction_system
使うファイルは以下の3つである
- config/realsense.json : reconstruction_systemを実行する際に必要なパラメータファイル(*.json)がある
- scripts/realsense_recorder.py : Realsenseで色+深度画像を収集するスクリプト
- run_system.py.py : reconstruction_systemを実行するスクリプト
-
色+深度画像の収集
以下を実行すると、dataset/realsenseというフォルダが新たに生成され、そこにデータが取得される.
--output_folderによって、出力パスを決めることも出来る.cd ~/Open3D/examples/python/reconstruction_system/scripts python3 scripts/realsense_recorder.py --record_imgs --output_folder ../dataset/realsense/
-
パラメータファイルの変更
realsense.jsonを開く
sudo gedit /Open3D/examples/python/reconstruction_system/config/realsense.json
以下のように修正する
- "path_dataset" : 先程収集した画像データのフォルダパス
- "path_intrinsic" : 先程収集した画像データのフォルダパスに生成されたjsonパス
{ "name": "Realsense bag file", "path_dataset": "dataset/realsense", "path_intrinsic": "dataset/realsense/camera_intrinsic.json", "max_depth": 3.0, "voxel_size": 0.05, "max_depth_diff": 0.07, "preference_loop_closure_odometry": 0.1, "preference_loop_closure_registration": 5.0, "tsdf_cubic_size": 3.0, "icp_method": "color", "global_registration": "ransac", "python_multi_threading": true }
-
reconstruction_systemの実行
以下を実行する、割と時間がかかる.
cd ~/Open3D/examples/python/reconstruction_system python3 run_system.py config/realsense.json --make --register --refine --integrate
生成された3Dモデルは、画像データフォルダと同じ"dataset/realsense/scene"の中にある.
integrated.plyという名称で生成されている.
トラブルシューティング
Realsenseで取得した画像の色がおかしい
ubuntu 20.04LTS + noeticで動作したときに、エラーはでないものの画像の色が実際の色と違うことがあった.
なぜか、RGB形式に治っていないようなので、以下のように該当部分を追加修正する.
color_image = np.asanyarray(color_frame.get_data())
color_image = cv2.cvtColor(color_image, cv2.COLOR_BGR2RGB)