唐 堂,徐光輝,劉銘哲
(中國人民解放軍陸軍工程大學,江蘇 南京 210001)
0 引言
點云是三維空間中一組離散坐標點的集合,其中每個點除包含自身所在空間位置的三維坐標信息外,通常還包含顏色、激光反射強度等屬性信息。點云數據的獲取方式可分為直接和間接兩種[1],直接方式通常采用距離傳感器如激光雷達、深度相機等,通過主動發射電磁波并接收回波,獲取相應反射點的坐標,從而獲得場景內物體的幾何信息,結合圖像采集設備可以獲取對應的顏色等屬性信息;間接方式則是通過計算或者采樣從其他形式的數據中獲取點云,比如雙目相機結合運動信息進行三維重建等。其中激光雷達因為具有采集迅速、點云密集、精確度高的特點[2],成為目前最常用的點云采集設備。
點云數據信息量豐富,三維場景表現能力出色,在場景建模、虛擬現實、環境測繪、自動駕駛等領域應用廣泛,前景廣闊。但是,作為一種高維度的信息,密集的點云不可避免地存在著數據量龐大的問題。以Velodyne HDL-64S2 型激光雷達為例,當其以10Hz 的頻率采集數據時,連續運行一小時將產生超過100GB 的數據[3]。雖然快速發展的通信及存儲技術在一定程度上緩解了點云數據量龐大帶來的挑戰,但是在一些分布式、低成本、實時性要求高的場景下,龐大的數據量仍然是制約點云應用和發展的瓶頸。因此,研究如何壓縮點云數據,對其在更多場景下的應用具有重要意義。
點云壓縮算法跟點云獲取方式及其對應場景密切相關。針對激光雷達點云,運動圖像專家組(Moving Pictures Experts Group,MPEG)最先公布的點云壓縮方案L-PCC[4]中使用的是基于八叉樹的幾何編碼。通過八叉樹將目標區域迭代劃分為精細立方體,以樹的形式遍歷訪問目標立方體所在空間,從而實現空間編碼。而在之后公布的G-PCC 方案中[5],引入了一種一維遍歷的預測幾何編碼方法,其基本思想是利用點云中點與點基于幾何距離的領域關系,構建一種預測樹,樹中每個節點的位置信息都可以從其父節點或其祖父節點推斷出來,編碼預測節點和其相關聯的實際點的殘差,從而降低點云幾何信息的冗余。Tu 等人結合激光雷達旋轉掃描獲取點云的特點,將激光雷達原始數據轉化為距離圖,對距離圖序列使用JPEG 進行壓縮,從而間接實現了點云的壓縮。此外,結合場景語義信息來進行點云數據壓縮也取得了不錯的效果[6]。不同于以上算法,Feng 等人[7]利用了單幀點云中含有大量近似平面以及相鄰點云幀中存在大量重復場景的特點,通過平面擬合的方式實現了點云數據的實時壓縮,該方法在算法復雜度、壓縮率、場景應用精度上的綜合表現更為優異。
本文在Feng 等人的基礎上提出了使用預測殘差處理未擬合點距離的方案,解決了其在復雜場景平面信息少或是平面擬合精度要求高導致的非擬合點過多,占據大量編碼空間的問題,能夠在同等誤差精度條件下,取得比原算法更好的壓縮效果。
1 編解碼框架介紹
本文設計的基于平面擬合及殘差預測的編解碼框架如圖1 所示,它由編碼端和解碼端兩部分構成。編碼端首先將三維點云降維轉換為二維距離圖,轉換方法是根據點云中點的坐標位置,計算其相對于原點的旋轉角、俯仰角以及直線距離,根據激光雷達角度分辨率對旋轉角和俯仰角進行量化,量化值分別作為二維距離圖中像素位置的列索引和行索引,直線距離則作為該像素的像素值,如此點云中的每個點便可以投射到二維距離圖中的某個像素上。降維轉換可以將無序的點云轉換為有序的二維圖,同時可以最大限度地保留點云中點的相關性,為后續的平面擬合及殘差預測奠定基礎。此過程中生成的二維占位圖與距離圖具有同等尺寸,像素值用單個比特1 或0 編碼,指示距離圖對應的像素上是否存在點云投射點,用于解碼過程。在二維圖的基礎上,以固定數量的像素拼接的像素塊為單位,進行平面擬合,由可以擬合的像素提取得到相應的平面參數,不能擬合的像素則進行預測編碼,得到相應的預測值、殘差值和孤立值。擬合的過程中產生相關的索引值用來區分可擬合像素塊、可預測像素塊及孤立像素塊。最后對平面參數、索引、預測、殘差、孤立值及占位圖進行熵編碼,產生可以保存或傳輸的二進制碼流。解碼端解碼提取相應數據,根據相關參數及索引對空白距離圖進行像素值填充,最后進行升維轉換,恢復得到原始點云數據。編解碼過程中數據形式轉換如圖2 所示。

