用于预测最可能帧内模式的方法和装置

文档序号:653518 发布日期:2021-04-23 浏览:26次 >En<

阅读说明:本技术 用于预测最可能帧内模式的方法和装置 (Method and apparatus for predicting most probable intra mode ) 是由 阿列克谢·康斯坦丁诺维奇·菲利波夫 瓦西里·亚历斯维奇·拉夫特斯基 陈建乐 于 2019-09-19 设计创作,主要内容包括:提供了一种用于构造最可能模式(MPM)列表的方法。将从邻近块推导的每个帧内预测模式根据模式方向及其源块的位置被分类为有效模式或无效模式。有效模式和无效模式分别被认为是最可能模式和最不可能模式。该分类过程限定了MPM中定向模式和非定向模式的顺序。(A method for constructing a Most Probable Mode (MPM) list is provided. Each intra prediction mode derived from neighboring blocks is classified as an active mode or an inactive mode according to a mode direction and a location of its source block. The active mode and the inactive mode are considered to be the most probable mode and the least probable mode, respectively. This classification process defines the order of directional and non-directional modes in MPM.)

用于预测最可能帧内模式的方法和装置

技术领域

本公开涉及图像和/或视频译码和解码的技术领域,并且具体涉及用于帧内预测的方法和装置。

背景技术

自引入DVD光盘以来,数字视频得到了广泛的应用。在传输之前对视频进行编码,并利用传输介质进行传输。观看者接收视频,并使用观看设备来解码和显示该视频。多年来,视频的质量例如由于更高的分辨率、色深及帧速率的原因有所提高。这就导致了更大的数据流,这些数据流如今通常通过互联网和移动通信网络进行传输。

然而,由于更高分辨率视频具有更多信息,因此它们通常需要更多带宽。为了降低带宽需求,引入了涉及视频压缩的视频译码标准。对视频进行编码时,降低带宽需求(或存储的情况下的相应内存需求)。通常,这种降低是以质量为代价的。因此,视频译码标准试图在带宽需求与质量之间寻求平衡。

高效视频译码(high efficiency video coding,HEVC)为本领域技术人员公知的视频译码标准的一个示例。HEVC中,将译码单元(coding unit,CU)分成预测单元(prediction unit,PU)或变换单元(transform unit,TU)。通用视频译码(versatilevideo coding,VVC)下一代标准是ITU-T视频译码专家组(video coding experts group,VCEG)以及ISO/IEC运动图片专家组(moving picture experts group,MPEG)标准化组织的最新联合视频项目,这些标准化组织以合作伙伴关系一起工作,称为联合视频探索小组(joint video exploration team,JVET)。VVC也被称为ITU-T H.266/下一代视频译码(next generation video coding,NGVC)标准。VVC中,应删除多种划分类型的概念,即将CU、PU和TU概念的分离,除了对于相对最大转换长度而言尺寸太大的CU需要这种分离,并且这种分离为CU划分形状支持更大的灵活性之外。

这些译码单元(CU)(也被称为块)的处理取决于其尺寸、空间位置以及编码器指定的译码模式。根据预测的类型,可将译码模式分类为两组:帧内预测模式和帧间预测模式。帧内预测模式使用同一图片(也被称为帧或图像)的样本来生成参考样本,以计算正在重构的块的样本的预测值。帧内预测也被称为空间预测。帧间预测模式被设计用于时间预测,并使用先前或之后图片的参考样本来预测当前图片的块的样本。

ITU-T VCEG(Q6/16)和ISO/IEC MPEG(JTC 1/SC 29/WG 11)正在研究对未来视频译码技术的标准化的潜在需要,未来视频译码技术的压缩能力(包括用于屏幕内容译码和高动态范围译码的其当前扩展和近期扩展)明显超过当前HEVC标准的压缩能力。小组们正在以联合协作努力中一起开展此项探索活动,称为联合视频探索团队(JVET),以评估该领域中其专家所提出的压缩技术设计。

VTM(Versatile Test Model,通用测试模型)标准使用35个帧内模式,而BMS(Benchmark Set,基准集合)使用67个帧内模式。

当前在BMS中描述的帧内模式译码方案被认为是复杂的,且未选定模式集合的缺点在于索引列表总是恒定的且基于当前块属性(对于例如其邻近块的帧内模式)不适应。

发明内容

公开了用于帧内预测的装置和方法。该装置和方法使用映射过程来简化用于帧内预测的计算过程,从而提高译码效率。保护范围由独立权利要求限定。有利实施例中的一些实施例由从属权利要求提供。

根据一个实施例,提供了一种用于构造用于帧内预测的最可能模式MPM列表的方法,所述方法包括:获得与当前块相邻的第一邻近块的帧内预测模式;如果所述第一邻近块的帧内预测模式与从第二邻近块已获得的帧内预测模式不同,确定所述帧内预测模式的有效性;根据所述帧内预测模式的有效性,将所述帧内预测模式存储到若干有效性缓冲器中对应的有效性缓冲器中;以及自具有最多数量的帧内预测模式的有效性缓冲器开始,从所述若干有效性缓冲器中提取帧内预测模式到所述MPM列表中,直到所述MPM列表包含最大数量的预测模式,或者所述若干有效性缓冲器中存储的所有预测模式都被提取到所述MPM列表中。

该方法可以促进MPM构造,并且具体地,提供了一种MPM,包括对当前块的预测具有更高有效性的模式,例如,能够实现对当前块中更多样本的预测的模式。因此,能够实现帧内预测模式的有效译码。

例如,有效性值取决于以下中的至少一个:所述帧内预测模式是否是定向模式;所述第一邻近块位于所述当前块的哪一侧;和/或所述帧内预测模式的方向。

在一些示例性实现方式中,所述确定所述帧内预测模式的有效性包括:如果所述帧内预测模式是非定向的,将所述有效性设置为值VALID_NON_DIR;如果所述第一邻近块位于所述当前块的左侧,并且所述帧内预测模式大于或等于HOR_IDX以及所述帧内预测模式小于VER_IDX–dblStrictThr,将所述有效性设置为值VALID_DIR;如果所述第一邻近块位于所述当前块的上方,并且所述帧内预测模式大于HOR_IDX+dblStrictThr以及所述帧内预测模式小于或等于VER_IDX,将所述有效性设置为VALID_DIR;其中,HOR_IDX是水平预测模式的索引,VER_IDX是竖直预测模式的索引,以及dblStrictThr是预配置的阈值。

与有效性的其他类别相比,有效非定向模式和有效定向模式可以提供对当前块中更多样本的预测。

例如,dblStrictThr等于4。这可以是如图4、7和13所示的0到66(例如,覆盖了π/4到5π/4的方向)帧内模式中的或-10到76(例如,覆盖了ca.π/4-x到5π/4+x的方向,x小于π/4)帧内模式中的值4。

在一些示例性实现方式中,所述若干有效性缓冲器中的第一缓冲器FIFO0的有效性是VALID_DIR,所述若干有效性缓冲器中的第二缓冲器FIFO1的有效性是VALID_NON_DIR,其小于VALID_DIR。

在一些示例性附加的或可替换的实现方式中,如果所述帧内预测模式大于-10(对应于上述范围x)且小于HOR_IDX,将作为左侧或左下邻近块的所述第一邻近块的有效性设置为VALID_DIR,和/或如果所述帧内预测模式等于或大于VER_IDX–strictThr且等于或小于VER_IDX+strictThr,则将所述有效性设置为值STRICTLY_INVALID_DIR。

例如,所述值STRICTLY_INVALID_DIR小于所述值VALID_DIR,并且小于所述值VALID_NON_DIR。

例如,如果所述帧内预测模式大于VER_IDX且小于76,将作为上方或右上邻近块的所述第一邻近块的有效性设置为VALID_DIR(例如,当66对应于如图13中的π/4时,76对应于66+x,如上所述x=10);和/或如果所述帧内预测模式等于或大于HOR_IDX–strictThr且等于或小于HOR_IDX+strictThr,则将所述有效性设置为STRICTLY_INVALID_DIR。

在一些示例性实现方式中,附加地或可替换地,如果所述帧内预测模式大于HOR_IDX且小于VER_IDX,将作为左上邻近块的所述第一邻近块的有效性设置为VALID_DIR;和/或如果所述帧内预测模式等于或大于VDIA_IDX–strictThr且等于或小于2+strictThr,则将所述有效性设置为STRICTLY_INVALID_DIR。

注意,strictThr的特定值也可以与上述数值如2、4或10不同,并且他们可以适用于特定方向标记和粒度。附加地或可替换地,所述帧内预测模式被存储到具有与针对所述帧内预测模式确定的有效性标识相同的有效性标识的缓冲器中,检查VALID_DIR和VALID_NON_DIR缓冲器是否存储了等于或大于最大MPM列表尺寸的帧内预测模式的数量,以及如果所述VALID_DIR和VALID_NON_DIR缓冲器存储了等于或大于所述最大MPM列表尺寸的帧内预测模式的数量,所述MPM列表被填满。

附加地或可替换地,不使用有效性为STRICTLY_INVALID_DIR的缓冲器来填入所述MPM列表,和/或如果所述帧内预测模式具有STRICTLY_INVALID_DIR有效性,不将其推送到所述若干有效性缓冲器中的任一缓冲器。换言之,不将STRICTLY_INVALID_DIR模式存储在任何有效性缓冲器中和/或输入到MPM列表中,这样能够降低缓冲器需求和复杂性。

例如,如果所述若干有效性缓冲器中存储的帧内预测模式的数量小于所述MPM列表的尺寸,所述MPM列表内的空位被默认模式填满。默认模式可以是预定义的,并且通过标准或另一方式进行规定。

根据一个实施例,提供了一种用于对图像进行解码的方法,包括以下步骤:从已编码比特流中推理出模式指示;根据上述实施例和示例性实现方式中任一项所述的用于构造用于帧内预测的最可能模式MPM列表的方法;根据作为所述MPM列表的指示字的所述模式指示和所述MPM列表,重构所述图像中的当前块。

根据一个实施例,提供了一种用于对图像进行编码的方法,包括以下步骤:根据上述实施例和示例性实现方式中任一项所述的用于构造用于帧内预测的最可能模式MPM列表的方法;确定所述当前块的模式指示,作为所述MPM列表中的指示字;将所述模式指示包括到已编码比特流中。

根据一个实施例,提供了一种用于构造用于帧内预测的最可能模式MPM列表的装置,所述装置包括处理电路,用于:获得与当前块相邻的第一邻近块的帧内预测模式;如果所述第一邻近块的帧内预测模式与从第二邻近块已获得的帧内预测模式不同,确定所述帧内预测模式的有效性;根据所述帧内预测模式的有效性,将所述帧内预测模式存储到若干有效性缓冲器中对应的有效性缓冲器中;以及自最有效缓冲器开始,从所述若干有效性缓冲器中提取帧内预测模式到所述MPM列表中,直到所述MPM列表包含最大数量的预测模式,或者所述若干有效性缓冲器中存储的所有预测模式都被提取到所述MPM列表中。

根据一个实施例,提供了一种用于构造用于帧内预测的最可能模式MPM列表的装置,所述装置包括:帧内模式确定单元(1610),用于获得与当前块相邻的第一邻近块的帧内预测模式;有效性确定单元(1620),用于如果所述第一邻近块的帧内预测模式与从第二邻近块已获得的帧内预测模式不同,确定所述帧内预测模式的有效性;缓冲器存取单元(1630),用于根据所述帧内预测模式的有效性,将所述帧内预测模式存储到若干有效性缓冲器中对应的有效性缓冲器中;以及MPM构造大单元(1640),用于自最有效缓冲器开始,从所述若干有效性缓冲器中提取帧内预测模式到所述MPM列表中,直到所述MPM列表包含最大数量的预测模式,或者所述若干有效性缓冲器中存储的所有预测模式都被提取到所述MPM列表中。

例如,有效性值取决于以下中的至少一个:所述帧内预测模式是否是定向模式;所述第一邻近块位于所述当前块的哪一侧;所述帧内预测模式的方向。

在一些实施例中,所述有效性确定单元用于确定所述帧内预测模式的有效性,包括:如果所述帧内预测模式是非定向的,将所述有效性设置为值VALID_NON_DIR;如果所述第一邻近块位于所述当前块的左侧,并且所述帧内预测模式大于或等于HOR_IDX以及所述帧内预测模式小于VER_IDX–dblStrictThr,将所述有效性设置为值VALID_DIR;如果所述第一邻近块位于所述当前块的上方,并且所述帧内预测模式大于HOR_IDX+dblStrictThr以及所述帧内预测模式小于或等于VER_IDX,将所述有效性设置为VALID_DIR;其中,HOR_IDX是水平预测模式的索引,VER_IDX是竖直预测模式的索引,以及dblStrictThr是预配置的阈值。

例如,dblStrictThr等于4。

在一些实施例中,所述若干有效性缓冲器中的第一缓冲器FIFO0的有效性是VALID_DIR,所述若干有效性缓冲器中的第二缓冲器FIFO1的有效性是VALID_NON_DIR,其小于VALID_DIR。

例如,如果所述帧内预测模式大于-10且小于HOR_IDX,将作为左侧或左下邻近块的所述第一邻近块的有效性设置为VALID_DIR,和/或如果所述帧内预测模式等于或大于VER_IDX–strictThr且等于或小于VER_IDX+strictThr,则将所述有效性设置为值STRICTLY_INVALID_DIR。

例如,所述值STRICTLY_INVALID_DIR小于所述值VALID_DIR,并且小于所述值VALID_NON_DIR。

在一些实施例中,如果所述帧内预测模式大于VER_IDX且小于76,将作为上方或右上邻近块的所述第一邻近块的有效性设置为VALID_DIR;和/或如果所述帧内预测模式等于或大于HOR_IDX–strictThr且等于或小于HOR_IDX+strictThr,则将所述有效性设置为STRICTLY_INVALID_DIR。

在一些实施例中,如果所述帧内预测模式大于HOR_IDX且小于VER_IDX,将作为左上邻近块的所述第一邻近块的有效性设置为VALID_DIR;和/或如果所述帧内预测模式等于或大于VDIA_IDX–strictThr且等于或小于2+strictThr,则将所述有效性设置为STRICTLY_INVALID_DIR。

例如,所述帧内预测模式被存储到具有与针对所述帧内预测模式确定的有效性标识相同的有效性标识的缓冲器中,检查VALID_DIR和VALID_NON_DIR缓冲器是否存储了等于或大于最大MPM列表尺寸的帧内预测模式的数量,以及如果所述VALID_DIR和VALID_NON_DIR缓冲器存储了等于或大于所述最大MPM列表尺寸的帧内预测模式的数量,所述MPM列表被填满。

在一些示例性实现方式中,不使用有效性为STRICTLY_INVALID_DIR的缓冲器来填入所述MPM列表,和/或如果所述帧内预测模式具有STRICTLY_INVALID_DIR有效性,不将其推送到所述若干有效性缓冲器中的任一缓冲器。

例如,如果所述若干有效性缓冲器中存储的帧内预测模式的数量小于所述MPM列表的尺寸,所述MPM列表内的空位被默认模式填满。

根据一个实施例,提供了一种用于对图像进行解码的装置(30),包括:比特流解析单元,用于从已编码比特流中推理出模式指示;根据上述装置中任一项所述的用于构造用于帧内预测的最可能模式MPM列表的装置;重构单元,用于根据作为所述MPM列表的指示字的所述模式指示和所述MPM列表,重构所述图像中的当前块。

根据一个实施例,提供了一种用于对图像进行编码的装置,包括:根据上述装置中任一项所述的用于构造用于帧内预测的最可能模式MPM列表的装置;帧内预测单元,用于确定所述当前块的模式指示,作为所述MPM列表中的指示字;比特流发生器,用于将所述模式指示包括到已编码比特流中。

根据一个实施例,提供了一种集成电路,包含根据以上实施例或示例中任一项所述的装置。

根据一个实施例,提供了一种程序产品,存储在非暂时性计算机可读介质上,并且包括指令,其在一个或多个处理器上被执行时,使所述一个或多个处理器执行根据上述方法中任一项所述的方法。

附图说明

参考附图对下文实施例进行了更加详细地描述,其中:

图1是示出了用于实现本发明实施例的视频译码系统的示例的框图。

图2是示出了用于实现本发明实施例的视频编码器的示例的框图。

图3是示出了用于实现本发明实施例的视频解码器的示例结构的框图。

图4示出了表示所提出的67个帧内预测模式的示意图。

图5示出了表示用于MPM推导的邻近块的示意图。

图6示出了表示用于在剩余模式列表中推导前三个模式的第二层邻近块的帧内模式的示意图。

图7示出了表示剩余模式列表生成过程中前三个模式的示例的示意图。

图8示出了表示若从邻近块推导的帧内预测模式用于帧内预测该块,则不使用该邻近块的参考样本的示例的示意图。

图9示出了表示参考样本集合的示例的另一示意图。

图10示出了装置的框图。

图11示出了表示参考样本集合的示例的另一示意图。

图12示出了在提取参考样本过程中使用的当前预测块的邻近块的示例。

图13示出了表示所提出的85个帧内预测模式的示意图。

图14是示出了用于提供一个或多个有效性缓冲器的示例性方法的流程图。

图15是示出了用于构造MPM列表的示例性方法的流程图。

图16是示意性地示出了根据本公开实施例的装置的功能结构的框图。

图17是根据本公开实施例的包括MPM构造列表的用于视频译码的计算设备的示意图。

具体实施方式

缩略语定义及术语表

CTU/CTB–Coding Tree Unit/Coding Tree Block译码树单元/译码树块

CU/CB–Coding Unit/Coding Block译码单元/译码块

PU/PB–Prediction Unit/Prediction Block预测单元/预测块

TU/TB–Transform Unit/Transform Block变换单元/变换块

HEVC–High Efficiency Video Coding高效视频译码

视频译码方案,诸如H.264/AVC和HEVC,是根据基于块的混合视频译码的成功原理而设计的。采用该原理,首先将图片划分成多个块,然后利用帧内图片预测或帧间图片预测对每个块进行预测。

