DCT逆变换方法、逆变换装置、电子设备及存储介质与流程

文档序号:15521812发布日期:2018-09-25 19:39阅读:353来源:国知局

本发明涉及视频处理技术领域,特别是涉及一种dct(discretecosinetransform,离散余弦变换)逆变换方法、逆变换装置、电子设备及存储介质。



背景技术:

随着数字视频技术的不断发展,越来越多的视频内容通过网络传输。视频播放终端接收通过网络传输的包含视频内容的比特流后,需要对比特流进行解码处理,生成相应的视频。

现有的dct逆变换方法,直接将数据矩阵作为一个整体的运算对象进行dct逆变换运算,由于数据矩阵中的各行和各列均参与运算,因此这种将数据矩阵整体作为运算对象的dct逆变换方法,运算量较大。



技术实现要素:

本发明实施例的目的在于提供一种dct逆变换方法、逆变换装置、电子设备及存储介质,以实现在视频解码过程中,降低dct逆变换运算量的目的。具体技术方案如下:

第一方面,本发明实施例提供了一种dct逆变换方法,包括:

获取对视频比特流进行视频解码的反量化后得到的数据矩阵;

确定所述数据矩阵中存在非零系数且行数最大的行,以及存在非零系数且列数最大的列;

基于所确定的行的行数和列的列数,确定所述数据矩阵的子矩阵,所述子矩阵的行数不小于所述所确定的行的行数,所述子矩阵的列数不小于所述确定的列的列数,且位于所述子矩阵第一行第一列的系数为所述数据矩阵的第一行第一列的系数;

对所述子矩阵中的系数进行dct逆变换,生成所述数据矩阵中各系数的像素值。

可选地,所述确定所述数据矩阵中存在非零系数且行数最大的行,以及存在非零系数且列数最大的列,包括:

获取所述数据矩阵中的非零系数;

在获取的非零系数中,查找第一系数和第二系数,所述第一系数为与所述数据矩阵的第一行距离最远的系数,所述第二系数为与所述数据矩阵的第一列距离最远的系数;

确定所述第一系数在所述数据矩阵中的行,以及所述第二系数在所述数据矩阵中的列。

可选地,所述基于所确定的行的行数和列的列数,确定所述数据矩阵的子矩阵,包括:

将最大的行的行数作为子矩阵的行数,将最大的列的列数作为子矩阵的列数,确定所述数据矩阵的子矩阵。

可选地,所述基于所确定的行的行数和列的列数,确定所述数据矩阵的子矩阵,包括:

当所确定的行的行数和列的列数均为预设数值的整数倍时,将所确定的行的行数作为子矩阵的行数,将所确定的列的列数作为子矩阵的列数,确定所述数据矩阵的子矩阵。

可选地,所述基于所确定的行的行数和列的列数,确定所述数据矩阵的子矩阵,包括:

当所确定的行的行数和列的列数均不为预设数值的整数倍时,将大于所确定的行的行数且为预设数值整数倍的行数,作为子矩阵的行数,将大于所确定的列的列数且为预设数值整数倍的列数,作为子矩阵的列数,确定所述数据矩阵的子矩阵。

可选地,所述基于所确定的行的行数和列的列数,确定所述数据矩阵的子矩阵,包括:

当所确定的行的行数不为预设数值的整数倍时,将大于所确定的行的行数且为预设数值整数倍的行数,作为子矩阵的行数,将所确定的列的列数作为子矩阵的列数,确定所述数据矩阵的子矩阵;

当所确定的列的列数不为预设数值的整数倍时,将所确定的行的行数作为子矩阵的行数,将大于所确定的列的列数且为预设数值整数倍的列数,作为子矩阵的列数,确定所述数据矩阵的子矩阵。

可选地,所述预设数值为2的幂次方倍。

可选地,,所述对所述子矩阵中的系数进行dct逆变换,生成所述数据矩阵中各系数的像素值,包括:

将第一预设变换核与所述子矩阵的转置矩阵相乘,生成第一矩阵,所述第一预设变换核的行数与所述数据矩阵的行数相同;

将所述第一矩阵与第二预设变换核相乘,生成第二矩阵,所述第二预设变换核的列数与所述数据矩阵的列数相同,所述第二矩阵中各元素的数值为所述数据矩阵中对应位置处各系数的像素值。

可选地,所述基于所确定的行的行数和列的列数,确定所述数据矩阵的子矩阵之前,所述方法还包括:

判断所确定的行的行数和列的列数是否均为1;

如果不均为1,执行所述基于所确定的行的行数和列的列数,确定所述数据矩阵的子矩阵的步骤;

如果均为1,对所述数据矩阵中的系数进行dct逆变换;

将经dct逆变换得到的像素值,确定为所述数据矩阵中每个系数的像素值。

第二方面,本发明实施例提供了一种dct逆变换装置,包括:

获取模块,用于获取对视频比特流进行视频解码的反量化后得到的数据矩阵;

第一确定模块,用于确定所述数据矩阵中存在非零系数且行数最大的行,以及存在非零系数且列数最大的列;

第二确定模块,用于基于所确定的行的行数和列的列数,确定所述数据矩阵的子矩阵,所述子矩阵的行数不小于所述所确定的行的行数,所述子矩阵的列数不小于所述确定的列的列数,且位于所述子矩阵第一行第一列的系数为所述数据矩阵的第一行第一列的系数;

生成模块,用于对所述子矩阵中的系数进行dct逆变换,生成所述数据矩阵中各系数的像素值。

可选地,所述第一确定模块,包括:

获取子模块,用于获取所述数据矩阵中的非零系数;

查找子模块,用于在获取的非零系数中,查找第一系数和第二系数,所述第一系数为与所述数据矩阵的第一行距离最远的系数,所述第二系数为与所述数据矩阵的第一列距离最远的系数;

确定子模块,用于确定所述第一系数在所述数据矩阵中的行,以及所述第二系数在所述数据矩阵中的列。

可选地,所述第二确定模块,具体用于:

将最大的行的行数作为子矩阵的行数,将最大的列的列数作为子矩阵的列数,确定所述数据矩阵的子矩阵。