圖1 平面擬合及殘差預測編解碼框架

圖2 編解碼過程數據形式轉換
2 平面擬合及殘差預測
2.1 平面擬合
平面擬合的基本思想是使用空間平面去擬合空間中孤立的點,當空間中某一區域的點共面時,就可以用該擬合平面去間接表示所有位于該平面上的點,從而實現減少保存的數據量的目的。常用的車載激光雷達采集數據示例如圖3 所示:位于移動載具上的激光雷達發出短脈沖激光束,當激光束照射到目標物體上時,會被部分反射回來,激光雷達接收到反射回來的激光脈沖信號,并測量信號的時間差以計算距離。利用多次測量可以獲取目標物體在三維空間中的坐標。實際場景中存在大量共面的點,比如平整的墻壁、汽車部分表面以及平坦的路面,即使有些宏觀上看起來并不規則的物體,也可以用一系列微小的平面去近似拼接表示。基于這一特征,激光雷達采集到的點云中實際存在大量共面的點,因此可以使用平面擬合來降低點云的信息 冗余。

圖3 激光雷達采集數據示例及點云局部放大
使用空間平面去擬合空間中共面的點,其實就是根據給定的點確定一組平面參數,使得所有目標點距離該平面的距離都在允許的誤差范圍內。為此,可以使用最小二乘法得到相應的平面參數。其基本思想是通過最小化誤差的平方和來尋找數據的最佳匹配函數。假設有n個待擬合的三維坐標點(xi,yi,zi),i=1,2,3,…,n。當平面不過原點時,平面方程可以表示為:
對于平面擬合來說,誤差最小就是將待擬合的點帶入式(1)后,等式右邊取值盡可能接近0,因此可以得到以下目標函數:
為使式(2)最小,需要對a,b,c分別求偏導數,使得:
具體編碼是在降維轉換后形成的二維距離圖的基礎上進行的。將二維距離圖按照固定個數的像素點進行分塊,因為降維操作的過程保留了相鄰位置點的領域關系,因此同一塊內的像素點所對應的點云中點的分布也具有領域關系。對塊內的像素點使用上述方法進行平面擬合,得到一個擬合平面,之后判斷該塊內的所有像素點到擬合平面的歐式距離是否小于某一設定閾值。當所有點的誤差都在閾值范圍內時,即認為該像素塊可以被平面擬合,平面的參數隨即確定,通過保存該擬合平面的參數來替代保存該像素塊內的像素點,因為只需要保存3 個參數,而像素塊內的像素點的數量是超過3 的,所以能夠實現減少數據量的目的。當像素塊內存在點到擬合平面的距離超過閾值時,則說明無法擬合出滿足要求的平面,認為該像素塊內的像素不在同一平面內,需要進行殘差預測或者獨立編碼。
在解碼端,當解碼的像素塊被平面擬合編碼時,根據激光雷達采集點云的原理,只需要知道激光的入射角度、擬合平面參數以及該位置是否存在投射點,即可恢復出該點的空間坐標位置。激光的入射角度已經被編碼在二維距離圖的橫縱坐標索引里,對應的像素點是否被點云投射可以根據二維占位圖獲取。
2.2 殘差預測
平面擬合主要利用的是點云中存在共面的點這一特點,通過平面來替代該面上的一個個孤立的點,從而降低信息冗余。當場景比較簡潔、規整時,比如城市道路、橋梁隧道環境下,激光雷達采集到的點云存在大量共面的點,平面擬合壓縮效果顯著。但是當場景信息復雜時,比如灌木林立的郊區道路環境,點云中不共面的點較多,需要被單獨編碼,壓縮性能降低。圖4 展示了激光雷達采集數據的兩種不同場景:場景1 是隧道環境,存在較多平面目標物;場景2是郊區道路環境,雖然存在平整的路面,但是道路兩邊有茂密的樹木,幾乎無法用平面進行擬合。

圖4 激光雷達采集數據場景
對兩種場景下采集的激光雷達數據使用相同的參數進行平面擬合壓縮處理,表1 統計了兩種場景點云壓縮相關數據。

表1 兩種場景平面擬合壓縮數據統計
從表1 可以看出,在相同壓縮參數下,不同場景采集到的點云中,不能被平面擬合的點數存在較大差異,并且非擬合點的占比對壓縮效果有較大影響。因此,如果能夠對非擬合點進行一定的處理,而不是直接保存其距離值,將會提升點云壓縮的效果。
對于降維轉換后的二維距離圖來說,像素點上的距離值實際上是激光雷達到場景地物反射點的距離,同一場景地物的多個反射點到激光雷達的距離應該是相近的,而二維距離圖保存了空間中反射點之間的領域關系,因此二維距離圖上相近區域的幾個像素值即使不能被平面擬合,也應該存在一定的近似關系。對場景2 采集到的激光雷達點云進行降維轉換后,對其中不能被平面擬合的像素塊進行抽樣,共抽樣5 次,每次抽取連續的10 個非擬合像素塊,統計抽取的像素塊內所含的像素值分布情況,如圖5 所示。

圖5 非平面點連續區域像素值分布統計
從圖5 可以看出,非擬合點雖然不能被平面擬合,但是像素值的分布較為集中。殘差預測編碼正是利用此特點,對非擬合點進行處理,從而減少信息冗余。
殘差預測同樣是以像素塊為單位,對每個像素塊內的像素值進行操作。在降維轉換、平面擬合編碼的基礎上,針對不能被平面擬合的像素塊,首先判斷該像素塊內的像素值是否可以被預測編碼,即像素值分布是否集中在一個預先設定的較小閾值范圍內,如果像素值分布滿足條件,則以其中最小的值作為該像素塊所有像素的預測值,塊內其余像素值與該預測值相減作為殘差值保留;如果像素值分布不滿足條件,即該塊內的像素值差異過大,則無法進行預測編碼,需要將其作為孤立像素塊,單獨進行編碼。之后對下一個不能擬合像素塊進行預測編碼的判斷,該像素塊的判斷需要參考前一個像素塊的編碼情況,如果前一個像素塊是可以被預測編碼的,則首先判斷當前像素塊是否也在前一個像素塊預測編碼的范圍內,如果是,則利用前一個像素塊的預測值進行殘差預測編碼,如果不在前一個像素塊的預測范圍內,則判斷當前像素塊是否能夠被獨立預測編碼,如果可以,則重新確定預測值并在此基礎上計算殘差,如果不行,則作為孤立像素塊單獨編碼。經過預測編碼后,所有非平面編碼的像素值均可由孤立值、預測值和殘差值所確定。
判斷是否可以預測編碼的閾值對預測編碼效果有著顯著影響,當閾值設置較大時,可被預測編碼的像素塊數量就會增多,預測范圍廣,編碼效果好,但是受到編碼殘差比特數的影響,量化誤差會增大,最終會增加點云的信息損失。因此在實際使用中,預測判別閾值通常根據壓縮需求和點云失真情況來確定。
為了直觀地看到殘差預測的處理效果,選取4種不同場景采集到的單幀點云數據,分別使用平面擬合和平面擬合加殘差預測進行壓縮,統計兩種壓縮方法中的非擬合點數據量,結果如表2 所示。

