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

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

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

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

圖4 激光雷達(dá)采集數(shù)據(jù)場景
對兩種場景下采集的激光雷達(dá)數(shù)據(jù)使用相同的參數(shù)進行平面擬合壓縮處理,表1 統(tǒng)計了兩種場景點云壓縮相關(guān)數(shù)據(jù)。

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

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

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

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

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