易思范

斯坦福大学提出采用RGBD摄像头的高帧率,低延迟AR头显系统

数字城市

2019年10月10日

  日前,斯坦福大学的Hanseul Jun和Jeremy N. Bailenson等人发布了名为《An Easy-to-use Pipeline for an RGBD Camera and an AR Headset》的论文,并介绍了他们利用单个RGBD摄像头来支持AR头显的实验。

  团队表示,这一研究的贡献在于为采用现成硬件的工作系统提供可用代码,而非为计算机视觉或图形学提供先进的理论。当前的研究用一个搭载RGBD摄像头(微软Kinect v2)的系统来捕获人物,并通过AR头显(微软HoloLens)来显示场景。尽管保真度低于选择多摄像头的其他系统,但所述系统的帧率高,延迟低,且可移动,因为它不需要一台渲染计算机。

  系统的硬件端由两方面组成:配备Kinect v2的笔记本电脑和HoloLens。 软件端同时包括两个方面:将像素从Kinect v2发送到HoloLens;以及由HoloLens渲染像素。所述过程面临三个挑战,而这三个挑战来自于设备的三个特征:

  Kinect v2产生大量数据。

  HoloLens需要无线传输。

  HoloLens具有较低的计算能力。

  面临的挑战是:

  a. 由于(1)和(2),需要压缩。

  b. 由于(a)和(3),需要计算有效的解压缩。

  c. 由于(3),需要一种有效的渲染技术。

  1. 压缩与解压缩

  Kinect v2具有彩色像素和深度像素。对于彩色像素,团队采用VP8编解码器,并通过libvpx和FFmpeg进行编码和解码。尽管H.264至少表现出相同的性能,但团队选择VP8的原因是libvpx基于修订的BSD许可,而这与团队提供系统源代码的目标一致。对于深度像素,由于需要避免有损压缩的不确定性,所以团队选择RVL(Wilson,2017)进行压缩,因为它的计算成本低且无损。图1概述了团队系统的压缩和解压缩过程。

  2. 压缩阶段

  利用接到Kinect v2的笔记本,libvpx将彩色像素编码为VP8帧,并将深度像素RVL压缩为RVL帧。执行这一功能时,由于彩色像素的分辨率(1920×1080)较于深度像素(512×424)过大,所以彩色像素的分辨率在宽度和高度减少一半,特别是对于团队的可视化技术而言(其将每个深度像素与颜色值配对)。两种像素都通过无线网络发送到HoloLens。

  3. 解压缩阶段

  团队的系统使用FFmpeg解码编码后的彩色像素,并将解码后的像素转换为三个8位单通道Direct3D纹理,其中每个纹理都属于YUV的颜色通道。为了避免从YUV420(一种视频流式传输的主要颜色空间,因为它允许在U通道和V通道进行4倍压缩)转换到高计算量的RGB,团队选择在YUV颜色空间中创建纹理。另外, 为避免将解码后的像素重新排列为单个纹理,团队使用了三个纹理而非一个。接下来,用RVL压缩的像素将解压缩为16位单通道Direct3D纹理。

  4. 渲染阶段

  借助YUV纹理和深度纹理,HoloLens可以将深度纹理的每个像素渲染为漂浮在空间上的四边形,并使用YUV纹理中的颜色值对四边形进行着色。团队的渲染技术需要使用由Kinect v2的intrinsic variable预先计算的网格。在具有深度纹理的顶点着色器中,预先计算的网格变成反映深度纹理深度值的一组点。在几何着色器中,所述点变为四边形。四边形的大小选择为不影响相邻四边形的最大大小。最后,在片段着色器中,根据YUV纹理对四边形进行着色。图2是团队的渲染技术示例。

  团队发布系统代码的目的是,支持大家将其用作AR头显应用程序开发的基础,尤其是远程呈现系统。尽管渲染质量远非完美,但团队希望这个系统能够提供一种便携的,支持现成硬件的经验证方法(无需机器进行渲染),从而为开发者,研究人员和消费者带来帮助。

  相关论文:An Easy-to-use Pipeline for an RGBD Camera and an AR Headset

  5. 源代码

  系统的源代码已经托管至GitHub。

+1

来源:映维网

推荐文章