PCL——(3)PCD(点云数据)文件格式简介 - 一抹烟霞 - 博客园 (cnblogs.com)
Example
A snippet of a PCD file is attached below. It is left to the reader to interpret the data and see what it means. :) Have fun!:
# .PCD v.7 - Point Cloud Data file format VERSION .7 FIELDS x y z rgb SIZE 4 4 4 4 TYPE F F F F COUNT 1 1 1 1 WIDTH 213 HEIGHT 1 VIEWPOINT 0 0 0 1 0 0 0 POINTS 213 DATA ascii //有的格式是二进制binary 需要转换好处理。 二进制大小是assic的一半左右 0.93773 0.33763 0 4.2108e+06 //里面有空格 0.90805 0.35641 0 4.2108e+06 0.81915 0.32 0 4.2108e+06 0.97192 0.278 0 4.2108e+06 0.944 0.29474 0 4.2108e+06 0.98111 0.24247 0 4.2108e+06 0.93655 0.26143 0 4.2108e+06 0.91631 0.27442 0 4.2108e+06 0.81921 0.29315 0 4.2108e+06 0.90701 0.24109 0 4.2108e+06 0.83239 0.23398 0 4.2108e+06 0.99185 0.2116 0 4.2108e+06
单个PCD文件是lidar 旋转一圈/一个扫描周期的一帧数据 集合。
6、WIDTH 指定数据点的宽度
包含两个含义:
1.无序点云中点的总个数(与POINTS相同)。
2.有序点云数据的宽度((一行中连续点的总数,或者叫列数)。
注:有序点云数据集中,点云类似图片或矩阵的结构,分为行和列,这种数据通常来自于立体摄像机、时间飞行摄像机等。知道点的相邻关系,使算法计算更高效。
7、HEIGTH 点云高度
它包含两个含义:
1.有序点云数据的高度(总行数)。
2.无序点云中,它被设置为1。(一般PCD文件是1)
所以可以根据这个数值判断点云是有序的还是无序的
8、POINTS 指定点云中点的总个数
一般好几万
''' use pclpy lib : pcd中binary转ascii'''
import pclpy
import numpy as np
import cv2
pcd_src_path='DATA/try.pcd.pcd'
pcd_dst_path='DATA/553_ascii.pcd'
pcl_file = pclpy.pcl.PointCloud.PointXYZI()
pclpy.pcl.io.loadPCDFile(pcd_src_path, pcl_file)
pclpy.pcl.io.savePCDFileASCII(pcd_dst_path, pcl_file)
点云坐标系:
PCD 文件,header中有定义,起始的原点
VIEWPOINT有可能在不同坐标系之间转换的时候应用,在辅助获取其他特征时也比较有用,例如曲面法线,在判断方向一致性时,需要知道视点的方位.
视点信息被指定为平移(txtytz)+四元数(qwqxqyqz)。默认值是:VIEWPOINT 0 0 0 1 0 0 0
没有旋转和平移
坐标系:图片VS点云
关于图片:
- 图片的坐标值恒为正;
- 图像坐标原点在图片左上角;
- 坐标值为整数
- x轴向右,y轴向下
关于点云坐标:
- 点云的坐标值有正有负;
- 点云值为真实的数值;
- x轴(深度)向前,y轴向左,z轴(高度)向上;
摄像头外参内参矩阵:世界坐标系,相机坐标系和图像坐标系的转换(Python) - 灰信网(软件开发博客聚合) (freesion.com)