CGDC干貨:AMD工程師深度講解VR實時全景拼接技術(shù)與方案

7月27-30日,2017ChinaJoy(中國國際數(shù)碼互動娛樂展覽會)在上海新國際博覽中心如期舉辦,CGDC(中國游戲開發(fā)者大會)也在嘉里中心同期召開。7月28日下午,AMD資深軟件工程師解慶春受邀為CGDC奉上了題為《基于VR全景直播需求的實時全景拼接技術(shù)與方案》的精彩演講,從多個層面為與會者介紹了AMD的實時全景拼接方案Loom及其背后的技術(shù)。下文為AMD工程師的演講內(nèi)容整理,希望能夠?qū)θ皟?nèi)容開發(fā)者有所幫助。
借VR東風 全景視頻再獲關(guān)注
近兩年VR概念火爆,投資界對此也非常信賴,市面上出現(xiàn)了好多VR廠商。他們都認為VR(虛擬現(xiàn)實)的廣闊市場前景,說是下一個風口。于是市面上很快出現(xiàn)了各式各樣的VR頭盔硬件,但是目前VR存在的最大問題之一是缺乏內(nèi)容。全景相機拍攝的內(nèi)容適合給VR頭盔使用,用戶借助頭盔設(shè)備,可以從鏡頭的角度獲得360度的全景,使用戶感到畫面逼真,具有沉浸感。從新石器時代的洞穴壁畫到當代的IMAX及VR/AR體驗,都可以看出來人們非常享受360度環(huán)境下的藝術(shù)體驗。
借助VR發(fā)展的東風,360度全景視頻重新受到關(guān)注,也越來越普及。開發(fā)者們在想,除了離線視頻——離線合成拼接好保存下來的全景視頻文件,實時播放或者轉(zhuǎn)播方面能不能引入全景呢?這種需求很早就有,但實時拼接一直沒有實現(xiàn),因為受到硬件計算資源的限制不能提供實時性,現(xiàn)在強大的計算資源(包括多核心CPU,F(xiàn)PGA,GPU異構(gòu)加速器,大顯存等),足以支撐高質(zhì)量實時視頻拼接。所以,今天我給大家講解一下360度全景視頻實時拼接的技術(shù)。
首先,我們從技術(shù)層面了解一下什么是全景視圖,全景視圖是指在一個固定的觀察點,能夠提供水平方向上360度,垂直方向上180度的自由瀏覽,簡化的全景只能提供水平方向360度的瀏覽。
其次,我們再了解一下什么是全景拼接,全景圖像拼接(Image Stitching)是一種利用實景圖像組成全景空間的技術(shù),將多幅圖像拼接成一幅360度大尺度全景視圖。
近些年,全景相機有了一個大爆發(fā),市面上出現(xiàn)了各種各樣的360度全景相機,不同的相機面向不同的市場及不同消費者。每個全景相機的鏡頭數(shù)量也不一樣。如,雙目的理光相機,四目的得圖相機,surround360 方案支持17目,而AMD loom方案提出最大到31目,行業(yè)里經(jīng)常用Rig(陣列)這個詞來代表多個鏡頭組裝的全景相機。如下圖所示:

使用過以上某種頭盔并且感受過高分辨率的360度全景視頻用戶,可能會認為360度拼接技術(shù)上已經(jīng)是一個基本上被解決了的問題。實際上并非如此。當然過去這幾十年的算法先驅(qū)們所做出的成績值得被肯定,因為他們的努力已經(jīng)解決了很多關(guān)于全景視頻拼接的問題。但是從軟硬件層面看還有許多問題待突破。
硬件層面,很多問題也還有待改進,比如全景相機的能耗問題、發(fā)熱問題、全局快門同步問題、相機鏡頭畸變工藝問題、相機防抖解決問題,更多的相機數(shù)量帶來高帶寬傳輸?shù)膯栴},更多隙縫和隙縫縫合的計算延遲等問題。
軟件層面,全景相機目前軟件拼接的理論或者框架已經(jīng)相對成熟,框架基本上都是采用的autostitch 2007年的框架,存在的問題是數(shù)據(jù)采集和傳輸?shù)膸捬舆t問題,拼接流程所需處理時間較長等。
硬件方面的問題只能借助工藝和材質(zhì)盡可能的減少拼接誤差。比如,鏡頭畸變只能通過材質(zhì)和工藝盡可能減少。采集時的相機同步也可以借助鎖相同步硬件來處理,發(fā)熱和功耗通過設(shè)計更好的IC來解決等。
軟件拼接層面,我們知道大多的圖像處理算法,具有天然的數(shù)據(jù)并行性,適合在GPU作為異構(gòu)加速部件來完成處理。GPU自身所集成的幾千個流處理器可以使多數(shù)圖像處理的速度提高一到幾個數(shù)量級,大大減少了每幀圖片的處理時間,因此也使多個相機拍攝的視頻可以實時合成,實時輸出。此外,如果借助于GPU的傳輸通道和帶寬,完成采集到的數(shù)據(jù)流直接進入GPU。
實時拼接有難度 AMD Loom來助力
AMD根據(jù)自家GPU硬件和在OpenCL異構(gòu)計算方案的技術(shù)優(yōu)勢,也為實時拼接領(lǐng)域提出了自己的一套360度實時視頻拼接方案,名字為Loom,并將其進行了開源。Loom為影視級VR視頻體驗提供創(chuàng)造性的動力,最大可能的縮短視頻拼接時間延遲,使高質(zhì)量的全景直播成為可能,同時使高質(zhì)量360度視頻的創(chuàng)作過程更加簡化,幫助影視內(nèi)容藝術(shù)創(chuàng)作者釋放更多的精力在獨特的內(nèi)容創(chuàng)作上面。
首先,我們看一下AMD LOOM方案的整個框架。我們從下往上分層介紹:

首先是計算部件,在其上是異構(gòu)計算平臺OpenCL,驅(qū)動層面提供支持的DirectGMA庫和完成多媒體音視頻編解碼的AMF庫。OpenCL是底層開發(fā)基礎(chǔ)庫,幫助上層視覺處理函數(shù)完成加速。DirectGMA技術(shù)適合通過采集卡實時采集并進入GPU拼接的系統(tǒng),同時需要采集卡廠商驅(qū)動的支持。完成采集卡采集到的視頻流數(shù)據(jù)直接傳輸?shù)紾PU的顯存,繞開CPU和內(nèi)存,減少了數(shù)據(jù)傳輸?shù)难舆t和帶寬浪費。AMF SDK 主要完成視頻采集、視頻拼接后期的工作,比如音視頻的融合,H.264軟編碼后輸出,減少存儲空間和傳輸帶寬。
第三層是基于OpenCL的計算視覺加速庫OpenVX。OpenVX和OpenCL都是開源組織khronos提出的標準,僅僅是標準接口,有不同的vendor來根據(jù)自家的硬件特性來實現(xiàn),當然也可以根據(jù)自己硬件和自己的想法在這些標準接口的基礎(chǔ)上再做一些擴展。
第四層是在OpenVX等視覺加速庫的基礎(chǔ)上,完成視頻拼接算法流程每一步需要的OpenVX kernel,實時視頻拼接流程如圖所示,每種算法通過一個或多個OpenVX kernel函數(shù)實現(xiàn),以開發(fā)庫的形式提供上層用戶調(diào)用,比如CSC 顏色空間域轉(zhuǎn)換kernel,透鏡畸變矯正kernel,Blend 階段的高斯金字塔和laplacian金字塔的創(chuàng)建kernel。此外該框架還對第三方提供OpenVX接口,如果第三方用戶自己設(shè)計了新的拼接算法,可以在OpenVX的基礎(chǔ)上,添加自己的算法kernel實現(xiàn)到Loom。
第五層是在根據(jù)拼接算法流程,對下層提供的kernel再一層封裝,比如提供CSC接口,Warp 接口,seam find 接口等。供用戶調(diào)用完成視頻拼接或類似視頻處理的應(yīng)用。
最上層是利用Loom提供的stitch library,用戶可以完成視頻拼接工作,拼接后期處理工作,Loom自身為了調(diào)試和培訓(xùn)用戶等,實現(xiàn)了一個命令行解析器,通過命令行的形式完成多張圖片的拼接任務(wù)。第三方還可以開發(fā)出某種控件,供其他應(yīng)用軟件直接調(diào)用。

AMD Loom通過GPU異構(gòu)加速方案和AMD 實現(xiàn)的OpenVX計算視覺加速庫,使360度高質(zhì)量的視頻實時拼接成為可能。
AMD Loom可實時拼接多至24個4k x2k鏡頭、離線拼接多至31個8K x4K鏡頭拍攝到的畫面。如果你恰巧已經(jīng)是一位360視頻開發(fā)者,可點擊Radeon Loom Stitching Library on http://GPUOpen.com 下載Loom的beta版本。目前AMD中國團隊正在和本地攝像機開發(fā)商合作,提供端到端的解決方案,屆時會面向VR全景用戶發(fā)布。
P.S. 此次AMD展位(E3館S111)也首次展示了AMD Radeon Loom實時全景拼接技術(shù)支持的VR直播方案:展位部分環(huán)節(jié)通過全景相機ZCAM和戴爾Precision 7720移動工作站(裝載AMD Radeon? Pro WX 7100顯卡)在新浪微博平臺進行VR直播。想要圍觀該方案的朋友千萬不要錯過。
【版權(quán)聲明】:本站內(nèi)容來自于與互聯(lián)網(wǎng)(注明原創(chuàng)稿件除外),如文章或圖像侵犯到您的權(quán)益,請及時告知,我們第一時間刪除處理!謝謝!