楊弘凡,李 航,陳凱陽(yáng),李嘉琪,王曉菲
(河南科技大學(xué) 機(jī)電工程學(xué)院,河南 洛陽(yáng) 471003)
移動(dòng)機(jī)器人和無(wú)人機(jī)的關(guān)鍵技術(shù)之一是環(huán)境感知,尋找圖像特征是基于視覺(jué)環(huán)境感知的重要組成部分。圖像特征一般分為點(diǎn)特征、線(xiàn)特征和面特征,由于點(diǎn)特征具有在相機(jī)視角發(fā)生少許變化時(shí)能保持不變的獨(dú)特優(yōu)點(diǎn)而備受關(guān)注[1]。目前常用的特征點(diǎn)提取算法主要有尺度不變特征變換(scale-invariant feature transform,SIFT)、加速穩(wěn)健特征(speeded-up robust features,SURF)和定向二進(jìn)制簡(jiǎn)單描述符(oriented fast and rotated brief,ORB)等[2]。前兩種算法發(fā)展較為成熟,但在運(yùn)行速率和實(shí)時(shí)性方面不能滿(mǎn)足要求較高的場(chǎng)合,而ORB算法適當(dāng)降低了精度和健碩性,以提升計(jì)算速度,減少計(jì)算時(shí)間,是質(zhì)量和性能較好的折中,但光照變化造成圖像亮度變化,常會(huì)導(dǎo)致傳統(tǒng)ORB算法出現(xiàn)一系列的不穩(wěn)定性,使環(huán)境感知無(wú)法準(zhǔn)確進(jìn)行。因此,研究亮度變化場(chǎng)景下的ORB特征點(diǎn)提取具有非常重要的意義。
文獻(xiàn)[3]提出了基于加速段測(cè)試的特征(features from accelerated segment test,FAST)檢測(cè)和二值魯棒獨(dú)立元素特征(binary robust independent elementary features,BRIEF)描述算子的新算子ORB算法,F(xiàn)AST算法和BRIEF算法的組合能夠達(dá)到很高的效率[4]。文獻(xiàn)[5]提出了融合SURF算法的ORB和網(wǎng)格運(yùn)動(dòng)統(tǒng)計(jì)的特征點(diǎn)檢測(cè)方法。文獻(xiàn)[6]對(duì)SIFT特征點(diǎn)提取算法進(jìn)行了改進(jìn),并用隨機(jī)抽樣一致性算法消除了誤匹配點(diǎn)。然而,上述兩種基于固定閾值的特征點(diǎn)提取在亮度變化下難以保持原有效果。文獻(xiàn)[7]提出了一種具有旋轉(zhuǎn)不變性的ORB特征點(diǎn)多級(jí)快速圖像拼接算法,對(duì)于固定亮度的室內(nèi)環(huán)境效果較好。文獻(xiàn)[8]在室內(nèi)環(huán)境采用FAST角點(diǎn)自適應(yīng)閾值提取,設(shè)置感興趣區(qū)域,采用非極大值抑制的方法抑制低閾值特征點(diǎn)的輸出,但此方法對(duì)環(huán)境和硬件設(shè)備要求較高。
針對(duì)以上問(wèn)題,本文基于原始ORB特征點(diǎn)提取算法提出了一種改進(jìn)特征點(diǎn)提取算法。該算法采用自適應(yīng)閾值的FAST特征檢測(cè)算法,根據(jù)像素的亮度自動(dòng)設(shè)計(jì),計(jì)算閾值,從而改進(jìn)了基于固定閾值的ORB特征點(diǎn)的識(shí)別方法,使得在室外亮度變化時(shí)的特征點(diǎn)提取更加穩(wěn)定,減少了特征點(diǎn)的重疊聚集。以特征點(diǎn)數(shù)量、提取時(shí)間和重復(fù)率作為指標(biāo)評(píng)價(jià)方法,改變圖像亮度,在室外數(shù)據(jù)集上進(jìn)行圖像特征點(diǎn)提取的對(duì)比實(shí)驗(yàn),對(duì)改進(jìn)前后算法進(jìn)行定量分析。盡管提取時(shí)間出現(xiàn)了略微增加,但仍大大優(yōu)于SIFT和SURF等算法。
由于FAST關(guān)鍵點(diǎn)不具備方向性,因此在ORB算法中添加了對(duì)旋轉(zhuǎn)的描述,給FAST點(diǎn)分配一個(gè)方向,使其成為具有方向性的FAST點(diǎn)(oriented-FAST或o-FAST)?;诨叶荣|(zhì)心法實(shí)現(xiàn)方向性的計(jì)算,實(shí)現(xiàn)步驟如下,在一個(gè)小的圖像塊S中,定義圖像塊的鄰域矩如式(1)所示[9]:
(1)
其中:F(x,y)為圖像中點(diǎn)(x,y)的亮度值。通過(guò)這個(gè)鄰域矩可以找到圖像的質(zhì)心坐標(biāo),如式(2)所示:
(2)
其中:m00是零階矩陣,m10,m01是一階矩陣。在ORB中,這個(gè)圖像區(qū)域?yàn)镕AST關(guān)鍵點(diǎn)的鄰域,即以O(shè)為圓心,以3個(gè)像素為半徑的圓形區(qū)域,即x,y的取值是[-3,3]。連接圖像的幾何中心O與質(zhì)心C,得到直線(xiàn)OC方向向量,于是可以用向量的方向來(lái)表示ORB特征點(diǎn)的方向角,如式(3)所示:
α=arctan (m01/m10)。
(3)
因此,ORB特征點(diǎn)的方向角可以由角點(diǎn)和質(zhì)心的夾角表示。F(x,y)中x和y的范圍控制在半徑為r的圓形區(qū)域內(nèi),提取到的角點(diǎn)具有旋轉(zhuǎn)不變性。ORB算法采用BRIEF描述子對(duì)特征點(diǎn)進(jìn)行描述,在獲取特征點(diǎn)方向后,計(jì)算BRIEF描述子,其核心思想是在特征點(diǎn)周?chē)x取31 pixels×31 pixels的鄰域窗口,并在這個(gè)鄰域窗口選擇5 pixels×5 pixels的點(diǎn)對(duì)進(jìn)行像素比較,比較結(jié)果作為描述子。定義圖像塊的點(diǎn)對(duì)比較準(zhǔn)則τ為:
(4)
其中:函數(shù)p為點(diǎn)x,y的灰度值。隨機(jī)選擇n對(duì)點(diǎn)(xi,yi),就可以生成一個(gè)二進(jìn)制字符串,則BRIEF描述子的結(jié)果如式(5)所示:
(5)
為了使BRIEF描述子的方向具有旋轉(zhuǎn)不變性,選取n個(gè)點(diǎn)對(duì)組成的特征集合,設(shè)定一個(gè)2×n的矩陣Q:
(6)
由圖像像素鄰域的方向可以計(jì)算出旋轉(zhuǎn)矩陣Rθ:
(7)
矩陣Q經(jīng)旋轉(zhuǎn)矩陣Rθ,得到一個(gè)新的特征集合,定義為Sθ:
Sθ=RθQ。
(8)
這時(shí),得到矯正后具有方向的ORB特征描述符,如式(9)所示:
gn(p,q)=fn(p)|(xi,yi)∈Qθ,
(9)
其中:n一般取256,即256個(gè)點(diǎn)對(duì)。利用貪婪搜索算法,找到256個(gè)點(diǎn)對(duì)使其相關(guān)性最低,得到帶有方向的特征描述子rBRIEF[10-12]。
FAST關(guān)鍵點(diǎn)檢測(cè)示意圖如圖1所示,F(xiàn)AST關(guān)鍵點(diǎn)是一種角點(diǎn)。角點(diǎn)是指圖像中處于角落的像素點(diǎn),這些點(diǎn)附近的像素值變化劇烈,因而容易被檢測(cè)出,具體需要對(duì)圖像上所有像素點(diǎn)進(jìn)行檢測(cè)。圖1a為圖像上一處具有代表性的候選角點(diǎn),因?yàn)橹庇^來(lái)看該候選角點(diǎn)位于一棱角處,其曲率足夠高且曲率變化明顯,因此選擇該像素點(diǎn)進(jìn)行分析說(shuō)明,但并不意味著該點(diǎn)就是真實(shí)角點(diǎn)。候選角點(diǎn)放大后的附近圓形窗口如圖1b所示,p是圖1b中的中心像素點(diǎn),其亮度是IP,主要分析以p為圓心,以3個(gè)像素為半徑的圓周上的16個(gè)像素點(diǎn)。
(a) 候選角點(diǎn) (b) 像素點(diǎn)附近圓形窗口圖1 FAST關(guān)鍵點(diǎn)檢測(cè)示意圖
FAST關(guān)鍵點(diǎn)檢測(cè)如式(10)所示:
(10)
圖2 第1,5,13像素屬于明類(lèi)或暗類(lèi)時(shí)FAST特征點(diǎn)檢測(cè)示意圖
其中:Ipn是16個(gè)像素中第n個(gè)像素的亮度;t是固定閾值。當(dāng)Spn=d時(shí),該像素被歸類(lèi)至暗類(lèi);當(dāng)Spn=s時(shí),歸類(lèi)至相似類(lèi);當(dāng)Spn=b時(shí),歸類(lèi)至明類(lèi)。如果有9個(gè)連續(xù)的像素屬于暗類(lèi)或者明類(lèi)時(shí),p可以被認(rèn)為是特征點(diǎn)(即FAST-9,也有FAST-12)[13],此方法需要至少連續(xù)檢測(cè)9個(gè)像素點(diǎn)的亮度。在實(shí)際運(yùn)算中,為了檢測(cè)出連續(xù)9個(gè)符合條件的像素,需要從像素1至9,2至10,…,8至16范圍內(nèi)檢測(cè),最理想情況也需要計(jì)算9個(gè)像素亮度,最差情況需要計(jì)算54個(gè)像素亮度,計(jì)算量巨大。
為了減少計(jì)算量,直接檢測(cè)圓周上第1,5,9,13個(gè)像素點(diǎn)的亮度(也可以選取2,6,10,14等,需間隔3個(gè)像素)。當(dāng)有3個(gè)像素同時(shí)屬于暗類(lèi)或者明類(lèi),則該像素點(diǎn)可能是候選特征點(diǎn),否則直接排除。
判斷3個(gè)像素為候選點(diǎn)后,檢測(cè)此3個(gè)像素包圍環(huán)內(nèi)的剩余6個(gè)像素亮度,若剩余6個(gè)像素點(diǎn)的亮度均屬于暗類(lèi)或者明類(lèi),則該p是正確特征點(diǎn)。第1,5,13像素屬于明類(lèi)或暗類(lèi)時(shí),F(xiàn)AST特征點(diǎn)檢測(cè)示意圖如圖2所示,當(dāng)?shù)?,5,13像素的亮度屬于暗類(lèi)或者明類(lèi)時(shí),繼續(xù)檢測(cè)1-5-13包絡(luò)的剩余6個(gè)像素點(diǎn),即像素2,3,4,14,15,16,若這些1-5-13包絡(luò)的像素點(diǎn)都屬于暗類(lèi)或明類(lèi),則p為特征點(diǎn)。
圖3 改進(jìn)FAST算法的特征點(diǎn)檢測(cè)流程圖
原FAST檢測(cè)中的閾值是人為設(shè)定的,設(shè)置為亮度I的一定百分比。隨著室外環(huán)境光照、對(duì)比度的變化,一幅圖像的特征點(diǎn)將出現(xiàn)誤提取和誤排除的現(xiàn)象,導(dǎo)致特征點(diǎn)分布不均勻,出現(xiàn)重疊。如果用固定全局閾值或固定局部閾值難以達(dá)到理想效果,可以采用動(dòng)態(tài)局部閾值法:采用自應(yīng)閾值分割,在對(duì)圖像中每個(gè)像素進(jìn)行FAST特征點(diǎn)檢測(cè)時(shí),都設(shè)置有各自不同的閾值。選取準(zhǔn)則是對(duì)每個(gè)像素p定義閾值t,如式(11)所示:
(11)
其中:Imax為圓周上亮度最高的像素點(diǎn)的亮度;Imin為圓周上亮度最低的像素點(diǎn)的亮度;Ia為14個(gè)像素點(diǎn)亮度的平均值。δ為自適應(yīng)參數(shù),等于經(jīng)驗(yàn)閾值所占中心像素亮度的百分比。經(jīng)實(shí)驗(yàn),δ取20%時(shí)特征點(diǎn)數(shù)量變化更加穩(wěn)定。
改進(jìn)FAST算法的特征點(diǎn)檢測(cè)流程如圖3所示,具體步驟如下:
步驟1 選取像素點(diǎn)p,計(jì)算Ip1,Ip5,Ip9,Ip13。
步驟2 判斷Ip1>Ip+t或Ip1 步驟3 逐個(gè)檢測(cè)剩余6個(gè)點(diǎn)的Ipn。 步驟4 判斷對(duì)于步驟3所檢測(cè)的Ipn是否都存在Ipn>Ip+t或Ipn 為了驗(yàn)證本文算法的有效性,在卡爾斯魯厄理工學(xué)院與豐田工業(yè)大學(xué)數(shù)據(jù)集(Karlsruher institut für technologie and Toyota technological institute,KITTI)上進(jìn)行仿真測(cè)試。該數(shù)據(jù)集用于測(cè)試立體圖像、光流、視覺(jué)測(cè)距、3D物體檢測(cè)和3D跟蹤等[14]。本文采用路徑為raw data city下的2011_09_28_drive_0001數(shù)據(jù),圖像分辨率為1 392 pixels×512 pixels,長(zhǎng)度為164幀(時(shí)長(zhǎng)16 min),實(shí)驗(yàn)選擇第6幀灰度圖像進(jìn)行測(cè)試。測(cè)試硬件為Windows 7、Intel i3-4170,內(nèi)存為4 GB隨機(jī)存取存儲(chǔ)器(random access memory,RAM),軟件為MATLAB R2014a。 設(shè)置原FAST算法程序中閾值threshold=40,改進(jìn)FAST算法程序中自適應(yīng)參數(shù)δ=20%。為了使對(duì)比效果明顯,不進(jìn)行非極大值抑制[15]。在同一幅實(shí)驗(yàn)原圖上改進(jìn)前后算法的提取效果如圖4所示。 (a) 原FAST算法提取效果 (b) 改進(jìn)FAST算法提取效果 圖4 實(shí)驗(yàn)原圖上改進(jìn)前后算法的ORB特征點(diǎn)提取效果 圖5 亮度減少60%后原FAST算法的ORB特征點(diǎn)提取效果 從圖4a可以看出:原FAST算法在提取ORB特征點(diǎn)時(shí)有大量特征點(diǎn)重疊,特征點(diǎn)聚集嚴(yán)重。從圖4b可以看出:改進(jìn)FAST算法提取的特征點(diǎn)數(shù)量明顯減少,幾乎沒(méi)有特征點(diǎn)重疊,特征點(diǎn)分布均勻,一定程度上抑制了特征點(diǎn)的聚集。 為了進(jìn)一步驗(yàn)證改進(jìn)前后FAST算法對(duì)不同亮度的適應(yīng)能力,改變圖像亮度進(jìn)行實(shí)驗(yàn)。在原圖亮度基礎(chǔ)上減少60%亮度后,原FAST算法提取結(jié)果如圖5所示,在原圖亮度基礎(chǔ)上減少20%或減少60%,或增加20%亮度后,改進(jìn)FAST算法提取結(jié)果如圖6所示。 從圖5可以看到:在亮度減少60%后,原FAST算法提取的ORB特征點(diǎn)數(shù)量劇烈減少且含有大量重疊。而對(duì)應(yīng)圖6a中改進(jìn)FAST算法的特征點(diǎn)提取數(shù)量并未急劇下降,同時(shí)也沒(méi)有大量重疊。結(jié)合初始亮度的提取效果(見(jiàn)圖4b),以及亮度增加20%和減少20%后的提取效果(見(jiàn)圖6b和圖6c),可以得出:在亮度增加20%或減少20%后,改進(jìn)FAST算法提取的ORB特征點(diǎn)數(shù)量不僅未減少,反而出現(xiàn)了輕微增加,說(shuō)明改進(jìn)后的算法在小幅度亮度變化下檢測(cè)范圍擴(kuò)大,特征點(diǎn)分布均勻、無(wú)重疊。 在原圖亮度基礎(chǔ)上分別逐漸增加和減少20%、40%、60%后,兩種算法提取的特征點(diǎn)數(shù)量如圖7所示。由圖7可以看出:改進(jìn)FAST算法提取的特征點(diǎn)數(shù)量最多為358個(gè),最少為278個(gè),極差為80個(gè),僅占原始亮度特征點(diǎn)數(shù)量的25%;而原FAST算法提取到的特征點(diǎn)數(shù)量最大達(dá)到了363個(gè),最小為50個(gè),極差為313個(gè),占原始亮度特征點(diǎn)數(shù)量的87%。改進(jìn)FAST算法提取的特征點(diǎn)數(shù)量總體低于原FAST算法。原因是原FAST算法提取到的特征點(diǎn)有大量聚集和重疊,特征點(diǎn)數(shù)量隨著亮度變化出現(xiàn)了劇烈減少,而改進(jìn)FAST算法提取的特征點(diǎn)數(shù)量沒(méi)有出現(xiàn)急劇變化,說(shuō)明對(duì)亮度的變化適應(yīng)性更強(qiáng)。 圖7 不同亮度下兩種算法提取的特征點(diǎn)數(shù)量對(duì)比 特征點(diǎn)數(shù)量并不能很好地檢驗(yàn)算法的效果,因?yàn)橄噍^于固定閾值出現(xiàn)的誤提取、誤排除,自適應(yīng)閾值并不能在特征點(diǎn)數(shù)量上看出明顯變化。為了進(jìn)一步檢測(cè)改進(jìn)算法的效果,選取提取時(shí)間和重復(fù)率作為指標(biāo)來(lái)量化評(píng)價(jià),其中,重復(fù)率是改變亮度之后圖像與實(shí)驗(yàn)原圖重合的特征點(diǎn)[16]占實(shí)驗(yàn)原圖特征點(diǎn)數(shù)量的百分?jǐn)?shù): (12) 其中:Nr為改進(jìn)前后兩幅圖像中重復(fù)的特征點(diǎn)數(shù)量;Nf為原圖中的特征點(diǎn)數(shù)量。 圖8是不同亮度下兩種算法重復(fù)率對(duì)比。由圖8可以看到:兩種算法在原始亮度的圖像上重復(fù)率都是100%,但隨著亮度減少60%和增加60%后,原FAST算法的重復(fù)率急劇下降到了38%和55%,這說(shuō)明原始圖像上提取到的特征點(diǎn)已經(jīng)無(wú)法準(zhǔn)確體現(xiàn)到亮度變化后的圖像上。改進(jìn)FAST算法盡管在亮度減少和增加后重復(fù)率出現(xiàn)了下降,但降幅只有20%,重復(fù)率依舊保持在80%以上,相較于原FAST算法,改進(jìn)FAST算法的重復(fù)率穩(wěn)定性好,對(duì)于亮度變化有著良好的適應(yīng)能力。 圖9是圖像亮度變化下提取時(shí)間對(duì)比。改進(jìn)FAST算法的ORB特征點(diǎn)提取時(shí)間為280~290 ms,整體高于原FAST算法的提取時(shí)間,但增幅穩(wěn)定在20~30 ms,相較于原提取時(shí)間只增加了10%。通常SIFT和SURF算法提取時(shí)間分別高于1 500 ms和500 ms,因此,改進(jìn)FAST算法提取時(shí)間仍遠(yuǎn)低于SURF、SIFT等算法,能夠滿(mǎn)足系統(tǒng)實(shí)時(shí)性的要求。 由于改進(jìn)FAST算法對(duì)特征點(diǎn)數(shù)量、重復(fù)率都做出了優(yōu)化,所以即使改進(jìn)提取特征點(diǎn)算法的耗時(shí)略微增加,但在后續(xù)特征點(diǎn)匹配環(huán)節(jié)能夠有效減少冗余和重復(fù)特征點(diǎn)所導(dǎo)致的誤匹配點(diǎn)對(duì)的出現(xiàn),再加上合理的匹配方法,能夠使特征點(diǎn)對(duì)的匹配線(xiàn)程時(shí)間減少。 圖8 不同亮度下兩種算法重復(fù)率對(duì)比 圖9 不同亮度下兩種算法提取時(shí)間對(duì)比 本文提出了一種改進(jìn)的ORB特征點(diǎn)提取算法,相較于原始算法有以下優(yōu)勢(shì):(1)特征點(diǎn)數(shù)量、重復(fù)率隨亮度變化波動(dòng)??;(2)檢測(cè)范圍擴(kuò)大,且隨亮度變化未發(fā)生劇烈減少;(3)特征點(diǎn)分布均勻無(wú)重疊。下一階段工作重點(diǎn)應(yīng)圍繞在特征點(diǎn)對(duì)匹配階段有效利用改進(jìn)ORB特征點(diǎn)提取算法的優(yōu)點(diǎn),進(jìn)一步縮短特征點(diǎn)對(duì)提取和匹配的總時(shí)間,使其出現(xiàn)更少的誤匹配和欠匹配。2 ORB特征點(diǎn)提取實(shí)驗(yàn)
3 結(jié)束語(yǔ)