朱東林,徐光輝,周 捷,狄恩彪,李明燦
(陸軍工程大學(xué),江蘇 南京 210007)
機(jī)器人領(lǐng)域作為如今熱門(mén)的研究領(lǐng)域之一受到了研究者們的廣泛關(guān)注,但是機(jī)器人的研究始終伴隨著如何使機(jī)器人能夠在陌生的環(huán)境中自主探索和行動(dòng)這個(gè)關(guān)鍵性問(wèn)題。SLAM 先前由Smith Self 和Cheeseman 提出,至今已有30 多年的研究歷程,大致分為傳統(tǒng)時(shí)期、算法分析時(shí)期和魯棒性-預(yù)測(cè)性時(shí)期3 個(gè)時(shí)間段。
對(duì)于未知環(huán)境,為了能夠自主移動(dòng)和探索,機(jī)器人需要依靠傳感器獲取環(huán)境數(shù)據(jù)。機(jī)器人首先需要解決定位問(wèn)題即明確自身位置,隨后測(cè)量自身周?chē)沫h(huán)境信息并建立地圖,同時(shí)保存已建的地圖以備后期在該地區(qū)內(nèi)直接進(jìn)行定位和導(dǎo)航。2007 年,MonoSLAM[1]是首個(gè)利用純視覺(jué)恢復(fù)相機(jī)的移動(dòng)路徑,使用概率框架在線創(chuàng)建稀疏并持久的自然地標(biāo)地圖,同時(shí)由先驗(yàn)信息輔助系統(tǒng)完成初始化,由擴(kuò)展卡爾曼濾波法實(shí)時(shí)更新?tīng)顟B(tài)。此外,相機(jī)采用恒速度運(yùn)動(dòng)模型,相機(jī)狀態(tài)的誤差用不確定性程度Qv衡量。2008 年,PTAM[2]實(shí)現(xiàn)了跟蹤和建圖用不同線程,并可在地圖中顯示AR 虛擬物體。前端采用FAST 角點(diǎn)檢測(cè)算法且引入關(guān)鍵幀技術(shù),利用極線約束法匹配特征點(diǎn)計(jì)算旋轉(zhuǎn)矩陣,后端則采用非線性?xún)?yōu)化的BA(Bundle Adjustment)方法。2014 年,SVO[3]為了在無(wú)人機(jī)高速移動(dòng)狀態(tài)下估計(jì)準(zhǔn)確位姿,采用特征點(diǎn)法和直接法相結(jié)合的方法實(shí)現(xiàn)高頻高精度里程計(jì)。直接法中摒棄傳統(tǒng)算法對(duì)圖像中少量的大補(bǔ)丁圖像塊的提取,轉(zhuǎn)而提取大量小補(bǔ)丁圖像塊。RTAB-MAP 針對(duì)大場(chǎng)景稠密建圖,并提出內(nèi)存管理方法來(lái)解決大場(chǎng)景長(zhǎng)時(shí)間稠密建圖存在的回環(huán)檢測(cè)和實(shí)時(shí)性問(wèn)題。2018 年,VINS-Mono[4]設(shè)計(jì)了一個(gè)完備的運(yùn)動(dòng)狀態(tài)估計(jì)器。它是由單目和IMU組裝成的一個(gè)小巧裝置,用于度量六自由度,可以廣泛應(yīng)用移動(dòng)機(jī)器人、無(wú)人機(jī)和移動(dòng)電子設(shè)備等SLAM 系統(tǒng)。DSO[5]依靠圖像上的采樣像素生成稀疏地圖,所用模型涉及光度校正來(lái)消除曝光時(shí)間和鏡頭漸暈等影響。ORB-SLAM 在PTAM 基礎(chǔ)上添加了回環(huán)檢測(cè)線程,是第一個(gè)具備跟蹤、回環(huán)檢測(cè)和建圖環(huán)節(jié)的完整實(shí)例,最終準(zhǔn)確實(shí)現(xiàn)了相機(jī)的運(yùn)動(dòng)軌跡和地圖中軌跡的一致。2019 年,基于模型的視覺(jué)慣性里程計(jì)VIMO[6]正逐步取代傳統(tǒng)的視覺(jué)慣性里程計(jì)VIO,關(guān)注點(diǎn)放在作用于系統(tǒng)的外力上,把動(dòng)力學(xué)和外力結(jié)合在殘差中作為約束產(chǎn)生了一種精度較高的狀態(tài)估計(jì)器。2020 年,DeepFactors[7]建立在CodeSLAM[8]的基礎(chǔ)上,結(jié)合深度學(xué)習(xí)重新表示已學(xué)習(xí)的緊湊性深度圖對(duì)光度誤差、重投影誤差和幾何誤差,實(shí)現(xiàn)單目相機(jī)構(gòu)建稠密地圖。一個(gè)無(wú)需配置相機(jī)參數(shù),便可較靈活地選擇多個(gè)數(shù)量的相機(jī)組合使用,完成自適應(yīng)初始化的SLAM 系統(tǒng)[9]。語(yǔ)義NodeSLAM[10]根據(jù)VAE 和概率渲染引擎判別物體形狀及重構(gòu)多視圖物體。Vid2Curve[11]系統(tǒng)單憑RGB 視頻流也可實(shí)現(xiàn)細(xì)線條物體三維重建,摒棄傳統(tǒng)基于深度和圖像紋理,而采用基于2D 曲線特征的方法抽取出骨骼曲線,沿曲線按物體寬度融合相應(yīng)半徑圓餅反映物體線條。AVP-SLAM[12]借助對(duì)視角和光照具有魯棒性的語(yǔ)義特征構(gòu)建地下停車(chē)場(chǎng)地圖,完成了自動(dòng)泊車(chē)任務(wù)。在任一亮環(huán)境下,基于物理的深度網(wǎng)絡(luò)考慮反射、折射和內(nèi)部全反射對(duì)物體表面法線重建,進(jìn)一步實(shí)現(xiàn)透明物體的三維重建[13]。ESVO[14]是SLAM 領(lǐng)域首次用雙目事件相機(jī)構(gòu)建的視覺(jué)里程計(jì),在保證每幀圖像時(shí)空一致性前提下,逆深度估計(jì)附加時(shí)間戳,并采用了IRLS 非線性?xún)?yōu)化和前向合成Lucas-Kanade 方法。除此之外,目前開(kāi)源并且框架完備的算法有ORB-SLAM[15]、DTAM[16]、RGBD-SLAM[17-18]、改善大場(chǎng)景下回環(huán)檢測(cè)性能的算法[19-20]。綜上所述,對(duì)大量視覺(jué)算法進(jìn)行分析歸納出視覺(jué)SLAM框架涵蓋傳感器數(shù)據(jù)輸入、前端VO、后端優(yōu)化、回環(huán)檢測(cè)和建圖5 個(gè)主體。圖1 為視覺(jué)SLAM 的算法流程。
前端視覺(jué)里程計(jì)部分實(shí)現(xiàn)對(duì)位姿的計(jì)算。計(jì)算方法大致有特征點(diǎn)法、直接法、光流法和深度學(xué)習(xí)與幀間估計(jì)4 種。如圖2 所示,視覺(jué)里程計(jì)要計(jì)算估計(jì)出相機(jī)各幀位姿(R,t),從初始位置C0(可以自定義)起,當(dāng)前位置Ck通過(guò)(R,t)和上一時(shí)刻的位置Ck-1來(lái)計(jì)算,公式為Ck=RCk-1+t。其中,(R,t)為K和K+1 時(shí)刻之間的相機(jī)平移和旋轉(zhuǎn)變化,可根據(jù)圖像變換的基本矩陣、單應(yīng)矩陣和SVD 分解本質(zhì)矩陣計(jì)算獲得,從而恢復(fù)相機(jī)的運(yùn)動(dòng)軌跡。
特征點(diǎn)法是在相鄰幀之間選取特征點(diǎn)并進(jìn)行匹配,然后使用RANSAC、M 估計(jì)或最小中值估計(jì)等方法,盡可能濾除錯(cuò)誤匹配[21]的噪聲點(diǎn),最后求得位姿。介于對(duì)精度和時(shí)間的考慮,關(guān)鍵點(diǎn)檢測(cè)器和描述符組合[22]搭配使用。檢測(cè)器算法有ORB、SIFT 以及SURF 等,描述符算法有BRIEF、FREAK等。由于深度圖像的取舍,前端將面臨2D-2D、3D-2D 和3D-3D 共3 種情形,故使用特征點(diǎn)法時(shí)最主要考慮的問(wèn)題是算法選擇問(wèn)題和計(jì)算(R,t)方法的選擇問(wèn)題。
(1)SIFT/SURF。SIFT[23]/SURF[24]算法使用基于梯度方法的HOG 作為描述符,通過(guò)物體在局部區(qū)域中的強(qiáng)度梯度分布來(lái)描述物體的結(jié)構(gòu)。
圖1 視覺(jué)SLAM 算法流程
圖2 相機(jī)運(yùn)動(dòng)軌跡
(2)RISK/BRIEF/ORB/KAZE/FREAK。上述算法使用二進(jìn)制Binary 描述符,僅依靠圖像自身強(qiáng)度信息,將關(guān)鍵點(diǎn)周?chē)畔⒕幋a成一串二進(jìn)制數(shù)。BRISK 算法[25]采用長(zhǎng)距離對(duì)和短距離對(duì),其中長(zhǎng)距離對(duì)描述圖像補(bǔ)丁的梯度方向,而短距離對(duì)用于組成二進(jìn)制字符串來(lái)描述梯度大小。
長(zhǎng)距離對(duì)搜索函數(shù)為:
短距離對(duì)搜索函數(shù)為:
長(zhǎng)對(duì)計(jì)算關(guān)鍵點(diǎn)方向向量公式為:
短距離對(duì)組裝成二進(jìn)制串公式為:
上面使用相同數(shù)量圖片及同一工程對(duì)所有可能的檢測(cè)器和描述符組合進(jìn)行性能比較實(shí)驗(yàn)。由表1 各種檢測(cè)器和描述符組合的總運(yùn)行時(shí)間結(jié)果可以看出,F(xiàn)AST+BRIEF 速度最快,F(xiàn)AST+ORB 次之。表1 中×表示當(dāng)前檢測(cè)器和描述符不能搭配使用,相應(yīng)的實(shí)驗(yàn)結(jié)果也將不存在。表2 為各種檢測(cè)器和描述符組合的匹配點(diǎn)數(shù)目結(jié)果,可以看出BRISK+BRIEF 匹配點(diǎn)數(shù)目最多,BRISK+SIFT 和BRISK+FREAK 次之。對(duì)于所有類(lèi)型的幾何變換來(lái)說(shuō),SIFT 和BRISK 的總體精度最高。
光流法[26]是為了應(yīng)對(duì)圖像中的特征點(diǎn)難提取、紋理簡(jiǎn)單且單一的情況提出的。它是基于亮度不變的假設(shè)I(x+dx,y+dy,t+dt,)=I(x,y,t),即圖像中某一位置的像素其亮度在短時(shí)間內(nèi)不會(huì)變化的思想來(lái)選取圖像中某些像素點(diǎn)進(jìn)行跟蹤,最后計(jì)算出位姿。
表1 各種檢測(cè)器和描述符組合的總運(yùn)行時(shí)間(單位:ms)
表2 各種檢測(cè)器和描述符組合的匹配點(diǎn)數(shù)目(單位:個(gè))
不變性假設(shè)關(guān)于時(shí)間t進(jìn)行求導(dǎo),得:
整理為矩陣形式,為:
式中:Ix代表該點(diǎn)x方向梯度,u代表該點(diǎn)x方向速度;同理,Iy、v分別代表y方向梯度和速度:It表示圖像隨時(shí)間的變化量。
直接法依據(jù)灰度不變性I1(x)=I2(x′)假設(shè),利用圖像中像素灰度值的變化來(lái)估計(jì)相機(jī)的運(yùn)動(dòng)方向。只要環(huán)境中有亮度并使得相機(jī)運(yùn)動(dòng)時(shí)圖像像素點(diǎn)有亮度的變化,直接法就能工作。因?yàn)橹苯臃ㄖ魂P(guān)注亮度變化,不關(guān)注特征信息,故效率較高。常見(jiàn)的塊匹配算法有NCC[27]、SSD 等。
DVO[28]在假設(shè)條件下用高斯牛頓迭代法計(jì)算相機(jī)的運(yùn)動(dòng)位姿(R,t),預(yù)測(cè)場(chǎng)景點(diǎn)深度值和深度圖提供的實(shí)際深度值之間的差異預(yù)估運(yùn)動(dòng)。
LSD-SLAM[29]是繼特征點(diǎn)法后將直接法應(yīng)用于SLAM 的典型算法,省略了特征點(diǎn)提取環(huán)節(jié),從而提高了算法效率,將圖像中梯度較大的像素點(diǎn)還原出對(duì)應(yīng)3D 地圖坐標(biāo)來(lái)盡量反映場(chǎng)景物體的輪廓信息,即建立了半稠密的地圖。
跟蹤線程中以歸一化的方差光度誤差最小化為目標(biāo),對(duì)上一關(guān)鍵幀的姿態(tài)值左乘這兩個(gè)關(guān)鍵幀之間的剛體變換值δξ(n),從而得到當(dāng)前關(guān)鍵幀的位姿。
后端優(yōu)化主要對(duì)前端的位姿值進(jìn)行優(yōu)化,盡量減少累積誤差。前端當(dāng)前建立的帶有累積誤差的局部地圖,后端會(huì)優(yōu)化當(dāng)前的地圖,避免地圖誤差越來(lái)越多。目前,最主要的后端算法包括基于濾波理論的擴(kuò)展卡爾曼濾波法和基于優(yōu)化理論的BA 和圖優(yōu)化法、位姿圖法。除此之外,基于濾波理論的算法還有UKF[30]、EIF、SEIF 以及PF 等,基于優(yōu)化理論的算法還有非線性?xún)?yōu)化、TORO 以及G2O 等。
卡爾曼濾波器包含預(yù)測(cè)和更新兩個(gè)任務(wù),被看作兩步驟程序。
步驟1:使用上一狀態(tài)值估計(jì)下一狀態(tài)及不確定性:
步驟2:使用當(dāng)前的測(cè)量值透過(guò)加權(quán)平均來(lái)更新當(dāng)前的狀態(tài)估計(jì)值:
式中,Kk表示卡爾曼增益,Hk表示觀測(cè)模型,表示殘差。
MonoSLAM 的后端采用擴(kuò)展卡爾曼濾波法,相機(jī)采用恒速度運(yùn)動(dòng)模型,受瞬間外力對(duì)相機(jī)的影響,需要再更新相機(jī)運(yùn)動(dòng)狀態(tài)量。未知力度對(duì)相機(jī)瞬時(shí)作用的影響用噪聲向量n表示,其中n包含短時(shí)間內(nèi)外力的線加速度和角加速度產(chǎn)生的線速度和角速度。
BA(Bundle Adjustment)目標(biāo)函數(shù)中,相機(jī)位姿變量xc=[ξ1,ξ2,…,ξm]T∈R6m和路標(biāo)點(diǎn)變量xp=[p1,p2,…,pm]T∈R3n組成自變量,作為所有待優(yōu)化的變量x=[ξ1,…,ξm,p1,…,pn]T。變量發(fā)生變化時(shí)對(duì)應(yīng)的增量方程為:
式中,F(xiàn)、E分別表示關(guān)于相機(jī)位姿和路標(biāo)點(diǎn)位置的偏導(dǎo)數(shù)。無(wú)論使用G-N 方法還是L-M 方法,最后都將面對(duì)增量線性方程:
以G-N 為例,則H矩陣為:
認(rèn)識(shí)到矩陣H的稀疏結(jié)構(gòu),并發(fā)現(xiàn)該結(jié)構(gòu)可以自然地用圖優(yōu)化來(lái)表示,此處引入G2O。若一個(gè)場(chǎng)景內(nèi)有5 個(gè)相機(jī)位姿(C1,C2,C3,C4,C5)和2 個(gè)路標(biāo)(P1,P2)。關(guān)系結(jié)構(gòu)圖如圖3 所示,以最小化下列函數(shù)為目標(biāo),優(yōu)化所有圖中的變量:
式中,Pj表示第j個(gè)路標(biāo)點(diǎn),表示j=N個(gè)路標(biāo)點(diǎn)分別在第i個(gè)相機(jī)下的像素坐標(biāo),si表示各路標(biāo)點(diǎn)到各相機(jī)平面的深度值。
圖3 關(guān)系結(jié)構(gòu)
從圖優(yōu)化知,隨著相機(jī)運(yùn)動(dòng)需加入大量路標(biāo)節(jié)點(diǎn)。路標(biāo)節(jié)點(diǎn)數(shù)量遠(yuǎn)大于位姿節(jié)點(diǎn)的數(shù)量,將嚴(yán)重降低計(jì)算效率。因此,舍棄路標(biāo)節(jié)點(diǎn)變量的優(yōu)化,只關(guān)注相機(jī)位姿變量xc=[ξ1,ξ2,…,ξm]T∈R6m的優(yōu)化,如圖4 所示。
圖4 關(guān)系結(jié)構(gòu)
首先根據(jù)兩幀已記錄(前端計(jì)算)的位姿得到相對(duì)位姿變換:
重新根據(jù)i、j兩幀圖像利用對(duì)極幾何得到實(shí)際位姿增量Tij,優(yōu)化的目標(biāo)為:
若所有位姿節(jié)點(diǎn)之間的邊集合記做κ,則總體目標(biāo)函數(shù)為:
三維地圖的表達(dá)方式有深度圖(Depth)、點(diǎn)云(Point Cloud)、體素(Voxel)和網(wǎng)格(Mesh)共4 種。圖5 為4 類(lèi)三維建圖方式樣例,深度圖中每個(gè)像素表示物體距離相機(jī)平面的值。點(diǎn)云是大量點(diǎn)組成的數(shù)據(jù)集,每個(gè)點(diǎn)包含位置、顏色等信息。體素是由一個(gè)個(gè)矩形小方塊組成,類(lèi)似于三維空間中的像素。網(wǎng)格由許多三角形面拼接成的多邊形以接近現(xiàn)實(shí)物體表面,每個(gè)網(wǎng)格包含三角形的頂點(diǎn)、邊和面。
圖5 4 類(lèi)三維建圖方式樣例
Shao 等人[31]提出了一種立體視覺(jué)和陰影形狀(Shape From Shading,SFS)算法,能夠同時(shí)生成深度圖和方向圖,但很難作用在顏色和紋理不均一的場(chǎng)景。強(qiáng)度圖像與對(duì)應(yīng)的深度信息進(jìn)行隱馬爾可夫模型(Hidden Markov Model,HMM)建模,應(yīng)用單張圖像的3D 人臉或手的重構(gòu)系統(tǒng)[32]。Saxena 等人[33]將圖像劃分出多個(gè)區(qū)域塊,使用馬爾可夫隨機(jī)場(chǎng)(Markov Random Field,MRF)對(duì)逐個(gè)像素塊計(jì)算出相應(yīng)參數(shù),以描述每塊所指的3D 平面位置與方向,而各個(gè)平面共同組成最后的3D 場(chǎng)景。Liu等人[34]使用有監(jiān)督的學(xué)習(xí)方法對(duì)非結(jié)構(gòu)化場(chǎng)景圖進(jìn)行深度預(yù)測(cè),其中模型采用經(jīng)過(guò)區(qū)分訓(xùn)練的馬爾可夫隨機(jī)場(chǎng)(MRF)。受生物學(xué)復(fù)雜單元[35]的啟發(fā),對(duì)圖像像素之間相關(guān)性進(jìn)行編碼,從數(shù)據(jù)中學(xué)習(xí)深度和運(yùn)動(dòng)線索實(shí)現(xiàn)3-D 運(yùn)動(dòng)分析。
最近,Karsch 等人[36]使用基于SIFT Flow[37]的KNN 傳輸機(jī)制從單個(gè)圖像估計(jì)靜態(tài)背景的深度,并利用運(yùn)動(dòng)信息對(duì)其進(jìn)行增強(qiáng),以更好地估計(jì)視頻中的運(yùn)動(dòng)前景對(duì)象。Eigen 等人[38]使用兩個(gè)深度網(wǎng)絡(luò)分別進(jìn)行圖像粗略預(yù)測(cè)和局部細(xì)化預(yù)測(cè),實(shí)現(xiàn)了對(duì)單張圖像的深度估計(jì),并提出了一個(gè)尺度不變的損失函數(shù)。Ladicky 等人[39]提出了將語(yǔ)義對(duì)象標(biāo)簽與單眼深度特征集成在一起的方法,以提高性能,但它們依靠手動(dòng)添加的方式并使用超像素來(lái)分割圖像。Laina 等人[40]建議使用基于ResNet 的網(wǎng)絡(luò)結(jié)構(gòu)來(lái)預(yù)測(cè)深度。Xu 等人[41]建議使用CNN 結(jié)構(gòu)構(gòu)建用于深度預(yù)測(cè)的多尺度條件隨機(jī)場(chǎng)CRF。BA-Net[42]輸入圖像使用預(yù)先學(xué)習(xí)(端到端)的深度圖生成器產(chǎn)生多個(gè)基礎(chǔ)深度圖,并通過(guò)特征量度BA 將這些深度圖線性組合出最終深度。
Fan 等人[43]實(shí)現(xiàn)了對(duì)單圖像中單個(gè)物體以點(diǎn)云形式進(jìn)行三維重建,開(kāi)創(chuàng)了點(diǎn)云生成的先例。從一張2D 圖像恢復(fù)一個(gè)3D 物體可能出現(xiàn)多個(gè)可能的較好結(jié)果,使得此問(wèn)題不適用經(jīng)典回歸或分類(lèi)方法解決,轉(zhuǎn)而研究基于點(diǎn)云表示的3D 幾何生成網(wǎng)絡(luò)。網(wǎng)絡(luò)由輸入圖像和推斷的視點(diǎn)位置確定3D 點(diǎn)云中的點(diǎn)位置。點(diǎn)集生成網(wǎng)絡(luò)恢復(fù)出多個(gè)可能的結(jié)果,再經(jīng)損失函數(shù)確立最終點(diǎn)云結(jié)果。圖6 為系統(tǒng)的整體結(jié)構(gòu)圖。
圖6 系統(tǒng)結(jié)構(gòu)
2D 圖恢復(fù)所有可能的3D 形狀:
損失函數(shù):
ElasticFusion[44]算法側(cè)重構(gòu)建清晰稠密地圖。對(duì)RGB-D 相機(jī)獲取的深度圖進(jìn)行操作,相關(guān)信息融合到初始的surfel 數(shù)學(xué)模型中,一步步優(yōu)化模型外形,最后使用此模型描畫(huà)場(chǎng)景。圖7 展示了ElasticFusion 算法的整體實(shí)現(xiàn)流程。
建圖線程的兩個(gè)步驟。一是surfel 模型初始化采用Deformation 圖使用均勻抽樣初始化。它由許多node 組成,每個(gè)node 帶有等參數(shù)來(lái)影響surfel 模型進(jìn)行表面變形。二是RGB-D 相機(jī)獲得深度圖像,使用內(nèi)參將深度圖轉(zhuǎn)為點(diǎn)云。點(diǎn)云和RGB彩色圖像使用跟蹤線程計(jì)算的相機(jī)幾何位姿和光度位姿,并利用OPENGL 融合到surfel 模型中。
3D-R2N2[45]沒(méi)有在觀察對(duì)象之前需先匹配合適的3D 形狀,以盡可能迎合2D 圖像中所描述的物體。而受早期使用機(jī)器學(xué)習(xí)來(lái)學(xué)習(xí)2D 到3D 映射以進(jìn)行場(chǎng)景理解的工作啟發(fā)[33,46],引入深度卷積神經(jīng)網(wǎng)絡(luò)。網(wǎng)絡(luò)建立在LSTM 和GRU 的基礎(chǔ)上,實(shí)現(xiàn)了單視圖和多視圖的3D 重建。
網(wǎng)絡(luò)框架包含Encoder、3D Convolutional LSTM和Decoder 共3 大部分,如圖8 所示。Encoder 是一種CNN 結(jié)構(gòu)對(duì)輸入圖像進(jìn)行編碼;Decoder 是解碼過(guò)程;3D Convolutional LSTM 是由許多LSTM 單元組成的正立方體網(wǎng)格結(jié)構(gòu),每個(gè)單元負(fù)責(zé)一個(gè)已編碼的部分并恢復(fù)出相應(yīng)體素,所有體素格組成3D物體。損失函數(shù)使用二分類(lèi)交叉熵函數(shù),決定相應(yīng)體素格狀態(tài)是否占有。
圖7 ElasticFusion 算法框架流程
Pixel2Mesh[47]在基于圖的卷積神經(jīng)網(wǎng)絡(luò)中輸出3D 網(wǎng)格圖形。任一單圖像輸入之前,系統(tǒng)默認(rèn)同步初始化一橢圓球作為初始的物體形狀。全卷積神經(jīng)網(wǎng)絡(luò)一步一步提取2D 圖像中的細(xì)節(jié)特征,同時(shí)圖卷積神經(jīng)網(wǎng)絡(luò)受圖像特征的約束將細(xì)節(jié)附加于初始的橢球體上,隨著特征數(shù)量的不斷增加致使橢球不斷形變(粗糙到細(xì)密過(guò)程),最終得到最后物體。圖9 為雙網(wǎng)絡(luò)協(xié)作流程。
圖9 雙網(wǎng)絡(luò)協(xié)作流程
4 種約束網(wǎng)格形變的損失函數(shù)為:
圖卷積神經(jīng)網(wǎng)絡(luò)中包含與Mesh 網(wǎng)格對(duì)應(yīng)的頂點(diǎn)(V)、邊(E)和特征向量(F),定義函數(shù)如下:
當(dāng)前,視覺(jué)SLAM 的發(fā)展趨勢(shì)主要涵蓋以下3個(gè)方面。
透明物體的重建受光反射、折射和內(nèi)部全反射等因素影響。透明物體成像的物理基礎(chǔ)是界面處的折射遵循斯涅爾定律,反射由菲涅爾方程確定。由高折射率介質(zhì)進(jìn)入較低折射率介質(zhì)界面處的入射角大于臨界角時(shí),就會(huì)發(fā)生全內(nèi)反射。文獻(xiàn)[13]中利用了深層網(wǎng)絡(luò)學(xué)習(xí)和模擬圖像形成的物理基礎(chǔ)知識(shí)。網(wǎng)絡(luò)內(nèi)的渲染層可對(duì)最多兩次反射的折射光路進(jìn)行建模,以建立對(duì)應(yīng)于物體正反兩面投影光線的曲面法線,可在任意環(huán)境下使用不受約束的圖像來(lái)重建透明形狀。圖10 為透明物體樣例。
圖10 透明物體樣例
由于無(wú)線電信號(hào)被海水吸收,因此無(wú)法使用GPS 系統(tǒng)定位水下機(jī)器人。Ferrera 等人[48]致力于在水下海床進(jìn)行同步定位和制圖,使用配備單目、IMU 和壓力傳感器的設(shè)備,采集制定了3 個(gè)不同環(huán)境下的數(shù)據(jù)集。對(duì)于每個(gè)數(shù)據(jù)集還使用SFM 離線計(jì)算了真實(shí)軌跡,以便能夠使后期和實(shí)時(shí)定位建圖方法進(jìn)行比較。圖11 為SFM 對(duì)水下場(chǎng)景的重建結(jié)果,曲線代表計(jì)算的水下機(jī)器人移動(dòng)軌跡。此外,F(xiàn)errera 等人[49]提出一新型的單眼UW-VO(水下視覺(jué)測(cè)距法)算法,克服了由于介質(zhì)特定屬性導(dǎo)致的視覺(jué)退化。
圖11 重建的水下場(chǎng)景結(jié)果
纖細(xì)物體(如樹(shù)枝、電線和鐵絲等)通常表面積小且缺乏紋理特征和點(diǎn)特征,故無(wú)法使用傳統(tǒng)的基于圖像特征點(diǎn)的重建方法獲取3D 模型。Vid2Curve 使用曲線特征的新方法,鎖定連續(xù)圖像中同一物體的變化動(dòng)態(tài)計(jì)算位姿,以一種迭代結(jié)構(gòu)優(yōu)化策略逐步添加和處理所有圖像幀,并改進(jìn)估計(jì)的物體曲線結(jié)構(gòu)。圖12 為鐵絲物體的重建結(jié)果。Usumezbas 等人[50]實(shí)現(xiàn)將圖像中大量2D 曲線拓?fù)溥B接為3D 曲線集合,最后生成一個(gè)3D 曲線圖。
圖12 重建的鐵絲物體結(jié)果圖
本文分析了SLAM 算法近20 年的最新進(jìn)展情況,歸納出視覺(jué)SLAM 算法的整體框架,并闡述前端和后端包含的各種方法和相關(guān)理論,實(shí)例分析三維建圖的各種方式,突出介紹了苛刻環(huán)境下的地圖構(gòu)建。視覺(jué)SLAM 是未來(lái)立體視覺(jué)感知頗具潛力的發(fā)展方向,其中視覺(jué)傳感器具有成本低和普及度高的優(yōu)勢(shì),極大地促進(jìn)了SLAM 的研究及未來(lái)在電子設(shè)施上的應(yīng)用。