王 震 張博凱 王 靜 李 圣 鄭 宏
(武漢大學(xué)電子信息學(xué)院 湖北 武漢 430072)
(湖北省視覺感知與智能交通技術(shù)研發(fā)中心 湖北 武漢 430072)
?
基于CUDA的多相機實時高清視頻無縫拼接方法
王震張博凱王靜李圣鄭宏
(武漢大學(xué)電子信息學(xué)院湖北 武漢 430072)
(湖北省視覺感知與智能交通技術(shù)研發(fā)中心湖北 武漢 430072)
摘要為解決傳統(tǒng)CPU或GPU多相機視頻拼接方法難以兼顧實時性與視覺效果,提出一種基于統(tǒng)一設(shè)備架構(gòu)GUDA(Compute Unified Device Architecture)的實時無縫拼接方法。結(jié)合圖割算法預(yù)處理的靜態(tài)接縫掩模和圖像空間域融合算法解決了運動物體給拼接中接縫處帶來的視覺困擾,同時重點對透視變換、圖像融合等拼接步驟在CUDA實現(xiàn)中的優(yōu)化策略進行研究。實驗結(jié)果表明,該方法在4路1080p高清網(wǎng)絡(luò)相機實時拼接獲得超寬視野視頻的條件下,不僅相對CPU有較高的加速比,而且在不同計算性能和架構(gòu)的GPU上均滿足實時性要求并具備更好的視覺效果。
關(guān)鍵詞視頻拼接圖形處理器統(tǒng)一設(shè)備架構(gòu)
CUDA-BASED SEAMLESS STITCHING METHOD FOR MULTI-CAMERA REAL-TIME HD VIDEO
Wang ZhenZhang BokaiWang JingLi ShengZheng Hong
(School of Electronic Information,Wuhan University,Wuhan 430072,Hubei,China)(Hubei Research Center of Vision Perception and Intelligent Transportation Technology,Wuhan 430072,Hubei,China)
AbstractIn order to overcome the difficulty of traditional multi-camera video stitching method based on CPU or GPU in satisfying both the real-time performance and visual effect, this paper proposes a CUDA-based real-time seamless HD video stitching method. It solves the visual troubles caused by seams in stitching the moving objects by combining the static seam masks of Graphcut pre-treatment and the blending algorithm of image spatial domain, meanwhile puts the emphasis on studying the optimisation strategy of implementation of stitching procedures including perspective transform and image blending in CUDA. Experimental results demonstrate that under the condition of obtaining extra wide filed-of-view video by real-time stitching with four 1080 HD web cameras, the method achieves higher speedup ratio compared with CPU-based algorithm, and satisfies the real-time requirement on GPUs with different computing capability and architecture, and possesses better visual quality as well.
KeywordsVideo stitchingGPUCUDA
0引言
當(dāng)下視頻監(jiān)控系統(tǒng)中通過部署多個高清網(wǎng)絡(luò)攝像機來獲取更大的監(jiān)控范圍,但是多路視頻監(jiān)控存在信息冗余以及關(guān)聯(lián)性較差等問題,給對場景內(nèi)同一運動物體進行連續(xù)監(jiān)控帶來了一定困難。目前將多路具有重疊區(qū)域的視頻進行實時視頻拼接獲取具有超寬視野視頻是有效的解決辦法之一。近年來許多實時視頻拼接算法[1,3,6]應(yīng)運而生,也有VideoStitch[11]這種離線式視頻拼接軟件投入商用。但由于過大的計算量,僅僅使用CPU來進行高清視頻的實時拼接即使是在較為昂貴的高端CPU上也難以實現(xiàn)。
NVIDIA開發(fā)的GPU通用計算技術(shù)架構(gòu)CUDA[7]是一種基于單指令多線程SIMT(Single-Instruction, Multiple-Thread)的大規(guī)模并行計算模型。它以多層次網(wǎng)格為基礎(chǔ)調(diào)度大量GPU線程并行計算的特點與計算密集型的圖像處理算法相符,這意味將多路視頻拼接算法移植到GPU上是為滿足實時性要求的一種有效解決方法。國內(nèi)外學(xué)者針對GPU視頻拼接方法的研究也較為普遍,特別是Bagadus研究組針對足球場的特定視頻拼接系統(tǒng)展開了一系列深入研究[1,2],并對其視頻拼接算法在GPU與CPU上的性能表現(xiàn)進行了詳細地分析與對比。
相比圖像拼接,視頻拼接中運動物體更容易暴露接縫,并且圖像融合計算量較大。為保證視覺效果同時兼顧硬件設(shè)備的計算能力,文獻[2]中使用了基于CUDA的色彩糾正結(jié)合動態(tài)接縫的方法,文獻[3]中使用通用圖形處理硬件根據(jù)Alpha透明度通道進行融合渲染,在某些場景下這些方法是可行的。但是在運動物體密集,配準存在誤差等情況下這些方法都難以解決問題。本文針對多相機監(jiān)控的大范圍場景提出一種基于CUDA高效靈活的實時全高清視頻拼接方法。該方法使用圖割算法[8]預(yù)處理的靜態(tài)接縫掩模,將多路視頻投影到統(tǒng)一坐標軸上,同時結(jié)合空間域的圖像融合算法,解決了運動物體給接縫處帶來的視覺困擾,并提供了根據(jù)不同的視覺效果以及硬件計算性能最佳的無縫拼接方法,不僅滿足實時性要求而且具備良好的可擴展性。
1實時視頻拼接方法框架
1.1方法概觀
本文實時視頻拼接方法分為兩大模塊:實時視頻采集模塊和GPU實時拼接模塊。實時視頻采集設(shè)備由四路帶旋轉(zhuǎn)云臺的1080p高清網(wǎng)絡(luò)攝像機和固定設(shè)備組成(如圖1前端部分所示)。攝像機通過云臺安裝在位置相對固定的滑軌上,在確保相鄰相機有重疊區(qū)域的前提下,通過調(diào)整相機水平位置和旋轉(zhuǎn)角度來改變相機視野覆蓋區(qū)域。在2D拼接領(lǐng)域有一個達成共識的假設(shè),即拍攝場景離相機的距離要遠大于不同視點之間的距離。對文中設(shè)備而言,相機之間的距離遠小于覆蓋區(qū)域到相機安裝的距離才能將不同視角捕獲的視頻才能進行拼接。
圖1 多相機視頻捕獲裝置與視頻拼接框架
實時拼接所有的工作在一臺配備CPU、GPU以及SDI視頻采集卡的工作站上運行(如圖1所示)。攝像機捕獲的高清視頻數(shù)據(jù)通過網(wǎng)路傳送到視頻采集卡并轉(zhuǎn)換為RGB數(shù)據(jù),通過直接內(nèi)存存儲技術(shù)DMA以最高帶寬速度通過PCI-EXPRESS從CPU傳送至GPU的內(nèi)存。接著根據(jù)提前計算的拼接參數(shù)(即:單應(yīng)矩陣H)將視頻投影到統(tǒng)一的坐標軸上。然后根據(jù)GPU計算能力選擇合適的圖像融合方法結(jié)合對應(yīng)圖像掩模(mask)進行圖像融合。最后建立PBO(像素緩沖區(qū)對象)作為中間對象,使CUDA與OPENGL交互,將CUDA映射到PBO的超寬視野視頻數(shù)據(jù)高速地復(fù)制到OPENGL紋理進行繪制顯示??紤]到數(shù)據(jù)從CPU傳輸?shù)紾PU需要消耗一定時間會影響拼接效率,所以該方法在CPU-GPU異構(gòu)環(huán)境下由POSIX線程調(diào)度,利用其多線程和雙緩沖技術(shù)解決該問題。實時拼接由Pthread1和Pthread2兩個線程控制,Pthread1負責(zé)實時視頻流解碼及數(shù)據(jù)傳輸,GPU中的實時拼接由Pthread2負責(zé)控制,兩個線程異步并行執(zhí)行使數(shù)據(jù)傳輸和拼接計算重疊,以發(fā)揮最大效率。
1.2圖像處理的CUDA加速
許多圖像處理算法具有數(shù)據(jù)計算密集和運算高度獨立的特點。如圖像加權(quán)運算中逐像素進行權(quán)值加減,這種運算就完全符合CUDA的編程模型。CUDA將GPU抽象設(shè)備成一個巨大網(wǎng)格,并將網(wǎng)格分成若干個線程塊,線程塊由上千個線程組成,在CUDA函數(shù)中可以將每個線程對應(yīng)一個獨立像素進行處理,在SIMT指令模式下這種操作在網(wǎng)格滿載線程時可以發(fā)揮GPU的最強性能。在對圖像處理算法進行CUDA優(yōu)化時,可對不同的數(shù)據(jù)類型合理分配GPU內(nèi)部存儲器資源以及使用特定讀寫策略。如合并訪問來減少訪問延遲和提高計算效率,如手動控制共享內(nèi)存讀寫,特別是圖像分塊運算(如卷積,直方圖)等操作時可以將頻繁操作的數(shù)據(jù)存儲于共享內(nèi)存,從而減少對全局內(nèi)存的讀取次數(shù)以提高數(shù)據(jù)訪問效率。同時盡可能多地啟動線程將GPU網(wǎng)格充滿,充分利用帶寬增大并行度。本文結(jié)合GPU內(nèi)存訪問和存儲器結(jié)構(gòu)等相關(guān)優(yōu)化策略對實時拼接的CUDA實現(xiàn)進行了深入研究。
1.3投影模型與圖像配準
(1) 平面投影與自動配準
2D拼接常見的投影模型有:圓柱投影、球面投影、平面投影。不同的投影模型決定了最終視頻的顯示效果,前兩種方法可以獲得更大視角范圍,但是視頻中的直線在柱面或球面投影展開后會投影成曲線。根據(jù)文獻[9]中的定義,是從一個平面到另一個平面的線性變換關(guān)系。直線在該變換的映射(也稱透視變換)后仍為直線,為了使視頻中直線投影后保持筆直,所以本文實驗中采用基于單應(yīng)矩陣的平面投影方式,通過一組單應(yīng)矩陣將相機的視頻投影到統(tǒng)一的平面坐標系上,設(shè)Hi對應(yīng)第i個相機的單應(yīng)矩陣,定義如下:
(1)
其中,Hi是一個3×3的矩陣具有八個自由度參數(shù)[9],通過改變這幾個參數(shù)可以實現(xiàn)2D平面上任意平移、旋轉(zhuǎn)、仿射、透視變換。
假設(shè)pi=[xiyi1]T,pf=[xfyf1]T分別為第i個相機的圖片與拼接投影面在齊次坐標系[9]下的對應(yīng)點,Pi到Pf的變換關(guān)系如下所示:
pf=Hipi
(2)
那么xf,yf分別表示為:
(3)
(4)
由于使用高清相機位置相對固定無需每幀計算拼接參數(shù),因此實時拼接啟動前需根據(jù)樣本幀進行配準計算出對應(yīng)各個相機的單應(yīng)矩陣與拼接掩模。文獻[4]提出了根據(jù)SIFT特征全自動拼接方法,該方法具有良好的魯棒性。而通過SIFT特征來進行多幅圖像匹配在監(jiān)控場景有一定弊端,在文獻[18]中給出了SIFT、PCA-SIFT、SURF等三種常用特征描述子的比較。在速度和亮度變化上SIFT為三者最差,而監(jiān)控應(yīng)用中可能會因為不同攝像機型號或者捕獲區(qū)域光線照射角度造成相鄰兩幅圖片存在一定亮度差異,SURF在亮度上是三者中表現(xiàn)最好同時具備更快的速度,因此文中圖像自動配準中的匹配特征選用SURF。結(jié)合視頻監(jiān)控系統(tǒng)特點,圖像配準具體步驟如下:
① 輸入樣本幀,對每幅樣本圖片計算SURF特征。
② 根據(jù)K-D[14]樹算法對相鄰的兩幅圖片特征點匹配搜索,接著使用隨機抽樣一致性算法[15](RANSAC)進行聚類刪除錯誤匹配點獲取精匹配點,然后通過精匹配點計算出一組單應(yīng)矩陣和相機內(nèi)外參數(shù)。
③ 使用綁定調(diào)整器[16]對每組相機內(nèi)外參數(shù)進行綁定調(diào)整獲得一組優(yōu)化過的單應(yīng)矩陣,對應(yīng)每個相機與拼接統(tǒng)一坐標軸的透視變換關(guān)系。
④ 根據(jù)優(yōu)化后單應(yīng)矩陣確定相鄰兩幅圖片的重疊區(qū)域,利用圖割算法對重疊區(qū)域進行分割生成不規(guī)則接縫將拼接掩模分為前景區(qū)域(拼接區(qū)域)與背景區(qū)域(非拼接區(qū)域)。
(2) 平面投影的CUDA并行設(shè)計
算法1RGBA透視變換操作CUDA核函數(shù)
cudaBindTextureToArray(tex,RGBA_array)?將RGBA數(shù)據(jù)與紋理綁定
dx←blockIdx.x*blockDim.x+threadIdx.x?拼接目標圖像列坐標索引
dy←blockIdx.x*blockDim.y+threadIdx.y?拼接目標圖像行坐標索引
deno=h31*dx+h32*dy+1?歸一化系數(shù)(公式(3,4)中分母)
sx=(h11*dx+h12*dy+h13)/deno?輸入視頻圖像列坐標索引
sy=(h21*dx+h22*dy+h23)/deno?輸入視頻圖像行坐標索引
dst(dy,dx)=tex2D(tex,float(sx),float(sy))?將像索值存入拼接目標圖像的全局內(nèi)存
cudaUnbindTexture(tex)?解綁紋理
1.4無縫融合的CUDA并行設(shè)計
前文中提到2D圖像拼接中的前提條件,但是實際應(yīng)用中并不可能完全滿足理想情況,必然會產(chǎn)生由視差引起接縫周圍的拼接痕跡。除此之外,配準偏差,接縫附近運動物體的鬼影等干擾均普遍存在。特別在視頻拼接中運動物體位置頻繁變化,拼接痕跡更容易被暴露影響視覺效果。Bagadus[1]使用色彩糾正和動態(tài)接縫來處理這些問題,但是如果拼接中重疊區(qū)域運動物體情況復(fù)雜,更新接縫并不是一個有效可行的辦法甚至?xí)?dǎo)致接縫的不停閃動。而其他的一些實時視頻拼接算法為了減少運算量,使用Alpha透明度通道渲染或平均加權(quán)法,會導(dǎo)致嚴重的重影或視覺上的不協(xié)調(diào)。本文在相鄰兩個相機配準誤差較小的情況下,使用圖割法獲得接縫生成靜態(tài)掩模,結(jié)合下文所介紹圖像的無縫融合技術(shù)很大程度上消除了運動物體穿過固定接縫給視覺效果帶來的影響。下文深入研究了羽化融合和多波段融合在CUDA上的實現(xiàn)和性能優(yōu)化。
(1) 羽化融合的CUDA并行設(shè)計
羽化是一種基于空間域加權(quán)的融合方法,拼接中的加權(quán)融合一般使用線性加權(quán)函數(shù)對相鄰兩幅圖像重合區(qū)域像素分別賦予不同權(quán)值進行求和獲得最后拼接圖的對應(yīng)像素值。本文使用圖割法生成接縫,二值圖掩模上直觀反應(yīng)只有目標像素(像素值為255)和背景像素(像素值為0),因此不存在像素重合的情況,結(jié)合上述情況采用距離變換[10,17]來生成權(quán)值圖。權(quán)值由每個目標像素與其最近的背景像素的歐式距離來確定,即目標像素離接縫邊緣的最近距離,使離接縫越近權(quán)重越低從而達到模糊的效果。即掩模中像素M(p)的距離權(quán)值圖可表示為:
(5)
圖2 CUDA實現(xiàn)羽化融合的步驟
式中,最近距離min(d(p,p0))表示M(p0)為當(dāng)M(p)是目標像素時距離最近的背景像素。得到直接由距離變換獲得權(quán)值wd(p),將其歸一化到[0,1]之間獲得最終的權(quán)值圖w(p)。由于使用靜態(tài)掩模,如圖2所示權(quán)值圖提前在CPU計算再傳入GPU,一方面避免重復(fù)計算,另一方面距離變換包含大量的判斷指令會造成線程束中產(chǎn)生diverge[7](分歧),所以并不適合CUDA實現(xiàn)。最后,在GPU中進行逐像素加權(quán)運算對像素每個色彩分量進行求和與歸一化操作并將其映射到拼接視頻上,該操作可表示為:
(6)
其中,Ii與wi分別對應(yīng)第i個相機實時圖片與權(quán)值圖,p為圖片上單個像素(RGB或RGBA)。式(6)屬于逐像素的重復(fù)密集型運算與CUDA的編程模型完全相符,可以很容易實現(xiàn)加速。羽化融合在CUDA上的實現(xiàn)步驟如下所示:
算法2羽化中的加權(quán)與歸一化操作CUDA核函數(shù)
sx←blockIdx.x*blockDim.x+threadIdx.x?圖像列坐標索引
sy←blockIdx.y*blockDim.y+threadIdx.y?圖像行坐標索引
對圖像中每一點進行加權(quán)操作
forallpintheconrespondingpicturedo
Ii(p(sy,sx)R)+=wi(p′(sy,sx));?對R通道加權(quán)
Ii(p(sy,sx)G)+=wi(p′(sy,sx));?對G通道加權(quán)
Ii(p(sy,sx)B)+=wi(p′(sy,sx));?對B通道加權(quán)
end for
對圖像中的每一點進行歸一化操作
forallpintheconrespondingpicturedo
Ii(p(sy,sx)R)=wi(p(sy,sx));?對R通道歸一化
Ii(p(sy,sx)G)=wi(p(sy,sx));?對G通道歸一化
Ii(p(sy,sx)B)=wi(p(sy,sx));?對B通道歸一化
end for
(2) 多波段融合的CUDA并行設(shè)計
在大多數(shù)情況下羽化的效果足以滿足監(jiān)控系統(tǒng)基本的視覺要求。但是通過空間權(quán)重來模糊接縫遠達不到最理想的視覺效果,因為這種方法難以兼顧亮度差異與細節(jié)模糊。文獻[5]提出基于拉普拉斯金字塔的多波段融合算法有效地解決了此問題,大幅度提高了拼接視頻的視覺效果。拉普拉斯金字塔是通過對相鄰兩層的高斯金字塔差分將原圖分解成多層不同分辨率,不同尺度(即不同頻帶)的子圖。這些子圖構(gòu)成了帶通濾波金字塔,然后分別對高低頻帶的子圖平滑加權(quán),最后將子圖融合(重構(gòu)金字塔),這樣同時兼顧了高頻信息(局部細節(jié))和低頻信息(光照),最后金字塔的第0層即為融合完成的圖像。
圖3中高斯金字塔的第0層是已經(jīng)做過透視變換的視頻幀,隨后一層的圖像分辨率是前一層的四分之一(圖像寬高分別縮小一倍)。從高分辨率向低分辨率處理叫作Reduce,相反從低分辨率向高分辨操作叫作Expand,這兩個操作復(fù)雜度較高并貫穿整個過程,因此是CUDA實現(xiàn)圖像金字塔的關(guān)鍵。
圖3 CUDA構(gòu)造拉普拉斯金字塔的步驟
Reduce運算在空間域的表達如下:
(7)
算法3REDUCE操作CUDA核函數(shù)
1:sx←blockIdx.x*blockDim.x+threadIdx.x?進行垂直方向卷積使第l-1層圖像列坐標索引
2:sy←2*blockIdx.y?進行垂直方向卷積第l-1層圖像行坐標索引
3:dy←blockIdx.y?第l層的行坐標索引
5:_syncthreads( )?線程塊內(nèi)部線程同步確保卷積中間結(jié)果全部存入共享內(nèi)存
6:ifthreadIdx.x 7:dx←(blockIdx.x*blockDim.x+2*threadIdx.x)/2?第l-1層列坐標索引 9:end if 與Reduce相反,Expand運算在空間域的定義如下: (8) 其中只有當(dāng)i-m,j-n這兩項為偶數(shù)才能被2整除作為行列索引。Gl,k是對Gl層做k次Expand操作的結(jié)果。Expand操作的CUDA步驟如下所示: 算法4EXPAND操作CUDA核函數(shù) 1:dx←blockIdx.x*blockDim.x+threadIdx.x?第k+1次EXPAND操作結(jié)果的圖像列坐標索引 2:dy←blockIdx.y*blockDim.y+threakIdx.y?第k+1次EXPAND操作結(jié)果的圖像行坐標索引 3:sharedmem1←Gl,k+1(dy/2,dx/2)?根據(jù)坐標關(guān)系將第k次EXPAND操作結(jié)果圖像存入共享以進行卷積運算 4:_syncthreads( )?線程塊內(nèi)部線程同步確保上述賦值全部完成 5:以下判斷確保threadIdx.y為偶數(shù)可以被2整除才能使threadIdx.y/2做為圖像卷積的坐標索引(參考公式(8)中行列索引定義) 6:ifthreadIdx.y is eventhen 8:endif 9:_syncthreads( )?線程塊內(nèi)部線程同步確保水平方向卷積的中間結(jié)果全部存入共享內(nèi)存 為盡可能減少計算量,圖3中對掩模向下進行高斯卷積(REDUCE)構(gòu)造高斯金字塔僅在拼接初始幀進行,生成的每一層高斯權(quán)重圖分別對拉普拉斯金字塔對應(yīng)層做羽化操作(羽化的CUDA實現(xiàn)見上一小節(jié))。 2實驗結(jié)果及分析 2.1硬件配置與實驗平臺 為驗證與研究視頻拼接性能表現(xiàn),分別在CPU與GPU上對4路1080p高清視頻獲得760萬像素超寬視野視頻的拼接過程進行了性能對比。實驗中使用了三塊不同架構(gòu)的NVIDIA GPU(如表1所示)來驗證加速效果。為保證GPU的性能不被其他硬件條件影響,它們均在同一臺服CPU型號為Intel(R) Xeon(R) CPU E3-1230服務(wù)器上運行,同時該CPU作為性能對比計算的CPU。實驗運行的軟件環(huán)境為CUDA6.0[7]。 表1 測試GPU硬件參數(shù)一覽 續(xù)表1 2.2性能測試與分析 (1) 透視變換在CPU與CUDA上實現(xiàn)的性能比較 表2中的實驗結(jié)果表明透視變換在三種不同架構(gòu)的GPU上的實現(xiàn)相對于CPU加速了10倍以上。而從RGB與RGBA在GPU上的性能對比可知,使用RGBA進行合并內(nèi)存訪問相對RGB未對齊訪問在不同的GPU上減少了25%~30%運算時間。 表2 透視變換在CPU與GPU實現(xiàn)的性能比較(時間單位:ms) (2) 圖像融合在CPU 與CUDA 上實現(xiàn)的效果和性能對比 表3給出了羽化與多波段(構(gòu)造五層拉普拉斯金字塔)在CPU與GPU上實現(xiàn)的性能對比。因為羽化計算對CUDA編程更加友好,其加速比明顯高于多波段融合。與透視變換相反,特別在多波段融合的CUDA實現(xiàn)中,使用RGBA的性能較RGB下降度較大,為了提高內(nèi)存讀取效率,使用共享內(nèi)存存放中間結(jié)果。但是每個多流處理器中最多僅包含64 KB的共享內(nèi)存與一定數(shù)量的寄存器,那么共享內(nèi)存與寄存器容量無法滿足當(dāng)前活動線程的請求。因此一部分線程處于等待狀態(tài)導(dǎo)致并行度降低,RGBA在內(nèi)存中比RGB多出三分之一的容量,并行度必然要小于使用RGB存儲格式來進行融合。圖4中是兩組人同時穿過接縫的情況下不同融合方法的接縫處效果,該接縫由一組隨機樣本幀使用圖割法獲得。(a)中靠上的黑衣男子頭部在經(jīng)過接縫時中出現(xiàn)明顯的錯位現(xiàn)象,相對于(a),(c)使用五層拉普拉斯金字塔融合后接縫痕跡與色差幾乎消失。(b)中羽化融合對接縫處做了一定的模糊處理,接縫穿過人的不自然效果幾乎消失,但兩側(cè)依然存在較明顯的亮度差異。 表3 圖像融合在CPU與GPU上實現(xiàn)的性能對比(時間單位:ms) 圖4 相同場景下不同融合方法與無融合接縫視覺效果對比 (3) 與開源拼接軟件的性能比較 本文選取OpenCV中Stitching模塊進行比較,相比于其他拼接軟件,OpenCV開放源碼便于修改接口和計算時間,并且包含部分CUDA加速。表4中給出了4路1080p視頻拼接分別使用OpenCV、CPU以及CUDA(使用GTX780顯卡)實現(xiàn)所用的時間。從直接拼接與羽化拼接可知,文中方法在CPU上的實現(xiàn)就已經(jīng)接近甚至超過包含部分CUDA加速的OpenCV中的方法,足以證明文中方法的高效性。 表4 文中方法與OpenCV中拼接模塊的性能比較 (4) 實時多路高清視頻拼接總體性能分析 由于CPU與GPU之間的傳輸使用雙緩沖和多流異步傳輸技術(shù),因此傳輸所消耗的時間與GPU計算重疊并不計算在總時間內(nèi)。表5為在完整拼接流程在CPU上和GPU上實現(xiàn)的性能比較,結(jié)果表明GPU相對于CPU有9~15倍以上的加速。 表5 視頻拼接在CPU與CUDA上實現(xiàn)的總用時與加速比(時間單位:ms) 表1中可知最新架構(gòu)的GTX750具備較高的時鐘頻率,但是多流處理器的數(shù)量遠少于其他型號使常駐線程數(shù)量大量減少。此影響突出體現(xiàn)在直接拼接和羽化融合這兩種純逐像素級別運算的方法,盡管GTX750可以分別達到90 fps和45 fps的拼接速率,但是運算效率大幅度落后其他兩塊顯卡。從整體視覺效果上對比來看,圖5(b)中基于距離圖的羽化融合大體上并沒有出現(xiàn)比較嚴重的拼接痕跡,在保證拼接速度的情況下,基本符合視頻監(jiān)控的基本要求。而圖5(c)中多波段融合保證了良好的視覺效果但表5中的結(jié)果表明它過多的犧牲了性能。此時由于GPU片上內(nèi)存資源有限通過RGBA在保證字節(jié)對齊來使用RGB格式時,僅GTX780可以完全滿足實時性,GTX480可達到23 fps拼接效率勉強滿足實時性。 圖5 (a)從4路1080p高清網(wǎng)絡(luò)相機獲取的圖片(順序由左自右)(b)、(c)、(d)分別為直接拼接,羽化,多波段融合輸出效果(已剪裁掉部分黑邊),明顯接縫處在圖中用白框表示 圖6給出隨著分辨率的增長(600到1000萬像素)不同方法的性能增長曲線??芍苯悠唇优c羽化的性能曲線隨著分辨率的增長變化非常微弱,即使達到1000萬像素,在多流處理器數(shù)量較多的GTX780、GTX480上拼接速度僅僅下降了10%左右,GTX750也可以保持35 fps拼接速度。但分辨率的增長意味更多的線程同步以及硬件資源有限帶來并行度下降,千萬像素輸出分辨率的多波段融合僅在性能最強大GTX780上可以達到20 fps的拼接幀率。不過總體來看,實時拼接的總時間的增長率僅為輸出視頻分辨增長幅度的二分之一或者更小。表明隨著相機路數(shù)的增加同時獲取更高分辨率的寬視野視頻,使用文中的實時拼接方法可以大幅度地提高計算效率比。 圖6 在三種不同型號GPU上不同分辨率的視頻拼接性能比較 3結(jié)語 本文提出了一種使用多相機獲取多路高清視頻進行實時拼接的方法。針對透視變換、圖像融合等運算量較大的算法在NVIDIA GPU上的并行優(yōu)化進行了研究。實驗結(jié)果表明,該方法可根據(jù)GPU性能指標選取最高效的融合方法,同時可選擇性地封裝對CUDA計算友好的數(shù)據(jù)存儲格式,即保證了視覺效果,又在不同架構(gòu)和計算性能的GPU上均可滿足實時性要求。后續(xù)工作將圍繞本文方法在多GPU上得移植以滿足更多路高清相機拼接獲取360度超高清全景視頻的要求。 參考文獻 [1] Stensland H K,Gaddam V R,Tennφe M,et al.Bagadus:An integrated real-time system for soccer analytics[J].ACM Transactions on Multimedia Computing Communications and Applications,2014,10(1s):7. [2] Stensland H K,Gaddam V R,Tennφe M,et al.Processing Panorama Video in Real-time[J].International Journal of Semantic Computing,2014,8(2):209-227. [3] Tang W K,Wong T T,Heng P A.A system for real-time panorama generation and display in tele-immersive applications[J].Multimedia,IEEE Transactions on,2005,7(2):280-292. [4] Brown M,Lowe D G.Automatic panoramic image stitching using invariant features[J].International journal of computer vision,2007,74(1):59-73. [5] Burt P J,Adelson E H.A multiresolution spline with application to image mosaics[J].ACM Transactions on Graphics,1983,2(4):217-236. [6] Xu W,Mulligan J.Panoramic video stitching from commodity HDTV cameras[J].Multimedia systems,2013,19(5):407-426. [7] Nvidia Corporation.CUDA Programming Guide Version 6.0[EB/OL].2014.http://www.nvidia.com/object/cuda_home_new.html. [8] Kwatra V,Sch?dl A,Essa I,et al.Graphcut textures:image and video synthesis using graph cuts[J].ACM Transactions on Graphics.ACM,2003,22(3):277-286. [9] Hartley R,Zisserman A.Multiple view geometry in computer vision[M].Cambridge university press,2003. [10] Shih F Y,Wu Y T.Fast Euclidean distance transformation in two scans using a 3×3 neighborhood[J].Computer Vision and Image Understanding,2004,93(2):195-205. [11] The roots of Storymix Media.VideoStitch Studio V2[EB/OL].2014.http://www.videostitch.com/. [12] New House Internet Services B.V.PTGui Pro[EB/OL].2014.http://www.ptgui.com. [13] Andrew M,Bruno P,dangelo,et al.Hugin:Panorama photo stitcher[EB/OL].2014.http://hugin.sourceforge.net. [14] Bentley J L.Multidimensional divide-and-conquer[J].Communications of the ACM,1980,23(4):214-229. [15] Fischler M A,Bolles R C.Random sample consensus:a paradigm for model fitting with applications to image analysis and automated cartography[J].Communications of the ACM,1981,24(6):381-395. [16] Triggs B,McLauchlan P F,Hartley R I,et al.Bundle adjustment—a modern synthesis[M].Vision algorithms: theory and practice.Springer Berlin Heidelberg,2000:298-372. [17] 宋寶森.全景圖像拼接方法研究與實現(xiàn)[D].哈爾濱工程大學(xué),2012. [18] Juan L,Gwun O.A comparison of sift,pca-sift and surf[J].International Journal of Image Processing,2009,3(4):143-152. 中圖分類號TP3 文獻標識碼A DOI:10.3969/j.issn.1000-386x.2016.02.030 收稿日期:2015-02-12。國家重點基礎(chǔ)研究發(fā)展計劃專項基金項目(2012CB719905)。王震,碩士生,主研領(lǐng)域:計算機視覺。張博凱,本科生。王靜,碩士生。李圣,碩士生。鄭宏,教授。