掌桥专利:专业的专利平台
掌桥专利
首页

一种实现LCEVC视频编码优化的方法

文献发布时间:2023-06-19 16:08:01



技术领域

本发明属于多媒体视频处理与传输领域,涉及一种实现LCEVC视频编码优化的方法。

背景技术

随着视频编解码技术的快速发展,高清视频、超高清视频(包括4K、8K)受到大众的青睐,因为它们可以为用户提供更清晰的画质和更逼真的感知质量。但是高清视频、超高清视频的数据量随着分辨率和位深的提高而增大。为了提高压缩效率、减少数据量,为了满足在现有和未来视频编解码器上基于软件扩展的市场需求,提出了低复杂度增强视频编码(LCEVC)。

从LCEVC的测试软件LTM测试可知,LCEVC将压缩率提高到40%左右。以AVC为基本编码器,在相同比特率下同一视频的峰值信噪比(PSNR)、视频质量多方法评价融合(VMAF)、平均主观意见分(MOS)值均高于AVC。以AVC为基本编解码器的LCEVC编码时间比AVC编码时间少2.4倍,以HEVC为基本编解码器的LCEVC编码时间比HEVC编码时间少2.7倍。LCEVC与基本编码器结合应用后,视频图像有了明显的增强。LCEVC的下采样模块采用兰索斯(Lanczos)插值算法,虽然Lanczos算法有较好的插值效果,但是其下采样模块并没有达到最优性能的下采样输出。因此有必要对LCEVC的下采样模块进行优化改进,进而增强视频图像质量。

尽管LCEVC具有复杂度低、编码时间短的特点,但是通过对同一高清视频的测试,当QP为22时,以AVC为基本编解码器的LCEVC编码时间为28.9s,以HEVC为基本编解码器的LCEVC编码时间高达33.8s。对于流媒体、体育直播等一些实时性较强的应用而言,有必要在不影响编码性能的基础上对视频编码过程进行加速实现LCEVC标准下的实时编码。

发明内容

有鉴于此,本发明的目的在于提供一种实现LCEVC视频编码优化的方法,考虑插值依赖的图像下采样优化方法和基于GPU并行优化实现LCEVC实时编码,实现PC端的实时低复杂度增强视频编码。

为达到上述目的,本发明提供如下技术方案:

一种实现LCEVC视频编码优化的方法,包括以下步骤:

S1:对于给定的输入视频,采用基于Modifiedcubic插值信息的分块下采样方法获取最优的下采样输出,以提高LCEVC中下采样模块的输出视频质量,进而提高LCEVC编码视频的图像质量;

S2:将步骤S1中所述的基于Modifiedcubic插值信息的分块下采样方法嵌入到LCEVC编码器中,对LCEVC中各个模块分别统计耗时并进行耗时分析,通过耗时分析结果设计一种基于CPU-GPU异构平台的LCEVC编码器框架;

S3:根据S2中基于CPU-GPU异构平台的LCEVC编码器框架对LCEVC标准中的上采样、改进后的下采样、变换与量化、反变换与反量化、熵编码模块进行并行优化设计,在PC端实现实时低复杂度增强视频编码。

进一步,所述步骤S1中,设输入视频序列为Y,下采样后的图像为X,通过基于Modifiedcubic插值信息的分块下采样方法求得最优的下采样输出X

S11:设Y'为X插值后的图像,H为插值系数,Φ为插值系数和对应的像素值的乘积组成的矩阵,其中Y'表示为:

Y'=HX+Φ

最优的下采样的目标函数表示为:

对X求导化简得:

令上式等于零得X最优解的闭式解为:

X

