本發(fā)明涉及視角跟蹤技術(shù)領(lǐng)域,特別涉及一種基于用戶視角的全景圖片的傳輸方法和裝置。
背景技術(shù):
全景視頻技術(shù)正在逐漸應(yīng)用到各個方面,悄悄地在改變著人們現(xiàn)有的工作和生活方式。全景視頻技術(shù)的實現(xiàn)本質(zhì)上基于全景圖片的生成、傳輸、顯示、視角跟蹤等關(guān)鍵技術(shù)。
視角跟蹤技術(shù)是為了保證在用戶視角改變時能夠保持顯示的流暢性。現(xiàn)有技術(shù)中,解決視角跟蹤問題的方法是把每一幀全景圖片完整地傳輸至客戶端,由客戶端設(shè)備根據(jù)用戶視角進行過濾,顯示出當前視角范圍內(nèi)的片段。然而,這種方法的傳輸數(shù)據(jù)量較大,冗余數(shù)據(jù)過多,對傳輸帶寬有著較高的要求,以致在視頻直播、互動游戲這樣的場景中,很難保證傳輸?shù)膶崟r性。
技術(shù)實現(xiàn)要素:
有鑒于此,本發(fā)明的目的在于提供一種基于用戶視角的全景圖片的傳輸方法和裝置,能夠減少全景圖片傳輸?shù)臄?shù)據(jù)量,降低對傳輸帶寬的要求,增強傳輸實時性。
為了達到上述目的,本發(fā)明提供了如下技術(shù)方案:
一種基于用戶視角的全景圖片的傳輸方法,包括:
服務(wù)器接收客戶端發(fā)來的用戶視角參數(shù)信息;
根據(jù)用戶視角參數(shù)信息提取全景圖片中用戶視角范圍內(nèi)的全景圖片信息;
將用戶視角范圍內(nèi)的全景圖片信息返回給客戶端。
一種基于用戶視角的全景圖片的傳輸裝置,包括:接收單元、提取單元、發(fā)送單元;
所述接收單元,用于接收客戶端發(fā)來的用戶視角參數(shù)信息;
所述提取單元,用于根據(jù)用戶視角參數(shù)信息提取全景圖片中用戶視角范圍內(nèi)的全景圖片信息;
所述發(fā)送單元,用于將用戶視角范圍內(nèi)的全景圖片信息返回給客戶端。
由上面的技術(shù)方案可知,本發(fā)明中,當客戶端的用戶視角變化時,服務(wù)器僅提取并返回用戶視角范圍內(nèi)的全景圖片信息,從而使得全景圖片傳輸?shù)臄?shù)據(jù)量大大減少,進而也降低了對傳輸帶寬的要求,增強了全景圖片傳輸?shù)膶崟r性。
附圖說明
圖1是本發(fā)明實施例一基于用戶視角的全景圖片傳輸過程示意圖;
圖2是本發(fā)明實施例二基于用戶視角的全景圖片傳輸過程示意圖;
圖3是本發(fā)明實施例基于用戶視角的全景圖片的傳輸方法流程圖;
圖4是本發(fā)明實施例基于用戶視角的全景圖片的傳輸裝置的結(jié)構(gòu)示意圖。
具體實施方式
為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點更加清楚明白,下面結(jié)合附圖并據(jù)實施例,對本發(fā)明的技術(shù)方案進行詳細說明。
本發(fā)明中,全景圖片可以使用全景攝像頭拍攝而成,也可以使用圖形處理器(GPU)渲染而成。針對使用不同方法得到的全景圖片,可以采用不同傳輸方法,下面結(jié)合具體實施例進行詳細說明。
實施例一、
實施例一適用于使用全景攝像頭拍攝而成的全景圖片,也適用于利用GPU渲染得到的全景圖片。
參見圖1,圖1是本發(fā)明實施例一基于用戶視角的全景圖片傳輸過程示意圖,如圖1所示,主要包括以下步驟:
步驟101、客戶端向服務(wù)器端發(fā)送用戶視角參數(shù)。
客戶端在用戶視角變化時,可以向服務(wù)器發(fā)送用戶視角參數(shù),用戶視角參數(shù)可以使用多個坐標數(shù)據(jù)表示,該多個坐標數(shù)據(jù)表明了用戶視角范圍。
步驟102、服務(wù)器接收用戶視角參數(shù),根據(jù)用戶視角參數(shù)提取全景圖片中用戶視角范圍內(nèi)的圖片,將提取的用戶視角范圍內(nèi)的圖片信息作為全景圖片信息返回給客戶端。
在本實施例中,全景圖片可以預(yù)先生成,也可以在接收到客戶端發(fā)送的用戶視角參數(shù)時即時生成。其中,
當全景圖片是使用全景攝像頭拍攝而成時,由于全景攝像頭包括至少6個單視角攝像頭組成,協(xié)同覆蓋360度空間中的所有視角,因此,使用全景攝像頭拍攝得到的全景圖片實際上是由多個不同視角的圖片構(gòu)成。因為用戶視角范圍內(nèi)的全景圖片可能與涉及到多個視角的圖片,為了取得用戶視角范圍內(nèi)的圖片信息,需要先對與用戶視角范圍存在交集的所有視角的圖片進行圖片縫合,然后再從縫合得到的圖片中提取用戶視角范圍內(nèi)的圖片,提取得到的圖片即為用戶視角范圍內(nèi)的圖片。在本實施例中,將從縫合得到的圖片中提取的用戶視角范圍內(nèi)的圖片信息作為全景圖片信息返回給客戶端,一方面可以滿足用戶觀看全景圖片的需求,另一方面因為未傳輸完整的全景圖片,可以較少帶寬浪費。
當全景圖片是利用GPU渲染而成時,可以只使用GPU渲染用戶視角范圍內(nèi)的圖片,將利用GPU渲染的圖片信息作為全景圖片信息返回給客戶端,這樣,一方面可以滿足用戶觀看全景圖片的需求;另一方面因為未傳輸完整的全景圖片,可以較少帶寬浪費;此外,還可以減少服務(wù)器獲取全景圖片時的資源占用。
在實際應(yīng)用中,當用戶視角范圍只是有微小的變化時,為了避免客戶端反復(fù)通過向服務(wù)器發(fā)送用戶視角參數(shù)來請求用戶視角范圍內(nèi)的全景圖片,服務(wù)器在提取用戶視角范圍內(nèi)的全景圖片信息時,同時還可以提取與用戶視角范圍相鄰的預(yù)設(shè)范圍內(nèi)的邊緣區(qū)域圖片信息,從而將用戶視角范圍內(nèi)的全景圖片信息和與用戶視角范圍相鄰的預(yù)設(shè)范圍內(nèi)的邊緣區(qū)域圖片信息一起作為全景圖片信息返回給客戶端,這樣,當用戶視角范圍只是發(fā)生微小變化時,客戶端不需要再通過向服務(wù)器發(fā)送用戶視角參數(shù)來請求用戶視角范圍內(nèi)的全景圖片,而是直接從最近一次從服務(wù)器接收的全景圖片信息中提取用戶視角范圍變化后的全景圖片信息。相應(yīng)地,當客戶端接收到服務(wù)器發(fā)來的全景圖片信息時,就需要重新根據(jù)用戶視角參數(shù)從接收到的全景圖片信息中精確提取出用戶視角范圍內(nèi)的全景圖片信息,也即:將從服務(wù)器接收到的全景圖片信息中,剔除與用戶視角范圍相鄰的預(yù)設(shè)范圍內(nèi)的邊緣區(qū)域圖片信息。
具體實現(xiàn)中,
使用全景攝像頭拍攝得到全景圖片的情況下,服務(wù)器可以在從縫合得到的圖片中提取用戶視角范圍內(nèi)的圖片信息時,同時從縫合得到的圖片中提取與用戶視角范圍相鄰的預(yù)設(shè)范圍內(nèi)的邊緣區(qū)域圖片信息,將提取的邊緣區(qū)域圖片信息和提取的視角范圍內(nèi)的圖片信息一起作為全景圖片信息返回給客戶端,使得全景圖片信息被發(fā)送至客戶端后,由客戶端根據(jù)視角參數(shù)信息從接收的全景圖片信息中精確提取得到用戶視角范圍內(nèi)的圖片并顯示。
使用GPU渲染得到全景圖片的情況下,服務(wù)器利用GPU渲染用戶視角范圍內(nèi)的圖片時,同時還可以利用GPU渲染與用戶視角范圍相鄰的預(yù)設(shè)范圍內(nèi)的邊緣區(qū)域圖片,將利用GPU渲染的用戶視角范圍內(nèi)的圖片信息和與用戶視角范圍相鄰的預(yù)設(shè)范圍內(nèi)的邊緣區(qū)域圖片信息一起作為全景圖片信息返回給客戶端,從而使得全景圖片信息被發(fā)送至客戶端后,由客戶端根據(jù)視角參數(shù)信息從接收的全景圖片信息中精確提取得到用戶視角范圍內(nèi)的圖片并顯示。
需要說明的是,服務(wù)器將提取得到的全景圖片信息返回給客戶端之前,可以對全景圖片信息進行編碼,而客戶端接收到服務(wù)器發(fā)來的全景圖片信息后,也需要先對全景圖片信息進行解碼后再進行顯示。
步驟103、客戶端接收到服務(wù)器返回的全景圖片信息,在客戶端的顯示屏上顯示全景圖片。
在本實施例中,用于客戶端從服務(wù)器接收到的全景圖片信息實際上就是用戶視角范圍內(nèi)的圖片,因此可以直接在顯示屏上顯示全景圖片即可。
在圖1所示本發(fā)明實施例中,當客戶端和服務(wù)器使用的是不同的坐標系時,服務(wù)器在根據(jù)用戶視角參數(shù)提取全景圖片中用戶視角范圍內(nèi)的圖片之前,需要對用戶視角參數(shù)(根據(jù)客戶端發(fā)送的用戶視角參數(shù)的特征可以確定客戶端使用的坐標系,目前比較常用的坐標系有:球坐標系、立方體坐標系、圓錐體坐標系等)執(zhí)行坐標系的轉(zhuǎn)換,具體為:將用戶視角參數(shù)中的坐標數(shù)據(jù)轉(zhuǎn)換為服務(wù)器使用的坐標系中的坐標數(shù)據(jù),轉(zhuǎn)換方法為現(xiàn)有技術(shù)。
在圖1所示本發(fā)明實施例中,當用戶視角變化過快時,客戶端可以先利用ATW技術(shù)對全景圖片進行幀補償,這樣,既可以避免頻繁向服務(wù)器發(fā)送用戶視角參數(shù),還可以在視角快速切換的時候提供更好的視角效果。
實施例二、
實施例二適用于利用GPU渲染得到的全景圖片。
參見圖2,圖2是本發(fā)明實施例二基于用戶視角的全景圖片傳輸過程示意圖,如圖2所示,主要包括以下步驟:
步驟201、客戶端向服務(wù)器端發(fā)送用戶視角參數(shù)。
客戶端在用戶視角變化時,可以向服務(wù)器發(fā)送用戶視角參數(shù),用戶視角參數(shù)可以使用多個坐標數(shù)據(jù)表示,該多個坐標數(shù)據(jù)表明了用戶視角范圍。
步驟202、服務(wù)器接收用戶視角參數(shù),根據(jù)用戶視角參數(shù)確定用戶視角范圍,計算利用GPU渲染用戶視角范圍內(nèi)的圖片所需要的命令和數(shù)據(jù),將利用GPU渲染用戶視角范圍內(nèi)的圖片所需要的命令和數(shù)據(jù)信息作為全景圖片信息返回給客戶端。
在本實施例中,服務(wù)器并不真正利用GPU渲染用戶視角范圍內(nèi)的全景圖片,利用GPU渲染用戶視角范圍內(nèi)的全景圖片的工作實際上由客戶端執(zhí)行。服務(wù)器僅需要計算出利用GPU渲染用戶視角范圍內(nèi)的圖片所需要的命令和數(shù)據(jù),將利用GPU渲染用戶視角范圍內(nèi)的圖片所需要的命令和數(shù)據(jù)信息作為全景圖片信息返回給客戶端即可。
步驟203、客戶端接收到服務(wù)器返回的全景圖片信息,客戶端根據(jù)全景圖片信息中渲染用戶視角范圍內(nèi)的圖片所需要的數(shù)據(jù)和命令渲染得到用戶視角范圍內(nèi)的圖片,并在客戶端的顯示屏上顯示全景圖片。
本實施例實際上是為了減輕服務(wù)器的處理壓力,在客戶端支持利用GPU渲染全景圖片的情況下,將利用GPU渲染用戶視角范圍內(nèi)的全景圖片的工作轉(zhuǎn)移到客戶端來。
以上以兩個實施例對本發(fā)明基于用戶視角的全景圖片的傳輸方法進行了原理性說明,基于上述原理,本發(fā)明提供了一種基于用戶視角的全景圖片的傳輸方法和一種基于用戶視角的全景圖片的傳輸裝置,下面分別結(jié)合圖3、圖4進行詳細說明。
參見圖3,圖3是本發(fā)明實施例基于用戶視角的全景圖片的傳輸方法流程圖,該方法應(yīng)用于服務(wù)器,包括:
步驟301,服務(wù)器接收客戶端發(fā)來的用戶視角參數(shù)信息;
步驟302、根據(jù)用戶視角參數(shù)信息提取全景圖片中用戶視角范圍內(nèi)的全景圖片信息;
步驟303、將用戶視角范圍內(nèi)的全景圖片信息返回給客戶端。
圖3所示方法中,
所述全景圖片是使用全景攝像頭拍攝得到的,包括多個視角的圖片;
根據(jù)用戶視角參數(shù)信息提取全景圖片中用戶視角范圍內(nèi)的全景圖片信息的方法為:根據(jù)用戶視角參數(shù)信息確定用戶視角范圍,對與用戶視角范圍存在交集的所有視角的圖片進行圖片縫合,從縫合得到的圖片中提取用戶視角范圍內(nèi)的圖片信息,將提取的圖片作為全景圖片信息。
圖3所示方法中,
從縫合得到的圖片中提取用戶視角范圍內(nèi)的圖片信息時,進一步從縫合得到的圖片中提取與用戶視角范圍相鄰的預(yù)設(shè)范圍內(nèi)的邊緣區(qū)域圖片信息,將提取的邊緣區(qū)域圖片信息和提取的視角范圍內(nèi)的圖片信息一起作為全景圖片信息,使得全景圖片信息被發(fā)送至客戶端后,由客戶端根據(jù)視角參數(shù)信息從接收的全景圖片信息中提取得到用戶視角范圍內(nèi)的圖片。
圖3所示方法中,
所述全景圖片是使用圖形處理器GPU渲染得到的;
根據(jù)用戶視角參數(shù)信息提取全景圖片中用戶視角范圍內(nèi)的全景圖片信息的方法為:根據(jù)用戶視角參數(shù)信息確定用戶視角范圍,利用GPU渲染用戶視角范圍內(nèi)的圖片,將利用GPU渲染的圖片信息作為全景圖片信息。
圖3所示方法中,
利用GPU渲染用戶視角范圍內(nèi)的圖片時,進一步利用GPU渲染與用戶視角范圍相鄰的預(yù)設(shè)范圍內(nèi)的邊緣區(qū)域圖片,將利用GPU渲染的用戶視角范圍內(nèi)的圖片信息和與用戶視角范圍相鄰的預(yù)設(shè)范圍內(nèi)的邊緣區(qū)域圖片信息一起作為全景圖片信息,使得全景圖片信息被發(fā)送至客戶端后,由客戶端根據(jù)視角參數(shù)信息從接收的全景圖片信息中提取得到用戶視角范圍內(nèi)的圖片。
圖3所示方法中,
根據(jù)用戶視角參數(shù)信息提取全景圖片中用戶視角范圍內(nèi)的全景圖片信息的方法為:根據(jù)用戶視角參數(shù)確定用戶視角范圍,計算渲染用戶視角范圍內(nèi)的圖片所需要的數(shù)據(jù)和命令,將渲染用戶視角范圍內(nèi)的圖片所需要的數(shù)據(jù)和命令作為全景圖片信息,使得全景圖片信息被發(fā)送至客戶端后,由客戶端根據(jù)全景圖片信息中渲染用戶視角范圍內(nèi)的圖片所需要的數(shù)據(jù)和命令渲染得到用戶視角范圍內(nèi)的圖片。
圖3所示方法中,
服務(wù)器接收客戶端發(fā)來的用戶視角參數(shù)信息之后,根據(jù)用戶視角參數(shù)信息提取全景圖片中用戶視角范圍內(nèi)的全景圖片信息之前,進一步包括:根據(jù)用戶視角參數(shù)信息確定客戶端使用的坐標系,比較客戶端使用的坐標系和服務(wù)器使用的坐標系,如果不一致,則將用戶視角參數(shù)中的坐標數(shù)據(jù)轉(zhuǎn)換為服務(wù)器使用的坐標系中的坐標數(shù)據(jù)。
參見圖4,圖4是本發(fā)明實施例基于用戶視角的全景圖片的傳輸裝置的結(jié)構(gòu)示意圖,該裝置包括:接收單元401、提取單元402、發(fā)送單元403;其中,
接收單元401,用于接收客戶端發(fā)來的用戶視角參數(shù)信息;
提取單元402,用于根據(jù)用戶視角參數(shù)信息提取全景圖片中用戶視角范圍內(nèi)的全景圖片信息;
發(fā)送單元403,用于將用戶視角范圍內(nèi)的全景圖片信息返回給客戶端。
圖4所示裝置中,
所述全景圖片是使用全景攝像頭拍攝得到的,包括多個視角的圖片;
所述提取單元402,根據(jù)用戶視角參數(shù)信息提取全景圖片中用戶視角范圍內(nèi)的全景圖片信息時,用于:根據(jù)用戶視角參數(shù)信息確定用戶視角范圍,對與用戶視角范圍存在交集的所有視角的圖片進行圖片縫合,從縫合得到的圖片中提取用戶視角范圍內(nèi)的圖片信息,將提取的圖片作為全景圖片信息。
圖4所示裝置中,
所述提取單元402,從縫合得到的圖片中提取用戶視角范圍內(nèi)的圖片信息時,進一步從縫合得到的圖片中提取與用戶視角范圍相鄰的預(yù)設(shè)范圍內(nèi)的邊緣區(qū)域圖片信息,將提取的邊緣區(qū)域圖片信息和提取的視角范圍內(nèi)的圖片信息一起作為全景圖片信息,使得全景圖片信息被發(fā)送至客戶端后,由客戶端根據(jù)視角參數(shù)信息從接收的全景圖片信息中提取得到用戶視角范圍內(nèi)的圖片。
圖4所示裝置中,
所述全景圖片是使用圖形處理器GPU渲染得到的;
所述提取單元402,根據(jù)用戶視角參數(shù)信息提取全景圖片中用戶視角范圍內(nèi)的全景圖片信息時,用于:根據(jù)用戶視角參數(shù)信息確定用戶視角范圍,利用GPU渲染用戶視角范圍內(nèi)的圖片,將利用GPU渲染的圖片信息作為全景圖片信息。
圖4所示裝置中,
所述提取單元402,利用GPU渲染用戶視角范圍內(nèi)的圖片時,進一步利用GPU渲染與用戶視角范圍相鄰的預(yù)設(shè)范圍內(nèi)的邊緣區(qū)域圖片,將利用GPU渲染的用戶視角范圍內(nèi)的圖片信息和與用戶視角范圍相鄰的預(yù)設(shè)范圍內(nèi)的邊緣區(qū)域圖片信息一起作為全景圖片信息,使得全景圖片信息被發(fā)送至客戶端后,由客戶端根據(jù)視角參數(shù)信息從接收的全景圖片信息中提取得到用戶視角范圍內(nèi)的圖片。
圖4所示裝置中,還包括轉(zhuǎn)換單元404;
所述轉(zhuǎn)換單元404,用于在接收單元接收到客戶端發(fā)來的用戶視角參數(shù)信息之后,提取單元根據(jù)用戶視角參數(shù)信息提取全景圖片中用戶視角范圍內(nèi)的全景圖片信息之前,根據(jù)用戶視角參數(shù)信息確定客戶端使用的坐標系,比較客戶端使用的坐標系和服務(wù)器使用的坐標系,如果不一致,則將用戶視角參數(shù)中的坐標數(shù)據(jù)轉(zhuǎn)換為服務(wù)器使用的坐標系中的坐標數(shù)據(jù)。
圖4所示裝置中,
所述提取單元402,根據(jù)用戶視角參數(shù)信息提取全景圖片中用戶視角范圍內(nèi)的全景圖片信息時,用于:根據(jù)用戶視角參數(shù)確定用戶視角范圍,計算渲染用戶視角范圍內(nèi)的圖片所需要的數(shù)據(jù)和命令,將渲染用戶視角范圍內(nèi)的圖片所需要的數(shù)據(jù)和命令作為全景圖片信息,使得全景圖片信息被發(fā)送至客戶端后,由客戶端根據(jù)全景圖片信息中渲染用戶視角范圍內(nèi)的圖片所需要的數(shù)據(jù)和命令渲染得到用戶視角范圍內(nèi)的圖片。
以上所述僅為本發(fā)明的較佳實施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所做的任何修改、等同替換、改進等,均應(yīng)包含在本發(fā)明保護的范圍之內(nèi)。