圖靈時代來襲,NVIDIA更新VRWorks SDK 2.0

 2018-10-20

10月16日,NVIDIA在官方開發者博客上宣布推出軟件開發套件VRWorks SDK 2.0,據NVIDIA稱,2.0版SDK搭配NVIDIA RTX GPU使用,其拼接360°全景視頻的速度最高將提高90%,實時單像視頻拼接的性能將提高兩倍,這樣將緩解VR應用對性能要求高的問題。

NVIDIA在博客中寫道,在消費級市場和專業市場攝像系統與視頻處理應用已經無處不在,不管是用於拍電影還是家庭錄影。加強與優化視頻和照片的串流對於普通和專業消費者來講將越來越重要,隨著過去幾年裡與3DoF 360°視頻相關的應用場景在不斷增多,市場對視頻平台的要求越來越高。在YouTube直播,上傳分享到Facebook,還有Vimeo平台都支持360°全景視頻。


圖1:Quadro P6000和Quadro RTX 6000顯卡拼接360°視頻的性能對比


除了性能提高,VRWorks SDK 2.0還新增加了一些新功能:
1,支持深度對齊的單像(非立體圖像)拼接
拼接單像的一大難題是,完美對接兩張照片的邊界,NVIDIA通過預估圖像在平面的變化,可準確地做到這一點,使用的原理是單應矩陣方法。


圖2:單應矩陣繪圖/轉換法

據悉,用於預估單應矩陣排列的辦法需要依賴準確識別與測繪圖片之間明顯的關係/關鍵點/特點,要達到這一點常常會與實際操作產生衝突,因為攝像頭的物理性質與環境因素不容易控制。比如,圖像之間曝光和遮光等因素的不一樣,可能會造成單應矩陣的預測不准確,以至於拼接產生偏移。

除此之外,即使單應矩陣預測準確,不同相片的拍攝視角可能也有不同,造成圖3中顯示的視差。不考慮視差去拼接的話,可能會造成重影等誤差,視差越大,誤差越嚴重。


通常為了避免這種偽影的出現,會使用到切割/縫合等方法,這些方法依賴能量函數最小化方法,但這樣將耗費大量計算時間。緩解這種問題的最佳辦法是使用多層次方法,通過全局對比場景保證遠處視差小的物體也能配準,而局部對比可有選擇性地將視差大的臨近物體進行配準。



而VRWorks 360°視頻SDK 2.0使用的是基於深度感知的配準拼接模式,將深度信息與單應矩陣結合來處理視差,在拼接之前配準圖像。


圖4:利用基於深度的配準,臨近物體拼接的質量有所提高


圖5總結了深度配準方法的邏輯結構(流程圖),先是使用單應矩陣配準圖像,然後對比重疊部分,計算重疊部分的不一致,對比不一致重新配準重疊區域,最後一步是多波段融合(不同頻率的圖像疊加,不同頻率使用不同權重來融合)。其中估測深度與在360°立體拼接中預測立體視差時,使用了NVIDIA獨有的搜索算法。計算後得出的視差通過在重疊區域疊加空間扭曲來配準圖像。配准後再拼接效果更好,尤其是在物體距離攝像頭很近,或者多個攝像頭視角造成視差出現時。




雖然深度預測與配準這一步增加了多波段融合每一幀的拼接時間,但是CUDA 10運算平台和圖靈架構能夠緩解這一步對實時拼接時間造成的影響。總的來講,深度配準幾乎不會增加拼接時間,而且使用的攝像頭越多,圖像產生的不一致就會越少。




圖6:使用2x Quadro RTX 6000拼接,有深度配準與沒有深度配準的性能對比



2,接縫可調整

下圖顯示了攝像頭與物體距離越短,視差就越大,智能拼接圖像重疊的區域,可以盡量避開附近物體的拼接,減少或者避免拼接產生的偽影。


VRWorks 360°視頻SDK 2.0支持動態拼接,下載API接口後開發者能夠:

--查看當前接縫的位置;

--查看等距長方全景拼接圖中的重疊部分;

--定義每張照片接縫在重疊部分的位置。


當前的動態拼接支持直線接縫,可以通過水平和垂直坐標來定位。


開發者使用低級API在拼接時可任意調整圖片接縫,支持VRWorks 360°視頻SDK 2.0的拼接應用可以利用這一功能,找出幀與幀的最佳拼接位置,用戶也可以調整接縫的位置,拼接出自然的全景圖像。


3,支持多顯卡縮放的優化單像拼接流程

