pcd檔案的書寫格式

2021-10-07 09:11:25 字數 2713 閱讀 1295

每乙個pcd檔案包含乙個檔案頭,它確定和宣告檔案中儲存的點雲資料的某種特性。pcd檔案頭必須用ascii碼來編碼。pcd檔案中指定的每乙個檔案頭欄位以及ascii點資料都用乙個新行(\n)分開了,從0.7版本開始,pcd檔案頭包含下面的字段:

·version –指定pcd檔案版本

·fields –指定乙個點可以有的每乙個維度和字段的名字。例如:

fields x y z # xyz data

fields x y z rgb # xyz + colors

fields x y z normal_xnormal_y normal_z # xyz + su***ce normals

fields j1 j2 j3 # moment invariants

·size –用位元組數指定每乙個維度的大小。例如:

unsigned char/char has 1 byte

unsigned short/short has 2 bytes

unsignedint/int/float has 4 bytes

double has 8 bytes

·type –用乙個字元指定每乙個維度的型別。現在被接受的型別有:

i –表示有符號型別int8(char)、int16(short)和int32(int);

u – 表示無符號型別uint8(unsigned char)、uint16(unsigned short)和uint32(unsigned int);

f –表示浮點型別。

·count –指定每乙個維度包含的元素數目。例如,x這個資料通常有乙個元素,但是像vfh這樣的特徵描述子就有308個。實際上這是在給每一點引入n維直方圖描述符的方法,把它們當做單個的連續儲存塊。預設情況下,如果沒有count,所有維度的數目被設定成1。

·width –用點的數量表示點雲資料集的寬度。根據是有序點雲還是無序點雲,width有兩層解釋:

1)它能確定無序資料集的點雲中點的個數(和下面的points一樣);

2)它能確定有序點雲資料集的寬度(一行中點的數目)。

注意:有序點雲資料集,意味著點雲是類似於影象(或者矩陣)的結構,資料分為行和列。這種點雲的例項包括立體攝像機和時間飛行攝像機生成的資料。有序資料集的優勢在於,預先了解相鄰點(和畫素點類似)的關係,鄰域操作更加高效,這樣就加速了計算並降低了pcl中某些演算法的成本。

例如:width 640 # 每行有640個點

·height –用點的數目表示點雲資料集的高度。類似於width ,height也有兩層解釋:

1)它表示有序點雲資料集的高度(行的總數);

2)對於無序資料集它被設定成1(被用來檢查乙個資料集是有序還是無序)。

有序點雲例子:

width 640 # 像影象一樣的有序結構,有640行和480列,

height 480 # 這樣該資料集中共有640*480=307200個點

無序點雲例子:

width 307200

height 1 # 有307200個點的無序點雲資料集

·viewpoint–指定資料集中點雲的獲取視點。viewpoint有可能在不同座標系之間轉換的時候應用,在輔助獲取其他特徵時也比較有用,例如曲面法線,在判斷方向一致性時,需要知道視點的方位,

視點資訊被指定為平移(txtytz)+四元數(qwqxqyqz)。預設值是:

viewpoint 0 0 0 1 0 0 0

·points–指定點雲中點的總數。從0.7版本開始,該字段就有點多餘了,因此有可能在將來的版本中將它移除。

例子:points 307200 #點雲中點的總數為307200

警告:pcd檔案的檔案頭部分必須以上面的順序精確指定,也就是如下順序:

version、fields、size、type、count、width、height、viewpoint、points、data

之間用換行隔開。

資料儲存型別

在0.7版本中,.pcd檔案格式用兩種模式儲存資料:

如果以ascii形式,每一點佔據乙個新行:

p_1p_2

p_n注意:從pcl 1.0.1版本開始,用字串「nan」表示nan,此字元表示該點的值不存在或非法等。

如果以二進位制形式,這裡資料是陣列(向量)pcl::pointcloud.points的乙份完整拷貝,在linux系統上,我們用mmap/munmap操作來盡可能快的讀寫資料,儲存點雲資料可以用簡單的ascii形式,每點佔據一行,用空格鍵或tab鍵分開,沒有其他任何字元。也可以用二進位制儲存格式,它既簡單又快速,當然這依賴於使用者應用。ascii格式允許使用者開啟點雲檔案,使用例如gunplot這樣的標準軟體工具更改點雲檔案資料,或者用sed、awk等工具來對它們進行操作。

示例:.pcd v.7 - point cloud data file format

version .7

fields x y z

size 8 8 8

type f f f

count 1 1 1

width 55061

height 1

viewpoint 0 0 0 1 0 0 0

points 55061

data ascii

165.910849 111.848930 855.473457

232.670594 148.455302 1272.738956

232.670594 148.455302 1272.738956

411.064056 234.325784 1998.515717

pcd檔案的書寫格式

每乙個pcd檔案包含乙個檔案頭,它確定和宣告檔案中儲存的點雲資料的某種特性。pcd檔案頭必須用ascii碼來編碼。pcd檔案中指定的每乙個檔案頭欄位以及ascii點資料都用乙個新行 n 分開了,從0.7版本開始,pcd檔案頭包含下面的字段 version 指定pcd檔案版本 fields 指定乙個點...

PCD檔案格式詳解及在PCL下讀取PCD檔案

在點雲庫pcl 1.0發布之前,pcd檔案格式就已經發展更新了許多版本。這些新舊不同的版本用pcd vx來編號 例如pcd v5 pcd v6和pcd v7等 分別代表pcd檔案的0.5版 0.6版和0.7版。在pcl中,用到的pcd檔案格式的正式發布是0.7版,即pcd v7。pcd文由 標頭檔案...

PCL學習之PCD檔案格式

先看一段pcd示例資料 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...