PCL學習筆記3 —— PCL中IO模塊和類的介紹

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 

轉載地址 https://www.cnblogs.com/li-yao7758258/p/6434702.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章