用于针对图像的重建样本的集合提供补偿偏移的方法和装置与流程

文档序号:13425711阅读:213来源:国知局
用于针对图像的重建样本的集合提供补偿偏移的方法和装置与流程

(本申请是申请日为2012年11月7日、申请号为201280059765.1、发明名称为“用于针对图像的重建样本的集合提供补偿偏移的方法和装置”的申请的分案申请。)

本发明涉及用于针对图像的重建样本的集合补偿偏移的方法和装置。本发明还涉及用于对数字图像序列进行编码或解码的方法和装置。

本发明可以应用于数字信号处理领域,尤其应用于使用运动补偿来减少视频流中的空间冗余和时间冗余的视频压缩领域。



背景技术:

例如h.263、h.264、mpeg-1、mpeg-2、mpeg-4、svc等的许多视频压缩格式使用基于块的离散余弦变换(dct)和运动补偿来除去空间冗余和时间冗余。这些格式经常被称为预测视频格式。视频信号的各帧或各图像被分割成进行了编码并且能够独立进行解码的片(slice)。片通常是帧的矩形部分、或者更通常为帧的一部分或整个帧。此外,各片可以被分割成宏块(mb),并且各宏块被进一步分割成块、通常为64×64、32×32、16×16或8×8个像素的块。

在高效率视频编码(hevc)中,可以使用64×64~4×4的块。根据四叉树结构,基于最大编码单位(lcu)来对该分区进行组织。lcu与64×64的正方形块相对应。如果需要对lcu进行分割,则分割标志表示将lcu分割成4个32×32的块。同样,如果需要对这4个块中的任何块进行分割,则将分割标志设置为真并且将32×32的块分割成4个16×16的块等。在将分割标志设置为假的情况下,当前块是编码单位cu。cu的大小等于64×64、32×32、16×16或8×8个像素。

存在如下两类编码模式来对图像的块进行编码:被称为帧内(intra)预测的基于空间预测的编码模式和基于时间预测的编码模式(帧间(inter)、合并(merge)、跳过(skip))这两类编码模式。在空间预测模式和时间预测模式这两者中,通过从原始块中减去预测值来计算残差。

通常根据intra块的因果边界处的编码像素,通过intra预测处理来预测该intra块。在intra预测中,对预测方向进行编码。

时间预测在于:从参考帧(视频序列的先前帧或将来帧)中发现与要编码的块最接近的图像部分或参考区域。该步骤通常已知为运动估计。接着,在通常被称为运动补偿的步骤中使用参考区域来预测要编码的块,即连同与表示运动补偿要使用的参考区域的运动矢量有关的运动信息项一起,对要编码的块和参考部分之间的差进行编码。在时间预测中,对至少一个运动矢量进行编码。

为了进一步降低对运动信息进行编码的成本,代替直接对运动矢量进行编码,在假定运动均匀的情况下,可以按照运动矢量和通常根据要编码的块周围的块的一个或多个运动矢量所计算出的运动矢量预测结果之间的差来对运动矢量进行编码。

在h.264中,例如,针对根据位于要编码的块的因果邻域的运动矢量(例如根据位于要编码的块的上方和左方的三个块)所计算出的中值预测结果,来对运动矢量进行编码。仅将中值预测结果和当前块运动矢量之间的差(还被称为残差运动矢量)编码在位流中以降低编码成本。

使用残差运动矢量的编码节省了若干位率,但需要解码器进行运动矢量预测结果的相同计算从而对要解码的块的运动矢量的值进行解码。

编码处理和解码处理这两者都可能涉及编码图像的解码处理。为了使得编码器和相应解码器能够具有相同参考帧的未来运动估计的目的,该处理通常在编码器侧进行。

为了重建编码帧,对残差进行逆量化和逆变换,从而在像素域中提供“解码”残差。然后,利用一种或几种后滤波处理来对第一重建进行滤波。将这些后滤波器在编码器和解码器侧应用于重建帧以使得在这两侧使用相同的参考帧。该后滤波的目的是消除压缩效应。例如,h.264/avc使用去块滤波器。该滤波器可以消除由于残差的dct量化和块运动补偿所引起的块效应(blockingartifact)。在当前hevc标准中,使用去块滤波器、样本自适应偏移(sao)和自适应环路滤波器(alf)这三种环路滤波器。

图1是示出已知的hevc实现的环路滤波处理的步骤的流程图。在初始步骤101中,编码器或解码器生成整个帧的重建。接着,在步骤102中,对该第一重建应用去块滤波器从而生成去块重建103。去块滤波器的目的是消除残差量化和块运动补偿或块帧内预测所产生的块效应。这些效应在低位率的情况下在视觉上是重要的。去块滤波器工作以根据两个相邻块的特性来使块边界平滑化。考虑各块的编码模式、残差编码所使用的量化参数、以及边界中的相邻像素差。对所有帧应用相同的标准/分类并且没有传输附加数据。去块滤波器通过消除块效应来改进当前帧的视觉质量,并且去块滤波器还改进了针对后续帧的运动估计和运动补偿。实际上,消除了块效应的高频率,因此无需利用后续帧的纹理残差来对这些高频率进行补偿。

在去块滤波器之后,在步骤104中利用样本自适应偏移(sao)环路滤波器来对去块重建进行滤波。然后,在步骤106中利用自适应环路滤波器(alf)对由此得到的帧105进行滤波以生成重建帧107,其中将显示并使用该重建帧107作为后续帧间帧的参考帧。

与没有传输信息的去块滤波器相对,sao环路滤波器和alf的目的是通过发送附加数据来改进帧重建。

sao环路滤波器的原理是将各像素分类成类并且向该类的各像素的各像素值添加相同的偏移值。因而,针对各类传输一个偏移。sao环路滤波提供了针对帧区域的边缘偏移和带偏移这两种分类。

边缘偏移分类涉及通过将各像素的相应像素值与两个相邻像素的像素值进行比较来确定该像素的类。此外,两个相邻像素依赖于表示这两个相邻像素的方向的参数。这些方向是0度(水平方向)、45度(对角线方向)、90度(垂直方向)和135度(另一对角线方向)。以下将这些方向称为边缘偏移分类的“类型”。

第二种分类是依赖于像素值的带偏移分类。sao带偏移中的类与像素值的范围相对应。因而,向具有给定范围的像素值内的像素值的所有像素添加相同的偏移。

为了更适应于帧内容,已提出了应用基于四叉树结构的sao滤波以对sao进行编码。结果,与四叉树的叶节点相对应的帧区域可以由sao进行滤波或可以不由sao进行滤波,使得仅对部分区域进行滤波。此外,在sao有效的情况下,根据针对各分类所传输的相关参数仅使用一个sao分类(边缘偏移或带偏移)。最后,针对各sao叶节点,传输sao分类及其参数以及所有类的偏移。

四叉树的主要优点是高效地跟随信号的局部属性。然而,四叉树需要位流的专用编码。还可以设想利用按照lcu等级的编码来替换sao参数的基于四叉树的编码的另一解决方案。

可以将要编码的视频数据的图像提供作为样本值的一组二维阵列(还已知为颜色通道),其中该二维阵列的各条目表示诸如从中性灰度颜色向着蓝色或红色(yuv)的亮度明度和色度颜色偏差的度量、或者红色、绿色或蓝色光成分强度(rgb)的度量等的颜色成分的强度。yuv模型定义了一个亮度(y)成分和两个色度(uv)成分的颜色空间。通常,y代表亮度成分(明度),并且u和v是色度(颜色)或色差成分。

独立地对亮度成分以及对u和v色度成分这两者应用sao滤波。

如图2所示,sao带偏移的已知实现将像素值的范围分割成预定义的相同大小的32个范围。像素值的范围的最小值系统地为零,并且根据以下关系max=2位深度-1可知,最大值依赖于像素值的位深度。例如,在位深度为8位时,像素的最大值可以为255。因而,像素值的范围为0~255。对于8位的该位深度,各类包括16个像素值的范围。此外,对于sao带偏移,考虑2个组的类。第一个组包含如图2的灰色所示的像素值的范围的中心的16个连续类。第二个组也包含16个类,但位于如图2的阴影所示的像素值的范围的两端。对于帧区域的sao带偏移,将分类所使用的组和16个偏移插入位流中。

图3是示出用于针对当前帧区域303在编码器中选择偏移值的方法的步骤的流程图。该帧区域包括n个像素。在初始步骤301中,针对16个范围各自将变量sumj和sumnbpixj设置为值零。j表示当前范围或类编号。sumj表示范围j内的像素的值和这些像素的相应原始像素的值之间的差的总和。sumnbpixj表示范围j内的像素数。

在步骤302中,将计数器变量i设置为值零。接着,在步骤304中提取帧区域303的第一个像素。假定处理中的当前sao组是已知的(如图2所示的第一个或第二个)。如果在步骤305中判断为像素值pi不在当前sao组内,则在步骤308中使计数器变量i值递增,从而对帧区域303的后续像素进行分类。否则如果在步骤305中判断为像素值pi在当前sao组内,则在步骤306中寻找与pi的值相对应的范围编号(或类编号)j。在后续步骤307中,相应的sumnbpixj变量递增,并且将pi和其原始值piorg之间的差与sumj相加。在以下步骤中,使计数器变量i递增,从而向帧区域303的其它像素应用分类。在步骤309中,判断是否已对帧区域303的所有n个像素进行了分类(即,判断i≥n是否成立),如果为“是”,则在步骤310中计算各类的offsetj,从而产生呈现各类j的偏移的偏移表311作为偏移选择算法的最终结果。计算该偏移作为类j的像素的像素值和这些像素各自的原始像素值之间的差的平均值。然后,通过以下等式给出类j的offsetj。