表2 殘差預測處理前后非擬合點數據量統計
從表2 可以看出,經過殘差預測處理后,非擬合點的數據量顯著減少,殘差預測能夠在原平面擬合算法的基礎上帶來壓縮性能的提升。
3 壓縮性能分析
3.1 實驗環境和評價指標
實驗在Windows 10 系統上完成,電腦配置是Intel Core i5-11300H @ 3.10 GHz,16 GB 運行內存。實驗采用KITTI 數據集,該數據集包含數百個行駛場景的錄制視頻序列、激光雷達數據和圖像數據,被廣泛用于自動駕駛和計算機視覺領域。其中的激光雷達數據主要是通過搭載的Velodyne HDL-64E 傳感器采集,該傳感器擁有64 個激光發射器和接收器,每秒鐘可以生成高達100萬個測量點,配合旋轉支架,可以在水平平面上捕捉高密度的3D 點云信息。
使用編碼每個點所用的比特數(bpp)表示點云壓縮程度,其計算公式為:
式中:Size(P)表示點云的數據量,單位為bit;N(P)表示點云中點的總數。例如:原始點云編碼每個點的坐標需要使用96 bit 數據,則原始點云的bpp就是96,壓縮后的點云bpp則是以壓縮包的數據量除以原始點云中點的個數得到,因此bpp越小表示壓縮后的數據量越小,壓縮程度越大。
因為是有損壓縮,所以還需要評估壓縮后信息的損失情況。本文使用兩種方法對信息損失進行量化評估。第一種方法是對稱最近鄰均方根誤差,該指標是直接比較解壓重建后的點云與原始點云的位置差異,通過計算所有點的位置偏移均值來量化壓縮導致的點云幾何失真[8]。具體的計算方法為:對于原始點云P中的每一個點p,通過最近鄰算法在解壓重建的點云Q中找到其對應的點q,P相對于Q的誤差為:
除了比較原始點云和重建點云之間的幾何誤差,本文還從點云應用的角度對信息損失進行評估。位姿估計是點云的一種常見應用,它是指從傳感器數據中估計物體或相機相對于參考坐標系的位置和方向信息,在計算機視覺、機器人及自動駕駛等領域使用廣泛。本文使用激光雷達里程計建圖(Lidar Odometry and Mapping,LOAM)算法[9],基于同一段序列,對經過不同程度壓縮解壓后的點云進行位姿估計,通過比較位姿估計的誤差來衡量壓縮算法對點云應用造成的影響。
3.2 實驗結果與分析
本次實驗與基于平面擬合、八叉樹[10]及JPEG[3]的點云壓縮方法進行對比。針對直接信息損失比較,使用KITTI 數據集中不同場景共10 幀激光雷達點云作為壓縮處理對象。圖6 是本文算法與其他3 種算法在不同壓縮程度下,幾何信息損失的情況。從圖中可以看出,隨著壓縮程度加大,4 種算法都表現出了信息損失增加的情況;在同等誤差條件下,本文提出算法的bpp最小,表明壓縮性能最好。

圖6 不同點云壓縮方法失真情況比較
針對位姿估計應用評價,使用KITTI 數據集中一段30 秒內連續采集的激光雷達點云序列作為壓縮處理對象。采用不同的壓縮算法對該序列進行不同程度的壓縮解壓后,使用a-loam 算法進行位姿估計,結果如圖7 所示。從圖中可以看出,在同等位姿估計誤差情況下,本文提出的算法能將該段序列點云數據量壓縮至最小。

圖7 不同壓縮算法位姿估計精度比較
4 結語
本文針對激光雷達點云壓縮,在平面擬合算法的基礎上,對非平面擬合點進行殘差預測處理,有效改善了高擬合精度和復雜場景下平面擬合壓縮性能下降的情況。從直接信息損失和應用精度兩個方面比較了不同壓縮率情況下,壓縮導致的點云失真情況。結果表明,本文算法較八叉樹壓縮和基于JPEG 的壓縮有較大提升,優于之前的基于平面擬合的壓縮算法。