一种视频编码方法、编码器、电子设备及介质与流程

文档序号:17898213发布日期:2019-06-13 16:09阅读:150来源:国知局
一种视频编码方法、编码器、电子设备及介质与流程

本发明涉及视频编码技术领域,特别是涉及一种视频编码方法、编码器、电子设备及介质。



背景技术:

随着多媒体数字视频应用的不断发展及人们对视频云计算需求的不断提高,原始视频信息源的数据量已经让现有传输网络带宽及存储资源无法承受。因此,对视频信号的压缩已经成为目前国内外学术研究和工业应用的热点之一。视频压缩,也称为视频编码,其目的是消除视频信号间的冗余信息。

参见图1,图1为目前采用高效率视频编码(highefficiencyvideocoding,hevc)标准的视频编码器进行编码的基本流程图。该基本流程包括:

块划分步骤:编码器接收到输入的视频信号,将视频信号的图像或帧划分为待编码块,待编码块通常是正方形块,其他非正方形的块也是允许的,该待编码块大小一般为8x8,16x16,32x32,64x64;

预测步骤:对当前待编码块内的视频信号进行预测,得到参考块内的预测信号;将参考块与当前待编码块相应位置的像素两两作差,形成残差块内的残差信号;

变换步骤:将残差块内的残差信号从空域频谱变换到频域,再通过预设线性运算,将残差块内的残差信号能量集中在少数预设数量个低频的变换系数上,得到在变换域内能量更加集中的具有二维的变换系数的变换系数块;

量化步骤:利用编码器预设的量化信息及从待编码块中提取的像素位深信息,对变换系数块内二维的变换系数进行量化,经过量化后的量化系数块中的量化系数,缩小为比原本变换系数块内变换系数更小的系数;

熵编码步骤:依据量化后的量化系数块,进行熵编码,形成最终码流。

现有技术视频编码器虽然实现了压缩编码,但是编码速度仍有待提高。



技术实现要素:

本发明实施例的目的在于提供一种视频编码方法、编码器、电子设备及介质,以提高编码速度。具体技术方案如下:

第一方面,本发明实施例提供了一种视频编码方法,包括:

获取针对每个待编码的视频帧数据块所得到的变换系数块;

将上述变换系数块中的每个变换系数分别与预设阈值进行比较,将小于上述预设阈值的变换系数替换为0,获得新的变换系数块;

判断上述新的变换系数块是否为全零块;

如果上述新的变换系数块为全零块,则编码该视频帧数据块中非零变换系数的个数为0,结束对该视频帧数据块的编码;

如果上述新的变换系数块不为全零块,则将上述变换系数块进行量化处理,获得量化后的量化系数块;

依据上述量化后的量化系数块,进行熵编码。

可选的,上述依据上述量化后的量化系数块,进行熵编码,包括:

判断上述量化后的量化系数块是否为全零块;

如果判断上述量化后的量化系数块为全零块,则编码该量化后的量化系数块中非零量化系数的个数为0,结束对该视频帧数据块的编码;

如果判断上述量化后的量化系数块不为全零块,则对该量化后的量化系数块进行熵编码。

可选的,上述获取针对每个待编码的视频帧数据块所得到的变换系数块,包括:

针对每个上述待编码的视频帧数据块,进行预测,获得该视频帧数据块对应的残差块;

对该视频帧数据块对应的残差块进行频谱变换,获得上述变换系数块。

可选的,上述预设阈值通过如下公式预先计算获得:

其中,th(x,y)为在上述变换系数块中的变换系数对应的预设阈值,其中,th(x,y)中的(x,y)为变换系数处于上述变换系数块中的位置,在变换系数块为二维矩阵时,x为上述变换系数块中的变换系数所处位置的行,y为上述变换系数块中的变换系数所处位置的列,qp为预设的量化参数,shift为移位值,shift的取值为29-b-m,其中b为待编码的视频帧数据块的像素位深信息,m为该视频帧数据块对应的残差块的大小,该残差块为n×n的残差块,m=log2n,offset为偏移值,offset取值为

g={g0,g1,g2,g3,g4,g5}={2-4/6,2-3/6,2-2/6,2-1/6,20,21/6},f={f0,f1,f2,f3,f4,f5}={26214,23302,20560,18396,16384,14564},w(x,y)为预设的量化权重因子,factor为预设的阈值因子,factor的取值范围为[1,1.5]。

可选的,上述将上述变换系数块进行量化处理,包括:

利用预设的量化信息及上述待编码的视频帧数据块的像素位深信息,对上述变换系数块进行量化处理。

可选的,通过如下公式计算:

获得量化后的量化系数块,

其中,q(x,y)表示上述量化后的量化系数块,q(x,y)中的(x,y)为系数处于上述量化后的量化系数块中的位置,在量化后的量化系数块为二维矩阵时,x为上述量化后的量化系数块中的量化系数所处位置的行,y为上述量化后的量化系数块中的量化系数所处位置的列,y(x,y)为位于上述变换系数块中位置处的变换系数,其中(x,y)为变换系数处于上述变换系数块中的位置,在变换系数块为二维矩阵时,x为上述变换系数块中的变换系数所处位置的行,y为上述变换系数块中的变换系数所处位置的列,sign(y(x,y))表示上述变换系数块中变换系数的正负值,sign(y(x,y))取值的集合为{-1,0,1}。

