【Python】Open3Dで点群データを読み込んで表示
はじめに
Pythonの点群処理ライブラリ「Open3D」を用いて、点群ファイルを読み込みと可視化をしたいと思います。
公式のドキュメントはこちら
http://www.open3d.org/docs/release/tutorial/geometry/file_io.html
その他ライブラリで可視化する方法も下記にまとめています。
Open3Dで扱う点群ファイルのフォーマット
フォーマット | 説明 |
---|---|
xyz | [x, y, z] が各行に格納されている。x,y,zは位置を表す3次元座標 |
xyzn | [x, y, z, nx, ny, nz] が各行に格納されている。nx , ny , nz は法線ベクトル |
xyzrgb | Each line contains [x, y, z, r, g, b] が各行に格納されている。r , g , b は0~1のfloat |
pts | 最初の行は点の数を表す整数。後続の行は、下記ののいずれかに従う。formats: [x, y, z, i, r, g, b] , [x, y, z, r, g, b] , [x, y, z, i] , [x, y, z] |
ply | Polygon File Formatを参照。 plyファイルは点群だけでなくメッシュも格納できる。 |
pcd | Point 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
おすすめ参考書
リンク
リンク
ディスカッション
コメント一覧
まだ、コメントがありません