孫光靈
(安徽建筑大學(xué) 信息網(wǎng)絡(luò)中心,安徽 合肥 230601)
在計(jì)算機(jī)圖像領(lǐng)域,為了得到寬幅的全景圖像(panoramic picture)必須將多個(gè)圖像拼在一起。
圖像拼接技術(shù)(image mosaic)是采用圖像配準(zhǔn)和圖像融合技術(shù),解決如何將小幅的照片拼接成一張寬幅照片的問題,以滿足用戶全景攝影的要求,被廣泛應(yīng)用于遙感圖像處理、虛擬現(xiàn)實(shí)技術(shù)等領(lǐng)域。
作為研究熱點(diǎn)領(lǐng)域之一,相關(guān)的研究人員和學(xué)者對(duì)這個(gè)領(lǐng)域作了探索,取得了一些進(jìn)展。Barnea提出了一種配準(zhǔn)的算法[1],是最早發(fā)表有關(guān)圖像配準(zhǔn)的文章。1981年,研究者Lucas等運(yùn)用(Newton-Raphson)圖像迭代法進(jìn)行有效的匹配[2],提出了一種從圖像強(qiáng)度估計(jì)曝光強(qiáng)度參數(shù)和配準(zhǔn)參數(shù)的一般方法[3],然后對(duì)圖像進(jìn)行配準(zhǔn)和校正。盡管避免了因曝光差異造成的視差問題,但是整體效果并不理想。
增益補(bǔ)償也被用在圖像拼接過程中[4],即取每個(gè)圖像中的平均像素值乘以一個(gè)常系數(shù)得到的點(diǎn)積來實(shí)現(xiàn),意圖減小補(bǔ)償時(shí)函數(shù)的誤差。該方法在提高增益同時(shí),也帶來了新的問題。兩幅圖像會(huì)因亮度的不同而留下肉眼可見的接縫,由此產(chǎn)生了鬼影或視差。
傳統(tǒng)的圖像拼接算法都是基于靜止背景的[5-6],多張圖像中的背景是靜止不變。對(duì)于具有運(yùn)動(dòng)物體的圖像拼接中,Alec Mills等提出的基于縫合線融合方法可以解決拼接具有運(yùn)動(dòng)物體后出現(xiàn)的鬼影現(xiàn)象[7],但是卻丟失了很多運(yùn)動(dòng)的目標(biāo)?;谶\(yùn)動(dòng)區(qū)域單元概念隨后被提出[8],但是對(duì)于多張圖像中出現(xiàn)同一個(gè)運(yùn)動(dòng)物體并在該物體的位置發(fā)生變化時(shí)仍然出現(xiàn)鬼影現(xiàn)象。本文基于最佳縫合線的基礎(chǔ)之上進(jìn)一步完善,通過判斷物體沖突與否來處理物體保留后可能會(huì)發(fā)生鬼影現(xiàn)象,最后根據(jù)非沖突運(yùn)動(dòng)物體所處的位置進(jìn)行縫合線修正。
Sift稱為尺度不變特征變換,用來把圖像數(shù)據(jù)轉(zhuǎn)化局部特征,轉(zhuǎn)化過程中尺度坐標(biāo)不發(fā)生變化。由于Sift特征是基于圖像的局部特征,具有如下優(yōu)點(diǎn):
1) 魯棒性強(qiáng),對(duì)視角變化、仿射變換、噪聲能保持一定的穩(wěn)定性,對(duì)旋轉(zhuǎn)、尺度縮放、亮度變化也保持不變性;
2) 信息量很大,獨(dú)特性也較好,比較適用于數(shù)據(jù)庫(kù)中含有大量特征進(jìn)行匹配的情形。
3) 多量性,即使少數(shù)的幾個(gè)物體也可以產(chǎn)生大量Sift特征向量。
Sift主要流程如圖1所示。
圖1 Sift工作過程
其中,在第4步的匹配過程中,一般采用的是歐氏距離進(jìn)行計(jì)算,找到對(duì)應(yīng)的匹配點(diǎn)。
1.1.1 關(guān)鍵點(diǎn)檢測(cè)方法
二維Gauss函數(shù):
(1)
式中σ稱為高斯核,與尺度坐標(biāo)相對(duì)應(yīng)。
一幅二維圖像,可以定義為圖像函數(shù)I(x,y)與高斯核G(x,y,σ)卷積得到:
(2)
其中,圖像的尺度空間用L表示,。圖像用不同的尺度表示,如同給圖像變換了坐標(biāo)系,新的坐標(biāo)值愈小則表明該圖像被平滑的也越小,這時(shí)候的尺度值也越小。
1.1.2 描述子
首先必須計(jì)算讀取點(diǎn)8鄰域最大梯度值作為主方向。在完成關(guān)鍵點(diǎn)的梯度計(jì)算后,統(tǒng)計(jì)鄰域內(nèi)像素的梯度和的直方圖,如圖2所示,關(guān)鍵點(diǎn)的主方向就是直方圖的峰值方向。
圖2 梯度方向的計(jì)算
描述子生成均以此主方向?yàn)榛A(chǔ),確保新生成的描述子具有旋轉(zhuǎn)不變的特性。
描述子的生成方式如下:
1) 對(duì)任意一個(gè)關(guān)鍵點(diǎn),在其所在的尺度空間,取以關(guān)鍵點(diǎn)為中心的8×8的窗口。
2) 再將每個(gè)領(lǐng)域分為16在個(gè)子區(qū)域,對(duì)每個(gè)子區(qū)域內(nèi)統(tǒng)計(jì)并計(jì)算梯度直方圖。
3) 對(duì)16個(gè)子區(qū)域進(jìn)行排序,排序規(guī)則是根據(jù)每個(gè)子區(qū)域的8鄰域梯度直方圖的位置先后,生成了一個(gè)128維的向量,得到Sift描述子。
當(dāng)兩幅圖像的Sift描述子生成后,需要對(duì)兩幅圖像中關(guān)鍵點(diǎn)的相似性進(jìn)行度量,準(zhǔn)則是采用關(guān)鍵點(diǎn)特征向量的歐氏距離進(jìn)行判定。首先選取待拼接圖像1中的某個(gè)關(guān)鍵點(diǎn),搜索其與待拼接圖像2中距離最近的前兩個(gè)關(guān)鍵點(diǎn)。在這兩個(gè)關(guān)鍵點(diǎn)中,如果最近的距離除以次近的距離小于某個(gè)閾值Q,則搜索出的最近匹配點(diǎn)正確,否則是錯(cuò)誤匹配。
RANSAC是根據(jù)樣本數(shù)據(jù)集,數(shù)據(jù)集包括了有效數(shù)據(jù)和異常數(shù)據(jù),通過數(shù)據(jù)的模型參數(shù)計(jì)算,得到有效樣本的算法。
RANSAC算法中異常數(shù)據(jù)產(chǎn)生的原因多種多樣,錯(cuò)誤的測(cè)量、錯(cuò)誤的假設(shè)、錯(cuò)誤的計(jì)算等均可產(chǎn)生的異常數(shù)據(jù)。RANSAC算法假設(shè),給定一組正確的數(shù)據(jù),存在可以計(jì)算出正確數(shù)據(jù)集的方法。
首先,由于特征點(diǎn)的穩(wěn)定性,在等待拼接的兩幅圖像中尋找灰度梯度最大的點(diǎn)作為特征點(diǎn);
然后初步建立兩幅圖像重疊范圍內(nèi)的特征點(diǎn)之間的對(duì)應(yīng)關(guān)系,進(jìn)行圖像間的特征匹配。根據(jù)候選匹配特征點(diǎn)對(duì),用RANSAC估計(jì)算法,計(jì)算出兩幅圖像之間的變換矩陣。通過變換矩陣能夠確定一幅圖像中的點(diǎn)在另一幅圖像中所對(duì)應(yīng)的位置,變換矩陣見式(3)。
(3)
式中mi為變換矩陣元素值,(x,y)和(x′,y′)為候選匹配點(diǎn)對(duì)。
RANSAC估計(jì)算法的步驟如圖3所示。
圖3 RANSAC估計(jì)算法
根據(jù)坐標(biāo)轉(zhuǎn)換關(guān)系將一幅圖像變換到另一幅圖像上,實(shí)現(xiàn)兩幅圖像的拼接。
為將數(shù)張有重疊部分的圖像拼成一幅無縫高分辨率的寬幅圖像,圖像配準(zhǔn)和圖像融合是其中的兩個(gè)內(nèi)容,拼接的過程如下:
1) 對(duì)兩幅圖像利用Sift算法進(jìn)行特征提取。
2) 采用歐氏距離判斷兩幅圖像中的Sift特征的相似性,并查找出匹配的特征對(duì)。
3) 利用RANSAC對(duì)步驟2的特征對(duì)進(jìn)行處理,消除錯(cuò)誤的特征對(duì)并建立射影矩陣H。
4) 利用射影矩陣H將帶拼接圖像的重合區(qū)域進(jìn)行融合得到拼接重構(gòu)的平滑無縫全景圖像。
由上述圖像拼接方法可以看出,一般的圖像拼接方法在處理具有運(yùn)動(dòng)物體時(shí)會(huì)出現(xiàn)圖像重疊而成的鬼影現(xiàn)象。另一種情況也有些相似,物體雖然不是同一物體,但由于圖像的疊加,使這兩個(gè)物體處于同一個(gè)位置,從而產(chǎn)生了沖突。參考文獻(xiàn)[1]提出了一種可行的辦法,可以解決這種沖突或鬼影現(xiàn)象,就是在兩張圖像的重疊區(qū)域中找出一條縫合線,縫合線會(huì)把圖像分成左右兩部分,左邊的部分取左圖像的像素,右邊部分取右圖像的像素,從而解決以上的鬼影和沖突現(xiàn)象。
圖4 實(shí)驗(yàn)拼接圖
圖5 搜索策略
文獻(xiàn)[1]的方法對(duì)強(qiáng)度與梯度進(jìn)行了計(jì)算。利用Dijkstra搜索縫合線的思想進(jìn)行縫合線的搜索。搜索時(shí)從重疊區(qū)的第一行出發(fā)建立該行上每一個(gè)像素為起點(diǎn)的縫合線,然后從重疊區(qū)域中尋找出一個(gè)最佳的縫合線。詳細(xì)步驟如下:
Step1:初始化。首先從第一行開始,首行的各列像素點(diǎn)對(duì)應(yīng)為一條縫合線??p合線的強(qiáng)度值賦各個(gè)點(diǎn)的準(zhǔn)則值,該縫合線的列值即為初始點(diǎn)。
Step2:延伸擴(kuò)展。從Step1中計(jì)算過強(qiáng)度沿縫合線不斷擴(kuò)展,直到尾行為止。
Step3:選擇最佳縫合線。從所有計(jì)算出的縫合線中選取強(qiáng)度值最小的那一個(gè),作為最佳縫合線。
這種方法雖然可以消除了鬼影和沖突的現(xiàn)象,但是對(duì)于一些非沖突的目標(biāo),也同時(shí)被消去了,從圖5(c)中,右圖中的摩托車因?yàn)榭p合線偏左而被消掉了。一種改進(jìn)的算法通過判斷重疊區(qū)域中的景象是否沖突,如果非沖突則可以通過修改縫合線保留重疊區(qū)域的一些景象,從而使得拼接更加逼真。
改進(jìn)的方法中采用動(dòng)態(tài)規(guī)劃的方法進(jìn)行縫合線的搜索,而非Dijkstra方法。首先分析重疊區(qū)域中的兩幅圖像的物體是否有沖突,對(duì)于沒有沖突的物體進(jìn)行提取,在進(jìn)行拼接的時(shí)候修改縫合線,把非沖突的目標(biāo)也包含進(jìn)去。
首先對(duì)重疊區(qū)域的圖像進(jìn)行二值化,圖6是對(duì)圖5(c)的圖像進(jìn)行二值化。二值圖像中的白色區(qū)域是由于兩幅圖像中的不同景物或同一景物位置發(fā)生了改變,從而造成疊加不一致。
圖6 配準(zhǔn)后圖像二值化
其次,為了標(biāo)記二值圖像,可以采用的方法有很多,本文是采用了連通域標(biāo)記方法,根據(jù)標(biāo)記后的結(jié)果提取相應(yīng)連通域的所有像素。對(duì)于得到的二值圖像,對(duì)其目標(biāo)可以分為三種情況加以考慮:
1) 同一個(gè)物體位置發(fā)生了變化,導(dǎo)致疊加時(shí)不一致。這種情況可以根據(jù)第一部分的Sift進(jìn)行過濾,因?yàn)樵谶M(jìn)行匹配過程中會(huì)用到Sift算法,而對(duì)于同一個(gè)物體,一般會(huì)有很多匹配對(duì),當(dāng)發(fā)現(xiàn)兩個(gè)連通域中對(duì)應(yīng)的景物在第一步處理中有正確的匹配對(duì),這說明了該物體是因?yàn)榘l(fā)生了位置變化導(dǎo)致疊加不一致,其中的一個(gè)連通域可以通過縫合進(jìn)行切割。
2) 不同時(shí)間點(diǎn)拍攝的兩張圖像在某位置分別有兩個(gè)不同的物體,在進(jìn)行疊加時(shí)就會(huì)發(fā)生沖突,這種景物也可以通過縫合線進(jìn)行切割。圖5(a)中紅色的汽車與圖5(b)中白色的汽車就是這種情況。
3) 某個(gè)目標(biāo)在一張圖像中出現(xiàn),而在另一張圖像中沒有出現(xiàn),并且該目標(biāo)后面的背景與另外一張圖像中對(duì)應(yīng)位置的背景相一致。圖5(b)中的摩托車在圖5(a)中沒有出現(xiàn)就是這種情況。圖5(a)中對(duì)應(yīng)位置位置是空曠的路面。這種情況可采用以下方式解決:
Step1:第一步是統(tǒng)計(jì)兩幅圖像中背景點(diǎn)像素值。根據(jù)圖6所示的二值圖像,對(duì)于像素值為0的點(diǎn)是左右兩幅圖像疊加一致的點(diǎn),這些點(diǎn)稱為背景點(diǎn)。
Step2:提取圖像6中屬于情況三的目標(biāo)區(qū)域。
Step3:查找步驟二提取的目標(biāo)區(qū)域?qū)?yīng)左右圖像區(qū)域是否屬于背景區(qū),如果其中一個(gè)區(qū)域是背景區(qū),說明目標(biāo)沒沖突,否則按沖突處理。
本文的實(shí)驗(yàn)平臺(tái)為Intel Core I5-4210M CPU,內(nèi)存4G,實(shí)驗(yàn)軟件為win8+matlab2012。經(jīng)過實(shí)驗(yàn)對(duì)比,結(jié)果如圖7所示。圖7(a)給出的是原算法進(jìn)行拼接結(jié)果,圖7(b)給出的是原算法融合的縫合線。圖7(c)給出的是改進(jìn)算法的融合效果,從圖7(c)可以看到非沖突的景物(摩托車)被包含到融合圖像中并且是非常自然。圖7(d)給出的是改進(jìn)算法的縫合線,因?yàn)樾薷暮蟮目p合線與修改前的縫合線所包含的區(qū)域沒有沖突物體,所以最終縫合線通過直接水平線平移修改得到。
圖7 算法比較
筆者對(duì)具有運(yùn)動(dòng)物體的圖像拼接方法進(jìn)行了有效的改進(jìn),改進(jìn)后的方法首先從重疊區(qū)域中分析兩幅圖像的背景像素,然后通過分析沖突目標(biāo)是否存在于重疊區(qū)域中,從而確定融合圖像中是否保留此目標(biāo)。最后通過尋找縫合線,根據(jù)非沖突物體的狀態(tài)修改縫合線得到最佳的效果。該算法相對(duì)于原算法可以生成景物更多的融合圖,包含更全更多的信息,具有一定的實(shí)用價(jià)值。
參考文獻(xiàn):
[1]Daniel I.Barnea,Harvey F Silverman. A Class of Algorithms for Fast Digital Image Registration[J]. IEEE Transactions on Computers, 1972, 100(2): 179-186.
[2]Bruce D Lucas,TakeoKanade. An Iterative Image Registration Technique with an Application to Stereo Vision[C].// International Joint Conference on Artificial Intelligence. Morgan Kaufmann Publishers Inc. 1981:674-679.
[3]AseemAgarwala. Efficient Gradient-domain Compositing using Quadtrees[C]. ACM,2007: 94-94.
[4]Yehuda Afek,Ariel Brand. Mosaicking of OrthorectifiedAerial Images[J]. Photogrammetric Engineering and Remote Sensing, 1998,64(2): 115-124.
[5]邵聃,金立左.一種圖像拼接的點(diǎn)特征匹配算法[J].東南大學(xué)學(xué)報(bào)(自然科學(xué)版),2008,38(2):150-153.
[6]Abdukholikov M, Whangbo T. Fast Image Stitching Method for Handling Dynamic Object Problems in Panoramic Images[J].Ksii Transactions on Internet & Information Systems, 2017, 11(11):5419-5435.
[7]Alec Mills,Gregory Dudek. Image Stitching with Dynamic Elements[J]. Image and Vision Computing,2009, 27(10): 1593-1602.
[8]Brown M, Lowe D G. Automatic Panoramic Image Stitching using Invariant Features[J]. International Journal of Computer Vision, 2007, 74(1):59-73.
[9]Karlinsky L, Dinerstein M, Ullman S. Unsupervised Feature Optimization (UFO): Simultaneous Selection of Multiple Features with their Detection Parameters[C]. CVPR 2009: San Francisco, CA, USA, 2009:1263-1270.
[10]AnatLevin, AssafZomet,ShmuelPeleg,et al. Seamless Image Stitching in the Gradient Domain[J]. Proc Eccv, 2004, 3024:377-389.
[11]RichardSzeliski. Image Alignment and Stitching: aTutorial[J]. Foundations and Trends in Computer Graphics and Vision, 2006,2(1): 1-104.
[12]Heung-Yeung Shum,Richard Szeliski. Systems and Experiment Paper: Construction of Panoramic Image Mosaics with Global and Local Alignment[J]. International Journal of Computer Vision, 2000,36(2): 101-130.
[13]Thomas Porter,Tom Duff. Compositing Digital Images[C]. ACM,1984:253-259.
[14]ShmuelPeleg. Elimination of Seams from Photomosaics[J]. Computer Graphics and Image Processing, 1981, 16(1): 90-94.
[15]Yang Xiong,Ken Turkowski. Registration,Calibration and Blending in Creating High Quality Panoramas[C]. IEEE,1998:69-74.
[16]潘恒輝.圖像拼接中鬼影消除算法研究[J].艦船電子工程,2010,30(3):125-127.