可选的,上述对该量化后的量化系数块进行熵编码,包括:

按照预设顺序,确定每个量化后的量化系数块的第一个非零量化系数对应的第一个位置,及最后一个非零量化系数对应的第二个位置;

将每个量化后的量化系数块从第一个位置对应的第一个非零量化系数,到第二个位置对应的最后一个非零量化系数之间的所有量化系数,进行熵编码。

第二方面,本发明实施例提供了一种编码器,包括:

第一获取模块,用于获取针对每个待编码的视频帧数据块所得到的变换系数块;

比较替换模块,用于将上述变换系数块中的每个变换系数分别与预设阈值进行比较,将小于上述预设阈值的变换系数替换为0,获得新的变换系数块;

判断模块,用于判断上述新的变换系数块是否为全零块;

第一编码模块,用于如果上述新的变换系数块为全零块,则编码该视频帧数据块中非零变换系数的个数为0,结束对该视频帧数据块的编码;

第二获取模块,用于如果上述新的变换系数块不为全零块,则将上述变换系数块进行量化处理,获得量化后的量化系数块;

第二编码模块,用于依据上述量化后的量化系数块,进行熵编码。

可选的,上述第二编码模块,用于具体包括:

判断子模块,用于判断上述量化后的量化系数块是否为全零块;

第一编码子模块,用于如果判断上述量化后的量化系数块为全零块,则编码该量化后的量化系数块中非零量化系数的个数为0,结束对该视频帧数据块的编码;

第二编码子模块,用于如果判断上述量化后的量化系数块不为全零块,则对该量化后的量化系数块进行熵编码。

可选的,上述第一获取模块,包括:

预测子模块,用于针对每个上述待编码的视频帧数据块,进行预测,获得该视频帧数据块对应的残差块;

获取子模块,用于对该视频帧数据块对应的残差块进行频谱变换,获得上述变换系数块。

可选的,该预设阈值通过如下公式预先计算获得:

其中,th(x,y)为在该变换系数块中的变换系数对应的预设阈值,其中,th(x,y)中的(x,y)为变换系数处于该变换系数块中的位置,在变换系数块为二维矩阵时,x为该变换系数块中的变换系数所处位置的行,y为该变换系数块中的变换系数所处位置的列,qp为预设的量化参数,shift为移位值,shift的取值为29-b-m,其中b为待编码的视频帧数据块的像素位深信息,m为该视频帧数据块对应的残差块的大小,该残差块为n×n的残差块,m=log2n,offset为偏移值,offset取值为

g={g0,g1,g2,g3,g4,g5}={2-4/6,2-3/6,2-2/6,2-1/6,20,21/6},f={f0,f1,f2,f3,f4,f5}={26214,23302,20560,18396,16384,14564},w(x,y)为预设的量化权重因子,factor为预设的阈值因子,factor的取值范围为[1,1.5]。

可选的,该第二获取模块具体用于利用预设的量化信息及该待编码的视频帧数据块的像素位深信息,对该变换系数块进行量化处理。

可选的,该第二获取模块具体用于通过如下公式计算:

获得量化后的量化系数块,

其中,q(x,y)表示该量化后的量化系数块,q(x,y)中的(x,y)为系数处于该量化后的量化系数块中的位置,在量化后的量化系数块为二维矩阵时,x为该量化后的量化系数块中的量化系数所处位置的行,y为该量化后的量化系数块中的量化系数所处位置的列,y(x,y)为位于该变换系数块中位置处的变换系数,其中(x,y)为变换系数处于该变换系数块中的位置,在变换系数块为二维矩阵时,x为该变换系数块中的变换系数所处位置的行,y为该变换系数块中的变换系数所处位置的列,sign(y(x,y))表示该变换系数块中变换系数的正负值,sign(y(x,y))取值的集合为{-1,0,1}。

可选的,上述第二编码子模块,具体用于:

按照预设顺序,确定每个量化后的量化系数块的第一个非零量化系数对应的第一个位置,及最后一个非零量化系数对应的第二个位置;

将每个量化后的量化系数块从第一个位置对应的第一个非零量化系数,到第二个位置对应的最后一个非零量化系数之间的所有量化系数,进行熵编码。

第三方面,本发明实施例提供了一种电子设备,包括编码器和机器可读存储介质,上述机器可读存储介质存储有能够被上述编码器执行的机器可执行指令,上述编码器被上述机器可执行指令促使:实现第一方面上述的视频编码方法步骤。

第四方面,本发明实施例提供了一种电子设备,包括处理器和机器可读存储介质,所述机器可读存储介质存储有能够被所述处理器执行的机器可执行指令,所述处理器被所述机器可执行指令促使:实现第一方面上述的视频编码方法步骤。

第五方面,本发明实施例提供了一种计算机可读存储介质,上述存储介质内存储有计算机程序,上述计算机程序被处理器执行时实现第一方面上述的视频编码方法步骤。