自H.261起,若干视频译码标准都属于“有损混合视频编解码器”组(即,将样本域中的空间和时间预测与变换域中用于应用量化的2D变换译码相结合)。视频序列中的每个图片通常被划分为一组不重叠的块,而译码通常在块级别上执行。换言之,在编码器处,通常在块(图片块)级别上对视频进行处理(即编码),例如通过使用空间(帧内图片)预测和时间(帧间图片)预测来生成预测块、从当前块(当前已处理/待处理的块)中减去该预测块以获得残差块、对残差块进行变换并在变换域中对该残差块进行量化,以减少要发送(压缩)的数据量。而在解码器处,将与编码器相比的逆处理部分地应用于已编码块或已压缩块,以重构当前块用于表示。此外,编码器复制解码器处理循环,使得二者生成相同的预测(诸如帧内预测和帧间预测)和/或重构以对后续块进行处理,即译码。

如本文中所使用的,术语“块”可以是图片或帧的一部分。为了便于描述,本文中参考了高效视频译码(HEVC)或通用视频译码(VVC)的参考软件来描述本发明实施例,VVC是由关于ITU-T视频译码专家组(VCEG)和ISO/IEC运动图片专家组(MPEG)的视频译码的联合协作团队(JCT-VC)开发的。本领域普通技术人员将理解,本发明实施例不限于HEVC或VVC。块可以指CU、PU和TU。HEVC中,通过使用表示为译码树的四叉树结构将CTU划分为多个CU。在CU级别处决定是使用帧间图片(时间)预测还是帧内图片(空间)预测来对图片区域进行译码。根据PU分割类型,可以将每个CU进一步分割为一个、两个或四个PU。在一个PU内,应用相同的预测过程,并以PU为基础将相关信息发送至解码器。在基于PU分割类型通过应用预测过程获得残差块之后,根据与用于CU的译码树类似的另一四叉树结构,可以将CU划分成多个变换单元(TU)。在视频压缩技术的最新发展中,使用四叉树和二叉树(quad-tree andbinary tree,QTBT)划分来对译码块进行划分。在QTBT块结构中,CU可以为正方形或矩形。例如,先通过四叉树结构对译码树单元(CTU)进行划分。通过二叉树结构对四叉树叶节点进行进一步划分。二叉树叶节点被称为译码单元(CU),并且该分割用于预测和变换处理,而无需任何进一步的划分。这意味着,CU、PU和TU在QTBT译码块结构中具有相同的块尺寸。同时,还提出了将诸如三叉树划分的多重划分,以与QTBT块结构一起使用。

ITU-T VCEG(Q6/16)和ISO/IEC MPEG(JTC 1/SC 29/WG 11)正在研究对未来视频译码技术的标准化的潜在需要,未来视频译码技术的压缩能力(包括用于屏幕内容译码和高动态范围译码的其当前扩展和近期扩展)明显超过当前HEVC标准的压缩能力。小组们正在以联合协作努力中一起开展此项探索活动,称为联合视频探索团队(JVET),以评估该领域中其专家所提出的压缩技术设计。

VTM(通用测试模型)使用35个帧内模式,而BMS(基准集合)使用67个帧内模式。为了对67个帧内模式进行译码,BMS中的当前帧内模式译码方案使用了以下方法:

为了在BMS中容纳更多数量的定向帧内模式,使用具有6个最可能模式(MPM)的帧内模式译码方法。涉及两个主要技术方面:

1)推导6个MPM,以及

2)对6个MPM和剩余非MPM模式的进行熵译码。

在BMS中,包括在MPM列表中的模式被分类为三组:邻近帧内模式、推导帧内模式及默认帧内模式。

五个邻近帧内预测模式(即邻近块的帧内预测模式)用于形成当前块的MPM列表。这5个邻近块的位置与合并模式中使用的位置相同,即,如图5所示的左侧(left,L)、上方(above,A)、左下(below left,BL)、右上(above right,AR)和左上(above left,AL)。

例如,左侧块(L)可以被定义为包括与当前块(当前CU)的左手侧相邻的样本以及当前块的左下角样本的块。上方块(A)可以被定义为包括与当前块的顶部相邻的样本以及当前块的右上角样本的块。同理,BL块包括与当前块的左下角样本对角(在左下方向上)相邻的样本。AL块包括与当前块的左上角样本对角(在左上方向上)相邻的样本。AR块包括与当前块的右上角样本对角(在右上方向上)相邻的样本。注意,通常L、A、BL、AL、AR块可以有不同的尺寸,这取决于邻近的左侧、左下、上方和/或右上块的划分模式。

可以通过将上述5个邻近帧内模式、之后是平面模式和DC模式插入到MPM列表中形成初始MPM列表。使用剪枝过程来删除复制的模式,以便MPM列表中仅包括唯一的模式。换言之,每个帧内模式在MPM列表中仅列出一次。初始模式被包括的顺序为左侧、上方、平面、DC、左下、右上和左上。

若MPM列表没有满(即列表中有少于6个MPM的候选模式),则添加推导模式。通过将-1或+1添加到已经包括在MPM列表中的角度模式中,可以获得这些帧内模式。推导不适用于非角度模式,即DC或平面模式。图4中示出了示例性角度模式。左下方向上的对角线模式索引为2,水平模式索引为18,左上对角线模式索引为34,垂直模式索引为50,右上对角线模式索引为66。然后,通过将+1或-1(通常为任意预定义的偏移量)添加到MPM列表中的角度模式的帧内模式索引中,可以推导出MPM列表的附加候选模式。例如,若索引为34的候选模式已经在MPM中,则MPM中的空位置可以用模式35和/或33填充。

最后,若MPM列表仍不完整,则按下列顺序添加默认模式:垂直模式、水平模式、帧内模式2和对角线模式。此过程的结果是,生成了6个MPM模式的唯一列表。

为了对6个MPM进行熵译码,使用了MPM的截断一元二值化。使用上下文对前三位bin进行译码,该上下文取决于与当前正被信号发送的bin相关的MPM模式。根据以下条件,将MPM模式分类为三类中的一类:(a)模式是否属于水平类(MPM模式小于或等于对角线方向),(b)垂直类(MPM模式大于对角线方向),或(c)非角度(DC和平面)类。因此,使用三个上下文来信号发送MPM索引。

如下完成剩余61个非MPM的译码。首先将61个非MPM分为两个集合:选定模式集合和未选定模式集合。选定模式集合包含16个模式,其余(45个模式)被分配给未选定模式集合。当前模式所属的模式集合在比特流中用标志指示。接着,用4位固定长度代码信号发送选定集合的模式,并用截断的二进制代码对未选定集合的模式进行译码。选定模式集合是通过对具有索引的共61个非MPM进行次级采样而生成的,如下:

选定模式集合={0,4,8,12,16,20…60}

未选定模式集合={1,2,3,5,6,7,9,10…59}

表1中示出了不同INTRA模式信令机制。

表1:BMS中当前LUMA帧内模式信令

应注意,本公开并不限于MPM列表的任意特定尺寸。而且,可以将未输入到MPM列表中的剩余帧内模式分为其他集合(诸如选定集合及未选定集合,或除此之外的更多集合),但不必进一步分离。在另一示例中,使用了具有3个最可能模式(MPM)的帧内模式译码方法。在一个示例中,语法元素intra_luma_mpm_flag[x0][y0]、intra_luma_mpm_idx[x0][y0]和intra_luma_mpm_remainder[x0][y0]指定亮度样本的帧内预测模式。阵列索引x0,y0指定所考虑的预测块的左上亮度样本相对于图片的左上亮度样本的位置(x0,y0)。当intra_luma_mpm_flag[x0][y0]等于1时,从邻近帧内预测的预测单元推断出帧内预测模式。

通过下列有序步骤得出当前块的帧内预测(IntraPredModeY[xPb][yPb])。

将邻近位置(xNbA,yNbA)和(xNbB,yNbB)分别设置为等于(xPb-1,yPb)和(xPb,yPb-1)。

对于被A或B替换的X,推导变量candIntraPredModeX如下:

用设置等于(xPb,yPb)的位置(xCurr,yCurr)和设置等于(xNbX,yNbX)的相邻位置(xNbY,yNbY)作为输入来调用块的可用性推导过程,并将输出分配给availableX。

推导候选帧内预测模式candIntraPredModeX如下:

若下列中的一个多个条件为真,将candIntraPredModeX设置为等于INTRA_DC。

变量availableX等于FALSE。

CuPredMode[xNbX][yNbX]不等于MODE_INTRA。

X等于B且yPb-1小于((yPb>>CtbLog2SizeY)<<CtbLog2SizeY)。

否则,将candIntraPredModeX设置为等于IntraPredModeY[xNbX][yNbX]。

推导x=0..2的candModeList[x]如下:

若candIntraPredModeB等于candIntraPredModeA,下列条件适用:

若candIntraPredModeA小于2(即等于INTRA_PLANAR或INTRA_DC),推导x=0..2的candModeList[x]如下:

candModeList[0]=INTRA_PLANAR

candModeList[1]=INTRA_DC

candModeList[2]=INTRA_ANGULAR50

否则,推导x=0..2的candModeList[x]如下:

candModeList[0]=candIntraPredModeA

candModeList[1]=2+((candIntraPredModeA+61)%64)

candModeList[2]=2+((candIntraPredModeA-1)%64)

否则(candIntraPredModeB不等于candIntraPredModeA),下列条件适用:

推导candModeList[0]和candModeList[1]如下:

candModeList[0]=candIntraPredModeA

candModeList[1]=candIntraPredModeB

若candModeList[0]和candModeList[1]都不等于INTRA_PLANAR,将candModeList[2]设为等于INTRA_PLANAR。

否则,若candModeList[0]和candModeList[1]都不等于INTRA_DC,将candModeList[2]设置为等于INTRA_DC,

否则,将candModeList[2]设置为等于INTRA_ANGULAR50。

通过应用下列过程推导IntraPredModeY[xPb][yPb]:

若intra_luma_mpm_flag[xPb][yPb]等于1,将IntraPredModeY[xPb][yPb]设置为等于candModeList[intra_luma_mpm_idx[xPb][yPb]]。

否则,通过应用下列有序步骤推导出IntraPredModeY[xPb][yPb]:

通过下列有序步骤对阵列candModeList[x],x=0..2进行修改:

当candModeList[0]大于candModeList[1]时,两个值进行如下交换:

(candModeList[0],candModeList[1])=Swap(candModeList[0],candModeList[1])

当candModeList[0]大于candModeList[2]时,两个值进行如下交换:

(candModeList[0],candModeList[2])=Swap(candModeList[0],candModeList[2])

当candModeList[1]大于candModeList[2]时,两个值进行如下交换:

(candModeList[1],candModeList[2])=Swap(candModeList[1],candModeList[2])(8-11)

通过下列有序步骤推导IntraPredModeY[xPb][yPb]:

将IntraPredModeY[xPb][yPb]设置为等于intra_luma_mpm_remainder[xPb][yPb]。

对于等于0到2(包括2)的i,当IntraPredModeY[xPb][yPb]大于或等于candModeList[i]时,IntraPredModeY[xPb][yPb]的值加1。

在本申请的一种实现形式中,帧与图片相同。

在本申请的一种实现形式中,提供了一种用于构造帧内预测的最可能模式MPM列表的方法,该方法包括:获得与当前块相邻的邻近块的帧内预测模式;如果邻近块的帧内预测模式不包括(或包括)在MPM列表,且邻近块的帧内预测模式为定向(诸如角度)帧内预测模式;根据当前块边界上参考样本集合的位置,确定当前块的预测样本数量N,其中,N为整数;如果N大于或等于阈值(诸如第一阈值),将邻近块的帧内预测模式添加到MPM列表中。

注意,确定预测样本的数量N可以是通过估计或从查找表中提取N确定,例如,取决于帧内模式索引并且可能考虑参考像素的可用性。这样,只要模式能够预测当前块的一定数量的样本(例如,超过第一阈值的样本),该模式就被包括在MPM列表中。

根据本申请的实现形式,从MPM列表中的邻近块推导出的帧内预测模式的顺序由块的样本的影响确定。例如,在包括具有较低N的推导出的帧内预测模式候选对象之前,包括具有较高N的推导出的帧内预测模式候选对象。

根据本申请的实现形式,从邻近块推导出的帧内预测模式的顺序由帧内预测模式的有效性确定,以预测当前块。这里,术语“顺序”是指考虑将特定帧内预测模式(intraprediction mode,IPM)候选对象用于构造MPM列表的顺序。通常,期望预测模式候选对象能够预测可能大部分的当前块。可以存在无法预测任何样本或可忽略不计的少量样本的IPM候选对象。例如,这可以是角度模式的情况,角度模式具有没有可用的参考样本的方向。为了根据IPM候选对象的相关性来实现对其的分类以预测当前块,本公开根据IPM候选对象的有效性来对其进行分类。这里,有效性可以反映(指示)特定帧内预测模式的适用性,以预测当前块的样本。适用性与当前块的通过帧内预测模式可预测的样本量(当前块的面积)相关。

示例性图14中示出了确定有效性的方法的步骤,如下。

步骤一S1410:获得与当前块相邻的邻近块的帧内预测模式。在该步骤中,可以从存储有先前已处理块(译码单元)的IPM的存储器中获得候选IPM。例如,如果采用典型的从左到右以及从上到下的处理顺序,左侧相邻块和上方相邻块及其IPM是可用的。可以根据在编码器和解码器处已知的预定顺序来确定邻近块。

步骤二S1420:检查是否已从另一邻近块获得帧内预测模式。该步骤可以通过寄存器来执行,该寄存器的每个位是指示是否获得了帧内预测模式的标志。在成功获得模式后,将该寄存器中对应的位设置为1。如果对应的位的值等于0,获得帧内预测模式期间的检查成功。该步骤属于剪枝。目的是确保任何IPM候选对象在MPM列表和/或临时列表或缓冲器中为仅一次的列表程序。

步骤三S1430:确定候选帧内模式的有效性。可以基于以下规则中的一个或多个(或全部)来估计候选IPM的有效性:如果帧内预测模式是非定向的,将有效性设置为VALID_NON_DIR,即“有效,非定向”。如果邻近块位于当前块的左侧,并且帧内预测模式大于或等于HOR_IDX以及帧内预测模式小于VER_IDX–dblStrictThr,将有效性设置为VALID_DIR(“有效,定向”)。如果邻近块位于当前块的上方,并且帧内预测模式大于HOR_IDX+dblStrictThr以及帧内预测模式小于或等于VER_IDX,将有效性设置为VALID_DIR。dblStrictThr是预定义的阈值。在特定实施例中,可以将其设置为等于4。预定义可以对应于标准中的定义。然而,阈值也可以具有不同的值或例如在比特流中是可配置的,或是基于在编码器和解码器处标准化的或以其他方式已知的方式可导出的。阈值可以取决于当前块的尺寸和/或基于为当前块可配置的帧内模式的数量。

对于左侧邻近块和左下邻近块(图5中示出的“L”和“BL”),如果帧内预测模式大于-10(参见图13)且小于HOR_IDX,将有效性设置为VALID_DIR。如果帧内预测模式等于或大于VER_IDX–strictThr且等于或小于VER_IDX+strictThr,则将有效性设置为STRICTLY_INVALID_DIR。否则,将有效性设置为INVALID_DIR。无效性对应于以下事实:沿不切割当前块的方向预测具有这种IPM的L块和BL块,因此,它们不能产生准确的预测。

对于上方和右上邻近块(图5中示出的“A”和“AR”),如果帧内预测模式大于VER_DIR且小于76,将有效性设置为VALID_DIR。如果帧内预测模式等于或大于HOR_IDX–strictThr且等于或小于HOR_IDX+strictThr,则将有效性设置为STRICTLY_INVALID_DIR。否则,将有效性设置为INVALID_DIR。

对于左上邻近块(图5中示出的“AL”),如果帧内预测模式大于HOR_IDX且小于VER_IDX,将有效性设置为VALID_DIR。如果帧内预测模式等于或大于VDIA_IDX–strictThr且等于或小于2+strictThr,则将有效性设置为STRICTLY_INVALID_DIR。否则,将有效性设置为INVALID_DIR。

注意,上述示例涉及如图13所示的从-10编号到76的帧内预测模式。然而,本公开不限于此,可以存在不同数量的模式以及模式的不同编号/标记(还参见图4和7)。通常,在给定邻近块位置的情况下,VALID_DIR可以对应于邻近块位置与当前块的中心之间的方向加上/减去某个范围。该范围可以是例如π/4。但是,该范围可以更小或更大,例如π/3或π/5。STRICTLY_INVALID_DIR可以对应于围绕位于当前块侧面的角/端的邻近块的垂直或水平方向的窄区间。对于左侧(或右侧)邻近块,围绕竖直方向的窄区间属于STRICTLY_INVALID_DIR。对于上方(或下方)邻近块,围绕水平方向的窄区间可以属于STRICTLY_INVALID_DIR。这里的窄区间对应于strictThr,其可以约为π/16、π/18或更小。可以将剩余模式标识为INVALID_DIR。

步骤四S1440:根据在步骤三处确定的有效性,将帧内预测模式推送(存储)到(FIFO)缓冲器中。在一个特定实施例中,可以存在(配置)若干缓冲器,标识为:VALID_NON_DIR,即“有效,非定向”,VALID_DIR,即“有效,定向”,INVALID_DIR,即“无效,定向”,STRICTLY_INVALID_DIR,即“严格无效,定向”。在步骤一处获得的帧内预测模式被推送到具有与针对在步骤三S1430中获得的帧内预测模式确定的有效性标识相同的有效性标识的FIFO中。在该步骤处,可以检查VALID_DIR和VALID_NON_DIR FIFO是否存储了等于或大于最大MPM列表尺寸的帧内预测模式的数量。如果满足该条件,有效性确定过程完成。注意,这里的术语“缓冲器”可以是存储器的任何部分,通常是用于在其中存储模式的存储器。缓冲器可以具有预定义的尺寸,或者可以具有可配置的尺寸。先进先出(First-In-First-Out,FIFO)仅是示例。通常,缓冲器可以实现任何存取策略。

在一个附加的实施例中,步骤四可以不使用有效期为STRICTLY_INVALID_DIR的FIFO。如果在先前步骤处确定的帧内预测模式具有STRICTLY_INVALID_DIR有效性,不将其推送到FIFO中的任何一个中,并且执行步骤五。进一步的实施例和变型是可能的。例如,可以存在与或多或少的各个预测方向集合相对应的或多或少的缓冲器。

否则,实现步骤五,这包括针对每个候选帧内预测模式(IPM)重复先前的步骤S1410至S1440,并且一旦处理了当前块的所有候选IPM,就对下一个邻近块重复这些步骤。

在确定有效性之后,执行根据图15的步骤。在该示例中,FIFO0的有效性为VALID_DIR。FIFO1的有效性为VALID_NON_DIR。FIFO2的有效性为INVALID_DIR。换言之,有效性越高,缓冲器索引越小。这些步骤的结果是,根据FIFO缓冲器填充MPM列表。如果在FIFO缓冲器中存储的帧内预测模式的数量小于MPM列表的尺寸,该列表内的空位被默认模式填满。

具体地,在步骤S1510中,将缓冲器的索引i初始化为0,即初始化为存储最有效帧内预测模式的缓冲器。在步骤S1520中,将mpm_count也初始化为0。变量mpm_count具有与MPM列表中的MPM条目数相对应的值,并且其范围从0到表示为max_mpm的MPM列表的最大条目数。在步骤S1530中,计算MPM列表填充了当前(即,为i的当前迭代中)缓冲器FIFOi中的多少个帧内预测模式。具体地,FIFOi中的num_mpm模式被存储为MPM列表的条目。变量num_mpm给出如下:

num_mpm=min(max_mpm–mpm_count,N),

N是当前FIFOi中帧内预测模式的数量。换言之,在迭代i中,所有的FIFOi条目(N)或MPM列表中仍空闲的许多条目(max_mpm–mpm_count)都被存储在MPM列表中,两者中的任何一个相对较小。在步骤S1540中,用当前FIFOi中的模式来填充MPM列表。具体地,从FIFOi中提取所计算的(在步骤S1530中)num_mpm模式,并将其存储到MPM列表中。采集MPM列表的当前长度的变量mpm_count通过输入的模式数量进行更新:

mpm_count=mpm_count+num_mpm。

在步骤S1550中,评估(判断):

条件1:MPM列表是否填满(num_mpm==max_mpm)以及

条件2:当前FIFOi是否是用于填充MPM列表的最后一个缓冲器。

如果既不满足条件1又不满足条件2(步骤S1550中为“否”),在步骤S1560中,将迭代索引i递增,并如步骤S1530和进一步步骤所述的,处理随后的缓冲器(具有下一个较低有效性)。

如果满足条件1或条件2(步骤S1550中为“是”),并且具体地,如果在步骤S1570中的评估中满足条件1(步骤S1570中为“是”),由于MPM列表是满的,所以该过程终止。另一方面,如果在步骤S1570中不满足条件1(步骤S1570中为“否”),这意味着,满足条件2,并且没有可以从中将模式存储到MPM列表中的其他缓冲器。相应地,在步骤S1580中,用默认模式填充MPM列表。具体地,将max_mpm–num_mpm默认模式插入MPM列表中。然后,该过程终止。换言之,根据一个实施例,提供了一种用于构造用于帧内预测的最可能模式MPM列表的方法。该方法包括:获得与当前块相邻的邻近块的帧内预测模式;如果已从另一邻近块获得该邻近块的帧内预测模式,确定该帧内预测模式的有效性;将帧内预测模式推送到根据帧内预测模式的有效性确定的FIFO缓冲器中;以及自最有效的FIFO开始,从若干FIFO中提取帧内预测模式到MPM列表中,直到MPM列表包含最大数量的mpm列表,或者FIFO中存储的所有模式都被提取到MPM列表中。在一些实现方式中,该方法中,FIFO0的有效性为VALID_DIR,FIFO1的有效性为VALID_NON_DIR。

图16示出了根据实施例的示例性装置1600。装置1600用于构造用于帧内预测的最可能模式MPM列表。其包括帧内模式确定单元1610,用于获得与当前块相邻的第一邻近块的帧内预测模式。这可以例如通过从存储有先前已处理块(相对于当前块)的预测模式的存储器中提取帧内预测模式来执行。装置1600还包括有效性确定单元1620,用于如果第一邻近块的帧内预测模式与从第二邻近块已获得的帧内预测模式不同,确定帧内预测模式的有效性。换言之,在有效性确定单元中,确定邻近块的帧内预测模式的有效性。如上所述,基于与邻近块相对于当前块的位置有关的邻近块的IPM的方向来评估有效性。如果邻近块的帧内预测模式已经包括在有效性缓冲器中的一个缓冲器中,不必确定有效性。换言之,在执行有效性确定之前可以执行剪枝步骤,其被反映为以下条件:“如果第一邻近块的帧内预测模式与从第二邻近块已获得的帧内预测模式不同”。在该条件下,第二块是为其确定IPM的任何块。它可以是其IPM已在块的块,该块的MPM已在有效性缓冲器中的一个中。然而,本公开不限于在确定有效性之前执行该剪枝步骤。剪枝步骤可以可在确定有效性之后、将IPM插入到适当的有效性缓冲器之前交替地执行,或者可以在从一个或多个有效性缓冲器填充MPM列表时执行。

该装置还包括缓冲器存取单元1630和MPM构造单元1640,缓冲器存取单元1630用于根据帧内预测模式的有效性,将帧内预测模式存储到若干有效性缓冲器(例如,缓冲器存储器1690中的缓冲器,该缓冲器存储器1690可以在装置1600内部或外部)中对应的有效性缓冲器中,MPM构造单元1640用于自最有效缓冲器开始,从若干有效性缓冲器中提取帧内预测模式到MPM列表中,直到MPM列表包含最大数量的预测模式,或者若干有效性缓冲器中存储的所有预测模式都被提取到MPM列表中。换言之,可以有若干个(即至少一个以上)有效性分类(值),被定义为例如上述的有效非定向、严格有效角度(定向)、有效角度(定向)、无效、严格无效等。对于这些分类的至少一个子集(一个或多个分类),存在各自的有效性缓冲器,例如,用于有效定向IPM和/或用于有效非定向IPM的第一缓冲器。当构造MPM列表时,将有效性缓冲器中的IPM依据其的有效性(即,各个缓冲器正存储的模式的有效性),按照缓冲器的顺序存储到MPM列表中。

注意,以上的装置说明并非用以限制本公开,而仅是示例性的。该装置可以被实现为电路的一部分,该电路包括一个或多个处理器或其他处理硬件及相应软件。在一个实施例中,以上装置被嵌在集成电路上,例如芯片上。集成电路可以执行进一步的功能,例如视频的编码或解码。

图17是根据本公开实施例的用于视频译码的示例计算设备1200的示意图。视频译码可以是采用上述MPM构造的视频编码和/或视频解码。计算设备1200适合于实现本文中描述的所公开的实施例。计算设备1200包括入端口1220、用于接收数据的接收机单元(Rx)1210、用于处理数据的处理器、逻辑单元或中央处理单元(CPU)1230、发射机单元(Tx)1240、用于发送数据的出端口1250以及用于存储数据的存储器1260。计算设备1200还可以包括光到电(Optical-to-electrical,OE)组件和电到光(electrical-to-optical,EO)组件,其耦合到入端口1220、接收机单元1210、发射机单元1240和出端口1250,进行光信号或电信号的出进。在一些示例中,计算设备1200还可以包括无线发射机和/或接收机。

处理器1230通过硬件和软件实现。处理器1230可以被实现为一个或多个CPU芯片、核(例如,为多核处理器)、现场可编程门阵列(field-programmable gate array,FPGA)、专用集成电路(appliocattion specific integrated circuit,ASIC)和数字信号处理器(digital signal processor,DSP)。处理器1230与入端口1220、接收机单元1210、发射机单元1240、出端口1250和存储器1260进行通信。处理器1230包括译码模块1214。译码模块1214实现上述所公开的实施例。例如,译码模块1214实现、处理、准备或提供各种译码操作。因此,包括译码模块1214对计算设备1200的功能性提供了实质性改进,并且实现了计算设备1200到不同状态的转换。可替换地,译码模块1214被实现为存储在存储器1260中并且由处理器1230执行的指令(例如,为存储在非暂时性介质上的计算机程序产品)。

存储器1260包括一个或多个磁盘、磁带机和固态硬盘,并且可以用作溢出数据存储设备,用于在选择程序进行执行时存储该程序,并且存储在程序执行期间被读取的指令和数据。存储器1260可以是易失性和/或非易失性的,并且可以是只读存储器(ROM)、随机存取存储器(RAM)、三元内容可寻址存储器(TCAM)和/或静态随机存取存储器(SRAM)。计算设备1200还可以是输入/输出(I/O)设备,用于与终端用户进行交互。例如,计算设备1200可以包括用于视觉输出的显示器(例如,监视器)、用于音频输出的扬声器以及用于用户输入的键盘/鼠标/跟踪球等。

应理解,在本申请的一种实现方式中,获得邻近块的帧内预测模式的步骤是指获得与应用于邻近块的帧内预测模式对应的值。将帧内预测模式添加到MPM列表中的步骤是指着将与帧内预测模式对应的值添加到MPM列表中。

在本申请的一种实现形式中,根据当前块边界上参考样本集合位置,确定当前块预测样本的数量N,包括:确定包括在邻近块中的多个样本为参考样本集合;根据参考样本集合的位置确定数量N。注意,在一些示例性实现方式中,参考样本集合可以取决于下列各项中的尺寸的一个或多个:当前块、可用作参考样本的邻近块的数量或样本(即,已处理的,在图片/条带内的和/或允许用于帧内预测的)。

在本申请的一种实现形式中,根据当前块边界上参考样本集合位置,确定当前块预测样本的数量N,包括:根据当前块与邻近块之间的相对位置,确定当前块的侧面;确定与当前块侧面相邻的多个样本作为参考样本集合,(例如,若邻近块与当前预测块的上侧(诸如“A”或“AR”)相邻,将上侧的可用(即未填充的)参考样本包括在参考样本集合中;若邻近块与当前预测块的左侧(诸如“L”或“BL”)相邻,将左侧的可用(即未填充的)包括在参考样本集合中;对于“AL”邻近块,以相似的方式使用两侧的可用参考样本);根据参考样本集合的位置确定数量N。

在本申请的一种实现形式中,根据当前块边界上参考样本集合位置,确定当前块预测样本的数量N,包括:若与邻近块帧内预测模式对应的值和与所述当前块相邻的另一邻近块帧内预测模式对应的值之间的绝对差小于另一阈值(诸如第二阈值),确定另一邻近块中包括的多个样本与邻近块中包括的多个样本,作为参考样本集合;根据参考样本集合的位置,确定数量N。

在本申请的一种实现形式中,阈值(第一阈值)是预先定义的,且阈值(第一阈值)的值等于的值等于2、4、8或16。

在本申请的一种实现形式中,阈值(第一阈值)根据当前块中的样本数量确定(例如,阈值等于1/2、1/4、1/8或当前块样本总数的任意其他分数部分)。这包括基于例如由块一侧(若块为正方形)或两侧(若块为矩形且非正方形)的尺寸所给出的块的尺寸确定数量N的实现方式。

在本申请的一种实现形式中,该方法还包括:在将所述邻近块的帧内预测模式添加到MPM列表中后,若所述MPM列表中包括的帧内预测模式数量小于另一阈值(诸如第三阈值),检查MPM列表中是否包括帧内预测模式集合的第一帧内预测模式,并且若MPM列表中不包括第一帧内预测模式,将第一帧内预测模式添加到所述MPM列表中;其中,帧内预测模式集合包括平面模式(0)、DC模式(1)、垂直模式(VER_IDX)、水平模式(HOR_IDX)、帧内模式2(2)、垂直对角线模式(VDIA_IDX)或对角线模式(DIA_IDX)。这里,当参考图4时,VDIA_IDX可对应索引值66,DIA_IDX可对应索引值34。

在本申请的一种实现形式中,该方法还包括:若N小于阈值(诸如第一阈值),在此过程中不将邻近块的帧内预测模式添加到MPM列表中。

在本申请的一种实现形式中,该方法还包括:若N小于阈值(诸如第一阈值),将邻近块的帧内预测模式添加到MPM列表的最后部分中(例如,在3个MPM的情况下,将邻近块的帧内预测模式添加到MPM列表中的第三位置;在6个MPM的情况下,将邻近块的帧内预测模式添加到MPM列表中的第五或第六位置)。

在本申请的一种实现形式中,提供了一种用于构造用于帧内预测的最可能模式MPM列表的方法,该方法包括:获得与当前块相邻的邻近块的帧内预测模式;若MPM列表中不包括邻近块的帧内预测模式且邻近块的帧内预测模式是定向(诸如角度)帧内预测模式,根据邻近块确定当前块预测样本数量是否大于或等于阈值;若当前块预测样本数量大于或等于阈值,将邻近块的帧内预测模式添加到MPM列表中。这里,数量可以是由帧内预测模式预测的当前块样本个数(数量)计算、估计或确定的。

在本申请的一种实现形式中,该方法还包括:

在将邻近块的帧内预测模式添加到MPM列表中后,若MPM列表中包括的帧内预测模式数量小于阈值,检查MPM列表中是否包括帧内预测模式集合的第一帧内预测模式,并且若MPM列表中不包括第一帧内预测模式,将第一帧内预测模式添加到MPM列表中;其中,帧内预测模式集合包括平面模式(0)、DC模式(1)、垂直模式(VER_IDX)、水平模式(HOR_IDX)、帧内模式2(2)、垂直对角线模式(VDIA_IDX)或对角线模式(DIA_IDX)。

在本申请的一种实现形式中,公开了一种包括处理电路的编码器,用于执行所述方法。

在本申请的一种实现形式中,公开了一种包括处理电路的解码器,用于执行所述方法。处理电路可以是一个或多个处理器,诸如通用处理器、DSP、诸如FPGA的可编程硬件或诸如ASIC的专用硬件和/或任何其他电路。因此,所述处理电路的配置可以包括硬件设计、硬件编程或软件编程的组合。

在本申请的一种实现形式中,公开了一种包括程序代码的计算机程序产品(诸如存储在非暂时性介质上),用于执行所述方法。

在本申请的一种实现形式中,一种用于构造最可能模式MPM列表的解码器包括:一个或多个处理器;以及非暂时性计算机可读存储介质,其耦合到处理器并存储由处理器执行的程序,其中,该程序在由处理器执行时将解码器配置为执行所述方法。

在本申请的一种实现形式中,一种用于构造最可能模式MPM列表的编码器包括:

一个或多个处理器;以及非暂时性计算机可读存储介质,其耦合到处理器并存储由处理器执行的程序,其中,该程序在由处理器执行时将编码器配置为执行所述方法。

在一个示例中,从MPM列表中当前预测块的邻近块推导出的帧内预测模式的顺序由重构邻近块的样本确定。这里,重构是指在编码器或解码器处的重构,以获得用作预测的样本。重构以特定处理顺序(编码,解码)执行。

在一个示例中,以下列步骤构造MPM列表。在一个示例中,MPM列表在步骤一之前可以为空列表。换言之,MPM列表可以被初始化为空列表。

步骤一:确定与当前预测块相邻的邻近块是否可用。

在一个示例中,在图5中,块AL(左上)、块A(上方)、块AR(右上)、块L(左侧)或块BL(左下)为与当前预测块相邻的邻近块。图5中的当前译码单元可以表示当前预测块,也被称为当前块。

在本步骤中,在一个示例,确定与当前预测块相邻的所有邻近块是否可用,或者在另一个示例中,检查与当前预测块相邻的部分邻近块是否可用,例如,首先确定块L是否可用,然后确定块A是否可用。在另一个示例中,仅检查一个邻近块,例如,在第一次执行步骤一时,仅确定块L是否可用。可用性的确定可以包括确定是否存在邻近块,即存在与当前块具有特定位置的邻近块。可用性的确定可以包括确定是否用可用作候选帧内模式的帧内模式预测邻近块。

步骤二:对于可用的邻近块,确定MPM列表中是否包括邻近块的帧内预测模式。

在一个示例中,对于可用的邻近块,获得邻近块的帧内预测模式。

在一个示例中,若此为第一次执行步骤二,则若MPM列表在该步骤之前为空列表,将邻近块的帧内预测模式添加到MPM列表中。

应理解,在本申请的一种实现方式中,将帧内预测模式添加到MPM列表中的步骤是指将与帧内预测模式对应的值添加到MPM列表中。

在另一个示例中,若邻近块的帧内预测模式已包括在MPM列表中(例如,与帧内预测模式对应的值已包括在MPM列表中),不执行以下步骤(步骤三或步骤四)。若存在下一个可用的邻近块,对下一块重复此步骤。

在另一个示例中,若MPM列表中不包括邻近块的帧内预测模式,转到步骤三。

在一个示例中,步骤二将在已经处理了所有可用的邻近块或MPM列表中的帧内预测模式的数量等于第三阈值之后完成。

步骤三:确定邻近块的帧内预测模式是否为定向帧内预测模式(诸如角度模式)。

在一个示例中,当邻近块的帧内预测模式为定向帧内预测模式时,转到步骤四。

在另一个示例中,当邻近块的帧内预测模式不是定向帧内预测模式时,例如,邻近块的帧内预测模式是DC模式或平面模式,将邻近块的帧内预测模式添加到MPM列表中。

在一个示例中,在将DC模式或平面模式添加到MPM列表中后,若MPM列表中的帧内预测模式数量小于第三阈值,且存未处理的下一个可用邻近块,转到步骤二,以确定下一个可用邻近块。在另一个示例中,若MPM列表中的帧内预测模式数量小于第三阈值且没有可用邻近块,转到步骤五。

第三阈值可以是预定义的,且第三阈值是正整数。在一个示例中,第三阈值可以是3或6。这里,第三阈值对应MPM列表长度。其可以是固定的,由基于其他参数的标准定义,或者在比特流内被信号发送。

