本發(fā)明涉及圖像處理領(lǐng)域,尤其涉及全景投影方法及裝置。
背景技術(shù):
全景(Panorama))是把相機(jī)拍攝的一組或多組照片經(jīng)過多種處理最后拼接成的一個全景圖像或視頻,分為虛擬現(xiàn)實和3D實景兩種。虛擬現(xiàn)實利用虛擬相機(jī)在三維頂點軟件中處理虛擬場景的畫面;3D實景利用多個相機(jī)拍攝實景照片,經(jīng)過特殊的拼合處理得到真實場景的畫面。對于沒有內(nèi)容互動的應(yīng)用,一般把以相機(jī)為球心的全景球面(經(jīng)度-180°~+180°,緯度-90°~+90°)投影變換展開成矩形畫面,再用H.264等常見標(biāo)準(zhǔn)編成碼流,經(jīng)過存儲或傳輸,在客戶端解碼恢復(fù)矩形畫面,然后投影變換還原回球面,在鼠標(biāo)、觸屏、陀螺儀等控制下,上下左右前后,展現(xiàn)不同方向和視角的視野,使觀眾感到處在現(xiàn)場環(huán)境當(dāng)中,極具沉浸感。
球面與矩形平面之間的投影變換,通常采用等距圓柱投影、立方體投影或者四棱錐投影等。但針對同樣的畫質(zhì)需求,上述投影方法計算量較大,實時處理的代價很高,并且,編碼傳輸時占用帶寬大,浪費了寶貴的網(wǎng)絡(luò)資源。
技術(shù)實現(xiàn)要素:
有鑒于此,本發(fā)明實施例的目的在于提供了全景投影方法及裝置,通過設(shè)置三角形網(wǎng)格剖分等方法,使得全景球面的投影計算更加高效。
第一方面,本發(fā)明實施例提供了全景投影方法,包括:
將假想球面進(jìn)行正交等分,得到多個子球面;
將各個子球面用三角形進(jìn)行網(wǎng)格剖分,并將假想球面按照剖分后的網(wǎng)格對應(yīng)到各個相機(jī)畫面中;
將各個相機(jī)畫面的內(nèi)容映射到全景球面;
將全景球面進(jìn)行投影,得到平面展開圖;
對平面展開圖進(jìn)行水平延展處理,并對處理后的平面展開圖進(jìn)行編碼。
結(jié)合第一方面,本發(fā)明實施例提供了第一方面的第一種可能的實施方式,其中,將假想球面進(jìn)行正交等分,得到多個子球面包括:
將假想球面進(jìn)行正交等分,得到八個子球面。
結(jié)合第一方面的第一種可能的實施方式,本發(fā)明實施例提供了第一方面的第二種可能的實施方式,其中,將各個子球面用三角形進(jìn)行網(wǎng)格剖分,并將假想球面按照剖分后的網(wǎng)格對應(yīng)到各個相機(jī)畫面中包括:
設(shè)定三角形的個數(shù);
用設(shè)定好個數(shù)的三角形對各個子球面進(jìn)行網(wǎng)格剖分;
計算所有三角形的頂點三維坐標(biāo);
根據(jù)空間幾何關(guān)系,將三角形按照頂點三維坐標(biāo)映射到各個相機(jī)畫面中。
結(jié)合第一方面,本發(fā)明實施例提供了第一方面的第三種可能的實施方式,其中,將全景球面進(jìn)行平面投影,得到平面展開圖包括:
將全景球面進(jìn)行桑遜投影變換,得到平面圖;
將平面圖按照經(jīng)度進(jìn)行四等分,得到平面展開圖,其中,平面展開圖中包括經(jīng)線邊界。
結(jié)合第一方面的第三種可能的實施方式,本發(fā)明實施例提供了第一方面的第四種可能的實施方式,其中,對平面展開圖進(jìn)行水平延展處理,并對處理后的平面展開圖進(jìn)行編碼包括:
將經(jīng)線邊界之間的區(qū)域進(jìn)行顏色填充,其中,顏色與經(jīng)線邊界水平對應(yīng)的平面展開圖的顏色一致;
對顏色填充后的平面展開圖和平面展開圖經(jīng)線邊界之間的區(qū)域均進(jìn)行編碼。
第二方面,本發(fā)明實施例提供了全景投影裝置,包括:
正交等分模塊,用于將假想球面進(jìn)行正交等分,得到多個子球面;
網(wǎng)格對應(yīng)模塊,用于將各個子球面用三角形進(jìn)行網(wǎng)格剖分,并將假想球面按照剖分后的網(wǎng)格對應(yīng)到各個相機(jī)畫面中;
映射模塊,用于將各個相機(jī)畫面的內(nèi)容映射到全景球面;
投影模塊,用于將全景球面進(jìn)行投影,得到平面展開圖;
編碼模塊,用于對平面展開圖進(jìn)行水平延展處理,并對處理后的平面展開圖進(jìn)行編碼。
結(jié)合第二方面,本發(fā)明實施例提供了第二方面的第一種可能的實施方式,其中,正交等分模塊包括:
正交等分單元,用于將假想球面進(jìn)行正交等分;
子球面獲得單元,用于得到八個子球面。
結(jié)合第二方面的第一種可能的實施方式,本發(fā)明實施例提供了第二方面的第二種可能的實施方式,其中,網(wǎng)格對應(yīng)模塊包括:
個數(shù)設(shè)定單元,用于設(shè)定三角形的個數(shù);
網(wǎng)格剖分單元,用設(shè)定好個數(shù)的三角形對各個子球面進(jìn)行網(wǎng)格剖分;
坐標(biāo)計算單元,用于計算所有三角形的三維頂點坐標(biāo);
空間對應(yīng)單元,用于根據(jù)空間幾何關(guān)系,將三角形按照頂點三維坐標(biāo)映射到各個相機(jī)畫面中。
結(jié)合第二方面,本發(fā)明實施例提供了第二方面的第三種可能的實施方式,其中,投影模塊包括:
投影單元,用于將全景球面進(jìn)行桑遜投影變換,得到平面圖;
平面展開單元,用于將平面圖按照經(jīng)度進(jìn)行四等分,得到平面展開圖,其中,平面展開圖中包括經(jīng)線邊界。
結(jié)合第二方面的第三種可能的實施方式,本發(fā)明實施例提供了第二方面的第四種可能的實施方式,其中,編碼模塊包括:
填充單元,用于將經(jīng)線邊界之間的區(qū)域進(jìn)行顏色填充,其中,顏色與經(jīng)線邊界水平對應(yīng)的平面展開圖的顏色一致;
編碼單元,用于對顏色填充后的平面展開圖和平面展開圖經(jīng)線邊界之間的區(qū)域均進(jìn)行編碼。
本發(fā)明實施例提供的全景投影方法及裝置,其中,該全景投影方法包括:首先,設(shè)置一個假想球面,并將假想球面進(jìn)行正交等分,得到多個子球面,之后,將各個子球面用三角形進(jìn)行網(wǎng)格剖分,并將假想球面按照剖分后的網(wǎng)格對應(yīng)到各個相機(jī)畫面中,通過將各個相機(jī)畫面的內(nèi)容映射到全景球面,將全景球面進(jìn)行投影,得到平面展開圖,最后,對平面展開圖進(jìn)行水平延展處理,并對處理后的平面展開圖進(jìn)行編碼,上述方法使得投影變換的效率更高,并且,節(jié)省了傳輸時占用的帶寬。
為使本發(fā)明的上述目的、特征和優(yōu)點能更明顯易懂,下文特舉較佳實施例,并配合所附附圖,作詳細(xì)說明如下。
附圖說明
為了更清楚地說明本發(fā)明具體實施方式或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對具體實施方式或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖包括本發(fā)明的一些實施方式,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1示出了球面的等距圓柱投影變換的結(jié)構(gòu)示意圖;
圖2示出了全景的立方體投影變換的結(jié)構(gòu)示意圖;
圖3示出了全景的四棱錐投影變換的結(jié)構(gòu)示意圖;
圖4示出了本發(fā)明實施例所提供的全景投影方法的結(jié)構(gòu)連接圖;
圖5示出了本發(fā)明實施例所提供的全景投影方法的結(jié)構(gòu)示意圖;
圖6示出了本發(fā)明實施例所提供的全景投影裝置的結(jié)構(gòu)框架圖;
圖7示出了本發(fā)明實施例所提供的全景投影裝置的結(jié)構(gòu)連接圖。
圖標(biāo):1-正交等分模塊;2-網(wǎng)格對應(yīng)模塊;3-映射模塊;4-投影模塊;5-編碼模塊;21-個數(shù)設(shè)定單元;22-網(wǎng)格剖分單元;23-坐標(biāo)計算單元;24-空間對應(yīng)單元。
具體實施方式
下面將結(jié)合本發(fā)明實施例中附圖,對本發(fā)明實施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例。通常在此處附圖中描述和示出的本發(fā)明實施例的組件可以以各種不同的配置來布置和設(shè)計。因此,以下對在附圖中提供的本發(fā)明的實施例的詳細(xì)描述并非旨在限制要求保護(hù)的本發(fā)明的范圍,而是僅僅表示本發(fā)明的選定實施例?;诒景l(fā)明的實施例,本領(lǐng)域技術(shù)人員在沒有做出創(chuàng)造性勞動的前提下所獲得的所有其他實施例,都屬于本發(fā)明保護(hù)的范圍。
為了能夠解決現(xiàn)有全景圖像或視頻系統(tǒng)編碼壓縮效率低的問題,以便在帶寬有限的情況下為用戶提供更好的全景畫質(zhì),一般把全景球面網(wǎng)格剖分成很多小的形狀,這樣,可以利用圖形處理器GPU(Graphics Processing Unit)的并行計算能力進(jìn)行高速、高質(zhì)量的展開或還原。目前,常見的網(wǎng)格剖分和投影變換主要有三種:球面的等距圓柱投影變換、全景的立方體投影變換和全景的四棱錐投影變換。
如圖1所示,為球面的等距圓柱投影變換展開,球面的等距圓柱投影變換是一種正軸圓柱投影變換,也是當(dāng)前全景視頻中最常用的變換方法。設(shè)置在球面上的緯線和經(jīng)線分別在矩形畫面上投影變換成水平和豎直的兩組平行直線。并且,這里的經(jīng)距和緯距相等,因此,經(jīng)緯線在矩形畫面上構(gòu)成正方形網(wǎng)格。當(dāng)球面上的內(nèi)容投影變換到矩形畫面上時,沿經(jīng)線方向無長度變形,但沿緯線方向存在變形。因此,角度和面積的變化程度與緯度相關(guān),由赤道向高緯逐漸增大。圖1中的細(xì)線是這種投影變換展開常用的網(wǎng)格剖分方法示意(實際操作過程中,細(xì)線更密),這些細(xì)線在球面上是三角形和四邊形,在展開圖上是正方形。球面的等距圓柱投影變換方法中,以相同范圍的緯度帶為單位進(jìn)行考慮,雖然越接近極點面積越小,但是,其內(nèi)設(shè)置的多邊形(三角形、四邊形)的數(shù)量沒有變化。因此,與赤道附近的緯度帶相比,高緯度地區(qū)網(wǎng)格剖分顯然過密,這種不均勻會浪費GPU資源。
如圖2所示,為全景的立方體投影變換展開,這是當(dāng)前WEB全景系統(tǒng)最常用的變換方法。該方法把球面投影到最小外切立方體的6個面上,得到6幅圖像,并放在一起用于編碼壓縮。圖2中的細(xì)線是這種投影變換展開常用的網(wǎng)格剖分方法示意(實際操作過程中,線條更密),在球面上是四邊形(僅表示了1個面),在展開圖上是正方形。在該方法中,對于各向同性的全景球面來說,顯然在8個頂點附近用了比6個面心附近更多的計算量。
如圖3所示,為全景的四棱錐投影變換展開,這是一種聲稱節(jié)省帶寬的變換方法。該方法把球面投影到外切四棱錐上(1個正方形和4個等腰三角形),展開后沿箭頭方向拉伸變形成1個大正方形。這樣,投影出來的表面積據(jù)稱“比equirectangular(圓柱)投影方式少80%,因此,編碼傳輸時省80%帶寬?!边@種數(shù)據(jù)沒有考慮等畫質(zhì)條件。事實上,該投影方法的畸變比立方體投影還嚴(yán)重,圖3中的細(xì)線是這種投影變換展開的一種自然的網(wǎng)格剖分方法示意(實際使用過程中,細(xì)線更密),在球面上是四邊形(僅表示了1個正方形),在展開圖上是正方形。四棱錐投影變換投影展開后通過拉伸得到正方形展開圖,從圖3中可以看到,投影和拉伸都是不規(guī)則畸變,因此,展開圖上均布的正方形網(wǎng)格分割在球面上是大小不等的四邊形,網(wǎng)格剖分均勻性差。
基于此,本發(fā)明實施例提供了全景投影方法及裝置,下面通過實施例進(jìn)行描述。
實施例1
參見圖4,本實施例提出的全景投影方法具體包括以下步驟:
步驟S101:將假想球面進(jìn)行正交等分,得到多個子球面,具體過程為:將假想球面進(jìn)行正交等分,得到八個子球面。
在實際操作過程中,比正二十面體更密的全等球面網(wǎng)格剖分是不存在的,因此只能使用近似的方法逼近對球面進(jìn)行均勻網(wǎng)格剖分的目的。以三角形網(wǎng)格剖分球面的方法在1/20球面和1/8球面上有兩種應(yīng)用,當(dāng)應(yīng)用于1/20球面時,網(wǎng)格的均勻性較好,但由于沒有貫穿的經(jīng)線和赤道,不利于做球面展開;而應(yīng)用于1/8球面時,網(wǎng)格的均勻性稍差(可以通過提高網(wǎng)格剖分個數(shù)改善),它有南北極點、4條經(jīng)線和1條緯線(赤道),因此,有利于做球面展開。綜合考慮,本發(fā)明選擇對正交8等分的球面三角形進(jìn)行三角網(wǎng)格剖分的方法來實現(xiàn)全景球的均勻網(wǎng)格剖分。
步驟S102:將各個子球面用三角形進(jìn)行網(wǎng)格剖分,并將假想球面按照剖分后的網(wǎng)格對應(yīng)到各個相機(jī)畫面中,具體通過以下步驟來實現(xiàn):
參見圖5,設(shè)定三角形的個數(shù),用設(shè)定好個數(shù)的三角形對各個子球面進(jìn)行網(wǎng)格剖分,之后,計算所有三角形的頂點三維坐標(biāo),根據(jù)空間幾何關(guān)系,將三角形按照頂點三維坐標(biāo)映射到各個相機(jī)畫面中。即設(shè)定剖分個數(shù)后,基于最優(yōu)三角網(wǎng)格剖分方法計算全景球面上所有三角形頂點的三維坐標(biāo)。
步驟S103:將各個相機(jī)畫面的內(nèi)容映射到全景球面,即當(dāng)根據(jù)上述空間幾何關(guān)系,把各個相機(jī)捕捉的畫面映射到預(yù)先設(shè)定的三角形上后,即可獲得全景球面圖像,為后面的展開動作做好準(zhǔn)備。
步驟S104:將全景球面進(jìn)行投影,得到平面展開圖,并具體包括以下步驟:將全景球面進(jìn)行桑遜投影變換,得到平面圖,將平面圖按照經(jīng)度進(jìn)行四等分,得到平面展開圖,其中,平面展開圖中包括經(jīng)線邊界。
在將球面進(jìn)行投影的過程中,桑遜(Sanson)投影變換是比較簡潔的一種。在桑遜投影變換中,緯線是平行直線,并且,間距相等,中央經(jīng)線為直線,其它經(jīng)線投影變換后為余弦曲線,并且,對稱于中央經(jīng)線分布。在每一條緯線上,經(jīng)線間隔都相等。顯然,赤道與中央經(jīng)線沒有變形。離赤道與中央經(jīng)線這兩條線越遠(yuǎn),變形越大。
桑遜投影變換展開圖雖然保證了面積不變,但由于極點唯一,在遠(yuǎn)離中心的位置變形嚴(yán)重,仍然不利于編碼壓縮。本發(fā)明把桑遜投影變換展開圖按照經(jīng)度分成4等分,所有經(jīng)線仍然投影變換成余弦曲線,因此,仍然保持等面積特性。由于,每個等分都有自己的北極點和南極點,各部分的變形就比較折中了。這種展開方式的邊緣恰好與上述1/8球面網(wǎng)格剖分的4條經(jīng)線相對應(yīng),二者可以結(jié)合應(yīng)用于全景系統(tǒng),既能提高GPU利用率,也能提高編碼壓縮效率。在這里,經(jīng)線邊界即為上述展開圖4等分的各份的邊界,等分之間相鄰邊界對應(yīng)球面上同一條經(jīng)線。
步驟S105:對平面展開圖進(jìn)行水平延展處理,并對處理后的平面展開圖進(jìn)行編碼,具體包括以下步驟:
將經(jīng)線邊界之間的區(qū)域進(jìn)行顏色填充,其中,顏色與經(jīng)線邊界水平對應(yīng)的平面展開圖的顏色一致,對顏色填充后的平面展開圖和平面展開圖經(jīng)線邊界之間的區(qū)域均進(jìn)行編碼。
在本發(fā)明中,在矩形展開圖中引入了八條經(jīng)線邊界,這里,經(jīng)線邊界設(shè)置的具體數(shù)量可根據(jù)情況進(jìn)行靈活設(shè)定。在經(jīng)線邊界的兩側(cè),一側(cè)是有效圖案,另一側(cè)沒有內(nèi)容。雖然,純色無內(nèi)容區(qū)比較好編碼,但是,邊界處的高頻信息會影響編碼效率。另外,編碼引入的高頻損失會在解碼還原后顯現(xiàn)這四個經(jīng)線邊界。由于,四對經(jīng)線邊界的圖案像拉鏈一樣有水平對應(yīng)關(guān)系,本發(fā)明將平面展開圖做水平延展。這樣的處理能使GPU很容易實現(xiàn),一方面,能保證無內(nèi)容區(qū)比較省編碼帶寬,另一方面,又能避免解碼還原后出現(xiàn)四條經(jīng)線拼縫。
綜上所述,本實施例提供的全景投影方法包括:首先,將假想球面進(jìn)行正交等分處理,得到多個子球面,之后,將各個子球面用三角形進(jìn)行網(wǎng)格剖分,并將假想球面按照剖分后的網(wǎng)格對應(yīng)到各個相機(jī)畫面中,然后,將各個相機(jī)畫面的內(nèi)容映射到全景球面,并將全景球面進(jìn)行投影,得到平面展開圖,最后,對平面展開圖進(jìn)行水平延展處理,并對處理后的平面展開圖進(jìn)行編碼,該方法通過設(shè)置假想球面和更均勻的三角形網(wǎng)格剖分方法,能使球面剖分的計算更加均勻,并且,展開圖與球面等面積,并使得畸變的程度大大減小,也使編碼效率達(dá)到最高,等畫質(zhì)條件下接近等距圓柱投影的157%,從而有效提升投影變換的處理效率。
實施例2
參見圖6和圖7,本實施例提供了全景投影裝置包括:依次相連的正交等分模塊1、網(wǎng)格對應(yīng)模塊2、映射模塊3、投影模塊4和編碼模塊5,其中,正交等分模塊1用于將假想球面進(jìn)行正交等分,得到多個子球面,正交等分模塊1包括正交等分單元和子球面獲得單元,其中,正交等分單元用于將假想球面進(jìn)行正交等分,子球面獲得單元用于得到八個子球面。
網(wǎng)格對應(yīng)模塊2將各個子球面用三角形進(jìn)行網(wǎng)格剖分,并將假想球面按照剖分后的網(wǎng)格對應(yīng)到各個相機(jī)畫面中,網(wǎng)格對應(yīng)模塊2包括以下單元:個數(shù)設(shè)定單元21用于設(shè)定三角形的個數(shù),網(wǎng)格剖分單元22用設(shè)定好個數(shù)的三角形對各個子球面進(jìn)行網(wǎng)格剖分,坐標(biāo)計算單元23用于計算所有三角形的頂點三維坐標(biāo),空間對應(yīng)單元24用于根據(jù)空間幾何關(guān)系,將三角形按照頂點三維坐標(biāo)映射到各個相機(jī)畫面中。
映射模塊3用于將各個相機(jī)畫面的內(nèi)容映射到全景球面,即將各個相機(jī)畫面的內(nèi)容通過上述空間幾何關(guān)系對應(yīng)起來的三角形映射到全景球面中。
投影模塊4用于將全景球面進(jìn)行投影,得到平面展開圖,這里,投影模塊4包括投影單元和平面展開單元:投影單元用于將全景球面進(jìn)行桑遜投影變換,得到平面圖,平面展開單元用于將平面圖按照經(jīng)度進(jìn)行四等分,得到平面展開圖,其中,平面展開圖中包括經(jīng)線邊界。
編碼模塊5用來對平面展開圖進(jìn)行水平延展處理,并對處理后的平面展開圖進(jìn)行編碼。編碼模塊5具體包括以下單元:填充單元用來將經(jīng)線邊界之間的區(qū)域進(jìn)行顏色填充,其中,顏色與經(jīng)線邊界水平對應(yīng)的平面展開圖的顏色一致,之后,通過編碼單元對顏色填充后的平面展開圖和平面展開圖經(jīng)線邊界之間的區(qū)域均進(jìn)行編碼。
綜上所述,本實施例提供的全景投影裝置包括:依次相連的正交等分模塊1、網(wǎng)格對應(yīng)模塊2、映射模塊3、投影模塊4和編碼模塊5,其中,正交等分模塊1用于將假想球面進(jìn)行正交等分,得到多個子球面,網(wǎng)格對應(yīng)模塊2用于將各個子球面用三角形進(jìn)行網(wǎng)格剖分,并將假想球面按照剖分后的網(wǎng)格對應(yīng)到各個相機(jī)畫面中,映射模塊3用于將各個相機(jī)畫面的內(nèi)容映射到全景球面,投影模塊4用于將全景球面進(jìn)行投影,得到平面展開圖,編碼模塊5用于對平面展開圖進(jìn)行水平延展處理,并對處理后的平面展開圖進(jìn)行編碼,通過該裝置的設(shè)置使得全景圖片在進(jìn)行剖分投影的過程中減少了畸變程度,能有效提高編碼效率,從而節(jié)省了傳輸帶寬。
最后應(yīng)說明的是:以上所述實施例,僅為本發(fā)明的具體實施方式,用以說明本發(fā)明的技術(shù)方案,而非對其限制,本發(fā)明的保護(hù)范圍并不局限于此,盡管參照前述實施例對本發(fā)明進(jìn)行了詳細(xì)的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),其依然可以對前述實施例所記載的技術(shù)方案進(jìn)行修改或可輕易想到變化,或者對其中部分技術(shù)特征進(jìn)行等同替換;而這些修改、變化或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明實施例技術(shù)方案的精神和范圍,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明的保護(hù)范圍應(yīng)所述以權(quán)利要求的保護(hù)范圍為準(zhǔn)。