前言
点云是某个坐标系下的点的数据集。点包含了丰富的信息,包括三维坐标X,Y,Z、颜色、分类值、强度值、时间等等。
点云格式是指用来存储和表示三维点云数据的文件格式。点云格式可以分为ASCII和二进制两种主要格式。
ASCII格式是文本格式,每个点的信息用空格或逗号分隔,包含一个头文件和一个数据部分,方便阅读和编辑。常见的ASCII格式是文本格式包括:ASC、XYZ、TXT、PCD、PTS、PTX等。二进制(Binary)格式是二进制文件,每个点的信息用字节存储,不包含头文件,占用空间小,读写速度快。常见的二进制格式是文本格式包括:BIN、LAS、PCD、NPY等。
具体如下:
一、.asc、.xyz、.txt格式
ASC、XYZ与TXT都是点云格式中一种常见的文本格式,可以用于存储点云数据以及其他3D几何数据。在这些格式中,每个点占据一行。每个点在一行中以x、y、z三个坐标值的顺序给出,每个坐标值之间用空格、制表符或逗号进行分隔。此外,可以在每个点的坐标值之后加上可选的点属性信息,这些属性信息也以空格、制表符或逗号分隔。
文本格式的文件可以使用任何文本编辑器打开,具有易于阅读和编辑的优点
二、.pts与.ptx格式
.ptx和.pts是Leica的扫描仪与相关配套软件所使用的点云文件格式。
.pts文件是一个简单的文本文件,用于存储通常来自激光雷达扫描仪的点数据。 第一行给出了要遵循的点数。 随后的每一行有 7 个值,前三个是 (x,y,z) 坐标 其中,第四个是“强度”值,最后三个是“颜色值”(R,G,B) 。 强度和颜色值的范围是0-255(单个无符号字节)。
具体示例如下:
253730194 //number of points
-0.41025 -2.0806 8.00981 55 52 44 65
-0.63016 -1.84527 6.59447 228 228 230 225
-0.4766 -2.14446 7.91288 60 56 54 68
-0.52017 -1.51698 7.91458 60 58 50 71
-0.626 -2.46051 7.35187 152 140 160 161
-0.62371 -1.53502 7.46876 168 163 175 175
-0.62829 -2.27286 6.34905 208 204 213 212
-0.62614 -2.48739 7.36484 151 144 155 159
: : :
: : :
: : :
.pts文件使用单独扫描的概念,每个文件中可以有多组点云,一般一站为一组。每组点云都提供了单独的头信息,包括行列数、扫描仪位置、扫描仪主轴和转换矩阵等。
.pts文件将每个扫描点云都定义在自己的坐标系中,然后将所有这些点"注册"到单个坐标系中。每个点的数据存储在它的原始坐标系中,点云的转换矩阵通过文件的标头信息提供。
头文件格式如下:
number of columns
number of rows
st1 st2 st3 ; scanner registered position
sx1 sx2 sx3 ; scanner registered axis ‘X’
sy1 sy2 sy3 ; scanner registered axis ‘Y’
sz1 sz2 sz3 ; scanner registered axis ‘Z’
r11 r12 r13 0 ; transformation matrix
r21 r22 r23 0 ; this is a simple rotation and translation 4x4 matrix
r31 r32 r33 0 ; just apply to each point to get the transformed coordinate
tr1 tr2 tr3 1 ; use double-precision variables
具体示例如下:
6282
157
558312.218127 5240857.469093 76.298415
0.644200 -0.764857 0.000038
0.764857 0.644200 -0.000027
-0.000004 0.000047 1
0.644200 -0.764857 0.000038 0
0.764857 0.644200 -0.000027 0
-0.000004 0.000047 1.000000 0
558312.218127 5240857.469093 76.298415 1
0 0 0 0.500000 0 0 0
12.032272 -2.613480 -2.036392 0.159304 168 183 142
12.860123 -2.793289 -2.162979 0.183719 118 121 94
12.881760 -2.798019 -2.153061 0.183963 103 105 84
12.896347 -2.801193 -2.141922 0.188357 100 111 97
:
:
:
1.310898 -0.674240 1.076859 0.156863 17 17 19
1.310837 -0.674210 1.079025 0.144411 27 26 24
1.310196 -0.673874 1.080795 0.096803 25 24 22
参考:
pts - Laser scan plain data format
ptx plain text data format
三、.pcd格式
PCD数据格式是点云库(PCL)官方指定的点云数据文件格式,为点云库量身定制,支持n维点类型扩展机制,能够更好的发挥PCL库的处理性能。PCD文件包含一个头文件和一个数据部分,文件头用于描绘点云的整体信息,如版本、字段、大小、类型、数量、宽度、高度等,数据部分为点的坐标和属性,由点的笛卡尔坐标构成,文本模式下以空格做分隔符。文件格式有文本(ASCII)和二进制(Binary)两种存储格式。
VERSION | 文件版本信息 |
---|---|
FIELDS | 指定的数据点维度与字段名 |
SIZE | 用字节指定每一个维度的大小 |
TYPE | 指定每一维度的数据类型 |
COUNT | 指定每一维度包含的元素数目 |
WIDTH | 指定的点云集宽度 |
HEIGHT | 指定的点云集高度 |
VIEWPOINT | 指定的点云集获取视角 |
POINT | 总点数 |
DATA | 点云的文本类型 |
示例:
#.PCD v.7 - Point Cloud Data file format
VERSION .7
FIELDS x y z rgb
SIZE 4 4 4 4
TYPE F FFF
COUNT 1 1 1 1
WIDTH 213
HEIGHT 1
VIEWPOINT 0 0 0 1 0 0 0
POINTS 213
DATA ascii
0.93773 0.33763 0 4.2108e+06
0.90805 0.35641 0 4.2108e+06
四、.las格式
LiDAR数据的工业标准格式,是一种二进制文件格式。由ASPRS(美国摄影测量与遥感学会)下的LiDAR专业委员会于2003年发布。
LAS文件按每条扫描线排列方式存放数据,包括激光点的三维坐标、多次回波信息、强度信息、扫描角度、分类信息、飞行航带信息、飞行姿态信息、项目信息、GPS信息、数据点颜色信息等。LAS旨在提供一种开放的格式标准,允许不同的硬件和软件提供商输出可互操作的统一格式。
标准的LIDAR文件分为三个部分:公用文件头块(PUBLICHEADERBLOCK)、变量长度记录(VARIABLELENGTHRECORDS)和点数据记录(POINTDATARECORD)。
公用文件头块用来记录数据集的基本信息,包括LIDAR点总数、数据范围、LIDAR点格式、变长记录总数、LAS文件的生成方式等。
公共文件头数据结构定义:
char file_signature[4]; //文件签名,均为"LASF"
unsigned short file_source_id; //文件ID
unsigned short global_encoding; //全球编码
unsigned long project_id_guid_data1; //项目ID1
unsigned short project_id_guid_data2; //项目ID2
unsigned short project_id_guid_data3; //项目ID3
unsigned char project_id_guid_data4[8]; //项目ID4
unsigned char version_major; //大版本(1)
unsigned char version_minor; //小版本(0/1/2/3/4)
char systemID[32]; //硬件信息
char generatingSoftware[32]; //软件信息
unsigned short fileCreationDay; //文件创建天数
unsigned short fileCreationYear; //文件创建年份
unsigned short headerSize; //头文件大小
unsigned long pointDataOffset; //点数据记录起始位置(对应第3部分)
unsigned long numberOfVariableRecords; //可变数据记录数量
unsigned char pointDataFormatID; //点数据记录格式(0/1/2/3/4/……/10)
unsigned short pointDataRecordLength; //点数据记录长度
unsigned long numberOfPointRecords; //总共的点数量
unsigned long numberOfPointsByReturn[5];//回波点数量
double x_scale; //比例因子
double y_scale;
double z_scale;
double x_offset; //偏移量
double y_offset;
double z_offset;
double x_max; //最大最小值(实际值)
double x_min;
double y_max;
double y_min;
double z_max;
double z_min;
变量长度记录用来记录数据的投影信息、元数据信息以及用户自定义信息等,是LAS格式中最灵活的部分。每条变长记录包括固定的变长记录头和灵活的扩展域两部分。一条变长记录的长度=变长记录头长度+扩展域长度。
公共文件头后面就是零个或者多个变长记录。公共文件头部分的numberOfVariableRecords记录了共有几个变长记录。变长记录必须依次访问,因为每个变长记录长度都包含在边长记录头信息里。
变长记录文件头:
点数据记录的格式以下表为基础,不同格式添加了部分不同的item,以1.4版本的Point Data Record Format 0为例。
las共发布了las1.0~1.4等多个版本,在LAS1.0-1.2版本中包含:公共头、可变长度的记录和点数据的记录,而在1.3-1.4版本中,增加了扩展变长记录。详细标准文档如下表:
VERSION | 文档 |
---|---|
1.0 | http://www.asprs.org/a/society/committees/standards/asprs_las_format_v10.pdf |
1.1 | http://www.asprs.org/a/society/committees/standards/asprs_las_format_v11.pdf |
1.2 | http://www.asprs.org/a/society/committees/standards/asprs_las_format_v12.pdf |
1.3 | http://www.asprs.org/a/society/committees/standards/LAS_1_3_r11.pdf |
1.4 | http://www.asprs.org/a/society/committees/standards/LAS_1_4_r11.pdf |
参考资料:
https://laspy.readthedocs.io/en/latest/intro.html
LAS文件包含以下信息:
C-class(所属类)
F-flight(航线号)
T-time(GPS时间)
I-intensity(回波强度)
R-return(第几次回波)
N-number of return(回波次数)
A-scan angle(扫描角)
RGB-red green blue(RGB颜色值)
示例: