首页> 中国专利> 对帧内预测使用自适应DCT/DST的低复杂度变换编码

对帧内预测使用自适应DCT/DST的低复杂度变换编码

摘要

一种方法和设备通过确定是否将离散余弦变换(DCT)和DST用于水平变换和垂直变换中的每一个来编码并解码视频。在编码期间,基于为M×N输入图像块确定的帧内预测模式来执行帧内预测以获得M×N帧内预测残差矩阵(E)。基于帧内预测模式,根据帧内预测模式使用DCT和DST中的一个来执行水平变换和垂直变换中的每一个。在解码期间,从输入视频比特流确定帧内预测模式。使用反量化器从视频比特流获得误差残差的M×N变换系数矩阵。基于帧内预测模式,对于逆垂直变换和逆水平变换中的每一个执行DCT和DST中的一个。

著录项

  • 公开/公告号CN103098473A

    专利类型发明专利

  • 公开/公告日2013-05-08

    原文格式PDF

  • 申请/专利权人 三星电子株式会社;

    申请/专利号CN201180043432.5

  • 申请日2011-09-08

  • 分类号H04N7/30(20060101);H04N7/34(20060101);

  • 代理机构11286 北京铭硕知识产权代理有限公司;

  • 代理人张云珠;王艳娇

  • 地址 韩国京畿道水原市

  • 入库时间 2024-02-19 19:54:51

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2019-08-27

    未缴年费专利权终止 IPC(主分类):H04N19/159 授权公告日:20161019 终止日期:20180908 申请日:20110908

    专利权的终止

  • 2016-10-19

    授权

    授权

  • 2013-06-12

    实质审查的生效 IPC(主分类):H04N7/30 申请日:20110908

    实质审查的生效

  • 2013-05-08

    公开

    公开

说明书

技术领域

本申请总体上涉及一种视频编码器/解码器(编解码器),更具体地说,涉及一种用于实现基于模式的DCT/DST视频编解码器的方法和设备,其中,离散余弦变换(DCT)和离散正弦变换(DST)基于帧内预测残差能量或简单地基于帧内预测模式而被选择。

背景技术

大多数现有的图像和视频编码标准(诸如JPEG、H.264/AVC、VC-1以及即将到来的下一代视频编解码器标准HEVC(高效率视频编码))采用基于块的变换编码作为工具来有效地压缩输入图像和视频信号。以逐块为基础使用变换处理来将像素域数据变换到频域。对于典型的图像,大部分能量被集中在低频变换系数中。在变换之后,更大步长的量化器可被用于更高频率的变换系数,以便更有效地压缩能量并获得更好的压缩。因此,需要为每个图像块设计最佳变换来对变换系数完全去相关。卡胡南-洛夫(Karhunen Loeve)变换(KLT)在例如高斯信号的高分辨率量化和变换系数的完全去相关方面具有若干有吸引力的特性。然而,由于KLT的高计算复杂度,KLT的实际使用受到限制,并且,已由K.R.Rao和P.Yip(1990)在“Discrete cosinetransform-algorithms,advantages and applications”中示出离散余弦变换(DCT)在接近于KLT的能量压缩和性能方面提供对于KLT的有吸引力的替代。但是随着帧内预测的出现,不再是这种情况,并且最佳变换应该适用于帧内预测模式。

在正在进行的HEVC的标准化中,除了标准DCT之外,非传统变换正被研究以用于帧内预测残差(Robert Cohen等人,“Tool Experiment7:MDDTSimplification”,ITU-T JCTVC-B307,瑞士,日内瓦,2010年7月)。这些变换可大致被分类为两种类别:(a)基于训练的变换和(b)基于模型的变换。在基于训练的变换之中突出的是基于模式的方向变换(MDDT)(Y.Ye和M.Karczewicz,“Improved Intra coding”,ITU-T Q.6/SG-16VCEG,VCEG-AG11,中国,深圳,2007年10月)。在MDDT中,为每个帧内预测模式收集误差残差的大的训练集,然后使用残差训练集来计算最佳变换矩阵。然而,MDDT需要大量的变换矩阵——在块大小N=4和N=8的情况下需要多达18个变换矩阵。另一种类别的基于模型的变换假设视频信号将被建模为一阶高斯-马尔可夫过程,然后分析得出最佳变换。这些基于模型的变换在块大小下需要两个变换矩阵。

在J.Han、A.Saxena和K.Rose,“Towards jointly optimal spatialprediction and adaptive transform in video/image coding”,IEEEInternational Conference on Acoustics,Speech and Signal Processing(ICASSP),726-729页,2010年3月中,如在H.264/AVC中的帧内预测(T.Wiegland、G.J.Sullivan,G、Bjontegaard和A.Luthra,“Overview of theH.264/AVC video coding standard”,IEEE Transactions on Circuits andSystems for Video Technology,2003年7月)中,当边界信息在一个方向上可用时,针对一阶高斯-马尔可夫模型以不同于传统DCT的频率和相位分量来分析得出离散正弦变换(DST)。它们还表明:如果没有沿特定方向执行预测,则DCT性能接近于KLT。此构思被应用到H.264/AVC中的帧内预测中的垂直模式和水平模式,并且所提出的DST和传统DCT的组合被适应性地使用。已通过将DST和DCT的组合应用到H.264/AVC中的其它七种预测模式来在没有理论证实的情况下尝试实验性地扩展类似的构思,且所述尝试已表明:与MDDT相比,性能方面仅存在较小的损失(C.Yeo、Y.H.Tan、Z.Li和S.Rahardja,“Mode-dependent fast separable KLT for block-based intra coding”,ITU-T JCTVC-B024,瑞士,日内瓦,2010年7月)。

此外,DST矩阵应被适当地缩放以考虑量化缩放矩阵的影响。现有技术没有描述在HEVC中的实现中对DST矩阵系数的改变以使得缩放与DCT匹配。

因此,本领域中需要提高压缩效率并采用低复杂度变换的改进视频编解码器。

发明内容

技术问题

在正在进行的HEVC的标准化中,除了标准DCT之外,非传统变换正被研究以用于帧内预测残差(Robert Cohen等人,“Tool Experiment7:MDDTSimplification”,ITU-T JCTVC-B307,瑞士,日内瓦,2010年7月)。这些变换可大致被分类为两种类别:(a)基于训练的变换和(b)基于模型的变换。在基于训练的变换之中突出的是基于模式的方向变换(MDDT)(Y.Ye和M.Karczewicz,“Improved Intra coding”,ITU-T Q.6/SG-16VCEG,VCEG-AG11,中国,深圳,2007年10月)。在MDDT中,为每个帧内预测模式收集误差残差的大的训练集,然后使用残差训练集来计算最佳变换矩阵。然而,MDDT需要大量的变换矩阵——在块大小N=4和N=8的情况下需要多达18个变换矩阵。另一种类别的基于模型的变换假设视频信号将被建模为一阶高斯-马尔可夫过程,然后分析得出最佳变换。这些基于模型的变换在块大小下需要两个变换矩阵。

在J.Han、A.Saxena和K.Rose,“Towards jointly optimal spatialprediction and adaptive transform in video/image coding”,IEEEInternational Conference on Acoustics,Speech and Signal Processing(ICASSP),726-729页,2010年3月中,如在H.264/AVC中的帧内预测(T.Wiegland、G.J.Sullivan,G、Bjontegaard和A.Luthra,“Overview of theH.264/AVC video coding standard”,IEEE Transactions on Circuits andSystems for Video Technology,2003年7月)中,当边界信息在一个方向上可用时,针对一阶高斯-马尔可夫模型以不同于传统DCT的频率和相位分量来分析得出离散正弦变换(DST)。它们还表明:如果没有沿特定方向执行预测,则DCT性能接近于KLT。此构思被应用到H.264/AVC中的帧内预测中的垂直模式和水平模式,并且所提出的DST和传统DCT的组合被适应性地使用。已通过将DST和DCT的组合应用到H.264/AVC中的其它七种预测模式来在没有理论证实的情况下尝试实验性地扩展类似的构思,且所述尝试已表明:与MDDT相比,性能方面仅存在较小的损失(C.Yeo、Y.H.Tan、Z.Li和S.Rahardja,“Mode-dependent fast separable KLT for block-based intra coding”,ITU-T JCTVC-B024,瑞士,日内瓦,2010年7月)。

此外,DST矩阵应被适当地缩放以考虑量化缩放矩阵的影响。现有技术没有描述在HEVC中的实现中对DST矩阵系数的改变以使得缩放与DCT匹配。

因此,本领域中需要提高压缩效率并采用低复杂度变换的改进视频编解码器。

技术方案

