日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

PCL:点云数据(*.pcd)文件格式详解

發布時間:2023/12/16 编程问答 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 PCL:点云数据(*.pcd)文件格式详解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

    • 1 什么是PCD?
    • 2 pcd文件頭示例
    • 3 文件頭格式說明

1 什么是PCD?

PCD(Point Cloud Date,點云數據) 對應的文件格式為 (*.pcd),是PCL官方指定格式,具有ASCIIbinary兩種數據存儲類型,pcd格式具有文件頭,用于描繪點云的整體信息。

2 pcd文件頭示例

# .PCD v0.7 - Point Cloud Data file format VERSION 0.7 FIELDS x y z SIZE 4 4 4 TYPE F F F COUNT 1 1 1 WIDTH 278 HEIGHT 1 VIEWPOINT 0 0 0 1 0 0 0 POINTS 278 DATA binary

3 文件頭格式說明

在點云庫(PCL)1.0版本發布之前,PCD文件格式有不同的修訂號。這些修訂號用PCD_Vx來編號(例如,PCD_V5、PCD_V6、PCD_V7等等),代表PCD文件的0.x版本號。然而PCL中PCD文件格式的正式發布是0.7版本(PCD_V7)。

每一個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 + surface normals FIELDS j1 j2 j3 // moment invariants
  • SIZE ------ 用字節數指定每一個維度的大小,例如:

unsigned char/char // 1 byte
unsigned short/short // 2 bytes
unsigned int/int/float // 4 bytes
double // 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有可能在不同坐標系之間轉換的時候應用,在輔助獲取其他特征時也比較有用,例如曲面法線,在判斷方向一致性時,需要知道視點的方位,

視點信息被指定為平移(tx, ty, tz)+ 四元數(qw, qx, qy, qz)。默認值是:

VIEWPOINT 0 0 0 1 0 0 0

  • POINTS ------ 指定點云中點的總數。

從0.7版本開始,該字段就有點多余了,因此有可能在將來的版本中將它移除。

例子:

POINTS 307200 #點云中點的總數為307200

  • DATA ------ 指定存儲點云數據的數據類型。

從0.7版本開始,支持兩種數據類型::ASCII形式和binary形式

注意: 文件頭最后一行(DATA)的下一個字節就被看成是點云的數據部分了,它會被解釋為點云數據。

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

VERSION、FIELDS、SIZE、TYPE、COUNT、WIDTH、HEIGHT、VIEWPOINT、POINTS、DATA ,之間用換行隔開。

數據存儲類型

在0.7版本中,.PCD文件格式用兩種模式存儲數據

  • ASCII形式,每一點占據一個新行:
# .PCD v0.7 - Point Cloud Data file format VERSION 0.7 FIELDS x y z SIZE 4 4 4 TYPE F F F COUNT 1 1 1 WIDTH 89 HEIGHT 1 VIEWPOINT 0 0 0 1 0 0 0 POINTS 89 DATA ascii -21.368 -137.98199 -23 -21.301001 -137.745 -23 -21.257 -137.52699 -23 -21.219999 -137.34801 -23 -21.153 -137.12399 -23 -21.117001 -136.967 -23 -21.066999 -136.71001 -23 -20.999001 -136.47301 -23 -20.954 -136.23599 -23 -20.882 -135.97501 -23...
  • 二進制(binary)形式

這里數據是數組(向量)pcl::PointCloud.points的一份完整拷貝,比ASCII碼形式快速,但txt文本打開,點數據為亂碼。


相關鏈接

PCL點云數據處理基礎??????目錄

總結

以上是生活随笔為你收集整理的PCL:点云数据(*.pcd)文件格式详解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。