可选地,所述第二确定模块,具体用于:

当所确定的行的行数和列的列数均为预设数值的整数倍时,将所确定的行的行数作为子矩阵的行数,将所确定的列的列数作为子矩阵的列数,确定所述数据矩阵的子矩阵。

可选地,所述第二确定模块,具体用于:

当所确定的行的行数和列的列数均不为预设数值的整数倍时,将大于所确定的行的行数且为预设数值整数倍的行数,作为子矩阵的行数,将大于所确定的列的列数且为预设数值整数倍的列数,作为子矩阵的列数,确定所述数据矩阵的子矩阵。

可选地,所述第二确定模块,具体用于:

当所确定的行的行数不为预设数值的整数倍时,将大于所确定的行的行数且为预设数值整数倍的行数,作为子矩阵的行数,将所确定的列的列数作为子矩阵的列数,确定所述数据矩阵的子矩阵;

当所确定的列的列数不为预设数值的整数倍时,将所确定的行的行数作为子矩阵的行数,将大于所确定的列的列数且为预设数值整数倍的列数,作为子矩阵的列数,确定所述数据矩阵的子矩阵。

可选地,所述预设数值为2的幂次方倍。

可选地,所述生成模块,包括:

第一生成子模块,用于将第一预设变换核与所述子矩阵的转置矩阵相乘,生成第一矩阵,所述第一预设变换核的行数与所述数据矩阵的行数相同;

第二生成子模块,用于将所述第一矩阵与第二预设变换核相乘,生成第二矩阵,所述第二预设变换核的列数与所述数据矩阵的列数相同,所述第二矩阵中各元素的数值为所述数据矩阵中对应位置处各系数的像素值。

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

判断模块,用于判断所确定的行的行数和列的列数是否均为1;

如果不均为1,触发所述第二确定模块执行所述基于所确定的行的行数和列的列数,确定所述数据矩阵的子矩阵的步骤;

逆变换模块,用于如果均为1,对所述数据矩阵中的系数进行dct逆变换,将经dct逆变换得到的像素值,确定为所述数据矩阵中每个系数的像素值。

第三方面,本发明实施例提供了一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,所述处理器、所述通信接口、所述存储器通过所述通信总线完成相互间的通信;

机器可读存储介质存储有能够被处理器执行的机器可执行指令,处理器被机器可执行指令促使:实现第一方面提供的dct逆变换方法步骤。

第四方面,本发明实施例提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时,实现上述第一方面提供的dct逆变换方法步骤。

第五方面,本发明实施例还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述第一方面提供的一种dct逆变换方法步骤。

第六方面,本发明实施例还提供了一种计算机程序,当其在计算机上运行时,使得计算机执行上述第一方面提供的一种dct逆变换方法步骤。

本发明实施例提供的一种dct逆变换方法、逆变换装置、电子设备及存储介质,通过确定数据矩阵中存在非零系数且行数最大的行,以及存在非零系数且列数最大的列,能够基于所确定的行的行数及列的列数,确定出子矩阵的行数和列数,从而确定数据矩阵的子矩阵,使得该子矩阵的行数和列数均不大于原始的数据矩阵。通过对子矩阵进行dct逆变换运算,不用再对原始数据矩阵中的各行和各列均进行运算,从而降低dct逆变换过程的运算量。当然,实施本发明的任一产品或方法必不一定需要同时达到以上所述的所有优点。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例提供的dct逆变换方法的一种流程示意图;

图2为本发明实施例提供的dct逆变换方法中,所生成的数据矩阵的示意图;

图3为本发明实施例提供的dct逆变换方法的另一种流程示意图;

图4为本发明实施例提供的dct逆变换装置的一种结构示意图;

图5为本发明实施例提供的dct逆变换装置中获取模块的结构示意图;

图6为本发明实施例提供的dct逆变换装置中生成模块的结构示意图;

图7为本发明实施例提供的dct逆变换装置的另一种结构示意图;

图8为本发明实施例提供的电子设备的结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

随着多媒体数字视频应用的不断发展和人们对视频云计算需求的不断提高,原始视频信源的数据量已使现有传输网络带宽和存储资源无法承受。因而,视频信号的压缩已成为目前国内外学术研究和工业应用的热点之一。视频压缩,也称视频编码,其目的是消除视频信号间存在的冗余信息。至今,国内外标准化组织已相继制定了多种不同的视频编码标准。自h.261视频编码标准以来,主流的视频编码标准均采用“基于块的预测和变换”的混合编码框架,即输入的视频信号经过编码器中预测、变换、量化、扫描、熵编码等编码技术处理后,最后输出比特流,以备传输或存储。

在当前主流的编解码器中,采用了大量了预测、量化、扫描和熵编码快速算法等技术,因而,变换和反变换模块的复杂度越来越高。

其中,预测技术通过利用图像空间相邻像素的相关性以及时间上相邻图像的相关性进行预测,从而去除视频帧中的空间冗余及时间冗余。预测技术一般包括帧内预测和帧间预测。

量化技术通过将含有大量的数据集合映射到含有少量的数据集合中,从而去除视觉冗余。

扫描技术是将二维数据转换为一维的数据序列的过程。

熵编码技术根据符号出现的概率,对经常出现的符号分配较短的码字,对不常出现的符号分配较长的码字。

视频播放终端对比特流进行解码的流程,通常包括四个步骤:熵解码、反量化、dct(discretecosinetransform,离散余弦变换)逆变换以及预测,最终将比特流转换为视频。反量化执行完成后,会生成一个数据矩阵,该数据矩阵由若干以行和列排列的系数组成,其中,位于数据矩阵第一行第一列的系数为直流系数,数据矩阵中的其它系数为交流系数;dct逆变换,是将得到的数据矩阵中的各系数,从频率值转换为像素值的过程。