根据本公开的一方面,提供一种用于解码视频的方法。从输入视频比特流确定帧内预测模式。根据输入视频比特流的帧内预测模式,将输入视频比特流的系数映射到M×N变换系数矩阵。根据帧内预测模式,对于变换系数矩阵,确定应用离散余弦变换(DCT)和离散正弦变换(DST)中的第一个作为逆垂直变换,并确定应用DCT和DST中的第二个作为逆水平变换。通过将DCT和DST中的第一个用于逆垂直变换并将DCT和DST中的第二个用于逆水平变换来执行包括逆垂直变换和逆水平变换的逆变换,以计算将被用于重建视频的图像的误差预测残差的近似值。

有益效果

本公开旨在针对在用于视频的帧内编码中的各种预测模式在离散正弦变换(DST)和离散余弦变换(DCT)之间进行选择。基于帧内预测模式在DST和传统DCT之间进行选择将最佳地产生实质性的压缩增益。本公开的实施例使用低复杂度变换并仅需要一个DST变换矩阵,这将促使DST的快速实现。尽管将参照HEVC(高效率视频编码)标准来描述本公开的实施例,但是本领域的普通技术人员将认识到实施例也可适用于H.264/AVC标准。

附图说明

为了更完整地理解本公开及其优点,现结合附图参考以下描述,其中,相同参考标号表示相同部件:

图1A示出根据本公开的实施例的视频编码器的高层框图;

图1B示出根据本公开的实施例的视频解码器的高层框图;

图2是根据本公开的实施例的视频编码器的一部分的框图;

图3A和图3B是示出根据本公开的实施例的使用类别1斜向模式预测图像像素的示图;

图4是示出根据本公开的实施例的使用类别2斜向模式预测图像像素的示图;

图5是示出根据本公开的实施例的使用DC预测模式预测图像像素的示图;

图6是示出根据本公开的实施例的得出用于类别1斜向模式的变换的示图;

图7A和图7B是示出根据本公开的实施例的得出用于类别2斜向模式的变换的示图;

图8示出根据实施例的用于通过对帧内预测使用DCT/DST来编码视频比特流的处理;

图9是根据本公开的实施例的视频解码器的一部分的框图;

图10示出根据实施例的用于使用DCT/DST来解码视频比特流的处理;

图11是示出根据本公开的实施例的通过将列划分为两个区域来使用类别2斜向模式预测像素的示图;

图12是示出根据本公开的实施例的当列被划分为两个区域时得出用于类别2斜向模式的变换的示图;

图13示出根据本公开的实施例的用于4点DST的DST类型4和DST类型7的基函数的图表;

图14示出根据本公开的实施例的用于8点DST的DST类型4和DST类型7的基函数的图表。

具体实施方式

根据本公开的一方面,提供一种用于解码视频的方法。从输入视频比特流确定帧内预测模式。根据输入视频比特流的帧内预测模式,将输入视频比特流的系数映射到M×N变换系数矩阵。根据帧内预测模式,对于变换系数矩阵,确定应用离散余弦变换(DCT)和离散正弦变换(DST)中的第一个作为逆垂直变换,并确定应用DCT和DST中的第二个作为逆水平变换。通过将DCT和DST中的第一个用于逆垂直变换并将DCT和DST中的第二个用于逆水平变换来执行包括逆垂直变换和逆水平变换的逆变换,以计算将被用于重建视频的图像的误差预测残差的近似值。

根据本公开的另一方面,提供一种用于编码视频的方法。基于帧内预测模式对M×N的输入图像块(X)的输入矩阵执行帧内预测以产生预测并获得M×N帧内预测残差矩阵(E)。根据帧内预测模式,对于E,确定应用离散余弦变换(DCT)和离散正弦变换(DST)中的第一个作为水平变换,并确定应用DCT和DST中的第二个作为垂直变换。通过将DCT和DST中的第一个用作水平变换并将DCT和DST中的第二个用作垂直变换来执行包括水平变换和垂直变换的正变换,以计算变换系数矩阵(E2)。

根据本公开的另一方面,提供一种用于解码视频的设备。所述设备包括反量化器和逆变换单元。反量化器根据输入视频比特流的帧内预测模式将从输入视频比特流获得的量化的变换系数索引映射到M×N变换系数矩阵。使用M×N变换系数矩阵和从输入视频比特流获得的帧内预测模式,逆变换单元根据帧内预测模式,对于变换系数矩阵,确定应用离散余弦变换(DCT)和离散正弦变换(DST)中的第一个作为逆垂直变换,确定DCT和DST中的第二个作为逆水平变换,并通过将DCT和DST中的第一个用于逆垂直变换并将DCT和DST中的第二个用于逆水平变换来执行包括逆垂直变换和逆水平变换的逆变换,以计算误差预测残差的近似值。其中,逆变换单元被进一步配置为用于使用DCT和DST中的第一个对变换系数矩阵的N个列中的每一列执行逆垂直变换,并使用DCT和DST中的第二个对逆垂直变换的输出的M个行中的每一行执行逆水平变换,以计算误差预测残差的近似值。其中,逆变换单元被进一步配置为用于使用DCT和DST中的第二个对变换系数矩阵的M个行中的每一行执行逆水平变换,并使用DCT和DST中的第一个对逆水平变换的输出的N个列中的每一列执行逆垂直变换,以计算误差预测残差的近似值。其中,逆变换单元被进一步配置为用于当将DST用于逆垂直变换和逆水平变换中的至少一个时执行逆DST类型4。其中,逆变换单元被进一步配置为用于当将DST用于逆垂直变换和逆水平变换中的至少一个时执行逆DST类型7。其中,逆DST类型7是具有八次乘法的4×4逆DST类型7的快速实现。其中,调整逆DST类型7矩阵中的多个元素中的至少一个元素,使得所述多个元素共用公因子,将乘法的数量减少到五次。

根据本公开的又一方面,提供一种用于编码视频的设备。所述设备包括统一帧内预测单元和变换单元。统一帧内预测单元基于帧内预测模式对M×N输入图像块(X)的输入矩阵执行帧内预测以产生,并获得M×N帧内预测残差矩阵(E)。变换单元根据帧内预测模式,对于E,确定应用离散余弦变换(DCT)和离散正弦变换(DST)中的第一个作为水平变换,确定应用DCT和DST中的第二个作为垂直变换,并通过将DCT和DST中的第一个用作水平变换并将DCT和DST中的第二个用于垂直变换来执行包括水平变换和垂直变换的正变换,以计算变换系数矩阵(E2)。其中,变换单元被进一步配置为用于使用DCT和DST中的第一个对E的M个行中的每一行执行水平变换,并使用DCT和DST中的第二个对水平变换的输出的N个列中的每一列执行垂直变换,以计算变换系数矩阵(E2)。其中,变换单元被进一步配置为用于使用DCT和DST中的第二个对E的N个列中的每一列执行垂直变换,并使用DCT和DST中的第一个对垂直变换的数据的输出的M个行中的每一行执行水平变换,以产生变换系数矩阵(E2)。其中,变换单元被进一步配置为用于当将DST用于水平变换和垂直变换中的至少一个时执行DST类型4。其中,变换单元被进一步配置为用于当将DST用于水平变换和垂直变换中的至少一个时执行DST类型7。其中,DST类型7是具有九次乘法的4×4DST类型7的快速实现。其中,调整DST类型7矩阵中的多个元素中的至少一个元素,使得所述多个元素共用公因子,将乘法的数量减少到五次。

在进行以下的“本发明的模式”之前,阐明贯穿本专利文档使用的某些词语和短语的定义会是有利的:术语“包括”和“包含”及其派生词表示包括但不限于;术语“或”是包括的,表示和/或;短语“与…相关”和“与其相关”及其派生词可表示包括、被包括在内、与…互连、包含、被包含在内、被连接到或与…连接、结合到或与…结合、可与…通信、与…协作、交织、并列、接近、被绑定到或与…绑定、具有、具有…的特性等;并且术语“控制器”表示控制至少一个操作的任何装置、系统或其部件,这样的装置可利用硬件、固件或软件或它们之中的至少两项的一些组合来实施。应注意:与任何特定控制器关联的功能可按本地或远程的方式被集中或被分布。贯穿本专利文档,某些词语和短语的定义被提供,本领域的普通技术人员应该理解:在许多情况下(如果不是大多数情况下),这些定义适用于如此定义的词语和短语在以前和将来的使用。

本发明的模式

