








關(guān)鍵詞:特征點提取;光照自適應(yīng);優(yōu)化四叉樹;特征點數(shù)量;特征點均勻度
0 引言(Introduction
近年來,隨著市場對自動駕駛技術(shù)以及移動機器人技術(shù)的需求和接受程度不斷提高,機器人的視覺定位與地圖構(gòu)建技術(shù)[1](Visual Simultaneous Localization and Map,V-SLAM)逐漸成為視覺導(dǎo)航領(lǐng)域的主流研究方向。V-SLAM 技術(shù)通過機器人搭載的視覺傳感器,不僅能確定機器人當(dāng)前的空間位置,還能同步構(gòu)建環(huán)境的三維模型,是實現(xiàn)機器人的定位和導(dǎo)航的基礎(chǔ)[2]。目前,常用的視覺導(dǎo)航算法包括VINS-Mono[3](基于視覺和慣性測量單元的緊耦合狀態(tài)估計器)、OKVIS[4](基于關(guān)鍵幀的視覺-慣性SLAM系統(tǒng))、ROVIO[5](緊耦合的視覺-慣性里程計)、ORB-SLAM[6](基于ORB特征和擴展卡爾曼濾波的SLAM系統(tǒng))等,視覺SLAM算法的優(yōu)點和缺點如表1所示。
特征點提取是V-SLAM正常運行不可或缺的關(guān)鍵環(huán)節(jié),目前特征點提取常用的算法有SIFT[7](Scale-Invariant FeatureTransform)、SURF[8](Speed-Up Robust Features)和ORB[9](Oriented Fast and Rotated Brief),其中相較于SIFT算法與SURF算法,ORB算法在實時性方面具有顯著的優(yōu)勢,但由于ORB算法在特征點提取環(huán)節(jié)使用的閾值是固定的,當(dāng)環(huán)境的對比度因光照條件發(fā)生變化而下降時,ORB算法的性能會顯著降低,出現(xiàn)特征點減少、適應(yīng)性較差等問題[10]。
本文通過改進光照自適應(yīng)閾值和引進四叉樹,并結(jié)合限制對比度自適應(yīng)直方圖,實現(xiàn)了ORB-SLAM3算法特征點提取數(shù)量和特征點提取均勻度的雙重提升,使ORB-SLAM3的特征點檢測效果更佳。
1 ORB-SLAM3算法整體流程及特征點檢測算法(ORB-SLAM3 algorithm overall processand feature point detection algorithm)
1.1 ORB-SLAM3算法整體流程
ORB-SLAM3算法是ORB-SLAM 算法的改進版本,優(yōu)化了完全依賴最大后驗估計、多地圖系統(tǒng)和新位置識別方法[11]。ORB-SLAM 是基于ORB特征提取方法進行特征提取并進行匹配,實現(xiàn)機器人位置和姿態(tài)的估計。ORB-SLAM3算法流程如圖1所示。
ORB-SLAM3視覺導(dǎo)航算法通過視覺傳感器采集環(huán)境圖像后,對圖像進行ORB提取,ORB提取的準(zhǔn)確度是影響ORBSLAM3算法準(zhǔn)確度的關(guān)鍵因素。因此,對ORB-SALM3中的ORB提取步驟進行改進以提高算法準(zhǔn)確度,是非常重要且必要的。
1.2 特征點提取算法
ORB-SLAM3算法融合了ORB特征提取檢測算法。ORB特征提取算法是由Ethan Rublee在ICCV(IEEE InternationalConference on Computer Vision) 2011上提出的一種用于基于視覺信息的特征點檢測與特征點描述算法[12]。特征點檢測部分采用FAST(Features from Accelerated Segment Test)算法,特征點描述部分采用BRIEF算法[13]。首先判別是否為特征點,一旦被判別為特征點后,即采用BRIEF算法進行特征點描述并進行記錄,為提高特征點檢測效果,采用灰度質(zhì)心法以及構(gòu)建圖像金字塔保持圖像的旋轉(zhuǎn)不變性與尺度不變性。ORB特征點提取具體過程如下。
1.2.1FAST特征點檢測
FAST特征點檢測算法是通過檢測候選特征點周圍的像素點與中心候選特征點之間的灰度值差值,判斷該點是否為特征點。若周圍像素點中有連續(xù)多個像素點與中心候選特征點的灰度值差值達到設(shè)定的閾值,即判斷為特征點。使用半徑為3個像素的Bresenham圓(即周長為16個像素點的圓)判定其圓心像素點是否為特征點,對Bresenham圓上的像素點按順序進行編號。FAST特征提取示意圖如圖2所示。
p 點為待檢測特征點,以p 點為圓心、3個像素為半徑,形成一個Bresenham圓,圓上有16個編號的像素點,設(shè)灰度值閾值為tgt;0,比較待檢測特征點p 的灰度值Ip 與待檢測點周圍16個像素點的灰度值Ix 的灰度值的差值是否大于t,具體如公式(1)所示:
若Sx 等于d,則x 點屬于暗點;若Sx 等于s,則x 點屬于近似點;若Sx 等于b,則x 點屬于亮點。在p 點周圍的16個像素點中,若有連續(xù)3/4個點同為亮點或暗點,則判別p 點為特征點。然而在實際應(yīng)用中,連續(xù)檢測12個像素點的計算量較大,會導(dǎo)致實時性大大降低。為提高特征點檢測的實時性,可以分兩步檢測特征點。首先檢測1、5、9、13共4個關(guān)鍵像素點,若其中有3個連續(xù)的點同為亮點或暗點,則p 點為預(yù)備特征點,其次檢測這3個像素點中間的6個像素點,若都為亮點或暗點,則p 點就是特征點。
1.2.2 計算特征點描述子
ORB算法中通過使用BRIEF描述子算法的方式描述特征點。BRIEF描述子是一種二進制字符串描述子,以特征點為中心,取S×S 的區(qū)域U,區(qū)域U 的示意圖如圖3所示。
采用高斯濾波器對區(qū)域U 進行高斯平滑處理,再在區(qū)域U中隨機取多個點,每兩個點(假設(shè)一個點為a、一個點為b)作為一個點對,通過比較灰度值計算τ,過程如公式(2)所示:
其中:p(a)是點a 的灰度值,p(b)是點b 的灰度值。
若在特征點周圍選取n 對點對,即得到一個n 維的位字符串(即特征點描述子),n 維描述子如公式(3)所示:
1.2.3 灰度質(zhì)心法
為了提高特征點檢測的魯棒性,保持圖像的旋轉(zhuǎn)不變性,使用圖像灰度質(zhì)心法添加特征點的方向信息。圖像灰度質(zhì)心法需要計算特征點鄰域的矩,該鄰域矩如公式(4)所示:
其中:S 為特征點鄰域;F(x,y)為圖像上的坐標(biāo)為(x,y)點的灰度值;mpq 是鄰域矩。
通過鄰域矩獲得鄰域的質(zhì)心C,C 的坐標(biāo)如公式(5)所示:
因此,特征點可以用圖像塊中心點與特征點之間的角度α表示。
1.2.4 構(gòu)建圖像金字塔
由于FAST特征點提取算法缺少尺度不變性,移動機器人在不同距離記錄同一環(huán)境信息時可能出現(xiàn)誤差,因此可以通過構(gòu)建高斯圖像金字塔解決FAST特征點檢測尺度不變性的問題,具體步驟如下。
(1)對采集的原始圖像采用降采樣處理,從而生成一組采樣圖像,每層圖片用高斯函數(shù)與第一層進行卷積,得到每一層圖片尺寸相同但模糊系數(shù)不同。
(2)對原圖像構(gòu)建多尺度結(jié)構(gòu),通過設(shè)置比例系數(shù)進行向下采樣,采樣后按分辨率從低到高排列成圖像金字塔。對圖像金字塔的第n 層進行均值濾波和向下采樣,得到第n+1層圖像,具體如公式(7)所示:
其中:Gn、Gn+1 為圖像金字塔第n 層和第n+1層;ω 為均值濾波器模板,尺寸為a×a(a 為下采樣的行列間隔)。
通過構(gòu)建高斯圖像金字塔和使用灰度質(zhì)心法使FAST特征點有了尺度和旋轉(zhuǎn)的描述,進一步提升了特征點的檢測效果。
1.2.5 特征點匹配
在完成描述子計算后,對相鄰兩幀圖像進行特征點匹配。ORB-SLAM主要使用暴力匹配和FLANN(快速最近鄰匹配)兩種匹配算法[14]。暴力匹配的實質(zhì)是在后一幀圖像上找到與前一幀圖像上相似的特征點,暴力匹配實現(xiàn)簡單但計算量大,可能會出現(xiàn)誤匹配的情況。FLANN算法是基于構(gòu)建一個高效的數(shù)據(jù)結(jié)構(gòu)來加速最近鄰搜索,并且可以通過設(shè)置閾值減少誤匹配,其效率比暴力匹配高得多。
因此,本文采取FLANN算法進行特征點匹配。FLANN算法在特征點匹配中首先對圖像中的ORB特征點描述子進行查找,其次通過待匹配圖像中的特征點描述子尋找原圖像中與該特征點最近的k 個ORB特征點,并計算這k 個特征點與中間特征點間的距離,若距離小于設(shè)定值就將其匹配上,最后對匹配結(jié)果進行篩選和優(yōu)化。
2 ORB特征點檢測算法改進(Improvements in ORB feature point detection algorithm)
2.1 光照自適應(yīng)閾值的FAST特征點檢測算法
采用傳統(tǒng)ORB算法提取特征點時,依賴于固定閾值的FAST特征點檢測算法。然而,這種固定閾值策略在外部光照條件變化導(dǎo)致環(huán)境對比度下降時,會使檢測到的特征點數(shù)量減少,難以實現(xiàn)跟蹤特征點,導(dǎo)致建圖效果不佳。因此,本文提出優(yōu)化光照自適應(yīng)閾值,以應(yīng)對外界環(huán)境變化帶來的問題,自適應(yīng)閾值計算方法如下。
(1)計算以待檢測特征點O 為中心、3個像素為半徑的Bresenham圓上的16個像素點的灰度值均值μ,具體如公式(8)所示:
(2)計算16個像素點的灰度值與圖像灰度均值的差ε 以及差值的平方和ξ,具體如公式(9)和公式(10)所示:
(3)計算16個像素灰度與灰度均值差的像素分布概率P,如公式(11)所示:
2.2 改進四叉樹算法特征點均勻化
傳統(tǒng)的FAST特征點提取方法經(jīng)常出現(xiàn)特征點集中和重疊的問題,特別是在一張圖片上同時存在復(fù)雜區(qū)域與簡單區(qū)域時,會使圖像特征點分布不均勻,對復(fù)雜區(qū)域提取過多的特征點,對簡單區(qū)域提取過少的特征點,從而無法充分利用圖像上的信息。對于傳統(tǒng)的四叉樹算法是將圖片劃分成4個根節(jié)點(即劃分成4個方框)。若根節(jié)點中特征點的數(shù)量小于設(shè)定的閾值(此處設(shè)閾值為1),則根節(jié)點停止繼續(xù)劃分;若根節(jié)點中特征點的數(shù)量大于設(shè)定的閾值,則繼續(xù)對根節(jié)點進行劃分,直至根節(jié)點中的特征點數(shù)小于或等于設(shè)定的閾值或根節(jié)點面積小于或等于設(shè)定的值,但此種方法在圖像中光照強度區(qū)別較大的區(qū)域時,會導(dǎo)致特征點分布的局部不均勻。傳統(tǒng)四叉樹算法示意圖如圖4所示。
本文引入一種四叉樹結(jié)合限制對比度自適應(yīng)直方圖均衡化算法管理FAST特征點,其步驟如下。
(1)對圖像進行首次劃分,共劃分為4個根節(jié)點。
(2)劃分后,對各個區(qū)域亮度進行檢測。針對首次劃分的4個根節(jié)點進行區(qū)域亮度檢測,在每個根節(jié)點區(qū)域中提取8個像素點,通過8個像素點計算該區(qū)域的平均亮度,具體如公式(13)所示:
若A 大于設(shè)定的亮度閾值,則該根節(jié)點區(qū)域為亮區(qū);若A小于設(shè)定的亮度閾值,則該根節(jié)點區(qū)域為暗區(qū)。
(3)對檢測出的亮區(qū)與暗區(qū)進行限制對比度自適應(yīng)直方圖均衡化,使整張圖片亮度趨于均勻。相比于自適應(yīng)直方圖均衡化,限制對比度自適應(yīng)直方圖均衡化增加了對比度限幅,這也使自適應(yīng)直方圖均衡化過度放大噪聲的問題得到解決;具體步驟如下:進行圖像劃分后,計算每個子塊像素直方圖,再計算剪切閾值,對灰度值高于剪切閾值的像素點進行重分配,使其均勻地分布在整個灰度區(qū)間,以實現(xiàn)亮度均勻化。剪切直方圖示意圖如圖5所示。
(4)對光照強度均衡化后的圖像進行特征點檢測。在特征點檢測后進行更深層次的四叉樹劃分,直至每個根節(jié)點中的特征點數(shù)量小于或等于設(shè)定值,使圖像的特征點分布更加均勻。
2.3 圖像特征點分布均勻度評價方法
為便于實驗后進行分析,引入特征點均勻度評價的方法對圖像特征點均勻度進行量化,將圖像分割成4塊區(qū)域,圖像分割示意圖如圖6所示。統(tǒng)計各個區(qū)域內(nèi)的特征點數(shù)量,計算分布方差,如公式(14)所示,圖像特征點分布的均勻度可以用計算所得的分布方差表示。數(shù)值大表示各個區(qū)域特征點數(shù)量差距較大,即圖像特征點分布更集中;數(shù)值小則表示各個區(qū)域特征點數(shù)量差距較小,即圖像特征點分布更均勻。
其中:φ 表示分布方差,Ci 為區(qū)域i 的特征點數(shù)量,N 為圖像中特征點的總數(shù)。
3 實驗結(jié)果與分析(Experimental results andanalysis)
本實驗在Ubuntu22.04系統(tǒng)Opencv4.2上進行操作,利用TUM(慕尼黑工業(yè)大學(xué))公開數(shù)據(jù)集中的rgbd_dataset_freiburg2_slam對本文所提方法進行測試,并在數(shù)據(jù)集中選取較為典型的一組圖片數(shù)據(jù)進行3次不同亮度的實驗,對比原ORB-SLAM3算法與改進后的ORB-SLAM3算法在檢測的特征點數(shù)量、特征點分布均勻度兩個關(guān)鍵指標(biāo)的表現(xiàn)。改進后算法與原算法運行效果對比圖如圖7所示。
圖7中白色小方框即檢測到的特征點。圖7(a)與圖7(b)為正常光照強度下的實驗效果圖,對比兩張圖片可以看出,原算法運行時特征點大多集中于特征明顯的區(qū)域,而改進后的算法運行時特征點在整張圖像中的分布更均勻;圖7(c)與圖7(d)為光照強度降低120%的情況下的實驗效果圖,對比兩張圖片可以看出,在光照強度低時,原算法在暗處基本無法識別到特征點,而改進算法通過優(yōu)化自適應(yīng)閾值,則能對暗處特征點進行識別且特征點的分布較原算法更為均勻;圖7(e)與圖7(f)為光照強度提高120%的情況下的實驗效果圖,對比兩張圖片可以看出,相較于正常光照強度,原算法在較亮區(qū)域檢測到的特征點的數(shù)量明顯下降,而改進后的算法在較亮區(qū)域的特征點檢測依然有較好的表現(xiàn)。不同光照強度下原算法與改進算法實驗數(shù)據(jù)表如表2所示。
從表2的數(shù)據(jù)中可以看出,正常光照強度情況下,改進算法相較于原算法檢測出的特征點數(shù)量提高了9.5%、特征點均勻度提高了88.3%;光照強度降低120%的情況下,改進算法相較于原算法檢測出的特征點數(shù)量提高了30.4%、特征點均勻度提高了34.0%;光照強度提高120%的情況下,改進算法相較于原算法檢測出的特征點數(shù)量提高了72.9%、特征點均勻度提高了37.8%。實驗結(jié)果表明,改進后的ORB-SLAM3算法的特征點提取過程有了較大的優(yōu)化。
4 結(jié)論(Conclusion)
本文針對ORB-SLAM3算法在外界光照條件變化時檢測的特征點數(shù)量急劇減少且分布過于集中的問題,提出一種基于改進自適應(yīng)閾值及四叉樹的ORB_SLAM3算法。通過對原始ORB-SLAM3算法中FAST特征點提取過程進行改進,取得了較原始ORB-SLAM3算法更好的檢測效果。將改進的算法應(yīng)用于TUM公開數(shù)據(jù)集上進行實驗的結(jié)果表明,正常光照強度情況下,改進算法相較于原算法檢測出的特征點數(shù)量提高了9.5%、特征點均勻度提高了88.3%;低光照強度條件下,改進算法相較于原算法檢測出的特征點數(shù)量提高了30.4%、特征點均勻度提高了34.0%;高光照強度條件下,改進算法相較于原算法檢測的特征點數(shù)量提高了72.9%、特征點均勻度提高了37.8%。本文算法的改進,提高了原算法的魯棒性,可為后續(xù)將其應(yīng)用于高壓變電站的移動巡檢機器人或檢修機器人的視覺導(dǎo)航功能提供保障。