若MPM列表中的帧内预测模式数量等于第三阈值,构造MPM列表过程结束,MPM列表已满并且可以使用。

在一个示例中,将DC模式或平面模式添加到MPM列表的开头,或者将DC模式(值为1)或平面模式(值为0)添加到MPM列表的第一部分。例如,若要构造的MPM列表中的帧内预测模式数量为3,MPM列表中存在两个帧内预测模式,(20,18)。在特定示例中,在将DC模式添加到MPM列表中后,MPM列表可以为(1,20,18),或者MPM列表可以为(20,1,18)。

步骤四:确定从邻近块的参考样本集合中获得的当前预测块的预测样本数量(N)是否大于或等于第一阈值。

在一个示例中,根据当前块边界上参考样本集合的位置确定当前块的预测样本数量N。

用于与当前预测块的预测样本数量N进行比较的第一阈值可以是预定义的,且第一阈值的值等于2、4、8或16。

用于与当前预测块的预测样本数量N进行比较的第一阈值可以根据当前块中的样本数量来确定(例如,第一阈值的值等于1/2、1/4、1/8或当前块样本总数的任意其他分数部分)。

在一个示例中,若当前预测块的预测样本数量N小于第一阈值,将邻近块的帧内预测模式添加到MPM列表的最后部分中(例如,在3个MPM的情况下,将邻近块的帧内预测模式添加到MPM列表中的第三位置;在6个MPM的情况下,将邻近块的帧内预测模式添加到MPM列表中的第五或第六位置)。在将该帧内预测模式添加到MPM列表中后,若MPM列表中的帧内预测模式数量小于第三阈值且存在下一个可用邻近块,转到步骤二;若MPM列表中的帧内预测模式数量小于第三阈值且没有可用的邻近块,转到步骤五。第三阈值可以是预定义的,且第三阈值是正整数。在一个示例中,第三阈值可以是3或6。若MPM列表中的帧内预测模式数量等于第三阈值,构造MPM列表的过程结束。

在一个示例中,若当前预测块的预测样本数量N小于第一阈值,在此过程中不将邻近块的帧内预测模式添加到MPM列表中。若没有下一个可用邻近块,转到步骤五;若有下一个可用邻近块,转到步骤二。

在一个示例中,若N大于或等于第一阈值,将邻近块的帧内预测模式添加到MPM列表中。在一个示例中,将邻近块的帧内预测模式添加到MPM列表的开头,或将邻近块的帧内预测模式添加到MPM列表的第一部分。在将该帧内预测模式添加到MPM列表中后,若MPM列表中的帧内预测模式数量小于第三阈值且存在下一个可用邻近块,转到步骤二;若MPM列表中的帧内预测模式数量小于第三阈值且没有下一个可用的邻近块,转到步骤五。第三阈值可以是预定义的,且第三阈值是正整数。在一个示例中,第三阈值可以是3或6。若MPM列表中的帧内预测模式数量等于第三阈值,则构造MPM列表的过程结束。

在一个示例中,根据当前预测块边界上参考样本集合的位置获得当前预测块的预测样本数量N。在一个示例中,可以根据《通用视频(草案2)》[JVET-K1001]的“帧内样本预测“来执行样本的描述预测。

在一个示例中,根据下列示例获得当前预测块边界上的参考样本集合的位置。

示例1:将包括在邻近块中的多个样本确定为参考样本集合。

示例2:将参考样本集合定义为属于与选定邻近块相邻一侧的参考样本。

在一个示例中,如图9或图11所示,若选定邻近块与预测块的上侧(诸如“A”或“AR”)相邻,则将上侧的可用(即,未填充的)参考样本包括在参考样本集合中。该块可以属于A、AL和/或AR块和/或是与当前块上方相邻的其他块,诸如A与AL之间的块。若选定邻近块与预测块的左侧(诸如“L”或“BL”)相邻,将左侧的可用(未填充的)参考样本包括在参考样本集合中。对于“AL”邻近块,以相似的方式使用两侧的可用参考样本。参考样本可以属于L、AL和/或BL块和/或与当前块左侧相邻的其他块,诸如L和AL之间的块。术语“未填充的参考样本”指样本是重构样本,该重构样本被允许用作参考样本进行帧内预测。不可用参考样本可以被填充。不可用参考样本可以为图片中不同条带的邦本等等。

示例3:参考样本集合由参考样本提取过程定义的提取过程定义。

参考样本提取过程由执行下列步骤组成,以推导出给定帧内预测模式m的邻近样本集合(参见图12)。

步骤1:迭代所有邻近块,迭代的邻近块中的每一个邻近块Si具有帧内预测模式IPMi,对每个迭代执行下列子步骤。

子步骤1:若IPMi为非定向的,跳过其余子步骤并开始下一迭代。

子步骤2:若|m-IPMi<T|,将Si的参考样本添加到邻近样本集合。T(第二阈值)的值可以被预先确定为等于2、4、8或16。在另一个实施例中,将T的值设置为等于MPM列表的最大尺寸。

作为示例,在图12中标记为{A,B,C,D,E,F}的在步骤1处迭代的邻近块相应地提供了下列帧内预测模式:{2,10,11,57,56,38}。阈值T被分配为等于4。

候选块C提供了模式m=11。根据条件|m-IPMi<T|,对于此候选模式,参考样本集合将包括块B和C的参考样本。

候选块E提供了模式m=56。根据条件|m-IPMi<T|,对于此候选模式,参考样本集合将包括块D和E的参考样本。

在一个示例中,当前预测块的预测样本数量(N)为邻近块样本对预测块的影响的估值。该估值可以对参考样本一侧内的参考样本的给定开始和结束位置使用下列规则来获得。

例如,若邻近块位于预测块的上侧,则x0和x1分别表示属于邻近块的参考样本的最左和最右位置。在此更进一步地,坐标x,y相对于左上参考样本给出,,指定其坐标x=0,y=0。x递增1表示向右移一个样本位置,y递增1表示向下移一个样本位置。对于定向模式和邻近块的上述位置,估计N的值如下(其中,H表示预测块的高度):

-若帧内预测模式(例如,帧内预测模式为从正被检查的邻近块获得的模式)

等于VER_IDX,将N值设置为等于(x1-x0)<<log2(H)。

-若帧内预测模式大于VER_IDX,

ο若x0>H且x1>H,将N的值设置为等于(x1-x0)<<log2(H)。

ο若x0<H且x1>H,将N的值设置为等于(x1-H)<<log2(H)+(H-x0)<<log2(H-1)。

ο否则,将N的值设置为等于(x1-x0)<<(log2(H)-log2(x1)-1)。

-否则,若帧内预测模式索引大于HOR_IDX,

ο若x0>H且x1>H,将N的值设置为等于(x1-x0)<<(log2(H)-log2(x1)-1)。

ο若x0<H且x1>H,将N的值设置为等于(x1-H)<<log2(H)+(H-x0)<<log2(H-1)。

ο否则,将N的值设置为等于(x1-x0)<<log2(H)。

-否则,将N的值设置为零。

在另一个示例中,对称地,若邻近块位于预测块的左侧,则x0和x1分别表示属于邻近块的参考样本的最左和最右位置。在此更进一步地,坐标x,y相对于左上参考样本给出,,指定其坐标x=0,y=0。x递增1表示向右移一个样本位置,y递增1表示向下移一个样本位置。对于定向模式和邻近块的上述位置,估计N的值如下(其中,W表示预测块的宽度):

-若帧内预测模式等于VER_IDX,将N值设置为等于(y1-y0)<<log2(W)。

-若帧内预测模式大于VER_IDX,

ο若y0>W且y1>W,将N的值设置为等于(y1-y0)<<log2(W)。

ο若x0<W且x1>W,将N的值设置为等于(y1-W)<<log2(W)+(W-y0)<<log2(W-1)。

ο否则,将N的值设置为等于(y1-y0)<<(log2(W)-log2(y1)-1)。

-否则,若帧内预测模式索引大于HOR_IDX,

ο若x0>W且x1>W,将N的值设置为等于(y1-y0)<<(log2(W)-log2(y1)-1)。

ο若x0<W且x1>W,将N的值设置为等于(y1-W)<<log2(W)+(W-y0)<<log2(W-1)。

ο否则,将N的值设置为等于(y1-y0)<<log2(W)。

-否则,将N的值设置为零。

若使用分数阈值,阈值T的值相对于块的尺寸定义。例如,若分数阈值设置为等于1/2,将T的值设置为(log2(W)+log2(H)))>>1。若分数阈值设置为等于1/4,将T的值设置为(log2(W)+log2(H)))>>2。若分数阈值设置为等于1/8,将T的值设置为(log2(W)+log2(H)))>>3。可以使用上述阈值修改在定点操作中执行与阈值的比较。

然而,注意,以上获得N的方法仅是示例性的。上述计算不必实际执行:对于每个帧内预测模式值(索引)或IPM索引的若干范围,查找表可以列出估计数量N。接着,N的确定可以包括基于邻近块各自的IPM,查找邻近块A到F中每个邻近块的N的值。

而且,在一些实施例中,可以在考虑邻近块的可用性时估计数量N(不考虑其如何确定/估计),该邻近块提供参考像素以利用各自的IPM进行预测。例如,当查看图12时,如果块B不可用,因为用于预测当前块的块A的IPM也使用块B的参考样本,因此可以相对于列表或估计的N减少块A的IPM的数量N。这种减少可以取决于不可用块中存在的参考像素的数量。

步骤五:检查MPM列表中是否包括帧内预测模式集合中的第一帧内预测模式,若MPM列表中不包括第一帧内预测模式,将第一帧内预测模式添加到MPM列表。

在一个示例中,帧内预测模式集合包括平面模式(0)、DC模式(1)、垂直模式(VER_IDX)、水平模式(HOR_IDX),帧内模式2(2)、垂直对角线模式(VDIA_IDX)或对角线模式(DIA_IDX)。将帧内预测模式有序地添加到MPM列表中,直到MPM列表中的帧内预测模式的数量等于第三阈值。

帧内预测模式集合可以包括在其他示例中公开的其他帧内预测模式。

在另一个示例中,从MPM列表中的邻近块推导出的帧内预测模式的顺序由重构邻近块的样本对预测信号的影响确定。

在示例性实施例中,如图5所示,根据空间邻近块构造MPM列表是。关于是否应将模式包括在MPM中以及插入模式的位置是否在来列表内的决定受到帧内预测模式以及提供候选帧内预测模式的空间邻近块位置的组合影响。然而,本公开不限于特定邻近块。MPM可以基于邻近块中的任意邻近块来构造,诸如块AL和L或AL和R之间的块,只要编码器和解码器已知考虑这些块的顺序,从而在构造列表时这列块以相同的方式运行。而且,注意,在这些示例中对上方和左侧块的参考反映了从左到右以及从上到下的块的处理顺序。由于对图片/条带/图块中的块的处理(编码,解码)顺序不同,所以所考虑的邻近块以及用于预测的可用参考样本可以改变,者对本领域技术人员而言是显而易见的。

在实施例中,提出估计重构邻近块样本对预测信号的影响,并用该估计结果来确定属于邻近块的候选模式的MPM列表位置。

在某些情况下(参见图8),可能的是,若从邻近块中推断出了帧内预测模式,属于邻近块所属的参考样本不会影响预测信号。对于此种MPM候选帧内预测模式,建议

检查邻近块时不考虑这些模式;或者

在构造MPM列表时降低这些帧内预测模式的优先级,即用更长的代码字将其信号发送。

在另一个示例中,可能会出现按扫描顺序块的参考样本不可用的情况。

在该实施例中,将类似于MPM列表处理的修改应用于从块中推断出的帧内预测模式,这些块提供了参考样本的填充值。在一些示例性实施例中,填充值不影响N且不计入数量N。

在图9中,当生成用于预测块的预测信号时,尚未重构“AR”候选对象。因此,可以跳过来自该空间候选块的帧内预测模式,或将其以较低优先级置于MPM中。

该实施例可与不同的划分叉树结合应用,包括但不限于四叉树(quad-tree,QT,见图9)、四叉树和二叉树(QTBT,见图11)以及多叉树(multiple-tree,MTT,未示出)划分类型。

在一个示例中,提供了一种用于构造用于帧内预测的最可能模式MPM列表的方法,该方法包括:

确定与当前块相邻的第一邻近块是否可用,

若第一邻近块不可用,将与当前块相邻的下一邻近块作为第一邻近块并重复上述步骤;

若第一邻近块可用,确定MPM列表中是否包括第一邻近块的帧内预测模式;

若MPM列表中包括第一邻近块的帧内预测模式,将与当前块相邻的下一邻近块作为第一邻近块并重复上述步骤;

若MPM列表中不包括第一邻近块的帧内预测模式,

确定第一邻近块的帧内预测模式是否为定向预测模式;

若第一邻近块的帧内预测模式为定向预测模式,

根据第一邻近块,确定当前块的预测样本数量是否大于或等于阈值;

若当前块的预测样本数量大于或等于阈值,将邻近块的帧内预测模式添加到MPM列表中;

确定MPM列表中包括的帧内预测模式数量是否小于阈值,

若MPM列表中包括的帧内预测模式数量小于阈值,将与当前块相邻的下一邻近块作为第一邻近块并重复上述步骤。

在本公开的一个方面,公开了一种用于构造最可能模式MPM列表的方法,该方法包括:

确定当前译码块的左侧块是否可用,若当前译码块的左侧块可用,将左侧块的帧内预测模式添加到MPM列表中;

确定当前译码块的上方块是否可用,若当前译码块的上方块可用,将上方块的帧内预测模式添加到MPM列表中;

若MPM列表中不包括平面模式,将平面模式添加到MPM列表中;

若MPM列表中不包括DC模式,将DC模式添加到MPM列表中。

在本申请的一种实现形式中,若当前译码块的上方块可用,且MPM列表中不包括上方块的帧内预测模式,将上方块的帧内预测模式添加到MPM列表中。

在本申请的一种实现形式中,若当前译码块的上方块可用,且MPM列表中包括上方块的帧内预测模式,执行的“添加”或“添加”过程的结果不会改变MPM列表。

在本申请的一种实现形式中,当左侧块的预测模式不是帧内预测模式时,当前译码块的左侧块不可用。

在本申请的一种实现形式中,当当前译码块是位于帧的最左侧的译码块,当前译码块的左侧块不可用。

在本申请的一种实现形式中,支持并行处理,当前译码块是位于图块的最左侧的译码块,且当前译码块的左侧块不可用。

在本申请的一种实现形式中,不支持并行处理,当前译码块是位于图块的最左侧而非帧的最左侧的译码块,当前译码块的左侧块可用。

在本申请的一种实现形式中,支持并行处理,当前译码块是位于条带的最左侧的译码块,当前译码块的左侧块不可用。

在本申请的一种实现形式中,不支持并行处理,当前译码块是位于条带的最左侧而非帧的最左侧的译码块,当前译码块的左侧块可用。

在本申请的一种实现形式中,当上侧块的预测模式不是帧内预测模式时,当前译码块的上侧块不可用。

在本申请的一种实现形式中,当当前译码块是位于帧的最上侧的译码块时,当前译码块的上侧块不可用。

在本申请的一种实现形式中,支持并行处理,当前译码块是位于图块的最上侧的译码块,当前译码块的上侧块不可用。

在本申请的一种实现形式中,不支持并行处理,当前译码块是位于图块的最上侧而非帧的最上侧的译码块,当前译码块的上侧块可用。

在本申请的一种实现形式中,支持并行处理,当前译码块是位于条带的最上侧的译码块,当前译码块的上侧块不可用。

在本申请的一种实现形式中,不支持并行处理,当前译码块是位于条带的最上侧而非帧的最上侧的译码块,当前译码块的上侧块可用。

在本申请的一种实现形式中,当限制线缓冲器尺寸且当前译码块是位于当前CTU最上侧的译码块时,当前译码块的上侧块不可用。

在本申请的一种实现形式中,当当前译码块不是位于帧最左侧的译码块时,当前译码块的左侧块可用。

在本申请的一种实现形式中,当当前译码块不是位于帧最上侧的译码块时,当前译码块的上侧块可用。

在本申请的一种实现方式中,该方法还包括:若MPM列表中的帧内预测模式数量小于阈值,检查MPM列表中是否包括帧内预测模式集合的第一帧内预测模式,并且若MPM列表中不包括第一帧内预测模式,将第一帧内预测模式添加到MPM列表中,其中,帧内预测模式集合包括垂直模式(VER_IDX)(作为第一帧内预测模式)、水平模式(HOR_IDX)、帧内模式2(2)、垂直对角线模式(VDIA_IDX)或对角线模式(DIA_IDX)。

在本申请的一种实现形式中,对应VER_IDX的值为50;对应HOR_IDX的值为18;对应VDIA_IDX的值为66,并且该值可以为对应于角度模式的值中的最大值;对应帧内模式2的值2可以是对应于角度模式的值中的最小值;对应DIA_IDX的值为34。

在本申请的一种实现形式中,若MPM列表中的帧内预测模式数量小于阈值,检查MPM列表中是否包括帧内预测模式集合的第一帧内预测模式,并且若MPM列表中不包括第一帧内预测模式,将第一帧内预测模式添加到MPM列表中,其中,帧内预测模式集合包括垂直模式(VER_IDX)(作为第一帧内预测模式)、水平模式(HOR_IDX)、帧内模式2(2)、垂直对角线模式(VDIA_IDX)或对角线模式(DIA_IDX)。

在本申请的一种实现形式中,该方法还包括:

若MPM列表中帧内预测模式数量小于阈值,当MPM列表中不包括帧内预测模式时,根据前述顺序,迭代地将包括垂直模式(VER_IDX)、水平模式(HOR_IDX)、帧内预测模式2(2)、垂直对角线模式(VDIA_IDX)或对角线模式(DIA_IDX)的帧内预测模式集合添加进MPM列表中,直至预测模式数量等于该阈值。这里,阈值对应MPM列表的预定义长度。

在本申请的一种实现形式中,该方法还包括:

若当前译码块的左侧块不可用且MPM列表中帧内预测模式数量小于阈值,

检查MPM列表中是否包括帧内预测模式集合的第一帧内预测模式,并且若MPM列表中不包括第一帧内预测模式,将第一帧内预测模式添加到MPM列表中,其中,帧内预测模式集合包括垂直模式(VER_IDX)(作为第一帧内预测模式)、垂直对角线模式(VDIA_IDX)、对角线模式(DIA_IDX)或帧内模式2(2)。

在本申请的一种实现形式中,该方法还包括:

若MPM列表中的帧内预测模式数量小于阈值,

检查MPM列表中是否包括帧内预测模式集合的第一帧内预测模式,并且若MPM列表中不包括第一帧内预测模式,将第一帧内预测模式添加到MPM列表中,其中,帧内预测模式集合包括垂直模式(VER_IDX)(作为第一帧内预测模式)、水平模式(HOR_IDX)、对应于偏移为-4的VER_IDX的帧内预测模式,或对应于偏移为4的VER_IDX的帧内预测模式。

在本申请的一种实现形式中,对应偏移-4的VER_IDX的帧内预测模式是使用对应VER_IDX的值来添加偏移-4,并获得对应帧内预测模式的值。例如,当VER_IDX的值为50时,对应偏移-4的VER_IDX的帧内预测模式为帧内预测模式46,对应偏移4的VER_IDX的帧内预测模式为帧内预测模式54。具有偏移的其他示例具有与此示例类似的过程。

注意,在执行-1或+1或其他偏移值时,其可能涉及升序和降序操作。例如,当帧内模式(2)的值为2(对应于角度模式的值中的最小值)时,则帧内模式(2)–1将为66(升序情况),或当VDIA_IDX的值为66(对应于角度模式的值中的最大值)时,则VDIA_IDX+1将为2(降序情况)。

在本申请的一种实现形式中,该方法还包括:

若MPM列表中的帧内预测模式数量小于阈值,

检查MPM列表中是否包括帧内预测模式集合的第一帧内预测模式,并且若MPM列表中不包括第一帧内预测模式,将第一帧内预测模式添加到MPM列表中,其中,帧内预测模式集合包括垂直模式(VER_IDX)(作为第一帧内预测模式)、水平模式(HOR_IDX)、对应于偏移为4的VER_IDX的帧内预测模式,或对应于偏移为-4的VER_IDX的帧内预测模式。

在本申请的一种实现形式中,该方法还包括:

若当前译码块的左侧块不可用且MPM列表中帧内预测模式数量小于阈值,

检查MPM列表中是否包括帧内预测模式集合中的第一帧内预测模式,并且若MPM列表中不包括第一帧内预测模式,将第一帧内预测模式添加到MPM列表中,其中,帧内预测模式集合包括下列帧内预测模式集合中的一个:

垂直模式(VER_IDX)(作为第一帧内预测模式),垂直对角线模式(VDIA_IDX),对应于偏移为-1的VER_IDX的帧内预测模式,以及对应于偏移为1的VER_IDX的帧内预测模式;或

垂直模式(VER_IDX)(作为第一帧内预测模式),垂直对角线模式(VDIA_IDX),对应于偏移为-4的VER_IDX的帧内预测模式,以及对应于偏移为4的VER_IDX的帧内预测模式;或

垂直模式(VER_IDX)(作为第一帧内预测模式),垂直对角线模式(VDIA_IDX),对应于偏移为-4的VDIA_IDX的帧内预测模式,以及对应于偏移为-1的VER_IDX的帧内预测模式;或

垂直模式(VER_IDX)(作为第一帧内预测模式),垂直对角线模式(VDIA_IDX),对应于偏移为-4的VDIA_IDX的帧内预测模式,以及对应于偏移为+1的VER_IDX的帧内预测模式;或

垂直模式(VER_IDX)(作为第一帧内预测模式),垂直对角线模式(VDIA_IDX),对应于偏移为-1的VDIA_IDX的帧内预测模式,以及对应于偏移为-1的VER_IDX的帧内预测模式;或

垂直模式(VER_IDX)(作为第一帧内预测模式),垂直对角线模式(VDIA_IDX),对应于偏移为-1的VDIA_IDX的帧内预测模式,以及对应于偏移为1的VER_IDX的帧内预测模式;或

垂直模式(VER_IDX)(作为第一帧内预测模式),垂直对角线模式(VDIA_IDX),对应于偏移为-1的VER_IDX的帧内预测模式,以及对应于偏移为-4的VDIA_IDX的帧内预测模式;或

垂直模式(VER_IDX)(作为第一帧内预测模式),垂直对角线模式(VDIA_IDX),对应于偏移为1的VER_IDX的帧内预测模式,以及对应于偏移为-4的VDIA_IDX的帧内预测模式;或

垂直模式(VER_IDX)(作为第一帧内预测模式),垂直对角线模式(VDIA_IDX),对应于偏移为-1的VER_IDX的帧内预测模式,以及对应于偏移为-1的VDIA_IDX的帧内预测模式;或

垂直模式(VER_IDX)(作为第一帧内预测模式),垂直对角线模式(VDIA_IDX),对应于偏移为1的VER_IDX的帧内预测模式,以及对应于偏移为-1的VDIA_IDX的帧内预测模式。

在本申请的一种实现形式中,该方法还包括:

若当前译码块的左侧块不可用且MPM列表中的帧内预测模式数量小于阈值,

当MPM列表中不包括帧内预测模式时,根据前述顺序,迭代地将帧内模式集合添加到MPM列表中,直到预测模式数量等于该阈值;

其中,帧内预测模式集合包括下列帧内预测模式集合中的一个:

垂直模式(VER_IDX),垂直对角线模式(VDIA_IDX),对应于偏移为-1的VER_IDX的帧内预测模式,以及对应于偏移为1的VER_IDX的帧内预测模式;或

垂直模式(VER_IDX),垂直对角线模式(VDIA_IDX),对应于偏移为-4的VER_IDX的帧内预测模式,以及对应于偏移为4的VER_IDX的帧内预测模式;或

垂直模式(VER_IDX),垂直对角线模式(VDIA_IDX),对应于偏移为-4的VDIA_IDX的帧内预测模式,以及对应于偏移为-1的VER_IDX的帧内预测模式;或

垂直模式(VER_IDX),垂直对角线模式(VDIA_IDX),对应于偏移为-4的VDIA_IDX的帧内预测模式,以及对应于偏移为+1的VER_IDX的帧内预测模式;或

垂直模式(VER_IDX),垂直对角线模式(VDIA_IDX),对应于偏移为-1的VDIA_IDX的帧内预测模式,以及对应于偏移为-1的VER_IDX的帧内预测模式;或

垂直模式(VER_IDX),垂直对角线模式(VDIA_IDX),对应于偏移为-1的VDIA_IDX的帧内预测模式,以及对应于偏移为1的VER_IDX的帧内预测模式;或

垂直模式(VER_IDX),垂直对角线模式(VDIA_IDX),对应于偏移为-1的VER_IDX的帧内预测模式,以及对应于偏移为-4的VDIA_IDX的帧内预测模式;或

垂直模式(VER_IDX),垂直对角线模式(VDIA_IDX),对应于偏移为1的VER_IDX的帧内预测模式,以及对应于偏移为-4的VDIA_IDX的帧内预测模式;或

垂直模式(VER_IDX),垂直对角线模式(VDIA_IDX),对应于偏移为-1的VER_IDX的帧内预测模式,以及对应于偏移为-1的VDIA_IDX的帧内预测模式;或

垂直模式(VER_IDX),垂直对角线模式(VDIA_IDX),对应于偏移为1的VER_IDX的帧内预测模式,以及对应于偏移为-1的VDIA_IDX的帧内预测模式。

在本申请的一种实现形式中,该方法还包括:

若MPM列表中的帧内预测模式数量小于阈值,当前译码块的上方块不可用,

检查MPM列表中是否包括帧内预测模式集合的第一帧内预测模式,并且若MPM列表中不包括第一帧内预测模式,将第一帧内预测模式添加到MPM列表中,其中,帧内预测模式集合包括水平模式(HOR_IDX)(作为第一帧内预测模式)、帧内模式2(2)、对角线模式(DIA_IDX)或垂直对角线模式(VDIA_IDX)。

在本申请的一种实现形式中,该方法还包括:

若MPM列表中的帧内预测模式数量小于阈值,当前译码块的左侧块可用,且当前译码块的上侧块可用,

检查MPM列表中是否包括帧内预测模式集合的第一帧内预测模式,并且若MPM列表中不包括第一帧内预测模式,将第一帧内预测模式添加到MPM列表,其中,帧内预测模式集合包括垂直模式(VER_IDX)(作为第一帧内预测模式)、水平模式(HOR_IDX)、帧内模式2(2)、垂直对角线模式(VDIA_IDX)或对角线模式(DIA_IDX)。

在本申请的一种实现形式中,该方法还包括:

若MPM列表中的帧内预测模式数量小于阈值,当前译码块的上侧块不可用,

检查MPM列表中是否包括帧内预测模式集合的第一帧内预测模式,并且若MPM列表中不包括第一帧内预测模式,将第一帧内预测模式添加到MPM列表,其中,帧内预测模式集合包括水平模式(HOR_IDX)(作为第一帧内预测模式)、帧内模式2(2)、对角线模式(DIA_IDX)或垂直对角线模式(VDIA_IDX)。

在本申请的一种实现形式中,该方法还包括:

若MPM列表中的帧内预测模式数量小于阈值,当前译码块的左侧块可用,且当前译码块的上侧块可用,

检查MPM列表中是否包括帧内预测模式集合的第一帧内预测模式,并且若MPM列表中不包括第一帧内预测模式,将第一帧内预测模式添加到MPM列表,其中,帧内预测模式集合包括垂直模式(VER_IDX)(作为第一帧内预测模式)、水平模式(HOR_IDX)、对应于偏移为-4的VER_IDX的帧内预测模式,或对应于偏移为4的VER_IDX的帧内预测模式。

在本申请的一种实现形式中,该方法还包括:

若当前译码块的上侧块不可用且MPM列表中的帧内预测模式数量小于阈值,

检查MPM列表中是否包括帧内预测模式集合中的第一帧内预测模式,并且若MPM列表中不包括第一帧内预测模式,将第一帧内预测模式添加到MPM列表,其中,帧内预测模式集合包括下列帧内预测模式集合中的一个:

水平模式(HOR_IDX)(作为第一帧内预测模式),帧内模式2(2),对应于偏移为-1的HOR_IDX的帧内预测模式,以及对应于偏移为1的HOR_IDX的帧内预测模式;或

水平模式(HOR_IDX)(作为第一帧内预测模式),帧内模式2(2),对应于偏移为-4的HOR_IDX的帧内预测模式,以及对应于偏移为4的HOR_IDX的帧内预测模式;或

水平模式(HOR_IDX)(作为第一帧内预测模式),帧内模式2(2),对应于偏移为4的帧内模式2(2)的帧内预测模式,以及对应于偏移为-1的HOR_IDX的帧内预测模式;或

水平模式(HOR_IDX)(作为第一帧内预测模式),帧内模式2(2),对应于偏移为4的帧内模式2(2)的帧内预测模式,以及对应于偏移为1的HOR_IDX的帧内预测模式;或

水平模式(HOR_IDX)(作为第一帧内预测模式),帧内模式2(2),对应于偏移为1的帧内模式2(2)的帧内预测模式,以及对应于偏移为-1的HOR_IDX的帧内预测模式;或

水平模式(HOR_IDX)(作为第一帧内预测模式),帧内模式2(2),对应于偏移为1的帧内模式2(2)的帧内预测模式,以及对应于偏移为1的HOR_IDX的帧内预测模式;或

水平模式(HOR_IDX)(作为第一帧内预测模式),帧内模式2(2),对应于偏移为-1的HOR_IDX的帧内预测模式,以及对应于偏移为4的帧内模式2(2)X的帧内预测模式;或

水平模式(HOR_IDX)(作为第一帧内预测模式),帧内模式2(2),对应于偏移为1的HOR_IDX的帧内预测模式,以及对应于偏移为4的帧内模式2(2)X的帧内预测模式;或

水平模式(HOR_IDX)(作为第一帧内预测模式),帧内模式2(2),对应于偏移为-1的HOR_IDX的帧内预测模式,以及对应于偏移为1的帧内模式2(2)X的帧内预测模式;或

水平模式(HOR_IDX)(作为第一帧内预测模式),帧内模式2(2),对应于偏移为1的HOR_IDX的帧内预测模式,以及对应于偏移为1的帧内模式2(2)X的帧内预测模式。

在本申请的一种实现形式中,该方法还包括:

若当前译码块的上侧块不可用且MPM列表中的帧内预测模式数量小于阈值,

当MPM列表中不包括帧内预测模式时,根据前述顺序,迭代地将帧内模式集合镇内预测模式添加到MPM列表,直到预测模式数量等于该阈值;

其中,帧内预测模式集合包括下列帧内预测模式集合中的一个:

水平模式(HOR_IDX),帧内模式2(2),对应于偏移为-1的HOR_IDX的帧内预测模式,以及对应于偏移为1的HOR_IDX的帧内预测模式;或

水平模式(HOR_IDX),帧内模式2(2),对应于偏移为-4的HOR_IDX的帧内预测模式,以及对应于偏移为4的HOR_IDX的帧内预测模式;或

水平模式(HOR_IDX),帧内模式2(2),对应于偏移为4的帧内模式2(2)的帧内预测模式,以及对应于偏移为-1的HOR_IDX的帧内预测模式;或

水平模式(HOR_IDX),帧内模式2(2),对应于偏移为4的帧内模式2(2)的帧内预测模式,以及对应于偏移为1的HOR_IDX的帧内预测模式;或

水平模式(HOR_IDX),帧内模式2(2),对应于偏移为1的帧内模式2(2)的帧内预测模式,以及对应于偏移为-1的HOR_IDX的帧内预测模式;或

水平模式(HOR_IDX),帧内模式2(2),对应于偏移为1的帧内模式2(2)的帧内预测模式,以及对应于偏移为1的HOR_IDX的帧内预测模式;或

水平模式(HOR_IDX),帧内模式2(2),对应于偏移为-1的HOR_IDX的帧内预测模式,以及对应于偏移为4的帧内模式2(2)的帧内预测模式;或

水平模式(HOR_IDX),帧内模式2(2),对应于偏移为1的HOR_IDX的帧内预测模式,以及对应于偏移为4的帧内模式2(2)的帧内预测模式;或

水平模式(HOR_IDX),帧内模式2(2),对应于偏移为-1的HOR_IDX的帧内预测模式,以及对应于偏移为1的帧内模式2(2)的帧内预测模式;或

水平模式(HOR_IDX),帧内模式2(2),对应于偏移为1的HOR_IDX的帧内预测模式,以及对应于偏移为1的帧内模式2(2)的帧内预测模式。

在本申请的一种实现形式中,该方法还包括:若MPM列表中的帧内预测模式数量小于阈值,当MPM列表中不包括帧内预测模式时,根据前述顺序,迭代地将包括垂直模式(VER_IDX)、水平模式(HOR_IDX)、帧内模式2(2)、垂直对角线模式(VDIA_IDX)或对角线模式(DIA_IDX)的帧内预测模式集合的镇内预测模式添加到MPM列表,直到预测模式数量等于该阈值。

在本申请的一种实现形式中,该方法还包括:若当前译码块的左侧块不可用且MPM列表中的帧内预测模式数量小于阈值,

检查MPM列表中是否包括帧内预测模式集合的第一帧内预测模式,并且若MPM列表中不包括第一帧内预测模式,将第一帧内预测模式添加到MPM列表,其中,帧内预测模式集合包括垂直模式(VER_IDX)、垂直对角线模式(VDIA_IDX)、对角线模式(DIA_IDX)或帧内模式2(2)。

在本申请的一种实现形式中,应理解,将帧内预测模式添加到MPM列表中是将对应于帧内预测模式的值添加到MPM列表中。

在本申请的一种实现形式中,阈值为6。

在本申请的一个方面,提供了一种包括处理电路的编码器,用于执行上述方法。

在本申请的一个方面,提供了一种包括处理电路的解码器,用于执行上述方法。

在本申请的一个方面,提供了一种包括程序代码的计算机程序产品,用于执行上述方法。

在本申请的一个方面,一种用于构造最可能模式MPM列表的解码器包括:一个或多个处理器;以及非暂时性计算机可读存储介质,其耦合到处理器并存储由处理器执行的程序,其中,该程序在由处理器执行时将解码器配置为执行上述方法。

在本申请的一个方面,一种用于构造最可能模式MPM列表的编码器包括:一个或多个处理器;以及非暂时性计算机可读存储介质,其耦合到处理器并存储由处理器执行的程序,其中,该程序在由处理器执行时将编码器配置为执行上述方法。

在一个示例中,

步骤一:确定当前译码块的左侧块是否可用。

若当前译码块的左侧块可用,将左侧块的帧内预测模式添加到MPM列表中。若当前译码块的左侧块可用,MPM列表可以是空列表,将左侧块的帧内预测模式添加到MPM列表中,则MPM列表包括一个帧内预测模式;并且若当译码块的左侧块不可用,MPM列表在步骤一之后仍为空列表。

步骤二:确定当前译码块的上方块是否可用。

若当前译码块的上方块可用,将上方块的帧内预测模式添加到MPM列表中。MPM列表可以包括左侧块的帧内预测模式或仍为空列表。

若当前译码块的上方块可用,且MPM列表包括左侧块的帧内预测模式,进一步确定上侧块的帧内预测模式是否与左侧块的帧内预测模式相同。若相同,步骤“将上方块的帧内预测模式添加到MPM列表中”的结果不改变MPM列表中的帧内预测模式数量,MPM列表仅包括一个帧内预测模式;若上方块的帧内预测模式与左侧块的帧内预测模式不同,将上方块的帧内预测模式添加到MPM列表中,则MPM列表包括两个帧内预测模式。

若当前译码块的上方块可用,且MPM列表仍然是空列表,将上方块的帧内预测模式添加到MPM列表中,MPM列表仅包括一个帧内预测模式。