本申请涉及于2010年9月8日提交的名为“LOW COMPLEXITY TRANSFORMCODING USING ADAPTIVE DCT/DST FOR INTRA PREDICTION”的第61/380991号美国临时专利申请、于2010年12月28日提交的名为“ON OPTIMALITY OFINTRA-PREDICTION MODE MAPPINGS AND LOCATION SPECIFIC CHOICE FORADAPTIVE DCT/DST”的第61/427758号美国临时专利申请、于2011年2月17日提交的名为“LOW COMPLEXITY ALTERNATE TO DST TYPE7INMODE-DEPENDENT DCT/DST FOR INTRA PREDICTION IN VIDEO CODING”的第61/444045号美国临时专利申请、于2011年3月4日提交的名为“FASTIMPLEMENTATION TO DST TYPE7IN MODE-DEPENDENT DCT/DST FOR INTRAPREDICTION IN VIDEO CODING”的第61/449484号美国临时专利申请、于2011年4月7日提交的名为“FAST IMPLEMENTATION FOR DST TYPE7”的第61/473047号美国临时专利申请、于2011年4月13日提交的名为“FAST IMPLEMENTATIONFOR FORWARD AND INVERSE DST TYPE7”的第61/475120号美国临时专利申请。第61/380991号、第61/427758号、第61/444045号、第61/449484号、第61/473047号和第61/475120号临时专利申请被转让给本申请的受让人,并由此通过引用被合并到本申请中,犹如在本文中被完全阐述。本申请由此要求第61/380991号、第61/427758号、第61/444045号、第61/449484号、第61/473047号和第61/475120号美国临时专利申请的优先权。

下面讨论图1A至图14以及用于在本专利文档中描述本公开的原理的各种实施例仅是作为说明,且不应该以任何方式被解释为用于限制本公开的范围。本领域的技术人员将理解:本公开的原理可被实施在任何适当布置的视频编码器或解码器中。

本公开旨在针对在用于视频的帧内编码中的各种预测模式在离散正弦变换(DST)和离散余弦变换(DCT)之间进行选择。基于帧内预测模式在DST和传统DCT之间进行选择将最佳地产生实质性的压缩增益。本公开的实施例使用低复杂度变换并仅需要一个DST变换矩阵,这将促使DST的快速实现。尽管将参照HEVC(高效率视频编码)标准来描述本公开的实施例,但是本领域的普通技术人员将认识到实施例也可适用于H.264/AVC标准。

视频编码联合协作小组(JCT-VC)正在考虑“考虑中的测试模型(TMuC)”(“Test Model under Consideration,”ITU-T JCTVC-B205_draft002,瑞士,日内瓦,2010年7月),以用于HEVC视频编解码器的标准化。

图1A示出根据本公开的实施例的视频编码器的高层框图。根据本发明的实施例,编码器100基于编码单元。帧内预测单元111对在当前帧105中的帧内模式的预测单元执行帧内预测,并且运动估计器112和运动补偿器115使用当前帧105和参考帧145对帧间预测模式的预测单元执行帧间预测和运动补偿。

基于从帧内预测单元111、运动估计器112和运动补偿器115输出的预测单元产生残差值。产生的残差值经过变换单元120和量化器122被输出为量化的变换系数。

量化的变换系数经过反量化器130和逆变换单元132被恢复为残差值,并且恢复的残差值经过去块单元135和环路滤波单元140被后处理,并输出为参考帧145。量化的变换系数可经过熵编码器125被输出为比特流127。

图1B是根据本公开的实施例的基于编码单元的视频解码器的高层框图。比特流155经过解析器160,使得将被解码的编码图像数据和解码所必需的编码信息被解析。编码图像数据经过熵解码器162和反量化器165被输出为反量化的数据,并经过逆变换单元170被恢复为残差值。通过将残差值添加到帧内预测单元172的帧内预测结果或运动补偿器175的运动补偿结果,残差值根据矩形块编码单元被恢复。恢复的编码单元经过去块单元180和环路滤波单元182被用于下一编码单元或下一帧的预测。

为了基于根据本发明的实施例的解码方法执行解码,图像解码器150的组件(即,解析器160、熵解码器162、反量化器165、逆变换单元170、帧内预测单元172、运动补偿器175、去块单元180和环路滤波单元182)执行图像解码处理。

现在将描述每个功能的方面。

帧内预测(111/172):帧内预测利用每一帧中的空间相关性来减少表示图片所必需的传输数据的量。帧内帧(Intra-frame)本质上是编码的第一帧,但具有较少的压缩量。另外,在帧间帧(inter frame)中可存在一些帧内块。帧内预测涉及在帧内进行预测,而帧间预测涉及在帧之间进行预测。本公开主要集中在帧内预测。

运动估计(112):视频压缩中的基本概念是当帧间预测被执行时仅存储帧之间的增量变化。在两帧中的块之间的差异由运动估计工具(MotionEstimation tool)提取。这里,预测的块被减小为运动矢量和帧间预测残差的集合。

运动补偿(115/175):运动补偿将解码由运动估计编码的图像。通过接收的运动矢量以及参考帧中的块来完成对图像的这种重建。

变换(120/132/170):变换单元被用于在帧间帧或帧内帧中压缩图像。最常用的变换是离散余弦变换(DCT)。

量化(122/130/165):量化阶段通过将每个变换系数除以特定数值来减少信息的量,以减少每个变换系数值可具有的可能值的量。因为这使得所述值落入更窄的范围,所以其允许熵编码更加简短地表示所述值。

去块和环路滤波器(135/140/182):去块的作用是用于去除由图像的逐块编码引起的编码伪影(artifact)。去块滤波器作用于图像块的边界,并去除块伪影。环路滤波器的作用是用于最小化原始图像像素和重建图像像素之间的均方差。在某种程度上,环路滤波器设法最小化由逐块编码引起的方向伪影。

这里,编码器和解码器的一部分已经被示出为独立的单元。然而,这并不旨在限制本公开的范围。如图所示,编码器100和解码器150包括若干公共部件。在一些实施例中,编码器和解码器可被实现为集成单元,例如,编码器的一个或多个部件可被用于解码。此外,编码器和解码器的一个或多个部件可被实现在一个或多个现场可编程门阵列(FPGA)、专用集成电路(ASIC)、处理器、微控制器或它们的组合中。

图2是根据本公开的实施例的视频编码器的一部分的框图。帧内预测单元(在此文档中也被称为“统一帧内预测单元111”)采用像素的矩形块作为输入,并使用来自已被重建的块的重建的像素和根据Min等人的“Unification of the Directional Intra Prediction Methods inTMuC”,ITU-T JCTVC-B100_revision02,瑞士,日内瓦,2010年7月(以下被称为“ITU-T JCTVC-B100_revision02”)的预测方向来预测这些像素。存在不同数量的可用帧内预测模式,其中,所述可用帧内预测模式具有来自如由“Unified Directional Intra Prediction(ITU-TJCTVC-B100_revision02)”规定的用于各种预测单元的帧内预测方向(例如,用于4×4预测单元的17种帧内预测方向、用于8×8、16×16和32×32预测单元的34种帧内预测方向、用于64×64预测单元的5种预测方向)的一对一的映射。然而,由于本公开的范围不限于此,因此这些仅是示例。各种帧内预测模式将在下面被进一步描述。

在预测之后,变换单元120沿水平方向和垂直方向两者来应用变换(例如,DCT/DST)。根据帧内预测模式,所述变换(沿水平方向和垂直方向)可以是传统DCT或所提出的DST。变换之后为量化器122,其中,量化器122通过将每个变换系数除以特定数值来减少信息的量,以减少变换系数可具有的可能值的量。因为这使得所述值落入更窄的范围,所以其允许熵编码更加简短地表示所述值并有助于压缩。

在帧内预测单元110中,当从沿由帧内预测方向模式(例如,“Test Modelunder Consideration”,ITU-T JCTVC-B205_draft002,瑞士,日内瓦,2010年7月(以下被称为“ITU-T JCTVC-B205_draft002”)和ITU-TJCTVC-B100_revision02”)规定的方向的像素执行帧内预测时,帧内预测模式可被划分为三种类别。本公开将描述针对所有的以下三种类别来得出新的自适应最佳变换:

1、类别1斜向模式(图3A和图3B):这里,完全从来自以下项中的任何一项的解码像素执行预测:第一行(例如,顶行)像素或第一列(例如,左侧列)像素。如ITU-T JCTVC-B205_draft002中所述的垂直模式“0”和水平模式“1”是此斜向模式的特殊情况。

2、类别2斜向模式(图4):这里,从第一行(例如,顶行)像素和第一列(例如,左侧列)像素两者执行预测。

3、DC模式(图5):这里,从所有可用的解码像素的平均值执行预测,这类似于H.264/AVC,也在ITU-T JCTVC-B205_draft002中有如此规定。

将参照图6至图11进一步解释帧内预测方向模式的所述三种类别。图6是示出根据本公开的实施例的得出用于类别1斜向模式的变换的示图。这里,沿由箭头示出的方向从第一行(例如,顶行)执行预测。在另一实施例中,第一行可不必是顶行。在可选择的实施例(类似于图3B)中,可从第一列(例如,左侧行)执行预测。具体说来,(dx,dy)对分别指示水平距离和垂直距离,并可指示预测方向。

