王澤峰,鄭明魁,陳鋒,黃昕
(福州大學物理與信息工程學院,福建 福州 350108)
點云是在同一空間參考系下表達目標空間分布和目標表面特性的海量點集合,在獲取物體表面每個采樣點的空間坐標和屬性信息后,得到的是點的集合,稱之為點云.點云通常是由幾何信息和屬性信息這兩部分組成,幾何信息指的是三維空間的位置信息,屬性信息包括反射率、 顏色等[1].根據點云的運用場景不同,點云可以分為3類[2].一類: 靜態點云表示靜止不動的物體,通常應用在文物保護等; 二類: 動態時變點云表示隨時間變化動態單一物體,通常應用在AR/VR; 三類: 動態獲取點云表示運動的場景,通常應用在無人駕駛等方面.點云應用廣泛,但是點云的數據量龐大,對存儲和傳輸是非常大的挑戰.例如,在默認設置下的Velodyne HDL-64ES2 LiDAR工作半小時就能產生50 GB以上的數據,而無人駕駛特別是車路協同等領域需要高性能壓縮效率的編碼方法.
國際標準對動態獲取點云的幾何編碼方法是八叉樹編碼[3],利用八叉樹結構中的葉子節點與根節點具有緊密聯系的特點,編碼點云的幾何信息.動態圖像專家組(moving picture experts group,MPEG)在2018年針對動態獲取點云和靜態點云推出第一代點云壓縮標準——基于幾何的點云壓縮(geometry-based point cloud compression,G-PCC)[4].G-PCC的幾何編碼在八叉樹編碼的基礎上做了改進,例如借鑒了Mekuria等[5]基于塊的思想,增加了幀內預測和孤立點編碼等.八叉樹編碼實現將無序的點云分層分級,使得點云具有順序性,增加點與點之間的相關性.近幾年,也有人用深度學習方法編碼車載激光雷達點云數據[6-7],但是需要耗費大量時間對點云數據集研究和訓練,不符合自動駕駛領域實時性的要求.
基于八叉樹的幾何編碼方法中,每個八叉樹葉子節點都表示一個點是否被占用,對被占用的葉子節點做編碼.因為八叉樹是分層分級的結構,當點云場景范圍較大時或者分布不均勻時,深層的葉子節點需要用更多比特表示,導致壓縮性能有待進一步提高.針對八叉樹編碼問題,Tu等[8]利用雷達掃描獲取點云的特點,提出將點云幾何信息轉化到二維空間,采用圖像壓縮的方法編碼點云數據.即從原始數據包中提取點云數據轉化為距離圖.采用圖像的方式表示點云幾何信息,不僅可以減少點云的空間冗余,還可以減少每個點的占用比特信息.Sun等[9]提出基于聚類的方法,提高點云的局部相關性,進一步縮減空間冗余.該方法關鍵步驟是對距離圖做分割聚類,但是動態獲取點云的稀疏性導致點云在經過分割算法[10-11]聚類后,點云分類過多,分割區域編碼時邊緣信息過多,降低了編碼效率.
由于車載激光雷達點云的場景范圍大,分布不均勻,不利于采用八叉樹編碼方法.因此,本研究選擇將三維點云的幾何信息映射到二維的距離圖,圖片分辨率由激光雷達參數決定,不受點云場景范圍的影響.針對分割區域編碼時邊緣信息過多的問題,提出孤立區域精細處理的方法,減少邊緣信息,提高編碼性能.結合圖像無損編碼的方法,提出一種二維距離圖分割的激光雷達點云無損壓縮方法.
為了解決同類別點云存在較大空域冗余的問題,Sun等[9]提出基于聚類方法提高點云的局部相關性,減小空間冗余.該算法關鍵步驟之一是非地面處理,非地面處理主要是對非地面物體編碼,分為輪廓編碼和區域值編碼.輪廓編碼選擇文獻[12]提出的邊界編碼方法,區域值編碼采用算術編碼.但是動態獲取點云具有稀疏性,分割后點云類別過多,導致對分割區域編碼時邊緣信息的增多,降低了輪廓編碼性能.針對這個問題,本研究提出孤立區域精細處理的方法解決過度分割的問題,結合圖像無損編碼的方法, 提出二維距離圖分割的激光雷達點云無損壓縮方法.編碼框架如圖1所示.
動態獲取點云的場景范圍大,分布不均勻,不利于八叉樹編碼.研究首先將稀疏分布的點云幾何信息映射到二維距離圖,有利于后續的編碼.受文獻[9]啟發,選擇基于距離圖分割的方法,提高點云的局部相關性,有利于壓縮性能的提高.由于動態獲取點云的稀疏性和離群點的影響,導致點云分割存在過分割問題,產生過多邊緣信息和孤立區域,區域編碼時增加編碼復雜度和所需比特數,降低了編碼性能.針對這個問題,本研究提出孤立區域提取的方法,有效減少邊緣信息,改善分割效果.同類別的點云與激光雷達的距離是相近的,針對這個特點,提出最小值預測方法,有利于編碼性能進一步提高,減少部分空域冗余.為保持殘差、 地面區域等數據原有的相關性,利用Compresso[12]和JPEG-LS[13]兩種無損的數據壓縮技術進行編碼.殘差的無損編碼表示編碼過程沒有數據損失,則解碼端能夠重建原始距離圖.無損壓縮使點云的數據量減小,則數據傳輸所需的帶寬較小,這對于三維點云傳輸、 無人駕駛領域都有非常重要的作用.
在動態獲取點云中,同類別的點云存在較強的相關性,通過有效的分割方法,提高點云局部相關性,有利于壓縮性能的提升.地面是點云中最大的一部分,分布在物體周圍.由于地面與非地面相關性不同,為了提高非地面物體分割準確性,需要先將地面分離出來,分割算法采用文獻[10]提出的方法.地面分割主要思想是選取Z軸最低值的點云投影到XY平面上用極坐標表示,并根據閾值Δα將圓分成若干份.每個分塊的點根據y=mx+b直線方程辨別地面點.通過這個步驟,得到地面點云和非地面點云.非地面點云繼續做分割,區分不同的非地面物體.如圖2所示,圖2(a)是非地面分割圖示,圖2(b)是激光雷達掃描場景的實際例子.點A和點B是激光雷達發射的兩束任意光線OA、OB得到的反射點,β是OA和AB的夾角.如果點A、B屬于同一物體,那么A、B兩點相近,則β接近90°.反之,點A、B屬于不同物體,兩點相距較遠,則β接近0°或者180°.β的計算方法如式(1)所示,d1和d2分別表示兩個反射點距離激光雷達的距離,α是OA和OB之間的夾角.β與設定的閾值θ比較,如果β>θ,則判定兩個點屬于同一個物體,否則判定為不同物體.
(1)