目前主流的视频编码标准h.264和hevc(highefficiencyvideocoding,高效视频编码)中,使用的变换和反变换算法为整数dct变换,以及块大小为4x4的dst(discretesinetransform,离散正弦变换)变换。dct逆变换算法的一个突出特点是,逆变换的复杂度随着逆变换块大小的扩大呈指数级增加,一个2n×2n大小(n≥2)的逆变换块,其逆变换复杂度为s(n)=2n×(2(2n-2)+2(2n-4)+...+2(2×2-4))=2n×(1×4(n-2))个乘法运算,此外还有若干加法运算。经比较乘法运算可知,s(n)/s(n-1)=8,即反变换块大小每放大一倍,复杂度增加八倍。

如图1所示,本发明实施例提供了一种dct逆变换方法,可以应用于移动终端或服务器,当然也可以应用于其他类型的具有数据处理运算功能的设备,该过程可以包括以下步骤:

s101,获取对视频比特流进行视频解码的反量化后得到的数据矩阵。

如图2所示,对视频比特流进行视频解码时,经过反量化步骤后,可以生成一个数据矩阵,该数据矩阵由若干以行和列排列的系数组成,数据矩阵的元素就是各个系数。获取数据矩阵后,可以用于对数据矩阵中的系数进行dct逆变换。

本发明实施例中,具体地,可以在视频解码过程中,获取对视频比特流进行视频解码的反量化后得到的数据矩阵。实际应用中,视频编解码模块常常集成在一起,因此,也可以在视频编解码过程的解码过程中,获取对视频比特流进行视频解码的反量化后得到的数据矩阵。

s102,确定数据矩阵中存在非零系数且行数最大的行,以及存在非零系数且列数最大的列。

本发明实施例中,容易理解的是,一个数据矩阵可以由多个行及多个列组成,且各行和各列的元素即为不同大小的系数。

如图2所示,数据矩阵中的系数有正值、负值以及零,发明人研究发现,一般地,图像块的低频分量集中在数据矩阵的左上角,高频分量分布在数据矩阵的右下角,远离直流系数的交流系数大多为零或趋于零。根据这一特点,可以在数据矩阵中重新确定一个子矩阵。

例如,可以确定数据矩阵中存在非零系数且行数最大的行,以及存在非零系数且列数最大的列。仍以图2所示数据矩阵为例说明,图2中,数据矩阵的大小为8×8,即总共有8行和8列,其中,第三行满足存在非零系数且行数最大这一条件,第三列满足存在非零系数且列数最大这一条件。由上可以确定,数据矩阵中存在非零系数且行数最大的行为第三行,存在非零系数且列数最大的列为第三列。

作为本发明实施例的一种可选的实施方式,确定数据矩阵中存在非零系数且行数最大的行,以及确定数据矩阵中存在非零系数且列数最大的列的过程,具体可以为:

步骤a,获取数据矩阵中所有的非零系数。

本发明实施例中,如上文所述,数据矩阵中的系数可以包括正值、负值以及零。获取数据矩阵中所有的非零系数,即是获取数据矩阵中除零以外的所有系数。

步骤b,在所获取的非零系数中,查找距离数据矩阵的第一行距离最远的系数,可以称之为第一系数;查找距离数据矩阵的第一列距离最远的系数,可以称之为第二系数。

具体来说,仍以图2所示数据矩阵为例说明,距离数据矩阵的第一行距离最远的系数为-1,-1,它们都位于数据矩阵的第三行;距离数据矩阵的第一列距离最远的系数为-1,它位于数据矩阵的第三列。

需要说明的是,如果在数据矩阵中,除第一行外,其它行均不存在非零系数,那么可知,所查找得到的第一系数位于数据矩阵的第一行;同样的,除第一列外,其它列均不存在非零系数,那么可知,所查找得到的第二系数位于数据矩阵的第一列。

步骤c,确定第一系数在数据矩阵中的行,以及第二系数在数据矩阵中的列。

本发明实施例中,查找出第一系数和第二系数后,由于第一系数和第二系数均为数据矩阵中的元素,因此可以容易地确定第一系数在数据矩阵中的行,以及第二系数在数据矩阵中的列。

s103,基于所确定的行的行数和列的列数,确定数据矩阵的子矩阵,其中,子矩阵的行数不小于所确定的行的行数,子矩阵的列数不小于确定的列的列数,且位于子矩阵第一行第一列的系数为数据矩阵的第一行第一列的系数。

本发明实施例中,确定最大的行的行数和最大的列的列数后,在数据矩阵中,基于所确定的行的行数和列的列数,可以确定数据矩阵的子矩阵。

需要说明的是,本发明实施例的子矩阵,其行数和列数,不小于所确定的行的行数,以及所确定的列的列数,即,不小于最大的行的行数,以及最大的列的列数。这样,才可以能够保证该子矩阵包含了数据矩阵中所有的非零系数。

仍以图2所示数据矩阵为例进行说明,图2中,实线框中的矩阵,其行数和列数均为最大的行的行数和最大的列的列数,即,该子矩阵的行数和列数,可以为最大的行的行数和最大的列的列数;虚线框中的矩阵,其行数和列数均大于最大的行的行数和最大的列的列数,即,该子矩阵的行数和列数,可以比最大的行的行数和最大的列的列数更大。

需要进一步说明的是,该子矩阵中位于第一行第一列的系数,同时也可以为数据矩阵的第一行第一列的系数。也就是说,子矩阵最左上角的系数也可以为数据矩阵最左上角的系数。

作为本发明实施例一种可选的实施方式,基于所确定的行的行数和列的列数,确定数据矩阵的子矩阵,具体可以为:

将最大的行的行数作为子矩阵的行数,将最大的列的列数作为子矩阵的列数,确定数据矩阵的子矩阵。

本发明实施例中,确定数据矩阵的子矩阵时,可以直接将最大的行的行数作为子矩阵的行数,将最大的列的列数作为子矩阵的列数。所确定的子矩阵的行数和列数,即为最大的行的行数和最大的列的列数。

仍以图2为例说明,图2中,实线框中的矩阵,其行数和列数均为最大的行的行数和最大的列的列数,该子矩阵的行数为3,列数也为3,即该子矩阵为一个3×3矩阵。

作为本发明实施例的另一种可选的实施方式,基于所确定的行的行数和列的列数,确定数据矩阵的子矩阵,具体还可以为:

