Open3D のインストール,Python のプログラム例
- 間引く(処理性能のアップのため)
- 法線を求める(ポリゴンのデータに変換するとき,ポリゴン同士が滑らかになるようにするための技術)
- 空間の範囲を指定して抜き出す
- 色を付ける
- オブジェクトに分ける
- 平面(壁)を抜きだす
- ポリゴンのデータに変換する(Blender などに読み込めるように変換できます)
- 点の密度を求める
【目次】
利用条件などは利用者において確認してください
- Github の Open3D の Web ページ: https://github.com/isl-org/Open3D
- Open3D の Web ページ: http://www.open3d.org/
- Open3D の 公式のドキュメント: http://www.open3d.org/docs/release/
前準備
Python のインストール(Windows上)
注:既にPython(バージョン3.12を推奨)がインストール済みの場合は,この手順は不要である.
winget(Windowsパッケージマネージャー)を使用してインストールを行う
- Windowsで,コマンドプロンプトを管理者権限で起動する(例:Windowsキーを押し,「cmd」と入力し,「管理者として実行」を選択)
- winget(Windowsパッケージマネージャー)が利用可能か確認する:
winget --version
- Pythonのインストール(下のコマンドにより Python 3.12 がインストールされる).
- Python詳細ガイド:Pythonまとめ »
【関連する外部サイト】
【サイト内の関連ページ】
Build Tools for Visual Studio 2022 (ビルドツール for Visual Studio 2022)または Visual Studio 2022 のインストール(Windows 上)
CUDAツールキットは、GPU上でコードをコンパイルするためにC++コンパイラを必要とします。そのため、事前にMicrosoft C++ Build Tools または Visual Studio (C++開発ワークロードを含む) をインストールしておく必要があります。
【インストールの判断】 Build Tools for Visual Studio は,C++コンパイラなどを含む開発ツールセットです. Visual Studio は統合開発環境であり,いくつかのエディションがあり,Build Tools for Visual Studioの機能を含むか連携して使用します.インストールは以下の基準で判断してください:
- コマンドラインからのビルドなど、C++コンパイラ機能のみが必要な場合:
- Visual Studioのエディタやデバッガなどの統合開発環境機能が必要な場合、あるいは、どちらをインストールすべきかよく分からない場合:
Visual Studio Community (または他のエディション) をインストール します.
Visual Studio 2022 をインストールする際に,「C++ によるデスクトップ開発」ワークロードを選択することで,必要なBuild Toolsの機能も一緒にインストールされます.
不明な点がある場合は,Visual Studio 全体をインストール する方が、後で機能を追加する手間が省ける場合があります.
Build Tools for Visual Studio 2022 のインストール(Windows 上)
- Windows で,コマンドプロンプトを管理者権限で起動します(例:Windowsキーを押し,「cmd」と入力し,「管理者として実行」を選択)。
以下の
winget
コマンドを実行します。winget
はWindows標準のパッケージマネージャーです。--scope machine
オプションはシステム全体にインストールすることを意味します。次のコマンドは,Build Tools for Visual Studio 2022と、多くのプログラムで必要とされるVC++ 2015以降の再頒布可能パッケージをインストールします.
- Build Tools for Visual Studio 2022 で C++ によるデスクトップ開発関連コンポーネントのインストール
CUDA開発には、標準のC++開発ツールに加えて、特定のコンポーネントが必要になる場合があります。
- Visual Studio Installer を起動します。
起動方法: スタートメニューから「Visual Studio Installer」を探して実行します.
- Visual Studio Build Tools 2022 の項目で「変更」ボタンをクリックします.
- 「ワークロード」タブで「C++ によるデスクトップ開発」をクリックして選択します。画面右側の「インストールの詳細」で、必要に応じて「v143 ビルドツール用 C++/CLI サポート(最新)」、「ATL」、「MFC」などをチェックします(これらは一般的なC++開発や特定のプロジェクトタイプで必要になる場合があります)。その後、「変更」をクリックしてインストールまたは変更を適用します.
- Visual Studio Installer を起動します。
Visual Studio Community 2022 のインストール(Windows 上)
- Windows で,コマンドプロンプトを管理者権限で起動します。
- インストールコマンドの実行
以下の
winget
コマンドを実行します。--override "--add ..."
部分で、インストールするワークロードやコンポーネントを指定しています。winget install Microsoft.VisualStudio.2022.Community --scope machine --override "--add Microsoft.VisualStudio.Workload.NativeDesktop Microsoft.VisualStudio.ComponentGroup.NativeDesktop.Core Microsoft.VisualStudio.Component.VC.CLI.Support Microsoft.VisualStudio.Component.CoreEditor Microsoft.VisualStudio.Component.NuGet Microsoft.VisualStudio.Component.Roslyn.Compiler Microsoft.VisualStudio.Component.TextTemplating Microsoft.VisualStudio.Component.Windows.SDK.Latest Microsoft.VisualStudio.Component.VC.Tools.x86.x64 Microsoft.VisualStudio.Component.VC.ATL Microsoft.VisualStudio.Component.VC.ATLMFC" winget install Microsoft.VisualStudio.2022.Community --scope machine Microsoft.VCRedist.2015+.x64
インストールされる主要なコンポーネントの説明:
NativeDesktop
(C++によるデスクトップ開発): CUDA開発に必要なC++コンパイラ(VC.Tools.x86.x64
)やWindows SDK (Windows.SDK.Latest
)など、基本的な開発ツール一式を含みます。CoreEditor
: Visual Studioの基本的なコードエディタ機能を提供します。VC.CLI.Support
: C++/CLIを用いた開発サポート(通常、純粋なCUDA C++開発では不要な場合もあります)。NuGet
: .NETライブラリ管理用(C++プロジェクトでも利用されることがあります)。VC.ATL
/VC.ATLMFC
: 特定のWindowsアプリケーション開発フレームワーク(通常、CUDA開発自体には直接必要ありません)。
システム要件と注意事項:
- 管理者権限でのインストールが必須です。
- 必要ディスク容量:10GB以上(選択するコンポーネントにより変動)。
- 推奨メモリ:8GB以上のRAM。
- インストール過程でシステムの再起動が要求される可能性があります。
- 安定したインターネット接続環境が必要です。
後から追加のコンポーネントが必要になった場合は,Visual Studio Installerを使用して個別にインストールすることが可能です.
- インストール完了の確認
インストールが成功したか確認するには、管理者権限のコマンドプロンプトで以下のコマンドを実行します。
winget list Microsoft.VisualStudio.2022.Community
リストに表示されればインストールされています。
トラブルシューティング:
インストール失敗時は,以下のログファイルを確認すると原因究明の手がかりになります:
%TEMP%\dd_setup_
.log %TEMP%\dd_bootstrapper_ .log (
は実行日時に対応する文字列) - (オプション) Visual Studio Installer での確認と変更
winget
でのインストール後も、Visual Studio Installerを使ってインストール内容を確認・変更できます。- Visual Studio Installer を起動します。
- Visual Studio Community 2022 の項目で「変更」をクリックします。
- 「ワークロード」タブで「C++ によるデスクトップ開発」がチェックされていることを確認します。必要であれば、「個別のコンポーネント」タブで特定のツール(例: 特定バージョンのMSVCコンパイラ、CMakeツールなど)を追加・削除できます。「インストールの詳細」で「v143 ビルドツール用 C++/CLI サポート(最新)」などが選択されているかも確認できます。変更後、「変更」または「インストール」をクリックします。
Git のインストール(Windows 上)
Gitは,バージョン管理システム.ソースコードの管理や複数人での共同に役立つ.
【サイト内の関連ページ】 Windows での Git のインストール: 別ページ »で説明
【関連する外部ページ】 Git の公式ページ: https://git-scm.com/
CMake のインストール
CMake の公式ダウンロードページ: https://cmake.org/download/
Open3D のインストール(Windows 上)
http://www.open3d.org/docs/release/compilation.html に記載の手順による.
Windows での Open3D のインストール
- Windows で,コマンドプロンプトを管理者権限で起動する(例:Windowsキーを押し,「cmd」と入力し,「管理者として実行」を選択)
- pip を用いて,Open3D のインストール
python -m pip install -U open3d
- バージョンの確認
次のコマンドを実行.「Version」の右に表示されるバージョンを確認.
python -m pip show open3d
関連ファイルのインストールを行いたいので,下に書いた手順を進める.
- Open3D 関連ファイルのインストール
エラーを回避するために「/utf-8」を設定.
python -m pip install -U --ignore-installed numpy scikit-image cd %LOCALAPPDATA% rmdir /s /q Open3D git clone --recursive https://github.com/isl-org/Open3D cd Open3D del CMakeCache.txt rmdir /s /q CMakeFiles\ cmake -G "Visual Studio 17 2022" -A x64 -T host=x64 ^ -DCMAKE_C_FLAGS="/DWIN32 /D_WINDOWS /W0 /utf-8" ^ -DCMAKE_CXX_FLAGS="/DWIN32 /D_WINDOWS /GR /EHsc /W0 /utf-8" ^ -DCMAKE_INSTALL_PREFIX="c:/Open3D" . cmake --build . --config Release --target ALL_BUILD cmake --build . --config Release --target INSTALL
- 確認のため Open3DViewer を起動してみる.
起動ができれば OK とする.
%LOCALAPPDATA%\Open3D\bin\Open3D\Release\Open3DViewer.exe
- Open3D-ML 関連ファイルのインストール
次のコマンドを実行する.
cd %LOCALAPPDATA% rmdir /s /q Open3D-ML git clone --recursive https://github.com/isl-org/Open3D-ML cd Open3D-ML python -m pip install -r requirements.txt python -m pip install -r requirements-torch.txt
Ubuntu での Open3D のインストール
- 端末を開く
- pip を用いて,Open3D のインストール
sudo pip3 install -U open3d
- バージョンの確認
次のコマンドを実行.「Version」の右に表示されるバージョンを確認.
pip3 show open3d
以降,関連ファイルのインストールを行いたいので,下に書いた手順を進める.
- cmake のインストール: 別ページ で説明している.
- Open3D 関連ファイルのインストール
次のコマンドを実行する.
git clone では「-b v0.13.0」のようにバージョンを指定する.このバージョンは, さきほど「pip3 show open3d」で確認したバージョンに一致させること.
sudo apt -y update sudo apt -y install build-essential gcc g++ make sudo apt -y install git sudo pip3 install -U numpy scikit-image sudo mkdir /usr/local cd /usr/local sudo rm -rf Open3D sudo git clone -b v0.13.0 --recursive https://github.com/isl-org/Open3D sudo chown -R $USER Open3D cd Open3D git switch - yes | bash util/install_deps_ubuntu.sh rm -f CMakeCache.txt /usr/local/bin/cmake -DCMAKE_INSTALL_PREFIX=/usr/local . make sudo make install
- NVIDIA ドライバ,NVIDIA CUDA ツールキット 11.5,NVIDIA cuDNN v8 のインストール: 別ページ »で説明
- Open3D-ML 関連ファイルのインストール
次のコマンドを実行する.
git clone では「-b r0.13.0」のようにバージョンを指定する.このバージョンは, さきほど「pip3 show open3d」で確認したバージョンに一致させること.
cd /usr/local sudo rm -rf Open3D-ML sudo git clone --recursive -b r0.13.0 https://github.com/isl-org/Open3D-ML sudo chown -R $USER Open3D sudo chown -R $USER Open3D-ML cd Open3D-ML git switch - sudo pip3 install -r requirements.txt sudo pip3 install -r requirements-tensorflow.txt sudo pip3 install -r requirements-torch.txt sudo pip3 install -U numpy chumpy json-tricks munkres xtcocotools yapf cd ../Open3D rm -f CMakeCache.txt /usr/local/bin/cmake \ -DBUILD_PYTORCH_OPS=ON \ -DBUILD_TENSORFLOW_OPS=ON \ -DBUNDLE_OPEN3D_ML=ON \ -DOPEN3D_ML_ROOT=/usr/local/Open3D-ML \ -DGLIBCXX_USE_CXX11_ABI=OFF \ -DCMAKE_INSTALL_PREFIX=/usr/local . make sudo make install
Open3D に付属の Python のプログラムを動かしてみる(Python を使用)
- カレントディレクトリの移動
Windows では 「cd %LOCALAPPDATA%\Open3D\docs\jupyter」
Ubuntu では 「cd /usr/local/Open3D/docs/jupyter」
- Python プログラムの実行
pointcloud.ipynb に記載の Python プログラムを実行
- 準備
import open3d as o3d import numpy as np import matplotlib.pyplot as plt import copy import os import sys # only needed for tutorial, monkey patches visualization sys.path.append('..') import open3d_tutorial as o3dtut # change to True if you want to interact with the visualization windows o3dtut.interactive = not "CI" in os.environ
Windows での実行結果を示す.
- 表示
print("Load a ply point cloud, print it, and render it") pcd = o3d.io.read_point_cloud("../../examples/test_data/fragment.ply") print(pcd) print(np.asarray(pcd.points)) o3d.visualization.draw_geometries([pcd], zoom=0.3412, front=[0.4257, -0.2125, -0.8795], lookat=[2.6172, 2.0475, 1.532], up=[-0.0694, -0.9768, 0.2024])
Windows での実行結果を示す.
- ダウンサンプリング
print("Downsample the point cloud with a voxel of 0.05") downpcd = pcd.voxel_down_sample(voxel_size=0.05) o3d.visualization.draw_geometries([downpcd], zoom=0.3412, front=[0.4257, -0.2125, -0.8795], lookat=[2.6172, 2.0475, 1.532], up=[-0.0694, -0.9768, 0.2024])
Windows での実行結果を示す.
- Convex hull
bunny = o3d.data.BunnyMesh() mesh = o3d.io.read_triangle_mesh(bunny.path) mesh.compute_vertex_normals() pcl = mesh.sample_points_poisson_disk(number_of_points=2000) hull, _ = pcl.compute_convex_hull() hull_ls = o3d.geometry.LineSet.create_from_triangle_mesh(hull) hull_ls.paint_uniform_color((1, 0, 0)) o3d.visualization.draw_geometries([pcl, hull_ls]) pcl = o3dtut.get_bunny_mesh().sample_points_poisson_disk(number_of_points=2000) hull, _ = pcl.compute_convex_hull() hull_ls = o3d.geometry.LineSet.create_from_triangle_mesh(hull) hull_ls.paint_uniform_color((1, 0, 0)) o3d.visualization.draw_geometries([pcl, hull_ls])
Windows での実行結果を示す.
- DBSCAN クラスタリング
pcd = o3d.io.read_point_cloud("../../examples/test_data/fragment.ply") with o3d.utility.VerbosityContextManager( o3d.utility.VerbosityLevel.Debug) as cm: labels = np.array( pcd.cluster_dbscan(eps=0.02, min_points=10, print_progress=True)) max_label = labels.max() print(f"point cloud has {max_label + 1} clusters") colors = plt.get_cmap("tab20")(labels / (max_label if max_label > 0 else 1)) colors[labels < 0] = 0 pcd.colors = o3d.utility.Vector3dVector(colors[:, :3]) o3d.visualization.draw_geometries([pcd], zoom=0.455, front=[-0.4999, -0.1659, -0.8499], lookat=[2.1813, 2.0619, 2.0999], up=[0.1204, -0.9852, 0.1215])
Windows での実行結果を示す.
- 平面のセグメンテーション
pcd = o3d.io.read_point_cloud("../../examples/test_data/fragment.pcd") plane_model, inliers = pcd.segment_plane(distance_threshold=0.01, ransac_n=3, num_iterations=1000) [a, b, c, d] = plane_model print(f"Plane equation: {a:.2f}x + {b:.2f}y + {c:.2f}z + {d:.2f} = 0") inlier_cloud = pcd.select_by_index(inliers) inlier_cloud.paint_uniform_color([1.0, 0, 0]) outlier_cloud = pcd.select_by_index(inliers, invert=True) o3d.visualization.draw_geometries([inlier_cloud, outlier_cloud], zoom=0.8, front=[-0.4999, -0.1659, -0.8499], lookat=[2.1813, 2.0619, 2.0999], up=[0.1204, -0.9852, 0.1215])
Windows での実行結果を示す.
- 準備