湯 強(qiáng)
(安徽新華學(xué)院 信息工程學(xué)院, 安徽 合肥 230088)
近年來,虛擬現(xiàn)實(shí)(VR)技術(shù)發(fā)展的風(fēng)生水起,各大軟硬件生產(chǎn)制作商都踏入這個(gè)領(lǐng)域,看好VR的未來。虛擬現(xiàn)實(shí)強(qiáng)調(diào)用戶的體驗(yàn)感,利用計(jì)算機(jī)相關(guān)技術(shù)構(gòu)造出一個(gè)虛擬場景,而當(dāng)使用者進(jìn)入到這個(gè)虛擬場景后,能否達(dá)到置身其中的真實(shí)感覺,很大一部分取決于場景搭建的是否有足夠的真實(shí)感?,F(xiàn)階段對于場景的搭建主要有兩種方法,一種是利用軟件來構(gòu)造一個(gè)現(xiàn)實(shí)中完全不存在的場景,比如用Unity3D搭建一個(gè)宇宙飛船內(nèi)部的場景;另一種是利用高清相機(jī)進(jìn)行現(xiàn)實(shí)采集照片,然后拼接成一個(gè)完整的場景,比如谷歌地圖里的街景。文中討論的就是第二種場景的搭建,利用SIFT算法對照片進(jìn)行拼接來構(gòu)成場景,但為了提高拼接的實(shí)時(shí)性和效果,對尺度空間結(jié)構(gòu)進(jìn)行了改進(jìn)。
目前比較主流的圖像拼接技術(shù)是基于特征點(diǎn)的匹配,該方法相比較其他圖像匹配方法具有以下優(yōu)點(diǎn):
1)計(jì)算量小。利用特征點(diǎn)來進(jìn)行圖像匹配的技術(shù)就是在特征空間中通過計(jì)算找到兩幅圖像的特征點(diǎn)并進(jìn)行匹配,然后得出對應(yīng)的變換模型[1],因此計(jì)算速度很快,計(jì)算量小。
2)魯棒性好。特征點(diǎn)匹配是利用特征點(diǎn)在特征空間上對圖像進(jìn)行匹配的技術(shù)[2],所以避免了噪聲對匹配效果的影響具有更好的魯棒性。
3)對幾何的形變不敏感?;谔卣鼽c(diǎn)的圖像匹配技術(shù)因?yàn)槭窃谔卣骺臻g進(jìn)行點(diǎn)的匹配,所以即使當(dāng)圖像發(fā)生幾何形變時(shí),對圖像拼接的影響也會很小。
一個(gè)完整的場景拼接步驟是首先利用高清相機(jī)拍攝出待拼接的場景圖片,然后對這些圖片進(jìn)行預(yù)處理,提取特征點(diǎn),再進(jìn)行匹配,最后進(jìn)行融合和相應(yīng)的亮度處理,然后將拼接好的完整圖像輸出。
圖1 圖像拼接流程
圖像拼接算法將直接影響到圖像拼接最后呈現(xiàn)出的效果的完整性、真實(shí)性,是否有拼接痕跡。對于不同的算法,人們在評判其好壞時(shí),一般從兩個(gè)方面去評價(jià),一是精確度,二是速度。所謂精確度,指的是該算法可以對兩幅甚至更多幅圖像進(jìn)行精準(zhǔn)的拼接,所得到的圖像拼接痕跡非常小。而速度是指利用該算法拼接圖像所耗費(fèi)的時(shí)間的長短。但這兩個(gè)評價(jià)要求其實(shí)又是自相矛盾的,因?yàn)槿绻M麑D像進(jìn)行精準(zhǔn)拼接,那么就必然要求提高特征的獨(dú)特性,因此需要對特征進(jìn)行更復(fù)雜的描述,同時(shí)也需要引進(jìn)更多的特征點(diǎn),從而進(jìn)一步提高拼接質(zhì)量。這樣處理的代價(jià)就是會極大地提高算法的復(fù)雜性,并且會帶來運(yùn)行時(shí)間過長的弊端,特別是對于實(shí)時(shí)系統(tǒng)來說,這將會成為更加嚴(yán)重的問題。因?yàn)閷τ谒惴▋?yōu)劣的評價(jià)并不能一概而論,而是要根據(jù)算法應(yīng)用的場景,不同的場景下對算法的需求也會有不同的標(biāo)準(zhǔn)。但是在速度和精確度之間找到平衡,仍然是大多數(shù)算法追求的目標(biāo)。
在圖像拼接技術(shù)中,圖像配準(zhǔn)是一個(gè)基礎(chǔ)工作,但同時(shí)也是拼接流程中的關(guān)鍵性工作,它直接影響到拼接之后圖像所呈現(xiàn)出來的效果。而利用特征點(diǎn)進(jìn)行圖像配準(zhǔn)是近幾年圖像拼接領(lǐng)域里的一個(gè)熱門技術(shù),該配準(zhǔn)算法首先是對待拼接圖像進(jìn)行特征點(diǎn)檢測,然后對檢測到的特征點(diǎn)進(jìn)行描述,再將描述一致的特征點(diǎn)進(jìn)行匹配,最后再通過算法對誤匹配的特征點(diǎn)進(jìn)行消除。在這幾個(gè)步驟中,關(guān)鍵的一步是特征點(diǎn)檢測,它將直接影響后續(xù)的特征點(diǎn)匹配和誤匹配率,例如大家熟悉的Harris角點(diǎn)檢測算法[3]。但該方法有一個(gè)弊端,就是當(dāng)待檢測的圖像如果發(fā)生了圖像尺度變化,并且變化幅度比較大,那么該算法在檢測過程中會出現(xiàn)很大的誤差,忽略很多特征點(diǎn)的檢測,因此在圖像特征不變性這一點(diǎn)上,很難得到保證。針對該問題,David Lowe于1999年提出了SIFT算子,并在2004年正式提出了SIFT特征[4],該特征是圖像在尺度空間時(shí)的局部特征,當(dāng)圖像發(fā)生平移、旋轉(zhuǎn)或者縮放這些變化時(shí),該特征在尺度空間上卻仍然可以保持不變,并且該特征對視角變換和噪聲也有一定程度的穩(wěn)定性[5],所以是一種匹配能力較強(qiáng)的算法。
SIFT算法性能分析實(shí)驗(yàn)圖如圖2所示。
圖2 SIFT算法性能分析實(shí)驗(yàn)圖
以圖2(300*400)為例,進(jìn)行了SIFT算法檢測特征子,共實(shí)驗(yàn)20次,并對實(shí)驗(yàn)過程中的關(guān)鍵步驟進(jìn)行計(jì)時(shí),然后進(jìn)行平均計(jì)算,結(jié)果見表1。
表1 SIFT匹配算法關(guān)鍵步驟用時(shí)表
通過表1可以發(fā)現(xiàn),在SIFT匹配算法關(guān)鍵步驟中,用時(shí)最多的是特征點(diǎn)檢測和計(jì)算特征向量,分別占到了36.75%和48.06%。
這是因?yàn)樵谶M(jìn)行特征點(diǎn)檢測時(shí),SIFT匹配算法會對尺度空間和高斯差分尺度空間進(jìn)行計(jì)算,很明顯,當(dāng)高斯金字塔階數(shù)和層數(shù)增多,SIFT算法的計(jì)算量就會增大[6],同時(shí),計(jì)算的像素點(diǎn)的數(shù)量也會增多,那么就會使算法的計(jì)算速度進(jìn)一步降低。
利用SIFT算法構(gòu)造高斯金字塔時(shí),一般選擇的是四階五層,在構(gòu)造過程中要注意,通常會將原始圖像進(jìn)行放大,然后作為第一階的第一層,這樣做的目的是為了能夠得到更多的特征點(diǎn),并假設(shè)該層的空間尺度因子為σ[7]。同時(shí),假設(shè)同一階中相鄰兩層的尺度空間比例因子為k,那么第二層的尺度空間因子為kσ,第三層為k2σ,第四層為k3σ,第五層為k4σ。當(dāng)繼續(xù)構(gòu)建高斯金字塔第二階時(shí),第一層選擇的是第一階的第三層,所以第二階第一層尺度空間因子為k2σ,第二層為k3σ,第三層為k4σ,第四層為k5σ,第五層為k6σ。構(gòu)建第三階和第四階也按照同樣的方法。具體如圖3所示。
位于宜興的木構(gòu)農(nóng)房綠色改良技術(shù)集成與示范項(xiàng)目,隸屬于鄭州大學(xué)主持的“十二五”國家科技支撐計(jì)劃課題“傳統(tǒng)農(nóng)房建造技術(shù)改良與應(yīng)用”(2015BAL03B03)。項(xiàng)目運(yùn)用現(xiàn)代木結(jié)構(gòu)技術(shù),改善傳統(tǒng)木構(gòu)民居在結(jié)構(gòu)安全、房屋節(jié)能、居住舒適度、建造方式等問題。筆者在鄭州大學(xué)研究生在讀期間有幸參與了項(xiàng)目設(shè)計(jì)建造的全過程。
圖3 高斯金字塔構(gòu)造圖
既然四階五層的高斯金字塔導(dǎo)致了計(jì)算量增多和計(jì)算速度下降,那么可以嘗試減少階數(shù)和層數(shù),例如構(gòu)建一個(gè)三階四層的高斯金字塔來進(jìn)行驗(yàn)證。
當(dāng)高斯金字塔的階數(shù)和層數(shù)都減少后,先通過下面一個(gè)簡單的分析,看看對算法的計(jì)算量和計(jì)算速度有什么影響。
假設(shè)m為高斯金字塔的階數(shù),n為高斯金字塔的層數(shù),Ci,j為第i階j層的特征點(diǎn)數(shù)目,那么這樣一個(gè)高斯金字塔的特征點(diǎn)總的數(shù)量為[8]。
通過上述公式容易知道,當(dāng)高斯金字塔的階數(shù)和層數(shù)減少后,整個(gè)高斯金字塔的特征點(diǎn)的總數(shù)必然會減少,而特征點(diǎn)數(shù)量的減少,雖然會減少算法的計(jì)算量,提高計(jì)算速度,但必然會影響圖片拼接的質(zhì)量和效果。以圖2作為實(shí)驗(yàn)用圖,通過實(shí)驗(yàn)得出特征點(diǎn)分布,當(dāng)取三階四層時(shí),得到了81個(gè)特征點(diǎn),而取四階五層時(shí),可以得到102個(gè)特征點(diǎn)。因此,當(dāng)高斯金字塔由四階五層減少到三階四層時(shí),特征點(diǎn)數(shù)量減少了,那么兩幅圖像的匹配點(diǎn)的對數(shù)也會相應(yīng)減少,在一定程度上影響投影變換矩陣的精確計(jì)算和圖片的拼接效果。為了解決這個(gè)問題,文中將采用RANSAC算法對匹配點(diǎn)進(jìn)行提純的方法,降低因?yàn)楦咚菇鹱炙A數(shù)和層數(shù)的減少帶來的精度的缺失,同時(shí)提高拼接后圖片所呈現(xiàn)出的效果和質(zhì)量。
本次實(shí)驗(yàn)選擇兩幅圖像作為拼接對象,如圖4所示。
(a) 待配準(zhǔn)圖 (b) 參考圖
構(gòu)造高斯金字塔一般分為兩個(gè)步驟:
1)為了降低圖像噪聲和細(xì)節(jié)層次,通常采取高斯模糊來對圖像進(jìn)行處理;
2)降低原始圖像的采樣點(diǎn),即我們常說的降采樣處理。
文中將圖4(288*400)構(gòu)造成三階四層的高斯金字塔,以第一階為例,顯示結(jié)果如圖5所示。
圖5 高斯金字塔第一階(三階四層)
由圖5可以看出,階數(shù)和層數(shù)越高,圖像越模糊,越底層圖像越清楚。這是因?yàn)樵趫D像處理軟件中,為了降低圖像的噪聲及細(xì)節(jié)層次,采用高斯模糊這樣的處理方式。其次,我們發(fā)現(xiàn)在高斯金字塔的每一階都有7幅圖像,即七層,但按照理論來說,每一層一幅圖像,一階有四層,那就應(yīng)該是4幅圖像,但實(shí)際情況為什么是7幅?其原因在于當(dāng)對圖像進(jìn)行極值比較檢測特征點(diǎn)時(shí),每一階的首層和末層這兩層的圖像是無法進(jìn)行極值比較的,而多出來的3幅圖像其實(shí)是利用了高斯模糊在每一階的頂層產(chǎn)生的,目的是為了保證尺度變化的連續(xù)性[8],這樣,每一階的圖像數(shù)量就變成了7幅,層數(shù)也就是七層。
在構(gòu)造好的高斯金字塔的基礎(chǔ)上,可以著手構(gòu)造高斯差分金字塔,其實(shí)構(gòu)造高斯金字塔的目的就是為了構(gòu)造高斯差分金字塔。高斯差分金字塔的第一階第一層是由高斯金字塔的第一階第二層減去第一層得到的,每一層的差分圖像都由此推導(dǎo)出,這些差分圖像就構(gòu)成了我們常見的高斯差分金字塔,因此,這就是高斯差分金字塔為什么每一階都比高斯金字塔少一層的原因。結(jié)果如圖6所示(以第一階為例)。
圖6 高斯差分金字塔第一階(三階四層)
通過對原始圖像分別構(gòu)造的三階四層金字塔和四階五層金字塔進(jìn)行特征點(diǎn)檢測和所花費(fèi)時(shí)間進(jìn)行對比,得到相關(guān)數(shù)據(jù)見表2。
表2 兩組圖像特征點(diǎn)檢測與耗時(shí)表
通過表2可以看出,當(dāng)高斯金字塔由四階五層減少為三階四層時(shí),特征點(diǎn)檢測所消耗的時(shí)間減少了,因此算法的實(shí)時(shí)性得到了一定的提高。
所謂初始匹配,即粗匹配,是指利用NN法粗匹配后獲得的匹配點(diǎn)對[6]。
當(dāng)對高斯金字塔為三階四層的圖像進(jìn)行粗匹配時(shí),得到匹配的特征點(diǎn)對數(shù)為24對,而當(dāng)高斯金字塔增加階數(shù)和層數(shù)變成四階五層時(shí),對兩幅圖像進(jìn)行粗匹配,由于特征點(diǎn)數(shù)目增加了,所以得到匹配的特征點(diǎn)對數(shù)為29對。而在之前已經(jīng)介紹過了,當(dāng)匹配點(diǎn)對數(shù)減少后,會對投影變換矩陣的精確計(jì)算帶來一定的影響。因此,為了降低特征點(diǎn)減少帶來的匹配精確度上的損失,提高圖像匹配的效果,引入了RANSAC算法來對匹配后的特征點(diǎn)進(jìn)行提純。
在上述粗匹配所得到的匹配點(diǎn)對里,可能會存在著一些誤匹配點(diǎn)對,這是因?yàn)閳D像背景在某些位置存在著一定的相似性。因此需要對匹配點(diǎn)進(jìn)行提純,所謂的提純,就是在已經(jīng)匹配的特征點(diǎn)里找出正確的匹配點(diǎn)對,去除誤匹配的特征點(diǎn)。而提純常用的算法就是RANSAC算法,該算法是對模型參數(shù)進(jìn)行估算的一種數(shù)學(xué)方法,主要是通過計(jì)算含有異常數(shù)據(jù)的樣本數(shù)據(jù)集,得出該樣本數(shù)據(jù)集的數(shù)學(xué)模型參數(shù)[8],然后根據(jù)該模型得到最終有效的樣本數(shù)據(jù)的一種算法。根據(jù)該算法分別對三階四層和四階五層的粗匹配后包含誤匹配的匹配點(diǎn)對進(jìn)行計(jì)算,從而得到精確的匹配點(diǎn)對。
通過對三階四層和四階五層進(jìn)行精匹配后得到的數(shù)據(jù)見表3。
表3 特征點(diǎn)匹配對數(shù)和誤匹配率
通過表3可以發(fā)現(xiàn),當(dāng)減少了階數(shù)和層數(shù)后,誤匹配率反而降低了,這是因?yàn)閳D像的特征點(diǎn)主要集中在高斯金字塔的底層,當(dāng)高斯金字塔的階數(shù)和層數(shù)在不斷提高,圖像也在不斷地進(jìn)行著高斯模糊,因此,各階層圖像的像素值很少變化甚至是沒有變化,造成了層數(shù)和階數(shù)越高,圖像的相似度就越高,而特征點(diǎn)檢測本質(zhì)是基于特征變化盡可能多的點(diǎn)。因而盡管可以檢測到極值點(diǎn),但這樣的匹配點(diǎn)對有極大的可能成為誤匹配點(diǎn)對。
當(dāng)高斯金字塔分別為三階四層和四階五層時(shí),使用常見的重疊區(qū)線性過渡法[9]進(jìn)行圖像拼接,具體效果如圖7和圖8所示。
圖7 三階四層拼接效果圖
圖8 四階五層拼接效果圖
從圖7和圖8兩幅效果圖來看,高斯金字塔分別為三階四層和四階五層,拼接出來的效果無明顯差別。拼接所耗費(fèi)的時(shí)間見表4。
表4 兩組圖像拼接耗時(shí)對比表
通過表4可以看出,高斯金字塔由四階五層降低為三階四層后,拼接圖像的時(shí)間降低了16.03%。
在圖像配準(zhǔn)階段,針對SIFT特征點(diǎn)檢測耗時(shí)較多的問題,提出了修改高斯金字塔的空間尺度結(jié)構(gòu),并針對改進(jìn)后的高斯金字塔和傳統(tǒng)的高斯金字塔在圖像拼接過程中所消耗的時(shí)間和拼接效果的比較,證明了改進(jìn)后圖像拼接質(zhì)量并沒有降低,但拼接速度卻比沒改進(jìn)前更加快了。但文中實(shí)驗(yàn)只是基于兩幅圖像的拼接,對于多圖像拼接問題并沒有分析,這也是不足之處。
參考文獻(xiàn):
[1] 余懷,楊文.一種無人機(jī)航拍影像快速特征提取與匹配算法[J].電子與信息學(xué)報(bào),2016,38(3):509-516.
[2] 李玉峰,李廣澤,谷紹湖,等.基于區(qū)域分塊與尺度不變特征變換的圖像拼接算法[J].光學(xué)精密工程,2016,24(5):1197-1205.
[3] 張斌.巡航機(jī)器人的圖像拼接系統(tǒng)研究與實(shí)現(xiàn)[D].成都:西南科技大學(xué),2015.
[4] 李秀華,劉國銳.一種改進(jìn)的SIFT特征匹配算法[J].長春工業(yè)大學(xué)學(xué)報(bào),2017,38(1):58-61.
[5] 李丹,孫海濤,王海莉.一種改進(jìn)的SIFT圖像立體匹配算法[J].西南交通大學(xué)學(xué)報(bào),2015,50(3):490-495.
[6] 秦佳,楊建峰,薛彬,等.基于向量相似度匹配準(zhǔn)則的圖像配準(zhǔn)與拼接[J].微電子學(xué)與計(jì)算機(jī),2013,30(6):22-25.
[7] 趙宏宋,潘地林.基于SIFT和函數(shù)強(qiáng)制改正算法的圖像拼接研究[J].電腦知識與技術(shù),2014,10(14):3372-3375.
[8] 歐陽寧,翟紫伶,首照宇,等.基于圖切割的多頻帶融合圖像拼接[J].微電子學(xué)與計(jì)算機(jī),2013,30(7):107-110.
[9] 趙毅力,武仲科,張雁,等.基于圖結(jié)構(gòu)的全景圖自動識別與拼接技術(shù)[J].計(jì)算機(jī)工程與技術(shù),2013,34(6):2067-2070.