摘 要:360度全景圖是一種低成本的虛擬現(xiàn)實技術(shù),能夠增強(qiáng)與用戶交互,并且其以圖像拼接技術(shù)為手段,能夠強(qiáng)化場景的渲染效果。全景技術(shù)是虛擬現(xiàn)實最直觀、低廉的實現(xiàn)方法,在感官上實現(xiàn)的一種偽3D效果。本文通過分析360度全景拼接中存在的問題,提出了以下優(yōu)化措施,以期能夠?qū)崿F(xiàn)高清圖像的快速拼接。
關(guān)鍵詞:390度;全景拼接;虛擬現(xiàn)實;全景圖
360度全景圖是一種對所拍攝場對象進(jìn)行幾何關(guān)系映射的平面圖,展示了360度球型模型或立方模型內(nèi)的所有場景,具有369度水平視角和180度垂直視角的圖像,通過拖動鼠標(biāo)左鍵,經(jīng)過全景播放器的校正處理后,才能形成一種偽3D的視覺特征。
1 360度全景拼接中的圖像校正
1.1 多次拼接帶來的問題及優(yōu)化措施
在拼接的時候,首先要計算出圖像的變換模型,用兩張圖像的特征點進(jìn)行匹配,然后為了得到一張全景圖,用該模型變換待拼接的圖像,最后才能拼合和融合圖像。但是經(jīng)過多次積累后,會使圖像拼接后產(chǎn)生大面積的形變。所拼接的圖像,一張是“待拼接圖像”,一張是“參考圖像”。在拼接的過程中,如果只是對“待拼接圖像”進(jìn)行圖像變換,那么部分場景將發(fā)生一定程度的形變。為了盡可能降低場景發(fā)生形變的概率,保證場景不出現(xiàn)大的形變,本文提出了兩個點優(yōu)化措施:
(1)在圖像大小方面,保持“待拼接圖像”和“參考圖像”二者相近。如果我們有4張圖像,為了取得更好的效果,將其編為①、②、③、④,然后我們采用以下拼接步驟:
首先將①和②進(jìn)行拼接,然后將組合的結(jié)果標(biāo)記為“①②”;然后將③和④進(jìn)行拼接,同時將組合的結(jié)果標(biāo)記為“③④”;最后進(jìn)行“①②”和“③④”的拼接,并將其拼合的結(jié)果標(biāo)記為“①②③④”。
(2)將“待拼接圖像”和“參考圖像”輪流設(shè)置成為“待拼接圖像”。此方法可以使這種形變不會全部集中于一個方向上。如果有四張圖像,我們現(xiàn)在依次將它們進(jìn)行編號,分別為a、b、c、d,如果想要拼接后的圖像大小不變,可以根據(jù)以下步驟進(jìn)行拼合:
首先我們將a設(shè)為參考圖像,將b設(shè)為待拼接圖像,然后將a和b進(jìn)行拼合,將b進(jìn)行圖像變換,并將其拼合后的圖像記為“ab”;然后我們將c設(shè)為參考圖像,將拼合后的“ab”設(shè)為待拼接圖像,拼合后的圖像記為“abc”;最后將d設(shè)為待拼接圖像,將拼合后的“abc”設(shè)為參考圖像,將d進(jìn)行圖像變換,并將其拼合后的圖像記為“abcd”。
使用上述兩種方法進(jìn)行拼接就能最大限度地減少大面積形變。
1.2 對全景圖進(jìn)行整體校正
在經(jīng)過多次拼接之后,圖像會在一定程度上產(chǎn)生形變。而在水平方向上,每一列像素點的個數(shù)基本一樣,導(dǎo)致圖像呈現(xiàn)出“彎曲”的狀態(tài),因此,我們需要將每列的像素點“移動”到同一水平線上,這樣便能將圖像“拉直”。但是,如果我們只是簡單地移動像素,也不能有效地阻止部分圖像的場景進(jìn)行形變。因此,為了校正圖像中場景的形變,可以采用以下解決算法:
第一,對每列中心位置進(jìn)行計算,并及時在數(shù)組center中進(jìn)行保存;
第二,在數(shù)組center中查找落在[centerpoint-1, centerpoint+1]中最多的區(qū)域,選擇centerpoint為所有列期望的中心點,讓其最終形成一條直線;
第三,為了構(gòu)造出兩個矩陣M和N,分別在真實中心位置和期望中心位置的上、下選取3對偏移值;
第四,為了得到圖像變換模型,利用多項式變換公式:
(1)
將矩陣M和N作為控制點加以圖像變換,那么,變換后的圖像正是校正后的圖像。
這種算法能夠?qū)⒃紙D像中的發(fā)生形變的場景還原到較真實的場景,能夠?qū)ⅰ皬澢钡膱D像“拉直”。
2 360度全景拼接中的首尾相接問題及優(yōu)化措施
2.1 圖像首尾的確定
首先,在拼接和生成全景圖之前,我們擁有的是一組單獨的圖像,這一組圖像中的各種場景是拼接后的全景圖像的最重要的構(gòu)成元素。但是,究竟哪張圖像應(yīng)該成為全景圖像的終點呢?哪張圖像可以作為拼接起點呢?假設(shè)圖像的首尾都是純白色的背景,那么他們的拼合一定是無縫的;但是圖像的首尾部分都是紋理細(xì)膩的場景,為了保證無縫的拼接,就必須要精確的縫合。因此,應(yīng)該盡量根據(jù)圖像的紋理特征熵值,在實現(xiàn)的過程中,我們來選取較為“簡單的”區(qū)域作為圖像的首尾,進(jìn)行判斷。那么我們可以用熵值來對圖像中的紋理信息進(jìn)行量化,熵值大,圖像中包含的紋理信息大,熵值小,圖像中的紋理少。熵值的定義以下面公式所示:
(2)
其中P(i,j)表示灰度共生矩陣在第i行、第j元素的值,L則表示灰度級的數(shù)目。
為了找出熵值最小的圖像,在具體的實現(xiàn)中,我們要計算圖像中部分區(qū)域的熵值(一般取圖像中心區(qū)域)。這樣不僅能夠提高計算的精準(zhǔn)度,同時也能進(jìn)一步加快計算的速度。
其次,在處理首尾相接光線自然過渡的問題上,我們可以通過計算圖像局部區(qū)域的紋理特征,將圖像分成兩部分分別作為全景圖像的首、尾,滿足一下公式(2)中的關(guān)系,找出熵值最小的圖像。
2.2 首尾相接
在全景圖的呈現(xiàn)過程中,應(yīng)當(dāng)盡量避免圖像的首尾被用戶看到。因此,本文引入了偏移值和圖像斜率的定義,來保證圖像首尾場景的無縫拼接。如果圖像首尾的上、下端偏移值相等、圖像斜率為0,那么,該圖像是首尾相接的。事實上,如果我們只是將圖像首尾附近的強(qiáng)行進(jìn)行變換,圖像也會產(chǎn)生嚴(yán)重的失真。為了解決這個問題,可以采用基于全局坐標(biāo)約束的算法,通過圖像變換,保持場景的真實性。并且為了實現(xiàn)圖像的首尾相接,可以采用全局坐標(biāo)變換約束,將場景區(qū)域的四個端點對應(yīng)的坐標(biāo)變換到目標(biāo)圖像的四個端點坐標(biāo),即圖像中的每一塊區(qū)域都參與圖像的變換。
3 360度全景拼接中高清圖像的拼接方案及拼接順序的確定
在圖像的拼合過程中,只有提高全景圖的拼接速度,才能提高整體步驟的速度。在特征點的提取算法中,可近似看成與圖像中像素點的總數(shù)成線性,關(guān)系圖像的分辨率和算法的執(zhí)行時間成正比。如果此時的圖像分辨率較高,那么將耗費相當(dāng)長的時間來提取特征點。此外,拼合十張左右的圖像才能拼接成一幅360度全景圖,這樣算下來,最終會耗掉更多時間。因此,我們在拼接的過程中既要努力提高拼接的速度,同時又不能降低全景圖的質(zhì)量,這就要對“待拼接圖像”進(jìn)行采樣,同時記錄下采樣的尺度,同時對采樣的圖像進(jìn)行特征提取。在對圖像的特征進(jìn)行提取和認(rèn)真匹配之后,再把特征點的位置乘以采樣尺度,這樣就將特征點的位置還原成為大圖的位置。
如何從圖像中找出與該圖像有重疊部分的圖像呢?在不引入其他信息下,當(dāng)前需要找出與之“相鄰”的圖像,才能使該圖像與所有圖像進(jìn)行特征匹配,這樣會使算法的復(fù)雜性進(jìn)一步增加,效率非常低下。因此,可以采用基于文件名命名規(guī)則的圖像拼接序列自動感知算法。首先,按照文件名的大小,將待拼接的這組圖像做升序排列,然后取前兩張圖像進(jìn)行特征匹配。如果沒有找到匹配區(qū)域,我們要先按照降序?qū)M文件名進(jìn)行排序,然后再進(jìn)行特征匹配,匹配時取出排序后的前兩張圖像,如果找到了匹配,再按照該序列順序進(jìn)行拼接。
參考文獻(xiàn):
[1] 吳輝.全景影像的優(yōu)化生成及其并行處理方法[D].南京:南京師范大學(xué),2014.
[2] 趙衛(wèi)林,陳繼華,李勇.基于圖像的經(jīng)緯儀測量目標(biāo)快速瞄準(zhǔn)技術(shù)[J].宇航計測技術(shù),2014,34(3).
作者簡介:孫昊琛(1985—),男,山東聊城人,山西傳媒學(xué)院制作系講師,研究方向:影視攝影與制作。