CN116472711A - 用于帧内模式编码的硬件友好设计 - Google Patents
用于帧内模式编码的硬件友好设计 Download PDFInfo
- Publication number
- CN116472711A CN116472711A CN202280006825.7A CN202280006825A CN116472711A CN 116472711 A CN116472711 A CN 116472711A CN 202280006825 A CN202280006825 A CN 202280006825A CN 116472711 A CN116472711 A CN 116472711A
- Authority
- CN
- China
- Prior art keywords
- intra
- mode
- prediction
- list
- block
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Landscapes
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
用于视频解码中的帧内预测模式编码的方法、设备和计算机可读存储介质。该方法包括接收编码视频比特流;基于块的大小根据预定义规则为编码视频比特流中的块构造帧内模式列表;将帧内模式列表划分为块的多个帧内模式集合;从编码视频比特流中提取指示多个帧内模式集合中的帧内模式集合的集合索引;从编码视频比特流中提取指示帧内模式集合中的帧内预测模式的模式索引;基于集合索引和模式索引确定块的帧内预测模式;以及基于帧内预测模式对编码视频比特流进行解码。
Description
相关申请
本申请基于2021年8月24日提交的美国临时申请第63/236,542号和2022年1月12日提交的美国非临时申请第17/573,856号并要求这两项申请的优先权的权益,这两项申请通过引用整体并入本文。
技术领域
本公开内容涉及视频编码和/或解码技术,并且特别地,涉及帧内预测模式编码的改进设计和信令。
背景技术
本文提供的该背景描述是为了总体上呈现本公开内容的背景的目的。就本背景技术部分中描述的工作的程度而言,目前署名的发明人的工作以及在提交该申请时可以不被另外限定为现有技术的描述的方面既没有明确地也没有隐含地被承认为本公开内容的现有技术。
可以使用带运动补偿的帧间图片预测执行视频编码和视频解码。未压缩的数字视频可以包括一系列图片,其中每个图片具有例如1920×1080个亮度样本和相关联的全色度样本或子采样色度样本的空间维度。一系列图片可以具有固定或可变的图片速率(替选地被称为帧速率),例如每秒60幅图片或每秒60帧。未压缩的视频对于流式传输或数据处理有特定的比特率要求。例如,在每颜色信道每像素8比特下,像素分辨率为1920×1080、帧速率为60帧/秒以及色度子采样为4:2:0的视频需要接近1.5Gbit/s的带宽。一小时这样的视频需要超过600G字节的存储空间。
视频编码和视频解码的一个目的可以是通过压缩减少未压缩的输入视频信号中的冗余。在一些情况下,压缩可以帮助将上述带宽和/或存储空间需求降低两个数量级或更多。可以采用无损压缩和有损压缩二者以及它们的组合。无损压缩是指可以从压缩的原始信号中经由解码过程重构原始信号的精确副本的技术。有损压缩是指其中原始视频信息在编码期间没有被完全保留并且在解码期间也不能被完全恢复的编码/解码过程。当使用有损压缩时,重构信号可能与原始信号不相同,但是原始信号与重构信号之间的失真足够小,以使得尽管有一些信息损失,重构信号对预期的应用也是有用的。在视频的情况下,在许多应用中广泛采用有损压缩。容许的失真量取决于应用。例如,某些消费者视频流式传输应用的用户可以比电影或电视广播应用的用户容忍更高的失真。可以选择或调整能够由特定编码算法实现的压缩比以反映各种失真容限:较高的可容忍失真通常允许产生较高的损失和较高的压缩比的编码算法。
视频编码器和视频解码器可以利用来自几种广泛类别和步骤的技术,包括例如运动补偿、傅里叶变换、量化和熵编码。
视频编解码器技术可以包括被称为帧内编码的技术。在帧内编码中,在不参考来自先前重构的参考图片的样本或其他数据的情况下表示样本值。在一些视频编解码器中,图片在空间上被细分为样本块。当在帧内模式下对所有样本块进行编码时,该图片可以被称为帧内图片。帧内图片及其派生(例如,独立解码器刷新图片)可以用于重置解码器状态,并且因此可以用作编码视频比特流和视频会话中的第一图片或用作静止图像。然后,可以使帧内预测之后的块的样本变换到频域中,并且可以在熵编码之前对所生成的变换系数进行量化。帧内预测表示使样本值在预变换域中最小化的技术。在一些情况下,变换后的DC值越小,并且AC系数越小,在给定量化步长下表示熵编码之后的块所需的比特就越少。
诸如从例如MPEG-2代编码技术中已知的传统的帧内编码不使用帧内预测。然而,一些较新的视频压缩技术包括试图基于例如在编码和/或解码期间获得的在空间上邻近并且在解码顺序上先于正被帧内编码或解码的数据块的元数据和/或周围样本数据来对块进行编码/解码的技术。这样的技术此后被称为“帧内预测”技术。注意,在至少一些情况下,帧内预测仅使用来自正在重构的当前图片的参考数据,而不使用来自其他参考图片的参考数据。
可以存在多种不同形式的帧内预测。当在给定的视频编码技术中可以使用多于一种的这样的技术时,使用的技术可以被称为帧内预测模式。可以在特定编解码器中提供一种或更多种帧内预测模式。在某些情况下,模式可以具有子模式以及/或者可以与各种参数相关联,并且视频块的模式/子模式信息以及帧内编码参数可以被单独编码或者被集体包括在模式码字中。针对给定模式、子模式和/或参数组合要使用的码字可以通过帧内预测对编码效率增益产生影响,并且因此可以对用于将码字转换成比特流的熵编码技术产生影响。
帧内预测的某些模式由H.264引入,在H.265中被细化,并且在诸如联合开发模型(JEM)、通用视频编码(VVC)和基准集(BMS)的较新编码技术中被进一步细化。通常,对于帧内预测,可以使用已经变得可用的邻近样本值来形成预测值块。例如,可以将沿着特定方向和/或线的邻近样本的特定集合的可用值复制到预测值块中。对使用的方向的参考可以被编码在比特流中,或者其本身可以被预测。
参照图1A,在右下方描绘的是在H.265的33个可能的帧内预测值方向(对应于H.265中指定的35个帧内模式中的33个角度模式)中指定的9个预测值方向的子集。箭头会聚的点(101)表示正被预测的样本。箭头表示邻近样本被用于预测101处的样本的方向。例如,箭头(102)指示从右上方的与水平方向成45度角的邻近的一个或多个样本对样本(101)进行预测。类似地,箭头(103)指示从样本(101)的左下方的与水平方向成22.5度角的邻近的一个或多个样本对样本(101)进行预测。
仍然参照图1A,在左上方描绘的是4×4个样本的正方形块(104)(由虚粗体线指示)。正方形块(104)包括16个样本,每个样本由“S”、其在Y维度上的位置(例如,行索引)和其在X维度上的位置(例如,列索引)来标记。例如,样本S21是Y维度上(从顶部起)的第二个样本和X维度上(从左侧起)的第一个样本。类似地,样本S44是块(104)中在Y维度和X维度二者上的第四个样本。由于块的大小是4×4个样本,所以S44在右下方。进一步示出了遵循类似的编号方案的示例参考样本。参考样本由R、其相对于块(104)的Y位置(例如,行索引)和X位置(列索引)来标记。在H.264和H.265二者中,使用与重构中的块相邻地邻近的预测样本。
块104的帧内图片预测可以通过根据用信号通知的预测方向从邻近的样本复制参考样本值开始。例如,假设编码视频比特流包括以下信令,对于该块104,该信令指示箭头(102)的预测方向,也就是,根据右上方的与水平方向成45度角的一个或多个预测样本来对样本进行预测。在这样的情况下,根据相同的参考样本R05对样本S41、S32、S23和S14进行预测。然后,根据参考样本R08对样本S44进行预测。
在某些情况下,多个参考样本的值可以例如通过插值来组合,以便计算参考样本;尤其是当方向不能被45度整除时。
随着视频编码技术的不断发展,可能的方向的数量也在增加。例如,在H.264(2003年)中,九个不同的方向可用于帧内预测。这在H.265(2013年)中增加到33个,并且在公开时JEM/VVC/BMS可以支持多达65个方向。已经进行了实验研究来帮助识别最合适的帧内预测方向,并且熵编码中的某些技术可以用于以少量比特对那些最合适的方向进行编码,从而接受用于方向的特定比特惩罚。此外,有时可以根据在已解码的邻近块的帧内预测中使用的邻近方向来预测方向本身。
图1B示出了根据JEM描绘65个帧内预测方向的示意图(180),以示出随着时间的推移开发的各种编码技术中不断增加的预测方向的数量。
编码视频比特流中将表示帧内预测方向的比特映射到预测方向的方式可以随着视频编码技术的不同而不同;并且该映射例如可以从预测方向到帧内预测模式到码字的简单直接映射变化到复杂自适应方案,复杂自适应方案涉及最可能模式和类似技术。然而,在所有情况下,可能存在与某些其他方向相比在统计上较不可能出现在视频内容中的某些帧内预测方向。由于视频压缩的目标是减少冗余,因此在运作良好的视频编码技术中,那些较不可能的方向与更可能的方向相比可以通过更大数量的比特来表示。
帧间图片预测或帧间预测可以基于运动补偿。在运动补偿中,在由运动矢量(此后被称为MV)指示的方向上进行空间移位之后,可以使用来自先前重构的图片或其一部分(参考图片)的样本数据来预测新重构的图片或图片部分(例如,块)。在一些情况下,参考图片可以与当前被重构的图片相同。MV可以具有两个维度X和Y,也可以具有三个维度,其中第三维度是对使用中的参考图片的指示(类似于时间维度)。
在一些视频压缩技术中,可以从其他MV例如以下其他MV预测适用于样本数据的特定区域的当前MV,这些其他MV与样本数据的在空间上相邻于正在重构的区域的其他区域有关并且在解码顺序上先于该当前MV。这样做可以通过依赖于移除关联的MV中的冗余而显著减少对MV进行编码所需的总的数据量,从而提高压缩效率。MV预测可以有效地发挥作用,例如,这是因为在对从摄像装置导出的输入视频信号(被称为自然视频)进行编码时,存在如下统计上的可能性,即在视频序列中比单个MV所适用的区域大的区域在相似的方向上移动,并且因此在一些情况下可以使用从邻近区域的MV导出的相似运动矢量来进行预测。这导致针对给定区域的实际MV与从周围的MV预测的MV相似或相同。这样的MV又可以在熵编码之后以小于直接从邻近MV对MV进行编码而不是从邻近MV对MV进行预测的情况下使用的比特数来表示。在一些情况下,MV预测可以是对从原始信号(即样本流)导出的信号(即MV)进行无损压缩的示例。在其他情况下,例如由于从几个周围MV计算预测值时的舍入误差,MV预测本身可以是有损的。
在H.265/HEVC(ITU-T H.265建议书,“High Efficiency Video Coding(高效视频编解码)”,2016年12月)中描述了各种MV预测机制。在H.265指定的多种MV预测机制中,以下描述的是此后被称为“空间合并”的技术。
具体地,参照图2,当前块(201)包括在运动搜索过程期间已被编码器发现的样本,根据已产生空间偏移的相同大小的先前块可预测所述样本。代替对该MV进行直接编码,可以从与一个或更多个参考图片相关联的元数据中导出所述MV,例如,使用与被表示为A0、A1和B0、B1、B2(分别对应202到206)的五个周围样本中的任一样本相关联的MV,(按解码顺序)从最近的参考图片的元数据中导出所述MV。在H.265中,MV预测可以使用邻近块也正在使用的相同参考图片的预测值。
发明内容
本公开内容描述用于视频编码和/或解码的方法、设备和计算机可读存储介质的各种实施方式。
根据一个方面,本公开内容的实施方式提供一种用于视频解码中的帧内预测模式编码的方法。该方法包括由设备接收编码视频比特流。该设备包括存储指令的存储器和与存储器通信的处理器。该方法还包括:由设备基于编码视频比特流中的块的大小,根据预定义规则为块构造帧内模式列表;由设备将帧内模式列表划分为块的多个帧内模式集合;由设备从编码视频比特流中提取指示多个帧内模式集合中的帧内模式集合的集合索引;由设备从编码视频比特流中提取指示帧内模式集合中的帧内预测模式的模式索引;由设备基于集合索引和模式索引确定块的帧内预测模式;以及由设备基于帧内预测模式对编码视频比特流进行解码。
根据另一方面,本公开内容的实施方式提供了用于视频编码和/或解码的设备。该设备包括存储指令的存储器以及与存储器通信的处理器。当处理器执行指令时,处理器被配置成使设备执行上述用于视频解码和/或编码的方法。
在另一方面中,本公开内容的实施方式提供了存储指令的非暂态计算机可读介质,所述指令在由用于视频解码和/或编码的计算机执行时使该计算机执行上述用于视频解码和/或编码的方法。
在附图、说明书和权利要求书中更详细地描述了上述方面和其他方面及其实现方式。
附图说明
根据以下详细描述和附图,所公开的主题的另外的特征、性质和各种优点将更明显。
图1A示出了帧内预测方向性模式的示例性子集的示意性图示。
图1B示出了示例性帧内预测方向的图示。
图2示出了在一个示例中用于运动矢量预测的当前块及其周围的空间合并候选的示意性图示。
图3示出了根据示例实施方式的通信***(300)的简化框图的示意性图示。
图4示出了根据示例实施方式的通信***(400)的简化框图的示意性图示。
图5示出了根据示例实施方式的视频解码器的简化框图的示意性图示。
图6示出了根据示例实施方式的视频编码器的简化框图的示意性图示。
图7示出了根据另一示例实施方式的视频编码器的框图。
图8示出了根据另一示例实施方式的视频解码器的框图。
图9示出了根据本公开内容的示例实施方式的方向性帧内预测模式。
图10示出了根据本公开内容的示例实施方式的非方向性帧内预测模式。
图11示出了根据本公开内容的示例实施方式的递归帧内预测模式。
图12示出了根据本公开内容的示例实施方式的基于各种参考行的帧内预测方案。
图13示出了根据本公开内容的示例实施方式的基于偏移的帧内预测细化。
图14A示出了根据本公开内容的示例实施方式的基于偏移的帧内预测细化的另一图示。
图14B示出了根据本公开内容的示例实施方式的基于偏移的帧内预测细化的另一图示。
图15示出了根据本公开内容的示例实施方式的方法的流程图。
图16示出了根据本公开内容的示例实施方式的计算机***的示意性图示。
具体实施方式
现在将参照附图在下文中详细描述本发明,附图形成本发明的一部分,并且通过图示示出实施方式的具体示例。然而,请注意,本发明可以以各种不同形式来实施,并且因此,所涵盖或所要求保护的主题旨在被解释为不限于以下要阐述的实施方式中的任一个。还请注意,本发明可以被实施为方法、装置、部件或***。因此,本发明的实施方式可以例如采取硬件、软件、固件或其任何组合的形式。
在整个说明书和权利要求书中,术语可以具有在上下文中建议或暗示的超出明确陈述的含义的具有细微差别的含义。如本文所使用的短语“在一个实施方式中”或“在一些实施方式中”不一定是指相同的实施方式,并且如本文所使用的短语“在另一实施方式中”或“在其他实施方式中”不一定是指不同的实施方式。同样,如本文所使用的短语“在一个实现方式中”或“在一些实现方式中”不一定指相同的实现方式,并且如本文所使用的短语“在另一实现方式中”或“在其他实现方式中”不一定是指不同的实现方式。例如,目的是所要求保护的主题包括示例性实施方式/实现方式的整体或部分的组合。
通常,术语可以至少部分地从上下文中的用法来理解。例如,如本文所使用的术语,诸如“和”、“或”或者“和/或”可以包括各种含义,其可以至少部分地取决于使用这样的术语的上下文。通常,如果“或”用于关联列表,例如A、B或C,则“或”旨在表示A、B和C,此处以包含的意义使用,以及A、B或C,此处以排他的意义使用。另外,至少部分地取决于上下文,如本文所使用的术语“一个或更多个”或“至少一个”可以用于以单数意义描述任何特征、结构或特性,或者可以用于以复数意义描述特征、结构或特性的组合。类似地,术语,例如“一”、“一个”或“该”,同样可以被理解成传达单数用法或传达复数用法,这至少部分地取决于上下文。此外,术语“基于”或“由……确定”可以被理解为不一定旨在传达排他的因素集合,并且可以替代地允许存在不一定明确描述的附加因素,这同样至少部分地取决于上下文。
图3示出了根据本公开内容的实施方式的通信***(300)的简化框图。通信***(300)包括多个终端装置,多个终端装置可以经由例如网络(350)彼此通信。例如,通信***(300)包括经由网络(350)互连的第一对终端装置(310)和终端装置(320)。在图3的示例中,第一对终端装置(310)和终端装置(320)可以执行单向数据传输。例如,终端装置(310)可以对视频数据(例如,由终端装置(310)捕获的视频图片流)进行编码以经由网络(350)传输到另一终端装置(320)。编码视频数据可以以一个或更多个编码视频比特流的形式传输。终端装置(320)可以从网络(350)接收编码视频数据、对编码视频数据进行解码以恢复视频图片以及根据所恢复的视频数据显示视频图片。单向数据传输可以在媒体服务应用等中实现。
在另一示例中,通信***(300)包括执行编码视频数据的双向传输的第二对终端装置(330)和终端装置(340),所述双向传输可以例如在视频会议应用期间实现。对于数据的双向传输,在示例中,终端装置(330)和终端装置(340)中的每个终端装置可以对视频数据(例如,由终端装置捕获的视频图片流)进行编码,以经由网络(350)传输至终端装置(330)和终端装置(340)中的另一终端装置。终端装置(330)和终端装置(340)中的每个终端装置还可以接收由终端装置(330)和终端装置(340)中的另一终端装置传输的编码视频数据,并且可以对所述编码视频数据进行解码以恢复视频图片,并且可以根据所恢复的视频数据在可访问的显示装置处显示视频图片。
在图3的示例中,终端装置(310)、(320)、(330)和(340)可以被实现为服务器、个人计算机和智能电话,但本公开内容的基本原理的适用性可以不限于此。本公开内容的实施方式可以在台式计算机、膝上型计算机、平板计算机、媒体播放器、可穿戴计算机、专用视频会议设备等中实现。网络(350)表示在终端装置(310)、(320)、(330)和(340)之间传送编码视频数据的任何数目或任何类型的网络,包括例如有线(连线的)和/或无线通信网络。通信网络(350)可以在电路交换、分组交换和/或其他类型的信道中交换数据。代表性网络包括电信网络、局域网、广域网和/或因特网。出于本论述的目的,除非本文中明确说明,否则网络(350)的架构和拓扑对于本公开内容的操作来说可能是无关紧要的。
作为所公开的主题的应用的示例,图4示出了视频编码器和视频解码器在视频流式传输环境中的放置。所公开的主题可以同等地适用于其他视频应用,包括例如:视频会议,数字电视广播,游戏,虚拟现实,压缩视频在包括CD、DVD、记忆棒等的数字介质上的存储等。
视频流式传输***可以包括视频捕获子***(413),该视频捕获子***(413)可以包括视频源(401)例如数字摄像装置,用于创建未压缩的视频图片或图像流(402)。在示例中,视频图片流(402)包括由视频源401的数字摄像装置记录的样本。视频图片流(402)被描绘为粗线以强调与编码视频数据(404)(或编码视频比特流)相比时的高数据量,视频图片流(402)可以由耦接至视频源(401)的包括视频编码器(403)的电子装置(420)处理。视频编码器(403)可以包括硬件、软件或其组合以实现或实施如下更详细描述的所公开的主题的各方面。编码视频数据(404)(或编码视频比特流(404))被描绘为细线以强调与未压缩视频图片流(402)相比时的较低数据量,编码视频数据(404)可以被存储在流式传输服务器(405)上以供将来使用或被直接存储至下游的视频装置(未示出)。一个或更多个流式传输客户端子***,例如图4中的客户端子***(406)和(408),可以访问流式传输服务器(405)以检索编码视频数据(404)的副本(407)和(409)。客户端子***(406)可以包括例如电子装置(430)中的视频解码器(410)。视频解码器(410)对传入的编码视频数据的副本(407)进行解码,并且创建未压缩的并且可以在显示器(412)(例如,显示屏幕)或其他呈现装置(未描绘)上呈现的传出视频图片流(411)。视频解码器410可以被配置成执行本公开内容中描述的各种功能中的一些或全部。在一些流式传输***中,可以根据某些视频编码标准/视频压缩标准对编码视频数据(404)、(407)和(409)(例如,视频比特流)进行编码。这些标准的示例包括ITU-T H.265建议书。在示例中,正在开发的视频编码标准被非正式地称为通用视频编码(Versatile Video Coding,VVC)。所公开的主题可以在VVC和其他视频编码标准的环境中使用。
应当注意,电子装置(420)和(430)可以包括其他部件(未示出)。例如,电子装置(420)可以包括视频解码器(未示出),并且电子装置(430)也可以包括视频编码器(未示出)。
图5示出了根据以下本公开内容的任何实施方式的视频解码器(510)的框图。视频解码器(510)可以被包括在电子装置(530)中。电子装置(530)可以包括接收器(531)(例如,接收电路***)。可以使用视频解码器(510)代替图4的示例中的视频解码器(410)。
接收器(531)可以接收要由视频解码器(510)解码的一个或更多个编码视频序列。在同一实施方式或另一实施方式中,可以一次对一个编码视频序列进行解码,其中每个编码视频序列的解码独立于其他编码视频序列。每个视频序列可以与多个视频帧或图像相关联。可以从信道(501)接收编码视频序列,信道(501)可以是至存储编码视频数据的存储装置或发送编码视频数据的流式传输源的硬件/软件链路。接收器(531)可以接收编码视频数据以及其他数据,例如可以被转发至其各自的处理电路***(未描绘)的编码音频数据和/或辅助数据流。接收器(531)可以将编码视频序列与其他数据分开。为了对抗网络抖动,可以在接收器(531)与熵解码器/解析器(520)(此后称为“解析器(520)”)之间设置缓冲存储器(515)。在某些应用中,缓冲存储器(515)可以被实现为视频解码器(510)的一部分。在其他应用中,缓冲存储器(515)可以在视频解码器(510)外部并与视频解码器(510)分开(未描绘)。在又一些其他应用中,在视频解码器(510)外部可以存在缓冲存储器(未描绘)以用于例如对抗网络抖动的目的,并且在视频解码器(510)内部还可以存在另一其他缓冲存储器(515)以例如处理回放时序。当接收器(531)正在从具有足够带宽和可控性的存储/转发装置或从等同步网络接收数据时,可以不需要缓冲存储器(515),或者缓冲存储器(515)可以小。为了在诸如因特网的尽力型(best effort)分组网络上使用,可能需要足够大小的缓冲存储器(515),并且缓冲存储器(515)的大小可以相对大。这样的缓冲存储器可以实现为具有自适应大小,并且可以至少部分地在操作***或视频解码器(510)外部的类似元件(未描绘)中实现。
视频解码器(510)可以包括解析器(520)以根据编码视频序列来重构符号(521)。这些符号的类别包括用于管理视频解码器(510)的操作的信息以及可能包括用于控制诸如显示器(512)(例如,显示屏)的呈现装置的信息,该呈现装置可能是或可能不是电子装置(530)的组成部分但可以耦接至电子装置(530),如图5所示。用于呈现装置的控制信息可以采取辅助增强信息(SEI(Supplemental Enhancement Information)消息)或视频可用性信息(Video Usability Information,VUI)参数集片段(未描绘)的形式。解析器(520)可以对由解析器(520)接收到的编码视频序列进行解析/熵解码。编码视频序列的熵编码可以符合视频编码技术或视频编码标准,并且可以遵循各种原理,包括可变长度编码、霍夫曼编码(Huffman coding)、具有或不具有上下文敏感性的算术编码等。解析器(520)可以基于与子组相对应的至少一个参数,从编码视频序列提取针对视频解码器中的像素子组中的至少一个子组的子组参数集。子组可以包括图片组(Group of Pictures,GOP)、图片、图块、切片、宏块、编码单元(Coding Unit,CU)、块、变换单元(Transform Unit,TU)、预测单元(Prediction Unit,PU)等。解析器(520)还可以从编码视频序列中提取信息,例如变换系数(例如傅里叶变换系数)、量化器参数值、运动矢量等。
解析器(520)可以对从缓冲存储器(515)接收的视频序列执行熵解码/解析操作,从而创建符号(521)。
取决于编码视频图片或其部分(诸如:帧间图片和帧内图片、帧间块和帧内块)的类型以及其他因素,符号(521)的重构可以涉及多个不同的处理单元或功能单元。涉及哪些单元以及涉及的方式可以通过由解析器(520)从编码视频序列解析的子组控制信息来控制。为了简洁起见,没有描绘这样的子组控制信息在解析器(520)与下面的多个处理单元或功能单元之间的流动。
除了已经提及的功能块之外,视频解码器(510)可以在概念上被细分为如下所述的许多功能单元。在商业约束下运行的实际实现方式中,这些功能单元中的许多功能单元彼此密切交互,并且可以至少部分地彼此集成。然而,出于清楚地描述所公开的主题的各种功能的目的,在下面的本公开内容中采用了在概念上细分成功能单元。
第一单元可以包括缩放器/逆变换单元(551)。缩放器/逆变换单元(551)可以从解析器(520)接收作为符号(521)的量化变换系数以及控制信息,包括指示使用哪种类型的逆变换、块大小、量化因子/参数、量化缩放矩阵等的信息。缩放器/逆变换单元(551)可以输出包括样本值的块,所述块可以被输入到聚合器(555)中。
在一些情况下,缩放器/逆变换(551)的输出样本可以从属于经帧内编码的块,即不使用来自先前重构的图片的预测性信息,而是可以使用来自当前图片的先前重构的部分的预测性信息的块。这样的预测性信息可以由帧内图片预测单元(552)提供。在一些情况下,帧内图片预测单元(552)可以使用已经被重构并存储在当前图片缓冲器(558)中的周围块信息来生成大小和形状与正在重构的块相同的块。例如,当前图片缓冲器(558)对部分重构的当前图片和/或完全重构的当前图片进行缓冲。在一些实现方式中,聚合器(555)可以在每个样本的基础上将帧内预测单元(552)已经生成的预测信息添加至由缩放器/逆变换单元(551)提供的输出样本信息。
在其他情况下,缩放器/逆变换单元(551)的输出样本可以从属于经帧间编码的且可能经过运动补偿的块。在这样的情况下,运动补偿预测单元(553)可以访问参考图片存储器(557)以获取用于帧间图片预测的样本。在根据从属于所述块的符号(521)对所获取的样本进行运动补偿之后,可以由聚合器(555)将这些样本添加至缩放器/逆变换单元(551)的输出(单元551的输出可以被称作残差样本或残差信号),以生成输出样本信息。运动补偿预测单元(553)从其获取预测样本的参考图片存储器(557)内的地址可以通过运动矢量控制,所述运动矢量可以以可以具有例如X分量、Y分量(偏移)和参考图片分量(时间)的符号(521)的形式被运动补偿预测单元(553)获得。运动补偿还可以包括在使用子样本精确运动矢量时对从参考图片存储器(557)获取的样本值的插值,并且还可以与运动矢量预测机制等相关联。
聚合器(555)的输出样本可以经受环路滤波器单元(556)中的各种环路滤波技术。视频压缩技术可以包括环路内滤波器技术,环路内滤波器技术由被包括在编码视频序列(也称为编码视频比特流)中并且可以作为来自解析器(520)的符号(521)被环路滤波器单元(556)获得的参数进行控制,但是也可以对在对编码图片或编码视频序列的先前(按解码顺序)部分进行解码期间获得的元信息进行响应,以及对先前重构并经环路滤波的样本值进行响应。如下面将进一步详细描述的,几种类型的环路滤波器可以以各种顺序被包括为环路滤波器单元556的一部分。
环路滤波器单元(556)的输出可以是样本流,该样本流可以被输出至呈现装置(512)并且被存储在参考图片存储器(557)中以用于将来的帧间图片预测。
某些编码图片一旦被完全重构,就可以被用作参考图片以用于将来的帧间图片预测。例如,一旦与当前图片相对应的编码图片被完全重构并且该编码图片(通过例如解析器(520))被标识为参考图片,则当前图片缓冲器(558)就可以成为参考图片存储器(557)的一部分,并且可以在开始重构随后的编码图片之前重新分配新的当前图片缓冲器。
视频解码器(510)可以根据在例如ITU-T H.265建议书的标准中采用的预定视频压缩技术来执行解码操作。在编码视频序列遵循视频压缩技术或标准的语法以及视频压缩技术或标准中记录的配置文件二者的意义上,编码视频序列可以符合由使用的视频压缩技术或标准指定的语法。具体地,配置文件可以从视频压缩技术或标准中可用的所有工具中选择某些工具作为在所述配置文件下可供使用的仅有工具。为了合规性,编码视频序列的复杂性可以在如由视频压缩技术或标准的级别限定的界限内。在一些情况下,级别会限制最大图片大小、最大帧速率、最大重构样本率(以例如每秒兆个样本为单位进行测量)、最大参考图片大小等。在一些情况下,由级别设定的限制可以通过假想参考解码器(Hypothetical Reference Decoder,HRD)规范以及在编码视频序列中用信号通知的用于HRD缓冲器管理的元数据来进一步限制。
在一些示例实施方式中,接收器(531)可以连同编码视频一起接收附加(冗余)数据。附加数据可以被包括为编码视频序列的一部分。视频解码器(510)可以使用附加数据以对数据进行正确解码和/或更精准地对原始视频数据进行重构。附加数据可以为以下形式:例如时间、空间或信噪比(SNR)增强层、冗余切片、冗余图片、前向纠错码等。
图6示出了根据本公开内容的示例实施方式的视频编码器(603)的框图。视频编码器(603)可以被包括在电子装置(620)中。电子装置(620)还可以包括发送器(640)(例如,发送电路***)。可以使用视频编码器(603)代替图4的示例中的视频编码器(403)。
视频编码器(603)可以从可以捕获要由视频编码器(603)编码的视频图像的视频源(601)(在图6的示例中其不是电子装置(620)的一部分)接收视频样本。在另一示例中,视频源(601)可以被实现为电子装置(620)的一部分。
视频源(601)可以提供要由视频编码器(603)编码的呈数字视频样本流形式的源视频序列,数字视频样本流可以具有任何合适的比特深度(例如:8比特、10比特、12比特……)、任何色彩空间(例如,BT.601YCrCB、RGB、XYZ……)以及任何合适的采样结构(例如,YCrCb 4:2:0、YCrCb 4:4:4)。在媒体服务***中,视频源(601)可以是能够存储先前准备好的视频的存储装置。在视频会议***中,视频源(601)可以是捕获本地图像信息作为视频序列的摄像装置。视频数据可以被提供为在顺序观看时被赋予运动的多个单独图片或图像。图片本身可以被组织为空间像素阵列,其中,取决于所用的采样结构、色彩空间等,每个像素可以包括一个或更多个样本。本领域普通技术人员可以容易地理解像素与样本之间的关系。下面的描述集中在样本上。
根据一些示例实施方式,视频编码器(603)可以实时地或在应用所要求的任何其他时间约束下对源视频序列的图片进行编码并将其压缩成编码视频序列(643)。施行适当的编码速度构成控制器(650)的一个功能。在一些实施方式中,控制器(650)可以在功能上耦接至如下文所描述的其他功能单元并且控制其他功能单元。为了简洁起见,没有描绘耦接。由控制器(650)设置的参数可以包括速率控制相关参数(图片跳过、量化器、速率失真优化技术的λ值……)、图片大小、图片组(GOP)布局、最大运动矢量搜索范围等。控制器(650)可以被配置成具有其他合适的功能,所述其他合适的功能涉及针对特定***设计优化的视频编码器(603)。
在一些示例实施方式中,视频编码器(603)可以被配置成在编码环路中操作。作为极度简化的描述,在示例中,编码环路可以包括:源编码器(630)(例如,负责基于要编码的输入图片和参考图片来创建符号,例如符号流);以及(本地)解码器(633),其被嵌入在视频编码器(603)中。解码器(633)以与(远程)解码器将创建样本数据的方式相似的方式重构符号,以创建样本数据,即使嵌入式解码器633是在没有熵编码的情况下处理源编码器630的编码视频流(因为在所公开的主题中考虑的视频压缩技术中,符号与熵编码中的编码视频比特流之间的任何压缩可能是无损的)。重构的样本流(样本数据)被输入至参考图片存储器(634)。由于符号流的解码导致与解码器位置(本地或远程)无关的比特精确(bit-exact)结果,因此参考图片存储器(634)中的内容在本地编码器与远程编码器之间也是比特精确的。换言之,编码器的预测部分将与解码器在解码期间使用预测时将“看到”的样本值完全相同的样本值“视为”参考图片样本。参考图片同步性的这种基本原理(以及在例如因信道误差而无法维持同步性的情况下产生偏移)被用于提高编码质量。
“本地”解码器(633)的操作可以与“远程”解码器例如视频解码器(510)的操作相同,在上面已经结合图5对视频解码器(510)进行了详细描述。然而,另外简要地参照图5,由于符号可用并且由熵编码器(645)将符号编码成编码视频序列以及由解析器(520)对符号进行解码可以是无损的,因此视频解码器(510)的包括缓冲存储器(515)和解析器(520)的熵解码部分可以不在编码器中的本地解码器(633)中完全实现。
此时可以观察到,除可以仅存在于解码器中的解析/熵解码之外的任何解码器技术,也必定需要以基本上相同的功能形式存在于对应的编码器中。由于这个原因,所公开的主题可能有时集中在解码器操作上,解码器操作与编码器的解码部分关联。由于编码器技术与已全面描述的解码器技术相反,因此可以简化对编码器技术的描述。下面提供仅在某些区域或方面对编码器的更详细的描述。
在一些示例实现方式中,在操作期间,源编码器(630)可以执行运动补偿预测编码,所述运动补偿预测编码参考来自视频序列的被指定为“参考图片”的一个或更多个先前编码的图片对输入图片进行预测性编码。以这种方式,编码引擎(632)对输入图片的像素块与参考图片的像素块之间的颜色信道的差(或残值)进行编码,所述参考图片可以被选作该输入图片的预测参考。
本地视频解码器(633)可以基于由源编码器(630)创建的符号,对可以被指定为参考图片的图片的编码视频数据进行解码。编码引擎(632)的操作可以有利地为有损过程。当可以在视频解码器(图6中未示出)处对编码视频数据进行解码时,重构的视频序列通常可以是源视频序列的其中具有一些错误的副本。本地视频解码器(633)复制可以由视频解码器对参考图片执行的解码处理,并且可以使重构的参考图片存储在参考图片缓存(634)中。以这种方式,视频编码器(603)可以在本地存储重构的参考图片的副本,所述副本与将通过远端(远程)视频解码器获得的重构的参考图片具有共同内容(不存在传输误差)。
预测器(635)可以针对编码引擎(632)执行预测搜索。也就是说,对于要编码的新图片,预测器(635)可以在参考图片存储器(634)中搜索样本数据(作为候选参考像素块)或特定元数据例如参考图片运动矢量、块形状等,这些数据可以用作针对新图片的合适的预测参考。预测器(635)可以在逐样本块-像素块的基础上操作以找到合适的预测参考。在一些情况下,如通过预测器(635)获得的搜索结果所确定的,输入图片可以具有从存储在参考图片存储器(634)中的多个参考图片获取的预测参考。
控制器(650)可以管理源编码器(630)的编码操作,包括例如对用于对视频数据进行编码的参数和子组参数的设置。
可以在熵编码器(645)中对所有上述功能单元的输出进行熵编码。熵编码器(645)通过根据诸如霍夫曼编码、可变长度编码、算术编码等的技术对由各种功能单元生成的符号进行无损压缩来将这些符号转换成编码视频序列。
发送器(640)可以缓冲由熵编码器(645)创建的编码视频序列,从而为经由通信信道(660)进行传输做准备,该通信信道可以是至可以存储编码视频数据的存储装置的硬件/软件链路。发送器(640)可以将来自视频编码器(603)的编码视频数据与要发送的其他数据例如编码音频数据和/或辅助数据流(未示出来源)合并。
控制器(650)可以管理视频编码器(603)的操作。在编码期间,控制器(650)可以为每个编码图片分配特定的编码图片类型,这可能影响可以应用于相应图片的编码技术。例如,通常可以向图片分配以下图片类型之一:
帧内图片(I图片),其可以是可以在不将序列中的任何其他图片用作预测源的情况下被编码和解码的图片。一些视频编解码器允许不同类型的帧内图片,包括例如独立解码器刷新(“Independent Decoder Refresh,IDR”)图片。本领域普通技术人员了解I图片的那些变型及其各自的应用和特征。
预测性图片(P图片),其可以是可以使用帧内预测或帧间预测进行编码和解码的图片,所述帧间预测使用至多一个运动矢量和参考索引来预测每个块的样本值。
双向预测性图片(B图片),其可以是可以使用帧内预测或帧间预测进行编码和解码的图片,所述帧间预测使用至多两个运动矢量和参考索引来预测每个块的样本值。类似地,多个预测性图片可以使用多于两个参考图片和相关联的元数据用于单个块的重构。
源图片通常可以在空间上细分为多个样本编码块(例如,分别具有4×4、8×8、4×8或16×16个样本的块)并且逐块进行编码。可以参考通过应用于块的相应的图片的编码分配确定的其他(已经编码的)块对这些块进行预测性地编码。例如,可以对I图片的块进行非预测性地编码,或者可以参考相同图片的已编码块对I图片的块进行预测性地编码(空间预测或帧内预测)。可以参考一个先前编码的参考图片经由空间预测或经由时间预测对P图片的像素块进行预测性地编码。可以参考一个或两个先前编码的参考图片经由空间预测或经由时间预测对B图片的块进行预测性地编码。出于其他目的,源图片或中间处理过的图片可以被细分成其他类型的块。编码块和其他类型的块的划分可以遵循或可以不遵循相同的方式,如下面进一步详细描述的。
视频编码器(603)可以根据诸如ITU-T H.265建议书的预定视频编码技术或标准来执行编码操作。在其操作中,视频编码器(603)可以执行各种压缩操作,包括利用输入视频序列中的时间冗余和空间冗余的预测性编码操作。因此,编码视频数据可以符合由正在使用的视频编码技术或标准指定的语法。
在一些示例实施方式中,发送器(640)可以连同编码视频一起发送附加数据。源编码器(630)可以将这样的数据包括为编码视频序列的一部分。附加数据可以包括时间/空间/SNR增强层、其他形式的冗余数据,例如冗余图片和切片、SEI消息、VUI参数集片段等。
视频可以被按时间序列捕获为多个源图片(视频图片)。帧内图片预测(通常简化为帧内预测)利用给定图片中的空间相关性,而帧间图片预测利用图片之间的时间相关性或其他相关性。例如,可以将被称为当前图片的正在被编码/解码的特定图片分成块。在当前图片中的块与视频中先前编码且仍被缓冲的参考图片中的参考块类似时,可以通过被称作运动矢量的矢量对当前图片中的块进行编码。运动矢量指向参考图片中的参考块,并且在使用多个参考图片的情况下,该运动矢量可以具有标识参考图片的第三维度。
在一些示例实施方式中,双向预测技术可以用于帧间图片预测。根据这样的双向预测技术,使用两个参考图片,例如按解码顺序均在视频中的当前图片之前(但按显示顺序可能分别在过去和将来)的第一参考图片和第二参考图片。可以通过指向第一参考图片中的第一参考块的第一运动矢量以及指向第二参考图片中的第二参考块的第二运动矢量对当前图片中的块进行编码。可以通过第一参考块和第二参考块的组合来共同预测所述块。
此外,可以在帧间图片预测中使用合并模式技术以提高编码效率。
根据本公开内容的一些示例实施方式,以块为单位执行诸如帧间图片预测和帧内图片预测的预测。例如,将视频图片序列中的图片分割成编码树单元(CTU)以用于压缩,图片中的CTU可以具有相同大小,例如,64×64像素、32×32像素或16×16像素。通常,CTU可以包括三个并行编码树块(coding tree block,CTB):一个亮度CTB和两个色度CTB。可以将每个CTU递归地以四叉树拆分为一个或多个编码单元(coding unit,CU)。例如,可以将64×64像素的CTU拆分成一个64×64像素的CU,或4个32×32像素的CU。32×32块中的一个或更多个中的每一个还可以被拆分成4个16×16像素的CU。在一些示例实施方式中,可以在编码期间分析每个CU,以确定各种预测类型中该CU的预测类型,例如帧间预测类型或帧内预测类型。取决于时间和/或空间可预测性,可以将CU拆分成一个或更多个预测单元(predictionunit,PU)。通常,每个PU包括亮度预测块(PB)和两个色度预测块。在实施方式中,以预测块为单位执行编码(编码/解码)中的预测操作。可以以各种空间模式执行将CU拆分成PU(或不同颜色信道的PB)。亮度或色度PB例如可以包含例如8×8像素、16×16像素、8×16像素、16×8像素等的样本的值(例如,亮度值)的矩阵。
图7示出了根据本公开内容的另一示例实施方式的视频编码器(703)的图。视频编码器(703)被配置成接收视频图片序列中的当前视频图片内的样本值的处理块(例如,预测块),并且将该处理块编码到作为编码视频序列的一部分的编码图片中。可以使用示例视频编码器(703)代替图4示例中的视频编码器(403)。
例如,视频编码器(703)接收用于处理块诸如8×8样本的预测块等的样本值的矩阵。视频编码器(703)然后使用例如速率失真优化(RDO)来确定是使用帧内模式、帧间模式还是双向预测模式来对处理块进行最佳编码。当确定要在帧内模式下对处理块进行编码时,视频编码器(703)可以使用帧内预测技术将处理块编码到编码图片中;以及当确定要在帧间模式或双向预测模式下对处理块进行编码时,视频编码器(703)可以分别使用帧间预测技术或双向预测技术将处理块编码到编码图片中。在一些示例实施方式中,可以使用合并模式作为帧间图片预测的子模式,其中,在不借助于预测值外部的编码运动矢量分量的情况下从一个或更多个运动矢量预测值得出运动矢量。在一些其他示例实施方式中,可以存在适用于对象块的运动矢量分量。因此,视频编码器(703)可以包括图7中未明确示出的部件,诸如用于确定处理块的预测模式的模式决策模块。
在图7的示例中,视频编码器(703)包括如图7的示例布置中所示的耦接在一起的帧间编码器(730)、帧内编码器(722)、残差计算器(723)、开关(726)、残差编码器(724)、通用控制器(721)和熵编码器(725)。
帧间编码器(730)被配置成:接收当前块(例如,处理块)的样本;将所述块与参考图片中的一个或更多个参考块(例如,按显示顺序的先前图片中的块和随后图片中的块)进行比较;生成帧间预测信息(例如,运动矢量、合并模式信息、根据帧间编码技术的冗余信息的描述);以及基于帧间预测信息使用任何合适的技术来计算帧间预测结果(例如,所预测的块)。在一些示例中,参考图片是基于编码视频信息使用嵌入在图6的示例编码器620中的解码单元633(被示出为图7的残差解码器728,如下面进一步详细描述的)来解码的解码参考图片。
帧内编码器(722)被配置成:接收当前块(例如,处理块)的样本;将所述块与同一图片中的已经编码的块进行比较;以及在变换之后生成量化系数;以及在一些情况下还生成帧内预测信息(例如,根据一个或更多个帧内编码技术的帧内预测方向信息)。帧内编码器(722)可以基于帧内预测信息和同一图片中的参考块来计算帧内预测结果(例如,所预测的块)。
通用控制器(721)可以被配置成确定通用控制数据,并且基于通用控制数据来控制视频编码器(703)的其他部件。在示例中,通用控制器(721)确定块的预测模式,并基于预测模式向开关(726)提供控制信号。例如,在预测模式是帧内模式的情况下,通用控制器(721)控制开关(726)选择帧内模式结果以供残差计算器(723)使用,并且控制熵编码器(725)选择帧内预测信息并将该帧内预测信息包括在比特流中;以及在块的预测模式是帧间模式的情况下,通用控制器(721)控制开关(726)选择帧间预测结果以供残差计算器(723)使用,并且控制熵编码器(725)选择帧间预测信息并将该帧间预测信息包括在比特流中。
残差计算器(723)可以被配置成计算所接收的块与选自帧内编码器(722)或帧间编码器(730)的块的预测结果之间的差(残差数据)。残差编码器(724)可以被配置成对残差数据进行编码以生成变换系数。例如,残差编码器(724)可以被配置成将残差数据从空间域转换到频域以生成变换系数。然后,对变换系数进行量化处理以获得经量化的变换系数。在各种示例实施方式中,视频编码器(703)还包括残差解码器(728)。残差解码器(728)被配置成执行逆变换并生成解码残差数据。解码残差数据可以被帧内编码器(722)和帧间编码器(730)适当地使用。例如,帧间编码器(730)可以基于解码残差数据和帧间预测信息生成解码块,并且帧内编码器(722)可以基于解码残差数据和帧内预测信息生成解码块。适当地处理解码块以生成解码图片,并且这些解码图片可以在存储器电路(未示出)中缓冲并用作参考图片。
熵编码器(725)可以被配置成将比特流格式化以包括编码块并执行熵编码。熵编码器(725)被配置成将各种信息包括在比特流中。例如,熵编码器(725)可以被配置成将通用控制数据、所选择的预测信息(例如,帧内预测信息或帧间预测信息)、残差信息以及其他合适的信息包括在比特流中。当在帧间模式或双向预测模式的合并子模式下对块进行编码时,可能不存在残差信息。
图8示出了根据本公开内容的另一实施方式的示例视频解码器(810)的图。视频解码器(810)被配置成接收作为编码视频序列的一部分的编码图片,并且对编码图片进行解码以生成重构的图片。在示例中,可以使用视频解码器(810)代替图4的示例中的视频解码器(410)。
在图8的示例中,视频解码器(810)包括如图8的示例布置中所示的耦接在一起的熵解码器(871)、帧间解码器(880)、残差解码器(873)、重构模块(874)和帧内解码器(872)。
熵解码器(871)可以被配置成根据编码图片重构某些符号,这些符号表示构成该编码图片的语法元素。这样的符号可以包括:例如对块进行编码的模式(例如,帧内模式、帧间模式、双向预测模式、合并子模式或者另一子模式)、可以标识某些样本或者由帧内解码器(872)或帧间解码器(880)使用以进行预测的元数据的预测信息(例如,帧内预测信息或帧间预测信息)、呈例如经量化的变换系数的形式的残差信息等。在示例中,当预测模式是帧间模式或双向预测模式时,帧间预测信息被提供给帧间解码器(880);以及当预测类型是帧内预测类型时,帧内预测信息被提供给帧内解码器(872)。残差信息可以经过逆量化并且被提供给残差解码器(873)。
帧间解码器(880)可以被配置成接收帧间预测信息,并基于帧间预测信息生成帧间预测结果。
帧内解码器(872)可以被配置成接收帧内预测信息,并基于帧内预测信息生成预测结果。
残差解码器(873)可以被配置成执行逆量化以提取去量化的变换系数,并且处理该去量化的变换系数以将残差从频域转换到空间域。残差解码器(873)还可以利用某些控制信息(以包括量化器参数(Quantizer Parameter,QP)),所述某些控制信息可以由熵解码器(871)提供(由于这可能仅是低数据量控制信息,因此未描绘数据路径)。
重构模块(874)可以被配置成在空间域中将由残差解码器(873)输出的残差与预测结果(视情况而定,由帧间预测模块或帧内预测模块输出)进行组合以形成重构的块,所述重构的块形成重构的图片的一部分,所述重构的图片是重构的视频的一部分。应当注意,也可以执行其他合适的操作例如去块操作等来改善视觉质量。
应当注意,可以使用任何合适的技术来实现视频编码器(403)、(603)和(703)以及视频解码器(410)、(510)和(810)。在一些示例实施方式中,可以使用一个或更多个集成电路来实现视频编码器(403)、(603)和(703)以及视频解码器(410)、(510)和(810)。在另一实施方式中,可以使用执行软件指令的一个或更多个处理器来实现视频编码器(403)、(603)和(603)以及视频解码器(410)、(510)和(810)。
返回到帧内预测处理,在所述帧内预测处理中,块(例如,亮度或色度预测块、或者如果不进一步分割成预测块,则为编码块)中的样本由相邻行、下一相邻行、或其他行或多行的样本或其组合来预测,以生成预测块。然后可以通过变换接着量化来处理被编码的实际块与预测块之间的残差。可以使各种帧内预测模式可用,并且可以在比特流中用信号通知与帧内模式选择相关的参数和其他参数。例如,各种帧内预测模式可以与用于预测样本的行位置或多个行位置、沿着其从预测行或多个预测行中选择预测样本的方向以及其他特殊的帧内预测模式相关。
例如,帧内预测模式(可互换地称为“帧内模式”)的集合可以包括预定义数量的方向性帧内预测模式。如上面关于图1的示例实现方式所描述的,这些帧内预测模式可以对应于预定义数量的方向,沿着这些方向选择块外样本作为对特定块中正被预测的样本的预测。在另一特定示例实现方式中,可以支持并预定义与水平轴成45度至207度的角度相对应的八(8)个主方向性模式。
在帧内预测的一些其他实现方式中,为了进一步利用方向性纹理中的更多种类的空间冗余,可以将方向性帧内模式进一步扩展到具有更精细粒度的角度集合。例如,如图9所示,上述8角度实现方式可以被配置成提供八个标称角度,称为V_PRED、H_PRED、D45_PRED、D135_PRED、D113_PRED、D157_PRED、D203_PRED和D67_PRED,并且对于每个标称角度,可以添加预定义数量(例如,7)的更精细角度。通过这样的扩展,与相同数量的预定义方向性帧内模式相对应,更大的总数量(例如,在该示例中为56)的方向性角度可用于帧内预测。预测角度可以由标称帧内角度加上角度δ来表示。对于每个标称角度具有7个更精细的角度方向的上述特定示例,角度δ可以是-3~3乘以3度的步长。
上述方向性帧内预测也可以称为单向帧内预测,其与本公开内容的稍后部分中描述的双向帧内预测(也称为帧内双向预测)不同。
在一些实现方式中,替代上述方向性帧内模式或除上述方向性帧内模式之外,还可以对预定义数量的非方向性帧内预测模式进行预定义并使预定义数量的非方向性帧内预测模式可用。例如,可以指定被称为平滑帧内预测模式的5个非方向性帧内模式。这些非方向性帧内模式预测模式可以具体称为DC帧内模式、PAETH帧内模式、SMOOTH帧内模式、SMOOTH_V帧内模式和SMOOTH_H帧内模式。图10中示出了在这些示例非方向性模式下对特定块的样本的预测。作为示例,图10示出了由来自顶部相邻行和/或左侧相邻行的样本预测的4×4块1002。块1002中的特定样本1010可以对应于块1002的顶部相邻行中的样本1010的正顶部样本1004、作为顶部相邻行和左侧相邻行的交叉点的样本1010的左上方样本1006、以及块1002的左侧相邻行中的样本1010的正左侧样本1008。对于示例DC帧内预测模式,左侧相邻样本1008和上方相邻样本1004的平均值可以用作样本1010的预测值。对于示例PAETH帧内预测模式,可以获取顶部参考样本1004、左侧参考样本1008和左上方参考样本1006,然后可以将这三个参考样本中最接近(顶部+左侧–左上方)的任何值设置为样本1010的预测值。对于示例SMOOTH_V帧内预测模式,可以通过在左上方相邻样本1006和左侧相邻样本1008的垂直方向上的二次插值来预测样本1010。对于示例SMOOTH_H帧内预测模式,可以通过在左上方相邻样本1006和顶部相邻样本1004的水平方向上的二次插值来预测样本1010。对于示例SMOOTH帧内预测模式,可以通过在垂直方向和水平方向上的二次插值的平均值来预测样本1010。上述非方向性帧内模式实现方式仅作为非限制性示例示出。还可考虑其他相邻行和样本的其他非方向性选择、以及组合预测样本以对预测块中的特定样本进行预测的方式。
可以在比特流中用信号通知编码器在各种编码级别(图片、切片、块、单元等)处从上述方向性模式或非方向性模式中对特定帧内预测模式的选择。在一些示例实现方式中,可以首先用信号通知示例性8个标称方向性模式以及5个非角度平滑模式(总共13个选项)。然后,如果用信号通知的模式是8个标称角度帧内模式之一,则进一步用信号通知索引以将所选择的角度δ指示给对应的用信号通知的标称角度。在一些其他示例实现方式中,所有帧内预测模式可以一起被索引(例如,56个方向性模式加上5个非方向性模式以产生61个帧内预测模式)以便用信号通知。
在一些示例实现方式中,示例56或其他数量的方向性帧内预测模式可以使用统一的方向性预测器来实现,所述统一的方向性预测器将块的每个样本投影到参考子样本位置并通过2抽头双线性滤波器对参考样本进行插值。
在一些实现方式中,为了捕获与边缘的参考的衰减空间相关性,可以设计被称为FILTER INTRA(滤波器帧内)模式的附加滤波器模式。对于这些模式,除块外样本之外的块内的预测样本可以用作块内的一些小块的帧内预测参考样本。例如,可以预定义这些模式并使其可用于至少亮度块(或仅亮度块)的帧内预测。可以预先设计预定义数量(例如,五个)的滤波器帧内模式,每个滤波器帧内模式由n抽头滤波器(例如,7抽头滤波器)的集合表示,反映例如4×2小块中的样本和与其相邻的n个邻居之间的相关性。换言之,n抽头滤波器的权重因子可以是位置相关的。以8×8块、4×2小块和7抽头滤波为例,如图11所示,8×8块1102可以被分割成8个4×2小块。这些小块在图11中由B0、B1、B1、B3、B4、B5、B6和B7指示。对于每个小块,图11中由R0~R7指示的其7个邻居可以被用来预测当前小块中的样本。对于小块B0,所有邻居可能已经被重构。但是对于其他小块,一些邻居在当前块中,因此可能没有被重构,然后紧相邻邻居的预测值被用作参考。例如,如图11中所示的小块B7的所有邻居没有被重构,因此替代地使用邻居的预测样本例如B4、B5和/或B6的一部分。
在帧内预测的一些实现方式中,可以使用一个或更多个其他颜色分量来预测一个颜色分量。颜色分量可以是YCrCb、RGB、XYZ颜色空间等中的任何一个分量。例如,可以实现由亮度分量(例如,亮度参考样本)得到色度分量(例如,色度块)的预测,被称为由亮度得到色度或CfL。在一些示例实现方式中,仅允许从亮度到色度进行许多交叉颜色预测。例如,可以将色度块中的色度样本建模为相符的重构亮度样本的线性函数。
CfL预测可以如下实现:
CfL(α)=α×LAC+DC (1)
其中,LAC表示亮度分量的AC贡献,α表示线性模型的参数,以及DC表示色度分量的DC贡献。例如,对于块的每个样本,获得AC分量,而对于整个块获得DC分量。具体而言,可以将重构的亮度样本二次采样至色度分辨率中,然后可以从每个亮度值中减去平均亮度值(亮度的DC)以形成亮度中的AC贡献。然后在等式(1)的线性模型中使用亮度的AC贡献来预测色度分量的AC值。为了从亮度AC贡献近似或预测色度AC分量,代替要求解码器计算缩放参数,示例CfL实现方式可以基于原始色度样本确定参数α并在比特流中用信号通知它们。这降低了解码器的复杂性并产生更精确的预测。至于色度分量的DC贡献,在一些示例实现方式中,可以使用色度分量内的帧内DC模式来计算它。
返回到帧内预测,在一些示例实现方式中,编码块或预测块中的样本的预测可以基于一组参考行中的一者。换言之,不是总是使用最近的相邻行(例如,如上面图1中所示的预测块的紧邻顶部相邻行或紧邻左侧相邻行),而是可以提供多条参考行作为用于对帧内预测的选择的选项。这样的帧内预测实现方式可以称为多参考行选择(MultipleReference Line Selection,MRLS)。在这些实现方式中,编码器决定并用信号通知使用多条参考行中的哪条参考行来生成帧内预测值。在解码器侧,在解析参考行索引之后,可以借助于通过根据帧内预测模式(例如,方向性模式、非方向性模式和其他帧内预测模式)查找指定的参考行来标识重构的参考样本来生成当前帧内预测块的帧内预测。在一些实现方式中,可以在编码块级别中用信号通知参考行索引,并且可以选择多条参考行中的仅一条并将其用于一个编码块的帧内预测。在一些示例中,可以一起选择多于一条参考行用于帧内预测。例如,多于一条参考行可以被组合、平均、插值或以任何其他方式、具有或不具有权重来生成预测。在一些示例实现方式中,MRLS可以仅应用于亮度分量,而不应用于色度分量。
在图12中,描绘了4条参考行MRLS的示例。如图12的示例所示,可以基于4条水平参考行1204、1206、1208和1210以及4条垂直参考行1212、1214、1216和1218中的一条来预测帧内编码块1202。在这些参考行中,1210和1218是紧相邻的参考行。可以根据参考行与编码块的距离来索引参考行。例如,参考行1210和1218可以称为零参考行,而其他参考行可以称为非零参考行。具体地,参考行1208和1216可以作为第一参行被参考;参考行1206和1214可以作为第二参考行被参考;以及参考行1204和1212可以作为第三参考行被参考。
在一些实施方式中,对于经帧内编码的特定编码块、编码单元、预测块或预测单元,其帧内模式需要在比特流中由一个或或更多个语法元素用信号通知。如上所述,可能的帧内预测模式的数量可能是巨大的,并且可能存在62种可用的帧内预测模式:56种方向性帧内预测模式、5种非方向性模式和一种由亮度得到色度模式(例如,仅用于色度分量)。为了用信号通知这些帧内预测模式,可以用信号通知第一语法以指示哪个标称角度或非方向性模式等于当前块的标称模式。然后,如果当前块的模式是方向性模式,则可以用信号通知第二语法以指示哪个δ角度等于当前块的δ角度。在视频编码和/或解码期间的一些情况下,当前块的帧内预测模式与其相邻块之间可能存在强相关性。
在各种实施方式中,可以利用这种相关性来设计用于帧内模式编码的更有效语法。在一些实现方式中,当前块的可用帧内预测模式可以根据其相邻块的帧内预测模式被分割成多个帧内预测模式集合。为了得到当前块的帧内预测模式,首先,可以用信号通知模式集合索引以指示当前块的帧内预测模式的模式集合索引;其次,可以用信号通知模式索引以指示模式集合内的帧内预测模式的索引。
在此,在本公开内容的各种实施方式中,“用信号通知XYZ”可以指在编码过程期间将XYZ编码成编码比特流;以及/或者,在将编码比特流从一个装置发送至另一装置之后,“用信号通知XYZ”可以指在解码过程期间从编码比特流解码/提取XYZ。
例如,在上述的一些实现方式中,多个可用帧内预测模式可以包括62个不同的模式,包括例如56个方向性帧内预测模式(例如,8个标称方向,在每个标称方向上具有7个精细角度)、5个非方向性模式、以及一个由亮度得到色度模式(仅用于色度分量)。一旦在编码过程期间为特定编码块、编码单元、预测块或预测选择帧内模式,则需要在比特流中包括与所选择的帧内模式相对应的信令。信令语法必须能够以某种方式区分所有这62种模式。例如,可以使用62个索引的单个语法来用信号通知这62种模式,每个索引对应于一个模式。在一些其他示例实现方式中,可以用信号通知一种语法以指示哪个标称角度或非方向性模式被用作当前块中的标称模式,然后,如果当前块的标称模式是方向性模式,则可以另外用信号通知另一种语法,以指示为当前块选择哪个δ角度。
由于与帧内编码相关的各种语法通常占据比特流的很大一部分,并且帧内模式选择必须非常频繁例如在各种编码级别处进行,因此减少用于帧内模式信令的比特数对于提高视频编码效率至关重要。实际上,各种帧内预测模式的使用可以遵循某些统计模式,并且这样的使用模式可以用来设计帧内模式的索引和信令语法,从而可以提高信令效率。此外,平均而言,在块到块的帧内模式选择之间可能存在一些相关性。这样的相关性可以在统计基础上离线获得,并在用于帧内模式选择的信令的语法设计中考虑。目标是平均地减少编码比特流中信令语法元素的比特数。例如,一些一般统计可以指示当前块的最佳帧内预测模式与其相邻块之间可能存在强相关性。当设计帧内模式编码的语法时,可以利用这样的相关性。
在一些实施方式中,为了提高视频编码/解码性能,可以在生成帧内预测样本之后使用基于偏移的帧内预测细化(offset-based refinement for intra prediction,ORIP)。当应用ORIP时,通过添加偏移值来细化预测样本。
如图13所示,基于参考样本执行帧内预测(1330)。参考样本可以包括来自一条或更多条左侧参考行(1312)和/或一条或更多条顶部参考行(1310)的样本。基于偏移的帧内预测细化(ORIP)(1350)可以使用相邻参考样本生成偏移值。在一些实现方式中,ORIP的相邻参考样本可以与帧内预测的参考样本是相同的集合。在一些其他实现方式中,ORIP的相邻参考样本可以与帧内预测的参考样本是不同的集合。
在参照图14A和图14B的一些实现方式中,可以在4×4子块级别中执行ORIP。对于每个4×4子块(1471、1472、1473和/或1474),从其相邻样本生成偏移。例如,对于第一子块(1471),从其顶部相邻样本(1420中的P1、P2、P3和P4)、左侧相邻样本(1410中的P5、P6、P7和P8)和/或左上方相邻样本(P0)(1401)生成偏移。在一些实现方式中,顶部相邻样本可以包括顶部相邻样本(1420中的P1、P2、P3和P4)和左上方相邻样本(P0)(1401)两者。在一些其他实现方式中,左侧相邻样本可以包括左侧相邻样本(1410中的P5、P6、P7和P8)和左上方相邻样本(P0)(1401)两者。
第一子块(1471)包括4×4个像素,并且4×4像素中的每个像素对应于predN,predN是细化之前的第N个相邻预测样本。例如,pred0、pred1、pred2、…pred16。
在各种实施方式中,可以根据公式基于相邻样本来计算给定子块的每个像素的偏移值。公式可以是预定义的公式,或者是由编码比特流中编码
的参数指示的公式。
在参照图14B的一些实现方式中,给定子块的第k个位置的偏移值(offset(k))可以如下生成:
pred_refinedk=clip3(predk+offset(k)) (3)
Wkn是用于偏移计算的预定义权重。Pn是相邻样本的值(例如,P0、P1、P2、…、P8)。predk是在应用帧内预测或其他预测(例如,帧间预测)之后的像素的预测值。pred_refinedk是应用ORIP之后像素的细化值。clip3()是clip3数学函数。n是从0至8且包括0和8的整数。k是从0至15且包括0和15的整数。
在一些实现方式中,Wkn可以是预定义的并且可以根据表1获得。
表1:用于偏移计算的预定义权重
k | Wk0 | Wk1 | Wk2 | Wk3 | Wk4 | Wk5 | Wk6 | Wk7 | Wk8 |
0 | 4 | 16 | 4 | 0 | 0 | 16 | 4 | 0 | 0 |
1 | 2 | 4 | 16 | 4 | 0 | 8 | 2 | 0 | 0 |
2 | 1 | 0 | 4 | 16 | 4 | 4 | 1 | 0 | 0 |
3 | 0 | 0 | 2 | 4 | 16 | 2 | 0 | 0 | 0 |
4 | 2 | 8 | 2 | 0 | 0 | 4 | 16 | 4 | 0 |
5 | 0 | 2 | 8 | 2 | 0 | 2 | 8 | 2 | 0 |
6 | 0 | 0 | 2 | 8 | 2 | 1 | 4 | 1 | 0 |
7 | 0 | 0 | 0 | 2 | 8 | 1 | 2 | 0 | 0 |
8 | 0 | 4 | 0 | 0 | 0 | 0 | 4 | 1 6 | 4 |
9 | 0 | 0 | 4 | 0 | 0 | 0 | 2 | 8 | 2 |
10 | 0 | 0 | 1 | 4 | 1 | 0 | 1 | 4 | 1 |
11 | 0 | 0 | 0 | 2 | 4 | 0 | 0 | 4 | 0 |
12 | 0 | 0 | 1 | 0 | 0 | 0 | 2 | 4 | 16 |
13 | 0 | 0 | 0 | 1 | 0 | 0 | 1 | 2 | 8 |
14 | 0 | 0 | 1 | 2 | 1 | 0 | 0 | 1 | 4 |
15 | 0 | 0 | 0 | 1 | 2 | 0 | 0 | 1 | 2 |
在一些其他实现方式中,基于子块的ORIP可以仅应用于帧内预测模式的预定义集合,以及/或者可以根据帧内预测模式而不同地用于亮度和色度。表2示出了根据各种帧内预测模式和亮度或色度信道的基于子块的ORIP的一种实现方式。以亮度信道为例:当预测模式为DC或SMOOTH时,ORIP总是ON并且不需要额外的信令;当预测模式是HOR/VER并且angle_delta等于0时,需要块级信令来启用/禁用ORIP;以及/或者当帧
内预测模式是其他模式时,ORIP总是OFF并且不需要额外的信令。
表2:所提出的方法的模式相关ON/OFF
返回参考第二4×4子块(1473),由于其与第一4×4子块(1471)的相对位置,第二子块的顶部相邻样本可以是第一子块的一些像素:第二子块的P1可以是第一块的pred12,第二子块的P2可以是第一子块的pred13,第二子块的P3可以是第一子块的pred14,以及第二子块的P4可以是第一子块的pred15。第二子块的左上方相邻样本(P0)可以是第一子块的左侧相邻样本(P8)。
在各种实施方式中,正被编码的当前块的可用帧内预测模式或模式选项可以被分割成多个帧内预测模式集合。每个集合可以被分配模式集合索引。每个集合可以包含多个帧内模式预测模式。可以基于块之间的帧内预测模式之间的相关性,至少部分地根据其相邻块所使用的帧内预测模式来确定分割和排序可用帧内预测模式以及在模式集合中的每一个中排序帧内预测模式的方式。相邻块所使用的帧内预测模式可以称为“参考帧内预测模式”或“参考模式”。可以确定并选择特定单元的帧内预测模式。可以用信号通知对帧内预测模式的选择。首先,可以用信号通知模式集合索引以指示包含所选择的帧内预测模式的帧内预测模式集合的模式集合索引。其次,可以用信号通知模式索引(可替选地称为集合内的模式位置索引)以指示模式集合内所选择的帧内预测模式的索引。
以上帧内预测模式划分和排序的一般实现方式以及以下特定示例利用统计效果和相邻相关性来动态地索引这些模式,使得可以优化用于在编码视频比特流中用信号通知它们的选择的语法的设计,以提高编码效率。例如,这些实现方式可以帮助减少用于信令的语法的数量,并且帮助更有效地生成用于熵编码的上下文。
本公开内容中描述的各种实施方式和/或实现方式可以单独使用或以任何顺序组合使用。此外,这些实施方式和/或实现方式的一部分、全部或任何部分或全部组合可以实现为编码器和/或解码器的一部分,并且可以用硬件和/或软件来实现。例如,它们可以被硬编码在专用处理电路***(例如,一个或更多个集成电路)中。在另一示例中,它们可以由执行非暂态计算机可读介质中存储的程序的一个或更多个处理器来实现。
可能存在与帧内模式编码相关联的一些问题/难题。例如,对于帧内模式编码的硬件实现方式,特别是对于小块的帧内模式列表的构造过程,可能非常具有挑战性。
本公开内容描述视频编码和/或解码中的帧内预测模式编码的各种实施方式,其解决上面所论述的问题/难题中的至少一者,实现用于改进的帧内模式编码的有效软件/硬件实现方式。在一些实施方式中,可以根据预定义规则来实现用于小块的帧内预测模式的信令和/或编码,以便简化用于有效软件/硬件实现方式的语法。
在各种实施方式中,参照图15,一种用于视频解码中的帧内预测模式编码的方法1500,该方法1500可以包括以下步骤的一部分或全部:步骤1510,由包括存储指令的存储器和与存储器通信的处理器的装置接收编码视频比特流;步骤1520,由装置基于块的大小根据预定义规则为编码视频比特流中的块构造帧内模式列表;步骤1530,由装置将帧内模式列表划分为块的多个帧内模式集合;步骤1540,由装置从编码视频比特流中提取指示多个帧内模式集合中的帧内模式集合的集合索引;步骤1550,由装置从编码视频比特流中提取指示帧内模式集合中的帧内预测模式的模式索引;步骤1560,由装置基于集合索引和模式索引确定块的帧内预测模式;以及/或者步骤1570,由装置基于帧内预测模式对编码视频比特流进行解码。
在本公开内容的各种实施方式中,块(例如但不限于编码块、预测块或变换块)的大小可以指块的宽度或高度。块的宽度或高度可以是以像素为单位的整数。在本公开内容的各种实施方式中,块的大小可以指块的面积大小。块的面积大小可以是通过块的宽度乘以块的高度以像素为单位计算的整数。在本公开内容的一些不同实施方式中,块的大小可以指块的宽度或高度的最大值、块的宽度或高度的最小值、或者块的纵横比。块的纵横比可以计算为块的宽度除以高度,或者可以计算为块的高度除以宽度。
在一些实现方式中,帧内模式的模式类型可以包括以下中的至少一者:方向性模式、非方向性模式、平滑模式(例如,smooth、smooth_v、smooth_h)、DC模式、PAETH模式和/或根据给定预测方向生成预测样本的模式。在一些其他实现方式中,在松散的分类中,方向性模式可以广泛地包括:不是平滑(smooth、smooth_v、smooth_h)的任何模式、DC或PAETH模式;以及根据给定预测方向生成预测样本的任何模式。在一些其他实现方式中,非方向性模式可以包括平滑模式(例如,smooth、smooth_v、smooth_h)、DC模式、PAETH模式和亮度对色度(luma-for-chroma)模式。在一些其他实现方式中,在松散的分类中,非方向性模式可以广泛地包括不是方向性模式的任何模式。
在一些实现方式中,可以将当前块的可用帧内预测模式划分/分割成多个帧内预测模式集合。为了得到当前块的帧内预测模式,首先,可以用信号通知模式集合索引以指示当前块的帧内预测模式的模式集合索引;其次,可以用信号通知模式索引以指示模式集合内的帧内预测模式的索引。
在此,在本公开内容的各种实施方式中,“第一”模式集合不仅指“一个”模式集合,而且指具有最小模式集合索引的“第一”模式集合,“第二”模式集合不仅指“另一”模式集合,而且指具有第二最小模式集合索引的“第二”模式集合,等等。例如,帧内预测模式集合的数量可以由M指示,并且模式集合索引的范围可以从例如1至M或0至M-1。当模式集合索引的范围从1至M时,“第一”模式集合是模式集合索引为1的“第一”模式集合,“第二”模式集合是模式集合索引为2的“第二”模式集合,依此类推。当模式集合索引的范围从0至M-1时,“第一”模式集合是模式集合索引为0的“第一”模式集合,“第二”模式集合是模式集合索引为1的“第二”模式集合,依此类推。
在此,在本公开内容的各种实施方式中,“用信号通知XYZ”可以指在编码过程期间将XYZ编码到编码比特流中;以及/或者,在将编码比特流从一个装置发送至另一装置之后,“用信号通知XYZ”可以指在解码过程期间从编码比特流解码/提取XYZ。
在此,在本公开内容的各种实施方式中,“块”可以指预测块、编码块、变换块或编码单元(CU)。
参考步骤1510,装置可以是图5中的电子装置(530)或图8中的视频解码器(810)。在一些实现方式中,装置可以是图6中的编码器(620)中的解码器(633)。在其他实现方式中,装置可以是图5中的电子装置(530)的一部分、图8中的视频解码器(810)的一部分、或者图6中的编码器(620)中的解码器(633)的一部分。编码视频比特流可以是图8中的编码视频序列、或者图6或图7中的中间编码数据。块可以指编码块或经编码块。
参考步骤1520,装置可以基于块大小根据预定义规则为块构造帧内模式列表。参考步骤1530,装置可以将帧内模式列表划分为块的多个帧内模式集合。预定义规则可以是预定义规则的集合中的一者,并且可以基于块的大小从预定义规则的集合中选择。
在一些实现方式中,基于预定义规则为当前块构造帧内模式列表。在构造帧内模式列表之后,帧内预测模式根据其在帧内模式列表中的对应索引被拆分成多个帧内预测模式集合。为了用信号通知当前块的帧内预测模式,首先,可以用信号通知模式集合索引以指示当前块的帧内预测模式的模式集合索引;其次,用信号通知模式索引以指示模式集合内的帧内预测模式的索引。对于不同的块大小,预定义规则可以是不同的,所述块大小可以由块中的样本数来指示。
在各种实施方式中,响应于块的大小等于或大于第一阈值:帧内模式列表包括位于列表顶部的第一子列表;并且第一子列表包括所有非方向性帧内预测模式。例如,当帧内模式列表被划分为多个帧内模式集合时,由于非方向性帧内预测模式位于列表顶部,因此非方向性帧内预测模式可以被划分为第一帧内模式集合。在一些实现方式中,非方向性模式可以包括平滑模式(例如,smooth、smooth_v、smooth_h)、DC模式、PAETH模式和亮度对色度模式。在一些其他实现方式中,在松散的分类中,非方向性模式可以广泛地包括不是方向性模式的任何模式。
在一些实现方式中,对于块大小等于或大于第一阈值(TH1)的块,首先,将所有非方向性模式添加至模式列表中。其次,将偏移添加至相邻块的方向性帧内预测模式以得出帧内预测模式,并将得出的帧内预测模式添加至帧内模式列表。最后,在添加所有得出的帧内预测模式之后,如果帧内预测模式集合仍然未满,则使用默认模式来填充帧内模式列表中的其余位置。对于一个示例,第一阈值是8×8。对于另一示例,第一阈值在样本数方面为32。
在一些其他实现方式中,响应于相邻块使用方向性帧内预测模式:帧内模式列表包括列表中与第一子列表相邻的第二子列表;并且第二子列表包括基于相邻块的方向性帧内预测模式的多个得出的帧内预测模式。例如,当帧内模式列表被划分为多个帧内模式集合时,基于相邻块的方向性帧内预测模式的多个得出的帧内预测模式可能被划分为第一帧内模式集合或第二帧内模式集合,因为多个得出的帧内预测模块从列表的顶部紧邻非方向性帧内模式。在一些实现方式中,当前块的相邻块可以包括当前块的顶部(上部)块、当前块的左侧块、或者当前块的顶部(上部)块和左侧块两者。
在一些其他实现方式中,多个得出的帧内预测模式包括通过将偏移[0,-1,+1,-2,+2,-3,+3,-4,+4]添加至相邻块的方向性帧内预测模式而得到的九个方向性帧内预测模式。例如,当相邻块的方向性帧内预测模式具有一定的方向性角(x度)并且方向性角的步长为3度时,多个得出的帧内预测模式可以包括方向性角为x、x±3、x±6、x±9和x±12度的9个方向性帧内预测模式。
在另一示例中,当前块的可用帧内预测模式为61种,包括5种非方向性模式和56种方向性模式。当用一个或更多个方向性帧内预测模式对当前块的相邻块进行编码时,首先,将5种非方向性模式添加至模式列表中;其次,通过将偏移[0,-1,+1,-2,+2,-3,+3,-4,+4]添加至相邻块的每个方向性模式而得出9个方向性帧内预测模式。当没有任何相邻块的方向性模式时,可以跳过第二步骤。对于一个示例,如果用一个方向性帧内预测模式对仅一个相邻块进行编码,则得出9个方向性帧内预测模式,从而将14个(=9+5)模式添加至模式列表中,然后将默认模式添加至模式列表中。对于另一示例,如果用两个方向性帧内预测模式对两个相邻块进行编码,则可以得出18(=9*2)个方向性帧内预测模式,从而将23(=18+5)个模式添加至模式列表中,然后将默认模式添加至模式列表中。在一些情况下,如果用两个方向性帧内预测模式对两个相邻块进行编码,则在去除两个得出的9个方向性帧内预测模式之间的任何重复之后,可以得出少于18个方向性帧内预测模式。在极端情况下,如果用两个相同的方向性帧内预测模式对两个相邻块进行编码,则在去除相同的两个得出的9个方向性帧内预测模式之间的重复之后,可以得出仅9个方向性帧内预测模式。
在一些其他实现方式中,帧内模式列表包括列表中与第二子列表相邻的第三子列表;并且第三子列表包括默认帧内预测模式。在一些其他实现方式中,默认帧内预测模式包括具有零δ角度的至少一个标称方向性帧内预测模式。例如,默认帧内预测模式可以包括具有零δ角度的所有其他标称方向性帧内预测模式,其尚未包括在上述基于相邻块的方向性帧内预测模式的得出的帧内预测模式中。
在各种实施方式中,响应于块的大小小于第一阈值:帧内模式列表包括位于列表顶部的第一子列表;并且第一子列表包括所有非方向性帧内预测模式。在一些实现方式中,响应于相邻块使用方向性帧内预测模式:帧内模式列表包括列表中与第一子列表相邻的第二子列表;并且第二子列表包括相邻块的所有方向性帧内预测模式。在一些其他实现方式中,帧内模式列表包括列表中与第二子列表相邻的第三子列表;并且第三子列表包括默认帧内预测模式。在一些其他实现方式中,响应于相邻块的所有方向性帧内预测模式的数量大于1:帧内模式列表中的相邻块的方向性帧内预测模式按角度从小到大的顺序排序。
在一些实现方式中,对于块大小小于第一阈值TH1的块,首先,将所有非方向性模式添加至模式列表中;其次,将相邻块的方向性帧内预测模式添加至帧内模式列表;然后,使用默认模式来填充帧内模式列表的其余位置。在一个示例中,第一阈值(TH1)被设置为块大小8×8。在另一示例中,如果在相邻块中存在两个方向性帧内预测模式,则首先将具有较小角度的方向性模式添加至模式列表中。例如,垂直模式为90度以及水平模式为180度,并且垂直模式的角度小于水平模式的角度,因此首先将垂直模式添加至模式列表中。
在各种实施方式中,响应于块的大小小于第一阈值:帧内模式列表包括预定义默认帧内预测模式。在一些实现方式中,帧内模式列表中的预定义默认帧内预测模式具有以下排列顺序:第一,所有非方向性帧内预测模式,其次,具有零δ角度的方向性帧内预测模式,第三,δ角度为单位步长的+2倍或-2倍的方向性帧内预测模式,第四,δ角度为单位步长的+1倍或-1倍的方向性帧内预测模式,以及/或者第五,δ角度为单位步长的+3倍或-3倍的方向性帧内预测模式。在一些实现方式中,步长可以是3度的默认值。
在一些实现方式中,对于块大小小于阈值(TH1)的块,使用预定义默认模式来填充帧内模式列表中的所有位置。对于一个示例,预定义默认模式可以列举如下:首先,将所有非方向性模式添加至模式列表中;其次,将δ角度等于0的方向性模式添加至模式列表中;第三,将δ角度等于2和-2的方向性模式添加至模式列表中;第四,将δ角度等于1和-1的方向性模式添加至模式列表中;以及/或者第五,将δ角度等于3和-3的方向性模式添加至模式列表中。
在各种实施方式中,响应于块的大小小于第一阈值:由集合索引指示的帧内模式集合属于N个帧内模式集合,其中,N个帧内模式集合位于多个帧内模式集合的顶部,并且N是正整数。
在一些实现方式中,对于小于阈值(TH1)的块,对于当前块允许并用信号通知仅前N个帧内模式集合。N是正整数。在一个示例中,N被设置为1,指示对于当前块允许并用信号通知仅第一帧内模式集合。在另一示例中,N被设置为2,指示对于当前块允许并用信号通知仅第一帧内模式集合和第二帧内模式集合。
本公开内容中的实施方式可以单独使用或以任何顺序组合使用。此外,方法(或实施方式)、编码器和解码器中的每一个均可以通过处理电路***(例如,一个或更多个处理器或一个或更多个集成电路)来实现。在一个示例中,一个或更多个处理器执行存储在非暂态计算机可读介质中的程序。本公开内容中的实施方式可以应用于亮度块或色度块;并且在色度块中,实施方式可以单独地应用于多于一个颜色分量,或者可以一起应用于多于一个颜色分量。
在本公开内容中,各种实施方式中的任何步骤或操作可以根据需要以任何量或以任何顺序组合。在本公开内容中,可以并行地执行各种实施方式中的两个或更多个步骤或操作。
上述技术可以使用计算机可读指令被实现为计算机软件并且被物理地存储在一个或更多个计算机可读介质中。例如,图16示出了适合于实现所公开的主题的某些实施方式的计算机***(2600)。
计算机软件可以使用任何合适的机器代码或计算机语言来编码,所述机器代码或计算机语言可以经过汇编、编译、链接等机制以创建包括指令的代码,所述指令可以由一个或更多个计算机中央处理单元(CPU)、图形处理单元(GPU)等直接执行或者通过解释、微代码执行等来执行。
指令可以在各种类型的计算机或其部件上执行,所述计算机或其部件包括例如个人计算机、平板电脑、服务器、智能电话、游戏装置、物联网装置等。
图16中所示的用于计算机***(2600)的部件本质上是示例性的,并且不旨在对实现本公开内容的实施方式的计算机软件的使用范围或功能提出任何限制。部件的配置也不应该被解释为具有与计算机***(2600)的示例性实施方式中所示的部件中的任何一个或部件的组合有关的任何依赖性或要求。
计算机***(2600)可以包括某些人机接口输入装置。这样的人机接口输入装置可以响应于由一个或更多个人类用户通过例如触觉输入(例如:击键、滑动、数据手套移动)、音频输入(例如:语音、拍打)、视觉输入(例如:姿势)、嗅觉输入(未描绘)的输入。人机接口装置还可以用于捕获不一定与人的意识输入直接有关的某些媒体,例如,音频(例如:语音、音乐、环境声音)、图像(例如:扫描图像、从静态图像摄像装置获得的摄影图像)、视频(例如二维视频、包括立体视频的三维视频)。
输入人机接口装置可以包括以下中的一个或更多个(描绘的每种中的仅一个):键盘(2601)、鼠标(2602)、触控板(2603)、触摸屏(2610)、数据手套(未示出)、操纵杆(2605)、麦克风(2606)、扫描仪(2607)、摄像装置(2608)。
计算机***(2600)还可以包括某些人机接口输出装置。这样的人机接口输出装置可以通过例如触觉输出、声音、光和气味/味道来刺激一个或更多个人类用户的感觉。这样的人机接口输出装置可以包括:触觉输出装置(例如,通过触摸屏(2610)、数据手套(未示出)或操纵杆(2605)进行的触觉反馈,但是也可以存在不用作输入装置的触觉反馈装置);音频输出装置(例如:扬声器(2609)、头戴式耳机(未描绘));视觉输出装置(例如,屏幕(2610),包括CRT屏幕、LCD屏幕、等离子屏幕、OLED屏幕,每个屏幕具有或不具有触摸屏输入能力,每个屏幕具有或不具有触觉反馈能力——其中的一些可能能够通过诸如立体图像输出的方式输出二维视觉输出或多于三维输出;虚拟现实眼镜(未描绘);全息显示器和发烟器(未描绘));以及打印机(未描绘)。
计算机***(2600)还可以包括人类可访问存储装置及其相关联的介质,例如包括具有CD/DVD等介质(2621)的CD/DVD ROM/RW(2620)的光学介质、拇指驱动器(2622)、可移除硬盘驱动器或固态驱动器(2623)、传统磁性介质例如磁带和软盘(未描绘)、基于专用ROM/ASIC/PLD的装置例如安全加密狗(未描绘)等。
本领域技术人员还应当理解,结合目前公开的主题使用的术语“计算机可读介质”不包含传输介质、载波或其他瞬态信号。
计算机***(2600)还可以包括到一个或更多个通信网络(2655)的接口(2654)。网络例如可以是无线网络、有线网络、光网络。网络还可以为局域网、广域网、城域网、车载和工业网络、实时网络、延迟容忍网络等。网络的示例包括:局域网(例如以太网、无线LAN),包括GSM、3G、4G、5G、LTE等的蜂窝网络,包括有线电视、***和地面广播电视的电视有线或无线广域数字网络,包括CAN总线的车辆和工业网络等。某些网络通常需要附接至某些通用数据端口或***总线(2649)(例如,计算机***(2600)的USB端口)的外部网络接口适配器;其他的网络通常通过如下所述(例如,至PC计算机***的以太网接口或至智能电话计算机***的蜂窝网络接口)附接至***总线而集成到计算机***(2600)的核心中。使用这些网络中的任何网络,计算机***(2600)可以与其他实体通信。这样的通信可以是仅单向接收的(例如,广播电视)、仅单向发送的(例如,至某些CAN总线装置的CAN总线)、或双向的(例如,使用局域数字网络或广域数字网络至其他计算机***)。可以在如上面所描述的这些网络和网络接口中的每个网络和网络接口上使用某些协议和协议栈。
以上提及的人机接口装置、人类可访问的存储装置和网络接口可以附接至计算机***(2600)的核心(2640)。
核心(2640)可以包括一个或更多个中央处理单元(CPU)(2641)、图形处理单元(GPU)(2642)、现场可编程门区域(FPGA)(2643)形式的专用可编程处理单元、用于某些任务的硬件加速器(2644)、图形适配器(2650)等。这些装置连同只读存储器(ROM)(2645)、随机存取存储器(2646)、内部大容量存储装置(例如,内部非用户可访问硬盘驱动器、SSD等)(2647)可以通过***总线(2648)连接。在一些计算机***中,可以以一个或更多个物理插头的形式访问***总线(2648),以允许通过附加的CPU、GPU等进行扩展。***装置可以直接地或者通过***总线(2649)附接至核心的***总线(2648)。在示例中,屏幕(2610)可以连接至图形适配器(2650)。***总线的架构包括PCI、USB等。
CPU(2641)、GPU(2642)、FPGA(2643)和加速器(2644)可以执行某些指令,这些指令组合起来可以构成以上提及的计算机代码。计算机代码可以存储在ROM(2645)或RAM(2646)中。瞬时数据也可以存储在RAM(2646)中,而永久性数据可以存储在例如内部大容量存储装置(2647)中。可以通过使用高速缓存存储器来实现对存储器装置中的任何存储器装置的快速存储和检索,该高速缓存存储器可以与一个或更多个CPU(2641)、GPU(2642)、大容量存储装置(2647)、ROM(2645)、RAM(2646)等紧密相关联。
计算机可读介质可以在其上具有用于执行各种计算机实现的操作的计算机代码。这些介质和计算机代码可以是出于本公开内容的目的而专门设计和构造的介质和计算机代码,或者他们可以具有计算机软件领域的技术人员公知且可用的类型。
作为非限制性示例,具有架构的计算机***(2600)并且特别是核心(2640)可以提供作为处理器(包括CPU、GPU、FPGA、加速器等)执行在一个或更多个有形计算机可读介质中实现的软件的结果的功能。这样的计算机可读介质可以是与如以上介绍的用户可访问的大容量存储装置相关联的介质,以及核心(2640)的具有非暂态性质的某些存储装置,例如核心内部大容量存储装置(2647)或ROM(2645)。可以将实现本公开内容的各种实施方式的软件存储在这样的装置中并且由核心(2640)执行。根据特定需求,计算机可读介质可以包括一个或更多个存储器装置或芯片。软件可以使核心(2640)并且特别是其中的处理器(包括CPU、GPU、FPGA等)执行本文中描述的特定处理或特定处理的特定部分,包括限定存储在RAM(2646)中的数据结构以及根据由软件限定的处理修改这样的数据结构。另外地或可替选地,计算机***可以提供作为逻辑硬连线或以其他方式在电路(例如:加速器(2644))中实现的结果的功能,所述电路可以代替软件而操作或与软件一起操作以执行本文中描述的特定处理或特定处理的特定部分。在适当的情况下,提及软件可以涵盖逻辑,并且反之提及逻辑也可以涵盖软件。在适当的情况下,对计算机可读介质的提及可以包含存储用于执行的软件的电路(例如,集成电路(IC))、体现用于执行的逻辑的电路或上述两者。本公开内容涵盖硬件与软件的任何合适的组合。
尽管已经参考说明性实施方式描述了特定发明,但是该描述不意味着限制。根据本说明书,本发明的说明性实施方式和附加实施方式的各种修改对于本领域的普通技术人员将是明显的。本领域技术人员将容易认识到,在不背离本发明的精神和范围的情况下,可以对本文中示出和描述的示例性实施方式进行这些和各种其他修改。因此,可以预期的是,所附权利要求将涵盖任何这样的修改和替选实施方式。图示中的某些比例可能被夸大,而其他比例可能被最小化。因此,本公开内容和附图应被认为是说明性的而非限制性的。
Claims (18)
1.一种用于视频解码中的帧内预测模式编码的方法,所述方法包括:
由包括存储指令的存储器和与所述存储器通信的处理器的设备接收编码视频比特流;
由所述设备基于所述编码视频比特流中的块的大小,根据预定义规则为所述块构造帧内模式列表;
由所述设备将所述帧内模式列表划分为所述块的多个帧内模式集合;
由所述设备从所述编码视频比特流中提取指示所述多个帧内模式集合中的帧内模式集合的集合索引;
由所述设备从所述编码视频比特流中提取指示所述帧内模式集合中的帧内预测模式的模式索引;
由所述设备基于所述集合索引和所述模式索引确定所述块的帧内预测模式;以及
由所述设备基于所述帧内预测模式对所述编码视频比特流进行解码。
2.根据权利要求1所述的方法,其中:
响应于所述块的大小等于或大于第一阈值:
所述帧内模式列表包括位于所述列表顶部的第一子列表;以及
所述第一子列表包括所有非方向性帧内预测模式。
3.根据权利要求2所述的方法,其中:
所述第一阈值为8×8;或者
在以样本数为单位的情况下,所述第一阈值为32。
4.根据权利要求2所述的方法,其中:
响应于相邻块使用方向性帧内预测模式:
所述帧内模式列表包括所述列表中与所述第一子列表相邻的第二子列表;以及
所述第二子列表包括基于所述相邻块的方向性帧内预测模式的多个得出的帧内预测模式。
5.根据权利要求4所述的方法,其中:
所述多个得出的帧内预测模式包括通过将偏移[0,-1,+1,-2,+2,-3,+3,-4,+4]添加至所述相邻块的方向性帧内预测模式而得到的九个方向性帧内预测模式。
6.根据权利要求4所述的方法,其中:
所述帧内模式列表包括所述列表中与所述第二子列表相邻的第三子列表;以及
所述第三子列表包括默认帧内预测模式。
7.根据权利要求6所述的方法,其中:
所述默认帧内预测模式包括具有零δ角度的至少一个标称方向性帧内预测模式。
8.根据权利要求1所述的方法,其中:
响应于所述块的大小小于第一阈值:
所述帧内模式列表包括位于所述列表顶部的第一子列表;以及
所述第一子列表包括所有非方向性帧内预测模式。
9.根据权利要求8所述的方法,其中:
响应于相邻块使用方向性帧内预测模式:
所述帧内模式列表包括所述列表中与所述第一子列表相邻的第二子列表;以及
所述第二子列表包括所述相邻块的所有方向性帧内预测模式。
10.根据权利要求9所述的方法,其中:
所述帧内模式列表包括所述列表中与所述第二子列表相邻的第三子列表;以及
所述第三子列表包括默认帧内预测模式。
11.根据权利要求9所述的方法,其中:
响应于所述相邻块的所有方向性帧内预测模式的数量大于1:
所述帧内模式列表中的所述相邻块的方向性帧内预测模式按角度从小到大的顺序排序。
12.根据权利要求1所述的方法,其中:
响应于所述块的大小小于第一阈值:
所述帧内模式列表包括预定义默认帧内预测模式。
13.根据权利要求12所述的方法,其中:
所述帧内模式列表中的预定义默认帧内预测模式具有以下排列顺序:
第一,所有非方向性帧内预测模式,
第二,具有零δ角度的方向性帧内预测模式,
第三,δ角度为单位步长的+2倍或-2倍的方向性帧内预测模式,
第四,δ角度为单位步长的+1倍或-1倍的方向性帧内预测模式,以及
第五,δ角度为单位步长的+3倍或-3倍的方向性帧内预测模式。
14.根据权利要求13所述的方法,其中:
所述单位步长为3度。
15.根据权利要求1所述的方法,其中:
响应于所述块的大小小于第一阈值:
由所述集合索引指示的帧内模式集合属于N个帧内模式集合,其中,所述N个帧内模式集合位于所述多个帧内模式集合的顶部,并且N是正整数。
16.根据权利要求15所述的方法,其中:
N是1或2之一。
17.一种用于视频解码中的帧内预测模式编码的设备,所述设备包括:
存储指令的存储器;以及
与所述存储器通信的处理器,其中,当所述处理器执行所述指令时,所述处理器被配置成使所述设备执行根据权利要求1至16中任一项所述的方法。
18.一种存储指令的非暂态计算机可读存储介质,其中,当所述指令由处理器执行时,所述指令被配置成使所述处理器执行根据权利要求1至16中任一项所述的方法。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US63/236,542 | 2021-08-24 | ||
US17/573,856 | 2022-01-12 | ||
US17/573,856 US20230069984A1 (en) | 2021-08-24 | 2022-01-12 | Hardware friendly design for intra mode coding |
PCT/US2022/014145 WO2023027763A1 (en) | 2021-08-24 | 2022-01-27 | Hardware friendly design for intra mode coding |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116472711A true CN116472711A (zh) | 2023-07-21 |
Family
ID=87177485
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202280006825.7A Pending CN116472711A (zh) | 2021-08-24 | 2022-01-27 | 用于帧内模式编码的硬件友好设计 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116472711A (zh) |
-
2022
- 2022-01-27 CN CN202280006825.7A patent/CN116472711A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN116320408A (zh) | 用于视频解码、编码的方法、编码器、装置及可读介质 | |
US20230008488A1 (en) | Entropy coding for intra prediction modes | |
CN115486077A (zh) | 针对变换系数的符号图的改进熵编码 | |
CN115516856A (zh) | 多参考行帧内预测与变换分区之间的协调设计 | |
CN115552902A (zh) | 变换划分与主/二次变换类型选择之间的交互 | |
CN115486078A (zh) | 多参考行选择方案的低存储设计 | |
US11917136B2 (en) | Intra mode coding | |
US11838498B2 (en) | Harmonized design for intra bi-prediction and multiple reference line selection | |
US20230069984A1 (en) | Hardware friendly design for intra mode coding | |
US20230007299A1 (en) | Harmonized design for offset based refinement and multiple reference line selection | |
CN116472711A (zh) | 用于帧内模式编码的硬件友好设计 | |
CN116806427A (zh) | 用于基于偏移的修正和多参考行选择的协调设计 | |
CN116783888A (zh) | 改进的帧内模式编码 | |
CN117242772A (zh) | 使用邻近亮度样本的根据亮度的色度预测 | |
CN116998153A (zh) | 基于多个预测模式的交叉通道预测 | |
CN117296320A (zh) | 使用映射和不同类型的从亮度到色度预测 | |
CN118235406A (zh) | 针对根据亮度预测色度的预测选择下采样滤波器 | |
KR20230106688A (ko) | 적응적 다중 변환 세트 선택 | |
CN116458159A (zh) | 跳过变换标志编码 | |
CN117693934A (zh) | 基于合并色度块的亮度色度预测 | |
CN116897533A (zh) | 图像和视频压缩中交叉分量预测的自适应参数选择 | |
CN116368801A (zh) | 交叉分量变换系数水平重构 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40090330 Country of ref document: HK |