陸柳杰 胡廣朋 包文祥
(江蘇科技大學(xué)計(jì)算機(jī)學(xué)院 鎮(zhèn)江 212000)
視覺(jué)、聽(tīng)覺(jué)和觸覺(jué)是人們?cè)谌粘I钪蝎@取現(xiàn)實(shí)場(chǎng)景信息的三種主要方式,在這些獲取現(xiàn)實(shí)場(chǎng)景信息的主要方式中,通過(guò)視覺(jué)方式獲得的現(xiàn)實(shí)場(chǎng)景信息約占70%,是最重要的獲取現(xiàn)實(shí)場(chǎng)景信息的方式。使用普通照相機(jī)采集是現(xiàn)實(shí)場(chǎng)景信息獲取的最直接方式,但普通照相機(jī)受到視角的限制,不能夠采集寬視角的無(wú)縫高分辨率全景圖像。為了滿足人們對(duì)于寬視角的無(wú)縫高分辨率全景圖像的需求,目前有三種辦法可以解決這一問(wèn)題,第一種方法是縮放鏡頭調(diào)短照相機(jī)的焦距,采用該種辦法所采集的全景照片的分辨率相對(duì)較低,是通過(guò)犧牲圖像分辨率來(lái)擴(kuò)大照相機(jī)的采集視角,無(wú)法滿足人們對(duì)高分辨率圖像的要求;第二種方法是采用魚(yú)眼鏡頭或者超廣角鏡頭進(jìn)行采集,可解決部分視角不足問(wèn)題,但是這些設(shè)備價(jià)錢昂貴,無(wú)法在人們生活中廣泛使用,同時(shí)魚(yú)眼鏡頭或者超廣角鏡頭采集的照片邊緣存在扭曲畸變問(wèn)題,這也是魚(yú)眼鏡頭或者超廣角鏡頭沒(méi)有廣泛普及的原因之一。為了解決前兩種方法所帶來(lái)的問(wèn)題,科研工作者提出了第三種方法,即圖像拼接技術(shù),圖像拼接技術(shù)指經(jīng)過(guò)圖像預(yù)處理、圖像配準(zhǔn)和圖像融合將一組相互間具有重合部分的采集圖像拼接成寬視角的無(wú)縫髙分辨率全景圖像,其是近年來(lái)發(fā)展比較迅速的一口技術(shù),其中圖像配準(zhǔn)和圖像融合是圖像拼接技術(shù)中核心的組成部分,也是近年來(lái)國(guó)內(nèi)外科研工作者研究的重點(diǎn)之一。將現(xiàn)實(shí)場(chǎng)景圖像進(jìn)行拼接處理,得到寬視角的無(wú)縫高分辨率全景圖像甚至是360°的無(wú)縫高分辨率全景圖像,這樣就達(dá)到了用普通照相機(jī)實(shí)現(xiàn)了寬視角場(chǎng)景的拍攝目的。目前所有的圖像拼接技術(shù)中還沒(méi)有一種算法能夠針對(duì)所有類型圖像進(jìn)行圖像拼接操作,在拼接計(jì)算復(fù)雜度方面和拼接魯棒性方面或多或少都存在著不足,這為以后在這方面的科研工作者帶來(lái)了挑戰(zhàn),也帶來(lái)了機(jī)遇。目前圖像拼接技術(shù)在全景漫游系統(tǒng)、全景視頻拼接[1]、醫(yī)學(xué)與遙感圖像處理等領(lǐng)域都有著廣泛的應(yīng)用。因此,研究圖像拼接技術(shù)有著重要的意義。
優(yōu)化的基于SURF 算法[2]的圖像拼接的流程框圖如圖1所示。如圖所示,首先對(duì)待拼接圖像進(jìn)行降采樣處理,然后根據(jù)半圖像區(qū)域提取特征點(diǎn)[3]并采用SSDA算法進(jìn)行特征點(diǎn)提純,最后進(jìn)行圖像融合。
圖1 優(yōu)化的基于SURF算法的圖像拼接的流程框圖
對(duì)于高分辨率待拼接圖像,在圖像拼接過(guò)程中會(huì)產(chǎn)生大量冗余特征點(diǎn)[4],大大増加了圖像拼接的計(jì)算數(shù)據(jù)量,在文獻(xiàn)中對(duì)待拼接圖像采用不同的降采樣方法和不同的采樣系數(shù)進(jìn)行實(shí)驗(yàn)對(duì)比分析,發(fā)現(xiàn)圖像降采樣率為80%~90%時(shí),能相對(duì)傳統(tǒng)的SIFT算法減少20%~30%的時(shí)間花費(fèi)。本文采用的思想是以待拼接圖像[7]為基準(zhǔn),采用其行像素和列像素大小的平均值與其行像素和列像素大小的最大值和其最小值之和的比的方法對(duì)圖像進(jìn)行降采樣處理,達(dá)到同比例縮小待拼接圖像尺寸的作用。在特征點(diǎn)提取之后,利用插值恢復(fù)算法進(jìn)行恢復(fù)運(yùn)算或者在求取變換矩陣時(shí)利用采樣前變換矩陣[5]與采樣后變換矩陣之間的關(guān)系性來(lái)進(jìn)行恢復(fù)運(yùn)算,本文采用插值恢復(fù)算法[5]對(duì)提取的特征點(diǎn)進(jìn)行恢復(fù)運(yùn)算。設(shè)兩張待拼接圖像的大小分別為a×b 像素、c×d像素,則降采樣[6]比例k如式(1)所示:
對(duì)于待拼接圖像,非重合區(qū)域提取出來(lái)的特征點(diǎn)是冗余點(diǎn)[7],在現(xiàn)有的條件下,只有通過(guò)目測(cè)和拍攝設(shè)備拍攝位置關(guān)系來(lái)估計(jì),無(wú)法找到一種確定的方法來(lái)區(qū)分待拼接圖像中重合區(qū)域和非重合區(qū)域,同時(shí)對(duì)于超過(guò)50%重合區(qū)域的待拼接圖像進(jìn)行圖像拼接操作的意義不是太大,結(jié)合前面所述的兩個(gè)方面,在本文中采用半圖像區(qū)域提取特征點(diǎn)法對(duì)降采樣后的圖像進(jìn)行處理,該方法是在滿足圖像拼接條件的情況下,找到圖像的半圖像區(qū)域,減少在圖像拼接過(guò)程中的計(jì)算數(shù)據(jù)量,起到加快圖像拼接的速度的作用。對(duì)于圖像拼接而言,有兩種典型的拼接方式,分別為橫向拼接和縱向拼接,對(duì)于橫向拼接,半圖像區(qū)域如圖2 所示,其中黑色區(qū)域?yàn)槠唇訒r(shí)采用的半圖像區(qū)域。對(duì)于縱向拼接,半圖像區(qū)域如圖2 所示,其中黑色區(qū)域?yàn)槠唇铀捎玫陌雸D像區(qū)域。
圖2 橫向拼接示意圖
SURF 算法是利用近似的Hessian 矩陣檢測(cè)圖像中的特征點(diǎn)的位置,計(jì)算Hessian矩陣,首先需要計(jì)算輸入圖像函數(shù)(fx,y)的二階偏導(dǎo)數(shù),Hessian矩陣就是由輸入圖像函數(shù)(fx,y)的二階偏導(dǎo)數(shù)組成的。假定給定待拼接圖像I,其中X=(x,y)是待拼接圖像中一個(gè)像素點(diǎn),該像素點(diǎn)的Hessian 矩陣[8]如式(2)所示:
其中:Lxx(X,σ)是經(jīng)過(guò)高斯濾波后圖像像素點(diǎn)X=(x,y)處在水平方向上的二階導(dǎo)數(shù)的值。 Lyy(X,σ)是經(jīng)常高斯濾波后圖像的像素點(diǎn)X=(x,y)處在垂直方向的二階導(dǎo)數(shù)的數(shù)值。 Lyy(X,σ)同樣是二階導(dǎo)數(shù)。
Lxx(X,σ),Lyy(X,σ),Lyy(X,σ)的計(jì)算公式如式(3)、(4)、(5)所示:
Hessian矩陣的行列式如式(6)所示:
為了加快卷積的速度,從David Lowe 用Dog 近似Log的成功做法中的得到啟發(fā),采用了盒子型濾波器對(duì)上面的模版濾波器進(jìn)行近似,這樣Hession矩陣[9]的行列式有一個(gè)近似計(jì)算公式如式(7)所示:
其中:w 是調(diào)節(jié)參數(shù),一般取0.9。如果行列式的結(jié)果符號(hào)為正,則特征值有相同的符號(hào),該特征點(diǎn)為初選參考點(diǎn)。反之,則剔除該特征點(diǎn)。
尺度空間是用金字塔[18]表示的,David Lowe 在SIFT算法中是這樣構(gòu)造尺度空間的:對(duì)原圖像不斷地進(jìn)行Gauss 平滑加上圖像降采樣處理,得到金字塔圖像[10]后,再進(jìn)一步得到了Dog,在Dog上提取特征點(diǎn),而SURF 算法中的做法與SIFT 是有所不同的,SURF 算法是圖像大小保持不變,改變的是Gauss[11]平滑濾波器的大小。
設(shè)定閾值Th,使用3×3×3 的模板在三維尺度空間進(jìn)行非最大化抑制,根據(jù)設(shè)定的閾值,當(dāng)Det(H)> Th,而且大于上一層 9 個(gè)點(diǎn)、當(dāng)前層 8 個(gè)點(diǎn)、下一層9 個(gè)點(diǎn)的所有像素點(diǎn)響應(yīng)值才被選擇為特征點(diǎn),同時(shí)進(jìn)行插值運(yùn)算得到精確特征點(diǎn)。
為了特征點(diǎn)對(duì)旋轉(zhuǎn)具有適應(yīng)性,需要對(duì)特征點(diǎn)增加方向參數(shù)[12],具體執(zhí)行過(guò)程為,首先,確定以特征點(diǎn)為中心,以6s(s 為特征點(diǎn)的尺度)為半徑的圓形區(qū)域,同時(shí)確定以特征點(diǎn)為中心,角度大小為60°的扇形滑動(dòng)窗口,讓扇形滑動(dòng)窗口以12°左右圍繞特征點(diǎn)旋轉(zhuǎn),對(duì)圖像進(jìn)行Haar 小波響應(yīng)計(jì)算,并對(duì)窗口內(nèi)的圖像Haar 小波的響應(yīng)值進(jìn)行累加,主方向?yàn)樽畲蟮腍aar響應(yīng)累加值對(duì)應(yīng)的方向。
優(yōu)化的基于SURF 算法的圖像拼接采用最近鄰歐氏距離算法進(jìn)行粗匹配,再采用SSDA 算法進(jìn)行精匹配,進(jìn)一步提高特征點(diǎn)匹配精確度[13],SSDA是Barnea 等于1972 年提出的一種基于灰度出較的特征匹配算法[14],該算法是在NCC 算法的基礎(chǔ)上改進(jìn)的算法。假設(shè)T 表示模板圖像,其長(zhǎng)為M,寬為N,即模板圖像的大小為M×N,T(m,n)表示模板圖像位于(m,n)位置處的灰度值,表示子圖位于(m,n)位置處的灰度值。
SSDA算法的執(zhí)行步驟如下:
第一步:定義絕對(duì)誤差,其計(jì)算公式如式(8)所示:
其中:ε(i,j,m,n)表示絕對(duì)誤差,Si,j(i,j)表示背景圖像中像素點(diǎn)(i,j)的灰度值,Sˉ(m,n)表示背景圖像中以(m,n)為中也的模板大小為M×N 所覆蓋的像素點(diǎn)灰度值的平均值,T(i,j)表示模板圖像中像素點(diǎn)(i,j)的灰度值[15],Tˉ(m,n)表示模板圖像中以(m,n)為中心的模板大小為M×N 所覆蓋的像素點(diǎn)灰度值的平均值?!?m,n),ˉ(m,n)的計(jì)算公式如式(9),式(10)所示。
利用式(11)計(jì)算像素點(diǎn)(i,j)的 I(i,j)值,如果某點(diǎn)的該值最大則將該點(diǎn)定義為匹配點(diǎn)[17]。因?yàn)樵谶@點(diǎn)上需要經(jīng)過(guò)多次誤差累加后,總的誤差才能超過(guò)Th。在SSDA[18]算法的實(shí)踐中,當(dāng)總誤差大于預(yù)設(shè)的閾值Th時(shí),我們就認(rèn)為該點(diǎn)不是匹配點(diǎn),因此,在實(shí)際的計(jì)算中,有可能不需要計(jì)算模板覆蓋區(qū)域所有像素的誤差。當(dāng)總誤差超過(guò)閾值Th時(shí),立即停止該位置的計(jì)算,開(kāi)始測(cè)試下一個(gè)位置,直到找到匹配點(diǎn)。
我們通過(guò)Matlab仿真實(shí)驗(yàn),為了能夠明確優(yōu)化算法和傳統(tǒng)算法之間的效率,根據(jù)圖像拼接的順序,選擇預(yù)處理時(shí)間、圖像特征點(diǎn)提取時(shí)間、粗匹配時(shí)間、粗匹配率、精匹配時(shí)間、精匹配率、圖像拼接總時(shí)間W及傳統(tǒng)算法和優(yōu)化算法拼接結(jié)果圖的相關(guān)系數(shù)NC,一共八個(gè)指標(biāo)進(jìn)行比較,實(shí)驗(yàn)定量比較分析如表1 所示。通過(guò)表1 可知,優(yōu)化算法在圖像拼接時(shí)間方面具有明顯的優(yōu)勢(shì)。粗匹配率[19]、精匹配率、W及歸一化互相關(guān)系數(shù)NC的定義如式(12)、(13)、(14)所示。
表1 橫向拼接實(shí)驗(yàn)定量對(duì)比分析表
其中,表1 代表橫向拼接[20]實(shí)驗(yàn)的定量分析表,從表中可知優(yōu)化的基于SURF 算法的圖像拼接與傳統(tǒng)的基于SIFT 算法的圖像拼接相比,在圖像拼接總時(shí)間方面減少了77.67%、76.11%;優(yōu)化的基于SURF 算法的圖像拼接與傳統(tǒng)的基于SURF 算法的圖像拼接相比,在圖像拼接總時(shí)間方面減少了65.68%,65.09%。
本文提出的優(yōu)化圖像拼接算法,在保證圖像拼接質(zhì)量的同時(shí),縮短了圖像拼接時(shí)間,為解決圖像拼接問(wèn)題提供了一種新的方法。在文中采用半圖像區(qū)域提取特征點(diǎn)的依據(jù)是非重合區(qū)域提取的特征點(diǎn)是冗余點(diǎn),所以剔除非重合區(qū)域有助于減少圖像拼接的計(jì)算數(shù)據(jù)量,該方法對(duì)于大部分待拼接圖像具有可行性,但是對(duì)重合區(qū)域大于50%的待拼接圖像具有一定的局限性,如何找到一種判定待拼接圖像重合區(qū)域的自適應(yīng)算法,有待于進(jìn)一步地探討和研究。