若当前译码块的上方块不可用,且MPM列表包括左侧块的帧内预测模式,MPM列表将仍然仅包括左侧块的帧内预测模式。

若当前译码块的上方块不可用,且MPM列表仍为空列表,MPM列表仍将是空列表。

步骤三:若平面模式不在MPM列表中,将平面模式添加到MPM列表中。

若在步骤二之后,MPM列表不包括平面模式,则将平面模式添加到MPM列表中。

若左侧块的帧内预测模式和上方块的帧内预测模式都不可用,或者可用的帧内预测模式不是平面模式,MPM列表不包括平面模式。

若平面模式在MPM列表中,转到步骤四。

步骤四:若DC模式不在MPM列表中,将DC模式添加到MPM列表中。

若在第二步或第三步之后,MPM列表不包括DC模式,将DC模式添加到MPM列表中。

若左侧块的帧内预测模式和上方块的帧内预测模式都不可用,或可用的帧内预测模式不是DC模式,MPM列表不包括DC模式。

若DC模式在MPM列表中,转到下列步骤或或完成MPM列表的构造。

在本申请的一种实现形式中,在每个步骤中,将预测模式添加到MPM列表中的过程需要确保在MPM列表中没有重复的预测模式。因此,若需要向MPM列表中添加的帧内预测模式与MPM列表中的一个帧内预测模式相同,则“添加”过程不改变MPM列表,或不执行“添加”过程。

在本申请的一种实施形式中,在步骤四之后,仅当角度模式存在时,才存在角度-1,角度+1。

在一个示例中,若MPM列表中的帧内预测模式数量为6,在步骤四之后,存在三种有关MPM长度的情况:

情况1:MPM长度为2:L和A均不是角度模式(>DC)或不可用,仅有平面模式和DC模式,使用所有四个默认模式。

情况2:MPM长度为3:L和A中有一个是角度模式,或为相同的角度模式。使用一个默认模式。

情况3:MPM长度为4:L和A均为角度模式,且二者互不相同。由于要添加L-1,L+1中的至少一个,因此不使用默认模式。若其中之一为(diff(LA)=1)上的副本,则将进一步插入A-1和A+1中的至少一个。

在本申请的一种实现形式中,该方法还包括:若当前译码块的左侧块可用,且左侧块的帧内预测模式为角度模式,将偏移添加到左侧块的预测模式,以获得新的预测模式,若新的预测模式不在MPM列表中,将新的预测模式添加到MPM列表中。

在另一个示例中,由于以上四个步骤在最大情况下仅能够获得四个帧内预测模式,因此,MPM列表包括六个帧内预测模式,。该方法还包括:

步骤五:若当前译码块的左侧块可用,且左侧块的帧内预测模式为角度模式,将偏移添加到左侧块的预测模式,以获得新的预测模式,并且若新的预测模式不在MPM列表中,将新的预测模式添加到MPM列表中。

例如,若当前当前译码块的左侧块为角度模式27(对应于该角度帧内预测模式的值为27),且在以上四个步骤之后的MPM列表为(27,15,0,1),将偏移添加到左侧块的预测模式,以获得新的预测模式,若新的预测模式不在MPM列表中,将新的预测模式添加到MPM列表中。在一个示例中,偏移为-1,因此新的预测模式为26,更新后的MPM列表为(27,15,0,1,26)。在另一个示例中,偏移为1,因此新的预测模式为28,更新后的MPM列表为(27,15,0,1,28)。在另一个示例中,步骤五能够将两个偏移添加到左侧块的帧内预测模式,先添加-1再添加1,或先添加1再添加-1,因此更新后的MPM列表可以是(27,15,0,1,26,28)或(27,15,0,1,28,26)。

在步骤五之后,检查MPM列表是否已满(若MPM列表中的帧内预测模式数量等于阈值,诸如阈值是6,则MPM列表已满。若MPM列表中的帧内预测模式数量小于阈值,则MPM列表未满)。若MPM列表已满,构造MPM列表完成;若MPM列表未满,转向随后的步骤。

若当前译码块的左侧块不可用,不执行步骤五,然后转向随后的步骤。

注意,当将偏移(诸如-1或+1)添加到角度预测模式时,可能会涉及升序及降序操作。例如,若角度预测模式angularLeft为2,则angularLeft-1将为66(升序情况),或若angularLeft为66,则angularLeft+1将为2(降序情况)。

在本申请的一种实现形式中,该方法还包括:若当前译码块的上方块可用,且上方块的帧内预测模式为角度模式,将偏移添加到上方块的预测模式,以获得上偏移预测模式,并且若上偏移预测模式不在MPM列表中,将上偏移预测模式添加到MPM列表中。

在一个示例中,该方法还包括:

步骤六:若当前译码块的上方块可用,且上方块的帧内预测模式为角度模式,将偏移添加到上方块的预测模式,以获得上偏移预测模式,并且若上偏移预测模式不在MPM列表中,将新的预测模式添加到MPM列表中。

例如,若当前译码块的上侧块为角度模式26(对应于该角度帧内预测模式的值为26),且在以上五个步骤之后的MPM列表为(27,26,0,28),将偏移添加到上侧块的预测模式,以获得上偏移预测模式,若该上偏移预测模式不在MPM列表中,将该上偏移预测模式添加到MPM列表中。在一个示例中,偏移为-1,因此上偏移预测模式为25,更新后的MPM列表为(27,26,0,1,28,25)。在另一个示例中,偏移量为1,由于已插入模式27,因此上偏移预测模式为27,并且上偏移模式27的插入被阻止。在另一个示例中,若MPM列表在添加一个偏移之后仍未满,步骤六能够将两个偏移添加到上方块的帧内预测模式,先添加-1再添加1,或先添加1再添加-1。

而且,若当前译码块的上方块不可用,不执行步骤六,然后转向随后的步骤。在步骤六之后,检查MPM列表是否已满(MPM列表中的帧内预测模式数量是否等于6)。若MPM列表已满,构造MPM列表完成;若MPM列表未满(若MPM列表中的帧内预测模式数量小于6),转向随后的步骤。

在本申请的一种实现形式中,当当前译码块的左侧块不可用时,当前译码块的上方块可以是可用的,也可以是不可用的。

在本申请的一种实现形式中,当当前译码块的上方块不可用时,当前译码块的左侧块可以是可用的,也可以是不可用的。

在本申请的一种实现形式中,该方法还包括:将垂直模式(VER_IDX)、水平模式(HOR_IDX)、帧内模式2(2)、垂直对角线模式(VDIA_IDX)或对角线模式(DIA_IDX)添加到MPM列表中。

在本申请的一种实现形式中,该方法还包括:若MPM列表中的帧内预测模式数量小于阈值,检查MPM列表中是否包括帧内预测模式集合的第一帧内预测模式,并且若MPM列表中不包括第一帧内预测模式,将第一帧内预测模式添加到MPM列表中,其中,帧内预测模式集合包括垂直模式(VER_IDX)、水平模式(HOR_IDX)、帧内模式2(2)、垂直对角线模式(VDIA_IDX)或对角线模式(DIA_IDX)。

在本申请的一种实现形式中,该方法还包括:若MPM列表中的帧内预测模式数量小于阈值,当MPM列表中不包括帧内预测模式时,根据前述顺序,迭代地将包括垂直模式(VER_IDX)、水平模式(HOR_IDX)、帧内预测模式2(2)、垂直对角线模式(VDIA_IDX)或对角线模式(DIA_IDX)的帧内模式集合的帧内预测模式添加到MPM列表中,直到预测模式数量等于该阈值。

在一个示例中,在步骤六之后,若MPM列表仍未满(MPM列表中的的帧内预测模式数量小于阈值),将默认模式列表中的帧内预测模式有序地添加到MPM列表中,若该模式或这些模式不在MPM列表中,迭代地重复此步骤直到MPM列表已满。

步骤七:将垂直模式(VER_IDX)、水平模式(HOR_IDX)、帧内模式2(2)、垂直对角线模式(VDIA_IDX)或对角线模式(DIA_IDX)添加到MPM列表中。

例如,若垂直模式不在MPM列表中,且MPM列表未满,将垂直模式添加到MPM列表中;若在添加垂直模式后MPM列表已满,构造MPM列表完成。

而且,若在添加垂直模式后MPM列表仍未满,检查水平模式否存在MPM列表中。若水平模式在MPM列表中,进一步检查帧内模式2是否在MPM列表中;若水平模式不在MPM列表中,将水平模式添加到MPM列表中。迭代地重复此步骤直到MPM列表已满。

在本申请的一种实现形式中,在步骤七中,使用默认模式列表,每次将默认模式插入到MPM列表应确保没有插入重复模式。若插入成功,执行其他检查,以检测MPM是否已满。若是,则MPM构造过程终止;否则,以指定顺序继续插入其他默认模式。

在本申请的一种实现形式中,该方法还包括:若当前译码块的左侧块不可用且MPM列表中的帧内预测模式数量小于阈值,

检查MPM列表中是否包括帧内预测模式集合的第一帧内预测模式,并且若MPM列表中不包括第一帧内预测模式,则将第一帧内预测模式添加到MPM列表,其中,帧内预测模式集合包括垂直模式(VER_IDX)、垂直对角线模式(VDIA_IDX)、对角线模式(DIA_IDX)或帧内模式2(2)。

在本申请的一种实现形式中,该方法还包括:

若当前译码块的左侧块不可用,且MPM列表中的帧内预测模式数量小于阈值,

当MPM列表不包括帧内预测模式时,根据前述顺序,迭代地将包括垂直模式(VER_IDX)、垂直对角线模式(VDIA_IDX)、对角线模式(DIA_IDX)或帧内模式2(2)的帧内预测模式集合的帧内预测模式添加到MPM列表,直到预测模式数量等于该阈值。

在一个示例中,在步骤六之后,若MPM列表仍未满,且当前译码块的左侧块不可用,将默认模式列表中的帧内预测模式有序地添加到MPM列表中,若该模式或这些模式不在MPM列表中,迭代地重复此步骤直到MPM列表已满。

步骤七:将垂直模式(VER_IDX)、垂直对角线模式(VDIA_IDX)、对角线模式(DIA_IDX)或帧内模式2(2)添加到MPM列表中。

例如,若垂直模式不在MPM列表中,且MPM列表未满,将垂直模式添加到MPM列表中;若在添加垂直模式后MPM列表已满,构造MPM列表完成。

而且,若在添加垂直模式后MPM列表仍未满,检查垂直对角线模式是否在MPM列表中。若垂直对角线模式在MPM列表中,进一步检查对角线模式是否在MPM列表中;若对角线模式不在MPM列表中,将对角线模式添加到MPM列表中。迭代地重复此步骤直到MPM列表已满。

在本申请的一种实现形式中,该方法还包括:

若MPM列表中的帧内预测模式数量小于阈值,当前译码块的上方块不可用,

检查MPM列表中是否包括帧内预测模式集合的第一帧内预测模式,并且若MPM列表中不包括第一帧内预测模式,将第一帧内预测模式添加到MPM列表,其中,帧内预测模式集合包括水平模式(HOR_IDX)、帧内模式2(2)、对角线模式(DIA_IDX)或垂直对角线模式(VDIA_IDX)。

在本申请的一种实现形式中,该方法还包括:

若MPM列表中的帧内预测模式数量小于阈值,且当前译码块的上方块不可用,

当MPM列表中不包括帧内预测模式时,根据前述顺序,迭代地将包括水平模式(HOR_IDX)、帧内模式2(2)、对角线模式(DIA_IDX)或垂直对角线模式(VDIA_IDX)的帧内预测模式集合的帧内预测模式添加到MPM列表,直到预测模式数量等于该阈值。

在一的示例中,在步骤六之后,若MPM列表仍未满,且当前译码块的上方块不可用,将默认模式列表中的帧内预测模式有序地添加到MPM列表中,若该模式或这些模式不在MPM列表中,迭代地重复此步骤直到MPM列表已满。

步骤七:将水平模式(HOR_IDX)、帧内模式2(2)、对角线模式(DIA_IDX)或垂直对角线模式(VDIA_IDX)添加到MPM列表中。

例如,若水平模式不在MPM列表中,且MPM列表未满,将水平模式添加到MPM列表中;若在添加水平模式后MPM列表已满,构造MPM列表完成。

而且,若在添加水平模式后MPM列表仍未满,检查帧内模式2是否在MPM列表中。若帧内模式2在MPM列表中,进一步检查对角线模式是否在MPM列表中;若对角线模式不在MPM列表中,将对角线模式添加到MPM列表中。迭代地重复此步骤直到MPM列表已满。

在本申请的一种实现形式中,该方法还包括:若MPM列表中的帧内预测模式数量小于阈值,当前译码块的左侧块可用,且当前译码块的上方块可用,

检查MPM列表中是否包括帧内预测模式集合的第一帧内预测模式,并且若MPM列表中不包括第一帧内预测模式,将第一帧内预测模式添加到MPM列表中,其中,帧内预测模式集合包括垂直模式(VER_IDX)、水平模式(HOR_IDX)、帧内模式2(2)、垂直对角线模式(VDIA_IDX)或对角线模式(DIA_IDX)。

在本申请的一种实现形式中,该方法还包括:

若MPM列表中的帧内预测模式数量小于阈值,当前译码块的左侧块可用,且房钱译码块的上方块可应用,

当MPM列表中不包括帧内预测模式时,根据前述顺序,迭代地将包括垂直模式(VER_IDX)、水平模式(HOR_IDX)、帧内模式2(2)、垂直对角线模式(VDIA_IDX)或对角线模式(DIA_IDX)的帧内预测模式集合的帧内预测模式添加到MPM列表,直到预测模式数量等于该阈值。

在一个示例中,在步骤六之后,若MPM列表仍未满,当前译码快的左侧块可用,且当前译码块的上方块也可用,将默认模式列表中的帧内预测模式添加到MPM列表中,若该模式或这些模式不在MPM列表中,迭代地重复此步骤直到MPM列表已满。

步骤七:将垂直模式(VER_IDX)、水平模式(HOR_IDX)、帧内模式2(2)、垂直对角线模式(VDIA_IDX)或对角线模式(DIA_IDX)添加到MPM列表中。

例如,若垂直模式不在MPM列表中,且MPM列表未满,将垂直模式添加到MPM列表中;若在添加垂直模式后MPM列表已满,构造MPM列表完成。

而且,若在添加垂直模式后MPM列表仍未满,检查水平模式否存在MPM列表中。若水平模式在MPM列表中,进一步检查帧内模式2是否在MPM列表中;若帧内模式2模式不在MPM列表中,将帧内模式2添加到MPM列表中。迭代地重复此步骤直到MPM列表已满。

在本申请的一种实现形式中,该方法还包括:将垂直模式(VER_IDX)、水平模式(HOR_IDX)、VER_IDX加上偏移为-4的模式或VER_IDX加上偏移为4的模式添加MPM列表中。

在本申请的一种实现形式中,该方法还包括:将垂直模式(VER_IDX)、水平模式(HOR_IDX)、VER_IDX加上偏移为4的模式或VER_IDX加上偏移为-4的模式添加到MPM列表中。

在一个示例中,在步骤六之后,若MPM列表仍未满,将默认模式列表中的帧内预测模式添加到MPM列表中,若该模式或这些模式不在MPM列表中,迭代地重复此步骤直到MPM列表已满。

步骤七:将垂直模式(VER_IDX)、水平模式(HOR_IDX)、VER_IDX加上偏移为-4的模式或VER_IDX加上偏移为4的模式添加到MPM列表中;或将垂直模式(VER_IDX)、水平模式(HOR_IDX)、VER_IDX加上偏移为4的模式或VER_IDX加上偏移为-4的模式添加到MPM列表中。

例如,若垂直模式不在MPM列表中,且MPM列表未满,将垂直模式添加到MPM列表中;若在添加垂直模式后MPM列表已满,构造MPM列表完成。

而且,若在添加垂直模式后MPM列表仍未满,检查水平模式是否在MPM列表中。若水平模式在MPM列表中,进一步检查值等于VER_IDX加上偏移为-4的值的预测模式是否在MPM列表中;若值等于VER_IDX加上偏移为-4的值的预测模式不在MPM列表中,将值等于VER_IDX加上偏移为-4的值的预测模式添加到MPM列表中。迭代地重复此步骤直到MPM列表已满。

在一个示例中,在步骤六之后,若MPM列表仍未满,且当前译码块的左侧块不可用,将默认模式列表中的帧内预测模式添加到MPM列表中,若该模式或这些模式不在MPM列表中,迭代地重复此步骤直到MPM列表已满。

步骤七:将垂直模式(VER_IDX)、垂直对角线模式(VDIA_IDX)、对角线模式(DIA_IDX)或帧内模式2(2)添加到MPM列表中。

例如,若垂直模式不在MPM列表中,且MPM列表未满,将垂直模式添加到MPM列表中;若在添加垂直模式后MPM列表已满,构造MPM列表完成。

而且,若添加垂直模式后MPM列表仍然不完整,检查垂直对角线模式是否在MPM列表中。若垂直对角线模式在MPM列表中,进一步检查对角线模式是否在MPM列表中;若对角线模式不在MPM列表中,将对角线模式添加到MPM列表中。迭代地重复此步骤直到MPM列表已满。

在一个示例中,在步骤六之后,若MPM列表仍未满,且当前译码块的上方块不可用,将默认模式列表中的帧内预测模式添加到MPM列表中,若该模式或这些模式不在MPM列表中,迭代地重复此步骤直到MPM列表已满。

步骤七:将水平模式(HOR_IDX)、帧内模式2(2)、对角线模式(DIA_IDX)或垂直对角线模式(VDIA_IDX)添加到MPM列表中。

例如,若水平模式不在MPM列表中,且MPM列表未满,将水平模式添加到MPM列表中;若在添加水平模式后MPM列表已满,构造MPM列表完成。

而且,若在添加水平模式后MPM列表仍未满,检查帧内模式2是否在MPM列表中。若帧内模式2在MPM列表中,进一步检查对角线模式是否在MPM列表中;若对角线模式不在MPM列表中,将对角线模式添加到MPM列表中。迭代地重复此步骤直到MPM列表已满。

