用于運動矢量預(yù)測的運動矢量列表建立的方法、裝置制造方法
【專利摘要】本發(fā)明提供一種用于運動矢量預(yù)測的運動矢量列表建立的方法、裝置。涉及視頻編碼領(lǐng)域。解決了采用串行方式建立同一編碼單元中的至少兩個PU的運動矢量列表的問題,提高并行處理能力。具體可以包括:獲取當(dāng)前預(yù)測塊空域上的相鄰塊,當(dāng)前預(yù)測塊位于當(dāng)前編碼單元中;根據(jù)當(dāng)前編碼單元的劃分方式確定當(dāng)前預(yù)測塊的適用相鄰塊,適用相鄰塊位于當(dāng)前編碼單元外;根據(jù)適用相鄰塊的運動矢量預(yù)測值并按照預(yù)設(shè)順序從適用相鄰塊中獲取運動矢量預(yù)測值,并將獲取到的運動矢量預(yù)測值加入到運動矢量列表??蓱?yīng)用于建立運動矢量列表中。
【專利說明】用于運動矢量預(yù)測的運動矢量列表建立的方法、裝置
[0001]
【技術(shù)領(lǐng)域】
[0002]本發(fā)明涉及視頻編碼領(lǐng)域,尤其涉及用于運動矢量預(yù)測的運動矢量列表建立的方法、裝置。
【背景技術(shù)】
[0003]HEVC (High Efficiency Video Coding,高效視頻編碼標(biāo)準(zhǔn))中的幀間預(yù)測技術(shù),采用傳統(tǒng)的MCP (Motion Compensated Prediction,運動補償預(yù)測)的方法,在運動矢量預(yù)測方面,HEVC采用多運動矢量競爭的方法,提高了運動矢量預(yù)測的精度,從而提升編碼壓縮性能。
[0004]HEVC幀間預(yù)測模式可以包括但不限于:Merge mode (合并模式)、Skip mode (跳過模式)等,且均是利用多運動矢量競爭的方法進(jìn)行幀間預(yù)測的。在進(jìn)行運動矢量預(yù)測時,用到了運動矢量列表。對于Merge mode和Skip mode,運動矢量列表中允許有最多4個空域運動矢量預(yù)測值和I個時域運動矢量預(yù)測值,Merge mode和Skip mode共用同一個運動矢量列表。編碼器從該運動矢量列表中選出一個最佳的運動矢量預(yù)測值作為當(dāng)前PU(Prediction Unit,預(yù)測單元〈以下可稱為預(yù)測塊 >)的運動矢量預(yù)測值。
[0005]其中,運動矢量列表`的建立方法可以包括:
[0006]如圖1所示,與當(dāng)前I3U在空域上相鄰塊可以包括:相鄰塊AO(當(dāng)前PU左下角位置對應(yīng)的左下參考塊)、相鄰塊Al(當(dāng)前PU左下角位置對應(yīng)的左邊參考塊)、相鄰塊BO(當(dāng)前PU右上角位置對應(yīng)的右上參考塊)、相鄰塊BI(當(dāng)前PU右上角位置對應(yīng)的上邊參考塊)、相鄰塊B2 (當(dāng)前PU左上角位置對應(yīng)的左上參考塊);TMVP (Temporal Motion Vector predictor,運動矢量時域預(yù)測值)為當(dāng)前PU在時域上相應(yīng)的運動矢量預(yù)測值。
[0007]首先,按照相鄰塊Al、相鄰塊B1、相鄰塊B0、相鄰塊A0、相鄰塊B2、相鄰塊TMVP的順序依次從各相鄰塊以及TMVP中獲取運動矢量預(yù)測值,然后,按照HEVC中的規(guī)則將獲取到的各運動矢量預(yù)測值加入運動矢量列表中。具體的運動矢量列表建立過程為本領(lǐng)域技術(shù)人員熟知的技術(shù),在此不再贅述。
[0008]進(jìn)一步的,當(dāng)前⑶(Coding Unit,編碼單元〈以下可稱為編碼單元 >)可以包含至少兩個PU,采用串行方式建立至少兩個I3U的運動矢量列表的。
[0009]在實現(xiàn)上述運動矢量列表建立的過程中,發(fā)明人發(fā)現(xiàn)現(xiàn)有技術(shù)中至少存在如下問題:若當(dāng)前⑶包含至少兩個PU,采用串行方式建立至少兩個的運動矢量列表,使得同一⑶中的至少兩個PU建立運動矢量列表的速度較慢,降低并行處理能力。
【發(fā)明內(nèi)容】
[0010]本發(fā)明的實施例提供一種用于運動矢量預(yù)測的運動矢量列表建立的方法、裝置,解決了采用串行方式建立同一編碼單元中的至少兩個PU的運動矢量列表的問題,提高并行處理能力。
[0011]為達(dá)到上述目的,本發(fā)明的實施例采用如下技術(shù)方案:
[0012]一方面,提供一種用于運動矢量預(yù)測的運動矢量列表建立的方法,包括:
[0013]獲取當(dāng)前預(yù)測塊空域上的相鄰塊,所述當(dāng)前預(yù)測塊位于當(dāng)前編碼單元中;
[0014]根據(jù)所述當(dāng)前編碼單元的劃分方式確定所述當(dāng)前預(yù)測塊的適用相鄰塊,所述適用相鄰塊位于所述當(dāng)前編碼單元外;
[0015]根據(jù)所述適用相鄰塊的運動矢量預(yù)測值并按照預(yù)設(shè)順序從所述適用相鄰塊中獲取運動矢量預(yù)測值,并將獲取到的運動矢量預(yù)測值加入到所述運動矢量列表。
[0016]另一方面,提供一種用于運動矢量預(yù)測的運動矢量列表建立的裝置,包括:
[0017]接收器,用于獲取當(dāng)前預(yù)測塊空域上的相鄰塊,所述當(dāng)前預(yù)測塊位于當(dāng)前編碼單元中;
[0018]處理器,用于根據(jù)所述當(dāng)前編碼單元的劃分方式確定所述當(dāng)前預(yù)測塊的適用相鄰塊,所述適用相鄰塊位于所述當(dāng)前編碼單元外;根據(jù)所述適用相鄰塊的運動矢量預(yù)測值并按照預(yù)設(shè)順序從所述適用相鄰塊中獲取運動矢量預(yù)測值,并將獲取到的運動矢量預(yù)測值加入到所述運動矢量列表。
[0019]本發(fā)明實施例提供的用于運動矢量預(yù)測的運動矢量列表建立的方法、裝置,采用上述方案后,當(dāng)建立預(yù)測塊的運動矢量列表時,首先,獲取當(dāng)前預(yù)測塊空域上的相鄰塊,當(dāng)前預(yù)測塊位于當(dāng)前編碼單元中;根據(jù)當(dāng)前編碼單元的劃分方式確定當(dāng)前預(yù)測塊的適用相鄰塊,適用相鄰塊位于當(dāng)前編碼單元外;根據(jù)適用相鄰塊的運動矢量預(yù)測值并按照預(yù)設(shè)順序從適用相鄰塊中獲取運動矢量預(yù)測值,并將獲取到的運動矢量預(yù)測值加入到所述運動矢量列表。這樣,建立預(yù)測塊的運動矢量列表時,不考慮位于當(dāng)前編碼單元中的相鄰塊,當(dāng)編碼單元包含至少兩個預(yù)測塊時,可以采用并行方式建立至少兩個預(yù)測塊的運動矢量列表,增加了同一編碼單元中的至少兩個預(yù)測塊建立運動矢量列表的速度,提高了并行處理能力。
【專利附圖】
【附圖說明】
[0020]為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0021]圖I為本實施例提供的編碼單元CU、PU以及相鄰塊的結(jié)構(gòu)示意圖;
[0022]圖2a至圖2g為本實施例提供的編碼單元CU的不同劃分方式下的結(jié)構(gòu)示意圖;
[0023]圖3為本實施例提供的一種用于運動矢量預(yù)測的運動矢量列表建立的方法流程圖;
[0024]圖4為本實施例提供的一種用于運動矢量預(yù)測的運動矢量列表建立的裝置結(jié)構(gòu)示意圖。
【具體實施方式】
[0025]下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例。基于本發(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護(hù)的范圍。
[0026]現(xiàn)有技術(shù)中,⑶中可以包含至少兩個PU,采用串行方式建立至少兩個I3U的運動矢量列表,即當(dāng)前I3U建立運動矢量列表完成后,下一個I3U才開始建立運動矢量列表。
[0027]具體的可以包括:
[0028]如圖2a至圖2g所示,一個⑶(圖中的實現(xiàn)框)可以進(jìn)一步劃分成多個PU,在HEVC中,⑶可以有7種partition (劃分)方式。如圖2a至圖2c中的partition方式是把當(dāng)前CU劃分成左右2個PU (PUl和PU2),又如圖2d的partition方式是把當(dāng)前CU劃分成4個PU (PU1、PU2、PU3、PU4),其他類型不再贅述。
[0029]以圖2a所示的partition為例,由于,PU2的空域參考塊Al位于PU2內(nèi),因此,只有當(dāng)PUl編碼結(jié)束后,PU2才可以開始建立運動矢量列表,PUl與PU2采用串行方式建立運動矢量列表。具體的,首先,PUl按照上述方法建立運動矢量列表,然后,PU2按照上述方法建立運動矢量列表。
[0030]這樣,使得至少兩個PU建立運動矢量列表的速度較慢,降低壓縮編碼的性能。
[0031]為了解決上述至少兩個建立運動矢量列表的速度較慢,降低壓縮編碼的性能的問題,本實施例提供一種用于運動矢量預(yù)測的動矢量列表建立的方法,如圖3所示,可以包括:
[0032]301、獲取當(dāng)前預(yù)測塊空域上的相鄰塊,當(dāng)前預(yù)測塊位于當(dāng)前編碼單元中;
[0033]302、根據(jù)當(dāng)前編碼單元的劃分方式確定當(dāng)前預(yù)測塊的適用相鄰塊,適用相鄰塊位于當(dāng)前編碼單元外;
[0034]303、根據(jù)適用相鄰塊的運動矢量預(yù)測值并按照預(yù)設(shè)順序從適用相鄰塊中獲取運動矢量預(yù)測值,并將獲取到的運動矢量預(yù)測值加入到運動矢量列表。
[0035]采用上述方案后,當(dāng)建立預(yù)測塊的運動矢量列表時,首先,獲取當(dāng)前預(yù)測塊空域上的相鄰塊,當(dāng)前預(yù)測塊位于當(dāng)前編碼單元中;根據(jù)當(dāng)前編碼單元的劃分方式確定當(dāng)前預(yù)測塊的適用相鄰塊,適用相鄰塊位于當(dāng)前編碼單元外;根據(jù)適用相鄰塊的運動矢量預(yù)測值并按照預(yù)設(shè)順序從適用相鄰塊中獲取運動矢量預(yù)測值,并將獲取到的運動矢量預(yù)測值加入到運動矢量列表。這樣,建立預(yù)測塊的運動矢量列表時,不考慮位于當(dāng)前編碼單元中的相鄰塊,當(dāng)編碼單元包含至少兩個預(yù)測塊時,可以采用并行方式建立至少兩個預(yù)測塊的運動矢量列表,增加了同一編碼單元中的至少兩個預(yù)測塊建立運動矢量列表的速度,提高了并行處理能力。
[0036]本實施例提供另一種用于運動矢量預(yù)測的運動矢量列表建立的方法,該方法是對圖3所示的方法的進(jìn)一步擴展,如圖3所示,可以包括:
[0037]301、獲取當(dāng)前預(yù)測塊空域上的相鄰塊,當(dāng)前預(yù)測塊位于當(dāng)前編碼單元中。
[0038]如圖I所示,預(yù)測塊空域上的相鄰塊可以包括:位于預(yù)測塊左下側(cè)的相鄰塊A0,位于預(yù)測塊左側(cè)的相鄰塊Al,位于預(yù)測塊右上側(cè)的相鄰塊B0,位于預(yù)測塊上側(cè)的相鄰塊BI,位于預(yù)測塊左上側(cè)的相鄰塊B2。
[0039]本實施例對獲取預(yù)測塊空域上的相鄰塊的方法、預(yù)測塊以及相鄰塊不作限定,為本領(lǐng)域技術(shù)人員熟知的技術(shù),在此不再贅述。
[0040]302、根據(jù)當(dāng)前編碼單元的劃分方式確定當(dāng)前預(yù)測塊的適用相鄰塊,適用相鄰塊位于當(dāng)前編碼單元外。
[0041]進(jìn)一步,如圖2e至圖2g所示,若當(dāng)前編碼單元⑶被上下劃分為第一預(yù)測塊PUl和第二預(yù)測塊PU2,且當(dāng)前預(yù)測塊為第二預(yù)測塊TO2,則PU2的適用相鄰塊包括第二預(yù)測塊的:相鄰塊A0、相鄰塊Al、相鄰塊B0、相鄰塊B2。此時,相鄰塊BI位于當(dāng)前編碼單元CU中,不作為第二預(yù)測塊PU2的適用相鄰塊。
[0042]如圖2a至圖2c所示,若當(dāng)前編碼單元⑶被左右劃分為第一預(yù)測PUl塊和第二預(yù)測塊PU2,且當(dāng)前預(yù)測塊為第二預(yù)測塊PU2,則PU2的適用相鄰塊包括第二預(yù)測塊PU2的:相鄰塊A0、相鄰塊B0、相鄰塊BI、相鄰塊B2。此時,相鄰塊Al位于當(dāng)前編碼單元CU中,不作為第二預(yù)測塊PU2的適用相鄰塊。
[0043]進(jìn)一步的,可以通過相鄰塊的標(biāo)志位確定適用相鄰塊。標(biāo)志位可以為但不限于用于標(biāo)識相鄰塊不位于CU中。
[0044]本實施例對通過相鄰塊的標(biāo)志位確定適用相鄰塊的方法不作限定,為本領(lǐng)域技術(shù)人員熟知的技術(shù),在此不再贅述。
[0045]303、根據(jù)適用相鄰塊的運動矢量預(yù)測值并按照預(yù)設(shè)順序從適用相鄰塊中獲取運動矢量預(yù)測值,并將獲取到的運動矢量預(yù)測值加入到運動矢量列表。
[0046]進(jìn)一步的,按照預(yù)設(shè)順序從適用相鄰塊中獲取運動矢量預(yù)測值可以包括:
[0047]若適用相鄰塊為幀間編碼塊,則按照相鄰塊Al、相鄰塊BI、相鄰塊B0、相鄰塊A0、相鄰塊B2的順序從適用相鄰塊中獲取運動矢量預(yù)測值。
[0048]具體的,若適用相鄰塊為幀間編碼塊,說明該相鄰塊包含有運動矢量信息,則從該相鄰塊中獲取運動矢量預(yù)測值。
[0049]具體的,若預(yù)測塊的適用相鄰塊包括第二預(yù)測塊的:相鄰塊A0、相鄰塊Al、相鄰塊B0、相鄰塊B2,則按照相鄰塊A0、相鄰塊Al、相鄰塊B0、相鄰塊B2的順序從相鄰塊A0、相鄰塊Al、相鄰塊B0、相鄰塊B2中獲取運動矢量預(yù)測值;可見,當(dāng)前⑶上下劃分為第一和第二預(yù)測塊時,第二預(yù)測塊的適用相鄰塊不包括位于第一預(yù)測塊內(nèi)的相鄰塊BI,因此,不會從BI獲取運動矢量預(yù)測值。
[0050]若預(yù)測塊的適用相鄰塊包括第二預(yù)測塊PU2的:相鄰塊A0、相鄰塊B0、相鄰塊BI、相鄰塊B2,則按照相鄰塊A0、相鄰塊B0、相鄰塊BI、相鄰塊B2的順序從相鄰塊A0、相鄰塊B0、相鄰塊BI、相鄰塊B2中獲取運動矢量預(yù)測值??梢姡?dāng)前⑶左右劃分為第一和第二預(yù)測塊時,第二預(yù)測塊的適用相鄰塊不包括位于第一預(yù)測塊內(nèi)的相鄰塊Al,因此,不會從Al
獲取運動矢量預(yù)測值。
[0051]進(jìn)一步的,若獲取到的運動矢量預(yù)測值為當(dāng)前適用相鄰塊的運動矢量預(yù)測值,則將獲取到的運動矢量預(yù)測值加入到運動矢量列表包括:
[0052]判斷當(dāng)前適用相鄰塊的運動矢量預(yù)測值與除當(dāng)前適用相鄰塊以外的其他適用相鄰塊的運動矢量預(yù)測值是否相同;若不相同,則將當(dāng)前適用相鄰塊的運動矢量預(yù)測值加入運動矢量列表。
[0053]可見,上述過程中,由于適用相鄰塊不包括位于當(dāng)前⑶內(nèi)的相鄰塊,因此⑶內(nèi)的多個PU,不存在依賴性,可以并行執(zhí)行。例如,當(dāng)前CU左右劃分為第一和第二預(yù)測塊時,第二預(yù)測塊的適用相鄰塊不包括位于第一預(yù)測塊內(nèi)的相鄰塊Al,Al的運動矢量預(yù)測值不會參與該判斷過程。因此第二預(yù)測塊與第一預(yù)測塊可以并行執(zhí)行該過程。[0054]具體的,作為本實施例的一種實施方式,若當(dāng)前適用相鄰塊為相鄰塊BI,則判斷相鄰塊BI的運動矢量預(yù)測值與相鄰塊Al的運動矢量預(yù)測值是否相同;
[0055]若當(dāng)前適用相鄰塊為相鄰塊B0,則判斷相鄰塊BO的運動矢量預(yù)測值與相鄰塊BI的運動矢量預(yù)測值是否相同;
[0056]若當(dāng)前適用相鄰塊為相鄰塊A0,則判斷相鄰塊AO的運動矢量預(yù)測值與相鄰塊Al的運動矢量預(yù)測值是否相同;
[0057]若當(dāng)前適用相鄰塊為相鄰塊B2,則判斷相鄰塊B2的運動矢量預(yù)測值與相鄰塊Al的運動矢量預(yù)測值、相鄰塊BI的運動矢量預(yù)測值中至少一項是否相同。
[0058]進(jìn)一步的,若獲取到的運動矢量預(yù)測值為當(dāng)前適用相鄰塊的運動矢量預(yù)測值,則將獲取到的運動矢量預(yù)測值加入到運動矢量列表還可以包括:
[0059]判斷當(dāng)前適用相鄰塊的運動矢量預(yù)測值與已被加入到運動矢量列表中的運動矢量預(yù)測值是否相同;若不相同,則將當(dāng)前適用相鄰塊的運動矢量預(yù)測值加入運動矢量列表。
[0060]具體的,作為本實施例的一種實施方式,若當(dāng)前適用相鄰塊為相鄰塊BI,則判斷相鄰塊BI的運動矢量預(yù)測值與已被加入運動矢量列表的相鄰塊Al的運動矢量預(yù)測值是否相同;
[0061]若當(dāng)前適用相鄰塊為相鄰塊B0,則判斷相鄰塊BO的運動矢量預(yù)測值與已被加入運動矢量列表的相鄰塊BI的運動矢量預(yù)測值是否相同;
[0062]若當(dāng)前適用相鄰塊為相鄰塊A0,則判斷相鄰塊AO的運動矢量預(yù)測值與已被加入運動矢量列表的相鄰塊Al的運動矢量預(yù)測值是否相同;
[0063]若當(dāng)前適用相鄰塊為相鄰塊B2,則判斷相鄰塊B2的運動矢量預(yù)測值與已被加入運動矢量列表的相鄰塊Al的運動矢量預(yù)測值、已被加入運動矢量列表的相鄰塊BI的運動矢量預(yù)測值中至少一項是否相同。
[0064]進(jìn)一步的,在建立運動矢量列表過程中還可以考慮TMVP中的運動矢量。
[0065]作為本實施例的一種實施方式,按照預(yù)設(shè)順序從適用相鄰塊中獲取運動矢量預(yù)測值還可以為:按照相鄰塊Al、相鄰塊BI、相鄰塊B0、相鄰塊A0、相鄰塊B2、TMVP的順序從適用相鄰塊和/或TMVP中獲取運動矢量預(yù)測值。
[0066]為了更清晰的描述本實施的方案,下面對在CU不同劃分方式下的運動矢量列表建立的方法進(jìn)行具體描述。
[0067]I、CU被左右劃分為PUl和PU2
[0068](I)PUl建立運動矢量列表
[0069]I)按照相鄰塊Al,相鄰塊BI,相鄰塊B0,相鄰塊A0,相鄰塊B2的順序,從相鄰塊Al,相鄰塊BI,相鄰塊B0,相鄰塊A0,相鄰塊B2中獲取運動矢量,并加入到運動矢量列表中。
[0070]a.當(dāng)前相鄰塊為相鄰塊Al時,僅當(dāng)相鄰塊Al中包含運動矢量預(yù)測值時,將相鄰塊Al的運動矢量預(yù)測值加入到運動矢量列表中;
[0071]b.當(dāng)前相鄰塊為相鄰塊BI時,僅當(dāng)相鄰塊BI中包含運動矢量預(yù)測值,并且該預(yù)測值與已被加入運動矢量列表中的相鄰塊Al的運動矢量預(yù)測值不相同時,將相鄰塊BI的運動矢量預(yù)測值加入到運動矢量列表中;
[0072]c.當(dāng)前相鄰塊為相鄰塊BO時,僅當(dāng)相鄰塊BO中包含運動矢量預(yù)測值,并且該預(yù)測值與已被加入運動矢量列表中的相鄰塊BI的運動矢量預(yù)測值不相同時,將相鄰塊BO的運動矢量預(yù)測值加入到運動矢量列表中;
[0073]d.當(dāng)前相鄰塊為相鄰塊AO時,僅當(dāng)相鄰塊AO中包含運動矢量預(yù)測值,并且該預(yù)測值與已被加入運動矢量列表中的相鄰塊Al的運動矢量預(yù)測值不相同時,將相鄰塊AO的運動矢量預(yù)測值加入到運動矢量列表中;
[0074]e.當(dāng)前相鄰塊為相鄰塊B2時,僅當(dāng)相鄰塊B2中包含運動矢量預(yù)測值,該預(yù)測值與已被加入運動矢量列表中的相鄰塊Al的運動矢量預(yù)測值、和與已被加入運動矢量列表中的相鄰塊BI的運動矢量預(yù)測值均不相同,并且相鄰塊Al、相鄰塊BI、相鄰塊B0、相鄰塊AO中至少一項的運動矢量預(yù)測值未被加入運動矢量列表中時,將相鄰塊B2的運動矢量預(yù)測值加入運動矢量列表中。
[0075]2)從TMVP中獲取運動矢量預(yù)測值,并加入到運動矢量列表中。具體的,利用PUl的時域參考圖像獲取PUl的TMVP,如果PUl的TMVP可用,則將TMVP的運動矢量加入到運動矢量列表中。
[0076](2) PU2建立運動矢量列表
[0077]I)按照相鄰塊BI,相鄰塊B0,相鄰塊A0,相鄰塊B2的順序,從相鄰塊BI,相鄰塊B0,相鄰塊A0,相鄰塊B2中獲取運動矢量,并加入到運動矢量列表中。
[0078]a.當(dāng)前相鄰塊為相鄰塊BI時,僅當(dāng)相鄰塊BI中包含運動矢量預(yù)測值時,將相鄰塊BI的運動矢量預(yù)測值加入到運動矢量列表中;
[0079]b.當(dāng)前相鄰塊為相鄰塊BO時,僅當(dāng)相鄰塊BO中包含運動矢量預(yù)測值,并且該預(yù)測值與已被加入運動矢量列表中的相鄰塊BI的運動矢量預(yù)測值不相同時,將相鄰塊BO的運動矢量預(yù)測值加入到運動矢量列表中;
[0080]c.當(dāng)前相鄰塊為相鄰塊AO時,僅當(dāng)相鄰塊AO中包含運動矢量預(yù)測值時,將相鄰塊AO的運動矢量預(yù)測值加入到運動矢量列表中;
[0081]d.當(dāng)前相鄰塊為相鄰塊B2時,僅當(dāng)相鄰塊B2中包含運動矢量預(yù)測值,該預(yù)測值與已被加入運動矢量列表中的相鄰塊BI的運動矢量預(yù)測值不相同時,將相鄰塊B2的運動矢量預(yù)測值加入運動矢量列表中。
[0082]2)從TMVP中獲取運動矢量預(yù)測值,并加入到運動矢量列表中。具體的,利用PUl的時域參考圖像獲取PUl的TMVP,如果PUl的TMVP可用,則將TMVP的運動矢量加入到運動矢量列表中。
[0083]此時,由于在建立PU2的運動矢量列表時,不考慮PU2的相鄰塊Al,則可以采用并行方式建立PUl與的運動矢量列表。
[0084]2、CU被上下劃分為PUl和PU2
[0085](I)PUl建立運動矢量列表
[0086]與“I、⑶被左右劃分為PUl和PU2”中“(I) PUl建立運動矢量列表”的方法類似,在此不再贅述。
[0087](2) PU2建立運動矢量列表
[0088]I)按照相鄰塊Al,相鄰塊B0,相鄰塊A0,相鄰塊B2的順序,從相鄰塊Al,相鄰塊B0,相鄰塊A0,相鄰塊B2中獲取運動矢量,并加入到運動矢量列表中。
[0089]a.當(dāng)前相鄰塊為相鄰塊Al時,僅當(dāng)相鄰塊Al中包含運動矢量預(yù)測值時,將相鄰塊Al的運動矢量預(yù)測值加入到運動矢量列表中;
[0090]b.當(dāng)前相鄰塊為相鄰塊BO時,僅當(dāng)相鄰塊BO中包含運動矢量預(yù)測值時,將相鄰塊BO的運動矢量預(yù)測值加入到運動矢量列表中;
[0091]c.當(dāng)前相鄰塊為相鄰塊AO時,僅當(dāng)相鄰塊AO中包含運動矢量預(yù)測值,并且該預(yù)測值與已被加入運動矢量列表中的相鄰塊Al的運動矢量預(yù)測值不相同時,將相鄰塊AO的運動矢量預(yù)測值加入到運動矢量列表中;
[0092]d.當(dāng)前相鄰塊為相鄰塊B2時,僅當(dāng)相鄰塊B2中包含運動矢量預(yù)測值,該預(yù)測值與已被加入運動矢量列表中的相鄰塊Al的運動矢量預(yù)測值不相同時,將相鄰塊B2的運動矢量預(yù)測值加入運動矢量列表中。
[0093]2)從TMVP中獲取運動矢量預(yù)測值,并加入到運動矢量列表中。具體的,利用PUl的時域參考圖像獲取PUl的TMVP,如果PUl的TMVP可用,則將TMVP的運動矢量加入到運動矢量列表中。
[0094]此時,由于在建立PU2的運動矢量列表時,不考慮PU2的相鄰塊BI,則可以采用并行方式建立PUl與的運動矢量列表。
[0095]采用上述方案后,當(dāng)建立預(yù)測塊的運動矢量列表時,首先,獲取當(dāng)前預(yù)測塊空域上的相鄰塊,當(dāng)前預(yù)測塊位于當(dāng)前編碼單元中;根據(jù)當(dāng)前編碼單元的劃分方式確定當(dāng)前預(yù)測塊的適用相鄰塊,適用相鄰塊位于當(dāng)前編碼單元外;根據(jù)適用相鄰塊的運動矢量預(yù)測值并按照預(yù)設(shè)順序從適用相鄰塊中獲取運動矢量預(yù)測值,并將獲取到的運動矢量預(yù)測值加入到運動矢量列表。這樣,建立預(yù)測塊的運動矢量列表時,不考慮位于當(dāng)前編碼單元中的相鄰塊,當(dāng)編碼單元包含至少兩個預(yù)測塊時,可以采用并行方式建立至少兩個預(yù)測塊的運動矢量列表,增加了同一編碼單元中的至少兩個預(yù)測塊建立運動矢量列表的速度,提高了并行處理能力。
[0096]下面提供一些裝置實施例,提供的裝置實施例分別與上述方法實施例相對應(yīng),具體的裝置及裝置中包含的接收器處理器的實施方法參見方法實施例。
[0097]本實施例提供一種用于運動矢量預(yù)測的運動矢量列表建立的裝置,如圖4所示,可以包括:
[0098]接收器41,用于獲取當(dāng)前預(yù)測塊空域上的相鄰塊,當(dāng)前預(yù)測塊位于當(dāng)前編碼單元中;
[0099]處理器42,用于根據(jù)當(dāng)前編碼單元的劃分方式確定當(dāng)前預(yù)測塊的適用相鄰塊,適用相鄰塊位于當(dāng)前編碼單元外;根據(jù)適用相鄰塊的運動矢量預(yù)測值并按照預(yù)設(shè)順序從適用相鄰塊中獲取運動矢量預(yù)測值,并將獲取到的運動矢量預(yù)測值加入到運動矢量列表。
[0100]進(jìn)一步的,接收器41獲取到的預(yù)測塊空域上的相鄰塊包括:位于預(yù)測塊左下側(cè)的相鄰塊A0,位于預(yù)測塊左側(cè)的相鄰塊Al,位于預(yù)測塊右上側(cè)的相鄰塊B0,位于預(yù)測塊上側(cè)的相鄰塊BI,位于預(yù)測塊左上側(cè)的相鄰塊B2。
[0101]進(jìn)一步的,處理器42,還用于若當(dāng)前編碼單元被上下劃分為第一預(yù)測塊和第二預(yù)測塊,且當(dāng)前預(yù)測塊為第二預(yù)測塊,則預(yù)測塊的適用相鄰塊包括第二預(yù)測塊的:相鄰塊A0、相鄰塊Al、相鄰塊BO、相鄰塊B2 ;
[0102]若當(dāng)前編碼單元被左右劃分為第一預(yù)測塊和第二預(yù)測塊,且當(dāng)前預(yù)測塊為第二預(yù)測塊,則預(yù)測塊的適用相鄰塊包括第二預(yù)測塊的:相鄰塊A0、相鄰塊B0、相鄰塊BI、相鄰塊B2。
[0103]進(jìn)一步的,處理器42,還用于若適用相鄰塊為幀間編碼塊,則按照相鄰塊Al、相鄰塊BI、相鄰塊B0、相鄰塊A0、相鄰塊B2的順序從適用相鄰塊中獲取運動矢量預(yù)測值。
[0104]進(jìn)一步的,處理器42,還用于判斷當(dāng)前適用相鄰塊的運動矢量預(yù)測值與除當(dāng)前適用相鄰塊以外的其他適用相鄰塊的運動矢量預(yù)測值是否相同;
[0105]若不相同,則將當(dāng)前適用相鄰塊的運動矢量預(yù)測值加入運動矢量列表。
[0106]進(jìn)一步的,處理器42,還用于判斷當(dāng)前適用相鄰塊的運動矢量預(yù)測值與已被加入到運動矢量列表中的運動矢量預(yù)測值是否相同;
[0107]若不相同,則將當(dāng)前適用相鄰塊的運動矢量預(yù)測值加入運動矢量列表。
[0108]進(jìn)一步的,處理器42,還用于若當(dāng)前適用相鄰塊為相鄰塊BI,則判斷相鄰塊BI的運動矢量預(yù)測值與相鄰塊Al的運動矢量預(yù)測值是否相同;
[0109]若當(dāng)前適用相鄰塊為相鄰塊B0,則判斷相鄰塊BO的運動矢量預(yù)測值與相鄰塊BI的運動矢量預(yù)測值是否相同;
[0110]若當(dāng)前適用相鄰塊為相鄰塊A0,則判斷相鄰塊AO的運動矢量預(yù)測值與相鄰塊Al的運動矢量預(yù)測值是否相同;
[0111]若當(dāng)前適用相鄰塊為相鄰塊B2,則判斷相鄰塊B2的運動矢量預(yù)測值與相鄰塊Al的運動矢量預(yù)測值、相鄰塊BI的運動矢量預(yù)測值中至少一項是否相同。
[0112]進(jìn)一步的,處理器42,還用于若當(dāng)前適用相鄰塊為相鄰塊BI,則判斷相鄰塊BI的運動矢量預(yù)測值與已被加入運動矢量列表的相鄰塊Al的運動矢量預(yù)測值是否相同;
[0113]若當(dāng)前適用相鄰塊為相鄰塊B0,則判斷相鄰塊BO的運動矢量預(yù)測值與已被加入運動矢量列表的相鄰塊BI的運動矢量預(yù)測值是否相同;
[0114]若當(dāng)前適用相鄰塊為相鄰塊A0,則判斷相鄰塊AO的運動矢量預(yù)測值與已被加入運動矢量列表的相鄰塊Al的運動矢量預(yù)測值是否相同;
[0115]若當(dāng)前適用相鄰塊為相鄰塊B2,則判斷相鄰塊B2的運動矢量預(yù)測值與已被加入運動矢量列表的相鄰塊Al的運動矢量預(yù)測值、已被加入運動矢量列表的相鄰塊BI的運動矢量預(yù)測值中至少一項是否相同。
[0116]采用上述方案后,當(dāng)建立預(yù)測塊的運動矢量列表時,首先,接收器獲取當(dāng)前預(yù)測塊空域上的相鄰塊,當(dāng)前預(yù)測塊位于當(dāng)前編碼單元中;處理器根據(jù)當(dāng)前編碼單元的劃分方式確定當(dāng)前預(yù)測塊的適用相鄰塊,適用相鄰塊位于當(dāng)前編碼單元外;根據(jù)適用相鄰塊的運動矢量預(yù)測值并按照預(yù)設(shè)順序從適用相鄰塊中獲取運動矢量預(yù)測值,并將獲取到的運動矢量預(yù)測值加入到運動矢量列表。這樣,建立預(yù)測塊的運動矢量列表時,不考慮位于當(dāng)前編碼單元中的相鄰塊,當(dāng)編碼單元包含至少兩個預(yù)測塊時,可以采用并行方式建立至少兩個預(yù)測塊的運動矢量列表,增加了同一編碼單元中的至少兩個預(yù)測塊建立運動矢量列表的速度,提聞了并行處理能力。
[0117]通過以上的實施方式的描述,所屬領(lǐng)域的技術(shù)人員可以清楚地了解到本發(fā)明可借助軟件加必需的通用硬件的方式來實現(xiàn),當(dāng)然也可以通過硬件,但很多情況下前者是更佳的實施方式?;谶@樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻(xiàn)的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計算機軟件產(chǎn)品存儲在可讀取的存儲介質(zhì)中,如計算機的軟盤,硬盤或光盤等,包括若干指令用以使得一臺計算機設(shè)備(可以是個人計算機,服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個實施例所述的方法。
[0118]以上所述,僅為本發(fā)明的【具體實施方式】,但本發(fā)明的保護(hù)范圍并不局限于此,任何熟悉本【技術(shù)領(lǐng)域】的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到變化或替換,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明的保護(hù)范圍應(yīng)所述以權(quán)利要求的保護(hù)范圍為準(zhǔn)。
【權(quán)利要求】
1.一種用于運動矢量預(yù)測的運動矢量列表建立的方法,其特征在于,其特征在于,包括: 確定當(dāng)前預(yù)測塊空域上的相鄰塊,所述當(dāng)前預(yù)測塊位于當(dāng)前編碼單元中; 根據(jù)所述當(dāng)前編碼單元的劃分方式確定所述當(dāng)前預(yù)測塊的適用相鄰塊,所述適用相鄰塊位于所述當(dāng)前編碼單元外; 根據(jù)所述適用相鄰塊的運動矢量預(yù)測值并按照預(yù)設(shè)順序從所述適用相鄰塊中獲取運動矢量預(yù)測值,并將獲取到的運動矢量預(yù)測值加入到所述運動矢量列表。
2.根據(jù)權(quán)利要求1所述的用于運動矢量預(yù)測的運動矢量列表建立的方法,其特征在于,其特征在于,所述預(yù)測塊空域上的相鄰塊包括: 位于預(yù)測塊左下側(cè)的相鄰塊A0,位于預(yù)測塊左側(cè)的相鄰塊Al,位于預(yù)測塊右上側(cè)的相鄰塊B0,位于預(yù)測塊上側(cè)的相鄰塊BI,位于預(yù)測塊左上側(cè)的相鄰塊B2。
3.根據(jù)權(quán)利要求2所述的用于運動矢量預(yù)測的運動矢量列表建立的方法,其特征在于,所述根據(jù)所述當(dāng)前編碼單元的劃分方式確定所述當(dāng)前預(yù)測塊的適用相鄰塊包括: 若所述當(dāng)前編碼單元被上下劃分為第一預(yù)測塊和第二預(yù)測塊,且所述當(dāng)前預(yù)測塊為第二預(yù)測塊,則所述預(yù)測塊的適用相鄰塊包括所述第二預(yù)測塊的:相鄰塊A0、相鄰塊Al、相鄰塊B0、相鄰塊B2 ; 若所述當(dāng)前編碼單元被左右劃分為第一預(yù)測塊和第二預(yù)測塊,且所述當(dāng)前預(yù)測塊為第二預(yù)測塊,則所述預(yù)測塊的適用相鄰塊包括所述第二預(yù)測塊的:相鄰塊A0、相鄰塊B0、相鄰塊B1、相鄰塊B2。
4.根據(jù)權(quán)利要求2或3所述的用于運動矢量預(yù)測的運動矢量列表建立的方法,其特征在于,所述按照預(yù)設(shè)順序從所述適用相鄰塊中獲取運動矢量預(yù)測值包括: 若所述適用相鄰塊為幀間編碼塊,則按照相鄰塊Al、相鄰塊B1、相鄰塊B0、相鄰塊A0、相鄰塊B2的順序從所述適用相鄰塊中獲取運動矢量預(yù)測值。
5.根據(jù)權(quán)利要求4所述的用于運動矢量預(yù)測的運動矢量列表建立的方法,其特征在于,若所述獲取到的運動矢量預(yù)測值為當(dāng)前適用相鄰塊的運動矢量預(yù)測值,則所述將獲取到的運動矢量預(yù)測值加入到所述運動矢量列表包括: 判斷所述當(dāng)前適用相鄰塊的運動矢量預(yù)測值與除所述當(dāng)前適用相鄰塊以外的其他適用相鄰塊的運動矢量預(yù)測值是否相同; 若不相同,則將所述當(dāng)前適用相鄰塊的運動矢量預(yù)測值加入所述運動矢量列表。
6.根據(jù)權(quán)利要求4所述的用于運動矢量預(yù)測的運動矢量列表建立的方法,其特征在于,若所述獲取到的運動矢量預(yù)測值為當(dāng)前適用相鄰塊的運動矢量預(yù)測值,則所述將獲取到的運動矢量預(yù)測值加入到所述運動矢量列表包括: 判斷所述當(dāng)前適用相鄰塊的運動矢量預(yù)測值與已被加入到所述運動矢量列表中的運動矢量預(yù)測值是否相同; 若不相同,則將所述當(dāng)前適用相鄰塊的運動矢量預(yù)測值加入所述運動矢量列表。
7.根據(jù)權(quán)利要求5所述的用于運動矢量預(yù)測的運動矢量列表建立的方法,其特征在于,所述判斷所述當(dāng)前適用相鄰塊的運動矢量預(yù)測值與除所述當(dāng)前適用相鄰塊以外的其他適用相鄰塊的運動矢量預(yù)測值是否相同包括: 若當(dāng)前適用相鄰塊為相鄰塊BI,則判斷所述相鄰塊BI的運動矢量預(yù)測值與相鄰塊Al的運動矢量預(yù)測值是否相同; 若當(dāng)前適用相鄰塊為相鄰塊B0,則判斷所述相鄰塊BO的運動矢量預(yù)測值與相鄰塊BI的運動矢量預(yù)測值是否相同; 若當(dāng)前適用相鄰塊為相鄰塊A0,則判斷所述相鄰塊AO的運動矢量預(yù)測值與相鄰塊Al的運動矢量預(yù)測值是否相同; 若當(dāng)前適用相鄰塊為相鄰塊B2,則判斷所述相鄰塊B2的運動矢量預(yù)測值與相鄰塊Al的運動矢量預(yù)測值、所述相鄰塊BI的運動矢量預(yù)測值中至少一項是否相同。
8.根據(jù)權(quán)利要求6所述的用于運動矢量預(yù)測的運動矢量列表建立的方法,其特征在于,所述判斷所述當(dāng)前適用相鄰塊的運動矢量預(yù)測值與已被加入到所述運動矢量列表中的運動矢量預(yù)測值是否相同包括: 若當(dāng)前適用相鄰塊為相鄰塊BI,則判斷所述相鄰塊BI的運動矢量預(yù)測值與已被加入所述運動矢量列表的相鄰塊Al的運動矢量預(yù)測值是否相同; 若當(dāng)前適用相鄰塊為相鄰塊B0,則判斷所述相鄰塊BO的運動矢量預(yù)測值與已被加入所述運動矢量列表的相鄰塊BI的運動矢量預(yù)測值是否相同; 若當(dāng)前適用相鄰塊為相鄰塊A0,則判斷所述相鄰塊AO的運動矢量預(yù)測值與已被加入所述運動矢量列表的相鄰塊Al的運動矢量預(yù)測值是否相同; 若當(dāng)前適用相鄰塊為相鄰塊B2,則判斷所述相鄰塊B2的運動矢量預(yù)測值與已被加入所述運動矢量列表的相鄰塊Al的運動矢量預(yù)測值、已被加入所述運動矢量列表的相鄰塊BI的運動矢量預(yù)測值中至少一項是否相同。
9.一種用于運動矢量預(yù)測的運動矢量列表建立的裝置,其特征在于,包括: 接收器,用于確定當(dāng)前預(yù)測塊空域上的相鄰塊,所述當(dāng)前預(yù)測塊位于當(dāng)前編碼單元中; 處理器,用于根據(jù)所述當(dāng)前編碼單元的劃分方式確定所述當(dāng)前預(yù)測塊的適用相鄰塊,所述適用相鄰塊位于所述當(dāng)前編碼單元外;根據(jù)所述適用相鄰塊的運動矢量預(yù)測值并按照預(yù)設(shè)順序從所述適用相鄰塊中獲取運動矢量預(yù)測值,并將獲取到的運動矢量預(yù)測值加入到所述運動矢量列表。
10.根據(jù)權(quán)利要求9所述的用于運動矢量預(yù)測的運動矢量列表建立的裝置,其特征在于,所述接收器獲取到的所述預(yù)測塊空域上的相鄰塊包括: 位于預(yù)測塊左下側(cè)的相鄰塊A0,位于預(yù)測塊左側(cè)的相鄰塊Al,位于預(yù)測塊右上側(cè)的相鄰塊B0,位于預(yù)測塊上側(cè)的相鄰塊BI,位于預(yù)測塊左上側(cè)的相鄰塊B2。
11.根據(jù)權(quán)利要求10所述的用于運動矢量預(yù)測的運動矢量列表建立的裝置,其特征在于,所述處理器,還用于若所述當(dāng)前編碼單元被上下劃分為第一預(yù)測塊和第二預(yù)測塊,且所述當(dāng)前預(yù)測塊為第二預(yù)測塊,則所述預(yù)測塊的適用相鄰塊包括所述第二預(yù)測塊的:相鄰塊AO、相鄰塊Al、相鄰塊BO、相鄰塊B2 ; 若所述當(dāng)前編碼單元被左右劃分為第一預(yù)測塊和第二預(yù)測塊,且所述當(dāng)前預(yù)測塊為第二預(yù)測塊,則所述預(yù)測塊的適用相鄰塊包括所述第二預(yù)測塊的:相鄰塊A0、相鄰塊B0、相鄰塊B1、相鄰塊B2。
12.根據(jù)權(quán)利要求10或11所述的用于運動矢量預(yù)測的運動矢量列表建立的裝置,其特征在于,所述處理器,還用于若所述適用相鄰塊為幀間編碼塊,則按照相鄰塊Al、相鄰塊B1、相鄰塊BO、相鄰塊A0、相鄰塊B2的順序從所述適用相鄰塊中獲取運動矢量預(yù)測值。
13.根據(jù)權(quán)利要求12所述的用于運動矢量預(yù)測的運動矢量列表建立的裝置,其特征在于,所述處理器,還用于判斷所述當(dāng)前適用相鄰塊的運動矢量預(yù)測值與除所述當(dāng)前適用相鄰塊以外的其他適用相鄰塊的運動矢量預(yù)測值是否相同;若不相同,則將所述當(dāng)前適用相鄰塊的運動矢量預(yù)測值加入所述運動矢量列表。
14.根據(jù)權(quán)利要求12所述的用于運動矢量預(yù)測的運動矢量列表建立的裝置,其特征在于,所述處理器,還用于判斷所述當(dāng)前適用相鄰塊的運動矢量預(yù)測值與已被加入到所述運動矢量列表中的運動矢量預(yù)測值是否相同; 若不相同,則將所述當(dāng)前適用相鄰塊的運動矢量預(yù)測值加入所述運動矢量列表。
15.根據(jù)權(quán)利要求13所述的用于運動矢量預(yù)測的運動矢量列表建立的裝置,其特征在于,所述處理器,還用于若當(dāng)前適用相鄰塊為相鄰塊BI,則判斷所述相鄰塊BI的運動矢量預(yù)測值與相鄰塊Al的運動矢量預(yù)測值是否相同; 若當(dāng)前適用相鄰塊為相鄰塊B0,則判斷所述相鄰塊BO的運動矢量預(yù)測值與相鄰塊BI的運動矢量預(yù)測值是否相同; 若當(dāng)前適用相鄰塊為相鄰塊A0,則判斷所述相鄰塊AO的運動矢量預(yù)測值與相鄰塊Al的運動矢量預(yù)測值是否相同; 若當(dāng)前適用相鄰塊為相鄰塊B2,則判斷所述相鄰塊B2的運動矢量預(yù)測值與相鄰塊Al的運動矢量預(yù)測值、所述相鄰塊BI的運動矢量預(yù)測值中至少一項是否相同。
16.根據(jù)權(quán)利要求14所述的用于運動矢量預(yù)測的運動矢量列表建立的裝置,其特征在于,其特征在于,所述處理器,還用于若當(dāng)前適用相鄰塊為相鄰塊BI,則判斷所述相鄰塊BI的運動矢量預(yù)測值與已被加入所述運動矢量列表的相鄰塊Al的運動矢量預(yù)測值是否相同; 若當(dāng)前適用相鄰塊為相鄰塊B0,則判斷所述相鄰塊BO的運動矢量預(yù)測值與已被加入所述運動矢量列表的相鄰塊BI的運動矢量預(yù)測值是否相同; 若當(dāng)前適用相鄰塊為相鄰塊A0,則判斷所述相鄰塊AO的運動矢量預(yù)測值與已被加入所述運動矢量列表的相鄰塊Al的運動矢量預(yù)測值是否相同; 若當(dāng)前適用相鄰塊為相鄰塊B2,則判斷所述相鄰塊B2的運動矢量預(yù)測值與已被加入所述運動矢量列表的相鄰塊Al的運動矢量預(yù)測值、已被加入所述運動矢量列表的相鄰塊BI的運動矢量預(yù)測值中至少一項是否相同。
【文檔編號】H04N19/513GK103841425SQ201410091553
【公開日】2014年6月4日 申請日期:2012年10月8日 優(yōu)先權(quán)日:2012年10月8日
【發(fā)明者】林永兵 申請人:華為技術(shù)有限公司