第六方面,本发明实施例提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行第一方面上述的视频编码方法步骤。

第七方面,本发明实施例提供了一种计算机程序,当其在计算机上运行时,使得计算机执行实现第一方面上述的视频编码方法步骤。

本发明实施例提供的一种视频编码方法、编码器、电子设备及介质,通过将变换系数块中的每个变换系数分别与预设阈值比较,将小于所述预设阈值的变换系数替换为0,如果新的变换系数块为全零块,则对该新的变换系数块替换变换系数之前所对应的变换系数块不进行量化,编码视频帧数据块中非零变换系数的个数为0,结束编码;如果新的变换系数块不是全零块,则只对该新的变换系数块替换变换系数之前所对应的变换系数块进行量化处理,获得量化后的量化系数块;依据量化后的量化系数块,进行熵编码。

由此可见,由于本发明实施例中在新的变换系数块为全零块时,对该新的变换系数块替换变换系数之前所对应的变换系数块不进行量化,直接编码视频帧数据块中非零变换系数的个数为0,因此减少了进行熵编码的变换系数块的数量,进而提高了编码速度。

当然,实施本发明的任一产品或方法必不一定需要同时达到以上所述的所有优点。

附图说明

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

图1为现有技术采用高效率视频标准的视频编码器的基本流程图;

图2为本发明实施例的视频编码方法的第一种流程示意图;

图3为本发明实施例的视频编码方法的第二种流程示意图;

图4为本发明实施例的编码器的第一结构示意图;

图5为本发明实施例所应用的视频编码器的总体框架图;

图6为本发明实施例的电子设备的第一结构示意图;

图7为本发明实施例的电子设备的第二结构示意图。

具体实施方式

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

针对现有技术视频编码器虽然实现了压缩编码,但是编码速度仍有待提高的情况,本发明实施例提供了一种视频编码方法、编码器、电子设备及介质,以提高编码速度。

下面首先对本发明实施例所提供的视频编码方法进行介绍。

本发明实施例所提供的视频编码方法,可以应用于编码器,也可以应用于处理器,本发明实施例中不做限制。

如图2所示,本发明实施例所提供的一种视频编码方法,可以包括如下步骤:

步骤201,获取针对每个待编码的视频帧数据块所得到的变换系数块。

在一种具体实施例中,本步骤可以通过如下步骤获取针对每个待编码的视频帧数据块所得到的变换系数块:

先针对每个所述待编码的视频帧数据块,进行预测,获得该视频帧数据块对应的残差块;再对该视频帧数据块对应的残差块进行频谱变换,获得所述变换系数块。

在其他实施例中,可以先将针对每个待编码的视频帧数据块所得到的变换系数块存储至一个预设的数据库中,本步骤201可以直接从预设的数据库中获得变换数据块。

本实施例中,待编码的视频帧数据块可以是4x4的视频帧数据块,也可以是8x8的视频帧数据块,也可以是16x16的视频帧数据块,还可以是32x32的视频帧数据块,在此不做限定。任何可以实现本发明实施例的视频帧数据块均属于本发明实施例的保护范围,在此不一一举例。

步骤202,将变换系数块中的每个变换系数分别与预设阈值进行比较,将小于预设阈值的变换系数替换为0,获得新的变换系数块。

在一种具体实施例中,预设阈值可以根据经验值或者工业需求预先设置,一般该预设阈值为大于或等于0的数值,比如,该数值可以在0到3的取值范围内取值。该取值的数值越大,在变换系数块中的变换系数损失的部分信息越多。具体预设阈值的设置,可以根据实际情况而定。由于本发明实施例只使用了一个预设阈值,完成上述比较的过程相对便捷。

在其他具体实施例中,针对不同的量化信息和待编码的视频帧数据块的像素位深信息,计算出对应的预设阈值,并将预设的量化信息、像素深度信息与对应的预设阈值,保存下来。该预设的量化信息包括:预设的量化权重因子及预设的量化参数。这样在整个视频编码过程中,视频编码方法就可以直接使用该预先保存的预设阈值,就不用实时计算该预设阈值,可以减少占用视频编码的运行内存。

获得待编码的视频帧数据块后,可以先获得预设的量化信息和待编码的视频帧数据块的像素位深信息,从预先保存的预设阈值中,查找该变换系数块中的每个变换系数对应的预设阈值。

该预设阈值通过如下公式计算获得:

其中,th(x,y)为在变换系数块中的变换系数对应的预设阈值,其中,th(x,y)中的(x,y)为变换系数处于该变换系数块中的位置,在变换系数块为二维矩阵时,x为该变换系数块中的变换系数所处位置的行,y为该变换系数块中的变换系数所处位置的列,qp为预设的量化参数,shift为移位值,shift的取值为29-b-m,其中b为待编码的视频帧数据块的像素位深信息,m为该视频帧数据块对应的残差块的大小,该残差块为n×n的残差块,m=log2n,offset为偏移值,offset取值为

g={g0,g1,g2,g3,g4,g5}={2-4/6,2-3/6,2-2/6,2-1/6,20,21/6},f={f0,f1,f2,f3,f4,f5}={26214,23302,20560,18396,16384,14564},w(x,y)为预设的量化权重因子,w(x,y)可以等于1,在此不做限定,factor为预设的阈值因子,factor的取值范围为[1,1.5],上述预设阈值可以通过阈值因子变更大小。

上述th(x,y)公式通过如下推导得到的,具体推导:

若新的变换系数块为全零块,则需满足所有的q(x,y)均小于1;此时,新的变换系数块|y(x,y)|则需满足下式,其中,factor=1,则令|y(x,y)|<th(x,y),得到

当factor=1时,理论上若不考虑量化时的精度和舍入问题,也不会带来任何额外的量化损失,也就是,经过量化后的量化系数块就是全零块,但是此时编码速度也受到限制;当factor>1时,会引入额外的量化损失,也就是,可能将非全零块对应的变换系数块中的变换系数全部替换为全零系数,从而带来量化损失,但是在损失可容忍的前提下,编码速度会有提升。上述th(x,y)中所乘的阈值因子factor,是为了权衡损失和加速。通常,factor越大,阈值则越大,对应的编码损失越大,编码器的加速越大。该factor可根据用户需求进行调整。

用户可以根据自身需求,权衡量化损失和编码时间,设定预设阈值的大小。因此,该预设阈值在尽可能不损失编码性能的前提下,降低了整体编码时间,提高了编码的速率。

上述公式中的预设的量化信息包括:预设的量化参数、预设的量化步长、预设的量化权重因子。

通常,上述qs(quantizationstep,量化步长)来描述量化程度的大小,qs(qp)=(21/6)qp-4,而量化步长又可以由qp(quantizationparameter,量化参数)定量表示。量化可以依据不同的量化步长分为不同的等级,量化参数一般分为52个等级,即0到51。

量化可以选择的步长范围比较大,步长越大,量化结果越粗糙,丢失的信息越多,压缩性能也越高。用户根据自身需求在该步长范围中选择步长,以使编码器更加零活地控制视频流的码率和质量。

上述量化权重因子可根据不同位置的重要性设置权重的大小,一般设置为1即表示没有权重。

上述像素位深信息是指每个像素所用的位数(bit)。像素位深信息可以为8比特。常用视频信号均采用8比特位深,而信号要求比较高,比如hdr(high-dynamicrange,高动态光照渲染图像)视频,该视频采用10比特、12比特。

像素位深度决定了彩色图像的每个像素可能有的颜色数,或者确定灰度图像的每个像素可能有的灰度级数。例如,一幅彩色图像的每个像素用r、g、b三个分量来表示,若每个分量用8位,那么一个像素共用24位表示,也就是说,像素位深度信息为24位,每个像素可以是224,即16777216千万级种颜色中的一种。这样,像素位深度信息也可以称为图像深度。该像素位深信息所表示一个像素的位数越多,能表达的颜色数目就越多,而像素所代表的深度就越深。一般情况下,像素位深度越深,数据量越大,所需要的传输带宽及存储空间就越大。相反,如果像素位深度太浅,会影响图像的质量,图像看起来让人觉得很粗糙而不自然。

步骤203,判断新的变换系数块是否为全零块,如果新的变换系数块为全零块,则执行步骤204,如果新的变换系数块不为全零块,则执行步骤205;

本步骤中,就是判断新的变换系数块中的变换系数是否全部为零,可以并行的一行或一列地对新的变换系数块中的变换系数进行判断该变换系数是否为零,也可以串行的逐个对新的变换系数块中的变换系数进行判断,这里不做限定。判断新的变换系数块中的变换系数是否为零的并行方式,效率比较高,而逐个判断新的变换系数块中的变换系数是否为零的串行方式,当前占用运行内存比较小。

步骤204,编码该视频帧数据块中非零变换系数的个数为0,结束对该视频帧数据块的编码。

本发明实施例中,当新的变换系数块为全零块时,直接编码该视频帧数据块中非零变换系数的个数为0,不对该新的变换系数块替换变换系数之前所对应的变换系数块进行量化和熵编码,就结束对该视频帧数据块的编码。

步骤205,将该变换系数块进行量化处理,获得量化后的量化系数块。

本发明实施例中,只有当新的变换系数块不为全零块时,才对该新的变换系数块替换变换系数之前对应的变换系数块进行量化。

具体的,本发明实施例中,可以通过公式计算:

获得量化后的量化系数块,

其中,q(x,y)表示量化后的量化系数块,q(x,y)中的(x,y)为系数处于该量化后的量化系数块中的位置,在量化后的量化系数块为二维矩阵时,x为该量化后的量化系数块中的量化系数所处位置的行,y为该量化后的量化系数块中的量化系数所处位置的列,y(x,y)为位于该变换系数块中位置处的变换系数,其中(x,y)为变换系数处于该变换系数块中的位置,在变换系数块为二维矩阵时,x为该变换系数块中的变换系数所处位置的行,y为该变换系数块中的变换系数所处位置的列,sign(y(x,y))表示该变换系数块中变换系数的正负值,sign(y(x,y))取值的集合为{-1,0,1}。利用上述公式,可以实现只有当新的变换系数块不为全零块时,将该新的变换系数块替换变换系数之前所对应的变换系数块进行量化,以提高量化的准确性。

