. 【Python】Open3Dで点群データを読み込んで表示
【Python】Open3Dで点群データを読み込んで表示
【Python】Open3Dで点群データを読み込んで表示

【Python】Open3Dで点群データを読み込んで表示

2022年12月21日2023年8月30日

目次
  • 1. はじめに
  • 2. Open3Dで扱う点群ファイルのフォーマット
  • 3. プログラム
    • 3.1. 可視化結果
    • 3.2. ptsファイルの確認
  • 4. おすすめ参考書

はじめに

Pythonの点群処理ライブラリ「Open3D」を用いて、点群ファイルを読み込みと可視化をしたいと思います。

公式のドキュメントはこちらhttp://www.open3d.org/docs/release/tutorial/geometry/file_io.html

その他ライブラリで可視化する方法も下記にまとめています。

【3D点群処理】Pythonで点群を3次元プロットして可視化する方法4選

Open3Dで扱う点群ファイルのフォーマット

フォーマット説明xyz [x, y, z]が各行に格納されている。x,y,zは位置を表す3次元座標xyzn[x, y, z, nx, ny, nz]が各行に格納されている。nx, ny, nzは法線ベクトルxyzrgbEach line contains [x, y, z, r, g, b]が各行に格納されている。r, g, bは0~1のfloatpts最初の行は点の数を表す整数。後続の行は、下記ののいずれかに従う。formats: [x, y, z, i, r, g, b], [x, y, z, r, g, b], [x, y, z, i] , [x, y, z]plyPolygon File Formatを参照。 plyファイルは点群だけでなくメッシュも格納できる。pcdPoint Cloud Dataを参照

プログラム

bunnyの点群データで試してみます。プログラムは以下の処理をしています。

「xyz」ファイル読み込み→可視化→「pts」ファイルで保存

import open3d as o3d print("Testing IO for point cloud ...") # Load saved point cloud and visualize it pcd_load = o3d.io.read_point_cloud("bunny.xyz") # Visualization in window o3d.visualization.draw_geometries([pcd_load]) # Saving point cloud o3d.io.write_point_cloud("bunny.pts", pcd_load)

読み込む"bunny.xyz"ファイルの中は各行に[x y z]が格納されています。

-0.0378290000 0.1279400000 0.0044740000 -0.0447790000 0.1288870000 0.0019040000 -0.0680090000 0.1512440000 0.0371950000 -0.0022870000 0.1301500000 0.0232200000 -0.0226050000 0.1266750000 0.0071550000 ...

可視化結果 ptsファイルの確認

新たに保存された"bunny.pts"ファイルの中は先頭行にデータ数、それ以降の行に[x y z]が格納されていることが確認できます。

30571 -0.0378290000 0.1279400000 0.0044740000 -0.0447790000 0.1288870000 0.0019040000 -0.0680090000 0.1512440000 0.0371950000 -0.0022870000 0.1301500000 0.0232200000 -0.0226050000 0.1266750000 0.0071550000

おすすめ参考書

リンク リンク 【書籍】3Dデータ/点群処理について入門から応用までの勉強方法

点群処理OPEN3D,point cloud,python,点群処理

📎📎📎📎📎📎📎📎📎📎