图4是示出向相应组的类应用sao带偏移的解码处理的步骤的流程图。该处理还可以在编码器侧应用,从而产生后续帧的运动估计和补偿所使用的参考帧。

该处理的初始步骤401涉及针对像素的各类对偏移值进行解码,从而产生偏移表402。在编码器侧,偏移表402是图3所示的选择算法的结果。因而,在编码器侧,步骤401被图3的偏移选择算法替换。

在步骤403中,将计数器变量i设置为0。在步骤405中,从包含n个像素的帧区域404中提取像素pi。在步骤406中,判断像素pi是否属于类的当前组。如果判断为像素pi在类的当前组内,则识别相关的类编号j,并且在步骤409中,从偏移表402中提取相关的偏移值offsetj。然后,在步骤410中将所提取出的偏移值offsetj与pi的像素值相加,从而在步骤411中产生滤波后的像素pi’。然后,在步骤412中,在相应的像素处,将滤波后的像素值插入滤波后的帧区域415中。

如果在步骤406中判断为像素pi不在sao带偏移组内,则在步骤412中,在无需滤波的情况下将pi的像素值放入滤波后的帧区域415中。在步骤412之后,使计数器变量i递增,从而根据需要对当前帧区域404的后续像素进行滤波。在步骤414中判断为处理了帧区域的所有n个像素之后(即,i≥n),重建滤波后的帧区域415,并且可以将滤波后的帧区域415添加至sao重建帧(比较图1的帧105)。

针对补偿的选择的已知处理的缺陷在于:该处理不适应于图像像素内容的不同变化以及图像像素的不同类型的成分。



技术实现要素:

本发明是为了解决前述担心中的一个或多个而设计的。

根据本发明的第一方面,提供一种用于针对图像的重建样本的集合提供补偿偏移的方法,各样本具有样本值,所述方法包括以下步骤:

基于率失真标准来从多个预定分类中选择分类,各所述预定分类具有比所述样本值的整个范围小的分类范围并且由多个类构成,所述多个类中的各类用于定义所述分类范围内的样本值的范围,其中如果样本的样本值处于某个类的范围内,则将该样本划分至该类;以及

使所选择的分类的各类与应用于该类的各样本的样本值的补偿偏移相关联。

根据本发明的第二方面,提供一种用于对包括多个样本的图像进行编码的方法,所述方法包括以下步骤:

对所述样本进行编码;

对已编码的样本进行解码以提供重建样本;

对所述重建样本进行环路滤波,所述环路滤波包括向各所述重建样本的样本值应用补偿偏移,各所述补偿偏移与样本值的范围相关联,其中所述补偿偏移是根据实现本发明上述第一方面的方法所提供的;以及

生成已编码的样本的位流。

根据本发明的第三方面,提供一种用于对包括多个样本的图像进行解码的方法,各样本具有样本值,所述方法包括以下步骤:

接收已编码的样本值;

接收已编码的分类数据;

接收已编码的补偿偏移;

对所述分类数据进行解码,并且基于已解码的分类数据来从多个预定分类中选择分类,各所述预定分类具有比所述样本值的整个范围小的分类范围并且由多个类构成,所述多个类中的各类用于定义所述分类范围内的样本值的范围,其中如果样本的样本值处于某个类的范围内,则将该样本划分至该类;

对已编码的样本进行解码以提供重建样本值,并且对已编码的补偿偏移进行解码;

使已解码的补偿偏移与所选择的分类的各类分别相关联;以及

对所述重建样本值进行环路滤波,其中所述环路滤波包括将与所选择的分类的各类相关联的已解码的补偿偏移应用于该类的范围内的重建样本值。

根据本发明的第四方面,提供一种携带有视频位流所表示的图像的信息数据集的信号,所述图像包括可重建样本的集合,各所述可重建样本具有样本值,所述信息数据集包括与编码器从多个预定分类中所选择的分类有关的分类数据,其中:各所述预定分类具有比所述样本值的整个范围小的分类范围并且由多个类构成,所述多个类中的各类用于定义所述分类范围内的样本值的范围,如果样本的样本值处于某个类的范围内,则将该样本划分至该类,以及使所选择的分类的所述多个类中的各类与应用于该类的范围内的所述可重建样本的样本值的补偿偏移相关联。

根据本发明的第五方面,提供一种用于针对图像的重建样本的集合提供补偿偏移的装置,各样本具有样本值,所述装置包括:

用于基于率失真标准来从多个预定分类中选择分类的部件,其中各所述预定分类具有比所述样本值的整个范围小的分类范围并且由多个类构成,所述多个类中的各类用于定义所述分类范围内的样本值的范围,其中如果样本的样本值处于某个类的范围内,则将该样本划分至该类;以及

用于使所选择的分类的各类与应用于该类的各样本的样本值的补偿偏移相关联的部件。

根据本发明的第六方面,提供一种编码装置,用于对包括多个样本的图像进行编码,所述编码装置包括:

编码器,用于对所述样本进行编码;

解码器,用于对已编码的样本进行解码以提供重建样本;

环路滤波器,用于对所述重建样本进行滤波,所述环路滤波器部件包括用于对各所述重建样本的样本值应用补偿偏移的偏移应用部件,各所述补偿偏移与样本值的范围相关联,其中所述补偿偏移是根据实现本发明上述第五方面的装置所提供的;以及

位流生成器,用于生成已编码的样本的位流。

根据本发明的第七方面,提供一种解码装置,用于对包括多个样本的图像进行解码,各样本具有样本值,所述解码装置包括:

用于接收已编码的样本值的部件;

用于接收已编码的分类数据的部件;

用于接收已编码的补偿偏移的部件;

用于对所述分类数据进行解码、并且基于已解码的分类数据来从多个预定分类中选择分类的部件,各所述预定分类具有比所述样本值的整个范围小的分类范围并且由多个类构成,所述多个类中的各类用于定义所述分类范围内的样本值的范围,其中如果样本的样本值处于某个类的范围内,则将该样本划分至该类;

用于对已编码的样本进行解码以提供重建样本值、并且对已编码的补偿偏移进行解码的部件;

用于使已解码的补偿偏移与所选择的分类的各类分别相关联的部件;以及

用于对所述重建样本值进行环路滤波的部件,其中所述环路滤波包括将与所选择的分类的各类相关联的已解码的补偿偏移应用于该类的范围内的重建样本值。

根据本发明的第八方面,提供一种用于对包括多个样本的图像进行解码的方法,各样本具有样本值,所述方法包括以下步骤:

接收已编码的样本值;

接收与编码器从多个预定分类中所选择的分类有关的已编码的分类数据,各所述预定分类具有比所述样本值的整个范围小的分类范围并且由多个类构成,所述多个类中的各类用于定义所述分类范围内的样本值的范围,其中如果样本的样本值处于某个类的范围内,则将该样本划分至该类;

接收与所选择的分类的各类分别相关联的已编码的补偿偏移;

对所述已编码的样本值进行解码以提供重建样本值,并且对所述已编码的分类数据和所述编码补偿偏移进行解码;以及

对所述重建样本值进行环路滤波,所述环路滤波包括将与所选择的分类的各类相关联的已解码的补偿偏移应用于该类的范围内的重建样本值。

编码器可以以包括基于率失真标准或依赖于样本值的统计分布的属性的任何适当方式来选择分类。

在本发明的上下文中,样本可以与一个像素相对应,其中样本值与各像素值相对应。可选地,样本可以包括多个像素,并且样本值可以与根据多个像素的像素值所确定的像素值相对应。

根据本发明的方法的至少一部分可以通过计算机来实现。因此,本发明可以采用完全硬件实施例、(包括固件、常驻软件、微代码等的)完全软件实施例、或者组合这里通常可以全部称为“电路”、“模块”或“系统”的软件和硬件方面的实施例的形式。此外,本发明可以采用以介质中嵌入有计算机可用程序代码的表现的任何有形介质中所体现的计算机程序产品的形式。

由于本发明可以以软件来实现,因此本发明可以体现为计算机可读代码以提供至可编程设备的任何适当载体介质上。有形载体介质可以包括诸如软盘、cd-rom、硬盘驱动器、磁带装置或固态存储器装置等的存储介质。瞬态载体介质可以包括诸如电信号、电子信号、光学信号、声学信号、磁信号或者例如微波或rf信号的电磁信号等的信号。

因而,根据本发明的第九方面,提供一种可编程设备所用的计算机程序产品,所述计算机程序产品包括指令序列,其中所述指令序列用于在载入所述可编程设备并且由所述可编程设备执行的情况下,实现体现上述第一方面、第二方面和第八方面中任一方面的方法。

因而,根据本发明的第十方面,提供一种存储有计算机程序的指令的计算机可读存储介质,所述计算机程序的指令用于实现体现上述第一方面、第二方面和第八方面中任一方面的方法。

附图说明

现在将仅通过示例的方式并且参考以下附图来说明本发明的各实施例,其中:

图1是示出现有技术的环路滤波处理的步骤的流程图;

图2图解示出现有技术的hevc处理的样本自适应带偏移分类;

图3是示出用于针对hevc的sao带偏移确定补偿偏移的处理的步骤的流程图;

图4是示出hevc的sao带偏移滤波处理的步骤的流程图;

图5是示意性示出可以实现本发明的一个或多个实施例的数据通信系统的框图;