第一种情况:当所确定的行的行数和列的列数均为预设数值的整数倍时,将所确定的行的行数作为子矩阵的行数,将所确定的列的列数作为子矩阵的列数,确定数据矩阵的子矩阵。

如果直接将最大的行的行数作为子矩阵的行数,将最大的列的列数作为子矩阵的列数,由于该子矩阵的行数和列数可能为奇数,在后续利用变换核对该子矩阵进行计算时,矩阵变换过程中的复杂度可能会增加。所以,当所确定的行的行数和列的列数均为预设数值的整数倍时,可以将所确定的行的行数作为该子矩阵的行数,将所确定的列的列数作为该子矩阵的列数,也即,将最大的行的行数作为该子矩阵的行数,将最大的列的列数作为该子矩阵的列数。

第二种情况:当所确定的行的行数和列的列数均不为预设数值的整数倍时,将大于所确定的行的行数且为预设数值整数倍的行数,作为子矩阵的行数,将大于所确定的列的列数且为预设数值整数倍的列数,作为子矩阵的列数,确定数据矩阵的子矩阵,也即,将大于最大的行的行数且为预设数值整数倍的行数,作为子矩阵的行数,将大于最大的列的列数且为预设数值整数倍的列数,作为子矩阵的列数。

仍以图2所示数据矩阵为例进行说明,图2中,最大的行的行数为3,最大的列的列数为3,如果预设数值为2,则最大的行的行数3和最大的列的列数3均为预设数值的1.5倍。它们均不为2的整数倍。那么,则可以将大于3且为2的整数倍的行数,作为子矩阵的行数,将大于3且为2的整数倍的列数,作为子矩阵的列数。例如,选取大于3且为2的整数倍的行数为4,选取大于3且为2的整数倍的列数为4,则确定的子矩阵为一个4×4矩阵,如图2中虚线框中的矩阵。

第三种情况:当所确定的行的行数不为预设数值的整数倍时,将大于所确定的行的行数且为预设数值整数倍的行数,也即,将大于最大的行的行数且为预设数值整数倍的行数,作为子矩阵的行数,将最大的列的列数作为子矩阵的列数,确定数据矩阵的子矩阵。

上述情况例如可以为:当最大的行的行数为3,最大的列的列数为2,预设数值为2时。那么,大于最大的行的行数3且为预设数值2整数倍的行数为4,所以,可以将4作为子矩阵的行数。则确定的子矩阵为一个4×2矩阵。

第四种情况:当所确定的列的列数不为预设数值的整数倍时,将最大的行的行数作为子矩阵的行数,将大于所确定的列的列数且为预设数值整数倍的列数,也即,将大于最大的列的列数且为预设数值整数倍的列数,作为子矩阵的列数,确定数据矩阵的子矩阵。

上述情况例如可以为:当最大的行的行数为2,最大的列的列数为3,预设数值为2时。那么,大于最大的列的列数3且为预设数值2整数倍的列数为4,所以,可以将4作为子矩阵的列数。则确定的子矩阵为一个2×4矩阵。

本发明实施方式的方法过程,当所确定的行数和/或列数不为预设数值的整数倍时,能够在数据矩阵中重新确定满足预设数值整数倍这一条件的行数和/或列数,从而使组成的子矩阵的行数和列数均为偶数,能够在后续利用变换核对该子矩阵进行计算时,降低矩阵变换过程中的计算复杂度,从而提高矩阵变换的计算效率。

需要说明的是,上述情况一至情况四中,预设数值可以是一个整数。一般情况下,可以将预设数值设置为2的幂次方倍。例如,将预设数值设置为2、4、8、16等,即21、22、23、24

s104,对子矩阵中的系数进行dct逆变换,生成数据矩阵中各系数的像素值。

本发明实施例中,确定子矩阵后,可以对子矩阵中的各系数进行dct逆变换,dct逆变换过程,是将矩阵中的系数转换为像素值的过程。由于子矩阵是一个包含数据矩阵所有非零系数的矩阵,因此经dct逆变换后,可以生成数据矩阵中各系数的像素值。

作为本发明实施例的一种可选的实施方式,对子矩阵中的系数进行dct逆变换,生成数据矩阵中各系数的像素值,具体可以为:

将第一预设变换核与子矩阵的转置矩阵相乘,生成第一矩阵,其中第一预设变换核的行数与数据矩阵的行数相同。

对数据矩阵进行dct逆变换时,通常是将数据矩阵与一个变换核相乘,将相乘后得到的矩阵进行转置,将转置后的矩阵再与变换核相乘,再将得到的矩阵进行转置,得到新的矩阵,所得矩阵中的元素就是数据矩阵中各系数对应的像素值。其中,变换核通常具有与数据矩阵相同的行数和列数,变换核中的元素为不同的余弦函数值。

本发明实施例中,可以是将第一预设变换核与子矩阵的转置矩阵相乘,生成第一矩阵。其中,第一预设变换核可以也为一个矩阵,第一预设变换核中各行和各列的元素为预设的余弦函数值,且第一预设变换核的行数与数据矩阵的行数相同,第一预设变换核的列数与子矩阵的转置矩阵的行数相同。这样,所生成的第一矩阵的行数为数据矩阵的行数,列数为子矩阵的转置矩阵的列数。

例如,数据矩阵为一个8×8矩阵,即具有8行8列的矩阵;第一预设变换核为一个8×n矩阵,即具有8行n列的矩阵;子矩阵为一个m×n矩阵,即具有m行n列的矩阵,则子矩阵的转置矩阵为一个n×m矩阵,即具有n行m列的矩阵。由上可知,将第一预设变换核与子矩阵的转置矩阵相乘,可以为(8×n)×(n×m),得到一个8×m的矩阵,即具有8行m列的矩阵,该矩阵即为第一矩阵。该第一矩阵的行数与数据矩阵的行数相同,列数与子矩阵的转置矩阵的列数相同。

将第一矩阵与第二预设变换核相乘,生成第二矩阵,其中,第二预设变换核的列数与数据矩阵的列数相同,且第二矩阵中各元素的数值为数据矩阵中对应位置处各系数的像素值。

