本申請(qǐng)涉及視頻編碼領(lǐng)域,更具體地說(shuō),涉及一種全景視頻編碼方法和裝置。
背景技術(shù):
近年來(lái)虛擬現(xiàn)實(shí)(vr)在研究和應(yīng)用領(lǐng)域成為了熱點(diǎn)。而vr應(yīng)用的一大核心便是全景視頻,全景視頻在實(shí)際播放的時(shí)候是在vr頭顯設(shè)備上,其空間結(jié)構(gòu)是一個(gè)三維的球面,但在實(shí)際存儲(chǔ)在計(jì)算機(jī)上時(shí)必須要映射到平面上,其中最廣泛采用的是經(jīng)緯圖映射方式,這種方式把球面映射成一個(gè)長(zhǎng)寬2:1的矩形,但是會(huì)造成嚴(yán)重的圖像形狀畸變,這會(huì)給編碼時(shí)的運(yùn)動(dòng)估計(jì)帶來(lái)麻煩。
傳統(tǒng)的通用視頻編碼標(biāo)準(zhǔn)如h.264(advancedvideocoding)和hevc(highefficiencyvideocoding)都采用平動(dòng)運(yùn)動(dòng)模型(translationalmotionmodel),這種運(yùn)動(dòng)模型只能刻畫物體的平移,卻無(wú)法刻畫旋轉(zhuǎn),縮放和其他的一些復(fù)雜的運(yùn)動(dòng)。而全景視頻映射到平面由于存在畸變,這導(dǎo)致平動(dòng)運(yùn)動(dòng)模型存在編碼效率低的問(wèn)題。
技術(shù)實(shí)現(xiàn)要素:
有鑒于此,本申請(qǐng)?zhí)峁┮环N全景視頻編碼方法和裝置,基于球面坐標(biāo)系對(duì)全景視頻進(jìn)行運(yùn)動(dòng)估計(jì)和補(bǔ)償,以消除視頻中畸變帶來(lái)的影響,從而提高視頻編碼效率。
為了實(shí)現(xiàn)上述目的,現(xiàn)提出的方案如下:
一種全景視頻編碼方法,包括:
確定當(dāng)前預(yù)測(cè)單元的最相鄰預(yù)測(cè)單元;
獲取參考點(diǎn)的第一平面坐標(biāo)、第二平面坐標(biāo)、第三平面坐標(biāo)以及第四平面坐標(biāo);
其中,所述第一平面坐標(biāo)為所述參考點(diǎn)在當(dāng)前幀的當(dāng)前預(yù)測(cè)單元中的坐標(biāo)、所述第二平面坐標(biāo)為所述參考點(diǎn)在當(dāng)前幀的最相鄰預(yù)測(cè)單元中的坐標(biāo),所述第三平面坐標(biāo)為所述參考點(diǎn)在參考幀的當(dāng)前預(yù)測(cè)單元中的坐標(biāo),所述第四平面坐標(biāo)為所述參考點(diǎn)在參考幀的最相鄰預(yù)測(cè)單元中的坐標(biāo);
分別將所述第一平面坐標(biāo)、所述第二平面坐標(biāo)、所述第三平面坐標(biāo)以及所述第四平面坐標(biāo)轉(zhuǎn)換為球面坐標(biāo),并根據(jù)所述球面坐標(biāo)計(jì)算所述當(dāng)前預(yù)測(cè)單元在三維空間內(nèi)的三維運(yùn)動(dòng)矢量;
對(duì)于當(dāng)前幀的當(dāng)前預(yù)測(cè)單元中所有目標(biāo)點(diǎn),根據(jù)所述三維運(yùn)動(dòng)矢量確定所述目標(biāo)點(diǎn)在參考幀內(nèi)對(duì)應(yīng)的目標(biāo)參考點(diǎn);
利用所述目標(biāo)參考點(diǎn)的像素對(duì)所述目標(biāo)點(diǎn)像素進(jìn)行補(bǔ)償,以實(shí)現(xiàn)對(duì)所述當(dāng)前預(yù)測(cè)單元的球坐標(biāo)變換運(yùn)動(dòng)模型補(bǔ)償;
對(duì)所述當(dāng)前預(yù)測(cè)單元進(jìn)行編碼。
優(yōu)選的,所述確定當(dāng)前預(yù)測(cè)單元的最相鄰預(yù)測(cè)單元,包括:
獲取所述當(dāng)前預(yù)測(cè)單元的二維運(yùn)動(dòng)矢量,以及多個(gè)相鄰預(yù)測(cè)單元的二維運(yùn)動(dòng)矢量;
比較所述當(dāng)前預(yù)測(cè)單元的二維運(yùn)動(dòng)矢量和相鄰預(yù)測(cè)單元的二維運(yùn)動(dòng)矢量;
將與所述當(dāng)前預(yù)測(cè)單元二維運(yùn)動(dòng)矢量最近的相鄰預(yù)測(cè)單元作為所述當(dāng)前預(yù)測(cè)單元的最相鄰預(yù)測(cè)單元。
優(yōu)選的,所述獲取參考點(diǎn)的第一平面坐標(biāo)、第二平面坐標(biāo)、第三平面坐標(biāo)以及第四平面坐標(biāo),包括:
獲取所述參考點(diǎn)的所述第一平面坐標(biāo)和所述第二平面坐標(biāo);
計(jì)算所述當(dāng)前預(yù)測(cè)單元與所述最相鄰預(yù)測(cè)單元的二維運(yùn)動(dòng)矢量差值;
根據(jù)所述二維運(yùn)動(dòng)矢量差值和所述第一平面坐標(biāo)確定所述第三平面坐標(biāo),以及根據(jù)所述二維運(yùn)動(dòng)矢量差值和所述第二平面坐標(biāo)確定所述第四平面坐標(biāo)。
優(yōu)選的,所述分別將所述第一平面坐標(biāo)、所述第二平面坐標(biāo)、所述第三平面坐標(biāo)以及所述第四平面坐標(biāo)轉(zhuǎn)換為球面坐標(biāo),包括:
基于公式
其中,θ表示球面坐標(biāo)的緯度,且
(u,v)表示所述參考點(diǎn)的平面坐標(biāo),h表示圖像的高度,w表示圖像的寬度,r表示所述參考點(diǎn)的深度。
優(yōu)選的,所述根據(jù)所述球面坐標(biāo)計(jì)算所述當(dāng)前預(yù)測(cè)單元在三維空間內(nèi)的三維運(yùn)動(dòng)矢量,包括:
根據(jù)所述第一平面坐標(biāo)對(duì)應(yīng)的第一球面坐標(biāo)和所述第三平面坐標(biāo)對(duì)應(yīng)的第三球面坐標(biāo),計(jì)算第一三維運(yùn)動(dòng)矢量;
根據(jù)所述第二平面坐標(biāo)對(duì)應(yīng)的第二球面坐標(biāo)和所述第四平面坐標(biāo)對(duì)應(yīng)的第四球面坐標(biāo),計(jì)算第二三維運(yùn)動(dòng)矢量;
利用所述第一三維運(yùn)動(dòng)矢量和所述第二三維運(yùn)動(dòng)矢量的相等性以及參考點(diǎn)在參考幀的當(dāng)前預(yù)測(cè)單元中的預(yù)設(shè)深度分別確定參考點(diǎn)在當(dāng)前幀的當(dāng)前預(yù)測(cè)單元中的深度、在當(dāng)前幀的最相鄰預(yù)測(cè)單元中的深度以及在參考幀的最相鄰預(yù)測(cè)單元中的深度;
根據(jù)參考點(diǎn)在參考幀的當(dāng)前預(yù)測(cè)單元中的預(yù)設(shè)深度和參考點(diǎn)在當(dāng)前幀的當(dāng)前預(yù)測(cè)單元中的深度計(jì)算所述當(dāng)前預(yù)測(cè)單元在三維空間內(nèi)的三維運(yùn)動(dòng)矢量;
或根據(jù)參考點(diǎn)在參考幀的最相鄰預(yù)測(cè)單元中的深度和參考點(diǎn)在當(dāng)前幀的最相鄰預(yù)測(cè)單元中的深度計(jì)算所述當(dāng)前預(yù)測(cè)單元在三維空間內(nèi)的三維運(yùn)動(dòng)矢量。
優(yōu)選的,所述對(duì)所述當(dāng)前預(yù)測(cè)單元進(jìn)行編碼,包括;
計(jì)算經(jīng)過(guò)球坐標(biāo)變換運(yùn)動(dòng)模型補(bǔ)償后的所述當(dāng)前預(yù)測(cè)單元的第一代價(jià)函數(shù)值;
計(jì)算經(jīng)過(guò)平動(dòng)模型補(bǔ)償后的所述當(dāng)前預(yù)測(cè)單元的第二代價(jià)函數(shù)值;
比較所述第一代價(jià)函數(shù)值和所述第二代價(jià)函數(shù)值,根據(jù)比較結(jié)果選取所述當(dāng)前預(yù)測(cè)單元的補(bǔ)償方式。
一種全景視頻編碼裝置,包括:
篩選單元,用于確定當(dāng)前預(yù)測(cè)單元的最相鄰預(yù)測(cè)單元;
坐標(biāo)采集單元,用于獲取參考點(diǎn)的第一平面坐標(biāo)、第二平面坐標(biāo)、第三平面坐標(biāo)以及第四平面坐標(biāo);
其中,所述第一平面坐標(biāo)為所述參考點(diǎn)在當(dāng)前幀的當(dāng)前預(yù)測(cè)單元中的坐標(biāo)、所述第二平面坐標(biāo)為所述參考點(diǎn)在當(dāng)前幀的最相鄰預(yù)測(cè)單元中的坐標(biāo),所述第三平面坐標(biāo)為所述參考點(diǎn)在參考幀的當(dāng)前預(yù)測(cè)單元中的坐標(biāo),所述第四平面坐標(biāo)為所述參考點(diǎn)在參考幀的最相鄰預(yù)測(cè)單元中的坐標(biāo);
坐標(biāo)轉(zhuǎn)換單元,用于分別將所述第一平面坐標(biāo)、所述第二平面坐標(biāo)、所述第三平面坐標(biāo)以及所述第四平面坐標(biāo)轉(zhuǎn)換為球面坐標(biāo);
三維運(yùn)動(dòng)矢量計(jì)算單元,用于根據(jù)所述球面坐標(biāo)計(jì)算所述當(dāng)前預(yù)測(cè)單元在三維空間內(nèi)的三維運(yùn)動(dòng)矢量;
目標(biāo)參考點(diǎn)確定單元,用于對(duì)于當(dāng)前幀的當(dāng)前預(yù)測(cè)單元中所有目標(biāo)點(diǎn),根據(jù)所述三維運(yùn)動(dòng)矢量確定所述目標(biāo)點(diǎn)在參考幀內(nèi)對(duì)應(yīng)的目標(biāo)參考點(diǎn);
補(bǔ)償單元,用于利用所述目標(biāo)參考點(diǎn)的像素對(duì)所述目標(biāo)點(diǎn)像素進(jìn)行補(bǔ)償,以實(shí)現(xiàn)對(duì)所述當(dāng)前預(yù)測(cè)單元的球坐標(biāo)變換運(yùn)動(dòng)模型補(bǔ)償;
編碼單元,用于對(duì)所述當(dāng)前預(yù)測(cè)單元進(jìn)行編碼。
優(yōu)選的,所述篩選單元包括:
二維運(yùn)動(dòng)矢量搜索模塊,用于獲取所述當(dāng)前預(yù)測(cè)單元的二維運(yùn)動(dòng)矢量,以及多個(gè)相鄰預(yù)測(cè)單元的二維運(yùn)動(dòng)矢量;
比較模塊,用于比較所述當(dāng)前預(yù)測(cè)單元的二維運(yùn)動(dòng)矢量和相鄰預(yù)測(cè)單元的二維運(yùn)動(dòng)矢量;
預(yù)測(cè)單元選取模塊,用于將與所述當(dāng)前預(yù)測(cè)單元二維運(yùn)動(dòng)矢量最近的相鄰預(yù)測(cè)單元作為所述當(dāng)前預(yù)測(cè)單元的最相鄰預(yù)測(cè)單元。
優(yōu)選的,所述坐標(biāo)采集單元包括:
坐標(biāo)采集模塊,用于獲取所述參考點(diǎn)的所述第一平面坐標(biāo)和所述第二平面坐標(biāo);
第一計(jì)算模塊,用于計(jì)算所述當(dāng)前預(yù)測(cè)單元與所述最相鄰預(yù)測(cè)單元的二維運(yùn)動(dòng)矢量差值;
第二計(jì)算模塊,用于根據(jù)所述二維運(yùn)動(dòng)矢量差值和所述第一平面坐標(biāo)確定所述第三平面坐標(biāo),以及根據(jù)所述二維運(yùn)動(dòng)矢量差值和所述第二平面坐標(biāo)確定所述第四平面坐標(biāo)。
優(yōu)選的,所述坐標(biāo)轉(zhuǎn)換單元具體用于:
基于公式
其中,θ表示球面坐標(biāo)的緯度,且
(u,v)表示所述參考點(diǎn)的平面坐標(biāo),h表示圖像的高度,w表示圖像的寬度,r表示所述參考點(diǎn)的深度。
優(yōu)選的,所述三維運(yùn)動(dòng)矢量計(jì)算單元,包括:
第三計(jì)算模塊,用于根據(jù)所述第一平面坐標(biāo)對(duì)應(yīng)的第一球面坐標(biāo)和所述第三平面坐標(biāo)對(duì)應(yīng)的第三球面坐標(biāo),計(jì)算第一三維運(yùn)動(dòng)矢量;
第四計(jì)算模塊,用于根據(jù)所述第二平面坐標(biāo)對(duì)應(yīng)的第二球面坐標(biāo)和所述第四平面坐標(biāo)對(duì)應(yīng)的第四球面坐標(biāo),計(jì)算第二三維運(yùn)動(dòng)矢量;
第五計(jì)算模塊,用于利用所述第一三維運(yùn)動(dòng)矢量和所述第二三維運(yùn)動(dòng)矢量的相等性以及參考點(diǎn)在參考幀的當(dāng)前預(yù)測(cè)單元中的預(yù)設(shè)深度分別確定參考點(diǎn)在當(dāng)前幀的當(dāng)前預(yù)測(cè)單元中的深度、在當(dāng)前幀的最相鄰預(yù)測(cè)單元中的深度以及在參考幀的最相鄰預(yù)測(cè)單元中的深度;
第六計(jì)算模塊,用于根據(jù)參考點(diǎn)在參考幀的當(dāng)前預(yù)測(cè)單元中的預(yù)設(shè)深度和參考點(diǎn)在當(dāng)前幀的當(dāng)前預(yù)測(cè)單元中的深度計(jì)算所述當(dāng)前預(yù)測(cè)單元在三維空間內(nèi)的三維運(yùn)動(dòng)矢量;
或根據(jù)參考點(diǎn)在參考幀的最相鄰預(yù)測(cè)單元中的深度和參考點(diǎn)在當(dāng)前幀的最相鄰預(yù)測(cè)單元中的深度計(jì)算所述當(dāng)前預(yù)測(cè)單元在三維空間內(nèi)的三維運(yùn)動(dòng)矢量。
優(yōu)選的,所述編碼單元包括;
第一代價(jià)函數(shù)計(jì)算模塊,用于計(jì)算經(jīng)過(guò)球坐標(biāo)變換運(yùn)動(dòng)模型補(bǔ)償后的所述當(dāng)前預(yù)測(cè)單元的第一代價(jià)函數(shù)值;
第二代價(jià)函數(shù)計(jì)算模塊,用于計(jì)算經(jīng)過(guò)平動(dòng)模型補(bǔ)償后的所述當(dāng)前預(yù)測(cè)單元的第二代價(jià)函數(shù)值;
比較模塊,用于比較所述第一代價(jià)函數(shù)值和所述第二代價(jià)函數(shù)值,根據(jù)比較結(jié)果選取所述當(dāng)前預(yù)測(cè)單元的補(bǔ)償方式。
經(jīng)由上述技術(shù)方案可知,本申請(qǐng)公開(kāi)了一種全景視頻編碼方法和裝置。該方法將當(dāng)前預(yù)測(cè)單元中的某個(gè)參考點(diǎn)在當(dāng)前幀的當(dāng)前預(yù)測(cè)單元、當(dāng)前幀的最相鄰預(yù)測(cè)單元、參考幀的當(dāng)前預(yù)測(cè)單元以及參考幀的最相鄰預(yù)測(cè)單元的平面坐標(biāo)轉(zhuǎn)換為球面坐標(biāo),從而根據(jù)參考點(diǎn)的球面坐標(biāo)確定當(dāng)前預(yù)測(cè)單元在三維空間內(nèi)的三維運(yùn)動(dòng)矢量。進(jìn)而,根據(jù)該三維運(yùn)動(dòng)矢量確定當(dāng)前幀中當(dāng)前預(yù)測(cè)單元的所有目標(biāo)點(diǎn)在參考幀的對(duì)應(yīng)目標(biāo)參考點(diǎn),并根據(jù)該目標(biāo)參考點(diǎn)的像素對(duì)目標(biāo)點(diǎn)像素進(jìn)行補(bǔ)償。與現(xiàn)有技術(shù)相比,本發(fā)明采用球面坐標(biāo)系轉(zhuǎn)換運(yùn)動(dòng)模型進(jìn)行像素補(bǔ)償,消除了視頻中畸變帶來(lái)的影響,從而提高視頻編碼效率。
附圖說(shuō)明
為了更清楚地說(shuō)明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面描述中的附圖僅僅是本發(fā)明的實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)提供的附圖獲得其他的附圖。
圖1示出了本發(fā)明一個(gè)實(shí)施例公開(kāi)的一種全景視頻編碼方法的流程示意圖;
圖2示出了本發(fā)明另一個(gè)實(shí)施例公開(kāi)的一種最相鄰預(yù)測(cè)單元位置圖;
圖3示出了一種球面模型示意圖;
圖4示出了本發(fā)明另一個(gè)實(shí)施例公開(kāi)的一種全景視頻編碼裝置的結(jié)構(gòu)示意圖。
具體實(shí)施方式
下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例。基于本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
參見(jiàn)圖1示出了本發(fā)明一個(gè)實(shí)施例公開(kāi)的一種全景視頻編碼方法的流程示意圖。
在本實(shí)施例中,該方法包括:
由圖1可知,該方法包括:
s101:確定當(dāng)前預(yù)測(cè)單元的最相鄰預(yù)測(cè)單元。
對(duì)于一個(gè)預(yù)測(cè)單元,首先在它的領(lǐng)域進(jìn)行搜索,搜索位置如圖2所示的a0、a1、b0、b1和b2。
首先比較當(dāng)前預(yù)測(cè)單元的二維運(yùn)動(dòng)矢量與上述5個(gè)候選位置所在的預(yù)測(cè)單元的二維運(yùn)動(dòng)矢量。確定二維運(yùn)動(dòng)矢量距離最近的候選位置,將該候選位置所在的預(yù)測(cè)單元作為當(dāng)前預(yù)測(cè)單元的最相鄰預(yù)測(cè)單元。
s102:獲取參考點(diǎn)的第一平面坐標(biāo)、第二平面坐標(biāo)、第三平面坐標(biāo)以及第四平面坐標(biāo)。
當(dāng)前幀包含2個(gè)預(yù)測(cè)單元(當(dāng)前預(yù)測(cè)單元以及最相鄰預(yù)測(cè)單元),設(shè)參考點(diǎn)(通常選取預(yù)測(cè)單元中心點(diǎn)為參考點(diǎn))在當(dāng)前幀的當(dāng)前預(yù)測(cè)單元中的坐標(biāo)為第一平面坐標(biāo)c1=(u1c,v1c),參考點(diǎn)在當(dāng)前幀的最相鄰單元中的坐標(biāo)為第二平面坐標(biāo)c2=(u2c,v2c),參考點(diǎn)在參考幀的當(dāng)前預(yù)測(cè)單元中的坐標(biāo)為第三平面坐標(biāo)a1=(u1,v1),參考點(diǎn)在參考幀的最相鄰預(yù)測(cè)單元中的坐標(biāo)為第四平面坐標(biāo)a1=(u1,v1)。
s103:分別將所述第一平面坐標(biāo)、所述第二平面坐標(biāo)、所述第三平面坐標(biāo)以及所述第四平面坐標(biāo)轉(zhuǎn)換為球面坐標(biāo)。
基于公式
參見(jiàn)圖3示出了一種球面模型示意圖。其中,θ表示球面坐標(biāo)的緯度,且
(u,v)表示所述參考點(diǎn)的平面坐標(biāo),h表示圖像的高度,w表示圖像的寬度,r表示所述參考點(diǎn)的深度。
我們可以很容易的用經(jīng)緯圖投影公式算出每一點(diǎn)的緯度θ和經(jīng)度
s104:根據(jù)所述球面坐標(biāo)計(jì)算所述當(dāng)前預(yù)測(cè)單元在三維空間內(nèi)的三維運(yùn)動(dòng)矢量。
在本實(shí)施例中我們?cè)O(shè)定:a.一個(gè)預(yù)測(cè)單元中所有點(diǎn)共用一個(gè)深度。b.相鄰預(yù)測(cè)單元的二維運(yùn)動(dòng)矢量如果相似,則它們應(yīng)當(dāng)對(duì)應(yīng)于同一個(gè)物體。c.同一個(gè)物體上的點(diǎn)相對(duì)于相機(jī)的運(yùn)動(dòng)也是相同的。
基于上述三個(gè)設(shè)定,則可計(jì)算出由此可以計(jì)算出2個(gè)三維運(yùn)動(dòng)矢量且2個(gè)三維運(yùn)動(dòng)矢量是相等的:
這樣可以得到如下方程組
ra1cosθa1-rc1cosθc1=ra2cosθa2-rc2cosθc2
在這里我們規(guī)定ra1=1可以將上面的方程組寫成矩陣形式:
則:
r=φ-1a
可以看到,我們估計(jì)出的是當(dāng)前pu的相對(duì)深度而不是絕對(duì)深度,但是相
對(duì)深度對(duì)于運(yùn)動(dòng)補(bǔ)償已經(jīng)足夠了。當(dāng)φ不可逆時(shí),令ra2=rc1=rc2=1。
估計(jì)出所有的深度后,可以計(jì)算出當(dāng)前預(yù)測(cè)單元在三維空間的mv
值
δz=rc1cosθc1-ra1cosθa1
s105:對(duì)于當(dāng)前幀的當(dāng)前預(yù)測(cè)單元中所有目標(biāo)點(diǎn),根據(jù)所述三維運(yùn)動(dòng)矢量確定所述目標(biāo)點(diǎn)在參考幀內(nèi)對(duì)應(yīng)的目標(biāo)參考點(diǎn)。
對(duì)于當(dāng)前幀的任一目標(biāo)點(diǎn)p,使用球坐標(biāo)變換得到三維空間的p3d,
利用p3d加上
s106:利用所述目標(biāo)參考點(diǎn)的像素對(duì)所述目標(biāo)點(diǎn)像素進(jìn)行補(bǔ)償,以實(shí)現(xiàn)對(duì)所述當(dāng)前預(yù)測(cè)單元的球坐標(biāo)變換運(yùn)動(dòng)模型補(bǔ)償。
對(duì)
用得到的參考幀中的像素點(diǎn)porg的像素值對(duì)當(dāng)前點(diǎn)p做補(bǔ)償。這里,如果p(org)的坐標(biāo)(uorg,vorg)不是整數(shù),則我們?cè)趨⒖紟线M(jìn)行插值,得出p(org)的像素值。
s107:對(duì)所述當(dāng)前預(yù)測(cè)單元進(jìn)行編碼。
具體的,計(jì)算經(jīng)過(guò)球坐標(biāo)變換運(yùn)動(dòng)模型補(bǔ)償后的所述當(dāng)前預(yù)測(cè)單元的第一代價(jià)函數(shù)值;
計(jì)算經(jīng)過(guò)平動(dòng)模型補(bǔ)償后的所述當(dāng)前預(yù)測(cè)單元的第二代價(jià)函數(shù)值;
比較所述第一代價(jià)函數(shù)值和所述第二代價(jià)函數(shù)值,根據(jù)比較結(jié)果選取所述當(dāng)前預(yù)測(cè)單元的補(bǔ)償方式。
由以上實(shí)施例可知,本申請(qǐng)公開(kāi)了一種全景視頻編碼方法。該方法將當(dāng)前預(yù)測(cè)單元中的某個(gè)參考點(diǎn)在當(dāng)前幀的當(dāng)前預(yù)測(cè)單元、當(dāng)前幀的最相鄰預(yù)測(cè)單元、參考幀的當(dāng)前預(yù)測(cè)單元以及參考幀的最相鄰預(yù)測(cè)單元的平面坐標(biāo)轉(zhuǎn)換為球面坐標(biāo),從而根據(jù)參考點(diǎn)的球面坐標(biāo)確定當(dāng)前預(yù)測(cè)單元在三維空間內(nèi)的三維運(yùn)動(dòng)矢量。進(jìn)而,根據(jù)該三維運(yùn)動(dòng)矢量確定當(dāng)前幀中當(dāng)前預(yù)測(cè)單元的所有目標(biāo)點(diǎn)在參考幀的對(duì)應(yīng)目標(biāo)參考點(diǎn),并根據(jù)該目標(biāo)參考點(diǎn)的像素對(duì)目標(biāo)點(diǎn)像素進(jìn)行補(bǔ)償。與現(xiàn)有技術(shù)相比,本發(fā)明采用球面坐標(biāo)系轉(zhuǎn)換運(yùn)動(dòng)模型進(jìn)行像素補(bǔ)償,消除了視頻中畸變帶來(lái)的影響,從而提高視頻編碼效率。
需要說(shuō)明的是,在上述實(shí)施例中,為了降低運(yùn)算復(fù)雜度,在步驟s101確定當(dāng)前預(yù)測(cè)單元和最相鄰預(yù)測(cè)單元的二維運(yùn)動(dòng)矢量時(shí),我們的二維運(yùn)動(dòng)矢量的搜索分為2次,第一次二維運(yùn)動(dòng)矢量搜索中使用平動(dòng)模型來(lái)做運(yùn)動(dòng)補(bǔ)償,第二次采用基于球坐標(biāo)的模型,但是在第二次搜索時(shí),我們以第一次搜索的運(yùn)動(dòng)矢量作為基礎(chǔ)二維運(yùn)動(dòng)矢量,把第二次搜索的范圍縮小到3×3像素大小的區(qū)域。另外如果第一次搜索的基礎(chǔ)二維運(yùn)動(dòng)矢量滿足如下條件:
|δu|+|δv|≤4
就在第二次搜索時(shí)只做分?jǐn)?shù)像素搜索。要說(shuō)明的一點(diǎn)是我們采用的mv精度是1/4像素精度,不過(guò)我們做球坐標(biāo)變換可以擴(kuò)展為任意精度。
另外,在本發(fā)明公開(kāi)的其他實(shí)施例中,一種特殊的模式稱為合并模式(mergemode),就是當(dāng)前預(yù)測(cè)單元使用合并候選(mergecandidate)位置的二維運(yùn)動(dòng)矢量,其中空域合并候選的位置也是圖2中的5個(gè)位置,我們的模型中為了防止出現(xiàn)使用合并模式的預(yù)測(cè)單元選中的鄰接預(yù)測(cè)單元始終為其合并候選,采用一種新的合并模式:
如圖2所示,如果當(dāng)前預(yù)測(cè)單元用a1作為其最佳合并候選,意味著預(yù)測(cè)單元的二維運(yùn)動(dòng)矢量等于mv1。這就導(dǎo)致了a1所在的預(yù)測(cè)單元必然成為最相鄰預(yù)測(cè)單元。
為了避免這情況,我們不直接設(shè)置mv等于mv1,而是在其他的合并候選位置中搜索離mv1歐氏距離最近的mv,比如說(shuō)是mv3,那么就用mv1,mv3來(lái)確定當(dāng)前預(yù)測(cè)單元的的二維運(yùn)動(dòng)矢量,設(shè)為:
參見(jiàn)圖4示出了本發(fā)明另一個(gè)實(shí)施例公開(kāi)的一種全景視頻編碼裝置的結(jié)構(gòu)示意圖。
由圖4可知,該裝置包括:篩選單元1、坐標(biāo)采集單元2、坐標(biāo)轉(zhuǎn)換單元3、三維運(yùn)動(dòng)矢量計(jì)算單元4、目標(biāo)參考點(diǎn)確定單元5、補(bǔ)償單元6以及編碼單元7。
其中,篩選單元1用于確定當(dāng)前預(yù)測(cè)單元的最相鄰預(yù)測(cè)單元。
坐標(biāo)采集單元2用于獲取參考點(diǎn)的第一平面坐標(biāo)、第二平面坐標(biāo)、第三平面坐標(biāo)以及第四平面坐標(biāo)。
其中,所述第一平面坐標(biāo)為所述參考點(diǎn)在當(dāng)前幀的當(dāng)前預(yù)測(cè)單元中的坐標(biāo)、所述第二平面坐標(biāo)為所述參考點(diǎn)在當(dāng)前幀的最相鄰預(yù)測(cè)單元中的坐標(biāo),所述第三平面坐標(biāo)為所述參考點(diǎn)在參考幀的當(dāng)前預(yù)測(cè)單元中的坐標(biāo),所述第四平面坐標(biāo)為所述參考點(diǎn)在參考幀的最相鄰預(yù)測(cè)單元中的坐標(biāo);
坐標(biāo)轉(zhuǎn)換單元3用于分別將所述第一平面坐標(biāo)、所述第二平面坐標(biāo)、所述第三平面坐標(biāo)以及所述第四平面坐標(biāo)轉(zhuǎn)換為球面坐標(biāo)。
三維運(yùn)動(dòng)矢量計(jì)算單元4用于根據(jù)所述球面坐標(biāo)計(jì)算所述當(dāng)前預(yù)測(cè)單元在三維空間內(nèi)的三維運(yùn)動(dòng)矢量。
目標(biāo)參考點(diǎn)確定單元5用于對(duì)于當(dāng)前幀的當(dāng)前預(yù)測(cè)單元中所有目標(biāo)點(diǎn),根據(jù)所述三維運(yùn)動(dòng)矢量確定所述目標(biāo)點(diǎn)在參考幀內(nèi)對(duì)應(yīng)的目標(biāo)參考點(diǎn)。
補(bǔ)償單元6用于利用所述目標(biāo)參考點(diǎn)的像素對(duì)所述目標(biāo)點(diǎn)像素進(jìn)行補(bǔ)償,以實(shí)現(xiàn)對(duì)所述當(dāng)前預(yù)測(cè)單元的球坐標(biāo)變換運(yùn)動(dòng)模型補(bǔ)償.
編碼單元7用于對(duì)所述當(dāng)前預(yù)測(cè)單元進(jìn)行編碼。
具體的,所述篩選單元包括:
二維運(yùn)動(dòng)矢量搜索模塊,用于獲取所述當(dāng)前預(yù)測(cè)單元的二維運(yùn)動(dòng)矢量,以及多個(gè)相鄰預(yù)測(cè)單元的二維運(yùn)動(dòng)矢量。
比較模塊,用于比較所述當(dāng)前預(yù)測(cè)單元的二維運(yùn)動(dòng)矢量和相鄰預(yù)測(cè)單元的二維運(yùn)動(dòng)矢量。
預(yù)測(cè)單元選取模塊,用于將與所述當(dāng)前預(yù)測(cè)單元二維運(yùn)動(dòng)矢量最近的相鄰預(yù)測(cè)單元作為所述當(dāng)前預(yù)測(cè)單元的最相鄰預(yù)測(cè)單元。
所述坐標(biāo)采集單元包括:
坐標(biāo)采集模塊,用于獲取所述參考點(diǎn)的所述第一平面坐標(biāo)和所述第二平面坐標(biāo)。
第一計(jì)算模塊,用于計(jì)算所述當(dāng)前預(yù)測(cè)單元與所述最相鄰預(yù)測(cè)單元的二維運(yùn)動(dòng)矢量差值。
第二計(jì)算模塊,用于根據(jù)所述二維運(yùn)動(dòng)矢量差值和所述第一平面坐標(biāo)確定所述第三平面坐標(biāo),以及根據(jù)所述二維運(yùn)動(dòng)矢量差值和所述第二平面坐標(biāo)確定所述第四平面坐標(biāo)。
所述坐標(biāo)轉(zhuǎn)換單元具體用于:
基于公式
其中,θ表示球面坐標(biāo)的緯度,且
(u,v)表示所述參考點(diǎn)的平面坐標(biāo),h表示圖像的高度,w表示圖像的寬度,r表示所述參考點(diǎn)的深度。
所述三維運(yùn)動(dòng)矢量計(jì)算單元,包括:
第三計(jì)算模塊,用于根據(jù)所述第一平面坐標(biāo)對(duì)應(yīng)的第一球面坐標(biāo)和所述第三平面坐標(biāo)對(duì)應(yīng)的第三球面坐標(biāo),計(jì)算第一三維運(yùn)動(dòng)矢量。
第四計(jì)算模塊,用于根據(jù)所述第二平面坐標(biāo)對(duì)應(yīng)的第二球面坐標(biāo)和所述第四平面坐標(biāo)對(duì)應(yīng)的第四球面坐標(biāo),計(jì)算第二三維運(yùn)動(dòng)矢量。
第五計(jì)算模塊,用于利用所述第一三維運(yùn)動(dòng)矢量和所述第二三維運(yùn)動(dòng)矢量的相等性以及參考點(diǎn)在參考幀的當(dāng)前預(yù)測(cè)單元中的預(yù)設(shè)深度分別確定參考點(diǎn)在當(dāng)前幀的當(dāng)前預(yù)測(cè)單元中的深度、在當(dāng)前幀的最相鄰預(yù)測(cè)單元中的深度以及在參考幀的最相鄰預(yù)測(cè)單元中的深度。
第六計(jì)算模塊,用于根據(jù)參考點(diǎn)在參考幀的當(dāng)前預(yù)測(cè)單元中的預(yù)設(shè)深度和參考點(diǎn)在當(dāng)前幀的當(dāng)前預(yù)測(cè)單元中的深度計(jì)算所述當(dāng)前預(yù)測(cè)單元在三維空間內(nèi)的三維運(yùn)動(dòng)矢量;或根據(jù)參考點(diǎn)在參考幀的最相鄰預(yù)測(cè)單元中的深度和參考點(diǎn)在當(dāng)前幀的最相鄰預(yù)測(cè)單元中的深度計(jì)算所述當(dāng)前預(yù)測(cè)單元在三維空間內(nèi)的三維運(yùn)動(dòng)矢量。
所述編碼單元包括;
第一代價(jià)函數(shù)計(jì)算模塊,用于計(jì)算經(jīng)過(guò)球坐標(biāo)變換運(yùn)動(dòng)模型補(bǔ)償后的所述當(dāng)前預(yù)測(cè)單元的第一代價(jià)函數(shù)值;
第二代價(jià)函數(shù)計(jì)算模塊,用于計(jì)算經(jīng)過(guò)平動(dòng)模型補(bǔ)償后的所述當(dāng)前預(yù)測(cè)單元的第二代價(jià)函數(shù)值;
比較模塊,用于比較所述第一代價(jià)函數(shù)值和所述第二代價(jià)函數(shù)值,根據(jù)比較結(jié)果選取所述當(dāng)前預(yù)測(cè)單元的補(bǔ)償方式。
需要說(shuō)明的是該裝置實(shí)施例與方法實(shí)施例相對(duì)應(yīng),其執(zhí)行過(guò)程和執(zhí)行原理相同,在此不作贅述。
最后,還需要說(shuō)明的是,在本文中,諸如第一和第二等之類的關(guān)系術(shù)語(yǔ)僅僅用來(lái)將一個(gè)實(shí)體或者操作與另一個(gè)實(shí)體或操作區(qū)分開(kāi)來(lái),而不一定要求或者暗示這些實(shí)體或操作之間存在任何這種實(shí)際的關(guān)系或者順序。而且,術(shù)語(yǔ)“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過(guò)程、方法、物品或者設(shè)備不僅包括那些要素,而且還包括沒(méi)有明確列出的其他要素,或者是還包括為這種過(guò)程、方法、物品或者設(shè)備所固有的要素。在沒(méi)有更多限制的情況下,由語(yǔ)句“包括一個(gè)……”限定的要素,并不排除在包括所述要素的過(guò)程、方法、物品或者設(shè)備中還存在另外的相同要素。
本說(shuō)明書中各個(gè)實(shí)施例采用遞進(jìn)的方式描述,每個(gè)實(shí)施例重點(diǎn)說(shuō)明的都是與其他實(shí)施例的不同之處,各個(gè)實(shí)施例之間相同相似部分互相參見(jiàn)即可。
對(duì)所公開(kāi)的實(shí)施例的上述說(shuō)明,使本領(lǐng)域?qū)I(yè)技術(shù)人員能夠?qū)崿F(xiàn)或使用本發(fā)明。對(duì)這些實(shí)施例的多種修改對(duì)本領(lǐng)域的專業(yè)技術(shù)人員來(lái)說(shuō)將是顯而易見(jiàn)的,本文中所定義的一般原理可以在不脫離本發(fā)明的精神或范圍的情況下,在其它實(shí)施例中實(shí)現(xiàn)。因此,本發(fā)明將不會(huì)被限制于本文所示的這些實(shí)施例,而是要符合與本文所公開(kāi)的原理和新穎特點(diǎn)相一致的最寬的范圍。