图6是示出可以实现本发明的一个或多个实施例的处理装置的组件的框图;

图7是示出根据本发明实施例的编码方法的步骤的流程图;

图8是示出根据本发明的一个或多个实施例的环路滤波处理的步骤的流程图;

图9是示出根据本发明实施例的解码方法的步骤的流程图;

图10是示出根据本发明第一实施例的用于确定sao带偏移分类的方法的步骤的流程图;

图11是示出根据本发明实施例的用于确定适合的分类的方法的步骤的流程图;

图12是示出根据本发明替代实施例的用于确定适合的分类的方法的步骤的流程图;

图13示出根据本发明实施例的分类所用的有用范围的若干大小;

图14示出根据本发明实施例的分类所用的类的若干大小;

图15示出根据本发明实施例的分类所用的有用范围中的类的若干大小;

图16示出根据本发明实施例的分类所用的第一组的有用范围的若干中心位置;

图17示出根据本发明实施例的分类所用的第二组的有用范围的若干中心位置;

图18示出根据本发明实施例的参数分类的率失真选择;

图19a和19b示出根据本发明另一实施例的整个范围内的有用范围的可能位置;

图20a示出现有技术中所应用的用以按lcu等级对sao参数进行编码的伪代码;

图20b示出根据本发明实施例的用以按lcu等级对sao参数进行编码的改进的伪代码;

图21是与图20a的伪代码相对应的流程图;

图22是与图20b的伪代码相对应的流程图;

图23是用于说明根据本发明又一实施例的sao参数的编码的流程图;

图24示出根据本发明再一实施例的用于对sao参数进行编码的伪代码;

图25是与图24的伪代码相对应的流程图;以及

图26是用于说明根据本发明另一实施例的sao参数的编码的流程图。

具体实施方式

图5示出可以实现本发明的一个或多个实施例的数据通信系统。该数据通信系统包括发送装置(在这种情况下为服务器501),其中该服务器501可用于将数据流的数据包经由数据通信网络500发送至接收装置(在这种情况下为客户终端502)。数据通信网络500可以是广域网(wan)或局域网(lan)。这种网络例如可以是无线网络(wifi/802.11a或b或g)、以太网(ethernet)、因特网、或包括若干个不同网络的混合网络。在本发明的特定实施例中,数据通信系统可以是服务器501将相同的数据内容发送至多个客户端的数字电视广播系统。

服务器501所提供的数据流504可以包括表示视频和音频数据的多媒体数据。在本发明的一些实施例中,服务器501可以使用麦克风和照相机来分别捕获音频和视频数据流。在一些实施例中,数据流可以存储在服务器501上或者由服务器501从另一数据提供方接收到,或者在服务器501处生成。服务器501配备有用于特别是对视频和音频流进行编码以提供发送所用的压缩位流的编码器,其中该发送所用的压缩位流是作为向着编码器的输入所呈现的数据的更紧凑表现形式。

为了获得所发送数据的质量相对于所发送数据的量的更好比率,视频数据的压缩例如可以根据hevc格式或h.264/avc格式。

客户端502接收所发送的位流并且对重建位流进行解码,以在显示装置上再现视频图像并且利用扬声器再现音频数据。

尽管在图5的示例中考虑流传输方案,但应当理解,在本发明的一些实施例中,例如可以使用诸如光盘等的介质存储装置来进行编码器和解码器之间的数据通信。

在本发明的一个或多个实施例中,将视频图像与表示应用于该图像的重建像素的补偿偏移的数据一起发送,以提供最终图像中的滤波像素。

图6示意性示出被配置为实现本发明的至少一个实施例的处理装置600。处理装置600可以是诸如微计算机、工作站或轻薄便携式装置等的装置。装置600包括通信总线613,其中该通信总线613连接有以下组件:

-诸如微处理器等的表示为cpu的中央处理单元611;

-表示为rom的只读存储器607,用于存储实现本发明所用的计算机程序;

-表示为ram的随机存取存储器612,用于存储本发明实施例的方法的可执行代码以及如下寄存器,其中这些寄存器被配置为记录实现根据本发明实施例的对数字图像序列进行编码的方法和/或对位流进行解码的方法所需的变量和参数;以及

-通信接口602,其连接至发送或接收要处理的数字数据所经由的通信网络603。

可选地,装置600还可以包括以下组件:

-诸如硬盘等的数据存储部件604,用于存储实现本发明的一个或多个实施例的方法所用的计算机程序以及本发明的一个或多个实施例的实现期间所使用或所产生的数据;

-盘606所用的盘驱动器605,其中该盘驱动器被配置为从盘606读取数据或者将数据写到所述盘上;

-屏幕609,用于利用键盘610或任何其它指示部件来显示数据以及/或者用作与用户的图形界面。

装置600可以连接至例如数字照相机620或麦克风608等的各种外围设备,其中这些外围设备各自连接至输入/输出卡(未示出)从而向装置600供给多媒体数据。

通信总线提供装置600内所包括的或连接至装置600的各种元件之间的通信和互操作性。该总线的代表并非限制性的,并且特别地,中央处理单元可用于将指示直接地或者利用装置600的其它元件通信至装置600的任意元件。

盘606可以由例如(可重写或不可重写的)致密盘(cd-rom)、zip盘或存储卡等的任何信息介质以及概括而言由信息存储部件来替换,其中该信息存储部件可以由集成于该装置内或没有集成于该装置内的可移除的微计算机或微处理器来读取,并且被配置为存储如下的一个或多个程序,其中执行该一个或多个程序使得能够实现根据本发明的对数字图像序列进行编码的方法和/或对位流进行解码的方法。

可执行代码可以存储在只读存储器607中、硬盘604上或者例如前面所述的盘606等的可移除数字介质上。根据变形例,程序的可执行代码可以利用通信网络603经由接口602来接收,从而在执行之前存储在诸如硬盘604等的装置600的存储部件的其中一个内。

中央处理单元611被配置为控制和引导根据本发明的程序的指令或软件代码的一部分的执行,其中这些指令存储在上述存储部件的其中一个内。在通电时,将存储在非易失性存储器中(例如硬盘604上或只读存储器607中)的程序传递至随机存取存储器612,然后该随机存取存储器612容纳程序的可执行代码以及用于存储实现本发明所需的变量和参数的寄存器。

在本实施例中,该装置是使用软件来实现本发明的可编程设备。然而,可选地,本发明可以以硬件形式(例如,以专用集成电路或asic的形式)来实现。

图7示出根据本发明的至少一个实施例的编码器的框图。该编码器由所连接的模块来表示,其中各模块被配置为例如以装置600的cpu611要执行的编程指令的形式来执行用于实现根据本发明一个或多个实施例的对图像序列中的图像进行编码的至少一个实施例的方法的至少一个相应步骤。

编码器70接收原始的数字图像序列i0~in701作为输入。各数字图像由已知为像素的一组样本来表示。

编码器70在执行了编码处理之后输出位流710。位流710包括多个编码单位或片,其中各片包括:片头,用于传输对片进行编码所使用的编码参数的编码值;以及片本体,其包括编码视频数据。

模块702将所输入的数字图像i0~in701分割成像素的块。这些块与图像部分相对应,并且可以具有可变大小(例如,4×4、8×8、16×16、32×32、64×64个像素)。针对各输入块来选择编码模式。设置有基于空间预测编码的编码模式(帧内预测)和基于时间预测的编码模式(帧间编码、合并、跳过)这两类编码模式。对可能的编码模式进行测试。

模块703实现帧内预测处理,其中在该帧内预测处理中,利用根据要编码的给定块附近的像素所计算出的预测结果来预测该要编码的块。在选择帧内编码的情况下,对所选择的帧内预测结果和给定块与其预测结果之间的差的标示进行编码,以提供残差。

时间预测是由运动估计模块704和运动补偿模块705来实现的。首先,选择一组参考图像716中的参考图像,并且利用运动估计模块704来选择该参考图像中作为与要编码的给定块最接近的区域的部分(还被称为参考区域或图像部分)。然后,运动补偿模块705使用所选择的区域来预测要编码的块。利用运动补偿模块705来计算所选择的参考区域和给定块(还称为残差块)之间的差。所选择的参考区域由运动矢量来表示。

因而,在这两种情况(空间预测和时间预测)中,通过从原始块中减去预测值来计算残差。

在利用块703实现的帧内预测中,对预测方向进行编码。在时间预测中,对至少一个运动矢量进行编码。

在选择了帧间预测的情况下,对与运动矢量和残差块有关的信息进行编码。为了进一步降低位率,在假定运动均匀的情况下,利用相对于运动矢量预测结果的差来对运动矢量进行编码。利用运动矢量预测和编码模块717来从运动矢量字段718获得运动信息预测结果的集合中的运动矢量预测结果。

编码器70还包括用于通过应用诸如率失真标准等的编码成本标准来选择编码模式的选择模块706。为了进一步减少冗余,变换模块707向残差块应用变换(诸如dct等),然后所获得的变换数据由量化模块708进行量化并且由熵编码模块709进行熵编码。最后,将编码中的当前块的编码残差块插入位流710。

编码器70还进行编码图像的解码,从而产生后续图像的运动估计所用的参考图像。这使得编码器和接收位流的解码器能够具有相同的参考帧。逆量化模块711对量化数据进行逆量化,之后由逆变换模块712进行逆变换。逆帧内预测模块713使用预测信息来判断哪个预测结果用于给定块,并且逆运动补偿模块714实际将模块712所获得的残差添加至从一组参考图像716所获得的参考区域。