本发明实施例中,可以是将第一矩阵与第二预设变换核相乘,生成第二矩阵。其中,第二预设变换核可以也为一个矩阵,第二预设变换核中各行和各列的元素为预设的余弦函数值,且第二预设变换核的列数与数据矩阵的列数相同,第二预设变换核的行数与第一矩阵的列数相同。这样,所生成的第二矩阵的行数和列数可以均与数据矩阵的行数和列数相同。

例如,第二预设变换核为一个m×8矩阵,即具有m行8列的矩阵。将第一矩阵与第二预设变换核相乘,可以为(8×m)×(m×8),得到一个8×8的矩阵,即具有8行8列的矩阵。不难看出,第二矩阵的行数和列数均与数据矩阵的行数和列数相同。因此,可以将第二矩阵中各元素的数值作为数据矩阵中对应位置处各系数的像素值。

本发明实施例提供的一种dct逆变换方法,通过确定数据矩阵中存在非零系数且行数最大的行,以及存在非零系数且列数最大的列,能够基于所确定的行的行数及列的列数,确定出子矩阵的行数和列数,从而确定数据矩阵的子矩阵,使得该子矩阵的行数和列数均不大于原始的数据矩阵。通过对子矩阵进行dct逆变换运算,不用再对原始数据矩阵中的各行和各列均进行运算,从而降低dct逆变换过程的运算量。

如图3所示,本发明实施例还提供了一种dct逆变换方法,包括:

s201,获取对视频比特流进行视频解码的反量化后得到的数据矩阵。

如图2所示,对视频比特流进行视频解码时,经过反量化步骤后,可以生成一个数据矩阵,该数据矩阵由若干以行和列排列的系数组成,数据矩阵的元素就是各个系数。获取数据矩阵后,可以用于对数据矩阵中的系数进行dct逆变换。

s202,确定数据矩阵中存在非零系数且行数最大的行,以及存在非零系数且列数最大的列。

本发明实施例中,容易理解的是,一个数据矩阵可以由多个行及多个列组成,且各行和各列的元素即为不同大小的系数。

如图2所示,数据矩阵中的系数有正值、负值以及零,发明人研究发现,一般地,图像块的低频分量集中在数据矩阵的左上角,高频分量分布在数据矩阵的右下角,远离直流系数的交流系数大多为零或趋于零。根据这一特点,可以在数据矩阵中重新确定一个子矩阵。

例如,可以确定数据矩阵中存在非零系数且行数最大的行,以及存在非零系数且列数最大的列。仍以图2所示数据矩阵为例说明,图2中,数据矩阵的大小为8×8,即总共有8行和8列,其中,第三行满足存在非零系数且行数最大这一条件,第三列满足存在非零系数且列数最大这一条件。由上可以确定,数据矩阵中存在非零系数且行数最大的行为第三行,存在非零系数且列数最大的列为第三列。

s203,判断所确定的行的行数和列的列数是否均为1。

需要说明的是,数据矩阵可能存在一种情况,数据矩阵中,只有第一行第一列的系数为非零系数,这样最大的行的行数和最大的列的列数均为1。因此,在确定数据矩阵的子矩阵之前,可以先判断是否存在上述情况,根据判断结果采用不同的方法。

s204,如果不均为1,基于所确定的行的行数和列的列数,确定数据矩阵的子矩阵,其中,子矩阵的行数和列数不小于所确定的行的行数和列的列数,且位于子矩阵第一行第一列的系数为数据矩阵的第一行第一列的系数;对子矩阵中的系数进行dct逆变换,生成数据矩阵中各系数的像素值。

本发明实施例中,如果不存在只有第一行第一列的系数为非零系数的情况,则在确定最大的行的行数和最大的列的列数后,在数据矩阵中,基于所确定的行的行数和列的列数,可以确定数据矩阵的子矩阵。

需要说明的是,本发明实施例所述子矩阵,其行数和列数,不小于最大的行的行数,以及最大的列的列数。这样,才可以能够保证该子矩阵包含了数据矩阵中所有的非零系数。

需要进一步说明的是,该子矩阵中位于第一行第一列的系数,同时也可以为数据矩阵的第一行第一列的系数。也就是说,子矩阵最左上角的系数也可以为数据矩阵最左上角的系数。

仍以图2所示数据矩阵为例进行说明,图2中,实线框中的矩阵,其行数和列数均为最大的行的行数和最大的列的列数,即,该子矩阵的行数和列数,可以为最大的行的行数和最大的列的列数;虚线框中的矩阵,其行数和列数均大于最大的行的行数和最大的列的列数,即,该子矩阵的行数和列数,可以比最大的行的行数和最大的列的列数更大。

本发明实施例中,确定子矩阵后,可以对子矩阵中的各系数进行dct逆变换,dct逆变换过程,是将矩阵中的系数转换为像素值的过程。由于子矩阵是一个包含数据矩阵所有非零系数的矩阵,因此经dct逆变换后,可以生成数据矩阵中各系数的像素值。

s205,如果均为1,对数据矩阵中的系数进行dct逆变换;将经dct逆变换得到的像素值,确定为数据矩阵中每个系数的像素值。

如果存在只有第一行第一列的系数为非零系数的情况,则直接对该数据矩阵的系数进行dct逆变换,从而可以将经dct逆变换得到的像素值,确定为数据矩阵中每个系数的像素值。

现有的判断方法,通常是判断数据矩阵中是否只有dc系数具有非零数值,这种判断方法,需要对数据矩阵中的所有ac(alternatingcurrent,交流)系数和dc(directcurrent,直流)系数逐一判断,计算量大。

本发明实施例提供的一种dct逆变换方法,通过直接判断所确定的行的行数和列的列数是否均为1,不需要逐一对数据矩阵中的所有ac系数和dc系数进行判断,因此计算量小,更有利于提高dct逆变换速度。

相应于上面的方法实施例,本发明实施例还提供了相应的装置实施例。

如图4所示,本发明实施例提供了一种dct逆变换装置,包括:

获取模块301,用于获取对视频比特流进行视频解码的反量化后得到的数据矩阵。

