今回は3Dデータ処理のためにOpen3Dの環境構築をしてみたいと思います。
このOpen3DはIntel Labsから2018年に論文がArXivに公開されているように比較的新しいライブラリなのですが、3Dデータ処理が可能なライブラリとなっています。
外部ページ:
論文(Open3D: A Modern Library for 3D Data Processing)
あまり詳細を読み込めていませんが、3D点群やポリゴンデータの処理用途のライブラリのようで、最近界隈では耳にすることが多くなってきました。
元々この分野のライブラリだとPCL(Point Cloud Library)が有名で、過去に環境構築の方法などを紹介したことがありますが、依存ライブラリとかが多くて扱いがめんどくさかったりもして、Open3Dはその辺が割とクリアで使いやすいという噂です。PCLは以下の記事などをご参考にしてください。
今回はこのOpen3Dを使ってみようという記事になります。
C++とPython対応なのですが、Pythonが楽そうということもあり、今回はPython版を選択しました。
Githubによると、Windows10であればプレビルド版が提供されており、面倒なビルド手順を踏むことなく簡単に導入できそうです。
今回はAnacondaでOpen3D用の仮想環境を作ってやってみたいと思います。
こちらのGithubによると、以下の通りPython3.8までサポートしてるっぽいことが書いてあるんですが、Python3.7と3.8で実施したところ、「AssertionError: SRE module mismatch」のエラーが出てしまったので、Python3.6にしたところ上手くいきました。
Pre-built pip and conda packages support Ubuntu 18.04+, macOS 10.14+ and Windows 10 (64-bit) with Python 3.5, 3.6, 3.7 and 3.8. If you have other Python versions or operating systems, please compile Open3D from source.
github.com/intel-isl/Open3D(新しいタブで開く)
(プレビルド版はWindows10でPython3.5~3.8をサポートしている。他のPythonバージョンやOSの場合にはソースからコンパイルが必要)
Pipでインストールする場合は以下のようにすればインストールが可能です。
$ pip install open3d
また、Condaでインストールする場合は以下になるようです。
$ conda install -c open3d-admin open3d
今回はCondaでインストールするので「conda install -c open3d-admin open3d」でインストールしました。
インストールの手順と、使用したコマンドは以下です。
下図のようにAnaconda Promptを開いて、Prompt上で順にコマンドを実行しました。Anaconda PromptはAnacondaをインストールしていれば、検索して開くことが可能です。
その後はAnaconda Prompt上で以下のコマンドを実行しました。
(1) 仮想環境「open3d_env」の作成
$ conda create -n open3d_env Python=3.6 anaconda
(2) 仮想環境「open3d_env」のアクティベート
$ activate open3d_env
(3) 仮想環境下にOpen3Dをインストール
$ conda install -c open3d-admin open3d
(4) インストールを確認
$ python -c "import open3d as o3d"
(4)を実施して何もErrorとかがコンソールに表示されなければ上手くいっていると思います。これにて環境構築は完了となります。
それでは、実際にサンプルコードを実行していきましょう。
先ほどのGithubで提供されているデータの中に、examplesというサンプルコード(及び実行用の入力データ)が含まれたフォルダがあるので、まずはGitで適当なフォルダにデータをクローンしてきました。
git clone --recursive https://github.com/intel-isl/Open3D
あとは、ダウンロードしてきたフォルダの中のOpen3D -> examples -> pythonの中にサンプルコードがあるので適当に実行してみましょう。
ここではAdvancedフォルダの中にある「mesh_deformation.py」を実行してみました。
実行したところ、結果としてOpen3DというWindowに以下のようなポリゴンモデルが表示されました。
処理の意味までは追っていませんが、実現したい処理に近いサンプルコードを探して、それを使っていくのが良さそうです。
今回はOpen3Dでサンプルコードを実行しましたが、PCLと比較すると導入がかなり楽ですね。
機能面ではどちらが優位なのかについてはまだよくわかっていないので、引き続き調査したいと思います。
Open3Dでの点群処理などについては以下の記事などをご参照ください。