进行编码、解码的方法、装置和系统与流程

文档序号:21407613发布日期:2020-07-07 14:41阅读:202来源:国知局
进行编码、解码的方法、装置和系统与流程

本公开涉及音视频编码领域,特别涉及一种进行编码、解码的方法、装置和系统。



背景技术:

随着互联网技术和计算机技术的发展,视频应用程序越来越多,用户对视频应用程序中高清视频的需求越来越大,但是由于高清视频的数据量比较大,想要高清视频在有限的网络带宽中传输,需要对高清视频进行编码处理。一般编码处理包括:帧内预测、帧间预测、变换、量化、熵编码、环内滤波等环节。在进行编码处理时,通过帧内预测或者帧间预测获取到残差块(可以称为是tu(transmissionunit,变换单元)),对tu进行图像变换编码(图像变换编码是指将以空间域中像素形式描述的图像转换至变换域,以变换系数的形式加以表示),得到变换系数。然后对变换系数进行量化和熵编码后,得到编码码流。

相关技术中,在图像变换编码时,通常是选择某个预设变换核对(变换核对是由水平变换核和垂直变换核组成的变换核对),对tu进行变换处理,得到变换系数。相应的,在解码时也是选择编码时使用的预设变换核对,对tu进行逆变换处理,得到残差信号。

这样,由于同一tu采用不同的变换核对进行变换,压缩效果大不相同,所以使用同一个预设变换核对,对所有tu进行变换处理,有可能会导致编解码性能较差。



技术实现要素:

为了解决相关技术的问题,本公开实施例提供了一种进行编码、解码的方法、装置和系统。所述技术方案如下:

第一方面,提供了一种进行编码的方法,所述方法包括:

获取变换单元tu;

如果所述tu满足多核变换条件,则根据所述tu的宽度和高度之间的关系,确定所述tu对应的变换集,其中,所述变换集中包括至少一个变换核对,所述变换核对包括一个水平变换核和一个垂直变换核;

在所述变换集和预设变换核对中,选择所述tu对应的目标变换核对;

根据所述目标变换核对,对所述tu进行编码处理,得到所述tu对应的编码数据。

可选的,所述方法还包括:

如果所述tu不满足多核变换条件,则将所述预设变换核对,确定为所述tu对应的目标变换核对。

可选的,所述根据所述tu的宽度和高度之间的关系,确定所述tu对应的变换集,包括:

如果所述tu的宽度等于所述tu的高度,则确定所述tu对应的变换集为第一变换集,其中,所述第一变换集中变换核对的数目小于或等于第一数值;

如果所述tu的宽度小于所述tu的高度,则确定所述tu对应的变换集为第二变换集,其中,所述第二变换集中变换核对的数目小于或等于第二数值;

如果所述tu的宽度大于所述tu的高度,则确定所述tu对应的变换集为第三变换集,其中,所述第三变换集中变换核对的数目小于或等于第三数值。

可选的,如果所述第二变换集中包括多个变换核对,则所述第二变换集中包括的多个变换核对的水平变换核相同,所述水平变换核为离散正弦变换dst7、dst4、离散余弦变换dct2的转置、dct2中的任一种。

这样,可以缩短编码时间。

可选的,如果所述第三变换集中包括多个变换核对,则所述第三变换集中包括的多个变换核对的垂直变换核相同,所述垂直变换核为dst7、dst4、dct2的转置、dct2中的任一种。

这样,可以缩短编码时间。

可选的,所述方法还包括:

如果所述tu满足多核变换条件,则在所述编码数据中携带第一标识和第二标识,其中,所述第一标识用于指示进行多核变换处理,所述第二标识用于指示所述目标变换核对的核标识;

如果所述tu不满足多核变换条件,则在所述编码数据中携带第三标识,其中,所述第三标识用于指示不进行多核变换处理。

这样,可以使解码端更快速的进行解码。

可选的,所述方法还包括:

如果所述tu的宽度和高度均不大于预设阈值,则确定所述tu满足多核变换条件。

这样,可以节约硬件开销。

可选的,所述根据所述tu的宽度和高度之间的关系,确定所述tu对应的变换集,包括:

根据所述tu的宽度与高度的比值、所述tu的帧内角度模式、以及tu的宽度与高度的比值、tu的帧内角度模式和变换集三者之间的对应关系,确定所述tu对应的变换集

这样,基于模式和形状决定变换集,可以使确定出的变换集更准确,进而可以提升编码性能。

可选的,对于所述对应关系中的任一变换集,如果基于所述任一变换集对应的比值和帧内角度模式确定出的角度方向与水平向右方向的夹角大于或等于角度阈值,则所述任一变换集中的多个变换核对的水平变换核相同,所述水平变换核为dst7、dst4、dct2的转置、dct2中的任一种。

这样,可以缩短编码时间。

可选的,对于所述对应关系中的任一变换集,如果基于所述任一变换集对应的比值和帧内角度模式确定出的角度方向与水平向右角度方向的夹角小于角度阈值,则所述任一变换集中的多个变换核对的垂直变换核相同,所述垂直变换核为dst7、dst4、dct2的转置、dct2中的任一种。

这样,可以缩短编码时间。

可选的,所述在所述变换集和预设变换核对中,选择所述tu对应的目标变换核对,包括:

遍历所述预设变换核对和所述变换集中包括的变换核对,将率失真代价最小的变换核对,确定为所述tu对应的目标变换核对。

可选的,所述第二标识占用一个比特位或两个比特位。

这样,可以节约传输资源和存储资源。

第二方面,提供了一种进行解码的方法,所述方法包括:

获取编码数据,确定所述编码数据对应的变换单元tu;

如果所述编码数据中携带有第一标识,则根据所述tu的宽度和高度之间的关系,确定所述tu对应的变换集,并获取所述编码数据中携带的第二标识,其中,所述变换集中包括至少一个变换核对,所述变换核对包括一个水平变换核和一个垂直变换核,所述第一标识用于指示进行多核变换处理,所述第二标识用于指示所述目标变换核对的核标识;

在所述变换集和预设变换核对中,选取所述第二标识对应的目标变换核对;

根据所述目标变换核对,对所述tu进行解码处理,得到所述tu对应的重建信息。

可选的,所述方法还包括:

如果所述编码数据中携带有第三标识,则将所述预设变换核对,确定为所述tu对应的目标变换核对,其中,所述第三标识用于指示不进行多核变换处理。

可选的,所述根据所述tu的宽度和高度之间的关系,确定所述tu对应的变换集,包括:

如果所述tu的宽度等于所述tu的高度,则确定所述tu对应的变换集为第一变换集,其中,所述第一变换集中变换核对的数目小于或等于第一数值;

如果所述tu的宽度小于所述tu的高度,则确定所述tu对应的变换集为第二变换集,其中,所述第二变换集中变换核对的数目小于或等于第二数值;

如果所述tu的宽度大于所述tu的高度,则确定所述tu对应的变换集为第三变换集,其中,所述第三变换集中变换核对的数目小于或等于第三数值。

可选的,如果所述第二变换集中包括多个变换核对,则所述第二变换集中包括的多个变换核对的水平变换核相同,所述水平变换核为离散正弦变换dst7、dst4、离散余弦变换dct2的转置、dct2中的任一种。

可选的,如果所述第三变换集中包括多个变换核对,则所述第三变换集中包括的多个变换核对的垂直变换核相同,所述垂直变换核为dst7、dst4、dct2的转置、dct2中的任一种。

可选的,根据所述tu的宽度和高度之间的关系,确定所述tu对应的变换集,包括:

根据所述tu的宽度与高度的比值、所述tu的帧内角度模式、以及tu的宽度与高度的比值、tu的帧内角度模式和变换集三者之间的对应关系,确定所述tu对应的变换集。

可选的,对于所述对应关系中的任一变换集,如果基于所述任一变换集对应的比值和帧内角度模式确定出的角度方向与水平向右方向的夹角大于或等于角度阈值,则所述任一变换集中的多个变换核对的水平变换核相同,所述水平变换核为dst7、dst4、dct2的转置、dct2中的任一种。

可选的,对于所述对应关系中的任一变换集,如果基于所述任一变换集对应的比值和帧内角度模式确定出的角度方向与水平向右角度方向的夹角小于角度阈值,则所述任一变换集中的多个变换核对的垂直变换核相同,所述垂直变换核为dst7、dst4、dct2的转置、dct2中的任一种。

第三方面,提供了一种进行编码的装置,所述装置包括:

获取模块,用于获取变换单元tu;

确定模块,用于如果所述tu满足多核变换条件,则根据所述tu的宽度和高度之间的关系,确定所述tu对应的变换集,其中,所述变换集中包括至少一个变换核对,所述变换核对包括一个水平变换核和一个垂直变换核;

选择模块,用于在所述变换集和预设变换核对中,选择所述tu对应的目标变换核对;

编码模块,用于根据所述目标变换核对,对所述tu进行编码处理,得到所述tu对应的编码数据。

