本發(fā)明屬于圖像和視頻數(shù)據(jù)壓縮處理領(lǐng)域,特別是一種對(duì)不同幀采用不同運(yùn)動(dòng)矢量的編碼解碼方法和裝置。
背景技術(shù):
1、用來(lái)表示參考(塊)串與當(dāng)前(塊)串位置關(guān)系的運(yùn)動(dòng)矢量編解碼方法是幀內(nèi)塊復(fù)制技術(shù)((intra?block?copy,ibc))和幀內(nèi)串復(fù)制技術(shù)(intra?string?copy,isc)高效編碼研究的重點(diǎn),其中最新標(biāo)準(zhǔn)中采納的是基于歷史運(yùn)動(dòng)矢量列表的運(yùn)動(dòng)矢量編碼技術(shù)。如,基于歷史的運(yùn)動(dòng)矢量預(yù)測(cè)(history-based?motionvectorprediction,hmvp)技術(shù)和基于歷史的運(yùn)動(dòng)矢量直接編碼技術(shù)。hmvp技術(shù)是指對(duì)于當(dāng)前編碼運(yùn)動(dòng)矢量,在歷史運(yùn)動(dòng)矢量列表中尋找最優(yōu)預(yù)測(cè)歷史運(yùn)動(dòng)矢量,編碼最優(yōu)測(cè)歷史運(yùn)動(dòng)矢量對(duì)應(yīng)的index和矢量差;基于歷史的運(yùn)動(dòng)矢量直接編碼技術(shù)是指對(duì)于當(dāng)前編碼運(yùn)動(dòng)矢量,在歷史運(yùn)動(dòng)矢量列表中尋找與當(dāng)前編碼運(yùn)動(dòng)矢量相等的運(yùn)動(dòng)矢量,若能找到,則編碼歷史運(yùn)動(dòng)矢量對(duì)應(yīng)的index,否則直接編碼“當(dāng)前編碼運(yùn)動(dòng)矢量”。如avs3標(biāo)準(zhǔn)中,ibc模式采用hmvp技術(shù),isc模式采用基于歷史的運(yùn)動(dòng)矢量直接編碼技術(shù)。
2、基于歷史運(yùn)動(dòng)矢量列表的運(yùn)動(dòng)矢量編碼技術(shù)目前對(duì)于運(yùn)動(dòng)矢量差或運(yùn)動(dòng)矢量本身的值采用指數(shù)哥倫布編碼,即編解碼端約定對(duì)于isc模式的運(yùn)動(dòng)矢量采用5階指數(shù)哥倫布編碼,對(duì)于ibc模式的運(yùn)動(dòng)矢量采用2階指數(shù)哥倫布編碼。運(yùn)動(dòng)矢量也稱運(yùn)動(dòng)矢量,對(duì)于ibc模式,運(yùn)動(dòng)矢量也稱塊矢量(block?vector,bv);對(duì)于isc模式,運(yùn)動(dòng)矢量也稱串矢量(string?vector,sv)。
3、目前,在最新的avs4探索軟件中,已經(jīng)采納了將ibc和isc的參考范圍擴(kuò)展到8個(gè)lcu行。與之前的參考范圍僅僅為當(dāng)前ctu(coding?tree?unit)和左邊ctu大小不同的是,ibc和isc模式可以找到更多更大范圍的最優(yōu)參考?jí)K或參考串。與此同時(shí),運(yùn)動(dòng)矢量也體現(xiàn)出差異性。不同幀內(nèi)容具有不同的匹配特征,如有些幀內(nèi)容能在較近的地方找到匹配,有些幀內(nèi)容在較遠(yuǎn)的地方找到匹配,這就導(dǎo)致不同幀的運(yùn)動(dòng)矢量的分布不一定相同。現(xiàn)有對(duì)所有幀內(nèi)容采用相同階數(shù)的指數(shù)哥倫布編碼的運(yùn)動(dòng)矢量編碼方法,使用固定參數(shù)進(jìn)行編解碼,碼流中不包含運(yùn)動(dòng)矢量的參數(shù),沒(méi)有考慮到不同幀內(nèi)容運(yùn)動(dòng)矢量的差異性,對(duì)編碼效率有影響。
技術(shù)實(shí)現(xiàn)思路
1、本發(fā)明要解決是現(xiàn)有編碼方法會(huì)對(duì)編碼效率產(chǎn)生影響的問(wèn)題。
2、本發(fā)明提出一種對(duì)不同幀采用不同運(yùn)動(dòng)矢量的編碼解碼方法和裝置。
3、一種對(duì)不同幀采用不同運(yùn)動(dòng)矢量的編碼方法,包括:
4、步驟1,編碼幀級(jí)參數(shù):對(duì)于每一幀,根據(jù)當(dāng)前幀或者歷史幀的運(yùn)動(dòng)矢量統(tǒng)計(jì)方法,得到至少一個(gè)運(yùn)動(dòng)矢量參數(shù)值,將得到的運(yùn)動(dòng)矢量參數(shù)值寫(xiě)入數(shù)據(jù)碼流;
5、步驟2,編碼單元級(jí)參數(shù):對(duì)于當(dāng)前幀的每一編碼單元,如果其編碼模式的編碼參數(shù)包含運(yùn)動(dòng)矢量,根據(jù)步驟1得到的運(yùn)動(dòng)矢量參數(shù)值對(duì)部分或全部運(yùn)動(dòng)矢量進(jìn)行編碼,輸出包含當(dāng)前編碼單元的運(yùn)動(dòng)矢量的數(shù)據(jù)碼流;
6、步驟3,按照步驟2的操作對(duì)所有幀進(jìn)行編碼。
7、優(yōu)選的,所述運(yùn)動(dòng)矢量參數(shù)包括指數(shù)哥倫布階數(shù)、是否編碼上方串標(biāo)識(shí)、預(yù)編碼階段運(yùn)動(dòng)矢量采用直接編碼或預(yù)測(cè)編碼中的一個(gè)或者多個(gè),相對(duì)應(yīng)的運(yùn)動(dòng)矢量參數(shù)值包括指數(shù)哥倫布階數(shù)的值、是或否、預(yù)編碼階段運(yùn)動(dòng)矢量編碼方案獲得的比特?cái)?shù)中的一個(gè)或者多個(gè)。
8、優(yōu)選的,當(dāng)運(yùn)動(dòng)矢量參數(shù)值包括指數(shù)哥倫布階數(shù)的值時(shí),統(tǒng)計(jì)不同指數(shù)哥倫布階數(shù)對(duì)當(dāng)前幀的所有運(yùn)動(dòng)矢量估計(jì)的比特?cái)?shù),選擇其中比特?cái)?shù)最少的指數(shù)哥倫布階數(shù)作為運(yùn)動(dòng)矢量參數(shù)值。
9、一種對(duì)不同幀采用不同運(yùn)動(dòng)矢量的編碼裝置,包括
10、運(yùn)動(dòng)矢量參數(shù)值獲得模塊:根據(jù)當(dāng)前幀或者歷史幀的運(yùn)動(dòng)矢量統(tǒng)計(jì)方法,得到至少一個(gè)運(yùn)動(dòng)矢量參數(shù)值;
11、運(yùn)動(dòng)矢量參數(shù)值編碼模塊:將運(yùn)動(dòng)矢量參數(shù)值編碼后寫(xiě)入數(shù)據(jù)碼流;
12、運(yùn)動(dòng)矢量編碼模塊:輸入當(dāng)前幀運(yùn)動(dòng)矢量,根據(jù)運(yùn)動(dòng)矢量參數(shù)值對(duì)運(yùn)動(dòng)矢量進(jìn)行編碼;
13、運(yùn)動(dòng)矢量碼流輸出模塊:輸出包含當(dāng)前幀運(yùn)動(dòng)矢量的數(shù)據(jù)碼流。
14、優(yōu)選的,所述運(yùn)動(dòng)矢量參數(shù)包括指數(shù)哥倫布階數(shù)、是否編碼上方串標(biāo)識(shí)、預(yù)編碼階段運(yùn)動(dòng)矢量采用直接編碼或預(yù)測(cè)編碼中的一個(gè)或者多個(gè),相對(duì)應(yīng)的運(yùn)動(dòng)矢量參數(shù)值包括指數(shù)哥倫布階數(shù)的值、是或否、預(yù)編碼階段運(yùn)動(dòng)矢量編碼方案獲得的比特?cái)?shù)中的一個(gè)或者多個(gè)。
15、優(yōu)選的,當(dāng)運(yùn)動(dòng)矢量參數(shù)值包括指數(shù)哥倫布階數(shù)的值時(shí),統(tǒng)計(jì)不同指數(shù)哥倫布階數(shù)對(duì)當(dāng)前幀的所有運(yùn)動(dòng)矢量估計(jì)的比特?cái)?shù),選擇其中比特?cái)?shù)最少的指數(shù)哥倫布階數(shù)作為運(yùn)動(dòng)矢量參數(shù)值
16、一種對(duì)不同幀采用不同運(yùn)動(dòng)矢量的解碼方法,包括:
17、步驟1,輸入幀級(jí)參數(shù)中至少含一個(gè)運(yùn)動(dòng)矢量參數(shù)的數(shù)據(jù)碼流;
18、步驟2,解碼得到至少一個(gè)運(yùn)動(dòng)矢量參數(shù)值;
19、步驟3,對(duì)于當(dāng)前幀的每一解碼單元,根據(jù)步驟2得到的運(yùn)動(dòng)矢量參數(shù)值對(duì)運(yùn)動(dòng)矢量進(jìn)行解碼,輸出當(dāng)前解碼單元的運(yùn)動(dòng)矢量;
20、步驟4,按照步驟3的操作,對(duì)所有幀進(jìn)行解碼。
21、優(yōu)選的,所述運(yùn)動(dòng)矢量參數(shù)包括指數(shù)哥倫布階數(shù)、是否編碼上方串標(biāo)識(shí)、預(yù)編碼階段運(yùn)動(dòng)矢量采用直接編碼或預(yù)測(cè)編碼中的一個(gè)或者多個(gè),相對(duì)應(yīng)的運(yùn)動(dòng)矢量參數(shù)值包括指數(shù)哥倫布階數(shù)的值、是或否、預(yù)編碼階段運(yùn)動(dòng)矢量編碼方案獲得的比特?cái)?shù)中的一個(gè)或者多個(gè)。
22、優(yōu)選的,當(dāng)運(yùn)動(dòng)矢量參數(shù)值包括指數(shù)哥倫布階數(shù)的值時(shí),統(tǒng)計(jì)不同指數(shù)哥倫布階數(shù)對(duì)當(dāng)前幀的所有運(yùn)動(dòng)矢量估計(jì)的比特?cái)?shù),選擇其中比特?cái)?shù)最少的指數(shù)哥倫布階數(shù)作為運(yùn)動(dòng)矢量參數(shù)值。
23、一種對(duì)不同幀采用不同運(yùn)動(dòng)矢量的解碼裝置,包括
24、運(yùn)動(dòng)矢量參數(shù)解碼模塊:輸入含運(yùn)動(dòng)矢量參數(shù)的碼流的數(shù)據(jù)碼流,解碼獲得一個(gè)或多個(gè)運(yùn)動(dòng)矢量參數(shù)值;
25、當(dāng)前幀運(yùn)動(dòng)矢量解碼模塊:輸入當(dāng)前幀運(yùn)動(dòng)矢量的數(shù)據(jù)碼流,根據(jù)上述一個(gè)或多個(gè)運(yùn)動(dòng)矢量參數(shù)值對(duì)運(yùn)動(dòng)矢量進(jìn)行解碼;
26、當(dāng)前幀運(yùn)動(dòng)矢量的輸出模塊:輸出當(dāng)前幀運(yùn)動(dòng)矢量。
27、優(yōu)選的,所述運(yùn)動(dòng)矢量參數(shù)包括指數(shù)哥倫布階數(shù)、是否編碼上方串標(biāo)識(shí)、預(yù)編碼階段運(yùn)動(dòng)矢量采用直接編碼或預(yù)測(cè)編碼中的一個(gè)或者多個(gè),相對(duì)應(yīng)的運(yùn)動(dòng)矢量參數(shù)值包括指數(shù)哥倫布階數(shù)的值、是或否、預(yù)編碼階段運(yùn)動(dòng)矢量編碼方案獲得的比特?cái)?shù)中的一個(gè)或者多個(gè)。
28、優(yōu)選的,當(dāng)運(yùn)動(dòng)矢量參數(shù)值包括指數(shù)哥倫布階數(shù)的值時(shí),統(tǒng)計(jì)不同指數(shù)哥倫布階數(shù)對(duì)當(dāng)前幀的所有運(yùn)動(dòng)矢量估計(jì)的比特?cái)?shù),選擇其中比特?cái)?shù)最少的指數(shù)哥倫布階數(shù)作為運(yùn)動(dòng)矢量參數(shù)值。
29、現(xiàn)有編碼器的做法,是采用一個(gè)固定的參數(shù)值,比如2階指數(shù)哥倫布,對(duì)于所有序列的所有幀,都是采用2階。數(shù)據(jù)碼流包括幀級(jí)參數(shù)集和編碼單元參數(shù)集。每一幀圖像會(huì)分成多個(gè)編碼單元進(jìn)行編碼。
30、本發(fā)明同現(xiàn)有技術(shù)相比具有以下優(yōu)點(diǎn)及效果:
31、本發(fā)明考慮到不同幀內(nèi)容具有不同的匹配特征,根據(jù)不同匹配特征設(shè)置不同的運(yùn)動(dòng)矢量參數(shù),在序列頭插入?yún)?shù),增加了每個(gè)序列自適應(yīng)選擇該幀最優(yōu)運(yùn)動(dòng)矢量方案的靈活性,打破了每個(gè)序列采用固定參數(shù)運(yùn)動(dòng)矢量編碼方案的局限性,充分考慮了運(yùn)動(dòng)矢量的差異性,優(yōu)化運(yùn)動(dòng)矢量編碼方法,從而提高編碼效率。