陶菁,李毅
(1.四川大學(xué)計(jì)算機(jī)學(xué)院,成都 610065;2.四川大學(xué)國家空管自動化系統(tǒng)技術(shù)重點(diǎn)實(shí)驗(yàn)室,成都 610065)
機(jī)場場面視頻的拼接問題,其本質(zhì)是視頻間每一幀圖片的拼接問題。圖像拼接(Image Stitching)屬于計(jì)算機(jī)視覺領(lǐng)域,最近幾年再計(jì)算機(jī)領(lǐng)域(Computer Vision)受到了很大的關(guān)注。在幾十年的發(fā)展后,圖像拼接技術(shù)已經(jīng)比較成熟。通過提取圖像的SIFT[1](SURF或ORB)特征點(diǎn)來計(jì)算圖像重疊區(qū)域的單應(yīng)性矩陣(Homograph),以單應(yīng)性矩陣對齊,再通過相關(guān)投影和融合技術(shù)處理對齊圖像的拼接算法是老一代拼接算法的核心。該算法以Brown的AutoStitch[2]為代表。但該方法因?yàn)椴捎靡粋€單應(yīng)性矩陣對齊圖像,對大場景和不在一個平面的圖像來進(jìn)行拼接,會出現(xiàn)因視差出現(xiàn)的不對齊現(xiàn)象。Smoothly Varying Affine(SVA)[3]論文中采用6個單應(yīng)性矩陣來進(jìn)行圖像的配準(zhǔn),該方法能有效改善拼接過程中的視差問題,但計(jì)算量大,時耗嚴(yán)重。As-projective-As-possible[4]提出的網(wǎng)格化拼接算法,就是將所有圖像網(wǎng)格化,然后對對應(yīng)的每個網(wǎng)格進(jìn)行單應(yīng)性對齊。該方法也存在時耗嚴(yán)重的問題,而且只能處理小視差問題。而本文采用的方法就是先用單應(yīng)性矩陣將圖像預(yù)對齊,然后找出預(yù)對齊圖像重疊區(qū)域的最佳縫合線,最后再通過相應(yīng)的融合技術(shù)得到拼接結(jié)果。該方法可以處理視差問題,計(jì)算速度比較快。
對于視頻拼接,其應(yīng)用特別廣泛,尤其是在虛擬現(xiàn)實(shí)(VR)和場面監(jiān)控領(lǐng)域。從圖像拼接到視頻拼接的過渡主要需要解決三個問題視頻去抖動,拼接實(shí)時性(在線拼接速度)和重疊部分移動物體經(jīng)過的。由于機(jī)場場面的監(jiān)控?cái)z像頭相對位置固定,視頻抖動造成的影響較小。對于實(shí)時性問題,圖像拼接主要分對齊和融合兩個階段,而最耗時的是融合階段因其需要對全景圖片中每個像素點(diǎn)的值進(jìn)行計(jì)算,本文引入GPU中的CUDA[5]加速技術(shù)讓每個像素點(diǎn)并行計(jì)算能成倍的提高運(yùn)算速度,同時采用視頻特定幀的圖像作為拼接模板并在有運(yùn)動物體經(jīng)過拼接重疊區(qū)域的時候及時更新模板數(shù)據(jù)的方式來減短運(yùn)算時間,和減緩運(yùn)動物體造成的干擾。圖1為拼接算法的原始視頻圖像。
圖像拼接的主要步驟有如下三步:圖像預(yù)處理、圖像配準(zhǔn)和圖像融合。由于在視頻圖像的獲取過程中產(chǎn)生了較多的干擾如光線不統(tǒng)一等,這會造成圖像模糊,灰度便偏移等問題。為了消除干擾我們需要對圖像做一些去燥、投影、修正等基本的圖像預(yù)處理操作。而圖像配準(zhǔn)是圖像融合的基礎(chǔ)。
圖1 拼接原始圖
圖2 拼接模擬圖示
圖像配準(zhǔn)主要是將兩幅圖像的各像素點(diǎn)坐標(biāo)統(tǒng)一到同一個坐標(biāo)系中,即找到兩幅圖像間的空間對應(yīng)關(guān)系。因此圖像配準(zhǔn)需先確立圖像的成像模型本文采用的是針孔成像模型[6],接著通關(guān)系模型的參數(shù),算出兩幅圖像間坐標(biāo)投影變換矩陣H就完成了配準(zhǔn)過程。如圖2所示,圖A和圖B通過黑色重疊部分區(qū)域拼接成右邊的圖像,其中點(diǎn)P在圖A和圖B中對應(yīng)的點(diǎn)分別為P1和P2。首先通過攝像機(jī)相關(guān)的成像模型分別得出點(diǎn)P和P1,點(diǎn)P和P2間的關(guān)系。最后以點(diǎn)P為媒介,通過相關(guān)的投影坐標(biāo)轉(zhuǎn)換模型[7],計(jì)算出點(diǎn)P1和P2間的投影變換矩陣H,關(guān)系式如下:
一般情況下8參數(shù)的透視投影變換最適合描述圖像之間的坐標(biāo)關(guān)系,參數(shù)對應(yīng)的具體描述間表1:
表1 投影變換矩陣參數(shù)表
投影變換矩陣中參數(shù)的計(jì)算需要至少4對如P1和P2這樣的點(diǎn)對坐標(biāo)數(shù)來獲得。本文通過特征點(diǎn)的方式來獲得點(diǎn)對數(shù)據(jù)?;趫D像的特征點(diǎn)匹配的常用算法有ORB,SURF和SIFT特征點(diǎn)算法。其中SIFT特征點(diǎn)算法具有對旋轉(zhuǎn)、尺度縮放、亮度變化保持不變,對視角變化、仿射變換、噪聲也保持一定程度的穩(wěn)定性。相比于ORB,SURF算法具有更強(qiáng)的魯棒性。雖然用時最長,但通過GPU加速技術(shù),特征點(diǎn)的提取和匹配速度能達(dá)到實(shí)時的要求。SIFT特征點(diǎn)提取階段主要步驟首先是Dog尺度空間的極值檢測建立對應(yīng)的高斯金字塔,然后刪除不穩(wěn)定極值點(diǎn),接著確定特征點(diǎn)的主方向,最后根據(jù)特征點(diǎn)周圍的點(diǎn)變化情況生成n維的特征描述子。在得到兩幅圖的特征點(diǎn)后,采用歐式距離作為度量標(biāo)準(zhǔn)來進(jìn)行兩幅圖的特征點(diǎn)匹配,最總形成成對的特征點(diǎn)坐標(biāo)數(shù)據(jù)。原始形成的匹配對中存在較多的誤匹配,為提高匹配的質(zhì)量,增加算法魯棒性,需對匹配方式做一些改進(jìn)。因此引入了最近鄰/次近臨算法和RANSAC算法[8]來剔除誤匹配,提高圖像的拼接質(zhì)量,提純結(jié)果如圖3和圖4所示。最后為保持視覺的一致性還需對圖像進(jìn)行柱面投影處理[9]。
圖3 原始匹配算法圖
圖4 1NN/2NN+RANSAC匹配算法圖
通過一個單應(yīng)性矩陣對拼接圖像進(jìn)行配準(zhǔn),要求重疊的圖像近似于一個平面或者相機(jī)的光心近乎重疊。否則對于大場景等情況下的圖像拼接中將出現(xiàn)重影或者不對齊的現(xiàn)象,無法處理視差問題,如圖5的拼接后示例圖的拼縫處明顯沒對齊。本文將網(wǎng)絡(luò)流中的最大流和最小割的實(shí)現(xiàn)運(yùn)用于視屏圖像的拼接階段。其主要思想是先通過前面的方法將拼接圖像預(yù)對齊。然后通過網(wǎng)絡(luò)流中的最大流和最小割的方法分別找到兩幅預(yù)對齊圖像重疊部分中的最優(yōu)圖割,然后分別保留割線左右兩側(cè)的圖像數(shù)據(jù)并繪制在全局圖中。這樣能很有效地緩解拼接視差造成的模糊和不對齊現(xiàn)象。
圖5 GrapCut能量圖
最大流/最小割采用GrapCut[10]算法來求解,該方法首先用一個G=<V,E>表示要分割的圖像,同時G圖在普通圖的基礎(chǔ)上引入了S和T兩個終端頂點(diǎn)。圖上所有其它的頂點(diǎn)都必須與這兩個終端頂點(diǎn)相連成為邊集合的一部分,因此該圖具有兩種邊,如圖6(a)圖所示。圖中每個邊都會根據(jù)其對應(yīng)像素點(diǎn)數(shù)據(jù)值的情況而賦于對應(yīng)的權(quán)值。這樣我們就能得到該圖的一個能量方程,如下列公式所示:
其中E(L)表示G圖中所有邊能量值(權(quán)值)的總和。cut就是在G圖中找出n個切割邊,讓G圖中的所有點(diǎn)劃分為兩個不相交的集合S和T。cut就是這n個邊的集合,如圖12(b)圖所示。最終需要獲得結(jié)果是在所有cut找出中n個邊能量和最大的那個cut,讓切割后圖的能量方程E(L)最小,該方法可以用網(wǎng)洛流中的最大流/最小割方法解決,同時采用優(yōu)化增廣路徑算法[11]能快速解決最大流/最小割問題。因?yàn)樽罴哑纯p在同一幅圖中具有唯一性,因此在拼接過程中對重疊區(qū)域找出的兩條最小切割線是基本吻合的。圖6是根據(jù)該算法找出的拼接圖像的最佳拼接縫示例圖,可以看出左右兩幅圖的拼縫完全吻合:
圖6 最佳拼接縫
圖像拼接在經(jīng)過單應(yīng)性對齊和最佳拼接縫尋找后,如果直接將兩幅圖像的數(shù)據(jù)繪制到全景圖中,會發(fā)現(xiàn)拼接的重疊區(qū)域會出現(xiàn)明顯的拼縫和模糊狀況。為了消除拼接縫合重疊部份拼縫和光照不均勻的情況,還需對預(yù)對齊的拼接圖像做融合處理。常用的融合算法有漸進(jìn)漸出融合(Feather Blending)和多頻帶融合[12-14](Multi-band Blending)。其中漸進(jìn)漸出融合計(jì)算資源需求較少,但是融合后的成像質(zhì)量較差。而多頻帶融合成像質(zhì)量高可以處理小視差問題,但復(fù)雜度較高,比較耗時。
圖像拼接過程中圖像特征點(diǎn)計(jì)算,圖像的變換的線性插值和融合計(jì)算量巨大。特別是圖像融合階段采用多頻段技術(shù)時需要對大量像素點(diǎn)進(jìn)行計(jì)算,是實(shí)現(xiàn)實(shí)時全景視頻的瓶頸。因?yàn)樵诙囝l段融合階段,圖像中各個像素點(diǎn)數(shù)據(jù)值的計(jì)算相對較獨(dú)立,所以可以用并行計(jì)算的思路來提速融合操作。為了實(shí)現(xiàn)視頻拼接的實(shí)時性本人將CUDA并行加速技術(shù)運(yùn)用于圖像融合階段。
GPU中的CUDA計(jì)算架構(gòu)采用的計(jì)算模型是SIMT,即單指令多線程。該架構(gòu)用多層次的網(wǎng)格來調(diào)度大量的GPU線程,達(dá)到并行計(jì)算的目的。CUDA架構(gòu)中有線程網(wǎng)格(Grid),線程塊(Block),線程(Thread)。每個線程網(wǎng)格里面包含多個線程塊,每個線程塊中包含多個線程。
根據(jù)CUDA架構(gòu)的線程網(wǎng)格,線程塊和線程的設(shè)計(jì)思路我們可以發(fā)現(xiàn),其分布情況和圖像中每個像素點(diǎn)的分布規(guī)律一致。于是我們可以按照圖7的方式來處理圖像數(shù)據(jù),把需要處理的圖像分成n塊,每塊中像素點(diǎn)的個數(shù)和CUDA中線程塊里的線程個數(shù)保持一致。然后我們將n塊分別分配到CUDA對應(yīng)的線程塊中。讓圖像中多個像素點(diǎn)通過GPU中的多個線程,并行的進(jìn)行運(yùn)算處理。這樣就能極大的提高融合速度。
圖7 GPU線程塊和圖像對應(yīng)關(guān)系圖
機(jī)場場面視頻的拼接中由于機(jī)場攝像頭位置相對固定,因此不需要對視頻的每一幀都做預(yù)對齊處理??梢杂玫谝粠曨l初始化拼接模板,后面一幀采用前一幀的拼接模板參數(shù)進(jìn)行對齊。該方法能有效地減去拼接過程中預(yù)對齊階段的處理時間??墒钱?dāng)拼接區(qū)域有動態(tài)物體經(jīng)過時如圖8所示,當(dāng)飛機(jī)經(jīng)過拼縫時會對拼接造成干擾,重疊區(qū)域的移動物體會產(chǎn)生錯位,因此需要新建一個線程,用于檢測每一幀視頻中是否有移動物體進(jìn)入縫合線區(qū)域,出現(xiàn)該情況就以當(dāng)前幀為背景更新拼接模板參數(shù)。該方法當(dāng)有運(yùn)動物體經(jīng)過重疊區(qū)域時,視頻幀率會降低,但是能改善成像質(zhì)量。對于如何進(jìn)行動態(tài)物體檢測因不屬于本文研究范疇,此處不予介紹。
本文實(shí)驗(yàn)采用的計(jì)算機(jī)環(huán)境是:Intel Core i5-6400 CPU@2.70GHz 2核并且4GB RAM。拼接中采用的幀圖片參數(shù)為規(guī)格為720p:1280×720,如圖1所示。在經(jīng)過1-4節(jié)的處理后獲得了成像質(zhì)量高,幀率較高的機(jī)場場面視頻。
圖8 運(yùn)動物體經(jīng)過拼縫區(qū)域錯位圖
在實(shí)時性方面本文通過GPU中的CUDA加速(GTX780)和模板拼接的處理大幅度提高了拼接速度,其中每一幀的耗時為平均為0.050s左右,如果加入拼縫更新處理,每幀耗時平均為0.09ms左右。同等情況下在不采用GPU加速的OpenCV傳統(tǒng)拼接方法中每幀耗時0.670s,STVH[15]采用多個單應(yīng)性矩陣拼接的方法每幀耗時為2.3s左右。
在成像質(zhì)量方面,如圖9(a)所示,拼接結(jié)果圖像中很好地減緩了重疊區(qū)域的視差問題,成像質(zhì)量比較高。而傳統(tǒng)的OpenCV拼接效果圖(圖(b))中可以看出,重區(qū)域比較模糊,飛機(jī)明顯出現(xiàn)錯位變短的情況(如紅色矩形框A所示)且出現(xiàn)較多不對齊現(xiàn)象(如紅色矩形框B所示)。
圖9 拼接結(jié)果對比圖
對于機(jī)場場面的視屏拼接,目前面臨的兩大難題分別是對齊問題和實(shí)時性問題。在處理對齊等視差問題上本文采用最佳拼接縫和多頻帶融合等技術(shù),能有效緩解場景中不對齊和模糊的視差問題。接著我們通過引入GPU的CUDA加速技術(shù)和模板拼接方法也成倍地提高了視頻拼接速度,滿足實(shí)時要求。實(shí)驗(yàn)結(jié)果表明本文的效果優(yōu)于許多常用的視屏拼接方法。但同時也存在一些需要繼續(xù)研究改進(jìn)的問題。對于視差問題只能改善緩解,不能消除,如圖9(a)中小黃車有較明顯的錯位和模糊。對于大場景大視差處理效果不理想。拼接速度每25幀左右,基本滿足實(shí)時要求,仍有很大提升空間。
參考文獻(xiàn):
[1]Lowe D G,Lowe D G.Distinctive Image Features from Scale-Invariant Keypoints[J].International Journal of Computer Vision,2004,60(2):91-110.
[2]Brown M,Lowe D G.Automatic Panoramic Image Stitching using Invariant Features[C].IJCV.2007:59-73.
[3]Lin W Y,Liu S,Matsushita Y,et al.Smoothly Varying Affine Stitching[C].Computer Vision and Pattern Recognition.IEEE,2011:345-352.
[4]Zaragoza J,Chin T J,Tran Q H,et al.As-Projective-As-Possible Image Stitching with Moving DLT.[J].IEEE Transactions on Pattern Analysis&Machine Intelligence,2014,36(7):1285.
[5]Nvidia Corporation.CUDA Prohramming Guide Version 6.0[EB/OL].2017.http://www.nvidia.com/
[6]object/cuda_home_new.html.
[7]周雄圖,陳恩果,姚劍敏,et al.Design and Simulation of Combined Pinholes/Microlens Array for Integral Imaging[J].Chinese Journal of Liquid Crystals&Displays,2013,28(6):855-859.
[8]Lichti D D,Kim C.A Comparison of Three Geometric Self-Calibration Methods for Range Cameras[J].Remote Sensing,2011,3(12):1014-1028.
[9]Grunt.RANSAC算法詳解[EB/OL].2017.http://grunt1223.iteye.com/blog/961063.html
[10]吳子章.一種基于柱面投影的圖像拼接算法研究[J].計(jì)算機(jī)光盤軟件與應(yīng)用,2011(5):168-168.
[11]Rother C,Kolmogorov V,Blake A."GrabCut":Interactive Foreground Extraction Using Iterated Graph Cuts[C].ACM SIGGRAPH.ACM,2004:309-314.
[12]XU ZhouBo,GU TianLong,ZHAO LingZhong,等.An Augmenting-Path-Based Symbolic ADD Algorithm for Maximum Flow in Networks網(wǎng)絡(luò)最大流問題求解的符號ADD增廣路徑算法[J].計(jì)算機(jī)科學(xué),2005,32(10):38-40.
[13]Szeliski R,Shum H Y.Creating Full View Panoramic Image Mosaics and Texture-Mapped Models[J].ACM Siggraph Computer Graphics,1997.
[14]Cao J J,Feng J B,Su Z X.Panoramic Image Mosaic Algorithm[J].Journal of Dalian University of Technology,2003.
[15]El-Saban M,Izz M,Kaheel A.Fast Stitching of Videos Captured from Freely Moving Devices by Exploiting Temporal Redundancy[C].IEEE International Conference on Image Processing.IEEE,2010:1193-1196.