1. 程式人生 > >Facebook Surround360 學習筆記--(1)系統簡介

Facebook Surround360 學習筆記--(1)系統簡介

Facebook Surround 360是Facebook2016年7月釋出的開源360°三維全景視訊拍攝系統,主要功能是為VR拍攝3D全景視訊素材。它長這個樣子:
這裡寫圖片描述
看起來酷炫的很,當然功能也很強大,後面會介紹。介紹surround360之前先看一下該領域中其他公司做的相關產品吧

領域動態

Google +GoPro

Google與運動相機制造商GoPro合作推出了Odyssey,一個由16個相機組成的價值15000美元的3D360°全景拍攝裝置,如下
這裡寫圖片描述
後來GoPro又推出了一個相對簡易的由6個相機組成的2D360°全景Omni:
這裡寫圖片描述

Nokia

Nokia也推出了一個像足球一樣的具有8個相機的2D360°專業VR攝錄機Ozo:
這裡寫圖片描述

VideoStitch

VideoStitch推出了一個具有4個相機的2D360°全景相機ORAH 4i:
這裡寫圖片描述
此外,還有不少公司推出了由兩個背靠背式魚眼相機組成的2D360°全景相機,比如:

Sumsung

三星2016年也推出了消費者版的2D360°全景gear 360相機:
這裡寫圖片描述

Ricoh

日本理光公司也推出了像遙控器一樣的2D360°全景相機thetaS:
這裡寫圖片描述
除此之外,還有LG等公司也有相應的產品,在此就列舉了。
注意以上的產品,只有Surround360和Odyssey可以實現3D360°全景視訊,其他的產品都是2D360°全景的。價格相差很大,具體到引數細節也都有不少差別,可以從他們的產品官網上做個比較。

Surround360簡介

主要特點:

  1. GitHub上開源相機硬體設計方案及對應的影象拼接原始碼,開發者和內容生產商都可以免費使用,加速3D 360°生態系統發展。
  2. 計算左右眼的立體視差是基於Optical flow的演算法,演算法可以自動拼接生成360°三維立體全景視訊。拼接演算法相對於傳統的人工方法,極大減少了後處理時間,效率大大提高,執行時間從幾個星期縮短到一天。
  3. 可輸出每隻眼睛高達4K,6K,或8K的解析度。雙倍8K的輸出可以利用Facebook自己的動態流輸出技術在Gear VR裝置上播放。

VR拍攝系統的挑戰

目前比較主流的是單視場360°全景,通常使用兩個或者更多的相機來獲得360°的全景,但是這些全景圖看起來比較“扁平”,沒有三維立體感。如果想要獲得3D-360全景視訊就沒那麼容易了,因為相對於單視角全景視訊,3D-360視訊需要深度資訊。Surround360用兩個相機(相當於左右眼)拍攝同一位置來獲得深度,這就意味著,必須使用10~20個相機對周圍360°內的每個方向都進行立體拍攝,並且所有相機必須嚴格地全域性同步地進行每秒30~60幀的拍攝。最後,需要融合(拼接)所有的相機拍攝的圖片成為一張無縫全景圖,而且必須進行兩次操作:第一次產生左眼的虛擬位置、第二次產生右眼的虛擬位置。

VR拍攝系統

Surround360的VR拍攝系統包含三個部分:

1. 硬體(相機和對相機進行控制的計算機)

1) 所有相機必須具有全域性同步功能。每個相機的每一幀和其他相機的同一時間的對應視訊的時間差別必須小於一毫秒。如果不能達到同步要求,很難把他們拼接成為一張清晰一致的圖片。
2) 每個相機必須具有全域性快門。同一時間所有畫素必須對應同一場景。如果做不到全域性快門,快速移動的物體會在對角線方向變的模糊。
3) 相機必須能夠連續可靠地執行幾個小時而不過熱;相機和固定相機的機架必須穩固連線,保證在長時間的使用過程中不會產生錯位;相機機架設計製作必須簡單,方便複製、修理、替換元件。
4) 為了滿足上述嚴苛的條件,Facebook採用工業級的Point Gray相機:具備全域性快門,執行很長時間不會過熱。每個相機用螺栓牢固地連結到鋁製底盤,外殼是帶有塗層的鋼結構,可以很好地保護相機內部的部件。