本发明实施例的获取模块301,可以在视频解码过程中,获取对视频比特流进行视频解码的反量化后得到的数据矩阵。

实际应用中,视频编解码模块常常集成在一起,因此,也可以在视频编解码框架的解码器中,采用获取模块301获取对视频比特流进行视频解码的反量化后得到的数据矩阵。

第一确定模块302,用于确定数据矩阵中存在非零系数且行数最大的行,以及存在非零系数且列数最大的列。

容易理解的是,一个数据矩阵可以由多个行及多个列组成,且各行和各列的元素即为不同大小的系数,因此,本发明实施例的第一确定模块302,能够在数据矩阵中,确定出存在非零系数且行数最大的行,以及存在非零系数且列数最大的列。

第二确定模块303,用于基于所确定的行的行数和列的列数,确定数据矩阵的子矩阵,其中,子矩阵的行数不小于所确定的行的行数,子矩阵的列数不小于确定的列的列数,且位于子矩阵第一行第一列的系数为数据矩阵的第一行第一列的系数。

本发明实施例中,在第一确定模块302确定最大的行的行数和最大的列的列数后,在数据矩阵中,第二确定模块303可以基于所确定的行的行数和列的列数,确定数据矩阵的子矩阵。

需要说明的是,本发明实施例的子矩阵,其行数和列数,不小于所确定的行的行数,以及所确定的列的列数,即,不小于最大的行的行数,以及最大的列的列数。这样,才可以能够保证该子矩阵包含了数据矩阵中所有的非零系数。

需要进一步说明的是,该子矩阵中位于第一行第一列的系数,同时也可以为数据矩阵的第一行第一列的系数。也就是说,子矩阵最左上角的系数也可以为数据矩阵最左上角的系数。

生成模块304,用于对子矩阵中的系数进行dct逆变换,生成数据矩阵中各系数的像素值。

本发明实施例中,在第二确定模块303确定子矩阵后,本发明实施例的生成模块304可以对子矩阵中的各系数进行dct逆变换。其中,dct逆变换过程,是将矩阵中的系数转换为像素值的过程。由于子矩阵是一个包含数据矩阵所有非零系数的矩阵,因此经dct逆变换后,可以生成数据矩阵中各系数的像素值。

作为本发明实施例的一种可选的实施方式,如图5所示,本发明实施例的获取模块301,可以包括:

获取子模块3011,用于获取数据矩阵中的非零系数。

本发明实施例中,如上文所述,数据矩阵中的系数可以包括正值、负值以及零。本发明实施例的获取子模块3011,可以获取数据矩阵中所有的非零系数,即,可以获取数据矩阵中除零以外的所有系数。

查找子模块3012,用于在获取的非零系数中,查找第一系数和第二系数,第一系数为与数据矩阵的第一行距离最远的系数,第二系数为与数据矩阵的第一列距离最远的系数。

具体来说,以图2所示数据矩阵为例说明,距离数据矩阵的第一行距离最远的系数为-1,-1,它们都位于数据矩阵的第三行;距离数据矩阵的第一列距离最远的系数为-1,它位于数据矩阵的第三列。通过本发明实施例的查找子模块3012,能够在经在获取子模块3011获取的非零系数中,查找得到第一系数和第二系数。

需要说明的是,如果在数据矩阵中,除第一行外,其它行均不存在非零系数,那么可知,所查找得到的第一系数位于数据矩阵的第一行;同样的,除第一列外,其它列均不存在非零系数,那么可知,所查找得到的第二系数位于数据矩阵的第一列。

确定子模块3013,用于确定第一系数在数据矩阵中的行,以及第二系数在数据矩阵中的列。

本发明实施例中,经查找子模块3012查找出第一系数和第二系数后,由于第一系数和第二系数均为数据矩阵中的元素,因此可以通过本发明实施例的确定子模块3013,确定第一系数在数据矩阵中的行,以及第二系数在数据矩阵中的列。

可选地,第二确定模块303,具体用于:

将最大的行的行数作为子矩阵的行数,将最大的列的列数作为子矩阵的列数,确定所述数据矩阵的子矩阵。

本发明实施例中,第二确定模块303在确定数据矩阵的子矩阵时,可以直接将最大的行的行数作为子矩阵的行数,将最大的列的列数作为子矩阵的列数。所确定的子矩阵的行数和列数,即为最大的行的行数和最大的列的列数。

可选地,第二确定模块303,具体还用于:

当所确定的行的行数和列的列数均为预设数值的整数倍时,将所确定的行的行数作为子矩阵的行数,将所确定的列的列数作为子矩阵的列数,确定所述数据矩阵的子矩阵。

如果直接将最大的行的行数作为子矩阵的行数,将最大的列的列数作为子矩阵的列数,由于该子矩阵的行数和列数可能为奇数,在后续利用变换核对该子矩阵进行计算时,矩阵变换过程中的复杂度可能会增加。所以,当所确定的行的行数和列的列数均为预设数值的整数倍时,第二确定模块303可以将所确定的行的行数作为该子矩阵的行数,将所确定的列的列数作为该子矩阵的列数,也即,将最大的行的行数作为该子矩阵的行数,将最大的列的列数作为该子矩阵的列数。

当所确定的行的行数和列的列数均不为预设数值的整数倍时,将大于所确定的行的行数且为预设数值整数倍的行数,作为子矩阵的行数,将大于所确定的列的列数且为预设数值整数倍的列数,作为子矩阵的列数,确定所述数据矩阵的子矩阵,也即,将大于最大的行的行数且为预设数值整数倍的行数,作为子矩阵的行数,将大于最大的列的列数且为预设数值整数倍的列数,作为子矩阵的列数。

以图2所示数据矩阵为例进行说明,图2中,最大的行的行数为3,最大的列的列数为3,如果预设数值为2,则最大的行的行数3和最大的列的列数3均为预设数值的1.5倍。它们均不为2的整数倍。那么,则可以将大于3且为2的整数倍的行数,作为子矩阵的行数,将大于3且为2的整数倍的列数,作为子矩阵的列数。例如,选取大于3且为2的整数倍的行数为4,选取大于3且为2的整数倍的列数为4,则确定的子矩阵为一个4×4矩阵,如图2中虚线框中的矩阵。