可选的,所述确定模块,还用于:

如果所述tu不满足多核变换条件,则将所述预设变换核对,确定为所述tu对应的目标变换核对。

可选的,所述确定模块,用于:

如果所述tu的宽度等于所述tu的高度,则确定所述tu对应的变换集为第一变换集,其中,所述第一变换集中变换核对的数目小于或等于第一数值;

如果所述tu的宽度小于所述tu的高度,则确定所述tu对应的变换集为第二变换集,其中,所述第二变换集中变换核对的数目小于或等于第二数值;

如果所述tu的宽度大于所述tu的高度,则确定所述tu对应的变换集为第三变换集,其中,所述第三变换集中变换核对的数目小于或等于第三数值。

可选的,如果所述第二变换集中包括多个变换核对,则所述第二变换集中包括的多个变换核对的水平变换核相同,所述水平变换核为离散正弦变换dst7、dst4、离散余弦变换dct2的转置、dct2中的任一种。

可选的,如果所述第三变换集中包括多个变换核对,则所述第三变换集中包括的多个变换核对的垂直变换核相同,所述垂直变换核为dst7、dst4、dct2的转置、dct2中的任一种。

可选的,所述装置还包括:

添加模块,用于:

如果所述tu满足多核变换条件,则在所述编码数据中携带第一标识和第二标识,其中,所述第一标识用于指示进行多核变换处理,所述第二标识用于指示所述目标变换核对的核标识;

如果所述tu不满足多核变换条件,则在所述编码数据中携带第三标识,其中,所述第三标识用于指示不进行多核变换处理。

可选的,所述确定模块,还用于

如果所述tu的宽度和高度均不大于预设阈值,则确定所述tu满足多核变换条件。

可选的,所述确定模块,用于:

根据所述tu的宽度与高度的比值、所述tu的帧内角度模式、以及tu的宽度与高度的比值、tu的帧内角度模式和变换集三者之间的对应关系,确定所述tu对应的变换集。

可选的,对于所述对应关系中的任一变换集,如果基于所述任一变换集对应的比值和帧内角度模式确定出的角度方向与水平向右方向的夹角大于或等于角度阈值,则所述任一变换集中的多个变换核对的水平变换核相同,所述水平变换核为dst7、dst4、dct2的转置、dct2中的任一种。

可选的,对于所述对应关系中的任一变换集,如果基于所述任一变换集对应的比值和帧内角度模式确定出的角度方向与水平向右角度方向的夹角小于角度阈值,则所述任一变换集中的多个变换核对的垂直变换核相同,所述垂直变换核为dst7、dst4、dct2的转置、dct2中的任一种。

可选的,所述选择模块,用于:

遍历所述预设变换核对和所述变换集中包括的变换核对,将率失真代价最小的变换核对,确定为所述tu对应的目标变换核对。

可选的,所述第二标识占用一个比特位或两个比特位。

第四方面,提供了一种进行解码的装置,所述装置包括:

获取模块,用于获取编码数据;

确定模块,用于确定所述编码数据对应的变换单元tu;如果所述编码数据中携带有第一标识,则根据所述tu的宽度和高度之间的关系,确定所述tu对应的变换集,所述获取模块,还用于获取所述编码数据中携带的第二标识,其中,所述变换集中包括至少一个变换核对,所述变换核对包括一个水平变换核和一个垂直变换核,所述第一标识用于指示进行多核变换处理,所述第二标识用于指示所述目标变换核对的核标识;

选择模块,用于在所述变换集和预设变换核对中,选取所述第二标识对应的目标变换核对;

解码模块,用于根据所述目标变换核对,对所述tu进行解码处理,得到所述tu对应的重建信息。

可选的,所述确定模块,还用于:

如果所述编码数据中携带有第三标识,则将所述预设变换核对,确定为所述tu对应的目标变换核对,其中,所述第三标识用于指示不进行多核变换处理。

可选的,所述确定模块,用于:

如果所述tu的宽度等于所述tu的高度,则确定所述tu对应的变换集为第一变换集,其中,所述第一变换集中变换核对的数目小于或等于第一数值;

如果所述tu的宽度小于所述tu的高度,则确定所述tu对应的变换集为第二变换集,其中,所述第二变换集中变换核对的数目小于或等于第二数值;

如果所述tu的宽度大于所述tu的高度,则确定所述tu对应的变换集为第三变换集,其中,所述第三变换集中变换核对的数目小于或等于第三数值。

可选的,如果所述第二变换集中包括多个变换核对,则所述第二变换集中包括的多个变换核对的水平变换核相同,所述水平变换核为离散正弦变换dst7、dst4、离散余弦变换dct2的转置、dct2中的任一种。

可选的,如果所述第三变换集中包括多个变换核对,则所述第三变换集中包括的多个变换核对的垂直变换核相同,所述垂直变换核为dst7、dst4、dct2的转置、dct2中的任一种。

可选的,所述确定模块,用于:

根据所述tu的宽度与高度的比值、所述tu的帧内角度模式、以及tu的宽度与高度的比值、tu的帧内角度模式和变换集三者之间的对应关系,确定所述tu对应的变换集。

可选的,对于所述对应关系中的任一变换集,如果基于所述任一变换集对应的比值和帧内角度模式确定出的角度方向与水平向右方向的夹角大于或等于角度阈值,则所述任一变换集中的多个变换核对的水平变换核相同,所述水平变换核为dst7、dst4、dct2的转置、dct2中的任一种。

可选的,对于所述对应关系中的任一变换集,如果基于所述任一变换集对应的比值和帧内角度模式确定出的角度方向与水平向右角度方向的夹角小于角度阈值,则所述任一变换集中的多个变换核对的垂直变换核相同,所述垂直变换核为dst7、dst4、dct2的转置、dct2中的任一种。

第五方面,提供了一种计算机可读存储介质,所述存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述第一方面和第二方面所述的方法步骤。

第六方面,提供了一种编码端,包括处理器和存储器,其中,所述存储器,用于存放计算机程序;所述处理器,用于执行所述存储器上所存放的程序,实现上述第一方面所述的方法步骤。

第七方面,提供了一种解码端,包括处理器和存储器,其中,所述存储器,用于存放计算机程序;所述处理器,用于执行所述存储器上所存放的程序,实现上述第二方面所述的方法步骤。

第八方面,提供了一种进行编码和解码的系统,所述系统包括编码端和解码端,其中:

所述编码端,如上述第三方面所述的装置;

所述解码端,如上述第四方面所述的装置。

本公开实施例提供的技术方案带来的有益效果至少包括:

本公开实施例中,在进行编码时,可以获取tu,判断tu是否满足多核变换条件,如果所述tu满足多核变换条件,则根据所述tu的宽度和高度之间的关系,确定所述tu对应的变换集,在tu对应的变换集和预设变换核对中,选择所述tu对应的变换核对(可以称为是目标变换核对),然后根据所述目标变换核对,对所述tu进行编码处理,得到所述tu对应的编码数据。这样,由于基于tu的宽度和高度之间的关系,在tu对应的变换集、预设变换核对中,选取出tu对应的变换集,而不是按照同一预设变换核对进行变换处理,所以可以提升编码性能。而且基于tu的宽度和高度之间的关系,来选择tu的变换集,遍历的变换核对的数目会减少,所以在不牺牲编码性能的基础上,还可以大幅度的降低编码时间。

附图说明

图1是本公开实施例提供的一种块的划分类型示意图;

图2是本公开实施例提供的一种ctu划分成cu的示意图;

图3是本公开实施例提供的常用的三种块的示意图;

图4是本公开实施例提供的进行帧内预测时的方向示意图;

图5是本公开实施例提供的基于块形状进行调整的示意图;

图6是本公开实施例提供的一种进行编码的示意图;

图7是本公开实施例提供的一种分布信号的示意图;

图8是本公开实施例提供的一种残差信号分布的示意图;

图9是本公开实施例提供的一种进行编码的方法流程示意图;

图10是本公开实施例提供的一种选择变换核对的流程示意图;

图11是本公开实施例提供的一种进行解码的方法流程示意图;

图12是本公开实施例提供的一种进行编码的装置的结构示意图;

图13是本公开实施例提供的一种进行编码的装置的结构示意图;

图14是本公开实施例提供的一种进行解码的装置的结构示意图;

图15是本公开实施例提供的一种编码端的装置的结构示意图;

图16是本公开实施例提供的一种解码端的装置的结构示意图。

具体实施方式

为使本公开的目的、技术方案和优点更加清楚,下面将结合附图对本公开实施方式作进一步地详细描述。

本公开提供了一种进行编码和进行解码的方法,进行编码的方法的执行主体为编码端,进行解码的方法的执行主体可以是编码端,其中,编码端或解码端可以是服务器、电脑、手机等能对视频数据进行编码和/或解码的设备。