在一种具体实施例中,上述步骤205中利用如下步骤,对该变换系数块进行量化处理:

利用预设的量化信息及上述待编码的视频帧数据块的像素位深信息,对该变换系数块进行量化处理。

为了权衡视觉质量和压缩性能,采用量化。该量化先将经过频谱变换后的变换系数块,舍入处理和利用除法进行缩放。量化使变换系数块中的变换系数损失部分信息。这样可以在不降低用户观看视频的视觉效果的前提下,可以允许有部分信息的损失,减少用户视觉所看到的视频中的不必要的信息。

步骤206,依据该量化后的量化系数块,进行熵编码。

获得量化后的量化系数块后,就可以依据量化后的量化系数块,进行熵编码。熵编码完成后,就完成了对待编码的视频帧数据块的视频编码。上述熵编码包括:香农(shannon)编码、哈夫曼(huffman)编码和算术编码(arithmeticcoding))。在此不一一举例。

由此可见,由于本发明实施例中对于在新的变换系数块为全零块时,对该新的变换系数块替换变换系数之前所对应的变换系数块不进行量化,直接编码视频帧数据块中非零变换系数的个数为0,因此减少了进行熵编码的变换系数块的数量,进而提高了编码速度。

参见图3所示,本发明实施例的视频编码方法具体整体流程包括如下步骤:

步骤301,获取每个待编码的视频帧数据块以及其他视频信息,其他视频信息包括视频帧数据块中的系数值、变换系数块的系数值及预设的量化信息。

步骤302,将变换系数块中的每个变换系数分别与预设阈值进行比较。

步骤303,判断变换系数块中的全部变换系数,是否全部小于预设阈值;如果不全部小于,则执行步骤304,如果全部小于,执行步骤306。

步骤304,将新的变换系数块替换变换系数之前所对应的变换系数块进行量化处理,得到量化后的量化系数块。

步骤305,判断量化系数块是否为全零块。如果是,执行步骤307;如果仍存在非零系数,则执行步骤308。

步骤306,将小于预设阈值的变换系数替换为0,获得新的变换系数块,并判断出新的变换系数块为全零块,然后执行步骤307。

步骤307,编码该视频帧数据块中非零变换系数的个数为0。

步骤308,将量化后的量化系数块进行熵编码。具体的,将非零量化系数的个数及编码数据块中第一个非零量化系数及最后一个非零量化系数之间的所有量化系数进行熵编码。

在一种具体实施例中,上述步骤308包括:

按照预设顺序,确定每个量化后的量化系数块的第一个非零量化系数对应的第一个位置,及最后一个非零量化系数对应的第二个位置;

将每个量化后的量化系数块中从第一个位置对应的第一个非零量化系数,到第二个位置对应的最后一个非零量化系数之间的所有量化系数,进行熵编码。

应用本发明实施例,可以实现对非全零块对应的量化后的量化系数块,进行熵编码,编码性能损失较小。

对非全零块对应的量化后的量化系数块进行熵编码,具体实现举例如下:

举例一:假设该4x4的视频帧数据块已经经过预测、变换、量化的步骤,得到对应的量化后的量化系数块;

该量化后的量化系数块为4x4的数据块,对该4x4的数据块进行熵编码:

将每个4x4的数据块从第一个位置对应的第一个非零量化系数,到第二个位置对应的最后一个非零量化系数之间的所有量化系数,进行熵编码。

举例二:假设该8x8的视频帧数据块已经经过预测、变换、量化的步骤,得到对应的量化后的量化系数块;

该量化后的量化系数块为8x8的数据块,对该8x8的数据块进行熵编码:首先,可以将该8x8的数据块划分为4个4x4的数据块,然后对这4个4x4的数据块按照预设顺序进行编号,比如,4个4x4的数据块的编号分别为01、02、03、04;

判断编号为02和04对应的4x4的数据块为全零块,则对编号02和04对应的4x4的数据块中的所有量化系数,编码该量化后的量化系数块中非零量化系数的个数为0,结束对该视频帧数据块的编码。

判断编号为01、03分别对应的4x4的数据块不为全零块,查找编号为01对应的4x4的数据块中,第一个非零量化系数的第一个位置,及最后一个非零量化系数的第二个位置;

查找编号为03对应的4x4的数据块中,第一个非零量化系数的第一个位置,及最后一个非零量化系数的第二个位置;

将编号为01对应的4x4的数据块从第一个位置对应的第一个非零量化系数到第二个位置对应的最后一个非零量化系数之间的所有量化系数,以及

编号为03对应的4x4的数据块从第一个位置对应的第一个非零量化系数到第二个位置对应的最后一个非零量化系数之间的所有量化系数,进行熵编码。上述预设顺序根据工业需求进行设置。

以上只是举例说明,同理,16x16的视频帧数据块,或者32x32的视频帧数据块也可以实现上述执行过程,在此不再赘述。任何能够以量化后的量化系数块进行熵编码的方法均属于本发明实施例的保护范围。

