帧内预测模式的高效视频编码和解码的方法和装置
相关申请的交叉引用
本申请要求于2009年9月14日提交的美国临时申请序列号61/242,205(专利代理人案号PU090120)的权益,其通过引用而被整体合并于此。
技术领域
本原理总地涉及视频编码和解码,并且更具体地涉及帧内预测模式的高效视频编码和解码的方法和装置。
背景技术
国际标准化组织/国际电工委员会(ISO/IEC)运动图像专家组4(MPEG-4)第10部分高级视频编码(AVC)标准/国际电信联盟,电信部门(ITU-T)H.264建议书(下文称为“MPEG-4AVC标准”)是将空间定向预测应用于帧内编码的第一个视频编码标准。帧内编码的空间定向预测提供了更灵活的预测框架,因此较之于只在变换域中进行帧内预测的前标准极大地提高了编码效率。依照MPEG-4AVC标准,使用周围可用样本—可在相同切片内用在解码器上的以前重构样本进行空间帧内预测。对于亮度样本,可以基于4×4块(表示成Intra_4×4),基于8×8块(表示成Intra_8×8)和基于16×16宏块(表示成Intra_16×16)地进行帧内预测。转到图1,用标号100总体表示针对4×4块基(Intra_4×4)的MPEG-4AVC标准定向帧内预测。用标号110总体表示预测方向,用标号120总体表示图像块,以及用标号130总体表示当前块。除了亮度预测之外,还进行独立色度预测。对于Intra_4×4和Intra_8×8,总共存在九种预测模式,对于Intra_16×16,总共存在四种预测模式,以及对于色度成分,总共存在四种预测模式。编码器通常选择使预测块与要编码的原始块之间的差值最小化的预测模式。表示成I_PCM的另一帧内编码模式允许编码器可以简单地绕过预测和变换编码处理。它使编码器可以精确地表示样本的值并不会限制解码图像质量地对可能包含在编码宏块中的位数设置绝对极限。
转到图2,用标号200总体表示MPEG-4AVC标准的Intra_4×4模式的预测样本的标记。图2示出了以前编码和重构的并因此可用在编码器和解码器上形成预测的在当前块上方和左侧的样本(用大写字母A-M表示)。
转到图3B-J,用标号300总体表示MPEG-4AVC标准的Intra_4×4亮度预测模式。使用Intra_4×4亮度预测模式300并根据样本A-M计算预测块的样本a,b,c,...,p。图3B-J中的箭头表示每种Intra_4×4模式300的预测方向。Intra_4×4亮度预测模式300包括模式0-8,模式0(图3B,用标号310表示)对应于垂直预测模式,其中模式1(图3C,用标号311表示)对应于水平预测模式,模式2(图3D,用标号312表示)对应于DC模式,模式3(图3E,用标号313表示)对应于左下对角模式,模式4(图3F,用标号314表示)对应于右下对角模式,模式5(图3G,用标号315表示)对应于垂直偏右模式,模式6(图3H,用标号316表示)对应于水平偏下模式,模式7(图3I,用标号317表示)对应于垂直偏左模式,以及模式8(图3J,用标号318表示)对应于水平偏上模式。图3A示出了与每种Intra_4×4模式300相对应的一般预测方向330。
在模式3-8中,从预测样本A-M的加权平均中形成预测样本。Intra_8×8基本上使用与4×4预测相同的概念,但通过块大小8×8以及通过预测器的低通滤波来提高预测性能。
转到图4A-D,用标号400总体表示与MPEG-4AVC标准相对应的四种Intra_16×16模式。四种Intra_16×16模式400包括模式0-3,其中模式0(图4A,用标号411表示)对应于垂直预测模式,模式1(图4B,用标号412表示)对应于水平预测模式,模式2(图4C,用标号413表示)对应于DC预测模式,以及模式3(图4D,用标号414表示)对应于平面预测模式。帧内编码宏块的每种8×8色度成分从上方和/或左侧的以前编码色度样本中预测,并且两种色度成分使用相同预测模式。除了模式的编号不同之外,四种预测模式与Intra_16×16非常相似。这些模式是DC(模式0)、水平(模式1)、垂直(模式2)和平面(模式3)。
必须将对每个4×4/8×8/16×16块的帧内预测模式的选择传信给解码器,这可能潜在地需要大量位。H.264/AVC拥有传信帧内模式以避免使用大量位的特定方法。将Intra_4×4作为例子,相邻4×4块的帧内模式往往是关联的。为了利用这种关联性,在H.264/AVC中使用预测编码来传信帧内模式。转到图5,用标号500总体表示当前块E及其相邻块A,B和C。对于每个当前块(诸如图5中的块E那样),编码器和解码器计算最可能预测模式—块A和块B的预测模式的最小者。如果这些相邻块中的一个不可用(例如,在当前切片之外或未以Intra_4×4模式编码),则将遗漏块(A或B)的相对模式值设置成2(DC预测模式)。
编码器发送每个4×4的标志pr_intra4×4_pred_mode。如果该标志等于“1”,则使用最可能预测模式。如果该标志等于“0”,则发送另一个参数rem_intra4×4_pred_mode来指示模式的改变。
如果rem_intra4×4_pred_mode小于当前最可能预测模式,则将预测模式设置成rem_intra4×4_pred_mode,否则将预测模式设置成(rem_intra4×4_pred_mode+1)。
这样,只需八个值(0到7)来发送所选rem_intra4×4_pred_mode以传信当前帧内模式(0到8)。
Intra8×8的传信与Intra4×4相同。以Intra16×16模式编码的亮度或以帧内模式编码的色度的预测模式在宏块首标中传信,在这些情况下都不使用模式的预测编码。
尽管MPEG-4AVC标准中的最可能模式计算简单,并减少了编码预测模式所需的位数,但它基于相邻块的空间特性,而不是基于要编码的当前块的空间特性。结果,在捕捉当前块的局部空间特性方面不是最佳的。
如何传信帧内预测模式对于当前视频编码器能否高效帧内编码具有重要意义。已经观察到,由于解码(重构)帧内预测残差往往呈现与所选帧内预测模式高度关联的某种空间图案,所以帧内预测可能无法完全消除视频信号的空间关联性。例如,对于垂直图案的图像,往往选择垂直帧内预测模式。我们观察到,解码残差也具有垂直图案。如前所述,这是因为通过垂直帧内预测不能完全消除原始信号中的垂直关联性。但是,没有一种现有技术利用帧内预测模式编码的这种关联性。
发明内容
现有技术的这些和其它缺陷和缺点通过本原理来解决,本原理针对帧内预测模式的高效视频编码和解码的方法和装置。
按照本原理的一个方面,提供了一种装置。所述装置包括视频编码器,用于通过在所述视频编码器上确定用于重构画面的解码帧内预测模式残差的空间图案来编码画面中的至少一个块的画面数据。所述解码帧内预测模式残差是通过逆量化和逆变换所述块的原始版本与至少一个参考块之间的变换和量化差获得的。所述空间图案用于确定编码所述块的帧内预测模式。
按照本原理的另一个方面,提供了一种用在视频编码器中的方法。所述方法包括通过在所述视频编码器上确定用于重构画面的解码帧内预测模式残差的空间图案来编码画面中的至少一个块的画面数据。所述解码帧内预测模式残差是通过逆量化和逆变换所述块的原始版本与至少一个参考块之间的变换和量化差获得的。所述空间图案用于确定编码所述块的帧内预测模式。
按照本原理的又一个方面,提供了一种装置。所述装置包括视频解码器,用于通过在所述视频解码器上确定用于重构画面的解码帧内预测模式残差的空间图案来解码画面中的至少一个块的画面数据。所述解码帧内预测模式残差是通过逆量化和逆变换所述块的原始版本与至少一个参考块之间的变换和量化差获得的。所述空间图案用于确定解码所述块的帧内预测模式。
按照本原理的再一个方面,提供了一种用在视频解码器中的方法。所述方法包括通过在所述视频解码器上确定用于重构画面的解码帧内预测模式残差的空间图案来解码画面中的至少一个块的画面数据。所述解码帧内预测模式残差是通过逆量化和逆变换所述块的原始版本与至少一个参考块之间的变换和量化差获得的。所述空间图案用于确定解码所述块的帧内预测模式。
从应当结合附图阅读的对示例实施例的以下详细描述中,本原理的这些和其它方面、特征和优点将变得清楚。
附图说明
根据以下示例附图,将更好地理解本原理,在附图中:
图1是示出针对4×4块基(Intra_4×4)的MPEG-4AVC标准定向帧内预测的图;
图2是示出MPEG-4AVC标准的Intra_4×4模式的预测样本的标记的图;
图3A-J是分别示出MPEG-4AVC标准的Intra_4×4亮度预测模式的图;
图4A-D是分别示出与MPEG-4AVC标准相对应的四种Intra_16×16模式的图;
图5是示出当前块E及其相邻块A,B和C的图;
图6是示出依照本原理的实施例、可以应用本原理的示例视频编码器的框图;
图7是示出依照本原理的实施例、可以应用本原理的示例视频解码器的框图;
图8是示出依照本原理的实施例、编码当前块的帧内预测模式的一种示例方法的流程图;
图9是示出依照本原理的实施例、解码当前块的帧内预测模式的一种示例方法的流程图;
图10是示出依照本原理的实施例、编码当前块的帧内预测模式的另一种示例方法的流程图;
图11是示出依照本原理的实施例、解码当前块的帧内预测模式的另一种示例方法的流程图;
图12是示出依照本原理的实施例、编码当前块的帧内预测模式的又一种示例方法的流程图;
图13是示出依照本原理的实施例、解码当前块的帧内预测模式的又一种示例方法的流程图;
图14是示出依照本原理的实施例、编码当前块的帧内预测模式的再一种示例方法的流程图;以及
图15是示出依照本原理的实施例、解码当前块的帧内预测模式的再一种示例方法的流程图。
具体实施方式
本原理针对帧内预测模式的高效视频编码和解码的方法和装置。
本描述说明本原理。因此,将认识到:本领域技术人员将能够设计出实施本原理并体现本原理的精神和范围的各种布置,尽管在这里没有明确地描述或示出所述布置。
在此叙述的所有示例和条件性语言意欲用于教导的目的以便帮助读者理解本原理以及由本发明人贡献以促进现有技术的构思,并且应该被解释为不限制这种具体叙述的示例和条件。
另外,在这里叙述本原理的原理、方面和实施例及其特定示例的所有陈述意欲包括其结构和功能等效物。另外,意图是:这样的等效物包括当前已知的等效物以及将来开发的等效物二者,即所开发的执行相同功能的任何元件,而不论其结构如何。
因此,例如,本领域技术人员将认识到:在此呈现的框图表示实施本原理的说明性电路的概念性视图。类似地,将认识到:任何流程图示(flow chart)、流程图(flow diagram)、状态转换图、伪代码等表示实质上可以表示在计算机可读介质中并因此由计算机或处理器执行的各种处理,而不管是否明确地示出这样的计算机或处理器。
可以通过使用专用硬件以及与适当的软件相关联的能够执行软件的硬件来提供图中示出的各种元件的功能。当利用处理器来提供所述功能时,可以利用单个专用处理器、利用单个共享处理器、或者利用其中一些可被共享的多个独立处理器来提供所述功能。另外,术语“处理器”或“控制器”的明确使用不应该被解释为排他性地指代能够执行软件的硬件,而是可以隐含地无限制地包括数字信号处理器(“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标准的扩展在内的其它视频编码标准、建议及其扩展使用本原理,同时保持本原理的精神。
转到图6,可以应用本原理的示例视频编码器用标号600总体表示。
视频编码器600包括具有与组合器685的非反相输入端信号通信的输出端的帧排序缓冲器610。组合器685的输出端被连接成与变换器和量化器625的第一输入端信号通信。变换器和量化器625的输出端被连接成与熵编码器645的第一输入端和逆变换器和逆量化器650的第一输入端信号通信。熵编码器645的输出端被连接成与组合器690的第一非反相输入端信号通信。组合器690的输出端被连接成与输出缓冲器635的第一输入端信号通信。
编码器控制器605的第一输出端被连接成与帧排序缓冲器610的第二输入端、逆变换器和逆量化器650的第二输入端、画面类型判定模块615的输入端、宏块类型(MB类型)判定模块620的第一输入端、帧内预测模块660的第二输入端、去块滤波器665的第二输入端、运动补偿器670的第一输入端、运动估计器675的第一输入端、和参考画面缓冲器680的第二输入端信号通信。
编码器控制器605的第二输出端被连接成与补充增强信息(SEI)插入器630的第一输入端、变换器和量化器625的第二输入端、熵编码器645的第二输入端、输出缓冲器635的第二输入端、和序列参数集(SPS)和画面参数集(PPS)插入器640的输入端信号通信。
SEI插入器630的输出端被连接成与组合器690的第二非反相输入端信号通信。
画面类型判定模块615的第一输出端被连接成与帧排序缓冲器610的第三输入端信号通信。画面类型判定模块615的第二输出端被连接成与宏块类型判定模块620的第二输入端信号通信。
序列参数集(SPS)和画面参数集(PPS)插入器640的输出端被连接成与组合器690的第三非反相输入端信号通信。
逆变换器和逆量化器650的输出端被连接成与组合器619的第一非反相输入端信号通信。组合器619的输出端被连接成与帧内预测模块660的第一输入端和去块滤波器665的第一输入端信号通信。去块滤波器665的输出端被连接成与参考画面缓冲器680的第一输入端信号通信。参考画面缓冲器680的输出端被连接成与运动估计器675的第二输入端和运动补偿器670的第三输入端信号通信。运动估计器675的第一输出端被连接成与运动补偿670的第二输入端信号通信。运动估计器675的第二输出端被连接成与熵编码器645的第三输入端信号通信。
运动补偿器670的输出端被连接成与开关697的第一输入端信号通信。帧内预测模块660的输出端被连接成与开关697的第二输入端信号通信。宏块类型判定模块620的输出端被连接成与开关697的第三输入端信号通信。开关697的第三输入端确定开关的“数据”输入(如与控制输入,即,第三输入相比)由运动补偿670提供还是由帧内预测模块660提供。开关697的输出端被连接成与组合器619的第二非反相输入端和组合器685的反相输入端信号通信。
帧排序缓冲器610的第一输入端和编码器控制器605的输入端可作为编码器600的输入端用于接收输入画面。此外,补充增强信息(SEI)插入器630的第二输入端可作为编码器600的输入端用于接收元数据。输出缓冲器635的输出端可作为编码器600的输出端用于输出位流。
转到图7,用标号700总体表示可以应用本原理的示例视频解码器。
视频解码器700包括具有连接成与熵解码器745的第一输入端信号通信的输出端的输入缓冲器710。熵解码器745的第一输出端被连接成与逆变换器和逆量化器750的第一输入端信号通信。逆变换器和逆量化器750的输出端被连接成与组合器725的第二非反相输入端信号通信。组合器725的输出端被连接成与去块滤波器765的第二输入端和帧内预测模块760的第一输入端信号通信。去块滤波器765的第二输出端被连接成与参考画面缓冲器780的第一输入端信号通信。参考画面缓冲器780的输出端被连接成与运动补偿器770的第二输入端信号通信。
熵解码器745的第二输出端被连接成与运动补偿器770的第三输入端、去块滤波器765的第一输入端、和帧内预测器760的第三输入端信号通信。熵解码器745的第三输出端被连接成与解码器控制器705的输入端信号通信。解码器控制器705的第一输出端被连接成与熵解码器745的第二输入端信号通信。解码器控制器705的第二输出端被连接成与逆变换器和逆量化器750的第二输入端信号通信。解码器控制器705的第三输出端被连接成与去块滤波器765的第三输入端信号通信。解码器控制器705的第四输出端被连接成与帧内预测模块760的第二输入端、运动补偿器770的第一输入端、和参考画面缓冲器780的第二输入端信号通信。
运动补偿器770的输出端被连接成与开关797的第一输入端信号通信。帧内预测模块760的输出端被连接成与开关797的第二输入端信号通信。开关797的输出端被连接成与组合器725的第一非反相输入端信号通信。
输入缓冲器710的输入端可作为解码器700的输入端用于接收输入位流。去块滤波器765的第一输出端可作为解码器700的输出端用于输出输出画面。
如上所述,本原理针对帧内预测模式的高效视频编码和解码的方法和装置。认识到现有技术的上述局限性和缺陷,本原理的一个或多个实施例考虑当前块(要编码或解码的)的空间特性来提高帧内预测模式编码的效率。
帧内预测可以帮助提高视频编码效率。但是,帧内预测模式的传信可能消耗掉许多位。因此,依照本原理的至少一个实施例,我们公开和描述了编码和解码帧内预测模式语法的高效方法和装置。在至少一个实施例中,将解码帧内预测残差用作编码帧内预测模式的辅助信息,以便可以避免向解码器传达帧内预测模式的位或使其最少。例如,在至少一个实施例中,将解码帧内预测残差的空间图案用作辅助信息。
本原理利用了从视频编码和视频解码中观察到的某些行为。当编码视频内容时,编码器按照某些准则选择帧内预测模式,然后进行帧内预测。另一方面,编码(变换,量化,和熵编码)也叫做残差的预测误差,并将其发送给解码器。另一方面,在编码器上也解码编码帧内预测残差,以便重构当前帧作为编码随后帧的参考。如前所述,不同帧内预测模式具有不同方向。我们观察到,给定帧内预测模式,解码预测残差的空间图案与帧内模式的方向存在高度关联性。因此,本原理利用了这种观察,并且可以节省表示帧内预测模式的位。
实施例1
在第一实施例(这里也可交换地称为实施例1)中,编码器选择最佳帧内预测模式m并编码预测残差。然后,编码器检查解码残差的空间图案以导出作为最可能模式的帧内预测模式n。编码器将残差和模式语法发送给解码器。解码器首先解析残差语法,并通过检查解码残差的空间图案导出最可能模式n。然后,解析模式语法并导出帧内预测模式。在实施例1中,我们可以拥有比用在MPEG-4AVC标准中的方法更精确的最可能模式。
转到图8,用标号800总体表示依照本原理的实施例编码当前块的帧内预测模式的一种示例方法。具体地说,方法800代表实施例1的一种示例编码实现,并且牵涉到从解码帧内预测残差的空间图案中导出最可能模式,以编码当前块的帧内预测模式。方法800包括将控制交给循环限制块810的开始块805。循环限制块810使用范围从0到宏块数减1(num_MBs_minus1)的变量i开始遍及当前画面中的每个宏块的循环,并将控制交给功能块815。功能块815根据某些准则选择帧内预测模式m,并将控制交给功能块820。功能块820利用模式m编码帧内预测残差,并将控制交给功能块825。功能块825解码残差,并将控制交给功能块830。功能块830从解码残差的空间图案中导出模式n,并将控制交给功能块835。功能块835利用作为最可能模式的模式n编码模式m,并将控制交给循环限制块840。循环限制块840结束遍及每个宏块的循环,并将控制交给结束块899。
转到图9,用标号900总体表示依照本原理的实施例解码当前块的帧内预测模式的一种示例方法。具体地说,方法900代表实施例1的一种示例解码实现,并且牵涉到从解码帧内预测残差的空间图案中导出最可能模式,以解码当前块的帧内预测模式。方法900包括将控制交给循环限制块910的开始块905。循环限制块910使用范围从0到宏块数减1(num_MBs_minus1)的变量i开始遍及当前画面中的每个宏块的循环,并将控制交给功能块915。功能块915解码帧内预测残差,并将控制交给功能块920。功能块820从解码残差的空间图案中导出模式n,并将控制交给功能块925。功能块925利用作为最可能模式的模式n解码帧内预测模式m,并将控制交给功能块930。功能块930利用模式m解码宏块,并将控制交给循环限制块935。循环限制块935结束遍及每个宏块的循环,并将控制交给结束块999。
对于实施例1,可以使用几种不同方法从解码残差的空间图案中导出帧内预测模式n:
1.一种方式是应用索贝尔算子(Sobel operator)计算每个解码残差像素上的梯度和边缘取向(定义成与梯度垂直的整体矢量)。遍及整个残差块地对边缘取向求平均,以及导出的帧内预测模式n是相对于平均边缘取向具有最小角度差的那个。如果这个块中的平均梯度幅度小于阈值,则选择DC模式作为n,将n用作最可能模式。
2.另一种方式是预定具有定向纹理的一些模板块并让纹理的方向对应于不同帧内预测模式。计算残差块与这些模板块的每一个之间的相关性。从与残差块的相关性最高的模板块中选择帧内预测模式n。
3.在一些其它方式中,可以从变换域中分析解码残差的空间图案。首先变换解码残差块。该变换可以是,但不限于,离散余弦变换(DCT)、DCT的整数实现、哈达马变换(Hadamard transform)、小波变换等。在变换块中,不同地点上的系数对应于不同空间图案(例如,第一变换系数对应于平坦残差块;第一行中的系数对应于由具有不同周期的垂直图案组成的块)。我们可以将幅度大于预定阈值的那些系数定义成重要系数。输出帧内预测模式n是这些重要系数的地点的函数或这些重要系数的幅度和地点两者的函数。
示例:
以下是细述实施例1的具体示例。虽然以下示例基于MPEG-4AVC标准,但如上所述,本原理可以应用于其它视频编码标准、推荐及其扩展。
编码器侧:
假设当前块是帧内块。编码器测试编码这个块的不同帧内预测模式(不同帧内预测方向),并选择使率失真成本最低的模式。设m是所选帧内预测模式。我们用B来表示当前块,用P来表示在给定m是帧内预测模式的情况下它的预测。P和B两者都是2-D N×N阵列,其中N×N是块的大小。预测残差R也是N×N块,其中R=B-P。
变换残差块,并量化变换系数。另一方面,将量化变换系数发送给解码器。另一方面,在编码器上逆量化然后逆变换量化变换系数,得出解码(也叫做重构)残差系数。我们用K来表示解码残差系数的块。
对于K中的每个地点(i,j),应用索贝尔算子计算(i,j)上的梯度,其中i,j=0,...,N-1。设f(i,j)是(i,j)上的梯度的绝对幅度,和g(i,j)是(i,j)上的梯度的方向。我们进一步将h(i,j)=(g(i,j)+90)%180定义成地点(i,j)上的边缘取向,其中%是调制运算,以便将h(i,j)的值限制在(0,180)的范围内。
我们按如下计算平均梯度幅度favg和平均边缘取向havg:
如果favg小于用户定义阈值T(为编码器和解码器两者所知),则选择DC模式作为最可能模式n,以便编码当前块的帧内预测模式m。
如果favg大于等于阈值T,则按如下选择最可能模式n:
其中angle(k)是帧内预测模式k的预测方向。最可能模式n被用于编码帧内预测模式m。
解码器侧:
为了解码帧内预测块,解码器首先解析量化变换残差系数的语法。利用逆量化和逆变换解码(重构)帧内预测残差。对于解码残差块,我们使用与编码器侧相同的方法计算平均梯度幅度favg和平均边缘取向havg。
如果favg小于阈值T,则我们选择DC模式作为最可能模式n,以便解码我们表示成m的当前块的帧内预测模式。
如果favg大于等于阈值T,则以与编码器相同的方式,即,按如下选择最可能模式n:
其中angle(k)是帧内预测模式k的预测方向。最可能模式n被用于解码帧内预测模式m。
实施例2
在第二实施例(这里也可交换地称为实施例2)中,在帧内编码中使用两种最可能模式候选者。第一最可能模式候选者n通过检查解码残差的空间图案(例如,描述在实施例1中的方法)导出。第二最可能模式候选者k使用不同方法(例如,但不局限于,MPEG-4AVC标准中的方法)导出。如果两种最可能模式候选者相同n=k,则如在MPEG-4AVC标准中所述使用相同方法。如果两种最可能模式候选者不同,则发送布尔(Boolean)语法flag_mpm以便传信使用两种最可能模式候选者的哪一种。在解码器上,从解码残差中导出最可能模式候选者n,并使用另一种方法导出最可能模式候选者k。然后,如果n和k不同,则解码flag_mpm,以便选择解码帧内模式的最可能模式。
转到图10,用标号1000总体表示依照本原理的实施例编码当前块的帧内预测模式的另一种示例方法。具体地说,方法1000代表实施例2的一种示例编码实现,并且牵涉到从解码帧内预测残差的空间图案中导出模式,其中该模式能够用作编码当前块的帧内预测模式的最可能模式。方法1000包括将控制交给循环限制块1010的开始块1005。循环限制块1010使用范围从0到宏块数减1(num_MBs_minus1)的变量i开始遍及当前画面中的每个宏块的循环,并将控制交给功能块1015。功能块1015根据某些准则选择帧内预测模式m,并将控制交给功能块1020。功能块1020利用模式m编码帧内预测残差,并将控制交给功能块1025。功能块1025解码残差,并将控制交给功能块1030。功能块1030从解码残差的空间图案中导出最可能模式候选者n,并将控制交给功能块1035。功能块1035使用另一种方法导出最可能模式候选者k,并将控制交给判定块1040。判定块1040确定n=k是否成立。如果是,则将控制交给功能块1080。否则,将控制交给功能块1045。
功能块1080将n设置成最可能模式,并将控制交给功能块1065。功能块1065编码模式m,并将控制交给循环限制块1070。循环限制块1070结束遍及每个宏块的循环,并将控制交给结束块1099。
功能块1045根据某些准则在n与k之间作出选择,并将控制交给判定块1050。判定块1050确定(前面功能块1045)是否选择了n。如果是,则将控制交给功能块1075。否则,将控制交给功能块1055。
功能块1075发送flag_mpm=1,并将控制交给判定块1080。
功能块1055发送flag_mpm=0,并将控制交给判定块1060。功能块1060将k设置成最可能模式,并将控制交给功能块1065。
转到图11,用标号1100总体表示依照本原理的实施例解码当前块的帧内预测模式的另一种示例方法。具体地说,方法1100代表实施例2的一种示例解码实现方式,并且牵涉到从解码帧内预测残差的空间图案中导出模式,其中该模式能够用作解码当前块的帧内预测模式的最可能模式。方法1100包括将控制交给循环限制块1110的开始块1105。循环限制块1110使用范围从0到宏块数减1(num_MBs_minus1)的变量i开始遍及当前画面中的每个宏块的循环,并将控制交给功能块1115。功能块1115解码帧内预测残差,并将控制交给功能块1120。功能块1120从解码残差的空间图案中导出最可能模式候选者n,并将控制交给功能块1125。功能块1125使用另一种方法导出最可能模式候选者k,并将控制交给判定块1130。判定块1130确定n=k是否成立。如果是,则将控制交给功能块1165。否则,将控制交给功能块1135。
功能块1165将n设置成最可能模式,并将控制交给功能块1150。功能块1150解码帧内预测模式m,并将控制交给功能块1155。功能块1155利用模式m解码宏块,并将控制交给循环限制块1160。循环限制块1160结束遍及每个宏块的循环,并将控制交给结束块1199。
功能块1135解码flag_mpm,并将控制交给判定块1140。判定块1140确定flag_mpm=1是否成立。如果是,则将控制交给功能块1165。否则,将控制交给功能块1145。功能块1145将k设置成最可能模式,并将控制交给功能块1150。
对于实施例2,编码器需要选择两种模式n和k当中的一种作为编码中的最可能模式。选择准则可以是,但不限于,如下方法:
1.最可能模式选择基于编码帧内预测模式所需的位数。
2.最可能模式选择基于最可能模式与帧内预测模式之间的索引差。
实施例3
在第三实施例(这里也可交换地称为实施例3)中,编码器选择最佳帧内预测模式m并编码预测残差。然后,编码器检查解码残差的空间图案以便导出帧内预测模式的集合。导出的集合是默认模式集合(即,对于Intra4×4和8×8,9种模式,以及对于Intra 16×16,4种模式)的子集。编码器为了编码而在默认模式集合与导出模式子集之间选择,并使用布尔语法flag_subset通知解码器。如果选择模式子集,则先发送flag_subset=1然后发送与这个模式子集S相联系的模式索引。如果选择默认模式集合,则先发送flag_subset=0然后发送与这个默认模式集合相联系的模式索引。解码器解析残差语法、flag_subset和模式索引语法。如果flag_subset=1,则解码器从解码残差中导出模式子集。如果flag_subset=0,则解码器使用默认模式表。实施例3的一个优点是我们可以拥有候选者集合中的较少模式,因此减少了帧内模式的传信位的数量。例如,如果子集只包括5种模式而不是9种模式,则我们只需2个位而不是3个位来传信rem_intra4×4_pred_mode。
转到图12,用标号1200总体表示依照本原理的实施例编码当前块的帧内预测模式的又一种示例方法。具体地说,方法1200代表实施例3的一种示例编码实现方式,并且牵涉到从解码预测残差的空间图案中导出模式子集,其中该模式子集能够用于编码当前块的帧内预测模式。方法1200包括将控制交给循环限制块1210的开始块1205。循环限制块1210使用范围从0到宏块数减1(num_MBs_minus1)的变量i开始遍及当前画面中的每个宏块的循环,并将控制交给功能块1215。功能块1215根据某些准则选择帧内预测模式m,并将控制交给功能块1220。功能块1220利用模式m编码帧内预测残差,并将控制交给功能块1225。功能块1225解码残差,并将控制交给功能块1230。功能块1230从解码残差的空间图案中导出模式子集S,并将控制交给判定块1235。判定块1235确定模式m是否属于子集S。如果是,则将控制交给功能块1240。否则,将控制交给功能块1260。功能块1240发送flag_subset=1,并将控制交给功能块1245。功能块1245使用模式子集S,并将控制交给功能块1250。功能块1250编码模式m,并将控制交给循环限制块1255。循环限制块1255结束遍及每个宏块的循环,并将控制交给结束块1299。
功能块1260发送flag_subset=0,并将控制交给功能块1265。功能块1265使用默认模式集合,并将控制交给功能块1250。
转到图13,用标号1300总体表示依照本原理的实施例解码当前块的帧内预测模式的又一种示例方法。具体地说,方法1300代表实施例3的一种示例解码实现方式,并且牵涉到从解码预测残差的空间图案中导出模式子集,其中该模式子集能够用于解码当前块的帧内预测模式。方法1300包括将控制交给循环限制块1310的开始块1305。循环限制块1310使用范围从0到宏块数减1(num_MBs_minus1)的变量i开始遍及当前画面中的每个宏块的循环,并将控制交给功能块1315。功能块1315解码帧内预测残差,并将控制交给功能块1320。功能块1320解码flag_subset,并将控制交给判定块1325。判定块1325确定flag_subset=1是否成立。如果是,则将控制交给功能块1330。否则,将控制交给功能块1355。
功能块1330从解码残差的空间图案中导出子集S,并将控制交给功能块1335。功能块1335将子集S用作帧内模式集合,并将控制交给功能块1340。
功能块1340解码帧内预测模式m,并将控制交给功能块1345。功能块1345利用模式m解码宏块,并将控制交给循环限制块1350。循环限制块1350结束遍及每个宏块的循环,并将控制交给结束块1399。
功能块1355使用默认帧内模式集合,并将控制交给功能块1340。
对于实施例3,在导出模式子集S与默认模式集合之间选择的准则可以是,但不限于,如下:
1.如果导出模式子集S中包括所使用帧内模式m,则使用模式子集S。否则,使用默认集合。
2.如果导出模式子集S中包括所使用帧内模式m并且子集S中的帧内模式的索引小于默认集合中的帧内模式的索引,则选择子集S。否则,选择默认集合。
3.如果导出模式子集S中包括所使用帧内模式m以及使用这个子集S的模式m的编码位少于使用默认集合的模式m的编码位,则选择子集。否则,选择默认集合。
实施例4
在第四实施例(这里也可交换地称为实施例4)中,编码器选择最佳帧内预测模式m并编码预测残差。然后,编码器检查解码残差的空间图案以便导出帧内预测模式n。如果n不同于m,则编码器处理解码残差,以便将模式m嵌入残差中以保证导出的模式n=m。在这个实施例中,我们根本不需要传信帧内模式信息。解码器不需要任何有关帧内模式的语法。解码器只需从位流中提取的残差,并推断用于解码的帧内预测模式m。
对于实施例4,将帧内模式嵌入残差中的方法可以是,但不限于,如下:
1.设X是当前块的帧内预测残差。模式信息的嵌入通过在变换和量化之前修改X来实现,因此是空间域方法。X的修改通过将偏差矩阵T与X相加来实现。设Y是修改残差块,则Y=X+T。偏差矩阵T是这样选择的,在可以从Y的解码版本中导出模式m的时候,它具有最小范数(该范数可以是11,12等)。
2.设X是当前块的帧内预测残差,和x是X的DCT变换。X和x两者是大小与当前块相同的矩阵。模式信息的嵌入通过修改DCT矩阵x来实现,因此是变换域方法。x的修改通过将偏差矩阵t与x相加来实现。设y是修改残差DCT块,则y=x+t。偏差矩阵t是这样选择的,在可以从y的解码版本中导出模式m的时候,它具有最小范数(该范数可以是11,12等)。
3.设X是当前块的帧内预测残差,和x是X的DCT变换。在视频编码处理中,量化并通过量化索引表示x中的DCT系数。设x′是包括x中的DCT系数的量化索引的矩阵。模式信息的嵌入通过修改量化索引矩阵x′来实现,因此是变换域方法。x′的修改通过将偏差矩阵t′与x′相加来实现。设y′是x′的修改版本,则y′=x′+t′。偏差矩阵t′是这样选择的,在可以从y′中导出模式m的时候,它具有最小范数(该范数可以是11,12等)。
转到图14,用标号1400总体表示依照本原理的实施例编码当前块的帧内预测模式的再一种示例方法。具体地说,方法1400代表实施例4的一种示例编码实现方式,并且牵涉到将当前块的帧内预测模式嵌入解码预测残差的空间图案中。方法1400包括将控制交给循环限制块1410的开始块1405。循环限制块1410使用范围从0到宏块数减1(num_MBs_minus1)的变量i开始遍及当前画面中的每个宏块的循环,并将控制交给功能块1415。功能块1415根据某些准则选择帧内预测模式m,并将控制交给功能块1420。功能块1420利用模式m编码帧内预测残差,并将控制交给功能块1425。功能块1425解码残差,并将控制交给功能块1430。功能块1430从解码残差的空间图案中导出模式n,并将控制交给判定块1435。判定块1435确定模式n=m是否成立。如果是,则将控制交给循环限制块1450。否则,将控制交给功能块1440。功能块1440修改残差,以便可以从修改解码残差的空间图案中导出m,并将控制交给循环限制块1450。循环限制块1450结束遍及每个宏块的循环,并将控制交给结束块1499。
转到图15,用标号1500总体表示依照本原理的实施例解码当前块的帧内预测模式的再一种示例方法。具体地说,方法1500代表实施例4的一种示例解码实现方式,并且牵涉到从解码预测残差的空间图案中导出当前块的帧内预测模式。方法1500包括将控制交给循环限制块1510的开始块1505。循环限制块1510使用范围从0到宏块数减1(num_MBs_minus1)的变量i开始遍及当前画面中的每个宏块的循环,并将控制交给功能块1515。功能块1515解码帧内预测残差,并将控制交给功能块1520。功能块1520从解码残差的空间图案中导出模式m,并将控制交给功能块1525。功能块1525利用模式m解码宏块,并将控制交给循环限制块1530。循环限制块1530结束遍及每个宏块的循环,并将控制交给结束块1599。
示例:
以下是细述实施例4的具体示例。虽然以下示例基于MPEG-4AVC标准,但如上所述,本原理可以应用于其它视频编码标准、推荐及其扩展。
编码器侧:
假设当前块是帧内块。编码器测试编码这个块的不同帧内预测模式(不同帧内预测方向),并选择具有最低率失真成本的模式。设m是所选帧内预测模式。我们用B来表示当前块,用P来表示在给定m是帧内预测模式的情况下它的预测。P和B两者都是2-D N×N阵列,其中N×N是块的大小。预测残差也是N×N块,其中R=B-P。
变换残差块,并量化变换系数。设x′是包括DCT系数的量化索引的矩阵。此后,在编码器上逆量化然后逆变换量化变换系数,得出解码(也叫做重构)残差系数。我们用K来表示解码残差系数的块。
像实施例1的示例那样使用导出最可能模式的方法从K的空间图案中导出帧内预测模式n。
如果n等于m,则将残差的量化索引(x′的元素)写入位流中。
如果n不同于m,则我们通过将偏差矩阵t′与x′相加生成新量化索引矩阵y′,y’=x’+t’,并将y′写入位流中。矩阵y′需要满足如下两个条件:
1.设K′是y′的解码(通过逆量化然后逆变换)版本。像实施例1的示例那样使用导出最可能模式的方法从K′的空间图案中导出的帧内预测模式是模式m。
2.y′的l2范数是满足条件1的所有矩阵当中的最小者。
解码器侧:
为了解码帧内预测块,解码器首先解析量化变换残差系数的语法。利用逆量化和逆变换解码(重构)帧内预测残差。像实施例1的示例那样使用导出最可能模式的方法从解码帧内预测残差的空间图案中导出帧内预测模式m。导出的模式m是当前块的帧内预测模式。
语法
我们已经展示了不同实施例,并且对于不同实施例,相应语法也将不同。表1示出了与上述实施例2有关的示例语法。
表1
macroblock_layer(){ |
描述符 |
.... |
|
flag_mpm |
u(1) |
.... |
|
} |
|
在表1中示出的语法元素的语义如下:
flag_mpm等于1规定将使用描述在实施例1中的方法导出的模式用作解码帧内预测模式的最可能模式。
flag_mpm等于0规定将使用替代性方法(例如,MPEG-4AVC标准中的方法)导出的模式用作解码帧内预测模式的最可能模式。
表2示出了与上述实施例3有关的示例语法。
表2
macroblock_layer(){ |
描述符 |
.... |
|
flag_subset |
u(1) |
.... |
|
} |
|
在表2中示出的语法元素的语义如下:
flag_subset等于0规定将默认模式集合用于导出帧内预测模式。
flag_subset等于1规定将默认模式集合的子集用于导出帧内预测模式。
现在对其中一些上面已经提及的本发明的许多附带优点/特征的一些加以描述。例如,一个优点/特征是含有视频编码器的装置,所述视频编码器用于通过在所述视频编码器上确定用于重构画面的解码帧内预测模式残差的空间图案来编码画面中的至少一个块的画面数据。所述解码帧内预测模式残差是通过逆量化和逆变换所述块的原始版本与至少一个参考块之间的变换和量化差获得的。所述空间图案用于确定编码所述块的帧内预测模式。
另一个优点/特征是如上所述的含有视频编码器的装置,其中所述空间图案用于确定最可能模式,所述最可能模式用于对编码所述块的帧内预测模式进行编码,以及所述最可能模式从多种帧内预测模式中确定。
又一个优点/特征是如上所述的含有视频编码器的装置,其中所述空间图案用于确定最可能模式,所述最可能模式用于对编码所述块的帧内预测模式进行编码,以及所述最可能模式从多种帧内预测模式中确定,其中所述空间图案用于通过对所述空间图案进行空间域分析确定最可能模式。
再一个优点/特征是如上所述的含有视频编码器的装置,其中所述空间图案用于通过对所述空间图案进行空间域分析确定最可能模式,其中所述空间域分析基于解码帧内预测模式残差中的残差像素的梯度、梯度计算之前的预处理、和在解码帧内预测模式残差与预定定向块掩模之间计算的相关性中的至少一种。
一个进一步优点/特征是如上所述的含有视频编码器的装置,其中所述空间图案用于确定最可能模式,所述最可能模式用于对编码所述块的帧内预测模式进行编码,以及所述最可能模式从多种帧内预测模式中确定,其中所述空间图案用于通过对所述空间图案进行变换域分析确定最可能模式。
此外,另一个优点/特征是如上所述的含有视频编码器的装置,其中所述空间图案用于通过对所述空间图案进行变换域分析确定最可能模式,其中用在所述变换域分析中的变换包括离散余弦变换、离散余弦变换的整数实现、哈达马变换、和小波变换中的至少一种。
并且,另一个优点/特征是如上所述的含有视频编码器的装置,其中所述空间图案用于通过对所述空间图案进行变换域分析确定最可能模式,其中所述变换域分析基于解码帧内预测模式残差的重要变换残差系数的幅度和地点的至少一种。
此外,另一个优点/特征是如上所述的含有视频编码器的装置,其中所述空间图案用于确定最可能模式,所述最可能模式用于对编码所述块的帧内预测模式进行编码,以及所述最可能模式从多种帧内预测模式中确定,其中不止一种方法用于选择最可能模式。
另外,另一个优点/特征是含有视频编码器的装置,其中如上所述的不止一种方法用于选择最可能模式,其中多种帧内预测模式代表能够成为最可能模式的多种候选帧内预测模式,以及用于选择最可能模式的准则从用于编码利用多种帧内预测模式的每一种编码所述块的帧内预测模式所需的各自位数、和编码所述块的帧内预测模式与多种帧内预测模式的每一种之间的各自索引差的至少一种选择。
此外,另一个优点/特征是如上所述的含有视频编码器的装置,其中通过分析空间图案导出帧内模式子集,所述帧内模式子集包含所有可用帧内预测模式的一部分,以及其中至少从默认帧内预测模式集合和帧内模式子集当中确定模式集合,所述默认帧内预测模式集合包括所有可用帧内预测模式,并且所述模式集合用于对编码所述块的帧内预测模式进行编码。
并且,另一个优点/特征是如上所述的含有视频编码器的装置,其中通过分析空间图案导出帧内模式子集,所述帧内模式子集包含所有可用帧内预测模式的一部分,以及其中至少从默认帧内预测模式集合和帧内模式子集当中确定模式集合,所述默认帧内预测模式集合包括所有可用帧内预测模式,所述模式集合用于对编码所述块的帧内预测模式进行编码,其中根据帧内模式子集中初始帧内编码模式的存在、帧内模式子集中初始帧内编码模式的索引、和用于使用帧内模式子集编码初始帧内编码模式的位数的至少一种,至少从默认帧内预测模式集合和帧内模式子集当中确定用于编码所述块的帧内预测模式的模式集合,所述初始帧内编码模式用于编码被解码以获取解码帧内预测模式残差的块的残差。
此外,另一个优点/特征是如上所述的含有视频编码器的装置,其中将所述初始帧内预测模式嵌入所述空间图案中。
另外,另一个优点/特征是如上所述的含有视频编码器的装置,其中将所述初始帧内预测模式嵌入所述空间图案中,其中在变换域中进行将所述初始帧内预测模式嵌入所述空间图案中的嵌入操作。
此外,另一个优点/特征是如上所述的含有视频编码器的装置,其中在变换域中进行将所述初始帧内预测模式嵌入所述空间图案中的嵌入操作,其中通过变换和量化所述块的原始版本与至少一个参考块之间的差值获取变换和量化差,以及通过修改所述块的原始版本与至少一个参考块之间的差值的变换和量化版本的量化索引将所述初始帧内预测模式嵌入所述空间图案中。
并且,另一个优点/特征是如上所述的含有视频编码器的装置,其中将所述初始帧内预测模式嵌入所述空间图案中,其中通过变换和量化所述块的原始版本与至少一个参考块之间的差值获取变换和量化差,以及通过修改所述块的原始版本与至少一个参考块之间的差值的变换和非量化版本的幅度将所述初始帧内预测模式嵌入所述空间图案中。
此外,另一个优点/特征是如上所述的含有视频编码器的装置,其中将所述初始帧内预测模式嵌入所述空间图案中,其中在空间域中进行将所述初始帧内预测模式嵌入所述空间图案中的嵌入操作。
另外,另一个优点/特征是如上所述的含有视频编码器的装置,其中在空间域中进行将所述初始帧内预测模式嵌入所述空间图案中的嵌入操作,其中通过变换和量化所述块的原始版本与至少一个参考块之间的差值获取变换和量化差,以及通过在变换和量化之前修改所述块的原始版本与至少一个参考块之间的差值的幅度将所述初始帧内预测模式嵌入所述空间图案中。
基于这里的教导,相关领域的普通技术人员可以容易地确定本原理的这些和其它特征及优点。应当理解,可以以硬件、软件、固件、专用处理器或它们的组合的各种版本来实现本原理的教导。
最优选地,作为硬件和软件的组合来实现本原理的教导。此外,可以作为在程序存储单元上有形地包含的应用程序来实现所述软件。所述应用程序可以被上载到包括任何适当架构的机器并由其执行。优选地,在具有诸如一个或多个中央处理单元(“CPU”)、随机存取存储器(“RAM”)和输入/输出(“I/O”)接口之类的硬件的计算机平台上实现所述机器。该计算机平台还可以包括操作系统和微指令代码。在此描述的各种处理和功能可以是可由CPU执行的微指令代码的一部分或应用程序一部分或者它们的任何组合。此外,诸如附加的数据存储单元和打印单元之类的各种其它外围单元可以连接到该计算机平台。
还应当理解,因为优选地用软件来实现在附图中示出的一些组成系统组件和方法,所以这些系统组件或处理功能块之间的实际连接可以根据本原理被编程的方式而不同。给出这里的教导,相关领域的普通技术人员将能够想到本原理的这些和类似的实现或配置。
尽管在这里参照附图描述了说明性实施例,但是应当理解,本原理不限于那些精确的实施例,并且相关领域的普通技术人员可以在其中进行各种改变和修改,而不背离本原理的范围或精神。所有这样的改变和修改都意欲被包括在如所附权利要求阐述的本原理的范围内。