其中,编码端或解码端中可以设置有处理器、存储器和收发器等,处理器可以用于进行编码和/或解码的处理,存储器可以用于存储进行编码和/或解码过程中需要的数据以及产生的数据,收发器可以用于接收以及发送数据,如获取视频数据等。

在进行实施前,首先对本公开实施例可能涉及的概念进行解释:

变换核(transformkernel):

在视频编码中,变换是实现视频数据压缩必不可少的阶段,能够使信号的能量更加集中,而基于dct(discretecosinetransform,离散余弦变换)/dst(discretesinetransform,离散正弦变换)的变换技术一直是视频编码主流的变换技术。dct和dst根据基函数的不同又具体分为多种变换核,表一给出了常用的五种变换核的基函数。

表一

正变换(forwardtransform)和逆变换(inversetransform):

在视频编码过程中,变换过程包含了正变换和逆变换过程,又叫前向变换和反向变换,其中正变换是将一个二维残差信号(残差系数)转换成能量更加集中的二维频谱信号(变换系数),变换系数再经过量化过程可以有效去除高频成分,保留中低频成分,起到了压缩的作用。用矩阵形式表示如公式(1):

f=b·f·at(1)

其中,m表示残差块宽度,n表示残差块高度,f表示nxm维的原始残差信号,f表示nxm维的频域信号。a和b表示mxm和nxn维的变换矩阵,它们均满足正交性。

逆变换又称反变换,是正变换的逆过程,即通过正交变换矩阵a和b,将频域信号f转换成时域残差信号f。用矩阵形式表示为公式(2):

f=bt·f·a(2)

水平变换(horizentaltransform)和垂直变换(verticaltransform):

在视频编码的变换阶段,输入的是一个二维残差信号,如公式(3)所示,x=a·ft,则f=b·xt

f=b·f·at=b·(a·ft)t(3)

因此一个二维残差信号的正变换可以通过两次一维的正变换方式实现,第一次正变换后得到一个mxn的信号x,去除了二维残差信号的水平方向像素之间的相关性,因此第一次正变换称为水平变换,称a为水平变换矩阵,第二次正变换去除了二维残差信号的垂直方向像素之间的相关性,因此第二次正变换称为垂直变换,称b为垂直变换矩阵。

变换核对(transformpair):

在下一代视频编码标准中,tu(transmissionunit,变换单元)支持矩阵块,因此m不一定等于n,因此a和b的维度不一定相等,除此之外,下一代视频编码标准还支持a和b不是同一种变换核生产的变换矩阵,因此在变换中存在a和b对应的变换核组成的变换核对{h,v},其中h称为水平变换核,v称为垂直变换核。

块划分技术(blockparition)

在hevc(highefficiencyvideocoding,高效率的视频压缩)中,一个64x64大小的ctu(codingtreeunit,编码树单元)使用四叉树递归划分成cu(codingunit,编码单元)。在叶子节点cu级确定是否使用帧内编码或者帧间编码。cu可以进一步划分成两个或者四个pu(predictionunit,预测单元),同一个pu内使用相同的预测信息。在预测完成后得到残差信号后,一个cu可以进一步四叉划分成多个tu。

但是在新提出的vvc(versatilevideocoding,通用视频编码)中的块划分技术有了较大变化。一种混合了二叉树/三叉树/四叉树((binary/ternary/quaternary)tree(bt/tt/qt))划分结构取代了原先的划分模式,取消了原先cu,pu,tu的概念的区分,支持了cu的更灵活的划分方式。cu可以是正方形也可以是矩形划分,ctu首先进行四叉树的划分,然后四叉树划分的叶子节点可以进一步进行二叉树和三叉树的划分。也就是说总共有五种划分类型,四叉树划分,水平二叉树划分,垂直二叉树划分,水平三叉树划分和垂直三叉树划分,如图1所示,表示了五种划分类型,在图1中,(a)表示不划分,(b)表示四叉树划分,(c)水平二叉树划分,(d)垂直二叉树划分,(e)水平三叉树划分,(f)垂直三叉树划分。如图2所示,提供一个ctu划分成cu的示例图。

因此,基于上述划分方式,块通常存在三种形状,如图3所示,在图3中,(a)表示宽大于高的块,(b)宽等于高的块,(c)宽小于高的块。

帧内预测:

帧内预测是考虑到在图像中,相邻块之间存在很强的空域相关性,因此可以利用周围已经重建的像素作为参考像素对当前未编码块进行预测,因此只需要对残差信号(原始信号-预测信号)进行后续编码处理,而不是对原始信号进行编码,有效去除了空域上的冗余,大大提高了视频信号的压缩效率。而且在帧内预测中,更加密集的角度可以带来更好的预测效果,如图4所示,示出了vvc给出的67种帧内角度模式进行帧内预测时的角度方向示意图,帧内角度模式数量从hevc的33种增加到65种,当模式号为0时,表示planar(平面)模式,当模式号为1时,表示dc模式(dc模式指当前块的预测像素均为参考像素的平均值),黑色实线表示原来hevc的角度方向(2,4,6,8,…,64,66),虚线是新增的角度方向(3,5,7,9,..,63,65),更加密集的角度方向能够更加有效地捕捉到自然视频中任意方向的边界,可以利用更多的参考信息进行率失真代价选择,从而可以找到更加适合的帧内预测模式来更加准确地预测当前编码块,使得预测块更加接近原始编码块,编码当前块所需要传输的比特更少,从而编码性能更高。在进行帧内预测编码时,这67种帧内模式运用在所有尺寸的编码块上,包括亮度分量和色度分量。

在图4中,帧内角度模式的模式号为2~34,角度方向与水平向右方向的夹角范围为:-45度~45度,帧内角度模式的模式号为35~66,角度方向与水平向右方向的夹角范围为:-135度~-45度。

需要说明的是,在一个平面直角坐标系中,水平向右方向为x轴的正方向,竖直向上为y轴的正方向,这样,第一象限与第二象限中以原点为顶点的射线(射线远离原点的方向)与x轴的正方向构成的夹角为正值,第三象限与第四象限为中以原点为顶点的射线(射线远离原点的方向)与x轴的正方向构成的夹角为负值。例如,水平向右方向与第四象限中的对称轴(远离原点的方向)的夹角为-45度。

宽角度(wide-angle)帧内预测:

对于矩形块来说,引入了基于块形状的宽角度预测模式,来替代一些传统的帧内预测模式,替代的模式仍然使用原来的模式号,这样整体一共还是65种角度模式,但是基于不同形状,会有所调整。具体如图5所示:

在图5中(a)表示正方形块,对于正方形块而言,角度方向刚好从45度顺时针旋转到-135度,因此不需要做任何调整。

在图5中(b)表示宽大于高的块,需要做以下调整,即使用右上角超过-135度的若干角度来替代左下角的若干角度。

在图5中(c)表示宽小于高的块,需要做以下调整,即使用左下角低于45度的若干角度来替代右上角的若干角度。

具体的宽角度预测模式的映射关系如表二所示:

表二

本公开实施例提供了一种常见的编码框架,如图6所示,完整的视频编码方法一般包括预测、变换、量化、熵编码、环内滤波等环节。其中预测具体分为帧内预测和帧间预测,帧内预测是考虑到在图像中,相邻块之间存在很强的空域相关性,因此可以利用周围已经重建的像素作为参考像素对当前未编码块进行预测,因此只需要对残差信号(原始信号-预测信号)进行后续编码处理,而不是对原始信号进行编码,有效去除了空域上的冗余,大大提高了视频信号的压缩效率。帧间预测是指利用视频信号时间域上的相关性,使用邻近已编码图像像素预测当前图像的像素,已达到去除视频时域冗余的目的。在帧间预测模块,由于视频存在很强的时域相关性,即时域相邻的两帧图像有很多相似图像块,当前帧的图像块往往在相邻参考图像中进行运动搜索,找到与当前块最匹配的块作为参考块。由于参考块与当前块相似度高,两者的差值非常小,因此编码差值的码率开销通常远小于直接编码当前块像素值带来的码率开销。

在上述的变换过程中,对于同一tu(也可以称为是残差块)采用不同的变换对对残差块进行压缩,压缩的效果大不相同。这是由变换核本身基函数所决定的,如图7所示,对应dct2、dst7和dct8三种变换核基函数,输入信号位为64点。从图中的零阶基函数可以看出,dct2对均匀分布的信号具有较强的能量集中效果,并且形成的直流分量是输入信号均值的倍数,dst7对幅值递增的输入信号具有较强的能量集中效果,dct8对幅值递减的输入信号具有较强的能量集中效果。

为了更直观感受不同变换核与残差特性的关系,如图8所示,5种不同的水平垂直变换核对代表的是不同类型的残差分布情况,对于{dct-2,dct-2}变换核类型,代表的是tu的残差分布均匀,对于{dst-7,dst-7}变换核类型,代表的是tu的残差分布从左到右,从上到下依次变大,主要分布在tu的右下角,类似地,{dct-8,dst-7}代表残差主要分布在tu的左下角,{dst-7,dct-8}代表残差主要分布在tu的右上角,{dct-8,dct-8}代表残差主要分布在tu的左上角。

