新的视频会议模式:StarlineProject

目录

    • 效果展示部分
    • 用户参与度部分
    • 技术细节
      • 机械装置以及硬件配置。
      • 视频系统
        • 照明
        • 人脸跟踪
        • 压缩和传输
        • 图像渲染
      • 音频系统
        • step1:捕获音频
        • step2:音频去噪处理
        • step3:压缩、传输、解压
        • step4:渲染
    • 可以改进的点

效果展示部分

〔映维网〕谷歌光场显示屏Project Starline

Starline 本质上是一个 3D 视频聊天室,旨在取代一对一的 2D 视频电话会议,让用户感觉就像坐在真人面前一样。

相互视频的人,不需要佩戴任何眼镜或者头盔,真实的就像坐在对面聊天。

用户参与度部分

google组织了117名参与者在九个月期间共举行308次会议,平均持续时间为35.2分钟,并产生了共有296份调查回复。

超过87%的调查回复Starline项目在在场感注意力个人联系反应评估四个方面,比传统视频会议略好或好得多。

(W-P)统计表明,所有情绪改善在统计上显著

他们回忆的会议内容相较于传统视频回忆大约多了28% ,参与者在我们的系统中也显著地表现出更多的非语言行为(手势、点头和眉毛运动),这有利于促进融洽的人际关系。

观察到的平均延迟为105.8 ms(标准偏差9.1 ms),在人类参与者感知同步对话所需的250 ms上限之内。

综合表明,即使Starline的3D重建在视觉上存在缺陷,仍然提供了一场更投入的交流体验。

技术细节

机械装置以及硬件配置。

首先来看看机械装置以及硬件配置。

Project Starline 系统围绕一个以 60Hz 运行的大型 65 英寸 8K 面板构建, 三个用于捕获彩色图像和深度数据的「捕获 pod」 , 还包括四个额外的追踪摄像头、四个麦克风、两个扬声器和一个红外投影仪 。

系统需要捕获来自四个视角的彩色图像以及三个深度图,共计七个视频流。系统还需要捕获 44.1 kHz 的音频,并以 256 Kbps 编码。

Project Starline 配备了四块高端 Nvidia 显卡(两块 Quadro RTX 6000 卡和两块 Titan RTX)来对所有这些数据进行编码和解码。

基于屏幕的系统的原因:
1、当前大多数AR和VR头盔的重量和不适
2、还消除了通过耳机捕捉人脸的困难
3、目前没有一款AR头盔有足够的视野跨越人体坐姿的宽度和高度。
所以选择了基于65英寸8K面板、33.1M全彩像素在60赫兹更新的头跟踪自动立体显示器。

视频系统

照明

选择漫射源的原因:
1、这种扩展的光线也比明亮的led直接照明更舒适。
2、完全一致的入射光线使人脸和其他3D形状看起来扁平和人造,阻碍了系统中的其他3D线索。

人脸跟踪

3D人脸追踪的重点在于定位眼睛、嘴巴、耳朵的位置。
眼睛的位置决定了渲染的立体视点,并且在显示的时候我们是需要引导左右视图指向对应的眼睛的。
嘴巴的位置使得音频捕获中的波束形成成为可能。
嘴和耳朵的位置有助于空间化音频渲染和串扰消除
3D人脸追踪的延迟大约是33ms,通过预测跟踪功能缓解延迟,但是又会放大噪声,导致渲染的视点抖动。采用双指数平滑 + 迟滞滤波器解决这个问题。

压缩和传输

对于压缩和传输方面
我们使用的是传统视频压缩传输多幅图像+立体重构的深度图。延迟融合,直到在接受端才渲染出左右眼视图。
颜色数据流和深度数据流使用H265编解码器 和 YUV420色度分采样进行编码。
颜色流每个channel使用8位,深度流每个channel10位。
省略双向编码(B)帧来减少编码和解码延迟。
这样就有7个视频流 + 跟踪的人脸点。将这个视频包到一个单一数据负载,使用WebRTC传输。
若传输超时,发送所有7个视频流的内部(I)帧来重新初始化
最终效果:产生的传输带宽在30~100Mbit/s,这取决于用户衣服中的纹理细节和他们手势的大小

