曹夢龍,陳志強
(青島科技大學 自動化與電子工程學院,山東 青島 266061)
隨著機器人技術的發(fā)展,SLAM(simultaneous localization and mapping)技術的重要性也逐漸得以體現,SLAM技術是機器人研究領域的重難點之一,主要用來解決機器人在封閉空間或者未知環(huán)境中的定位以及地圖構建的問題。機器人想要成功的實現導航必須要對周圍環(huán)境有足夠的了解和對自身位姿有準確判斷。位姿通常也被稱為機器人的狀態(tài),它包含了機器人的位置和方向等必要信息,如果機器人要對一個區(qū)域進行地圖構建,那么這個區(qū)域必定是未知的或者是受限的,SLAM技術可以很好的解決這些問題。
早期的激光SLAM是以EKF-SLAM[1]、UKFSLAM[2]等為代表的基于卡爾曼濾波的SLAM技術,這些算法常被用于載有激光傳感器[3]及慣性測量單元(IMU)[4]的移動機器人上,已知機器人的初始位置,通過IMU測得的數據推算下一時刻機器人的位置,同時激光傳感器測量得到周圍環(huán)境中物體的相對位置,以此類推。除此之外還有蒙特卡洛粒子濾波的PF-SLAM[5]、以及組合算法FASTSLAM[6]等。此類SLAM算法都是基于概率一步步預測出結果的,很容易出現偏差導致機器人出現定位不準確的情況,且使用雷達獲取的地圖不夠精確,很多情況下都需要知道周圍環(huán)境的詳細信息。視覺SLAM的提出很好的解決了這一問題。
視覺SLAM相比于激光SLAM,它以機器視覺代替了激光傳感器,從而能夠更加準確高效地獲取周圍環(huán)境信息[7]。視覺SLAM發(fā)展至今,其主體主要包含5個部分:數據輸入、前端VO、后端優(yōu)化、回環(huán)檢測以及建圖[8]。文獻[9]用路徑提取代替了特征提取,將Gmapping激光SLAM與ORB-SLAM結合,并通過金字塔濾波器與曲率過濾器,實現了機器人定位功能,且該方案具有較強的魯棒性,當環(huán)境中存在運動物體時,可以充分利用這一特征。文獻[10]提出了一種基于運動矢量的改進視覺SLAM方法,提取運動物體的特征點,并根據運動矢量計算幀間相機的位姿,再剔除前后相似度高的點,經閉環(huán)檢測后,得到精確的位姿估計。近年來,基于特征提取的視覺SLAM方法逐漸成為主流方法,但同時存在著特征點不足無法準確進行特征匹配的問題。王富民等[11]針對水下相機拍攝的圖像不清楚,特征點不足的情況,提出了將圖像進行直方圖均衡化的處理方法,有效的提高了水下圖像的特征點數量,進而增強了三維點云圖的質量。CAIL等[12]將仿射變換(affine transformation)這一數學方法應用到ORB特征提取中,對樣本進行歸一化處理,進一步優(yōu)化了前端特征點的提取方法。
前后兩幀之間的關系是視覺SLAM的前端主要研究的內容,幀與幀之間的匹配程度決定了SLAM的準確性和可靠性,是十分重要的一個環(huán)節(jié)。本工作提出了一種基于除霧算法[13]的圖像增強的方法,用來解決弱光環(huán)境下移動機器人所采集到的圖像不清晰從而影響匹配的問題。該優(yōu)化方法可以增加所提取的特征點數量,且經過漢明距離篩選法篩選誤匹配點對數后,改善了前端SLAM的整體效果。
前端視覺里程計能夠根據前后兩幀的圖像來計算相機的位姿,圖像中的有效匹配點數及關鍵點數決定了該次匹配的質量,從而決定了整個位姿的計算,特別是在弱光環(huán)境下這一點要求更高。本工作提出的圖像增強算法在相機獲取RGB圖像后,采用除霧算法對采集到的圖像進行預處理。經優(yōu)化后的SLAM流程框架見圖1。
圖1 經優(yōu)化的SLAM算法流程圖Fig.1 Flow chart of optimized SLAM algorithm
在弱光環(huán)境下SLAM前端估計相機位姿的過程中,很容易因相機采集到的圖像特征點不足而造成計算誤差。文獻[13]指出,幾乎所有彩色圖像的某個區(qū)域內,總會存在像素點的某個顏色通道的值幾乎為零,稱之為暗通道,表示為
式(1)中,Jc為任意一個彩色通道,δ(x)表示以像素點X為中心的區(qū)域。簡而言之就是提取一個圖像中每一個色素的RGB分量最小值,存入一副和原始圖像大小相同的灰度圖中,由以上說法可得結論為
在計算機視覺中,霧圖像的模型通常被定義為
其中,P(x)是相機讀入的待處理圖像,J(x)為期待得到的預處理后的圖像,ρ為大氣光成分,γ為透射率。想要求解目標圖像J(x),將上式變形得到
假設ρ已經給定且γ(x)為常數值γ~(x),等式兩邊同時求取最小值運算可得
J為預期得到的圖像,根據式(1)可得
則得到γ(x)的預估計值為
在計算機視覺中,ρ的值可通過自定義得到,從暗通道中按照亮度的大小取前0.1%的像素,然后在這些像素位置中找到對應的原圖位置,尋找亮度最高的點的值作為ρ的值,對于弱光環(huán)境下的圖像,在γ=0時就可得到較好的去霧效果。因此可計算得到
有效的特征點數量決定了幀與幀之間的匹配質量,采用ORB算法進行特征提取需要FAST關鍵點及BRIEF描述子兩個部分,傳統(tǒng)的FAST關鍵點提取因其不具備足夠的可分辨性,即受距離遠近的影響較大,因此具有方向性的關鍵點(Oriented FAST)可以更加準確有效的提取關鍵點,Oriented FAST算法的實現步驟:
1)在圖像中選取一個像素點α,假設它的亮度為Iα,設定一個像素閾值T(T可經多次試驗后按具體情況取值)。
2)選取以像素點α為中心的半徑為3個像素點的圓,該圓由16個像素點組成。
3)若其中有連續(xù)的12個點的亮度超過了區(qū)間±T(即大于Iα+T或小于Iα-T),則可將像素點α作為一個特征點。
4)在以像素點α為中心半徑為3的區(qū)域D中,定義該區(qū)域的矩為
通過矩可以找到該區(qū)域圖像的質心:
5)將圖像塊中心O與質心B連接起來的方向向量即為特征點的方向,定義為
6)重復以上步驟,對每一個像素點進行相同操作。
經上述方法提取出特征點后,需要進一步對所提取的特征點周圍圖像區(qū)域進行描述,即BRIEF描述子。BRIEF描述子是二進制描述子,其描述向量由0和1組成,在上述具有方向信息的特征點的前提下,計算出的BRIEF描述子也具有良好的旋轉不變性,在特征點附近隨機選取128對像素點(p,q),按照以下規(guī)則排列為128維的二進制數矩陣:
由于弱光環(huán)境下圖像的特征點數量并不是很多,暴力匹配(brute-force matcher)是一種很適合的方法,記前一幀圖像為It,提取到的特征點為,,m=1,2,3,…,M下一幀圖像為It+1,提取到的特征點為,n=1,2,3,…,N,描述子的距離以漢明距離(Hamming distance)為度量,該算法流程圖見圖2。
圖2 特征提取算法流程圖Fig.2 Flow chart of feature extraction algorithm
本算法實驗操作系統(tǒng)為Ubuntu20.04,內存50 GB,CPU 2 GHz,運行環(huán)境為Opencv3.4.13。提取Oriented FAST關鍵點時所設定的像素閾值T經實驗驗證設定為像素點亮度Iα的20%。實驗部分分為對單張圖像的特征點提取實驗及分析、前后兩幀圖像間的特征點匹配實驗及分析、本算法與其它圖像增強方法對比實驗分析以及經優(yōu)化方法后的三維點云地圖建立實驗分析。
為了體現本工作提出的優(yōu)化算法在提取及匹配特征點方面的優(yōu)勢,進行了單張圖像特征點提取實驗分析及前后兩幀圖像特征點匹配實驗分析,所用到的圖像均為手持相機在弱光環(huán)境下拍攝得到。由于弱光環(huán)境下圖片較模糊,導致無效特征點(即不具有準確性和有效性的特征點)的數量增加,會嚴重影響前后幀的匹配質量。經本研究算法對圖像進行增強,可有效解決上述問題,見圖3。
圖3 優(yōu)化前后圖像特征點提取對比圖Fig.3 Comparison of image feature points extraction before and after optimization
實驗結果表明,經本算法優(yōu)化后,單一圖片特征點的提取數增加,且有效特征點的數量也明顯增加。特征點提取數據表和特征點匹配數據表見表1、表2。如表1所示,即增加了所提取的特征點數量,也提高了有效特征點在總特征點數中的占比,在減少計算量的同時也改善在弱光環(huán)境下的匹配質量不高的問題。
前后兩幀圖像特征點匹配的質量很大程度上取決于單個圖片的特征點提取數量及質量,圖4在單個圖片實驗的基礎上進行了與當前圖片相鄰幀之間的特征點匹配實驗,從實驗數據表2可得,本算法不僅對特征點提取部分有所優(yōu)化,同樣的對特征點匹配部分也有明顯的優(yōu)化效果。證明了本優(yōu)化算法對視覺SLAM前端部分的適用性及有效性。
表1 特征點提取數據表Table 1 Feature point extraction data table
圖4 優(yōu)化前后圖像特征點匹配對比圖Fig.4 Comparison of image feature point matching before and after optimization
表2 特征點匹配數據表Table 2 Feature point matching data table
考慮到周圍環(huán)境的多樣性及復雜性,本研究在對比實驗的選擇上選取了兩組具有代表性的弱光環(huán)境圖像作為實驗對象,并選取了兩種常見的具有代表性的圖像增強方法與本研究算法進行對比:一種是文獻[11]所述的基于直方圖均衡化的圖像增強,這種方法通用性較強;另一種是文獻[14]的圖像增強算法,該算法在對數域里對圖像的兩個分量進行處理,具有良好的圖像增強效果。對比實驗見圖5、6,表3、4。
圖5 特征點提取對比實驗Fig.5 Comparative experiment of feature point extraction
圖6 特征點匹配對比實驗Fig.6 Comparative experiment of feature point matching
表3 特征點提取對比實驗數據Table 3 Data of comparative experiment of feature point extraction
表4 特征點匹配實驗對比數據Table 4 Data of comparative experiment of feature point matching
由以上對比試驗數據可以看出,雖然另外兩種算法同樣對弱光圖像的特征點提取及匹配有一定的優(yōu)化作用,但總體效果不如本研究的優(yōu)化算法。文獻[14]算法在亮度方面的提升明顯不如本算法,而文獻[11]中的方法所得到的圖像對比度明顯過高,進而增加了無效特征點及無效特征點對的數量。本優(yōu)化算法在保證了整體性平衡的同時,無論是總體特征點數量還是有效特征點數量都明顯高于其他算法,進一步驗證了本優(yōu)化算法在弱光環(huán)境下對視覺SLAM前端部分的有效改進。
為驗證本優(yōu)化算法在三維點云建圖方面的有效性,在RGB-D對象數據集(RGB-D Object Dataset)中挑選了rgbd-scenes作為實驗數據,所建立出的三維點云圖如圖7所示。
實驗結果與原圖相比,在保持了原圖像的整體框架的基礎上,提高了許多細節(jié)之處的清晰度及完整度。
圖7 優(yōu)化前后三維點云對比圖Fig.7 Comparison of 3D point cloud before and after optimization
本工作針對弱光環(huán)境下機器人SLAM所可能產生的特征點提取不足或前后兩幀之間特征點匹配質量不高,進而影響機器人最終的定位準確性或建圖完整性這一問題,提出了一種基于弱光環(huán)境下圖像增強的優(yōu)化方法,在視覺SLAM前端部分對算法整體進行改進,經實驗驗證本研究算法增加了所提取特征點數及有效特征點的占比。同時,經過優(yōu)化方法處理后的三維點云圖在保證整體框架不變的同時,提高了清晰度及完整度。