本公开实施例提供了一种进行编码的方法,该方法的执行流程可以如图9所示。

步骤901,获取tu。

在实施中,编码端在对视频数据进行编码时,首先进行帧内预测或者帧间预测,得到残差块(得到残差块的方式与现有的视频编码标准中一致,不再赘述),然后将残差块作为当前要进行处理的tu。

需要说明的是,本公开实施例中的tu与前面提到的cu一样。

步骤902,如果tu满足多核变换条件,则根据tu的宽度和高度之间的关系,确定tu对应的变换集。

其中,变换集中包括至少一个变换核对,每个变换核对包括水平变换核和垂直变换核。

在实施中,编码端在获取到tu后,要进行变换处理,首先判断tu是否满足多核变换条件,如果满足多核变换条件,则可以确定tu的宽度和高度,然后根据tu的宽度和高度,确定tu的宽度和高度之间的关系。

然后根据tu的宽度和高度之间的关系,确定tu对应的变换集。例如,可以预先存储有宽度和高度之间的关系与变换集的对应关系,可以使用tu的宽度和高度之间的关系,在该对应关系中,确定tu对应的变换集。

需要说明的是,tu的宽度指tu水平方向包括的像素点的数目,tu的高度指tu垂直方向包括的像素点的数目。其中,对于一个mxn的tu,m表示tu的宽度,n表示tu的高度。

还需要说明的是,在本公开实施例中,上述提到的tu的像素点指的是亮度(y)像素点。

可选的,有多种方式可以确定tu对应的变换集,以下给出两种可以实现的方式:

方式一,基于宽度与高度的大小关系,确定变换集,处理可以如下:

如果tu的宽度等于tu的高度,则确定tu对应的变换集为第一变换集。如果tu的宽度小于tu的高度,则确定tu对应的变换集为第二变换集。如果tu的宽度大于tu的高度,则确定tu对应的变换集为第三变换集。

其中,第一变换集中变换核对的数目小于或等于第一数值,第二变换集中变换核对的数目小于或等于第二数值,第三变换集中变换核对的数目小于或等于第三数值。例如,第一变换集为:{dst7,dst7},{dst7,dct8},{dct8,dst7},{dct8,dct8},第二变换集为{dst7,dst7},{dst7,dct8},第三变换集为{dst7,dst7},{dct8,dst7}。

在实施中,在tu的宽度等于tu的高度时,tu为正方形块,可以确定出tu对应的变换集为第一变换集;在tu的宽度小于tu的高度时,tu为宽度小于高度的矩形块,可以确定出tu对应的变换集为第二变换集;在tu的宽度大于tu的高度时,tu为宽度大于高度的矩形块,可以确定出tu对应的变换集为第三变换集。

需要说明的是,第一数值、第二数值和第三数值均可以为4.

可选的,在tu的宽度小于tu的高度时,为了使变换集中变换核对的数目减少,第二变换集的设置方式可以如下:

如果第二变换集中包括多个变换核对,则第二变换集中包括的多个变换核对的水平变换核相同,水平变换核为dst7、dst4、dct2的转置、dct2中的任一种。

在实施中,在第二变换集中包括多个变换核对时,第二变换集中包括的多个变换核对的水平变换核相同,水平变换核为dst7、dst4、dct2的转置、dct2中的任一种。这样,tu的宽度小于tu的高度时,tu中较短的边称为短边,tu中较长的边称为长边,由于短边相对于长边比较短,所以短边的角度比较好控制,所以将短边的变换核固定,长边遍历多种变换核,而不需要长边和短边都遍历多种变换核,可以节约编码时间。

可选的,在tu的宽度大于tu的高度时,为了使变换集中变换核对的数目减少,第三变换集的设置方式可以如下:

如果第三变换集中包括多个变换核对,则第三变换集中包括的多个变换核对的垂直变换核相同,垂直变换核为dst7、dst4、dct2的转置、dct2中的任一种。

在实施中,在第三变换集中包括多个变换核对时,第三变换集中包括的多个变换核对的垂直变换核相同,垂直变换核为dst7、dst4、dct2的转置、dct2中的任一种。这样,tu的宽度大于tu的高度时,tu中较短的边称为短边,tu中较长的边称为长边,由于短边相对于长边比较短,所以短边的角度比较好控制,所以将短边的变换核固定,长边遍历多种变换核,而不需要长边和短边都遍历多种变换核,可以节约编码时间。

方式二,在确定tu对应的变换集时,还可以考虑帧内角度模式,相应的处理可以如下:

根据tu的宽度与高度的比值、tu的帧内角度模式、以及tu的宽度与高度的比值、tu的帧内角度模式和变换集三者之间的对应关系,确定tu对应的变换集。

其中,可以预先存储tu的宽度与高度的比值、tu的帧内角度模式和变换集的对应关系,在该对应关系,tu的帧内角度模式可以使用模式号表示,如表三所示。

表三

在实施中,编码端可以获取预先存储的tu的宽度与高度的比值、tu的帧内角度模式和变换集的对应关系,并且可以确定tu的宽度与高度的比值,并且获取在得到tu对应的残差信号的帧内角度模式的模式号,在该对应关系中,查找到tu的宽度与高度的比值和tu对应的模式号共同对应的变换集,将该变换集,确定为tu对应的目标变换集。

需要说明的是,首先进行帧内预测,然后才进行变换,在进行帧内预测时,使用每种帧内角度模式,进行帧内预测,得到不同的残差(可以认为是tu),这样,每个帧内角度模式,都能对应一个tu。对于每个tu,基于该tu的宽度和高度的比值,以及得到该tu使用的帧内角度模式的模式号,确定出该比值和该模式号对应的变换集,得到该tu对应的目标变换集。这样,对于每个tu都能得到一个目标变换集。

需要说明的是,在表三中,第四变换集可以与上述提到的第一变换集相同,第五变换集可以与上述提到的第二变换集相同,第六变换集可以与上述提到的第三变换集相同。

还需要说明的是,在方式二中,还考虑帧内角度模式,可以在编码性能提升的同时,降低编码时间,这是由于不同形状的tu对应的角度方向不相同,根据当前tu的角度方向是来自tu的上侧还是左侧,选择不同的变换集,所以可以在编码性能提升的同时,降低编码时间。

可选的,为了减少变换核对的数目,可以对变换集进行配置,相应的处理可以如下:

对于对应关系中的任一变换集,如果基于任一变换集对应的比值和帧内角度模式确定出的角度方向与水平向右方向的夹角大于或等于角度阈值,则任一变换集中的多个变换核对的水平变换核相同,水平变换核为dst7、dst4、dct2的转置、dct2中的任一种。

其中,角度阈值为-45度。

在实施中,在上述tu的宽度与高度的比值、tu的帧内角度模式和变换集三者之间的对应关系中,对于任一变换集,如果基于任一变换集对应的比值和帧内角度模式确定出的角度方向与水平向右方向的夹角(确定过程在后面描述),如果该夹角大于或等于-45度,则变换集中包括的多个变换核对的水平变换核相同,水平变换核为dst7、dst4、dct2的转置、dct2中的任一种。这样,角度方向来自tu的左侧,水平变换核固定一种变换核,垂直变换核至少为一种变换核,可以在提升编码性能的同时,节约编码时间。

可选的,为了减少变换核对的数目,可以对变换集进行配置,相应的处理可以如下:

对于对应关系中的任一变换集,如果基于任一变换集对应的比值和帧内角度模式确定出的角度方向与水平向右角度方向的夹角小于角度阈值,则任一变换集中的多个变换核对的垂直变换核相同,垂直变换核为dst7、dst4、dct2的转置、dct2中的任一种。

其中,角度阈值为-45度。

在实施中,在上述tu的宽度与高度的比值、tu的帧内角度模式和变换集三者之间的对应关系中,对于任一变换集,如果基于任一变换集对应的比值和帧内角度模式确定出的角度方向与水平向右方向的夹角(确定过程在后面描述),如果该夹角小于-45度,则变换集中包括的多个变换核对的垂直变换核相同,垂直变换核为dst7、dst4、dct2的转置、dct2中的任一种。这样,角度方向来自tu的左侧,垂直变换核固定一种变换核,水平变换核至少为一种变换核,可以在提升编码性能的同时,节约编码时间。

需要说明的是,上述角度阈值为-45度,仅是一种举例的形式,还可以根据实际需要进行调整,本公开实施例不做限定。

还需要说明的是,根据tu的宽度和高度的比值,得到tu的帧内角度模式对应的角度方向采用的方法可以是:

