錢潘優(yōu) 甘屹



摘 要:針對(duì)機(jī)器人快速運(yùn)動(dòng)時(shí)視覺里程計(jì)精度嚴(yán)重下降問題,提出基于點(diǎn)線特征的幀間匹配流視覺里程計(jì)(Point and line of frame math,PL-FM)算法,以提高機(jī)器人在快速運(yùn)動(dòng)情形下的定位精度。PL-FM算法通過(guò)對(duì)圖像的預(yù)處理去噪,在特征點(diǎn)提取時(shí)引入灰度值權(quán)重,從而降低快速運(yùn)動(dòng)時(shí)光照的影響。將特征點(diǎn)匹配問題轉(zhuǎn)化為向量計(jì)算,從而減少匹配時(shí)間,在幀間匹配流則采用衰減關(guān)鍵幀計(jì)算位姿,從而提高關(guān)鍵幀利用率。通過(guò)4組實(shí)驗(yàn)對(duì)比,證明PL-FM算法誤差精度提高70%,時(shí)間效率提高75%,保證了移動(dòng)機(jī)器人的定位實(shí)時(shí)性,實(shí)現(xiàn)了低誤匹配率及較高的定位精度。
關(guān)鍵詞:預(yù)處理去噪;灰度值權(quán)重;幀間匹配流
DOI:10. 11907/rjdk. 192559 開放科學(xué)(資源服務(wù))標(biāo)識(shí)碼(OSID):
中圖分類號(hào):TP301 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1672-7800(2020)005-0001-08
0 引言
在移動(dòng)機(jī)器人定位領(lǐng)域,提升視覺里程計(jì)的定位精度是研究熱點(diǎn)[1-6]。通常,相機(jī)安裝于機(jī)器人上,視覺里程計(jì)指通過(guò)相機(jī)輸出的連續(xù)圖像初步估計(jì)相機(jī)的位姿和局部地圖,又稱為前端[7]。在計(jì)算位姿過(guò)程中,有基于特征法和直接法的前端。特征法又分為基于特征點(diǎn)和特征線的方法。特征點(diǎn)法有提取特征點(diǎn)冗余度高和計(jì)算量大的缺點(diǎn),特征線相比特征點(diǎn)法信息量更豐富,室內(nèi)環(huán)境中特征線數(shù)量一般也多于特征點(diǎn)數(shù)量,特征線對(duì)光照強(qiáng)弱的影響也更魯棒[8]。直接法是通過(guò)最小化光度誤差求取相機(jī)位姿,實(shí)時(shí)性較高,但對(duì)光照敏感,應(yīng)用局限于室內(nèi)環(huán)境。本文對(duì)快速運(yùn)動(dòng)下提高室內(nèi)機(jī)器人前端定位精度進(jìn)行研究。前端定位精度受許多因素影響,諸如環(huán)境中光照強(qiáng)弱、移動(dòng)機(jī)器人運(yùn)動(dòng)快慢、環(huán)境中紋理強(qiáng)弱、視頻流中突然出現(xiàn)動(dòng)態(tài)物體對(duì)相機(jī)進(jìn)行遮擋、特征點(diǎn)誤匹配、位姿漂移、位姿重定位等。文獻(xiàn)[9]使用LSD(Line Segment Detector)進(jìn)行特征線提取與匹配并計(jì)算位姿,但圖像遇到遮擋、局部模糊等情況時(shí),提取到的特征線被割裂且不連續(xù),嚴(yán)重影響定位精度;文獻(xiàn)[10]使用直接法結(jié)合輪式里程計(jì)計(jì)算位姿,避免了特征點(diǎn)提取,不會(huì)遭遇特征點(diǎn)過(guò)少問題。但是直接法適用于幀間較小運(yùn)動(dòng)情況,且對(duì)光照機(jī)極為敏感;文獻(xiàn)[11]提出補(bǔ)充區(qū)域特征點(diǎn)計(jì)算位姿,但增加了計(jì)算量,系統(tǒng)實(shí)時(shí)性不強(qiáng);文獻(xiàn)[12]使用深度圖中點(diǎn)云數(shù)據(jù)直接求取機(jī)器人位姿,避免了特征點(diǎn)提取步驟,但點(diǎn)云規(guī)模通常非常大,不但增加了存儲(chǔ)量,且計(jì)算量大,實(shí)時(shí)性低;文獻(xiàn)[13]提出點(diǎn)線面聯(lián)合的視覺里程計(jì)系統(tǒng),但提取的是SIFT特征,計(jì)算量過(guò)大。在快速運(yùn)動(dòng)場(chǎng)景下提升視覺里程計(jì)定位精度方法上,文獻(xiàn)[9]沒有發(fā)揮出特征線比特征點(diǎn)更魯棒的特性,所以定位精度不高;文獻(xiàn)[10]使用直接法計(jì)算定位,只能在室內(nèi)使用,局限性較大;文獻(xiàn)[10]-[13]雖然在一定程度上提升了定位精度,但存在計(jì)算量過(guò)大問題。
本文提出基于點(diǎn)線特征的幀間匹配流視覺里程計(jì)(Point and line of frame math,PL-FM)算法。首先采用鄰域半徑多尺度RANSAC直線擬合算法提取特征線,從不同簇中以斜率的變化迭代出最優(yōu)直線,避免了文獻(xiàn)[9]中直線割裂問題,以提高特征線提取精度;然后采用k-余弦灰度值加權(quán)平均多尺度空間曲率特征點(diǎn)提取算法,從特征線中提取特征點(diǎn),由于機(jī)器人快速運(yùn)動(dòng),光照變化的影響會(huì)變得顯著,故引入灰度值權(quán)重的概念解決文獻(xiàn)[10]中光照變化在機(jī)器人快速運(yùn)動(dòng)中的影響;使用余弦描述子和多尺度協(xié)方差描述子進(jìn)行特征點(diǎn)匹配,余弦描述子和協(xié)方差描述子將許多特征點(diǎn)的同時(shí)匹配問題映射為向量計(jì)算,相比文獻(xiàn)[11]中的補(bǔ)充特征點(diǎn)區(qū)域和文獻(xiàn)[12]中的點(diǎn)云直接匹配,有效減少了計(jì)算量;最后采用幀間匹配流算法,從不斷衰減的關(guān)鍵幀中迭代出最優(yōu)關(guān)鍵幀流,用以計(jì)算最優(yōu)位姿。
1 前端預(yù)處理
前端預(yù)處理分為RGB圖像和點(diǎn)云預(yù)處理。從相機(jī)直接獲取的每一幀圖像都包含大量噪聲,必須先進(jìn)行圖像預(yù)處理。預(yù)處理可以有效消除圖像中無(wú)關(guān)信息,增強(qiáng)有關(guān)信息可檢測(cè)性,從而為后續(xù)的特征提取、位姿求取提供基礎(chǔ)。
本文將RGB圖像預(yù)處理分為圖像濾波和圖像增強(qiáng)兩步。設(shè)[f]是原相機(jī)提取的RGB圖像,[f]為濾波后的圖像,(x,y)為圖像中某像素的坐標(biāo),[G(x,y)]為高斯核函數(shù),[A]為高斯核函數(shù)系數(shù),使用公式(1)進(jìn)行濾波。
點(diǎn)云相比RGB圖像更容易受到噪聲影響,由于環(huán)境因素的影響,有些像素深度值穩(wěn)定性差,通常有3類情況:①像素處于物體邊緣處;②被孤立的像素;③深度值超出量程的像素。針對(duì)這3種情況,首先剔除邊緣點(diǎn)和孤立點(diǎn),其次限定像素深度值的選取范圍在0.6m~4.6m之間,最后使用[5×5]高斯核濾波器平滑深度圖像。
2 點(diǎn)、特征線提取與匹配
2.1 特征線提取
對(duì)比文獻(xiàn)[9]中LSD算法,經(jīng)典隨機(jī)抽樣一致性算法 (RANSAC)[14]適用于在含有大量噪聲的數(shù)據(jù)中提取特定模型,面對(duì)圖像像素灰度值突變時(shí)提取出的直線不會(huì)斷開,能夠生成連續(xù)完整的特征線。由于機(jī)器人運(yùn)動(dòng)快速,圖像紋理變化豐富時(shí)使用經(jīng)典RANSAC算法提取特征線,會(huì)造成迭代周期較長(zhǎng)或結(jié)果發(fā)散,原因是算法搜索整個(gè)圖像區(qū)域時(shí)間代價(jià)高,碰到異常像素值容易引起結(jié)果發(fā)散。
針對(duì)以上問題,PL-FM算法采用鄰域半徑多尺度RANSAC直線擬合算法(multi-scale RANSAC neighborhood radius straight line fitting algorithm,MRNRS-LFA)用于機(jī)器人快速運(yùn)動(dòng)時(shí)的特征線提取。先使用聚類方法減少圖像搜索區(qū)域,再使用斜率為依據(jù)提取特征線,避免了像素異常值干擾。該算法對(duì)光照不敏感,具有存儲(chǔ)量小和計(jì)算量小的特點(diǎn)。將公式(3)中輸出的圖像[f]輸入MRNRS-LFA,經(jīng)過(guò)迭代得到特征線[lrn],具體步驟如下:①以鄰域半徑為尺度參數(shù)[ri],使用密度聚類算法將已有點(diǎn)集[Γ]劃分為一個(gè)個(gè)簇[Θn];②隨機(jī)抽取某個(gè)簇[Θn],在簇[Θn]中使用經(jīng)典RANSAC算法擬合出直線[lri],并求取直線[lri]的斜率[ki];③遍歷每個(gè)簇中的直線斜率[ki],如果兩個(gè)簇中直線斜率之差小于閾值[ψ],則標(biāo)記這兩條直線屬于同一條直線,并加入標(biāo)記池[Ω]中,不同范圍斜率直線加入對(duì)應(yīng)的標(biāo)記池([Ω1,Ω2,Ωn])中,并記錄每個(gè)標(biāo)記池中的直線數(shù)量[n];④循環(huán)步驟②、步驟③,將各個(gè)標(biāo)記池中的直線進(jìn)行拼接形成完整的最終特征線[lrn],取[n]最大的那個(gè)標(biāo)記池,輸出此標(biāo)記池中的特征線[lrn]。