1. 程式人生 > >PCD檔案格式(The PCD (Point Cloud Data) file format)

PCD檔案格式(The PCD (Point Cloud Data) file format)

本文件描述PCD(點雲資料)檔案格式,以及它在點雲庫(PCL)中的使用方式。 PCD檔案格式圖示 PCD檔案格式圖示 #為什麼新的檔案格式? PCD檔案格式並不意味著重新發明輪子,而是補充現有檔案格式,由於某種原因,這些格式不支援/不支援PCL為nD點雲處理帶來的一些擴充套件。

PCD不是支援3D點雲資料的第一種檔案型別。特別是計算機圖形和計算幾何社群已經建立了多種格式來描述使用鐳射掃描器獲取的任意多邊形和點雲。其中一些格式包括:

PLY - 由Turk等人在斯坦福大學開發的多邊形檔案格式 STL - 由3D Systems建立的立體光刻CAD軟體原生的檔案格式 OBJ - 由Wavefront Technologies首先開發的幾何定義檔案格式

X3D - 用於表示3D計算機圖形資料的ISO標準的基於XML的檔案格式 和其他 所有上述檔案格式都有一些缺點,正如下一節所解釋的那樣 - 這是很自然的,因為它們是在不同的時間,不同的時間建立的,在今天的感測技術和演算法發明之前。

#PCD版本 在釋出點雲庫(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_x normal_y normal_z    # XYZ + surface normals
FIELDS j1 j2 j3                            # moment invariants
...

SIZE - 以位元組為單位指定每個尺寸的大小。例子: unsigned char/char has 1 byte unsigned short/short has 2 bytes unsigned int/int/float has 4 bytes double has 8 bytes TYPE - 將每個維度的型別指定為char。目前接受的型別是: I - 表示有符號型別int8 (char)int16 (short)int32 (int) U - 表示無符號型別uint8 (unsigned char)uint16 (unsigned short)uint32 (unsigned int) F - 代表float型別 COUNT - 指定每個維度有多少個元素。例如,x資料通常具有1個元素,但是像VFH的特徵描述符 具有308個。基本上這是一種在每個點處引入nD直方圖描述符的方法,並將它們視為單個連續的儲存器塊。預設情況下,如果COUNT不存在,則所有維度的計數設定為1。 WIDTH - 指定點雲資料集中點的寬度。WIDTH有兩個含義: 1、它可以指定雲中點的總數(與POINTS相同,見下文),用於無組織的資料集; 2、它可以指定有組織的點雲資料集的寬度(連續點的總數)。 另見HEIGHT

注意 一個有組織的點雲資料集是賦予點雲類似於一個有組織的影象(或矩陣)狀的結構,其中,資料被劃分為行和列的名稱。這種點雲的例子包括來自立體相機或飛行時間相機的資料。有組織的資料集的優點在於,通過了解相鄰點(例如畫素)之間的關係,最近鄰的操作效率更高,從而加快了計算速度,降低了PCL中某些演算法的成本。

例子:

WIDTH 640    # there are 640 points per line

HEIGHT - 指定點雲資料集中點的高度。高度有兩個含義: 1、它可以指定有組織的點雲資料集的高度(總行數) 2、對於未組織的資料集它被設定為1(因此用於檢查資料集是否被組織)。 例:

WIDTH 640      # Image-like organized structure, with 640 rows and 480 columns,
HEIGHT 480      # thus 640*480=307200 points total in the dataset

例:

WIDTH 307200
HEIGHT 1        # unorganized point cloud dataset with 307200 points

VIEWPOINT -指定資料集中的點採集的視點。這可能稍後可能用於在不同座標系之間建立變換,或用於輔助諸如曲面法線之類的需要一致定向的特徵。

視點資訊被指定為平移(tx ty tz)+四元數(qw qx qy qz)。預設值是:

VIEWPOINT 0 0 0 1 0 0 0

POINTS - 指定雲中的總點數。從版本0.7開始,它的目的有點多餘,所以我們期待在將來的版本中將其刪除。 例:

POINTS 307200  # the total number of points in the cloud

DATA - 指定點雲資料儲存的資料型別。從版本0.7開始,支援兩種資料型別:asciibinary。有關更多詳細資訊,請參閱下一節。

      注意
      緊接在標題的最後一行(DATA)之後的下一個位元組被認為是點雲資料的一部分,並將被解釋為這樣。

警告 標題條目必須按上述順序精確指定,即:

VERSION
FIELDS
SIZE
TYPE
COUNT
WIDTH
HEIGHT
VIEWPOINT
POINTS
DATA

#資料儲存型別 從0.7版開始,.PCD檔案格式使用兩種不同的模式來儲存資料:

----以ASCII形式,每個點放在一個新行上:

p_1
p_2
p_3
p_4
...

p_n
      注意
      從PCL版本1.0.1開始,`NaN`的字串表示形式為`nan`。

----以二進位制形式,其中資料是pcl::PointCloud.points陣列/向量的完整儲存器副本 。在Linux系統上,我們使用mmap/munmap操作對資料進行最快的讀/寫訪問。

將點雲資料以簡單的ASCII形式儲存,每一個點在一行,空格或製表符上,而不用任何其他字元,也可以二進位制轉儲格式儲存,這使得我們能夠獲得兩全其美:簡單性和速度取決於底層應用程式。ascii格式允許使用者開啟點雲檔案並使用標準軟體工具(如gnuplot)繪製它們 或使用像sed、awk等工具來操作它們。

#優於其他檔案格式 PCD作為(另一種)檔案格式可以被看作PCL患有 not invented here 綜合徵。事實上,情況並非如此,因為上述檔案格式都不能提供PCD檔案的靈活性和速度。一些清楚說明的優點包括:

----儲存和處理有組織的點雲資料集的能力 - 這對於實時應用和增強現實,機器人等研究領域極為重要; ----二進位制mmap / munmap資料型別是載入資料並將其儲存到磁碟的最快方式。 ----儲存不同的資料型別(all primitives supported: char, short, int, float, double)允許點雲資料在儲存和處理方面靈活高效。無效的點尺寸通常以NAN型別儲存。 ----用於特徵描述符的nD直方圖 - 對3D感知/計算機視覺應用非常重要

另外一個好處是,通過控制檔案格式,我們可以最好地適應PCL,從而獲得與PCL應用程式相比最高的效能,而不是像本機型別那樣將不同的檔案格式適配到PCL,並通過轉換引起額外的延遲功能。

      注意
      儘管PCD(點雲資料)是PCL中的本地檔案格式,但是 `pcl_io`庫也應該提供以所有其他上述檔案格式儲存和載入資料的可能性。