从图4中可以看到,在tu为正方形块时,帧内角度模式的模式号为2~34,角度方向与水平向右方向的夹角范围为-45度~45度,帧内角度模式的模式号为35~66,角度方向与水平向右方向的夹角范围为-135度~-45度。从图5(a)中,可知,在宽度与高度的比值等于1时,不需要进行调整,参照图4可知,帧内角度模式的模式号为2~34,帧内角度模式对应的角度方向与水平向右方向的夹角范围为-45度~45度,帧内角度模式的模式号为35~66,帧内角度模式对应的角度方向与水平向右方向的夹角范围为-135度~-45度。从图5(b)中,可知,在宽度与高度的比值大于1时,需要进行调整,在图4的基础上,使用右上角的若干角度来替代左下角的若干角度,所以模式号为2~34的帧内角度模式中某些帧内角度模式,对应的角度方向与水平向右方向的夹角会小于-45度。从图5(c)中,可知,在宽度与高度的比值小于1时,需要进行调整,在图4的基础上,使用左下角的若干角度来替代右上角的若干角度,所以模式号为35~66的帧内角度模式中某些帧内角度模式,对应的角度方向与水平向右方向的夹角会小于-45度。

例如,在本公开实施中,在tu的宽度和高度的比值为16,且模式号为16-34时,对应的角度方向与水平向右方向的角度大于或等于-45度,第五变换集为水平变换核相同的变换集,在tu的宽度和高度的比值为16,且模式号为2-15,35-66时,对应的角度方向与水平向右方向的角度小于-45度,第六变换集为垂直变换核相同的变换集。在tu的宽度和高度的比值为8,且模式号为14-34时,对应的角度方向与水平向右方向的角度大于或等于-45度,第五变换集为水平变换核相同的变换集,在tu的宽度和高度的比值为8,且模式号为2-13,35-66时,对应的角度方向与水平向右方向的角度小于-45度,第六变换集为垂直变换核相同的变换集。在tu的宽度和高度的比值为4,且模式号为12-34时,对应的角度方向与水平向右方向的角度大于或等于-45度,第五变换集为水平变换核相同的变换集,在tu的宽度和高度的比值为4,且模式号为2-22,35-66时,对应的角度方向与水平向右方向的角度小于-45度,第六变换集为垂直变换核相同的变换集。在tu的宽度和高度的比值为2,且模式号为8-34时,对应的角度方向与水平向右方向的角度大于或等于-45度,第五变换集为水平变换核相同的变换集,在tu的宽度和高度的比值为2,且模式号为2-7,35-66时,对应的角度方向与水平向右方向的角度小于-45度,第六变换集为垂直变换核相同的变换集。

在本公开实施中,在tu的宽度和高度的比值为1/2,且模式号为35-60时,对应的角度方向与水平向右方向的角度小于-45度,第六变换集为垂直变换核相同的变换集,在tu的宽度和高度的比值为1/2,且模式号为2-34,61-66时,对应的角度方向与水平向右方向的角度大于或等于-45度,第五变换集为水平变换核相同的变换集。在tu的宽度和高度的比值为1/4,且模式号为35-56时,对应的角度方向与水平向右方向的角度小于-45度,第六变换集为垂直变换核相同的变换集,在tu的宽度和高度的比值为1/4,且模式号为2-34,57-66时,对应的角度方向与水平向右方向的角度大于或等于-45度,第五变换集为水平变换核相同的变换集。在tu的宽度和高度的比值为1/8,且模式号为35-54时,对应的角度方向与水平向右方向的角度小于-45度,第六变换集为垂直变换核相同的变换集,在tu的宽度和高度的比值为1/8,且模式号为2-34,55-66时,对应的角度方向与水平向右方向的角度大于或等于-45度,第五变换集为水平变换核相同的变换集等。在tu的宽度和高度的比值为1/16,且模式号为35-52时,对应的角度方向与水平向右方向的角度小于-45度,第六变换集为垂直变换核相同的变换集,在tu的宽度和高度的比值为1/8,且模式号为2-34,53-66时,对应的角度方向与水平向右方向的角度大于或等于-45度,第五变换集为水平变换核相同的变换集。

通过角度方向与水平向右方向的夹角的确定,在上述表三中,第五变换集可以为水平变换核相同的变换集,第六变换集可以为垂直变换核相同的变换集。

需要说明的是,正的角度大于负的角度,负的角度的绝对值越大,负的角度越小。例如,50度大于30度。-50度的绝对值为50度,-30度的绝对值为30度,50度大于30度,但是-50度小于-30度。

步骤903,在变换集和预设变换核对中,选择tu对应的目标变换核对。

其中,预设变换核对可以为{dct2,dct2}。

在实施中,在确定出tu对应的变换集时,可以获取预设变换核对,然后在变换集和预设变换核对中,确定tu对应的变换核对(后续可以称为是目标变换核对)。

可选的,可以使用rdo(ratedistortionoptimization,率失真优化)准则,选择tu对应的目标变换核对,相应的步骤903的处理可以如下:

遍历预设变换核对和变换集中包括的变换核对,将率失真代价最小的变换核对,确定为tu对应的目标变换核对。

在实施中,评价编码效率的有两大指标:码率和psnr(peaksignaltonoiseratio,峰值信噪比)。一般比特流越小,则压缩率越大;psnr越大,重建图像质量越好。在进行模式选择的时候,判别公式实质上也就是对这二者的综合评价。

模式对应的代价:j(mode)=d+λ*r。其中,d表示distortion(失真),通常使用sse(sumofsquareserror,和方差)指标来衡量,sse是指重建块与源图像的差值均方和,λ是拉格朗日乘子,r就是该模式下图像块编码所需的实际比特数,包括编码模式信息、运动信息、残差等所需的比特总和。

这样,通过rdo准则,遍历变换集中的所有变换核对和预设变换核对,选择率失真代价最小的变换核对(即编码效率最高的变换核对),确定为tu对应的目标变换核对。

需要说明的是,如果步骤902中是基于帧内角度模式、tu的宽度和高度的比值,共同确定变换核集,则步骤903中,得到的是在编码效率最高的变换核对、以及使用的帧内角度模式。

另外,在上述方式二中,在帧内角度模式为0或1时,可以使用第一变换集,也可以直接使用上述方式一的方案。或者,在帧内角度模式为0或1时,也可以直接使用上述第二变换集和第三变换集,这样,整体使变换集减少到两类变换集,可以节省内存开销。

另外,在不满足多核变换条件时,确定tu对应的变换核对的过程可以如下:

如果tu不满足多核变换条件,则将预设变换核对,确定为tu对应的目标变换核对。

在实施中,在确定tu不满足多核变换条件时,可以获取预设变换核对,将该预设变换核对确定为tu对应的目标变换核对。这样,在tu不满足多核变换条件时,也可以确定出tu对应的目标变换核对。

步骤904,根据目标变换核对,对tu进行编码处理,得到tu对应的编码数据。

在实施中,在获取到tu对应的目标变换核对后,可以基于目标变换核对,对tu进行变换,得到变换系数,然后对变换系数进行量化处理,得到量化系数,量化系数进行熵编码处理,得到tu对应的编码数据。

这样,就完成了tu的编码处理。每个tu都按照图9所示的流程进行处理,即可编码一整段的视频数据。

可选的,在步骤902中,判断tu是否满足多核变换条件的处理可以如下:

如果tu的宽度和高度均不大于预设阈值,则确定tu满足多核变换条件。

其中,预设阈值可以预设,并且存储在编码端,预设阈值可以为32。

在实施中,可以确定tu的宽度和高度,然后判断tu的宽度和高度是否均不大于预设阈值,如果是均不大于预设阈值,则确定tu满足多核变换条件,如果不是均不大于预设阈值,则可以确定tu不满足多核变换条件。其中,不是均不大于预设阈值包括三种情况,第一种情况为tu的宽度和高度均大于预设阈值,第二种情况为tu的宽度大于预设阈值,且高度小于预设阈值,第三种情况为tu的宽度小于预设阈值,且高度大于预设阈值。

在本公开实施例中,还提供了在编码数据中添加标识,用于指示是否进行多核变换处理,相应的处理可以如下:

如果tu满足多核变换条件,则在编码数据中携带第一标识和第二标识。如果tu不满足多核变换条件,则在编码数据中携带第三标识。

在实施中,在tu满足多核变换条件时,可以在tu对应的编码数据中添加第一标识和第二标识,第一标识用于指示进行多核变换处理,第二标识用于指示目标变换核对的核标识,这样,在解码端检测到如果是第一标识,则进行多核变换处理,并基于第二标识,确定出目标变换核,用于解码。

在tu不满足多核变换条件时,可以在tu对应的编码数据中添加第三标识,第三标识用于指示不进行多核变换处理。这样,在解码端检测到如果是第三标识,则直接可以获取预设变换核对,确定为tu对应的目标变换核对,用于解码。

需要说明的是,tu对应的编码数据中,本来设置有一个多核变换标记位,在tu满足多核变换条件时,可以将多核变换标记位设置为第一标识,在tu不满足多核变换条件时,可以将多核变换标记位设置为第三标识。一般第一标识和第三标识均使用一个比特来表示,第一标识和第三标识可以分别为0、1,或者,第一标识和第三标识可以分别为1、0。

