?
日前,斯坦福大學的Hanseul Jun和Jeremy N. Bailenson等人發(fā)布了名為《An Easy-to-use Pipeline for an RGBD Camera and an AR Headset》的論文,并介紹了他們利用單個RGBD攝像頭來支持AR頭顯的實驗。
團隊表示,這一研究的貢獻在于為采用現(xiàn)成硬件的工作系統(tǒng)提供可用代碼,而非為計算機視覺或圖形學提供先進的理論。當前的研究用一個搭載RGBD攝像頭(微軟Kinect v2)的系統(tǒng)來捕獲人物,并通過AR頭顯(微軟HoloLens)來顯示場景。盡管保真度低于選擇多攝像頭的其他系統(tǒng),但所述系統(tǒng)的幀率高,延遲低,且可移動,因為它不需要一臺渲染計算機。

圖片:系統(tǒng)壓縮和解壓縮概述。壓縮階段適用于連接到Kinect v2的筆記本電腦。壓縮之后,VP8幀和RVL幀將傳輸?shù)紿oloLens。解壓縮階段用于接收幀的HoloLens。
系統(tǒng)的硬件端由兩方面組成:配備Kinect v2的筆記本電腦和HoloLens。軟件端同時包括兩個方面:將像素從Kinect v2發(fā)送到HoloLens;以及由HoloLens渲染像素。所述過程面臨三個挑戰(zhàn),而這三個挑戰(zhàn)來自于設備的三個特征:
-
Kinect v2產(chǎn)生大量數(shù)據(jù)。
-
HoloLens需要無線傳輸。
-
HoloLens具有較低的計算能力。
面臨的挑戰(zhàn)是:
a. 由于(1)和(2),需要壓縮。
b. 由于(a)和(3),需要計算有效的解壓縮。
c. 由于(3),需要一種有效的渲染技術。
1. 壓縮與解壓縮
Kinect v2具有彩色像素和深度像素。對于彩色像素,團隊采用VP8編解碼器,并通過libvpx和FFmpeg進行編碼和解碼。盡管H.264至少表現(xiàn)出相同的性能,但團隊選擇VP8的原因是libvpx基于修訂的BSD許可,而這與團隊提供系統(tǒng)源代碼的目標一致。對于深度像素,由于需要避免有損壓縮的不確定性,所以團隊選擇RVL(Wilson,2017)進行壓縮,因為它的計算成本低且無損。圖1概述了團隊系統(tǒng)的壓縮和解壓縮過程。
2. 壓縮階段
利用接到Kinect v2的筆記本,libvpx將彩色像素編碼為VP8幀,并將深度像素RVL壓縮為RVL幀。執(zhí)行這一功能時,由于彩色像素的分辨率(1920×1080)較于深度像素(512×424)過大,所以彩色像素的分辨率在寬度和高度減少一半,特別是對于團隊的可視化技術而言(其將每個深度像素與顏色值配對)。兩種像素都通過無線網(wǎng)絡發(fā)送到HoloLens。
3. 解壓縮階段
團隊的系統(tǒng)使用FFmpeg解碼編碼后的彩色像素,并將解碼后的像素轉換為三個8位單通道Direct3D紋理,其中每個紋理都屬于YUV的顏色通道。為了避免從YUV420(一種視頻流式傳輸?shù)闹饕伾臻g,因為它允許在U通道和V通道進行4倍壓縮)轉換到高計算量的RGB,團隊選擇在YUV顏色空間中創(chuàng)建紋理。另外, 為避免將解碼后的像素重新排列為單個紋理,團隊使用了三個紋理而非一個。接下來,用RVL壓縮的像素將解壓縮為16位單通道Direct3D紋理。
4. 渲染階段
借助YUV紋理和深度紋理,HoloLens可以將深度紋理的每個像素渲染為漂浮在空間上的四邊形,并使用YUV紋理中的顏色值對四邊形進行著色。團隊的渲染技術需要使用由Kinect v2的intrinsic variable預先計算的網(wǎng)格。在具有深度紋理的頂點著色器中,預先計算的網(wǎng)格變成反映深度紋理深度值的一組點。在幾何著色器中,所述點變?yōu)樗倪呅巍K倪呅蔚拇笮∵x擇為不影響相鄰四邊形的最大大小。最后,在片段著色器中,根據(jù)YUV紋理對四邊形進行著色。圖2是團隊的渲染技術示例。
團隊發(fā)布系統(tǒng)代碼的目的是,支持大家將其用作AR頭顯應用程序開發(fā)的基礎,尤其是遠程呈現(xiàn)系統(tǒng)。盡管渲染質量遠非完美,但團隊希望這個系統(tǒng)能夠提供一種便攜的,支持現(xiàn)成硬件的經(jīng)驗證方法(無需機器進行渲染),從而為開發(fā)者,研究人員和消費者帶來幫助。
相關論文:
An Easy-to-use Pipeline for an RGBD Camera and an AR Headset
https://vhil.stanford.edu/mm/2019/10/jun-presence-pipeline.pdf
?
(文章轉載自映維網(wǎng),原文鏈接:https://yivian.com/news/67247.html)?