2. 相機控制軟體(用於同步)

1) Facebook使用了基於Linux的具有足夠系統頻寬的PC從相機裡傳輸實時的視訊流到硬碟。相機同步要求實時的執行緒來保證能夠獲取所有的幀且不會丟幀。假設視訊為30Hz(每秒30幀),則需要17 Gb / s的穩定的傳輸速率。Surround360使用了8路5級SSD RAID磁碟系統進行儲存,可以支援幾個小時的連續拍攝。
2) 為了保證相機在拍攝360°的視訊內容時不受操作人員的影響,Surround360採用了一個簡單web介面來遠端控制相機的拍攝,這使得任何支援HTML瀏覽器的裝置均可控制相機。
3) 以每個相機為基礎的定製的影象獲取軟體可以對每個攝像頭的曝光,快門速度,模擬感測器增益、幀率進行控制。相機由同一軟體進行控制實現全域性同步。為保證影象渲染階段的影象質量,實際處理的資料為Bayer格式的RAW資料。

3. 影象拼接及渲染軟體

影象拼接演算法是整個系統的中樞,也是系統中最具有挑戰的部分。由於拼接處理產生最終的視訊影象,因此這部分的影象處理和成像計算極為重要。必須在計算的每個步驟確保畫素質量。任何一步影象質量受損之後,就不可能挽回了。這樣的情況重複幾次之後,影象質量就會完全不可接受。
影象資料處理分以下幾個步驟:
1). 轉換RAW Bayer資料到伽馬校正後的RGB。主要包括:攝像頭之間的顏色校準、暗角消除、Gamma和色調曲線、銳化(逆向卷積)、去馬賽克影象復原。
2). 相機內參校正,用於去除鏡頭畸變並將影象重投影到極座標系。
3). 通過光束平差之後相機之間的外部引數校正來補償攝像頭之間的方向偏差。
4). 對每對相鄰的攝像頭進行光流計算,用於計算左右眼之間的立體視差。
5). 基於光流的左眼和右眼檢視,分別合成虛擬相機每個視角方位的新檢視。
6). 最終合成左眼和右眼畫素。
Surround360拼接演算法關鍵的一個概念就是光流,和其他拼接演算法相比,使用光流在數學上麻煩一些,但是可以產生更好的效果。利用光流可以計算相機左右眼的立體視差,從而分別為左右眼合成新檢視。然後,把頂上和底下的相機融入側面相機, 類似地用兩張圖之間的光流來匹配對應同一個畫素點在兩張圖中的位置。光流法實際是一個不適定逆問題,其不適定性源於由遮擋引起的歧義:一個相機不可能看到相鄰相機看到的。儘管通過構建多個相機和時變捕獲可以減輕這個問題,但這仍然是一個很困難的問題。Surround360用光流法來產生左右眼視差,從而自動生成無縫的360°全景圖,這節省了大量的後處理時間。

4.播放

Surround360可輸出每隻眼睛高達4K,6K,8K的解析度。由於高頻寬和資料量的要求,6k,8k的輸出需要利用Facebook Gear VR的動態流編碼技術,該技術是工業標準的2倍。輸出檔案可以在像Oculus Rift 和 Gear VR這樣的VR裝置上播放。

存在的問題

1) 光流場視角、光學感測器解析度、相機排列方式、相機數目等這些因素的不同組合在工業設計上是一個非常複雜的問題。更多的相機數目可以降低拼接難度,但同時也增加了需要處理和傳輸的大量資料。同樣的,增加影象的解析度提供了最終渲染的圖片質量但是也帶來了了大量的資料和佔用頻寬的代價。
2) 光學方面,增加相機的視場角可以減少相機的數目,降低拼接的影象數目,不過是以降低空間解析度為代價。廣角鏡頭也對後焦距和角度錯位更加敏感。

