CGDC干貨:AMD工程師深度講解VR實(shí)時(shí)全景拼接技術(shù)與方案
近兩年VR概念火爆,投資界對(duì)此也非常信賴,市面上出現(xiàn)了好多VR廠商。他們都認(rèn)為VR(虛擬現(xiàn)實(shí))的廣闊市場(chǎng)前景,說(shuō)是下一個(gè)風(fēng)口。于是市面上很快出現(xiàn)了各式各樣的VR頭盔硬件,但是目前VR存在的最大問(wèn)題之一是缺乏內(nèi)容。全景相機(jī)拍攝的內(nèi)容適合給VR頭盔使用,用戶借助頭盔設(shè)備,可以從鏡頭的角度獲得360度的全景,使用戶感到畫(huà)面逼真,具有沉浸感。從新石器時(shí)代的洞穴壁畫(huà)到當(dāng)代的IMAX及VR/AR體驗(yàn),都可以看出來(lái)人們非常享受360度環(huán)境下的藝術(shù)體驗(yàn)。
借助VR發(fā)展的東風(fēng),360度全景視頻重新受到關(guān)注,也越來(lái)越普及。開(kāi)發(fā)者們?cè)谙?,除了離線視頻——離線合成拼接好保存下來(lái)的全景視頻文件,實(shí)時(shí)播放或者轉(zhuǎn)播方面能不能引入全景呢?這種需求很早就有,但實(shí)時(shí)拼接一直沒(méi)有實(shí)現(xiàn),因?yàn)槭艿接布?jì)算資源的限制不能提供實(shí)時(shí)性,現(xiàn)在強(qiáng)大的計(jì)算資源(包括多核心CPU,F(xiàn)PGA,GPU異構(gòu)加速器,大顯存等),足以支撐高質(zhì)量實(shí)時(shí)視頻拼接。所以,今天我給大家講解一下360度全景視頻實(shí)時(shí)拼接的技術(shù)。
首先,我們從技術(shù)層面了解一下什么是全景視圖,全景視圖是指在一個(gè)固定的觀察點(diǎn),能夠提供水平方向上360度,垂直方向上180度的自由瀏覽,簡(jiǎn)化的全景只能提供水平方向360度的瀏覽。
其次,我們?cè)倭私庖幌率裁词侨捌唇?,全景圖像拼接(Image Stitching)是一種利用實(shí)景圖像組成全景空間的技術(shù),將多幅圖像拼接成一幅360度大尺度全景視圖。
近些年,全景相機(jī)有了一個(gè)大爆發(fā),市面上出現(xiàn)了各種各樣的360度全景相機(jī),不同的相機(jī)面向不同的市場(chǎng)及不同消費(fèi)者。每個(gè)全景相機(jī)的鏡頭數(shù)量也不一樣。如,雙目的理光相機(jī),四目的得圖相機(jī),surround360 方案支持17目,而AMD loom方案提出最大到31目,行業(yè)里經(jīng)常用Rig(陣列)這個(gè)詞來(lái)代表多個(gè)鏡頭組裝的全景相機(jī)。如下圖所示:
使用過(guò)以上某種頭盔并且感受過(guò)高分辨率的360度全景視頻用戶,可能會(huì)認(rèn)為360度拼接技術(shù)上已經(jīng)是一個(gè)基本上被解決了的問(wèn)題。實(shí)際上并非如此。當(dāng)然過(guò)去這幾十年的算法先驅(qū)們所做出的成績(jī)值得被肯定,因?yàn)樗麄兊呐σ呀?jīng)解決了很多關(guān)于全景視頻拼接的問(wèn)題。但是從軟硬件層面看還有許多問(wèn)題待突破。
硬件層面,很多問(wèn)題也還有待改進(jìn),比如全景相機(jī)的能耗問(wèn)題、發(fā)熱問(wèn)題、全局快門(mén)同步問(wèn)題、相機(jī)鏡頭畸變工藝問(wèn)題、相機(jī)防抖解決問(wèn)題,更多的相機(jī)數(shù)量帶來(lái)高帶寬傳輸?shù)膯?wèn)題,更多隙縫和隙縫縫合的計(jì)算延遲等問(wèn)題。
軟件層面,全景相機(jī)目前軟件拼接的理論或者框架已經(jīng)相對(duì)成熟,框架基本上都是采用的autostitch 2007年的框架,存在的問(wèn)題是數(shù)據(jù)采集和傳輸?shù)膸捬舆t問(wèn)題,拼接流程所需處理時(shí)間較長(zhǎng)等。
硬件方面的問(wèn)題只能借助工藝和材質(zhì)盡可能的減少拼接誤差。比如,鏡頭畸變只能通過(guò)材質(zhì)和工藝盡可能減少。采集時(shí)的相機(jī)同步也可以借助鎖相同步硬件來(lái)處理,發(fā)熱和功耗通過(guò)設(shè)計(jì)更好的IC來(lái)解決等。
軟件拼接層面,我們知道大多的圖像處理算法,具有天然的數(shù)據(jù)并行性,適合在GPU作為異構(gòu)加速部件來(lái)完成處理。GPU自身所集成的幾千個(gè)流處理器可以使多數(shù)圖像處理的速度提高一到幾個(gè)數(shù)量級(jí),大大減少了每幀圖片的處理時(shí)間,因此也使多個(gè)相機(jī)拍攝的視頻可以實(shí)時(shí)合成,實(shí)時(shí)輸出。此外,如果借助于GPU的傳輸通道和帶寬,完成采集到的數(shù)據(jù)流直接進(jìn)入GPU。
實(shí)時(shí)拼接有難度 AMD Loom來(lái)助力
AMD根據(jù)自家GPU硬件和在OpenCL異構(gòu)計(jì)算方案的技術(shù)優(yōu)勢(shì),也為實(shí)時(shí)拼接領(lǐng)域提出了自己的一套360度實(shí)時(shí)視頻拼接方案,名字為L(zhǎng)oom,并將其進(jìn)行了開(kāi)源。Loom為影視級(jí)VR視頻體驗(yàn)提供創(chuàng)造性的動(dòng)力,最大可能的縮短視頻拼接時(shí)間延遲,使高質(zhì)量的全景直播成為可能,同時(shí)使高質(zhì)量360度視頻的創(chuàng)作過(guò)程更加簡(jiǎn)化,幫助影視內(nèi)容藝術(shù)創(chuàng)作者釋放更多的精力在獨(dú)特的內(nèi)容創(chuàng)作上面。
首先,我們看一下AMD LOOM方案的整個(gè)框架。我們從下往上分層介紹:
首先是計(jì)算部件,在其上是異構(gòu)計(jì)算平臺(tái)OpenCL,驅(qū)動(dòng)層面提供支持的DirectGMA庫(kù)和完成多媒體音視頻編解碼的AMF庫(kù)。OpenCL是底層開(kāi)發(fā)基礎(chǔ)庫(kù),幫助上層視覺(jué)處理函數(shù)完成加速。DirectGMA技術(shù)適合通過(guò)采集卡實(shí)時(shí)采集并進(jìn)入GPU拼接的系統(tǒng),同時(shí)需要采集卡廠商驅(qū)動(dòng)的支持。完成采集卡采集到的視頻流數(shù)據(jù)直接傳輸?shù)紾PU的顯存,繞開(kāi)CPU和內(nèi)存,減少了數(shù)據(jù)傳輸?shù)难舆t和帶寬浪費(fèi)。AMF SDK 主要完成視頻采集、視頻拼接后期的工作,比如音視頻的融合,H.264軟編碼后輸出,減少存儲(chǔ)空間和傳輸帶寬。
第三層是基于OpenCL的計(jì)算視覺(jué)加速庫(kù)OpenVX。OpenVX和OpenCL都是開(kāi)源組織khronos提出的標(biāo)準(zhǔn),僅僅是標(biāo)準(zhǔn)接口,有不同的vendor來(lái)根據(jù)自家的硬件特性來(lái)實(shí)現(xiàn),當(dāng)然也可以根據(jù)自己硬件和自己的想法在這些標(biāo)準(zhǔn)接口的基礎(chǔ)上再做一些擴(kuò)展。
第四層是在OpenVX等視覺(jué)加速庫(kù)的基礎(chǔ)上,完成視頻拼接算法流程每一步需要的OpenVX kernel,實(shí)時(shí)視頻拼接流程如圖所示,每種算法通過(guò)一個(gè)或多個(gè)OpenVX kernel函數(shù)實(shí)現(xiàn),以開(kāi)發(fā)庫(kù)的形式提供上層用戶調(diào)用,比如CSC 顏色空間域轉(zhuǎn)換kernel,透鏡畸變矯正kernel,Blend 階段的高斯金字塔和laplacian金字塔的創(chuàng)建kernel。此外該框架還對(duì)第三方提供OpenVX接口,如果第三方用戶自己設(shè)計(jì)了新的拼接算法,可以在OpenVX的基礎(chǔ)上,添加自己的算法kernel實(shí)現(xiàn)到Loom。
第五層是在根據(jù)拼接算法流程,對(duì)下層提供的kernel再一層封裝,比如提供CSC接口,Warp 接口,seam find 接口等。供用戶調(diào)用完成視頻拼接或類似視頻處理的應(yīng)用。
最上層是利用Loom提供的stitch library,用戶可以完成視頻拼接工作,拼接后期處理工作,Loom自身為了調(diào)試和培訓(xùn)用戶等,實(shí)現(xiàn)了一個(gè)命令行解析器,通過(guò)命令行的形式完成多張圖片的拼接任務(wù)。第三方還可以開(kāi)發(fā)出某種控件,供其他應(yīng)用軟件直接調(diào)用。
AMD Loom通過(guò)GPU異構(gòu)加速方案和AMD 實(shí)現(xiàn)的OpenVX計(jì)算視覺(jué)加速庫(kù),使360度高質(zhì)量的視頻實(shí)時(shí)拼接成為可能。
AMD Loom可實(shí)時(shí)拼接多至24個(gè)4k x2k鏡頭、離線拼接多至31個(gè)8K x4K鏡頭拍攝到的畫(huà)面。如果你恰巧已經(jīng)是一位360視頻開(kāi)發(fā)者,可點(diǎn)擊Radeon Loom Stitching Library on http://GPUOpen.com 下載Loom的beta版本。目前AMD中國(guó)團(tuán)隊(duì)正在和本地?cái)z像機(jī)開(kāi)發(fā)商合作,提供端到端的解決方案,屆時(shí)會(huì)面向VR全景用戶發(fā)布。
P.S。 此次AMD展位(E3館S111)也首次展示了AMD Radeon Loom實(shí)時(shí)全景拼接技術(shù)支持的VR直播方案:展位部分環(huán)節(jié)通過(guò)全景相機(jī)ZCAM和戴爾Precision 7720移動(dòng)工作站(裝載AMD Radeon? Pro WX 7100顯卡)在新浪微博平臺(tái)進(jìn)行VR直播。想要圍觀該方案的朋友千萬(wàn)不要錯(cuò)過(guò)。
轉(zhuǎn)自:新浪VR
【版權(quán)聲明】:本站內(nèi)容來(lái)自于與互聯(lián)網(wǎng)(注明原創(chuàng)稿件除外),如文章或圖像侵犯到您的權(quán)益,請(qǐng)及時(shí)告知,我們第一時(shí)間刪除處理!謝謝!