楊 潔,華云松
(上海理工大學(xué)光電信息與計(jì)算機(jī)工程學(xué)院,上海 200093)
隨著工業(yè)4.0 的發(fā)展,雙目立體視覺(jué)技術(shù)廣泛應(yīng)用于多個(gè)領(lǐng)域,例如目標(biāo)識(shí)別[1]、目標(biāo)跟蹤[2]、三維重建[3]和圖像配準(zhǔn)[4-5]等。而目標(biāo)物體特征點(diǎn)檢測(cè)和匹配的精度和效率直接影響雙目立體視覺(jué)技術(shù)在實(shí)際應(yīng)用中的可行性與有效性,因此特征匹配顯得尤為重要。
目前,應(yīng)用較廣泛的圖像匹配方法主要有兩種:基于灰度的匹配[6]和基于特征的匹配[7]。由于在抗噪性和匹配精度以及對(duì)物體的旋轉(zhuǎn)、尺度、遮擋的魯棒性等方面表現(xiàn)良好[8-10],基于特征的匹配方法是當(dāng)前研究領(lǐng)域的熱門(mén),比較成熟的有尺度不變特征變換(Scale-Invariant Feature Transform,SIFT)算法[11]和加速穩(wěn)健特征(Speeded-Up Ro?bust Features,SURF)算法[12]。SIFT 算法首次于1999 年由Lowe[11]提出,并在2004 年加以完善。該算法在光照、旋轉(zhuǎn)和遮擋等方面表現(xiàn)良好,但運(yùn)行速度較慢。2006 年,Bay[12]提出的SURF 算法是對(duì)SIFT 算法的改進(jìn),在保持SIFT 算法良好性能的基礎(chǔ)上,采用積分圖像、黑塞矩陣(Hessian Ma?trix)和Haar 小波變換,相比SIFT 算法,提高了算法的運(yùn)行速度和魯棒性。由于SURF 算法存在主方向可能不準(zhǔn)確的情況,易影響后續(xù)特征向量提取和匹配,最終導(dǎo)致誤匹配,因此許多學(xué)者在這方面進(jìn)行了大量的研究工作。例如,陳潔等[13]在傳統(tǒng)SURF 算法之后加入基于極線約束的隨機(jī)抽樣一致(Random Sample Consensus,RANSAC)算法提高匹配精度;黃春鳳等[14]引入雙向唯一性匹配和基于視差約束后的RANSAC 算法剔除誤匹配;景軍鋒等[15]通過(guò)使用SURF 和ORB 算法提取特征點(diǎn)和生成描述子,再結(jié)合RANSAC 算法進(jìn)行匹配,應(yīng)用在鞋面圖像中提高了匹配精度。由于RANSAC 算法是全隨機(jī)抽取樣本,存在計(jì)算量大、算法實(shí)時(shí)性不高等缺點(diǎn),甚至可能存在不會(huì)收斂的情況,這樣就會(huì)導(dǎo)致圖像對(duì)齊或者匹配失敗。
基于以上分析,本文提出一種優(yōu)化SURF 算法。首先對(duì)原圖像進(jìn)行雙邊濾波;接著對(duì)預(yù)處理后的圖像使用SURF 算法進(jìn)行特征提取和生成特征描述子;再使用快速最近鄰逼近搜索(Fast Library for Approximate Nearest Neighbors,F(xiàn)LANN)算法進(jìn)行初匹配;根據(jù)歐式距離,引入最大距離和最小距離差值的閾值比T再次對(duì)初匹配對(duì)進(jìn)行篩選;對(duì)于匹配結(jié)果中仍然存在的偽匹配點(diǎn),最后采用半隨機(jī)漸進(jìn)一致采樣(Progressive Sample Consensus,PRO?SAC)[16]算法進(jìn)行二次優(yōu)化與剔除,改掉傳統(tǒng)SURF 算法和加入RANSAC 算法篩選后仍然存在的誤匹配率高的缺點(diǎn),最終達(dá)到精細(xì)匹配效果。將優(yōu)化的SURF 特征匹配算法與雙目立體視覺(jué)測(cè)距原理相結(jié)合,完成測(cè)距實(shí)驗(yàn)。結(jié)果表明,本文算法能夠有效減少錯(cuò)誤匹配特征點(diǎn)數(shù)目,滿足更高測(cè)距精度要求。
平行式光軸雙目視覺(jué)系統(tǒng)模型如圖1 所示,該模型基于小孔成像原理,通過(guò)固定放置的雙目視覺(jué)采集任意目標(biāo)物的兩幅圖像,經(jīng)過(guò)雙目立體匹配將目標(biāo)物特征像素點(diǎn)在左右圖像中匹配起來(lái),即可以獲得雙目相機(jī)圖像上的視差D,進(jìn)而求得景深。
Fig.1 Binocular vision projection model圖1 雙目視覺(jué)投影模型
圖1 中坐標(biāo)系X軸在同一直線上,Z表示物體到相機(jī)的實(shí)際距離,兩相機(jī)的Y軸、Z軸分別平行,左右相機(jī)光心分別為Ol與Or;基線長(zhǎng)度記為b,相機(jī)焦距為f。P(X,Y,Z)為空間任意一點(diǎn),其在兩相機(jī)平面的投影分別是Pl(xl,yl)和Pr(xr,yr)。
視差為:
根據(jù)三角形相似關(guān)系有:
由式(2)可推導(dǎo):
傳統(tǒng)SURF 算法主要步驟包括:特征點(diǎn)檢測(cè)、主方向確定、小波特征點(diǎn)描述和特征點(diǎn)匹配。
由此可見(jiàn),構(gòu)式“確認(rèn)過(guò)眼神X”是帶有感情色彩的,具有一定的立場(chǎng)表達(dá)性。使用該構(gòu)式可以促進(jìn)正面義的幽默表達(dá)和帶有諷刺意味的負(fù)面義的委婉表達(dá),同時(shí)這種表達(dá)更幽默風(fēng)趣,深入人心。其中特別是對(duì)人的委婉諷刺,相對(duì)地增加了話語(yǔ)的禮貌程度,確保交際在友好的氛圍中進(jìn)行[10]115。此外,構(gòu)式具有典型的語(yǔ)境適切性[11]41-50,即要理清說(shuō)話人是處于何種語(yǔ)境條件下使用的。“確認(rèn)過(guò)眼神X”構(gòu)式在其發(fā)展演化的過(guò)程中,構(gòu)式義經(jīng)歷了動(dòng)態(tài)的演變過(guò)程。判定其是積極義或消極義需要結(jié)合一定的語(yǔ)境條件,而不是簡(jiǎn)單地從構(gòu)式的表現(xiàn)形式進(jìn)行推測(cè)。
(1)特征點(diǎn)檢測(cè)。SURF 算法的核心步驟是采用Hes?sian 矩陣行列式檢測(cè)特征點(diǎn),圖像f(x,y)中每一個(gè)像素點(diǎn)(x,y)的Hessian 矩陣,經(jīng)高斯濾波如式(4)所示。
式(4)中,Lxx、Lxy和Lyy為經(jīng)過(guò)高斯濾波二階微分后圖像g(σ)在各個(gè)方向的二階微分。SURF 使用了盒式濾波器進(jìn)一步求得矩陣H判別式的近似值為式(5)。
為了適應(yīng)尺度不變性,構(gòu)造高斯金字塔尺度空間;通過(guò)計(jì)算近似Hessian 矩陣行列式的局部最大值定位感興趣點(diǎn)位置。
(2)主方向確定。通過(guò)統(tǒng)計(jì)特征點(diǎn)鄰域的Haar 小波特征可以確定特征點(diǎn)主方向:以特征點(diǎn)為中心,在一定尺度大小為半徑的圓形領(lǐng)域內(nèi),以角度為60°的扇形窗口進(jìn)行旋轉(zhuǎn)掃描,分別統(tǒng)計(jì)該區(qū)域中水平方向和垂直方向的Haar小波響應(yīng)計(jì)算值,最后將兩者的統(tǒng)計(jì)結(jié)果值相加,重復(fù)上述過(guò)程,找到最大的結(jié)果值方向即為特征點(diǎn)的主方向。
(3)特征點(diǎn)描述。在特征點(diǎn)周圍建立一個(gè)帶方向的正方形框,框的方向?yàn)槎ㄎ坏降奶卣鼽c(diǎn)的主方向,邊長(zhǎng)為20s(s 是檢測(cè)特征點(diǎn)對(duì)應(yīng)的尺度)。然后將框等分為16 個(gè)子區(qū)域,在劃分的子區(qū)域中相對(duì)特征點(diǎn)主方向,分別統(tǒng)計(jì)水平方向、垂直方向的Haar 小波特征計(jì)算之和絕對(duì)值之和將子區(qū)域用一個(gè)四維向量表示,如式(6)所示。
每個(gè)子框有4 個(gè)值,重復(fù)統(tǒng)計(jì)16 個(gè)正方向子框,最終以16*4=64 維的向量表征每個(gè)特征點(diǎn)。
(4)特征點(diǎn)匹配。傳統(tǒng)SURF 算法匹配是通過(guò)最近鄰搜索,計(jì)算參考圖像中每一個(gè)特征點(diǎn)與待匹配圖像的最近和次近歐式距離的比值,若比值小于給定閾值則保留該匹配點(diǎn),否則剔除。
傳統(tǒng)SURF 算法檢測(cè)實(shí)際采集圖像可能會(huì)包含大量噪聲等其他偽特征點(diǎn),導(dǎo)致有效特征點(diǎn)的數(shù)量和準(zhǔn)確度不高。由于每一個(gè)特征點(diǎn)都由64 維特征向量表示,因此在特征點(diǎn)匹配時(shí)會(huì)存在誤匹配點(diǎn)多和計(jì)算量大等問(wèn)題,不能保證雙目測(cè)距精度的要求。為了提高傳統(tǒng)SURF 的準(zhǔn)確性和實(shí)時(shí)性,將該算法流程進(jìn)行優(yōu)化如圖2 所示。
Fig.2 Flow chart of SURF optimization algorithm圖2 SURF 優(yōu)化算法流程
為過(guò)濾掉噪聲及一些其他偽特征點(diǎn),考慮像素點(diǎn)周圍的空間臨近度和灰度相似關(guān)系,對(duì)采集到的左右圖像進(jìn)行快速雙邊濾波[17],如式(7):
x為當(dāng)前點(diǎn)位置,y為s×s區(qū)域內(nèi)的點(diǎn),Ix、Iy為像素值,Gσd為空間鄰域關(guān)系函數(shù)為空間距離,Gσr為灰度值相似函數(shù),σd、σr為高斯標(biāo)準(zhǔn)差。
(1)FLANN 匹配。采用快速近似最近鄰FLANN 算法對(duì)特征點(diǎn)進(jìn)行初次匹配,計(jì)算左圖像中特征點(diǎn)xi到右圖像特征點(diǎn)yi的歐氏最短距離dxi yi,以及特征點(diǎn)xi到右圖像特征點(diǎn)yi1的歐氏次短距離dxi yi1。若:
其中,δ取值范圍一般在0.4~0.8,則左圖像特征點(diǎn)xi與右圖像特征點(diǎn)yi記為一對(duì)匹配點(diǎn)對(duì),否則剔除。
(2)基于最大距離和最小距離差值的閾值比T初步篩選匹配點(diǎn)。若經(jīng)過(guò)FLANN 算法對(duì)特征點(diǎn)初次匹配后,保留下的大量特征點(diǎn)仍不可避免地存在誤匹配現(xiàn)象。為了再次消除誤匹配,引入最大距離和最小距離差值的閾值比T進(jìn)行粗匹配。首先,基于匹配點(diǎn)對(duì)的最佳匹配和最差匹配思想,計(jì)算左右特征匹配點(diǎn)對(duì)的歐式距離,找到最佳匹配(Min)和最差匹配(Max)的歐式距離;其次,分別計(jì)算其余特征點(diǎn)對(duì)的距離M與最佳匹配(Min)和最差匹配(Max)距離差值的比值t,如式(10)所示。當(dāng)t<Τ時(shí),保留此特征點(diǎn)對(duì),否則剔除。
(3)利用PROSAC 剔除誤匹配點(diǎn)。經(jīng)過(guò)近似最近鄰算法初次匹配找到相對(duì)精確的匹配點(diǎn)對(duì),再經(jīng)過(guò)基于最大距離和最小距離差值的閾值比T篩選匹配點(diǎn)對(duì)后,再次引入改進(jìn)的隨機(jī)抽樣一致算法PROSAC 算法剔除誤匹配點(diǎn)。PROSAC 算法是半隨機(jī)抽取樣本,首先會(huì)根據(jù)樣本數(shù)據(jù)質(zhì)量進(jìn)行排序,從質(zhì)量較好的數(shù)據(jù)中抽取樣本,這樣就大大減小了計(jì)算量,可以提高特征點(diǎn)匹配速度,同時(shí)改善了全隨機(jī)抽樣RANSAC 算法在可能無(wú)法收斂情況下導(dǎo)致的圖像對(duì)齊或者匹配失敗。
設(shè)x和y為一對(duì)匹配點(diǎn),如果該匹配點(diǎn)對(duì)不為誤匹配,則有式(11)成立。
其中,F(xiàn)表示基礎(chǔ)矩陣。其步驟為:①將經(jīng)過(guò)閾值比T篩選后的匹配對(duì)集合按照歐式距離升序排序;②從集合中選取質(zhì)量較好的前m個(gè)特征點(diǎn),計(jì)算出對(duì)應(yīng)的基礎(chǔ)矩陣;③計(jì)算一個(gè)匹配點(diǎn)對(duì)到對(duì)應(yīng)極限距離的平方和,如果平方和的值小于F[18],確定此匹配點(diǎn)對(duì)為正確匹配點(diǎn)對(duì);④重復(fù)上述過(guò)程直到迭代次數(shù)達(dá)到最大迭代次數(shù)或者達(dá)到正確匹配點(diǎn)對(duì)數(shù)目的設(shè)定閾值。最終得到單應(yīng)性矩陣H,如式(12),即兩幅圖像的映射關(guān)系。
本文優(yōu)化的SURF 算法基于Python 語(yǔ)言編程實(shí)現(xiàn),實(shí)驗(yàn)平臺(tái)為PyCharm 2018 和OpenCV-contrib-python3.4.2.16,計(jì)算機(jī)系統(tǒng)是Windows 10,Intel(R)Core(TM)i5-8265U CPU @ 1.60GHz 1.80GHz,8G 內(nèi)存。本文通過(guò)雙目相機(jī)采集到的物體圖像驗(yàn)證算法可行性,圖像分辨率為1 280×960,格式為JPG 格式。
為了驗(yàn)證本文算法的精確性和實(shí)時(shí)性,基于SURF 算法檢測(cè)的特征點(diǎn)分別與FLANN 算法、最大距離和最小距離差值的閾值比粗匹配算法、RANSAC 算法、PROSAC 算法進(jìn)行組合試驗(yàn)。本實(shí)驗(yàn)采用目標(biāo)物與相機(jī)距離1 400mm 處的圖像,實(shí)驗(yàn)結(jié)果如圖3 所示,數(shù)據(jù)統(tǒng)計(jì)如表1 所示。
Fig.3 Comparison of 4 matching methods圖3 4 種匹配方法比較
Table 1 Comparison of matching results of four algorithms表1 4 種算法匹配結(jié)果比較
圖3(a)為僅使用FLANN 的匹配結(jié)果,其中存在比較明顯的錯(cuò)誤匹配情況;圖3(b)為使用FLANN 算法后加入最大距離和最小距離差值的閾值比T進(jìn)行的粗匹配結(jié)果,相比圖3(a)已經(jīng)剔除一部分錯(cuò)誤匹配點(diǎn)對(duì),相對(duì)匹配精度有所改善;3(c)為使用FLANN 算法加入全隨機(jī)抽樣RANSAC算法對(duì)匹配點(diǎn)對(duì)優(yōu)化,顯然比僅使用最大和最小差值閾值比剔除誤匹配效果更好;圖3(d)為本文算法匹配結(jié)果,相比其他3 種算法配準(zhǔn)視覺(jué)效果更好。
從表1 可以看出,在SURF 算法之后僅使用FLANN 算法匹配,誤匹配率相對(duì)較高,但同時(shí)用時(shí)最短,為99.93ms;在傳統(tǒng)SURF 算法之后引入最大和最小距離差值的閾值比T,或者加入RANSAC 算法可以分別將誤匹配率從46.4%降低到26.8%和11.8%,但同時(shí)匹配時(shí)間也分別顯著增加,約為FLANN 匹配算法的3 倍;本文算法相對(duì)其他3 種匹配算法誤匹配率相對(duì)最低,僅為6.4%,用時(shí)也相對(duì)稍長(zhǎng),但匹配時(shí)間相差在ms 數(shù)量級(jí),考慮精度和匹配速度都不錯(cuò)的情況下,本文算法的運(yùn)算速度更快、精度更高。
為了驗(yàn)證本文算法在遮擋和光照共同影響情況下具有較好的魯棒性,將本文算法與傳統(tǒng)SIFT 算法、傳統(tǒng)SURF算法和傳統(tǒng)SURF 算法+RANSAC 算法進(jìn)行比較,如圖4 所示。
Fig.4 Comparison of 4 methods圖4 4 種算法比較
Table 2 Comparison of results of four algorithms表2 4 種算法結(jié)果比較
由圖4 和表2 可以看到,在遮擋和光照共同影響下,傳統(tǒng)SIFT、傳統(tǒng)SURF 算法和傳統(tǒng)SURF 算法+RANSAC 算法都具有很好的魯棒性。傳統(tǒng)SURF 算法在SIFT 算法的基礎(chǔ)上改進(jìn)而來(lái),其在運(yùn)行效率和誤匹配率等方面都優(yōu)于SIFT算法,在加入了RANSAC 算法后,進(jìn)一步降低了誤匹配率,但同樣也存在一些誤匹配現(xiàn)象。本文算法在降低誤匹配率性能方面明顯優(yōu)于另外3 組算法,但由于是在SURF 算法之后的優(yōu)化匹配,因此運(yùn)行時(shí)間相比SURF 算法稍長(zhǎng),但是相差在ms 數(shù)量級(jí)。結(jié)合上述分析并考慮精度方面,本文算法更優(yōu)。
為了驗(yàn)證本文算法的可行性,搭建雙目視覺(jué)測(cè)距系統(tǒng)進(jìn)行驗(yàn)證及分析。將兩個(gè)雙目相機(jī)平行放置,基線距離為100mm,經(jīng) 過(guò)Zhang[19]標(biāo)定得到雙目視覺(jué)系統(tǒng)焦距為2 556.516 2,基線距離為100.429 3。通過(guò)在距離雙目視覺(jué)系統(tǒng)不同位置處放置目標(biāo)物,然后結(jié)合式(3)得到理論測(cè)量距離。
本次選取實(shí)驗(yàn)?zāi)繕?biāo)物與雙目系統(tǒng)實(shí)際距離范圍為800~1 700mm 的幾組數(shù)據(jù),比較目標(biāo)測(cè)量距離進(jìn)行分析,測(cè)試結(jié)果如表3 所示。
Table 3 Comparison of ranging results表3 測(cè)距結(jié)果比較
由表3 可以看到,本文算法在測(cè)量距離1 300mm 時(shí)精度最高,誤差百分比絕對(duì)值為0.26%;在稍遠(yuǎn)距離1 400~1 700mm 之間測(cè)量精度有所下降,誤差百分比絕對(duì)值在1.09%~1.38%之間;在800~1 000mm 之間精度再次下降,誤差百分比絕對(duì)值在1.17%~3.15%之間。在比較靠近相機(jī)和距離相機(jī)較遠(yuǎn)位置測(cè)量精度會(huì)有所下降,在1 100~1 500mm之間測(cè)量精度最高。結(jié)果表明,本文算法在實(shí)際測(cè)距中有較好的精度和實(shí)時(shí)性。
本文提出了一種應(yīng)用于雙目測(cè)距系統(tǒng)的優(yōu)化SURF 算法,通過(guò)對(duì)圖像進(jìn)行雙邊濾波以減少后續(xù)的非必要特征點(diǎn)提??;引入最大距離和最小距離差值的閾值比T進(jìn)行初次篩選并使用PROSAC 算法進(jìn)行二次剔除與優(yōu)化。相比傳統(tǒng)SIFT 算法、傳統(tǒng)SURF 算法和僅加入RANSAC 算法,本文算法不僅在遮擋、光照條件下具有較好的魯棒性,而且在剔除誤匹配對(duì)方面效果顯著,對(duì)提高匹配精度具有一定優(yōu)勢(shì)。同時(shí),在雙目測(cè)距實(shí)驗(yàn)中有較高的準(zhǔn)確性和實(shí)時(shí)性,其中在景深1 100~1 500mm 之間測(cè)量精度最高;當(dāng)景深較小時(shí),在800~900mm 之間視差較大,公共視野很小,此時(shí)測(cè)量精度會(huì)下降;當(dāng)視野更小甚至幾乎沒(méi)有時(shí),測(cè)量精度會(huì)顯著下降。實(shí)驗(yàn)結(jié)果也說(shuō)明,此類平行式雙目系統(tǒng)更適宜拍攝視野稍大、距離稍遠(yuǎn)的物體,而不太適合拍攝距離較近的物體。