在其他具体实施例中,对非全零块对应的量化后的量化系数块进行熵编码,具体实现举例如下:

假设该8x8的视频帧数据块已经经过预测、变换、量化的步骤,得到对应的量化后的量化系数块;

该量化后的量化系数块为8x8的数据块,对该8x8的数据块进行熵编码:首先,可以将该8x8的数据块划分为4个4x4的数据块,然后对这4个4x4的数据块按照预设顺序进行编号,比如,4个4x4的数据块的编号分别为1、2、3、4;

在编号为1、2、3、4对应的4x4的数据块不为全零块时,假设编号为2对应的4x4的数据块的量化系数以及编号为3对应的4x4的数据块的量化系数分别全部为非零量化系数,依次查找1、2、3、4分别对应的4x4的数据块,在编号为1对应的4x4的数据块中查找第一个非零量化系数的第一个位置,及在编号为4对应的4x4的数据块中查找最后一个非零量化系数的第二个位置;

将从编号为1对应的4x4的数据块中第一个位置对应的第一个非零量化系数,经编号为2对应的4x4的数据块所有的量化系数,经编号为3对应的4x4的数据块所有的量化系数,到编号为4对应的4x4的数据块中第二个位置对应的最后一个非零量化系数之间的所有量化系数,进行熵编码。上述预设顺序可以根据工业需求进行设置。

由此可见,由于本发明实施例中在新的变换系数块为全零块时,对该新的变换系数块替换变换系数之前所对应的变换系数块不进行量化,直接编码视频帧数据块中非零变换系数的个数为0,因此减少了进行熵编码的变换系数块的数量,进而提高了编码速度。

利用本发明实施例的视频编码方法,可降低视频编码器的编码时间,可以通过实验数据得以证明。

具体实验数据如下表1所示,该实验数据是编码器利用本发明实施例的视频编码方法进行实验得到的,实验时,将阈值因子factor设定为1.1。如下表1为现有的编码方法与利用本发明实施例的视频编码方法的对比结果,表2为表1得到的对比结果所求的平均值。

对于表1和表2中的参数δfps,可以通过如下公式获得。

确定出δfps。

其中,δfps表示fpsproposed与fpsanchor的比值。该δfps可以表征编码器的编码速度是否加速。fps表示每秒帧率,也就是,每秒的帧数或者说是视频每秒钟能够播放的帧数。其中,fpsanchor表示使用现有的编码器编码视频片段的帧率fps,fpsproposed表示同一编码器采用本发明实施例的基于变换系数的快速编码方法后的帧率fps,表1和表2中fpsanchor、fpsproposed对应正值表示加速,对应负值表示减速,δfps大于100%表示加速。该100%表示编码器利用本发明实施例的视频编码方法,得到的编码帧率与同一编码器采用现有的视频编码方法,得到的编码帧率相同。

表1

表1和表2中视频片段分别为classa、classb、classc、classd、classe、15fps、30fps、20fps、show、others。其中,classa、classb、classc、classd、classe为标准实验视频片段。15fps、30fps、20fps、show、others为用户自定义的视频片段,也就是,按照用户需求截取的视频片段。该视频片段对应的视频信号的图像或帧,可以划分为待编码数据块,利用所划分的待编码数据块,执行本发明实施例的视频编码方法。

其中,u,v分别为两个色度信号,y为亮度信号,yuv为合并信号,bd-rate表示性能。其中,负值时,表示相同psnr(peaksignaltonoiseratio)峰值信噪比条件下,码率减少,编码性能提高。正值是码率增加,编码性能下降。编码性能包括压缩性能。

以视频片段classa进行说明,y对应的编码性能下降1.62%,u对应的编码性能提高0.14%,v对应的编码性能提高0.34%,yuv对应的编码性能下降1.35%,δfps为111.91%,表征具有11.91%的编码加速,该11.91%由δfps对应的111.91%减去100%所得到的。这样说明视频片段classa经过本发明实施例的视频编码方法与现有视频编码方法相比,本发明实施例的视频编码方法使得编码速率提高11.91%。

表2

由表2可见本发明实施例的视频编码方法,当factor设定为1.1时,本发明实施例的视频编码方法与现有视频编码方法相比,虽然由bd-rate的对应的y、u、v、yuv分别编码性能下降1.09%,编码性能提高0.42%、编码性能提高0.31%、编码性能下降0.86%可知,编码性能有一定的影响,但是,由δfps对应的110.47%减去100%所得到的10.47%左右可知,编码速率提高10.471%。因此,本发明实施例的视频编码方法,加速了编码速率。

如图4所示,本发明实施例提供了一种编码器,包括:

第一获取模块401,用于获取针对每个待编码的视频帧数据块所得到的变换系数块;

比较替换模块402,用于将上述变换系数块中的每个变换系数分别与预设阈值进行比较,将小于上述预设阈值的变换系数替换为0,获得新的变换系数块;

判断模块403,用于判断上述新的变换系数块是否为全零块;

第一编码模块404,用于如果上述新的变换系数块为全零块,则编码该视频帧数据块中非零变换系数的个数为0,结束对该视频帧数据块的编码;