在一个示例中,在步骤六之后,若MPM列表仍未满,当前译码快的左侧块是可用的,且当前译码块的上方块是可用的,将默认模式列表中的帧内预测模式添加到MPM列表中,若该模式或这些模式不在MPM列表中,迭代地重复此步骤直到MPM列表已满。

步骤七:将垂直模式(VER_IDX)、水平模式(HOR_IDX)、VER_IDX加上偏移为-4的模式或VER_IDX加上偏移为4的模式添加到MPM列表中。

在本公开的一个方面,提出了一种构造6个条目的MPM列表的简化方法,该方法包括:检查当前译码单元的左侧块的可用性。左侧块的位置如图5所示,其中,左侧块用“L”标记。

若不能从左侧块推导出帧内预测信息(即帧内预测模式),左侧块不可用。包括以下情况:

左侧块不是帧内预测块;左侧块不存在。例如,当前块是位于帧的最左侧的译码块;若编码器或解码器支持并行处理,且若左侧块位于当前块的不同图块中或与当前块位于不同的图块中,即当前译码块在或位于图块的最左侧,则该左侧块可能被认为是不存在的(或不可用)。

在另一个示例中,若编码器或解码器中不支持并行处理,且若左侧块位于当前块的不同图块中,即当前译码块在图块的最左侧,则该左侧块可被认为是可用的。

若编码器或解码器中支持并行处理,且若左侧块与当前块位于不同条带中,即当前译码块在条带的最左侧,则该左侧块可能被认为是不存在的。

在另一个示例中,若编码器或解码器中不支持并行处理,且若左侧块位于与当前块不同的条带中,即当前译码块在条带的最左侧,则该左侧块可被认为是可用的。

否则(即左侧块是可用的),将左侧块的帧内预测模式包括在6个条目的MPM列表中。

检查当前译码单元的上方块的可用性。上方块的位置如图5所示,其中,上方块用“A”标记。

若不能从上方块推导出帧内预测信息(即帧内预测模式),上方块不可用。包括以下情况:

上方块不是帧内预测块。

上方块不存在。例如,当前块是位于帧的最上侧的译码块。

若编码器或解码器中支持并行处理,且若上方块与当前块位于不同图块中,即当前译码块在图块的最上侧,则该上方块可能被认为是不存在的。

在另一个示例中,若编码器或解码器中不支持并行处理,且若左侧块位于与当前块不同的图块中,即当前译码块在图块的最上侧,则该上方块可被认为是可用的。

若编码器或解码器中支持并行处理,且若上方块与当前块位于不同条带中,即当前译码块在条带的最上侧,则该上方块可能被认为是不存在的。

在另一个示例中,若编码器或解码器中不支持并行处理,且若左侧块位于与当前块不同的条带中,即当前译码块在条带的最上侧,则该上方块可被认为是可用的。

若需要限制编码器或解码器中线缓冲器的尺寸,且若上方块与位于与当前块不同的CTU中,即当前译码块在上方块的最上侧,则该上方块可能被认为是不存在的。

在一个示例中,若解码器侧或编码器侧支持线缓冲器的限制,则位于与当前块CTU不同CTU上的上方块被认为是不存在的。若不支持线缓冲器的限制,则认为其存在。

否则(即左侧块是可用的),将上侧块的这内预测模式包括在6个条目的MPM列表中。

检查平面(PLANAR_IDX=0)模式是否已插入在MPM列表中(即检查左侧块和上方块的帧内预测模式是否为平面模式),仅当平面模式尚未插入在MPM列表中时,才将平面模式插入到MPM列表中。检查DC(DC_IDX=1)模式是否已插入在MPM列表中(即检查左侧块和上方块的帧内预测模式是否为DC模式),仅当DC模式尚未插入在MPM列表中时,才将DC模式插入到MPM列表中。

若左侧块可用,且其帧内预测模式为角度模式,即(模式>DC_IDX,并将模式表示angularLeft),通过执行angularLeft-1、angularLeft+1来获得其最接近的两个角度模式。注意,在执行-1或+1时,可能会涉及升序和降序操作,例如,

若angularLeft为2,则angularLeft-1将为66(升序情况),或若angularLeft为66,则angularLeft+1将为2(降序情况)。

若angularLeft-1的预测模式尚未插入MPM列表中,将其插入MPM列表中。

若angularLeft+1的预测模式尚未插入到MPM列表中,将其插入MPM列表中。

若MPM列表未满,上侧块可用,且若其帧内预测模式为角度模式,即(模式>DC_IDX,并将模式表示为angularAbove),则通过执行angularAbove-1,angularAbove+1来获得其最接近的两个角度模式。注意,在执行-1或+1时,可能会涉及升序和降序操作。在一个示例中,若angularLeft为2,则angularLeft-1将为66(升序情况),或若angularLeft为66,则angularLeft+1将为2(降序情况)。

若angularAbove-1的预测模式尚未插入MPM列表中,将其插入MPM列表中。

若MPM列表未满(例如,MPM列表中的预测模式数量小于6),且若angularAbove+1的预测模式尚未插入MPM列表中,则将其插入MPM列表中。

若MPM列表未满,则在MPM列表中插入下列模式,直到MPM列表已满(例如,MPM列表中的预测模式数量等于6):

垂直模式(VER_IDX),

水平模式(HOR_IDX),

帧内模式2(2),

垂直对角线模式(VDIA_IDX)或对角线模式(DIA_IDX)。

本公开旨在改进帧内模式信令方案。在本公开中,提出了一种视频解码方法和视频解码器。

图7示出了例如针对VVC所提出的67个帧内预测模式的示例,67个帧内预测模式中的多个帧内预测模式包括:平面模式(索引0),DC模式(索引1)以及索引为2到66的角度模式,其中,图7中左下的角度模式是指索引2,且索引的编号递增直至索引66是图7的最右上的角度模式。

图13示出了85个帧内预测模式的示例,其中,虚线方向与应用于非正方形块的广角模式相关联。

在本申请的另一方面,公开了一种包括处理电路的解码器,用于执行上述解码方法。

在本申请的另一方面,公开了一种计算机程序产品,其包括程序代码,用于执行上述解码方法。

在本申请的另一方面,公开了一种用于对视频数据进行解码的解码器,该解码器包括:一个或多个处理器;以及非暂时性计算机可读存储介质,其耦合到处理器并存储由处理器执行的程序,其中,该程序在由处理器执行时将解码器配置为执行上述解码方法。

处理电路可以硬件,或硬件和软件的组合,或诸如通过软件可编程处理器等来实现。

以下描述中个,参考了附图,附图作为本公开的一部分,描述性地示出了可以实现本发明的具体方面。

例如,应理解,结合所描述的方法的公开内容也适用于用于执行该方法的相应设备或系统,反之亦然。例如,若描述了特定方法步骤,则相应设备可以包括执行所描述的方法步骤的单元,尽管图中没有明确地描述或示出这样的单元。此外,应理解,除非另有特别说明,否则本文描述的各种示例性方面的特征可彼此组合。

视频译码通常指的是处理形成视频或视频序列的图片序列。术语图片、图像或帧可在视频译码领域及本申请中同义使用。通常将每个图片划分为一组不重叠的块。图片的编码/解码通常在块级别上执行,其中,诸如使用帧间预测或帧内预测来生成预测块,从当前块(当前已处理/待处理的块)中减去预测块以获得残差块,该残差块被进一步变换和量化,以减少要发送(压缩)的数据量,而在解码器侧,将逆处理应用于已编码/已压缩块,以重构该块用于表示。

图1为示出了示例译码系统10的概念性或示意性框图,诸如可以使用本申请(本公开)技术的视频译码系统10。视频译码系统10的编码器20(诸如视频编码器20)和解码器30(诸如视频解码器30)代表设备的示例,该设备可以用于执行根据本申请中所描述的各种示例的技术。如图1所示,译码系统10包括源设备12,源设备12用于例如向目的地设备14提供已编码数据13(诸如已编码图片13)以用于对已编码数据13进行解码,。

源设备12包括编码器20,且还可以,即可选地,包括图片源16、预处理单元18(诸如图片预处理单元18)以及通信接口或通信单元22。