然后利用模块715应用后滤波以对像素的重建帧进行滤波。在本发明实施例中,使用sao环路滤波器,其中在该sao环路滤波器中,将补偿偏移与重建图像的重建像素的像素值相加。

图8是示出根据本发明的至少一个实施例的环路滤波处理的步骤的流程图。在初始步骤801中,编码器生成整个帧的重建。接着,在步骤802中,对该第一重建应用去块滤波器从而生成去块重建803。去块滤波器的目的是消除残差量化和块运动补偿或块帧内预测所生成的块效应。这些效应在低位率的情况下在视觉上是重要的。去块滤波器进行工作,以根据两个相邻块的特性来使块边界平滑化。考虑各块的编码模式、残差编码所使用的量化参数、以及边界中的相邻像素差。对所有帧应用相同的标准/分类,并且没有传输附加数据。去块滤波器通过消除块效应来改进当前帧的视觉质量,并且去块滤波器还改进了针对后续帧的运动估计和运动补偿。实际上,消除了块效应的高频率,因此无需利用后续帧的纹理残差来对这些高频率进行补偿。

在去块滤波器之后,在步骤804中利用样本自适应偏移(sao)环路滤波器基于像素的分类814来对去块重建进行滤波。然后,在步骤806中利用自适应环路滤波器(alf)对由此得到的帧805进行滤波以生成重建帧807,其中将显示并使用该重建帧807作为后续帧间帧的参考帧。

在步骤804中,将帧区域的各像素根据其像素值分类成所确定的分类的类。类与所确定的像素值范围相对应。将相同的补偿偏移值与像素值处于给定像素值范围内的所有像素的像素值相加。

以下将参考图10~17中的任一个来更详细地说明样本自适应偏移滤波所用的像素的分类的确定。

图9示出根据本发明实施例的可以用于接收来自编码器的数据的解码器90的框图。该解码器由所连接的模块来表示,其中各模块被配置为例如以装置600的cpu611要执行的编程指令的形式来执行解码器90所实现的方法的相应步骤。

解码器90接收包括编码单位的位流901,其中每一个编码单位包括包含与编码参数有关的信息的头以及包含编码视频数据的本体。如针对图7所述,对编码视频数据进行熵编码,并且按预定的位数针对给定块来编码运动矢量预测结果的索引。所接收到的编码视频数据由模块902进行熵解码。然后,残差数据由模块903去量化,之后由模块904应用逆变换以获得像素值。

还对表示编码模式的模式数据进行熵解码,并且基于该模式,对已编码的图像数据的块进行帧内型解码或帧间型解码。

在帧内模式的情况下,逆帧内预测模块905基于位流中所指定的帧内预测模式来确定帧内预测结果。

在模式是帧间模式的情况下,从位流提取运动预测信息以寻找编码器所使用的参考区域。该运动预测信息包括参考帧索引和运动矢量残差。利用运动矢量解码模块910将运动矢量预测结果与运动矢量残差相加以获得运动矢量。

运动矢量解码模块910对通过运动预测所编码的各当前块应用运动矢量解码。一旦获得了针对当前块的运动矢量预测结果的索引,则可以对与当前块相关联的运动矢量的实际值进行解码并且模块906使用该实际值来应用逆运动补偿。从参考图像908提取由解码后的运动矢量所表示的参考图像部分以应用逆运动补偿906。利用解码后的运动矢量来更新运动矢量字段数据911从而用于后续解码后的运动矢量的逆预测。

最终,获得了解码块。与如参考图8所述在编码器处应用的后滤波模块815相同,利用后滤波模块907来应用后滤波。最终,解码器90提供了解码后的视频信号909。

图10是示出根据本发明第一实施例的、用于对图像的重建像素进行分类以应用补偿偏移的方法的步骤的流程图。在本实施例中,基于帧区域的重建像素值的统计分布,来确定根据帧区域的重建像素的像素值对这些重建像素进行分类所用的类。基于像素值的分布来确定各类的中心、有用范围和像素量。在本实施例中,解码器可以应用与解码器完全相同的处理来对分布进行分割。

在初始步骤中,处理模块1002扫描当前帧区域1001,从而确定帧区域1001的像素的像素值的统计分布并且生成相应的直方图1003。在一个特定实施例中,该处理涉及更新针对各像素值包含像素数的表,即针对各像素值,将具有该像素值的像素数制成表格。基于像素的位深度,该表包含与根据表达式max=2位深度-1所确定的最大像素值max相等的单元格数。

然后,模块1004确定所生成的直方图1003的中心。然后,模块1006根据直方图1003所示出的像素值的分布并且在适当的情况下基于该直方图的中心来确定直方图的像素值的有用范围。最后,确定用于定义像素值的范围的等概率类。如此提供了包含各类的像素值的范围的表1009、或者可选地提供了包含各像素的像素值的表。在本发明的一些实施例中,等概率类的确定可以依赖于预先确定的类数量1000。

在步骤1004中,可以采用各种算法来确定所生成的直方图1003的中心。在一个实施例中,可以求出该直方图的最小值minhist和最大值maxhist。为了求出最小值minhist,从像素值0开始向着直方图的不等于0的第一个单元格histk扫描该直方图的各单元格histk。并且为了求出maxhist,按逆顺序(从最大像素值max向着直方图的不等于0的第一个单元格histk)扫描这些单元格。按照如下计算直方图的中心centerhist。

centerhist=(maxhist-minhist)/2+minhist

在替代实施例中,直方图的中心被视为分布的加权平均中心。如果认为直方图单元格histk的值是具有值k的像素数,则按照如下计算centerhist。

其中,n是当前帧区域中的像素数。

在步骤1006中,用于确定所生成的直方图的有用范围的一个潜在技术是针对有用范围的两端选择上述的minhist和maxhist。

在另一实施例中,通过从0向着具有超过阈值α的值的第一个histk进行扫描来确定直方图的最小值minrange。同样,通过从最大像素值max向着超过阈值α的第一个histk进行逆扫描来确定maxrange。阈值α可以是预定值。可选地,阈值α可以依赖于帧区域中的像素值以及/或者输入信号的成分类型(色度和亮度)。

在一个特定实施例中,可以认为类数量在编码器和解码器侧是已知的。像素值的类数量例如可以依赖于当前帧区域中的与各成分(亮度、色度u和v)相对应的像素数。

为了产生等概率类,定义有用范围1007中的像素数nbpixrange。通过从k=minrange向着k=maxrange扫描各直方图单元格histk来确定有用范围中的像素数nbpixrange。然后,将所确定的有用范围中的像素数nbpixrange除以类数量1000来确定各类中的最佳像素数nbpixclasses。

图11是示出根据本发明实施例的用于确定等概率类的算法的步骤的流程图。在初始步骤1101中,将类数量j设置为0并且将当前像素值k设置为minrange。对于等概率分类,利用像素值的类范围来识别类。因而,类编号j由从其最小像素值minj到其最大像素值maxj的范围[minj;maxj]来识别。

在步骤1103中,将利用j编索引的当前类的最小像素值minj设置为当前像素值k。然后,在步骤1104中,将sumnbpixj设置为0。sumnbpixj与范围j中的像素数相对应。然后,在步骤1105中,将具有像素值k的像素数(histk)与sumnbpixj相加。在步骤1106中,判断当前类j的像素数的总和sumnbpixj是否超过类中的像素数nbpixclasses。如果没有达到该条件,则在步骤1107中使k值递增,并且在步骤1105中将像素值k的像素数histk与sumnbpixj相加。如果判断为sumnbpixj>nbpixclasses、或者如果k达到有用范围的最大值maxrange,则在步骤1108中当前类j的最大值等于k的当前值。在该阶段,定义了类j,即确定了类j的范围[minj;maxj]。在步骤1109中使变量k递增,从而避免在多于一个的类中获得相同的像素值。此外,在步骤1110中也使变量j递增,从而针对下一类确定像素值的范围。如果变量j超过类数量nbpixclasses,则可以认为在步骤1112中定义了所有类。

结果,编码器将如与图3有关地所述那样,针对各类j确定偏移值,并且将该偏移值发送至解码器。编码器和解码器将如参考图4所述对帧区域进行滤波。

可以注意,在本实施例中,由于类数量nbclasses是基于句法值预先确定的,因此该类数量不依赖于像素值。结果,在本实施例中,sao带偏移的解析独立于其它帧的解码。可以注意,sao带偏移的解析包括各偏移的解析。

在用于确定等概率分类的又一实施例中,可以根据所生成的直方图中的像素值的分布来确定类数量。实际上,在有用范围的幅度高或低的情况下,类数量应对编码效率产生影响。结果,可以通过确定各类中的像素数以及像素值的数量来提供适应性更好的分类。

图12是示出根据另一实施例的用于提供更加适合的分类的算法的步骤的流程图。该流程图基于图11的实施例的流程图,其中末尾编号相同的模块进行等同的功能。然而,本实施例的决定模块1206和1211运行与图11的相应模块1106和1111所运行的测试条件不同的测试条件。

在本实施例中,决定模块1206基于k值停止循环,并且如果sumnbpixj>nbpixclasses、或者如果k达到有用范围的最大值maxrange、或者如果k-minj严格低于类的最大范围(maxclassrange),则针对类j选择maxj。k-minj与类j的当前范围中的像素值的数量相对应。maxclassrange是该范围内的像素值的预定最大数量。该范围可以依赖于位深度、帧区域中的像素数n和信号的类型(亮度、色度u和v)。例如,在位深度为8的情况下,与hevc实现相同,亮度成分的maxclassrange可以等于16。

