編譯/VR陀螺
Mike Swanson是一名技術(shù)專家,曾在微軟工作了12年,離職后花費5年時間便攜獨立iOS應(yīng)用,后來從2016年初開始,在西雅圖的一家沉浸式視頻初創(chuàng)公司(名為 Pixvana)持續(xù)工作了4年。如今蘋果Vision Pro推出后重新激發(fā)了人們對視頻格式的研究興趣,為此Mike Swanson分享了他在沉浸式視頻領(lǐng)域的經(jīng)驗,以及對蘋果魚眼投影格式的分析與測試情況。
以下為VR陀螺基于Mike Swanson博客原文編譯整理(第一人稱視角),略有修改:
如果您閱讀過我此前關(guān)于對蘋果空間視頻的概念以及編碼方面的分析與試驗,或者使用過我的空間視頻命令行工具Spatial,那么您可能還記得曾經(jīng)提到過的蘋果“魚眼”投影格式,它之所以具有神秘色彩,是因為他們沒有詳細(xì)說明CMProjectionType.fisheye,即他們以這種格式傳輸沉浸式Apple TV+視頻,但他們沒有提供使用這種投影類型生成或播放第三方內(nèi)容的方法。
相關(guān)閱讀:《技術(shù)專家Mike Swanson:探究蘋果空間視頻與沉浸式視頻》
CMProjectionType.fisheye(圖源:蘋果)
此外,該格式?jīng)]有記錄,蘋果沒有回答開發(fā)者論壇上要求公開更多細(xì)節(jié)的提問,也沒有在WWDC23開發(fā)教程中提到它。作為一個在該領(lǐng)域有經(jīng)驗的人并保持著不懈的好奇心,我花時間深入研究了蘋果的魚眼投影格式,這篇文章分享了我在探索相關(guān)問題時所學(xué)到的知識。
正如之前所述,我不是蘋果員工,我在這里寫的所有內(nèi)容都是基于我自己的經(jīng)驗(特別是我在2016年至2020年在沉浸式視頻初創(chuàng)公司Pixvana的任職經(jīng)歷)以及研究和試驗。我深知其中一些信息是不正確的,為此我希望我們都能在WWDC24(6月10日至14日)上獲得更多更準(zhǔn)確的信息。
如何理解球形內(nèi)容(Spherical Content)
此時想象一下自己坐在轉(zhuǎn)椅上,直視前方。如果您再抬頭看著天頂(Zenith),則是90度。同樣,如果是低頭看著最低點(Nadir)也是90度。因此,您在現(xiàn)實中看到的總垂直FOV為90度+90度=180度。
另外,還是在同一個位置上,向左旋轉(zhuǎn)90度或再向右旋轉(zhuǎn)90度,則可以看到完整的180度的水平FOV。如果再轉(zhuǎn)動椅子看向“后半部分”,就相當(dāng)于獲得了360度的FOV內(nèi)容。
實際上當(dāng)我們談?wù)摮两揭曨l時,通常只提到水平FOV(如180度或360度),并假設(shè)垂直FOV始終為180度。當(dāng)然,這不一定是準(zhǔn)確的,因為我們可以隨意捕獲、編輯和播放任何內(nèi)容。
但是,當(dāng)有人提到“VR180”之類的名詞時,他們實際上指的是具有180度水平FOV×180度垂直FOV的沉浸式視頻。同樣,360度視頻是水平360度×垂直180度。
當(dāng)在蘋果Vision Pro、Meta Quest或其他設(shè)備中播放沉浸式視頻時,內(nèi)容的顯示方式就好比觀看者的眼睛位于球體的中心,觀看顯示在球體內(nèi)表面的視頻。能直觀地感受到180度的內(nèi)容顯示為一個半球,360度的內(nèi)容顯示為一個完整的球體。但它實際上可以是介于兩者之間的形式;在Pixvana,我們會將其稱為任意度(any-degree)視頻。
那么我們?nèi)绾螌@種身臨其境的球形內(nèi)容進(jìn)行編碼?所有常見的視頻編解碼器(H.264、VP9、HEVC、MV-HEVC、AVC1等)都是為編碼和解碼矩形幀之間的數(shù)據(jù)而設(shè)計的。如何拍攝地球的球形圖像(即地球儀)并將其存儲為矩形呢?對我來說,這聽起來像是形容一張地圖。事實上,這種轉(zhuǎn)換在制圖學(xué)中被稱為“地圖投影”(Map projection)。
等距柱狀投影格式
雖然有許多不同的投影類型,每種投影類型在特定情況下都具備有用的屬性。但球面視頻和圖像最常使用等距柱狀投影格式。其轉(zhuǎn)換執(zhí)行起來非常簡單(看起來比實際復(fù)雜)矩形圖像上的每個x位置表示球體上的一個經(jīng)度值,每個y位置表示球體上的一個緯度值,這種也可稱為緯度/經(jīng)度(lat/long)投影。
想象一下,從赤道開始,在地球儀上“剝離”一度高的條帶。要將其轉(zhuǎn)換為矩形,首先將該條帶水平粘貼到平面的中間(橫向)。然后繼續(xù)以一度的增量向上或向下剝離和粘貼。一定要把每條帶拉伸到和第一條一樣長,這意味著北極和南極的非常短的條帶被拉伸了很多。但完成后,您將獲得一個360度的等距柱狀投影,如下圖A所示。
圖源:網(wǎng)絡(luò)
同理,從半個地球儀上“剝離”一度高的條帶,最終會得到一個180度的等距柱狀投影,有時稱為半等距柱狀投影(half-equirect)。以數(shù)字形式,通常為每度的圖像數(shù)據(jù)分配相同數(shù)量的像素。因此,對于完整的360度x180度等距,矩形視頻幀的圖像縱橫比為2:1(水平尺寸是垂直尺寸的兩倍)。對于180度x180度的視頻,圖像縱橫比為1:1(正方形)。這些不是硬性規(guī)定,并且出于技術(shù)原因,有時幀會水平或垂直拉伸以適應(yīng)編碼器或播放設(shè)備的能力。
這是一張180度半等距柱狀投影圖像,上面覆蓋了網(wǎng)格以說明其圖像失真變形情況。下圖是根據(jù)上述原理以標(biāo)準(zhǔn)魚眼圖像創(chuàng)建的。
圖源:Mike Swanson
到目前為止,我們所描述的相當(dāng)于單視場(2D)視頻。對于立體(3D)視頻,我們需要在每一幀中包含兩幅這樣的圖像(每只眼睛)。通常是通過將兩個圖像并排或上/下排列來實現(xiàn)的。對于采用上/下排列的完整360度立體視頻,將使得最終視頻幀的比例為1:1(因為我們現(xiàn)在在兩個維度上都有360度的圖像數(shù)據(jù))。正如我之前在之前的文章所述,蘋果選擇使用MV-HEVC對立體視頻進(jìn)行編碼,因此每只眼睛的投影都存儲在自己的專用視頻層(layer)中,這意味著視頻工具報告的視頻尺寸與單只眼睛看到的畫面尺寸互相匹配。
標(biāo)準(zhǔn)魚眼鏡頭
大多數(shù)用于拍攝沉浸式場景的相機都具有一個或多個魚眼鏡頭。要拍攝180度立體(立體的簡稱)視頻的相機幾乎都是兩個魚眼鏡頭并排配置,間隔大約63-65mm,與人眼之間的距離相近(例如市面上的VR180相機)。
佳能雙魚眼鏡頭(圖源:網(wǎng)絡(luò))
這些相機捕獲的原始幀被記錄為魚眼圖像,其中每個圓形圖像區(qū)域代表~180 度(或更多)的視覺內(nèi)容。在大多數(shù)工作流程中,這些原始魚眼圖像會被轉(zhuǎn)換為等距柱狀投影或半等距柱狀投影,以便最終傳輸和播放。
這是一張180度標(biāo)準(zhǔn)魚眼圖像,圖面同樣覆蓋著網(wǎng)格(也是本文中其他相關(guān)圖片的來源)。
圖源:Mike Swanson
蘋果的魚眼投影格式不同于現(xiàn)有魚眼格式
到這就是這篇文章的主題。正如我在前文中提到的,蘋果已經(jīng)以“魚眼”投影格式對其沉浸式視頻的原始幀進(jìn)行了編碼。實際上我監(jiān)視了蘋果Vision Pro的網(wǎng)絡(luò)流量,而且我看到了描述每個網(wǎng)絡(luò)流的HLS流清單(視頻點播 VOD)。這就是我最初發(fā)現(xiàn)并報告這些數(shù)據(jù)流的方式:在最高質(zhì)量的表現(xiàn)中,每眼大約50Mbps,HDR10,4320x4320,90fps。
雖然我可以看到流量情況,但我無法查看原始視頻幀,因為所有沉浸式視頻都受DRM(數(shù)字版權(quán)管理)加密保護(hù)。這是非常合理的,盡管我對蘋果魚眼鏡頭的原始幀充滿好奇,但無法再繼續(xù)深入研究了,除非有更多對魚眼投影類型有了解的人進(jìn)一步作解釋,或只能等待WWDC24到來。
經(jīng)好友推薦我聯(lián)系上了Andrew Chang,他表示也監(jiān)控了自己的網(wǎng)絡(luò)流量,并意外地發(fā)現(xiàn)Apple TV+的介紹片段(沉浸式版本)是以清晰的方式傳輸?shù)模聦嵣纤彩且酝瑯拥聂~眼投影方式編碼的。
Andrew Chang提到的視頻片段(圖源:YouTube)
現(xiàn)在,我終于可以看到一個原始的魚眼視頻幀了。不幸的是,畫面大部分是黑色的,沒有特點,只包括一個Apple TV+的logo和一些God rays效果(丁達(dá)爾光效)。由于我在實際應(yīng)用和實驗投影類型方面都有不少經(jīng)驗,我想自己再進(jìn)行研究(但Apple TV+的logo和原始畫面的視頻不能在此發(fā)布)。
很快我就發(fā)現(xiàn),僅基于logo的失真變形,蘋果的魚眼投影格式與標(biāo)準(zhǔn)魚眼錄制格式有明顯不同。這并不奇怪,因為只在矩形幀中心的圓形區(qū)域進(jìn)行編碼,而將其余部分保留為黑色是沒有意義的;一般來說會希望使用視頻幀中的所有像素來發(fā)送盡可能多的數(shù)據(jù)(如前面所述的等距柱狀投影格式)。
此外,畫面中的logo不是水平對齊的,而是將畫面順時針旋轉(zhuǎn)45度,使其與從畫面左上角到右下角的對角線對齊。因為對角線是視頻幀的最長尺寸,與完全不旋轉(zhuǎn)的畫面相比,它可以存儲更多的水平(旋轉(zhuǎn)后)像素。
這是將標(biāo)準(zhǔn)魚眼圖像原圖轉(zhuǎn)換成與蘋果魚眼投影格式非常相近的格式。
圖源:Mike Swanson
從左下角到右上角的對角線表示視頻幀播放的垂直維度(旋轉(zhuǎn)后同理),同樣增加了可用像素。這意味著,在旋轉(zhuǎn)播放期間,現(xiàn)在的對角線方向應(yīng)包含最少的圖像數(shù)據(jù)。如果能正確調(diào)整,它可能不會太明顯,這仍值得注意。
關(guān)于“額外”像素以及Blender測試
您可能會問,這些“額外”像素從何而來?我的意思是,如果我們從相機拍攝的傳統(tǒng)原始圓形魚眼圖像開始,然后將其拉伸以覆蓋矩形幀,我們得到了什么?
這些都是會引申出富有各種可能性答案的好問題。我會將視頻處理比作在波音747駕駛艙操作:如果您轉(zhuǎn)動駕駛艙其中一個旋鈕,就很可能需要改變其他東西或轉(zhuǎn)動更多的旋鈕來平衡它。以此類推,視頻處理經(jīng)常面臨這樣的優(yōu)化問題(Optimization problem),為此我在這里列了一些關(guān)于答案的初步想法:
- 源視頻可能是以較高分辨率拍攝的,并且當(dāng)將視頻轉(zhuǎn)換為較低的分辨率時,通過利用矩形幀來保留“額外”圖像數(shù)據(jù)。
- 可能相機在拍攝過程中通過光學(xué)方式(使用物理鏡頭)轉(zhuǎn)換了圓形魚眼鏡頭圖像,以填充更多的矩形傳感器捕獲的圖像數(shù)據(jù)。這意味著還有額外的圖像數(shù)據(jù)需要處理,而以這種擴展的魚眼格式存儲,可以保留更多的數(shù)據(jù)。
- 同樣,如果我們使用兩個以上的鏡頭記錄圖像,在轉(zhuǎn)換過程中需要保留的數(shù)據(jù)也會更多。值得一提的是,蘋果似乎有用一對雙魚眼鏡頭拍攝了Alicia Keys的沉浸式視頻。
除了文中提到的,還有許多其他因素會影響蘋果魚眼投影格式的設(shè)計。其中一些包括失真處理、分配給每個像素的區(qū)域大小、幀中“最重要的”像素的位置、高頻細(xì)節(jié)如何影響編碼器性能、變換幀中的失真運動如何影響運動估計效率、在回放過程中如何對像素進(jìn)行采樣和顯示等等。
回到原始的蘋果魚眼畫面,得知圖像代表大約180度后,我通過Blender開始根據(jù)可見的失真扭曲猜測回放后可能出現(xiàn)的幾何形狀。關(guān)于這一點,我不確定該幀是否對回放幾何體的面進(jìn)行編碼,或者失真是否與另一種數(shù)學(xué)映射有關(guān)。然而,有些失真比預(yù)想的要嚴(yán)重,我的大腦無法想象什么樣的網(wǎng)格可以糾正這些失真。
在Blender中試驗過的眾多網(wǎng)格和UV貼圖之一(圖源:Mike Swanson)
關(guān)于徑向拉伸(Radial Stretching)
Paul Bourke是投影映射、魚眼鏡頭、等距柱狀投影圖像、相機校準(zhǔn)、立方體映射技術(shù)等領(lǐng)域的專家,所以我聯(lián)系了他,看看他是否有任何見解。
經(jīng)過幾周的反復(fù)討論,我們都同意蘋果的魚眼投影與一種稱為“radial stretching”(徑向拉伸)的技術(shù)最相似(順時針旋轉(zhuǎn)45度)。您可以通過文末的文章鏈接閱讀有關(guān)技術(shù)的更多信息。
圖源:Paul Bourke
現(xiàn)在想象一個傳統(tǒng)的居中圓形魚眼圖像,它觸及正方形框架的每個邊緣。類似于我之前描述的地球儀的等距柱狀帶“剝離”操作,想象一下從圖像中心放射狀剝離一度寬的條帶,并沿相同角度拉伸它們,直到它們接觸到方形框架的邊緣。顧名思義,這就是徑向拉伸。
通過在原始蘋果魚眼鏡頭的幀上執(zhí)行此操作的反向操作,最終會得到一個相當(dāng)好看的Apple TV+ logo版本。但這不是100%正確的。似乎在對角線使用了一些額外的邏輯以減少徑向拉伸和失真的數(shù)量(并且可能使圖像數(shù)據(jù)遠(yuǎn)離編碼角)。我已經(jīng)嘗試了許多方法,但仍然無法實現(xiàn)100%匹配。到目前為止,我的最佳猜想是使用簡單的斜角,這與我在早期圖像中使用的轉(zhuǎn)換方式相同。
圖源:Mike Swanson
這最后一點失真也有可能是用特定的投影幾何體形成的,我已經(jīng)嘗試了許多接近的排列組合......但總是不沒能達(dá)到完全相同的目的。但如果蘋果是根據(jù)特定的幾何圖形進(jìn)行編碼,我會稍感驚訝,因為它會給工具流程增加不必要的復(fù)雜性并降低整體靈活性。
雖然我已經(jīng)能夠使用我所描述的技術(shù)播放Apple TV+logo視頻,但視頻幀在其中心之外缺乏真實的細(xì)節(jié)。因此,我得到的映射仍然有可能在外圍出現(xiàn)問題。我想我會繼續(xù)祈禱在WWDC24上了解更多信息。
寫在最后
這篇文章介紹了我對蘋果魚眼投影格式的技術(shù)方面的實驗。一路走來,我與多位朋友合作解決細(xì)節(jié)問題的過程非常有趣。雖然我們無法找到100%正確的解決方案,但相信我們是在可行的范圍內(nèi),離真正的道路并不遠(yuǎn)。
我還有些問題,為什么有人會選擇這種投影格式而不是半等距柱狀投影格式。顯然,蘋果相信這種投影格式有價值,否則他們就不會費心重新建立一個工具流程來捕獲、處理和傳輸這種格式的視頻。我可以想象到一些可能的優(yōu)勢,例如本文提到的保存“額外”像素。隨著時間的流逝,我相信當(dāng)現(xiàn)有工具支持他們的魚眼投影格式時,屆時我們能從蘋果公司本身和實驗中學(xué)到更多,而且人人都可以進(jìn)行沉浸式視頻的實驗。
這是一個激動人心的時刻,感謝蘋果能讓我們重新審視沉浸式視頻。
參考鏈接:
對蘋果魚眼投影格式的理解(原文鏈接)——https://blog.mikeswanson.com/apples-mysterious-fisheye-projection/
關(guān)于球體、圓盤和方形之間的映射——https://jcgt.org/published/0005/02/01/
關(guān)于方形/圓盤映射(Marc B. Reynolds)——https://marc-b-reynolds.github.io/math/2017/01/08/SquareDisc.html)
投稿/爆料:tougao@youxituoluo.com
稿件/商務(wù)合作: 六六(微信 13138755620)
加入行業(yè)交流群:六六(微信 13138755620)
版權(quán)申明:本文為VR陀螺原創(chuàng),任何第三方未經(jīng)授權(quán)不得轉(zhuǎn)載。如需轉(zhuǎn)載請聯(lián)系微信:vrtuoluo233 申請授權(quán),并在轉(zhuǎn)載時保留轉(zhuǎn)載來源、作者以及原文鏈接信息,不得擅自更改內(nèi)容,違規(guī)轉(zhuǎn)載法律必究。文中有圖片、視頻素材來自互聯(lián)網(wǎng)或無法核實出處,如涉及版權(quán)問題,請聯(lián)系本網(wǎng)站協(xié)商處理。
元宇宙數(shù)字產(chǎn)業(yè)服務(wù)平臺
下載「陀螺科技」APP,獲取前沿深度元宇宙訊息