Open3d 常用数据格式说明:pcd, ply, stl等

这篇具有很好参考价值的文章主要介绍了Open3d 常用数据格式说明:pcd, ply, stl等。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

可读格式

Open3d支持的可以直接打开的点云格式如下

行格式 说明
xyz [x,y,z] 空间直角坐标
xyzn [x, y, z, nx, ny, nz] 直角坐标和法线向量
xyzrgb [x, y, z, r, g, b] 直角坐标和[0,1]区间的颜色
pts 含头文件 见详情
ply 图形格式 见详情
pcd 点云数据 见PCL文件读写
stl 三角面数据 见详情

其中,pts的第一行是点数,其他行的格式可以为

  • [x, y, z, i, r, g, b],
  • [x, y, z, r, g, b]
  • [x, y, z, i]
  • [x, y, z]

其中,r,g,b格式为uint8。

ply

ply格式即Polygon File Format,又称斯坦福三角形文件,其内容分为文件头和数据,其中文件头通过ASCII编码,数据可以采取ASCII或者二进制的形式。

其文件头必以ply为首行,第二行为文件格式,一般来说有三种写法,分别表示ASCII,或者大小端序存放的二进制文件。

format ascii 1.0
format binary_little_endian 1.0
format binary_big_endian 1.0

ply文件支持注释,凡是以comment为首的行,都会被当作注释处理。

通过elementproperty关键字,可以描述元素属性,其中element表示元素,property表示属性,一个元素往往有多种属性,故而其写法类似下面这样

element <element name> <number in file>
 property <data_type> <property name 1>
 property <data_type> <property name 2>
 property <data_type> <property name 3>

data_type为数据类型,支持主要的C语言类型,包括两种写法,一种指定数据位数,包括int8 uint8 int16 uint16 int32 uint32 float32 float64,另一种不指定数据位数,包括char uchar short ushort int uint float double

以一个正方体为例,每个顶点需要3个小数表示坐标,另外需要3个无符号8位整数表示颜色,则其写法为

element vertex 8
property float x
property float y
property float z
property uchar blue
property uchar green
property uchar red

如果用面来描述这个正方体,则可写为

element face 6
property list uchar int vertex_indices

在规定了一系列的数据之后,最后文件头以end_header结尾。

stl

STL即StereoLithography,是立体激光雕刻的通用格式,存储的数据内容为三角面,数据格式分为ASCII和二进制两种。

其中,二进制STL的起始84个字节为文件头,用于描述3D模型的文件名(前80字节)和三角面个数(后4字节)。

在数据部分,以50个字节为一个三角面,逐个给出每个三角面片的几何信息。50个字节包括

  • 三角面片的法矢量 3x4
  • 三个顶点坐标 3x3x4
  • 三角面属性 2

ASCII格式则按行写入数据,每个三角面由7行数据构成,内容与二进制的50个字节相同,其书写结构大致为

solid filename stl          //自定义文件头 
   facet normal x y z       //法向量
       outer loop 
           vertex x y z     //第一个顶点坐标 
           vertex x y z     //第二个顶点坐标 
           vertex x y z     //第三个顶点坐标 
      endloop   
   endfacet         //完成一个三角面片定义 
   …… 
endsolid filename stl ∥整个STL文件定义结束

最后,STL对三角面的组织并非毫无规律的,其遵循下面几个原则

  • 共顶点:相邻三角面必须有两个共同顶点
  • 取向规则 单个面片法向量符合右手法则且指向实体外面
  • 充满规则 小三角面片必须布满三维模型的所有表面,不得遗漏
  • 取值规则 顶点坐标值必须非负,即STL实体在坐标系的第一象限

此外,还支持objglb等格式,由于二者相对来说比较复杂,故放在后续介绍。文章来源地址https://www.toymoban.com/news/detail-491732.html

