新的視頻會議模式: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.pswp.cn/news/376773.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/376773.shtml
英文地址,請注明出處:http://en.pswp.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&#…