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 >
(5)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 文件的一個片段
#。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.218e+06
0.90805 0.35641 0 4.2108e+06