孤立區域精細處理主要分為兩個步驟: 孤立區域的提取和最小值預測.首先是孤立區域的提取,孤立區域是指那些點數較少,因位置、 角度關系被當成單獨類別的點云.孤立區域的存在會增加邊緣信息,影響編碼效率,因此需要提取孤立區域.根據設定的閾值Th劃分非孤立區域與孤立區域,分別是M>Th的點云和M≤Th的點云.盡管孤立區域的點數較少,但是在某個較小鄰域內仍具有較強的相關性,可以單獨提取編碼.另一個關鍵步驟是最小值預測.非地面物體的每個點距離激光雷達的距離都是相近的,即同一個物體的點距離激光雷達的深度是近似的.本研究采用同一類別的最小值作為該類的預測值,使得屬于同一物體的點距激光雷達的距離是相同的,在距離圖上表現為該塊區域的像素值相同.最小值預測處理使得殘差保留原有的相關性,有利于后續殘差編碼.
閾值的選取是非常重要的,閾值太大會使得差別較大的點云劃分為同一類,導致殘差過大.閾值太小則會導致分類太細,邊緣信息過多,區域編碼性能降低.閾值的選取是通過實驗來統計數據的分布情況,進而確定適合的閾值.如圖3所示,選取各個序列前5幀做實驗,橫軸表示閾值范圍,縱軸表示5幀點云的非地面預測區域編碼后的平均數據大小,單位是kB.通過實驗可以發現,隨著閾值的增大,KITTI數據集和FORD數據集都有相似的下降趨勢,在閾值取350時趨于平緩.
為了能直觀地看出本文算法的改善效果,此處對非地面分割區域和非地面預測區域上了顏色,不同顏色代表不同的類別,如圖4所示.數據選擇City序列的第一幀,圖4(a)是點云的非地面分割區域.如圖4(a)所示,由于點云的稀疏性,產生許多孤立區域,導致邊緣信息的增多.直接采用過細分割圖進行編碼,這會大大降低編碼性能.圖4(b)是點云的非地面預測區域.通過兩張圖的對比,可以明顯看出圖4(b)邊緣信息、 孤立區域的驟減,表明孤立區域精細處理是有效的.
由于動態獲取點云的稀疏性,以及目前的點云分割算法存在過度分割的問題,導致對分割區域編碼時,邊緣信息過多,需要消耗較多的比特數.本研究針對這個問題,提出孤立區域精細處理,有效地改善了非地面的分割效果,并且進一步提高了編碼性能.表1展示不同序列點云是否有做孤立區域精細處理的數據量對比.表中數字表示平均每幀點云在不同步驟所需的數據量大小,單位為kB.從表中可以看出,由于分割算法的過分割,邊緣信息增多,使得直接編碼需要占用更多的比特數.而經過孤立區域精細處理后的非地面點云,邊緣信息是顯著減少的,最終編碼所需的比特數相比直接編碼是更少的.