图12的实施例与图11的实施例相比的优点在于针对幅度大的像素值分布的编码效率。本实施例更适合于该分布。

可以注意,在本实施例中,所确定的类数量依赖于像素值,因而当前帧的解析依赖于先前帧的解码。为了针对传输错误更具鲁棒性,将类数量nbclasses插入位流中。这种数据的传输对编码效率的影响不大。

图10~12的分类的第一实施例的主要优点在于该分类适合于像素值分布。此外,无需传输各类的中心、有用范围和大小以及这些类的量。结果,与已知的hevc实现相同,无需针对所确定的分类传输除代表各类的偏移的数据以外的附加数据。

现在将参考图13来说明本发明的用于确定分类并且涉及以信号告知该分类的参数的又一实施例。分类的又一实施例的目的是提供像素值的分布的最佳分类。与先前实施例相比的不同之处在于:分类不是基于像素值的分布而是基于率失真标准来直接确定的。在该又一实施例中,编码器从预定义的潜在分类中选择最适合于像素值分布的分类。该选择是基于率失真标准。与前述实施例相同,确定所生成的表示像素值分布的直方图的类的中心、有用范围和大小。在该又一实施例中,在位流中传输这些参数。为了使这些数据的传输的影响最小化,从预定义值中选择类的大小和相关范围。结果,编码器将所选择的分类的中心、与所选择的分类有关的索引、以及该分类的类的大小插入位流中。

为了提供相对于像素值的分布的适应性,如图13所示定义了若干个大小的像素值范围。在图13中,将像素值的整个范围分割成32个子范围。对于与位于像素值范围的中心的像素值有关的第一组类,将4个示例表示为1301、1302、1303、1304。第一个示例1301包含潜在的32个范围中的26个范围。因而,有用范围1301表示整个范围的13/16。同样,1302表示潜在的32个范围中的仅8个范围、即有用范围的1/4,1303表示整个范围的1/8,并且1304表示整个范围的1/16。关于所提出的方案,可以考虑从整个范围到与仅一个像素值相对应的范围的所有可能大小。可能的有用范围的数量应是根据编码效率预先确定的、或者应是针对帧区域中的像素数预先确定的。

图13还示出与位于像素值范围的边缘的像素值有关的第二组类所用的大小的若干示例。第二组包括两个子组的类,其中一个子组的类向着直方图的各边缘进行配置。示例1305、1306、1307、1308分别表示数量与第一组中的示例1301、1302、1303、1304相同的像素值。

在本发明的各实施例中,与现有技术的方法相比,类的大小、即各类的像素值的范围不是固定的。图14示出若干个大小1401~1406的示例。在该示例中,类大小为32个像素1401~仅1个像素1406。可以将这些类大小与前面与图13有关地所述的所有可能的有用范围相组合。在本实施例中,认为所有类针对特定像素值范围具有相同的大小。因而,对于组,将表示有用范围大小和类的大小的数据插入位流中。

在另一实施例中,根据给定有用范围中的类的位置来适配该有用范围所用的类的大小。更确切地,使类的大小适合于像素值的分布。在又一实施例中,根据像素值分布来针对各有用范围预先确定这些大小。实际上,像素值分布的直方图通常与高斯分布相对应。像素值离直方图的中心越近,像素值接近该值的像素的数量越多。这意味着靠近中心的直方图单元格histk与直方图的有用范围两端处的直方图单元格histk相比具有较大的值(相应的像素数)。

图15示出针对类的大小所述的两个实施例的示例。示例1501表示针对32个像素值的有用范围的8个像素值的固定大小。1502表示针对相同的有用范围大小的4个像素值的固定大小。

示例1503示出针对32个像素值的当前范围的类的自适应大小的其它实施例。在该示例中,与中心的分别具有8个像素值和2个像素值的类相比,有用范围的两端处的类较大、即其像素值的范围较宽。在这些类之间,其它2个类的范围为4个像素值。

还可以使第二组的类的大小适合于像素值的分布。当前hevc实现的第二组的目的是仅利用直方图的两端。实际上,直方图的两端包含通常与高频率有关的极值,其中在这些高频率中,与低频率相比,(由于有损编码所引起的)误差通常较高。以与第一组相同的方式,可以针对第二组的有用范围测试若干个大小的类。在这种情况下,对于第二组的两个子组,可以将子分割1501和1502与率失真标准进行比较。

此外,可以应用适合类的大小的实施例。示例1504示出所提出的针对第二组的第一范围(左方)的类的适合大小。并且示例1505示出所提出的针对第二组的第二子组(右方)的类的适合大小。在这种情况下,两端处的类与靠近中心的类相比包含较多的像素值。

第二组的目的是利用直方图的两端;结果有时使用第二组的大小的相反适应是有用的。在这种情况下,对于第二组的第二子组(右方)使用示例1504,并且对于第一子组(左方)使用示例1505。在本实施例中,两端处的类与靠近中心的类相比包含较少的像素值。在这种情况下,目的不是产生类的等概率分类而是寻找第二组的两端的较佳分割。

由于像素值的统计分布并非必须集中于像素值的整个范围的中间,因此应当确定基于有用范围的分布的中心并且与图形数据一起在位流中传输。图16示出有用范围的不同中心位置与整个范围的1/4相对应的整个范围的示例。与图13的附图标记1302相反,对于图16的四个示例1601、1602、1603、1604,有用范围的中心不位于整个范围的中心。该解决方案使得所选择的分类能够适合于像素值的分布。

然后,可以对所确定的中心进行编码以在位流中传输。可以设想数据的编码所用的若干技术。

如果认为当前帧区域的位深度为8位,则针对中心值可以考虑的位置数量与(256-最小有用范围的大小)相对应。例如,与图13相比,有用范围的最小大小等于2并且这两个类可以包含至少1个像素。因而,对于该特定示例,中心可以取1至254之间的值,由此针对中心可以考虑254个位置。

另一解决方案是对中心值进行量化。在一个实施例中,根据类的大小来对中心进行编码。因而,例如,如果类的大小(或者在使用适合的类大小方案的情况下为当前有用范围的所有类的最小大小)等于一个像素值,则不对中心进行量化并且该中心可以是当前有用范围的所有可能的中心位置。如果类的大小为16个像素值,则如图16所示,可以仅考虑每16个像素值的像素值。因而,在图16中,示例1601、1602、1603和1604的中心分别为9、23、27和6。在另一实施例中,可以仅考虑与算法中所定义的类的最大大小的倍数相等的中心位置。因而,中心等于像素值除以类的最大大小。这样降低了要传输的位数。

此外,理论上,最可能的中心是整个范围的中心。因而,为了确定解码器侧的中心位置所传输的数据是整个范围的中心和当前分类的有用范围的中心之间的差。因而,例如在图16中,相对于示例1601、1602、1603、1604的中心所传输的数据分别为16-9=7、16-23=-7、16-27=-11、16-6=10。

对于第二组,无需对直方图的中心进行编码。因而,可以考虑对第二组的两个子组的移位进行编码的若干方案。所提出的与针对第一组所述的中心值的量化有关的实施例可以容易地扩展至所提出的针对第二组的实施例。

在本发明实施例中,可以在整个范围内以相同的精度或粒度、即与整个范围内的分类的位置无关地指定有用范围的位置(所选择的分类)。在图16所示的示例1601~1604中是这种情况,其中位置(中心位置)为9、23、27和6。将整个范围标记为0~32。存在32个可能位置,并且粒度在整个范围内是相同的。

然而,如图19a和19b所述,还可以在整个范围的一部分中设置与整个范围的另一部分相比更多的可能位置。换句话说,位置的粒度根据分类处于整个范围内的何处而改变。这些实施例提出粒度可变的(这里标记为0~32的)整个范围的不等量化,从而将分类(有用范围)的中心更精确地定位在整个范围的最重要(或可能)部分中。此外,不等量化使得能够限制发送分类的位置所需的位数,同时还给出整个范围的重要部分内的足够精度。如图19a所示,该更精细的粒度例如可以应用于整个范围的中间。在该图中,可能的中心位置与粗实线所表示的索引相对应。与端部相比,在整个范围的中间,两个可能的中心位置之间的间隔较小。因而,与整个范围的端部相比,可以将中心位置更加精确地设置在整个范围的中间。

在图19b中,与中间相比,在整个范围的两端处,两个可能的中心位置之间的间隔较小。例如,本实施例能够在分布的极值处具有重要的样本值的情况下是特别有用的。

更通常地,可以将更精细的量化应用于整个范围内的任何位置处。

在使用如上所述的可变量化的情况下,分类范围(有用范围的大小)针对所有位置可以是固定的。例如,分类范围可以包括各自由8个像素值构成的四个类。

还可以使分类范围/类大小随着位置而改变,由此在图19a中,例如,分类范围在位置12~20处为8个像素值,在位置10和26处为16个像素值,并且在位置2和28处为32个像素值。

与为了确定分类范围所应用的方法无关地,可以使用如这里所述的可变量化。该方法例如可以使用样本值的统计分布的性质或者使用率失真标准。

可变量化在编码器和解码器这两者处都可以是预先确定的。例如,编码器和解码器可以向可能的中心位置(或左方位置)分配索引,例如在图19a中,位置2是索引0,位置6是索引1,位置10是索引2,位置12是索引3,位置13是索引4等。然后,编码器将所选择的分类的索引发送至解码器就足够了。可选地,可以在编码器处确定与可变量化有关的信息并且将该信息经由位流以信号告知解码器。

