MATLAB 不同格式点云文件的读取与显示(1)
不同格式的点云文件读取与显示(1)
- 一、背景介绍
-
- 1.点云数据结构
- 2.文件格式介绍
-
- 2.1.ply文件
- 2.2.pcd文件
- 2.3.las文件
- 2.4.txt文件
- 二、不同格式文件读取与显示
-
- 1.ply格式文件
- 2.pcd格式文件
- 3.txt格式文件
- 三、其他操作
-
- 1.修改显示背景色
- 2.添加图例的显示
- 3.improtdata('teapot.txt')报错
一、背景介绍
在平时的学习中,常用的点云文件包括ply、pcd、las、txt、等格式文件,在点云处理时,第一步是将点云数据的信息,包括点的三维坐标,强度、颜色、或者其他的信息,读取到容器或者矩阵中,用于后续的处理,Matlab提供了用于存储点信息的结构如下:
1.点云数据结构
%存储点云信息的结构体
ptCloud = pointCloud with properties:Location: [5184x3 single] %坐标信息Count: 5184 %点云数量XLimits: [-3 3.4338] %X坐标范围YLimits: [-2 2] %y坐标范围ZLimits: [0.0016 3.1437] %z坐标范围Color: [] %颜色信息Normal: [] %法线信息Intensity: [] %强度信息
官方介绍:PointCloud 对象从三维坐标系中的一组点创建点云数据。这些点通常表示曲面或环境上样本的 x、 y 和 z 几何坐标。每个点也可以用其他信息来表示,例如 RGB 颜色。点云数据存储为一个具有 Properties 中列出的属性的对象。使用对象函数从点云数据中检索、选择和移除所需的点。
2.文件格式介绍
2.1.ply文件
后缀名为ply的点云文件:
版本1.0 PLY 格式,也被称为斯坦福三角格式,定义了一个灵活和系统的方案来存储三维数据。ASCII 头通过定义每个“元素”和一组“属性”来指定文件中的数据许多 PLY 文件只有顶点和面数据,但是,它也可能包括其他数据,如颜色信息,顶点法线,或应用程序特定的属性。
2.2.pcd文件
后缀名为pcd的点云文件
pcd 文件格式是为了补充由于某种原因不支持/不支持 PCL 为 n-D 点云处理带来的一些扩展的现有文件格式。PCL是一个专门处理点云数据的C++三方库,提供了丰富的完善的点云处理函数和类。
2.3.las文件
后缀名为las的点云文件
在激光Lidar点云处理中,las格式的文件的使用是非常多的,这是一种标准规范的存储海量点云数据的文件格式,在使用方面Matlab可以下载LASreadAll进行读取。
2.4.txt文件
后缀名为txt的点云文件
这种格式的文件是点云入门使用最多也是最方便的,毕竟可以直接打开文件看到具体信息,也可以手动添加修改数据内容。不管是MATLAB还是C++都是可以直接读取这方面文件的。
上面的四种格式的文件是平时使用较多的,可以在相关的点云处理软件或者自己编程实现不同格式文件之间的转换。后续使用的点云数据为了方便美观,都将使用MATLAB自带的茶壶点云teapot.ply。
teapot.ply
来源:matlab自带的
路径:D:\\MatlabR2020b\\toolbox\\vision\\visiondata
二、不同格式文件读取与显示
1.ply格式文件
% 将名为teapot.ply的点云文件通过pcread函数读取到ptCloud结构体中
ptCloud = pcread('teapot.ply');
% 通过pcshow函数将ptCloud结构体中的点云显示到窗口
pcshow(ptCloud);
2.pcd格式文件
% 将名为teapot.pcd的点云文件通过pcread函数读取到ptCloud结构体中
ptCloud = pcread('teapot.pcd');
% 通过pcshow函数将ptCloud结构体中的点云显示到窗口
pcshow(ptCloud);
3.txt格式文件
% 将名为teapot.txt的点云文件通过importdata函数读取到point矩阵中
point=importdata('teapot.txt');
% 将矩阵point的前3列点云数据通过pointCloud函数读取到ptCloud结构体中
ptCloud = pointCloud(point(:,1:3));
% 将ptCloud结构体中的点云通过pcshow函数显示到窗口
pcshow(ptCloud);
三、其他操作
1.修改显示背景色
在窗口右击,选择background color -> custom ,选择除了黑色外的其他颜色
修改为白色似乎更美
2.添加图例的显示
一个类似于高程赋色以后的具体数值图例显示吧,点击窗口栏第六个
3.improtdata(‘teapot.txt’)报错
写错函数名称了呀,是importdata 不是improtdata,醉了。