表1 孤立區域精細處理數據量分析
動態獲取點云通過距離圖分割算法,將距離圖分為地面區域與非地面分割區域兩部分,非地面分割區域經過孤立區域提取步驟獲得孤立區域,最后經過最小值預測獲得殘差與非地面預測區域.下面詳述地面區域、 孤立區域、 非地面預測區域和殘差這4種數據的特點與編碼方法.
非地面預測區域的每塊區域的像素值都是相同的,有各自的區域邊界,邊緣信息較少,無噪聲和離群點.基于這種特點,本研究采用compresso[12]編碼.Compresso算法是針對醫學圖像的編碼方法,它根據像素值的差異判定邊緣位置,可以準確地找到邊界信息.該算法對邊界信息采用重排匹配的方法編碼,對上左鄰域都為邊界的像素單獨編碼,區域內的值采用LZMA編碼.Compresso對邊界信息敏感,邊界信息越少越有助于編碼性能的提高,因此非地面預測區域適合采用compresso編碼.
地面是動態獲取點云最大的一部分,范圍廣并且每個部分都是連續有規律的.根據激光雷達的掃描原理,地面的一圈表示激光雷達在某個俯仰角掃描一圈獲得的點云,每個點距離激光雷達的距離幾乎是相同的,在距離圖表現為某一行的像素值基本相同.在Residential序列中選取一幀點云,通過進一步處理得到地面的局部數值圖,如圖5所示.圖中每一列的數值是基本相同的,每一行的數據是相近的且具有相關性.由于點云的稀疏性,點云分割后類別過多,導致分割區域編碼時邊緣信息冗余.孤立區域提取是解決該問題的關鍵步驟.實驗中發現孤立區域的局部數值與圖5相似.盡管孤立區域的點數較少,但是在某個較小鄰域內仍具有較強的相關性.
孤立區域精細處理使得殘差仍具有相關性,并且殘差值很小.選取上述同一幀的點云,統計殘差的分布狀況,如圖6所示.殘差大部分集中在0值附近,表明殘差值很小,相鄰像素點的殘差值相近,具有較強局部相關性.其他數據集也是類似的殘差分布.
JPEG-LS[13]是一種針對連續色調靜態圖像的無損/近無損的壓縮標準.JPEG-LS的核心算法是LOCO-I[14],它結合了Huffman編碼的簡單和上下文建模的巨大壓縮潛力的優點.JPEG-LS有兩種編碼模式,分別是普通模式和游程編碼模式.普通模式不僅能夠根據相鄰像素值預測當前像素值,還能通過當前點像素和相鄰像素的梯度自適應制定殘差最優模型.由于地面、 孤立區域、 殘差它們的局部相關性較強,JPEG-LS能根據相鄰像素較準確地預測當前像素,并且上下文建模的殘差非常小,能夠有效地壓縮數據.因此這3類數據選擇JPEG-LS無損編碼.
實驗在Ubuntu16.04系統上完成,電腦配置是Intel Core Xeon(R) CPU X5670 @2.93 GHz,GTX 1050Ti,8 GB運行內存.實驗采用的點云數據集共有3類,其中一類來自Tier IV的開放數據集[15],另外兩類是KITTI數據集[16]和FORD數據集[17].KITTI數據集選擇4個序列: Campus、 City、 Residential和Road.Ford數據集選擇Ford_01序列,Tier IV 數據集選擇Nagoya_hdl64s2序列.
由于只考慮點云的幾何壓縮,并且距離圖的編碼是無損的,因此評判標準采用壓縮比率CR,如下式所示:

(2)
其中: CR表示壓縮比率, CR越小表示壓縮性能越高,反之表示壓縮性能越差; Sizecoding和Sizeoriginal分別代表編碼后數據大小和原始點云的數據大小.
本次實驗的對比算法是G-PCC和基于聚類的點云壓縮算法.由于兩種算法編碼的數據精度不同,為了與之正確對比,需要對距離圖做進一步處理.根據數值精度的不同,將距離圖分為兩種,分別是距離信息圖和真實距離圖.距離信息圖的數值精確到mm,真實距離圖的數值精確到m.基于聚類的點云壓縮算法選擇的數據集是KITTI的4個序列, 該算法采用的距離圖數值精度精確到m,因此實驗選擇相同數據集,距離圖轉換步驟選擇真實距離圖.由于G-PCC編碼的點云數據精度較高,距離圖轉換選擇距離信息圖,數據集選擇Ford_01、 City、 Nagoya_hdl64s2這3個序列.
1) 距離信息圖.激光雷達原始數據包獲取的距離值是距離信息.根據數據包的存儲特點,設定距離信息圖的行對應64個俯仰角,列對應不同偏航角,像素值表示距離信息,數值精確到mm.距離信息圖的示例圖如圖7所示.
2) 真實距離圖.從激光雷達原始數據包中獲取距離信息后,經過修正之后才是真實測量的距離值.修正公式如下:
Rtrue=Rinfo×resolution+Rcorrection
(3)
式中:Rtrue代表真實距離;Rinfo表示距離信息; resolution表示距離分辨率;Rcorrection表示距離修正值.其中resolution和Rcorrection可在激光雷達參數文件獲取.真實距離圖的像素值表示真實測量的距離值,數值精確到m.圖8是真實距離圖的示例圖.
本次實驗與G-PCC和基于聚類的點云壓縮兩種算法對比,對比序列各采集100幀比較壓縮性能.表2是本文算法與G-PCC在不同數據集上的壓縮率對比結果.實驗結果表明,本文方法與G-PCC相比有較大的壓縮性能提高.其中,本文算法對City序列的編碼性能是最好.因為該序列數據結構單一,包含大量地面點,分割效果更好,編碼性能更優.G-PCC的幾何編碼是八叉樹編碼,該方法對點云場景范圍較集中或者只有單個物體的點云有很好的編碼效果,空間利用率高.由于動態獲取點云的場景范圍較大,空間分布不均勻,采用八叉樹編碼存在較多空分塊,同時又要用比特信息記錄是否有點的存在,既導致空間利用率低,又造成比特信息的浪費.
表3闡述了在KITTI數據集的不同序列上,本文算法與文獻[9]方法的壓縮率對比結果.實驗結果證明本文算法優于文獻[9]方法,最好可以達到2.12%的壓縮率.Road場景相比其他3個場景較復雜,該序列兩側是密集的森林,點云數據更稠密,導致分割效果不佳,編碼效果較差.文獻[9]方法對于Campus序列編碼效果較差,因為該方法未做孤立區域精細處理的步驟,校園內的物體種類相對較多,所以邊緣信息更加豐富,壓縮性能較低.

表2 本文算法與G-PCC的CR對比

表3 本文算法與文獻[9]方法的CR對比
研究針對動態獲取點云的特點,提出一種二維距離圖分割的激光雷達點云無損壓縮方法.點云轉為距離圖首先解決了點云場景范圍大的問題.針對動態獲取點云的稀疏性造成分割類別過多,分割區域編碼時邊緣信息消耗較大比特數的問題,提出孤立區域精細處理,改善過度分割的問題.本文提出的算法不僅壓縮性能好,而且距離圖編碼無數據損失.實驗表明,本文方法較G-PCC有較大提升,優于基于聚類的點云壓縮算法.在連續的點云序列中,相鄰幀之間存在巨大的時域冗余,因此接下來的研究方向將集中在解決點云序列的時域冗余.