点云数据格式说明
1. LiDAR點云數據
LiDAR,是Light Detection and Ranging即光探測和測距的縮寫。
常見點云文件格式如下:
.las,.laz(LiDAR數據的工業標準格式,是一種二進制文件格式)
.pcd(PCL庫官方指定格式)
.obj(是由Alias|Wavefront Techonologies公司從幾何學上定義的3D模型文件格式,是一種文本文件)
.pcap(現在流行的Velodyne公司出品的激光雷達默認采集數據的二進制文件格式)
.ply(一種由斯坦福大學的Turk等人設計開發的多邊形文件格式,因而也被成為斯坦福三角格式。文件格式有文本和二進制兩種格式)
.pts(被稱之為最簡便的點云格式,屬于文本格式。只包含點坐標信息,按X Y Z順序存儲)
.xyz,.txt(一種文本格式)
LAS是點云文件的一種,LAS文件是根據幾種規格打包的二進制文件,LAS文件只要是倆部分:點云規格、點云點數據;
las格式作為點云數據的一種,常見于自動駕駛、高精地圖制作的使用中。las文件旨在包含激光雷達點云數據記錄。
2.las格式版本
las文件是一個二進制文件,其中定義的數據類型與C語言中數據類型一致。到目前為止,las共有6版分別是:
Superseded ASPRS LAS 1.4 Format Specification R14 March 26 2019 (PDF)
Superseded ASPRS LAS 1.4 Format Specification R13 July 15 2013 (PDF)
Superseded ASPRS LAS 1.3 Format Specification October 24 2010 (PDF)
Superseded ASPRS LAS 1.2 Format Specification September 2 2008 (PDF)
Superseded ASPRS LAS 1.1 Format Standard May 7 2005 (PDF)
Superseded ASPRS LAS 1.0 Format Standard May 9 2003 (PDF)
3. las數據類型
| 序號 | 數據類型 | 字節數 |
| 1 | char | 1? |
| 2 | unsigned char | 1? |
| 3 | short | 2? |
| 4 | unsigned short | 2? |
| 5 | long | 4? |
| 6 | unsigned long | 4 |
| 7 | double | 8 |
?Python常用于解析點云數據,Python數據類型與C語言數據類型對應關系,具體可參考鏈接?struct解析二進制數據
| x | pad byte | no value | ||
| c | char | bytes of length 1 | 1 | |
| b | signed char | integer | 1 | (1), (2) |
| B | unsigned char | integer | 1 | (2) |
| ? | _Bool | bool | 1 | (1) |
| h | short | integer | 2 | (2) |
| H | unsigned short | integer | 2 | (2) |
| i | int | integer | 4 | (2) |
| I | unsigned int | integer | 4 | (2) |
| l | long | integer | 4 | (2) |
| L | unsigned long | integer | 4 | (2) |
| q | long long | integer | 8 | (2) |
| Q | unsigned long long | integer | 8 | (2) |
| n | ssize_t | integer | (3) | |
| N | size_t | integer | (3) | |
| e | (6) | float | 2 | (4) |
| f | float | float | 4 | (4) |
| d | double | float | 8 | (4) |
| s | char[] | bytes | ||
| p | char[] | bytes | ||
| P | void* | integer | (5) |
4. las格式的完整構成
| 序號 | las1.0~las1.2 | las1.3~las1.4 | 中文說明 |
| 1 | PUBLIC HEADER BLOCK | PUBLIC HEADER BLOCK | 公共頭 |
| 2 | VARIABLE LENGTH RECORDS | VARIABLE LENGTH RECORDS(VLR) | 可變長度記錄域 |
| 3 | POINT DATA RECORDS | POINT DATA RECORDS | 點數據記錄域 |
| 4 | EXTENDED VARIABLE LENGTH RECORDS (EVLR) | 擴展可變長度記錄域 |
5.公共頭不同版本構成
以 las1.2為例列出公共頭信息如下表。其它不同版本有不同程度增刪,具體詳見上述官方鏈接。
| 序號 | 類別 | 格式 | 字節數 | 必須 | las版本 | 備注 |
| 1 | File Signature (“LASF”) | char[4] | 4 | * | 1.1~1.4 | |
| 2 | File Source ID | unsigned short | 2 | * | ||
| 3 | Global Encoding | unsigned short | 2 | * | ||
| 4 | Project ID - GUID data 1 | unsigned long | 4 | |||
| 5 | Project ID - GUID data 2 | unsigned short | 2 | |||
| 6 | Project ID - GUID data 3 | unsigned short | 2 | |||
| 7 | Project ID - GUID data 4 | unsigned char[8] | 8 | |||
| 8 | Version Major | unsigned char | 1 | * | 1.1~1.4 | |
| 9 | Version Minor | unsigned char | 1 | * | 1.1~1.4 | |
| 10 | System Identifier | char[32] | 32 | * | ||
| 11 | Generating Software | char[32] | 32 | * | ||
| 12 | File Creation Day of Year | unsigned short | 2 | * | ||
| 13 | File Creation Year | unsigned short | 2 | |||
| 14 | Header Size | unsigned short | 2 | |||
| 15 | Offset to point data | unsigned long | 4 | * | ||
| 16 | Number of Variable Length Records | unsigned long | 4 | * | ||
| 17 | Point Data Format ID (0-99 for spec) | unsigned char | 1 | * | ||
| 18 | Point Data Record Length | unsigned short | 2 | * | ||
| 19 | Number of point records | unsigned long | 4 | * | ||
| 20 | Number of points by return | unsigned long[5] | 20 | * | ||
| 21 | X scale factor | double | 8 | * | 1.1~1.4 | |
| 22 | Y scale factor | double | 8 | * | 1.1~1.4 | |
| 23 | Z scale factor | double | 8 | * | 1.1~1.4 | |
| 24 | X offset | double | 8 | * | 1.1~1.4 | |
| 25 | Y offset | double | 8 | * | 1.1~1.4 | |
| 26 | Z offset | double | 8 | * | 1.1~1.4 | |
| 27 | Max X | double | 8 | * | 1.1~1.4 | |
| 28 | Min X | double | 8 | * | 1.1~1.4 | |
| 29 | Max Y | double | 8 | * | 1.1~1.4 | |
| 30 | Min Y | double | 8 | * | 1.1~1.4 | |
| 31 | Max Z | double | 8 | * | 1.1~1.4 | |
| 32 | Min Z | double | 8 | * | 1.1~1.4 |
6.坐標轉換關系
7.點數據記錄格式?
在las1.0版本中定義了點數據格式0,其一共20(12+8)字節數據,在las1.0~las1.4的版本中點數據格式1到5都是在點數據格式0基礎上增添字段。詳見上述鏈接對應的官方文檔。
在las1.4版本中增加了點格式6,其一共30字節數據,在las1.4版本中點格式7到10都是在點數據格式6基礎上增添字段。詳見上述鏈接對應的官方文檔。
不同版本las對應的點數據格式匯總如下表。
| 1.0,1.1 | 0, 1 |
| 1.2 | 0, 1, 2, 3 |
| 1.3 | 0, 1, 2, 3, 4, 5 |
| 1.4 | 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 |
不同版本對應的點數據記錄數匯總如下:
?
?
?
8.點云數據常用信息
利用點云數據解析結果,用于點云分割,道路標線特征提取與矢量化等自動駕駛相關的應用場景,上述不同版本點云數據比較常用的信息如下表。其中強度值與RGB值可二取一或二者有之,兩者都有時效果更佳。
| 序號 | 項目 | 說明 | 備注 |
| 1 | X | X坐標 | 必須 |
| 2 | Y | Y坐標 | 必須 |
| 3 | Z | Z坐標 | 必須 |
| 4 | Intensity | 反射強度 | 可選 |
| 5 | R | 點Red顏色通道值 | 可選 |
| 6 | G | 點Green顏色通道值 | 可選 |
| 7 | B | 點Blue顏色通道值 | 可選 |
9.解析庫與可視化工具
常用的解析las點云數據的python庫有laspy,?plcpy
常用的顯示點云數據的軟件有CloudCompare,QGIS(3.20或以上),matlab(2018a或以上)
總結
- 上一篇: #define typedef 区别
- 下一篇: 【struts2】预定义拦截器