下面的等式1假设高斯-马尔可夫模型用于一维线(行或列)背景下的图像像素(在以下讨论中,当我们意指一维线时我们使用“列”):

xk=ρxk-1+ek                [等式1]

其中,ρ是像素之间的相关系数,ek是具有零均值和方差1-ρ2的白噪声过程,并且行/列索引k=0…N。这里,x0指示边界像素,并且x1至xN是将被编码的像素。像素xk和像素xl之间的相关性由等式2给出:

Rkl|k-l|                [等式2]

其中,Rkl(也被解释为Rk,l)指示像素xk和像素xl之间的相关性,l和k指示列索引。对于2D图像情况,我们假设沿水平方向和垂直方向的可分离模型。因此,根据等式3指示像素xij和像素xmn(也被表示为xi,j和xm,n)之间的相关性:

ρ|i-m|ρ|j-n||i-m|+|j-n|               [等式3]

其中,i指示像素xij的行索引,m指示像素xmn的行索引,j指示像素xij的列索引,并且n指示像素xmn的列索引。在图6中,像素x00、x01、x02、…x0N和x10、x20、…xN0指示已经被编码的边界像素(例如,第一行和第一列)。像素xij(i,j∈{1..N})指示将被编码的像素。设根据下面的等式4给出对像素xij的预测:

>x~ij=x0(α+j)>          [等式4]

其中,指示对像素xij的预测,并且α(非负数)指示从像素x0(α+j)(像素x0(α+j)为第一行上用于预测xij的像素)到像素xij的水平距离。应注意:当a不是整数时,像素x0(α+j)以任何方式(例如,如在ITU-TJCTVC-B205_draft002中所规定的,从相邻的两个相邻像素)被插入,但为了简单起见,我们仅将预测值保持为x0(α+j),以用于分析目的。通过相似三角形的属性,我们可得出等式5:

>α=(dxdy)i>            [等式5]

因此,根据等式6给出预测误差残差:

>eij=xij-x~ij=xij-x0(α+j)>            [等式6]

根据等式7给出用于M×N图像块的误差残差的整体矩阵:

>E=X-X~>      [等式7]

其中,X是原始M×N图像块,并且是其预测。根据等式6给出矩阵E的元素“ij”。

假设可分离的像素模型,我们设法找到针对以上预测残差矩阵沿垂直方向和水平方向两者的最佳变换。具体地,为了找到E的列的垂直变换,确定使相应列的自相关矩阵对角化的矩阵。类似地,对于用于E的特定行的水平变换,我们寻找使所述特定行的自相关矩阵对角化的矩阵。例如,我们首先根据等式8考虑E的列“j”:

>Ej=e1je2j..eNj=x1j-x0(j+1dxdy)x2j-x0(j+2dxdy)..xNj-x0(j+Ndxdy)>     [等式8]

列Ej的自相关矩阵为由以下等式给出的N×N矩阵:

>RCol=E(EjEjT)=Ee1je2j..eNje1je2j..eNj>   [等式8]

其中E(.)指示期望算子。以上矩阵的项“ik”被指示为下面的等式9a至等式9c中的Rcol,ik

>RCol,ik=E(eijekj)=E[(xij-x0(j+idxdy))(xkj-x0(j+kdxdy))]>     [等式9a]

>=E[xijxkj+x0(j+idxdy)x0(j+kdxdy)-xijx0(j+kdxdy)-xkjx0(j+idxdy)]>    [等式9b]

>=ρ|i-k|+ρ|(i-k)dxdy|-ρi+k|dxdy|-ρk+i|dxdy|>      [等式9c]

从以上表达,可看出ρ=1是矩阵Rcol中的所有项的因子。我们可从Rcol因式分解常量c≡1-ρ。应注意:ρ是图像像素之间的相关系数,通常典型地接近但不等于“1”。在这个假设下,我们可根据等式10a至等式10b接近RCol,ik

>RCol,ik=c.limρ1RCol,ik1-ρ>        [等式10a]

>=c.(-1).[|i-k|+|(i-k)dxdy|-(i+k|dxdy|)-(k+i|dxdy|)]>    [等式10b]

其中,洛必达法则被应用。这可被进一步简化为等式11:

>RCol,ik=2c(1+|dxdy|)min(i,k)>      [等式11]

为了找到使Rcol对角化的矩阵,可忽略常数项并根据等式12a和等式12b找到使以下矩阵M≡min(i,k)或等同的M-1对角化的矩阵:

>M1111...11222...21233...3.1234...4........................1234...N>      [等式12a]

>M-12-10....0-12-1.....0-12......0-12...........................-10....0-11>      [等式12b]

以上矩阵的KLT(Karhunen Loeve变换)(来自W.C.Yueh,“Eigenvaluesof several tridiagonal matrices”,Applied Mathematics E-Notes,第5卷,第66-74页,2005年4月)是等式13中的以下正弦变换:

>[TS]i,j=22N+1sin(2i-1)2N+1>       [等式13]

应注意,以上表达不依赖于误差残差的列“j”。因此,以上DST可被应用为对帧内预测残差E的所有列的垂直变换。

接下来,我们考虑将被应用到E的行“i”的水平变换。可根据等式14表示行“i”的自相关矩阵:

>Rrow=Eei1ei2..eiNei1ei2..eiN>   [等式14]

在下面的等式15a至等式15c中,以上矩阵的项“mn”可由Rrowmn指示:

>Rrow,mn=E(eim.ein)=E[(xim-x0(m+idxdy))(xin-x0(n+idxdy))]>    [等式15a]

>=E[ximxin+x0(m+idxdy)x0(n+idxdy)-xinx0(m+idxdy)-ximx0(n+idxdy)]>     [等式15b]

>=ρ|m-n|+ρ|m-n|-ρi+|m-n+idxdy|-ρi+|m-n-idxdy|>    [等式15c]

同样,ρ=1是矩阵Rrow中的所有项的因子。可基于用于Rcol的相似过程来简化Rrow的项“mn”以得出等式16a、等式16b和等式17:

>Rrow,mn=climρ1Rrow,mn1-ρ>    [等式16a]

>=c.(-1).[|m-n|+|(m-n)|-(i+|m-n+idxdy|)-(i+|m-n-idxdy>  [等式16b]

>Rrow,mn=c.[2i+|m-n+idxdy|+|m-n-idxdy|-2|m-n|]>   [等式17]

给定的行i的矩阵Rrow的项“mn”取决于(m-n),从而矩阵Rrow是特普利茨(Toeplitz)。已表明对于特普利茨矩阵的情况,DCT性能接近于KLT(K.R.Rao和P.Yip,“Discrete cosine transform-algorithms,advantages andapplications”,Academic Press,1990年)。因此DCT可被应用为用于所有行的水平变换。总之,对于图3A中示出的类别1斜向模式,可应用1)DST作为垂直变换,并可应用2)DCT作为水平变换。根据对称性,可推断当如图3B所示沿水平方向应用预测时,DST应被应用为水平变换并且DCT应被应用为垂直变换。

对于HEVC中的类别1模式,表1指示基于帧内预测模式针对水平变换和垂直变换所进行的DCT/DST的选择。

表1:对于类别1斜向模式,选择DCT/DST变换作为水平变换和垂直变换

图7A和图7B是示出根据本公开的实施例的得出用于类别2斜向模式的变换的示图。在类别2中,沿由箭头示出的方向从顶行和左侧列执行帧内预测。根据实施例,(dx,dy)对可分别指示水平距离和垂直距离,并可指示预测方向。

下面的等式18假设高斯-马尔可夫模型用于1D背景下的图像像素:

xk=ρxk-1+ek           [等式18]

其中,ρ指示像素之间的相关性,ek指示具有零均值和方差1-ρ2的白噪声过程,并且索引k=0…N。这里,x0指示边界像素,并且x1至xN是将被编码的像素。像素xk和像素xl之间的相关性由等式2给出。对于2D图像,沿水平方向和垂直方向假设可分离模型。因此,根据等式3确定像素xij和像素xmn(也被表示为xi,j和xm,n)之间的相关性。

在图7A中,像素x00、x01、x02、…x0N和x10、x20、…xN0指示已被编码的边界像素(例如,第一行和第一列)。像素xij(i,j∈{1..N})指示将被编码的像素。如图所示,参照类别1斜向模式,对像素xij的预测由给出。如关于图7A所示,当预测来自第一行(例如,顶行)时,预测值由x0(j-α)给出。这里,x0(j-α)实际上是来自顶行中的相邻像素的内插像素,但为了简单起见,我们假设“j-a”是顶行中的实际物理位置。根据相似三角形的属性,得出等式19:

