靜止的圖像和運動的圖像的數(shù)字立體觀看已經(jīng)變得普遍,并且用于觀看3D(三維)電影的設(shè)備更廣泛地可用。劇院提供基于使用特殊眼鏡觀看電影的3D電影,該眼鏡確保針對電影的每個幀的左眼和右眼的不同圖像的觀看。相同的方法已被帶到具有3D能力的播放器和電視機的家庭使用。在實踐中,電影由對同一場景的兩個視圖組成,一個用于左眼,一個用于右眼。這些視圖是通過使用特殊的立體相機捕獲電影而產(chǎn)生,該立體相機直接產(chǎn)生適合于立體觀看的內(nèi)容。當(dāng)視圖呈現(xiàn)給雙眼時,人類視覺系統(tǒng)產(chǎn)生場景的3D視圖。該技術(shù)具有觀看區(qū)域(電影屏幕或電視)僅占據(jù)視場的一部分的缺點,并且因此3D視圖的體驗是有限的。
為了更逼真的體驗,已產(chǎn)生了占據(jù)整個視場的更大區(qū)域的設(shè)備。存在可用的特殊立體觀看護目鏡,該立體觀看護目鏡旨在戴在頭上,使得其覆蓋眼睛并使用小屏幕和鏡頭布置來針對左右眼顯示圖片。這種技術(shù)還具有的優(yōu)點是,與通常用于3D觀看的相當(dāng)大的電視機相比,其可以在小空間中使用,并且甚至在移動時使用。為了游戲的目的,存在與這樣的立體眼鏡兼容的游戲,并且能夠產(chǎn)生人工游戲世界的立體觀看所需的兩個圖像,從而產(chǎn)生游戲場景的內(nèi)部模型的3D視圖。從模型實時地渲染不同的圖片,并且因此特別是如果游戲的場景模型是復(fù)雜的和非常詳細(xì)的并且包含大量對象時,該方法需要計算功率。這種基于合成模型的方法不適用于真實世界的視頻回放。
因此,存在對能夠進行立體聲記錄和回放(即,捕獲和觀看諸如3D視頻的3D圖像)的備選解決方案的需求。
技術(shù)實現(xiàn)要素:
現(xiàn)在已經(jīng)發(fā)明了實現(xiàn)該方法的改進的方法和技術(shù)設(shè)備,通過該方法減輕了上述問題。本發(fā)明的各個方面包括方法、裝置、服務(wù)器、渲染器、數(shù)據(jù)結(jié)構(gòu)和包括存儲在其中的計算機程序的計算機可讀介質(zhì),其特征在于獨立權(quán)利要求中所陳述的內(nèi)容。本發(fā)明的各種實施例在從屬權(quán)利要求中公開。
本發(fā)明涉及:形成場景模型并確定第一組場景點,第一組場景點從渲染視點可見;確定第二組場景點,第二組場景點至少部分地被從渲染視點觀看的第一組場景點遮蔽;使用第一組場景點形成第一渲染層,以及使用第二組場景點形成第二渲染層;以及提供用于渲染立體圖像的第一渲染層和第二渲染層。本發(fā)明還涉及接收包括像素的第一渲染層和第二渲染層,第一渲染層包括對應(yīng)于從渲染視點觀看的場景的第一部分的像素,以及第二渲染層包括對應(yīng)于從渲染視點觀看的場景的第二部分的像素,其中場景的第二部分被從渲染視點觀看的第一部分遮蔽;將第一渲染層的像素和第二渲染層的像素放置在渲染空間中;將深度值與像素相關(guān)聯(lián);以及使用所述像素和所述深度值渲染立體圖像。因此,第一渲染層包括像素,該像素表示從視點直接可見的場景的那些部分并且已經(jīng)例如被第一相機捕獲。第二渲染層和另外的渲染層包括表示被遮擋在一個或多個對象之后的場景的那些部分的像素。用于另外的渲染層的數(shù)據(jù)可以已經(jīng)被其他相機捕獲,其他被放置在與第一相機的位置不同的位置。
根據(jù)第一方面,提供了一種方法,包括:使用來自第一源圖像的第一圖像數(shù)據(jù)和來自第二源圖像的第二圖像數(shù)據(jù)形成場景模型,所述場景模型包括場景點,每個場景點在所述場景的坐標(biāo)空間中具有位置;確定第一組場景點,所述第一組場景點從觀看點可見,所述觀看點在所述場景的所述坐標(biāo)空間中具有位置;確定第二組場景點,所述第二組場景點至少部分地被從所述觀看點觀看的所述第一組場景點遮蔽;使用所述第一組場景點形成第一渲染層,并且使用所述第二組場景點形成第二渲染層,所述第一渲染層和所述第二渲染層包括像素;以及提供所述第一渲染層和所述第二渲染層用于渲染立體圖像。
根據(jù)一個實施例,方法包括:確定第三組場景點,所述第三組場景點至少部分地被從所述觀看點觀看的所述第二組場景點遮蔽;使用所述第三組場景點形成第三渲染層,所述第三渲染層包括像素;以及提供所述第三渲染層用于渲染立體圖像。根據(jù)一個實施例,所述第二渲染層是稀疏層,稀疏層包括對應(yīng)于被所述第一組場景點至少部分遮蔽的場景點的有效像素。根據(jù)一個實施例,方法包括:在所述第二渲染層中形成虛擬像素,所述虛擬像素不對應(yīng)于場景點;以及使用圖像編碼器將所述第二渲染層編碼為數(shù)據(jù)結(jié)構(gòu)。根據(jù)一個實施例,方法包括使用圖像編碼器將所述渲染層編碼為一個或多個編碼的數(shù)據(jù)結(jié)構(gòu)。根據(jù)一個實施例,形成所述場景模型包括通過利用所述源圖像的深度信息來確定所述場景點的三維位置。根據(jù)一個實施例,形成所述場景模型包括使用所述源圖像的相機定位以及比較所述源圖像的圖像內(nèi)容。根據(jù)一個實施例,方法包括將一個或多個所述渲染層形成為二維圖像數(shù)據(jù)結(jié)構(gòu),所述圖像數(shù)據(jù)結(jié)構(gòu)包括渲染層像素。根據(jù)一個實施例,渲染層像素包括顏色值和諸如alpha值的透明度值。根據(jù)一個實施例,所述方法包括將所述渲染層的至少兩個渲染層的數(shù)據(jù)形成為經(jīng)整理的圖像數(shù)據(jù)結(jié)構(gòu),所述經(jīng)整理的圖像數(shù)據(jù)結(jié)構(gòu)包括至少兩個段,每個段對應(yīng)于相應(yīng)的渲染層。
根據(jù)第二方面,提供了一種方法,包括:接收第一渲染層和第二渲染層,所述第一渲染層和所述第二渲染層包括像素,所述第一渲染層包括對應(yīng)于從渲染視點觀看的場景的第一部分的像素以及所述第二渲染層包括對應(yīng)于從所述渲染視點觀看的所述場景的第二部分的像素,其中所述場景的所述第二部分被從所述渲染視點觀看的所述第一部分遮蔽;將所述第一渲染層的像素和所述第二渲染層的像素放置在渲染空間中;將深度值與所述像素相關(guān)聯(lián);以及使用所述像素和所述深度值渲染左眼圖像和右眼圖像。
根據(jù)一個實施例,所述第一渲染層和所述第二渲染層的所述像素包括顏色值,并且至少所述第一渲染層的像素包括透明度值(諸如,用于渲染至少所述第一渲染層的像素的透明度的alpha值)。根據(jù)一個實施例,方法包括確定待渲染的渲染層是否包括半透明像素,以及在所述確定指示渲染層包括半透明像素的情況下,在所述渲染層的渲染中啟用alpha混合,否則在渲染所述渲染層中禁用alpha混合。根據(jù)一個實施例,方法包括:從數(shù)據(jù)結(jié)構(gòu)接收所述第一渲染層和所述第二渲染層,所述數(shù)據(jù)結(jié)構(gòu)包括作為二維圖像的像素值;通過使用紋理映射來確定所述第一渲染層和所述第二渲染層的所述像素的顏色值。根據(jù)一個實施例,方法包括:從數(shù)據(jù)結(jié)構(gòu)接收所述第一渲染層和所述第二渲染層,所述數(shù)據(jù)結(jié)構(gòu)包括作為二維圖像的像素值;以及通過使用紋理映射來確定所述第一渲染層和所述第二渲染層的所述像素的深度值,所述深度值指示從渲染視點的距離。根據(jù)一個實施例,方法包括從包數(shù)據(jù)結(jié)構(gòu)接收所述第一渲染層和所述第二渲染層,所述數(shù)據(jù)結(jié)構(gòu)包括作為二維圖像的像素值;以及通過使用紋理映射來確定所述第一渲染層和所述第二渲染層的所述像素的視角值。
根據(jù)第三方面,提供了一種用于執(zhí)行根據(jù)第一方面和/或其實施例的方法的裝置。
根據(jù)第四方面,提供了一種用于執(zhí)行根據(jù)第二方面和/或其實施例的方法的裝置。
根據(jù)第五方面,提供了一種用于執(zhí)行根據(jù)第一方面和/或其實施例的方法的系統(tǒng)。
根據(jù)第六方面,提供了一種用于執(zhí)行根據(jù)第二方面和/或其實施例的方法的系統(tǒng)。
根據(jù)第七方面,提供了一種用于執(zhí)行根據(jù)第一方面和/或其實施例的方法的計算機程序產(chǎn)品。
根據(jù)第八方面,提供了一種用于執(zhí)行根據(jù)第二方面和/或其實施例的方法的計算機程序產(chǎn)品。
附圖說明
在下文中,將參照附圖更詳細(xì)地描述本發(fā)明的各種實施例,其中:
圖1a、圖1b、圖1c和圖1d示出了用于向用戶形成立體圖像的設(shè)置;
圖2a示出了用于立體觀看的系統(tǒng)和裝置;
圖2b示出了用于立體觀看的立體相機設(shè)備;
圖2c示出了用于立體觀看的頭戴式顯示器;
圖2d圖示了相機設(shè)備;
圖3a圖示了用于捕獲針對3D渲染的圖像或視頻的布置;
圖3b圖示了從多個捕獲的圖像形成點云;
圖4a和圖4b圖示了形成渲染層和形成用于存儲的圖像數(shù)據(jù);
圖4c圖示了使用渲染層渲染圖像;
圖5a是通過捕獲圖像數(shù)據(jù)形成渲染層的流程圖;
圖5b是使用渲染層渲染圖像的流程圖;
圖6a和圖6b描繪了包括用于渲染圖像的渲染層的數(shù)據(jù)結(jié)構(gòu);以及
圖7示出了渲染層的示例。
具體實施方式
在下文中,將在使用3D眼鏡的立體觀看的上下文下描述本發(fā)明的若干實施例。然而,應(yīng)當(dāng)注意,本發(fā)明不限于任何特定的顯示技術(shù)。事實上,不同的實施例在需要立體觀看的任何環(huán)境中具有應(yīng)用(例如,電影和電視)。附加地,盡管描述可以使用相機設(shè)置作為圖像源的示例,但是可以使用不同的相機設(shè)置和圖像源布置。需要理解,各種實施例的特征可以單獨出現(xiàn)或組合出現(xiàn)。因此,盡管已逐一描述不同的特征和實施例,但其組合也已在本文中公開。
圖1a、圖1b、圖1c和圖1d示出了用于向用戶形成立體圖像的設(shè)置。在圖1a中,示出了人類使用雙眼E1和E2正在觀看兩個球體A1和A2的情況。球體A1比球體A2更接近觀看者,到第一只眼E1的相應(yīng)距離是LE1,A1和LE1,A2。不同的對象駐留在其各自的坐標(biāo)(x,y,z)處的空間中,該空間由坐標(biāo)系統(tǒng)SZ、SY和SZ定義。人眼之間的距離d12可以是平均約62-64mm,并且在55mm和74mm之間隨人而異。該距離被稱為視差,人類視覺的立體視圖基于該視差。觀看方向(光軸)DIR1和DIR2通常基本上平行,可能具有與平行的小偏差,并且定義了眼的視場。用戶的頭部具有關(guān)于周圍環(huán)境的方位(頭部方位),當(dāng)該方位最容易被眼睛直視前方時眼睛的共同方向定義。即,頭部方位關(guān)于用戶所處的場景的坐標(biāo)系統(tǒng)來說明頭部的偏轉(zhuǎn)、俯仰(pitch)和側(cè)傾(roll)。
在圖1a的設(shè)置中,球體A1和A2在雙眼的視場中。眼和球體之間的中心點O12在同一直線上。即,從中心點,球體A2被遮蔽在球體A1后面。然而,每只眼從A1后面看到球體A2的一部分,因為球體不在來自任一眼的相同視線上。
在圖1b中,示出了設(shè)置,其中眼睛已經(jīng)被相機C1和C2替換,相機C1和C2位于圖1a中眼睛所在位置處。設(shè)置的距離和方向在其他方面是相同的。自然地,圖1b的設(shè)置的目的是能夠拍攝球體A1和A2的立體圖像。從圖像捕獲產(chǎn)生的兩個圖像是FC1和FC2?!白笱邸眻D像FC1示出了球體A2的圖像SA2,其在球體A1的圖像SA1的左側(cè)上部分可見?!坝已邸眻D像FC2示出了球體A2的圖像SA2,其在球體A1的圖像SA1的右側(cè)上部分可見。右圖像和左圖像之間的差被稱為視差,并且作為人類視覺系統(tǒng)確定深度信息并產(chǎn)生場景的3D視圖的基本機制的該視差可以用于產(chǎn)生3D圖像的錯覺。
在圖1c中,示出了該3D錯覺的產(chǎn)生。使用顯示器D1和D2分別將由相機C1和C2捕獲的圖像FC1和FC2顯示給眼睛E1和E2。圖像之間的視差由人類視覺系統(tǒng)處理,從而產(chǎn)生對深度的理解。即,當(dāng)左眼看到球體A1的圖像SA1左側(cè)上的球體A2的圖像SA2,并且相應(yīng)地右眼看到右側(cè)上的A2的圖像時,人類視覺系統(tǒng)產(chǎn)生理解:在三維世界中,球體V1后面存在球體V2。這里,需要理解,圖像FC1和FC2也可以是合成的(即,由計算機產(chǎn)生的)。如果其攜帶視差信息,則合成圖像也將被人類視覺系統(tǒng)看作是三維的。即,可以形成一對計算機生成的圖像,從而它們可以用作立體圖像。
圖1d圖示了可以如何使用對眼睛顯示立體圖像的原理來產(chǎn)生具有三維錯覺的3D電影或虛擬現(xiàn)實場景?;蛘呤褂昧Ⅲw相機捕獲或者從模型計算圖像FX1和FX2,從而圖像具有適當(dāng)?shù)囊暡?。通過使用顯示器D1和D2向雙眼顯示每秒大量(例如,30)的幀,從而左眼和右眼之間的圖像具有視差,人類視覺系統(tǒng)將產(chǎn)生移動的三維圖像的認(rèn)知。當(dāng)相機轉(zhuǎn)動或者計算的合成圖像的觀看方向改變時,圖像中的變化產(chǎn)生觀看方向改變的錯覺,即觀看者正在旋轉(zhuǎn)。該觀看方向(即,頭部方位)可以例如通過安裝在頭部上的方位檢測器被確定為頭部的實際方位,或者作為由諸如操縱桿或鼠標(biāo)的控制設(shè)備來確定的虛擬方位,控制設(shè)備可以用于在用戶實際上不移動其頭部的情況下,操縱觀看方向。即,術(shù)語“頭部方位”可以用于指代用戶頭部的實際的物理方位以及其變化,或者其可以用于指代由計算機程序或計算機輸入設(shè)備確定的用戶視圖的虛擬方向。
圖2a示出了用于立體觀看(即,用于3D視頻和3D音頻數(shù)字捕獲和回放)的系統(tǒng)和裝置。系統(tǒng)的任務(wù)是捕獲足夠的視覺和聽覺信息,使得在該位置中的體驗或存在的令人信服的再現(xiàn)可以由物理上位于不同位置的、并且可選地在將來的稍后時間處的一個或多個觀察器來實現(xiàn)。這樣的再現(xiàn)需要比單個相機或麥克風(fēng)可以捕獲的信息更多的信息,以使得觀看者可以使用其眼睛和耳朵來確定場景內(nèi)的對象的距離和位置。如在圖1a至圖1d的上下文中所解釋的,為了產(chǎn)生具有視差的一對圖像,使用兩個相機源。在類似的方式中,為了人類聽覺系統(tǒng)能夠感測聲音的方向,使用至少兩個麥克風(fēng)(通常已知的立體聲音由記錄兩個音頻頻道而產(chǎn)生)。人類聽覺系統(tǒng)可以檢測例如在音頻信號的定時差中的線索以檢測聲音的方向。
圖2a的系統(tǒng)可以由三個主要部分組成:圖像源、服務(wù)器和渲染設(shè)備。視頻捕獲設(shè)備SRC1包括具有重疊視場的多個(例如,8個)相機CAM1、CAM2、...、CAMN,從而從至少兩個相機捕獲視頻捕獲設(shè)備周圍的視圖區(qū)域。設(shè)備SRC1可以包括多個麥克風(fēng)以捕獲來自不同方向的音頻的定時和相位差。該設(shè)備可以包括高分辨率方位傳感器,從而多個相機的方位(觀看方向)可以被檢測和記錄。設(shè)備SRC1包括或功能上連接到計算機處理器PROC1和存儲器MEM1,存儲器包括用于控制捕獲設(shè)備的計算機程序PROGR1代碼。由設(shè)備捕獲的圖像流可以被存儲在存儲器設(shè)備MEM2上以在另一設(shè)備(例如,觀看者)中使用和/或使用通信接口COMM1向服務(wù)器傳輸。
如上所述,單個相機設(shè)備可以包括多個相機和/或多個麥克風(fēng)。也可以使用放置在不同位置處的多個相機設(shè)備,其中單個相機設(shè)備可以包括一個或多個相機。以這種方式,相機設(shè)備及其相機可以能夠以比單個相機設(shè)備更全面的方式捕獲場景中的對象的圖像數(shù)據(jù)。例如,如果在從第一相機設(shè)備或第一相機的某個視點觀看對象時,存在隱藏在第一對象后面的第二對象,則第二對象可以從第二相機設(shè)備或者第二相機的另一視點可見。因此,可以收集第二對象的圖像數(shù)據(jù)例如用于產(chǎn)生3D視圖,在該3D視圖中,第二對象的一部分從第一對象的后面部分地對一只眼可見而對另一只眼不可見。為了從兩個或多個相機產(chǎn)生統(tǒng)一的圖像數(shù)據(jù),來自不同相機的圖像數(shù)據(jù)需要被組合在一起。此外,可以通過分析來自不同相機的數(shù)據(jù)來確定場景中的不同對象。這可以允許確定場景中的對象的三維位置。
備選地或者除了產(chǎn)生圖像流的視頻捕獲設(shè)備SRC1或多個這樣的設(shè)備之外,在系統(tǒng)中可以存在合成圖像的一個或多個源SRC2。這種合成圖像的源可以使用虛擬世界的計算機模型來計算其傳輸?shù)母鞣N圖像流。例如,源SRC2可以計算與位于虛擬觀看位置處的N個虛擬相機相對應(yīng)的N個視頻流。如先前針對圖1d所解釋的,當(dāng)這種合成的視頻流集合被用于觀看時,觀看者可以看到三維虛擬世界。設(shè)備SRC2包括或功能上被連接到計算機處理器PROC2和存儲器MEM2,該存儲器包括用于控制合成源設(shè)備SRC2的計算機程序PROGR2代碼。由設(shè)備捕獲的圖像流可以被存儲在存儲器設(shè)備MEM5(例如,存儲卡CARD1)上以在另一設(shè)備(例如,觀看者)中使用,或者使用通信接口COMM2向服務(wù)器或觀看者傳輸。
除了捕獲設(shè)備SRC1之外,還可以存在存儲、處理和數(shù)據(jù)流服務(wù)網(wǎng)絡(luò)。例如,可以存在服務(wù)器SERV或存儲來自捕獲設(shè)備SRC1或計算設(shè)備SRC2的輸出的多個服務(wù)器。該設(shè)備包括或功能上被連接到計算機處理器PROC3和存儲器MEM3,該存儲器包括用于控制服務(wù)器的計算機程序PROGR3代碼。服務(wù)器可以在通信接口COMM3上通過有線或無線網(wǎng)絡(luò)連接(或兩者)被連接到源SRC1和/或SRC2以及觀看者設(shè)備VIEWER1和VIEWER2。
為了觀看捕獲或產(chǎn)生的視頻內(nèi)容,可以存在一個或多個觀看者設(shè)備VIEWER1和VIEWER2。這些設(shè)備可以具有渲染模塊和顯示模塊,或者這些功能可以被組合在單個設(shè)備中。設(shè)備可以包括或功能上被連接到計算機處理器PROC4和存儲器MEM4,存儲器包括用于控制觀看設(shè)備的計算機程序PROGR4代碼。觀看者(回放)設(shè)備可以包括數(shù)據(jù)流接收器,用于從服務(wù)器接收視頻數(shù)據(jù)流并且用于對視頻數(shù)據(jù)流解碼。數(shù)據(jù)流可以通過通信接口COMM4在網(wǎng)絡(luò)連接上被接收,或者像存儲卡CARD2那樣從存儲器設(shè)備MEM6接收。觀看者設(shè)備可以具有圖形處理單元,用于將數(shù)據(jù)處理為如圖1c和圖1d所描述的用于觀看的合適格式。觀看者VIEWER1包括用于觀看渲染的立體視頻序列的高分辨率立體圖像頭戴式顯示器。頭戴式設(shè)備可以具有方位傳感器DET1和立體音頻耳機。觀看者VIEWER2包括使用3D技術(shù)(用于顯示立體視頻)的顯示器,并且渲染設(shè)備可以具有連接到其的頭部方位檢測器DET2。設(shè)備(SRC1、SRC2、SERVER、RENDERER、VIEWER1、VIEWER2)中的任何設(shè)備可以是計算機或便攜式計算設(shè)備,或者可以被連接到這些設(shè)備。這樣的渲染設(shè)備可以具有用于執(zhí)行根據(jù)本文中描述的各種示例的方法的計算機程序代碼。
圖2b示出了具有用于捕獲立體觀看的圖像數(shù)據(jù)的多個相機的相機設(shè)備的一個示例。相機包括兩個或多個照相機,兩個或多個照相機被配置為用于產(chǎn)生左眼圖像和右眼圖像的照相機對或者可以被布置成這樣的對。相機之間的距離可以對應(yīng)于人眼之間的通常距離。相機可以被布置為使得其在其視場中具有顯著的重疊。例如,可以使用180度或更大的廣角鏡頭,并且可以存在3個、4個、5個、6個、7個、8個、9個、10個、12個、16個或20個相機。相機可以跨域整個視野規(guī)則地或不規(guī)則地間隔開,或者其可以僅覆蓋整個視野的一部分。例如,可以存在以三角形布置的、并且具有朝向三角形一側(cè)的不同觀看方向的三個相機,使得全部三個相機覆蓋觀看方向中間的重疊區(qū)域。作為另一示例,具有廣角鏡頭、規(guī)則地布置在虛擬立方體的角落處、并且覆蓋整個視野的8個相機,使得整個或基本上整個球體在所有方向上被至少3個或4個相機覆蓋。在圖2b中,示出了三個立體相機對。如前所述,可以使用多個相機設(shè)備來捕獲場景的圖像數(shù)據(jù),相機設(shè)備具有一個或多個相機。相機設(shè)備可以如圖2b中所示使得其能夠產(chǎn)生立體圖像或者其可以產(chǎn)生單視圖視頻數(shù)據(jù)。來自不同相機(來自一個相機設(shè)備的多個相機和/或不同相機設(shè)備的多個相機)的數(shù)據(jù)可以被組合以獲得場景的三維圖像數(shù)據(jù)。
圖2c示出了用于立體觀看的頭戴式顯示器。頭戴式顯示器包括用于顯示左眼圖像和右眼圖像的兩個屏幕部分或兩個屏幕DISP1和DISP2。顯示器靠近眼睛,并且因此鏡頭被用于使圖像易于觀看并且用于擴展圖像以盡可能多地覆蓋眼睛的視場。該設(shè)備被附接到使用者的頭部,使得即使當(dāng)使用者轉(zhuǎn)動其頭部時,該設(shè)備保持在適當(dāng)位置。該設(shè)備可以具有用于確定頭部的頭部運動和方向的方位檢測模塊ORDET1。這里要注意,在這種類型的設(shè)備中,可以跟蹤頭部運動,但是由于顯示器覆蓋大面積的視場,因此不需要眼睛運動的檢測。頭部方位可以與用戶頭部的真實的物理方位相關(guān),并且其可以由用于確定用戶頭部的真實方位的傳感器跟蹤。備選地或附加地,頭部方位可以與用戶觀看方向的虛擬方位相關(guān),該虛擬方位由計算機程序或諸如操縱桿的計算機輸入設(shè)備控制。即,用戶可以能夠使用輸入設(shè)備來改變所確定的頭部方位,或者計算機程序可以改變觀看方向(例如,在程序中,代替或者除了真實的頭部方位之外,還可以控制所確定的頭部方位)。
圖2d圖示了相機設(shè)備CAM1。相機設(shè)備具有相機檢測器CAMDET1,相機檢測器包括用于感測擊中傳感器元件的光的強度的多個傳感器元件。相機設(shè)備具有鏡頭OBJ1(或多個鏡頭的鏡頭布置),鏡頭被定位使得擊中傳感器元件的光穿過鏡頭行進到傳感器元件。例如,對于對角線的交叉點的矩形傳感器,相機檢測器CAMDET1具有標(biāo)稱中點CP1,標(biāo)稱中點CP1是多個傳感器元件的中點。鏡頭也具有標(biāo)稱中點PP1,標(biāo)稱中點PP1位于例如鏡頭的對稱軸上。相機方位的方向由從相機傳感器的中點CP1和鏡頭的中點PP1通過的半直線定義。
上述系統(tǒng)可以如下工作。時間同步的視頻、音頻和方位數(shù)據(jù)首先使用一個或多個相機設(shè)備的相機來記錄。該數(shù)據(jù)可以由如上所述的多個并行視頻和音頻流組成。然后將這些數(shù)據(jù)立即或稍后傳輸?shù)酱鎯ζ骱吞幚砭W(wǎng)絡(luò),以用于處理和轉(zhuǎn)換成適合于隨后傳送到回放設(shè)備的格式。該轉(zhuǎn)換可以涉及對音頻和視頻數(shù)據(jù)的后處理步驟,為了在保持質(zhì)量在所期望水平的同時提高數(shù)據(jù)的質(zhì)量和/或減少數(shù)據(jù)的數(shù)量。最后,每個回放設(shè)備從網(wǎng)絡(luò)或從存儲設(shè)備接收數(shù)據(jù)流,并且將數(shù)據(jù)流渲染為原始位置的立體觀看再現(xiàn),該立體觀看再現(xiàn)可以由使用頭戴式顯示器和耳機的用戶體驗。
圖3a圖示了用于捕獲針對3D渲染的圖像或視頻的布置。存在用于捕獲針對3D渲染的圖像數(shù)據(jù)的兩個基本選項。第一選項是使用相機從真實世界捕獲圖像數(shù)據(jù)。第二選項是從合成的場景模型生成圖像數(shù)據(jù)。也可以使用第一選項和第二選項的組合例如以將合成的對象放置在現(xiàn)實世界場景(動畫電影)中或反之亦然(虛擬現(xiàn)實)。使用任一選項或其組合,可以使用若干相機來捕獲場景中的對象的顏色數(shù)據(jù)。相機的位置、方位和光學(xué)特點(例如,鏡頭特性)是已知的。這使得可以檢測多個圖片中的對象的存在,這又允許場景中的各種對象(或其表面點)的位置的確定。當(dāng)對象的表面的點的位置和顏色是已知的時候,可以生成從渲染視點觀看的場景的圖像。這將在后面說明。
可以使用在不同位置處的多個相機來從真實場景捕獲圖像數(shù)據(jù)。相機對可以用于為兩個圖像中匹配的每個點產(chǎn)生深度的估計。點估計被映射到共同的原點和方位,并且通過比較其顏色值和位置值來去除重復(fù)條目。然后基于它們從渲染視點的可見性的順序,將點布置為渲染層或者層(作為較短的表達方式)。
頂層通常不是稀疏的,并且包含從原點(渲染視點)所觀看的場景的每個點的條目。每個被隱蔽的像素被移動到稀疏輔助層中,其中有必要產(chǎn)生一個或多個稀疏層以存儲記錄的數(shù)據(jù)并且足夠詳細(xì)地表示視圖。此外,可以將合成數(shù)據(jù)生成到圍繞所記錄的數(shù)據(jù)的稀疏層中,為了避免稍后在渲染時可見的孔洞的問題。
層可以表示為二維圖像,圖像具有像素,并且像素具有相關(guān)聯(lián)的顏色值和深度值??梢越?jīng)由坐標(biāo)變換并且例如通過使用圖形處理器的紋理操作以內(nèi)插像素的顏色值和深度值來將層映射到渲染空間。
時間上的每個時刻可以使用新的層的集合和映射參數(shù)來編碼,以允許3D環(huán)境中的基于時間的變化的回放。在每個幀中,對于每個新的幀,采用新的層數(shù)據(jù)和映射元數(shù)據(jù)。備選地,可以暫?;跁r間的回放,并且可以使用單個幀并從不同位置渲染單個幀。
備選地,虛擬現(xiàn)實模型中的合成視頻源可被用于產(chǎn)生針對立體觀看的圖像??赡馨ǘ鄠€相機的一個或多個虛擬相機設(shè)備被定位于電影的虛擬世界中。發(fā)生的動作可以由計算機捕獲到視頻流中,視頻流對應(yīng)于虛擬相機設(shè)備(對應(yīng)于所謂的多視圖視頻,其中用戶可以切換視點)的虛擬相機。備選地,單個相機位置可以用作觀看點。換言之,可以以與針對常規(guī)3D電影相同的方式合成地生成傳送到播放器的內(nèi)容,然而,傳送到播放器的內(nèi)容包括多個(大于2)相機視圖和多個音頻流,多個音頻流允許為每個觀看者方位產(chǎn)生真實的音頻信號。實際上,虛擬世界的內(nèi)部三維(移動)模型被用于計算圖像源圖像。渲染不同的對象導(dǎo)致由相機捕獲的圖像,并且針對每個相機(一個或多個相機)執(zhí)行計算。虛擬相機不會以與真實相機相同的方式彼此遮蔽,因為虛擬相機可以在虛擬世界中不可見??梢允褂脠D形處理器或通用處理器的處理從復(fù)雜的合成模型(例如,CGI電影內(nèi)容模型)生成渲染層的圖像數(shù)據(jù),以將世界從單個視點渲染為層格式,其中預(yù)定數(shù)目的遮蔽的像素(預(yù)定數(shù)目的遮蔽的像素層)被存儲在輔助層中。
圖3b圖示了從多個捕獲的圖像形成點云??梢允褂枚喾N不同的技術(shù)從真實場景捕獲圖像數(shù)據(jù)。如果多個圖像可用于相同的場景,每個圖像從不同的原始位置捕獲,則該圖像數(shù)據(jù)可以被用于估計對象表面的位置和顏色??梢葬槍γ總€圖像已知或計算場景中的相機的精確位置(LOC1、LOC2)和方位(DIR1、DIR2)。另外,可以已知或計算鏡頭的行為,從而圖像中的每個像素與空間中的3d向量具有直接的對應(yīng)關(guān)系。使用該信息,來自第一相機的一個圖像(CAM VIEW 1)的像素可以與另一圖像(CAM VIEW 2)中相似的顏色的色素匹配,另一圖像來自沿向量路徑的第二相機,匹配像素必須位于該向量路徑上。一旦找到匹配,可以從兩個3d向量(對于點P1為VEC1和VEC2)的交點找到空間中的位置(坐標(biāo))。以這種方式,可以確定對象的表面的點P1、P2、P3、...、PN,即,可以計算點的顏色和位置。
需要至少3個重疊圖像,以估計在僅一個圖像中被另一對象遮蔽的一些對象的位置。然后給出2層信息(從渲染視點可見的第一對象和隱藏在第一對象后面的對象)。對于除一個圖像之外都被遮蔽的對象,可以通過從附近類似已知的對象的位置外推來進行粗略的位置估計。
可以通過相同的相機在不同時間從不同位置捕獲多個圖像。在這種情況下,將需要使用另一傳感器或使用關(guān)于場景中參考對象的位置變化的信息來測量相機定位。在這種情況下,場景中的對象應(yīng)當(dāng)是靜態(tài)的。
備選,可以使用多個相機在時間上同時捕獲多個圖像,每個相機具有相對于參考點的已知的或預(yù)校準(zhǔn)的相對位置和方位。在這種情況下,場景中的對象或相機系統(tǒng)本身不需要是靜態(tài)的。使用這種方法,可以在時間上匹配捕獲每個圖像集合時刻的每個時刻產(chǎn)生層序列。
用于為渲染層產(chǎn)生點數(shù)據(jù)的另一技術(shù)是使用采用“飛行時間(Time-of-flight)”技術(shù)的傳感器來測量光脈沖(來自激光器或LED)從測量設(shè)備行進離開對象并返回到測量設(shè)備所需的精確時間。這樣的傳感器應(yīng)當(dāng)與正常彩色圖像傳感器(具有與多圖像技術(shù)相同的校準(zhǔn)要求)共同定位和校準(zhǔn),使得可以給定每個像素相對于相機在空間中的估計顏色和位置。然而,使用僅一對這樣的傳感器,可以僅生成單個數(shù)據(jù)層。將需要覆蓋相同場景的至少兩個這樣的對,以生成兩個層(來估計在另一對中被遮蔽的一些對象的位置)。附加的對可以用于每個附加的層。
具有類似限制的相關(guān)技術(shù)是使用“激光雷達”掃描器來代替飛行時間傳感器。這通常在場景上掃描激光束,并測量反射光的相位或振幅,以產(chǎn)生距離的準(zhǔn)確估計。再次,可以使用激光雷達+圖像傳感器的附加的對來生成每個附加層。
圖4a圖示了形成渲染層和形成用于存儲或傳輸?shù)膱D像數(shù)據(jù)。通過產(chǎn)生多個像素集合(即,渲染層)來記錄場景用于存儲到文件中或用于傳輸,其中該層中的每個數(shù)據(jù)點至少包括來自共同原點的向量和顏色數(shù)據(jù)??梢允褂靡阎?D圖像或視頻序列壓縮技術(shù)來壓縮每個數(shù)據(jù)集合。
如前所述,可以形成圖4a中的多個點P1、...、PN和PX1、PX2,每個點在空間中具有顏色和位置。點PX1和PX2隱藏在像素P1、P2和P3之后。然后將這些點轉(zhuǎn)換為渲染層,使得當(dāng)從視點VIEWPNT觀看時,從直接可見的點產(chǎn)生第一渲染層渲染層1,并且至少部分地從隱藏在第一個渲染層之后的點產(chǎn)生一個或多個渲染層渲染層2。每個點的位置向量可以以不同的方式存儲或壓縮。其可以簡單地表示為每個點的3個獨立的參數(shù)-一對角度和從參考向量(由視點和觀看方向定義的向量)的距離,或正交軸方向上的3個距離。備選地,可以使用參數(shù)化的映射函數(shù)來基于點的索引將空間中每個點的位置向量從原點更加緊湊地編碼為點序列,該點序列被解釋為具有已知整數(shù)寬度和高度的2維規(guī)則布局(圖像),包括渲染層像素RP1、RP2、RP3和RPX1、RPX2。其對應(yīng)于圖4a中的渲染層渲染層1和渲染層2。這可以例如將x坐標(biāo)和y坐標(biāo)直接地映射到偏轉(zhuǎn)和俯仰坐標(biāo),從而允許將整個球體編碼到矩形結(jié)構(gòu)中??梢酝ㄟ^從現(xiàn)有點值進行內(nèi)插來形成每個(偏轉(zhuǎn)、俯仰)像素的像素顏色值。備選地,可以使用圓形映射函數(shù)(諸如,等值映射[radius=2*focalLength*sin(angleFromAxis/2)])來將半球或更多映射到圓形圖像。
備選地,可以使用圓形映射函數(shù)將球面坐標(biāo)映射到2d笛卡爾坐標(biāo)中。這些映射函數(shù)產(chǎn)生產(chǎn)生圓形圖像,其中每個x值和y值對可以被映射回球面坐標(biāo)。函數(shù)將距離光軸的角度(theta)映射為從圖像圓心的點的距離(r)。對于每個點,圍繞光軸(phi)的角度在球面坐標(biāo)和映射的圖像圓中保持相同。映射的圖像圓中的x坐標(biāo)和y坐標(biāo)與r坐標(biāo)和phi坐標(biāo)之間的關(guān)系如下:
x=x0+r*cos(phi),y=y(tǒng)0+r*sin(phi),其中點(x0,y0)是圖像圓的中心。
這種映射函數(shù)的示例是魚眼鏡頭中常用的等立體(Equisolid)。等立體映射取決于鏡頭的焦距(f),并且如下:r=2*f*sin(theta/2)。因此,對于位于光軸中心的點(theta為0),r變?yōu)榱悖⑶乙虼擞成涞狞c也在圖像圓的中心。對于垂直于光軸的向量上的點(theta為90度),r變?yōu)?.41*f,并且圖像圓中的點可以如下計算:x=x0+1.41*f*cos(phi),y=y(tǒng)0+1.41*f*sin(phi)。x和y可以用常數(shù)乘法器來縮放以將坐標(biāo)轉(zhuǎn)換為目標(biāo)分辨率中的像素。其他映射函數(shù)可以是立體的(r=2*f*tan(theta/2))、等距離的(r=f*theta)和正交的(r=f*sin(theta))。
每個層可以完全地(即,沒有孔洞、以連續(xù)的方式)覆蓋相機周圍的空間(諸如,圖4a中的渲染層1),或者它可以稀疏地覆蓋具有未覆蓋的部分空間,未覆蓋的部分或者使用映射參數(shù)完全省略,或者被編碼為較大尺寸的高度可壓縮的零值(諸如,圖4a中的渲染層2)??梢暬乃袑ο蠖加涗浽谝粋€層中。每個層被提供有用于將層的二維圖像數(shù)據(jù)映射到渲染空間中所需的映射參數(shù)。所有層最終可以被封裝到單個數(shù)據(jù)結(jié)構(gòu)中以對其進行解碼,單個數(shù)據(jù)結(jié)構(gòu)與必要的映射元數(shù)據(jù)一起提供。備選地,可以在不同的文件或流或不同的數(shù)據(jù)結(jié)構(gòu)中提供不同的層。
另外,層的編碼可以允許渲染復(fù)雜性的縮放,或者減少遞送的數(shù)據(jù)量,同時仍然給出場景的良好再現(xiàn)。一種方法是將所有層封裝到具有越來越遠(yuǎn)的子層的2D圖像中,該子層沿一個軸(例如,沿增加的y軸(向下))進一步定位。當(dāng)需要較少的渲染時,較低的數(shù)據(jù)簡單地不被遞送、或者不被解碼/處理,只有頂層和可能的子層的有限子集被遞送或者被解碼/處理。
本發(fā)明可以允許復(fù)雜3D環(huán)境的記錄、分布和再現(xiàn),該復(fù)雜3D環(huán)境具有之前不可能的物理上的真實行為水平,而不是呈現(xiàn)完全合成場景的大數(shù)據(jù)處理能力的。這可以通過大大減少由于渲染層結(jié)構(gòu)的使用而針對特定圖像分辨率需要遞送的數(shù)據(jù)量來改進基于來自不同視點的多個圖像的早期再現(xiàn)技術(shù)。
在圖4b中,圖示了使用兩個相機CAMR和CAML形成兩個渲染層渲染層1和渲染層2。不同的相機“看到”對象REAROBJ的不同部分,因為對象REAROBJ被隱藏在另一對象FRONTOBJ后面。左相機CAML能夠從左邊捕獲對象REAROBJ的更多圖像信息,并且右相機CAMR從右邊捕獲對象REAROBJ的更多圖像信息。當(dāng)例如通過將點VIEWPNT保持為視點來產(chǎn)生渲染層時,對象FRONTOBJ將對象REAROBJ的存在圖像信息的部分以及不存在圖像信息的部分隱藏。因此,第一渲染層渲染層1包括表示第一對象FRONTOBJ的像素區(qū)域1和表示第二對象REAROBJ的可見部分的像素區(qū)域2。第二渲染層包括對應(yīng)于第二對象REAROBJ的隱藏部分的圖像信息的像素區(qū)域3。區(qū)域3之外的像素可以為空,或可以為虛擬像素??梢匀缦惹八忉尩膩懋a(chǎn)生用于渲染層的深度信息。
圖4c圖示了使用渲染層渲染圖像。為了渲染立體圖像或立體視頻序列,如先前所解釋的形成用于左眼和右眼的圖像幀。為了渲染圖像幀,來自所有層渲染層1、渲染層2的內(nèi)容被投影到一個新的渲染相機空間中并且按照深度進行分類以渲染正確的場景。例如,對于常規(guī)圖形處理單元,每個渲染層點RP1、RP2、...、RPN和RPX1、RPX2、...可以被視為“粒子”,并使用頂點著色器程序進行變換,并且使用單個像素“點精靈(Point Sprite)”來變換到3D渲染空間中,單個像素“點精靈”包括相對于渲染視點的深度值。重疊投影的粒子的深度值被比較并且使用正確的混合函數(shù)以正確的順序被繪制。這由對應(yīng)于點RP1、RP2、RP3、RPX1、RPX2的虛線矩形圖示。以這種方式,可以使像素位于與其各自源圖像點在實際空間中的位置對應(yīng)的位置處。渲染不透明內(nèi)容,使得示出到渲染相機最近的點。可以使用在其后面可見內(nèi)容的正確混合來渲染不透明內(nèi)容。
這里需要注意,在渲染空間中,渲染層的像素可以表示不同尺寸的對象。與更靠近視點的像素相比,遠(yuǎn)離視點的像素(具有大的深度值)可以表示更大的對象。這是因為渲染層像素最初可以表示特定空間“錐體”以及在該“錐體”中的圖像內(nèi)容。取決于椎體底部有多遠(yuǎn),像素表示空間中的點的不同尺寸。渲染層可以以這樣的方式對齊以用于渲染:當(dāng)從渲染視點觀看時,像素網(wǎng)格基本上彼此對齊。
為了將渲染層變換到渲染空間,它們可能需要被旋轉(zhuǎn)。圍繞x軸成γ角(也稱為俯仰角)的坐標(biāo)的旋轉(zhuǎn)變換Rx的示例由以下旋轉(zhuǎn)矩陣定義:
以類似的方式,可以形成圍繞不同軸的旋轉(zhuǎn)Ry(用于偏轉(zhuǎn))和Rz(用于側(cè)傾)。作為一般旋轉(zhuǎn),可以形成三個旋轉(zhuǎn)的矩陣乘法R=RxRyRz。然后,該旋轉(zhuǎn)矩陣可以用于根據(jù)v2=R v1乘以第一坐標(biāo)系中的任何向量來獲得目的地坐標(biāo)系中的向量。
作為旋轉(zhuǎn)的一個示例,當(dāng)用戶轉(zhuǎn)動其頭部(存在由俯仰、偏轉(zhuǎn)和側(cè)傾值表示的旋轉(zhuǎn))時,可以確定用戶的頭部方位以獲得新的頭部方位。這可以發(fā)生例如使得在頭戴式顯示器中存在頭部運動檢測器。當(dāng)新的頭部方位已經(jīng)被確定時,可以重新計算視圖的方位和虛擬眼的位置,使得渲染的圖像匹配新的頭部方位。
作為另一示例,解釋頭戴式相機方位的校正。這里使用的技術(shù)是記錄捕獲設(shè)備的范圍并且使用方位信息來校正呈現(xiàn)給用戶的視圖的方位-在回放期間有效地消除捕獲設(shè)備的旋轉(zhuǎn)-使得用戶控制觀看方向,而不是捕獲設(shè)備控制觀看方向。如果觀看者反而希望體驗捕獲設(shè)備的原始運動,則可以禁用校正。如果觀看者希望體驗原始運動的較不極端的版本,則可以使用濾波器動態(tài)地應(yīng)用校正,從而跟隨原始運動,但是更緩慢地或者使用與正常方位較小的偏差跟隨原始運動。
對于將要被顯示的幀,層可以在多個渲染過程中被渲染,從不透明層開始,以包含半透明區(qū)域的層結(jié)束。最后,如果需要,可以進行單獨的后處理渲染傳遞以為虛擬像素內(nèi)插值。
在渲染期間,啟用圖形處理(例如,OpenGL)深度測試以丟棄被阻塞的片段,并且啟用深度緩沖器用于寫入。如果渲染的層包含半透明區(qū)域,則在渲染期間啟用alpha混合,否則禁用alpha混合。場景幾何結(jié)構(gòu)包含大量未連接的頂點(GL_POINT),每個未連接的頂點對應(yīng)于存儲的渲染層數(shù)據(jù)中的一個像素。根據(jù)層存儲格式,頂點可以具有不同數(shù)量的屬性。頂點屬性例如是位置(x,y,z)、顏色或指向?qū)嶋H層圖像數(shù)據(jù)的紋理坐標(biāo)。
下面以O(shè)penGL頂點和片段處理為例進行解釋。也可以以類似的方式使用其他渲染技術(shù)。
對于不同的層存儲格式,頂點和片段處理可以略有不同。處理以未壓縮列表格式存儲的層的步驟可以如下(每個頂點):
1.最初,所有頂點被分配并傳遞到頂點處理階段,頂點屬性包括相對于共同原點(渲染視點)的視角、顏色和深度。如果處理的層具有半透明內(nèi)容,則必須根據(jù)其深度值來對頂點分類。
2.頂點的(偏轉(zhuǎn)、俯仰、深度)表示被轉(zhuǎn)換為3d笛卡爾向量(x,y,z)。
3.通過將頂點與相應(yīng)的矩陣相乘,將相機和世界變換應(yīng)用于頂點。
4.頂點顏色屬性被傳遞到片段處理階段。
5.最終頂點坐標(biāo)被寫入輸出變量(gl_Position)。
6.在片段處理階段,從頂點處理接收的顏色數(shù)據(jù)被直接寫入輸出變量(gl_FragColor)。
處理以壓縮圖像格式存儲的層(即,包括具有像素顏色數(shù)據(jù)和深度值的像素的渲染層)的步驟可以如下(每個頂點):
1.最初,所有頂點被均勻地分配在具有相同深度值的場景周圍。
2.如果頂點不在觀看者當(dāng)前的視場內(nèi),則應(yīng)用變換函數(shù)以將其定位在當(dāng)前視場內(nèi)。該變換的目的是首先將所有可用頂點集中到當(dāng)前可見區(qū)域中。否則,由頂點表示的像素數(shù)據(jù)將在片段處理階段的渲染期間被剪切掉。在這種情況下,避免剪切改進了渲染質(zhì)量。位置變換可以以使得視場外的頂點均勻地分布在視場內(nèi)的方式來完成。例如,如果視場水平地從0度到90度,則最初水平位于方向91度的頂點將被變換為在1度處的水平位置。類似地,從91度到180度的水平位置的頂點將被水平地變換成1度到90度的范圍。垂直位置可以以相同的方式計算。為了避免變換的頂點進入與已在視場內(nèi)的其他頂點精確相同的位置,可以將小的恒定分?jǐn)?shù)(例如,在該示例情況下為0.25像素)添加到頂點的新位置值。
3.從變換的頂點位置計算頂點顏色數(shù)據(jù)的紋理坐標(biāo),并將其傳遞到片段處理階段。
4.使用來自紋理的紋理查找來為頂點提取深度值。
5.使用映射函數(shù)來計算頂點的視角。
6.頂點的(偏轉(zhuǎn)、俯仰、深度)深度表示被轉(zhuǎn)換為笛卡爾3d向量(x,y,z)。
7.通過將頂點與相應(yīng)的矩陣相乘,將相機和世界變換應(yīng)用于頂點。
8.像素分辨率在最終頂點位置中引起小的舍入誤差,這可以通過計算(子像素)舍入誤差并將其傳遞到片段處理階段來考慮。
9.最終頂點坐標(biāo)被寫入著色器輸出變量(gl_Position)。
10.在片段處理階段,使用所接收的紋理坐標(biāo)并考慮子像素舍入誤差值來從顏色紋理檢索顏色數(shù)據(jù),以使用周圍點來內(nèi)插更合適的顏色值(這對于未壓縮的列表格式是不可能的)。然后將顏色值寫入輸出變量(gl_FragColor)。
源像素可以以如下方式在渲染期間對齊:通過利用子像素量在空間中的調(diào)整位置,來自第一渲染層的第一像素和來自第二渲染層的第二像素被彼此重疊地注冊(Register)。取決于渲染層的存儲格式,頂點(像素)可以首先與一種虛擬網(wǎng)格對齊(步驟1和2,以“壓縮”圖像格式),或者不對齊。在提取正確的深度并變換和映射坐標(biāo)之后,在應(yīng)用相機和世界變換的步驟中,頂點可以最終對齊/定位(步驟7)。需要理解,對齊可以在另一個階段中發(fā)生,或者作為其自身的單獨步驟發(fā)生。
圖5a是通過捕獲圖像數(shù)據(jù)形成渲染層的流程圖。在階段510中,使用來自第一源圖像的第一圖像數(shù)據(jù)和來自第二源圖像的第二圖像數(shù)據(jù)形成場景模型。場景模型包括場景點,并且每個場景點在場景的坐標(biāo)空間中具有位置。這樣來自捕獲的圖像數(shù)據(jù)的場景點的形成已經(jīng)在前面解釋。備選地或附加地,可以使用合成場景,其中合成場景包括數(shù)字對象,數(shù)字對象的位置、方位、顏色、透明度和其他方面在模型中定義。在階段520中,確定第一組場景點,第一組場景點從渲染視點可見,該視點在場景坐標(biāo)空間中具有位置。即,當(dāng)從渲染視點(例如,如圖1所解釋的虛擬眼睛之間的中心點)觀看場景時,從視點可見(未被遮蔽在另一對象后面)的點可以屬于第一組場景點。在階段525中,確定第二組場景點,第二組場景點至少部分地被從渲染視點觀看的第一組場景點遮蔽。即,第二組的點在第一組的點之后,或者第二組的點中的至少一些點在第一組的一些點之后被遮蔽。在階段530中,使用第一組場景點形成第一渲染層,以及使用第二組場景點形成第二渲染層,第一渲染層和第二渲染層包括像素。在階段540中,提供第一渲染層和第二渲染層用于渲染立體圖像(例如通過將其存儲到文件中或通過將其發(fā)送到渲染器)??梢酝ㄟ^計算左眼圖像和右眼圖像從渲染層計算立體圖像,使得通過將左眼的虛擬位置作為左眼圖像的渲染視點和將右眼的虛擬位置作為右眼圖像的渲染視點來計算兩個圖像。
還可以確定第三組場景點,第三組場景點至少部分地被從渲染視點觀看的第二組場景點遮蔽。然后,可以使用第三組場景點形成第三渲染層,第三渲染層包括像素,并且可以提供第三渲染層用于渲染立體圖像。
第二渲染層可以是包括有效像素的稀疏層,有效像素對應(yīng)于至少部分地被第一組場景點遮蔽的場景點。此外,第三渲染層可以是稀疏層。因為像素可能在一些稀疏層中“丟失”,所以可以在第二渲染層中形成虛擬像素,其中虛擬像素不對應(yīng)于任何真實場景點。這可以進行以使用圖像編碼器將第二渲染層編碼為數(shù)據(jù)結(jié)構(gòu)。為了存儲和/或傳輸渲染層數(shù)據(jù)的目的,可以使用圖像編碼器將渲染層變?yōu)橐粋€或多個編碼的數(shù)據(jù)結(jié)構(gòu)。例如,可以產(chǎn)生具有包括渲染層的數(shù)據(jù)結(jié)構(gòu)的文件。一個或多個渲染層可以形成為二維圖像數(shù)據(jù)結(jié)構(gòu),該圖像數(shù)據(jù)結(jié)構(gòu)包括渲染層像素。渲染層像素可以包括顏色值和諸如alpha值的透明度值。如前所述,至少兩個渲染層的數(shù)據(jù)可以形成為經(jīng)整理的圖像數(shù)據(jù)結(jié)構(gòu),對照的圖像數(shù)據(jù)結(jié)構(gòu)包括至少兩個段,每個段對應(yīng)于相應(yīng)的渲染層。
形成場景模型可以包括通過利用所述源圖像的深度信息來確定所述場景點的三維位置。如前所述,形成場景模型可以包括使用所述源圖像的相機定位和比較所述源圖像的圖像內(nèi)容。
圖5b是使用渲染層渲染圖像的流程圖。在階段550中,接收第一渲染層和第二渲染層。第一渲染層和第二渲染層包括像素,并且第一渲染層包括對應(yīng)于從渲染視點觀看的場景的第一部分的像素,以及第二渲染層包括對應(yīng)于從渲染視點觀看的場景的第二部分的像素。場景的第二部分被從渲染視點觀看的第一部分遮蔽。在階段560中,第一渲染層的像素(或頂點)和第二渲染層的像素(或頂點)被放置在渲染空間中。例如,如果渲染層被存儲為圖像數(shù)據(jù),則二維圖像可以逐像素地變換到渲染空間中。在階段570中,深度值可以例如逐像素地與像素相關(guān)聯(lián)。在階段580中,可以使用像素及其深度值來渲染左眼圖像和右眼圖像。
第一渲染層和第二渲染層的像素可以包括顏色值,并且至少第一渲染層的像素可以包括透明度值(諸如,用于渲染至少第一渲染層的像素的透明度的alpha值)。為了使該透明度處理更有效,可以確定待渲染的渲染層是否包括半透明像素,并且在確定指示渲染層確實包括半透明像素的情況下,在渲染層的渲染中啟用alpha混合,否則在渲染渲染層中禁用alpha混合。
可以從包括像素值作為二維圖像的數(shù)據(jù)結(jié)構(gòu)接收第一渲染層和第二渲染層。例如,渲染層可以以圖像數(shù)據(jù)格式被存儲到圖像文件中,或以二維格式在數(shù)據(jù)結(jié)構(gòu)(例如,在計算機存儲器中)中表示??梢酝ㄟ^使用數(shù)據(jù)結(jié)構(gòu)中的數(shù)據(jù)的紋理映射、并且借助于圖形渲染系統(tǒng)(如OpenGL圖形加速器)的紋理處理能力將顏色值從數(shù)據(jù)結(jié)構(gòu)映射到渲染空間來確定第一渲染層和第二渲染層的像素的顏色值。
以類似的方式,可以從包括像素值作為二維圖像的數(shù)據(jù)結(jié)構(gòu)接收第一渲染層和第二渲染層,并且可以通過使用紋理映射來確定第一渲染層和第二渲染層的像素的深度值,其中深度值指示距渲染視點的距離。即,還可以在與渲染層的顏色值對應(yīng)的圖像狀數(shù)據(jù)結(jié)構(gòu)中存儲或傳輸深度數(shù)據(jù)。
為了渲染光反射和陰影的目的,渲染層可以包括針對渲染層像素的視角值的信息??梢詮陌ㄏ袼刂底鳛槎S圖像的數(shù)據(jù)結(jié)構(gòu)接收第一渲染層和第二渲染層,并且可以通過使用紋理映射、從針對第一渲染層和第二渲染層的像素的這些像素值來確定視角值。視角值的這種確定可以例如通過使用圖形處理器的所謂的“凹凸映射(Bump Mapping)”能力來發(fā)生。在這種方法中,使用紋理來計算像素的方位角,并且來自光源的光通過像素的反射取決于該方位角。換言之,為了計算待顯示的圖像的目的,像素可以具有表面法線,表面法線具有與朝向觀看者不同的另一方向。
圖6a描繪了包括用于渲染圖像的渲染層的數(shù)據(jù)結(jié)構(gòu)。在非壓縮的列表類型格式中,各種場景點由點數(shù)據(jù)結(jié)構(gòu)表示,每個點數(shù)據(jù)結(jié)構(gòu)具有用于顏色(3個值,例如紅色、綠色、藍(lán)色)、透明度(例如,alpha通道)、位置(3個值,例如偏轉(zhuǎn)、俯仰、深度坐標(biāo))以及可能的其他屬性的值。
在圖6b中,以圖像數(shù)據(jù)格式,第一渲染層中的場景點的顏色值由一個編碼的圖像表示,該圖像包括用于場景點的顏色值作為渲染層像素RP1、RP2、RP3,或該圖像包括可以用于例如通過紋理映射計算場景點的顏色值的顏色值。以類似的方式,第一渲染層的其他屬性可以表示為圖像,例如包括渲染層像素的深度值RPD1、RPD2、RPD3的深度值圖像。第二渲染層中的場景點的顏色值由一個編碼的圖像表示,該圖像包括用于場景點的顏色值作為渲染層像素RPX1、RPX2,或者該圖像包括可以用于例如通過紋理映射計算場景點的顏色值的顏色值。深度值RPDX1、RPDX2在對應(yīng)的深度圖像中。
不同的渲染層可以具有其自身的圖像數(shù)據(jù)結(jié)構(gòu),或者渲染層可以組合在一起成為一個或多個圖像。例如,圖像可以具有用于第一渲染層數(shù)據(jù)的段、用于第二渲染層數(shù)據(jù)的另一段等。可以使用常規(guī)的圖像壓縮技術(shù)來壓縮圖像。
圖7示出了渲染層的一個示例。第一渲染層層1包括三維空間中的多個立方體的圖像。立方體被定位為使得更靠近觀看者的立方體遮蔽更遠(yuǎn)離觀看者的立方體的部分。在第一層上,所有像素包括顏色值,因為在每個方向上,場景的部分(至少背景)是可見的。第二渲染層層2包括立方體的一些被遮蔽的部分。通過從與第一渲染層的視點稍微不同的視點(向左)拍攝圖像來獲得遮蔽部分。第二渲染層不包括在第一渲染層上可用的像素。因此,第二渲染層是稀疏的,并且許多(在這種情況下,大部分)像素是空的(以黑色示出)。如前所述,可以通過使用來自兩個渲染層的像素數(shù)據(jù)并計算針對左眼和右眼的圖像來形成左眼圖像和右眼圖像。
本發(fā)明的各種實施例可以借助于駐留在存儲器中并使相關(guān)設(shè)備執(zhí)行本發(fā)明的計算機程序代碼來實現(xiàn)。例如,設(shè)備可以包括用于處理、接收和發(fā)送數(shù)據(jù)、存儲器中的計算機程序代碼的電路和電子器件,以及當(dāng)運行計算機程序代碼時使得該設(shè)備執(zhí)行實施例的特征的處理器。此外,諸如服務(wù)器的網(wǎng)絡(luò)設(shè)備可以包括用于處理、接收和發(fā)送數(shù)據(jù)、存儲器中的計算機程序代碼的電路和電子器件,以及在運行計算機程序代碼時使得網(wǎng)絡(luò)設(shè)備執(zhí)行實施例的特征的處理器。
顯然,本發(fā)明不僅限于上述實施例,而是可以在所附權(quán)利要求的范圍內(nèi)進行修改。