首先了解一下什么是PCD格式的文件涎才,PCD(Point Cloud Data) 文件是 PCL(Point Cloud Library) 引入的一種新的描述點云的格式鞋既。讓我詳細介紹一下 PCD 文件的結(jié)構(gòu)和內(nèi)容。
(1)文件頭部:
- 每個 PCD 文件都包含一個文件頭耍铜,用于標識并聲明存儲在文件中的點云數(shù)據(jù)的一些特性邑闺。
- PCD 文件頭必須以 ASCII 編碼表示。
- 文件頭的每個字段以及 ASCII 點數(shù)據(jù)都使用 新行(\n) 分隔棕兼。
(2)PCD 文件頭的字段:
下面是 PCD 文件頭的一些字段陡舅,按照指定的順序精確指定:
- VERSION:指定 PCD 文件版本,目前 PCL 支持的版本為 0.7伴挚。
- FIELDS:指定點具有的維度或字段的名稱靶衍,例如 x臂寝、y、z 坐標摊灭、法線咆贬、顏色等。
- SIZE:指定每個維度的大兄愫簟(以字節(jié)為單位)掏缎。
- TYPE:將每個維度的類型指定為一個字符,例如 F(浮點型)煤杀、U(無符號整型)等眷蜈。
- COUNT:指定每個維度有多少個元素,通常為 1沈自。
- WIDTH:以點數(shù)為單位指定點云的寬度酌儒,即點的數(shù)量。
- HEIGHT:有組織的點云數(shù)據(jù)集的高度枯途,即掃描線數(shù)忌怎。
- VIEWPOINT:為數(shù)據(jù)集中的點指定采集視點,用于構(gòu)建不同坐標系之間的變換或處理需要一致方向的特征酪夷,如曲面法線榴啸。
- POINTS:指定云中的點總數(shù)。
- DATA:指定存儲點云數(shù)據(jù)的數(shù)據(jù)類型晚岭,支持三種類型:ascii鸥印、binary 和 binary_compressed。
(3)優(yōu)勢:
- PCD 文件格式相對于其他文件格式的優(yōu)勢包括:
- 存儲和處理有組織的點云數(shù)據(jù)集的能力坦报,對于實時應用和增強現(xiàn)實库说、機器人等研究領(lǐng)域至關(guān)重要。
- 二進制/數(shù)據(jù)類型是將數(shù)據(jù)加載和保存到磁盤的最快方法片择。
- 存儲不同的數(shù)據(jù)類型允許點云數(shù)據(jù)在存儲和處理方面靈活高效潜的。
- 特征描述符的 n-D 直方圖對于 3D 感知/計算機視覺應用非常重要。
(4)代碼示例
import open3d as o3d
# 提取三維模型的信息
def extract_info_to_nparray(pcd):
data = {}
data["points"] = np.asarray(pcd.points)
data["colors"] = np.asarray(pcd.colors)
data["normals"] = np.asarray(pcd.normals)
return data
if __name__ =="__main__":
# demo_icp_pcds = o3d.data.DemoICPPointClouds()
# source = o3d.t.io.read_point_cloud(demo_icp_pcds.paths[0])
# target = o3d.t.io.read_point_cloud(demo_icp_pcds.paths[1])
source = o3d.io.read_point_cloud("./data/output.pcd")
target = o3d.io.read_point_cloud("./data/cloud_bin_1.pcd")
print(extract_info_to_nparray(target))
官網(wǎng)關(guān)于點云類型的數(shù)據(jù)的API:https://www.open3d.org/docs/release/python_api/open3d.geometry.PointCloud.html