【发布时间】:2022-01-07 22:47:42
【问题描述】:
我有一个 3D 生成的车辆体素模型,体素的坐标位于车辆参考系中。原点位于地板的中心。看起来是这样的:
数组([[-2.88783681, -0.79596956, 0.],
[-2.8752784 -0.79596956, 0.],
[-2.86271998, -0.79596956, 0.],
...,
[ 2.83880176, 0.89941685, 1.98423003],
[ 2.85136017, 0.89941685, 1.98423003],
[2.86391859, 0.89941685, 1.98423003]])
然后我创建一个 0 和 1 的网格
ux = np.unique (voxels[:,0])
uy = np.unique (voxels[:,1])
uz = np. unique (voxels[:,2])
X, Y, Z = np.meshgrid(ux, uy, uz)
V = np.zeros(X. shape)
N = voxels.shape [0]
for ii in range(n):
ix = ux == voxels[ii,]
iy = uy == voxels[ii, 1]
iz = uz == voxels[ii,2]
V[iy, ix, iz] = 1
然后我调用marching cubes算法来生成体素模型的网格。
marching_cubes = measure.marching_cubes_lewiner (v, o, spacing=(voxel_size, voxel_size, voxel_size))
verts = marching_cubes[0]
faces = marching cubes[1]
normals = marching_cubes[2]
当我打印出顶点时,坐标是这样的:
数组([[2.78852894e-18, 4.39544627e-01, 3.39077284e-01),
[1.25584179-02, 4.39544627e-01, 3.26518866e-01],
[1.25584179-02, 4.26986209e-01, 3.39077284e-01],
[1.72050325e+00, 1.26840021e+00, 2.76285194-01],
[1.72050325e+00, 1.26840021e+00, 2.88843612e-01],
[1.72050325e+00, 1.26840021e+00, 3.014020302-01]])
在documentation 中,它说 verts 只不过是“V 个唯一网格顶点的空间坐标”。但是坐标是什么意思?它在什么坐标系中?
我计划将网格投影到生成体素模型的车辆图像上。在这种情况下如何进行坐标转换? (我已经成功地将体素投影到图像上)
【问题讨论】:
标签: python numpy scikit-learn marching-cubes