I/O模块中共有21个类 (1)class pcl::FIleReader:定义了PCD文件的读取接口,主要用作其他读取类的父类 pcl::FileReader有pcl::PCDReader和pcl::PLYReader子类 (2)class pcl::FIleWrite : 与class pcl::FIleReader对应,是写入PCD文件类的接口定义,作为其他写入类的父类,pcl::Filewriter有pcl::PCDwriter和pcl::PLYWriter子类 (3) class pcl::Grabber:类Grabber为PCL1.X对应的设备驱动接口的基类定义 父类 子类 pcl::ONIGrabber pcl::Grabber pcl::OpenNIGrabber pcl::PCDGrabberBase ----------pcl::PCDGrabber< PointT > (4)classopenni_wrapper::OpenNIDevice:定义OpenNI设备的基类,用于获取包括红外数据,RGB数据,深度图像数据 父类 子类 openni_wrapper::DeviceONI openni_wrapper::OpenNIDevice openni_wrapper::DeviceKinect openni_wrapper::DevicePrimesense openni_wrapper::DeviceXtionPro PCD(点云数据)文件格式,以下几种格式 (1)PLY是一种多边形文件格式, (2)STL是3D System公司创建的模型文件格式,主要应用于CAD,CAM领域 (3)OBJ是从几何学上定义的文件格式, (4)X3D是符合ISO标准的基于XML的文件格式,表示3D计算机图形数据 PCD文件头格式 每个PCD文件包含一个文件头,确定和声明文件中存储这点云的数据的某种特性,PCD文件必须用ASCII码来编码, (1)VERSION---------指定PCD文件版本 (2) FIELSS------------指定一个点恶意有的每一个维度和字段的名字例如 FILEDS x y z #XYZ data FILEDS x y z rgb #XYZ + color FILEDS x y z normal_x normal_y normal_z #XYZ +surface normal FILEDS j1 j2 j3 #moment invariants ..... (3) SIZE-----------用字节数指定每一个维度的大小 例如 unsigned char/char? has 1 byte unsigned short/short? has 2 byte double ?has 8 byte (4) TYPE------------用一个字符指定每一个维度的类型 被接受类型有 I----------------表示有符号类型 int8(char) int16 (short) int32(int) U----------------表示无符号类型 ------------------ F----------------表示浮点类型 (5)COUNT----------指定每一维度包含的元数目(默认情况下,没有设置 的话,所有维度的数目被设置为1) (6)WIDTH------用点的数量表示点云数据集的宽度,根据有序点云还是无序点云,WIDTH有两层解释: 1,它能确定无序数据集的点云中点的个数, 2,它能确定有序点云数据集的宽度 注意有序点云数据集,意味着点云是类似与图像的结构,数据分为行和列,这种点云的实例包括立体摄像机和时间飞行摄像机生成的数据,有序数据集的优势在于,预先了解相邻点(和像素点类似)的关系,邻域操作更加高效,这样就加速了计算并降低了PCL中某些算法的成本。例如:WIDTH 640 #每行有640个点 (7)HEIGHT---------------用点的数目表示点云数据集的高度。类似于WIDTH也有两层解释, 有序点云的例子:WIDTH 640 #像图像一样的有序结构,有640行480列, HEIGHT 480 #这样该数据集中共有640*480=307200个人点 无序点云例子: WIDTH 307200 HEIGHT 1 #有307200个点的有序点云数据集 (8)VIEWPOINT--------------------指定数据集中点云的获取视角。VIEWPOINT有可能在不同坐标系之间转换的时候应用,在辅助获取其他特征时,也比较有用, 例如曲面发现,在判断方向一致性时,需要知道视点的方位 视点信息被指为平移(tx ty tz) +四元数(qw qx qy qz) (9 ) POINTS----------------指定点云中点的总数 (10) DATA---------------指定存储点云数据的数据结构,有两种形式:ASCII和二进制 (注意PCD文件的文件头部分必须是以上部分顺序的精确的指定) 4 数据存储类型: (1)如果易ASCII形式,每一点占据一个新行, (2)如果以二进制的形式,这里数据是数组向量的PCL 例子 PCD 文件的一个片段
|
|