其中(H

由于H矩阵的大小随着图像尺寸的增大而增大,因此在程序中H会占据很大的内存空间,同时(H

S12:将所有的4×4最优的下采样块X

进一步,所述步骤S2具体包括以下步骤:

S21:将步骤S1中所述基于Modifiedcubic插值信息的分块下采样方法嵌入到LCEVC编码器中;

S22:选取一组视频序列,对LCEVC编码器在多核CPU上进行多次串行运行测试,求平均数得到每一帧的平均消耗时间,从而得到LCEVC编码器各个模块的耗时占比;

S23:通过步骤S22中LCEVC编码器各个模块的耗时占比,基于GPU能够进行大规模的并行处理,CPU更适合于逻辑控制特点,设计一种基于CPU-GPU异构平台的LCEVC编码器框架,该编码框架既考虑了GPU,也考虑了CPU的计算资源。其中CPU和GPU之间的通信采用复制数据的方式实现,CPU负责处理的部分包括:

1)负责读取图像数据,负责将输入视频序列和基本编码器生成的Y、U、V分量数据读入到CPU内存中,并将数据复制后传递到GPU的显存中;

2)负责读取编码配置文件,比如图像名称、分辨率大小、位深、上下采样方式、量化参数等信息。

3)负责输出基本编码器的编码视频、输出重建视频序列、输出码流,负责重建视频PSNR的计算以及GPU线程的调度;

对于上采样、下采样、变换、量化、反变换、反量化、熵编码这些数据相关性比较低的模块,根据各个模块不同的算法处理过程设计相应的并行优化算法。

进一步,所述步骤S3具体包括:

S31:对上采样模块并行化处理;从LCEVC中的Modifiedcubic插值过程可以知道,该插值过程只包含了加法、乘法和移位计算,而这三个运算符在GPU上已经有对应的硬件加法器。因此可以采用GPU对上采样插值进行并行实现;共享存储器是GPU的片上存储器,可以快速存取数据,也可以实现各线程块之间的数据通信。

S32:将下采样的输入图像分为8×8的块进行并行处理;在GPU中,分配的block数为Pic_Height/8,thread数为Pic_Width/8,其中Pic_Height和Pic_Width分别表示下采样输入图像的高和宽;下采样的并行化处理与上采样并行化处理流程基本相同,区别在于执行的下采样算法和插值算法不同。

S33:对变换与量化模块进行并行化处理;

S34:反变换与变换的并行原理完全相同,反量化与量化的原理也完全相同。因此对反变换、反量化的并行优化方式与S33相同;

S35:对熵编码模块中的游程编码和哈夫曼编码并行处理;

S36:在PC端的GPU平台上实现S31到S35中的并行优化算法,进而实现对LCEVC编码器的加速,实现实时的低复杂度增强视频编码。

进一步,步骤S31中,上采样并行化具体实现方法如下:

S311:将需要上采样的图像从CPU内存中复制到GPU的全局内存中,并将插值系数矩阵复制到常量内存中;

S312:对输入的图像上下边界进行填充,考虑到图像填充后保证每个线程处理的数据量基本相同,将填充后的图像平均分成64个块,块的高度为U_PicHeight/8,宽度为U_PicWidth/8,其中U_PicHeight和U_PicWidth分别表示待插值视频图像的宽度和长度,然后将图像按照分块分别读入到共享内存中;

S313:分配线程块和线程,分配的block数为8,thread数为8;

S314:每个线程读取共享内存中所需要的像素值,并从常量内存中读取插值系数进行插值运算,经过cudaDeviceSynchronize()函数同步后,将每个块的插值结果保存到全局内存中;

S315:最后将GPU全局内存中的上采样结果复制给CPU内存以供后续数据处理使用。

进一步,所述步骤S33中,LCEVC提供两种变换方式,2×2的变换或者4×4的变换;在并行优化之前,对LCEVC中的变换方式采用蝶形变换,以减少计算次数;2×2的变换公式改写为如下形式:

2×2的变换如果按照常规算法计算,一共需要12次加法,6次乘法计算。通过蝶形变换的矩阵转化,只需要8次加法和4次乘法,不仅节约了硬件资源,而且减少了计算复杂度。LCEVC中变换过程的输入数据是预测残差,对于2×2变换或者4×4变换,变换后会将变换系数解析成层;