在编码数据中添加第一标识和第二标识,或者添加第三标识时,如果每个变换集中变换核对的标识与其它变换集中变换核对的核标识不相同,且每个变换集中各变换核对的核标识不相同,则可以直接基于核标识查找到变换核对,进而基于变换核对,对编码数据中的tu进行解码处理,得到重建信息。但是由于编码数据均使用二进制表示,如果所有变换集中的各变换核对设置不同的核标识,核标识占用的数据量比较大,造成传输开销比较大,所以一般不采用这种方式进行解码。

另外,本公开实施例中,编码第一标识或者第三标识时,会基于同一种上下文模型,进行编码,这样,在编码性能没有损失的基础上,可以节省内存,而且还可以除去与cu的深度之间的依赖关系。这是由于现有技术中,需要用一个比特位标识第一标识或第三标识,一般是使用基于上下文模型进行编码。而且是基于cu的深度信息,分为6类不同的上下文模型来编码,这是由于cu的划分深度可以从0~5,也就是说编码第一标识或者第三标识需要依赖cu的深度信息,来决定具体编码第一标识或第三标识时使用哪一种上下文模型,同样,解码端也需要依赖cu的深度信息,来决定使用哪一种上下文模型解码得到第一标识或第三标识,所以不管是编码端还是解码端,都会存储6类上下文模型,所以占用的内存比较大。

需要说明的是,一般tu与cu相同,当cu宽度或高度大于64时,cu被强制划分成若干个tu。

可选的,为了节约存储资源或者传输资源,变换核对的核标识可以为如下方式:

第二标识占用一个比特位或两个比特位。

在实施中,在变换集中包括两个变换核对时,两个变换核对的核标识分别为0、1,仅用一个比特可以标记出所使用的变换核对。在变换集中包括三个变换核对时,三个变换核对的核标识分别为0、10、11或00、01、1,只有两个变换核对使用了两个比特,其余一个变换核对的核标识仅分别使用了一个比特。在变换集中包括四个变换核对时,四个变换核对的核标识分别为00、01、10、11,每个变换核对的核标识均使用了两个比特。这样,第二标识可以占用一个比特位或者两个比特位。

另外,在变换集中包括三个变换核对时,三个变换核对的核标识分别为0、10、11或00、01、1,可以基于上下文模型的二进制算数编码(概率会根据上下文更新,非等概率模型),也可以是基于旁路模型(无需对上下文进行更新,等概率模型)的二进制算数编码。

可选的,为了更好的理解本公开实施例,还提供了多变换核选择方案,相应的描述可以如下:

如图10所示,在满足多核变换条件时,多核变换标记位是真(即真对应上述第一标识,假对应上述第二标识),如果是真,tu宽度等于高度,对应第一变换集,tu宽度小于高度,对应第二变换集,tu宽度大于高度,对应第三变换集,如果是假对应预设变换核对,如果不满足多核对变换条件,对应预设变换核对。

需要说明的是,本公开实施例可以适用于帧内预测和帧间预测。

本公开实施例中,在进行编码时,可以获取tu,判断tu是否满足多核变换条件,如果tu满足多核变换条件,则根据tu的宽度和高度之间的关系,确定tu对应的变换集,在tu对应的变换集和预设变换核对中,选择tu对应的变换核对(可以称为是目标变换核对),然后根据目标变换核对,对tu进行编码处理,得到tu对应的编码数据。这样,由于基于tu的宽度和高度之间的关系,在tu对应的变换集、预设变换核对中,选取出tu对应的变换集,而不是按照同一预设变换核对进行变换处理,所以可以提升编码性能。而且基于tu的宽度和高度之间的关系,来选择tu的变换集,遍历的变换核对的数目会减少,所以在不牺牲编码性能的基础上,还可以大幅度的降低编码时间。

本公开实施例中,如图11所示,对应上述编码流程,还提供了解码流程,相应的处理可以如下:

步骤1101,获取编码数据,确定编码数据对应的tu。

在实施中,有编码数据要进行解码时,可以获取编码数据,然后对编码数据进行熵解码处理,对熵解码结果进行反量化处理,得到编码数据对应的tu。该tu实际上是经过变换处理得到的变换系数。

步骤1102,如果编码数据中携带有第一标识,则根据tu的宽度和高度之间的关系,确定tu对应的变换集,并获取编码数据中携带的第二标识。

其中,变换集中包括至少一个变换核对,每个变换核对中包括水平变换核和垂直变换核。

在实施中,在得到编码数据对应的tu之后,可以确定编码数据中是否携带有第一标识(第一标识用于指示进行多核变换处理,与图9所示的流程中的第一标识相同),如果携带有第一标识,则确定tu的宽度和高度,然后根据tu的宽度和高度之间的关系,确定tu对应的变换集,并且可以从编码数据中获取其中携带的第二标识(第二标识标识用于指示使用的变换核对的核标识)。例如,可以预先存储有宽度和高度之间的关系与变换集的对应关系,可以使用tu的宽度和高度之间的关系,在该对应关系中,确定tu对应的变换集。

需要说明的是,tu的宽度指tu水平方向包括的像素点的数目,tu的高度指tu垂直方向包括的像素点的数目。其中,对于一个mxn的tu,m表示tu的宽度,n表示tu的高度。

可选的,有多种方式可以确定变换集,以下给出两种可行的方式:

方式一,基于宽度与高度的大小关系,确定变换集,处理可以如下:

如果tu的宽度等于tu的高度,则确定tu对应的变换集为第一变换集,其中,第一变换集中变换核对的数目小于或等于第一数值。如果tu的宽度小于tu的高度,则确定tu对应的变换集为第二变换集,其中,第二变换集中变换核对的数目小于或等于第二数值。如果tu的宽度大于tu的高度,则确定tu对应的变换集为第三变换集,其中,第三变换集中变换核对的数目小于或等于第三数值。

在实施中,在tu的宽度等于tu的高度时,tu为正方形块,可以确定出tu对应的变换集为第一变换集;在tu的宽度小于tu的高度时,tu为宽度小于高度的矩形块,可以确定出tu对应的变换集为第二变换集;在tu的宽度大于tu的高度时,tu为宽度大于高度的矩形块,可以确定出tu对应的变换集为第三变换集。

可选的,如果第二变换集中包括多个变换核对,则第二变换集中包括的多个变换核对的水平变换核相同,水平变换核为dst7、dst4、dct2的转置、dct2中的任一种。

在实施中,第二变换集的设置可以参照图9所示的流程中的描述。

可选的,如果第三变换集中包括多个变换核对,则第三变换集中包括的多个变换核对的垂直变换核相同,垂直变换核为dst7、dst4、dct2的转置、dct2中的任一种。

在实施中,第三变换集的设置可以参照图9所示的流程中的描述。

方式二,基于宽度与高度的比值,确定变换集,处理可以如下:

根据tu的宽度与高度的比值、tu的帧内角度模式、以及tu的宽度与高度的比值、tu的帧内角度模式和变换集三者之间的对应关系,确定tu对应的变换集。

其中,可以预先存储tu的宽度与高度的比值、tu的帧内角度模式和变换集三者之间的对应关系,在该对应关系,tu的帧内角度模式可以使用模式号表示,如上述表三所示。

在实施中,解码端可以获取预先存储的tu的宽度与高度的比值、tu的帧内角度模式和变换集三者之间的对应关系,并且可以确定tu的宽度与高度的比值,并且获取在得到tu对应的残差信号的帧内角度模式的模式号,在该对应关系中,查找到tu的宽度与高度的比值和tu对应的模式号共同对应的变换集,将该变换集,确定为tu对应的目标变换集。

可选的,为了减少变换核对的数目,可以对变换集进行配置,相应的处理可以如下:

对于对应关系中的任一变换集,如果基于任一变换集对应的比值和帧内角度模式确定出的角度方向与水平向右方向的夹角大于或等于角度阈值,则任一变换集中的多个变换核对的水平变换核相同,水平变换核为dst7、dst4、dct2的转置、dct2中的任一种。

在实施中,在考虑帧内角度模式时,变换集的设置可以参照图9所示的流程中的描述。

可选的,为了减少变换核对的数目,可以对变换集进行配置,相应的处理可以如下:

对于对应关系中的任一变换集,如果基于任一变换集对应的比值和帧内角度模式确定出的角度方向与水平向右角度方向的夹角小于角度阈值,则任一变换集中的多个变换核对的垂直变换核相同,垂直变换核为dst7、dst4、dct2的转置、dct2中的任一种。

在实施中,在考虑帧内角度模式时,变换集的设置可以参照图9所示的流程中的描述。

步骤1103,在变换集和预设变换核对中,选取第二标识对应的目标变换核对。

其中,预设变换核对可以为{dct2,dct2}。