α=j-i(dx/dy)           [等式19]

相反地,当从左侧列执行预测(如图7B中示出)时,可根据等式20确定对xij的预测:

>x~ij=x(i-β),0>          [等式20]

同样,根据相似三角形的属性,可根据等式21确定β:

β=i-j(dy/dx)                [等式21]

因此,由等式22给出预测误差残差:

>eij=xij-x~ij=xij-x(i-j(dy/dx)),0>[等式22]

结合以上两种情况(即,从顶行执行预测和从左侧列执行预测),对于在列“j”中的像素“i”,为了记法的简单起见,预测值可被重新定义为其中,对(iRow,iCol)由等式23a至等式23b给出:

iRow=0;iCol=j-i(dx/dy),其中,预测来自顶行并且i≤j(dy/dx)                    [等式23a]

iRow=i-j(dy/dx);iCol=0),其中,预测来自顶行并且i>j(dy/dx)                [等式23b]

根据等式24给出像素的预测误差残差:

>eij=xij-x~ij=xij-xiRow,iCol>         [等式24]

根据等式7确定用于M×N图像块的误差残差的整体矩阵(E),并根据等式24给出矩阵E的元素“ij”。假设类似于对类别1斜向模式的分析,我们设法找到针对以上预测残差矩阵E沿垂直方向和水平方面两者的最佳变换。具体地,为了找到E的列的垂直变换,确定使相应列的自相关矩阵对角化的矩阵。类似地,对于用于E的特定行的水平变换,我们寻找使所述特定行的自相关矩阵对角化的矩阵。例如,我们首先根据等式25考虑E的列“j”:

>Ej=e1je2j..eNj>     [等式25]

列Ej的自相关矩阵是由等式8给出的N×N矩阵。以上矩阵的项“ik”由在等式26a至等式26c中的RCol,ik指示:

>RCol,ik=E(eij.ekj)=E[(xij-xiRow,iColj)(xkj-xjRow,jColk)]>    [等式26a]

>=E[xijxkj+xiRow,iColjxjRow,jColk-xijxjRow,jColk-xkjxiRow,iColj]>     [等式26b]

>=ρ|i-k|+ρ|iRow-kRow|+|iCol-kCol|-ρ|i-kRow|+|j-kCol||-ρ|iRow-k|+|iCol-j|>    [等式26c]

其中,如以上所述,项iRow、iCol、kRow和kCol取决于i、j和k。如果矩阵RCol的项不依赖于列j,则如同在类别1斜向模式中的情况,最佳变换可以是DST。但这里,矩阵RCol中的项取决于列j,因此,DST不会是KLT。事实上,难以分析找到所述矩阵的实际KLT。然而,我们可在数值上评估在视频编码中使用的各种变换(DST和传统DCT)与KTL相比的性能。为此,我们可测量DST和DCT的相对编码增益(可在A.Gersho和R.M.Gray,“VectorQuantization and Signal Compression”,Kluwer Academic Publishers,1992年中找到关于变换矩阵的编码增益的更多细节)。

设A指示将任何被应用于误差残差的列“j”(即,Ej)的N×N正交变换(DCT或DST)。变换系数由等式27给出:

Y=AEj        [等式27]

根据等式28给出Y的自相关矩阵:

>E[YYT]=E[AEjEjTAT]=AE[EjEjT]AT=ARCol>    [等式28]

设在Y中的元素y1、y2、…yN的方差被给出为(其可作为以上矩阵E[YYT]的对角项被获得),并且几何平均值被给出为Gj,A,其中,下标“j”指示变换A被应用的列。然后根据等式29确定对于列“j”而言DST高于DCT的相对编码增益CGj

>CGj=Gj,DCTGj,DST>     [等式29]

此外,如果我们假设N×N块的所有N个列对整体失真的贡献是相似的,则DST高于DCT的平均编码增益由等式30给出:

>CG=1NΣjCGj>       [等式30]

如果编码增益CG>“1”或CG(以dB为单位)>“0”,则对于所述特定帧内预测模式和块大小N,与DCT相比DST的性能将会更好。

根据实施例,在统一帧内预测中,预测角度被给出如下:[2,5,9,13,21,26,32]/32。所述预测角度与帧内预测模式:VER-1、VER-22、…VER-8的值dx/dy相应。作为帧内预测模式VER-2的示例,(dx/dy)的值为5/32,对于VER-8,(dx/dy)的值为32/32,等等。类似地,对于水平帧内预测模式HOR-1、HOR-2、…HOR-7,dy/dx=1/(dx/dy)的值由[2,5,9,13,17,21,26]/32给出。

特定预测模式可经由(dx/dy)值来指定。用于对于特定块大小N和帧内预测模式在正弦变换或余弦变换之间进行选择作为垂直变换的步骤可被总结如下:

1、对于每一列j=1…N

(a)对于给定的值ρ,在数值上计算列“j”的自相关矩阵,即,RCol,j

(b)根据等式29获得对于列j而言DST高于DCT的编码增益,即,>CGj=Gj,DCTGj,DST.>

2、根据等式30计算DST高于DCT的整体编码增益。如果CG>“1”,则使用DST;否则,使用DCT。

以上描述的处理被应用于在特定块大小下的所有帧内预测模式。通常,对于自然发生的视频信号,在像素之间的相关系数的值ρ可被假设约为0.95。基于以上分析,表2和表3提供对于不同值ρ=0.9、0.95和0.99以及对于块大小N=4×4、8×8、16×16和32×32选择“垂直”变换,连同DST高于DCT的编码增益CG。

表2-对于垂直模式的子集,DST高于DCT的编码增益(以dB为单位)

表3-对于水平模式的子集,DST高于DCT的编码增益(以dB为单位)

表2和表3中的正数表示DST应被选择。从以上的表,我们可推断出对于模式VER-1、VER-2、…VER-8以及H0R-6、HOR-7,当对于块大小N和相关系数ρ的所有值,CG(以dB为单位)为正时,应在所有的块大小下选择DST。根据实施例,当CG(以dB为单位)为负时,应使用DCT。

对于模式HOR-1、HOR-2、…HOR-5,通过我们的实验,我们发现当作为用于这些模式的垂直变换被应用时,DST提供比DCT更好的压缩效率。因此,我们建议对于所有的类别2模式将DST用作垂直变换。

应注意,在实践中,为了便于硬件实现,DCT和DST的不同版本可被用在H.265/HEVC或任何其它的视频编解码器中,以便减少乘法器、加法器、移位器等的数量,并支持整点运算。在此情况下,DCT和DST矩阵应被适当修改,且以上分析可直接被应用到新的矩阵。

根据对称性,可对于针对类别2斜向模式的行(水平)变换:DCT或DST的选择执行类似的分析,并且对于所有类别2斜向模式,DST可被用作水平变换。

在DC模式下,预测值是来自顶行和左侧列的像素的平均值。对于DC模式,沿垂直方向和水平方向两者,DCT是最佳的。

总之,当前存在三十四(“34”)种不同的统一“方向”预测模式。以下表4的前三列取自ITU-T JCTVC-B205_draft002,并且最后一列指示预测模式在类别1(在帧内垂直的情况下仅从顶行预测或在帧内水平的情况下仅从左侧列预测)、类别2(从顶行和左侧列两者预测)和DC模式下被如何划分。在每种帧内预测模式中的最佳变换是DST和DCT的组合。应注意,虽然用于角方向预测的角度在表3中示出,即,从-8至8,但是一对一的映射存在于这些角度到如在ITU-T JCTVC-B205_draft002中规定的统一帧内预测的各种模式之间。

表4:对于帧内预测模式的所有的不同类别,选择DCT/DST作为水平变换和垂直变换

在表4中,帧内预测模式列(IntraPredMode)指示与特定帧内预测模式(例如,如在ITU-T JCTVC-B205_draft002中所定义的)相应的索引。帧内预测类型列(IntraPredType)指示预测模式是intra-vertical(帧内垂直)、intra-horizontal(帧内水平)还是intra-DC(帧内DC)。帧内预测角度标识(IntraPredAngleID)具有如在“ITU-T JCTVC-B205_draft002”中所规定的一对一的映射,用于角度(dx/dy)和帧内预测方向。斜向模式的类别指示帧内预测模式属于类别1斜向模式、类别2斜向模式还是DC模式。行(水平)变换指示将被用在相应帧内模式的行变换中的DCT/DST变换,并且列(垂直)变换指示将被用在相应帧内预测模式的列变换中的DCT/DST变换。

可由编码器使用表4来确定对于行(即,水平)变换和列(即,垂直)变换中的每一个使用DST还是DCT。对于类别1斜向模式和类别2斜向模式,根据以上所述的分析,表4仅是各种帧内预测模式的类别的示例。根据其它实施例,可使用对于每种帧内预测模式具有不同DST/DCT映射的表。

