0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Open3D で Voxel する

Posted at

Open3D の点群を Voxel にする

Voxel はいわゆるマイクラみたいな感じです!

まずは普通に読み込み

import open3d as o3d
import numpy as np

pcd = o3d.io.read_point_cloud("vase.xyz")
o3d.visualization.draw_geometries([pcd])

image.png

Voxel 化してみる

import open3d as o3d
import numpy as np

pcd = o3d.io.read_point_cloud("vase.xyz")

voxel = o3d.geometry.VoxelGrid.create_from_point_cloud(pcd, 0.15)
o3d.visualization.draw_geometries([voxel])

お?黒い??ボクセル化してるっぽいけど真っ黒でよくわかりません。

image.png

色を付ける

# Voxel

import open3d as o3d
import numpy as np

pcd = o3d.io.read_point_cloud("vase.xyz")

xyz = np.asarray(pcd.points)
o = 2
c_min, c_max = np.min(xyz[:,o]), np.max(xyz[:,o])
if abs(c_min) < abs(c_max):
    max = abs(c_max)
else:
    max = abs(c_min)
pcd.colors = o3d.utility.Vector3dVector( [np.ones(3) * (abs(z)/max) for z in xyz[:,o]] )

voxel = o3d.geometry.VoxelGrid.create_from_point_cloud(pcd, 0.15)
o3d.visualization.draw_geometries([voxel])

Z軸をもとにグレイスケールで色をつけてみる。
ボクセル化されてる!

image.png

座標を取り出す

voxel = o3d.geometry.VoxelGrid.create_from_point_cloud(pcd, 0.15)

voxels = voxel.get_voxels()
print(voxels[0].grid_index)
print(voxels[0].color)

voxels_b = voxel.get_voxel_bounding_points([4,0,1])
print(np.asarray(voxels_b))

ボクセル化しておわりともいかないので座標を取り出す方法。

get_voxels() でボクセルの情報が取り出せます。
grid_index で座標がとりだせます。座標と言うかグリッド(方眼紙)の位置というか。
color ではそこの色がとりだせます。

# voxels[0].grid_index
[4 0 1]

# voxels[0].color
[0.21738366 0.21738366 0.21738366]

get_voxel_bounding_points() で実際の座標が取り出せます。
いわゆるキューブ(立方体・サイコロ)なので8点の座標がとりだせます。

grid_indexget_voxel_bounding_points を組み合わせることでボクセル化した座標が全て取り出せるので活用範囲が広がります!

# voxel.get_voxel_bounding_points([4,0,1])
[[ 0.525 -0.075  0.075]
 [ 0.525 -0.075  0.225]
 [ 0.675 -0.075  0.075]
 [ 0.675 -0.075  0.225]
 [ 0.525  0.075  0.075]
 [ 0.525  0.075  0.225]
 [ 0.675  0.075  0.075]
 [ 0.675  0.075  0.225]]
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?