在实施中,在确定出核标识和变换集后,可以在变换集和预设变换核对中,使用第二标识找到第二标识对应的目标变换核对,即tu对应的目标变换核对。

步骤1104,根据目标变换核对,对tu进行解码处理,得到tu对应的重建信息。

在实施中,在确定出tu对应的目标变换核对后,可以使用目标变换核对,对tu进行反变换处理,得到tu对应的残差信号,然后将残差信号与预测信号进行相加,得到tu对应的重建信息。

这样,就完成了tu的解码处理。每个tu都按照图11所示的流程进行处理,即可解码一整段的视频数据。

可选的,可以基于变换数据中携带的第三标识,来确定tu的变换核对,相应的处理可以如下:

如果编码数据中携带有第三标识,则将预设变换核对,确定为tu对应的目标变换核对。

其中,预设变换核对可以为{dct2,dct2}。

在实施中,如果在编码数据中找到是第三标识,而不是第一标识,说明没有进行多核变换处理,则可以获取预设变换核对,将预设变换核对,确定为tu对应的变换核对,即目标变换核对。

本公开实施例中,在进行解码时,获取要进行解码的编码数据,确定编码数据对应的tu,如果编码数据中携带有第一标识,则根据tu的宽度和高度之间的关系,确定tu对应的变换集,并且获取编码数据中携带的第二标识,然后在变换集和预设变换核对中,选取核标识对应的目标变换核对,最后根据目标变换核对,对tu进行解码处理,得到tu对应的重建信息。这样,由于编码端按照tu的宽度和高度之间的关系进行编码,所以相应的解码端,也要使用相同的方式进行解码,也即采用多核变换。

由于基于tu的宽度和高度之间的关系,在tu对应的变换集、预设变换核对中,选取出tu对应的变换集,而不是按照同一预设变换核对进行变换处理,所以可以提升编码性能。

需要说明的是,针对上述两个实施例中,均提到了tu,实际上tu是一个处理单元,在编码端tu指变换处理前的残差信号,在解码端指变换处理后的残差信号(即变换系数)。

还需要说明的是,针对上述两个实施例,提供了多种变换集的组合,相应的描述如下:

第一种:

第一变换集:{dst7,dst7},{dst7,dct8},{dct8,dst7},{dct8,dct8};

第二变换集:{dst7,dst7},{dst7,dct8};

第三变换集:{dst7,dst7},{dct8,dst7}。

第二种:

第一变换集:{dst7,dst7},{dst7,dct8},{dct8,dst7};

第二变换集:{dst7,dst7},{dst7,dct8};

第三变换集:{dst7,dst7},{dct8,dst7}。

第三种:

第一变换集:{dst4,dst4},{dst4,dct4},{dct4,dst4},{dct4,dct4};

第二变换集:{dst4,dst4},{dst4,dct4};

第三变换集:{dst4,dst4},{dct4,dst4}。

第四种:

第一变换集:{dst4,dst4},{dst4,dct4},{dct4,dst4};

第二变换集:{dst4,dst4},{dst4,dct4};

第三变换集:{dst4,dst4},{dct4,dst4}。

第五种:

第一变换集:

{dct2的转置,dct2的转置},{dct2的转置,dct4},{dct4,dct2的转置},{dct4,dct4};

第二变换集:{dct2的转置,dct2的转置},{dct2的转置,dct4};

第三变换集:{dct2的转置,dct2的转置},{dct4,dct2的转置}。

第六种:

第一变换集:

{dct2的转置,dct2的转置},{dct2的转置,dct4},{dct4,dct2的转置};

第二变换集:{dct2的转置,dct2的转置},{dct2的转置,dct4};

第三变换集:{dct2的转置,dct2的转置},{dct4,dct2的转置}。

第七种:

第一变换集:

{dst7,dst7},{dst7,flip-dst7},{flip-dst7,dst7},{flip-dst7,flip-dst7};

第二变换集:{dst7,dst7},{dst7,flip-dst7};

第三变换集:{dst7,dst7},{flip-dst7,dst7}。

第八种:

第一变换集:{dst7,dst7},{flip,flip-dst7},{flip-dst7,dst7};

第二变换集:{dst7,dst7},{dst7,flip-dst7};

第三变换集:{dst7,dst7},{flip-dst7,dst7}。

第九种:

第一变换集:{dst7,dst7},{dst7,dct2},{dct2,dst7};

第二变换集:{dst7,dst7},{dst7,dct2};

第三变换集:{dst7,dst7},{dct2,dst7}。

第十种:

第一变换集:{dst7,dst7},{dst7,dct2},{dct2,dst7};

第二变换集:{dst7,dst7},{dst7,dct2},{dst7,dct8};

第三变换集:{dst7,dst7},{dct2,dst7},{dct8,dst7}。

第十一种:

第一变换集:{dst7,dst7},{dst7,dct8},{dct8,dst7},{dct8,dct8};

第二变换集:{dst7,dst7},{dst7,dct2},{dst7,dct8};

第三变换集:{dst7,dst7},{dct2,dst7},{dct8,dst7}。

第十二种:

第一变换集:{dst7,dst7},{dst7,dct8},{dct8,dst7};

第二变换集:{dst7,dst7},{dst7,dct2},{dst7,dct8};

第三变换集:{dst7,dst7},{dct2,dst7},{dct8,dst7}。

第十三种:

第一变换集:{dst4,dst4},{dst4,dct4},{dct4,dst4},{dct4,dct4};

第二变换集:{dst4,dst4},{dst4,dct2},{dst4,dct4};

第三变换集:{dst4,dst4},{dct2,dst4},{dct4,dst4}。

第十四种:

第一变换集:{dst4,dst4},{dst4,dct4},{dct4,dst4};

第二变换集:{dst4,dst4},{dst4,dct2},{dst4,dct4};

第三变换集:{dst4,dst4},{dct2,dst4},{dct4,dst4}。

第十五种:

第一变换集:{dct2的转置,dct2的转置},{dct2的转置,dct4},{dct4,dct2的转置},{dct4,dct4};

第二变换集:{dct2的转置,dct2的转置},{dct2的转置,dct2},{dst2的转置,dct4};

第三变换集:{dst2的转置,dst2的转置},{dct2,dst2的转置},{dct4,dst2的转置}。

第十六种:

第一变换集:{dst2的转置,dst2的转置},{dst2的转置,dct4},{dct4,dst2的转置};

第二变换集:{dst2的转置,dst2的转置},{dst2的转置,dct2},{dst2的转置,dct4};

第三变换集:{dst2的转置,dst2的转置},{dct2,dst2的转置},{dct4,dst2的转置}。

第十七种:

第一变换集:{dst7,dst7},{dst7,flip-dst7},{flip-dst7,dst7},{flip-dst7,flip-dst7};

第二变换集:{dst7,dst7},{dst7,dct2},{dst7,flip-dst7};

第三变换集:{dst7,dst7},{dct2,dst7},{flip-dst7,dst7}。

第十八种:

第一变换集:{dst7,dst7},{dst7,flip-dst7},{flip-dst7,dst7};

第二变换集:{dst7,dst7},{dst7,dct2},{dst7,flip-dst7};

第三变换集:{dst7,dst7},{dct2,dst7},{flip-dst7,dst7}。

第十九种:

第一变换集:{dst7,dst7},{dst7,dct8},{dct8,dst7},{dct8,dct8};

第二变换集:{dst4,dst4},{dst4,dct4},{dct4,dst4},{dct4,dct4};

第三变换集:{dct2的转置,dct2的转置},{dct2的转置,dct4},{dct4,dct2的转置},{dct4,dct4}。

上述第一种至第十八种,由于第二变换集和第三变换集中变换核对的数目均小于或等于3,如果上述步骤902中,确定出的变换集为第二变换集或者第三变换集,则遍历的变换核对的数目小于4,相比较比目前采用的多变换核变换方案中的变换核对要少,缩短了遍历变换核对的时间,所以在总体上可以提升编码效率。而且不同变换集带来更多变换核对的可能性,也能提升编码效率。

需要说明的是,表三中第四变换集可以与上述提到的第一变换集相同,第五变换集可以与上述提到的第二变换集相同,第六变换集可以与上述提到的第三变换集相同。

还需要说明的是,上述编码端如果有解码功能,也可以进行解码处理,同样,上述解码端如果有编码功能,也可以进行编码处理。

基于相同的技术构思,本公开实施例还提供了一种进行编码的装置,如图12所示,该装置包括:

获取模块1210,用于获取变换单元tu;

确定模块1220,用于如果所述tu满足多核变换条件,则根据所述tu的宽度和高度之间的关系,确定所述tu对应的变换集,其中,所述变换集中包括至少一个变换核对,所述变换核对包括一个水平变换核和一个垂直变换核;

选择模块1230,用于在所述变换集和预设变换核对中,选择所述tu对应的目标变换核对;

编码模块1240,用于根据所述目标变换核对,对所述tu进行编码处理,得到所述tu对应的编码数据。

