查看原文
其他

图灵时代来袭,NVIDIA更新VRWorks SDK 2.0

前沿科技新媒体 青亭网 2019-05-02

Esther| 撰文

今天,NVIDIA更新开发套件VRWorks至SDK 2.0。据悉,2.0版SDK搭配NVIDIA RTX显卡使用,其拼接360°全景视频的速度最高将提高90%,实时单像视频拼接的性能将提高两倍,这样将缓解VR应用对性能要求高的问题。

NVIDIA在博客中写道,在消费级市场和专业市场摄像系统与视频处理应用已经无处不在,不管是用于拍电影还是家庭录影。加强与优化视频和照片的串流对于普通和专业消费者来讲将越来越重要,随着过去几年里与3DoF 360°视频相关的应用场景在不断增多,市场对视频平台的要求越来越高。在YouTube直播,上传分享到Facebook,还有Vimeo平台都支持360°全景视频。

Quadro P6000和Quadro RTX 6000显卡拼接360°视频的性能对比

除了性能提高,VRWorks SDK 2.0还新增加了一些新功能:

1,支持深度对齐的单像(非立体图像)拼接

拼接单像的一大难题是,完美对接两张照片的边界,NVIDIA通过预估图像在平面的变化,可准确地做到这一点,使用的原理是单应矩阵方法。

单应矩阵绘图/转换法

据悉,用于预估单应矩阵排列的办法需要依赖准确识别与测绘图片之间明显的关系/关键点/特点,要达到这一点常常会与实际操作产生冲突,因为摄像头的物理性质与环境因素不容易控制。比如,图像之间曝光和遮光等因素的不一样,可能会造成单应矩阵的预测不准确,以至于拼接产生偏移。

除此之外,即使单应矩阵预测准确,不同相片的拍摄视角可能也有不同,造成图3中显示的视差。不考虑视差去拼接的话,可能会造成重影等误差,视差越大,误差越严重。

通常为了避免这种伪影的出现,会使用到切割/缝合等方法,这些方法依赖能量函数最小化方法,但这样将耗费大量计算时间。缓解这种问题的最佳办法是使用多层次方法,通过全局对比场景保证远处视差小的物体也能配准,而局部对比可有选择性地将视差大的临近物体进行配准。

而VRWorks 360°视频SDK 2.0使用的是基于深度感知的配准拼接模式,将深度信息与单应矩阵结合来处理视差,在拼接之前配准图像。

利用基于深度的配准,临近物体拼接的质量有所提高

图5总结了深度配准方法的逻辑结构(流程图),先是使用单应矩阵配准图像,然后对比重叠部分,计算重叠部分的不一致,对比不一致重新配准重叠区域,最后一步是多波段融合(不同频率的图像叠加,不同频率使用不同权重来融合)。其中估测深度与在360°立体拼接中预测立体视差时,使用了NVIDIA独有的搜索算法。计算后得出的视差通过在重叠区域叠加空间扭曲来配准图像。配准后再拼接效果更好,尤其是在物体距离摄像头很近,或者多个摄像头视角造成视差出现时。

虽然深度预测与配准这一步增加了多波段融合每一帧的拼接时间,但是CUDA 10运算平台和图灵架构能够缓解这一步对实时拼接时间造成的影响。总的来讲,深度配准几乎不会增加拼接时间,而且使用的摄像头越多,图像产生的不一致就会越少。


使用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支持对特定区域的修改,可以只截取图像源有用的部分。这样一来,能够避免多与计算、减少内存占用,还能够提高端对端运行效率。

在360°全景图像中心截取的180x90°可视区域

有了自定义拼接,通过拼接渲染剪裁后的高分辨率区域(提高角像素密度),可以提升180°视频的画质,省去了完整的360°全景视频占用的内存。

此外,使用nvss_video API,用户可以自定义全景视频输出元的可视区域,通过nvssVideoStitcherProperties_t结构中的output_roi数据变量,可以输入可视区域的坐标,这些坐标必须在拼接之前标明,目前的SDK版本不支持在拼接过程中改变定义区域。

5,三维立体声音频

三维全景视频搭配模仿真实声音的立体声音频,可提高头显带来的沉浸感,人类大脑需要依靠声音强度的改变与产生的时间来定位声源,从而更好地感知周围的物理环境。比如,如果有人从后面叫你名字,你没有看到人就知道要回头,而三维立体声正式一种尽量保留三维全景视频在拍摄时捕捉到的声源方向的格式。

VRWorks 360°视频SDK 2.0支持初级B格式三维立体声,保存了拼接视频中声源与用户之间的相对关系数据,这样一来,就能够提高用户对视频声音的感知,优化VR头显中用语音引导和支持用户的UX。这项功能需要搭配封闭式的立体声系统,用户在这种立体声系统中听到的声音仿佛是从脑中传来的,此外空间音频会让用户感觉声源与周围环境更加融入,仿佛真的是从周围传来的。

通过将不同声源解码,然后进行混合,生成B格式的三维立体声

SDK 2.0支持NVSF库中的初级B格式三维立体声,用于录音的麦克风阵列可以是相机内置的,也可以是外设(如单点环绕立体声麦克风或球形立体声话筒)。下方视频展示了加入初级B格式三维立体声的360度视频效果:

https://v.qq.com/txp/iframe/player.html?width=500&height=375&auto=0&vid=k07523acefb

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°全景视频:

https://v.qq.com/txp/iframe/player.html?width=500&height=375&auto=0&vid=a07527z5bcz

下方视频是采用固定可视区域拍摄的平面视频:

https://v.qq.com/txp/iframe/player.html?width=500&height=375&auto=0&vid=k0753mlbtfq

VRWorks 360°视频SDK 2.0需要使用NVIDIA 411.63以上版本的显卡驱动,新版SDK中包括了API接口和样本应用、NVIDIA开发者编程指南,感兴趣的可以点击这里了解更多细节。

(END)


    推荐阅读    





 
每天五分钟,轻松了解前沿科技。    
         —— 青亭网  
 


    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存