到了这里,关于Open3d 常用数据格式说明:pcd, ply, stl等的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • open3d,读取stl/ply/obj/off/gltf/glb三维模型,并转换成点云,保存

    open3d,读取stl/ply/obj/off/gltf/glb三维模型,并转换成点云,保存

    可以自己用建模软件建立一个模型 本案例使用模型的下载地址 可以从free3d免费下载,无需注册 效果: 效果: 均匀采样会在表面出现采样点聚集的现象,open3d实现了一种基于poisson_disk方法的采样,能实现表面的均匀采样 原理 :参数umber_of_points是最终采样的点数量,实际会先

    2024年02月11日
    浏览(194)
  • 基于Open3D和PyTorch3D读取三维数据格式OBJ

    本节将讨论另一种广泛使用的3D数据文件格式,即OBJ文件格式。OBJ文件格式最初由Wavefront Technologies Inc.开发。与PLY文件格式类似,OBJ格式也有ASCII版本和二进制版本。二进制版本是专有的且未记录文档。本章主要讨论ASCII版本。 与之前类似,将通过示例来学习文件格式。第一个

    2024年02月10日
    浏览(15)
  • open3d,python-pcl,numpy 点云数据格式转换

    NumPy 转 open3d.PointCloud 参考: https://www.codenong.com/cs106756630/ numpy转open3D需要借助Vector3dVector函数,这样可以直接赋值与open3d.PointCloud.points,具体操作如下,假设(x, y, z)、(n_x, n_y, n_z)、(r, g, b)分别是一个n*3numpy数组(这三者不一定全部需要),则对于点数,法向量和颜色的转换都可以借

    2024年02月10日
    浏览(40)
  • 『Open3D』安装与点云格式通识

    『Open3D』安装与点云格式通识

    专栏地址:https://blog.csdn.net/qq_41366026/category_12186023.html         Open3D(以下简称o3d)同时支持Python和C++接口,本部分为Python篇;C++部分将在后续更新。o3d的python接口放弃了大部分重型C++中的框架包括Boost、Ceres,转而使用了pybind11代替Boost。Python和内建高斯牛顿、列温伯格

    2024年02月07日
    浏览(11)
  • Open3D常用点云滤波

    在点云处理中,过密的点云需要下采样,离群点和噪声点需要去除,通过滤波的方法,可以抽稀点云,把离群点去除,以便进行下一步处理 open3d中,很多滤波器已经被封装成了对应的方法(源码是C++) 直通滤波过滤指定维度(x,y,z)内,指定值域外的点 下采样 首先根据输入

    2024年02月06日
    浏览(18)
  • Open3D点云数据处理(一):VSCode配置python,并安装open3d教程

    Open3D点云数据处理(一):VSCode配置python,并安装open3d教程

    专栏地址:https://blog.csdn.net/weixin_46098577/category_11392993.html 在很久很久以前,我写过这么一篇博客,讲的是open3d点云处理的基本方法。👇 当时是 PyCharm + Anaconda + python3.8 + open3d 0.13 已经是2023年了,现在有了全新版本。目前python由当年的3.8更新到了3.11版本,open3d也从0.13来到了

    2024年02月07日
    浏览(19)
  • 『Open3D』1.10 Tensor数据处理

    『Open3D』1.10 Tensor数据处理

            open3d中实现了自身的数据类型,用于open3d中内部算法的数值计算,但基础使用上与numpy类似。 目录 1、tensor创建 2、tensor数据属性 3、 Tensor数据在CPU与GPU上的转换

    2024年01月20日
    浏览(19)
  • Open3D 降采样:让点云数据更加高效

    Open3D 降采样:让点云数据更加高效 点云数据处理是计算机视觉中重要的一项任务,而点云数据本身就非常庞大,需要消耗大量的计算资源进行处理。因此,点云数据的降采样是非常必要的。Open3D 是一个面向三维数据处理的开源库,提供了丰富的点云数据处理工具,其中包括

    2024年02月03日
    浏览(13)
  • Open3D 点云数据转深度图像(一,python版本)

    由于对深度图像也是感觉比较好奇,所以就简单的使用正投影的方式来生成一个深度图像来看一下效果,深度值这里采用了z值的差值(高差),具体的代码与效果如下所示。 这里是将点云投影到xoy平面上,使用高差作为深度值。

    2024年02月15日
    浏览(14)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包