在一个特定实施例中,可以认为直方图的中心始终是整个范围的中心。因而,在这种情况下,仅考虑一个移位。这两组在移位相同的情况下被缩放至中心。结果,仅需对一个数据(第二组的第一范围的移位)进行编码。图17的示例1701、1702、1703和1704是这些移位的示例。在示例1701、1702、1703、1704中,这些移位分别为4、6、10和0。可以在无需预测的情况下直接对该移位进行编码。

在又一实施例中,如示例1705、1706、1707和1708所示,第二组的这两个子组在整个范围内具有独立位置。可以考虑两种方式的编码。

在第一种方式中,利用不存在的第一组的有用范围的大小来对该不存在的第一组的中心进行编码。

对这两组进行独立编码的第二种方式是传输来自整个范围的两端的2个移位(每组各一个)。因而,对于示例1705、1706、1707和1708,所传输的移位分别如下:对于1705为11和32-28=4,对于1706为21和0,对于1707为3和32-16=32,并且对于1708为7和32-31=1。

图18是示出根据本发明实施例的率失真选择算法的步骤的流程图。为了简化说明的目的,仅考虑针对无适合类大小的第一组的选择。可以容易地适合于针对前面所述的其它实施例的选择。

在初始步骤1801中,计算当前帧区域的统计。这涉及针对所有的像素值k确定变量histk和sumk。histk与像素值等于值k的像素数相对应,并且sumk与像素值等于值k的所有像素和这些像素的原始像素值之间的差的总和相对应。该算法包括与类s的大小、范围r的大小和中心c这三个参数有关的3个循环。在步骤1803中,第一个循环测试可能的各类大小。例如,该大小是在图14中定义的。在步骤1804中,计算整个范围的各子范围的偏移。例如,如果位深度为8并且类的大小为16,则计算整个范围中的32个可能范围的失真和偏移。按照属性,针对当前范围中的所有值k,通过histk和sumk的线性组合来计算偏移和失真。然后,针对各可能范围r1805和各可能范围c1806,在步骤1807中对率失真成本进行评价。该评价是基于率失真标准。在测试了所有中心c1808、所有范围1809和所有大小1810的情况下,在步骤1811中,基于最佳率失真成本来选择最佳参数s、r、c。用以产生等概率分类的该第二方案的优点包括降低了复杂性并且改进了编码效率。与分类是基于像素值的统计分布的实施例相比,类的中心、范围和大小的分类选择提供了最佳率失真选择。当然,本实施例与当前hevc实现相比给出了编码效率方面的改进。由于在解码器处无需确定像素的分布,因此与先前方案相比,该方案在解码器侧的复杂程度较低。此外,由于在一些组中使用较少的类,因此与hevc中的已知技术相比,该方案可以具有较低的复杂程度。

图18中示出的算法对类s的大小、范围r、以及代表中心c的值的位置的所有带偏移参数进行基于整个率失真的选择。为了限制复杂性,可以使一些参数固定。在图18的算法的一个特定实现中,使大小s和范围r固定为编码器和解码器已知的给定值。例如,s可以表示8个像素值并且r可以表示与8个像素的4个类相对应的32个像素值。结果,要优化的唯一参数是代表中心c的值。

由于本发明的各实施例在确定像素的分类时考虑到像素值的整个范围内的像素值的重新划分,因此可以使分类相应地适合于像素值的不同分布。特别地,可以根据像素的成分类型来调整分类。例如,在一组色度成分像素的情况下,像素值与亮度色度像素的像素值相比趋于变低。另外,色度u像素值的分布不同于更为集中且像素值相对较高的色度v像素值的分布。此外,在色度成分像素的情况下,像素值的分布与提供更加分散的分布的亮度色度像素的像素值的分布相比,趋于更加集中于峰值像素值附近。

如通过以上看出,为了避免在解码器侧确定像素的分布,除sao类型(无sao、边缘偏移或带偏移)和补偿偏移值以外,还可以在位流中传输参数s、r和c。在类大小和范围是固定的情况下,仅传输c从而使得解码器能够检索范围的中心。

在固定的s和r的情况下,用以对sao参数进行编码的一个已知解决方案在于:应用采用图21的流程图的形式所述的图20a的伪代码。

该处理以确定sao参数开始,其中这些sao参数包括(存储在码字sao_type_idx中的)sao的类型、在使用带偏移类型的情况下(存储在码字sao_band_position中的)表示有用范围的中心的值、以及(存储在码字sao_offset中的)sao偏移。在图20a中,cidx表示应用了sao的颜色成分的索引,rx和rx表示应用了sao的区域的位置,并且i是样本值的类的索引。

然后,在步骤2003中,通过使用无符号的expgolomb代码(ue(v))(即,无符号的可变长度代码)对sao类型进行编码来开始sao参数编码。如果sao类型是类型5(带偏移),则该编码继续进行以下的步骤2017,其中在步骤2017中,使用大小为5的无符号的可变长度代码(u(5))来对表示有用范围的中心的位置的值进行编码。然后,在步骤2019~2025中迭代地进行与范围中所包含的四个类相对应的四个偏移的编码。这里,使用带符号的expgolomb代码(se(v))(即,带符号的可变长度编码(vlc)代码)来对各偏移进行编码。然后,该处理以步骤2027结束。

如果sao类型不是带偏移,则首先检查sao类型是否是无sao(无sao是指没有对所关注的样本应用偏移)。如果选择了无sao,则编码处理在步骤2027中停止。

否则,继续步骤2007~2013中的四个边缘偏移的迭代编码。再次,编码处理在步骤2027中停止。

在要表示的值的范围相对高但该范围中的一些值与其它相比是更可能值的情况下,通常使用vlc代码。然后,向最可能值赋予短代码,而向非可能值赋予长代码。这些代码的主要缺陷是这些代码与固定长度代码(flc)相比引入了较高的解码复杂性。实际上,由于vlc代码的最终大小是未知的,因此不得不针对各位读取该代码,而由于flc代码的大小是已知的,因此可以直接读取该代码的所有位。

在图20b和22中,提出针对该编码处理的利用flc代码替换vlc代码的替代例。

该编码处理以与步骤2001相同的步骤2201开始。在步骤2203中,利用flc编码替换码字sao_type_idx的vlc编码。这里,需要3位来对6个可能的sao类型值(即,“无sao”类型、4个“边缘偏移”类型、以及“带偏移”类型)进行编码。然后,检查sao的类型是否是“无sao”。在sao的类型是“无sao”的情况下,不再进行编码,并且该处理以步骤2215结束。否则,检查sao的类型是否是“带偏移”。如果为“是”,则以大小为5的无符号的flc代码的形式在码字sao_band_position中对表示范围的中心位置的值进行编码。实际上,在该示例中,在类大小为8个样本值并且范围由四个类构成的情况下,对于256个值的整个范围,可以存在28个不同的位置。

在该步骤之后进行步骤2211~2213中的四个sao偏移的编码。这里,flc代码替换步骤2023和2011的vlc代码。代替使用涵盖整数偏移值-31~32的最大为5位的vlc代码,这里使用大小为能够仅对四个不同值(通常为(-2,-1,1,2))进行编码的2位的flc代码。减少可能值的数量具有以下效果:集中于对最频繁使用的偏移值进行编码。

在偏移编码之后,该处理在步骤2215中停止。

注意,在另一实施例中,可以通过将要应用于利用2位代码所获得偏移的倍增因数编码在图片头、片头或lcu头中来扩展这些偏移所表示的范围。例如,在倍增因数等于4的情况下,编码后的偏移(-2,-1,1,2)变为(-8,-4,4,8)。倍增因数还可以被标准化(固定)或者根据另一lcu来推断。例如,可以假定将可应用于先前lcu的倍增因数应用于当前lcu。

同样,在另一实施例中,可以将编码在图片头、片头或lcu头中的移位值应用于利用2位代码所获得的偏移。例如,在移位值为5的情况下,编码后的偏移(-2,-1,1,2)变为(3,4,6,7)。再次,移位值也可以被标准化(固定)或者根据另一lcu来推断。例如,可以假定将可应用于先前lcu的移位值应用于当前lcu。

测试已表明具有较少的可能偏移值不会显著降低sao方法的性能。看起来,通过抑制非可能偏移值的巨大的比特率成本,补偿了由于一部分偏移值的抑制所引起的损失。

附加测试还已表明以下:在不会使性能明显损失的情况下,可以使不同偏移值的数量进一步减少为3个甚至2个偏移(仅需1位来进行编码)。

在图23中,提出了编码处理的进一步改进。这里,考虑可以根据边缘偏移的类型来直接推断该边缘偏移的类型的情况下所使用的偏移值。在这种情况下,无需进行边缘偏移值的编码。顺便提醒,根据信号方向来使边缘偏移的各类型与4个类相关联,并且各类具有关联偏移值。本实施例是通过以下测试促成的,其中这些测试表明通常对于给定边缘偏移类型和给定类,偏移值彼此接近并且通常相同。结果,提出了针对各边缘偏移类型来固定一组4个偏移值。例如,提出以下关联。

·垂直边缘偏移:(-2,-1,1,2)

·水平边缘偏移(-2,-1,1,3)

·第一对角线边缘偏移(-3,-2,-1,1)

·第二对角线边缘偏移(-1,1,2,3)

