天天看點

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  >

(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 檔案的一個片段

微信公衆号号可掃描二維碼一起共同學習交流

PCL中IO子產品和類的介紹

未完待續**************************

繼續閱讀