图8示出根据实施例的用于通过对帧内预测使用DCT/DST来编码视频比特流的处理。根据实施例,图1A的编码器100可执行处理1000。在块1010中,M×N矩形块被输入(例如,在统一帧内预测单元111)。根据实施例,M×N矩形块(也被称作)可被输入,作为M×N输入矩阵。帧内预测单元111在块1010中对X执行帧内预测,并输出帧内预测残差E和帧内预测模式索引。根据实施例,统一帧内预测单元111首先基于X确定帧内预测模式(例如,通过使用ITU-T JCTVC-B100_revision02中公开的技术)。基于所述帧内预测模式,统一帧内预测单元111计算对X的预测来确定。然后,可根据等式7计算帧内预测残差E。

在块1020中,编码器确定应用DCT还是DST作为水平变换。根据实施例,块1020可由变换单元120执行。即,在块1020中,编码器可基于在块1010中确定的帧内预测模式根据表4查找相应的水平变换。或者,编码器可基于前面所讨论的分析(即,通过计算相对编码增益CG)确定水平变换。

如果DCT被确定用于水平变换,则变换单元120在块1030中使用DCT对M个行中的每一行进行水平变换。即,在块1030中,根据等式32,通过将帧内预测残差E乘以N×N DCT矩阵来应用DCT,以确定水平变换的输出E1

E1=EC         [等式32]

相反地,如果DST被确定用于水平变换,则变换单元120在块1035中使用DST对M个行中的每一行进行水平变换。即,在块1035中,根据等式33,通过将帧内预测残差E乘以N×N DST矩阵(S)来应用DST,以确定E1

E1=ES              [等式33]

在块1040中,编码器确定应用DCT还是DST作为垂直变换。根据实施例,块1040可由变换单元120执行。即,在块1040中,编码器可基于在块1010中确定的帧内预测模式根据表4查找相应的垂直变换。或者,编码器可基于之前所讨论的分析(即,通过计算相对编码增益CG)确定垂直变换。

如果DCT被确定用于垂直变换,则变换单元120在块1050中使用DCT对N个列中的每一列进行垂直变换。即,在块1050中,根据等式34,通过将M×M DCT矩阵的转置(CT)乘以E1来将DCT应用到E1,以确定在执行水平变换和垂直变换两者之后的变换系数E2

E2=CTE1          [等式34]

相反地,如果DST被确定用于垂直变换,则变换单元120在块1055中使用DST对N个列中的每一列进行垂直变换。即,在块1055中,根据等式35,通过将M×M DST矩阵的转置(ST)乘以E1来将DST应用到E1,以确定E2

E2=STE1            [等式35]

然后,由量化器122在块1060中量化E2以输出量化的变换系数块E2。根据实施例,量化运算是非线性的。E、E1、E2和E3全部为M×N矩阵。

对于在M×N量化的变换系数块E3中的每个元素,索引被产生,其中,所述索引随后经过视频路径(video pipeline)中的各种模块,并在视频比特流中被发送。

在另一实施例中,垂直变换可在水平变换之前被执行,使得块1040至块1055在块1020至块1035之前被执行。

图9是根据本公开的实施例的视频解码器的一部分的框图。反量化器165。反量化器165将在比特流中接收的索引映射到量化的变换系数值E3(这些值与正量化模块的输出完全相同)。

在反量化之后,逆变换单元170根据确定的帧内预测模式沿水平方向和垂直方向两者应用逆变换(DCT/DST)。所述阵内预测模式也可在视频比特流中提供,作为逆变换单元的输入。取决于帧内预测模式,逆变换(沿水平方向和垂直变换)可以是传统逆DCT或所提出的逆DST。逆变换之后是帧内预测单元172,通过根据帧内预测模式通过执行反向帧内预测来重建帧内块。

图10示出根据实施例的用于使用DCT/DST来解码视频比特流的处理。根据实施例,处理1200可由图1B的解码器150执行。为了说明的目的,处理1200将被描述为对处理1100的输出数据进行解码。在块1210中,解码器接收与量化的变换系数矩阵的元素相应的索引,并执行反量化以输出量化的变换系数矩阵。例如,反量化器165接收比特流中用于量化的变换系数矩阵的索引,并执行反量化以输出变换系数矩阵E3

在块1220中,解码器确定应用DCT还是DST作为逆垂直变换。根据实施例,块1220可由逆变换单元170执行。在块1220中,解码器可基于帧内预测模式根据表4来查找相应的垂直变换。

如果DCT被确定用于垂直变换,则逆变换单元170在块1230中使用DCT对N个列中的每一列进行逆垂直变换。例如,在块1230中,根据等式36,通过将M×M逆DCT矩阵乘以变换残差矩阵E4应来用逆DCT。

E4=C.E3               [等式36]

其中,E4指示水平变换残差矩阵,并且C指示M×M逆DCT矩阵。

相反地,如果DST被确定用于垂直变换,则逆变换单元170在块1235中使用DST对N个列中的每一列进行逆垂直变换。例如,在块1235中,根据等式37,通过将M×M逆DST矩阵(S)乘以变换残差矩阵E4来应用逆DST:

E4=SE3          [等式37]

在块1240中,解码器确定应用DCT还是DST作为逆水平变换。根据实施例,块1240可由逆变换单元1220执行。在块1240中,解码器可基于在块1210中确定的帧内预测模式根据表4查找相应的水平变换。

如果DCT被确定用于水平变换,则逆变换单元170在块1250中使用DCT对M个行中的每一行进行逆水平变换。例如,在块1250中,根据等式38,通过将水平变换残差矩阵E4乘以N×N逆DCT矩阵的转置来应用逆DCT:

E5=E4CT                 [等式38]

其中,E5指示误差预测残差E的近似值,并且CT指示N×N逆DCT矩阵的转置。

相反地,如果DST被确定用于水平变换,则逆变换单元170在块1255中使用DST对M个行中的每一行进行逆水平变换。例如,在块1255中,根据等式39,通过将水平变换残差矩阵乘以N×N逆DST矩阵(ST)的转置来应用逆DST:

E5=E4ST              [等式39]

在块1260中,解码器基于误差预测残差的近似值和帧内预测模式来重建图像。例如,在块1260中,重建单元1130对于E6(即,误差预测残差E的近似值)和帧内预测模式执行反向帧内预测来重建M×N图像块X。

在另一实施例中,逆水平变换可在逆垂直变换之前被执行,使得块1240至块1255在块1220至块1235之前被执行。

图11是示出根据本公开的实施例的通过将列划分为两个区域来使用类别2斜向模式预测像素的示图。这里,从像素的左侧列和顶行两者执行预测。如前面给出的对于针对类别2斜向模式确定变换DCT还是DST的分析中,为了计算预测残差矩阵E和矩阵E的列j(各个行i)的自相关矩阵,产生的列j(各个行i)的自相关矩阵不具有像类别1斜向模式的自相关矩阵那样好的结构。另外,自相关矩阵取决于列“j”,意味着对于每一列存在不同的KLT。虽然可针对预测残差E矩阵的N个列中的每一列计算单独的KLT,但是每个方向针对N个不同变换的计算复杂度远远高于简单地使用1个诸如DCT或DST的变换的计算复杂度。

为了以DST和DCT变换尽量实现低复杂度变换编码方案,可应用以下方法:

考虑列“n”将被划分为两个分区:如图11中示出的P1和P2,其中,1≤n≤N。设在P1中像素的数量为K,其中,0≤K≤N。从像素的顶行预测顶部分区P1中的所有像素,二从左侧列预测分区P2中的所有像素。

根据预测方向将列划分为两个分区。在顶部分区(即,P1)中的像素被从顶行预测,而在底部分区中的像素被从左侧列预测。

对于分区P1中的像素,可执行如对类别1斜向模式所进行的类似分析,其中,预测来自顶行,并且对垂直变换进行评估。基于此分析,确定对于分区P1中的像素,DST将是最佳变换。对于分区P2,从左侧列(即,沿水平方向)执行预测。因此,对于分区P2中的这些像素,我们可简单采取DCT作为变换。

应注意,以上方法引出了更简单的变换:DST和DCT。但这里,将需要对分区P1像素和(N-K)点P2像素执行K点DST。此外,分区P1中的像素的数量K在列间变化,这将在单个图像块中需要不同大小的DST和DCT。这意味着,即使变换更简单了,但无论是DST还是DCT,变换长度在列间变化,并且对于图像块将需要具有多个不同大小的DST和DCT的较大成本的实现。为了避免这种较大成本的实现,可根据本公开的实施例,使用仍然优于现有技术的以下子最佳方案。如果列中的大多数像素属于分区P1,即,则DST将被用于整个列;否则,DCT将被使用。以上方法背后的基本原理是当大多数像素位于分区P1中时,预测误差残差将由正弦模拟,类似地,当大多数像素位于分区P2中时,预测误差残差由余弦模拟。