对于4×4的变换,首先将残差数据分为4×4的块,然后每个块根据变换矩阵进行蝶形变换,最后将变换系数的数据解析为层;层与层之间的数据是独立的,不具有相关性,因此变换后采用并行计算对量化模块进行优化;由于4×4变换后是将数据解析成16个layer,因此GPU中分配的block数为4,thread数为4;4×4变换在GPU上实现的具体步骤包括:

1)把残差数据从CPU中复制到GPU的全局内存中,然后将原始图像分成4×4的块;

2)分配block和thread数目,block数为4,thread数为4;

3)每个线程根据分配的线程号来读取全局内存中块的数据信息,然后对各个块做蝶形变换,将得到的变换系数解析为层;处理数据的过程中,使用_syncthreads()函数进行同步;量化过程的输入是变换系数,量化过程的输入数据为T

进一步,步骤S35中,量化输出的数据的都是以layer来进行区分的,但是layer中的数据量大小因为亮度分量和色度分量的不同而不同。为了减少由于某些线程数据长度不一致而引起的程序等待时间,应将数据尽可能的平均,以提高并行编码的效率。以L-1层的U1和V1为基准,将layer中较大的数据块分割为和W/16×H/16相同大小的数据,分配的block数为16个,分配的thread数目为30个,使用一个thread处理一个W/16×H/16大小的数据块,基于GPU的熵编码并行优化的具体实现方法为:

1)从CPU内存中将需要量化的输出数据复制传递给GPU的全局内存;

2)将熵编码输入的数据按照W/16×H/16大小的数据块分块读入共享存储器;

3)每个线程从共享储存器中读取所需要的数据进行游程编码和哈夫曼编码,使用cudaDeviceSynchronize()函数等待所有线程都处理完成,将编码数据按序传入全局内存中;

通过GPU并行计算得到熵编码结果,将熵编码数据复制传递给CPU的内存,在写入二进制码流文件时直接使用熵编码输出数据。

本发明的有益效果在于:本发明既考虑了通过改进下采样算法以计算出最优的下采样视频图像,进而提高LCEVC整体视频编码质量,又考虑了将改进后的下采样算法采用分块的方式求解以降低计算复杂度和内存使用空间。通过本发明方法实现实时的LCEVC视频编码系统,考虑了上采样、改进后的下采样、变换与量化、反变换与反量化、熵编码模块的并行优化,减少了编码时间,提高了CPU、GPU等硬件资源的有效利用率,提高了编码效率。本发明还实现了PC端实时的低复杂度增强视频编码。

本发明的其他优点、目标和特征在某种程度上将在随后的说明书中进行阐述,并且在某种程度上,基于对下文的考察研究对本领域技术人员而言将是显而易见的,或者可以从本发明的实践中得到教导。本发明的目标和其他优点可以通过下面的说明书来实现和获得。

附图说明

为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作优选的详细描述,其中:

图1为本发明的系统流程框图;

图2为本发明所述方法的步骤S3中对上采样并行优化的流程图

图3为本发明所述方法的步骤S3中对变换与量化并行优化的流程图;

图4为本发明所述方法的步骤S3中对蝶形算法图解的示意图;

图5为本发明所述方法的步骤S3中对熵编码并行优化的流程图。

具体实施方式

以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。需要说明的是,以下实施例中所提供的图示仅以示意方式说明本发明的基本构想,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。

其中,附图仅用于示例性说明,表示的仅是示意图,而非实物图,不能理解为对本发明的限制;为了更好地说明本发明的实施例,附图某些部件会有省略、放大或缩小,并不代表实际产品的尺寸;对本领域技术人员来说,附图中某些公知结构及其说明可能省略是可以理解的。

本发明实施例的附图中相同或相似的标号对应相同或相似的部件;在本发明的描述中,需要理解的是,若有术语“上”、“下”、“左”、“右”、“前”、“后”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此附图中描述位置关系的用语仅用于示例性说明,不能理解为对本发明的限制,对于本领域的普通技术人员而言,可以根据具体情况理解上述术语的具体含义。