第二获取模块405,用于如果上述新的变换系数块不为全零块,则将上述变换系数块进行量化处理,获得量化后的量化系数块;

第二编码模块406,用于依据上述量化后的量化系数块,进行熵编码。

由此可见,由于本发明实施例中在新的变换系数块为全零块时,对该新的变换系数块替换变换系数之前所对应的变换系数块不进行量化,直接编码视频帧数据块中非零变换系数的个数为0,因此减少了进行熵编码的变换系数块的数量,进而提高了编码速度。

可选的,上述第二编码模块,用于具体包括:

判断子模块,用于判断上述量化后的量化系数块是否为全零块;

第一编码子模块,用于如果判断上述量化后的量化系数块为全零块,则编码该量化后的量化系数块中非零量化系数的个数为0,结束对该视频帧数据块的编码;

第二编码子模块,用于如果判断上述量化后的量化系数块不为全零块,则对该量化后的量化系数块进行熵编码。

可选的,上述第一获取模块,包括:

预测子模块,用于针对每个上述待编码的视频帧数据块,进行预测,获得该视频帧数据块对应的残差块;

获取子模块,用于对该视频帧数据块对应的残差块进行频谱变换,获得上述变换系数块。

可选的,该预设阈值通过如下公式预先计算获得:

其中,th(x,y)为在该变换系数块中的变换系数对应的预设阈值,其中,th(x,y)中的(x,y)为变换系数处于该变换系数块中的位置,在变换系数块为二维矩阵时,x为该变换系数块中的变换系数所处位置的行,y为该变换系数块中的变换系数所处位置的列,qp为预设的量化参数,shift为移位值,shift的取值为29-b-m,其中b为待编码的视频帧数据块的像素位深信息,m为该视频帧数据块对应的残差块的大小,该残差块为n×n的残差块,m=log2n,offset为偏移值,offset取值为

g={g0,g1,g2,g3,g4,g5}={2-4/6,2-3/6,2-2/6,2-1/6,20,21/6},f={f0,f1,f2,f3,f4,f5}={26214,23302,20560,18396,16384,14564},w(x,y)为预设的量化权重因子,factor为预设的阈值因子,factor的取值范围为[1,1.5]。

可选的,该第二获取模块具体用于利用预设的量化信息及该待编码的视频帧数据块的像素位深信息,对该变换系数块进行量化处理。

可选的,该第二获取模块具体用于通过如下公式计算:

获得量化后的量化系数块,

其中,q(x,y)表示该量化后的量化系数块,q(x,y)中的(x,y)为系数处于该量化后的量化系数块中的位置,在量化后的量化系数块为二维矩阵时,x为该量化后的量化系数块中的量化系数所处位置的行,y为该量化后的量化系数块中的量化系数所处位置的列,y(x,y)为位于该变换系数块中位置处的变换系数,其中(x,y)为变换系数处于该变换系数块中的位置,在变换系数块为二维矩阵时,x为该变换系数块中的变换系数所处位置的行,y为该变换系数块中的变换系数所处位置的列,sign(y(x,y))表示该变换系数块中变换系数的正负值,sign(y(x,y))取值的集合为{-1,0,1}。

可选的,上述第二编码子模块,具体用于:

按照预设顺序,确定每个量化后的量化系数块的第一个非零量化系数对应的第一个位置,及最后一个非零量化系数对应的第二个位置;

将每个量化后的量化系数块从第一个位置对应的第一个非零量化系数,到第二个位置对应的最后一个非零量化系数之间的所有量化系数,进行熵编码。

本发明实施例可以应用于参见如5所示的编码器。对于符合现有视频编码标准,编码生成的视频,可以直接被常用播放器解码。该编码器还可以实现如下功能:对于每一待编码块的视频帧数据块,从各种帧间编码类型中根据率失真准则选择最优的帧间编码类型,得到运动信息及已编码的重构帧信息,利用所选择的帧间编码类型对视频帧数据块进行预测,并利用运动信息及已编码的重构帧信息,得到待编码块的预测值,对预测值和待编码块的像素值做差,得到残差值,对残差值依次进行变换、量化、扫描、熵编码操作,编入码流,同时将运动信息编入码流,完成编码过程,该帧间编码类型包括:向前编码、向后编码。

上述编码器还可以将量化后的量化系数,对量化后的量化系数进行扫描,根据预测和变换方式选择扫描顺序,使量化后的量化系数块中的二维的量化系数转变成一维的量化系数序列,扫描所得的一维量化系数序列更趋向于由大到小的排列,其中,该预设扫描顺序包括:z型扫描模式,水平扫描模式以及竖直扫描模式,通过率失真优化准则在这三种扫描模式中选择一组最优的扫描模式;依次将一维的量化系数序列输入到熵编码器进行编码,并将扫描模式的选择信息编入码流,形成最终码流。

编码器可以根据一个或多个标准或规范,例如h.264mpeg-4(movingpictureexpertsgroup,动态图像专家组)、h.265高效率视频编码或hevc(highefficiencyvideocoding,高效率视频编码)以及其它标准,来承担视频压缩和解压和/或实现视频编解码器。本发明实施例并不限于任何特定视频编码标准或规范。

