视频编码和解码中用于变换选择的方法和装置的制作方法

文档序号:7738488阅读:122来源:国知局
专利名称:视频编码和解码中用于变换选择的方法和装置的制作方法
技术领域
本原理一般涉及视频编码和解码,且更具体地涉及选择待用于视频编码和解码的变换的方法和装置。
背景技术
基于块的离散变换是包括下列的许多图像和视频压缩标准和推荐的基本组成部分联合图像专家组(JPEG)标准,国际电信联盟电信部门(ITU-T)H. 263推荐标准(下文是“H. 263推荐标准”),国际标准化组织/国际电工委员会(IS0/IEC)运动图像专家组-I(MPEG-I)标准,MPEG-2标准,IS0/IECMPEG-4第10部分高级视频编码(AVC)标准/ ITU-T H. 264推荐标准(下文是“MPEG-4AVC标准”)及其它,并且它在广泛的应用中使用。离散余弦变换(DCT)是最常用的块变换。DCT方案通过将图像/帧分为像素块(通常是4X4和8X8),使用离散余弦变换将每个块从空间域变换到频域,并且量化DCT系数, 来利用图像/帧的局部空间相关属性。大多数图像和视频压缩标准使用固定的二维O-D) 可分离DCT块变换。如果允许若干块大小(通常,从4X4到16X16个块),则它们使用其大小对应于该块的DCT。但是,对于每个块大小仅存在一种可能变换。然而,图像和视频内容包含变化统计和属性的数据。因此,每块大小的单个变换的可用性以及由此强迫使用使得无法实现任何潜在压缩获益,而这潜在压缩获益是可以使用与每块大小可用的单个变换不同的变换而获得的。在诸如像MPEG-4AVC标准之类的图像和视频编码标准中,针对每个块大小使用的块变换仅存在一种选择。不存在对变换的选择。参考图1,能够按照MPEG-4AVC标准进行视频编码的视频编码器一般地用附图标号100表示。视频编码器100包括帧排序缓冲器110,其具有与组合器185的非反向输入端进行信号通信的输出端。组合器185的输出端与变换器和量化器125的第一输入端进行信号通信连接。变换器和量化器125的输出端与熵编码器145的第一输入端以及逆变换器和逆量化器150的第一输入端进行信号通信连接。熵编码器145的输出端与组合器190的第一非反向输入端进行信号通信连接。组合器190的输出端与输出缓冲器135的第一输入端进行信号通信连接。
编码器控制器105的第一输出端与帧排序缓冲器110的第二输入端、逆变换器和逆量化器150的第二输入端、画面型判定模块115的输入端、宏块型(MB-型)判定模块120 的第一输入端、帧内预测模块160的第二输入端、去块滤波器165的第二输入端、运动补偿器170的第一输入端、运动估计器175的第一输入端以及参考画面缓冲器180的第二输入
端进行信号通信连接。编码器控制器105的第二输出端与补充增强信息(SEI)插入器130的第一输入端、变换器和量化器125的第二输入端、熵编码器145的第二输入端、输出缓冲器135的第二输入端以及序列参数组(SPQ和画面参数组(PPQ插入器140的输入端进行信号通信连接。SEI插入器130的输出端与组合器190的第二非反向输入端进行信号通信连接。画面型判定模块115的第一输出端与帧排序缓冲器110的第三输入端进行信号通信连接。画面型判定模块115的第二输出端与宏块型判定模块120的第二输入端进行信号通信连接。序列参数组(SPS)和画面参数组(PPS)插入器140的输出端与组合器190的第三非反向输入端进行信号通信连接。逆量化器和逆变换器150的输出端与组合器119的第一非反向输入端进行信号通信连接。组合器119的输出端与帧内预测模块160的第一输入端和去块滤波器165的第一输入端进行信号通信连接。去块滤波器165的输出端与参考画面缓冲器180的第一输入端进行信号通信连接。参考画面缓冲器180的输出端与运动估计器175的第二输入端和运动补偿器170的第三输入端进行信号通信连接。运动估计器175的第一输出端与运动补偿器 170的第二输入端进行信号通信连接。运动估计器175的第二输出端与熵编码器145的第三输入端进行信号通信连接。运动补偿器170的输出端与开关197的第一输入端进行信号通信连接。帧内预测模块160的输出端与开关197的第二输入端进行信号通信连接。宏块型判定模块120的输出端与开关197的第三输入端进行信号通信连接。开关197的第三输入端确定开关的“数据”输入端(与控制输入端相比较,即,第三输入端)是否将由运动补偿器170或帧内预测模块160来提供。开关197的输出端与组合器119的第二非反向输入端和组合器185的反向输入端进行信号通信连接。帧排序缓冲器110的第一输入端和编码器控制器105的输入端可用作编码器100 的用于接收输入画面的输入端。而且,补充增强信息(SEI)插入器130的第二输入端可用作编码器100的用于接收元数据的输入端。输出缓冲器135的输出端可用作编码器100的用于输出位流的输出端。参考图2,能够按照MPEG-4AVC标准进行视频解码的视频解码器一般地用附图标号200表示。视频解码器200包括输入缓冲器210,其具有与熵解码器245的第一输入端进行信号通信连接的输出端。熵解码器245的第一输出端与逆变换器和逆量化器250的第一输入端进行信号通信连接。逆变换器和逆量化器250的输出端与组合器225的第二非反向输入端进行信号通信连接。组合器225的输出端与去块滤波器265的第二输入端以及帧内预测模块260的第一输入端进行信号通信连接。去块滤波器265的第二输出端与参考画面缓冲器观0的第一输入端进行信号通信连接。参考画面缓冲器观0的输出端与运动补偿器270的第二输入端进行信号通信连接。熵解码器M5的第二输出端与运动补偿器270的第三输入端以及去块滤波器265 的第一输入端进行信号通信连接。熵解码器245的第三输出端与解码器控制器205的输入端进行信号通信连接。解码器控制器205的第一输出端与熵解码器245的第二输入端进行信号通信连接。解码器控制器205的第二输出端与逆变换器和逆量化器250的第二输入端进行信号通信连接。解码器控制器205的第三输出端与去块滤波器265的第三输入端进行信号通信连接。解码器控制器205的第四输出端与帧内预测模块沈0的第二输入端、运动补偿器270的第一输入端以及参考画面缓冲器观0的第二输入端进行信号通信连接。运动补偿器270的输出端与开关四7的第一输入端进行信号通信连接。帧内预测模块260的输出端与开关297的第二输入端进行信号通信连接。开关297的输出端与组合器225的第一非反向输入端进行信号通信连接。输入缓冲器210的输入端可用作解码器200的用于接收输入位流的输入端。去块滤波器沈5的第一输出端可用作解码器200的用于输出输出画面的输出端。在单一编码方案中对于多个变换的使用已经存在一些现有建议。在第一种现有技术途径中,揭露了一种最佳线性变换,称作Karhunen Loeve变换(KLT)。KLT被利用来在MPEG-4AVC标准中对于9种帧内预测模式的每种模式推导出最佳变换。提取每种模式的统计并且推导出相应的KLT。每个帧内预测剩余部分(residue)利用它的KLT来编码。以 DCT不再接近最佳变换的这种方式,数据空间被9种帧内模式有效地分割,因此可以推导并且成功地应用独特的最佳变换。总之,该建议使用数种变换,但是每种变换被固定为所选择的帧内预测模式。第二种现有技术途径提出修改DCT变换为若干频率,也就是,利用不同的全通滤波器改变基本函数以便获得各种各样的弯曲(warped)频率响应。得到的变换称作弯曲 DCT(WDCT)。对于每个块进行穷尽比率失真(R_D,rate distortion)搜索,并且用辅助信息 (side information)表示被选变换。该构思应用于图像压缩。第三种现有技术途径描述了使用WDCT和在变换的系数本身内嵌入变换选择。该方法对低位速率图像压缩显示了良好性能。而且,该方法添加了最小化均方差(MSE)的后滤波步骤。该滤波是在编码器处确定的并且被复用到位流。第四种现有技术途径提出针对大数据库的一组变换的代数最优化。该组被迭代地分割,直到它达到稳定点,在该稳定点,每个变换对于它的特殊子集数据是最佳稀疏的。编码器通过四重树表示在每个块中使用哪个变换。因此,对于每个块不是独立地完成变换选择。第五种现有技术途径提出用于帧间模式的整数正弦变换(1ST)。帧间剩余部分相关性低,并且DCT仅对于高相关数据是足够的。因此,提出了正弦变换,它对相关性从-0. 5 到0. 5的数据有效。KLT在该范围部分与正弦变换一致。1ST是以与MPEG-4AVC标准中的整数余弦变换完全相同的方式从正弦变换中推导出的。第五种现有技术途径已经实现4X4 和8X8IST版本。对于整个宏块应用相同变换,发送标记,除非宏块被分为4个子宏块,随后发送规定在每个子宏块中采用的变换的4个标记。第六种现有技术途径提出了类似于在第五种现有技术途径中提出的方案。该第六种现有技术途径提出能够在空间域和频域中进行自适应预测差错编码的自适应预测差错编码(APEC)方案。对于预测差错的每个块,应用变换编码或空间域编码。选择较低比率失真成本的算法。先前的途径提出最佳变换的有限范围选择,并且没有充分地利用可用的可能性。

发明内容
通过本原理解决了现有技术的这些和其它缺陷和不足,本原理致力于视频编码中用于变换选择的方法和装置。按照本原理的一方面,提供了一种装置。该装置包括视频编码器,用于通过从一组两个或多个变换中选择一种应用于画面中的至少一块的剩余部分的变换来编码该至少一块。所述变换是基于以下中的至少一个而选择的用于预测所述块的至少一个参考的帧间预测模式,对应于运动矢量的一个或多个值,一个或多个在先编码块的剩余部分的值,所述块的预测数据的值,一个或多个相邻重构块的一个或多个变换选择,和应用于所述块的剩余部分的变换系数的量化步骤。按照本原理的另一方面,提供了一种装置。该装置包括视频编码器,用于通过从一组两个或多个可用变换中选择一种应用于画面中的至少一块的剩余部分的变换来编码该至少一块。所述视频编码器通过以下中的至少一个发送描述被选变换的信息使用一个或多个标记显性地发送所述信息,使用位流中的树结构发送所述信息,在与被选变换对应的变换系数内嵌入所述信息,和允许相应解码器从已解码数据中推断被选变换。按照本原理的又另一方面,提供了一种装置。该装置包括视频编码器,用于通过从一组两个或多个可用变换中选择一种应用于画面中的至少一块的剩余部分的变换来编码该至少一块。该组变换是使用来自视频序列中的一个或多个在先画面的重构数据来确定和精化(refinement)的至少一个。按照本原理的又另一方面,提供了一种装置。该装置包括视频编码器,用于通过从一组两个或多个可用变换中选择一种应用于画面中的至少一块的剩余部分的变换来编码该至少一块。该组变换是从待用于所述块编码的数据中确定的。按照本原理的另一方面,提供了一种视频编码器中的方法。该方法包括通过从一组两个或多个可用变换中选择一种应用于画面中的至少一块的剩余部分的变换来编码该至少一块。所述变换是基于以下中的至少一个而选择的用于预测所述块的至少一个参考的帧间预测模式,对应于运动矢量的一个或多个值,一个或多个在先编码块的剩余部分的值,所述块的预测数据的值,一个或多个相邻重构块的一个或多个变换选择,和应用于所述块的剩余部分的变换系数的量化步骤。按照本原理的又一方面,提供了一种视频编码器中的方法。该方法包括通过从一组两个或多个可用变换中选择一种应用于画面中的至少一块的剩余部分的变换来编码该至少一块;和通过以下中的至少一种发送描述被选变换的信息使用一个或多个标记显性地发送所述信息,使用位流中的树结构发送所述信息,在与被选变换对应的变换系数内嵌入所述信息,和允许相应解码器从已解码数据中推断被选变换。按照本原理的又一方面,提供了一种视频编码器中的方法。该方法包括通过从一组两个或多个可用变换中选择一种应用于画面中的至少一块的剩余部分的变换来编码该至少一块。该组变换是使用来自视频序列中的一个或多个在先画面的重构数据来确定和精化中的至少一个。按照本原理的另外方面,提供了一种视频编码器中的方法。该方法包括确定一组一个或多个变换;并且通过从该组变换中选择一种应用于画面中的至少一块的剩余部分的变换来编码该至少一块。该组变换是从待用于所述块编码的数据中确定的。从下面结合附图阅读的示例性实施例的详细描述中,本原理的这些和其它方面、 特征和优点将变得明显。


按照下列示例性附图可以更好理解本原理,附图中图1是示出能够按照MPEG-4AVC标准进行视频编码的视频编码器的方框图;图2是示出能够按照MPEG-4AVC标准进行视频解码的视频解码器的方框图;图3是示出按照本原理实施例的利用应用本原理的变换选择的示例性视频编码器的方框图;图4是示出按照本原理实施例的利用应用本原理的变换选择的示例性视频解码器的方框图;图5是示出按照本原理实施例的视频编码器中用于变换选择的示例性方法的流程图;图6是示出按照本原理实施例的视频解码器中用于变换选择的示例性方法的流程图;图7是示出按照本原理实施例的视频编码器中用于变换选择和传送的示例性方法的流程图;图8是示出按照本原理实施例的视频解码器中用于变换传送和选择的示例性方法的流程图;图9是示出按照本原理实施例的视频编码器中用于变换选择和传送的另一示例性方法的流程图;和图10是示出按照本原理实施例的视频解码器中用于变换传送和选择的另一示例性方法的流程图。
具体实施例方式本原理致力于视频编码中用于变换选择的方法和装置。本说明书图示了本原理。因此,将要理解,本领域的技术人员能够设想出尽管本文未显性描述或示出,但体现本原理和包含在其精神和范畴之内的各种布置。本文叙述的所有例子和条件语言是教学性的,旨在辅助读者理解(多个)发明人为推动技术进步而贡献的原理和概念,并且应当理解为不局限于这样具体叙述的例子和条件而且,本文叙述本原理的原理、方面和实施例、以及其特定示例的所有语句旨在涵盖其结构和功能两者的等效物。另外,这样的等效物旨在包括当前已知的等效物、以及将来开发的等效物两者,即,与结构无关,开发出来执行相同功能的任何元件。因此,例如,本领域技术人员将会理解,本文给出的方框图代表体现本原理的例示性电路的概念图。类似地,将会理解,任何流程图、流向图、状态转移图、伪码等代表基本上可以表示在计算机可读介质中并因此可被计算机或处理器执行的各种处理,无论这样的计算机或处理器是否显性示出。显示在图中的各种元件的功能可以通过使用专用硬件以及能够与适当软件相关联地执行软件的硬件来提供。当由处理器提供时,这些功能可以由单个专用处理器,单个共享处理器,或其中一些可以共享的多个单独处理器提供。此外,术语“处理器”或“控制器”的显性使用不应该理解为唯一地指代能够执行软件的硬件,也可以不受限制地隐性包括数字信号处理器(“DSP”)硬件、存储软件的只读存储器(“ROM”)、随机存取存储器(“RAM”)、 和非易失性存储设备。也可以包括常规的和/或定制的其它硬件。类似地,显示在图中的任何开关都只是概念性的。它们的功能可以通过程序逻辑运算,通过专用逻辑,通过程序控制和专用逻辑的交互,或甚至人工实现,正如从上下文中更具体理解到的那样,具体技术可由实现者选择。在本文的权利要求书中,表达成执行特定功能的部件的任何元件旨在包含执行那种功能的任何方式,例如,包括a)执行那种功能的电路元件的组合,或b)任何形式的软件, 因此,包括固件、微码等,与执行那种软件的适当电路组合在一起来执行那种功能。如这样的权利要求书定义的本原理基于各种所述部件提供的功能以权利要求书要求的方式组合和聚集在一起的事实。因此,认为可以提供那些功能的任何部件都等效于本文所示的那些部件。在说明书中提到本原理的“一个实施例”或“实施例”,以及其其它变体,意味着结合该实施例所描述的具体特征、结构、特性等包括在本原理的至少一个实施例中。因此,出现在整个说明书的各个地方的短语“在一个实施例中”或“在实施例中”,以及任何其它变体的出现未必都指代相同实施例。而且,将要注意,本文相互交换地使用短语“实施例”和“实现方式”。此外,如本文中所使用的,词语“画面”和“图像”得以相互交换地使用并且指代自视频序列的静止图像或画面。如所知的,画面可以是一帧或一场。而且,如本文中所使用的,词语“块”指代任何块大小的块,包括超宏块、宏块、宏块分割和子宏块分割。同样,如本文中所使用的,针对一组变换或一个变换的词语“精化”是指从参考变换/变换组推导出一个变换/变换组所需的信息。通常,发送一个变换/变换组的“差异”(精化)的信息比发送从擦痕(scratch)推导出变换/变换组所需的所有信息更有效。另外,如本文中所使用的,短语“辅助信息”指代位流中必须包含的运送到在普通位流中没有发现附加数据的解码器的附加信息。例如,如果使用两个变换来编码一个块,则必须用信号发送被选变换,使得解码器得知要使用哪个逆变换。因此,编码器可以包括1位的表示将要使用哪个逆变换的“辅助信息”。将要理解,如下“/”、“和/或”、和“至少一个”的任何一种的使用,例如,在“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标准的扩充的其扩充来使用本原理。如上注释的,本原理致力于视频编码中用于变换选择的方法和装置。意识到图像和视频内容具有变化统计和属性的数据,我们也会意识到,如果可以对于每个块使用数个变换,在选项范围内对每种形势选择最有利的变换,则存在将要实现的潜在压缩获益。在至少一个实施例中,我们建议优化/设计一组变换给给定统计或图案并且对于每个区域或每个块从该组中选择最佳变换。因此,我们提出更一般更广泛的途径,其包括现有技术中未考虑的替换物。按照本原理,我们描述使用一组变换(两个或多个变换),随后对每个区域、切片、块或宏块选择该组的最佳变换来编码图像或视频。该组变换可被最优化或设计用于统计或图像/视频图案的范围。本原理也涉及如何选择最佳变换和被选变换的适当信令,使得图像/视频解码器可以有效地恢复选择信息。不必限制视频编码器和解码器仅具有一种可能变换。在实施例中,我们建议视频编码器可以从对于每个块、宏块或区域的不同变换中进行选择以实现最佳性能。然后,在实施例中,我们将编码器中的变换组与不损害潜在获益的轻语法相结合。参考图3,利用变换选择的示例性视频编码器一般地用附图标号300表示。视频编码器300包括帧排序缓冲器310,其具有与组合器385的非反向输入端进行信号通信的输出端。组合器385的输出端与变换器和量化器1325的输入端、变换器和量化器23 的输入端、以及变换器和量化器η 327的输入端进行信号通信连接。变换器和量化器1325的输出端与变换选择器329的第一输入端进行信号通信连接。变换器和量化器23 的输出端与变换选择器3 的第二输入端进行信号通信连接。变换器和量化器η 327的输出端与变换选择器3 的第三输入端进行信号通信连接。变换选择器329的输出端与熵编码器345的第一输入端以及逆变换器和逆量化器350的第一输入端进行信号通信连接。熵编码器345 的输出端与组合器390的第一非反向输入端进行信号通信连接。组合器390的输出端与输出缓冲器335的第一输入端进行信号通信连接。编码器控制器305的第一输出端与帧排序缓冲器310的第二输入端、逆变换器和逆量化器350的第二输入端、画面型判定模块315的输入端、宏块型(MB型)判定模块320 的第一输入端、帧内预测模块360的第二输入端、去块滤波器365的第二输入端、运动补偿器370的第一输入端、运动估计器375的第一输入端以及参考画面缓冲器380的第二输入端进行信号通信连接。编码器控制器305的第二输出端与补充增强信息(SEI)插入器330的第一输入端、熵编码器345的第二输入端、输出缓冲器335的第二输入端以及序列参数组(SPQ和画面参数组(PPQ插入器340的输入端进行信号通信连接。SEI插入器330的输出端与组合器390的第二非反向输入端进行信号通信连接。
画面型判定模块315的第一输出端与帧排序缓冲器310的第三输入端进行信号通信连接。画面型判定模块315的第二输出端与宏块型判定模块320的第二输入端进行信号通信连接。序列参数组(SPQ和画面参数组(PPQ插入器340的输出端与组合器390的第三非反向输入端进行信号通信连接。逆量化器和逆变换器350的输出端与组合器319的第一非反向输入端进行信号通信连接。组合器319的输出端与帧内预测模块360的第一输入端和去块滤波器365的第一输入端进行信号通信连接。去块滤波器365的输出端与参考画面缓冲器380的第一输入端进行信号通信连接。参考画面缓冲器380的输出端与运动估计器375的第二输入端和运动补偿器370的第三输入端进行信号通信连接。运动估计器375的第一输出端与运动补偿器 370的第二输入端进行信号通信连接。运动估计器375的第二输出端与熵编码器345的第三输入端进行信号通信连接。运动补偿器370的输出端与开关397的第一输入端进行信号通信连接。帧内预测模块360的输出端与开关397的第二输入端进行信号通信连接。宏块型判定模块320的输出端与开关397的第三输入端进行信号通信连接。开关397的第三输入端确定开关的“数据”输入端(与控制输入端相比较,即,第三输入端)是否将由运动补偿器370或帧内预测模块360提供。开关397的输出端与组合器319的第二非反向输入端和组合器385的反向输入端进行信号通信连接。帧排序缓冲器310的第一输入端和编码器控制器305的输入端可用作编码器300 的用于接收输入画面的输入端。而且,补充增强信息(SEI)插入器330的第二输入端可用作编码器300的用于接收元数据的输入端。输出缓冲器335的输出端可用作编码器300的用于输出位流的输出端。在一个实施例中,视频编码器300从一组η个变换中选择最佳变换,并且发送被选变换的辅助信息。然后,对于该被选变换(用i表示)进行逆变换。在该实施例中,所述变换是离线推导出的并且在编码器和解码器处可用。在一个实施例中,改变/修改熵编码器 345进行的熵编码以便适应正使用什么变换的附加信息,并且也因为每个变换可能需要不同的熵编码(不同的扫描顺序,不同的环境,等等)。参考图4,利用变换选择的示例性视频解码器一般地用附图标号400表示。视频解码器400包括输入缓冲器410,其具有与熵解码器445的第一输入端进行信号通信连接的输出端。熵解码器445的第一输出端与逆变换器和逆量化器i 450的第一输入端进行信号通信连接。逆变换器和逆量化器i 450的输出端与组合器425的第二非反向输入端进行信号通信连接。组合器425的输出端与去块滤波器465的第二输入端和帧内预测模块460的第一输入端进行信号通信连接。去块滤波器465的第二输出端与参考画面缓冲器480的第一输入端进行信号通信连接。参考画面缓冲器480的输出端与运动补偿器470的第二输入端进行信号通信连接。熵解码器445的第二输出端与运动补偿器470的第三输入端以及去块滤波器465 的第一输入端进行信号通信连接。熵解码器445的第三输出端与解码器控制器405的输入端进行信号通信连接。解码器控制器405的第一输出端与熵解码器445的第二输入端进行信号通信连接。解码器控制器405的第二输出端与逆变换器和逆量化器i 450的第二输入端进行信号通信连接。解码器控制器405的第三输出端与去块滤波器465的第三输入端进行信号通信连接。解码器控制器405的第四输出端与帧内预测模块460的第二输入端、运动补偿器470的第一输入端和参考画面缓冲器480的第二输入端进行信号通信连接。运动补偿器470的输出端与开关497的第一输入端进行信号通信连接。帧内预测模块460的输出端与开关497的第二输入端进行信号通信连接。开关497的输出端与组合器425的第一非反向输入端进行信号通信连接。输入缓冲器410的输入端可用作解码器400的用于接收输入位流的输入端。去块滤波器465的第一输出端可用作解码器400的用于输出输出画面的输出端。当待编码的数据可用或者存在大量训练数据集时,存在技术来推导出最佳变换组。例如,数个序列的训练集可能是可得到的,并且这些技术可以提供分割数据空间的一组变换使得每个变换对其数据部分是最佳的。然后,给定一个块,编码器必须确定该块所属的数据的类型并且使用适当的变换。推导出一组变换的这些技术可以基于普通KLT、稀疏目标功能、和/或本领域和相关领域的普通技术人员已知或容易推导出的技术。假设我们具有这样可用的技术,我们现在解决如何以有效方式使用该组变换,也就是,如何选择最佳变换和如何将信息从编码器有效地传送到解码器。确定变换组现在我们解释如何确定所使用的变换组。在一个实施例中,采用一组序列作为训练数据离线推导该变换组。如所提到的,一旦形成良好的训练组,就可以使用基于KLT的、基于稀疏性的能量压缩或其它方法来推导该变换组。存在基于变换组的现有设计标准(方向性、频率等)推导变换的方法。而且,上述第四种现有技术途径提出了利用代数优化处理基于训练数据的离线优化。该处理通过旨在获得给定数据的合适变换组的成本函数来驱动。成本函数包括符合压缩目的的两项。该算法尝试最小化重构差错项,同时最大化与变换系数表示的稀疏性相关的项。在原理上,越稀疏表示越少的位速率来传送系数的信息。我们也提出一种解决上面引用的现有技术途径的至少两个不足的途径。首先,我们明确提出一个平衡成本函数的两个项的权重。第二且更重要的是,我们建议推导最佳垂直和水平变换,而不是单个2-D不可分离变换。尽管我们的途径结合了两个方向的联合优化,但是针对实践应用重要的优点在于,一组可分离变换的计算复杂性和存储需求比一组不可分离变换的需求低得多。同时,允许垂直和水平方向上的变换不同使得图像和视频块的丰富的捕获优于具有两个方向的单个内核(kernel)。注意,当我们提及“变换组”时,这些变换的每一个可能是不可分离的或者可分离的。如果它们是可分离的,则每个方向(垂直/水平)可能相同或不同。在另一个实施例中,可以选择变换族的子集,因此该子集具有良好属性以便编码输入数据。例如,可以对要编码的视频数据确定WDCT的子集。而且,可以确定折叠(lapped) 变换的子集。一旦固定了子集,则编码器仅需要传送使用了族子集内的什么变换的信息。在另一个实施例中,根据重构视频的质量来选择变换的子集。输出的质量可以通过编码器的量化步骤、量化参数(QP)、目标位速率、PSNR和/或表示期望输出视频质量的度量的任何参数来确定。在另一个实施例中,从已被编码的数据在线推导变换组。该实施例的两个示例性实现方式提供如下。在一个示例性实现方式中,在先帧的重构数据被用作训练组以便利用可用方法的任何一种来推导变换组。在另一种示例性实现方式中,重构数据被用来精化正被使用的变换,因此在线更新变换以便匹配正进行的数据统计。在另一个实施例中,从待编码的数据推导变换组。待编码的这种数据包括但不限于从要编码的后来帧抽取的原始帧或统计。因此,编码器分析序列或者序列的下一部分以便利用可用方法的任何一种编码和确定要使用的最佳变换组或者选择要使用的最佳变换族。在这种情况下,编码器需要将正要使用的变换组作为辅助信息进行发送。本实施例的数个示例性实现方式提供如下。在第一个示例性实现方式中,编码器发现最佳变换组并且发送所有要使用的变换。在第二个示例性实施例中,编码器发现要使用的最佳变换组,并且解码器试图从在先解码数据推导最佳组,使得编码器仅需要发送解码器推导的变换的精化 (使得在编码器和解码器之间没有错误或失配)。在第三个示例性实现方式中,编码器从各种变换组(在编码器和解码器两者处可用)选择要使用的最佳组,并且将该特殊组用信号发送到解码器。在第四种实现方式中,编码器从最适于数据的变换族中发现特定变换组。然后,编码器向解码器传送已被选择的变换族的特定子集。传送被诜变换现在我们描述如何对解码器表示被选变换使得编码器和解码相匹配。在一个实施例中,编码器可以利用在切片、宏块或块级别包含在语法中的标记将被选变换发送到解码器。在一个实施例中,在编码器处,利用比率失真成本函数来确定每个块的最佳变换。在另一个实施例中,利用针对帧中的不同区域允许显性并灵活规定被选变换的四重树或其它类型的树来传送被选变换。这样,变换的区域可能比先前实施例的简单块形状更任意。在另一个实施例中,可以通过将标记隐藏在变换系数本身内(表示将要使用哪个变换)来发送被选变换。下面解释这种替换的可能实施例。假设在该组变换中仅有两种变换。然后,如果选择变换1,则编码器强制变换系数之和为偶数。如果选择变换2,则编码器强制变换系数之和为奇数。在解码器处,变换系数得以恢复并且它们和的奇偶校验被计算。 如果该奇偶校验是偶数,则要应用的逆变换是变换1的逆变换。如果该奇偶校验是奇数,则要应用的逆变换是变换2的逆变换。这样,标记可被隐藏在变换系数中,并且在解码器侧是可恢复的,因此编码器和解码器两者同步。明显地,在系数中隐藏标记不限于具有两种变换。这样的技术可以直接扩展到任何数量的变换。在另一个实施例中,不发送被选变换的显性信息。在这种情况下,它可以从已经解码的数据中进行推导。该信息必须在编码器和解码器两者处可获得,并且从数据中提取被选变换的方式在两者中必须相同,使得它们同步。存在从中可以选择变换的各种各样的信息。下面,提供这种隐性信令的5个具体实施例。当然,本原理不限于下列与隐性信令相关的实施例,给定本文中提供的本原理的教导,本领域和相关领域的普通技术人员将设想这些和其它实现方式,同时维持本原理的精神。在第一个实施例中,使用被采用的帧间预测模式来隐性地用信号发送变换。在本实施例的一种实现方式中,如果它是直接模式,则使用变换1。否则,使用变换2。在第二个实施例中,使用运动矢量来隐性地用信号发送变换。待使用的变换可以取决于块的运动矢量(它的大小、方向、参考画面等等)。在第三个实施例中,变换取决于在先编码块的剩余部分。然后,在先编码块的剩余部分的统计确定使用该组内的什么变换。在第四个实施例中,变换选择取决于块的预测数据。在剩余部分和预测数据之间存在在最佳变换的选择中可以利用的某些相关性。例如,如果预测具有方向性分量,则该方向性在剩余部分中通常也是显而易见的。然后,对于给定方向使用方向性变换会得到更好的性能,因为方向性变换可以以非方向性变换不能的方式利用剩余部分的方向性分量。在第五个实施例中,变换选择可以取决于可在编码器和解码器两者处获得的相邻重构块的变换选择。SS本原理可认为包括两部分,S卩,对于每个特殊块如何选择变换组和如何传送所述组内的被选变换。对于这两部分的每一个提出了几种替换方式。所提出的途径可以组合针对每个部分提出的替换方式的任何一种。而且,注意,每个变换可能需要它的特殊量化处理、以及熵编码之前系数的不同扫描顺序。而且,每个扫描顺序可以自适应于每个变换的统计而完成。在一个实施例中,每个变换的扫描顺序可以自适应于特殊系数位置已经被在先编码为重要的次数。本原理考虑下列变换扩展变换的量化处理;变换的扫描顺序;和该扫描顺序的潜在自适应性。参考图5,视频编码器中用于变换选择的示例性方法一般地用附图标号500来表示。方法500包括将控制传递到功能块510的起始块505。功能块510接收用于编码的视频序列,开始编码该视频序列,并且将控制传递到功能块515。功能块515确定训练数据、每组代表各个变换族的一组或多组变换、已编码数据和待编码数据中的一个或多个,并且将控制传递到功能块520。功能块520根据训练数据、每子集代表变换族的各个部分的一个或多个变换子集、已编码数据和待编码数据中的一个或多个来选择变换i,并且将控制传递到功能块525。功能块525使用被选变换i进行变换,并且对于视频序列画面中的块对块剩余数据进行量化,并且将控制传递到功能块530。功能块530输出量化系数,并且将控制传递到结束块599。将会理解,训练数据以及一组或多组变换中的一个或多个可以在线地(即,视频序列编码期间)或者离线地(例如,在编码视频序列之前)确定。参考图6,视频解码器中用于变换选择的示例性方法一般地用附图标号600来表示。方法600包括将控制传递到功能块610的起始块605。功能块610接收用于解码的位流,开始解码该位流,并且将控制传递到功能块615。功能块615确定训练数据、每组代表各个变换族的一组或多组变换、已编码数据和待编码数据中的一个或多个,并且将控制传递到功能块620。功能块620根据训练数据、每子集代表变换族的相应部分的一个或多个变换子集、已编码数据和待编码数据中的一个或多个来选择变换i,并且将控制传递到功能块 625。功能块625使用被选变换i逆变换和逆量化针对视频序列画面中的块的量化系数,并且将控制传递到功能块630。功能块630输出块剩余数据,并且将控制传递到结束块699。将会理解,训练数据以及一组或多组变换中的一个或多个可以在线地(即,视频序列解码期间)或者离线地(例如,在解码视频序列之前)确定。参考图7,视频编码器中用于变换选择和传送的示例性方法一般地用附图标号700来表示。方法700包括将控制传递到功能块710的起始块705。功能块710接收用于编码的输入帧,并且将控制传递到功能块715。功能块715训练一组或多组变换,并且将控制传递到功能块765和循环限制块720。功能块765输出将要在帧中使用的该组变换,并且将控制传递到功能块770。循环限制块720对输入帧上的块进行循环,并且将控制传递到功能块725。功能块725得到块剩余部分,并且将控制传递到循环限制块730。循环限制块 730对一组或多组变换进行循环,并且将控制传递到功能块735。功能块735针对一组或多组变换中的变换进行比率失真分析,并且将控制传递到循环限制块740。循环限制块740结束对变换的循环,并且将控制传递到功能块745。功能块745确定当前块的最佳变换,并且将控制传递到循环限制块750。循环限制块750结束对块的循环,并且将控制传递到功能块755和功能块760。功能块755输出每个块的量化系数,并且将控制传递到功能块770。 功能块760输出每个块的被选变换,并且将控制传递到功能块770。功能块770发送量化系数、将要在帧中使用的该组变换(或该组的精化)以及对该帧中的每个块的被选变换,将要在帧中使用的该组变换(或该组的精化)和/或对该帧中的每个块的被选变换被显性地或隐性地发送,并且将控制传递到结束块799。将会理解,针对功能块770,在将要在帧中使用的该组变换(或该组的精化)和/或对该帧中的每个块的被选变换被隐性地发送的情况下,代替实际变换,可以发送表示将要在帧中使用的该组变换(或该组的精化)和/或对该帧中的每个块的被选变换的信息。在这种情况下,解码器随后可以从隐性信息中推导出所述变换。而且,针对位流,将要在帧中使用的该组变换(或该组的精化)、对该帧中的每个块的被选变换、和/或表示先前中的至少一个的信息可以作为辅助信息发送。另外,使用一个或多个标记和/或语法元素可以发送将要在帧中使用的该组变换(或该组的精化)、对该帧中的每个块的被选变换、和/或表示先前中的至少一个的信息。参考图8,视频解码器中用于变换传送和选择的示例性方法一般地用附图标号 800来表示。方法800包括将控制传递到功能块810、功能块815和功能块820的起始块 805。功能块810显性地或隐性地接收将用于待解码的当前帧的一组变换或者该组的精化, 并且将控制传递到功能块830。功能块815接收对当前帧中的每个块的量化系数,并且将控制传递到循环限制块825。功能块820显性地或者隐性地接收对当前帧中的每个块的被选变换,并且将控制传递到功能块830。循环限制块825对当前帧中的块进行循环,并且将控制传递到功能块830。功能块830确定当前块的逆变换,并且将控制传递到功能块835。功能块835应用对该块所确定的逆变换,并且将控制传递到循环限制块840。循环限制块840 结束循环,并且将控制传递到功能块845。功能块845输出每个块的块剩余部分,并且将控制传递到结束块899。将会理解,针对功能块810和820,在将要在帧中使用的该组变换(或该组的精化)和/或对该帧中的每个块的被选变换被隐性地发送的情况下,代替实际变换,可以接收表示将要在帧中使用的该组变换(或该组的精化)和/或对该帧中的每个块的被选变换的信息。在这种情况下,解码器随后可以从隐性信息中推导出变换(例如通过功能块830)。 而且,针对位流,将要在帧中使用的该组变换(或该组的精化)、对该帧中的每个块的被选变换、和/或表示先前中的至少一个的信息可以作为辅助信息接收。参考图9,视频编码器中用于变换选择和传送的另一示例性方法一般地用附图标号900来表示。方法900包括将控制传递到功能块910的起始块905。功能块910输入待编码的帧,并且将控制传递到功能块915。功能块915训练一组或多组变换,并且将控制传递到功能块970和循环限制块920。循环限制块920对帧中的块进行循环,并且将控制传递到功能块925。功能块925得到当前块的块剩余部分,并且将控制传递到循环限制块930。 循环限制块930对一组或多组变换进行循环,并且将控制传递到功能块935。功能块935 变换和量化当前块的系数,并且将控制传递到功能块940。功能块940将标记嵌入系数中, 并且将控制传递到功能块945。功能块945进行比率失真(RD)分析,并且将控制传递到循环限制块950。循环限制块950结束对变换的循环,并且将控制传递到功能块955。功能块 955确定当前块的最佳变换,并且将控制传递到功能块960。功能块960输出每个块的量化系数,并且将控制传递到循环限制块965。循环限制块结束对块的循环,并且将控制传递到结束块999。参考图10,视频解码器中用于变换传送和选择的另一示例性方法一般地用附图标号1000来表示。方法1000包括将控制传递到功能块1010和循环限制块1015的起始块 1005。功能块1010显性地或隐性地接收将用于待解码的当前帧的一组变换,并且将控制传递到功能块1030。循环限制块1015对当前帧中的块进行循环,并且将控制传递到功能块 1020。功能块1020接收当前帧中的每个块的量化系数,并且将控制传递到功能块1025。功能块1025从系数中提取嵌入标记,并且将控制传递到功能块1030。功能块1030根据(多个)嵌入标记确定应用于当前块的逆变换,并且将控制传递到功能块1035。功能块1035使用所确定的逆变换对块进行逆变换,并且将控制传递到功能块1040。功能块1040输出块剩余部分,并且将控制传递到循环限制块1045。循环限制块1045结束循环,并且将控制传递到结束块1099。现在将给出本发明的许多随附优点/特征的一些的描述,其中一些优点/特征已在上面提到。例如,一个优点/特征是具有用于通过从一组两个或多个可用变换中选择一种应用于画面中的至少一块的剩余部分的变换来编码该至少一块的视频编码器的装置。所述变换是基于以下中的至少一个来选择的用于预测所述块的至少一个参考的帧间预测模式,对应于运动矢量的一个或多个值,一个或多个在先编码块的剩余部分的值,所述块的预测数据的值,一个或多个相邻重构块的一个或多个变换选择,和应用于所述块的剩余部分的变换系数的量化步骤。另一优点/特征是具有如上所描述的编码器的装置,其中该组变换是离线确定的。再另一优点/特征是具有如上所描述的其中该组变换是离线确定的编码器的装置,其中该组变换是使用训练数据和通过选择变换族的子集的至少一个来确定的。另一优点/特征是具有如上所描述的编码器的装置,其中该组中的变换是可分离的或者不可分离中的任何一个,并且当所述变换是可分离的时候,该变换的水平和垂直方向可能不同。又另一优点/特征是具有用于通过从一组两个或多个可用变换中选择一种应用于画面中的至少一块的剩余部分的变换来编码该至少一块的视频编码器的装置。所述视频编码器通过下列中的至少一个发送描述被选变换的信息使用一个或多个标记显性地发送所述信息,使用位流中的树结构发送所述信息,将所述信息嵌入在与被选变换对应的变换系数内,以及允许相应解码器从已解码数据推断被选变换。
而且,另一优点/特征是具有如上所描述的视频编码器的装置,其中该变换组是使用训练数据和通过选择变换族的子集的至少一个确定的。再者,另一优点/特征是具有用于通过从一组两个或多个可用变换中选择一种应用于视频序列画面中的至少一块的剩余部分的变换来编码该至少一块的视频编码器的装置。该变换组是使用来自视频序列中的一个或多个在先画面的重构数据被确定和被精化中的至少一个。而且,另一优点/特征是具有用于通过从一组两个或多个可用变换中选择一种应用于画面中的至少一块的剩余部分的变换来编码该至少一块的视频编码器的装置。该变换组是从将要对所述块编码的数据中确定的。另外,另一优点/特征是具有如上所描述的视频编码器的装置,其中所述视频编码器确定该变换组,并且将该变换组作为边消息发送到相应解码器。而且,另一优点/特征是具有如上所描述的视频编码器的装置,其中所述视频编码器确定变换组,确定对该变换组的精化,允许相应解码器从所述精化以及从在先解码数据预测所述变换组,以便推导相同变换组作为所述视频编码器,并且将所述精化发送到相应解码器。另外,另一优点/特征是具有如上所描述的视频编码器的装置,其中所述视频编码器从多个变换组中确定该变换组,并且将该变换组作为边消息进行发送。而且,另一优点/特征是具有如上所描述的视频编码器的装置,其中所述视频编码器从变换族中确定变换组,该变换组表示所述变换族的子集,并且其中所述视频编码器仅发送所述变换族的子集。相关领域的普通技术人员可以根据本文的教导容易地弄清本原理的这些和其它特征和优点。将要理解,本原理的教导可以以硬件、软件、固件、专用处理器或它们的组合体的各种形式实现。更优选的是,将本原理的教导实现成硬件和软件的组合体。此外,软件可以实现成有形地具体化在程序存储单元上的应用程序。应用程序可以上载到包含任何适当结构的机器,并由该机器执行。优选的是,机器是在具有诸如一个或多个中央处理单元(“CPU”)、随机存取存储器(“RAM”)、和输入/输出(“I/O”)接口之类的硬件的计算机平台上实现的。 计算机平台也可以包括操作系统和微指令代码。本文所述的各种处理和功能可以是可以由 CPU执行的微指令代码的一部分或应用程序的一部分,或其任何组合。另外,诸如附加数据存储单元和打印单元之类的各种外围单元可以与计算机平台连接。将要进一步理解,由于描绘在附图中的组成系统部件和方法的一些优选用软件实现,因此,取决于编程本原理的方式,系统部件或处理功能块之间的实际连接可能不同。在本文的教导下,相关领域的普通技术人员将能够设想出本原理的这些和类似实现方式或配置。尽管本文已经参考附图描述了例示性实施例,但是将要理解,本原理不限于那些精确的实施例,并且在不背离本原理的范围或精神的情况下,相关领域的普通技术人员可以在其中做出各种变化和修改。所有这种变化和修改意欲包含在如所附权利要求中阐述的本原理的范围之内。
权利要求
1.一种装置,包括视频编码器(300),用于通过从一组两个或多个变换中选择一种应用于视频序列中的画面的至少一块的剩余部分的变换来编码该至少一块,其中,从将要为该块编码的数据来确定该组变换。
2.如权利要求1所述的装置,其中,所述视频编码器(300)确定该组变换并且将该组变换作为边信息发送至对应的解码器。
3.如权利要求1所述的装置,其中,所述视频编码器(300)确定该组变换,确定该组变换的精化,其允许对应的解码器从精化并且从在先解码的数据来预测该组变换以便推导出一组与所述视频编码器相同的变换,并且发送该精化至对应的解码器。
4.如权利要求1所述的装置,其中,所述视频编码器(300)从多组变换中确定该组变换并且将该组变换作为边信息发送。
5.如权利要求1所述的装置,其中,所述视频编码器(300)从变换族中确定该组变换, 该组变换表示变换族的子集,并且其中所述视频编码器(300)仅发送变换族的子集。
6.一种在视频编码器中的方法,包括确定(51 —组一个或多个变换;以及通过从该组变换中选择(520) —种应用于视频序列中的画面中的至少一块的剩余部分的变换来编码(510)该至少一块,其中,从将要为该块编码的数据来确定该组变换(515)。
7.如权利要求6所述的方法,还包括将该组变换作为边信息发送至对应的解码器 (770)。
8.如权利要求6所述的方法,还包括确定该组变换的精化,其允许对应的解码器从该精化并且从在先解码的数据来预测该组变换以便推导出一组与所述视频编码器相同的变换;以及发送该精化至对应的解码器。
9.如权利要求6所述的方法,其中,从多组变换中确定该组变换,并且所述方法还包括将该组变换作为边信息发送(770)。
10.如权利要求6所述的方法,其中,从变换族中确定该组变换,该组变换表示变换族的子集,并且其中所述方法还包括仅发送变换族的子集(515、520、770)。
11.一种装置,包括视频解码器G00),用于通过从一组两个或多个逆变换中选择一种应用于视频序列中的画面中的至少一块的逆量化系数的逆变换来解码该至少一块,其中,从将要为该块解码的数据来确定该组逆变换。
12.如权利要求11所述的装置,其中,所述视频解码器(400)将该组逆变换作为边信息接收。
13.如权利要求11所述的装置,其中,所述视频解码器(400)接收该组逆变换的精化, 其允许所述视频解码器(400)从该精化并且从在先解码的数据来预测该组逆变换以便推导出一组与对应的视频编码器相同的逆变换。
14.如权利要求11所述的装置,其中,从多组逆变换中确定该组逆变换,并且该组逆变换作为边信息由所述视频解码器(400)接收。
15.如权利要求11所述的装置,其中,从逆变换族中确定该组逆变换,该组逆变换表示逆变换族的子集,并且其中所述视频解码器(400)仅接收逆变换族的子集。
16.一种视频解码器中的方法,包括通过从一组两个或多个逆变换中选择(615、620) —种应用于视频序列中的画面中的至少一块的逆量化系数的逆变换来解码(610)该至少一块,其中,从将要为该块解码的数据来确定该组逆变换(615、620)。
17.如权利要求16所述的方法,还包括将该组变换作为边信息接收(810)。
18.如权利要求16所述的方法,还包括接收(810)该组变换的精化,其允许视频解码器从该精化并且从在先解码的数据来预测该组变换以便推导出一组与对应的视频编码器相同的变换;以及从该精化并且从在先解码的数据预测(615、620)该组变换。
19.如权利要求16所述的方法,其中,从多组变换中确定该组变换,并且所述方法还包括将该组变换作为边信息接收(810)。
20.如权利要求16所述的方法,其中,从变换族中确定该组变换,该组变换表示变换族的子集,并且其中所述方法还包括仅接收变换族的子集(810)。
全文摘要
提供了视频编码中用于变换选择的方法和装置。一种装置包括视频编码器(300),用于通过从一组两个或多个可用变换(325,326,327)中选择一种应用于画面中的至少一块的剩余部分的变换(329)来编码该至少一块。所述变换是基于以下中的至少一个而选择的用于预测所述块的至少一个参考的帧间预测模式,对应于运动矢量的一个或多个值,一个或多个在先编码块的剩余部分的值,所述块的预测数据的值,一个或多个相邻重构块的一个或多个变换选择,和应用于所述块的剩余部分的变换系数的量化步骤。
文档编号H04N7/12GK102301708SQ200980155459
公开日2011年12月28日 申请日期2009年10月21日 优先权日2009年1月27日
发明者C.格米拉, J.索尔, 尹鹏, 郑云飞 申请人:汤姆森特许公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1