參考資料

相關推薦

Facebook Surround360 學習筆記--1系統簡介

Facebook Surround 360是Facebook2016年7月釋出的開源360°三維全景視訊拍攝系統,主要功能是為VR拍攝3D全景視訊素材。它長這個樣子: 看起來酷炫的很,當然功能也很強大,後面會介紹。介紹surround360之前先看一下該領

菜鳥stm32學習筆記1系統時鐘初始化函式

系統初始化函式步驟: 1:復位並配置暫存器向量表。 2:置位CR第十六位,開啟外部振盪器。 3:檢測CR第十七位,判斷外部振盪器是否準備就緒。若就緒,硬體會置位十七位。 *2和3設定的均是時鐘控制暫存器。 4:設定時鐘配置暫存器CFGR的8-10位為100使得APB1的時鐘

RabbitMQ學習筆記1----RabbitMQ簡介與安裝

·1. 什麼是RabbitMQ?   RabbitMQ是流行的開源訊息佇列系統,用erlang語言開發。RabbitMQ是AMQP(高階訊息佇列協議)的標準實現。   而AMQP協議則是指:即Advanced Message Queuing Protocol,一個提供統一訊息服務的應用層標準高階訊息佇列協

Redis學習筆記1—— Redis簡介

一、NoSQL概述 1.1 什麼是NoSQL   NoSQL(NoSQL = Not Only SQL),意指“不僅僅是SQL”,是一項全新的資料庫理念,泛指非關係型的資料庫。 1.2 為什麼需要NoSQL   隨著網際網路web2.0網站的興起,非關係型的資料庫成了一個極其熱門的新領域,非關係型資料

HTML 學習筆記1 HTML簡介

轉載: HTML 簡介 HTML, XHTML簡介 HTML 超文字標記語言(英語:HyperText Markup Language,簡稱:HTML)是一種用於建立網頁的標準標記語言。 HTML 使用標記標籤來描述網頁。HTML文件也叫做 web 頁面 可以

TensorFlow學習筆記1--TensorFlow簡介,常用基本操作

要將深度學習更快且更便捷地應用於新的問題中,選擇一款深度學習工具是必不可少的步驟。 TensorFlow是谷歌於2015年11月9日正式開源的計算框架。TensorFlow計算框架可以很好地支援深度學習的各種演算法。 TensorFlow很好地相容了學術研究

bootstrap 學習筆記1---介紹bootstrap和柵格系統

優先 cal 圖片 應用 尺寸 文件中 lin png ice   學習前端許久,對於布置框架和響應瀏覽器用html 和javascript 寫的有點繁瑣,無意間看到這個框架,覺得挺好用的就開始學習了,但是這個框架上面有很多知識,不是所有的都要學的,故將學習筆記和覺得重點的

Vue學習筆記1——在頁面右上角實現可懸浮/隱藏的系統選單

轉自榕樹島 本文不能算一個教程,而是記錄一隻Vue菜鳥踩坑心路歷程的筆記,對於正在踩坑的新手或許會有一點小幫助。作為第一篇正經八百的技術部落格,歡迎大家發表看法,關愛菜鳥,請輕拍 很久以後回來更一下,這個功能可以用Vuex輕鬆搞定,此文就當練習父子元件通訊了吧,emmm…… 原文: 這是個

資料庫課設圖書管理系統學習筆記1

圖書館課課設圖片插入,讀出 BufferedImage: 所述BufferedImage亞類描述了一種Image與影象資料的訪問的緩衝器。 A BufferedImage由影象資料的ColorModel和Raster組成。 SampleModel中SampleModel中的Raster的

Linux系統程式設計學習筆記1-檔案的I/O操作

概述 在Linux系統下,通常以一個非負整數來代指一個開啟的檔案,這些檔案可以包括終端,socket,裝置,普通檔案等等。規定的三個標準的檔案描述符為0,1,2下面分別介紹(在互動式shell中,這些檔案描述符通常指向shell執行所在的終端): 檔案描述

