大型點雲壓縮相關介紹:LASzip: lossless compression of LiDAR data論文解讀代碼梳理;MEPG的V-PCC和G-PCC


LAZ和LAS

下圖為標准LAS的數據類型,論文將其分類為四種類型

數據壓縮 解壓 序列化 反序列化

LASzip

Rapidlasso GmbH 的免費開源產品,可以將快速將龐大的 LAS 文件轉換為緊湊的 LAZ 文件而不會丟失信息。
LASzip 是 2012 年地理空間世界論壇獲得激光雷達處理技術創新獎,也是 2012 年 INTERGEO 創新產品的亞軍。
圖片中是用PDAL工具壓縮后和壓縮前的大小對比。壓縮后是原數據的0.498倍。

paper

paper簡介:LASzip壓縮器對點集進行分塊壓縮,由四部分組成:POINT10,GPSTIME10,RGB12和WAVEPACKET13。
解壓和壓縮過程是借鑒的 這篇文章
,是用一個類似於kdtree/Octree的分類方式,簡單來說就是,對線性增量即熵求最優,也是分為8個維度然后每個維度的線性預測差值區間為,可以構造類似與八叉樹的結構進行編碼。

軟件是開源的,且向后兼容。

且允許在壓縮后的laz文件中查找點,每5萬點分成一個壓縮快,一個文件由多個壓縮塊組成。

point10的壓縮,我們以Return Number(r)和Number of Returns of Pulse(n)重構為例,具體是根據一些二進制掩碼什么的重構的,重構示意:

重構后的字段信息:

還會生成一個l陣,l = n - r

其余的也是會生成類似的矩陣

MEPG

MEPG是做視頻壓縮為主的公司,在VR相關工作中,開發了點雲壓縮技術——PCC(point cloud compression)。發展出了基於視頻的PCC(V-PCC)和基於幾何的PCC(G-PCC)。

分別介紹V-PCC和G-PCC。

V-PCC:

其技術是基於之前開發的視頻壓縮技術,視頻流是二維圖像數據,故先將3D點雲投影到2D上。基礎版本的V-PCC發表在《An emerging point cloud compression standard》上。

投影方式是基於±x, ± y, ± z的正交投影,根據點的法向量確定最相關的投影方向。為了避免三維到二維轉換中,不同三維點對應同一二維平面點,將不同距離的點投影到不同的二維圖像中,看成多個視頻流。投影過程中還有一些其他小的Tricks,比如考慮深度值的變換差值、空點插值等,以及插值造成的重復點的剪枝等。

這種形式類似於視頻,可以進行分辨率之類的設置,可以有損也可以無損壓縮,中間的一些Tricks可能造成,壓縮前后點雲數量不一致的情況(本人推測)。

G-PCC

這種方式是需要先進行體素化的,本身體素化的過程就是有損的,其后面的過程可以保證無損,但整個過程注定是有損的。其編碼方式借鑒了八叉樹,根據點雲每個體素內的占用與否編碼成二進制,占用為1不占用為0。

這種方式的壓縮有三種編碼方式供選擇,(a) RAHT; (b) Predicting Transform;(c) Lifting Transform,其中只有Predicting Transform,是無損的。
這里只介紹無損的Predicting Transform,它是一種基於插值的分層最近鄰預測方案。他有一種特定的歐式距離的點的划分准則,下圖划分了三個歐式距離范圍層級,層級越高分辨率越低(L),層級越低細化程度越高(H)。

查找最近點的時候先在同一層級中查找,再去往下一個相鄰層級。
編碼的時候先是最高層級的往低層級的分裂,層級屬性為分辨率L(N)和細化程度H(N),同時會根據規則生成一個預測值P(N)和偏差值D(N),在解碼時用同樣的數值反變換即可。

Lastool讀取laz點雲相關代碼梳理

測試結果

測試目標 Darco lz4 lazperf laszip
文件格式(大小、點數) 壓縮前.ply(818kb 7w點)——壓縮后.drc 壓縮前.las(262M左右 809w點)——壓縮后.lz4 壓縮前.las(262M左右 809w點)——壓縮后.laz 壓縮前.las(279M左右 984w點)——壓縮后.laz
壓縮率 50%(-qp = 20) 43%(-qp = 16) 33%(-qp = 13(默認數值)) 總體在百分之30-50左右比較看數據(各字段二進制編碼相似程度) 25%左右 25%左右
誤差 <萬分之一(-qp = 20) 萬分之三(-qp = 16) 千分之二(-qp = 13(默認數值)) 無損 無損 無損
壓縮時間 441ms(-qp = 20) 309ms(-qp = 16) 290ms(-qp = 13) 3979ms 直接保存為laz格式,不計時間,不做實時存取,直接讀.laz 直接保存為laz格式,不計時間,不做實時存取,直接讀.laz
解壓時間 131ms(-qp = 20) 121ms(-qp = 16) 113ms(-qp = 13) 445ms 直接讀取遍歷所有x坐標點,laz:60969ms las:3018ms 直接讀取遍歷所有x坐標點,laz:18511ms las:4051ms

注:后面會出laslayer相關的文章,是一種IO提速方式,會讓laszip下laz讀取的時間大大降低。這里測試的是沒做過laslayers處理的laz,進行坐標遍歷


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM