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