王 震 張博凱 王 靜 李 圣 鄭 宏
(武漢大學(xué)電子信息學(xué)院 湖北 武漢 430072)
(湖北省視覺(jué)感知與智能交通技術(shù)研發(fā)中心 湖北 武漢 430072)
?
基于CUDA的多相機(jī)實(shí)時(shí)高清視頻無(wú)縫拼接方法
王震張博凱王靜李圣鄭宏
(武漢大學(xué)電子信息學(xué)院湖北 武漢 430072)
(湖北省視覺(jué)感知與智能交通技術(shù)研發(fā)中心湖北 武漢 430072)
摘要為解決傳統(tǒng)CPU或GPU多相機(jī)視頻拼接方法難以兼顧實(shí)時(shí)性與視覺(jué)效果,提出一種基于統(tǒng)一設(shè)備架構(gòu)GUDA(Compute Unified Device Architecture)的實(shí)時(shí)無(wú)縫拼接方法。結(jié)合圖割算法預(yù)處理的靜態(tài)接縫掩模和圖像空間域融合算法解決了運(yùn)動(dòng)物體給拼接中接縫處帶來(lái)的視覺(jué)困擾,同時(shí)重點(diǎn)對(duì)透視變換、圖像融合等拼接步驟在CUDA實(shí)現(xiàn)中的優(yōu)化策略進(jìn)行研究。實(shí)驗(yàn)結(jié)果表明,該方法在4路1080p高清網(wǎng)絡(luò)相機(jī)實(shí)時(shí)拼接獲得超寬視野視頻的條件下,不僅相對(duì)CPU有較高的加速比,而且在不同計(jì)算性能和架構(gòu)的GPU上均滿足實(shí)時(shí)性要求并具備更好的視覺(jué)效果。
關(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)中通過(guò)部署多個(gè)高清網(wǎng)絡(luò)攝像機(jī)來(lái)獲取更大的監(jiān)控范圍,但是多路視頻監(jiān)控存在信息冗余以及關(guān)聯(lián)性較差等問(wèn)題,給對(duì)場(chǎng)景內(nèi)同一運(yùn)動(dòng)物體進(jìn)行連續(xù)監(jiān)控帶來(lái)了一定困難。目前將多路具有重疊區(qū)域的視頻進(jìn)行實(shí)時(shí)視頻拼接獲取具有超寬視野視頻是有效的解決辦法之一。近年來(lái)許多實(shí)時(shí)視頻拼接算法[1,3,6]應(yīng)運(yùn)而生,也有VideoStitch[11]這種離線式視頻拼接軟件投入商用。但由于過(guò)大的計(jì)算量,僅僅使用CPU來(lái)進(jìn)行高清視頻的實(shí)時(shí)拼接即使是在較為昂貴的高端CPU上也難以實(shí)現(xiàn)。
NVIDIA開發(fā)的GPU通用計(jì)算技術(shù)架構(gòu)CUDA[7]是一種基于單指令多線程SIMT(Single-Instruction, Multiple-Thread)的大規(guī)模并行計(jì)算模型。它以多層次網(wǎng)格為基礎(chǔ)調(diào)度大量GPU線程并行計(jì)算的特點(diǎn)與計(jì)算密集型的圖像處理算法相符,這意味將多路視頻拼接算法移植到GPU上是為滿足實(shí)時(shí)性要求的一種有效解決方法。國(guó)內(nèi)外學(xué)者針對(duì)GPU視頻拼接方法的研究也較為普遍,特別是Bagadus研究組針對(duì)足球場(chǎng)的特定視頻拼接系統(tǒng)展開了一系列深入研究[1,2],并對(duì)其視頻拼接算法在GPU與CPU上的性能表現(xiàn)進(jìn)行了詳細(xì)地分析與對(duì)比。
相比圖像拼接,視頻拼接中運(yùn)動(dòng)物體更容易暴露接縫,并且圖像融合計(jì)算量較大。為保證視覺(jué)效果同時(shí)兼顧硬件設(shè)備的計(jì)算能力,文獻(xiàn)[2]中使用了基于CUDA的色彩糾正結(jié)合動(dòng)態(tài)接縫的方法,文獻(xiàn)[3]中使用通用圖形處理硬件根據(jù)Alpha透明度通道進(jìn)行融合渲染,在某些場(chǎng)景下這些方法是可行的。但是在運(yùn)動(dòng)物體密集,配準(zhǔn)存在誤差等情況下這些方法都難以解決問(wèn)題。本文針對(duì)多相機(jī)監(jiān)控的大范圍場(chǎng)景提出一種基于CUDA高效靈活的實(shí)時(shí)全高清視頻拼接方法。該方法使用圖割算法[8]預(yù)處理的靜態(tài)接縫掩模,將多路視頻投影到統(tǒng)一坐標(biāo)軸上,同時(shí)結(jié)合空間域的圖像融合算法,解決了運(yùn)動(dòng)物體給接縫處帶來(lái)的視覺(jué)困擾,并提供了根據(jù)不同的視覺(jué)效果以及硬件計(jì)算性能最佳的無(wú)縫拼接方法,不僅滿足實(shí)時(shí)性要求而且具備良好的可擴(kuò)展性。
1實(shí)時(shí)視頻拼接方法框架
1.1方法概觀
本文實(shí)時(shí)視頻拼接方法分為兩大模塊:實(shí)時(shí)視頻采集模塊和GPU實(shí)時(shí)拼接模塊。實(shí)時(shí)視頻采集設(shè)備由四路帶旋轉(zhuǎn)云臺(tái)的1080p高清網(wǎng)絡(luò)攝像機(jī)和固定設(shè)備組成(如圖1前端部分所示)。攝像機(jī)通過(guò)云臺(tái)安裝在位置相對(duì)固定的滑軌上,在確保相鄰相機(jī)有重疊區(qū)域的前提下,通過(guò)調(diào)整相機(jī)水平位置和旋轉(zhuǎn)角度來(lái)改變相機(jī)視野覆蓋區(qū)域。在2D拼接領(lǐng)域有一個(gè)達(dá)成共識(shí)的假設(shè),即拍攝場(chǎng)景離相機(jī)的距離要遠(yuǎn)大于不同視點(diǎn)之間的距離。對(duì)文中設(shè)備而言,相機(jī)之間的距離遠(yuǎn)小于覆蓋區(qū)域到相機(jī)安裝的距離才能將不同視角捕獲的視頻才能進(jìn)行拼接。
圖1 多相機(jī)視頻捕獲裝置與視頻拼接框架
實(shí)時(shí)拼接所有的工作在一臺(tái)配備CPU、GPU以及SDI視頻采集卡的工作站上運(yùn)行(如圖1所示)。攝像機(jī)捕獲的高清視頻數(shù)據(jù)通過(guò)網(wǎng)路傳送到視頻采集卡并轉(zhuǎn)換為RGB數(shù)據(jù),通過(guò)直接內(nèi)存存儲(chǔ)技術(shù)DMA以最高帶寬速度通過(guò)PCI-EXPRESS從CPU傳送至GPU的內(nèi)存。接著根據(jù)提前計(jì)算的拼接參數(shù)(即:?jiǎn)螒?yīng)矩陣H)將視頻投影到統(tǒng)一的坐標(biāo)軸上。然后根據(jù)GPU計(jì)算能力選擇合適的圖像融合方法結(jié)合對(duì)應(yīng)圖像掩模(mask)進(jìn)行圖像融合。最后建立PBO(像素緩沖區(qū)對(duì)象)作為中間對(duì)象,使CUDA與OPENGL交互,將CUDA映射到PBO的超寬視野視頻數(shù)據(jù)高速地復(fù)制到OPENGL紋理進(jìn)行繪制顯示??紤]到數(shù)據(jù)從CPU傳輸?shù)紾PU需要消耗一定時(shí)間會(huì)影響拼接效率,所以該方法在CPU-GPU異構(gòu)環(huán)境下由POSIX線程調(diào)度,利用其多線程和雙緩沖技術(shù)解決該問(wèn)題。實(shí)時(shí)拼接由Pthread1和Pthread2兩個(gè)線程控制,Pthread1負(fù)責(zé)實(shí)時(shí)視頻流解碼及數(shù)據(jù)傳輸,GPU中的實(shí)時(shí)拼接由Pthread2負(fù)責(zé)控制,兩個(gè)線程異步并行執(zhí)行使數(shù)據(jù)傳輸和拼接計(jì)算重疊,以發(fā)揮最大效率。
1.2圖像處理的CUDA加速
許多圖像處理算法具有數(shù)據(jù)計(jì)算密集和運(yùn)算高度獨(dú)立的特點(diǎn)。如圖像加權(quán)運(yùn)算中逐像素進(jìn)行權(quán)值加減,這種運(yùn)算就完全符合CUDA的編程模型。CUDA將GPU抽象設(shè)備成一個(gè)巨大網(wǎng)格,并將網(wǎng)格分成若干個(gè)線程塊,線程塊由上千個(gè)線程組成,在CUDA函數(shù)中可以將每個(gè)線程對(duì)應(yīng)一個(gè)獨(dú)立像素進(jìn)行處理,在SIMT指令模式下這種操作在網(wǎng)格滿載線程時(shí)可以發(fā)揮GPU的最強(qiáng)性能。在對(duì)圖像處理算法進(jìn)行CUDA優(yōu)化時(shí),可對(duì)不同的數(shù)據(jù)類型合理分配GPU內(nèi)部存儲(chǔ)器資源以及使用特定讀寫策略。如合并訪問(wèn)來(lái)減少訪問(wèn)延遲和提高計(jì)算效率,如手動(dòng)控制共享內(nèi)存讀寫,特別是圖像分塊運(yùn)算(如卷積,直方圖)等操作時(shí)可以將頻繁操作的數(shù)據(jù)存儲(chǔ)于共享內(nèi)存,從而減少對(duì)全局內(nèi)存的讀取次數(shù)以提高數(shù)據(jù)訪問(wèn)效率。同時(shí)盡可能多地啟動(dòng)線程將GPU網(wǎng)格充滿,充分利用帶寬增大并行度。本文結(jié)合GPU內(nèi)存訪問(wèn)和存儲(chǔ)器結(jié)構(gòu)等相關(guān)優(yōu)化策略對(duì)實(shí)時(shí)拼接的CUDA實(shí)現(xiàn)進(jìn)行了深入研究。
1.3投影模型與圖像配準(zhǔn)
(1) 平面投影與自動(dòng)配準(zhǔn)
2D拼接常見的投影模型有:圓柱投影、球面投影、平面投影。不同的投影模型決定了最終視頻的顯示效果,前兩種方法可以獲得更大視角范圍,但是視頻中的直線在柱面或球面投影展開后會(huì)投影成曲線。根據(jù)文獻(xiàn)[9]中的定義,是從一個(gè)平面到另一個(gè)平面的線性變換關(guān)系。直線在該變換的映射(也稱透視變換)后仍為直線,為了使視頻中直線投影后保持筆直,所以本文實(shí)驗(yàn)中采用基于單應(yīng)矩陣的平面投影方式,通過(guò)一組單應(yīng)矩陣將相機(jī)的視頻投影到統(tǒng)一的平面坐標(biāo)系上,設(shè)Hi對(duì)應(yīng)第i個(gè)相機(jī)的單應(yīng)矩陣,定義如下:
(1)
其中,Hi是一個(gè)3×3的矩陣具有八個(gè)自由度參數(shù)[9],通過(guò)改變這幾個(gè)參數(shù)可以實(shí)現(xiàn)2D平面上任意平移、旋轉(zhuǎn)、仿射、透視變換。
假設(shè)pi=[xiyi1]T,pf=[xfyf1]T分別為第i個(gè)相機(jī)的圖片與拼接投影面在齊次坐標(biāo)系[9]下的對(duì)應(yīng)點(diǎn),Pi到Pf的變換關(guān)系如下所示:
pf=Hipi
(2)
那么xf,yf分別表示為:
(3)
(4)
由于使用高清相機(jī)位置相對(duì)固定無(wú)需每幀計(jì)算拼接參數(shù),因此實(shí)時(shí)拼接啟動(dòng)前需根據(jù)樣本幀進(jìn)行配準(zhǔn)計(jì)算出對(duì)應(yīng)各個(gè)相機(jī)的單應(yīng)矩陣與拼接掩模。文獻(xiàn)[4]提出了根據(jù)SIFT特征全自動(dòng)拼接方法,該方法具有良好的魯棒性。而通過(guò)SIFT特征來(lái)進(jìn)行多幅圖像匹配在監(jiān)控場(chǎng)景有一定弊端,在文獻(xiàn)[18]中給出了SIFT、PCA-SIFT、SURF等三種常用特征描述子的比較。在速度和亮度變化上SIFT為三者最差,而監(jiān)控應(yīng)用中可能會(huì)因?yàn)椴煌瑪z像機(jī)型號(hào)或者捕獲區(qū)域光線照射角度造成相鄰兩幅圖片存在一定亮度差異,SURF在亮度上是三者中表現(xiàn)最好同時(shí)具備更快的速度,因此文中圖像自動(dòng)配準(zhǔn)中的匹配特征選用SURF。結(jié)合視頻監(jiān)控系統(tǒng)特點(diǎn),圖像配準(zhǔn)具體步驟如下:
① 輸入樣本幀,對(duì)每幅樣本圖片計(jì)算SURF特征。
② 根據(jù)K-D[14]樹算法對(duì)相鄰的兩幅圖片特征點(diǎn)匹配搜索,接著使用隨機(jī)抽樣一致性算法[15](RANSAC)進(jìn)行聚類刪除錯(cuò)誤匹配點(diǎn)獲取精匹配點(diǎn),然后通過(guò)精匹配點(diǎn)計(jì)算出一組單應(yīng)矩陣和相機(jī)內(nèi)外參數(shù)。
③ 使用綁定調(diào)整器[16]對(duì)每組相機(jī)內(nèi)外參數(shù)進(jìn)行綁定調(diào)整獲得一組優(yōu)化過(guò)的單應(yīng)矩陣,對(duì)應(yīng)每個(gè)相機(jī)與拼接統(tǒng)一坐標(biāo)軸的透視變換關(guān)系。
④ 根據(jù)優(yōu)化后單應(yīng)矩陣確定相鄰兩幅圖片的重疊區(qū)域,利用圖割算法對(duì)重疊區(qū)域進(jìn)行分割生成不規(guī)則接縫將拼接掩模分為前景區(qū)域(拼接區(qū)域)與背景區(qū)域(非拼接區(qū)域)。
(2) 平面投影的CUDA并行設(shè)計(jì)
算法1RGBA透視變換操作CUDA核函數(shù)
cudaBindTextureToArray(tex,RGBA_array)?將RGBA數(shù)據(jù)與紋理綁定
dx←blockIdx.x*blockDim.x+threadIdx.x?拼接目標(biāo)圖像列坐標(biāo)索引
dy←blockIdx.x*blockDim.y+threadIdx.y?拼接目標(biāo)圖像行坐標(biāo)索引
deno=h31*dx+h32*dy+1?歸一化系數(shù)(公式(3,4)中分母)
sx=(h11*dx+h12*dy+h13)/deno?輸入視頻圖像列坐標(biāo)索引
sy=(h21*dx+h22*dy+h23)/deno?輸入視頻圖像行坐標(biāo)索引
dst(dy,dx)=tex2D(tex,float(sx),float(sy))?將像索值存入拼接目標(biāo)圖像的全局內(nèi)存
cudaUnbindTexture(tex)?解綁紋理
1.4無(wú)縫融合的CUDA并行設(shè)計(jì)
前文中提到2D圖像拼接中的前提條件,但是實(shí)際應(yīng)用中并不可能完全滿足理想情況,必然會(huì)產(chǎn)生由視差引起接縫周圍的拼接痕跡。除此之外,配準(zhǔn)偏差,接縫附近運(yùn)動(dòng)物體的鬼影等干擾均普遍存在。特別在視頻拼接中運(yùn)動(dòng)物體位置頻繁變化,拼接痕跡更容易被暴露影響視覺(jué)效果。Bagadus[1]使用色彩糾正和動(dòng)態(tài)接縫來(lái)處理這些問(wèn)題,但是如果拼接中重疊區(qū)域運(yùn)動(dòng)物體情況復(fù)雜,更新接縫并不是一個(gè)有效可行的辦法甚至?xí)?dǎo)致接縫的不停閃動(dòng)。而其他的一些實(shí)時(shí)視頻拼接算法為了減少運(yùn)算量,使用Alpha透明度通道渲染或平均加權(quán)法,會(huì)導(dǎo)致嚴(yán)重的重影或視覺(jué)上的不協(xié)調(diào)。本文在相鄰兩個(gè)相機(jī)配準(zhǔn)誤差較小的情況下,使用圖割法獲得接縫生成靜態(tài)掩模,結(jié)合下文所介紹圖像的無(wú)縫融合技術(shù)很大程度上消除了運(yùn)動(dòng)物體穿過(guò)固定接縫給視覺(jué)效果帶來(lái)的影響。下文深入研究了羽化融合和多波段融合在CUDA上的實(shí)現(xiàn)和性能優(yōu)化。
(1) 羽化融合的CUDA并行設(shè)計(jì)
羽化是一種基于空間域加權(quán)的融合方法,拼接中的加權(quán)融合一般使用線性加權(quán)函數(shù)對(duì)相鄰兩幅圖像重合區(qū)域像素分別賦予不同權(quán)值進(jìn)行求和獲得最后拼接圖的對(duì)應(yīng)像素值。本文使用圖割法生成接縫,二值圖掩模上直觀反應(yīng)只有目標(biāo)像素(像素值為255)和背景像素(像素值為0),因此不存在像素重合的情況,結(jié)合上述情況采用距離變換[10,17]來(lái)生成權(quán)值圖。權(quán)值由每個(gè)目標(biāo)像素與其最近的背景像素的歐式距離來(lái)確定,即目標(biāo)像素離接縫邊緣的最近距離,使離接縫越近權(quán)重越低從而達(dá)到模糊的效果。即掩模中像素M(p)的距離權(quán)值圖可表示為:
(5)
圖2 CUDA實(shí)現(xiàn)羽化融合的步驟
式中,最近距離min(d(p,p0))表示M(p0)為當(dāng)M(p)是目標(biāo)像素時(shí)距離最近的背景像素。得到直接由距離變換獲得權(quán)值wd(p),將其歸一化到[0,1]之間獲得最終的權(quán)值圖w(p)。由于使用靜態(tài)掩模,如圖2所示權(quán)值圖提前在CPU計(jì)算再傳入GPU,一方面避免重復(fù)計(jì)算,另一方面距離變換包含大量的判斷指令會(huì)造成線程束中產(chǎn)生diverge[7](分歧),所以并不適合CUDA實(shí)現(xiàn)。最后,在GPU中進(jìn)行逐像素加權(quán)運(yùn)算對(duì)像素每個(gè)色彩分量進(jìn)行求和與歸一化操作并將其映射到拼接視頻上,該操作可表示為:
(6)
其中,Ii與wi分別對(duì)應(yīng)第i個(gè)相機(jī)實(shí)時(shí)圖片與權(quán)值圖,p為圖片上單個(gè)像素(RGB或RGBA)。式(6)屬于逐像素的重復(fù)密集型運(yùn)算與CUDA的編程模型完全相符,可以很容易實(shí)現(xiàn)加速。羽化融合在CUDA上的實(shí)現(xiàn)步驟如下所示:
算法2羽化中的加權(quán)與歸一化操作CUDA核函數(shù)
sx←blockIdx.x*blockDim.x+threadIdx.x?圖像列坐標(biāo)索引
sy←blockIdx.y*blockDim.y+threadIdx.y?圖像行坐標(biāo)索引
對(duì)圖像中每一點(diǎn)進(jìn)行加權(quán)操作
forallpintheconrespondingpicturedo
Ii(p(sy,sx)R)+=wi(p′(sy,sx));?對(duì)R通道加權(quán)
Ii(p(sy,sx)G)+=wi(p′(sy,sx));?對(duì)G通道加權(quán)
Ii(p(sy,sx)B)+=wi(p′(sy,sx));?對(duì)B通道加權(quán)
end for
對(duì)圖像中的每一點(diǎn)進(jìn)行歸一化操作
forallpintheconrespondingpicturedo
Ii(p(sy,sx)R)=wi(p(sy,sx));?對(duì)R通道歸一化
Ii(p(sy,sx)G)=wi(p(sy,sx));?對(duì)G通道歸一化
Ii(p(sy,sx)B)=wi(p(sy,sx));?對(duì)B通道歸一化
end for
(2) 多波段融合的CUDA并行設(shè)計(jì)
在大多數(shù)情況下羽化的效果足以滿足監(jiān)控系統(tǒng)基本的視覺(jué)要求。但是通過(guò)空間權(quán)重來(lái)模糊接縫遠(yuǎn)達(dá)不到最理想的視覺(jué)效果,因?yàn)檫@種方法難以兼顧亮度差異與細(xì)節(jié)模糊。文獻(xiàn)[5]提出基于拉普拉斯金字塔的多波段融合算法有效地解決了此問(wèn)題,大幅度提高了拼接視頻的視覺(jué)效果。拉普拉斯金字塔是通過(guò)對(duì)相鄰兩層的高斯金字塔差分將原圖分解成多層不同分辨率,不同尺度(即不同頻帶)的子圖。這些子圖構(gòu)成了帶通濾波金字塔,然后分別對(duì)高低頻帶的子圖平滑加權(quán),最后將子圖融合(重構(gòu)金字塔),這樣同時(shí)兼顧了高頻信息(局部細(xì)節(jié))和低頻信息(光照),最后金字塔的第0層即為融合完成的圖像。
圖3中高斯金字塔的第0層是已經(jīng)做過(guò)透視變換的視頻幀,隨后一層的圖像分辨率是前一層的四分之一(圖像寬高分別縮小一倍)。從高分辨率向低分辨率處理叫作Reduce,相反從低分辨率向高分辨操作叫作Expand,這兩個(gè)操作復(fù)雜度較高并貫穿整個(gè)過(guò)程,因此是CUDA實(shí)現(xiàn)圖像金字塔的關(guān)鍵。
圖3 CUDA構(gòu)造拉普拉斯金字塔的步驟
Reduce運(yùn)算在空間域的表達(dá)如下:
(7)
算法3REDUCE操作CUDA核函數(shù)
1:sx←blockIdx.x*blockDim.x+threadIdx.x?進(jìn)行垂直方向卷積使第l-1層圖像列坐標(biāo)索引
2:sy←2*blockIdx.y?進(jìn)行垂直方向卷積第l-1層圖像行坐標(biāo)索引
3:dy←blockIdx.y?第l層的行坐標(biāo)索引
5:_syncthreads( )?線程塊內(nèi)部線程同步確保卷積中間結(jié)果全部存入共享內(nèi)存
6:ifthreadIdx.x 7:dx←(blockIdx.x*blockDim.x+2*threadIdx.x)/2?第l-1層列坐標(biāo)索引 9:end if 與Reduce相反,Expand運(yùn)算在空間域的定義如下: (8) 其中只有當(dāng)i-m,j-n這兩項(xiàng)為偶數(shù)才能被2整除作為行列索引。Gl,k是對(duì)Gl層做k次Expand操作的結(jié)果。Expand操作的CUDA步驟如下所示: 算法4EXPAND操作CUDA核函數(shù) 1:dx←blockIdx.x*blockDim.x+threadIdx.x?第k+1次EXPAND操作結(jié)果的圖像列坐標(biāo)索引 2:dy←blockIdx.y*blockDim.y+threakIdx.y?第k+1次EXPAND操作結(jié)果的圖像行坐標(biāo)索引 3:sharedmem1←Gl,k+1(dy/2,dx/2)?根據(jù)坐標(biāo)關(guān)系將第k次EXPAND操作結(jié)果圖像存入共享以進(jìn)行卷積運(yùn)算 4:_syncthreads( )?線程塊內(nèi)部線程同步確保上述賦值全部完成 5:以下判斷確保threadIdx.y為偶數(shù)可以被2整除才能使threadIdx.y/2做為圖像卷積的坐標(biāo)索引(參考公式(8)中行列索引定義) 6:ifthreadIdx.y is eventhen 8:endif 9:_syncthreads( )?線程塊內(nèi)部線程同步確保水平方向卷積的中間結(jié)果全部存入共享內(nèi)存 為盡可能減少計(jì)算量,圖3中對(duì)掩模向下進(jìn)行高斯卷積(REDUCE)構(gòu)造高斯金字塔僅在拼接初始幀進(jìn)行,生成的每一層高斯權(quán)重圖分別對(duì)拉普拉斯金字塔對(duì)應(yīng)層做羽化操作(羽化的CUDA實(shí)現(xiàn)見上一小節(jié))。 2實(shí)驗(yàn)結(jié)果及分析 2.1硬件配置與實(shí)驗(yàn)平臺(tái) 為驗(yàn)證與研究視頻拼接性能表現(xiàn),分別在CPU與GPU上對(duì)4路1080p高清視頻獲得760萬(wàn)像素超寬視野視頻的拼接過(guò)程進(jìn)行了性能對(duì)比。實(shí)驗(yàn)中使用了三塊不同架構(gòu)的NVIDIA GPU(如表1所示)來(lái)驗(yàn)證加速效果。為保證GPU的性能不被其他硬件條件影響,它們均在同一臺(tái)服CPU型號(hào)為Intel(R) Xeon(R) CPU E3-1230服務(wù)器上運(yùn)行,同時(shí)該CPU作為性能對(duì)比計(jì)算的CPU。實(shí)驗(yàn)運(yùn)行的軟件環(huán)境為CUDA6.0[7]。 表1 測(cè)試GPU硬件參數(shù)一覽 續(xù)表1 2.2性能測(cè)試與分析 (1) 透視變換在CPU與CUDA上實(shí)現(xiàn)的性能比較 表2中的實(shí)驗(yàn)結(jié)果表明透視變換在三種不同架構(gòu)的GPU上的實(shí)現(xiàn)相對(duì)于CPU加速了10倍以上。而從RGB與RGBA在GPU上的性能對(duì)比可知,使用RGBA進(jìn)行合并內(nèi)存訪問(wèn)相對(duì)RGB未對(duì)齊訪問(wèn)在不同的GPU上減少了25%~30%運(yùn)算時(shí)間。 表2 透視變換在CPU與GPU實(shí)現(xiàn)的性能比較(時(shí)間單位:ms) (2) 圖像融合在CPU 與CUDA 上實(shí)現(xiàn)的效果和性能對(duì)比 表3給出了羽化與多波段(構(gòu)造五層拉普拉斯金字塔)在CPU與GPU上實(shí)現(xiàn)的性能對(duì)比。因?yàn)橛鸹?jì)算對(duì)CUDA編程更加友好,其加速比明顯高于多波段融合。與透視變換相反,特別在多波段融合的CUDA實(shí)現(xiàn)中,使用RGBA的性能較RGB下降度較大,為了提高內(nèi)存讀取效率,使用共享內(nèi)存存放中間結(jié)果。但是每個(gè)多流處理器中最多僅包含64 KB的共享內(nèi)存與一定數(shù)量的寄存器,那么共享內(nèi)存與寄存器容量無(wú)法滿足當(dāng)前活動(dòng)線程的請(qǐng)求。因此一部分線程處于等待狀態(tài)導(dǎo)致并行度降低,RGBA在內(nèi)存中比RGB多出三分之一的容量,并行度必然要小于使用RGB存儲(chǔ)格式來(lái)進(jìn)行融合。圖4中是兩組人同時(shí)穿過(guò)接縫的情況下不同融合方法的接縫處效果,該接縫由一組隨機(jī)樣本幀使用圖割法獲得。(a)中靠上的黑衣男子頭部在經(jīng)過(guò)接縫時(shí)中出現(xiàn)明顯的錯(cuò)位現(xiàn)象,相對(duì)于(a),(c)使用五層拉普拉斯金字塔融合后接縫痕跡與色差幾乎消失。(b)中羽化融合對(duì)接縫處做了一定的模糊處理,接縫穿過(guò)人的不自然效果幾乎消失,但兩側(cè)依然存在較明顯的亮度差異。 表3 圖像融合在CPU與GPU上實(shí)現(xiàn)的性能對(duì)比(時(shí)間單位:ms) 圖4 相同場(chǎng)景下不同融合方法與無(wú)融合接縫視覺(jué)效果對(duì)比 (3) 與開源拼接軟件的性能比較 本文選取OpenCV中Stitching模塊進(jìn)行比較,相比于其他拼接軟件,OpenCV開放源碼便于修改接口和計(jì)算時(shí)間,并且包含部分CUDA加速。表4中給出了4路1080p視頻拼接分別使用OpenCV、CPU以及CUDA(使用GTX780顯卡)實(shí)現(xiàn)所用的時(shí)間。從直接拼接與羽化拼接可知,文中方法在CPU上的實(shí)現(xiàn)就已經(jīng)接近甚至超過(guò)包含部分CUDA加速的OpenCV中的方法,足以證明文中方法的高效性。 表4 文中方法與OpenCV中拼接模塊的性能比較 (4) 實(shí)時(shí)多路高清視頻拼接總體性能分析 由于CPU與GPU之間的傳輸使用雙緩沖和多流異步傳輸技術(shù),因此傳輸所消耗的時(shí)間與GPU計(jì)算重疊并不計(jì)算在總時(shí)間內(nèi)。表5為在完整拼接流程在CPU上和GPU上實(shí)現(xiàn)的性能比較,結(jié)果表明GPU相對(duì)于CPU有9~15倍以上的加速。 表5 視頻拼接在CPU與CUDA上實(shí)現(xiàn)的總用時(shí)與加速比(時(shí)間單位:ms) 表1中可知最新架構(gòu)的GTX750具備較高的時(shí)鐘頻率,但是多流處理器的數(shù)量遠(yuǎn)少于其他型號(hào)使常駐線程數(shù)量大量減少。此影響突出體現(xiàn)在直接拼接和羽化融合這兩種純逐像素級(jí)別運(yùn)算的方法,盡管GTX750可以分別達(dá)到90 fps和45 fps的拼接速率,但是運(yùn)算效率大幅度落后其他兩塊顯卡。從整體視覺(jué)效果上對(duì)比來(lái)看,圖5(b)中基于距離圖的羽化融合大體上并沒(méi)有出現(xiàn)比較嚴(yán)重的拼接痕跡,在保證拼接速度的情況下,基本符合視頻監(jiān)控的基本要求。而圖5(c)中多波段融合保證了良好的視覺(jué)效果但表5中的結(jié)果表明它過(guò)多的犧牲了性能。此時(shí)由于GPU片上內(nèi)存資源有限通過(guò)RGBA在保證字節(jié)對(duì)齊來(lái)使用RGB格式時(shí),僅GTX780可以完全滿足實(shí)時(shí)性,GTX480可達(dá)到23 fps拼接效率勉強(qiáng)滿足實(shí)時(shí)性。 圖5 (a)從4路1080p高清網(wǎng)絡(luò)相機(jī)獲取的圖片(順序由左自右)(b)、(c)、(d)分別為直接拼接,羽化,多波段融合輸出效果(已剪裁掉部分黑邊),明顯接縫處在圖中用白框表示 圖6給出隨著分辨率的增長(zhǎng)(600到1000萬(wàn)像素)不同方法的性能增長(zhǎng)曲線??芍苯悠唇优c羽化的性能曲線隨著分辨率的增長(zhǎng)變化非常微弱,即使達(dá)到1000萬(wàn)像素,在多流處理器數(shù)量較多的GTX780、GTX480上拼接速度僅僅下降了10%左右,GTX750也可以保持35 fps拼接速度。但分辨率的增長(zhǎng)意味更多的線程同步以及硬件資源有限帶來(lái)并行度下降,千萬(wàn)像素輸出分辨率的多波段融合僅在性能最強(qiáng)大GTX780上可以達(dá)到20 fps的拼接幀率。不過(guò)總體來(lái)看,實(shí)時(shí)拼接的總時(shí)間的增長(zhǎng)率僅為輸出視頻分辨增長(zhǎng)幅度的二分之一或者更小。表明隨著相機(jī)路數(shù)的增加同時(shí)獲取更高分辨率的寬視野視頻,使用文中的實(shí)時(shí)拼接方法可以大幅度地提高計(jì)算效率比。 圖6 在三種不同型號(hào)GPU上不同分辨率的視頻拼接性能比較 3結(jié)語(yǔ) 本文提出了一種使用多相機(jī)獲取多路高清視頻進(jìn)行實(shí)時(shí)拼接的方法。針對(duì)透視變換、圖像融合等運(yùn)算量較大的算法在NVIDIA GPU上的并行優(yōu)化進(jìn)行了研究。實(shí)驗(yàn)結(jié)果表明,該方法可根據(jù)GPU性能指標(biāo)選取最高效的融合方法,同時(shí)可選擇性地封裝對(duì)CUDA計(jì)算友好的數(shù)據(jù)存儲(chǔ)格式,即保證了視覺(jué)效果,又在不同架構(gòu)和計(jì)算性能的GPU上均可滿足實(shí)時(shí)性要求。后續(xù)工作將圍繞本文方法在多GPU上得移植以滿足更多路高清相機(jī)拼接獲取360度超高清全景視頻的要求。 參考文獻(xiàn) [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] 宋寶森.全景圖像拼接方法研究與實(shí)現(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. 中圖分類號(hào)TP3 文獻(xiàn)標(biāo)識(shí)碼A DOI:10.3969/j.issn.1000-386x.2016.02.030 收稿日期:2015-02-12。國(guó)家重點(diǎn)基礎(chǔ)研究發(fā)展計(jì)劃專項(xiàng)基金項(xiàng)目(2012CB719905)。王震,碩士生,主研領(lǐng)域:計(jì)算機(jī)視覺(jué)。張博凱,本科生。王靜,碩士生。李圣,碩士生。鄭宏,教授。