【Matlab Computer Vision System ToolBox】学习笔记-4 -点云文件PLY格式
2017-02-09 10:15
686 查看
本系列博客将介绍Matlab中机器视觉工具箱的应用,部分案例,主要关于点云处理方面,更多内容见Matlab官方文档。如有翻译错误请批评指正!所有代码经自己运行测试通过。转载请注明链接 :http://blog.csdn.NET/kaspar1992
【Matlab Computer Vision System ToolBox】学习笔记-1-点云配准流程 | 特征匹配
【Matlab Computer Vision System ToolBox】学习笔记-2-3D立体图创建 | 视差图 | 3D点云图
【Matlab Computer Vision System ToolBox】学习笔记-3 -点云配准 | 噪音去除 | 降采样
【Matlab Computer Vision System ToolBox】学习笔记-4 -点云文件PLY格式
英文原版下载地址
文件已 “ply” 开始,表示这是一个PLY文件。头部必须包含以下语法:
<data format> 可以是 ascii 表示数据以文本存储; binary_little_endian 和 binary_big_endian 表示二进制数据存储。
元素以 “element” 开始,并有元素属性值。
例如,
标量的定义语法:
其中 <data type>可以是以下类型:
列表语法定义如下:
例如:property list uchar int vertex_index
定义了以一个字节整形开始的 顶点索引,这对于存储在一个脸中不同的顶点较复杂的多边形数据很有用。
头部还可以包括 comments ,可以提供文件的作者信息,文件描述,数据来源和其他文字信息,格式如下:
2. Data 数据
数据存储格式在文件头部已经定义,ASCII或者二进制,数据按文件头部定义顺序存储。在上面的例子中,9200个顶点,每个顶点有xyz属性值。文件数据如下:
float vertex[1].x
float vertex[1].y
float vertex[1].z
float vertex[2].x
float vertex[2].y
float vertex[2].z
...
float vertex[9200].x
float vertex[9200].y
float vertex[9200].z
通常,每个元素的值按行一次性存储:
<property 1><property 2> ... <property N> element[1]
<property 1><property 2> ... <property N> element[2]
...
列表以一个count开始,后面有scalars。例如上面的face,列表属性有 vertex_indices ,uchar 的 count 和 in 的 scalar
uchar count
int face[1].vertex_indices[1]
int face[1].vertex_indices[2]
int face[1].vertex_indices[3]
...
int face[1].vertex_indices[count]
uchar count
int face[2].vertex_indices[1]
int face[2].vertex_indices[2]
int face[2].vertex_indices[3]
...
int face[2].vertex_indices[count]
...
4. More
更多关于PLY的内容,请点击链接
Greg Turk’s article on the PLY format
看到这里笔者想到之前的笔记中使用的 teapot.ply ,于是找出打开,看看是不是上述的说明,截图如下,清晰明了。本博文对于以后自己建立点云有很大帮助。(点云数据那么多,上千上万,自己一个一个输入吗难道。。。)
【Matlab Computer Vision System ToolBox】学习笔记-1-点云配准流程 | 特征匹配
【Matlab Computer Vision System ToolBox】学习笔记-2-3D立体图创建 | 视差图 | 3D点云图
【Matlab Computer Vision System ToolBox】学习笔记-3 -点云配准 | 噪音去除 | 降采样
【Matlab Computer Vision System ToolBox】学习笔记-4 -点云文件PLY格式
英文原版下载地址
The PLY Format
Matlab视觉工具箱点云只支持XYZ坐标及颜色属性。1. File Header 头部
PLY文件头部例子:ply //file ID format binary_big_endian 1.0 //specify data format and version element vertex 9200 //define "vertex" element 顶点元素 property float x property float y property float z element face 18000 //define "face" element property list uchar int vertex_indices end_header //data starts after this line
文件已 “ply” 开始,表示这是一个PLY文件。头部必须包含以下语法:
format <data format> <PLY version>
<data format> 可以是 ascii 表示数据以文本存储; binary_little_endian 和 binary_big_endian 表示二进制数据存储。
元素以 “element” 开始,并有元素属性值。
element <element name><number in file> property <data type><property name 1> property <data type><property name 2> property <data type><property name 3> ...
例如,
element vertex 9200定义了一个 vertex (顶点),有9200个元素,每个元素由 property ( 属性) 描述,这里有两种 属性,标量和列表。
标量的定义语法:
property <data type><property name>
其中 <data type>可以是以下类型:
列表语法定义如下:
property list <count data type><data type><property name>
例如:property list uchar int vertex_index
定义了以一个字节整形开始的 顶点索引,这对于存储在一个脸中不同的顶点较复杂的多边形数据很有用。
头部还可以包括 comments ,可以提供文件的作者信息,文件描述,数据来源和其他文字信息,格式如下:
comment<comment text>
2. Data 数据
数据存储格式在文件头部已经定义,ASCII或者二进制,数据按文件头部定义顺序存储。在上面的例子中,9200个顶点,每个顶点有xyz属性值。文件数据如下:float vertex[1].x
float vertex[1].y
float vertex[1].z
float vertex[2].x
float vertex[2].y
float vertex[2].z
...
float vertex[9200].x
float vertex[9200].y
float vertex[9200].z
通常,每个元素的值按行一次性存储:
<property 1><property 2> ... <property N> element[1]
<property 1><property 2> ... <property N> element[2]
...
列表以一个count开始,后面有scalars。例如上面的face,列表属性有 vertex_indices ,uchar 的 count 和 in 的 scalar
uchar count
int face[1].vertex_indices[1]
int face[1].vertex_indices[2]
int face[1].vertex_indices[3]
...
int face[1].vertex_indices[count]
uchar count
int face[2].vertex_indices[1]
int face[2].vertex_indices[2]
int face[2].vertex_indices[3]
...
int face[2].vertex_indices[count]
...
3. Common Elements and Properties 通用元素和属性
因为点云格式比较复杂,包括很多的元素及属性,一个通用的属性可以在不同的程序中使用,Turk建议元素和属性使用一些标准。
4. More
更多关于PLY的内容,请点击链接Greg Turk’s article on the PLY format
看到这里笔者想到之前的笔记中使用的 teapot.ply ,于是找出打开,看看是不是上述的说明,截图如下,清晰明了。本博文对于以后自己建立点云有很大帮助。(点云数据那么多,上千上万,自己一个一个输入吗难道。。。)
相关文章推荐
- 【Matlab Computer Vision System ToolBox】学习笔记-3 -点云配准 | 噪音去除 | 降采样
- 【Matlab Computer Vision System ToolBox】学习笔记-2-3D立体图创建 | 视差图 | 3D点云图
- 【Matlab Computer Vision System ToolBox】学习笔记-1-点云配准流程 | 特征匹配
- Matlab Computer Vision System 例程笔记
- Opengl学习笔记:(一).Ply文件文件格式和文件读取
- NetworkX学习笔记-3-Python中输出Gephi文件格式的方法
- Away3D 学习笔记(一): 加载3DS格式的模型文件
- PE文件格式学习笔记(一) 转自http://blog.csdn.net/hbyufan/
- Linux 学习笔记 -- 第二部分 Linux 文件、目录与磁盘格式 -- 第8章 Linux 磁盘与文件系统管理
- 【Matlab学习笔记】(四)认识matlab的文件类型和简单练习
- ArcEngine 9.3 学习笔记(十一):地图输出(Printer类,PageLayoutControl控件打印出图,栅格格式文件输出,矢量格式文件输出)
- 软件安全学习笔记(7):PE文件总体格式
- PCL学习笔记(二)PCD文件格式
- 【学习笔记二】struts2的动态下载,使用Apache PoI生成excel表格,将用户信息以xls文件格式供用户下载
- Matlab Robotic Toolbox工具箱学习笔记
- Elf文件格式学习笔记
- php学习笔记_1_文件格式
- matlab学习笔记--matlab目录和文件操作
- PCL学习笔记(二)PCD文件格式
- Jsoup学习笔记7之File类操作文件:复制只包含指定类型文件的文件夹,并在新创建的同名文件夹中创建同名的另一种格式的文件