周杞鑫,鄒春喜,程琳
(1.中航西安飛機(jī)工業(yè)集團(tuán)股份有限公司,陜西 西安 710089;2.中航西安飛機(jī)工業(yè)集團(tuán)股份有限公司,陜西 西安 710089;3.中航西安飛機(jī)工業(yè)集團(tuán)股份有限公司,陜西 西安 710089)
近幾十年來(lái),出現(xiàn)了各種各樣的三維激光掃描儀和深度相機(jī),使得點(diǎn)云成為許多實(shí)際應(yīng)用的焦點(diǎn),如機(jī)器人抓取[20]、三維重建[11]和自動(dòng)駕駛[24]。通常,掃描的點(diǎn)云只包含與噪聲、不完全性和采樣不規(guī)則性相關(guān)的點(diǎn)空間位置信息,而缺乏點(diǎn)法線(xiàn)等局部曲面幾何屬性。精準(zhǔn)的法線(xiàn)可以促進(jìn)大量的下游任務(wù),例如點(diǎn)云合并[10]、曲面重建[13]和模型分割[8]。因此,對(duì)非結(jié)構(gòu)化點(diǎn)云進(jìn)行法線(xiàn)估計(jì)是一項(xiàng)不可避免的重要任務(wù)。
點(diǎn)云法線(xiàn)估計(jì)問(wèn)題已被廣泛研究,可以將現(xiàn)有的法線(xiàn)估計(jì)技術(shù)大致分為兩類(lèi):傳統(tǒng)方法和基于學(xué)習(xí)的方法。傳統(tǒng)的方法通常利用一些精心設(shè)計(jì)的規(guī)則來(lái)保持或恢復(fù)尖銳的特征,而基于學(xué)習(xí)的方法則追求從噪聲輸入到真實(shí)值的一般映射。傳統(tǒng)的方法中最簡(jiǎn)單和最著名的法線(xiàn)估計(jì)方法是主成分分析法(PCA)[17],通過(guò)分析點(diǎn)鄰域的局部結(jié)構(gòu)的協(xié)方差,將法線(xiàn)定義為最小特征值對(duì)應(yīng)的特征向量。在這項(xiàng)工作之后,文獻(xiàn)[23,7,14]提出了許多變體,Mitra等人[23]分析了鄰域大小、曲率、采樣密度和噪聲對(duì)法線(xiàn)估計(jì)的影響。另一種法線(xiàn)估計(jì)方法是基于Voronoi cells[2,12,1,22]的,然而這種方法不能很好地估計(jì)尖銳特征或附近點(diǎn)的法線(xiàn)。文獻(xiàn)[19,32,30,31]認(rèn)為位于不同曲面的鄰近點(diǎn)應(yīng)該被放棄,應(yīng)該只從位于同一曲面的點(diǎn)中選擇一個(gè)近似鄰域來(lái)估計(jì)法線(xiàn)。[3,28,9]假設(shè)曲面通常是由分段的平面組成的,通過(guò)基于稀疏性的方法在銳利的特征保持方面得到了非常好的結(jié)果。其他一些方法,如霍夫變換[5]也得到了很好的結(jié)果?;趯W(xué)習(xí)的方法近年來(lái)才在法線(xiàn)估計(jì)方面嶄露頭角。Boulch等人[6]提出將一個(gè)表示法向的離散霍夫空間投射到一個(gè)適合于CNN深度學(xué)習(xí)的結(jié)構(gòu)上,Roveri等人[26]為CNN定義了一個(gè)網(wǎng)格狀的規(guī)則輸入以學(xué)習(xí)理想的法線(xiàn)結(jié)果。Ben-Shabat等人[4]提出了一種方法,該方法使用點(diǎn)式、3D修正的多尺度Fisher Vector代表近似局部法線(xiàn),并將這種代表輸入到深度三維CNN結(jié)構(gòu)中,他們還用一種混合專(zhuān)家結(jié)構(gòu)來(lái)學(xué)習(xí)鄰域大小,以最小化法線(xiàn)估計(jì)誤差。這三種方法主要在于將非結(jié)構(gòu)化點(diǎn)云參數(shù)化為規(guī)則域,然后直接應(yīng)用到CNN結(jié)構(gòu)。另一種點(diǎn)云學(xué)習(xí)框架PointNet[25]在3D領(lǐng)域非常流行,因?yàn)樗梢灾苯訌狞c(diǎn)數(shù)據(jù)中學(xué)習(xí)特征?;趯?duì)PointNet結(jié)構(gòu)的修改,Guerrero等人[15]提出了一種在噪聲點(diǎn)云中估計(jì)法線(xiàn)和主曲率值的統(tǒng)一方法,其中他們特別強(qiáng)調(diào)在給定的中心點(diǎn)周?chē)崛【植繉傩?。Hashimoto等人[16]利用PointNet和3DCNN,提出了一種能夠從點(diǎn)云中準(zhǔn)確推測(cè)法線(xiàn)的聯(lián)合網(wǎng)絡(luò)?;赑ointNet結(jié)構(gòu),Zhou等人[33]引入了額外的特征約束機(jī)制和多尺度鄰域選擇策略來(lái)估計(jì)三維點(diǎn)云的法線(xiàn)。
然而,沒(méi)有一種現(xiàn)有的算法可以作為法線(xiàn)估計(jì)的萬(wàn)能方法,原因在于:(1)傳統(tǒng)方法總是嚴(yán)重依賴(lài)參數(shù)調(diào)整,如平面擬合的鄰域尺度[31,32];(2)基于學(xué)習(xí)的方法,使用卷積神經(jīng)網(wǎng)絡(luò)(CNN)結(jié)構(gòu)[6,4]或PointNet結(jié)構(gòu)[15,33],兩者都受到特征表示能力的限制。因此,特別是在尖銳的特征區(qū)域,很難學(xué)習(xí)從嚴(yán)重退化的輸入到真實(shí)法線(xiàn)的直接映射。
基于這些問(wèn)題,本文提出了一種非結(jié)構(gòu)化三維點(diǎn)云的兩階段法線(xiàn)估計(jì)方法。該方法的核心思想是通過(guò)兩個(gè)子步驟來(lái)解決法線(xiàn)估計(jì)的不確定問(wèn)題:(1)用幾何估計(jì)器計(jì)算盡可能保留特征的次優(yōu)中間法線(xiàn)場(chǎng);(2)將最終法線(xiàn)恢復(fù)過(guò)程作為一個(gè)回歸函數(shù),將中間法線(xiàn)結(jié)果映射到真實(shí)值。具體來(lái)說(shuō),為了降低在具有挑戰(zhàn)性的區(qū)域進(jìn)行法線(xiàn)學(xué)習(xí)的難度,提出了一種多尺度擬合塊選擇法來(lái)幫助估計(jì)次優(yōu)法線(xiàn),這在特征保持方面有更大的貢獻(xiàn)。由于在一些參數(shù)難以調(diào)整的困難區(qū)域,初始法線(xiàn)仍然是不完美的,因此本文設(shè)計(jì)了一個(gè)基于法線(xiàn)的高度圖和法線(xiàn)圖網(wǎng)絡(luò),它利用上述估計(jì)的法線(xiàn)和局部曲面信息來(lái)獲得最終的最優(yōu)法線(xiàn)。實(shí)驗(yàn)證明,幾何估計(jì)器方案和基于學(xué)習(xí)的恢復(fù)方案的組合效果優(yōu)于兩者中任一個(gè)。
本文提出了一種基于幾何估計(jì)和深度網(wǎng)絡(luò)的兩步法線(xiàn)估計(jì)方法。圖1展示出了所提議的方法的算法流程。它包括以下兩個(gè)主要步驟:多尺度次優(yōu)法線(xiàn)估計(jì)和基于法線(xiàn)的高度圖和法線(xiàn)圖網(wǎng)絡(luò)。首先,對(duì)每個(gè)接近尖銳特征區(qū)域的候選點(diǎn)提出了一個(gè)多尺度鄰域選擇來(lái)計(jì)算其次優(yōu)法線(xiàn),同時(shí)對(duì)遠(yuǎn)離尖銳特征區(qū)域的光滑點(diǎn)用主成分分析法獲得其次優(yōu)法線(xiàn)。然后,基于這些計(jì)算出的法線(xiàn),用雙邊法線(xiàn)濾波器為每個(gè)點(diǎn)定義一個(gè)多尺度點(diǎn)描述符,作為后續(xù)網(wǎng)絡(luò)的輸入。最終,通過(guò)基于法線(xiàn)的高度圖和法線(xiàn)圖網(wǎng)絡(luò)恢復(fù)出最優(yōu)法線(xiàn),該網(wǎng)絡(luò)包含兩個(gè)子模塊,分別是基于高度圖和法線(xiàn)圖的改進(jìn)模塊和收集模塊。
圖1 算法流程
在計(jì)算每個(gè)點(diǎn)的初始法線(xiàn)之前,首先用局部協(xié)方差分析(sec.4.2[32]),將所有點(diǎn)分為接近尖銳特征的候選點(diǎn)和遠(yuǎn)離尖銳特征的光滑點(diǎn)。用主成分分析法可以簡(jiǎn)單地計(jì)算出光滑點(diǎn)的法線(xiàn)。
為了估計(jì)候選點(diǎn)的法線(xiàn),一種常見(jiàn)的策略是隨機(jī)選擇三個(gè)非共線(xiàn)點(diǎn)來(lái)構(gòu)造一組候選平面,并選擇一個(gè)最能描述潛在面的平面。典型的方法是RNE[19]和PCV[31],它們引入剩余帶寬來(lái)評(píng)估候選平面到潛在面的接近度。然而,當(dāng)輸入有噪聲時(shí),用于檢測(cè)候選平面的目標(biāo)點(diǎn)的鄰域往往會(huì)被相交面的點(diǎn)所破壞,這導(dǎo)致所選平面偏離真實(shí)表面。
輸出的次優(yōu)法線(xiàn)將用于以下基于法線(xiàn)的高度圖和法線(xiàn)圖網(wǎng)絡(luò)中,該網(wǎng)絡(luò)可以保留尖銳區(qū)域的幾何特征。與直接使用原始法線(xiàn)(PCA)作為輸入相比,這些初始法線(xiàn)增強(qiáng)了網(wǎng)絡(luò)的性能。
圖2 多尺度方法
接下來(lái)將介紹算法流程中的學(xué)習(xí)部分。網(wǎng)絡(luò)架構(gòu)如圖1所示。首先,引入多尺度描述符,然后解釋如何將其輸入到接下來(lái)的兩階段學(xué)習(xí)模塊中,該模塊將輸出最終的法線(xiàn)。
1.2.1 多尺度描述符
神經(jīng)網(wǎng)絡(luò)的輸入數(shù)據(jù)應(yīng)該是結(jié)構(gòu)化的,在Wang等人[29]的工作啟發(fā)下,通過(guò)組濾波法線(xiàn)加上局部高度圖和法線(xiàn)圖來(lái)定義其多尺度描述符,以協(xié)同提高學(xué)習(xí)效果。根據(jù)第4節(jié)中估計(jì)的法線(xiàn),通過(guò)雙邊濾波計(jì)算每個(gè)點(diǎn)的濾波法線(xiàn),并根據(jù)相應(yīng)的濾波法線(xiàn)構(gòu)造高度圖和法線(xiàn)圖。
高度圖構(gòu)造:點(diǎn) 以及它的一個(gè)濾波法線(xiàn)定義一個(gè)切面,在該平面上構(gòu)建高度圖面片。假設(shè)有格子的矩陣用來(lái)描述局部點(diǎn)的位置,每個(gè)格子中心位于 。與[10]類(lèi)似,通過(guò)加權(quán)平均每個(gè)格子中心的球鄰域中的點(diǎn)的高度距離來(lái)填充每個(gè)格子。
法線(xiàn)圖構(gòu)造:同高度圖構(gòu)造類(lèi)似,點(diǎn) 以及它的一個(gè)濾波法線(xiàn)定義一個(gè)切面,在該平面上構(gòu)建法線(xiàn)圖面片。假設(shè)有格子的矩陣用來(lái)描述局部點(diǎn)的位置,每個(gè)格子中心位于 。通過(guò)加權(quán)平均每個(gè)格子中心的球鄰域中的點(diǎn)的次優(yōu)法線(xiàn)來(lái)填充每個(gè)格子。
將所有濾波法線(xiàn)、高度圖面片和法線(xiàn)圖面片組合起來(lái),得到每個(gè)點(diǎn)的多尺度描述符:
各向不變性:為了保持多尺度描述符的旋轉(zhuǎn)不變性,需要同時(shí)考慮法線(xiàn)不變性、高度圖面片和法線(xiàn)圖面片不變性。首先,對(duì)多尺度描述符的法線(xiàn)分量應(yīng)用全局旋轉(zhuǎn),使其對(duì)剛性變換保持不變。具體地說(shuō),通過(guò) 的每個(gè)濾波法線(xiàn)計(jì)算法線(xiàn)張量 來(lái)構(gòu)造旋轉(zhuǎn)矩陣是由 的三個(gè)特征向量(按特征值排序)定義的矩陣,將 中的所有法線(xiàn)旋轉(zhuǎn)到Z軸。此外,如果一條法線(xiàn)在負(fù)Z軸方向,將其反轉(zhuǎn)為正,同樣的旋轉(zhuǎn)矩陣也應(yīng)用于法線(xiàn)的真實(shí)值。對(duì)于多尺度描述符的高度圖面片和法線(xiàn)圖面片分量,其局部坐標(biāo)系的Z軸也由矩陣 旋轉(zhuǎn),X軸和Y軸由旋轉(zhuǎn)后的法線(xiàn)與兩個(gè)最小特征值對(duì)應(yīng)的特征向量的叉積計(jì)算。
1.2.2 基于法線(xiàn)的高度圖和法線(xiàn)圖網(wǎng)絡(luò)架構(gòu)
本文的網(wǎng)絡(luò)架構(gòu)如圖1所示,它以濾波法線(xiàn)、高度圖和法線(xiàn)圖作為輸入。首先,應(yīng)用文獻(xiàn)[29]中基于聚類(lèi)的方法來(lái)促進(jìn)學(xué)習(xí)。網(wǎng)絡(luò)由兩個(gè)模塊組成:基于高度圖面片和法線(xiàn)圖面片的改進(jìn)模塊和收集模塊。其核心思想是利用高度圖面片和法線(xiàn)圖面片學(xué)習(xí)一個(gè)3×3變換矩陣,該矩陣用于利用輸入的法線(xiàn)并將兩個(gè)模塊連接在一起。然后,收集改進(jìn)模塊的每個(gè)分支,并輸出最終的法線(xiàn)。
基于高度圖和法線(xiàn)圖的改進(jìn)模塊:高度圖和法線(xiàn)圖作為整個(gè)網(wǎng)絡(luò)開(kāi)始時(shí)的輸入。改進(jìn)模塊包含與多尺度描述符中的對(duì)相對(duì)應(yīng)的個(gè)獨(dú)立分支,每個(gè)分支接收單個(gè)高度圖面片和法線(xiàn)圖面片的鏈接,并使用多個(gè)卷積層和最大池化層對(duì)其進(jìn)行處理,輸出矩陣 。該模塊的細(xì)節(jié)如圖3所示。輸出的矩陣作為轉(zhuǎn)換矩陣,將用于收集模塊。這種相同分支的設(shè)計(jì)是為了更好地保留與先前雙邊濾波器的可變參數(shù)相關(guān)聯(lián)的局部特征。
圖3 改進(jìn)模塊
圖4 收集模塊
本文使用[29]中的數(shù)據(jù)集進(jìn)行訓(xùn)練,提供了包含點(diǎn)樣本和法線(xiàn)合成的三角網(wǎng)格模型。訓(xùn)練集的真實(shí)值點(diǎn)云共有21個(gè)模型,其中包括6個(gè)CAD模型、8個(gè)光滑模型和7個(gè)特征豐富的模型。對(duì)每一個(gè)真實(shí)值點(diǎn)云添加高斯噪聲來(lái)獲得噪聲點(diǎn)云,其標(biāo)準(zhǔn)偏差為包圍盒對(duì)角線(xiàn)長(zhǎng)度的0.1%、0.2%和0.3%。最終的訓(xùn)練集包含63個(gè)噪聲點(diǎn)云的150萬(wàn)個(gè)點(diǎn)。
在構(gòu)造多尺度描述符時(shí),多尺度描述符包括9組法線(xiàn)、高度圖和法線(xiàn)圖,即在基于高度圖和法線(xiàn)圖的改進(jìn)模塊中有9個(gè)獨(dú)立的分支。對(duì)于高度圖和法線(xiàn)圖的構(gòu)造,使用7×7的網(wǎng)格,使用pytorch在單個(gè)NVIDIA Geforce RTX 2080 Ti GPU上訓(xùn)練網(wǎng)絡(luò)。
為了能夠定量地評(píng)估,使用估計(jì)的法線(xiàn)和它們的真實(shí)值之間的平均角度誤差作為評(píng)估度量,用于法線(xiàn)精度比較。本文主要從文獻(xiàn)[29]和文獻(xiàn)[31]的合成網(wǎng)格模型測(cè)試集的數(shù)據(jù)來(lái)獲取基準(zhǔn)數(shù)據(jù)。該數(shù)據(jù)集包括11個(gè)特征尖銳的模型、8個(gè)特征豐富的模型、8個(gè)表面光滑的模型和8個(gè)強(qiáng)噪聲的模型這4種類(lèi)別,每個(gè)類(lèi)別都包含具有挑戰(zhàn)性幾何特征和不同采樣密度的點(diǎn)云。為了擴(kuò)充數(shù)據(jù),特征尖銳和表面光滑類(lèi)別中的每個(gè)點(diǎn)云都受到高斯噪聲的干擾,其標(biāo)準(zhǔn)偏差為包圍盒對(duì)角線(xiàn)長(zhǎng)度的0.05%、0.1%和0.15%,對(duì)于特征豐富類(lèi)別添加0.05%、0.1%、0.15%和0.2%的噪聲,對(duì)于強(qiáng)噪聲類(lèi)別添加0.2%、0.3%、0.4%和0.5%的噪聲,最終基準(zhǔn)數(shù)據(jù)集總共包含121個(gè)點(diǎn)云。將本文的方法在只用尺度面片選擇模塊與使用完整的網(wǎng)絡(luò)結(jié)構(gòu)兩種情況與幾種最新的方法進(jìn)行了比較:PCA[17],HF[5],LRR[32],PCV[31],HoughCNN[6],PCPNet[15]和Nesti-Net[4],并且用本文的數(shù)據(jù)集對(duì)HoughCNN、PCPNet和Nesti-Net進(jìn)行了再訓(xùn)練。其中HoughCNN有使用單尺度、3尺度和5尺度的三個(gè)版本,PCPNet有單尺度和多尺度兩個(gè)版本,本文對(duì)所有情況都進(jìn)行了評(píng)估。比較上述方法時(shí),對(duì)于特征尖銳、特征豐富和表面光滑三個(gè)類(lèi)別中令單尺度方法的鄰近點(diǎn)的數(shù)量為K=100,HoughCNN的3尺度版本使用其原文推薦的50、100和200這3種鄰近點(diǎn)數(shù)量,HoughCNN的5尺度版本用K=32、64、128、256、512,本文的多尺度方法在多尺度面片選擇時(shí)將鄰近點(diǎn)的數(shù)量設(shè)置為K=50、100、150。對(duì)于強(qiáng)噪聲類(lèi)別,將每種方法的對(duì)應(yīng)鄰近點(diǎn)數(shù)量加倍,所有其他參數(shù)均按默認(rèn)值設(shè)置。結(jié)果通過(guò)圖5中的條形圖說(shuō)明,本文的方法在所有方面都優(yōu)于其他方法,尤其在強(qiáng)噪聲模型上更為突出。
圖5 不同方法的誤差對(duì)比
本文的方法也在文獻(xiàn)[29]中用微軟Kinect v1掃描的真實(shí)點(diǎn)云數(shù)據(jù)集上進(jìn)行了測(cè)試。在圖6中展示了彩色渲染后的法線(xiàn)估計(jì)的視覺(jué)效果比較。真實(shí)的掃描數(shù)據(jù)更加具有挑戰(zhàn)性,如來(lái)自于Kinect相機(jī)的投影表面上的起伏。非高斯噪聲和非連續(xù)噪聲干擾了估計(jì)器對(duì)真實(shí)面的恢復(fù),通過(guò)訓(xùn)練這些掃描數(shù)據(jù),本文的網(wǎng)絡(luò)能夠從掃描噪聲獲取幾何特征。同時(shí),如表1所示在法線(xiàn)精度方面,本文的方法優(yōu)于所有其它方法。在表1中記錄了圖6和圖8中所有模型的誤差和時(shí)間數(shù)據(jù),本文的方法的運(yùn)行時(shí)間是包括所有步驟的總測(cè)試時(shí)間。
圖6 真實(shí)點(diǎn)云視覺(jué)效果比較
此外,本文還展示了文獻(xiàn)[27]提供的幾個(gè)真實(shí)掃描的室內(nèi)場(chǎng)景的定性結(jié)果。用同一個(gè)數(shù)據(jù)集訓(xùn)練所有網(wǎng)絡(luò),以便進(jìn)行公平比較,從圖7來(lái)看,PCA、HF、HoughCNN和PCV可以保留微小的細(xì)節(jié),但是同時(shí)也會(huì)保留噪聲。Nesti-Net可以很好地平滑噪聲表面,但會(huì)過(guò)度平滑幾何特征。在表1中記錄了圖6和圖8中所有模型的誤差和時(shí)間數(shù)據(jù),本文的方法的運(yùn)行時(shí)間是包括所有步驟的總測(cè)試時(shí)間。
圖7 真實(shí)掃描的室內(nèi)場(chǎng)景對(duì)比
本文進(jìn)行消融實(shí)驗(yàn)來(lái)驗(yàn)證本文網(wǎng)絡(luò)的每個(gè)模塊的有效性,對(duì)所提出的學(xué)習(xí)方法與其另外三種變體進(jìn)行了比較。方案1只訓(xùn)練由次優(yōu)法線(xiàn)構(gòu)造高度圖和法線(xiàn)圖,并輸出變換矩陣來(lái)改善法線(xiàn)。方案2是在不使用收集模塊的情況下,對(duì)由濾波法線(xiàn)構(gòu)造的高度圖和法線(xiàn)圖進(jìn)行訓(xùn)練。方案3只使用濾波法線(xiàn)構(gòu)造高度圖和法線(xiàn)圖進(jìn)行訓(xùn)練。此外,還記錄了次優(yōu)法線(xiàn)和平均濾波法線(xiàn)的誤差。表2總結(jié)了在合成數(shù)據(jù)上法線(xiàn)估計(jì)結(jié)果的總誤差。通過(guò)將濾波法線(xiàn)和局部結(jié)構(gòu)信息相結(jié)合,本文提出的方法可以得到更可靠、更精確的結(jié)果。
表2 消融實(shí)驗(yàn)結(jié)果
估計(jì)良好的法線(xiàn)可以提高許多點(diǎn)云處理任務(wù)的效果,如去噪和曲面重建。為了進(jìn)一步驗(yàn)證本文方法的優(yōu)點(diǎn),使用相同的點(diǎn)更新算法,但不同的法線(xiàn)估計(jì)方法來(lái)顯示去噪結(jié)果。圖8展示去噪和重建結(jié)果的視覺(jué)效果,可以看出本文的法線(xiàn)估計(jì)結(jié)果有助于產(chǎn)生更好的去噪和重建結(jié)果。
圖8 去噪和重建結(jié)果的視覺(jué)效果
在本文中,針對(duì)次優(yōu)法線(xiàn)估計(jì)問(wèn)題,提出了一種多尺度擬合面片選擇方案;然后,對(duì)次優(yōu)法線(xiàn)進(jìn)行雙邊濾波得到濾波法線(xiàn),用濾波法線(xiàn)及其構(gòu)造高度圖和法線(xiàn)圖組成多尺度描述符;最后,設(shè)計(jì)了一種包括兩個(gè)不同學(xué)習(xí)模塊的基于法線(xiàn)的高度圖和法線(xiàn)圖網(wǎng)絡(luò),用于進(jìn)一步改進(jìn)法線(xiàn)估計(jì)。本文的方法是幾何方法和基于學(xué)習(xí)的方法的結(jié)合,與其他方法相比取得了更好的結(jié)果。