使用重建像素点的语法预测的制作方法

文档序号:21487038发布日期:2020-07-14 17:13阅读:226来源:国知局
使用重建像素点的语法预测的制作方法

本发明涉及信号像素点编码和与信号像素点编码相关的控制信息,信号像素点编码包括控制信息的二值化。



背景技术:

目前的混合视频编解码,例如h.264/avc或h.265/hevc,采用包括预测性编码的压缩。视频序列的图像被细分为像素块,然后对这些块进行编码。整个块使用该块的空间或时间相邻块中的已经编码的像素来进行预测,而不是逐个像素来编码整个块。编码器进一步只处理该块与其预测块之间的差值,通常包括将块像素变换为变换域中的系数。然后,可以通过量化进一步压缩系数,并通过熵编码进一步压缩系数以形成码流。该码流还包括能够用于对编码视频进行编码的任何信令信息。例如,信令可以包括有关编码的设置,例如输入图像大小、帧率、量化步长指示、应用于图像块的预测块等。将编码信令信息和编码信号以编码器和解码器均已知的方式在码流中排序。这使解码器能够解析编码信令信息和编码信号。

时间预测利用了视频图像之间的时间相关性,视频图像也称为视频帧。时间预测也称为帧间预测,因为使用了(帧间)不同视频帧之间的依赖关系。相应地,从一个或多个之前的编码图像中预测正在编码的块,之前的编码图像称为参考图像,正在编码的块称为当前块。参考图像不一定是在视频序列的显示顺序中位于当前块所在的当前图像之前的图像。编码器可以按照不同于显示顺序的编码顺序对图像进行编码。作为当前块的预测块,可以确定参考图像中的对应位置块。对应位置块在参考图像中的位置与当前块在当前图像中的位置相同。这种预测对于静止图像区域是准确的,静止图像区域中不存在从一个图像到另一个图像的移动。

为了获取将移动考虑其中的预测值,即运动补偿预测值,在确定当前块的预测块时通常使用运动估计。相应地,当前块通过参考图像中的块进行预测,该块位于与对应位置块的位置相距由运动矢量给出的距离的位置上。为了使解码器能够确定当前块的相同预测块,可以在码流中标识运动矢量。为了进一步减少由于标识每个块的运动矢量带来的信令开销,可以估计运动矢量本身。可以根据空域和/或时域中的相邻块的运动矢量执行运动矢量估计。

可以使用一个参考图像或通过加权从两个或两个以上参考图像获取的预测块来计算当前块的预测块。参考图像可以是相邻图像,即在显示顺序中紧接位于当前图像之前和/或紧接位于当前图像之后的图像,因为相邻图像最有可能与当前图像相似。然而,一般来说,参考图像也可以是在显示顺序中位于当前图像之前或之后、在码流(解码顺序)中位于当前图像之前的任何其它图像。例如,在视频内容出现遮挡和/或非线性移动的情况下,这可以提供优势。因此,也可以在码流中标识参考图像识别。

帧间预测的一种特殊模式是所谓的双向预测,其中使用两个参考图像来生成当前块的预测块。具体而言,将在相应两个参考图像中确定的两个预测块组合成当前块的预测信号。双向预测对当前块的预测比单向预测仅使用单个参考图像进行的预测更准确。更准确的预测使得当前块的像素与预测块的像素之间的差值(也称为“残差”)更小,可以更有效地对这些差值进行编码,即压缩到更短的码流中。一般来说,可以使用两个以上参考图像来找到相应的两个以上参考块来预测当前块,即可以进行多参考帧间预测。因此,术语“多参考预测”包括双向预测以及使用两个以上参考图像的预测。

为了提供更准确的运动估计,可以通过在像素之间插值像素点来增强参考图像的分辨率。分数像素插值可以通过对最接近的像素进行加权平均来执行。例如,在半像素分辨率的情况下,通常使用双线性插值。通过最接近像素与正在预测的像素之间的距离的倒数对最接近像素进行加权,然后对加权值取平均值,计算得到其它分数像素。

运动矢量估计是一项计算复杂的任务,其中计算当前块与参考图像中候选运动矢量指向的对应预测块之间的相似度。通常,搜索区域包括m×m个图像像素点,并且测试m×m个候选位置中的每个像素点位置。测试包括计算n×n参考块c与位于搜索区域的测试候选位置上的块r之间的相似度量。为简单起见,绝对差和(sumofabsolutedifferences,sad)是为此经常使用的一个度量,计算如下:

在上述公式中,x和y定义了在搜索区域内的候选位置,而索引i和j表示参考块c和候选块r内的像素点。候选位置通常称为块位移或偏移,反映块匹配描述为参考块在搜索区域内的移位,以及计算参考块c与搜索区域中的重叠部分之间的相似度。为了降低复杂度,通常通过将候选运动矢量限制在某个搜索空间内来减少候选运动矢量的数量。例如,搜索空间可以通过与当前图像中的当前块的位置对应的参考图像中的位置周围的像素的数目和/或位置来定义。在计算所有m×m个候选位置x和y的sad之后,最佳匹配块r就是产生最小sad的位置上的块,最小sad对应于与参考块c的最大相似度。另一方面,候选运动矢量可以通过由相邻块的运动矢量组成的候选运动矢量列表来定义。

运动矢量通常至少部分在编码端确定,并在编码码流中向解码器标识。然而,也可以在解码器侧推导出运动矢量。在这种情况下,当前块在解码器侧不可用,并且不能用于计算与参考图像中的候选运动矢量指向的块的相似度。因此,使用从已解码块的像素中构建的模板来代替当前块。例如,可以使用与当前块相邻的已解码像素。这种运动估计减少了信令:运动矢量在编码器和解码器侧以相同方式推导出,因此不需要信令。另一方面,这种运动估计的准确性可能较低。

为了平衡准确性和信令开销,可将运动矢量估计分为两个步骤:运动矢量推导和运动矢量修正。例如,运动矢量推导可以包括从候选运动矢量列表中选择运动矢量。例如,可以通过在搜索空间进行搜索进一步修正此类已选择的运动矢量。通过计算每个候选运动矢量(即候选运动矢量指向的块的每个候选位置)的成本函数在搜索空间中进行搜索。

