雷鋒網(wǎng)按:本文作者Slyvia&Trista,由ARinChina編譯自 Facebook Code的《 360 video stabilization: A new algorithm for smoother 360 video viewing》 。
本文主要介紹了1)Facebook視頻穩(wěn)定技術(shù)的新算法結(jié)構(gòu);2)其工作原理;3)其表現(xiàn)性能;4)延時攝影算法。
從專業(yè)相機到消費者手持攝像機,目前市面上已有數(shù)十款可以拍攝 360 度視頻的相機,規(guī)格和質(zhì)量也各有千秋。隨著這些相機的普及,360 度視頻內(nèi)容的范圍和容量也在不斷擴大,人們開始在各種場合和環(huán)境中拍攝 360 度視頻。
然而,拍攝時卻很難避免晃動、保持相機穩(wěn)定,特別是用手持相機拍攝運動對象(如騎山地自行車和徒步旅行)的時候。到目前為止,大多數(shù)視頻穩(wěn)定技術(shù)都是為窄視場視頻設(shè)計的,如用手機拍攝的傳統(tǒng)視頻,但這些技術(shù)在拍攝 360 度視頻時卻不怎么好用。
因此,F(xiàn)acebook 決定為拍攝 360 度視頻,開發(fā)一項新的視頻穩(wěn)定技術(shù)。目前,這項技術(shù)已在測試中,預計將支持 Facebook 和 Oculus 平臺。
Facebook 將這項新技術(shù)命名為「變形旋轉(zhuǎn)」運動模型,混合 3D-2D 技術(shù)用于優(yōu)化模型參數(shù),讓 360 度視頻更流暢。在視頻質(zhì)量相同的情況下,它能減少 10%~20% 的比特率,有效提高效率。在通信和計算機術(shù)語中,比特率表示在單位時間內(nèi)可以傳輸多少數(shù)據(jù)。
在標準機器上,這項新技術(shù)能以每幀小于 22 毫秒的速度穩(wěn)定 360 度視頻。事實上,這個穩(wěn)定速度比用正常播放視頻的速度更快。
除此之外,F(xiàn)acebook 的新技術(shù)還讓 360 度視頻也能快進,把一段冗長的視頻(如長時間騎車)用更快、更好玩的方式播放。
為了達成這一功能,F(xiàn)acebook 在主體穩(wěn)定算法之外,又開發(fā)了一個 360 度延時攝影算法。隨著時間的推移,它改變了視頻幀時間戳的定時,以平衡攝像機的速率。
|創(chuàng)建一個新的算法結(jié)構(gòu):混合 3D-2D + 變形旋轉(zhuǎn)模型
目前的視頻穩(wěn)定算法大多使用相同的結(jié)構(gòu):跟蹤視頻中的運動,尋找適配的運動模型,使運動變得更平穩(wěn),產(chǎn)生穩(wěn)定的輸出幀。算法之間主要的區(qū)別在于——如何為視頻中運動建模。
大多數(shù)算法都是為窄視場視頻設(shè)計的,用的是單一參數(shù)化二維運動模型,如全畫幅視角(單應)扭曲。全畫幅指的是相機里的感光元件的尺寸,跟原來的一張膠片大小一樣,為 36X24mm。
雖然這些方法簡單有效,但過于簡單的模型無法描述復雜的運動,例如前景和背景的視差和抖動。
更先進的算法則采用更靈活的運動模式,但還只存在于學術(shù)出版物中。而這些先進算法,雖然能處理更復雜的運動,但又限制了視頻拍攝的靈活性,以避免產(chǎn)生可見的幾何變形。
另一類算法在三維環(huán)境下操作。通過重建攝像軌跡和場景的幾何模型,并在三維環(huán)境中推理出穩(wěn)定視頻。因為采用了更準確的模型,這些算法具有更高的平穩(wěn)能力。但三維重建方法操作起來比較慢,而且不穩(wěn)定。
因此,F(xiàn)acebook 這次的混合 3D-2D 穩(wěn)定架構(gòu),正式結(jié)合以上兩類算法的優(yōu)點。該架構(gòu)只在關(guān)鍵幀的幾秒間隔之內(nèi),使用三維分析,并不是完全重建,只估算相對運動,因而更容易解決操作穩(wěn)定性問題。
三維算法的用處體現(xiàn)在,它能夠分辨出被拍攝的物體,究竟是在做旋轉(zhuǎn)運動,還是平移運動。
對于內(nèi)部幀(關(guān)鍵幀之間的剩余幀),F(xiàn)acebook 采用二維方法優(yōu)化,采用了一種新的「變形旋轉(zhuǎn)」模式,讓視頻運動盡可能的平穩(wěn)。
「變形旋轉(zhuǎn)」模式類似于一個全局循環(huán),但允許輕微局部變形。Facebook 優(yōu)化了模型參數(shù),使其可以處理并撤消一定程度的平移抖動(如拿著相機走動時帶來的上下擺動)、滾動快門偽影(rolling shutter artifacts)、快門變形(lens deformations)和拼接贗像(stitching artifacts)。
因此,來認識下混合 3D-2D 結(jié)構(gòu)的優(yōu)勢:
精度:比純粹的二維方法更準確,因為使用了更強大的三維分析以穩(wěn)定關(guān)鍵幀。
魯棒性:比純?nèi)S方法更穩(wěn)定,因為 Facebook 采用三維分析估算相對旋轉(zhuǎn),而無需完全重建。所謂「魯棒性」,是指控制系統(tǒng)在一定(結(jié)構(gòu),大?。┑膮?shù)攝動下,維持某些其它性能的特性。
正則化:固定關(guān)鍵幀為內(nèi)幀二維優(yōu)化提供了一個正則參數(shù),可以限制變形旋轉(zhuǎn)運動模型,避免擺動偽影。
速度:混合架構(gòu)的性能比單純進行三維分析或二維優(yōu)化速度更快。
|如何工作?
與現(xiàn)有的穩(wěn)定算法類似,F(xiàn)acebook 也從視頻中的運動特征點開始追蹤。特征點既是一個點的位置辨識,同時也說明它的局部鄰域具有一定的模式特征。
由于 Facebook 輸入的視頻采用的是等量矩形投影,因而畫面兩端高度扭曲,于是把幀數(shù)轉(zhuǎn)換成不那么扭曲的立方體貼圖(采用 256x256 分辨率),讓運動跟蹤能夠順利進行。
由于追蹤產(chǎn)生的灰度圖像質(zhì)量很高,F(xiàn)acebook 得以在視頻亮度平面上直接執(zhí)行,避免因從 YUV 到 RGB 轉(zhuǎn)換而浪費時間(YUV 和 RGB 為色彩編碼方法)。
Facebook 采用 KLT 跟蹤算法追蹤關(guān)鍵點,并采用了一個重要概念——關(guān)鍵幀。關(guān)鍵幀非常重要,可以用來估計被拍攝物體的相對旋轉(zhuǎn),為二維優(yōu)化提供正則參數(shù)。關(guān)鍵幀散布在視頻的不同位置,有些地方更密集,有些則較少一些。
然后,F(xiàn)acebook 采用五點算法估計連續(xù)關(guān)鍵幀之間的相對轉(zhuǎn)動,來估算兩個攝像機之間的相對旋轉(zhuǎn)和平移。五點算法是指,當攝像機在兩幅圖像之間的運動為純平移運動時,給定 5 對圖像對應點,則可以線性確定本質(zhì)矩陣。
用 3D 感知算法來估計旋轉(zhuǎn)的優(yōu)勢在于,它能夠區(qū)分平移運動和旋轉(zhuǎn)運動。完成對所有關(guān)鍵幀旋轉(zhuǎn)的預估后,把它進行逆變換,與視頻的第一幀對齊。
現(xiàn)在,所有的關(guān)鍵幀已經(jīng)穩(wěn)定下來,就把它們鎖定,而后把注意力放到中間幀的旋轉(zhuǎn)上。
正如前文所述,對中間幀采用的是二維優(yōu)化的方法,而不是三維分析法。優(yōu)化的目的是讓非關(guān)鍵幀的軌跡盡可能的平穩(wěn)。由于中間幀的旋轉(zhuǎn)已經(jīng)固定了,提供的正則參數(shù)可以用來收斂非關(guān)鍵幀的軌跡。
在解決相機抖動問題的時候,往往會殘余一定量的抖動,如前文提及的少量平移、滾動快門、次優(yōu)鏡頭校正和拼接贗像。Facebook 的目的是增加一些靈活的運動模型,用來適應和撤銷輕微的圖像變形。
在「變形旋轉(zhuǎn)」模型中,F(xiàn)acebook 用 6 個散落在不同位置的局部旋轉(zhuǎn)代替全局單旋轉(zhuǎn),讓局部低頻偏差從純旋轉(zhuǎn)變成數(shù)據(jù)。
這一點至關(guān)重要,因為可以防止因運動模型太靈活而造成的漂移。Facebook 希望解決問題用的是引入更多數(shù)據(jù),而非單純的刪除偽影。
|優(yōu)化速度、性能和效率
Facebook 開發(fā)這一新算法的目的,是讓用戶可以觀看流暢穩(wěn)定的 360 度視頻,畢竟用戶也不想把時間浪費在等待視頻上傳。因此,即便這一算法適用于 GPU,F(xiàn)acebook 也希望能在 CPU 上運行。
所以,F(xiàn)acebook 的做法是:選取一個 8*8 像素區(qū)域,用傳統(tǒng)的包圍盒算法計算其坐標,其他區(qū)域用雙線性差值運算。
這種新算法比包圍盒算法運算速度更快,與單純用包圍算法進行計算相比,顯示效果差不多,但大大提高的運算效率。包圍盒算法是用一個簡單的圖形代替復雜形狀的算法。
下圖總結(jié)了各算法階段的性能,測量的是單個幀輸入 / 輸出 1080p 分辨率和時間。
事實上,F(xiàn)acebook 新算法的穩(wěn)定速度,是比正常播放一段視頻要快的:
播放視頻的時候,顯示每一幀大約需要 30 毫秒,而穩(wěn)定一幀只需 20 毫秒。通過改進算法,F(xiàn)acebook 可以讓直播的 360 度視頻每一幀都不發(fā)生抖動。
除了速度之外,F(xiàn)acebook 還對效率進行了優(yōu)化。
因為 360 度視頻并不裁剪任何拍攝到的畫面,所以可以被還原到最初的版本,所以穩(wěn)定算法可以提高 360 度視頻的比特率(比特率越高,傳送數(shù)據(jù)速度越快)。但對于視頻播放不會有任何影響,因為體驗過 360 度視頻的人大多已經(jīng)習慣了旋轉(zhuǎn)的視圖。
穩(wěn)定算法能夠有效節(jié)省比特率,下圖分析了通 x264 庫(一個免費的軟件庫)把視頻編碼為 H.264/MPEG-4 AVC 格式時比特率的消耗,橙色代表滑雪,藍色代表停下來休息。
如圖所示,比特率的節(jié)省概率在 10%~20% 之間,取決于編碼器的設(shè)置。
|延時攝影算法
由于 Facebook 的新算法讓 360 度視頻看起來非常平滑,所以可以用來創(chuàng)建加速延時視頻。創(chuàng)建一個延時攝影 360 度視頻只需刪掉一些內(nèi)容,但每幀序列都應該能連接起來。
然而,延時攝影拍攝的一個共同點是平穩(wěn)的平衡相機速率。例如,在拍攝一個滑雪視頻時,滑雪者時而加快速度,時而停下休息,相機速率也在不斷變化。
為了模擬一個不斷移動的延時攝影鏡頭,需要暫時地平衡速度,并跳過休息的部分。
要做到這一點,首先用二維近似和平均運動矢量,估計每一幀的相機速率。然后,用時間中位數(shù)和低通濾波器把視頻二次處理一下。低通濾波器是容許低于截止頻率的信號通過、但高于截止頻率的信號就不能通過的電子濾波裝置。
通過相機預估速率,就可以改變原視頻的時間戳。這樣一來,就可以創(chuàng)建加速視頻,把冗長的視頻縮短。
下一步Facebook 表示,這項新算法還在測試當中,希望能夠得到用戶的反饋。用戶現(xiàn)在可以試著上傳 360 度視頻,把高質(zhì)量,且觀感更舒適的視頻與朋友們分享。
接下來,F(xiàn)acebook 將致力于改進延時攝影算法,希望在不久的將來,能用到實時 360 度視頻中。