潘 峰,沈建新,秦 順,林 鑫
(南京航空航天大學(xué) 機(jī)電學(xué)院,江蘇 南京 210016)
特征點(diǎn)提取與匹配技術(shù)是圖像處理技術(shù)中的一個(gè)很重要的分支,對(duì)于目標(biāo)檢測(cè)和同時(shí)定位與建圖(simultaneous localization and mapping,SLAM)等領(lǐng)域而言尤為關(guān)鍵[1]?,F(xiàn)如今,特征點(diǎn)提取和匹配的算法種類(lèi)及其變形數(shù)量很多。經(jīng)典的算法包括將有方向的加速角點(diǎn)提取(features from accelerated segment test,F(xiàn)AST)[2]和帶旋轉(zhuǎn)的二進(jìn)制獨(dú)立基本特征(binary robust independent elementary features,BRIEF)[3]融合在一起的ORB算法[4](oriented FAST and rotated BRIEF,ORB)、基于尺度不變特征的SIFT算法[5,6](scale-invariant feature transform,SIFT)、基于加速穩(wěn)健特征的SURF算法[7](speeded up robust features,SURF)以及Harris Corner Detector[8]。這些算法在處理特定圖像變換時(shí)凸顯出了各自的優(yōu)勢(shì)。ORB算法的一個(gè)特點(diǎn)就是檢測(cè)速度快,可用于實(shí)時(shí)圖像特征點(diǎn)提取與匹配,該算法中采用了旋轉(zhuǎn)不變性原則以此提高提取與匹配的準(zhǔn)確性。
BRISK算法[9]、KAZE算法[10]以及AKAZE算法[11]也是極其優(yōu)秀的算法,這些算法對(duì)旋轉(zhuǎn)和尺度變換都具有不變性,算法具有極好的魯棒性。
針對(duì)一些優(yōu)秀的算法,國(guó)內(nèi)的許多學(xué)者[12-14]也做了相關(guān)的算法變形,這些算法不僅擁有原算法的優(yōu)點(diǎn),還對(duì)原算法的一些不足進(jìn)行了改進(jìn),讓算法性能顯得更加優(yōu)秀。
由于傳統(tǒng)ORB算法提取的特征點(diǎn)分布不均勻,使得圖像有些區(qū)域提取不到特征點(diǎn),從而浪費(fèi)了圖像上的大量有用信息,同時(shí)在匹配的過(guò)程中利用運(yùn)動(dòng)平滑性約束剔除誤匹配的方法會(huì)導(dǎo)致仍然存在一些誤匹配,因此先利用四叉樹(shù)原理對(duì)圖像分區(qū)域提取ORB特征點(diǎn),在提取完特征點(diǎn)之后使用GMS匹配方法[15]將運(yùn)動(dòng)平滑性約束替換成基于網(wǎng)格的剔除誤匹配的統(tǒng)計(jì)量,以此來(lái)剔除誤匹配,最終得到分布比較均勻且正確的匹配特征點(diǎn)對(duì)。
ORB算法是目前特征點(diǎn)提取匹配中用的比較多的算法之一,該算法由Oriented FAST關(guān)鍵點(diǎn)和Steer BRIEF描述子兩部分組成。
FAST算法是一種二維圖像的特征檢測(cè)算法,它可以迅速地找出一張灰度圖片中潛在的特征點(diǎn),而且速度飛快。
具體實(shí)現(xiàn)步驟如下:①以目標(biāo)像素點(diǎn)p為中心,取半徑r上M個(gè)領(lǐng)域像素點(diǎn)。②分別計(jì)算取得像素點(diǎn)與目標(biāo)像素點(diǎn)p的灰度之差的絕對(duì)值。③利用計(jì)算得到的灰度差的絕對(duì)值與所設(shè)定的閾值進(jìn)行比較,如果大于閾值,則該點(diǎn)為FAST角點(diǎn)。
對(duì)原始ORB算法的特征提取進(jìn)行改進(jìn),提出oFAST(FAST keypoint orientation)算法,在快速提取特征點(diǎn)后,又定義了特征點(diǎn)的方向,實(shí)現(xiàn)特征點(diǎn)的旋轉(zhuǎn)不變性。
1.1.1 粗提取
若判斷選擇的點(diǎn)是否是特征點(diǎn),可以采取的方式是在該點(diǎn)周?chē)砸欢ò霃疆?huà)圓,來(lái)判斷這個(gè)圓里的點(diǎn)像素灰度大于圓心點(diǎn)灰度的數(shù)量是否大于某個(gè)閾值,若大于某個(gè)閾值,則說(shuō)明圓心那一點(diǎn)為特征點(diǎn),否則就不是特征點(diǎn)。FAST角點(diǎn)檢測(cè)原理如圖1所示。比較常用的是在圓心周?chē)x取9個(gè)像素點(diǎn)的FAST-9和選取12個(gè)像素點(diǎn)的FAST-12。通常可以先按垂直方向的關(guān)系選取4個(gè)像素點(diǎn),如果這個(gè)4個(gè)像素點(diǎn)中有2個(gè)的像素灰度比圓心灰度大,有2個(gè)像素灰度比圓心灰度小,那么圓心點(diǎn)不是特征點(diǎn)。
圖1 FAST角點(diǎn)檢測(cè)原理
1.1.2 篩選最優(yōu)特征點(diǎn)
篩選出最優(yōu)特征點(diǎn)的方法有很多,其中機(jī)器學(xué)習(xí)的方式比較常見(jiàn)。把特征點(diǎn)周?chē)南袼攸c(diǎn)輸入到ID3算法訓(xùn)練出來(lái)的決策樹(shù)中,以此來(lái)判斷該特征點(diǎn)是否是最優(yōu)特征點(diǎn),具體步驟如下:
在訓(xùn)練圖片上利用FAST算法找到所有角點(diǎn)。為每個(gè)角點(diǎn)存儲(chǔ)一個(gè)向量,這個(gè)向量一般有16位,代表這個(gè)點(diǎn)周?chē)?6個(gè)像素。這個(gè)向量中的每一位都可以由式(1)所表示。在進(jìn)行了上述處理以后,需要定義一個(gè)標(biāo)志位變量來(lái)記錄這個(gè)點(diǎn)是否是角點(diǎn),如果是角點(diǎn),就將標(biāo)志位記為T(mén)rue,如果不是角點(diǎn),就將標(biāo)志位記為False。最后利用ID3算法遞歸地查詢(xún)?cè)撎卣鼽c(diǎn)的每一個(gè)子集,遞歸終止的條件是所有子集的熵變成0
(1)
1.1.3 去除鄰域位置多個(gè)重復(fù)冗余的特征點(diǎn)
先計(jì)算某個(gè)特征點(diǎn)周?chē)袼鼗叶炔钪档慕^對(duì)值來(lái)作該特征點(diǎn)的分?jǐn)?shù),如果該特征點(diǎn)鄰域范圍內(nèi)還存在其它的特征點(diǎn),也利用相同的方式,取其周?chē)袼鼗叶鹊牟钪祦?lái)作為分?jǐn)?shù),最后統(tǒng)計(jì)這些鄰域特征點(diǎn)的分?jǐn)?shù),將其放在一起進(jìn)行比較,選取分?jǐn)?shù)最高的那個(gè)特征點(diǎn)作為該鄰域范圍內(nèi)的唯一特征點(diǎn),其它分?jǐn)?shù)不是最高的特征點(diǎn)就不需要了,利用非極大值抑制的方式將其去除掉。非極大值抑制的公式如式(2)所示
(2)
ORB算法采用的Oriented FAST關(guān)鍵點(diǎn)采用灰度質(zhì)心法實(shí)現(xiàn)了旋轉(zhuǎn)不變性,與FAST角點(diǎn)相比,不僅記錄了位置信息,同時(shí)也記錄了方向信息。若某個(gè)角點(diǎn)的坐標(biāo)為O,則取該角點(diǎn)一定半徑內(nèi)的像素灰度進(jìn)行計(jì)算,灰度質(zhì)心法中的矩的定義如下
(3)
其中,I(x,y) 為圖像灰度表達(dá)式。該矩的質(zhì)心為
(4)
由式(4)的質(zhì)心坐標(biāo)可以計(jì)算得到特征點(diǎn)的方向,計(jì)算公式如下
(5)
利用FAST角點(diǎn)檢測(cè)算法后可以在圖像上得到很多特征點(diǎn),但這些特征點(diǎn)只有其自身信息,沒(méi)有周?chē)徲虻男畔?,在紋理單一、灰度相同的地方?jīng)]法判斷這些點(diǎn)在兩幅圖像上的對(duì)應(yīng)位置,因此需要將該點(diǎn)的鄰域信息也作為該點(diǎn)的一個(gè)屬性,這個(gè)屬性就是描述子,BRIEF算法就是一種描述子生成算法,該算法在FAST算法提取出來(lái)的特征點(diǎn)周?chē)徲蜻x取多個(gè)點(diǎn)對(duì),如果一個(gè)點(diǎn)對(duì)的灰度比較結(jié)果是大,則記錄為1,否則記錄為0,最后會(huì)生成一個(gè)類(lèi)似的二進(jìn)制編碼串,通常情況下N選取128、256或者512。
ORB算法的特征描述是由BRIEF算法改進(jìn)的,稱(chēng)之為rBRIEF(rotation-aware brief),rBRIEF算法在原有特征描述算法的基礎(chǔ)上加入旋轉(zhuǎn)因子,以此來(lái)保證提取描述子的過(guò)程中能夠保證自身的旋轉(zhuǎn)不變性,不會(huì)影響到描述子的生成質(zhì)量。
描述子生成步驟:
(1)利用方差為2,窗口大小為9×9的窗口對(duì)圖像進(jìn)行高斯濾波,這樣做的目的是為了減少噪聲干擾。
(2)選取某一個(gè)特征點(diǎn),在其鄰域范圍內(nèi)隨機(jī)選取一個(gè)點(diǎn)對(duì)x和y,選取的次數(shù)根據(jù)所需要的描述子長(zhǎng)度而定,每選取一個(gè)對(duì)點(diǎn)后,就進(jìn)行這兩個(gè)點(diǎn)的灰度比較,如果x的灰度比y大,則記為1,否則記為0。具體計(jì)算公式如式(6)所示
(6)
其中,p(x),p(y)分別是隨機(jī)點(diǎn)x=(u1,v1),y=(u2,v2) 的像素值。
根據(jù)所需要的描述子長(zhǎng)度進(jìn)行多次比較之后,即可得到一個(gè)長(zhǎng)度為所需要長(zhǎng)度,每一位的值都是0或1的二進(jìn)制編碼串,這個(gè)串就表示該特征點(diǎn)的周?chē)徲蛐畔?,也就是它的描述子屬性,BRIEF描述子所對(duì)應(yīng)的十進(jìn)制數(shù)如式(7)所示
(7)
ORB算法采用的描述子是Steer BRIEF描述子,與BRIEF描述子相比,利用了關(guān)鍵點(diǎn)的方向信息,進(jìn)而實(shí)現(xiàn)了描述子的旋轉(zhuǎn)不變性。具體方法是利用灰度質(zhì)心法所得到的特征點(diǎn)的方向構(gòu)建旋轉(zhuǎn)矩陣,利用該旋轉(zhuǎn)矩陣對(duì)隨機(jī)生成的BRIEF描述子矩陣進(jìn)行變換,最終得到具有方向不變性的Steer BRIEF描述子。
傳統(tǒng)的ORB算法提取出的特征點(diǎn)過(guò)于集中,會(huì)出現(xiàn)扎堆的現(xiàn)象,不僅會(huì)降低一些需要對(duì)圖像進(jìn)行特征點(diǎn)提取的算法的效果,比如說(shuō)SLAM,同時(shí)也會(huì)減少一幅圖像上的信息量。通過(guò)對(duì)圖片劃分區(qū)域,從每個(gè)區(qū)域提取特征點(diǎn)可以保證最大程度上地使用圖片上的信息,同時(shí)也增加了算法的魯棒性。步驟如下:
(1)首先對(duì)圖像金字塔上的每層都劃分網(wǎng)格。
(2)利用FAST角點(diǎn)檢測(cè)器對(duì)每層金字塔圖像提取FAST角點(diǎn),在紋理比較弱的區(qū)域如果沒(méi)法提取出特征點(diǎn),就適當(dāng)降低提取的閾值,以此保證能夠從整張圖像上獲取到足夠的FAST角點(diǎn)。
判斷是否是FAST角點(diǎn)的方法是比較某點(diǎn)像素與其周?chē)袼鼗叶鹊牟钪凳欠駶M(mǎn)足某個(gè)閾值條件。利用角點(diǎn)響應(yīng)函數(shù)和設(shè)置好的閾值T進(jìn)行分析,倘若周?chē)?6個(gè)像素點(diǎn)與p點(diǎn)的灰度差值之和大于T,則像素p即被判定為角點(diǎn)。角點(diǎn)響應(yīng)函數(shù)如下
(8)
(3)利用四叉樹(shù)的思想,對(duì)每個(gè)網(wǎng)格中提取的特征點(diǎn)進(jìn)行篩選,篩選方法是如果該網(wǎng)格中不存在特征點(diǎn),則刪除該網(wǎng)格;如果該網(wǎng)格中存在特征點(diǎn),則繼續(xù)將該網(wǎng)格劃分成四等分,再次判斷每個(gè)網(wǎng)格中是否存在特征點(diǎn),最后按照一定的策略,挑選出分布均勻的FAST角點(diǎn)。
對(duì)于提取出的大量特征點(diǎn),需要對(duì)這些特征點(diǎn)進(jìn)行篩選,最終獲得滿(mǎn)足數(shù)量的特征點(diǎn),但因?yàn)檫x擇策略的不同,會(huì)導(dǎo)致最終提取的特征點(diǎn)在圖像上的位置有所差別,影響最終特征點(diǎn)匹配的效果。因此本文采用四叉樹(shù)的篩選策略挑選特征點(diǎn)。
具體策略如下:
(1)首先需要確定初始的圖像中大概能分出幾個(gè)原始節(jié)點(diǎn)。將利用原始ORB算法提取過(guò)大量特征點(diǎn)的圖像分成幾份,一般將分辨率為640×480的圖像只分成一個(gè)節(jié)點(diǎn),也就是四叉樹(shù)的根節(jié)點(diǎn)。
(2)若原圖像本來(lái)只有一個(gè)節(jié)點(diǎn),則該節(jié)點(diǎn)在經(jīng)歷第1次分裂后,1個(gè)根節(jié)點(diǎn)分裂成為4個(gè)節(jié)點(diǎn),每個(gè)節(jié)點(diǎn)中的特征點(diǎn)就是落在該節(jié)點(diǎn)范圍內(nèi)的特征點(diǎn),都是來(lái)自原來(lái)的那個(gè)大節(jié)點(diǎn)。每次分裂完后需要統(tǒng)計(jì)每個(gè)節(jié)點(diǎn)中的特征點(diǎn)數(shù)量,如果某個(gè)節(jié)點(diǎn)所包含的特征點(diǎn)數(shù)量為0,那么就刪除該節(jié)點(diǎn),如果某個(gè)節(jié)點(diǎn)里特征點(diǎn)數(shù)量為1,則該節(jié)點(diǎn)不再進(jìn)行分裂,但不進(jìn)行刪除,永遠(yuǎn)保留下去,直到分裂終止再進(jìn)行處理。如果該節(jié)點(diǎn)中特征點(diǎn)數(shù)量大于1,則表示節(jié)點(diǎn)還可以再分裂,每次分裂完后判斷此時(shí)的節(jié)點(diǎn)總數(shù)是否超過(guò)設(shè)定值,如果沒(méi)有超過(guò)則下次分裂時(shí)對(duì)那些仍然可以分裂的節(jié)點(diǎn)進(jìn)行分裂。
需要注意的是,一個(gè)父節(jié)點(diǎn)在經(jīng)過(guò)一次分裂之后就變成了4個(gè)子節(jié)點(diǎn),而對(duì)于原來(lái)的父節(jié)點(diǎn)將不再需要,直接將其刪除,從總數(shù)量上來(lái)看,每次分裂都會(huì)增加3個(gè)節(jié)點(diǎn),而不是增加4個(gè)節(jié)點(diǎn)。利用上述規(guī)律可以提前判斷大約分裂多少次之后就可以達(dá)到所需要的節(jié)點(diǎn)總數(shù)閾值,計(jì)算方式為:當(dāng)前節(jié)點(diǎn)總數(shù)+即將分裂的節(jié)點(diǎn)總數(shù)×3。
(3)若新分裂的節(jié)點(diǎn)里的特征點(diǎn)還是大于1個(gè),就再次分裂成4個(gè)節(jié)點(diǎn)。如此往復(fù),一直分裂,分裂終止條件是節(jié)點(diǎn)的數(shù)量大于所需要提取出的特征點(diǎn)數(shù)量,或者所有節(jié)點(diǎn)都無(wú)法再分裂。
當(dāng)出現(xiàn)很多個(gè)節(jié)點(diǎn)中所包含的特征點(diǎn)數(shù)量都大于1,都能進(jìn)行下一次分裂的情況,這時(shí)采用的策略是優(yōu)先分裂特征點(diǎn)數(shù)量最多的節(jié)點(diǎn),然后分裂特征點(diǎn)數(shù)量次高的節(jié)點(diǎn),以此類(lèi)推,通過(guò)把特征點(diǎn)數(shù)量多的節(jié)點(diǎn)先分裂開(kāi)來(lái)的策略可以使得特征密集的區(qū)域能夠更加細(xì)分。如果某些節(jié)點(diǎn)所包含的特征點(diǎn)比較少,可能會(huì)因?yàn)樘崆斑_(dá)到了節(jié)點(diǎn)閾值要求而不需要再分裂了,保證了提取時(shí)充分考慮到所有節(jié)點(diǎn),提高了提取的準(zhǔn)確性。
(4)當(dāng)分裂達(dá)到節(jié)點(diǎn)閾值這個(gè)終止條件時(shí),從所分裂出的每一個(gè)節(jié)點(diǎn)中利用非極大值抑制的思想選擇出角點(diǎn)響應(yīng)值最高的特征點(diǎn)作為這個(gè)節(jié)點(diǎn)的代表特征點(diǎn),而其它響應(yīng)值低于該節(jié)點(diǎn)的特征點(diǎn)都將被刪除,不需要進(jìn)行保留,通過(guò)四叉樹(shù)的策略從提取出的大量特征點(diǎn)篩選出合適的特征點(diǎn),就得到了分布比較均勻且數(shù)目達(dá)到要求的特征點(diǎn)。
四叉樹(shù)策略篩選特征點(diǎn)如圖2所示。
圖2 四叉樹(shù)篩選特征點(diǎn)流程
對(duì)于暴力匹配后的結(jié)果,存在大量的誤匹配,利用GMS算法可以剔除誤匹配。該方法通過(guò)統(tǒng)計(jì)正確和錯(cuò)誤匹配鄰域的可區(qū)分度,來(lái)判斷該匹配是否正確,進(jìn)而剔除誤匹配。GMS匹配方法基于假設(shè):如果匹配是正確的匹配,那么這個(gè)正確匹配的小范圍內(nèi)的匹配集中在三維空間的同一個(gè)區(qū)域。同樣地,一個(gè)錯(cuò)誤匹配的小范圍內(nèi)的匹配會(huì)出現(xiàn)在三維空間的不同位置,幾乎不會(huì)出現(xiàn)在同一個(gè)區(qū)域。
假設(shè)輸入圖像I1有N個(gè)特征匹配,輸入圖像I2有M個(gè)特征匹配;定義C={c1,c2,…,ci,…,cN} 來(lái)表示圖Ia到圖Ib的最近鄰匹配,其中ci表示像素點(diǎn)pi與qi的匹配;定義ci的領(lǐng)域?yàn)?/p>
Ni={cj|cj∈C,cj≠ci,d(pi,pj)}
(9)
根據(jù)式(9)可以得到ci的相似領(lǐng)域,如式(10)所示
Si={cj|cj∈Ni,d(qi,qj) (10) 其中,Si中元素的個(gè)數(shù),也就是匹配ci的運(yùn)動(dòng)支持,用 |Si| 表示,d(·,·) 是兩點(diǎn)之間的歐式距離,r1和r2為距離閾值。對(duì) |Si| 建模,如式(11)所示 (11) 其中,錯(cuò)誤匹配被其某個(gè)鄰域窗口匹配支持的概率用ε表示,正確匹配被其某個(gè)鄰域窗口匹配支持的概率用t表示,鄰域Ni內(nèi)匹配對(duì)的數(shù)量用 |Ni| 表示。通過(guò)分析得到式(11)期望為 (12) 以及式(11)的方差為 (13) 正確和錯(cuò)誤匹配的可區(qū)分度可以通過(guò)期望和方差來(lái)表示,如式(14)所示 (14) 利用基于劃分網(wǎng)格的算法可以對(duì)以上算法進(jìn)行加速,將兩幅需要進(jìn)行匹配的圖像按照某種策略劃分成很多個(gè)小網(wǎng)格:ω1以及ω2,ci表示落在網(wǎng)格Ga和Gb中的一個(gè)匹配對(duì),在圖3中用一條實(shí)線(xiàn)段表示。于是鄰域(表示在網(wǎng)格Ga中的匹配)被重新定義為 Ni={cj|cj∈Ca,ci≠cj} (15) 相似鄰域被重新定義為 Si={cj|cj∈Cab,ci≠cj} (16) 圖3 基于網(wǎng)格的框架 式(15)和式(16)中,Ga表示某個(gè)網(wǎng)絡(luò),Ca表示落在Ga中的匹配對(duì),Cab表示同時(shí)落在Ga和Gb中的匹配對(duì)。算法定義鄰域?yàn)槁湓谕痪W(wǎng)格中的匹配,定義相似鄰域?yàn)橥瑫r(shí)落在兩個(gè)網(wǎng)格中的匹配,即區(qū)對(duì)。 算法的性能與網(wǎng)格的大小有關(guān)系,如果網(wǎng)格非常小,那么很多鄰域信息都將忽略,但與之相反,并不是網(wǎng)格越大越好,網(wǎng)格的大小過(guò)大會(huì)將很多不正確的對(duì)應(yīng)關(guān)系也包含進(jìn)來(lái)。因此網(wǎng)格大小的選取即為重要,既不能忽略太多的鄰域信息,也不能將太多的錯(cuò)誤信息包含進(jìn)去,為了解決鄰域信息包含太少的問(wèn)題,采用運(yùn)動(dòng)內(nèi)核來(lái)將更多的鄰域信息包含進(jìn)去,同時(shí)為了提高算法的準(zhǔn)確性,也需要將網(wǎng)格設(shè)置的比較小,如圖4所示。 圖4 運(yùn)動(dòng)核 根據(jù)網(wǎng)格設(shè)置較小,采用運(yùn)動(dòng)內(nèi)核的思路,在原有網(wǎng)格鄰域的8個(gè)網(wǎng)格的基礎(chǔ)上構(gòu)成了一個(gè)更大的網(wǎng)格 (Ca1b1,…,Ca9b9)。 由此重新定義了鄰域 Ni={cj|cj∈CA,ci≠cj} (17) 重新定義相鄰鄰域 Si={cj|cj∈CAB,ci≠cj} (18) 其中,CAB=Ca1b1∪Ca2b2∪Ca3b3…∪Ca9b9。 針對(duì)旋轉(zhuǎn)問(wèn)題,利用旋轉(zhuǎn)運(yùn)動(dòng)核模擬不同方向的旋轉(zhuǎn),如圖5所示,固定CA, 對(duì)CB按照順時(shí)針旋轉(zhuǎn),這樣可以得到8個(gè)運(yùn)動(dòng)核,然后在所有運(yùn)動(dòng)核上使用GMS算法,然后選擇最好的結(jié)果(選擇匹配數(shù)量最多的那個(gè))。 圖5 旋轉(zhuǎn)運(yùn)動(dòng)核 本文融合GMS的改進(jìn)ORB算法的總體流程如圖6所示。 圖6 改進(jìn)ORB算法總流程 本次實(shí)驗(yàn)所使用的CPU為Intel i5-9300H,頻率為2.40 HZ,顯卡為GTX1650,所使用的操作系統(tǒng)為Ubuntu16.04,進(jìn)行測(cè)試的圖片選自TUM數(shù)據(jù)集,選取的3張圖片其桌面物體的紋理比較豐富,但桌面和地板紋理單一,很適合本次實(shí)驗(yàn)。實(shí)驗(yàn)圖片如圖7所示。 圖7 實(shí)驗(yàn)測(cè)試圖片 特征點(diǎn)提取算法種類(lèi)很多,例如ORB算法、BRISK算法以及AZAKE算法等,但這些算法都沒(méi)法在紋理比較弱的地方提取出足夠的特征點(diǎn),甚至可能一個(gè)特征點(diǎn)都提取不出來(lái)。上述算法提取出的特征點(diǎn)大多數(shù)都集中在紋理比較豐富的地方,使得圖片很大部分區(qū)域的信息都沒(méi)有利用上。因此針對(duì)上面的問(wèn)題,將四叉樹(shù)策略應(yīng)用到特征點(diǎn)提取中,對(duì)大量粗提取的特征點(diǎn)進(jìn)行精提取,充分利用圖片上的信息,最終提取出分布比較均勻的特征點(diǎn)。 利用改進(jìn)的特征點(diǎn)提取匹配方法對(duì)實(shí)驗(yàn)圖片1進(jìn)行特征點(diǎn)提取,分別對(duì)比了ORB算法、BRISK算法和AZAKE算法與改進(jìn)后的ORB特征點(diǎn)提取匹配方法的效果。 如圖8的實(shí)驗(yàn)結(jié)果所示,ORB算法、BRISK算法和AKAZE算法提取的特征點(diǎn)分布比較密集,基本集中在紋理比較豐富的桌子上的物體,但對(duì)于紋理比較弱的地板和桌面,基本提取不出特征點(diǎn),很不利于對(duì)整張圖片信息的利用。而對(duì)于改進(jìn)的ORB算法提取的特征點(diǎn)分布比較均勻,可以從圖8(d)中看出,地面以及桌面等紋理比較弱的地方,也可以提取出比較多的特征點(diǎn),最大程度地保留了圖片上的有用信息。 圖8 4組實(shí)驗(yàn)結(jié)果 傳統(tǒng)的暴力匹配的方式在匹配完后存在一些誤匹配的情況,匹配的準(zhǔn)確性將影響到很多算法的準(zhǔn)確性,因此在暴力匹配結(jié)束后,利用GMS算法基于網(wǎng)格模型對(duì)匹配后的特征點(diǎn)進(jìn)行誤匹配剔除,最終可以獲得非常準(zhǔn)確的匹配結(jié)果。 利用3組圖片分別對(duì)原始ORB算法、BRISK算法、AKAZE算法以及改進(jìn)的ORB算法進(jìn)行特征點(diǎn)匹配實(shí)驗(yàn)。 如表1所示,對(duì)實(shí)驗(yàn)圖片1進(jìn)行特征點(diǎn)提取與匹配,改進(jìn)的ORB算法,如圖9所示,匹配率達(dá)到28.2%,比ORB算法高了4.5%,其效果與AKAZE算法效果相當(dāng),但特征點(diǎn)提取用時(shí)上卻比ORB算法用時(shí)高了3倍時(shí)間,匹配用時(shí)也比其它算法用時(shí)高一些,但總體上并不影響該算法的實(shí)時(shí)性。 表1 4種算法特征點(diǎn)提取匹配效果對(duì)比(采用實(shí)驗(yàn)圖片1) 圖9 改進(jìn)ORB算法匹配效果 表2中顯示的是原始ORB算法、BRISK算法、AKA 表2 4種算法在不同圖片上的匹配率/% ZE算法以及改進(jìn)ORB算法在不同圖片上的匹配率。對(duì)于實(shí)驗(yàn)圖片1,改進(jìn)后的ORB算法匹配率為28.2%;對(duì)于實(shí)驗(yàn)圖片2,算法的匹配率為24.7%;對(duì)于實(shí)驗(yàn)圖片3,算法的匹配率達(dá)到23.1%;可以看出,改進(jìn)的ORB算法匹配率與其它算法相比,顯得更加優(yōu)秀,可以獲得更高的匹配率。 表3顯示的是原始ORB算法、BRISK算法、AKAZE算法以及改進(jìn)的ORB算法在不同圖片上的匹配用時(shí)。從中可以看出,由于引入GMS算法,整體的匹配用時(shí)變長(zhǎng)了一些,但在某些圖片上與其它算法的用時(shí)相差不大,甚至比一些算法的匹配用時(shí)短,對(duì)于基本的實(shí)時(shí)性,改進(jìn)后的ORB算法可以滿(mǎn)足。 表3 4種算法在不同圖片上的匹配用時(shí)/s 針對(duì)傳統(tǒng)的ORB特征點(diǎn)提取算法提取的特征點(diǎn)位置分布不均勻的問(wèn)題以及存在誤匹配的問(wèn)題,提出了一種改進(jìn)的ORB算法,對(duì)圖像分區(qū)域提取特征點(diǎn)并與GMS匹配算法相結(jié)合,首先對(duì)圖像整體提取特征點(diǎn),然后利用四叉樹(shù)原理對(duì)提取出的特征點(diǎn)分區(qū)域進(jìn)行挑選,最終得到分布相對(duì)均勻的特征點(diǎn),其次通過(guò)GMS算法將特征點(diǎn)的運(yùn)動(dòng)平滑約束轉(zhuǎn)變?yōu)樘蕹`匹配的統(tǒng)計(jì)量,對(duì)提取出的特征點(diǎn)進(jìn)行匹配和誤匹配剔除。 實(shí)驗(yàn)結(jié)果表明,改進(jìn)后的ORB算法在測(cè)試圖片1上的匹配率達(dá)到了28.2%,比原始ORB算法提高了4.5%,達(dá)到了更高的匹配率,且所匹配出來(lái)的特征點(diǎn)與其它算法相比更加均勻,能夠有效地利用到整個(gè)圖片的信息。同時(shí)該算法用時(shí)雖然有些許增加,但并不影響其實(shí)時(shí)性。3 實(shí)驗(yàn)驗(yàn)證分析
3.1 實(shí)驗(yàn)平臺(tái)
3.2 改進(jìn)ORB算法圖像提取實(shí)驗(yàn)
3.3 改進(jìn)ORB算法圖像匹配實(shí)驗(yàn)
4 結(jié)束語(yǔ)