类似的分析可被应用于此图像块中的所有行,以根据大多数像素被从左侧列预测还是从顶行预测而在DST和DCT之间进行自适应选择。这在图12中示出。

图12是示出根据本公开的实施例的当列被划分为两个区域时得出用于类别2斜向模式的变换的示图。根据实施例,在类别2斜向模式下,在各种列和行之间自适应地应用DCT/DST。在数学上,如果TS和TC指示DST和DCT,则我们可写出如下的全部变换运算:

>Y=TCTX11000TC+TCT00X210TS+TST0X1200TC+TST000X22TS>      [等式40]

其中,>X=X11X12X21X22>是图像块的四个分区,例如,在图像12中,对于8×8块大小,X11是DCT被应用为水平变换和垂直变换两者的左上2×6区域;X12是右上2×2区域;X21是左下6×6区域;并且X22是右下6×2区域。

应注意,等式40不意味着应用四个变换。在实际实现中,我们可简单应用单个独立的变换。此构思是为了基于帧内预测模式找到分区X11、X12、X21和X22。然后,垂直变换TC可被应用于左侧分区,即,>XLeft=X11X21,>并且TS可被应用于右侧分区,即,被应用到>XRight=X12X22.>类似地,当我们进行水平变换时,我们可将TC应用于顶部分区,即,XTop=[X11 X12],且TS可被应用到底部分区,即,XBottom=[X21 X22]。

根据实施例,为了包含量化缩放矩阵的作用,DST矩阵需要在实现中被适当地修改。具体地,如果S和C指示在块大小下(例如,块大小N×N,其中,N通常可以是视频编码中的4、8、16、32或任何大于0的正整数)的原始DST和DCT矩阵。B指示量化缩放矩阵,并且C'=B.C指示视频编解码器中的DCT实现,然后应该在实现中使用的修改的DST矩阵由S'=B.S=C'.inv(C).S给出,其中,“.”指示标准矩阵乘法。可按使用逆DCT矩阵的类似方式来获得逆DST矩阵。

作为示例,我们接下来提供当移位7比特时可在H.264/AVC标准中用于实现针对DCT的DST类型7的修改的4×4DST矩阵和8x8DST矩阵:

正4×4DST变换由等式41给出:

>S=29117848755117-29-133740-7411784-11755-46>       [等式41]

逆4×4DST变换由等式42给出:

>invS=295884435558-29-66740-745884-5855-23>      [等式42]

8×8DST变换由等式43给出:

>329811118017516794686316713498-32-149-139-1269218650-126-169-64111167118149-73-16763180-26-18614068-13934157-126-73180157-34-94186-92-68164-149169-1262668-140186-12598175-180125-149118-9850-34>

[等式43]

根据另一实施例,在针对帧内预测模式的以上DCT/DST变换方案中,DST类型4可替代DST类型7被用作变换。在DCT/DST方案中使用DST类型4作为对最佳DST类型7的低复杂度替代方案的优点如下:

1、DST类型4可重新使用(a)相同量化表和(b)相同变换核,作为在H.264/AVC中的DCT类型2,其中,DCT类型2通常在视频编码中用作变换以编码预测残差。重新使用相同量化表和反量化表以及变换分量将减少实现成本。

2、通过使用相同变换内核的核(transform kernel core),基于模式的DCT/DST的DST分量将也不需要矩阵乘法,且与标准DCT类型2的快速蝶型算法相同的快速蝶型算法可被使用。这会减少编码/解码时间。

3、用于DST类型4和DST类型7的基函数分别在大小4和大小8的情况下绘制在图13至图14中。正如可看到的,DST类型4和DST类型7的基函数几乎相同,因此DST类型4可被用作对DST类型7的低复杂度替代方案,其中,DST类型7是基于模式的DCT/DST中的最佳变换。因此,这将是由于使用DST类型4代替DST类型7而带来的可忽略不计的性能损失。

4、类似的意见适用于大小16、32和更大。因为在大小N×N下的DST类型4可得自在大小2N×2N下的DCT,所以在正在进行的HEVC标准化中,使用32×32DCT,在基于模式的DCT/DST中的DST类型4可被用于高达16×16的大小。这将减少实现成本。

根据实施例,可使用整数DST类型4矩阵。为了减少编码/解码时间,蝶型变换结构通常被用于代替全矩阵乘法。此外,为了所述实现,变换系数被转换为整数而不是浮点数。然而,如果针对DST类型4矩阵需要全矩阵乘法实现,则DST类型4矩阵必须首先被缩放,然后浮点矩阵项必须被舍入为整数。根据所述实施例,特定矩阵可被用于此目的。

通常,因为量化失真可随后在变换域中被估计,所以产生的指示为D的整数DST矩阵的正交性是非常可取的属性。此外,由于D的逆矩阵是D的转置,因此实现成本被降低。应注意:当产生的整数变换并非完全正交时,即使在没有变换系数量化的情况下也存在失真。这对于高比特率编码,特别是无损编码而言是缺点。这可被说明如下:具体地,对于输入矩阵X,设Y=DT.X.D指示变换系数,并设Z=D.Y.DT=D.DT.X.D.DT表示对于2d可分离变换的源重建(我们假设这里没有量化,并且[]T标记法指示矩阵转置运算)。然后,如果整数变换D并非完全正交,则由于D.DT不会是单位矩阵,因此会在X和Z中存在失真(差异)。

接下来,我们提出用于DST类型4的正交整数版本的推导:

在大小4×4下的浮点DST类型4矩阵由等式44给出:

>S4=SineMatrix_Type4=0.13790.39280.58790.69350.39280.69350.1379-0.58790.58790.1379-0.69350.39280.6935-0.58790.3928-0.1379>    [等式44]

可如以下等式45获得DST类型4矩阵的基于整数的近似值:

S4_Int_1=round(S4*14.5)/sqrt(221)

>=1/sqrt(221)*269106102-992-10610-96-2>         [等式45]

在以上等式45中,1/sqrt(221)是归一化因子,并且如果对于DST类型4需要全矩阵乘法,则1/sqrt(221)可被合并在缩放矩阵和量化矩阵中。

类似地,在稍微更高的精度下,以下DST类型4矩阵可被使用:

S4_Int_2=round(S4*21.0)/sqrt(442)

>=1/sqrt(442)*3812158153-12123-15815-128-3>      [等式46]

同样,1/sqrt(442)是归一化因子,并且如果对于DST类型4实现需要全矩阵乘法,则1/sqrt(442)可被合并在缩放矩阵和量化矩阵中。

以上在等式45至等式46中推导的DST类型4矩阵的整数版(S4_Int_1和S4_Int_2)是完全正交的,即,S4_Int_1T×S4_Int_1=I;S4_Int_2T×S4_Int_2=I,其中,I是4×4单位矩阵。因此在无损编解码器中将不存在由变换运算引起的失真。

为了克服用于适当缩放的DST类型7的全矩阵乘法的缺点(为了保持量化矩阵和反量化矩阵的相同集合),接下来,我们提出(a)使用用于在大小4×4下的“适当缩放的”DST类型7的快速实现。DST类型7的快速实现的优点是:与在具有大小“4”输入向量的大小4×4下的DST的全矩阵乘法中的十六次乘法相比,所述快速实现采用更少的乘法。我们提出的正DST采用九次乘法,而逆DST使用八次乘法。这将减少在硬件方面的实现成本,其中,乘法器是昂贵的,而加法器和移位器是相对廉价的。从原始实现至所提出的实现,针对正DST实现和逆DST实现的总百分比降低分别为(16-8)/16*100=50%和(16-9)/16*100=43.75%。

快速正4×4DST类型7矩阵:在等式41中给出为了在H.264/AVC DCT的量化矩阵中并入缩放矩阵而适当缩放的4×4DST类型7矩阵。全矩阵乘法将需要十六次乘法和十二次加法。为了减少需要的乘法的数量,用于矩阵乘法的以上逻辑可经由等式47中的以下运算来实现:

c[0]=block[0]+block[3];

c[1]=block[1]+block[3];

c[2]=74*block[2];

tmp[0]=29*c[0]+55*c[1]+c[2];

tmp[1]=117*(block[0]+block[1]-block[3]);

tmp[2]=84*c[0]-29*c[1]-c[2];

tmp[3]=87*c[O]-133*c[1]+117*block[2];      [等式47]

其中,block[0]…block[3]指示维4×1的输入向量,并且c[0]、c[1]和c[2]是中间变量,而tmp[0]…tmp[3]是维4×1的输出向量。通过进行以上运算,仅需要九次乘法和十次加法,替代之前描述的十六次乘法和十二次加法。