本发明实施例提供了一种电子设备,如图6所示,包括编码器61和机器可读存储介质62,上述机器可读存储介质存储有能够被上述编码器执行的机器可执行指令,上述编码器被上述机器可执行指令促使:实现如下步骤:

获取针对每个待编码的视频帧数据块所得到的变换系数块;

将上述变换系数块中的每个变换系数分别与预设阈值进行比较,将小于上述预设阈值的变换系数替换为0,获得新的变换系数块;

判断上述新的变换系数块是否为全零块;

如果上述新的变换系数块为全零块,则编码该视频帧数据块中非零变换系数的个数为0,结束对该视频帧数据块的编码;

如果上述新的变换系数块不为全零块,则将上述变换系数块进行量化处理,获得量化后的量化系数块;

依据上述量化后的量化系数块,进行熵编码。

由此可见,由于本发明实施例中在新的变换系数块为全零块时,对该新的变换系数块替换变换系数之前所对应的变换系数块不进行量化,直接编码视频帧数据块中非零变换系数的个数为0,因此减少了进行熵编码的变换系数块的数量,进而提高了编码速度。

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

获取针对每个待编码的视频帧数据块所得到的变换系数块;

将上述变换系数块中的每个变换系数分别与预设阈值进行比较,将小于上述预设阈值的变换系数替换为0,获得新的变换系数块;

判断上述新的变换系数块是否为全零块;

如果上述新的变换系数块为全零块,则编码该视频帧数据块中非零变换系数的个数为0,结束对该视频帧数据块的编码;

如果上述新的变换系数块不为全零块,则将上述变换系数块进行量化处理,获得量化后的量化系数块;

依据上述量化后的量化系数块,进行熵编码。

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

由此可见,由于本发明实施例中在新的变换系数块为全零块时,对该新的变换系数块替换变换系数之前所对应的变换系数块不进行量化,直接编码视频帧数据块中非零变换系数的个数为0,因此减少了进行熵编码的变换系数块的数量,进而提高了编码速度。

本发明实施例还提供了一种电子设备,如图7所示,包括处理器701、通信接口702、存储器703和通信总线704,其中,处理器701,通信接口702,存储器703通过通信总线704完成相互间的通信,

存储器703,用于存放计算机程序;

处理器701,用于执行存储器703上所存放的程序时,实现如下步骤:

获取针对每个待编码的视频帧数据块所得到的变换系数块;

将上述变换系数块中的每个变换系数分别与预设阈值进行比较,将小于上述预设阈值的变换系数替换为0,获得新的变换系数块;

判断上述新的变换系数块是否为全零块;

如果上述新的变换系数块为全零块,则编码该视频帧数据块中非零变换系数的个数为0,结束对该视频帧数据块的编码;

如果上述新的变换系数块不为全零块,则将上述变换系数块进行量化处理,获得量化后的量化系数块;

依据上述量化后的量化系数块,进行熵编码。

上述电子设备提到的通信总线可以是外设部件互连标准(peripheralcomponentinterconnect,pci)总线或扩展工业标准结构(extendedindustrystandardarchitecture,eisa)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。

通信接口用于上述电子设备与其他设备之间的通信。

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

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

本发明实施例提供的方法可以应用于电子设备。具体的,该电子设备可以为:台式计算机、便携式计算机、智能移动终端、服务器等。在此不作限定,任何可以实现本发明的电子设备,均属于本发明的保护范围。

由此可见,由于本发明实施例中在新的变换系数块为全零块时,对该新的变换系数块替换变换系数之前所对应的变换系数块不进行量化,直接编码视频帧数据块中非零变换系数的个数为0,因此减少了进行熵编码的变换系数块的数量,进而提高了编码速度。

本发明实施例提供了一种计算机可读存储介质,上述存储介质内存储有计算机程序,上述计算机程序被处理器执行时实现如下步骤:获取针对每个待编码的视频帧数据块所得到的变换系数块;

将上述变换系数块中的每个变换系数分别与预设阈值进行比较,将小于上述预设阈值的变换系数替换为0,获得新的变换系数块;

判断上述新的变换系数块是否为全零块;

如果上述新的变换系数块为全零块,则编码该视频帧数据块中非零变换系数的个数为0,结束对该视频帧数据块的编码;

如果上述新的变换系数块不为全零块,则将上述变换系数块进行量化处理,获得量化后的量化系数块;

依据上述量化后的量化系数块,进行熵编码。

由此可见,由于本发明实施例中在新的变换系数块为全零块时,对该新的变换系数块替换变换系数之前所对应的变换系数块不进行量化,直接编码视频帧数据块中非零变换系数的个数为0,因此减少了进行熵编码的变换系数块的数量,进而提高了编码速度。

本发明实施例提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述的视频编码方法步骤。

本发明实施例提供了一种计算机程序,当其在计算机上运行时,使得计算机执行实现上述的视频编码方法步骤。

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

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

本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于编码器/电子设备/存储介质/计算机程序产品/计算机程序实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

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

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