建設業界は現在、デジタルトランスフォーメーション(DX)の波に乗り、大きな変革の時を迎えています。その中心にあるのが、Open3Dという強力な技術です。
このブログでは、Open3Dを利用した技術革新がどのように建設業界の未来を切り拓いているのかを探ります。
Open3Dで点群数を削減する(ダウンサンプリング)デモンストレーションも少し紹介します。
Open3Dは、3Dデータ処理と視覚化のためのオープンソースライブラリであり、特に点群データの処理においてその力を発揮します。
点群データは、建設現場の3Dスキャンから得られる膨大な情報を含んでおり、これを効率的に処理・分析することで、設計から施工、メンテナンスに至るまでの各フェーズでの意思決定を支援します。
当社は、このOpen3Dを駆使した技術革新の最前線に立ち、建設業界のDX推進に貢献しています。
本ブログを通じて、Open3Dが建設業界にもたらす可能性と、我々が提供する革新的なソリューションについて、皆さんにお届けしたいと思います。
3次元点群処理とは?
3次元点群処理は、リアルな3次元データを生成し、解析する技術です。この技術は、特に建設業界で広く活用されています。建設会社がこの技術を利用する目的としては、精度の高い測量やデジタルアーカイブの作成、環境シミュレーションなどがあります。
受注時および設計段階での活用 この段階では、デジタルアーカイブの作成、3D模型製作、形状復元、現地調査などに使用されます。寸法確認や測量、さらには環境シミュレーションにも役立ち、計画の正確性を大幅に向上させることができます。
施工段階での利用 施工図の反映、施工計画の策定、数量算出、プレカット加工など、施工段階においても点群処理は重要な役割を果たします。品質管理や検査、さらにはロボット技術の目としても活用されることで、効率的かつ精密な建設作業を支援します。
竣工後および一般向け利用 竣工後の建築物に対しては、利用者向けの映像コンテンツ作成や展示コンテンツの制作、動画制作など、多様な分野で利用されます。これにより、建築物の魅力を一般の人々にも分かりやすく伝えることが可能になります。
3次元点群処理は、これらの多岐にわたる用途で建設業界の効率化と品質向上に大きく貢献しています。
Python
PythonはAI(人工知能)や機械学習の開発において、その柔軟性とパワフルなライブラリにより、特に注目を集めています。この言語は数値計算や統計処理に優れており、3次元点群処理を含む様々な応用分野で利用されています。
点群処理用ライブラリ Pythonには、点群処理をサポートする多くのライブラリがあります。代表的なものには以下があります。
- Open3D: 3Dデータ処理と可視化のための強力なツール。
- Python-PCL (Point Cloud Library): 大規模な点群処理に対応。
- Pyntcloud: Pythonでの点群分析や処理を容易にする。
これらのライブラリにより、点群データの処理、分析、可視化が簡単かつ効率的に行えます。
機械学習・ディープラーニング用ライブラリ 3次元点群データの機械学習やディープラーニングへの応用には、以下のライブラリが有効です。
- Open3D-ML: 点群データの機械学習をサポート。
- torch-points3d: PyTorchベースの3D点群処理。
- MMDetection3D: 多様な3D検出タスク用フレームワーク。
これらを使用することで、より高度な分析や予測が可能になります。
Open3Dの基本概念
Open3Dは、3Dデータ処理と視覚化を目的とした強力なオープンソースライブラリです。このツールは、特に点群データの処理、3Dモデリング、データ変換などにおいてその力を発揮します。
Open3Dの開発には、テクノロジー巨人インテルが深く関与しています。インテルは、このライブラリを通じて、高度な3Dデータ処理技術と視覚化ツールを提供し、建設業界などの産業におけるデジタルトランスフォーメーション(DX)を加速することを目指しています。
プログラミングの面では、Open3DはPythonとC++の両方で利用可能です。Pythonの直感的な構文と豊富なライブラリにより、データサイエンスや機械学習の分野で幅広く使われています。また、C++の高いパフォーマンスは、大規模なデータセットの処理やパフォーマンスに敏感なアプリケーションに適しています。
加えて、Open3DはTensorFlowやPyTorchといった先進的な機械学習ライブラリとの連携もサポートしています。これにより、点群データの分析や3Dオブジェクトの認識など、高度な機能の実現が可能になります。
このように、PythonやC++での利用可能性、TensorFlowやPyTorchとの連携、そしてインテルの支援により、Open3Dは産業界、特に建設業界におけるDX推進の重要なツールとなっています。
Open3Dでできる主なこと
-
ポイントクラウド処理:
-
ノイズ除去、サンプリング、ダウンサンプリング、フィルタリング。
-
-
メッシュ処理:
-
ボクセル処理:
-
RGB-Dデータ処理:
-
ビジュアライゼーション:
-
幾何計算:
-
高度なアルゴリズム:
-
機械学習のサポート:
色々できそうですが今回はダウンサンプリングを紹介します。
Open3Dで点群数を減らすダウンサンプリングの手順
-
フリーのPLYファイルを探す
-
macのローカルでvscodeで実施
-
Open3Dをインストール
-
vscodeでコーディング
フリーのPLYファイルを探す
フリーのPLYを探しました。これはMeshlabで表示しています。
PLYファイルでポイントクラウド数を表示
import open3d as o3d
try:
# PLYファイルを読み込む
pcd = o3d.io.read_point_cloud("/Users/kawamotonaoki/Desktop/motorbike-ply/Motorbike_ply.ply")
# ポイントクラウドのポイント数を取得
num_points = len(pcd.points)
print(f"Number of points in the point cloud: {num_points}")
except Exception as e:
print(f"An error occurred: {e}")
python check_point_cloud.py
結果 520245
Number of points in the point cloud: 520245
ボクセルサイズとポイントクラウドの関係
ポイントクラウドは、3D空間内の多数の点(ポイント)で物体の表面を表現する方法
ボクセル(voxel)は「volume element(体積要素)」の略で、3D空間を小さな立方体(グリッド)に分割して表現する方法
-
ボクセルサイズが小さい:ポイントクラウドの各ボクセル(立方体セル)のサイズが小さくなると、同じ空間内により多くのボクセルが配置されるため、ポイントクラウド内のポイント数はあまり減らない
-
ボクセルサイズが大きい:ボクセルのサイズが大きくなると、同じ空間内に配置されるボクセルの数が減少するため、ポイントクラウド内のポイント数は大幅に減る
次にMotorbike_ply_plyをpythonで表示してみる
import open3d as o3d
# PLYファイルを読み込む
pcd = o3d.io.read_point_cloud("/Users/kawamotonaoki/Desktop/motorbike-ply/Motorbike_ply.ply")
# ポイントクラウドを可視化する
o3d.visualization.draw_geometries([pcd],
zoom=0.5,
front=[0.0, 0.0, -1.0],
lookat=[0.0, 0.0, 0.0],
up=[0.0, 1.0, 0.0])
python display_point_cloud.py
open3dのウィンドウ
拡大
Open3Dでダウンサンプリング
import open3d as o3d
# PLYファイルを読み込む
pcd = o3d.io.read_point_cloud("/Users/kawamotonaoki/Desktop/motorbike-ply/Motorbike_ply.ply")
# ダウンサンプリングする(ボクセルサイズを指定)
voxel_size = 0.02 # 例:0.02メートルのボクセルサイズ
downsampled_pcd = pcd.voxel_down_sample(voxel_size)
# オリジナルのポイントクラウドのポイント数を取得
original_num_points = len(pcd.points)
print(f"Number of points in the original point cloud: {original_num_points}")
# ダウンサンプリングされたポイントクラウドのポイント数を取得
downsampled_num_points = len(downsampled_pcd.points)
print(f"Number of points in the downsampled point cloud: {downsampled_num_points}")
# ダウンサンプリングされたポイントクラウドを保存する
o3d.io.write_point_cloud("Motorbike_downsampled_file.ply", downsampled_pcd)
# ダウンサンプリングされたポイントクラウドを可視化する
o3d.visualization.draw_geometries([downsampled_pcd],
zoom=0.5,
front=[0.0, 0.0, -1.0],
lookat=[0.0, -1.0, 0.0], # -1.0の値を調整して下の方に表示
up=[0.0, 1.0, 0.0])
結果:あまり変わらない
python downsample_point_cloud.py
Number of points in the original point cloud: 520245
Number of points in the downsampled point cloud: 520244
もっと減らす
voxel_size = 100.0 ボクセルサイズで調整できるらしい多く減らした場合はこの値を大きくする
ボクセルのサイズが大きくなると、同じ空間内に配置されるボクセルの数が減少するため、ポイントクラウド内のポイント数は大幅に減る
downsample_point_cloud.pyファイルを更新
import open3d as o3d
# PLYファイルを読み込む
pcd = o3d.io.read_point_cloud("/Users/kawamotonaoki/Desktop/motorbike-ply/Motorbike_ply.ply")
# オリジナルのポイントクラウドのポイント数を取得
original_num_points = len(pcd.points)
print(f"Number of points in the original point cloud: {original_num_points}")
# ダウンサンプリングする(ボクセルサイズを指定)
voxel_size = 10.0 # ボクセルサイズを大きく設定
downsampled_pcd = pcd.voxel_down_sample(voxel_size)
# ダウンサンプリングされたポイントクラウドのポイント数を取得
downsampled_num_points = len(downsampled_pcd.points)
print(f"Number of points in the downsampled point cloud: {downsampled_num_points}")
# ダウンサンプリングされたポイントクラウドを保存する
o3d.io.write_point_cloud("Motorbike_downsampled_file.ply", downsampled_pcd)
# ダウンサンプリングされたポイントクラウドを可視化する
o3d.visualization.draw_geometries([pcd],
zoom=0.5,
front=[0.0, 0.0, -1.0],
lookat=[0.0, -1.0, 0.0],
up=[0.0, 1.0, 0.0])
voxel_size = 100.0
python downsample_point_cloud.py
Number of points in the original point cloud: 520245
Number of points in the downsampled point cloud: 799
voxel_size = 100.0 point cloud = 799
Open3DでPLYファイルのポイントクラウドの数を減らすことができました。
Number of points in the original point cloud: 520245
Number of points in the downsampled point cloud: 799
上記の場合サイズも44MBから19KBへ小さくなりました。
今後点群データを適切にWEBで表示したり加工編集したりする活用方法が見込まれます。
これはOpen3Dの一部ですがライブラリを使うと手軽に点群を処理することができます。
建設業界におけるXR技術の進展
建設業界では、XR(拡張現実)技術が急速に進化し、プロジェクトの直感的な確認や表現が可能になっています。
AR(拡張現実)、VR(仮想現実)、Web3Dを通じて、建設プロジェクトはより視覚的で理解しやすい形で展開されます。
Open3Dの活用は、この分野で重要な役割を果たしており、複雑な点群データを効率的に処理し、リアルタイムで3Dモデルを生成することができます。
この技術の進展は、建設業界におけるデジタルツインの概念の実現にも寄与しています。
デジタルツインは、物理的な建設プロジェクトの正確なデジタル複製を作成し、それをリアルタイムで更新し続けることを指します。
これにより、建設プロジェクトの計画、実行、管理が、これまでにない精度と効率で行えるようになります。ARやVRの技術は、このデジタルツインの環境を直感的に探索し、理解するのに役立ちます。
Open3Dの強力な3Dデータ処理能力は、デジタルツインの作成と維持において中心的な役割を果たし、建設業界のプロジェクト管理と運営を根本的に変革しています。
成功事例と具体的な応用方法
LeafmapとOpen3Dの利用例:
- 掛川城の大規模点群データ(5GB)をPythonで可視化した事例。
- Leafmapは、Pythonのコードを一行書くだけでインタラクティブな地図アプリを作成できるツール。
- このプロジェクトでは、LeafmapとOpen3Dを組み合わせて、大規模な点群データを効率的に処理し、可視化した。
- 処理されたデータは、1.9億ポイントの点群で構成されており、laspyというパッケージのインスタンスとして管理される。
- 可視化プロセスには、点群データの間引きや色情報の統合などが含まれている。
- 最終的に、Open3Dで3Dデータのジオメトリを作成し、点群が持つ本来の色で可視化された。
この事例は、建設業界におけるデジタルツインやXR技術の進展において、実際の地理情報を詳細に可視化し、解析する際の参考となります。
参照:https://qiita.com/nokonoko_1203/items/63e00d279cf7efb5521d
まとめと当社の紹介
建設業界におけるデジタルトランスフォーメーション(DX)の核心は、点群データの活用にあります。点群を基に3D情報を人間にわかりやすい形で可視化することが重要で、その一例がBIM(ビルディング・インフォメーション・モデリング)です。
この可視化の手段としてXR技術が用いられます。Open3Dはこのプロセスにおいて欠かせない技術としての役割を果たしています。
私たちの会社は、空間情報技術と建設業界への投資を行っており、これらの最先端技術の活用により、建設業界のプロジェクトをより効率的で革新的なものに変えていきます。
Open3Dのような先進的なツールを活用し、建設業界のDXを推進することで、我々は業界の未来を形作る一翼を担っています。
補足:用語解説
- 点群データ(Point Cloud Data): 3Dスキャン技術によって取得される、空間内の点の集合。物体や環境の3Dモデルを作成するために使用される。
- BIM(ビルディング・インフォメーション・モデリング): 建築物の設計、建設、運用を支援するためのプロセス。3Dモデルを用いて建物の物理的および機能的特性をデジタルで表現する。
- XR(拡張現実): AR(拡張現実)とVR(仮想現実)を含む、現実と仮想の融合した体験を指す総称。
- Open3D: 3Dデータの処理と視覚化を行うオープンソースライブラリ。点群データの分析や3Dモデリングに広く使用される。
- デジタルツイン: 物理的なオブジェクトやシステムのデジタル複製。リアルタイムでデータを同期し、より効果的な分析や予測を行う。
これらの用語は、建設業界におけるデジタル技術の理解において重要な概念です。
空間コンピューティング用語集:SPATIAL COMPUTINGの未来を理解する
- BIM 6DとBIM 7Dの活用: 持続可能な建設管理へのアプローチ
- 【BIM/CIMの原則適用とは?】建設業界のDXと今後の展望
- DWGとDXFって何?BIM・CADソフトで利用するデータ形式の違いを解説
- BIMオペレーターの進化: 建設DXとi-constructionによる未来の建設技術
- 建設業のデジタル変革をリードするIFC.jsとは?ブラウザで実現する共有の未来
- 建設・建築業の人気BIMソフト5選!おすすめのファイル共有拡張子も紹介
- 建設・工事現場向けのおすすめ写真管理アプリ3選!
- 建設2025年問題とCONTECH(コンテック)の融合
- 建築用のCADソフト「Revit」と「AutoCAD」を徹底解説!
- i-Constructionとは?国土交通省が推進する取り組みや事例をわかりやすく解説