【点云】python: 关于点云的一些基本处理

发布时间:2026/10/22 1:01:14
【点云】python: 关于点云的一些基本处理 这些可以作为点云处理的一些函数,LZ在此归纳了一下, 当然matlab或者c版本也都行,最近在用Python,就用Python写的.通常拿到一个mesh或者一些立体数据,存在的模式可能是点云,体素,可能是.off, .ply, .txt各种形式其实是可以相互转换的.下面举个例子# 我们先随机生成一些数字,作为点云输入,为了减少物体尺度的问题,#通常会将点云缩到半径为1的球体中#为了方便起见,LZ把batch_size改成1point_cloudnp.random.rand(1,1024,3)-np.random.rand(1,1024,3)#画出3d点云defpyplot_draw_point_cloud(points,output_filenameNone): points is a Nx3 numpy array figplt.figure()# ax fig.add_subplot(111, projection3d)axAxes3D(fig)ax.scatter(points[:,0],points[:,1],points[:,2])ax.set_xlabel(x)ax.set_ylabel(y)ax.set_zlabel(z)plt.show()# savefig(output_filename)上图为我们随机生成的点云,好吧,完全看不出来什么呢!将点云进行体素化,通常我们处理的点云都是一批一批处理,所以这里写了两个接口,分别针对单个点云和多组点云defpoint_cloud_to_volume_batch(point_clouds,vsize32,radius1.0,flattenTrue): Input is BxNx3 batch of point cloud Output is Bx(vsize^3) vol_list[]forbinrange(point_clouds.shape[0]):volpoint_cloud_to_volume(np.squeeze(point_clouds[b,:,:]),vsize,radius)ifflatten:vol_list.append(vol.flatten())else:vol_list.append(np.expand_dims(np.expand_dims(vol,-1),0))ifflatten:returnnp.vstack(vol_list)else:returnnp.concatenate(vol_list,0)defpoint_cloud_to_volume(points,vsize,radius1.0): input is Nx3 points. output is vsize*vsize*vsize assumes points are in range [-radius, radius] volnp.zeros((vsize,vsize,vsize))voxel2*radius/float(vsize)print(voxel: ,voxel)locations(pointsradius)/voxelprint(locations: ,locations)locationslocations.astype(int)print(locations: ,locations)vol[locations[:,0],locations[:,1],locations[:,2]]1.0returnvol下面两个函数是体素转换成点云,和画出体素的操作:defvolume_to_point_cloud(vol): vol is occupancy grid (value 0 or 1) of size vsize*vsize*vsize return Nx3 numpy array. vsizevol.shape[0]assert(vol.shape[1]vsizeandvol.shape[1]vsize)points[]forainrange(vsize):forbinrange(vsize):forcinrange(vsize):ifvol[a,b,c]1:points.append(np.array([a,b,c]))iflen(points)0:returnnp.zeros((0,3))pointsnp.vstack(points)returnpointsdefpyplot_draw_volume(vol,output_filenameNone): vol is of size vsize*vsize*vsize output an image to output_filename pointsvolume_to_point_cloud(vol)pyplot_draw_point_cloud(points,output_filename)这个角度好像看不清楚,那么我们换个角度来看下:哈哈,Y(o)Y,这下看清楚了吧!今天也要加油( ⊙ o ⊙ )

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询