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