图像渲染

每个立体深度图像的贡献以及由此产生的融合表面

我们将每一幅彩色图像投射到融合表面上,并使用从表面法线确定的混合权重(黄色)来组合这些图像

然后使用高斯滤波器自适应地沿深度不连续面模糊合成图像

而传统的3D图像建模渲染并非如此。

传统的TSDF步骤是这样的:

step1:在GPU显存中构建出一大块空区域volume,由多个voxel体素构成

step2:计算每个体素的TSDF值以及权重。SDF指的是它到最近的表面的距离,S代表截断

step3:得到一帧图像的TSDF结果,为0的体素表示物体的表面

step4:使用栅格更新法,也就是多个图片观测融合 。(其实是一个迭代形式的加权最小二乘解,通过不断按照上式融合观测值,可以构造出整个地图的 TSDF 场,并插值求出障碍物曲面 )

传统的体素融合是光线投射迭代采样预先计算的TSDF体素网格。

而Google的基于图像的方法通过投影采样输入深度图像并取加权平均值来实时评估融合的符号距离。

该方法在沿着光线前进时就进行了即时的TSDF融合,并使用CUDA将计算在光线上并行化,所以这个算法更加快速。

又因为它时读取缓存的2D纹理,避免创建了体素网格,所以这种方法相较于传统的计算TSDF来说更加节省显卡内存。

音频系统

音频子系统的设计目的是为了从声音环境中高质量地捕捉每个说话人的声音高保真压缩、传输和解压提取的声音,并将每个说话人的声音精确地、自然地三维空间化渲染给对方的听众。

step1:捕获音频

音频以44.1 kHz的采样率被采集,使用四个心型麦克风作为线性阵列排列在中间墙的下部捕获舱

音频捕获系统并没有执行“盲”声源分离来提取目标说话者,而是使用3D口部跟踪系统在自然对话过程中引导波束形成到说话者的嘴部。

step2:音频去噪处理

捕获之后依次执行下面的步骤:

1、环境降噪:系统只将两个参与者的声音从一端传到另一端

2、混响降低:收发双方均接受室内混响

3、声回波消除(AEC):扬声器播放的音频必须从麦克风捕获的信号中删除

那么我们是如何实现的呢?

  • 四个单向,心脏型麦克风是面向说话者的一般方向,创建了一个基本的方向接收模式,初始的噪声和混响减少。
  • 跟踪导向、超定向和噪声约束的最佳方向性波束形成。使用麦克风阵列来锐化定向接收,并进一步降低噪声和混响。
  • 自适应加权预测误差处理,进一步降低混响
  • WebRTC提供单通道降噪和AEC

step3:压缩、传输、解压

WebRTC可以进行压缩、传输和解压。