图片源16可以包括或可以为诸如用于采集真实世界图片的任何种类的图片采集设备、和/或任何种类的图片或注释(对于屏幕内容译码,屏幕上的某些文本也被认为是要被编码的图片或图像的一部分)生成设备、(例如,用于生成计算机动画图片的计算机图形处理器)或用于获取和/或提供真实世界图片、计算机动画图片(诸如屏幕内容、虚拟现实(VR)图片和/或其任何组合(诸如现实增强(AR)图片)的任何种类的设备。

(数字)图片是或可以被当作具有强度值的样本的二维阵列或矩阵。阵列中的样本也可以被称为像素(图像元素的简称)或像素点。阵列或图片的水平和垂直方向(或轴)上的样本数量定义了图片的大小和/或分辨率。为表示颜色,通常采用三个颜色分量,即图片可以被三个样本阵列表示或包括三个样本阵列。在RBG格式或色彩空间中,图片包括相应的红色、绿色和蓝色样本阵列。但是,在视频译码中,每个像素通常以亮度/色度格式或色彩空间表示,例如YCbCr,其包括由Y(有时也使用L代替)指示的亮度分量以及由Cb和Cr指示的两个色度分量。亮度(或简称为luma)分量Y表示(诸如像在灰度标图片中的)亮度或灰度强度,而两个色度(或简称为chrom)分量Cb和Cr表示色度或颜色信息分量。因此,YCbCr格式的图片包括亮度样本值(Y)的亮度样本阵列和色度值(Cb和Cr)的两个色度样本阵列。可以将RGB格式的图片转换或变换为YCbCr格式,反之亦然,该过程也被称为颜色变换或转换。若如图片是单色的,则图片可仅包括亮度样本阵列。

图片源16(诸如视频源16)可以为诸如用于采集图片的相机、诸如图片存储器的存储器和/或用于获取或接收图片任何类型的接口(内部或外部),存储器包括或存储先前采集或生成的图片。例如,相机可以是集成在源设备中的本地相机或集成相机,存储器可以是例如集成在源设备中的本地存储器或集成存储器。例如,接口可以为用于从外部视频源接收图像的外部接口(诸如像相机的外部图像采集设备)、外部存储器或外部图片生成设备,诸如外部计算机图形处理器、计算机或服务器。根据任何专有或标准化的接口协议,该接口可以是任何类型的接口,诸如有线或无线接口、光学接口。用于获得图片数据17的接口可以是与通信接口22相同的接口或者是通信接口22的一部分。

与预处理单元18和由预处理单元18执行的处理不同,图片或图片数据17(诸如视频数据16)也可以被称为原始图片或原始图片数据17。

预处理单元18用于接收(原始)图片数据17并对图片数据17执行预处理,以获得已预处理图片19或已预处理图片数据19。由预处理单元18执行的预处理可以诸如包括修整、颜色格式转换(诸如从RGB到YCbCr)、颜色校正或去噪。应理解,预处理单元18可以是可选组件。

编码器20(诸如视频编码器20)用于接收已预处理图片数据19,并提供已编码图片数据21(下面将例如基于图2描述更多细节)。

源设备12的通信接口22可以用于接收已编码图片数据21,并将其发送到另一设备,诸如目的地设备14或任何其他设备以进行存储或直接重构,或分别在存储已编码数据13和/或将已编码数据13发送到另一诸如目的地设备14或用于解码或存储的任何其他的设备之前处理已编码图片数据21。

目的地设备14包括解码器30(诸如视频解码器30),且还可以,即可选地,包括通信接口或通信单元28、后处理单元32和显示设备34。

目的地设备14的通信接口28用于诸如直接从源设备12或从任何其他源(例如,存储设备,如已编码图片数据存储设备)接收已编码图片数据21或已编码数据13。

通信接口22和通信接口28可以用于经由源设备12与目的地设备14之间的直接通信链路(诸如直接有线或无线连接),或通过任何类型的网络(诸如有线或无线网络或其任何组合)或任何类型的专用和公共网络或其任何组合来发送或接收已编码图片数据21或已编码数据13。

通信接口22可以诸如用于将已编码图片数据21打包为适当的格式,诸如分组,以通过通信链路或通信网络进行传输。

通信接口28是形成通信接口22的对应接口,可以诸如用于对已编码数据13进行解包,以获得已编码图片数据21。

通信接口22和通信接口28都可以用作如图1A中从源设备12指向目的地设备14的已编码图片数据13的箭头所指示的单向通信接口或双向通信接口,并且可以用于诸如发送和接收消息,诸如建立连接、确认和交换与通信链路和/或数据传输(诸如已编码图像数据传输)有关的任何其他信息。

解码器30用于接收已编码图片数据21,并提供已解码图片数据31或已解码图片31(下面将例如基于图3描述更多细节)。

目的地设备14的后处理器32用于对已解码图像数据31(也称为重构图像数据),例如已解码图像31,进行后处理,以获得已后处理图像数据33,例如已后处理图像33。由后处理单元32执行的后处理可以包括诸如颜色格式转换(诸如从YCbCr到RGB)、颜色校正、修整或重新采样或任何其他处理,例如用于准备已解码图像数据31并通过诸如显示设备34显示。

目的地设备14的显示设备34用于接收已后处理图片数据33,以向用户或观看者等显示图片。显示设备34可以是或包括用于表示重构图片的任何种类的显示器,例如集成或外部显示器或监视器。显示器可以诸如包括液晶显示器(LCD)、有机发光二极管(OLED)显示器、等离子显示器、投影仪、微型LED显示器、硅基液晶(LCoS)显示器、数字光处理器(DLP)或任何种类的其他显示器。

尽管图1将源设备12和目的地设备14描绘为单独的设备,但是设备的实施例还可以包括二者或二者的功能,即源设备12或其对应的功能以及目的地设备14或其对应的功能。在这种实施例中,可以使用相同的硬件和/或软件或通过单独的硬件和/或软件或其任何组合来实现源设备12或其对应的功能以及目的地设备14或其对应的功能。

基于本说明书对于技术人员将显而易见的是,如图1所示的源设备12和/或目的地设备14内的不同单元的功能或所有功能的存在和(精确)划分可以根据实际设备和应用改变。

编码器20(诸如视频编码器20)和解码器30(诸如视频解码器30)各自可以实现为多种合适的电路中的任意一种,诸如一个或多个微处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、离散逻辑、硬件或其任意组合。若这些技术部分以软件来实现,则设备可以将该软件的指令存储在合适的非暂时性计算机可读存储介质中,并且可以使用一个或多个处理器以硬件的形式执行指令,以执行本公开的技术。前述(包括硬件、软件、硬件与软件的组合等)中的任一者可被视为一或多个处理器。视频编码器20和视频解码器30中的每一个可以被包括在一个或多个编码器或解码器中,编码器或解码器二者中的任一个可以被集成为相应设备中的组合编码器/解码器(CODEC,编解码器)的一部分。

图2示出了用于实现本申请技术的示例视频编码器20的示意性/概念性框图。在图2的示例中,视频编码器20包括残差计算单元204、变换处理单元206、量化单元208、逆量化单元210和逆变换处理单元212、重构单元214、缓冲器216、环路滤波器单元220、解码图片缓冲器(decoded picture buffer,DPB)230、预测处理单元260以及熵编码单元270。预测处理单元260可以包括帧间预测部244、帧内预测单元254和模式选择单元262。帧间预测单元244可以包括运动估计单元和运动补偿单元(未示出)。根据混合视频编解码器,图2中所示的视频编码器20还可以被称为混合视频编码器或视频编码器。

例如,残差计算单元204、变换处理单元206、量化单元208、预测处理单元260以及熵编码单元270形成编码器20的前向信号路径,而诸如逆量化单元210、逆变换处理单元212、重构单元214、缓冲器216、环路滤波器220、解码图片缓冲器(DPB)230以及预测处理单元260形成编码器的后向信号路径,其中,编码器的后向信号路径对应于解码器(参见图3中的解码器30)的信号路径。

编码器20用于诸如通过输入202接收图片201或图片201的块203,例如,形成视频或视频序列的图片序列中的图片。图片块203也可以被称为当前图片块或要译码的图片块,图片201也可以被称为当前图片或要译码的图片(特别是,在视频译码中,为了区分当前图片与其他图片,诸如相同视频序列的先前已编码图片和/或已解码图片,即也包括当前图片的视频序列)。

预测处理单元260,也被称为块预测处理单元260,用于接收或获得块203(当前图片201的当前块203)以及重构图片数据,诸如来自缓冲器216的相同(当前)图片的参考样本和/或来自解码图像缓冲器230的一个或多个先前已解码图片的参考图片数据231,并处理该数据以进行预测,即提供预测块265,该预测块265可以是帧间预测块245或帧内预测块255。

模式选择单元262可以用于选择预测模式(诸如帧内或帧间预测模式)和/或对应的预测块245或255,以在残差块205的计算以及重构块215的重构中用作预测块265。

模式选择单元262的实施例可以用于(诸如从预测处理单元260所支持的模式)选择预测模式,该预测模式提供最佳匹配,或者换言之,提供最小残差(最小残差意味着更好的压缩用于传输或存储)或最小的信令开销(最小的信令开销意味着更好的压缩用于传输或存储),或者同时考虑或平衡两者。模式选择单元262可以用于基于速率失真优化(ratedistortioin optimiztion,RDO)来确定预测模式,即选择提供最小速率失真优化,或其相关的速率失真至少满足预测模式选择标准的预测模式。

帧内预测单元254还用于基于帧内预测参数(诸如选定的帧内预测模式)来确定帧内预测块255。在任何情况下,在为块选择帧内预测模式之后,帧内预测单元254还用于向熵编码单元270提供帧内预测参数,即指示该块的选定的帧内预测模式的信息。在一个示例中,帧内预测单元254可以用于执行后文描述的帧内预测技术的任意组合。

图3为用于实现本申请技术的示例性视频解码器30。视频解码器30用于接收诸如由编码器100编码的已编码图片数据(诸如已编码比特流)21,以获得已解码图片131。在解码过程中,视频解码器30从视频编码器100接收视频数据,诸如表示已编码视频条带的图片块以及相关语法元素的已编码视频比特流。

在图3的示例中,解码器30包括熵解码单元304、逆量化单元310、逆变换处理单元312、重构单元314(诸如求和器314)、缓冲器316、环路滤波器320、解码图片缓冲器330以及预测处理单元360。预测处理单元360可以包括帧间预测单元344、帧内预测单元354以及模式选择单元362。在一些示例中,视频解码器30可执行通常与针对图2的视频编码器100所描述的编码遍历相反的解码遍历。

熵解码单元304用于对已编码图片数据21执行熵解码,以获得诸如量化系数309和/或已解码译码参数(图3中未示出),诸如帧间预测参数中(已解码的)的任意或全部参数,帧内预测参数、环路滤波器参数和/或其他语法元素。熵解码单元304还用于将帧间预测参数、帧内预测参数和/或其他语法元素转发给预测处理单元360。视频解码器30可接收在视频条带级和/或视频块级处的语法元素。

逆量化单元310的功能可以与逆量化单元110的功能相同,逆变换处理单元312的功能可以与逆变换处理单元112的功能相同,重构单元314的功能可以与功能重构单元114的功能相同,缓冲器316的功能可以与缓冲器116相同,环路滤波器320的功能可以与环路滤波器120相同,解码图片缓冲器330的功能可以与解码图片缓冲器130的功能相同。

预测处理单元360可以包括帧间预测单元344和帧内预测单元354,其中,帧间预测单元344的功能可以类似于帧间预测单元144,帧内预测单元354的功能可以类似于帧内预测单元154。预测处理单元360通常用于执行块预测和/或从已编码数据21获得预测块365,并且诸如从熵解码单元304(显式或隐式)接收或获得与预测有关的参数和/或关于选定预测模式的信息。

当视频条带被译码为帧内译码(I)条带时,预测处理单元360的帧内预测单元354用于基于信号发送的帧内预测模式以及来自当前帧或图片的先前已解码块的数据,生成当前视频条带的图像块的预测块。当视频帧被译码为帧间译码(即B或P)条带时,预测处理单元360的帧间预测单元344(诸如运动补偿单元)用于基于从熵解码单元304接收的运动矢量和其他语法元素,产生用于当前视频条带的视频块的预测块365。对于帧间预测,预测块可以是从参考图片列表之一内的参考图片中的一个参考图片中产生的。视频解码器30可以基于存储在DPB 330中的参考图片,使用默认构造技术来构造参考帧列表,List 0和List 1。

预测处理单元360用于通过解析运动矢量和其他语法元素来确定当前视频条带的视频块的预测信息,并且预测处理单元360使用该预测信息来产生正在被解码的当前视频块的预测块。例如,预测处理单元360使用一些接收到的语法元素来确定用于对视频条带的视频块进行译码的预测模式(例如,帧内或帧间预测)、帧间预测条带类型(例如,B条带、P条带或GPB条带)、条带的参考图片列表中的一个或多个的构造信息、条带的每个帧间已编码视频块的运动矢量、条带的每个帧间已译码视频块的帧间预测状态以及其他信息,以对当前视频条带中的视频块进行解码。

逆量化单元310用于对在比特流中提供的并由熵解码单元304解码的量化的变换系数进行逆量化,即,反量化。逆量化过程可以包括使用由视频编码器100计算的量化参数来对视频条带中的每个视频块确定量化度,并且同样地,确定应当应用的逆量化度。

逆变换处理单元312用于将逆变换应用于变换系数,例如逆DCT、逆整数变换或概念上类似的逆变换过程,以便在像素域中产生残差块。

重构单元314(例如,求和器314)用于将逆变换块313(即,重构残差块313)添加到预测块365,以例如通过将重构残差块313的样本值与预测块365的样本值相加,来获得样本域中的重构块315。

环路滤波器单元320(在译码环路中或译码环路后)用于对重构块315进行滤波,以获得滤波块321,例如以平滑像素过渡,或提高视频质量。在一个示例中,环路滤波器单元320可以用于执行后述的滤波技术的任意组合。环路滤波器单元320旨在表示一个或多个环路滤波器,例如,解块滤波器、样本自适应偏移(sample-adaptive offset,SAO)滤波器或其他滤波器,例如,双边滤波器或自适应环路滤波器(adaptive loop filter,ALF)或锐化或平滑滤波器或协作滤波器。尽管在图3中将环路滤波器单元320示为环路内滤波器,但在其他配置中,环路滤波器单元320可以被实现为环路后滤波器。

然后,将给定帧或图片中的已解码视频块321存储在解码图片缓冲器330中,该解码图片缓冲器330存储用于后续运动补偿的参考图片。

解码器30用于例如经由输出332输出已解码图片331,以向用户呈现或共用户观看。

视频解码器30的其他变型可以用于对压缩的比特流进行解码。例如,解码器30可以在没有环路滤波单元320的情况下产生输出视频流。例如,对于某些块或帧,基于非变换的解码器30可以在没有逆变换处理单元312的情况下对残差信号直接进行逆量化。在另一实现方式中,视频解码器30可以具有组合成单个单元的逆量化单元310和逆变换处理单元312。

根据HEVC/H.265标准,35个帧内预测模式是可用的。如图4所示,该集合包含以下模式:平面模式(帧内预测模式索引为0)、DC模式(帧内预测模式索引为1)和定向(角度)模式,其覆盖180°范围并且具有图4中的黑色箭头所示的2至34的帧内预测模式索引值范围。为了采集自然视频中存在的任意边缘方向,定向帧内模式的数量从HEVC中使用的33个扩展到65个。附加的定向模式在图4中表示为虚线箭头,并且平面模式和DC模式保持不变。值得注意的是,帧内预测模式所覆盖的范围可以大于180°。具体地,索引值为3到64的62个定向模式覆盖大约230°的范围,即若干对模式具有相反的方向。在HEVC参考模型(HM)和JEM平台的情况下,只有一对角度模式(即模式2和66)具有如图4所示的相反的方向。为了构造预测器,常规角度模式采用参考样本,并(如果需要)对其进行滤波,以获得样本预测器。构造预测器所需的参考样本的数量取决于用于插值的滤波器的长度(例如,双线性和立方滤波器的长度分别为2和4)。

解码器包括处理电路,用于执行上述方法。

本公开中,公开了一种包括程序代码的计算机程序产品,用于执行上述方法。

本公开中,公开了一种用于对视频数据进行解码的解码器,该解码器包括:一个或多个处理器;以及非暂时性计算机可读存储介质,其耦合到处理器并存储由处理器执行的程序,其中,该程序在由处理器执行时将解码器配置为执行上述方法。

图7示出了例如针对VVC所提出的67个帧内预测模式的示例,67个帧内预测模式中的多个帧内预测模式包括:平面模式(索引0),DC模式(索引1)以及索引为2到66的角度模式,其中,图7中左下的角度模式是指索引2,且索引的编号递增直至索引66是图7的最右上的角度模式。

图10是根据本公开实施例的网络设备1300的示意图。网络设备1300适合于实现本文中描述的所公开的实施例。网络设备1300包括入端口1310、用于接收数据的接收机单元(Rx)1320、用于处理数据的处理器、逻辑单元或中央处理单元(CPU)1330、发射机单元(Tx)1340、用于发送数据的出端口1350以及用于存储数据的存储器1360。网络设备1300还可以包括光到电(Optical-to-electrical,OE)组件和电到光(electrical-to-optical,EO)组件,其耦合到入端口1310、接收机单元1320、发射机单元1340和出端口1350,进行光信号或电信号的出进。

处理器1330通过硬件和软件实现。处理器1330可以被实现为一个或多个CPU芯片、核(例如,为多核处理器)、现场可编程门阵列(field-programmable gate array,FPGA)、专用集成电路(appliocattion specific integrated circuit,ASIC)和数字信号处理器(digital signal processor,DSP)。处理器1330与入端口1310、接收机单元1320、发射机单元1340、出端口1350和存储器1360进行通信。处理器1330包括译码模块1370。译码模块1370实现上述所公开的实施例。例如,译码模块1370实现、处理、准备或提供各种网络功能。因此,包括译码模块1370对网络设备1330的功能性提供了实质性改进,并且实现了网络设备1330到不同状态的转换。可替换地,译码模块1370被实现为存储在存储器1360中并且由处理器1330执行的指令。

存储器1360包括一个或多个磁盘、磁带机和固态硬盘,并且可以用作溢出数据存储设备,用于在选择程序进行执行时存储该程序,并且存储在程序执行期间被读取的指令和数据。存储器1360可以是易失性和/或非易失性的,并且可以是只读存储器(ROM)、随机存取存储器(RAM)、三元内容可寻址存储器(TCAM)和/或静态随机存取存储器(SRAM)。

图10是可以用于实现各种实施例的装置1100的框图。装置1100可以是如图1所示的源设备102、或如图2所示的视频编码器200、或如图1所示的目的地设备104或如图3所示的视频解码器300。另外,装置1100可以托管所描述的元件中的一个或多个。在一些实施例中,装置1100配备有诸如扬声器、麦克风、鼠标、触摸屏、小键盘、键盘、打印机、显示器等的一个或多个输入/输出设备。装置1100可以包括一个或多个中央处理单元(CPU)1510、存储器1520、大容量存储器1530、视频适配器1540和连接至总线的I/O接口1560。该总线是任何类型的几种总线架构中的一种或多种,包括存储器总线或存储器控制器、外围总线、视频总线等。

该CPU 1510可以是任何类型的电子数据处理器。存储器1520可以有或可以是任何类型的系统存储器,如静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、同步DRAM(SDRAM)、只读存储器(ROM)或其组合等。在一个实施例中,存储器1520可以包括在启动时使用的ROM、以及在执行程序时使用的用于程序和数据存储的DRAM。在实施例中,存储器1520是非易失的。大容量存储器1530包括任何类型的存储设备,该设备存储数据、程序以及其他信息,并且使数据、程序以及其他信息通过总线可接入。例如,大容量存储器1530包括固态驱动器、硬盘驱动器、磁盘驱动器、光盘驱动器等中的一个或多个。

视频适配器1540和I/O接口1560提供接口,以将外部输入和输出设备耦合到装置1100。例如,装置1100可以向客户端提供SQL命令接口。如图所示,输入和输出设备的示例包括耦合到视频适配器1540的显示器1590和耦合到I/O接口1560的鼠标/键盘/打印机1570的任意组合。可以将其他设备耦合到装置1100,并且可以利用附加的或更少的接口卡。例如,可以使用串行接口卡(未示出)为打印机提供串行接口。

装置1100还包括一个或多个网络接口1550,该接口包括诸如以太网电缆等的有线链路和/或无线链路,以访问节点或一个或多个网络1580。网络接口1550允许装置1100通过网络1580与远程单元进行通信。例如,网络接口1550可以向数据库提供通信。在一个实施例中,装置1100耦合到局域网或广域网,以进行数据处理并与诸如其他处理单元、因特网、远程存储设施等的远程设备进行通信。

为了计算预测给定块内的像素所需的加权系数的值,引入了分段线性逼近。一方面,与直接加权系数计算相比,分段线性逼近显著降低了距离加权预测机制的计算复杂度,另一方面,与现有技术的简化相比,分段线性逼近有助于实现加权系数值的更高准确性。

这些实施例可以应用于其他双向的和取决于位置的帧内预测技术(例如,PDPC的不同修改),以及使用权重系数来混合图片的不同部分的机制,(例如,图像处理中的一些混合方法)该权重系数取决于一个像素到另一像素的距离。

本公开中所描述的主题的实现方式和操作可以在数字电子电路中,或者在包括本公开中所公开的结构及其结构等同物的计算机软件、固件或硬件中,或者在这些中的一个或多个的组合中实现。本公开中所描述的主题的实现方式可以被实现为一个或多个计算机程序,即计算机程序指令的一个或多个模块,其被编码在计算机存储介质上,以由数据处理装置执行或控制数据处理装置的操作。可替换地或附加地,可以将程序指令编码在人工生成的传播信号上,例如,机器生成的电信号、光信号或电磁信号,其被生成来对信息进行编码,以传输到合适的接收机装置由数据处理装置执行。计算机存储介质,例如,计算机可读介质,可以是或可以包括在计算机可读存储设备、计算机可读存储基板、随机或串行存取存储器阵列或设备或这些中的一个或多个的组合中。而且,虽然计算机存储介质不是传播信号,但是计算机存储介质可以是被编码在人工生成的传播信号中的计算机程序指令的源或目的地。计算机存储介质也可以是或可以包含在一个或多个单独的物理和/或非暂时性组件或介质(例如,多个CD、磁盘或其他存储设备)中。

在一些实现方式中,本公开中所描述的操作可以被实现为在云计算网络中的服务器上提供的托管服务。例如,计算机可读存储介质可以在云计算网络内被逻辑分组并且可访问。云计算网络内的服务器可以包括用于提供基于云的服务的云计算平台。术语“云”、“云计算”和“基于云”可以适当地互换使用,而不脱离本公开的范围。基于云的服务可以是托管服务,该托管服务由服务器提供并通过网络传递到客户端平台,以增强、补充或代替在客户端计算机上本地执行的应用。电路可以使用基于云的服务来迅速接收软件升级、应用和其他资源,否则,这些资源可能需要很长的时间才能交付给电路。

计算机程序(也被称为程序、软件、软件应用、脚本或代码)可以以任意形式的编程语言编写,包括编译语言或解释语言,声明性语言或过程语言,并且该计算机程序可以以任意形式部署,包括部署为独立程序或模块、组件、子例程、对象,或者适于在计算环境中使用的其他单元。计算机程序可以但不需要对应于文件系统中的文件。可以将程序存储在保持其它程序或数据(例如,存储在标记语言文档中的一个或多个脚本)的文件中的一部分、专用于正讨论的程序的单个文件或者多个协调文件(例如,存储一个或多个模块、子程序或部分代码的文件)中。可以将计算机程序部署为在一台计算机或多台计算机上执行,其位于一个站点处或分布在多个站点处并通过通信网络互连。

本公开中所描述的过程和逻辑流程可以由一个或多个可编程处理器执行,其执行一个或多个计算机程序,以通过对输入数据进行操作及生成输出来执行动作。这些过程和逻辑流程也可以由专用逻辑电路,例如,FPGA(现场可编程门阵列)或ASIC(专用集成电路),来执行,并且装置也可以被实现为该专用逻辑电路,例如,FPGA(现场可编程门阵列)或ASIC(专用集成电路)。

例如,适于执行计算机程序的处理器包括通用和专用微处理器以及任何类型的数字计算机中的任何一个或多个处理器。通常,处理器将接收来自只读存储器或者随机存取存储器或者两者的指令和数据。计算机的主要元件是用于根据指令执行动作的处理器以及用于存储指令和数据的一个或多个存储器设备。通常,计算机还将包括或可操作地耦合一个或多个大容量存储设备,或者即包括也可操作地耦合个或多个大容量存储设备,以从一个或多个大容量存储设备接收数据或将数据传输至一个或多个大容量存储设备,该一个或多个大容量存储设备用于存储数据,例如,磁盘、磁光盘或光盘。然而,计算机不必有这种设备。并且,可以将计算机嵌入到另一设备中,例如,移动电话、个人数字助理(PDA)、移动音频或视频播放器、游戏机、全球定位系统(GPS)接收机或便携式存储设备(例如,通用串行总线(USB)闪存驱动器),仅举几例。适于存储计算机程序指令和数据的设备包括所有形式的非易失性存储器、介质和存储器设备,包括例如半导体存储器设备(例如,EPROM,EEPROM和闪速存储器设备);磁盘(例如,内部硬盘或可移动磁盘);磁光盘;和CD ROM和DVD-ROM盘。处理器和存储器可以由专用逻辑电路补充或并入其中。

虽然本公开包含许多具体的实现细节,但这些细节都不应解释为对任何实现或要求保护的范围的限制,而应被解释为具体实现的特定于具体实现的特征的描述。在本公开中的单独实现的上下文中描述的某些特征也可以在单个实现中组合实现。相反,在单个实现的上下文中描述的各种特征也可以在多个实现中单独实现或以任何合适的子组合实现。并且,虽然特征可以在上述为在某些组合中起作用,并且甚至最初如此要求保护,但是来自要求保护的组合的一个或多个特征在一些情况下可以从组合中删除,并且要求保护的组合可以涉及子组合或子组合的变形。

类似地,虽然附图中以特定顺序描绘了操作,但是这不应理解为要求以所示的特定顺序或以连续顺序执行这些操作,或执行所有所示操作,以实现所期望的结果。在某些情况下,多任务和并行处理可以是有利的。并且,分离上述实现中的各种系统组件不应被理解为在所有实现中都需要这种分离,并且应当理解,所描述的程序组件和系统通常可以被一同集成在单个软件产品或被打包成多个软件产品。

因此,已经描述了主题的特定实现。其它实现在所附权利要求的范围内。在某些情况下,权利要求中记载的动作可以以不同的顺序执行,并且仍然实现了所期望的结果。此外,在附图中描绘的过程不一定需要所示的特定顺序或连续的顺序来实现所期望的结果。在某些实现中,多任务和并行处理可以是有利的。

虽然本公开中已经提供了几个实施例,但是应理解,在不脱离本公开的精神或范围的情况下,所公开的系统和方法可以以许多其它具体形式来体现。本示例被认为是说明性的而不是限制性的,并且其意图不限于本文中所给出的细节。例如,各种元件或组件可以组合或者集成到另一系统中,或某些特征可以忽略或不实施。

此外,在不脱离本公开的范围的情况下,在各种实施例中描述和示出为离散或分离的技术、系统、子系统和方法可以与其他系统、模块、技术或方法结合或集成。所显示或讨论为的相互耦合、相互直接耦合或相互通信的其他项目可以以电性、机械或其它方式通过某个接口、设备或中间组件间接耦合或通信。本领域技术人员可以确定并做出变化、替换、和变更的其他示例,而不脱离文中公开的精神和范围。

59页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:用于仿射模式的基于历史的运动矢量预测

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类