具体实施方式
本原理致力于用于视频编码和解码的模版匹配预测的自适应残差更新的方法和装置。
本说明书图示了本原理。因此,将要认识,本领域的技术人员将能够设想出尽管在此未明显地描述或示出、但体现本原理并且被包含在其精神和范围之内的各种布置。
在此叙述的所有示例和条件性语言是教学性的目的,旨在辅助读者理解由(多个)发明人为推动技术进步而贡献的本原理和构思,并且应当被理解为不局限于这样具体叙述的示例和条件
此外,本文叙述本原理的原理、方面和实施例、以及其特定示例的所有语句旨在涵盖其结构和功能两者的等效物。另外,这样的等效物旨在包括当前已知的等效物、以及将来开发的等效物两者,即,与结构无关,开发出来执行相同功能的任何元件。
因此,例如,本领域技术人员将认识,本文呈现的方框图代表体现本原理的例示性电路的概念图。类似地,将认识,任何流程图、流向图、状态转移图、伪码等代表实质上可以表示在计算机可读介质中并因此可被计算机或处理器执行的各种处理,无论这样的计算机或处理器是否显式示出。
在图中示出的各种元件的功能可以通过使用专用硬件以及能够与适当软件相关联地执行软件的硬件来提供。当由处理器提供时,这些功能可以由单个专用处理器,单个共享处理器,或其中一些可以共享的多个单独处理器提供。此外,术语“处理器”或“控制器”的显式使用不应该理解为唯一地指代能够执行软件的硬件,也可以不受限制地隐式包括数字信号处理器(“DSP”)硬件、存储软件的只读存储器(“ROM”)、随机存取存储器(“RAM”)、和非易失性存储设备。
也可以包括常规的和/或定制的其他硬件。类似地,在图中示出的任何开关都只是概念性的。它们的功能可以通过程序逻辑运算,通过专用逻辑,通过程序控制和专用逻辑的交互,或甚至人工实现,正如从上下文中更具体理解到的那样,具体技术可由实现者选择。
在本文的权利要求书中,表达成执行指定功能的部件的任何元件旨在包含执行那种功能的任何方式,例如,包括a)执行那种功能的电路元件的组合,或b)任何形式的软件,因此,包括固件、微代码等,与执行那种软件的适当电路组合来执行那种功能。如这样的权利要求书定义的本原理基于各种所述部件提供的功能被以权利要求书要求的方式组合和聚集在一起的事实。因此,认为可以提供那些功能的任何部件都等效于本文所示的那些部件。
在说明书中提到本原理的“一个实施例”或“实施例”,以及其其他变型,意味着结合该实施例所描述的具体特征、结构、特性等被包括在本原理的至少一个实施例中。因此,出现在整个说明书的各个地方的短语“在一个实施例中”或“在实施例中”,以及任何其他变型的出现未必都指代相同实施例。此外,要认识,本文相互交换地使用措辞实施例和实现方式。
将要认识,如下“/”、“和/或”、和“至少一个”的任何一种的使用,例如,在“A/B”、“A和/或B”、和“A和B的至少一个”的情况下,旨在包含只选择第一列出选项(A),或只选择第二列出选项(B),或选择两个选项(A和B)。作为进一步的示例,在“A、B和/或C”和“A、B和C的至少一个”的情况下,这样的措词旨在包含只选择第一列出选项(A),或只选择第二列出选项(B),或只选择第三列出选项(C),或只选择第一和第二列出选项(A和B),或只选择第一和第三列出选项(A和C),或只选择第二和第三列出选项(B和C),或选择所有三个选项(A、B和C)。本领域及相关领域的普通技术人员容易明白,这可以推广到许多列出项。
此外,如本文中所使用的,词语“画面”和“图像”相互交换地使用并且指代静止图像或者来自视频序列的画面。如所知的,画面可以是一帧或一场。
此外,如本文所使用的,词语“发信号”指代向对应的解码器指示什么。例如,编码器可以用信号发送一个或者多个残差更新方案,以使得解码器注意到在编码器侧使用哪个特定残差更新方案。以此方式,可以在编码器侧和解码器侧二者使用相同的残差更新方案。因此,例如,编码器可以将特定的一个或者多个残差更新方案传送到解码器,使得解码器可以使用相同的特定残差更新方案,或者,如果解码器已经具有特定的一个或者多个残差更新方案以及其他,那么可以使用信令(而不用传送),以简单地允许解码器知道并且从残差更新方案的较大分组中选择特定的一个或者多个残差更新方案。通过避免传送任何实际的残差更新方案,可以实现比特节省。要认识到,可以以多种方式完成信令。例如,可以使用一个或者多个语法元素、标志等等来将信息用信号发送到对应的解码器,
另外,如在本文中使用的,词语“基本块”指代在编码器和解码器中应用预定义变换的块。
为了例示和描述的目的,通过使用MPEG-4AVC标准作为描述的基准并且解释超出MPEG-4AVC标准的改进和扩展,本文在改进MPEG-4AVC标准的上下文中描述示例。然而,要认识本原理不单独限于MPEG-4AVC标准和/或其扩展。给出本文提供的本原理的教导,本领域和相关领域的普通技术人员将容易理解,当将其应用至其他标准的扩展或者当将其应用和/或并入尚未开发的标准内时,本原理是等同地可应用的并且将提供至少类似的益处。要进一步认识到,本原理还应用至不符合标准而是符合专用定义的视频编码器和视频解码器。
转到图5,可以应用本原理的示例性视频编码器总体地用附图标号500指示。视频编码器500包括帧排序缓冲器510,其具有与组合器585的非反向输入端进行信号通信的输出端。组合器585的输出端与变换器和量化器525的第一输入端进行信号通信连接。变换器和量化器525的输出端与熵编码器545的第一输入端以及逆变换器和逆量化器550的第一输入端进行信号通信连接。熵编码器545的输出端与组合器590的第一非反向输入端进行信号通信连接。组合器590的输出端与输出缓冲器535的第一输入端进行信号通信连接。
编码器控制器505的第一输出端与帧排序缓冲器510的第二输入端、逆变换器和逆量化器550的第二输入端、画面类型判定模块515的输入端、宏块类型(MB类型)判定模块520的第一输入端、帧内预测模块560的第二输入端、去块滤波器565的第二输入端、运动补偿器570的第一输入端、运动估计器575的第一输入端以及参考画面缓冲器580的第二输入端进行信号通信连接。
编码器控制器505的第二输出端与补充增强信息(SEI)插入器530的第一输入端、变换器和量化器525的第二输入端、熵编码器545的第二输入端、输出缓冲器535的第二输入端以及序列参数集(SPS)和画面参数集(PPS)插入器540的输入端进行信号通信连接。
SEI插入器530的输出端与组合器590的第二非反向输入端进行信号通信连接。
画面类型判定模块515的第一输出端与帧排序缓冲器510的第三输入端进行信号通信连接。画面类型判定模块515的第二输出端与宏块类型判定模块520的第二输入端进行信号通信连接。
序列参数集(SPS)和画面参数集(PPS)插入器540的输出端与组合器590的第三非反向输入端进行信号通信连接。
逆量化器和逆变换器550的输出端与组合器519的第一非反向输入端进行信号通信连接。组合器519的输出端与帧内预测模块560的第一输入端和去块滤波器565的第一输入端进行信号通信连接。去块滤波器565的输出端与参考画面缓冲器580的第一输入端进行信号通信连接。参考画面缓冲器580的输出端与运动估计器575的第二输入端和运动补偿器570的第三输入端进行信号通信连接。运动估计器575的第一输出端与运动补偿器570的第二输入端进行信号通信连接。运动估计器575的第二输出端与熵编码器545的第三输入端进行信号通信连接。
运动补偿器570的输出端与开关597的第一输入端进行信号通信连接。帧内预测模块560的输出端与开关597的第二输入端进行信号通信连接。宏块类型判定模块520的输出端与开关597的第三输入端进行信号通信连接。开关597的第三输入端确定开关的“数据”输入端(与控制输入端相比较,即,第三输入端)是由运动补偿器570还是由帧内预测模块560提供。开关597的输出端与组合器519的第二非反向输入端和组合器585的反向输入端进行信号通信连接。
帧排序缓冲器510的第一输入端和编码器控制器505的输入端可用作编码器500的用于接收输入画面的输入端。此外,补充增强信息(SEI)插入器530的第二输入端可用作编码器500的用于接收元数据的输入端。输出缓冲器535的输出端可用作编码器500的用于输出位流的输出端。
转到图6,可以应用本原理的示例性视频解码器总体地用附图标号600表示。视频解码器600包括输入缓冲器610,其具有与熵解码器645的第一输入端进行信号通信连接的输出端。熵解码器645的第一输出端与逆变换器和逆量化器650的第一输入端进行信号通信连接。逆变换器和逆量化器650的输出端与组合器625的第二非反向输入端进行信号通信连接。组合器625的输出端与去块滤波器665的第二输入端和帧内预测模块660的第一输入端进行信号通信连接。去块滤波器665的第二输出端与参考画面缓冲器680的第一输入端进行信号通信连接。参考画面缓冲器680的输出端与运动补偿器670的第二输入端进行信号通信连接。
熵解码器645的第二输出端与运动补偿器670的第三输入端、去块滤波器665的第一输入端以及帧内预测器660的第三输入端进行信号通信连接。熵解码器645的第三输出端与解码器控制器605的输入端进行信号通信连接。解码器控制器605的第一输出端与熵解码器645的第二输入端进行信号通信连接。解码器控制器605的第二输出端与逆变换器和逆量化器650的第二输入端进行信号通信连接。解码器控制器605的第三输出端与去块滤波器665的第三输入端进行信号通信连接。解码器控制器605的第四输出端与帧内预测模块660的第二输入端、运动补偿器670的第一输入端和参考画面缓冲器680的第二输入端进行信号通信连接。
运动补偿器670的输出端与开关697的第一输入端进行信号通信连接。帧内预测模块660的输出端与开关697的第二输入端进行信号通信连接。开关697的输出端与组合器625的第一非反向输入端进行信号通信连接。
输入缓冲器610的输入端可用作解码器600的用于接收输入位流的输入端。去块滤波器665的第一输出端可用作解码器600的用于输出输出画面的输出端。
如上所述,本原理致力于用于视频编码和解码的模版匹配预测的自适应残差更新的方法和装置。在一个实施例中,更新较小块级上的残差,这又可以通过牺牲大变换和伴随量化的效率而提供更好的预测。在改进编码性能的同时提供残差更新方案的优点的另一个实施例中,还提出用以选择某一编码块的最佳方案的自适应切换方法。具体地,提出在要编码的当前块的模版匹配的不同残差更新方案中选择。切换状态的不确定性可以在作为结果的位流中显式地传送或者例如从解码画面信息中隐式地推导。该自适应切换方案的目的是通过利用不同残差更新方法在模版匹配的预测和变换之间找到最佳折衷,并由此改进编码效率。提出的技术可以应用于帧内和帧间预测二者。
由此,根据本原理,公开和描述了被称为“方法2”的方法,其中利用较小的变换大小,由此改进预测数据。四个目标块的预测处理涉及以下步骤:
(1)通过使用邻近像素生成目标块(在基本块内和/或另外与基本块对应)的模版;
(2)为这个目标块搜索匹配并且生成预测;
(3)利用其预测更新该目标块;
(4)变换目标块的残差以获得变换系数,量化该系数以及逆变换量化后的系数;
(5)通过添加预测目标块和量化的残差目标块生成重构目标块;
(6)利用其重构更新目标块;
(7)为目标块2、3和4重复步骤(1)到(6);
(8)完成基本块。
一旦变换是基于较小块时,就可以较早地重构邻近的子块。由此,稍后的预测目标块可以替代使用预测数据而使用重构的像素作为模版,这将改进预测性能。
自适应残差更新
在第一残差更新方案中,在变换时使用更有效的方案(例如,使用较大变换)但是预测可能更差,而第二残差更新方案可能(比第一方案)具有更好的预测,但是伴随使用大变换可能牺牲效率。根据本原理,将这两个方案组合为自适应残差更新框架,以通过利用两个方法的优点来实现预测精确性和变换和量化的效率之间的良好折衷用于改进编码效率。
不同的目标大小和不同的可用变换大小可能导致不同的残差更新方案。根据本原理的最优残差更新方案将能够利用它们的所有优点并且自适应地避开它们的缺点。
根据本原理,建立以统一残差更新方案的一框架。在这个框架中,可能存在模版匹配的很多不同残差更新方案。这些方案中的不确定性可以在作为结果的位流中显式地发送或者例如基于已经编码的画面隐式地推导。为了说明和简要的缘故,假定具有用以选择的可用的两个残差更新方案,但注意,本领域和相关领域的普通技术人员可以容易地扩展本原理以包含多于两个的残差更新方案。
实施例1:显式切换方法
当存在两个或者更多的如上描述的残差更新方案时,需要解决这样的方案之间的不确定性。在本实施例中,提出通过例如使用用以指示选取哪个方案的标志或者指示符的显式切换方法。在编码器侧,可以评估所有的残差更新方案并且在考虑例如率失真(RD)成本的情况下选择最佳残差更新方案,并且然后发送标志或者指示符到对应的解码器。在解码器侧,通过从位流读取标志或者指示符来解决不确定性,并且当解码时应用对应的方案。
转到图7,由参考标号700总体地指示视频编码器中用于模版匹配预测的自适应残差更新的示例性方法。方法700包括将控制传递到功能块710的开始块705。功能块710通过设置min_rdcost=max_value,best_scheme=default_value,k=0来执行模版匹配预测的初始化,并且将控制传递到循环限制块715。循环限制块715开始在块的所有残差更新方案上的循环,并且将控制传递到循环限制块720。循环限制块720开始在所有子块上的循环,并且将控制传递到功能块725。功能块725生成模板,并且将控制传递到功能块730。功能块730执行模版匹配,并且将控制传递到功能块735。功能块735利用预测更新目标块,并且将控制传递到功能块740。功能块740根据当前方案判定是否在当前目标块上进行变换、量化和重构(更新残差),并且将控制传递到循环限制块745。循环限制块745结束在所有子块上的循环,并且将控制传递到功能块750。功能块750根据当前方案判定是否在当前块上进行变换、量化和重构(更新残差)并且将控制传递到功能块755。功能块755计算与功能块750获得的判定对应的率失真(RD)成本,并且将控制传递到判定块760。判定块760确定是否rdcost>=min_rdcost。如果这样,则将控制传递到循环限制块768。否则,将控制传递到功能块765。功能块765设置min_rdcost=rdcost,以及best_scheme=k,并且将控制传递到功能块768。功能块768设置k=k+1,并且将控制传递到循环限制块770。循环限制块770结束在所有残差更新方案上的循环,并且将控制传递到功能块775。功能块775选择best_scheme的预测作为模版匹配预测的输出,利用best_scheme设置tmp_res_upd_ind,并且将控制传递到功能块780。功能块780编码所有语法(包括tmp_res_upd_ind)以及涉及的系数信息,并且将控制传递到结束块799。
转达图8,由参考标号800总体地指示视频解码器中模版匹配预测的自适应残差更新的示例性方法。方法800包括将控制传递到功能块810的开始块805。功能块810解析输入位流,利用tmp_res_upd_ind设置best_scheme,并且将控制传递到循环限制块815。循环限制块815开始在所有子块上的循环,并且将控制传递到功能块820。功能块820生成模版,并且将控制传递到功能块825。功能块825执行模版匹配,并且将控制传递到功能块830。功能块830利用预测更新目标块,并且将控制传递到功能块835。功能块835根据best_scheme判定是否重构当前目标块(更新残差),并且将控制传递到循环限制块840。循环限制块840结束在所有子块上的循环,并且将控制传递到功能块845。功能块845根据best_scheme判定是否重构当前块(更新残差),并且将控制传递到结束899。
实施例2:隐式切换方法
显式切换方法可以通过为附加边信息付出成本而总是在编码器选择最佳方案,这可能降低编码性能。如上所述,为了避免必须传送附加边信息,可以隐式地推导不同方案之间的不确定性。可以利用分区信息、邻近块编码信息(例如,变换大小、系数、模式,等等)、局部画面内容统计(例如,平均值、方差,等等),等等。该隐式切换方法可以避免显式切换方法中的附加开销,并且由此可以在缓慢变化内容的情形下利于使用。下面关于图9描述在视频编码器中涉及本实施例的方法,并且下面关于图10描述在视频解码器涉及本实施例的方法。
实施例3:依赖量化参数的切换方法
残差更新到特定子块越快,以下子块(关于特定子块)将能够获得更好的预测的可能性越大。此外,整个块的预测将更好。当利用大量化参数(QP)值编码块时,优选具有更好的可用的预测以进行使用,这是因为在这种情况下残差仅仅提供少量信息。另一方面,当利用相对小的量化参数值编码块时,残差是很重要的并且可以补偿相当量的预测误差。因此,在考虑之前的情况下,提供依赖量化参数的切换方法。例如,考虑仅仅引入之前描述的两个方案,当量化参数值大时,可以使用方法2以获得更好的预测。否则,使用方法1以保持使用大变换的优点。
下面的图9和10属于本文描述的实施例2和3二者。
转到图9,由参考标号900总体地指示视频编码器中模版匹配预测的自适应残差更新的另一示例性方法。方法900包括将控制传递到功能块910的开始块905。功能块910通过量化参数(QP)、分区信息、邻近块信息、解码的内容统计等等来推导best_scheme,并且将控制传递到循环限制块915。循环限制块915在所有子块上循环,并且将控制传递到功能块920。功能块920生成模版,并且将控制传递到功能块925。功能块925执行模版匹配,并且将控制传递到功能块930。功能块930利用预测更新目标块,并且将控制传递到功能块935。功能块935根据best_scheme判定是否在当前目标块上进行变换、量化和重构(更新残差),并且将控制传递到循环限制块940。循环限制块940结束在所有子块上的循环,并且将控制传递到功能块945。功能块945根据当前方案判定是否在当前块上进行变换、量化和重构(更新残差),并且将控制传递到功能块950。功能块950编码所有语法和涉及的系数信息,并且将控制传递到结束块999。
转到图10,由参考标号1000总体地指示视频解码器中模版匹配预测的自适应残差更新的另一示例性方法。方法1000包括将控制传递到功能块1010的开始块1005。功能块1010解析输入位流,并且将控制传递到功能块1015。功能块1015通过量化参数(QP)、分区信息、邻近块信息、解码的内容统计等等来推导best_scheme,并且将控制传递到循环限制块1020。循环限制块1020开始在所有子块上循环,并且将控制传递到功能块1025。功能块1025生成模版,并且将控制传递到功能块1030。功能块1030执行模版匹配,并且将控制传递到功能块1035。功能块1035利用预测更新目标块,并且将控制传递到功能块1040。功能块1040根据best_scheme判定是否重构当前目标块(更新残差),并且将控制传递到循环限制块1045。循环限制块1045结束在所有子块上的循环,并且将控制传递到功能块1050。功能块1050根据best_scheme判定是否重构当前块(更新残差),并且将控制传递到结束块1099。
语法
表1示出根据本原理实施例的实施例1、2和3的示例性片首标语法。
表1
slice_header(){ |
描述符 |
… |
|
use_tmp_res_upd_flag |
u(1) |
if(use_tmp_res_upd_flag==1){ |
|
use_exp_tmp_res_upd_flag |
u(1) |
if(use_exp_tmp_res_upd_flag==0){ |
|
use_qp_tmp_res_upd_flag |
u(1) |
} |
|
} |
|
… |
|
} |
|
marco_block_header(){ |
|
… |
|
if(use_exp_tmp_res_upd_flag==1){ |
|
tmp_res_upd_ind |
u(v) |
} |
|
… |
|
} |
|
表1的某些语法元素的语义如下:
use_tmp_res_upd_flag等于1规定在模版匹配中使用多个残差更新方案;use_tmp_res_upd_flag等于0规定仅仅使用一个残差更新方案。
use_exp_tmp_res_upd_flag等于1规定使用显式切换方法;use_exp_tmp_res_upd_flag等于0规定使用隐式切换方法。
use_qp_tmp_res_upd_flag等于1规定使用依赖量化参数的切换方法;use_qp_tmp_res_upd_flag等于0规定不使用依赖量化参数的切换方法。
tmp_res_upd_ind指示当前块使用的对应残差更新方案。
实施例4:多层残差更新方法
在本实施例中,提出新颖的多层残差更新方法。具体地,在假定仅仅存在在本文中提出的两个方法的情况下,基本块将被编码两次。由此,要认识到在其他实施例中,涉及多于两个的残差更新方法,可以编码基本块超过两次。
但是,在涉及编码基本块两次的前述示例中,首先利用相对高的量化参数值由方法2编码块。然后,可以获得基本块的重构版本。第五步骤中,利用相对低的量化参数值由方法1编码块。然而,在第五步骤中,可以基于从第一步骤输出的重构块来生成模版。最后,在作为结果的位流中传送来自两个步骤的残差。在解码器侧,执行类似的步骤。在一个实现方式中,实施例4涉及以下步骤:
(1)设置相对高的量化参数值;
(2)使用小的变换尺寸利用方法2编码整个基本块;
(3)基于方法2获得重构的基本块
(4)设置相对较低的量化参数;
(5)使用大变换基于方法1编码基本块,其中,模版生成可以是基于从步骤(3)获得的重构的基本块;
(6)传送来自步骤(2)和(5)的残差系数;
(7)结束块。
在以下的图11和12中参考步骤(2)、步骤(3)和步骤(5)属于与实施例4有关的紧接前面列出的步骤。
转到图11,由参考标号1100总体地指示视频编码器中模版匹配预测的自适应残差更新的又一示例性方法。方法1100包括将控制传递到功能块1110的开始块1105。功能块1110通过两个残差更新方案的默认量化参数值(即QP1和QP2)执行模版匹配预测的初始化,并且将控制传递到循环限制块1115。循环限制块1115开始在所有子块上循环,并且将控制传递到功能块1120。功能块1120生成模版,并且将控制传递到功能块1125。功能块1125执行模版匹配,并且将控制传递到功能块1130。功能块1130利用预测更新目标块,并且将控制传递到功能块1135。功能块1135利用QP1对当前目标块进行变换、量化和重构(更新残差),并且将控制传递到循环限制块1140。循环限制块1140结束在所有子块上的循环,并且将控制传递到功能块1145。功能块1145存储步骤(2)的系数,并且将控制传递到循环限制块1150。循环限制块1150开始在所有子块上循环,并且将控制传递到功能块1155。功能块1155基于解码画面或者来自步骤(3)的重构块生成模版,并且将控制传递到功能块1160。功能块1160执行模版匹配,并且将控制传递到功能块1165。功能块1165利用预测更新目标块,并且将控制传递到循环限制块1170。循环限制块1170结束在所有子块上的循环,并且将控制传递到功能块1175。功能块1175利用QP2进行当前块的变换、量化和重构(更新残差),并且将控制传递到功能块1180。功能块1180存储步骤(5)的系数,并且将控制传递到功能块1185。功能块1185编码所有语法、步骤(2)和(5)的系数,等等,并且将控制传递到结束块1199。
转到图12,由参考标号1200总体地指示视频解码器中模版匹配预测的自适应残差更新的又一示例性方法。方法1200包括将控制传递到功能块1210的开始块1205。功能块1210解析输入位流,并且将控制传递到循环限制块1215。循环限制块1215开始在所有子块上循环,并且将控制传递到功能块1220。功能块1220生成模版,并且将控制传递到功能块1225。功能块1225执行模版匹配,并且将控制传递到功能块1230。功能块1230利用预测更新目标块,并且将控制传递到功能块1235。功能块1235利用步骤(2)系数对当前目标块进行重构(更新残差),并且将控制传递到循环限制块1240。循环限制块1240结束在所有子块上的循环,并且将控制传递到功能块1245。功能块1245开始在所有子块上循环,并且将控制传递到功能块1250。功能块1250基于解码画面或者来自步骤(3)的重构块生成模版,并且将控制传递到功能块1255。功能块1255执行模版匹配,并且将控制传递到功能块1260。功能块1260利用预测更新目标块,并且将控制传递到循环限制块1265。循环限制块1265结束所有子块上的循环,并且将控制传递到功能块1270。功能块1270利用步骤(5)系数对当前块进行重构(更新残差),并且将控制传递到结束块1299。
语法
表2示出根据本原理实施例的实施例4的示例性片首标语法。
表2
slice_header(){ |
描述符 |
… |
|
use_tmp_res_upd_flag |
u(1) |
… |
|
} |
|
marco_block_header(){ |
|
… |
|
if(use_tmp_res_upd_flag==1){ |
|
use_multi_layer_tmp_res_upd_flag |
u(1) |
} |
|
… |
|
} |
|
表2的一些语法元素的语义如下:
use_tmp_res_upd_flag等于1规定在模版匹配中使用多个残差更新方案,use_tmp_res_upd等于0规定仅仅使用一个残差更新方案。
use_multi_layer_tmp_res_upd_flag等于1规定使用多层残差更新方法;use_multi_layer_tmp_res_upd_flag等于0规定不使用多层残差更新方法。
实施例5:多个组合残差更新方法
在该实施例中,提出新颖的多个组合残差更新方法。具体地,在假定仅仅存在在此呈现的两个残差更新方法的情况下,将基本块编码两次。由此,要认识到在涉及多于两个残差更新方法的其他实施例中,可以编码基本块超过两次。
但是,在涉及编码基本块两次的前述示例中,首先由方法2编码块。然后获得基本块的重构版本。然后由方法1编码块。最后,组合重构的块以形成最终重构块。将在作为结果的位流中传送两个方法的残差。在解码器侧,执行类似的步骤。
转到图13,由参考标号1300总体地指示视频编码器中模版匹配预测的自适应残差更新的又一示例性方法。方法1300包括将控制传递到功能块1310和功能块1315的开始块1305。功能块1310和1315通过分别使用两个独立的残差更新方案(即,方法1和方法2)进行模版匹配和编码以获得当前块的两个重构版本。然后,功能块1310和1315将控制传递到功能块1320。功能块1320将从功能块1310和1315获得的两个重构版本组合,以形成当前块的最终重构块,并将控制传递到功能块1325。功能块1325编码所有语法和来自两个方法的残差,并且将控制传递到结束块1330。
转到图14,由参考标号1400总体地指示视频解码器中模版匹配预测的自适应残差更新的又一示例性方法。该方法1400包括将控制传递到功能块1410的开始块1405。功能块1410解析位流,并且将控制传递到功能块1415和功能块1420。功能块1415和1420通过分别使用两个独立的方法(即,方法1和方法2)进行模版匹配预测和解码以获得当前块的两个重构版本。功能块1415和1420将控制传递到功能块1425。功能块1425将从功能块1415和1420获得的重构块组合以形成当前块的最终重构块,并且将控制传递到结束块1430。
语法
表3示出根据本原理实施例的实施例5的示例性片首标语法。
表3
slice_header(){ |
描述符 |
… |
|
use_tmp_res_upd_flag |
u(1) |
… |
|
} |
|
macro_block_header(){ |
|
… |
|
if(use_tmp_res_upd_flag==1){ |
|
use_comb_multi_tmp_res_upd_flag |
u(1) |
} |
|
… |
|
} |
|
表3的一些语法元素的语义如下:
use_tmp_res_upd_flag等于1规定在模版匹配中使用多个残差更新方案,use_tmp_res_upd_flag等于0规定仅仅使用一个残差更新方案。
use_comb_multi_tmp_res_upd_flag等于1规定使用多个组合的残差更新方法;use_comb_multi_tmp_res_upd_flag等于0规定不使用多个组合的残差更新方法。
现在描述将给出本发明的很多伴随优点/特征中的一些,其中一些上面已经提及。例如,一个优点/特征是具有使用模版匹配预测编码画面的至少一个块的画面数据的视频编码器的装置,其中,模版匹配预测涉及从多个残差更新方案中选择用于编码该块。
另一优点/特征是具有如上所描述的编码器的装置,其中,多个残差更新方案至少之一是基于率失真成本选择的。
再另一优点/特征是具有如上所描述的视频编码器的装置,其中,多个残差更新方案的每个涉及将该块分区为多个子块,多个残差更新方案之一涉及在搜索来自多个子块中的特定子块的预测之后并且在完成关于模版匹配预测的块的处理之前,将变换应用至该特定子块的残差,以及多个更新方案的另一个涉及在搜索来自多个子块中的特定子块的预测之后并且在完成关于模版匹配预测的块的处理之后,将变换应用至该特定子块的残差。
又一优点/特征是具有如上所描述的编码器的装置,其中,在作为结果的位流中显式地指示多个残差更新方案。
此外,另一优点/特征是具有如上所描述的编码器的装置,其中,基于以下中的至少一项来选择多个残差更新方案的至少一个:与画面相同视频序列对应的解码画面、至少一个块的量化参数值、该块内的至少一个子块、以及关于该块或者至少一个子块的至少一个邻近块、画面内容统计、分区信息以及至少一个邻近块的编码信息。
另外,另一优点/特征是具有如上所描述的视频编码器的装置,多个残差更新方案中的两个或者更多是可组合的以便预测该块。
此外,另一优点/特征是具有如上所描述的其中多个残差更新方案中的两个或者更多是可组合的以便预测该块的视频编码器的装置,其中,多个残差更新方案的每个是彼此独立的,并且块的最终预测是多个残差更新方案中的至少两个残差更新方案的输出的组合。
此外,另一优点/特征是具有如上所描述的其中多个残差更新方案中的两个或者更多是可组合的以便预测该块的视频编码器的装置,其中,多个残差更新方案彼此依赖,并且多个残差更新方案的一个特定残差更新方案的一个输出依赖于多个残差更新方案的至少另一个特定残差更新方案的至少另一个输出。
另外,另一优点/特征是具有使用模版匹配预测编码画面中的块的视频编码器的装置,其中,模版匹配预测涉及将该块分区为多个子块,以及在搜索来自多个子块中的特定子块的预测之后并且在完成关于模版匹配预测的块处理之前将变换应用到该特定子块的残差。
相关领域的普通技术人员可以根据本文的教导容易地弄清本原理的这些和其他特征和优点。将要理解,本原理的教导可以以硬件、软件、固件、专用处理器或它们的组合的各种形式实现。
更优选的是,将本原理的教导实现成硬件和软件的组合。此外,软件可以实现成有形地具体化在程序存储单元上的应用程序。应用程序可以上载到包含任何适当架构的机器,并由该机器执行。优选的是,机器是在具有诸如一个或多个中央处理单元(“CPU”)、随机存取存储器(“RAM”)、和输入/输出(“I/O”)接口之类的硬件的计算机平台上实现的。计算机平台还可以包括操作系统和微指令代码。本文所描述的各种处理和功能可以是可由CPU执行的微指令代码的一部分或应用程序的一部分,或其任何组合。另外,诸如附加数据存储单元和打印单元之类的各种外围单元可以与计算机平台连接。
将要进一步理解,由于描绘在附图中的组成系统组件和方法的一些优选用软件实现,因此,取决于编程本原理的方式,系统组件或处理功能块之间的实际连接可能不同。在本文的教导下,相关领域的普通技术人员将能够设想出本原理的这些和类似实现方式或配置。
尽管本文已经参考附图描述了例示性实施例,但是将要理解,本原理不限于那些精确的实施例,并且在不背离本原理的范围或精神的情况下,相关领域的普通技术人员可以在其中做出各种变化和修改。所有这种变化和修改意欲被包含在如所附权利要求中阐述的本原理的范围之内。