图23的步骤2301和2303与参考图22已经说明的步骤2201和2203相同。在步骤2305和2307中,分别检查sao类型是否是“边缘偏移”或“无sao”。在sao类型不是“边缘偏移”而是“无sao”的情况下,没有对偏移进行编码。在sao类型是“边缘偏移”的情况下,在读取边缘偏移类型值时,基于已知的与固定偏移值的关联,解码器将根据边缘偏移类型来推断偏移值。

在图23的实施例中,如果sao类型是“带偏移”,则在步骤2309中对表示范围中心的位置的值进行编码,并且利用步骤2311~2317迭代地进行四个偏移值的编码。该编码处理以步骤2319结束。

在图24和25的实施例中,应用图20a和21所述的编码处理的另一变形例。如先前实施例已经说明的那样,在仅使用28个不同位置的情况下,使用5位的flc代码来对表示范围中心的位置的信息(sao_band_position)进行编码。在该条件下,各自长度为5位的四个flc代码仍未使用。这里提出利用这四个备用flc代码的好处来除去对sao类型进行编码所使用的码字。将使用新的码字sao_band_position_and_eo来共同对范围位置和边缘偏移类型进行编码。该新的码字也为5位长。

如往常那样,该处理以进行sao参数的定义的步骤2501开始。在该处理之后进行步骤2503,其中在该步骤2503中,对表示sao是否处于使用中的1位长的标志(sao_lcu_flag)进行编码。如果没有使用sao(步骤2505),则该处理停止(步骤2507)。

如果使用sao,则在步骤2509中检查使用哪种类型的sao。如果sao类型是“带偏移”,则在步骤2513中,使用码字sao_band_position_and_eo的最初28个代码来对表示范围中心的位置的值进行编码。如果sao类型是“边缘偏移”,则在步骤2511中,使用码字sao_band_position_and_eo的最末四个代码来对边缘偏移的类型(垂直、水平、第一对角线或第二对角线)进行编码。在步骤2511或2513之后,利用步骤2515~2521进行四个偏移值的编码。

顺便提及,尽管在本实施例中使用备用码字来对边缘偏移的类型进行编码,但应当理解,这些备用码字可以可选地用于其它目的。可以使用这些备用码字来对需要从编码器发送至解码器的任何其它信息进行编码。

在图26中,提出了用于确定在带偏移的情况下要应用的偏移的又一实施例。本实施例是通过以下测试促成的,其中这些测试表明在带偏移的情况下,大部分偏移的绝对值的大小较小。实际上,偏移值通常等于-2、-1、1和2。在范围中的类数量减少为4个的情况下,例如与图20a~25的示例相同,4个偏移值的不同组的数量也减少。在以上具有4个不同偏移值和4个类的示例中,不同组的数量为44=256。在图21、22、23和25的实施例中,使用8位来对偏移值进行编码(各自使用2位进行了编码的4个偏移值)。这里,认为4个偏移的所有组被选中的概率相同。然而,这些组中的一部分组与其它组相比是非可能组。通过除去非可能组,可以减少对组进行编码所需的位数。结果,代替针对各偏移值使用2位来对4个不同的偏移值进行编码,提出了向4个偏移值的不同组分配索引并且对该索引进行编码,其中由于非可能组的去除,因而使用少于8位来对索引进行编码。可以通过对一组训练序列应用sao并且计算这些组的统计数据来确定这些组的概率。收集有根据选择概率排序后的所有可能组的表可以是预先确定的并且是编码器和解码器已知的。在该表中,将使偏移的各组关联至索引值。分配至组编码的索引的位数可以是固定的(标准化的)、或者针对序列、帧、片或lcu是固定的,并且编码在相应头中。该表中的与最可能组相对应的组的子集将由编码器和解码器根据分配至索引编码的位数来确定。

在图26中说明了表示最佳组的选择的实施例。该处理以对变量j进行初始化的步骤2601开始。该变量j递增,以使得能够对偏移的所有可能组进行测试。在所提出的实施例中,考虑4个偏移的组,但还可以考虑其它数量的偏移。在步骤2603中,判断是否已测试了所有组(例如,nboffsetgroup是否可以等于128)。如果测试了所有组,则该处理停止,并且对与所选择的组相对应的小于8位的码字进行编码。如果没有测试所有组,则该处理继续进行变量i的初始化,从而使得能够测试范围中的所有类(步骤2605)。在步骤2606中,将表示原始样本和与偏移j的组相对应的sao滤波后的编码样本之间的差的总和的变量sumdiff(j)初始化为0。这里,仅考虑4个类,但与偏移数一致的其它类数量也是可以的。在步骤2607中,如果一些类仍待测试,则初始化变量k,从而使得能够测试与类i相对应的样本的范围中的所有可能样本。利用步骤2611~2619,计算利用偏移j的组中的类i的偏移进行滤波后的编码样本和所考虑的类i中的原始样本之间的差的绝对值的总和。这里,orig(k)是与编码值enc(k)相对应的原始样本值的平均值。在偏移组j中,filter(i,j)是与类i相对应的偏移值。sumdiff(j)是针对构成范围的所有类(这里为4个类)所计算出的差的总和。

在包括步骤2621~2626的循环中,对所计算出的差的所有总和进行比较,并且选择总和最小的组的索引。所选择的索引与如下偏移的组相对应,其中这些偏移的组在应用于编码样本的情况下,使得能够使滤波后的样本和原始样本之间的差最小。

在语法编码处理期间,利用与所选择的偏移的组相对应的索引的编码来替换例如图22的步骤2211~2213所示的偏移值的编码。

对色度u或v成分像素的分类单独进行亮度成分像素的分类,因而可以相应地调整各分类以使得各类具有相似的像素数。

因而,本发明的各实施例的方法提供了一种更加灵活的分类方式,其中该分类方式可被配置为针对亮度或色度信号这两者单独提供更优的分类,由此得以改进编码效率。

尽管以上已经参考具体实施例说明了本发明,但本发明不限于这些具体实施例,并且本领域技术人员将明白存在于本发明的范围内的变形。

例如,尽管已经与图像的像素以及这些像素的相应像素值有关地说明了前述实施例,但应当理解,在本发明的上下文内,可以将一组像素连同相应组的像素值一起进行考虑。因而,样本可以与图像的一个或多个像素相对应。

以下陈述本发明的其它方面。

根据本发明的另一第一方面,提供一种用于针对图像的重建样本的集合提供补偿偏移的方法,各样本具有样本值,所述集合的多个样本的样本值能够由样本值的统计分布来表示,所述方法包括以下步骤:根据所述样本值的统计分布的属性来确定根据所述样本的相应样本值对所述样本进行重新划分所用的多个类,其中所述多个类中的各类定义了样本值的范围;以及使应用于所述类的各样本的样本值的各补偿偏移与所确定出的各类相关联。

在本发明的该方面中,由于在确定样本的分类时考虑到样本值的统计分布,因此可以相应地使该分类适合于样本值的所有可能范围。此外,可以根据样本值的成分类型来调整该分类。例如,在与色度信号相对应的像素的情况下,与提供了更加分散的分布的亮度信号的分布相比,像素值的分布趋于更加集中于峰值像素值附近。因而,本发明的各实施例的方法提供了一种更加灵活的分类方式,其中该分配方式可被配置为针对亮度或色度信号这两者单独提供更优的分类,由此得以改进编码效率。

在实施例中,统计分布的属性包括所确定出的图像样本值的统计分布的中心。

在实施例中,统计分布的属性包括统计分布的样本值的有用范围。

在实施例中,确定类,以使得在这些类之间大致均匀地共用样本。

在实施例中,所述集合的样本可以至少具有第一成分类型或第二成分类型,以及所述多个类是依赖于样本的所述集合的成分类型所确定的。

在实施例中,类的数量是预先确定的,其中针对各类所定义的样本值的范围是依赖于统计分布的属性所确定的。

在另一实施例中,类的数量和针对各类所定义的样本值的范围是依赖于统计分布的属性所确定的。

在实施例中,类的数量是依赖于有用范围中的具有样本值的样本数所确定的。

在实施例中,类的数量是根据所述成分类型所确定的。

在实施例中,所述方法还包括:根据有用范围中的样本值的数量来确定各类的样本值的最大数量。

在实施例中,确定多个类的步骤包括:从多个预先确定的分类中选择用于定义适合于统计分布的属性的多个类的分类。

在实施例中,基于率失真标准来确定各类的样本值的范围、统计分布的中心、以及/或者样本值的有用范围。

在实施例中,各类的样本值的范围、统计分布的中心、以及/或者样本值的有用范围是预先确定的。在实施例中,样本值的有用范围是基于样本值相对于阈值的比较所确定的,其中该阈值依赖于总样本数,该阈值依赖于样本的成分类型,或者该阈值是预定值。

在实施例中,针对各类的补偿偏移是根据该类的各重建样本的样本值和相应原始图像的各样本值之间的差的平均值所确定的。

在实施例中,样本的集合是图像的样本的多个集合其中之一,其中针对各集合确定相同的类数量。

在实施例中,样本值表示位深度,并且有用范围、各类的范围、和/或统计分布的中心依赖于该位深度。

在实施例中,给定类的样本值的范围依赖于有用范围内的类的位置。

在实施例中,位于统计分布的边缘处的给定类的样本值的范围超过该分布的中心区域中的给定类的样本值的范围。

在实施例中,统计分布的中心是基于有用范围所确定的。

在实施例中,多个类包括:位于统计分布的中心部的第一组类;以及包含位于统计分布的各边缘部的第一子组类和第二子组类的第二组类。