如图1所示,本发明提供一种实现LCEVC视频编解码标准的优化方法,包括以下步骤:

S1:对于给定的输入视频,采用基于Modifiedcubic插值信息的分块下采样方法以此提高LCEVC中下采样模块的输出视频质量,进而提高LCEVC编码视频的图像质量。具体步骤为:

S11:设输入视频序列为Y,下采样后的图像为X,通过基于Modifiedcubic插值信息的分块下采样方法求得最优的下采样输出X

设Y'为X插值后的图像,H为插值系数,Φ为插值系数和对应的像素值的乘积组成的矩阵。其中Y'可表示为

Y'=HX+Φ

最优的下采样的目标函数可以表示为:

对X求导化简可得

令上式等于零可得X最优解的闭式解

X

其中(H

由于H矩阵的大小随着图像尺寸的增大而增大,因此在程序中H会占据很大的内存空间,同时(H

S12:最后将所有的4×4最优的下采样块X

S2:将S1中的基于Modifiedcubic插值信息的分块下采样方法加入LCEVC编码器中,并对LCEVC中各个模块分别统计耗时并进行耗时分析,通过耗时分析结果设计了一种基于CPU-GPU异构平台的LCEVC编码器框架。具体步骤为:

S21:将基于Modifiedcubic插值信息的分块下采样方法嵌入到LCEVC编码器中。

S22:选取一组视频序列,对LCEVC编码器在多核CPU上进行测试,经过10次串行运行测试求平均数得到每一帧的平均消耗时间,得到LCEVC编码器各个模块的耗时占比。

S23:通过S22中LCEVC编码器各个模块的耗时占比,基于GPU能够进行大规模的并行处理,CPU更适合于逻辑控制特点,设计一种基于CPU-GPU异构平台的LCEVC编码器框架,该编码框架既考虑了GPU,也考虑了CPU的计算资源。其中CPU和GPU之间的通信主要是采用复制数据的方式实现的,CPU主要负责处理的部分包括:

1)负责读取图像数据,负责将输入视频序列和基本编码器生成的Y、U、V分量数据读入到CPU内存中,CPU并将数据复制后传递到GPU的显存中。

2)负责读取编码配置文件,比如图像名称、分辨率大小、位深、上下采样方式、量化参数等信息。

3)负责输出基本编码器的编码视频、输出重建视频序列、输出码流,负责重建视频PSNR的计算以及GPU线程的调度。

对于上采样、下采样、变换、量化、反变换、反量化、熵编码这些数据相关性比较低的模块,根据各个模块不同的算法处理过程设计相应的并行优化算法。

S3:根据S2中基于CPU-GPU异构平台的LCEVC编码器框架对LCEVC标准中的上采样、改进后的下采样、变换与量化、熵编码模块进行并行优化设计,实现实时低复杂度增强视频编码。本方法能够提高LCEVC的编码视频质量,同时也缩短了编码时间,提高了CPU、GPU等硬件资源的有效利用率。具体步骤为:

S31:如图2所示,对上采样模块并行化处理。从Modifiedcubic插值过程可以知道,插值过程只包含了加法、乘法和移位计算,而这三个运算符在GPU上已经有对应的硬件加法器。因此可以采用GPU对上采样插值进行并行实现。共享存储器是GPU的片上存储器,可以快速存取数据,也可以实现各线程块之间的数据通信。基于此,上采样并行化具体实现方法如下:

1)将需要上采样的图像从CPU内存中拷贝到GPU的全局内存中,并将插值系数矩阵拷贝到常量内存中。

2)对输入的图像上下边界进行填充,考虑到图像填充后保证每个线程处理的数据量基本相同,将填充后的图像平均分成64个块,块的高度为U_PicHeight/8,宽度为U_PicWidth/8,其中U_PicHeight和U_PicWidth分别表示待插值视频图像的宽度和长度,然后将图像按照分块分别读入到共享内存中。