当所确定的行的行数不为预设数值的整数倍时,则本发明实施例的第二确定模块303,可以将大于所确定的行的行数且为预设数值整数倍的行数,也即,将大于最大的行的行数且为预设数值整数倍的行数,作为子矩阵的行数,将最大的列的列数作为子矩阵的列数,确定所述数据矩阵的子矩阵。

上述情况例如可以为:当最大的行的行数为3,最大的列的列数为2,预设数值为2时。那么,大于最大的行的行数3且为预设数值2整数倍的行数为4,所以,可以将4作为子矩阵的行数。则确定的子矩阵为一个4×2矩阵。

当所确定的列的列数不为预设数值的整数倍时,则本发明实施例的第二确定模块303,可以将最大的行的行数作为子矩阵的行数,将大于所确定的列的列数且为预设数值整数倍的列数,也即,将大于最大的列的列数且为预设数值整数倍的列数,作为子矩阵的列数,确定所述数据矩阵的子矩阵。

上述情况例如可以为:当最大的行的行数为2,最大的列的列数为3,预设数值为2时。那么,大于最大的列的列数3且为预设数值2整数倍的列数为4,所以,可以将4作为子矩阵的列数。则确定的子矩阵为一个2×4矩阵。

其中,预设数值为2的幂次方倍。

作为本发明实施例的一种可选的实施方式,如图6所示,本发明实施例的生成模块304,可以包括:

第一生成子模块3041,用于将第一预设变换核与子矩阵的转置矩阵相乘,生成第一矩阵,第一预设变换核的行数与数据矩阵的行数相同。

对数据矩阵进行dct逆变换时,通常是将数据矩阵与一个变换核相乘,将相乘后得到的矩阵进行转置,将转置后的矩阵再与变换核相乘,再将得到的矩阵进行转置,得到新的矩阵,所得矩阵中的元素就是数据矩阵中各系数对应的像素值。其中,变换核通常具有与数据矩阵相同的行数和列数,变换核中的元素为不同的余弦函数值。

本发明实施例中,第一生成子模块3041可以用于将第一预设变换核与子矩阵的转置矩阵相乘,生成第一矩阵。其中,第一预设变换核可以也为一个矩阵,第一预设变换核中各行和各列的元素为预设的余弦函数值,且第一预设变换核的行数与数据矩阵的行数相同,第一预设变换核的列数与子矩阵的转置矩阵的行数相同。这样,所生成的第一矩阵的行数为数据矩阵的行数,列数为子矩阵的转置矩阵的列数。

例如,数据矩阵为一个8×8矩阵,即具有8行8列的矩阵;第一预设变换核为一个8×n矩阵,即具有8行n列的矩阵;子矩阵为一个m×n矩阵,即具有m行n列的矩阵,则子矩阵的转置矩阵为一个n×m矩阵,即具有n行m列的矩阵。由上可知,将第一预设变换核与子矩阵的转置矩阵相乘,可以为(8×n)×(n×m),得到一个8×m的矩阵,即具有8行m列的矩阵,该矩阵即为第一矩阵。该第一矩阵的行数与数据矩阵的行数相同,列数与子矩阵的转置矩阵的列数相同。

第二生成子模块3042,用于将第一矩阵与第二预设变换核相乘,生成第二矩阵,第二预设变换核的列数与数据矩阵的列数相同,第二矩阵中各元素的数值为数据矩阵中对应位置处各系数的像素值。

本发明实施例中,第二生成子模块3042可以用于将第一矩阵与第二预设变换核相乘,生成第二矩阵。其中,第二预设变换核可以也为一个矩阵,第二预设变换核中各行和各列的元素为预设的余弦函数值,且第二预设变换核的列数与数据矩阵的列数相同,第二预设变换核的行数与第一矩阵的列数相同。这样,所生成的第二矩阵的行数和列数可以均与数据矩阵的行数和列数相同。

例如,第二预设变换核为一个m×8矩阵,即具有m行8列的矩阵。将第一矩阵与第二预设变换核相乘,可以为(8×m)×(m×8),得到一个8×8的矩阵,即具有8行8列的矩阵。不难看出,第二矩阵的行数和列数均与数据矩阵的行数和列数相同。因此,可以将第二矩阵中各元素的数值作为数据矩阵中对应位置处各系数的像素值。

本发明实施例提供的一种dct逆变换装置,通过确定数据矩阵中存在非零系数且行数最大的行,以及存在非零系数且列数最大的列,能够基于所确定的行的行数及列的列数,确定出子矩阵的行数和列数,从而确定数据矩阵的子矩阵,使得该子矩阵的行数和列数均不大于原始的数据矩阵。通过对子矩阵进行dct逆变换运算,不用再对原始数据矩阵中的各行和各列均进行运算,从而降低dct逆变换过程的运算量。

如图7所示,本发明实施例还提供了一种dct逆变换装置,在图4所示dct逆变换装置的基础上,可以进一步包括:

判断模块305,用于判断所确定的行的行数和列的列数是否均为1;如果不均为1,触发第二确定模块执行基于所确定的的行的行数和列的列数,确定数据矩阵的子矩阵的步骤。

需要说明的是,数据矩阵可能存在一种情况,数据矩阵中,只有第一行第一列的系数为非零系数,这样最大的行的行数和最大的列的列数均为1。因此,在确定数据矩阵的子矩阵之前,本发明实施例的判断模块305,可以先判断是否存在上述情况,根据判断结果采用不同的方法。

当不存在只有第一行第一列的系数为非零系数的情况时,则在确定最大的行的行数和最大的列的列数后,在数据矩阵中,基于所确定的行的行数和列的列数,可以确定数据矩阵的子矩阵。

逆变换模块306,用于如果均为1,对数据矩阵中的系数进行dct逆变换,将经dct逆变换得到的像素值,确定为数据矩阵中每个系数的像素值。

如果存在只有第一行第一列的系数为非零系数的情况,则直接对该数据矩阵的系数进行dct逆变换,从而可以将经dct逆变换得到的像素值,确定为数据矩阵中每个系数的像素值。