例: 下面附上一個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 1 0 0 0
POINTS 213
DATA ascii
0.93773 0.33763 0 4.2108e+06
0.90805 0.35641 0 4.2108e+06
0.81915 0.32 0 4.2108e+06
0.97192 0.278 0 4.2108e+06
0.944 0.29474 0 4.2108e+06
0.98111 0.24247 0 4.2108e+06
0.93655 0.26143 0 4.2108e+06
0.91631 0.27442 0 4.2108e+06
0.81921 0.29315 0 4.2108e+06
0.90701 0.24109 0 4.2108e+06
0.83239 0.23398 0 4.2108e+06
0.99185 0.2116 0 4.2108e+06
0.89264 0.21174 0 4.2108e+06
0.85082 0.21212 0 4.2108e+06
0.81044 0.32222 0 4.2108e+06
0.74459 0.32192 0 4.2108e+06
0.69927 0.32278 0 4.2108e+06
0.8102 0.29315 0 4.2108e+06
0.75504 0.29765 0 4.2108e+06
0.8102 0.24399 0 4.2108e+06
0.74995 0.24723 0 4.2108e+06
0.68049 0.29768 0 4.2108e+06
0.66509 0.29002 0 4.2108e+06
0.69441 0.2526 0 4.2108e+06
0.62807 0.22187 0 4.2108e+06
0.58706 0.32199 0 4.2108e+06
0.52125 0.31955 0 4.2108e+06
0.49351 0.32282 0 4.2108e+06
0.44313 0.32169 0 4.2108e+06
0.58678 0.2929 0 4.2108e+06
0.53436 0.29164 0 4.2108e+06
0.59308 0.24134 0 4.2108e+06
0.5357 0.2444 0 4.2108e+06
0.50043 0.31235 0 4.2108e+06
0.44107 0.29711 0 4.2108e+06
0.50727 0.22193 0 4.2108e+06
0.43957 0.23976 0 4.2108e+06
0.8105 0.21112 0 4.2108e+06
0.73555 0.2114 0 4.2108e+06
0.69907 0.21082 0 4.2108e+06
0.63327 0.21154 0 4.2108e+06
0.59165 0.21201 0 4.2108e+06
0.52477 0.21491 0 4.2108e+06
0.49375 0.21006 0 4.2108e+06
0.4384 0.19632 0 4.2108e+06
0.43425 0.16052 0 4.2108e+06
0.3787 0.32173 0 4.2108e+06
0.33444 0.3216 0 4.2108e+06
0.23815 0.32199 0 4.808e+06
0.3788 0.29315 0 4.2108e+06
0.33058 0.31073 0 4.2108e+06
0.3788 0.24399 0 4.2108e+06
0.30249 0.29189 0 4.2108e+06
0.23492 0.29446 0 4.808e+06
0.29465 0.24399 0 4.2108e+06
0.23514 0.24172 0 4.808e+06
0.18836 0.32277 0 4.808e+06
0.15992 0.32176 0 4.808e+06
0.08642 0.32181 0 4.808e+06
0.039994 0.32283 0 4.808e+06
0.20039 0.31211 0 4.808e+06
0.1417 0.29506 0 4.808e+06
0.20921 0.22332 0 4.808e+06
0.13884 0.24227 0 4.808e+06
0.085123 0.29441 0 4.808e+06
0.048446 0.31279 0 4.808e+06
0.086957 0.24399 0 4.808e+06
0.3788 0.21189 0 4.2108e+06
0.29465 0.19323 0 4.2108e+06
0.23755 0.19348 0 4.808e+06
0.29463 0.16054 0 4.2108e+06
0.23776 0.16054 0 4.808e+06
0.19016 0.21038 0 4.808e+06
0.15704 0.21245 0 4.808e+06
0.08678 0.21169 0 4.808e+06
0.012746 0.32168 0 4.808e+06
-0.075715 0.32095 0 4.808e+06
-0.10622 0.32304 0 4.808e+06
-0.16391 0.32118 0 4.808e+06
0.00088411 0.29487 0 4.808e+06
-0.057568 0.29457 0 4.808e+06
-0.0034333 0.24399 0 4.808e+06
-0.055185 0.24185 0 4.808e+06
-0.10983 0.31352 0 4.808e+06
-0.15082 0.29453 0 4.808e+06
-0.11534 0.22049 0 4.808e+06
-0.15155 0.24381 0 4.808e+06
-0.1912 0.32173 0 4.808e+06
-0.281 0.3185 0 4.808e+06
-0.30791 0.32307 0 4.808e+06
-0.33854 0.32148 0 4.808e+06
-0.21248 0.29805 0 4.808e+06
-0.26372 0.29905 0 4.808e+06
-0.22562 0.24399 0 4.808e+06
-0.25035 0.2371 0 4.808e+06
-0.29941 0.31191 0 4.808e+06
-0.35845 0.2954 0 4.808e+06
-0.29231 0.22236 0 4.808e+06
-0.36101 0.24172 0 4.808e+06
-0.0034393 0.21129 0 4.808e+06
-0.07306 0.21304 0 4.808e+06
-0.10579 0.2099 0 4.808e+06
-0.13642 0.21411 0 4.808e+06
-0.22562 0.19323 0 4.808e+06
-0.24439 0.19799 0 4.808e+06
-0.22591 0.16041 0 4.808e+06
-0.23466 0.16082 0 4.808e+06
-0.3077 0.20998 0 4.808e+06
-0.3413 0.21239 0 4.808e+06
-0.40551 0.32178 0 4.2108e+06
-0.50568 0.3218 0 4.2108e+06
-0.41732 0.30844 0 4.2108e+06
-0.44237 0.28859 0 4.2108e+06
-0.41591 0.22004 0 4.2108e+06
-0.44803 0.24236 0 4.2108e+06
-0.50623 0.29315 0 4.2108e+06
-0.50916 0.24296 0 4.2108e+06
-0.57019 0.22334 0 4.2108e+06
-0.59611 0.32199 0 4.2108e+06
-0.65104 0.32199 0 4.2108e+06
-0.72566 0.32129 0 4.2108e+06
-0.75538 0.32301 0 4.2108e+06
-0.59653 0.29315 0 4.2108e+06
-0.65063 0.29315 0 4.2108e+06
-0.59478 0.24245 0 4.2108e+06
-0.65063 0.24399 0 4.2108e+06
-0.70618 0.29525 0 4.2108e+06
-0.76203 0.31284 0 4.2108e+06
-0.70302 0.24183 0 4.2108e+06
-0.77062 0.22133 0 4.2108e+06
-0.41545 0.21099 0 4.2108e+06
-0.45004 0.19812 0 4.2108e+06
-0.4475 0.1673 0 4.2108e+06
-0.52031 0.21236 0 4.2108e+06
-0.55182 0.21045 0 4.2108e+06
-0.5965 0.21131 0 4.2108e+06
-0.65064 0.2113 0 4.2108e+06
-0.72216 0.21286 0 4.2108e+06
-0.7556 0.20987 0 4.2108e+06
-0.78343 0.31973 0 4.2108e+06
-0.87572 0.32111 0 4.2108e+06
-0.90519 0.32263 0 4.2108e+06
-0.95526 0.34127 0 4.2108e+06
-0.79774 0.29271 0 4.2108e+06
-0.85618 0.29497 0 4.2108e+06
-0.79975 0.24326 0 4.2108e+06
-0.8521 0.24246 0 4.2108e+06
-0.91157 0.31224 0 4.2108e+06
-0.95031 0.29572 0 4.2108e+06
-0.92223 0.2213 0 4.2108e+06
-0.94979 0.24354 0 4.2108e+06
-0.78641 0.21505 0 4.2108e+06
-0.87094 0.21237 0 4.2108e+06
-0.90637 0.20934 0 4.2108e+06
-0.93777 0.21481 0 4.2108e+06
0.22244 -0.0296 0 4.808e+06
0.2704 -0.078167 0 4.808e+06
0.24416 -0.056883 0 4.808e+06
0.27311 -0.10653 0 4.808e+06
0.26172 -0.10653 0 4.808e+06
0.2704 -0.1349 0 4.808e+06
0.24428 -0.15599 0 4.808e+06
0.19017 -0.025297 0 4.808e+06
0.14248 -0.02428 0 4.808e+06
0.19815 -0.037432 0 4.808e+06
0.14248 -0.03515 0 4.808e+06
0.093313 -0.02428 0 4.808e+06
0.044144 -0.02428 0 4.808e+06
0.093313 -0.03515 0 4.808e+06
0.044144 -0.03515 0 4.808e+06
0.21156 -0.17357 0 4.808e+06
0.029114 -0.12594 0 4.2108e+06
0.036583 -0.15619 0 4.2108e+06
0.22446 -0.20514 0 4.808e+06
0.2208 -0.2369 0 4.808e+06
0.2129 -0.208 0 4.808e+06
0.19316 -0.25672 0 4.808e+06
0.14497 -0.27484 0 4.808e+06
0.030167 -0.18748 0 4.2108e+06
0.1021 -0.27453 0 4.808e+06
0.1689 -0.2831 0 4.808e+06
0.13875 -0.28647 0 4.808e+06
0.086993 -0.29568 0 4.808e+06
0.044924 -0.3154 0 4.808e+06
-0.0066125 -0.02428 0 4.808e+06
-0.057362 -0.02428 0 4.808e+06
-0.0066125 -0.03515 0 4.808e+06
-0.057362 -0.03515 0 4.808e+06
-0.10653 -0.02428 0 4.808e+06
-0.15266 -0.025282 0 4.808e+06
-0.10653 -0.03515 0 4.808e+06
-0.16036 -0.037257 0 4.808e+06
0.0083286 -0.1259 0 4.2108e+06
0.0007442 -0.15603 0 4.2108e+06
-0.1741 -0.17381 0 4.808e+06
-0.18502 -0.02954 0 4.808e+06
-0.20707 -0.056403 0 4.808e+06
-0.23348 -0.07764 0 4.808e+06
-0.2244 -0.10653 0 4.808e+06
-0.23604 -0.10652 0 4.808e+06
-0.20734 -0.15641 0 4.808e+06
-0.23348 -0.13542 0 4.808e+06
0.0061083 -0.18729 0 4.2108e+06
-0.066235 -0.27472 0 4.808e+06
-0.17577 -0.20789 0 4.808e+06
-0.10861 -0.27494 0 4.808e+06
-0.15584 -0.25716 0 4.808e+06
-0.0075775 -0.31546 0 4.808e+06
-0.050817 -0.29595 0 4.808e+06
-0.10306 -0.28653 0 4.808e+06
-0.1319 -0.2831 0 4.808e+06
-0.18716 -0.20571 0 4.808e+06
-0.18369 -0.23729 0 4.808e+06