简单易做的网站,手机上编写html的软件,nginx环境下安装wordpress,做的丑的网站有哪些知乎常见点云文件解析 1. 为什么会有这么多的点云文件2. 常见的点云文件格式解析2.1 pcd格式2.2 off格式2.3 xyz格式2.4 ply格式2.5 obj格式2.6 stl格式 1. 为什么会有这么多的点云文件
我们在做2D视觉时#xff0c;处理的就是类似一系列类似的二维数组#xff0c;数组以图片的形… 常见点云文件解析 1. 为什么会有这么多的点云文件2. 常见的点云文件格式解析2.1 pcd格式2.2 off格式2.3 xyz格式2.4 ply格式2.5 obj格式2.6 stl格式 1. 为什么会有这么多的点云文件
我们在做2D视觉时处理的就是类似一系列类似的二维数组数组以图片的形式进行保存处理的图片也有甚多的格式比如pngjpgbmp等。那我们在做3D视觉的时候处理的主要是点云点云就是由一些点的集合。点云在组成特点上分为两种一种是有序点云一种是无序点云。
有序点云 一般由深度图还原的点云有序点云按照图方阵一行一行的从左上角到右下角排列当然其中有一些无效点。因为有序点云按顺序排列可以很容易的找到它的相邻点信息。有序点云在某些处理的时候还是很便利的但是很多情况下是无法获取有序点云的。
无序点云 无序点云就是其中的点的集合点排列之间没有任何顺序点的顺序交换后没有任何影响是比较普遍的点云形式。有序点云也可看做无序点云来处理。 在对点云这个格式有了初步的了解之后我们来看看该怎么保存这些点云呢。
目前就文件格式而言 有ASCII码和二进制 两种编码形式ASCII码可以直接阅读里面存储的内容二进制的保存形式则不可读但体积会更小。这两种保存都是没有进行过压缩的。
文件的内容的组成就有很多种形式了也是本篇文章主要介绍的内容我们来看看常见的格式
*.pcd *.off *.xyz *.ply *.obj *.stl *.vtk *.3ds
2. 常见的点云文件格式解析
2.1 pcd格式
# .PCD v0.7 - Point Cloud Data file format //注释
VERSION 0.7 //PCD文件版本
FIELDS x y z r g b intensity timestamp //每个点包含哪些维度xyz表示XYZ三维坐标rgb表示颜色可以分开表示也可以一个浮点数表示intensity表示激光反射强度timestamp表示时间戳normal_x、normal_y、normal_z表示平面法线三维坐标j1、j2、j3表示不变矩。
SIZE 4 4 4 1 1 1 1 8 //每个维度的数据占用字节大小
TYPE F F F U U U U F //每个维度的数据类型I表示有符号类型int8char、int16(short)、int32(int)U表示无符号类型uint8(unsigned char)、uint16(unsigned short)、uint32(unsigned int)F表示浮点型
COUNT 1 1 1 1 1 1 1 1 //每个维度含有多少个元素如果未提供COUNT属性默认值为1
WIDTH 32 //用点的数量表示点云数据集的宽度。有两种含义1.无序数据集的点云中点的数量 2.有序点云数据集的宽度一行中点的数量有序点云数据集中点云类似图片或矩阵的结构分为行和列这种数据通常来自于立体摄像机stereo camera、时间飞行摄像机Time Of Flight camera使用红外线或者光脉冲来估计光线从发射到检测到的时间延迟来测量距离知道点的相邻关系使算法计算更高效。
HEIGHT 2172 //用点云数据集中点的数量表示点云数据集的高度。高度有如下两种含义1.有序的点云数据集中行的数量 2.无序点云数据集中高度为1可以用来判断一个数据集是有序的还是无序的
VIEWPOINT 0 0 0 1 0 0 0 //指定数据集合中点的采集视点。可以用来后续可能的坐标转换或者求平面法线坐标。格式是平移(tx ty tz) 四元数(qw qx qy qz)默认是0 0 0 1 0 0 0。
POINTS 69504 //点云中点的总数冗余字段
DATA binary_compressed //点云数据的存储类型0.7版本支持两种存储方式ascii和binary。文件格式头中的顺序不能改变即一定是如下顺序 VERSION、FIELDS、SIZE、TYPE、COUNT、WIDTH、HEIGHT、VIEWPOINT、POINTS、DATA
pcd作为PCL库官方指定格式典型的为点云量身定制的格式。优点是支持n维点类型扩展机制能够更好的发挥PCL库的点云处理性能。文件格式有文本和二进制两种格式。仅能支持点云数据不能支持线面数据。
2.2 off格式
OFF格式文件头有两行第一行以off关键字开头第二行表示顶点数、面数、边数。主体分为顶点坐标顶点列表和面的顶点索引面列表两个部分其中每个面的顶点数可以指定用第一个数表示。
OFF
顶点数 面数 边数
x y z
x y z
…n个顶点 顶点1的索引 顶点2的索引 … 顶点n的索引
…举个例子
OFF
8 6 0
-0.500000 -0.500000 0.500000
0.500000 -0.500000 0.500000
-0.500000 0.500000 0.500000
0.500000 0.500000 0.500000
-0.500000 0.500000 -0.500000
0.500000 0.500000 -0.500000
-0.500000 -0.500000 -0.500000
0.500000 -0.500000 -0.500000
4 0 1 3 2
4 2 3 5 4
4 4 5 7 6
4 6 7 1 0
4 1 7 5 3
4 6 0 2 4OFF相对其他格式更加的简单可以存储点和面仅有文本格式。
2.3 xyz格式
前面3个数字是坐标后面3个数字是法向量(也有代表颜色信息)有多少行就代表有多少个点。
17.371559 -6.531680 -8.080792 0.242422 0.419118 0.874970 //一般前三个数带标xyz后面三个数代表法向量也有代表颜色信息的。
15.640106 -16.101347 -9.550241 -0.543610 -0.382877 0.746922
17.750742 -6.395478 -8.307115 0.333093 0.494766 0.802655
15.432834 -15.947010 -9.587061 -0.548083 -0.385148 0.742473
23.626318 -7.729815 -13.608750 0.081697 0.502976 0.860431
15.300377 -15.610346 -9.547507 -0.569658 -0.341132 0.747743
23.975805 -7.512131 -13.775388 0.082388 0.564137 0.821561
24.251831 -7.345085 -13.949208 0.099309 0.574142 0.812711 2.4 ply格式
PLY多边形文件格式表示存储描述为多边形集合的图形对象的 3D 文件格式。这种文件格式的目的是建立一种简单易用的文件类型该文件类型足够通用可用于各种模型。 PLY 文件格式有 ASCII 和二进制格式用于紧凑存储、快速保存和加载。
ply //关键字
format ascii 1.0 //文件编码格式
comment author: Greg Turk // 注释
comment object: another cube //注释
element vertex 8 // 定义元素为顶点 数目为8个
property float x // 上述顶点元素中的属性 x数据类型为float
property float y // 上述顶点元素中的属性 y数据类型为float
property float z // 上述顶点元素中的属性 z数据类型为float
property uchar red // 上述顶点元素中的属性 red数据类型为uchar
property uchar green // 上述顶点元素中的属性 green数据类型为uchar
property uchar blue // 上述顶点元素中的属性 blue数据类型为uchar
element face 7 // 定义面元素数目为7个
property list uchar int vertex_index // 定义面元素内的列表属性列表开头以uchar的数值表示列表的项目数后面接着型态为int的顶点索引值vertex_indices顶点索引值从0开始。
element edge 5 //定义元素为边数目为5个
property int vertex1
property int vertex2
property uchar red
property uchar green
property uchar blue
end_header // 文件头部分结束
0 0 0 255 0 0 //顶点的开始分别为x y z r g b
0 0 1 255 0 0
0 1 1 255 0 0
0 1 0 255 0 0
1 0 0 0 0 255
1 0 1 0 0 255
1 1 1 0 0 255
1 1 0 0 0 255
3 0 1 2 //面的开始这是个三角行分别有第0 1 2 相连
3 0 2 3
4 7 6 5 4 // 这是个四边形顶点分别是第 7 6 5 4个点
4 0 4 5 1
4 1 5 6 2
4 2 6 7 3
4 3 7 4 0
0 1 255 255 255 // 边的开始顶点分别是第0个与第一个点颜色是255,255,255
1 2 255 255 255
2 3 255 255 255
3 0 255 255 2552.5 obj格式
obj是一种文本文件通常用以“#”开头的注释行作为文件头数据部分每一行的开头关键字代表该行数据所表示的几何和模型元素以空格做数据分隔符。
# The units used in this file are centimeters. g default // 组名称v -0.500000 -0.500000 0.500000 // v 代表顶点坐标v 0.500000 -0.500000 0.500000 v -0.500000 0.500000 0.500000 v 0.500000 0.500000 0.500000 v -0.500000 0.500000 -0.500000 v 0.500000 0.500000 -0.500000 v -0.500000 -0.500000 -0.500000 v 0.500000 -0.500000 -0.500000 vt 0.000000 0.000000 //vt代表点的贴图坐标vt 1.000000 0.000000 vt 0.000000 1.000000 vt 1.000000 1.000000 vt 0.000000 2.000000 vt 1.000000 2.000000 vt 0.000000 3.000000 vt 1.000000 3.000000 vt 0.000000 4.000000 vt 1.000000 4.000000 vt 2.000000 0.000000 vt 2.000000 1.000000 vt -1.000000 0.000000 vt -1.000000 1.000000 vn 0.000000 0.000000 1.000000 //vn 代表顶点法线vn 0.000000 0.000000 1.000000 vn 0.000000 0.000000 1.000000 vn 0.000000 0.000000 1.000000 vn 0.000000 1.000000 0.000000 vn 0.000000 1.000000 0.000000 vn 0.000000 1.000000 0.000000 vn 0.000000 1.000000 0.000000 vn 0.000000 0.000000 -1.000000 vn 0.000000 0.000000 -1.000000 vn 0.000000 0.000000 -1.000000 vn 0.000000 0.000000 -1.000000 vn 0.000000 -1.000000 0.000000 vn 0.000000 -1.000000 0.000000 vn 0.000000 -1.000000 0.000000 vn 0.000000 -1.000000 0.000000 vn 1.000000 0.000000 0.000000 vn 1.000000 0.000000 0.000000 vn 1.000000 0.000000 0.000000 vn 1.000000 0.000000 0.000000 vn -1.000000 0.000000 0.000000 vn -1.000000 0.000000 0.000000 vn -1.000000 0.000000 0.000000 vn -1.000000 0.000000 0.000000 s off //表示关闭光滑组g pCube1 //usemtl initialShadingGroup //表示使用的材质f 1/1/1 2/2/2 4/4/3 3/3/4 //f 面顶点索引/uv点索引/法线索引f 3/3/5 4/4/6 6/6/7 5/5/8 f 5/5/9 6/6/10 8/8/11 7/7/12 f 7/7/13 8/8/14 2/10/15 1/9/16 f 2/2/17 8/11/18 6/12/19 4/4/20 f 7/13/21 1/1/22 3/3/23 5/14/24 2.6 stl格式
3D Systems公司创建的模型文件格式用于表示三角形网格主要应用于CAD、CAM领域。STL从功能上只能用来表示封闭面或体有文本和二进制两种文件格式。
文本格式的STL文件的首行给出了文件路径及文件名下面逐行给出三角面片的几何信息每一行以1个或2个关键字开头。STL文件格式以三角面(facet)为单位组织数据每一个三角面由7 行数据组成facet normal 是三角面片指向实体外部的法矢量坐标outer loop 说明随后的3行数据分别是三角面片的3个顶点坐标(vertex)3顶点沿指向实体外部的法矢量方向逆时针排列。最后一行是结束标志。
solidfilenamestl //文件路径及文件名facet normal x yz // 三角面片法向量的3个分量值
outer loop
vertex x y z //三角面片第一个顶点的坐标
vertex x y z // 三角面片第二个顶点的坐标
vertex x y z //三角面片第三个顶点的坐标
endloop
endfacet // 第一个三角面片定义完毕
……
……
endsolid filenamestl ∥整个文件结束