可选的,所述确定模块1220,还用于:

如果所述tu不满足多核变换条件,则将所述预设变换核对,确定为所述tu对应的目标变换核对。

可选的,所述确定模块1220,用于:

如果所述tu的宽度等于所述tu的高度,则确定所述tu对应的变换集为第一变换集,其中,所述第一变换集中变换核对的数目小于或等于第一数值;

如果所述tu的宽度小于所述tu的高度,则确定所述tu对应的变换集为第二变换集,其中,所述第二变换集中变换核对的数目小于或等于第二数值;

如果所述tu的宽度大于所述tu的高度,则确定所述tu对应的变换集为第三变换集,其中,所述第三变换集中变换核对的数目小于或等于第三数值。

可选的,如果所述第二变换集中包括多个变换核对,则所述第二变换集中包括的多个变换核对的水平变换核相同,所述水平变换核为离散正弦变换dst7、dst4、离散余弦变换dct2的转置、dct2中的任一种。

可选的,如果所述第三变换集中包括多个变换核对,则所述第三变换集中包括的多个变换核对的垂直变换核相同,所述垂直变换核为dst7、dst4、dct2的转置、dct2中的任一种。

可选的,如图13所示,所述装置还包括:

添加模块1250,用于:

如果所述tu满足多核变换条件,则在所述编码数据中携带第一标识和第二标识,其中,所述第一标识用于指示进行多核变换处理,所述第二标识用于指示所述目标变换核对的核标识;

如果所述tu不满足多核变换条件,则在所述编码数据中携带第三标识,其中,所述第三标识用于指示不进行多核变换处理。

可选的,所述确定模块1220,还用于

如果所述tu的宽度和高度均不大于预设阈值,则确定所述tu满足多核变换条件。

可选的,所述确定模块1220,用于:

根据所述tu的宽度与高度的比值、所述tu的帧内角度模式、以及tu的宽度与高度的比值、tu的帧内角度模式和变换集三者之间的对应关系,确定所述tu对应的变换集。

可选的,对于所述对应关系中的任一变换集,如果基于所述任一变换集对应的比值和帧内角度模式确定出的角度方向与水平向右方向的夹角大于或等于角度阈值,则所述任一变换集中的多个变换核对的水平变换核相同,所述水平变换核为dst7、dst4、dct2的转置、dct2中的任一种。

可选的,对于所述对应关系中的任一变换集,如果基于所述任一变换集对应的比值和帧内角度模式确定出的角度方向与水平向右角度方向的夹角小于角度阈值,则所述任一变换集中的多个变换核对的垂直变换核相同,所述垂直变换核为dst7、dst4、dct2的转置、dct2中的任一种。

可选的,所述选择模块1230,用于:

遍历所述预设变换核对和所述变换集中包括的变换核对,将率失真代价最小的变换核对,确定为所述tu对应的目标变换核对。

可选的,所述第二标识占用一个比特位或两个比特位。

本公开实施例中,在进行编码时,可以获取tu,判断tu是否满足多核变换条件,如果tu满足多核变换条件,则根据tu的宽度和高度之间的关系,确定tu对应的变换集,在tu对应的变换集和预设变换核对中,选择tu对应的变换核对(可以称为是目标变换核对),然后根据目标变换核对,对tu进行编码处理,得到tu对应的编码数据。这样,由于基于tu的宽度和高度之间的关系,在tu对应的变换集、预设变换核对中,选取出tu对应的变换集,而不是按照同一预设变换核对进行变换处理,所以可以提升编码性能。而且基于tu的宽度和高度之间的关系,来选择tu的变换集,遍历的变换核对的数目会减少,所以在不牺牲编码性能的基础上,还可以大幅度的降低编码时间。

需要说明的是:上述实施例提供的进行编码的装置在进行编码时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的进行编码的装置与进行编码的方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。

基于相同的技术构思,本公开实施例还提供了一种进行解码的装置,如图14所示,该装置包括:

获取模块1410,用于获取编码数据;

确定模块1420,用于确定所述编码数据对应的变换单元tu;如果所述编码数据中携带有第一标识,则根据所述tu的宽度和高度之间的关系,确定所述tu对应的变换集,所述获取模块1410,还用于获取所述编码数据中携带的第二标识,其中,所述变换集中包括至少一个变换核对,所述变换核对包括一个水平变换核和一个垂直变换核,所述第一标识用于指示进行多核变换处理,所述第二标识用于指示所述目标变换核对的核标识;

选择模块1430,用于在所述变换集和预设变换核对中,选取所述第二标识对应的目标变换核对;

解码模块1440,用于根据所述目标变换核对,对所述tu进行解码处理,得到所述tu对应的重建信息。

可选的,所述确定模块1420,还用于:

如果所述编码数据中携带有第三标识,则将所述预设变换核对,确定为所述tu对应的目标变换核对,其中,所述第三标识用于指示不进行多核变换处理。

可选的,所述确定模块1420,用于:

如果所述tu的宽度等于所述tu的高度,则确定所述tu对应的变换集为第一变换集,其中,所述第一变换集中变换核对的数目小于或等于第一数值;

如果所述tu的宽度小于所述tu的高度,则确定所述tu对应的变换集为第二变换集,其中,所述第二变换集中变换核对的数目小于或等于第二数值;

如果所述tu的宽度大于所述tu的高度,则确定所述tu对应的变换集为第三变换集,其中,所述第三变换集中变换核对的数目小于或等于第三数值。

可选的,如果所述第二变换集中包括多个变换核对,则所述第二变换集中包括的多个变换核对的水平变换核相同,所述水平变换核为离散正弦变换dst7、dst4、离散余弦变换dct2的转置、dct2中的任一种。

可选的,如果所述第三变换集中包括多个变换核对,则所述第三变换集中包括的多个变换核对的垂直变换核相同,所述垂直变换核为dst7、dst4、dct2的转置、dct2中的任一种。

可选的,所述确定模块1420,用于:

根据所述tu的宽度与高度的比值、所述tu的帧内角度模式、以及tu的宽度与高度的比值、tu的帧内角度模式和变换集三者之间的对应关系,确定所述tu对应的变换集。

可选的,对于所述对应关系中的任一变换集,如果基于所述任一变换集对应的比值和帧内角度模式确定出的角度方向与水平向右方向的夹角大于或等于角度阈值,则所述任一变换集中的多个变换核对的水平变换核相同,所述水平变换核为dst7、dst4、dct2的转置、dct2中的任一种。

可选的,对于所述对应关系中的任一变换集,如果基于所述任一变换集对应的比值和帧内角度模式确定出的角度方向与水平向右角度方向的夹角小于角度阈值,则所述任一变换集中的多个变换核对的垂直变换核相同,所述垂直变换核为dst7、dst4、dct2的转置、dct2中的任一种。

本公开实施例中,在进行解码时,获取要进行解码的编码数据,确定编码数据对应的tu,如果编码数据中携带有第一标识,则根据tu的宽度和高度之间的关系,确定tu对应的变换集,并且获取编码数据中携带的第二标识,然后在变换集和预设变换核对中,选取核标识对应的目标变换核对,最后根据目标变换核对,对tu进行解码处理,得到tu对应的重建信息。这样,由于编码端按照tu的宽度和高度之间的关系进行编码,所以相应的解码端,也要使用相同的方式进行解码,也即采用多核变换。

需要说明的是:上述实施例提供的进行解码的装置在进行解码时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的进行解码的装置与进行解码的方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。

图14是本发明实施例提供的一种编码端的结构示意图,该编码端1400可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(centralprocessingunits,cpu)1401和一个或一个以上的存储器1402,其中,所述存储器1402中存储有至少一条指令,所述至少一条指令由所述处理器1401加载并执行以实现上述进行编码的方法的步骤。

图15是本发明实施例提供的一种解码端的结构示意图,该解码端1500可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(centralprocessingunits,cpu)1501和一个或一个以上的存储器1502,其中,所述存储器1502中存储有至少一条指令,所述至少一条指令由所述处理器1501加载并执行以实现上述进行解码的方法的步骤。

本公开实施例还提供了一种计算机可读存储介质,所述存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述所述的进行编码和进行解码的方法步骤。

本公开实施例还提供了一种编码端,包括处理器和存储器,其中,所述存储器,用于存放计算机程序;所述处理器,用于执行所述存储器上所存放的程序,实现上述所述的进行编码的方法步骤。

本公开实施例还提供了一种解码端,包括处理器和存储器,其中,所述存储器,用于存放计算机程序;所述处理器,用于执行所述存储器上所存放的程序,实现上述所述的进行解码的方法步骤。

本公开实施例还提供了一种编码和解码的系统,所述系统包括编码端和解码端,其中:

所述编码端,如上述进行编码处理的装置;

所述解码端,如上述进行解码处理的装置。

本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。

以上所述仅为本公开的较佳实施例,并不用以限制本公开,凡在本公开的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本公开的保护范围之内。

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