本發(fā)明屬于數(shù)字視頻壓縮技術領域,尤其涉及一種基于運動場的視頻編碼方法及裝置。
背景技術:
h.264是一種高效的視頻編碼壓縮標準。從h.264開始引入多參考幀,使得傳統(tǒng)的mv(motionvector,運動向量)編碼變成了mvf(motionvectorfield,運動場)編碼,其中,運動場包括mv和refidx(參考索引,用于指示使用哪幅圖像作為參考)。其中,運動向量是當前塊在當前幀中的坐標(x,y)與預測塊在參考幀中的坐標(x0,y0)之差mv0=(x0,y0)-(x,y)。參考索引和運動向量構成一組完成的預測參數(shù),作為當前塊的編碼數(shù)據(jù)的一部分被編碼。
h.264將編碼圖像分成三種類型:i幀、p幀和b幀。i幀只使用本幀中已編碼塊的信息來預測當前塊,這種預測模式稱為幀內(nèi)預測;p幀使用已經(jīng)完成編碼并且顯示順序在當前幀之前的幀對應的重構幀來預測當前幀中的待編碼塊,這種預測模式稱為前向預測;b幀可以使用已經(jīng)完成編碼(顯示順序在當前幀之前或之后都可以)的重構幀來預測當前幀中的待編碼塊。
在h.264中,直接編碼refidx,然后,mv采用中值預測編碼,即需要對運動場進行編碼;對運動場進行編碼仍需要消耗大量時間,因此,編碼效率低。
技術實現(xiàn)要素:
有鑒于此,本申請的目的在于提供一種基于運動場的視頻編碼方法及裝置,以提高視頻編碼效率。
第一方面,本申請?zhí)峁┝艘环N基于運動場的視頻編碼方法,包括:
從當前塊的鄰居塊對應的運動場中獲得所述當前塊對應的運動場的預測,所述鄰居塊包括時域鄰居塊和空域鄰居塊中的至少一類;所述當前塊對應的運動場的預測包括前向運動場的預測和后向運動場的預測;
當所述當前塊存在前向運動場時,從所述當前塊對應的運動場的預測中查找與所述前向運動場相同的目標前向運動場;
對所述目標前向運動場對應的索引進行編碼,獲得所述當前塊的前向運動場的編碼;
當所述當前塊存在后向運動場時,從所述當前塊對應的運動場的預測中查找與所述后向運動場相同的目標后向運動場;
對所述目標后向運動場對應的索引進行編碼,獲得所述當前塊的后向運動場的編碼。
可選地,所述當所述當前塊存在前向運動場時,從所述當前塊對應的運動場的預測中查找與所述前向運動場相同的目標前向運動場,包括:
獲取所述當前塊的前向運動場;
從所述當前塊對應的運動場的預測所包含的所有所述前向運動場的預測中提取出互不重復的所述前向運動場的預測,并為各個互不重復的所述前向運動場的預測創(chuàng)建索引;
逐一比較所述各個互不重復的前向運動場的預測與所述前向運動場是否相同;
當存在與所述前向運動場相同的前向運動場的預測時,確定與所述前向運動場相同的前向運動場的預測為所述目標前向運動場,并確定所述目標前向運動場對應的索引。
可選地,所述當所述當前塊存在后向運動場時,從所述當前塊對應的運動場的預測中查找與所述后向運動場相同的目標后向運動場,包括:
獲取所述當前塊的后向運動場;
從所述當前塊對應的運動場的預測所包含的后向運動場的預測中提取出互不重復的所述后向運動場的預測,并為各個互不重復的所述后向運動場的預測創(chuàng)建索引;
逐一比較所述各個互不重復的后向運動場的預測與所述后向運動場是否相同;
當存在與所述后向運動場信息相同的后向運動場的預測時,確定與所述后向運動場相同的后向運動場的預測為所述目標后向運動場,并確定所述目標后向運動場對應的索引。
可選地,所述對所述目標前向運動場的預測對應的索引進行編碼,獲得所述當前塊的前向運動場的編碼包括:
對第一預設標記進行編碼,所述第一預設標記用于表征存在所述目標前向運動場;
對所述目標前向運動場對應的索引進行編碼;
根據(jù)所述第一預設標記的編碼和所述目標前向運動場對應的索引的編碼,得到所述當前塊的前向運動場的編碼。
可選地,所述對所述目標后向運動場的預測對應的索引進行編碼,獲得所述當前塊的后向運動場的編碼,包括:
對用于表征存在所述目標后向運動場的第二預設標記進行編碼;
對所述目標后向運動場對應的索引進行編碼;
根據(jù)所述第二預設標記的編碼,以及,所述目標后向運動場對應的索引的編碼,得到所述當前塊的后向運動場的編碼。
第二方面,本申請還提供了一種基于運動場的視頻編碼裝置,包括:
運動場預測模塊,用于從當前塊的鄰居塊對應的運動場中獲得所述當前塊對應的運動場的預測,所述鄰居塊包括時域鄰居塊和空域鄰居塊中的至少一類;所述當前塊對應的運動場的預測包括前向運動場的預測和后向運動場的預測;
第一查找模塊,用于當所述當前塊存在前向運動場時,從所述當前塊對應的運動場的預測中查找與所述前向運動場相同的目標前向運動場;
第一編碼模塊,用于對所述目標前向運動場對應的索引進行編碼,獲得所述當前塊的前向運動場的編碼;
第二查找模塊,用于當所述當前塊存在后向運動場時,從所述當前塊對應的運動場的預測中查找與所述后向運動場相同的目標后向運動場;
第二編碼模塊,用于對所述目標后向運動場對應的索引進行編碼,獲得所述當前塊的后向運動場的編碼。
可選地,所述第一查找模塊,包括:
第一獲取子模塊,用于獲取所述當前塊的前向運動場;
第一索引創(chuàng)建子模塊,用于從所述當前塊對應的運動場的預測所包含的所有所述前向運動場的預測中提取出互不重復的所述前向運動場的預測,并為各個互不重復所述前向運動場的預測創(chuàng)建索引;
第一比較子模塊,用于逐一比較所述各個互不重復的前向運動場的預測與所述前向運動場是否相同;
第一確定子模塊,用于當存在與所述前向運動場相同的前向運動場的預測時,確定與所述前向運動場相同的前向運動場的預測為所述目標前向運動場,并確定所述目標前向運動場對應的索引。
可選地,所述第二查找模塊,包括:
第二獲取子模塊,用于獲取所述當前塊的后向運動場;
第二索引創(chuàng)建子模塊,用于從所述當前塊對應的運動場的預測所包含的后向運動場的預測中提取出互不重復的所述后向運動場的預測,并為各個互不重復的所述后向運動場的預測創(chuàng)建索引;
第二比較子模塊,用于逐一比較所述各個互不重復的后向運動場的預測與所述后向運動場是否相同;
第二確定子模塊,用于當存在與所述后向運動場信息相同的后向運動場的預測時,確定與所述后向運動場相同的后向運動場的預測為所述目標后向運動場,并確定所述目標后向運動場對應的索引。
可選地,所述第一編碼模塊,包括:
第一編碼子模塊,用于對第一預設標記進行編碼,所述第一預設標記用于表征存在所述目標前向運動場;
第二編碼子模塊,用于對所述目標前向運動場對應的索引進行編碼;
第一編碼獲得子模塊,用于根據(jù)所述第一預設標記的編碼和所述目標前向運動場對應的索引的編碼,得到所述當前塊的前向運動場的編碼。
可選地,所述第二編碼模塊,包括:
第三編碼子模塊,用于對用于表征存在所述目標后向運動場的第二預設標記進行編碼;
第四編碼子模塊,用于對所述目標后向運動場對應的索引進行編碼;
第二編碼獲得子模塊,用于根據(jù)所述第二預設標記的編碼,以及,所述目標后向運動場對應的索引的編碼,得到所述當前塊的后向運動場的編碼。
本發(fā)明提供的基于運動場的視頻編碼方法,依據(jù)當前塊在時域和空域上的鄰居塊獲得該當前塊的運動場的預測(即,mvf的預測);若當前塊存在前向運動場,則從mvf的預測中查找與該前向運動場相同的前向運動場的預測,稱為目標前向運動場;并對目標前向運動場的索引進行編碼。若當前塊存在后向運動場,則從鄰居塊的mvf的預測中查找與該后向運動場相同的后向運動場的預測,稱為目標后向運動場;然后,對該目標后向運動場的索引進行編碼。最后,根據(jù)目標前向運動場對應索引的編碼和目標后向運動場對應索引的編碼中的至少一項得到該當前塊的運動場的編碼??梢?,該視頻編碼方法只需要對目標前向運動場或目標后向運動場的索引進行編碼,而不需要對當前塊的前向運動場或后向運動場進行編碼,因此,提高了編碼效率。而且,當前塊的前向運動場和后向運動場可以分別獨立使用上述的視頻編碼過程(即,可以只針對前向運動場利用該方法進行編碼,或者,只針對后向運動向利用該方法進行編碼),提高了靈活性。
附圖說明
為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術中的技術方案,下面將對實施例或現(xiàn)有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖是本發(fā)明的一些實施例,對于本領域普通技術人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1是本發(fā)明實施例一種基于運動場的視頻編碼方法的流程圖;
圖2是本發(fā)明實施例一種當前塊對應的鄰居塊的示意圖;
圖3是本發(fā)明實施例另一種基于運動場的視頻編碼方法的流程圖;
圖4是本發(fā)明實施例一種基于運動場的視頻編碼裝置的框圖;
圖5是本發(fā)明實施例一種第一查找模塊的框圖;
圖6是本發(fā)明實施例一種第一編碼模塊的框圖;
圖7是本發(fā)明實施例一種第二查找模塊的框圖;
圖8是本發(fā)明實施例一種第二編碼模塊的框圖。
具體實施方式
為使本發(fā)明實施例的目的、技術方案和優(yōu)點更加清楚,下面將結合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領域普通技術人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
請參見圖1,示出了本發(fā)明實施例一種基于運動場的視頻編碼方法的流程圖,該方法用于對視頻幀的運動場進行編碼。如圖1所示,該方法可以包括以下步驟:
s110,從當前塊的鄰居塊對應的運動場中獲得所述當前塊對應的運動場的預測。
鄰居塊包括時域鄰居塊和空域鄰居塊中的至少一類,例如,可以只有時域鄰居塊,或者,只有空域鄰居塊,或者,既有時域鄰居塊又有空域鄰居塊。
請參見圖2,示出了本申請實施例一種當前塊對應的鄰居塊的示意圖,如圖2所示,x是當前塊,a0、a1、b0、b1和b2是當前塊x的空域鄰居塊,當然也可以選x的其它空域鄰居塊,本申請對此并不限制;接著,獲取上述空域鄰居塊的運動場,如果某位置不存在,則跳過此位置。其中,包括鄰居塊的前向運動場和后向運動場。
圖2中y表示當前塊x在時域上的參考圖像中同位塊,獲得該時域鄰居塊的運動場,可以利用y的參考圖像在圖2所示的c0、c1位置的同位塊得到y(tǒng)的運動場。
圖2所示的各個鄰居塊的運動場作為當前塊x的運動場的預測。運動場的預測包括前向運動場的預測和后向運動場的預測,運動場的預測用來預測當前塊的運動場。
獲取圖2所示的空域鄰居塊和時域鄰居塊的運動場,并剔除相同的運動場,最終共得到n個運動場,編號依次為:mvfp0、mvfp1、……、mvfpn-1。
鄰居塊的運動場的獲取方式可以采用已有的方式實現(xiàn),例如,采用高效視頻編碼(highefficiencyvideocoding,hevc)獲得。
s120,當所述當前塊存在前向運動場時,從當前塊對應的運動場的預測中查找與所述前向運動場相同的目標前向運動場。
如果當前塊的運動場中存在前向運動場,記為mvffc,則從s110獲得的當前塊的所有運動場的預測中提取出全部前向運動場的預測,并剔除相同的項。即從時域或空域鄰居塊的運動場中提取全部前向運動場,并剔除相同的運動場,最終得到的當前塊對應的前向運動場的預測中任意兩個運動場互不相同。
然后,從提取得到的所有前向運動場的預測中查找出與當前塊的前向運動場相同的運動場,稱為目標前向運動場。
例如,從n個運動場的預測中提取出全部前向運動場并剔除相同項,得到前向運動場的預測,假設,最終得到的前向運動場的預測中包含m個前向運動場,編號依次為:mvfpf0、mvfpf1、……、mvfpfm-1。判斷這m個前向運動場中是否存在一個與當前塊的mvffc相同的項,如果存在,則確定與mvffc相同的項為目標前向運動場,因為目標前向運動場與當前塊的前向運動場相同,所以可以利用目標前向運動場的編碼表示當前塊的前向運動場的編碼。
為了準確找到目標前向運動的編碼,需要對前向運動場的預測創(chuàng)建索引,根據(jù)目標前向運動場的索引找到該目標前向運動場的編碼。例如,mvfpfi=mvffc,則目標前向運動場是mvfpfi,且索引為i。
s130,對所述目標前向運動場對應的索引進行編碼。
對目標前向運動場的索引進行編碼,例如,對mvfpfi的索引i進行編碼。
s140,當所述當前塊存在后向運動場時,從當前塊對應的運動場的預測中查找與所述后向運動場相同的目標后向運動場。
如果當前塊的運動場中存在后向運動場,記為mvfbc,則從s110獲得的所有運動場的預測中提取出全部后向運動場的預測,并剔除相同的項。例如,從n個運動場的預測中提取出全部后向運動場并剔除相同項,得到后向運動場的預測包含t個后向運動場,編號依次為mvfpb0、mvfpb1、……、mvfpbt-1。
然后,判斷這t個后向運動場中是否存在一個與當前塊的mvfbc相同的項,如果存在,則確定該項對應的運動場為目標后向運動場,因為目標后向運動場與當前塊的后向運動場相同,所以可以利用目標后向運動場的編碼表示當前塊的后向運動場編碼。
為了準確找到目標后向運動的編碼,需要對后向運動場的預測創(chuàng)建索引,根據(jù)目標后向運動場的索引找到該目標后向運動場的編碼。例如,mvfpbj=mvfbc,則目標后向運動場是mvfpbcj,且索引為j。
s150,對所述目標后向運動場對應的索引進行編碼。
例如,對mvfpbcj的索引j進行編碼。
s160,依據(jù)所述目標前向運動場對應索引的編碼和所述目標后向運動場對應索引的編碼中的至少一項,得到所述當前塊對應運動場的編碼。
如果當前塊只存在前向運動場,則將目標前向運動場的編碼作為當前塊對應的運動場的編碼;
如果當前塊只存在后向運動場,則將目標后向運動場的編碼作為當前塊對應的運動場的編碼;
如果當前塊同時存在前向運動場和后向運動場,則將目標前向運動場的編碼和目標后向運動場的編碼作為當前塊對應的運動場的編碼。
目標前向運動場和目標后向運動場是已編碼塊,只需要編碼目標前向運動場和目標后向運動場對應的索引等信息即可,索引的數(shù)據(jù)量遠遠小于運動場的數(shù)據(jù)量,因此,編碼索引的效率遠遠高于編碼運動場的效率。
本實施例提供的基于運動場的視頻編碼方法,根據(jù)當前塊在時域和/或空域上的鄰居塊的前向運動場確定當前塊的前向運動場的預測,并將該前向運動場的預測確定為目標前向運動場;和/或,根據(jù)當前塊的鄰居塊的后向運動場確定當前塊的后向運動場的預測,并將該后向運動場的預測確定為目標后向運動場;因為目標前向運動場和目標后向運動場的編碼已知,所以只需要對目標前向運動場(或者,目標后向運動場)的索引進行編碼,而不需要對當前塊的前向運動場或后向運動場進行編碼,因此,提高了編碼效率。而且,當前塊的前向運動場和后向運動場可以分別獨立使用上述的視頻編碼過程,即,可以只針對前向運動場利用該方法進行編碼,或者,只針對后向運動向利用該方法進行編碼,提高了靈活性。
請參見圖3,示出了本發(fā)明實施例另一種基于運動場的視頻編碼方法的流程圖,如圖3所示,該方法可以包括以下步驟:
s210,從當前塊的鄰居塊對應的運動場中獲得該當前塊對應的運動場的預測。
鄰居塊包括時域鄰居塊和/或空域鄰居塊。獲取鄰居塊的運動場的過程與s110相同,此處不再贅述。
例如,剔除相同項后得到的運動場的預測中包含的運動場共有n個,編碼依次為mvfp0、mvfp1、……、mvfpn-1。
運動場的預測包括鄰居塊的前向運動場和后向運動場。
s220,對當前塊的預測方向進行編碼。
預測方向包括前向、后向和雙向中的任意一種。例如,前向編碼為二進制數(shù)“00”,后向編碼為二進制數(shù)“01”,雙向編碼為二進制數(shù)“10”。
s230,獲取當前塊的運動場。
若當前塊的預測方向是前向,則獲得的當前塊的運動場是前向運動場;
若當前塊的預測方向是后向,則獲得的當前塊的運動場是后向運動場;
若當前塊的預測方向是雙向,則獲得的當前塊的運動場是前向運動場和后向運動場。
當前塊的運動場利用已有的預測運動場的方式獲得,此處不再一一列舉。
s240,若當前塊的運動場存在前向運動場,則從當前塊對應的運動場的預測中提取出全部前向運動場,并剔除相同項,得到前向運動場的預測。
從當前塊對應的運動場的預測中提取出全部的前向運動場,并從全部的前向運動場中剔除相同項,最終得到的前向運動場的預測互不相同,即獲得的前向運動場的預測中的任意兩個運動場互不相同。
s250,為前向運動場的預測所包含的各個運動場創(chuàng)建索引。
例如,從n個運動場的預測中提取出全部的前向運動場并剔除相同項,得到m個前向運動場,編號依次為:mvfpf0、mvfpf1、……、mvfpfm-1。此處的編號0~m-1即運動場的索引。
為運動場創(chuàng)建索引的好處是后續(xù)可以只對索引進行編碼,與對運動場進行編碼相比,索引的數(shù)據(jù)量遠遠小于運動場的數(shù)據(jù)量,因此,能夠提高后續(xù)的索引進行編碼。
s260,比較前向運動場的預測中是否包含與當前塊的前向運動場相同的運動場;如果是,則執(zhí)行s270;否則,執(zhí)行s280。
判斷前向運動場的預測中的運動場是否與當前塊的前向運動場相同。運動場相同是指refidx(參考索引)和mv都相同。
s270,對與當前塊的前向運動場相同的運動場所對應的索引進行編碼。
如果存在與當前塊的前向運動場相同的前向運動場的預測,則對該鄰居塊的前向運動場對應的索引進行編碼。
例如,如果某一鄰居塊的前向運動場(mvfpfi)(即,當前塊的前向運動場的預測)與當前塊的前向運動場(mvffc)相同,即相同項對應的索引是i,則設ismvffeq=1;ismvffeq=1表示前向運動場的預測中存在與當前塊的前向運動場相同的目標前向運動場,可以利用目標前向運動場編碼表示當前塊的前向運動場編碼,因此,只需對相同項對應的索引進行編碼,大大降低了編碼數(shù)據(jù)量,提高了編碼效率。
此種應用場景下,先對ismvffeq進行編碼,然后,對索引i進行編碼,例如,ismvffeq=1可以是二進制數(shù)“1”來編碼;索引i的編碼可以是該索引所對應的二進制數(shù)。
例如,鄰居塊b0的前向運動場與當前塊的前向運動場相同,則用鄰居塊的前向運動場的編碼作為當前塊的運動場的編碼,不需要對當前塊的運動場進行編碼,只需要編碼鄰居塊的前向運動場在前向運動場的預測中的索引。
s280,對當前塊的前向運動場進行編碼。
如果當前塊的前向運動場的預測中不包含與當前塊的前向運動場相同的運動場,則需要對當前塊的前向運動場進行編碼。
此種應用場景下,設定ismvffeq=0,ismvffeq=0表示當前塊不存在前向運動場的預測;先對ismvffeq進行編碼,然后,利用已有方式對前向運動場進行編碼,即,先對參考索引進行編碼,再對mv殘差進行編碼。
s290,若當前塊的運動場存在后向運動場,則從運動場的預測中提取出全部后向運動場,并剔除相同項,得到當前塊的后向運動場的預測。
s2100,為后向運動場的預測所包含的各個運動場創(chuàng)建索引。
例如,從n個運動場的預測中提取出全部的后向運動場并剔除相同,得到t個后向運動場,這t個后向運動場中任意兩個運動場互不相同。
這t個后向運動場的編號依次為mvfpb1、mvfpb2、……、mvfpbt-1,此處的編碼0~t-1即運動場的索引。
s2110,比較后向運動場的預測中是否包含與當前塊的后向運動場相同的運動場;如果是,則執(zhí)行s2120;否則,執(zhí)行s2130。
判斷后向運動場的預測中的各個運動場是否與當前塊的后向運動場相同(refidx和mv都相同)。
s2120,對與當前塊的后向運動場相同的運動場所對應的索引進行編碼。
在本發(fā)明一種可能的實現(xiàn)方式中,如果某一鄰居塊的后向運動場(mvfpbj)與當前塊的后向運動場(mvfbc)相同,即相同項對應的索引是j,則設定ismvfbeq=1;ismvfbeq=1表示后向運動場的預測中存在與當前塊的后向運動場相同的項,因此,接下來只需對相同項對應的索引進行編碼,即利用該相同項的后向運動場編碼表征當前塊的后向運動場編碼。
此種應用場景下,先編碼ismvfbeq,然后,編碼索引j,例如,ismvffeq=1可以是二進制數(shù)“1”來編碼;索引i的編碼可以是該索引所對應的二進制數(shù)。
在本發(fā)明另一種可能的實現(xiàn)方式中,編碼與當前塊的后向運動場相同的運動場對應的索引時,可以采用如下方式:
如果ismvffeq=0,則按照第一種算術編碼方式編碼ismvfbeq和索引j;如果ismvffeq=1,則按照第二種算術編碼方式編碼ismvfbeq和索引j。
算術編碼器分為兩個模塊,分別是概率估計模塊和間隔劃分模塊;間隔劃分模塊根據(jù)概率對間隔進行劃分,生成實際的二進制碼流;概率估計模塊用于對符號進行概率估計。對于二進制編碼器而言,如果當前編碼符號是“1”,則概率估計模塊會在編碼階數(shù)后更新符號的概率估計,使“1”的概率增加,而“0”的概率減少,下一次編碼符號“1”時“1”的碼長會更短;如果當前符號是“0”,則概率估計模塊會在編碼結束后更新符號的概率估計,使“0”的概率增加而“1”的概率減少。本實施例根據(jù)ismvffeq是“1”還是“0”對ismvfbeq、索引j的編碼進行區(qū)分。根據(jù)統(tǒng)計數(shù)據(jù),當ismvffeq=1時,ismvfbeq也應該更加傾向于1,因此,根據(jù)ismvffeq的情況對ismvfbeq、索引j使用不同的內(nèi)容模型,例如,當ismvffeq=1時,對ismvfbeq的編碼使用ctx0,而ismvffeq=0時,對ismvfbeq的編碼使用ctx1。這樣在編碼過程中,隨著編碼的進行,統(tǒng)計上ctx0中ismvfbeq=1的概率應該大于ctx1中ismvfbeq=1的概率,這樣ismvfbeq的編碼效率就得到了提升。
s2130,對當前塊的后向運動場進行編碼。
如果后向運動場的預測中不包含與當前塊的后向運動場相同的運動場,則設定ismvfbeq=0,先對ismvfbeq進行編碼,然后,利用已有方式對前向運動場進行編碼,即,先對參考索引進行編碼,再對mv殘差進行編碼。
本實施例提供的基于運動場的視頻編碼方法,根據(jù)當前塊在時域和/或空域上的鄰居塊的前向運動場確定當前塊的前向運動場的預測,并將該前向運動場的預測確定為目標前向運動場;和/或,根據(jù)當前塊的鄰居塊的后向運動場確定當前塊的后向運動場的預測,并將該后向運動場的預測確定為目標后向運動場;因為目標前向運動場和目標后向運動場的編碼已知,所以只需要對與當前塊的前向運動場相同的目標前向運動場(或,與當前塊的后向運動場相同的目標后向運動場)所對應的索引進行編碼,不需要對當前塊的前向運動場(或,后向運動場)本身進行編碼,索引的數(shù)據(jù)量遠遠低于運動場的數(shù)據(jù)量,因此,該方法提高了視頻編碼效率。而且,當前塊的前向運動場和后向運動場可以分別獨立使用上述的視頻編碼過程,即,可以只針對前向運動場利用該方法進行編碼,或者,只針對后向運動向利用該方法進行編碼,提高了視頻編碼的靈活性。
對于前述的各方法實施例,為了簡單描述,故將其都表述為一系列的動作組合,但是本領域技術人員應該知悉,本發(fā)明并不受所描述的動作順序的限制,因為依據(jù)本發(fā)明,某些步驟可以采用其他順序或者同時進行。其次,本領域技術人員也應該知悉,說明書中所描述的實施例均屬于優(yōu)選實施例,所涉及的動作和模塊并不一定是本發(fā)明所必須的。
相應于上述的基于運動場的視頻編碼方法實施例,本發(fā)明還提供了基于運動場的視頻編碼裝置實施例。
請參見圖4,示出了本申請實施例一種基于運動場的視頻編碼裝置的框圖,該裝置用于對視頻幀的運動場進行編碼。如圖4所示,該裝置可以包括:運動場預測模塊110、第一查找模塊120、第一編碼模塊130、第二查找模塊140和第二編碼模塊150。
運動場預測模塊110,用于從當前塊的鄰居塊對應的運動場中獲得該當前塊對應的運動場的預測。
所述鄰居塊包括時域鄰居塊和空域鄰居塊中的至少一類,例如,可以只有時域鄰居塊,或者,只有空域鄰居塊,或者,既有時域鄰居塊又有空域鄰居塊。
如圖2所示的各個鄰居塊的運動場作為當前塊x的運動場的預測。運動場的預測包括前向運動場的預測和后向運動場的預測,運動場的預測用來預測當前塊的運動場。
第一查找模塊120,用于當所述當前塊存在前向運動場時,從所述當前塊對應的運動場的預測中查找與所述前向運動場相同的目標前向運動場。
如果當前塊的運動場中存在前向運動場,記為mvffc,則運動場預測模塊110獲得的當前塊的所有運動場的預測中提取出全部前向運動場的預測,并剔除相同的項。然后,從提取得到的所有前向運動場的預測中查找出與當前塊的前向運動場相同的運動場,稱為目標前向運動場。
在本申請的一個實施例中,如圖5所示,第一查找模塊120可以包括:第一獲取子模塊121、第一索引創(chuàng)建子模塊122、第一比較子模塊123和第一確定子模塊124。
第一獲取子模塊121,用于獲取所述當前塊的前向運動場。
第一索引創(chuàng)建子模塊122,用于從所述當前塊對應的運動場的預測所包含的所有所述前向運動場的預測中提取出互不重復的所述前向運動場的預測,并為各個互不重復所述前向運動場的預測創(chuàng)建索引。
例如,從n個運動場的預測中提取出全部的前向運動場并剔除相同項,得到m個前向運動場,而且,這m個前向運動場中任意兩個前向運動場互不相同。
然后,依次對m個前向運動場依次進行編號,例如,編號依次為:mvfpf0、mvfpf1、……、mvfpfm-1。此處的編號0~m-1即前向運動場的索引。
第一比較子模塊123,用于逐一比較所述各個互不重復的前向運動場的預測與所述前向運動場是否相同。
判斷前向運動場的預測中的運動場是否與當前塊的前向運動場相同。運動場相同是指refidx(參考索引)和mv都相同。
第一確定子模塊124,用于當存在與所述前向運動場相同的前向運動場的預測時,確定與所述前向運動場相同的前向運動場的預測為所述目標前向運動場,并確定所述目標前向運動場對應的索引。
利用該第一查找模塊獲取當前塊的前向運動場,以及,從當前塊的前向運動場的預測中查找與當前塊的前向運動場相同的前向運動場的預測,并確定該前向運動場的預測為當前塊的目標前向運動場,最后獲取該目標前向運動場的索引,以便下一步對目標前向運動場的索引進行編碼。
第一編碼模塊130,用于對所述目標前向運動場對應的索引進行編碼,獲得所述當前塊的前向運動場的編碼。
如果前向運動場的預測中存在與當前塊的前向運動場相同的運動場,則只需對該前向運動場的預測對應的索引進行編碼。
在本申請的一個實施例中,如圖6所示,第一編碼模塊130包括:第一編碼子模塊131、第二編碼子模塊132和第一編碼獲得子模塊133。
第一編碼子模塊131,用于對第一預設標記進行編碼,所述第一預設標記用于表征存在所述目標前向運動場。
例如,可以用ismvffeq=1表示前向運動場的預測中存在與當前塊的前向運動場相同的項。
第二編碼子模塊132,用于對所述目標前向運動場對應的索引進行編碼。
第一編碼獲得子模塊133,用于根據(jù)所述第一預設標記的編碼和所述目標前向運動場對應的索引的編碼,得到所述當前塊的前向運動場的編碼。
此種應用場景下,先對ismvffeq進行編碼,然后,對目標前向運動場對應的索引i進行編碼,例如,ismvffeq=1可以是二進制數(shù)“1”來編碼;索引i的編碼可以是該索引所對應的二進制數(shù)。
該第一編碼模塊只需對第一預設標記和目標前向運動場的索引進行編碼,與對當前塊的前向運動場進行編碼相比,大大減少了編碼數(shù)據(jù)量,提高了編碼效率。
第二查找模塊140,用于當所述當前塊存在后向運動場時,從所述當前塊對應的運動場的預測中查找與所述后向運動場相同的目標后向運動場。
從當前塊對應的運動場的預測中查找與當前塊的后向運動場相同的運動場時,確定該運動場的預測中的運動場為目標后向運動場。
在本申請的一個實施例中,如圖7所示,第二查找模塊140可以包括:第二獲取子模塊141、第二索引創(chuàng)建子模塊142、第二比較子模塊143和第二確定子模塊144。
第二獲取子模塊141,用于獲取當前塊的后向運動場。
第二索引創(chuàng)建子模塊142,用于從當前塊對應的運動場的預測所包含的后向運動場的預測中提取出互不重復的后向運動場的預測,并為各個互不重復的所述后向運動場的預測創(chuàng)建索引。
如果當前塊的運動場中存在后向運動場,則從當前塊對應的運動場的預測中提取出全部后向運動場,并剔除相同項,得到當前塊的后向運動場的預測。以及,為各個互不重復的后向運動場的預測創(chuàng)建索引。
例如,從n個運動場的預測中提取出全部的后向運動場并剔除相同,得到t個后向運動場,編號依次為mvfpb1、mvfpb2、……、mvfpbt-1。此處的編碼0~t-1即運動場的索引。
第二比較子模塊143,用于逐一比較各個互不重復的后向運動場的預測與后向運動場是否相同。
第二確定子模塊144,用于當存在與后向運動場信息相同的后向運動場的預測時,確定與后向運動場相同的后向運動場的預測為目標后向運動場,并確定目標后向運動場對應的索引。
該第二查找模塊與第一查找模塊的功能相似,不同之處在于,第二查找模塊用于查找與當前塊的后向運動場相同的后向運動場的預測,即目標后向運動場,并獲取該目標后向運動場的索引,以便下一步對該目標后向運動場的索引進行編碼。
第二編碼模塊150,用于對所述目標后向運動場對應的索引進行編碼,獲得所述當前塊的后向運動場的編碼。
如果存在目標后向運動場,則只需對該目標后向運動場的索引進行編碼。
在本申請的一個實施例中,如圖8所示,第二編碼模塊150包括:第三編碼子模塊151、第四編碼子模塊152和第二編碼獲得子模塊153。
第三編碼子模塊151,用于對用于表征存在所述目標后向運動場的第二預設標記進行編碼。
第四編碼子模塊152,用于對所述目標后向運動場對應的索引進行編碼。
第二編碼獲得子模塊153,用于根據(jù)所述第二預設標記的編碼,以及,所述目標后向運動場對應的索引的編碼,得到當前塊的后向運動場的編碼。
例如,如果某一鄰居塊的后向運動場(mvfpbj)與當前塊的后向運動場(mvfbc)相同,即相同項對應的索引是j,則設定ismvfbeq=1;ismvfbeq=1表示后向運動場的預測中存在與當前塊的后向運動場相同的目標后向運動場,因此,可以利用該目標后向運動場的編碼表示當前塊的后向運動場編碼,因此該第二編碼模塊只需對相同項對應的索引進行編碼。
本實施例提供的基于運動場的視頻編碼方法,根據(jù)當前塊在時域和/或空域上的鄰居塊的前向運動場確定當前塊的前向運動場的預測,并將該前向運動場的預測確定為目標前向運動場;和/或,根據(jù)當前塊的鄰居塊的后向運動場確定當前塊的后向運動場的預測,并將該后向運動場的預測確定為目標后向運動場;因為目標前向運動場和目標后向運動場的編碼已知,所以只需要對目標前向運動場(或目標后向運動場)的索引進行編碼,而不需要對當前塊的前向運動場或后向運動場進行編碼,因此,提高了編碼效率。而且,當前塊的前向運動場和后向運動場可以分別獨立使用上述的視頻編碼過程,即,可以只針對前向運動場利用該方法進行編碼,或者,只針對后向運動向利用該方法進行編碼,提高了靈活性。
需要說明的是,本說明書中的各個實施例均采用遞進的方式描述,每個實施例重點說明的都是與其他實施例的不同之處,各個實施例之間相同相似的部分互相參見即可。對于裝置類實施例而言,由于其與方法實施例基本相似,所以描述的比較簡單,相關之處參見方法實施例的部分說明即可。
最后,還需要說明的是,在本文中,諸如第一和第二等之類的關系術語僅僅用來將一個實體或者操作與另一個實體或操作區(qū)分開來,而不一定要求或者暗示這些實體或操作之間存在任何這種實際的關系或者順序。而且,術語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者設備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者設備所固有的要素。在沒有更多限制的情況下,由語句“包括一個……”限定的要素,并不排除在包括所述要素的過程、方法、物品或者設備中還存在另外的相同要素。
對所公開的實施例的上述說明,使本領域技術人員能夠?qū)崿F(xiàn)或使用本發(fā)明。對這些實施例的多種修改對本領域技術人員來說將是顯而易見的,本文中所定義的一般原理可以在不脫離本發(fā)明的精神或范圍的情況下,在其它實施例中實現(xiàn)。因此,本發(fā)明將不會被限制于本文所示的這些實施例,而是要符合與本文所公開的原理和新穎特點相一致的最寬的范圍。
以上所述僅是本發(fā)明的優(yōu)選實施方式,應當指出,對于本技術領域的普通技術人員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進和潤飾,這些改進和潤飾也應視為本發(fā)明的保護范圍。