【鳥叔的Linux私房菜】學習筆記1——Linux系統入門

雖然現在工作一直在用Xshell 一些 基本的命令、常用的還可以, 但總感覺對Linux瞭解的知之甚少,偶爾改個檔案還需要請教同事,真是慚愧。 所以決定從今天開始重新學習下Linux,查漏補缺,並將學習的結果作為筆記和大家一塊交流和進步,就開始我們今天的學習吧。 一

虛擬檔案系統學習筆記1

1 通過虛擬檔案系統,linux可以支援多種檔案系統型別; 2 虛擬檔案系統所隱含的思想是把表示很多不同種類檔案系統的共同資訊放入核心;其中用1個欄位或函式來支援所有支援具體檔案系統所提供的任何操作。 3 VFS支援的檔案系統可以分為3類:磁碟檔案系統、網路檔案系統及特

嵌入式系統的軟體組成_學習筆記1

前言    計算機三級_嵌入式系統開發技術_學習筆記 , 第四章 : 嵌入式系統的軟體組成正文4.1 嵌入式系統的軟體組成4.1.1 嵌入式作業系統的特點:·軟硬體一體化,軟體固化儲存·軟體程式碼的時間和空間上要求嚴格,具有較高的實時性·軟體可剪裁,儘可能的高效:保證產品在價

JAVA學習筆記1——a++與++a的區別

col int 演示 opera 解析 代碼 數據 ++i div 需求:此博客用於解釋i++與++i的區別。 過程: 1、名稱解釋 ++:自增,即在原有數據基礎上+1,再賦給原有數據。 2、程序演示 (1)代碼: 1 class OperateDemo 2 { 3

vray學習筆記1

com .cn 過程 分組 是把 皮膚 mon image 基本 vray是個什麽東西? 它是個渲染器。 渲染器是個什麽東西? 渲染器就是3d軟件裏面把模型畫成一張圖片的東西,渲染的過程就是把3D物體變成2D畫面的過程。 模型是個什麽東西? 模型就是模型,它由兩部分組成,第

《深入理解C指針》學習筆記1--- 指針之外

結構 def form 學習 編程 stdlib.h struct 一個 char   C語言從誕生之初就非常善於和硬件打交道,經過這麽多年的發展之後,其靈活性和超強的特征是受到幾乎所有程序員的肯定。C語言的這種靈活性很大一部分程度來源與C指針,指針為C語言動態操控內存提供

CS231n 學習筆記1 Image CLassification

eight function 分享 便是 數據驅動 rain 分類問題 很難 特征 圖像分類是計算機視覺中的一項核心任務,那麽什麽是圖像分類? 例如,給你一個標簽集,其中包括(貓、狗、鳥、卡車、飛機...等) 然後給你一張圖片,那麽這張圖片屬於哪個類別呢?這就是一個分類

《挑戰程序設計競賽》學習筆記 1

設計 allow 而且 硬幣 ack ket 程序設計 all 不能 2.2 貪心法 貪心法是遵循某種規則,不斷貪心選取當前最優策略的算法設計方法。 貪心法的求解思想是通過叠代地選取當前問題的局部最優解法來達成總體最優解,在叠代的過程中不斷地產生局部最優解和下一個與之前

AngularJs學習筆記1——ng-app

oot you ctrl span fun 代碼 問題 筆記 doctype 眾所周知: ng-app 指令用於告訴 AngularJS 應用當前這個元素是根元素。 所有 AngularJS 應用都必須要要一個根元素。 HTML 文檔中只允許有一個 ng-app 指令,如果

Nordic nRF52832 學習筆記1 介紹,入門,與準備工作

例程 盜版 path pdf 規範 準備 但是 依然 可能   近來,物聯網已成為大勢所趨,VR與AR正方興未艾,各種手環、遙控、智能家居也在粉墨登場。技術前沿的領航者們已經快馬加鞭,各種意誌與暗示也在上傳下達。物聯網,無線通訊,移動互聯,將成為新的目標與寵兒。最近開的電賽