乘法和加法中节省的百分比为(16-8)/16*100=50%和(12-10)/12*100=16.67%。

快速逆DST类型7:为了经由矩阵乘法在等式42中进行4×4逆DST的运算,需要十六次乘法和十二次加法。为了减少需要的乘法的数量,用于矩阵乘法的以上逻辑可经由等式48中的以下运算来实现:

c[0]=block[0]-block[2];

c[1]=58*block[1];

c[2]=block[2]-block[3];

tmp[0]=29*c[0]-c[1]+55*c[2]-((block[3]<<3)+(block[3]<<2));

tmp[1]=55*c[0]-c[1]-84*c[2]+(block[3]<<4)+(block[3]<<1);

tmp[2]=74*(block[0]-block[2])+58*block[3];

tmp[3]=84*c[0]-c[1]-29*c[2]+(block[3]<<2)-(block[3]<<1))     [等式48]

其中,block[0]…block[3]指示维4×1的输入向量(在视频编码的背景下,这是就在逆变换之前的输入)。c[0]、c[1]和c[2]是中间变量,而tmp[0]…tmp[3]是维4×1的输出向量。通过进行以上运算,仅仅需要八次乘法、十六次加法和六次移位。在乘法中节省的百分比为(16-8)/16*100=50%。加法器成本增加了(16-12)/12*100=33.33%。然而,因为加法器具有比乘法器低得多的硬件实现成本,所以用于提出的逆变换的总实现成本仍然较低。

下面在等式49中给出等式42中的逆变换的不同实现:

c[0]=block[0]-block[2];

c[1]=58*block[1];

c[2]=block[2]-block[3];

c[3]=12*block[3];

tmp[0]=29*c[0]-c[1]+55*c[2]-c[3];

tmp[l]=55*c[0]-c[1]-84*c[2]+c[3]+(c[3]>>1);

tmp[2]=74*(block[0]-block[2])+58*block[3];

tmp[3]=84*c[0]-c[1]-29*c[2]+(c[3]>>1)        [等式49]

其中,block[0]…block[3]指示维4×1的输入向量,c[0]、c[1]和c[2]是中间变量,而tmp[0]…tmp[3]是维4×1的输出向量。

这里,在乘法中节省的百分比为(16-10)/16*100=37.5%。加法器成本增加了(14-12)/12*100=16.67%。另外,存在两次移位。然而,因为加法器和移位器具有比乘法器低得多的硬件实现成本,所以用于提出的逆变换的总实现成本仍然较低。

一些另外的需要注意的点为:1)我们没有改变在舍入以及由于量化矩阵而并入缩放之后获得的DST矩阵中的值。如果DST矩阵中的项被改变,则不同的快速实现可被类似地得出;2)还注意,如果DST矩阵中的项被改变,则理论上,基本向量的范数不应该被改变。具体地,如果基本向量中的一些项被增加了,则其它项应该被减小。如果所有项被增加了,则这会导致变换不稳定;3)因为舍入的非线性运算,所以在DST正矩阵和DST逆矩阵中的矩阵不是完全正交的。当找到完全正交的矩阵时,找到快速变换的过程将类似于减少乘法器,等等;4)等式49的最后子等式也可被写为:

tmp[3]=((84*c[0]-c[1]-29*c[2]+(c[3]>>1)+rnd_factor)>>shift_bits;    [等式50]

其中,shit_bits是针对变换矩阵而移位的比特的数量,并且rnd_factor是舍入因子=(1/2*2^(shit_bits)),视频编码中大多数都这样来执行。

接下来,我们提出等式13中的DST类型7矩阵的低复杂度实现。在下面的等式51中给出在7比特移位和舍入之后的在大小“4”下的DST矩阵:

>S7,round=round(128*22N+1sin(2i-1)2N+1)>

>=2955748474740-7484-29-745555-8474-29>       [等式51]

其中,基本向量为沿行。为了从用于全矩阵乘法的十六次减少需要的乘法的数量,我们对DST矩阵的元素进行以下改变:即,将“29”改变至“28”,并将“55”改变至“56”。

>S7,round,approx=2856748474740-7484-28-745656-8474-28>      [等式52]

其中,我们将“29”改变至“28”,并将“56”改变至“55”,因为“28”、“56”和“84”具有与“28”自身相同的最大公因子(HCF),并且我们可因此使用以上DST矩阵的结构用于以下快速实现。本质上,DST类型7矩阵中的多个元素中的至少一个元素被调整,使得所述多个元素共用公因子。在我们的示例中,我们将所得的具有元素“28”和“56”的近似DST矩阵称为“(28,56)DST”,而我们把原始DST矩阵叫做“(29,25)DST”。应注意,在实际的实现中,将数“29”改变至数“28”并将数“55”改变至数“56”对视频编码具有可以忽略的压缩性能影响。但是利用这些改变,我们可具有用于DST的仅有五次乘法的快速实现,如下面所提出,替代全矩阵乘法中的十六次。

此外,应注意,“28”是“4”的倍数,并且“56”是“8”的倍数。因此在“28”和“56”中最小的两个和三个不重要比特分别为“0”,并且在硬件实现中,相比于作为素数的“29”和具有两者都是素数的因子“5”和“11”的“55”,乘以“28”和“56”将更容易。

具体地,针对输入[x0,x1,x2,x3]T和输出[y0,y1,y2,y3]T=S7,round,approx.[x0x1,x2x3]T在等式52中的4点快速正(28,56)DST变换可经由等式53中的以下逻辑来实现:

c0=x0+x3

c1=x1+x3

c2=x0-x1

[等式53]

y0=((28*(c0+(c1<<1))+c3)+rnd_factor)>>shift_bits

y1=((74*(x0+x1-x3)+rnd_factor)>>shift_bits

y2=((28*(c2+(c0<<1))-c3)+rnd_factor)>>shift_bits

y3=((28*((c2<<1)-c1)+c3)+rnd_factor)>>shift_bits

其中,c0、c1、c2和c3是中间值,“<<k”和“>>k”意味着分别左移k比特和右移k比特,shift_bits=7比特并且rnd_factor=(1<<shift_bits)>>1=64。

应注意,rnd_factor的添加和按照shift_bits的移位在视频压缩中是实际必需的,并且通常针对所有变换运算来执行,其中,变换矩阵在舍入运算期间被初始移位(在以上情况下,我们已经移位7比特,并且该可变的shift_bits根据实现可以是任何正整数K(例如,K=1、2或10等),其中,输出被下移K比特)。

以上快速矩阵实现仅具有五次乘法、十一次加法和三次右移位(忽略rnd_factor的添加和按照shift_bits的右移位)。每次左移仅为一个比特,并且在硬件方面很廉价。应注意,我们已经忽略了加法、与rnd_factor相关的移位以及shit_bits的数量,这连同舍入也将存在于DST S7的全矩阵乘法实现中。

在等式54中给出针对输入[y0 y1,y2 y3]T和输出[x0,x1,x2,x3]T=(S7,round,approx)T.[x0 x1,x2 x3]T用于28,56)DST的4点快速逆DST变换:

c0=y0+y2

c1=y2+y3

c2=y0-y3

[等式54]

x0=((28*(c0+(c1<<1))+c3)+rnd_factor)>>shift_bits

x1=((28*((c2<<1)-c1+c3)+rnd_factor)>>shift_bits

x2=((74*(y0-y2+y3))+rnd_factor)>>shift_bits

x3=((28*((c0<<1)+c2)-c3)+rnd_factor)>>shift_bits

其中,c0、c1、c2和c3是中间值,shift_bits=7比特,并且rnd_factor=(1<<shift_bits)>>1=64。

此外,应注意变量shift_bits根据实现可以是任何正整数K(例如,K=1、2、10、20等),其中,输出被下移K比特。

乘法的总节省在于从全矩阵乘法中的十六次到以上提出的正(28,56)DST和逆(28,56)DST两者的快速实现中的五次。在乘法中节省的百分比为(16-5)/16*100=68.75%。对于加法,数量从全矩阵乘法中的十二次降低为以上快速实现中的十一次。应注意,通常,加法和移位被认为在硬件中廉价。此外,提出的方案中的乘法仅乘以两个不同的数:只有“28”和“74”,其中,可使用两个不同的寄存器来存储所述两个不同的数。

尽管本公开讨论一些特定示例帧内预测模式(即,在表4中),但是这不旨在限制范围。在其它的实施例中,在没有脱离本公开的范围的情况下也可添加针对其选择水平变换和垂直变换的其它预测模式。

尽管已利用示例性实施例描述了本公开,但是各种变化和修改可被建议给本领域的技术人员。本公开意在涵盖落入附加权利要求的范围内的这些改变和修改。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号