单通道44.1 kHz音频使用Opus编解码器(http://opus-codec.org/)以256 Kbps的目标速率进行编码。

WebRTC/Opus解码器处理传输相关因素,如采样率不匹配和丢包隐藏。

step4:渲染

音频捕获和渲染。立体声扬声器发出一个虚拟的双耳信号,利用串扰消除和振幅平移的混合组合,持续跟踪说话者和听者的位置。

首先,跟踪的说话者和听者的位置动态地结合一个通用的头部相关传递函数(HRTF)来产生一个实时跟踪的双耳信号。

头相关传输函数(Head Related Transfer Function;HRTF)用于描述声波从声源到双耳的传输过程,是一种声音定位算法。当声音向我们传输而来时,HRTF将对应于我们头部的相位与频率响应。

对于头相关传输函数HRTF,它们描述了人类解剖结构对来自任何给定位置的声音所产生的影响。

然后,利用听者跟踪双耳串扰消除将双耳信号转换为立体声扬声器输出具有相同的HRTF模型。

如果耳朵位置跟踪不准确,会导致人耳可听的高频噪声。

所以我们的处理是这样的:

  • 小于1500hz,耳间时差(ITD)提示主导感知声音定位
  • 大于1500hz,使用基于矢量的振幅平移的泛化方法对扬声器输出进行加权

左右耳朵的音量差异据取决于耳间水平差(interaural level difference;ILD),其中的延迟则称作耳间时间差(interaural time difference;ITD)或双耳时间差(binaural time difference)。

可以改进的点

1、在图像系统中,对于稀薄和半透明的几何形状(如头发和眼镜)、深凹和快速运动可能会导致重构深度图中的错误或空洞,从而导致不正确的几何和纹理错误。需要进行进一步的工作来克服这种伪迹。可以在渲染端部署相关去伪迹算法。

2、目前的视频压缩标准会利用视图中冗余减少总体带宽,但是主要是针对于相机阵列,缺乏实时编码实现。

3、期待更大像素密度的显示器以及新的显示器架构

4、Starline项目并没有创建并发送捕获用户的合并3D表示,而是**使用传统视频压缩传输多幅彩色图像和立体重构的深度图并且延迟它们的“融合”,直到在接收客户端渲染左右眼视图。**如果能找到一种合适的3D表示,可以在编码端合并之后再传输,减少带宽压力。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/376773.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HDU 3934

/*这是用的有旋转卡壳的思想。 首先确定i,j,对k进行循环,知道找到第一个k使得cross(i,j,k)>cross(i,j,k1),如果ki进入下一次循环。 对j,k进行旋转,每次循环之前更新最大值,然后固定一个j,同样…

[ios] UILocalNotification实现本地的闹钟提醒【转】

http://www.cnblogs.com/jiangshiyong/archive/2012/06/06/2538204.html转载于:https://www.cnblogs.com/jinjiantong/archive/2013/04/01/2992624.html

sql server根据表中数据生成insert语句

几个收藏的根据数据库生成Insert语句的存储过程[修正版]----根据表中数据生成insert语句的存储过程--建立存储过程,执行spGenInsertSQL 表名--感谢playyuer----感谢szyicol--CREATEproc[dbo].[spGenInsertSQL](tablenamevarchar(256))asbegindeclaresqlvarchar(8000…

Javascript eval()函数 基础回顾

如果您想详细了解ev al和JSON请参考以下链接: eval :https://developer.mozilla.org/En/Core_JavaScript_1.5_Reference/Global_Functions/Eval JSON:http://www.json.org/ eval函数的工作原理 eval函数会评估一个给定的含有JavaScript代码的…

杂感无题|

今天中午和组里面的人吃饭,聊起了科兴跳楼的事情。这事其实前几天我华为的mentor就转给我了,当时也没太在意,在脉脉上看了看,也不知晓是谁,想着可能又是抑郁症吧。 饭后依旧绕着食堂散步,ly说那个人好像还是…

uva1366_Martian Mining_简单DP

题目不难,却想了好长时间,目测自己DP还是很水。。。囧 思路:舍f[i][j]为前i行j列的最大矿总量不难推出状态转移方程为f[i][j]max(f[i-1][j]line[i][j],f[i][j-1]row[j][i]) 其中line[i][j]为第i行前j个A矿的和(a[i][1]a[i][2]...a…

数学图形之Boy surface

这是一个姓Boy的人发现的,所以取名为Boy surface.该图形与罗马图形有点相似,都是三分的图形.它甚至可以说是由罗马曲面变化而成的. 本文将展示几种Boy曲面的生成算法和切图,使用自己定义语法的脚本代码生成数学图形.相关软件参见:数学图形可视化工具,该软件免费开源.QQ交流群: …

开个定时器给echarts组件配置定时更新

我在js文件中开了个定时器,每1s从后端获取数据并解析,然后用异步方法就渲染不出来,改成同步就可以了。 这个解决方法来自于这篇文章,我出的问题和他一样:关于ajax中readyState的值一直为1的问题 这里将ajax参数修改为f…

SDK 操作 list-view control 实例 -- 遍历进程

遍历窗口,获得控件句柄 1 EnumChildWindows(hwndDlg, (WNDENUMPROC)EnumChildProc, NULL); 回调函数 1 BOOL CALLBACK EnumChildProc(HWND hwnd, LPARAM lParam )2 {3 char strCLSName[MAXBYTE] {0};4 GetClassName(hwnd, strCLSName, MAXBYTE);5 if (…

推荐一份不错的清除默认样式的CSS样式

时间过得真快,离 Reset CSS 研究(八卦篇) 已经 3 个多月了。废话少说,赶紧将技术篇写完吧。 回顾与反思 第一份 reset css 是 Tantek 的 undohtml.css, 很简单的代码,Tantek 根据自己的需要,对浏览器的默认…

python深浅拷贝

在python中,对象赋值实际上是对象的引用。当创建一个对象,然后把它赋给另一个变量的时候,python并没有拷贝这个对象,而只是拷贝了这个对象的引用。 所以一个结构类型被赋给另外一个对象的时候,尽可能不使用 &#xff…

Flash中的SLC/MLC/MLC--基础

参考 1.http://www.upantool.com/jiaocheng/qita/2012/slc_mlc_tlc.html 2.http://www.2ic.cn/html/10/t-432410.html 3.http://kms.lenovots.com/kb/article.php?id15382 4.http://www.albertknight.com/222.html 5.http://ssd.zol.com.cn/371/3716632.html 6.这个图比较多 h…

python定义对象的比较方法

有时候我们需要比较两个对象。比如哪个对象大,哪个对象小。如果我们不告诉python如何比较,那么Python是不知道如何进行比较的。 下面提供实例 #__eq__(self,other): #在使用比较运算符比较两个对象是否相等的时候会调用这个方法。 #如果是相等,那么应该返…

关于Oracle Insert 语句的子查询 和 with check option的用法

今日睇ocp教程 发现 insert语句还可以子查询例如:INSERT INTO (SELECT employee_id, last_name, email, hire_date, job_id, salary, department_id FROM employees where department_id 50 )VALUES (9999…

apple mac 下使用机械键盘的办法,键盘映射工具软件,apple mac Mechanical keyboard

apple mac 下使用机械键盘的办法,键盘映射工具软件,apple mac Mechanical keyboard 想在苹果电脑 mac 系统下使用 机械键盘,大部分机械键盘不是为mac设计的,所以需要用软件做一下键盘映射。 推荐使用这个:https://pqrs…

Python中键映射多个值的方法:defaultdict

Python中键映射多个值的方法有两种: 想保持元素的插入顺序就应该使用列表; 想去掉重复元素就使用集合并且不关心元素的顺序问题的话应该使用set from collections import defaultdictmapping defaultdict(list)mapping [key].append(value)mapping d…

该不该让Google收录WordPress的目录页和标签页?

只要有一点SEO知识的 站长都会注意利用相关文件和元标签来控制Google对网站的收录,对于WordPress网站来说,除了我们主动添加的内容页面,Google还会收录目录归档页,标签归档页,时间归档页,以及作者归档页。这…

【原创】MapReduce编程系列之表连接

问题描述需要连接的表如下:其中左边是child,右边是parent,我们要做的是找出grandchild和grandparent的对应关系,为此需要进行表的连接。 Tom Lucy Tom Jim Lucy David Lucy Lili Jim Lilei Jim SuSan Lily Green Lily Bians Green…

python logging模块简单使用

logging 是线程安全的,也就是说,在一个进程内的多个线程同时往同一个文件写日志是安全的。 但是多个进程往同一个文件写日志不是安全的。 import loggingLOG_FORMAT "%(asctime)s - %(levelname)s - %(message)s" DATE_FORMAT "%m/%d/…

OpenACC 中parallel 和kernels的区别

Kernels构件 Kernels构件源于PGI Accelerator模型的region构件。嵌套kernels构件里的循环可能会被编译器转换成能在GPU上高效并行的部分。在这个过程中有三步。 1:判断并行中遇到的循环。 2:把抽象的并行转换成硬件上的并行。对于NVIDIA CUDA GPU&#…