陳立偉, 宋濤羽
(哈爾濱工程大學(xué)信息與通信工程學(xué)院,哈爾濱 150001)
信號(hào)處理綜合實(shí)驗(yàn)中,圖像拼接是其中一個(gè)實(shí)驗(yàn)項(xiàng)目。圖像拼接是一種能夠?qū)⒖臻g上有重疊的兩幅或多幅圖像拼接為一幅具有高分辨率、寬視角圖像的技術(shù),目前,廣泛應(yīng)用在遙感圖像處理[1]、醫(yī)學(xué)圖像合成[2]、虛擬現(xiàn)實(shí)[3]和無人駕駛[4]等領(lǐng)域。
滿足單點(diǎn)透視假設(shè)的圖像拼接相對(duì)簡(jiǎn)單,技術(shù)較為成熟[5],但是大視差場(chǎng)景下的圖像拼接依然是一個(gè)有挑戰(zhàn)性的任務(wù)[6]。這是由于大視差圖像之間往往存在多個(gè)對(duì)應(yīng)平面,很難同時(shí)將所有平面對(duì)齊,導(dǎo)致拼接結(jié)果出現(xiàn)重影。為解決這一問題,Gao 等[7]提出將場(chǎng)景劃分成兩個(gè)主導(dǎo)平面,一個(gè)前景平面,另一個(gè)背景平面,然后在這兩個(gè)平面上分別計(jì)算單應(yīng)性矩陣并對(duì)其進(jìn)行配準(zhǔn)。這種方法對(duì)于圖像中只有兩個(gè)平面的場(chǎng)景,拼接效果明顯比單個(gè)全局單應(yīng)矩陣得到的拼接效果好。Zaragoza等[8]提出的APAP 算法引入了網(wǎng)格劃分的思想,將圖像劃分為很多的小網(wǎng)格并在每個(gè)網(wǎng)格中都估計(jì)出一個(gè)單應(yīng)性矩陣,一定程度上提高了圖像配準(zhǔn)精度,但是僅適用于視差較小的情況,并且要求待拼接圖像有較高的重疊度。Lin 等[9]提出的AANAP算法是在APAP的基礎(chǔ)上,將局部投影變換和全局投影變換線性結(jié)合,得到的拼接結(jié)果有非常自然的視覺效果。Li等[10]提出了一種基于魯棒彈性翹曲的視差容忍圖像拼接方法,能夠同時(shí)實(shí)現(xiàn)精確對(duì)準(zhǔn)和高效處理。
以上這些算法為了提高配準(zhǔn)精度,要求圖像有較高的重疊度,忽略了小重疊面積圖像拼接時(shí)出現(xiàn)的變形問題。另外在視差較大的情況下,圖像之間存在的多個(gè)對(duì)應(yīng)平面無法同時(shí)對(duì)齊,拼接結(jié)果會(huì)出現(xiàn)重影的問題。為此,本文提出了一種多平面分區(qū)投影的大視差圖像拼接算法。首先將循環(huán)RANSAC 算法與最佳縫合線算法結(jié)合使用來確定最優(yōu)單應(yīng)性矩陣,以消除拼接結(jié)果中重疊區(qū)域的重影,然后把圖像劃分為3 個(gè)區(qū)域并利用最優(yōu)單應(yīng)性矩陣得到分區(qū)投影函數(shù),對(duì)圖像進(jìn)行分區(qū)投影變換,以避免非重疊區(qū)域變形。從而實(shí)現(xiàn)小重疊面積、大視差圖像的自然無縫拼接。
RANSAC算法是一種穩(wěn)定的模型擬合算法[11],對(duì)于存在誤匹配的特征點(diǎn)對(duì)集合,它依然可以求得最優(yōu)的單應(yīng)性變換模型,同時(shí)可以去除圖像中的外點(diǎn)(誤匹配點(diǎn))并保留所有內(nèi)點(diǎn)(正確匹配點(diǎn))。算法的具體步驟如下:
輸入匹配特征點(diǎn)對(duì)集合M。
輸出最優(yōu)單應(yīng)性矩陣H、對(duì)應(yīng)內(nèi)點(diǎn)集合M^。
(1)令i =1,在M 中隨機(jī)取出4 對(duì)匹配特征點(diǎn),求解對(duì)應(yīng)的單應(yīng)性矩陣Hi。
(2)使用Hi計(jì)算其余匹配點(diǎn)的投影誤差,若誤差小于預(yù)設(shè)閾值T,則為內(nèi)點(diǎn)并存入內(nèi)點(diǎn)集合,記所有內(nèi)點(diǎn)個(gè)數(shù)ni,i =i +1。
(3)重復(fù)(1)、(2),直到i 大于預(yù)設(shè)循環(huán)次數(shù),停止循環(huán)。
(4)選擇ni最大時(shí)對(duì)應(yīng)的Hi和內(nèi)點(diǎn)集合,并令
根據(jù)算法可以得到待拼接圖像之間的最優(yōu)單應(yīng)性矩陣H和對(duì)應(yīng)的內(nèi)點(diǎn)集合。
最佳縫合線算法對(duì)于消除圖像配準(zhǔn)誤差造成的重影有很好的效果,它在計(jì)算時(shí)考慮了圖像的顏色和結(jié)構(gòu)差異信息,加強(qiáng)了縫合線的局部相似性。以縫合線為基準(zhǔn)對(duì)兩幅圖像進(jìn)行拼接,從本質(zhì)上消除了配準(zhǔn)不準(zhǔn)確區(qū)域出現(xiàn)的重影現(xiàn)象。對(duì)于一條令人滿意的最佳縫合線來說,以下兩個(gè)要求需要被同時(shí)滿足:①兩幅圖像縫合線處像素點(diǎn)的顏色差異最??;②兩幅圖像在縫合線處的結(jié)構(gòu)差異也應(yīng)該最小。
由Duplaquet 等提出的最佳縫合線計(jì)算準(zhǔn)則[12]如下:
式中:Ecolor(x,y)、Egeometry(x,y)分別為圖像重疊區(qū)域像素點(diǎn)的顏色差異強(qiáng)度值和結(jié)構(gòu)差異強(qiáng)度值,
Sx和Sy分別代表x 和y 方向的大小為3 × 3 的Sobel算子。在圖像的重疊部分,利用準(zhǔn)則公式計(jì)算每個(gè)像素點(diǎn)準(zhǔn)則值,生成一幅以準(zhǔn)則值為像素值的圖像,即能量矩陣E。然后利用動(dòng)態(tài)規(guī)劃算法[13]在能量矩陣上搜索能量值最小的縫合線作為最佳縫合線,原理如圖1 所示。
圖1 縫合線搜索原理示意圖
具體步驟為:
(1)重疊區(qū)域第1 行每一列的初始值為能量矩陣第1 行的準(zhǔn)則值。
(2)將縫合線當(dāng)前點(diǎn)與其左右兩個(gè)點(diǎn)的準(zhǔn)則值及下一行緊鄰的3 個(gè)點(diǎn)的準(zhǔn)則值進(jìn)行比較,把準(zhǔn)則值最小的點(diǎn)作為縫合線的延伸方向,如果準(zhǔn)則值最小的點(diǎn)已經(jīng)在縫合線上,則選擇次最小的點(diǎn)作為延伸方向。循環(huán)操作步驟(2),當(dāng)縫合線延伸到最后一行時(shí),停止循環(huán)。
(3)選擇能量值總和最小的縫合線作為最佳縫合線。
由于大視差圖像之間往往存在多個(gè)對(duì)應(yīng)平面,進(jìn)行圖像拼接時(shí)無法將所有平面同時(shí)對(duì)齊[14]。因此在局部對(duì)齊的圖像上搜索一條縫合線對(duì)圖像進(jìn)行拼接,成為解決這一問題的有效方法。拼接過程中,利用RANSAC算法只能產(chǎn)生一個(gè)主平面對(duì)齊的圖像,而在其他平面對(duì)齊的圖像上極有可能搜索到一條合適的縫合線,得到更加自然的拼接結(jié)果。因此需要計(jì)算多個(gè)對(duì)應(yīng)平面上的單應(yīng)性矩陣,選出效果最好的來拼接圖像。另外,對(duì)于本文小重疊面積的圖像,如果僅采用單應(yīng)性矩陣變換圖像,在非重疊區(qū)域會(huì)出現(xiàn)嚴(yán)重的變形問題。為此,本文將圖像劃分區(qū)域,不同區(qū)域采用不同類型的變換模型,保持非重疊區(qū)域形狀不變。
將兩幅待拼接圖像I0和I1的初始匹配點(diǎn)記為M0,通過在M0上循環(huán)使用RANSAC 算法即可得到所有對(duì)應(yīng)平面上的單應(yīng)性變換矩陣,通過最佳縫合線算法在每一個(gè)局部對(duì)齊的圖像上搜索縫合線,并記錄縫合線能量,選擇能量最小縫合線對(duì)應(yīng)的單應(yīng)性矩陣作為最優(yōu)單應(yīng)性矩陣,具體流程如圖2 所示。
圖2 多平面候選單應(yīng)性生成與最優(yōu)單應(yīng)性選擇流程圖
假設(shè)得到的最優(yōu)單應(yīng)性矩陣為H,將圖像從(x,y)坐標(biāo)系下變換到(u,v)坐標(biāo)系下,變換關(guān)系式為
式中:θ =a tan2(- h8,- h7),a 為線性參數(shù),h7和h8為單應(yīng)性矩陣H中的第7 和第8 個(gè)參數(shù)。
利用u =u1和u =u2兩條直線將待配準(zhǔn)圖像劃分為3 個(gè)區(qū)域,分別為重疊區(qū)域RH={(u,v)|u≤u1}、過渡區(qū)域RT={(u,v)|u1<u <u2}和非重疊區(qū)域RS={(u,v)|u2≤u}。定義分區(qū)投影函數(shù)
式中:H(u,v)為H在(u,v)坐標(biāo)系下的表示;T(u,v)表示單應(yīng)性變換向相似變換轉(zhuǎn)換的函數(shù);S(u,v)表示相似變換,它們可以根據(jù)文獻(xiàn)[15]中的方法進(jìn)行求解。
確定u1、u2時(shí),主要是依據(jù)變換函數(shù)形狀保持的特性,使變換函數(shù)盡可能地接近相似變換。為此,定義每一幅圖像Ii的代價(jià)函數(shù)Ci,衡量其變換函數(shù)wi與最近相似變換的偏差:
式中:Ωi是圖像Ii中的一塊矩形區(qū)域;Ji(x,y;u1,u2)為wi在(x,y)處的雅可比矩陣。當(dāng)拼接兩幅圖像時(shí),總偏差
其中,w1=w ?H-1,w2=w。
為驗(yàn)證本文所提算法的效果,將AANAP、ELA 算法與本文算法進(jìn)行對(duì)比。實(shí)驗(yàn)中使用的圖像均為手機(jī)拍攝,尺寸為1 280 × 720 像素,實(shí)驗(yàn)硬件平臺(tái)為Intel(R)Core(TM)i5-8300H,2.3 GHz CPU,內(nèi)存8 GB。軟件平臺(tái)為Visual Studio 2017 和OpenCV 3.4.1。
本次實(shí)驗(yàn)中,采用兩組測(cè)試圖像對(duì)算法性能進(jìn)行測(cè)試。為便于對(duì)比,拼接結(jié)果中存在重影的區(qū)域用紅色方框標(biāo)出,并放大排列在拼接結(jié)果的下方,存在拼接線的區(qū)域用藍(lán)色方框標(biāo)出。為了更直觀地對(duì)比非重疊區(qū)域的變形情況,在圖像中插入了6 個(gè)5 × 5 的黃顏色網(wǎng)格作為形變探針。形變探針編號(hào)為,左邊一列自上向下1,2,3;右邊一列自上向下4,5,6。
第1 組為城市交通場(chǎng)景下采集的圖像,源圖像如圖3 所示,圖像的重疊度為32.6%。
圖3 城市交通場(chǎng)景源圖像
圖4 展示了不同算法的拼接結(jié)果及局部放大圖。其中圖4(a)為利用AANAP 算法得到的拼接結(jié)果,可以看到越野車的車頭、路燈桿和大樹的位置均出現(xiàn)較為明顯的重影,1 ~6 號(hào)形變探針都出現(xiàn)不同程度的變形,相較于1,2,3 號(hào),4,5,6 號(hào)的變形更為嚴(yán)重。圖4(b)為ELA算法得到的拼接結(jié)果,在越野車、路燈桿和大樹的位置同樣出現(xiàn)較為嚴(yán)重的重影,并且在重疊區(qū)域的邊界處還出現(xiàn)了拼接線,但6 個(gè)形變探針的形變量相較于AANAP 算法有所減輕。相比之下,本文算法得到結(jié)果中沒有出現(xiàn)重影,6 個(gè)形變探針也沒有變形,得到的結(jié)果更加自然。
圖4 城市交通場(chǎng)景不同算法拼接結(jié)果對(duì)比
第2 組為校園交通場(chǎng)景下采集的圖像,源圖像如圖5 所示,圖像的重疊度為45.3%。
圖5 校園交通場(chǎng)景源圖像
圖6 所示為校園交通場(chǎng)景下不同算法拼接結(jié)果對(duì)比圖,其中圖6(a)和圖6(b)分別為AANAP、ELA 算法的拼接結(jié)果,在窗戶、汽車和行人位置均出現(xiàn)了明顯的重影。此外ELA 算法的拼接結(jié)果在重疊區(qū)域邊界處同樣存在明顯的拼接線,本文算法得到的結(jié)果有效避免了重影的出現(xiàn),6 個(gè)形變探針的變形情況也明顯優(yōu)于對(duì)比算法。
本文提出了一種多平面分區(qū)投影的大視差圖像拼接算法,算法有以下特點(diǎn):
(1)通過循環(huán)使用RANSAC 算法獲得圖像多個(gè)對(duì)應(yīng)平面上的單應(yīng)性矩陣,利用最佳縫合線算法選擇效果最好的一個(gè)對(duì)重疊區(qū)域進(jìn)行對(duì)齊,有效提高了重疊區(qū)域的拼接質(zhì)量。
(2)將圖像劃分區(qū)域,不同區(qū)域采用不同的投影變換,有效防止非重疊區(qū)域形狀失真。相較于對(duì)比算法,本文算法有較強(qiáng)的重影消除能力和形狀保持能力,實(shí)現(xiàn)了小重疊面積、大視差圖像的自然拼接。
本文算法也有一定的局限性,還有需要完善的地方,比如,在確定最佳單應(yīng)性矩陣時(shí),需要在多個(gè)局部對(duì)齊的圖像上搜索縫合線,比較耗時(shí),因此拼接的效率還有待提高。未來將對(duì)拼接的效率做進(jìn)一步探索,研究效率更高的算法。
學(xué)生在實(shí)驗(yàn)中,通過數(shù)據(jù)采集、算法設(shè)計(jì)、算法仿真和實(shí)驗(yàn)分析等環(huán)節(jié),提高了學(xué)生的學(xué)習(xí)興趣,培養(yǎng)了學(xué)生的創(chuàng)新精神和創(chuàng)新意識(shí)。