现有的判断方法,通常是判断数据矩阵中是否只有dc系数具有非零数值,这种判断方法,需要对数据矩阵中的所有ac系数和dc系数逐一判断,计算量大。

本发明实施例提供的一种dct逆变换装置,通过直接判断所确定的行的行数和列的列数是否均为1,不需要逐一对数据矩阵中的所有ac系数和dc系数进行判断,因此计算量小,更有利于提高dct逆变换速度。

本发明实施例还提供了一种电子设备,如图8所示,包括处理器401和机器可读存储介质402,机器可读存储介质存储有能够被处理器执行的机器可执行指令,处理器被机器可执行指令促使实现以下步骤:

获取对视频比特流进行视频解码的反量化后得到的数据矩阵;

确定数据矩阵中存在非零系数且行数最大的行,以及存在非零系数且列数最大的列;

基于所确定的行的行数和列的列数,确定数据矩阵的子矩阵,子矩阵的行数不小于所确定的行的行数,子矩阵的列数不小于确定的列的列数,且位于子矩阵第一行第一列的系数为数据矩阵的第一行第一列的系数;

对子矩阵中的系数进行dct逆变换,生成数据矩阵中各系数的像素值。

本发明实施例提供的一种电子设备,通过确定数据矩阵中存在非零系数且行数最大的行,以及存在非零系数且列数最大的列,能够基于所确定的行的行数及列的列数,确定出子矩阵的行数和列数,从而确定数据矩阵的子矩阵,使得该子矩阵的行数和列数均不大于原始的数据矩阵。通过对子矩阵进行dct逆变换运算,不用再对原始数据矩阵中的各行和各列均进行运算,从而降低dct逆变换过程的运算量。

机器可读存储介质402可以包括随机存取存储器(randomaccessmemory,简称ram),也可以包括非易失性存储器(non-volatilememory),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。

上述的处理器可以是通用处理器,包括中央处理器(centralprocessingunit,简称cpu)、网络处理器(networkprocessor,简称np)等;还可以是数字信号处理器(digitalsignalprocessing,简称dsp)、专用集成电路(applicationspecificintegratedcircuit,简称asic)、现场可编程门阵列(field-programmablegatearray,简称fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。

本发明实施例还提供了一种计算机可读存储介质,计算机可读存储介质内存储有计算机程序,计算机程序被处理器执行时,用以执行如下步骤:

获取对视频比特流进行视频解码的反量化后得到的数据矩阵;

确定数据矩阵中存在非零系数且行数最大的行,以及存在非零系数且列数最大的列;

基于所确定的行的行数和列的列数,确定数据矩阵的子矩阵,子矩阵的行数不小于所确定的行的行数,子矩阵的列数不小于确定的列的列数,且位于子矩阵第一行第一列的系数为数据矩阵的第一行第一列的系数;

对子矩阵中的系数进行dct逆变换,生成数据矩阵中各系数的像素值。

本发明实施例提供的一种计算机可读存储介质,通过确定数据矩阵中存在非零系数且行数最大的行,以及存在非零系数且列数最大的列,能够基于所确定的行的行数及列的列数,确定出子矩阵的行数和列数,从而确定数据矩阵的子矩阵,使得该子矩阵的行数和列数均不大于原始的数据矩阵。通过对子矩阵进行dct逆变换运算,不用再对原始数据矩阵中的各行和各列均进行运算,从而降低dct逆变换过程的运算量。

本发明实施例还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行以下步骤:

获取对视频比特流进行视频解码的反量化后得到的数据矩阵;

确定数据矩阵中存在非零系数且行数最大的行,以及存在非零系数且列数最大的列;

基于所确定的行的行数和列的列数,确定数据矩阵的子矩阵,子矩阵的行数不小于所确定的行的行数,子矩阵的列数不小于确定的列的列数,且位于子矩阵第一行第一列的系数为数据矩阵的第一行第一列的系数;

对子矩阵中的系数进行dct逆变换,生成数据矩阵中各系数的像素值。

本发明实施例提供的一种包含指令的计算机程序产品,通过确定数据矩阵中存在非零系数且行数最大的行,以及存在非零系数且列数最大的列,能够基于所确定的行的行数及列的列数,确定出子矩阵的行数和列数,从而确定数据矩阵的子矩阵,使得该子矩阵的行数和列数均不大于原始的数据矩阵。通过对子矩阵进行dct逆变换运算,不用再对原始数据矩阵中的各行和各列均进行运算,从而降低dct逆变换过程的运算量。

本发明实施例还提供了一种计算机程序,当其在计算机上运行时,使得计算机执行以下步骤:

获取对视频比特流进行视频解码的反量化后得到的数据矩阵;

确定数据矩阵中存在非零系数且行数最大的行,以及存在非零系数且列数最大的列;

基于所确定的行的行数和列的列数,确定数据矩阵的子矩阵,子矩阵的行数不小于所确定的行的行数,子矩阵的列数不小于确定的列的列数,且位于子矩阵第一行第一列的系数为数据矩阵的第一行第一列的系数;

对子矩阵中的系数进行dct逆变换,生成数据矩阵中各系数的像素值。

本发明实施例提供的一种计算机程序,通过确定数据矩阵中存在非零系数且行数最大的行,以及存在非零系数且列数最大的列,能够基于所确定的行的行数及列的列数,确定出子矩阵的行数和列数,从而确定数据矩阵的子矩阵,使得该子矩阵的行数和列数均不大于原始的数据矩阵。通过对子矩阵进行dct逆变换运算,不用再对原始数据矩阵中的各行和各列均进行运算,从而降低dct逆变换过程的运算量。

对于装置/电子设备/计算机可读存储介质实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

需要说明的是,本发明实施例的装置、电子设备及计算机可读存储介质分别是应用上述基于随机博弈理论的动态竞争窗口调整方法的装置、电子设备及存储介质,则上述基于随机博弈理论的动态竞争窗口调整方法的所有实施例均适用于该装置、电子设备及存储介质,且均能达到相同或相似的有益效果。

需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

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