3)分配线程块和线程。分配的线程块数为8,线程数为8。

4)每个线程读取共享内存中所需要的像素值,并从常量内存中读取插值系数进行插值运算,经过cudaDeviceSynchronize()函数同步后,将每个块的插值结果保存到全局内存中。最后将GPU全局内存中的上采样结果复制给CPU内存以供后续数据处理使用。

S32:将下采样的输入图像分为8×8的块进行并行处理。在GPU中,分配的block数为Pic_Height/8,thread数为Pic_Width/8。其中Pic_Height和Pic_Width分别表示下采样输入图像的高和宽。下采样的并行化处理与上采样并行化处理流程基本相同,区别在于执行的下采样算法和插值算法不同。

S33:如图3所示,对变换与量化模块进行并行化处理。在变换的过程中,LCEVC提供了两种变换方式,2×2的变换或者4×4的变换。在并行优化之前,对LCEVC中的变换方式采用蝶形变换,以减少计算次数。2×2的变换公式可以改写为如下形式:

2×2的变换如果按照常规算法计算,一共需要12次加法,6次乘法计算。如图4所示,通过蝶形变换的矩阵转化,只需要8次加法和4次乘法,不仅节约了硬件资源,而且减少了计算复杂度。LCEVC中变换过程的输入数据是预测残差,对于2×2变换或者4×4变换,变换后会将变换系数解析成层。对于4×4的变换,首先会将残差数据分为4×4的块,然后每个块根据变换矩阵进行蝶形变换,最后将变换系数的数据解析为层。层与层之间的数据是独立的,不具有相关性,因此变换后可以采用并行计算对量化模块进行优化。由于4×4变换后是将数据解析成16个layer,因此GPU中分配的block数为4,thread数为4。4×4变换在GPU上实现的具体步骤包括:

1)把残差数据从CPU中复制到GPU的全局内存中,然后将原始图像分成4×4的块。

2)分配block和thread数目,block数为4,thread数为4。

3)每个线程根据分配的线程号来读取全局内存中块的数据信息,然后对各个块做蝶形变换,将得到的变换系数解析为层。处理数据的过程中,需要使用_syncthreads()函数进行同步。量化过程的输入就是变换系数。量化过程的输入数据为T

S34:反变换与变换的并行原理完全相同,反量化与量化的原理也完全相同。因此对反变换、反量化的并行优化方式与S33相同。

S35:如图5所示,对熵编码模块中的游程编码和哈夫曼编码并行处理。量化输出的数据的都是以layer来进行区分的,但是layer中的数据量大小因为亮度分量和色度分量的不同而不同。为了减少由于某些线程数据长度不一致而引起的程序等待时间,应将数据尽可能的平均,以提高并行编码的效率。以L-1层的U1和V1为基准,将layer中较大的数据块分割为和W/16×H/16相同大小的数据。可以考虑分配的block数为16个,分配的thread数目为30个,使用一个thread处理一个W/16×H/16大小的数据块。基于GPU的熵编码并行优化的具体实现方法为:

1)从CPU内存中将需要量化的输出数据复制传递给GPU的全局内存。

2)将熵编码输入的数据按照W/16×H/16大小的数据块分块读入共享存储器。

3)每个线程从共享储存器中读取所需要的数据进行游程编码和哈夫曼编码,使用cudaDeviceSynchronize()函数等待所有线程都处理完成,将编码数据按序传入全局内存中。

通过GPU并行计算得到熵编码结果,将熵编码数据复制传递给CPU的内存,在写入二进制码流文件时可以直接使用熵编码输出数据。

S36:在PC端的GPU平台上实现S31到S34中的并行优化算法,进而实现对LCEVC编码器的加速,实现实时的低复杂度增强视频编码。

最后说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或者等同替换,而不脱离本技术方案的宗旨和范围,其均应涵盖在本发明的权利要求范围当中。

技术分类

06120114716826