文件号jvet-d0029:x.chen、j.an、j.zheng发表的《decoder-sidemotionvectorrefinementbasedonbilateraltemplatematching(基于双边模板匹配的解码端运动矢量修正)》(文档获取网址http://phenix.it-sudparis.eu/jvet/)介绍了运动矢量修正,发现了整像素分辨率的第一运动矢量,并通过在第一运动矢量周围的搜索空间中以半像素分辨率进行搜索来进一步修正第一运动矢量。

目前的音频编解码,例如mp3、amr或aac,还压缩输入音频信号并形成码流,码流包括压缩音频像素点和对编码像素点解码所需的对应信令信息。

与编码信号的类型无关,码流的形成通常遵循例如由标准预定义的语义规则和语法规则。码流的形成(二值化)可以通过应用固定长度码或可变长度码来执行,固定长度码或可变长度码即具有固定或可变长度的码字的代码。语义向信令信息(例如可能具有“帧间单向预测”、“帧间双向预测”或“帧内预测”内容的预测类型)赋予一个值,该值通常是一个数字(例如分别为1、2、3)。信令信息通常包括在由语法定义的地方的码流中,该语法对编码器和解码器都是已知的。因此,码流通常包括编码语法元素序列。语法元素是某些信令(控制)信息的一个或多个比特,这些信令(控制)信息即控制信息内容。根据上述与预测类型对应的语法元素的示例,这种语法元素可以取值1、2或3中的一个,然后嵌入到码流中以指示预测类型(由语义给出)。为了形成码流,语法元素的值被二值化,即,赋予一个二进制码字。为了用固定长度码对3个值编码,至少需要2个比特。2个比特可以取4个不同的值(00、01、10、11)。上述值1、2和3的二值化可以通过为其赋予固定长度(2比特)码字00、01和11来执行。根据语法元素值的预期分布,使用诸如算术编码、汉明(hamming)编码等可变长度编码可能更有益。

信号编码的语义、语法和二值化的定义对编码效率有影响。



技术实现要素:

本发明的基本问题是有效编码和解码信号像素点。

本发明的另一基本问题是有效编码和解码信号像素点,同时使二值化和压缩保持独立。

这通过根据之前编码/解码的信号像素点调整控制数据的语法元素的语义以便对其它信号像素点进行编码来实现。

根据本发明一方面,提供了一种用于将信号编码到码流中的装置,所述码流包括第一信号像素点和与第二信号像素点的编码相关的控制信息,所述编码器包括:信号压缩单元,用于压缩所述第一信号像素点并重建所述压缩的第一信号像素点;控制信息映射单元,用于根据所述重建的第一信号像素点选择用于向控制信息内容赋予语法元素相应值的语义规则,(i)根据所述语义规则和控制信息内容确定所述语法元素的值;(ii)码流生成器,用于生成码流,所述码流包括所述压缩的第一信号像素点和所述确定的语法元素值。

根据已解码的像素点选择语义的优点之一是可以更有效地形成码流。而且,二值化仍然独立于信号编码,因为语义适应是在实际的码流形成之前进行的。语义适应使得更多可能的控制信息内容能够映射到更多可能的(以及这种可能更高效的编码)语法元素值上。

所述码流生成器可以通过将所述压缩的第一信号像素点和/或所述确定的语法元素值二值化来生成码流。

所述装置还可以包括:控制信息生成单元,用于生成所述控制信息,其中所述信号压缩单元还用于:根据所述生成的控制信息压缩第二信号像素点进行;所述码流生成器还用于:对所述压缩的第二信号像素点进行二值化,并将所述二值化的第二压缩信号像素点包括到所述码流中。

根据一个示例,所述码流生成器用于:通过应用上下文自适应二进制算术编码(context-adaptivebinaryarithmeticcoding,cabac)对所述语法元素值进行二值化。cabac是一种对具有非均匀概率值的语法元素进行二值化的有效方法。因此,语法适应与这种编码结合可能特别有效。

需要注意的是,此处术语“码流”应从广义上理解为根据预定义语法包括像素点和控制信息的二值化信息集,包括任何任意分组化的可能性:可以形成结合二值化像素点和控制信息的数据包,或者可以在不同的数据包中传输控制信息和编码像素点。

此处术语“信号像素点”是指一个或多个信号像素点。具体而言,它可以是像素点块,即,控制信息内容相关联的块,例如,通过定义已编码像素点(像素点块或者采样点块)并因此必须解码的过程相关联。

根据本发明另一方面,提供了一种用于从码流中解码信号的装置,所述码流包括信号像素点和与信号像素点解码相关的控制信息,所述解码器包括:码流解析器,用于从码流中解析出压缩的第一信号像素点和语法元素值;信号解压缩单元,用于重建所述压缩的第一信号像素点;控制信息映射单元,用于根据所述重建的第一信号像素点选择用于向控制信息内容赋予语法元素相应值的语义规则,根据所述语义规则和所述解析出的语法元素值确定控制信息内容。

例如,所述码流解析器还用于从所述码流中解析出压缩的第二信号像素点;所述信号解压缩单元还用于根据所述确定的控制信息对所述压缩的第二信号像素点进行解压缩。

所述码流解析器可以通过应用上下文自适应二进制算术解码对所述语法元素值进行解析。

根据一个实施例,确定所述语义规则作为索引,所述索引标识将所述控制信息内容与所述相应语法元素值相关联的多个预定义表中的一个,所述索引被确定为所述重建的信号像素点的函数。

例如,所述语义规则为或可以为第一表或第二表,所述语法元素可以取或包括多个不同的值,所述控制信息可以为或包括多个不同的控制信息内容。所述第一表将所述语法元素的所述多个不同值中的一个值与所述多个控制信息内容中的一个(例如,仅一个)控制信息内容相关联,所述第二表将所述语法元素的所述多个不同值中的一个值与所述多个控制信息内容中的另一个(例如,仅一个)控制信息内容相关联。编码装置也可以采用同样的方法。

例如,所述语义规则为第一表或第二表,所述语法元素可以取第一值或第二值,所述第一表将所述语法元素的所述第一值与第一控制信息内容相关联,所述第二值与第二控制信息内容相关联;所述第二表将所述语法元素的所述第一值与所述第二控制信息内容相关联,所述第二值与所述第一控制信息内容相关联。

具体而言,信号可以是视频信号。本发明尤其对携带视频信号的控制信息的语法元素进行编码和解码有用。这是因为视频压缩已经成为可扩展的,并且通常由许多不同的语法元素控制。此外,由于可以经常标识语法元素(例如,以每个块为单位),因此控制信息可以形成码流的重要部分。

在一个特定示例中,当信号为视频信号时,所述控制信息使用所述第一控制信息内容指示双向预测,使用所述第二控制信息内容指示单向预测,所述双向预测和单向预测用于模板匹配中以获取信号像素点预测值。

例如,根据模板匹配成本函数选择所述第一表和第二表,所述模板匹配成本函数是以模板分别与基于双向预测的预测值之间以及与基于单向预测的预测值之间的相似度为基础。

根据一个示例,信号为视频信号,所述控制信息使用所述第一控制信息内容指示局部亮度补偿功能开启,使用第二控制信息内容指示局部亮度补偿功能关闭。

在一些实施例中,根据当前图像帧中的重建像素点与按编码顺序在所述当前图像帧之前的图像帧中的对应重建像素点之间的相似度函数选择所述第一表或第二表。

例如,当信号为视频信号时,所述控制信息指示运动矢量的分量的正号或负号,所述分量为垂直分量或水平分量。

可以根据具有所述相应的正号和负号的运动矢量指向的预测块与所述当前块周围的像素点之间的相似度函数选择所述第一表或第二表。

根据本发明一方面,提供了一种集成电路,包含上述装置(编码器和/或解码器)。

根据本发明另一方面,提供了一种用于将信号编码到码流中的方法,所述码流包括信号像素点和与信号像素点编码相关的控制信息,所述方法包括:压缩第一信号像素点并重建所述压缩的第一信号像素点;根据所述重建的第一信号像素点选择用于向控制信息内容赋予语法元素相应值的语义规则,根据所述语义规则和控制信息内容确定所述语法元素的值;通过对所述压缩的第一信号像素点和所述确定的语法元素值进行二值化,生成码流。

所述方法还可包括:生成所述控制信息;根据所述生成的控制信息压缩第二信号像素点;对所述压缩的第二信号像素点进行二值化,并将所述二值化的第二压缩信号像素点包括到所述码流中。

根据一个示例,通过应用上下文自适应二进制算术编码对语法元素值进行二值化。

根据本发明一方面,提供了一种用于从码流中解码信号的方法,所述码流包括信号像素点和与信号像素点编码相关的控制信息,所述方法包括:从码流中解析出压缩的第一信号像素点和语法元素值;重建所述压缩的第一信号像素点;根据所述重建的第一信号像素点选择用于向控制信息内容赋予语法元素相应值的语义规则;根据所述语义规则和所述解析出的语法元素值确定控制信息内容。

例如,所述码流解析器还用于从所述码流中解析出所述压缩的第二信号像素点;所述信号解压缩单元还用于根据所述确定的控制信息对所述压缩的第二信号像素点进行解压缩。

所述码流解析器可以通过应用上下文自适应二进制算术解码对所述语法元素值进行解析。

根据一个实施例,确定所述语义规则作为索引,所述索引表示将所述控制信息内容与所述相应语法元素值相关联的多个预定义表中的一个,所述索引被确定为所述重建的信号像素点的函数。

例如,所述语义规则为或可以为第一表或第二表,所述语法元素可以取或包括多个不同的值,所述控制信息可以为或包括多个不同的控制信息内容。所述第一表将所述语法元素的所述多个不同值中的一个值与所述多个控制信息内容中的一个(例如,仅一个)控制信息内容相关联,所述第二表将所述语法元素的所述多个不同值中的一个值与所述多个控制信息内容中的另一个(例如,仅一个)控制信息内容相关联。编码方法也可以采用同样的方法。

例如,所述语义规则为第一表或第二表,所述语法元素可以取第一值或第二值,所述第一表将所述语法元素的所述第一值与第一控制信息内容相关联,所述第二值与第二控制信息内容相关联;所述第二表将所述语法元素的所述第一值与所述第二控制信息内容相关联,所述第二值与所述第一控制信息内容相关联。

具体而言,信号可为视频信号,则所述控制信息使用所述第一控制信息内容指示双向预测,使用所述第二控制信息内容指示单向预测,所述双向预测和单向预测用于模板匹配中以获取信号像素点预测值。

例如,根据模板匹配成本函数选择所述第一表和第二表,所述模板匹配成本函数是以模板分别与基于双向预测的预测值之间以及与基于单向预测的预测值之间的相似度为基础。

根据一个示例,信号为视频信号,所述控制信息使用所述第一控制信息内容指示局部亮度补偿功能开启,使用第二控制信息内容指示局部亮度补偿功能关闭。

在一些实施例中,根据当前图像帧中的重建像素点与按编码顺序在所述当前图像帧之前的图像帧中的对应重建像素点之间的相似度函数选择所述第一表或第二表。

例如,当信号为视频信号时,所述控制信息指示运动矢量的分量的正号或负号,所述分量为垂直分量或水平分量。

可以根据具有所述相应的正号和负号的运动矢量指向的预测块与所述预测块周围的像素点之间的相似度函数选择所述第一表或第二表。更具体地,首先使用相似度函数将参考图像中由运动矢量指向的待预测块和预测块周围的像素点分别与各自的正号进行比较,得到相似度量sm1。其次,利用相似度函数将参考图像中由运动矢量指向的待预测块和预测块周围的像素点分别与各自的负号进行比较,得到相似度量sm2。根据sm1和sm2之间的比较来选择第一表或第二表,例如,如果sm1小于sm2,则选择第一表。

例如,该方法还包括以下步骤:从码流中解析出压缩的第二信号像素点;以及根据确定的控制信息对压缩的第二信号像素点进行解压缩。

还可以通过应用上下文自适应二进制算术解码对语法元素值进行解析。

根据一个实施例,确定所述语义规则作为索引,所述索引标识将所述控制信息内容与所述相应语法元素值相关联的多个预定义表中的一个,所述索引被确定为所述重建的信号像素点的函数。例如,所述语义规则为第一表或第二表,所述语法元素可以取第一值或第二值,所述第一表将所述语法元素的所述第一值与第一控制信息内容相关联,所述第二值与第二控制信息内容相关联;所述第二表将所述语法元素的所述第一值与所述第二控制信息内容相关联,所述第二值与所述第一控制信息内容相关联。

具体而言,信号可为视频信号,则所述控制信息使用所述第一控制信息内容指示双向预测,使用所述第二控制信息内容指示单向预测,所述双向预测和单向预测用于模板匹配中以获取信号像素点预测值。

例如,根据模板匹配成本函数选择所述第一表和第二表,所述模板匹配成本函数是以模板分别与基于双向预测的预测值之间以及与基于单向预测的预测值之间的相似度为基础。

根据一个示例,信号为视频信号,所述控制信息使用所述第一控制信息内容指示局部亮度补偿功能开启,使用第二控制信息内容指示局部亮度补偿功能关闭。

在一些实施例中,根据当前图像帧中的重建像素点与按编码顺序在所述当前图像帧之前的图像帧中的对应重建像素点之间的相似度函数选择所述第一表或第二表。

例如,当信号为视频信号时,所述控制信息指示运动矢量的分量的正号或负号,所述分量为垂直分量或水平分量。

可以根据具有所述相应的正号和负号的运动矢量指向的预测块与所述当前块周围的像素点之间的相似度函数选择所述第一表或第二表。

此外,根据本发明的另一方面,提供了一种存储指令的非瞬时性计算机可读介质,所述指令在处理器上执行时执行上述方法的步骤。

附图说明

下文将参考以下附图详细描述示例性实施例,其中:

图1为用于编码视频信号的编码器的示例性结构的框图的示意图。

图2为用于解码视频信号的解码器的示例性结构的框图。

图3为包括算术编码器的编码器的框图。

图4为包括算术解码器的解析器的框图。

图5为压缩和二值化分离的示意图。

图6为根据压缩切换语义的解析器的框图。

图7为码流解析到语法元素解码的解码端的示意图。

图8为语法元素进行二值化的编码端的示意图。

图9为确定lic相关语法元素的语义表的成本函数的距离度量的示意图。

图10为确定与运动矢量符号相关的语法元素的语义表的成本函数的距离度量的示意图。

图11为编码方法的流程图。

图12为解码方法的流程图。

图13为lic的示意图。

具体实施方式

在以下描述中,参考构成本发明一部分的附图,附图通过说明的方式示出了本发明实施例的特定方面或可使用本发明实施例的特定方面。应理解,本发明的实施例可用于其它方面,并且包括未在附图中描绘的结构或逻辑变化。因此,以下详细的描述并不当作限定,本发明的范围由所附权利要求书界定。

可以理解的是,与所描述的方法有关的内容对于与用于执行方法对应的装置、设备或系统也同样适用,反之亦然。例如,如果描述了一个或多个特定方法步骤,则对应的设备可以包括一个或多个单元,例如,功能单元,用于执行所描述的一个或多个方法步骤(例如,执行所述一个或多个步骤的一个单元,或各自执行所述多个步骤中的一个或多个步骤的多个单元),即使图中未明确描述或说明此类一个或多个单元。另一方面,例如,如果基于一个或多个单元(例如,功能单元)来描述特定装置,对应的方法可以包括一个步骤来执行一个或多个单元的功能(例如,执行所述一个或多个单元的功能的一个步骤,或各自执行所述多个单元中的一个或多个单元的功能的多个步骤),即使图中未明确描述或说明此类一个或多个步骤。此外,应理解,除非另外具体指出,否则本文中描述的各种示例性实施例和/或方面的特征可彼此组合。

本发明涉及信号编码和解码,尤其涉及包括应用语义的编码、形成语法元素并将语法元素二值化以生成码流。语法元素的形成和二值化也可以在单个步骤中执行,即,通过向信令信息的内容直接赋予语法元素值,语法元素值为二进制值。

根据本发明,提供了一种编码装置和解码装置。

在一个实施例中,提供了一种编码器,用于将信号编码到码流中,所述码流携带信号像素点和与信号像素点编码相关的控制信息。这些信号像素点是数字值。它们可以通过在预定的一个或多个时间实例中对信号(例如,定期、以一定的采样频率或不定期)进行采样来获取。例如,可以使用模数转换将采样值数字化。需要注意的是,本发明适用于任何信号像素点,而不论其获取方式如何。编码器可以从存储器或网络或经过模数转换后直接从传感器或以任何其它方式接收数字像素点形式的信号。

信号可以是音频信号等一维信号,或任何其它类型信号的测量值序列。然而,该信号也可以是图像信号、视频(运动图像)信号等二维信号。一般来说,本发明可适用于任何类型的信号。

本示例性实施例的编码器包括信号压缩单元,用于压缩第一信号像素点并重建压缩的第一信号像素点。这里的术语“压缩”是指能够将信号像素点二值化的任何类型的信号表示。通常,压缩可以是图像(例如,jpeg、png)、视频(例如,hevc或avc)、音频(例如,amr、mp3、aac)的混合编码,文本压缩或任何其它类型的压缩。需要注意的是,只要编码器在其输入上获取要插入到码流中的信号像素点,并且需要关于如何执行其插入的附加信令信息以便解码器能够重建压缩单元,编码器就不必包括压缩单元。需要注意的是,如果使用视频编码,则压缩可以包括预测(时间或空间)、变换(例如,dft或fft)和量化(实际是有损压缩)。然而,并非所有这些压缩部分必须包括在内。不必进行变换,因为对于某些内容,像素编码可以提供更好的值;不必进行预测性编码,一些像素点也不必进行量化。一般来说,术语“压缩”可指任何类型的编码。

对应地,术语“解压缩”可以是对应于上述编码的任何类型的解码。术语“像素点”还可以使用像素点块,因为目前大多数编码/解码方法都是以块为单位,该块可能具有在码流中标识的可变块大小。

编码器还包括控制信息映射单元,用于:

-根据重建的第一信号像素点,选择用于向控制信息内容赋予相应语法元素值的语义规则;

-根据语义规则和控制信息内容确定语法元素的值;

在此,术语“控制信息”用作术语“信令信息”的同义词。术语“控制”是指控制信息的内容控制信号像素点的编码/解码这一事实。术语“信令”是指信息将被包括在码流中,即向解码器标识这一事实。

控制信息映射单元(即“映射器”)使用语义规则将可能的信令信息内容映射到要包括在码流中的相应语法元素值。这里的语义规则通常依赖于一个或多个信号像素点值。具体而言,为了能够在编码器侧和解码器侧以相同的方式确定语义规则,用于在编码器侧和解码器侧确定语义规则的一个或多个信号像素点将是相同的。相应地,如果在将信号像素点包括到码流之前对信号像素点应用有损压缩,则在编码器侧,需要使用压缩和重建(解压缩)信号像素点来确定语义规则。然而,本发明不限于压缩是有损压缩的情况。在应用无损压缩以便可以恢复原始信号像素点的情况下,重建的信号像素点对应于输入信号像素点。

语法元素值然后取决于映射信令信息内容的语义规则和信令信息内容。编码器还包括:码流生成器,用于将压缩的第一信号像素点和确定的语法元素值二值化来生成码流。需要注意的是,二值化的功能一般不必由独立的二值化单元执行。映射器(控制信息映射单元)可以对应于码流生成器,并直接向信令信息赋予二进制值。这种方法尤其在通过向信令信息内容赋予固定长度码以使得不需要通过熵(可变长度)编码进一步二值化来执行二值化的情况下是有益的。

换句话说,本发明的编码器包括用于将信令信息内容映射到码字的映射器或二值化器。语义规则确定如何将可能的信令信息内容映射到相应的码字上。语义规则由信号像素点值给出。为了实现有效的实施,语义规则取决于之前二值化的像素点,即,当前码流中已经包括的像素点,且使用语义规则进行编码的信令信息的内容用于编码仍将包括于当前码流中的像素点。这种码流结构能够实现在等待接收解码所需的信令信息时不需要额外存储器来存储像素点的解码。

为实现此目的,编码器还包括控制信息生成单元,用于生成信令信息。例如,可以根据分析待编码的输入信号像素点和选择产生最小成本的编码来生成信令,例如,产生最短码流或最优成本函数,例如率失真或率失真复杂度函数。

然后,信号压缩单元还用于根据生成的控制信息对第二信号像素点进行压缩。对应地,码流生成器还用于:将压缩的第二信号像素点二值化,并将二值化的第二压缩信号像素点包括于码流中。

换句话说,上述第一信号像素点可以是已经包括在码流中的一个或多个信号像素点。第二信号像素点是要使用生成的控制信息进行编码的像素点。

如下文示例性实施例所示,本发明可用于视频编码和解码。

图1示出了编码器100,包括用于接收视频流的帧或图像的输入图像像素点的输入端和用于生成编码视频码流的输出端。本发明中的术语“帧”用作图像的同义词。然而,需要说明的是,在进行隔行扫描的情况下,本发明也适用于场。一般来说,一个图像包括m×n个像素。这对应于图像像素点,并且可以包括一个或多个颜色分量。为了简单起见,以下描述均指像素,即亮度像素点。然而,需要说明的是,本发明的运动矢量搜索可以应用于包括色差的任何颜色分量或搜索空间中的rgb等分量。另一方面,仅对一个分量执行运动矢量估计并将确定的运动矢量应用于更多(或所有)分量可能是有益的。

待编码的输入块的大小不一定相同。一个图像可以包括不同大小的块,不同图像的块栅格也可以不同。

在说明性实现方式中,编码器100用于对视频流进行预测、变换、量化和熵编码。变换单元106、量化单元108和熵编码单元170分别执行变换、量化和熵编码,以生成编码视频码流作为输出。

视频流可以包括多个帧,其中每个帧被划分为一定大小的块,这些块要么进行帧内编码要么进行帧间编码。例如,视频流的第一帧的块通过帧内预测单元154进行帧内编码。帧内编码帧仅使用同一帧内的信息来编码,使得该帧能够独立解码,并且能够在码流中提供入口点进行随机访问。视频流的其他帧的块可以通过帧间预测单元144进行帧间编码,之前编码帧(参考帧)中的信息用来减少时间冗余,使得根据参考帧中的块来预测帧间编码帧的每个块。模式选择单元160用于选择帧的块将由帧内预测单元154还是由帧间预测单元144处理。模式选择单元160还控制帧内预测或帧间预测的参数。为了能够刷新图像信息,可以在帧间编码帧内提供帧内编码块。此外,可以定期地将仅包含帧内编码块的帧内编码帧插入到视频序列中,以便提供解码的入口点,即解码器无需从之前编码帧中获取信息即可开始解码的点。

帧内估计单元152和帧内预测单元154是执行帧内预测的单元。具体而言,帧内估计单元152也可以基于原始图像的信息推导出预测模式,而帧内预测单元154提供对应的预测值,即使用所选预测模式进行预测的像素点,进行差异化编码。为了执行空间预测或时间预测,编码块可进一步由反量化单元110和逆变换单元112处理。在块重建之后,环路滤波单元120用于进一步提高解码图像的质量。然后,滤波块组成参考帧,随后将参考帧存储在解码图像缓冲器130中。编码端的这种解码环路(解码器)提供的优点是,产生的参考帧与解码端重建的参考图像相同。相应地,编码端和解码端以对应的方式操作。此处术语“重建”是指通过将预测块与解码残差块相加来获取重建块。

帧间估计单元142从解码图像缓冲器130接收待进行帧间编码的当前帧或图像的块和一个或几个参考帧作为输入。运动估计由帧间估计单元142执行,而运动补偿由帧间预测单元144执行。运动估计用于基于某一成本函数获取运动矢量和参考帧,例如,还使用待编码的原始图像。例如,运动估计单元142可提供初始运动矢量估计。然后,初始运动矢量可以直接以矢量的形式在码流中标识,或者标识为根据预定规则在编码器和解码器侧以相同的方式构建的候选运动矢量列表中的候选运动矢量的索引。然后,运动补偿推导出当前块的预测值,看作是参考帧中与当前块对应位置的块向参考帧中的参考块平移,即通过运动矢量来描述。帧间预测单元144输出当前块的预测块,其中所述预测块使成本函数最小化。例如,成本函数可以是当前待编码块与其预测块之间的差值,即成本函数使残差块最小化。例如,残差块的最小化是基于计算候选参考图像中当前块和候选块的所有像素(像素点)之间的绝对差和(sumofabsolutedifferences,sad)。然而,一般来说,可使用任何其它相似度量,例如均方误差(meansquareerror,mse)或结构相似度量(structuralsimilaritymetric,ssim)。

然而,成本函数也可以是编码这种帧间块和/或这种编码产生的失真所需的比特数。因此,率失真优化流程可用于决定运动矢量选择和/或一般地用于决定编码参数,例如是使用块的帧间预测还是帧内预测以及使用哪些设置。

帧内估计单元152和帧内预测单元154接收待帧内编码的当前帧或图像的块以及当前帧的重建区域的一个或几个参考像素点作为输入。然后,帧内预测通过当前帧的参考像素点的函数来描述当前帧的当前块的像素。帧内预测单元154输出当前块的预测块,其中所述预测块有利于使当前待编码块与其预测块之间的差值最小化,即,使残差块最小化。例如,残差块的最小化可以基于率失真优化流程。具体而言,获取预测块作为参考像素点的方向插值。方向可以通过率失真优化和/或通过计算上述与帧间预测相关的相似度量来确定。

帧间估计单元142接收待进行帧间编码的当前帧或图像的块或更通用格式的图像像素点以及两个或两个以上解码图像231作为输入。然后,帧间预测在相对于参考图像的参考图像像素点的运动矢量方面来描述当前帧的当前图像像素点。帧间预测单元142输出当前图像像素点的一个或多个运动矢量,其中,运动矢量指向的所述参考图像像素点有利于使当前待编码图像像素点与其参考图像像素点之间的差值最小化,即使残差图像像素点最小化。然后,当前块的预测值由帧间预测单元144提供,用于差异化编码。

当前块与其预测块之间的差值,即残差块105,随后由变换单元106进行变换。变换系数107由量化单元108量化并由熵编码单元170进行熵编码。因此生成的编码图像数据171,即编码视频码流包括帧内编码块和帧间编码块以及对应的信令(例如,模式指示、运动矢量指示和/或帧内预测方向)。变换单元106可进行诸如傅里叶或离散余弦变换(dft/fft或dct)等线性变换。这种向空间频域的变换提供了以下优点:所得系数107通常在较低频率下具有较高值。因此,在有效系数扫描(例如z形)和量化之后,所得值序列在开始和结束时通常具有一些较大的值,其中包含一连串零。这样能够实现更有效编码。量化单元108通过降低系数值的分辨率来执行实际的有损压缩。

然后,熵编码单元170将向二进制码字赋予系数值以产生码流。熵编码单元170还对信令信息(图1中未示出)进行编码(生成语法元素值并且将其二值化)。因此,上述编码器可以实现为熵编码单元170的一部分。

如上所述,可以以任何方式执行二值化。有利的是,码流生成器用于:通过应用上下文自适应二进制算术编码(context-adaptivebinaryarithmeticcoding,cabac)对语法元素值执行二值化。cabac最近已用于avc和hevc视频编码标准,但也可用于任何其它类型的信号。这种熵编码方法效率高,接近理论界。

图3示出在hevc中使用的cabac编码器的示例。具体而言,语法元素值被插入到二值化器中。二值化器为语法元素输出二进制值,即比特b1、b2……bn。这些比特通过使用常规算术编码或旁路算术编码进一步编码。常规算术编码使用上下文模型(特定于该语法元素的概率分布)对语法元素(或其一部分)进行编码。如图3所示,根据每个编码块的统计属性来填充和持续更新上下文模型表。由于上下文模型是持续更新的,因此可以将其视为语法预测的一种形式。上下文推导通常考虑之前编码的语法元素,并根据推导出的上下文,选择多个上下文模型(概率模型)中的一个。因此,可以说,在hevccabac中,语法预测仅考虑之前编码的语法元素。

为了创建独立的码流,cabac上下文模型表在指定的点(例如在每个块的末尾)被重置。只能在重置上下文模型的所述指定点开始解码/编码cabac码流。此外,如果在编码/解码语法元素时存在误差,则关联的上下文模型将被错误地更新,从而产生传播到码流结束的误差。图3所示的cabac编码器的细节在sze、vivienne和detlevmarpe发表在的“highefficiencyvideocoding(hevc)(高效视频编码(hevc))(2014)中第209至274页的“entropycodinginhevc(hevc中的熵编码)”中描述,链接:https://dspace.mit.edu/handle/1721.1/100315。

然而,需要注意的是,本发明不限于视频编码或cabac编码。一般来说,本发明还适用于avc和上下文自适应可变长度编码(context-adaptivevariablelengthcoding,cavlc)编码或任何可变长度编码或固定编码。本发明可应用于新编解码,而不考虑对像素点和语法元素进行二值化的特定方式。

根据本发明的另一实施例,提供了一种解码器,用于从码流中解码信号,该码流包括信号像素点和与信号像素点编码相关的控制信息。该解码器能够解码由上述编码器产生的码流。

为实现此目的,解码器包括码流解析器,用于从码流中解析出(压缩的)第一信号像素点和语法元素值。这里的术语“解析”是指从码流中提取像素点和语法元素值。由于解码器已知码流的语法,因此解析是可能的。

此外,解码器可包括信号解压缩单元,用于重建压缩的第一信号像素点。该单元可以对无损或有损编码信号进行解码(解压缩)。在没有应用压缩的情况下,该单元对应于解析器,无需进一步处理即可提供信号像素点。可以仅从码流中提取信号像素点。例如,在图2中,术语“解压缩”是指帧内/帧间预测、重建(214)、环路滤波、逆变换和反量化的任何过程。

解码器还包括控制信息映射单元(解映射器),用于:

-根据重建的第一信号像素点,确定(推导出)用于向控制信息内容赋予相应语法元素值的语义规则;

-根据语义规则和解析出的语法元素值确定控制信息内容。

解映射器确定语义规则的方式与编码器相同。由于第一信号像素已经重建,且因此已经从码流中提取,可以使用第一信号像素点来选择语义规则。然后,通过语义规则定义的映射关系确定控制信息内容,以从码流中提取的语法元素值中获取控制信息内容。

码流解析器还可用于从码流中解析出压缩的第二信号像素点;信号解压缩单元还可用于根据确定的控制信息对压缩的第二信号像素点进行解压缩。

与上文对应实施例中所述的编码器类似,解码器可以用于解码视频信号,并且可以是如图2中所示的视频解码器的一部分。

图2示出了视频解码器200。视频解码器200具体包括解码图像缓冲器230、帧间预测单元244和帧内预测单元254,帧内预测单元254是块预测单元。解码图像缓冲器230用于存储从编码视频码流重建的至少一个参考帧(用于单向预测)或至少两个参考帧(用于双向预测)。所述参考帧不同于编码视频码流的当前帧(当前解码帧)。帧内预测单元254用于生成预测块,预测块是待解码块的估计值。帧内预测单元254用于根据从解码图像缓冲器230获取的参考像素点生成该预测块。

解码器200用于解码由视频编码器100生成的编码视频码流,优选地,解码器200和编码器100都为待编码/解码的相应块生成相同的预测块。解码图像缓冲器230和帧内预测单元254的特征与图1中的解码图像缓冲器130和帧内预测单元154的特征相似。

视频解码器200包括其它单元,这些单元也存在于视频编码器100中,例如,反量化单元210、逆变换单元212和环路滤波单元220,分别对应视频编码器100中的反量化单元110、逆变换单元112和环路滤波单元120。

熵解码单元204用于对接收到的编码视频码流进行解码,相应地用于获取量化残差变换系数209和信令信息。量化残差变换系数209输送到反量化单元210和逆变换单元212以生成残差块。将残差块与预测块265相加,并将相加结果输送到环路滤波单元220,得到解码视频。解码视频的帧可以存储在解码图像缓冲器230中,并用作解码图像231进行帧间预测。

需要注意的是,熵解码单元204可以实现上述解码器。具体而言,熵解码单元可对应于解码器,该解码器从码流中解析出信号像素点以及语法元素值,然后根据语义规则解映射对应的控制信息内容。

根据一个实施例,码流生成器用于:通过应用上下文自适应二进制算术解码来解析语法元素值。

图4示出了hevc中使用的与图3中所示的算术编码相对应的算术解码。具体而言,图4中的cabac解码器可以对使用参考图3所述的编码器进行编码的码流进行解码。

码流被输入到算术解码器,算术解码器根据上下文建模器提供的上下文模型对二进制值进行解码。推导出的二进制值然后输入到去二值化器,去二值化器提供语法元素值。

通常,图1和图2中的帧内预测单元154和帧内预测单元254可以使用已编码区域中的参考像素点来生成需要编码或解码的块的预测信号。

熵解码单元204接收编码码流171作为其输入。一般来说,首先解析码流,即从码流中提取信令参数和残差。通常,码流的语法和语义由标准定义,以便编码器和解码器可以通过互操作方式工作。

如上文背景技术部分所述,编码码流不仅包括预测残差。在运动补偿预测的情况下,运动矢量指示也在码流中编码并在解码器侧从中解析。运动矢量指示可以通过提供运动矢量的参考图像和运动矢量坐标来给出。到目前为止,已考虑编码完整的运动矢量。但是,也可以仅编码码流中的当前运动矢量与前一运动矢量之间的差值。该方法允许利用相邻块的运动矢量之间的冗余。

为了有效地编码参考图像,h.265编解码(itu-t、h265、h系列:audiovisualandmultimediasystems:highefficientvideocoding(视听和多媒体系统:高效视频编码))提供了一个参考图像列表,从而向相应参考帧赋予列表索引。然后,通过在码流中包含对应赋予的列表索引,在码流中标识参考帧。这种列表可以在标准中定义,或者在视频的开头或多个帧的集合中标识。需要说明的是,h.265中定义了两个参考图像列表,称为l0和l1。然后,通过标识列表(l0或l1)并在该列表中指示与预期参考图像相关联的索引,在码流中标识参考图像。提供两个或两个以上列表可能有利于更好地压缩。例如,l0可用于单向帧间预测片和双向帧间预测片,而l1可仅用于双向帧间预测片。然而,一般来说,本发明不限于l0和l1列表的任何内容。

列表l0和l1可以在标准中定义并且是固定的。然而,通过在视频序列的开始标识两个列表,编码/解码可以有更大的灵活性。相应地,编码器可以配置列表l0和l1具有根据索引排序的特定参考图像。列表l0和l1可以具有相同的固定大小。一般来说,可能有两个以上列表。运动矢量可以直接由参考图像中的坐标标识。或者,h.265中还规定可以构建候选运动矢量列表,并且可以传输列表中与特定运动矢量相关联的索引。运动矢量、列表、预测类型等都是编码的语法元素,本发明也可以应用这些语法元素。

当前块的运动矢量通常与当前图像或之前编码图像中的相邻块的运动矢量相关。这是因为相邻块很可能对应于存在类似运动的同一运动对象,并且对象的运动不大可能随时间发生突然变化。因此,使用相邻块中的运动矢量作为预测值减小了所指示运动矢量差的大小。运动矢量预测值(motionvectorpredictor,mvp)通常从对应位置图像中的空间相邻块或时间相邻块中的已经编码/解码的运动矢量推导出。在h.264/avc中,这是通过对三个空间相邻运动矢量按分量取中间值来实现的。使用这种方法,不需要标识预测值。h.264/avc中的时域直接模式只考虑对应位置图像中的时域mvp。h.264/avc直接模式还用于推导出除运动矢量之外的其它运动数据。因此,这些模式与hevc中的块合并概念关系更大。在hevc中,隐式推导出mvp的方法被一种称为运动矢量竞争的技术所取代,该技术显式地指示mvp列表中的哪个mvp用于运动矢量推导。hevc中的可变编码四叉树块结构会产生一个块,这个块的相邻块使用运算矢量作为潜在的候选mvp。以左侧相邻块为例,在最坏的情况下,当64×64亮度编码树块不再进一步拆分且左侧亮度编码树块被拆分到最大深度时,64×64亮度预测块可以在左侧具有16个4×4亮度预测块。

引入高级运动矢量预测(advancedmotionvectorprediction,amvp)来修改运动矢量竞争,以适应这种灵活的块结构。在hevc的发展过程中,最初的amvp设计被大大简化,以更好地平衡编码效率和实现友好设计。amvp的最初设计包括三类不同预测值中的五个mvp:空间相邻块中的三个运动矢量、三个空间预测值的中间值和对应位置时间相邻块中的缩放运动矢量。此外,通过重新排序来将最可能的运动预测值放置在第一位置并删除冗余候选预测值来确保最小的信令开销,从而修改预测值列表。amvp候选列表构建的最终设计包括以下两个候选mvp:(a)从五个空间相邻块中获取的最多两个空间候选mvp;(b)当两个空间候选mvp均不可用或相同时,从两个时间对应位置块中获取的一个时间候选mvp;(c)当空间mvp、时间mvp或两个候选mvp均不可用时,零运动矢量。关于运动矢量确定的详细内容,可在2014年v.sze等人(编者)在施普林格出版社(springer)发表的书中找到:highefficiencyvideocoding(hevc):algorithmsandarchitectures(高效视频编码(hevc):算法和架构),尤其是第5章,其内容以引用的方式并入本文中。

为了在不进一步增加信令开销的情况下进一步改进运动矢量估计,进一步修正编码端推导的在码流中提供的运动矢量可能是有益的。可以在解码器侧执行运动矢量修正,而无需编码器的辅助。解码器环路中的编码器可以采用相同的修正以获取对应的运动矢量。在包括参考图像的整数像素位置和分数像素位置的搜索空间中执行运动矢量修正。例如,分数像素位置可以是半像素位置或四分之一像素位置或其它分数位置。可以通过插值,例如双线性插值,从整数(全)像素位置获取分数像素位置。

在当前块的双向预测中,将使用列表l0的第一运动矢量和列表l1的第二运动矢量获取的两个预测块组合到单个预测信号,相比于单向预测,能够更好地适应原始信号,从而减少残差信息,并有可能获取更有效的压缩。

因为在解码器侧,当前块由于正在解码而不可用,所以为了运动矢量修正,使用模板,该模板是当前块的估计值并基于已经处理(即,在编码端编码,在解码端解码)的图像部分进行构建。

首先,在解码器200侧接收第一运动矢量mv0的估计值和第二运动矢量mv1的估计值作为输入。在编码端100,运动矢量估计mv0和mv1可以通过块匹配和/或通过搜索与当前块相邻的块(在同一图像中或在相邻图像中)的运动矢量组成的候选运动矢量列表(例如合并列表)来获取。然后,有利的是,在码流中向解码端标识mv0和mv1。然而,需要说明的是,一般来说,编码器侧的第一确定阶段也可以通过模板匹配执行,有利于减少信令开销。

在解码端200,有利的是,基于码流中的信息获取运动矢量mv0和mv1。要么直接标识,要么差异化标识mv0和mv1,和/或标识运动矢量列表(合并列表)中的索引。然而,本发明不限于在码流中标识运动矢量。相反,运动矢量可以由已经处于第一阶段的模板匹配确定,与编码器的操作相对应。可以在与第二修正阶段的搜索空间不同的搜索空间中执行第一阶段的模板匹配(运动矢量推导)。具体而言,可以对分辨率较高(即搜索位置之间的距离更近)的搜索空间执行修正。

同样向解码器提供mv0和mv1分别指向的两个参考图像refpic0和refpic1的指示。参考图像作为之前处理(即,相应的编码和解码)的结果存储在编码端和解码端的解码图像缓冲器中。通过搜索选择其中一个参考图像进行运动矢量修正。运动矢量确定装置中的参考图像选择单元用于选择mv0指向的第一参考图像和mv1指向的第二参考图像。在选择之后,参考图像选择单元确定是第一参考图像还是第二参考图像用于进行运动矢量修正。为了执行运动矢量修正,第一参考图像中的搜索区域定义在运动矢量mv0指向的候选位置周围。通过在搜索空间内执行模板匹配并确定绝对差和(sumofabsolutedifferences,sad)等相似度量,分析搜索区域内的候选搜索空间位置以找到与模板块最相似的块。搜索空间的位置表示模板左上角匹配的位置。如上所述,左上角只是一种约定,搜索空间的任意点,例如中心点,一般可用于表示匹配位置。

根据上述文件jvet-d0029,解码端运动矢量修正(decoder-sidemotionvectorrefinement,dmvr)将指向两个相应参考图像refpict0和refpict1的初始运动矢量mv0和mv1作为输入。这些初始运动矢量用于确定refpict0和refpict1中的相应搜索空间。此外,使用运动矢量mv0和mv1,基于mv0和mv1分别指向的(像素点的)块a和块b来构建模板,如下所示:

模板=函数((块a,块b))。

该函数可以是结合按像素点进行加权求和的像素点裁剪运算。然后,使用模板在根据相应参考图像0和1中的mv0和mv1确定的搜索空间中执行模板匹配。用于确定相应搜索空间中的最佳模板匹配的成本函数是sad(模板,块canda’),其中块canda’是指横跨mv0给出的位置的搜索空间中的候选mv指向的候选编码块。使用相同的模板来找到最佳匹配块b’和指向块b’的对应运动矢量mv1’。换句话说,在根据初始运动矢量mv0和mv1指向的块a和块b构建模板之后,利用所述模板在refpic0和refpic1中搜索,找到细化运动矢量mv0’和mv1’。

如上所述的编码器/解码器保持cabac编码/解码与相应的像素点重建分离,如图5所示。这是编解码器状态的一个非常理想的属性。h.264/avc和h.265/hevc均遵循此设计原则。对于解码操作,在最先进的视频编解码器中,熵解码过程与像素点重建完全分离。这意味着熵解码器对语法元素进行解码不需要重建像素点的值。提出该需求主要有两个原因:(1)避免解析依赖性,即像素重建过程通常需要时间或空间相邻像素点。对于相邻像素点可能无法重建的一些应用,这可能很常见。如果熵解码没有分离,那么语法元素就会损坏。另一个原因是硬件实现:最新的计算平台利用多核实现。通常,cabac解码由一个单独的引擎与像素点重建同时执行。如果从像素点重建与cabac解码之间存在任何依赖关系,那么cabac引擎就会大大减慢(需要等待像素点重建)。

本发明的动机是使用重建像素点进行语法预测,以提高编码增益。同时遵循分离的熵编码和像素重建设计。

如上所述,根据本发明,语法元素(映射)的值的含义(语义)的选择取决于根据之前的重建像素点的值计算的函数生成的索引。

这种意义下的重建像素点可以是:图2的解码器200的重建像素点215、环路滤波重建像素点221、解码像素点231/232。对应地,重建像素点可以是图1的编码器100的重建像素点115、环路滤波重建像素点121、解码像素点130/231。更一般来说,甚至可以在编码器中的重建113和预测信号165之前以及在解码器中的相应变换像素点213和预测信号265之前对像素点进行变换。当加在一起时,产生了重建像素点。

前面的语法元素(按编码顺序)只允许引用语法元素的值(应独立于语法元素的语义)。

图6示出了根据示例性实施例的对图4进行修改得到的解码器。具体而言,实现cabac的熵解码器发送语法元素a。然后,将语法元素提供给解映射器610,解映射器610还利用之前重建的信号像素点(一个或多个)确定语义规则,并根据语义规则将语法元素解映射到控制信息内容。

根据一个实施例,确定语义规则作为索引,标识将控制信息内容与相应语法元素值相关联的多个预定义表中的一个,该索引被确定为重建信号像素点的函数。在此上下文中,表格是与信令信息内容分别关联的任何索引值集合。不需要存储任何表结构。可以在运行时生成关联信息,例如,通过算法和/或以不同于表格的形式/结构存储,例如列表、文本文件或其它任何形式。

图7和图8示出了根据上述实施例的解码和编码的示例。从这些图中可以看出,解码端(图7)以及编码端(图8)各有2个可用表:表1和表2。两个表将语法元素(示例性语法元素a)的相同值与相应的控制信息内容相关联。但是,表1和表2中的关联关系各不相同。具体而言,表1中语法元素a的值0、1、2分别与处理1、处理2、处理3相关联。处理1、处理2和处理3可以例如定义在对一个或多个信号像素点进行编码时要执行的处理。表2中语法元素a的值0、1、2分别与处理3、处理1和处理2相关联。

换句话说,语义规则是第一表或第二表,语法元素可以取第一值或第二值。第一表将语法元素的第一值与第一控制信息内容相关联,将第二值与第二控制信息内容相关联。第二表将语法元素的第一值与第二控制信息内容相关联,将第二值与第一控制信息内容相关联。

图7示出了输入解码器(解码过程)700的码流701。为了从码流中解析出语法元素,使用如上所述的cabac解码器710。在应用cabac解码器之后,获取语法元素a711。为了解释语法元素a,语法元素a可以取0、1、2中的一个值,解码器700必须知道语义关联关系。在本示例中,语义信息是表1和表2中的一个表。根据之前重建的一个或多个信号像素点r决定使用表1和表2中的哪一个。具体而言,表索引可以确定为之前重建的一个或多个像素点r的函数。该函数可以具有其它自变量,例如语法元素(在这种情况下,语法元素a)和/或其它控制参数。例如,另一自变量可以是指示编码块大小的控制信息,或指示针对编码视频序列是否启用/禁用的特定编码过程的控制信息(即h.265视频编码标准中序列参数集(sequenceparameterset,sps)中的控制标志)。本示例中的索引可能取值1或值2。值1与表1相关联,值2与表2相关联。相应地,根据索引来选择表。假设从码流中解析出的语法元素a的值为0。此时,如果表索引的值为1,则使用表1,信令信息的内容为处理1。另一方面,如果表索引的值为2,则使用表2,信令信息的内容为处理3。处理1和处理3可以表示用于解码(待)从码流中解析出的信号像素点的两种不同方法。在标识信令信息内容之后,信令信息内容用于控制对信号像素点解码器720中的信号像素点的解码。

根据例如视频编码标准中定义的块扫描规则将对应于像素点块的信号像素点编码到码流中(并从码流中解码)。h.265等基于块的混合视频编码标准采用像素点块扫描规则,例如“z扫描顺序”或“光栅扫描顺序”,这些规则描述如何将图像帧划分成像素点块,以及必须按何种顺序在码流中插入(或从码流中获取)对应于像素点块的像素点。

图8示出了对应的编码器800。具体而言,语法元素a将被编码并插入到码流801中(如果传输/读取码流没有发生误差,则对应于图7中的码流701)。

需要注意的是,上述示例涉及2个表:表1和表2。然而,本发明并不限于此,一般来说,可使用任何数量的表。在这种情况下,之前编码/解码的信号像素点的函数可以取对应于为将语法元素值与相应控制信息内容相关联而定义的相应不同表的不同值,在本示例中,控制信息内容为处理3。控制信息内容通过表1或表2映射到语法元素值上。根据之前重建的一个或多个信号像素点来决定使用这些表中的哪一个,方式与上文结合图7描述的方式相同。相应地,在图8中,之前重建的像素点与可能更多参数的函数返回与表1或表2相关联的表索引。如果表索引为1,则使用表1,并且使用语法元素值2对控制信息内容“处理3”进行编码。如果表索引为2,则使用表2,并且使用语法元素值0对控制信息内容“处理3”进行编码。然后,cabac编码器810对根据表索引获取的语法元素值811进行编码,从而产生一部分码流添加到携带与控制信息对应的语法元素和与编码信号像素点对应的语法元素的码流中。此外,处理3用于对一些其它信号像素点进行编码。

第一种具体的示例性实现方式涉及视频编码。相应地,信号为视频信号,控制信息使用第一控制信息内容指示双向预测,使用第二控制信息内容指示单向预测,所述双向预测和单向预测用于模板匹配中以获得信号像素点预测值。具体而言,根据模板匹配成本函数选择第一表和第二表,模板匹配成本函数是以模板分别与基于双向预测的预测值和基于单向预测的预测值之间的相似度为基础。

运动矢量推导技术有时也被称为帧率上转换(framerateup-conversion,fruc)或解码端运动矢量推导(decodersidemotionvectorderivation,dmvd)。初始运动矢量mv0和mv1通常可以在码流中指示,以确保编码器和解码器可以使用同一初始点进行运动矢量修正。或者,可以通过提供包括一个或多个初始候选运动矢量的初始候选运动矢量列表来获得初始运动矢量。对于每个运动矢量,确定修正运动矢量,最终选择使成本函数最小化的修正运动矢量。

关于双向预测的模板匹配和同样适用于单向预测的替代模板匹配可以参见文件jvet-a1001,具体是jianlechen等人发表的标题为“algorithmdescriptionofjointexplorationtestmodel1(联合探索测试模型1的算法描述)”中的第2.4.6节的“patternmatchedmotionvectorderivation(模式匹配的运动矢量推导)”,访问网址是http://phenix.it-sudparis.eu/jvet/。这种模板匹配方法中的模板被确定为与当前帧中的当前块相邻的像素点。可以采取与当前块的左上边界相邻的重建像素点,称为“l形模板”。

也可使用另一种运动矢量推导。运动矢量推导过程的输入是指示是否进行运动矢量推导的标志。隐晦地说,推导过程的另一输入是(时间上或空间上)相邻的之前编码/重建块的运动矢量。将多个相邻块的运动矢量用作运动矢量推导的初始搜索步骤的候选运动矢量。该过程的输出分别为mv0’(如果使用双向预测,则也可能是mv1’)和对应的参考图像索引refpict0,也可能为refpict1。然后,运动矢量修正阶段包括如上所述的模板匹配。在找到修正的一个(单向预测)运动矢量或多个(双向预测/多帧预测)运动矢量后,构建当前块的预测值(对于双向/多帧预测,通过加权像素点预测,否则,参考修正后mv指向的像素点)。

本发明不限于上述两种模板匹配方法。例如,称为双向匹配(也在文件jvet-a1001中描述)的第三模板匹配方法也可以用于运动矢量修正,并且本发明以类似的方式适用。根据双向匹配,搜索沿着两个不同参考图像中当前块的运动轨迹的两个块之间的最佳匹配。假设存在连续运动轨迹,指向两个参考块的运动矢量mv0和mv1应与当前图像与两个参考图像之间的时间距离亦即td0和td1成比例。在双向匹配中,可能使用sad(块cand0’,块cand1’)等成本函数,其中mv0指向块cand0’,mv1指向块cand1’。

如上所述,fruc是使用模板匹配来确定预测块的运动矢量的解码端运动矢量推导工具。为了在特定图像像素点块的预测方向(单向预测、双向预测)之间进行选择,可以将语法元素fruc_prediction_direction插入到码流中。这里的语法元素针对fruc模板匹配在单向预测和双向预测之间选择。换句话说,语法元素确定是在一个还是两个参考图像中进行模板匹配。例如,语法和语义映射可以如下所示:

-表1将语法元素fruc_prediction_direction的值0与fruc双向预测相关联,将fruc_prediction_direction的值1与fruc单向预测相关联。

-表2将语法元素fruc_prediction_direction的值1与fruc双向预测相关联,将fruc_prediction_direction的值0与fruc单向预测相关联。

选表函数(生成分别与表1或表2相关联的索引1或索引2的函数)可以定义如下:

索引=template_matching_cost(模板,candidate_block_a)<k+m×template_matching_cost(模板,(candidate_block_a+candidate_block_b)/2)?2:1

在上述公式中,符号“?2:1”可以解释为“条件”语句。如果条件(由小于运算给出的条件)被评估为正确,则索引设为2。如果条件被评估为错误,则索引设为1。

第一模板匹配成本表达式“template_matching_cost(template,candidate_block_a)”生成用于单向预测误差的估计值。例如,可以将模板匹配成本计算为模板与对应候选块a的参考图像的最佳匹配部分的绝对差之和。换句话说,块a是对应于一个参考图像中的最佳匹配块的当前块的候选预测块,即,块a是单向预测的结果。第二成本函数产生双向预测误差的估计值。换句话说,第二模板匹配成本表达式“template_matching_cost(模板,(candidate_block_a+candidate_block_b)/2)”对应双向预测结果的模板匹配成本。第二模板匹配成本可以定义为模板和预测值之间的绝对差之和,该绝对差是通过对在相应的两个参考图像中找到的最佳匹配块进行平均而得到的。这里假设使用上述模板匹配和块模板。模板可以对初始运动矢量指向的块和通过fruc修正的运动矢量指向的块做加权平均获得。根据模板匹配成本,模板的获取可以基于单向预测或者双向预测。在上述模板匹配成本的表达式中,使用权重1/2和1/2计算相应不同参考图像中的块a和b的加权平均值。然而,本发明不限于此,权重可以以不同方式设置,例如,与待编码/解码的当前块与块a和块b所在的相应参考图像之间的距离(以时间或图像的数量来衡量)成比例。其它权重设置也是可能的,对于本领域技术人员是显而易见的。类似地,通过计算获得块模板的加权平均可以使用相同的权重或不同的权重。

在上述索引计算函数中,如果不等式template_matching_cost(模板,candidate_block_a)<k+m×template_matching_cost(模板,(candidate_block_a+candidate_block_b)/2)成立(逻辑为真),则选择指向表2的索引值2。如果不等性不成立(逻辑为假),则选择指向表1的索引值1。其中k和m为加权因子。在一个示例性的实现方式中,k=0,m=1。然而,通过设置不同的权重来优先使用单向预测或双向预测可能是有利的。例如,由于双向预测通常由于平均效应(减少参考图像上的量化噪声)而产生更好的预测,因此使用小于零的值k和小于1的值m可能是有益的。在这种情况下,双向预测会比单向预测更受欢迎,这反过来会提高预测性能。权重k和m可以根据经验设置和/或在标准中定义或在码流中标识。

换句话说,如上文示例所见,上述编码和解码可用于语法元素,指定针对使用模板匹配的运动矢量修正,是使用单向预测还是双向预测。由于模板匹配在编码器和解码器侧执行,因此已恢复的像素点(即,编码器或解码器侧的之前重建的块)的模板匹配成本在编码器和解码器侧是已知的并且是以它们为基础,可以确定当前像素点(当前编码/解码块)的语义。在上述示例中,模板是基于块的模板。然而,本发明并不限于此,一般来说,也可以使用基于当前块周围的像素点(像素)的模板。在这种情况下,可以在模板和候选块周围的参考图像的相应部分之间计算成本函数。

第二种具体的示例性实现方式涉及视频编码。相应地,信号(也)为视频信号。控制信息使用第一控制信息内容指示局部亮度补偿功能开启,使用第二控制信息内容指示局部亮度补偿功能关闭。此外,根据当前图像帧中的重建像素点与按编码顺序在当前图像帧之前的图像帧中的对应重建像素点之间的相似度函数选择第一表或第二表。

局部亮度补偿是一种在视频编码和解码过程中可能用到的工具(参考jianlechen等人发表的文件jvet-g1001,“algorithmdescriptionofjointexplorationtestmodel7(联合探索测试模型7的算法描述)”,第2.3.5节,访问网址是http://pineix.it-sudparis.eu/jvet/)。局部亮度补偿(localilluminationcompensation,lic)基于亮度变化的线性模型,使用缩放因子a和偏移b。针对每个帧间模式编码的编码单元(codingunit,cu)自适应地开启或关闭局部亮度补偿。当lic应用于cu时,使用最小二乘法通过当前cu的相邻像素点及其对应的参考像素点推导出参数a和b。更具体地,使用参考图像中的cu的次采样(2:1次采样)相邻像素点和对应像素点(由当前cu或子cu的运动信息识别)。分别推导了各预测方向的ic参数,并应用于各预测方向。用于推导出权重a和b的通用公式可以将下文图13中所示的所有p_c和p_r的表达式sum(a×p_c+b–p_r)最小化。图13示出了具有直接相邻且已编码/解码的像素位置(像素点或采样点)p_c的当前编码单元(codingunit,cu)。p_c是经过2:1次采样的像素,表示每隔一个位置取一个像素。p_r是位于参考块周围的对应位置的像素点。

当针对一张图像启用lic时,需要额外的cu级rd检查,以确定lic是否适用于cu。当针对cu启用lic时,分别针对整数像素运动搜索和分数像素运动搜索使用去除平均绝对差和(mean-removedsumofabsolutedifference,mr-sad)以及去除平均绝对阿达马变换差和(mean-removedsumofabsolutehadamard-transformeddifference,mr-satd),而不是sad和satd。算法描述参见jianlechen等人的jvet-g1001,“algorithmdescriptionofjointexplorationtestmodel7(联合探索测试模型7的算法描述)”,访问网址是:http://pineix.it-sudparis.eu/jvet/。

本发明的编码和解码可应用于打开和关闭lic的语法元素lic_flag。例如,可以定义以下语法和语义:

-表1定义了lic_flag值和lic开关控制信息之间的关联关系:如果lic_flag的值为0,则关闭lic(不应用lic);如果lic_flag的值为1,则应用lic(开启)。

-表2定义了lic_flag值和lic开关控制信息之间的关联关系:如果lic_flag的值为1,则关闭lic(不应用lic);如果lic_flag的值为0,则应用lic(开启)。

为了找到指向表1或表2的索引,可以使用以下函数:

索引=距离(预测块周围的像素点,参考图像中的相应像素点)<thr?2:1

图9示出了距离度量(上述“距离”)。当前帧包括待预测的当前预测块(predictionblock,pb)。mv是从模板匹配得出或标识并指向参考图像(帧)中最佳匹配块的运动矢量。此距离度量可定义为sad(tc,tc_ref)。在这种情况下,上述的函数(r,其它参数)为f(r)=sad(tc,tcref)<thr=r→1∧(sad(tc,tcref)≥thr→2)。tc是当前块周围的像素点(像素)集。tc_ref是mv指向的对应最佳匹配块周围的像素点(像素)集。thr是阈值,可以为固定大小、自适应地选择或标识。sad可以用任何其它距离成本函数来代替。所使用的实际函数和像素点仅作为示例给出。一般来说,可以使用通过所有之前语法元素(按解码顺序)进行解码的所有像素点,但不包括未处理的(待预测的)语法元素。此外,模板也只是一个示例,其它大小和形状(例如,也可以使用上述的块模板)。

根据tc和tc_ref之间的距离与阈值thr的比较来确定索引。如果距离小于thr,则选择表1(对应于索引值1)。如果距离较大(或相等),则选择表2(对应于索引值2)。距离度量可以是有符号的,也可以是无符号的。相应地,阈值可以是无符号的,也可以是有符号的。在sad的情况下,距离是无符号的,因此阈值也是无符号的。可以根据经验通过测试来选择阈值。需要注意的是,上述2:1次采样仅仅是一个示例,一般来说,可以不应用次采样或应用不同的次采样。

第三种具体的示例性实现方式也涉及视频编码。相应地,信号为视频信号。控制信息指示运动矢量的分量的正负号,该分量为垂直分量或水平分量。此外,根据具有相应正负号的运动矢量指向的预测块与(待编码/待解码)当前块周围的像素点之间的相似度函数选择第一表或第二表。

换句话说,语法元素mvd_sign_bit_x和/或语法元素mvd_sign_bit_y可以如上所述进行编码和/或解码。语法元素mvd_sign_bit_x和mvd_sign_bit_y定义了运动矢量差的x分量和y分量的符号(加或减)。

mvx=mv_predictorx+mvd_sign_bit_x×mvdx给出预测块的运动矢量mvx。由于运动矢量具有2个分量,因此y分量以类似方式计算为预测块的mvy:mvy=mv_predictory+mvd_sign_bit_y×mvdy。mv_predictor为预测块的运动矢量(motionvector,mv)的估计值(预测值)。通常使用之前编码的预测块的运动矢量中的一个或多个得到mv_predictor,mvdx是需要插入到码流中以获取预测块的mv的运动矢量差(delta)。例如,关于运动矢量编码的进一步细节,可以参见viviennesze、madhukarbugadavi和garyj.sullivan的“highefficiencyvideocoding(hevc)algorithmsandarchitectures(高效视频编码(hevc)算法和结构)”的第5.2节“motiondatacoding(运动数据编码)”。

本发明中的编码和/或解码可以应用于语法元素mvd_sign_bit_x和/或mvd_sign_bit_y。

然后,对于语法元素mvd_sign_bit_x,语义表可以定义如下:

-表1定义语法元素mvd_sign_bit_x的值为0,表示mv在x方向上的差为正;定义语法元素mvd_sign_bit_x的值为1,表示mv在x方向的差值为负。

-表1定义语法元素mvd_sign_bit_x的值为1,表示mv在x方向上的差为正;定义语法元素mvd_sign_bit_x的值为0,表示mv在x方向的差值为负。

语法元素mvd_sign_bit_y可以共享同一表或不同的表,也可以针对语法元素mvd_sign_bit_y定义不同的表。

有利的是,为了决定应用两个表中的哪一个,计算索引如下:

-前2个运动矢量计算为

○mv1x=mv_predictorx+mvdx,mv1y=mvy

○mv2x=mv_predictorx–mvdx,mv2y=mvy

-其次,参考图像中由mv1x指向的像素点块用pred1表示,参考图像中由mv2x指向的像素点块用pred2表示。

-如果距离(待预测块周围的像素点,pred1)<k+m×距离(待预测块周围的像素点,pred2),则索引设为1。否则,索引设为2。

图10中示出了距离。具体而言,距离度量可定义为sad(tc,tc_ref)。考虑参考图像中的pb内的像素点并将这些像素点与当前pb(待预测块)周围的像素点进行比较。sad可以用任何其它距离成本函数来代替。换句话说,考虑到给定mvd_sign_bit_x为正和mvd_sign_bit_x的值为负,根据当前预测块(predictionblock,pb)周围的像素点tc与参考图像(帧)中预测块内的像素点tc_ref之间的距离决定使用哪个表。参考图像中的预测块pb即为运动矢量mv指向的块。运动矢量mv的值取决于mvd_sign_bit_x的值,因此根据mvd_sign_bit_x是正还是负,可以得到2个不同的mv值,产生参考图像中的2个不同预测块(上文由pred1和pred2表示)。如果mvd_sign_bit_x为正(pred1)时的距离小于mvd_sign_bit_x为负(pred2)的加权距离,则使用表1。否则,使用表2。类似地,可以为语法元素mvd_sign_bit_y计算索引。同一在上述第一示例(关于单向预测/双向预测的语法元素)中,可以将权重k和m设为k=0和m=1,但是以不同的方式设置值可能是有益的。本示例中的k和m的值可以与上述第一种具体的示例性实现方式中的值k和m不同。

第四种具体的示例性实现方式涉及视频编码。上述示例涉及语法元素的情况,这些语法元素可以取两个值,并且只使用两个不同的表。然而,需要注意的是,本发明不限于这些示例。一般来说,语法元素可以取任意数量的值,而表的数量则保持为2,或者还可以增加。在以下第四示例中,通过应用如上所述的编码器和/或解码器对环路滤波器索引语法元素进行编码和/或解码。环路滤波器索引语法元素(针对滤波区域标识)指示需要使用哪个滤波器对帧区域进行滤波。方差函数用于估计滤波区域内的信号噪声(也可以使用其它函数)。阈值化的索引值用于在语法值与语义映射表之间切换。

具体而言,语法元素loop_filter_index指示使用哪个滤波器。在本示例中,loop_filter_index可以取不进行滤波、弱滤波、强滤波三个值。对应的语法和语义如下所示:

-表1:loop_filter_index值0表示不应用滤波器,值1表示要应用弱滤波器,值2表示要应用强滤波器。

-表2:loop_filter_index值0表示要应用弱滤波器,值1表示不应用滤波器,值2表示要应用强滤波器。

-表3:loop_filter_index值0表示要应用强滤波器,值1表示要应用弱滤波器,值2表示不应用滤波器。

这里的术语“弱滤波器”和“强滤波器”是指将要应用的特定预定滤波器。例如,在hevc中,标准中定义了强滤波器和弱滤波器。在本实施例中是这种情况。然而,也可以标识滤波参数等。

表(与相应表相关联的索引)可以如下选择:

如果(方差(x)<t1)

索引=1

如果(t1<方差(x)<t2)

索引=2

如果(t2<方差(x))

索引=3

在上述决策中,一个区域内的像素被定义为x。因此,x是决策中使用的区域像素集。这里的区域可以是cu、ctu、切片、块、图像等。它可能是为滤波目的而定义的滤波区域。阈值t1和t2可以根据经验确定并在标准中或待向解码器标识的码流中的编码器设置中预先设置。本发明不限于所述方差。例如,可以使用该区域中最小像素值和最大像素值之间的差值等其它度量,而不是方差。其它度量是可能的。

在上述示例中,表的数量和语法元素值的数量是相同的。但是,一般来说,表的数量可能少于语法元素值的数量。类似地,表的数量可以多于值的数量。

在给出的示例中,每个表中的控制信息内容相同,只是顺序(因此对语法元素值的赋值)不同。一般来说,各表中的控制信息内容也可能不同。例如,在之前的示例中,表3可以如下所示(保持表1和表2相同)。

-表3:loop_filter_index值0表示要应用强滤波器,值1表示要应用第二强滤波器,值2表示要应用第三强滤波器。

在上述示例中,第二强滤波器可以是与强滤波器具有类似特性但具有不同滤波系数的滤波器。

需要说明的是,上述编码器和解码器的实施例是指执行编码、映射和压缩等的相应功能单元。然而,上述实施例可以在体现上述相应编码和/或解码装置的集成电路中实施。此外,本发明的编码器和解码器可以实现为视频编解码器或音频编解码器的一部分。它可以是处理电路的一部分,执行与信号的编码和解码相关的其它功能。一般来说,上述编码器和/或解码器可以通过软件和硬件的组合来实现。对应地,提供了用于编码和解码的方法。例如,图11示出了编码方法,图12示出了解码方法。

图11示出了一种用于将信号编码到码流中的编码方法。该码流包括信号像素点和与信号像素点编码相关的控制信息。该方法包括以下步骤:压缩1130第一信号像素点并重建压缩的第一信号像素点;根据重建的第一信号像素点选择1140用于向控制信息内容赋予相应语法元素值的语义规则,根据语义规则和控制信息内容确定语法元素的值;通过将压缩的第一信号像素点和确定的语法元素值二值化1150,生成码流。

此外,在使用控制信息给出的编码模式对信号像素点进行编码之后,还可以对信号像素点进行二值化1150。输入信号像素点进行编码1110并确定编码模式,之后可以生成1120控制信息。

对应地,图12示出了一种用于从码流中解码信号的解码方法。该码流包括信号像素点和与信号像素点解码相关的控制信息。该方法包括:从码流中分别解析出1210/1220压缩的第一信号像素点和语法元素值;重建1230压缩的第一信号像素点;根据重建的第一信号像素点选择1240用于向控制信息内容赋予相应语法元素值的语义规则;根据语义规则和解析出的语法元素值确定1250控制信息内容。根据控制信息,可以解码1260从码流中解析出的其它像素点。

编码装置和/或解码装置的实施例可以实现为硬件、固件、软件或其任何组合。例如,编码或解码的装置/方法的功能可由处理电路执行,无论其是否有固件或软件,例如,处理器、微控制器、数字信号处理器(digitalsignalprocessor,dsp)、现场可编程门阵列(fieldprogrammablegatearray,fpga)、专用集成电路(application-specificintegratedcircuit,asic)等。

编码装置(和相应的编码方法)和/或解码装置(和相应的解码方法)的功能可以通过存储在计算机可读介质上的程序指令来实现。当程序指令被执行时,使得处理电路(例如,计算机、处理器等)执行所述编码和/或解码方法的步骤。计算机可读介质可以是包括非瞬时性存储介质的存储程序的任何介质,例如dvd、cd、usb(闪存)驱动器、硬盘、通过网络可用的服务器存储等。

综上所述,本发明涉及将信号和语法元素编码到码流中/从码流中解码信号和语法元素。在编码/解码时,根据之前解码的信号像素点推导出语法元素的语义。这种编码/解码适用于例如视频或音频信号。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1