大多數相機使用的都是H.264等壓縮算法來壓縮影像,以此來優化採集或者串流佔用的帶寬。這種情況下視頻拼接流程的第一步常常是解碼,解碼每一數據流的時間與待解碼的源視頻的分辨率和刷新率成正比,此外源流的數量和壓縮格式也是一個因素。


隨著360°攝像機的攝像頭數量增多,解碼的時間會越久,而VRWorks的SDK使用了NVIDIA解碼引擎,將優化和並行解碼的流程。VRWorks 360視頻SDK 2.0採用了全新的單像拼接流程,適用於攝像頭唯一同一水平線上的設備,此外它的拼接流程也是首次支持多顯卡縮放。這一流程不僅能夠縮短縮放解碼的時間,使用多顯卡還能夠計算出工作負荷。從下圖可以看出,兩塊GeForce RTX 2080 Ti與一塊相比,在同時處理4個以上視頻流的時候,效率提高了一倍。



4,自定義拼接點

正常人單目的視場角大概有200到220°,雙目視場角大約114°。模擬人眼,NVIDIA研發了一種在頭顯渲染限制內保持視覺真實度的辦法。視場角小於360°的VR視頻也可以使用相同的原則縮短處理時間,根據不同的應用場景,也可能提高串流帶寬的效率。VRWorks 360°視頻SDK 2.0支持對特定區域的修改,可以只截取圖像源有用的部分。這樣一來,能夠避免多與計算、減少內存佔用,還能夠提高端對端運行效率。



圖9:在360°全景圖像中心截取的180x90°可視區域

有了自定義拼接,通過拼接渲染剪裁後的高分辨率區域(提高角像素密度),可以提升180°視頻的畫質,省去了完整的360°全景視頻佔用的內存。

此外,使用nvss_video API,用戶可以自定義全景視頻輸出元的可視區域,通過nvssVideoStitcherProperties_t結構中的output_roi數據變量,可以輸入可視區域的坐標,這些坐標必須在拼接之前標明,目前的SDK版本不支持在拼接過程中改變定義區域。

5,三維立體聲音頻

三維全景視頻搭配模仿真實聲音的立體聲音頻,可提高頭顯帶來的沉浸感,人類大腦需要依靠聲音強度的改變與產生的時間來定位聲源,從而更好地感知周圍的物理環境。比如,如果有人從後面叫你名字,你沒有看到人就知道要回頭,而三維立體聲正式一種盡量保留三維全景視頻在拍攝時捕捉到的聲源方向的格式。

VRWorks 360°視頻SDK 2.0支持初級B格式三維立體聲,保存了拼接視頻中聲源與用戶之間的相對關係數據,這樣一來,就能夠提高用戶對視頻聲音的感知,優化VR頭顯中用語音引導和支持用戶的UX。這項功能需要搭配封閉式的立體聲系統,用戶在這種立體聲系統中聽到的聲音彷彿是從腦中傳來的,此外空間音頻會讓用戶感覺聲源與周圍環境更加融入,彷彿真的是從周圍傳來的。


圖10:通過將不同聲源解碼,然後進行混合,生成B格式的三維立體聲


SDK 2.0支持NVSF庫中的初級B格式三維立體聲,用於錄音的麥克風陣列可以是相機內置的,也可以是外設(如單點環繞立體聲麥克風或球形立體聲話筒)。下方視頻展示了加入初級B格式三維立體聲的360度視頻效果:


6,360°影像扭曲(Warp 360)

VRWorks 360°視頻SDK 1.0支持等距長方形投影的360°全景影像,這樣的格式適合360°全景視頻,而串流、谷歌的VR 180格式等等對於性能與畫質有著更高的要求。Warp 360是VRWorks 360°視頻SDK 2.0中的新功能,這種功能也許可以根據不同的應用場景進行自定義。Warp 360採用CUDA核心,可將等距長方形投影、魚眼和透視圖轉化成等距長方形投影、魚眼、透視圖、圓柱投影、非透視投影、旋轉圓柱投影、立體全景投影和推掃式投影。投影格式、攝像機參數和可視區域都可以用來改變和生成有趣的視角,下面兩張照片是利用Warp 360修改過的等距長方形全景圖。


等距長方形全景圖轉化成三維立體全景格式



等距長方形全景圖轉化成非透視投影圖


下方視頻展示了利用Warp 360拼接出的大視場角360°全景視頻:


下方視頻是採用固定可視區域拍攝的平面視頻:


VRWorks 360°視頻SDK 2.0需要使用NVIDIA 411.63以上版本的顯卡驅動,新版SDK中包括了API接口和样本應用、NVIDIA開發者編程指南,感興趣的可以點擊這裡了解更多細節。























文章來源:青亭網