在实施例中,将统计分布中的第二子组类的位置设置作为编码所用的数据。

在实施例中,第二组中的子组的位置独立于统计分布的整个范围。

在实施例中,统计分布的中心不是针对编码所设置的。

在实施例中,从分布在整个范围内的多个可能位置中选择整个范围内的有用范围(分类)的位置,其中在整个范围的至少一部分中,两个连续位置之间的间隔与整个范围的另一部分相比而言是较小的。

例如,间隔较小的部分可以处于整个范围的中间。

根据另一示例,间隔较小的部分可以处于整个范围的一端或两端处。

这些位置可以是中心位置。可选地,这些位置可以是端位置。

可以向可能的位置分配索引。

在实施例中,各类的样本值的范围、统计分布的中心、和/或样本值的有用范围是预先确定的。

在实施例中,可以生成至少两种不同类型的偏移值,这些类型其中之一是所谓的带偏移值,其中如上所述,使这些带偏移值分别与类(样本值的范围)相关联。一个或多个其它类型的偏移值可以是所谓的边缘偏移值。针对各方向可能存在不同类型的边缘偏移值、例如分别与四个不同方向相对应的四个不同类型。因而,针对各方向可能存在一组边缘偏移值。然后可以选择偏移值的一个类型(带或边缘)。没有限制选择标准,但一个适当标准是率失真标准。然后,利用编码器和解码器仅应用所选择的类型的sao滤波(带或边缘偏移)。可以针对各帧区域执行该选择。另外,例如如果利用任意类型均未获得明显改进,则可以选择“无sao”、即既不应用带偏移也不应用边缘偏移。在实施例中,利用编码器对所选择的sao滤波的类型进行编码并且传输至解码器。

在实施例中,使用固定长度代码来对所选择的类型进行编码。

在实施例中,在所选择的类型是带偏移的情况下,对表示有用范围的位置的值进行编码。该位置可以是有用范围的中心位置或端位置。

在实施例中,使用固定长度代码来对有用范围的位置进行编码。

在实施例中,在对与表示有用范围的位置的值相对应的码字进行编码所使用的固定长度代码的长度所容许的不同码字的数量高于不同可能位置的实际数量的情况下,使用备用码字来对其它信息进行编码。例如,在一个实施例中,使用备用码字来对边缘偏移的类型(方向)进行编码。

在实施例中,利用固定长度代码来对补偿偏移进行编码。这可以应用于带偏移、边缘偏移或这两种类型的偏移。

在实施例中,固定长度代码的长度所容许的不同补偿偏移的数量小于可能的补偿偏移的数量。

在实施例中,向补偿偏移值应用倍增因数,并且使用倍增后的补偿偏移值来进行滤波。

在实施例中,将倍增因数从编码器传输至解码器。

在实施例中,向补偿偏移值应用移位值,并且使用移位后的补偿偏移值来进行滤波。

在实施例中,将移位值从编码器传输至解码器。

在实施例中,至少一个类型(方向)的边缘偏移值是预先确定的。

在实施例中,对表示是否必须对图像的重建样本的集合应用补偿偏移的标志进行编码。

在实施例中,带偏移值的组是预定义的,其中该组的各偏移与有用范围的一个类相关联。

在实施例中,向各组分配索引。

在实施例中,将预定义组收集到表中,其中该表顺序依赖于各组的选择概率。

在实施例中,各组的选择概率是通过将体现本发明的提供补偿偏移的方法应用于一组训练序列所计算出的。

在实施例中,选择带偏移值的预定义组中的、原始样本和滤波后的样本之间的差最小的带偏移值的组。

在实施例中,使用固定长度代码来对组的索引进行编码。

在实施例中,固定长度代码的长度所容许的组的不同编码索引的数量小于可能的不同组的数量。

在实施例中,根据各组的选择概率和固定长度代码的长度来确定可能的不同组内的带偏移的组的子集。

在实施例中,对带偏移的组的索引进行编码所使用的固定长度代码的长度是预先确定的。

在实施例中,将对补偿偏移的组的索引进行编码所使用的固定长度代码的长度编码在序列头、一组图片头、图片头、片头或lcu头中。

根据本发明的另一第二实施例中,提供一种用于对包括多个样本的图像进行编码的方法,所述方法包括以下步骤:对所述样本进行编码;对已编码的样本进行解码以提供重建样本;对所述重建样本进行环路滤波,所述环路滤波包括向各所述重建样本的样本值应用补偿偏移,各所述补偿偏移与样本值的范围相关联,其中所述补偿偏移是根据另一第一方面所述的方法所提供的;以及生成已编码的样本的位流。

在实施例中,所述方法还包括:在位流中传输表示各类的各补偿偏移的编码数据。

在实施例中,所述方法还包括:在位流中传输用于定义所确定出的多个类的编码分类数据。

在实施例中,分类数据包括表示统计分布的中心的数据。

在实施例中,分类数据包括表示针对多个类各自所定义的样本值的范围的数据。

在实施例中,所述方法还包括:分类数据包括表示统计分布的有用范围的数据。

根据本发明的另一第三方面,提供一种用于对包括多个样本的图像进行解码的方法,所述方法包括以下步骤:

接收已编码的样本;

对所述已编码的样本进行解码以提供重建样本;

对所述重建样本进行环路滤波,所述环路滤波包括对各所述重建样本的样本值应用补偿偏移,各所述补偿偏移与样本值的范围相关联,其中所述补偿偏移是根据前述实施例中任一实施例所述的方法所提供的。

本发明的另一第四方面提供一种用于对包括多个样本值的图像进行解码的方法,所述方法包括以下步骤:

接收已编码的样本值;

接收已编码的分类数据,所述已编码的分类数据用于定义与根据前述实施例中任一实施例所述的方法所提供的各补偿偏移相关联的多个类,各所述补偿偏移与样本值的范围相对应;

对所述已编码的样本进行解码以提供重建样本,并且对已编码的补偿偏移进行解码;以及

对所述重建样本进行环路滤波,所述环路滤波包括根据样本的样本值来向各样本的图像样本应用所接收到的补偿偏移。

在实施例中,分类数据包括表示统计分布的中心的数据、表示针对多个类各自所定义的样本值的范围的数据、以及/或者表示统计分布的有用范围的数据。

根据本发明的进一步方面中的另一方面,提供一种携带有视频位流所表示的图像的信息数据集的信号,所述图像包括可重建样本的集合,重建之后的各可重建样本各自具有样本值,所述集合的多个重建样本的样本值能够由样本值的统计分布来表示;所述信息数据集包括表示与应用于各重建样本的样本值的各补偿偏移相关联的多个类的分类数据,其中所述分类数据是根据所述统计分布所确定的。

在实施例中,分类数据包括表示统计分布的中心的数据、表示针对多个类各自所定义的样本值的范围的数据、以及/或者表示统计分布的有用范围的数据。

根据本发明的进一步方面中的另一方面,提供一种用于对图像的重建样本的集合提供补偿偏移的装置,各样本具有样本值,所述集合的多个样本的样本值能够由样本值的统计分布来表示,所述装置包括:

用于根据样本值的所述统计分布的属性来确定根据样本的相应样本值来重新划分样本所用的多个类的部件,其中各类定义样本值的范围;以及

用于使应用于所述类的各样本的各样本值的各补偿偏移与所确定出的各类相关联的部件。

本发明的进一步方面中的另一方面提供一种编码装置,用于对包括多个样本的图像进行编码,所述编码装置包括:编码器,用于对所述样本进行编码;解码器,用于对已编码的样本进行解码以提供重建样本;环路滤波器,用于对所述重建样本进行滤波,所述环路滤波器部件包括用于对各所述重建样本的样本值应用补偿偏移的偏移应用部件,各所述补偿偏移与样本值的范围相关联,其中所述补偿偏移是前述实施例的装置所提供的;以及位流生成器,用于生成已编码的样本的位流。

本发明的进一步方面中的又一方面提供一种解码装置,用于对包括多个样本的图像进行解码,所述解码装置包括:接收器,用于接收已编码的样本;解码器,用于对所述已编码的样本进行解码以提供重建样本;环路滤波器,用于对所述重建样本进行环路滤波,所述环路滤波器包括用于对各所述重建样本的样本值应用补偿偏移的部件,各所述补偿偏移与样本值的范围相关联,其中所述补偿偏移是根据前述实施例所述的装置所提供的。

本发明的进一步方面中的另一方面提供一种解码装置,用于对包括多个样本值的图像进行解码,所述解码装置包括:接收器,用于接收已编码的样本值,并且接收用于定义与根据前述实施例所述的装置所提供的各补偿偏移相关联的多个类的编码分类数据,其中各所述补偿偏移与样本值的范围相对应;解码器,用于对已编码的样本进行解码以提供重建样本,并且对已编码的补偿偏移进行解码;以及环路滤波器,用于对所述重建样本进行环路滤波,所述环路滤波器包括用于根据样本的样本值来向各样本的图像样本应用所接收到的补偿偏移的部件。

许多其它修改和改变在参考仅以示例方式给出的并且并不意图限制本发明的范围的前述例示实施例时向精通本技术的人员表明这些修改和改变仅是由所附权利要求书来确定的。特别地,在适当情况下,可以互换来自不同实施例的不同特征。

在权利要求书中,词语“包括”没有排除其它元件或步骤,并且不定冠词“a”或“an”没有排除多个。在相互不同的从属权利要求中陈述不同的特征的仅有事实并不表明不能有利地使用这些特征的组合。

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