姜幸儉,李霆
(五邑大學(xué),江門(mén) 529000)
全景圖是一種在各方向上全視角展示周?chē)锢砜臻g樣貌的圖像,圖像拼接技術(shù)將多張具有重疊區(qū)域的圖像合成大畫(huà)幅、廣視角的全景圖,是計(jì)算機(jī)圖像圖形處理研究中的熱點(diǎn)領(lǐng)域。全景圖廣泛應(yīng)用于基于圖像的3D場(chǎng)景建模和繪制[1]。
文獻(xiàn)[2]將圖像拼接流程概括為兩個(gè)主要步驟,第一步:圖像的配準(zhǔn)和扭曲;第二步:尋找拼接縫隙并提供平滑的過(guò)渡。在標(biāo)準(zhǔn)鏡頭的情況下,文獻(xiàn)[3]采用SIFT特征點(diǎn)結(jié)合RANSAC篩選同一平面特征點(diǎn)計(jì)算多組單應(yīng)性矩陣,通過(guò)縫隙誤差最小來(lái)選擇合適的單應(yīng)性矩陣,將單應(yīng)性矩陣的方法用于生成全景圖的情況中,無(wú)法避免累積誤差的問(wèn)題。針對(duì)魚(yú)眼鏡頭,文獻(xiàn)[4]先將魚(yú)眼圖像轉(zhuǎn)換到縱向壓縮的柱面投影下,然后計(jì)算單應(yīng)性矩陣拼接全景圖像,并且在漫游系統(tǒng)中展示,該方法中使用了Bundle adjustment平攤累積誤差到每個(gè)鏡頭[5],但單應(yīng)性矩陣引入的累積誤差并沒(méi)有消除,在漫游系統(tǒng)中可以看到首尾兩張魚(yú)眼圖像完全沒(méi)有重疊。文獻(xiàn)[6]對(duì)雙魚(yú)眼鏡頭的三星Gear設(shè)備提出了一種兩步配準(zhǔn)方法,首先將魚(yú)眼圖像通過(guò)等距直角投影模型映射,手動(dòng)選取匹配特征點(diǎn),對(duì)匹配點(diǎn)求解仿射變換,評(píng)估歸一化互相關(guān)參數(shù)求最優(yōu)拼接參數(shù)?,F(xiàn)有的商業(yè)軟件,例如PTGUI在計(jì)算全景圖時(shí),對(duì)不同鏡頭采用相同的參數(shù),并不符合實(shí)際的鏡頭模型。
最佳拼接縫隙的尋找是圖像拼接中重要的環(huán)節(jié),文獻(xiàn)[7]使用動(dòng)態(tài)規(guī)劃的方法尋找重疊區(qū)域的拼接縫隙解決了相鄰圖像重疊區(qū)域存在運(yùn)動(dòng)物體的問(wèn)題,但該方法易陷入局部最優(yōu)。文獻(xiàn)[8]在待拼接圖像上以圖像梯度建立無(wú)向圖用網(wǎng)絡(luò)最大流圖切割尋找拼接縫隙,在消除鬼影和重影任務(wù)上取得了很好的效果。
圖像融合主要有三種方法:線(xiàn)性融合、多分辨率融合、基于光流的方法[9]也被使用在圖像拼接中。線(xiàn)性融合算法實(shí)時(shí)性好,但對(duì)存在的鬼影和重疊現(xiàn)象消除效果不明顯。多分辨率方法能夠消除小的拼接縫隙、且對(duì)兩張照片的過(guò)渡處理效果好,但復(fù)雜度高,需要時(shí)間長(zhǎng)。光流法計(jì)算每一個(gè)像素周?chē)ヅ涞南袼?,消除拼接縫隙效果是最好,但容易出現(xiàn)形變,且計(jì)算時(shí)間長(zhǎng)。
綜上所述,針對(duì)魚(yú)眼鏡頭生成全景圖過(guò)程中不同鏡頭采用相同參數(shù)進(jìn)行優(yōu)化有重影的問(wèn)題,本文擬采用鏡頭參數(shù)單獨(dú)優(yōu)化方法進(jìn)行解決。
一張高質(zhì)量拼接全景圖像應(yīng)具備以下兩個(gè)條件[10]:①幾何結(jié)構(gòu)上,拼接原圖像對(duì)應(yīng)點(diǎn)周?chē)鷰缀谓Y(jié)構(gòu)最相似。②顏色強(qiáng)度上,每個(gè)像素周?chē)鷧^(qū)域顏色過(guò)渡均勻。
從魚(yú)眼鏡頭的像素坐標(biāo)系映射到單位球坐標(biāo)系下映射關(guān)系如圖1所示。
圖1 像素坐標(biāo)系到單位球坐標(biāo)系
通過(guò)相鄰圖像之間的匹配特征點(diǎn)計(jì)算魚(yú)眼圖像的全局幾何變換參數(shù)。魚(yú)眼圖像到全景圖的映射方式主要有兩種:正向映射,從魚(yú)眼圖映射到全景圖像上;反向映射,從全景圖坐標(biāo)計(jì)算魚(yú)眼圖像坐標(biāo)。在圖像拼接映射過(guò)程中,為了避免全景圖像素的缺失,默認(rèn)采用反向映射方式,但在魚(yú)眼鏡頭參數(shù)計(jì)算過(guò)程中采用正向映射的方式來(lái)進(jìn)行特征點(diǎn)映射。
下面建立魚(yú)眼鏡頭像素坐標(biāo)系與單位球面坐標(biāo)系的映射關(guān)系。根據(jù)圖1(a)將魚(yú)眼圖像素坐標(biāo)系(u,v)歸一化到相機(jī)坐標(biāo)系(xn,yn)。
式(1)中( )cx,cy為魚(yú)眼鏡頭主點(diǎn)像素坐標(biāo),r為魚(yú)眼圖有效像素半徑。
考慮鏡頭在生產(chǎn)過(guò)程中由于生產(chǎn)精度或裝配誤差,導(dǎo)致魚(yú)眼鏡頭成像沒(méi)有嚴(yán)格按照投影模型。引入徑向畸變多項(xiàng)式擬合誤差如公式(2)。為了保持圖像的均勻性,僅保留b和d項(xiàng),并且讓畸變系數(shù)之和為1保證原圖像不會(huì)在映射過(guò)程中出現(xiàn)縮放而損失圖像信息。
式(2)中rsrc表示魚(yú)眼鏡頭相機(jī)坐標(biāo)系的實(shí)際坐標(biāo),rdst為理想坐標(biāo)值。
根據(jù)圖2(b),可以看出光線(xiàn)從半球面經(jīng)過(guò)折射投射到傳感器平面上,根據(jù)視場(chǎng)角關(guān)系計(jì)算出當(dāng)前像素的入射角,從而將魚(yú)眼圖上的像素映射到單位球面上。用θ表示入射角,φ表示y軸坐標(biāo)與x軸的夾角,可以計(jì)算出單位球面坐標(biāo)( )Sx,Sy,Sz。
式(3)中,魚(yú)眼鏡頭的視場(chǎng)角(Field Of View,F(xiàn)OV),入射角θ的范圍是[0 ,π] ,y軸與x軸夾角φ的范圍是[-π,π]。球面坐標(biāo)采用右手坐標(biāo)系。
此時(shí)已經(jīng)將單張魚(yú)眼圖映射到單位球上,想要獲取一個(gè)完全沒(méi)有視差的圖像需要保持不同鏡頭之間光心處于同一個(gè)位置上,但在實(shí)際情況中這個(gè)條件難以滿(mǎn)足,所以不同相機(jī)之間存在一個(gè)相對(duì)的外參矩陣,由旋轉(zhuǎn)矩陣和平移矩陣構(gòu)成,本文在假設(shè)相機(jī)之間光心重合的條件下進(jìn)行計(jì)算,所以不同鏡頭之間只有旋轉(zhuǎn)矩陣,沒(méi)有平移矩陣。使用歐拉角旋轉(zhuǎn)規(guī)范,θxθyθz分別為沿著對(duì)應(yīng)軸旋轉(zhuǎn)的角度,將每個(gè)鏡頭旋轉(zhuǎn)到真實(shí)的鏡頭方向。
以上公式建立了從魚(yú)眼圖像素坐標(biāo)映射到單位球坐標(biāo)系下的多項(xiàng)式,將相鄰圖像匹配點(diǎn)對(duì)映射到單位球上,取匹配點(diǎn)對(duì)的球面中值作為優(yōu)化目標(biāo),以中值和匹配點(diǎn)之間的歐氏距離作為目標(biāo)函數(shù)進(jìn)行優(yōu)化,單獨(dú)優(yōu)化每個(gè)鏡頭的參數(shù)。如公式(4)。
經(jīng)過(guò)上述映射變換之后,通過(guò)優(yōu)化公式(4)可以得到每個(gè)鏡頭在幾何結(jié)構(gòu)上最優(yōu)的參數(shù)。原始魚(yú)眼圖像經(jīng)過(guò)全局幾何變換之后,得到一個(gè)初步的全局配準(zhǔn)圖像,但在相鄰圖像重疊區(qū)域由于光心不一致等問(wèn)題仍會(huì)存在局部瑕疵。
依次尋找有序的全景圖序列S1,S2,…Sn之間重疊部分的縫合線(xiàn)。將相鄰兩張全景圖映射為一張帶權(quán)無(wú)向圖表示圖G中全部像素的集合,作為圖的頂點(diǎn),E表示圖G中連接像素的邊的集合。建立圖割問(wèn)題尋找最佳的拼接縫隙,代價(jià)函數(shù)表示為公式(5),圖割問(wèn)題具體求解方式不在本文討論范圍之內(nèi),僅設(shè)計(jì)求解方程。
為了獲得顏色上的相似性,以相鄰圖像相同位置顏色的歐氏距離作為邊的大小。根據(jù)式(6)計(jì)算差值圖。
相鄰兩張全景圖像相同位置像素的有效性可以分為三種情況:都有效、半有效以及都無(wú)效,如圖2所示。
圖2 相鄰全景圖的像素有效性
根據(jù)式(7),第一項(xiàng)建立每個(gè)像素頂點(diǎn)和終端頂點(diǎn)的連接T-link。根據(jù)像素在原始圖像的有效性可以分為兩種情況。
第二項(xiàng)建立相鄰頂點(diǎn)之間邊的連接懲罰項(xiàng)。
至此,建立了相鄰圖像尋找最佳縫隙的代價(jià)函數(shù)。使用文獻(xiàn)[11]最大流方法對(duì)方程求解,可得到顏色上最相近的拼接縫隙。
在獲得最佳拼接參數(shù)和拼接縫隙之后,對(duì)相鄰全景圖依次進(jìn)行融合拼接[12]。由于不同鏡頭之間會(huì)存在曝光差異,采用多分辨率融合,保證過(guò)渡處的自然,并且該方法能處理拼接縫隙處細(xì)小的結(jié)構(gòu)誤差存在。多分辨率拼接的具體步驟如下:
Step1對(duì)待融合相鄰全景圖像根據(jù)拼接縫隙生成每張圖像的mask圖像。再根據(jù)全景圖尺寸生成一張存儲(chǔ)最終結(jié)果圖的result圖像。
Step2假設(shè)金字塔層數(shù)為L(zhǎng),對(duì)待融合全景圖做L層的拉普拉斯金字塔,對(duì)應(yīng)的mask做L層的高斯金字塔,此時(shí)每層mask金字塔的像素值為待融合全景圖每層的權(quán)值,此外結(jié)果圖也做L層的高斯金字塔。
Step3根據(jù)融合權(quán)值mask金字塔的大小將待融合全景圖累加到每層的result層上,獲得待重構(gòu)的result拉普拉斯金字塔。
Step4從結(jié)果圖拉普拉斯金字塔恢復(fù)出原尺寸大小的最終融合圖。
實(shí)驗(yàn)設(shè)備使用四個(gè)魚(yú)眼鏡頭,正方形排列,每個(gè)鏡頭約200度視場(chǎng)角。由圖3可以看出,鏡頭光心沒(méi)有重疊,一定存在視差。
圖3 實(shí)驗(yàn)使用設(shè)備
待優(yōu)化變量為鏡頭像素坐標(biāo)中心(Cx,Cy)、視場(chǎng)角FOV、畸變系數(shù)b。對(duì)比實(shí)驗(yàn)選取特征豐富的場(chǎng)景,在相同匹配特征點(diǎn)的情況下,對(duì)比不同鏡頭相同參數(shù)和不同參數(shù)下的拼接結(jié)果。
表1 多鏡頭統(tǒng)一參數(shù)優(yōu)化結(jié)果
表2 多鏡頭獨(dú)立參數(shù)優(yōu)化結(jié)果
表1和表2是同樣的鏡頭,在同一組特征點(diǎn)下,統(tǒng)一參數(shù)和獨(dú)立參數(shù)的優(yōu)化結(jié)果。
圖4 不同鏡頭采用相同參數(shù)時(shí)拼接結(jié)果
圖5 采用不同鏡頭參數(shù)時(shí)拼接結(jié)果
對(duì)比圖4、圖5,圖4是對(duì)不同的4個(gè)鏡頭采用相同的參數(shù)進(jìn)行優(yōu)化得到的結(jié)果,圖中紅框部分是不同鏡頭重疊區(qū)域的拼接縫隙,根據(jù)下方細(xì)節(jié)圖可以明顯看出,在重疊區(qū)域并不能完全對(duì)齊,在每條拼接縫隙處都存在一定程度的錯(cuò)切。在圖5的相同位置沒(méi)有錯(cuò)切問(wèn)題。
針對(duì)魚(yú)眼圖片拼接成全景圖過(guò)程中,多鏡頭參數(shù)優(yōu)化的時(shí),對(duì)不同鏡頭采用相同的參數(shù),改進(jìn)為單獨(dú)優(yōu)化每個(gè)鏡頭的參數(shù)。魚(yú)眼圖像全局幾何變換之后使用圖割法尋找最佳縫合線(xiàn)生成全景圖像,最后使用多分辨率融合獲得一張無(wú)縫隙的全景圖像。本文的方法通用性較強(qiáng),適用于各種魚(yú)眼鏡頭合成全景圖像。實(shí)驗(yàn)證明,此方法在多鏡頭不同參數(shù)情況下,能夠獲得更好的結(jié)果。
對(duì)于魚(yú)眼圖像上特征點(diǎn)的提取及匹配是未來(lái)主要工作方向,現(xiàn)有的特征點(diǎn)匹配方法直接從魚(yú)眼圖像上只能獲取極少正確的匹配點(diǎn)對(duì)。