一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

视频编码方法、视频解码方法及装置与流程

2022-04-09 02:43:33 来源:中国专利 TAG:


1.本技术涉及计算机技术领域,特别是涉及一种视频编码方法、视频解码方法及装置、电子设备、机器可读介质。


背景技术:

2.视频编码是指通过压缩技术,将原始视频格式的文件转换成另一种视频格式文件的方式,视频编码是获得可观看视频的重要环节。
3.相关技术中,cutree是视频编码中的有效编码工具之一,其通过对视频帧之间的相互参考过程进行分析,来控制视频帧的画质损失,从而控制编码后视频的码率和体量。
4.但是,目前的方案中难以达到对编码后视频的码率和体量的进一步优化,导致编码后视频在码率高的情况下,体量较大,或在体量小的情况下,码率较低,降低了编码质量。


技术实现要素:

5.本技术实施例提供了一种视频编码方法、视频解码方法,以解决相关技术中编码质量较低的问题。
6.相应的,本技术实施例还提供了一种视频编码装置、电子设备以及存储介质,用以保证上述方法的实现及应用。
7.为了解决上述问题,本技术实施例公开了一种视频编码方法,所述方法包括:
8.获取待编码视频,所述待编码视频的视频帧中划分有多个编码区域;
9.根据所述视频帧所处的运动场景,调整所述视频帧的调整强度值,所述调整强度值用于控制所述视频帧中编码区域的量化参数的大小;
10.根据所述视频帧的调整强度值,以及对所述视频帧进行预编码所得到的编码区域的参考价值参数,获取所述编码区域的量化参数;
11.根据所述编码区域的量化参数,对所述待编码视频进行编码,得到编码视频。
12.本技术实施例公开了一种视频解码方法,所述方法包括:
13.获取编码视频,所述编码视频的视频帧中划分有多个编码区域;
14.对所述编码视频进行解码,得到所述编码区域的量化参数,所述量化参数为:由编码前的编码视频的视频帧所处的运动场景确定的调整强度值,以及所述编码区域通过预编码得到的参考价值参数所计算得到的参数;
15.根据所述编码区域的量化参数,构建待播放视频。
16.本技术实施例公开了一种视频编码装置,所述装置包括:
17.第一获取模块,用于获取待编码视频,所述待编码视频的视频帧中划分有多个编码区域;
18.调整模块,用于根据所述视频帧所处的运动场景,调整所述视频帧的调整强度值,所述调整强度值用于控制所述视频帧中编码区域的量化参数的大小;
19.计算模块,用于根据所述视频帧的调整强度值,以及对所述视频帧进行预编码所
得到的编码区域的参考价值参数,获取所述编码区域的量化参数;
20.编码模块,用于根据所述编码区域的量化参数,对所述待编码视频进行编码,得到编码视频。
21.本技术实施例公开了一种视频解码装置,所述装置包括:
22.第二获取模块,用于获取编码视频,所述编码视频的视频帧中划分有多个编码区域;
23.解码模块,用于对所述编码视频进行解码,得到所述编码区域的量化参数,所述量化参数为:由编码前的编码视频的视频帧所处的运动场景确定的调整强度值,以及所述编码区域通过预编码得到的参考价值参数所计算得到的参数;
24.重构模块,用于根据所述编码区域的量化参数,构建待播放视频。
25.本技术实施例还公开了一种电子设备,包括:处理器;和存储器,其上存储有可执行代码,当所述可执行代码被执行时,使得所述处理器执行如本技术实施例中一个或多个所述的方法。
26.本技术实施例还公开了一个或多个机器可读介质,其上存储有可执行代码,当所述可执行代码被执行时,使得处理器执行如本技术实施例中一个或多个所述的方法。
27.与现有技术相比,本技术实施例包括以下优点:
28.本技术实施例中,可以通过分析待编码视频的视频帧所处的运动场景,来根据运动场景动态调节视频帧调整强度值,进而修正编码区域的量化参数的大小,后续编码时可以按照编码区域的量化参数,调整编码区域的码率和体量,使其在契合对应运动场景下的观感需求的基础上,优化了码率和体量,在既满足编码视频的画面观感质量的同时又缩减了编码视频的体量,提高了编码质量。
附图说明
29.图1是本技术实施例的一种视频编码方法的架构图;
30.图2是本技术实施例的一种视频解码方法的架构图;
31.图3是本技术实施例的一种电商直播场景中视频编码方法的架构图;
32.图4是本技术实施例的一种短视频场景中视频编码方法的架构图;
33.图5是本技术实施例的一种视频会议场景中视频编码方法的架构图;
34.图6是本技术实施例的一种网络视频点播场景中视频编码方法的架构图;
35.图7是本技术实施例的一种视频编码方法的步骤流程图;
36.图8是本技术实施例的一种视频帧的示意图;
37.图9是本技术实施例的另一种视频编码方法实施例的步骤流程图;
38.图10是本技术实施例的一种预编码过程的示意图;
39.图11是本技术实施例的一种预编码过程的具体示例示意图;
40.图12是本技术实施例的一种视频解码方法的步骤流程图;
41.图13是本技术实施例的一种视频编码装置的结构框图;
42.图14是本技术实施例的一种视频解码装置的结构框图;
43.图15是本技术一实施例提供的装置的结构示意图。
具体实施方式
44.为使本技术的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本技术作进一步详细的说明。
45.为使本领域技术人员更好地理解本技术,以下对本技术涉及的概念进行说明:
46.待编码视频:即为编码前的原始视频文件,是由原始视频帧图像组成的yuv(一种颜色编码,y为明亮度,uv为颜色度)视频序列。
47.编码视频:待编码视频经过视频编码处理后得到的文件,也称为视频裸流文件,视频裸流文件经过后续的封装处理后,即可得到可以观看的影音视频。
48.编码区域:也称为编码单元(cu,coding unit),是视频帧中提前划分好的固定尺寸大小(如8
×
8)的图像块,也是编码过程中的一个处理对象。
49.运动场景:反映一个瞬时或持续运动过程的场景,本技术实施例中当前视频帧所处的运动场景可以影响其量化参数的大小,运动场景包括画面剧烈变化的运动场景以及画面缓慢变化的运动场景。
50.量化参数(qp,quantization parameter):量化就是把信号的连续取值映射成多个离散的幅值的过程,实现了信号取值多对一的映射,量化可以有效减小信号的取值范围,进而获得更好的压缩效果,量化参数是一种可以在编码过程中导出量化步长的参数,用于控制编码后码流的体积大小和质量,量化参数越小,编码后的码流体积越大,画面质量越高;量化参数越大,编码后的码流体积越小,画面质量越低。
51.cutree:视频编码过程中,一种基于当前编码区域被其他帧的编码区域参考的程度来调整当前编码区域的量化参数偏移量的方法。
52.lookahead模块:在cutree算法中编码当前帧时,预先快速编码当前帧的后续若干帧,以得到当前帧对后续参考帧的参考价值参数的模块。
53.强度调整值:即为cutree strength,用于控制当前编码区域的量化参数偏移量的调整幅度的参数,量化参数偏移量与初始量化参数叠加后得到调整后的量化参数。强度调整值越大,调整后的量化参数越小。
54.参考价值参数(propagatecost):假设参考视频帧的编码区域b参考了被参考视频帧的编码区域a,则编码区域a的参考价值参数反映了编码区域a提供给编码区域b的参考价值。
55.运动搜索:在参考帧上找到与当前编码区域差异性最小的匹配编码区域的过程,用于识别视频帧所处的运动场景。
56.运动矢量(mv,motion vector):连接当前编码区域与匹配编码区域的矢量,用来表示视频帧中物体运动的方向。
57.静止编码区域:运动矢量趋近于0的编码区域,静止编码区域在当前帧中的位置与其匹配编码区域在参考帧中的位置相近。
58.像素代价参数(cost):反映当前编码区域与匹配编码区域之间的像素级差异,像素代价参数越大,当前编码区域与匹配编码区域的相似度越小。
59.帧内预测模式(intra):仅使用当前帧重建像素进行预测的模式。
60.帧间预测模式(inter):使用之前已编码帧的像素进行当前帧预测的模式。
61.帧内预测代价(intracost):反映了帧内预测模式中视频帧的总信息量。
62.帧间预测代价(intercost):反映了帧间预测模式中视频帧的总信息量,帧内预测代价与帧间预测代价的差值代表了当前帧从它的参考帧中传递到的信息量。
63.预置索引参数(preset):编码器中使用预置索引参数来配置编码档次,如,可以设置10个编码档次,预置索引参数由0到9,编码速度随着预置索引参数变大而变慢,编码效率随着预置索引参数增大而升高。
64.h.265/hevc:国际视频编码标准。
65.x265:一个开源的h.265/hevc的编码器。
66.s265:自研得到的h.265/hevc编码器。
67.参照图1,其示出了本技术实施例提供的一种视频编码方法的架构图,包括:降采样模块、预编码模块、分析模块、计算模块、编码模块。
68.本技术实施例的视频编码方法的架构可应用于短视频、视频会议、视频直播、网络视频点播等领域,具体可以在这些领域中需要输出目标视频时,先将待编码视频按照图1流程进行编码得到编码视频,最后将编码视频按照预设格式封装,得到预设格式的目标视频进行输出。
69.在上述过程中,视频编码承担着视频压缩的重任,其使命便是在保证人眼观看的视频质量没有明显下降的基础上,尽可能降低视频文件的体量,从而节省带宽成本,提升观看流畅的视觉体验。另外,在各个领域存在对编码视频的码率和体量的不同需求,如有的领域要求输出高码率的高质量视频,有的领域要求输出体量小的轻量化视频,具体在编码过程中,可以通过调整相关参数,来达到这些领域对码率和体量的需求,并且在满足编码视频一方面参数的需求后,尽可能的使得另一方面参数具有优秀表现,如,满足编码视频体量小的需求的前提下,尽可能的提高编码视频的码率;满足编码视频高码率的需求的前提下,尽可能的降低编码视频的体量。
70.在视频编码过程中,待编码视频中的参考视频帧的参考编码区域可以通过从被参考视频帧的被参考编码区域中得到参考,来控制自身的画质损失,从而控制自身的码率(画面质量)和体量。其中,若被参考编码区域提供给参考编码区域的参考价值越大,那么就可以通过相关参数的控制,为该被参考编码区域赋予较小的量化参数,使其画质损失较小且具有较高码率,从而可以提供给后续参考编码区域充分的参考价值,提高后续参考编码区域的质量;若被参考编码区域提供给参考编码区域的参考价值越小,则可以认为该被参考编码区域本身的利用价值较低,即使其画面质量较低也不会对后续编码造成影响,那么就可以通过相关参数的控制,为该被参考编码区域赋予较大的量化参数,使其画质损失较大且具有较低码率,从而降低该被参考编码区域的体量,进而减小整个编码视频的体量。
71.进一步的,本技术实施例通过对待编码视频的视频帧画面所处的运动场景进行分析可以得到一个结论:画面剧烈变化的运动场景中的一个编码区域,以及画面缓慢变化的运动场景中的一个编码区域,即使这两个编码区域都具有相同的对后续帧的参考价值,但是,由于在画面缓慢变化的运动场景中的编码区域的画面失真更容易被人眼所捕捉,因此在画面缓慢变化的运动场景中编码区域的画面质量更加重要;而由于人眼对于快速变化的场景不敏感,所以即使降低画面剧烈变化的运动场景中的编码区域的画质,也不会影响实际的观感。
72.另外,视频帧的图像噪声也会影响编码区域的码率和体量,由于人眼对图像噪声
较高情况下画面的变化的场景不敏感,则即使降低图像噪声较高情况下运动场景中的编码区域的画质,也不会影响实际的观感;而图像噪声较低情况下画面的变化更容易被人眼所捕捉,因此在图像噪声较低情况下编码区域的画面质量更加重要。
73.基于上述结论,本技术实施例可以通过分析待编码视频的视频帧所处的运动场景,来根据运动场景动态调节视频帧调整强度值,进而修正编码区域的量化参数的大小,在视频帧处于画面剧烈变化或图像噪声较大的运动场景的情况下,减小视频帧的调整强度值,进而增大视频帧中编码区域的量化参数,使得编码后该编码区域的体量下降,满足缩小编码视频体量的需求;在视频帧处于画面缓慢变化,且图像噪声较小的运动场景的情况下,增大视频帧的调整强度值,进而减小视频帧中编码区域的量化参数,使得编码后该编码区域的码率提高,满足人眼易捕捉变化的场景下的高画质需求。
74.需要说明的是,在一种简化场景下,本技术实施例也可以仅通过对画面剧烈变化或画面缓慢变化的区分,进行视频帧的调整强度值的设置,在确定视频帧处于画面剧烈变化的运动场景的情况下,减小视频帧的调整强度值;在确定视频帧处于画面缓慢变化的运动场景的情况下,增大视频帧的调整强度值。
75.具体的,参照图1,降采样模块可以对输入的待编码视频进行分辨率降采样处理,如将待编码视频的视频帧的原始分辨率进行水平1/2和竖直1/2降采样,得到一个原始分辨率大小为1/4的降采样图像,降采样处理可以有效降低后续编码过程中的数据计算量,且对计算精度影响略微,降采样后的待编码视频可以进一步输入预编码模块进行后续编码处理。需要说明的是,。
76.预编码模块可以执行cutree算法中的lookahead模块中的相关功能,预编码模块可以对待编码视频的视频帧进行预编码,目的是得到视频帧的编码区域对后续参考帧的参考价值参数,参考价值参数是后续计算编码区域的量化参数过程中的重要参数。
77.分析模块可以基于对待编码视频的视频帧进行运动搜索,来识别视频帧中静止编码区域的占比以及视频帧的图像噪声累计值,并通过静止编码区域的占比以及视频帧的图像噪声累计值,确定视频帧所处的运动场景,最后根据视频帧所处的运动场景分配给视频帧对应的调整强度值。
78.计算模块可以结合预编码模块输出的视频帧的编码区域对后续参考帧的参考价值参数,以及根据运动场景动态设置给视频帧的调整强度值,计算视频帧每个编码区域的量化参数。
79.编码模块可以基于视频帧每个编码区域的量化参数,对整个待编码视频进行编码,最终得到编码视频,编码视频也称为视频裸流文件,视频裸流文件经过后续的封装处理后,即可得到可以观看的影音视频。
80.进一步的,在实际应用中,编码器在定义了编码方式的同时,也会定义与编码方式匹配的解码方式,因此,在观看终端获取到封装后可观看的影音视频后,可以按照与封装方式对应的解封装方式对影音视频解封装,之后按照于编码方式对应的解码方式对解封装后的影音视频进行解码,得到解码后的视频流进行观看。
81.例如,若采用s265定义的编码规则对待编码视频进行编码,得到编码视频,进而将编码视频按照mp4(mpeg-4 part 14)封装方式封装为mp4格式的影音视频并发送至观看终端后,观看终端可以先按照mp4解封装方式对mp4格式的影音视频解封装,之后再通过s265
定义的解码规则对解封装后的影音视频进行解码,从而得到可以观看的视频流进行直接播放。
82.在解码时,参照图2,其示出了本技术实施例提供的一种视频解码方法的架构图,具体可以对编码视频进行熵解码(二进制解码),从而得到编码视频每个编码区域的量化参数、变换系数和预测系数,其中,变换系数为编码区域中的变换单元的系数,编解码过程中,亮度数据和色度数据均以变换单元为基础,编码非零系数的位置信息和非零系数的幅值信息来表示其变换系数;预测系数则是编码区域中的预测单元的系数,预测系数和编码时选取的预测模式(帧内/帧间预测模式)相关,量化参数即为本技术实施例中,由编码前的编码视频的视频帧所处的运动场景确定的调整强度值,以及所述编码区域通过预编码得到的参考价值参数所计算得到的参数,后续可以基于量化参数、变换系数和预测系数来构建待播放视频。
83.进一步的,基于一个计算分支,本技术实施例可以根据编码区域的量化参数、量化系数依次进行逆量化和逆变换操作,得到编码区域中像素值的残差参数,逆量化和逆变换即为对应编码过程中的量化和变换的反向操作,残差参数即为重构残差,是反映了像素值编码前后的均方误差的参数;基于另一个计算分支,本技术实施例可以根据编码区域中的预测单元的预测模式进行预测操作,得到编码区域中像素值的预测参数,最后将编码区域的残差参数和预测参数相加,得到编码区域中像素点的重构像素值,进而由视频帧的编码区域中像素点的重构像素值,构建得到待播放视频。
84.为了更好的对本技术实施例的视频编码方法所应用的场景进行描述,现提供若干个视频编码方法具体应用的场景:
85.在一种视频编码方法应用的电商直播场景中,参照图3,其示出了本技术实施例提供的一种电商直播场景中视频编码方法的架构图,包括:直播者客户端、电商直播服务端、观看者客户端。其中,直播者客户端中可以集成用于实现本技术实施例的视频编码方法的编码程序。
86.具体的,直播者客户端可以执行s11、采集包括直播者画面的原始直播视频流,通过编码程序按照本技术实施例提供的编码方法对原始直播视频流进行编码,得到编码视频,将编码视频封装后,得到目标直播视频流。以及进一步执行s12、发送目标直播视频流至电商直播服务端,电商直播服务端可以进一步执行s13、下发目标直播视频流至观看者客户端,观看者客户端可以执行s14、依次对目标直播视频流进行解封装、解码后进行观看,提供应用本技术实施例的编码方法,使得在电商直播场景中既满足编码视频流的画面观感质量的同时又缩减了编码视频流的体量。
87.需要说明的是,电商直播服务端中也可以集成用于实现本技术实施例的视频编码方法的编码程序,直播者客户端可以将原始直播视频流发送至电商直播服务端,以使得通过编码程序对原始直播视频流进行编码得到编码视频的过程,以及对编码视频封装的过程可以在电商直播服务端完成。
88.在一种视频编码方法应用的短视频场景中,参照图4,其示出了本技术实施例提供的一种短视频场景中视频编码方法的架构图,包括:创作者客户端、短视频服务端、观看者客户端。其中,创作者客户端中可以集成用于实现本技术实施例的视频编码方法的编码程序。
89.具体的,创作者客户端可以执行s21、采集包括素材的原始短视频流,通过编码程序按照本技术实施例提供的编码方法对原始短视频流进行编码,得到编码视频,将编码视频封装后,得到目标短视频。以及进一步执行s22、发送目标短视频至短视频服务端,短视频服务端可以进一步执行s23、下发目标短视频至观看者客户端,观看者客户端可以执行s24、依次对目标短视频进行解封装、解码后进行观看,提供应用本技术实施例的编码方法,使得在短视频场景中既满足编码视频流的画面观感质量的同时又缩减了编码视频流的体量。
90.需要说明的是,短视频服务端中也可以集成用于实现本技术实施例的视频编码方法的编码程序,创作者客户端可以将原始短视频流发送至短视频服务端,以使得通过编码程序对原始短视频流进行编码得到编码视频的过程,以及对编码视频封装的过程可以在短视频服务端完成。
91.在一种视频编码方法应用的视频会议场景中,参照图5,其示出了本技术实施例提供的一种视频会议场景中视频编码方法的架构图,包括:主持人客户端、会议服务端、观看者客户端。其中,主持人客户端中可以集成用于实现本技术实施例的视频编码方法的编码程序。
92.具体的,主持人客户端可以执行s31、采集包括主持人画面的原始会议视频流,通过编码程序对原始会议视频流进行编码,得到编码视频,将编码视频封装后,得到目标会议视频流。以及进一步执行s32、发送目标会议视频流至会议服务端,会议服务端可以进一步执行s33、下发目标会议视频流至观看者客户端,观看者客户端可以执行s34、依次对目标会议视频流进行解封装、解码后进行观看,提供应用本技术实施例的编码方法,使得在视频会议场景中既满足编码视频流的画面观感质量的同时又缩减了编码视频流的体量。
93.需要说明的是,会议服务端中也可以集成用于实现本技术实施例的视频编码方法的编码程序,创作者客户端可以将原始会议视频流发送至会议服务端,以使得通过编码程序对原始会议视频流进行编码得到编码视频的过程,以及对编码视频封装的过程可以在会议服务端完成。
94.在一种视频编码方法应用的网络视频点播场景中,参照图6,其示出了本技术实施例提供的一种网络视频点播场景中视频编码方法的架构图,包括:网络视频点播服务端、观看者客户端。其中,网络视频点播服务端中可以集成用于实现本技术实施例的视频编码方法的编码程序。
95.具体的,网络视频点播服务端可以执行s41、响应于观看者客户端的点播请求,获取点播视频的原始视频流,通过编码程序对原始视频流进行编码,得到编码视频,将编码视频封装后,得到点播视频。以及进一步执行s42、下发点播视频至观看者客户端,会观看者客户端可以执行s43、对点播视频依次进行解封装、解码后进行观看,提供应用本技术实施例的编码方法,使得在网络视频点播场景中既满足编码视频流的画面观感质量的同时又缩减了编码视频流的体量。
96.本技术实施例中,可以通过分析待编码视频的视频帧所处的运动场景,来根据运动场景动态调节视频帧调整强度值,进而修正编码区域的量化参数的大小,后续编码时可以按照编码区域的量化参数,调整编码区域的码率和体量,使其在契合对应运动场景下的观感需求的基础上,优化了码率和体量,在既满足编码视频的画面观感质量的同时又缩减了编码视频的体量,提高了编码质量。
97.参照图7,其示出了本技术实施例提供的一种视频编码方法的步骤流程图,包括:
98.步骤101,获取待编码视频,所述待编码视频的视频帧中划分有多个编码区域。
99.在本技术实施例中,待编码视频即为编码前的原始视频文件,是由原始视频帧图像组成的视频序列,编码区域也称为编码单元,是视频帧中提前划分好的固定尺寸大小的图像块,也是编码过程中的一个处理对象。
100.例如,参照图8,其示出了本技术实施例提供的一种视频帧的示意图,假设一个24
×
24大小的视频帧,若按照一个编码区域为8
×
8的大小,则该视频帧可以划分为9个编码区域。
101.步骤102,根据所述视频帧所处的运动场景,调整所述视频帧的调整强度值,所述调整强度值用于控制所述视频帧中编码区域的量化参数的大小。
102.在本技术实施例中,根据人眼感官对视频帧中画面的变化速度快慢以及图像噪声的不同影响的特性,具体可以基于对待编码视频的视频帧进行运动搜索,来识别视频帧中静止编码区域的占比以及视频帧的图像噪声累计值,并通过静止编码区域的占比以及视频帧的图像噪声累计值,确定视频帧所处的运动场景,最后根据视频帧所处的运动场景分配给视频帧对应的调整强度值。
103.需要说明的是,也可以提前标注视频帧所处的运动场景,以供根据标注的运动场景来调整视频帧的调整强度值的大小。
104.步骤103、根据所述视频帧的调整强度值,以及对所述视频帧进行预编码所得到的编码区域的参考价值参数,获取所述编码区域的量化参数。
105.在本技术实施例中,可以通过执行cutree算法中的lookahead模块中的相关功能,来对待编码视频的视频帧进行预编码,目的是得到视频帧的编码区域对后续参考帧的参考价值参数,参考价值参数是后续计算编码区域的量化参数过程中的重要参数。
106.进一步的,不同编码规则具有不同的slice qp,slice qp即为基础量化参数,在选择了一个编码规则(编码器)后,也就选择了该编码规则对应的基础量化参数,另外,基于视频帧的调整强度值和视频帧中各个编码区域的参考价值参数,可以计算得到量化参数偏移量,通过将量化参数偏移量修正基础量化参数,即可得到编码区域的最终的量化参数。
107.步骤104、根据所述编码区域的量化参数,对所述待编码视频进行编码,得到编码视频。
108.在该步骤中,编码过程中,量化参数用于控制编码过程中对编码区域的画质损失大小,量化参数越大,编码区域的画质损失越大,编码区域的码率越小,编码区域的体量越小;量化参数越小,编码区域的画质损失越小,编码区域的码率越大,编码区域的体量越大。
109.其中,编码视频也称为视频裸流文件,视频裸流文件经过后续的封装处理后,即可得到可以观看的影音视频。
110.进一步的,针对使用本技术实施例提供的视频编码方法的编码过程,对比不使用本方法的编码过程,在编码配置完全一致的情况下,通过46个1080p高清测试文件,3个预置索引参数各自对应的编码档次,2种评价指标,可以得到使用本技术实施例提供的视频编码方法的编码过程如下表1所示的增益效果:
111.预置索引参数psnr-bdratessim-bdrate2(编码档次veryfast)-3.59%-1.74%
5(编码档次medium)-3.86%-1.55%7(编码档次veryslow)-2.36%-2.00%
112.表1
113.其中,psnr-bdrate(峰值信噪比-两种方案对应的两条率失真曲线的差值的均值)为在相同的psnr质量下,节省的码率;ssim-bdrate(结构相似性-两种方案对应的两条率失真曲线的差值的均值)为在相同的ssim质量下,节省的码率,可以看出,在固定任一个指标下,使用本技术实施例提供的视频编码方法的编码过程都达到了明显的码率节省效果,从而提高了编码增益效果。
114.综上所述,本技术实施例中,可以通过分析待编码视频的视频帧所处的运动场景,来根据运动场景动态调节视频帧调整强度值,进而修正编码区域的量化参数的大小,后续编码时可以按照编码区域的量化参数,调整编码区域的码率和体量,使其在契合对应运动场景下的观感需求的基础上,优化了码率和体量,在既满足编码视频的画面观感质量的同时又缩减了编码视频的体量,提高了编码质量。
115.参照图9,示出了本技术的另一种视频编码方法实施例的步骤流程图。
116.包括:
117.步骤201,获取待编码视频,所述待编码视频的视频帧中划分有多个编码区域。
118.该步骤具体可以参照上述步骤101,此处不再赘述。
119.步骤202,对所述待编码视频的视频帧进行降采样处理,降低所述视频帧的分辨率。
120.在本技术实施例中,获取了待编码视频之后,可以先对待编码视频进行降采样处理,以降低待编码视频的视频帧的分辨率,从而降低后续计算过程的计算量,且对计算精度影响略微。
121.例如,可以将待编码视频的视频帧的原始分辨率进行水平1/2和竖直1/2降采样,得到一个原始分辨率大小为1/4的降采样图像。
122.需要说明的是,降采样为可选处理过程,一些计算资源充足的场景下,也可以不对待编码视频进行降采样处理,而直接针对待编码视频进行后续编码处理。
123.步骤203,获取所述编码区域的帧内预测代价参数和帧间预测代价参数。
124.在本技术实施例中,选取的编码规则可以采用帧内预测模式或帧间预测模式进行帧与帧之间的参考和预测,其中,帧内预测模式是仅使用本帧重建像素进行预测的模式;帧间预测模式是使用之前已编码帧的像素进行当前帧预测的模式,选取了这两种模式后,可以获取到编码区域的帧内预测代价参数和帧间预测代价参数,编码区域的帧内预测代价参数和帧间预测代价参数是后续计算编码区域的量化参数的重要参数。每个编码区域的帧内预测代价代表了当前帧总信息量,编码区域的帧内预测代价与帧间预测代价的差值,则代表了当前帧从它的参考帧中传递到的信息量。
125.步骤204,对所述视频帧进行预编码,根据所述帧内预测代价参数和所述帧间预测代价参数,获取所述视频帧的编码区域的参考价值参数。
126.在该步骤中,参照图10,示出了本技术的一种预编码过程的示意图,其中,对当前帧进行预编码时,可以选取当前帧的后续n帧构建一个预编码窗口,可以看出,每一帧的一个编码区域11都参考了相邻前一帧的一个编码区域11,需要说明的是,图10示出的编码区
域11的参考链路仅为一种实现链路,一帧的一个编码区域11也可以参考前第若干帧的一个编码区域11,或一帧的一个编码区域11也可以参考后续帧的一个编码区域11,本技术实施例对参考链路不作具体限定。
127.具体的,计算当前帧的编码区域11的参考价值参数,需要依次执行:
128.第一步、从预编码窗口中的帧n开始,计算帧n中的编码区域11从帧n-1中获取的信息量info1:
[0129][0130]
其中,intracost为帧n中的编码区域11的帧内预测代价参数;intercost为帧n中的编码区域11的帧间预测代价参数;1的帧间预测代价参数;
[0131]
第二步、若帧n-1在帧n-2中的参考区域覆盖了帧n-2中的多个编码区域,那么则需要把info1的值按照覆盖各个cu的编码区域进行按比例分配,而遍历了所有帧n的编码区域后,就得到了帧n-1中每个编码区域对帧n的参考价值参数,记为propagatecost。
[0132]
第三步、帧n-1从帧n-2获取的信息量不仅会影响帧n-1,而且会影响后面的帧n,因此帧n-1的编码区域从帧n-2中获取的信息量info2为:
[0133]
info2=(0.5*intracost propagatecost)*propagate_faction;
[0134]
其中,intracost为帧n-1中的编码区域11的帧内预测代价参数;intercost为帧n-1中的编码区域11的帧间预测代价参数;propagate cost为帧n-1中每个编码区域对帧n的参考价值参数;
[0135]
第四步、与第二步类似,通过info2按照面积均分,以及遍历帧n-1的每个编码区域,最终得到帧n-2的每个编码区域对帧n-1的参考价值参数。
[0136]
第五步、按照上述第一步至第四步的逻辑一直计算到当前帧,即可得到当前帧的每个编码区域对帧1的参考价值参数。
[0137]
通过对待编码视频的所有或部分视频帧执行上述逻辑计算,即可得到视频帧的编码区域的参考价值参数。
[0138]
为了更清楚解释步骤204的具体执行过程,现提供一个具体示例进行说明:
[0139]
参照图11,示出了本技术的一种预编码过程的具体示例示意图,假设针对当前帧,通过预编码窗口中的p1帧和p2帧对其进行预编码,各个视频帧的面积为16
×
16,每个编码区域的大小为8
×
8,且p2帧的编码区域1在p1帧中的参考区域12覆盖了p1帧的编码区域1-4,与个编码区域的重叠面积分别为s1、s2、s3、s4。
[0140]
则p2帧的编码区域1从p1帧中获得的信息量为info_p2(1)=intracost_p2(1)-intercost_p2(1);p1帧中的四个编码区域向p2帧的编码区域1提供的信息量分别为:
[0141]
pro_p1(1)=(s1/64)
×
info_p2(1);
[0142]
pro_p1(2)=(s2/64)
×
info_p2(1);
[0143]
pro_p1(3)=(s3/64)
×
info_p2(1);
[0144]
pro_p1(4)=(s4/64)
×
info_p2(1);
[0145]
进一步的,假设p2帧的编码区域2参考了p1帧的编码区域2,p2帧的编码区域3参考
了p1帧的编码区域3,p2帧的编码区域4参考了p1帧的编码区域4,则p1帧的编码区域2向p2帧的编码区域2提供的信息量为:
[0146]
pro_p1(2)’=info_p2(2)=intracost_p2(2)-intercost_p2(2);
[0147]
p1帧的编码区域3向p2帧的编码区域3提供的信息量为:
[0148]
pro_p1(3)’=info_p2(3)=intracost_p2(3)-intercost_p2(3);
[0149]
p1帧的编码区域4向p2帧的编码区域4提供的信息量为:
[0150]
pro_p1(4)’=info_p2(4)=intracost_p2(4)-intercost_p2(4);
[0151]
则p1帧中的四个编码区域各自的参考价值参数propagatecost分别为:
[0152]
propagatecost_p1(1)=pro_p1
ꢀꢀ
(1);
[0153]
propagatecost_p1(2)=pro_p1(2) pro_p1
ꢀꢀ
(2)’;
[0154]
propagatecost_p1(3)=pro_p1(3) pro_p1
ꢀꢀ
(3)’;
[0155]
propagatecost_p1(4)=pro_p1(4) pro_p1
ꢀꢀ
(4)’;
[0156]
最后,假设p1帧中的编码区域1-4分别参考了当前帧的编码区域1-4,则当前帧的编码区域1对p1帧的编码区域1的参考价值参数为:
[0157]
propagatecost_curr(1)=(0.5
×
intracost_p1(1) propagate cost_p1(1))
×
((intracost_p1(1)-intercost_p1(1))/intracost_p1
ꢀꢀ
(1));
[0158]
当前帧的编码区域2对p1帧的编码区域2的参考价值参数为:
[0159]
propagate cost_curr(2)=(0.5
×
intracost_p1(2) propagate cost_p1(2))
×
((intracost_p1(2)-intercost_p1(2))/intracost_p1
ꢀꢀ
(2));
[0160]
当前帧的编码区域3对p1帧的编码区域3的参考价值参数为:
[0161]
propagate cost_curr(3)=(0.5
×
intracost_p1(3) propagate cost_p1(3))
×
((intracost_p1(3)-intercost_p1(3))/intracost_p1
ꢀꢀ
(3));
[0162]
当前帧的编码区域4对p1帧的编码区域4的参考价值参数为:
[0163]
propagate cost_curr(4)=(0.5
×
intracost_p1(4) propagate cost_p1(4))
×
((intracost_p1(4)-intercost_p1(4))/intracost_p1
ꢀꢀ
(4));
[0164]
步骤205,根据所述视频帧所处的运动场景,调整所述视频帧的调整强度值,所述调整强度值用于控制所述视频帧中编码区域的量化参数的大小。
[0165]
该步骤具体可以参照上述步骤102,此处不再赘述。
[0166]
可选的,所述调整强度值与所述量化参数呈反比例关系。
[0167]
具体的,在编码过程中,调整强度值与量化参数呈反比例关系,量化参数用于控制编码过程中对编码区域的画质损失大小,调整强度值越小,量化参数越大,编码区域的画质损失越大,编码区域的码率越小,编码区域的体量越小;调整强度值越大,量化参数越小,编码区域的画质损失越小,编码区域的码率越大,编码区域的体量越大。
[0168]
可选的,在一种实现方式中,所述步骤205,包括:
[0169]
子步骤2051,在确定所述视频帧处于画面剧烈变化的运动场景的情况下,减小所述调整强度值。
[0170]
子步骤2052,在确定所述视频帧处于画面缓慢变化的运动场景的情况下,增大所述调整强度值。
[0171]
在本技术实施例中,通过对待编码视频的视频帧画面所处的运动场景进行分析可
以得到一个结论:画面剧烈变化的运动场景中的一个编码区域,以及画面缓慢变化的运动场景中的一个编码区域,即使这两个编码区域都具有相同的对后续帧的参考价值,但是,由于在画面缓慢变化的运动场景中的编码区域的画面失真更容易被人眼所捕捉,因此在画面缓慢变化的运动场景中编码区域的画面质量更加重要;而由于人眼对于快速变化的场景不敏感,所以即使降低画面剧烈变化的运动场景中的编码区域的画质,也不会影响实际的观感。
[0172]
基于上述结论,本技术实施例可以在一种实现方案中,通过对画面剧烈变化或画面缓慢变化的区分,进行视频帧的调整强度值的设置,在确定视频帧处于画面剧烈变化的运动场景的情况下,减小视频帧的调整强度值,进而增大视频帧中编码区域的量化参数,使得编码后该编码区域的体量下降,满足缩小编码视频体量的需求;在确定视频帧处于画面缓慢变化的运动场景的情况下,增大视频帧的调整强度值,进而减小视频帧中编码区域的量化参数,使得编码后该编码区域的码率提高,满足人眼易捕捉变化的场景下的高画质需求。
[0173]
可选的,在另一种实现方式中,所述步骤205,包括:
[0174]
子步骤2053,在确定所述视频帧处于画面剧烈变化的运动场景,或处于图像噪声较大的运动场景的情况下,减小所述调整强度值。
[0175]
子步骤2054,在确定所述视频帧处于画面缓慢变化的运动场景,且处于图像噪声较小的运动场景的情况下,增大所述调整强度值。
[0176]
在本技术实施例的另一种实现方式中,在对待编码视频的视频帧画面变化快慢进行分析的基础上,还发现视频帧的图像噪声也会影响编码区域的码率和体量,由于人眼对图像噪声较高情况下画面的变化的场景不敏感,则即使降低图像噪声较高情况下运动场景中的编码区域的画质,也不会影响实际的观感;而图像噪声较低情况下画面的变化更容易被人眼所捕捉,因此在图像噪声较低情况下编码区域的画面质量更加重要。
[0177]
因此,本技术实施例可以通过分析待编码视频的视频帧所处的运动场景,来根据运动场景动态调节视频帧调整强度值,进而修正编码区域的量化参数的大小,在视频帧处于画面剧烈变化或图像噪声较大的运动场景的情况下,减小视频帧的调整强度值,进而增大视频帧中编码区域的量化参数,使得编码后该编码区域的体量下降,满足缩小编码视频体量的需求;在视频帧处于画面缓慢变化,且图像噪声较小的运动场景的情况下,增大视频帧的调整强度值,进而减小视频帧中编码区域的量化参数,使得编码后该编码区域的码率提高,满足人眼易捕捉变化的场景下的高画质需求。
[0178]
可选的,增大所述调整强度值的步骤具体可以通过将当前的调整强度值与预设调整阈值进行加和,得到增大后的调整强度值的方式进行实现。
[0179]
可选的,减小所述调整强度值的步骤具体可以通过将当前的调整强度值与所述预设调整阈值进行相减,得到减小后的调整强度值的方式进行实现。
[0180]
在本技术实施例中,可以设定一个预设调整阈值,以在对强度调整值进行调整时,通过将当前的调整强度值与预设调整阈值进行加和,或将当前的调整强度值与所述预设调整阈值进行相减来实现具体调整。
[0181]
例如,假设调整前的调整强度值为0.5,假设预设调整阈值为0.1,则在增大调整强度值时,增大后的调整强度值=0.5 0.1=0.6;在减小调整强度值时,减小后的调整强度值
=0.5-0.1=0.4。
[0182]
可选的,所述方法还可以包括:
[0183]
步骤a1,确定所述视频帧中的静止编码区域。
[0184]
在本技术实施例中,当前视频帧的编码区域可以通过参考另一参考视频帧的编码区域,来从参考视频帧中获取有用信息,当前视频帧中的静止编码区域是指运动矢量趋近于0的编码区域,即静止编码区域在当前视频帧中的位置与参考编码区域在参考视频帧中的位置相近。具体的,可以通过运动搜索技术来确定视频帧中的静止编码区域。
[0185]
步骤a2,获取所述视频帧中的静止编码区域在所述视频帧的所有编码区域中的数量占比。
[0186]
在确定得到视频帧中的静止编码区域的数量后,可以进一步计算得到静止编码区域在视频帧的所有编码区域中的数量占比,该数量占比有助于后续进行当前视频帧所处运动场景的确定。
[0187]
步骤a3,在所述数量占比大于第一阈值的情况下,确定所述视频帧处于画面缓慢变化的运动场景。
[0188]
步骤a4,在所述数量占比小于第二阈值的情况下,确定所述视频帧处于画面剧烈变化的运动场景;所述第一阈值大于或等于所述第二阈值。
[0189]
在本技术实施例中,可以通过预先设定第一阈值或第二阈值,来进行数量占比与阈值的比对,从而根据比对结果确定视频帧所处的运动场景。
[0190]
一种优选实施方式中,第一阈值可以设置为62%,第二阈值可以设定为12%。另外,第一阈值也可以与第二阈值相等,如都为50%。
[0191]
可选的,所述方法还可以包括:
[0192]
步骤a5,根据当前使用的编码规则所采用的预置索引参数,确定所述第一阈值和所述第二阈值,所述预置索引参数分别与所述第一阈值和所述第二阈值成正比例关系。
[0193]
在本技术实施例中,编码器中可以使用预置索引参数来配置编码档次,如,可以设置10个编码档次,预置索引参数由0到9,编码速度随着预置索引参数变大而变慢,编码效率随着预置索引参数增大而升高。
[0194]
因此,基于不同预置索引参数与编码效率和编码速度的关系,可以基于当前使用的编码规则所采用的预置索引参数,来确定第一阈值和第二阈值,且预置索引参数分别与第一阈值和第二阈值成正比例关系。即编码速度越慢,编码效率越高的情况下,对视频帧处于画面缓慢变化的运动场景的判定条件越严格,减小了判定为处于画面缓慢变化的运动场景的视频帧的数量;且编码速度越慢,编码效率越高的情况下,对视频帧处于画面剧烈变化的运动场景的判定条件越宽松,增大了判定为处于画面剧烈变化的运动场景的视频帧的数量,从而可以有效减少编码视频的体量,反之同理。
[0195]
可选的,所述方法还可以包括:
[0196]
步骤b1,确定所述视频帧中的静止编码区域。
[0197]
该步骤可以参照步骤a1,此处不再赘述。
[0198]
步骤b2,获取静止编码区域的像素代价参数;所述像素代价参数用于反映:所述视频帧的参考视频帧中与所述静止编码区域对应的编码区域和所述静止编码区域之间的相似度;所述像素代价参数与相似度越负相关。
[0199]
在本技术实施例中,对编码区域进行运动搜索的过程中,除了可以得到编码区域的运动矢量,还可以得到当前编码区域与参考编码区域之间的像素级差异,该像素级差异即为当前编码区域的像素代价参数,像素代价参数与当前编码区域和参考编码区域的相似度越负相关。该步骤可以获取每个静止编码区域的像素代价参数。
[0200]
步骤b3,根据所述静止编码区域的像素代价参数,获取所述视频帧中所有静止编码区域的平均像素代价参数。
[0201]
在该步骤中,得到每个静止编码区域的像素代价参数之后,可以根据静止编码区域的数量,以及所有静止编码区域的像素代价参数之和,计算视频帧中静止编码区域的平均像素代价参数,由于一般认为静止编码区域的像素代价来自于图像噪声,因此平均像素代价参数可以看做当前视频帧的图像噪声的量级表现。
[0202]
步骤b4,在所述平均像素代价参数小于第三阈值的情况下,确定所述视频帧处于图像噪声较小的运动场景。
[0203]
步骤b5,在所述平均像素代价参数大于第四阈值的情况下,确定所述视频帧处于图像噪声较大的运动场景,所述第三阈值小于或等于所述第四阈值。
[0204]
在本技术实施例中,可以通过预先设定第三阈值或第四阈值,来进行平均像素代价参数与阈值的比对,从而根据比对结果确定视频帧所处的运动场景。
[0205]
一种优选实施方式中,第三阈值可以设置为30,第四阈值可以设定为50。另外,第三阈值也可以与第四阈值相等。
[0206]
可选的,所述方法还可以包括:
[0207]
步骤b6,根据当前使用的编码规则所采用的预置索引参数,确定所述第三阈值和所述第四阈值,所述预置索引参数分别与所述第三阈值和所述第四阈值成反比例关系。
[0208]
在本技术实施例中,编码器中可以使用预置索引参数来配置编码档次,如,可以设置10个编码档次,预置索引参数由0到9,编码速度随着预置索引参数变大而变慢,编码效率随着预置索引参数增大而升高。
[0209]
因此,基于不同预置索引参数与编码效率和编码速度的关系,可以基于当前使用的编码规则所采用的预置索引参数,来确定第三阈值和第四阈值,且预置索引参数分别与第三阈值和第四阈值成反比例关系。即编码速度越慢,编码效率越高的情况下,对视频帧处于图像噪声较小的运动场景的判定条件越严格,减小了判定为处于图像噪声较小的运动场景的视频帧的数量;且编码速度越慢,编码效率越高的情况下,对视频帧处于图像噪声较大的运动场景的判定条件越宽松,增大了判定为处于图像噪声较大的运动场景的视频帧的数量,从而可以有效减少编码视频的体量,反之同理。
[0210]
在本技术实施例中,需要说明的是,若第一阈值和第二阈值相同,且第三阈值和第四阈值相同,则对视频帧所处运动场景的判断以及对调整强度值的调整包括的全部情况为:
[0211]
在确定所述视频帧处于画面剧烈变化的运动场景,或处于图像噪声较大的运动场景的情况下,减小所述调整强度值。
[0212]
在确定所述视频帧处于画面缓慢变化的运动场景,且处于图像噪声较小的运动场景的情况下,增大所述调整强度值。
[0213]
若第一阈值和第二阈值不相同,和/或第三阈值和第四阈值不相同,则对视频帧所
处运动场景的判断以及对调整强度值的调整包括的全部情况除了上述情况之外,还可以有其他情况,如数量占比小于第一阈值但大于第二阈值的情况、平均像素代价参数大于第三阈值但小于第四阈值的情况,针对这种情况,可以判定当前进入中立状态,即维持当前的调整强度值不变,既不增大调整强度值,也不减小调整强度值。
[0214]
可选的,确定所述视频帧中的静止编码区域的过程包括:
[0215]
步骤c1,从所述待编码视频中,获取所述视频帧的参考视频帧。
[0216]
在本技术实施例中,待编码视频的当前视频帧的可以从另一参考视频帧中获得有用信息,因此该步骤可以从所述待编码视频中,获取视频帧的参考视频帧。
[0217]
步骤c2,在所述参考视频帧中,通过运动搜索确定与所述视频帧的第一编码区域匹配的第二编码区域。
[0218]
在本技术实施例中,运动搜索是在参考帧上找到与当前编码区域差异性最小的匹配编码区域的过程,因此,通过运动搜索确定的与视频帧的第一编码区域匹配的第二编码区域,是与第一编码区域在像素上最接近的编码区域。
[0219]
步骤c3,将所述第二编码区域的坐标与所述第一编码区域的坐标的差值,确定为所述第一编码区域相对于所述第二编码区域的运动矢量。
[0220]
在本技术实施例中,通过运动搜索,可以得到第一编码区域相对于第二编码区域的运动矢量mv,运动矢量mv具体为(mv.x,mv.y),mv.x为第二编码区域的横坐标与第一编码区域的横坐标的差值,mv.y为第二编码区域的纵坐标与第一编码区域的纵坐标的差值。
[0221]
步骤c4,将所述运动矢量小于第五阈值的第一编码区域确定为所述静止编码区域。
[0222]
在本技术实施例中,由于运动矢量(mv.x,mv.y)为一个坐标值,则第五阈值可以对应设置为一个阈值坐标(a,b),使得运动矢量小于第五阈值具体可以为mv.x小于a,且mv.y小于b,其含义为运动矢量趋近于0,若第一编码区域满足运动矢量小于第五阈值,则第一编码区域可以是一个静止编码区域。
[0223]
为了准确描述遍历各个编码区域以确定其中的静止编码区域,以及准确描述对静止编码区域的数量统计和像素代价参数的统计,现提供一个示例对整个实现过程进行说明:
[0224]
第一步、创建三个参数cuindex,stationcunum,stationcucost,并对这三个参数初始化,其中,cuindex为当前编码区域的索引号,初始为0,初始为0是表示当前帧编码顺序的第一个编码区域;stationcunum表示静止编码区域的数目,初始为0;stationcucost表示静止编码区域的像素代价参数之和,初始为0。
[0225]
第二步、对当前编码区域进行运动搜索,得到当前编码区域的运动矢量和像素代价参数。
[0226]
第三步、在当前编码区域的运动矢量小于第五阈值时,确定当前编码区域为一个静止编码区域,并将stationcunum加1,stationcucost加上当前编码区域的像素代价参数。在当前编码区域的运动矢量大于或等于第五阈值时,确定当前编码区域不为静止编码区域,并将cuindex加1,进入对下一个编码区域的分析。
[0227]
第四步、当所有编码区域遍历完成后,根据stationcunum得到静止编码区域的数量,并根据stationcucost的数值和静止编码区域的数量,确定视频帧的平均像素代价参
数。
[0228]
可选的,在另一种实现方式中,所述步骤205,包括:
[0229]
子步骤2055,获取基础调整参数。
[0230]
子步骤2056,根据所述视频帧所处的运动场景,通过调整所述基础调整参数,从而调整所述调整强度值,所述基础调整参数与所述调整强度值成反比例关系。
[0231]
在本技术实施例中,调整强度值cutreestrength=5.0*(1-qcompress),其中,基础调整参数为qcompress,qcompress是一个压缩比参数,用于控制压缩量,可以看到基础调整参数qcompress与调整强度值cutreestrength为反比例关系。
[0232]
基于上述特性,本技术实施例可以根据视频帧所处的运动场景,通过调整基础调整参数,从而调整所述调整强度值;在确定所述视频帧处于画面剧烈变化的运动场景,或处于图像噪声较大的运动场景的情况下,通过增大基础调整参数qcompress,进而达到减小调整强度值cutreestrength的目的;在确定所述视频帧处于画面剧烈变化的运动场景,或处于图像噪声较大的运动场景的情况下,通过减小基础调整参数qcompress,进而达到增大调整强度值cutreestrength的目的。例如,在通过增大qcompress来减小cutreestrength的过程中,如qcompress原值设置为0.6,可将其增大至0.7。
[0233]
步骤206,获取与当前编码规则匹配的基础量化参数。
[0234]
在本技术实施例中,不同编码规则具有不同的slice qp,slice qp即为基础量化参数,在选择了一个编码规则(编码器)后,也就选择了该编码规则对应的基础量化参数。
[0235]
在实际应用中,整个编码规则的码流结构可以分为两层:网络抽象层(nal)和视频编码层(vcl)。在nal层,编码规则的码流可以表示为一系列的nal单元,不同的nal单元中包含不同类型的语法元素。另外,实际保存原始视频的图像数据的部分可以保存在其他的vcl)层的nal单元中。这部分数据在码流中称作是条带(slice)。一个slice包含一帧图像的部分或全部数据,换言之,一帧视频图像可以编码为一个或若干个slice。一个slice最少包含一个宏块,最多包含整帧图像的数据。在不同的编码实现中,同一帧图像中所构成的slice数目不一定相同。
[0236]
在编码规则中设计slice的目的主要在于防止误码的扩散。因为不同的slice之间,其解码操作是独立的。某一个slice的解码过程所参考的数据(例如预测编码)不能越过slice的边界。本技术实施例中,一个编码规则可以对应一个基础量化参数slice qp。
[0237]
步骤207,根据所述帧内预测代价参数、所述帧间预测代价参数、所述调整强度值和所述参考价值参数,获取所述编码区域的量化参数偏移量。
[0238]
在本技术实施例中,量化参数偏移量deltaqp的计算如下:
[0239][0240]
由上可知,量化参数偏移量deltaqp可以基于帧内预测代价参数intracost、帧间预测代价参数intercost、调整强度值cutreestrength和参考价值参数propagatecost计算得到。其中,量化参数偏移量deltaqp是一个负值。
[0241]
步骤208,通过所述量化参数偏移量对所述基础量化参数进行修正,得到所述编码区域的量化参数。
[0242]
可选的,步骤208具体还可以通过将所述基础量化参数与所述量化参数偏移量的
绝对值之间的差值,作为所述编码区域的量化参数的方式进行实现。
[0243]
在本技术实施例中,编码区域的量化参数qp=基础量化参数slice qp |量化参数偏移量deltaqp|;即将基础量化参数slice qp与量化参数偏移量deltaqp的绝对值之间的差值,作为编码区域的量化参数qp。
[0244]
步骤209,根据所述编码区域的量化参数,对所述待编码视频进行编码,得到编码视频。
[0245]
该步骤具体可以参照上述步骤104,此处不再赘述。
[0246]
可选的,所述方法还可以包括:
[0247]
步骤210,获取索引参数和调整强度值的映射关系,以及所述视频帧的查询参数。
[0248]
步骤211,根据所述映射关系,将与所述查询参数匹配的调整强度值确定为所述视频帧的调整强度值。
[0249]
其中,所述索引参数和所述查询参数包括:所述视频帧中的静止编码区域在所述视频帧的所有编码区域中的数量占比、所述视频帧中的静止编码区域的平均像素代价参数、针对所述编码视频设置的目标码率、当前使用的编码规则所采用的预置索引参数中的至少一种。
[0250]
在本技术实施例中,针对调整强度值的调整过程,还可以提供一种更精细的连续调整方案,具体为事先拟合索引参数和调整强度值的映射关系,并在调整执行前,获取当前视频帧的查询参数,提供查询参数在映射关系中与索引参数进行匹配,将与查询参数匹配的索引参数对于的调整强度值,确定为当前视频帧的调整强度值。
[0251]
其中,索引参数和查询参数所各自选取的参数类型可以一致,即索引参数和查询参数包括:视频帧中的静止编码区域在所述视频帧的所有编码区域中的数量占比、视频帧中的静止编码区域的平均像素代价参数、针对编码视频设置的目标码率、当前使用的编码规则所采用的预置索引参数中的至少一种。
[0252]
综上所述,本技术实施例中,可以通过分析待编码视频的视频帧所处的运动场景,来根据运动场景动态调节视频帧调整强度值,进而修正编码区域的量化参数的大小,后续编码时可以按照编码区域的量化参数,调整编码区域的码率和体量,使其在契合对应运动场景下的观感需求的基础上,优化了码率和体量,在既满足编码视频的画面观感质量的同时又缩减了编码视频的体量,提高了编码质量。
[0253]
参照图12,其示出了本技术实施例提供的一种视频解码方法的步骤流程图,包括:
[0254]
步骤301,获取编码视频,所述编码视频的视频帧中划分有多个编码区域。
[0255]
步骤302,对所述编码视频进行解码,得到所述编码区域的量化参数,所述量化参数为:由编码前的编码视频的视频帧所处的运动场景确定的调整强度值,以及所述编码区域通过预编码得到的参考价值参数所计算得到的参数。
[0256]
步骤303,根据所述编码区域的量化参数,构建待播放视频。
[0257]
其中,步骤301-303的具体实现过程可以参照上述图2的相关描述,此处不再赘述。本技术实施例中,由于编码过程中,按照编码区域优化后的量化参数,调整了编码区域的码率和体量,使得解码后的视频流中,针对处于画面剧烈变化或图像噪声较大的运动场景的视频帧,其具有较小的体量,且其画质损失几乎不会被人眼捕捉到,从而节省了待播放视频的体量;针对处于画面缓慢变化或图像噪声较小的运动场景的视频帧,其具有高的码率,从
而通过较高的画面质量,提升了人眼对这种缓慢且噪声低的运动场景下的视频帧中画质细节的捕捉,提高了观感质量。
[0258]
综上所述,本技术实施例中,可以通过分析待编码视频的视频帧所处的运动场景,来根据运动场景动态调节视频帧调整强度值,进而修正编码区域的量化参数的大小,后续编码时可以按照编码区域的量化参数,调整编码区域的码率和体量,使其在契合对应运动场景下的观感需求的基础上,优化了码率和体量,在既满足编码视频的画面观感质量的同时又缩减了编码视频的体量,提高了编码质量。
[0259]
参照图13,其示出了本技术实施例提供的一种视频编码装置的框图,包括:
[0260]
第一获取模块401,用于获取待编码视频,所述待编码视频的视频帧中划分有多个编码区域;
[0261]
调整模块402,用于根据所述视频帧所处的运动场景,调整所述视频帧的调整强度值,所述调整强度值用于控制所述视频帧中编码区域的量化参数的大小;
[0262]
计算模块403,用于根据所述视频帧的调整强度值,以及对所述视频帧进行预编码所得到的编码区域的参考价值参数,获取所述编码区域的量化参数;
[0263]
编码模块404,用于根据所述编码区域的量化参数,对所述待编码视频进行编码,得到编码视频。
[0264]
可选的,所述调整模块402,包括:
[0265]
第一调整子模块,用于在确定所述视频帧处于画面剧烈变化的运动场景的情况下,减小所述调整强度值;
[0266]
第二调整子模块,用于在确定所述视频帧处于画面缓慢变化的运动场景的情况下,增大所述调整强度值。
[0267]
可选的,所述调整模块402,包括:
[0268]
第三调整子模块,用于在确定所述视频帧处于画面剧烈变化的运动场景,或处于图像噪声较大的运动场景的情况下,减小所述调整强度值;
[0269]
第四调整子模块,用于在确定所述视频帧处于画面缓慢变化的运动场景,且处于图像噪声较小的运动场景的情况下,增大所述调整强度值。
[0270]
可选的,所述调整强度值与所述量化参数呈反比例关系。
[0271]
可选的,所述增大所述调整强度值,包括:
[0272]
将当前的调整强度值与预设调整阈值进行加和,得到增大后的调整强度值;
[0273]
所述减小所述调整强度值,包括:
[0274]
将当前的调整强度值与所述预设调整阈值进行相减,得到减小后的调整强度值。
[0275]
可选的,所述装置还包括:
[0276]
第一确定模块,用于确定所述视频帧中的静止编码区域;
[0277]
占比模块,用于获取所述视频帧中的静止编码区域在所述视频帧的所有编码区域中的数量占比;
[0278]
第一判断模块,用于在所述数量占比大于第一阈值的情况下,确定所述视频帧处于画面缓慢变化的运动场景;
[0279]
第二判断模块,用于在所述数量占比小于第二阈值的情况下,确定所述视频帧处于画面剧烈变化的运动场景;所述第一阈值大于或等于所述第二阈值。
[0280]
可选的,所述装置还包括:
[0281]
第二确定模块,用于确定所述视频帧中的静止编码区域;
[0282]
像素代价模块,用于获取静止编码区域的像素代价参数;所述像素代价参数用于反映:所述视频帧的参考视频帧中与所述静止编码区域对应的编码区域和所述静止编码区域之间的相似度;所述像素代价参数与相似度越负相关;
[0283]
平均计算模块,用于根据所述静止编码区域的像素代价参数,获取所述视频帧中所有静止编码区域的平均像素代价参数;
[0284]
第三判断模块,用于在所述平均像素代价参数小于第三阈值的情况下,确定所述视频帧处于图像噪声较小的运动场景;
[0285]
第四判断模块,用于在所述平均像素代价参数大于第四阈值的情况下,确定所述视频帧处于图像噪声较大的运动场景,所述第三阈值小于或等于所述第四阈值。
[0286]
可选的,所述确定所述视频帧中的静止编码区域,包括:
[0287]
从所述待编码视频中,获取所述视频帧的参考视频帧;
[0288]
在所述参考视频帧中,通过运动搜索确定与所述视频帧的第一编码区域匹配的第二编码区域;
[0289]
将所述第二编码区域的坐标与所述第一编码区域的坐标的差值,确定为所述第一编码区域相对于所述第二编码区域的运动矢量;
[0290]
将所述运动矢量小于第五阈值的第一编码区域确定为所述静止编码区域。
[0291]
可选的,所述装置还包括:
[0292]
第一映射模块,用于根据当前使用的编码规则所采用的预置索引参数,确定所述第一阈值和所述第二阈值,所述预置索引参数分别与所述第一阈值和所述第二阈值成正比例关系。
[0293]
可选的,所述装置还包括:
[0294]
第二映射模块,用于根据当前使用的编码规则所采用的预置索引参数,确定所述第三阈值和所述第四阈值,所述预置索引参数分别与所述第三阈值和所述第四阈值成反比例关系。
[0295]
可选的,所述调整模块402,包括:
[0296]
第一基础参数子模块,用于获取基础调整参数;
[0297]
调整子模块,用于根据所述视频帧所处的运动场景,通过调整所述基础调整参数,从而调整所述调整强度值,所述基础调整参数与所述调整强度值成反比例关系。
[0298]
可选的,所述装置还包括:
[0299]
代价参数获取模块,用于获取所述编码区域的帧内预测代价参数和帧间预测代价参数;
[0300]
预编码模块,用于对所述视频帧进行预编码,根据所述帧内预测代价参数和所述帧间预测代价参数,获取所述视频帧的编码区域的参考价值参数;
[0301]
所述计算模块403,包括:
[0302]
第二基础参数子模块,用于获取与当前编码规则匹配的基础量化参数;
[0303]
偏移量子模块,用于根据所述帧内预测代价参数、所述帧间预测代价参数、所述调整强度值和所述参考价值参数,获取所述编码区域的量化参数偏移量;
[0304]
修正子模块,用于通过所述量化参数偏移量对所述基础量化参数进行修正,得到所述编码区域的量化参数。
[0305]
可选的,所述修正子模块,包括:
[0306]
差值单元,用于将所述基础量化参数与所述量化参数偏移量的绝对值之间的差值,作为所述编码区域的量化参数。
[0307]
可选的,所述装置还包括:
[0308]
映射建立模块,用于获取索引参数和调整强度值的映射关系,以及所述视频帧的查询参数;
[0309]
查询模块,用于根据所述映射关系,将与所述查询参数匹配的调整强度值确定为所述视频帧的调整强度值;
[0310]
其中,所述索引参数和所述查询参数包括:所述视频帧中的静止编码区域在所述视频帧的所有编码区域中的数量占比、所述视频帧中的静止编码区域的平均像素代价参数、针对所述编码视频设置的目标码率、当前使用的编码规则所采用的预置索引参数中的至少一种。
[0311]
可选的,所述装置还包括:
[0312]
降采样模块,用于对所述待编码视频的视频帧进行降采样处理,降低所述视频帧的分辨率。
[0313]
综上,本技术实施例中,可以通过分析待编码视频的视频帧所处的运动场景,来根据运动场景动态调节视频帧调整强度值,进而修正编码区域的量化参数的大小,后续编码时可以按照编码区域的量化参数,调整编码区域的码率和体量,使其在契合对应运动场景下的观感需求的基础上,优化了码率和体量,在既满足编码视频的画面观感质量的同时又缩减了编码视频的体量,提高了编码质量。
[0314]
参照图14,其示出了本技术实施例提供的一种视频解码装置的框图,包括:
[0315]
第二获取模块501,用于获取编码视频,所述编码视频的视频帧中划分有多个编码区域;
[0316]
解码模块502,用于对所述编码视频进行解码,得到所述编码区域的量化参数,所述量化参数为:由编码前的编码视频的视频帧所处的运动场景确定的调整强度值,以及所述编码区域通过预编码得到的参考价值参数所计算得到的参数;
[0317]
重构模块503,用于根据所述编码区域的量化参数,构建待播放视频。
[0318]
综上,本技术实施例中,可以通过分析待编码视频的视频帧所处的运动场景,来根据运动场景动态调节视频帧调整强度值,进而修正编码区域的量化参数的大小,后续编码时可以按照编码区域的量化参数,调整编码区域的码率和体量,使其在契合对应运动场景下的观感需求的基础上,优化了码率和体量,在既满足编码视频的画面观感质量的同时又缩减了编码视频的体量,提高了编码质量。
[0319]
本技术实施例还提供了一种非易失性可读存储介质,该存储介质中存储有一个或多个模块(programs),该一个或多个模块被应用在设备时,可以使得该设备执行本技术实施例中各方法步骤的指令(instructions)。
[0320]
本技术实施例提供了一个或多个机器可读介质,其上存储有指令,当由一个或多个处理器执行时,使得电子设备执行如上述实施例中一个或多个所述的方法。本技术实施
例中,所述电子设备包括终端设备、服务端(集群)等各类型的设备。
[0321]
本公开的实施例可被实现为使用任意适当的硬件,固件,软件,或及其任意组合进行想要的配置的装置,该装置可包括终端设备、服务端(集群)等电子设备。图15示意性地示出了可被用于实现本技术实施例中所述的各个实施例的示例性装置1000。
[0322]
对于一个实施例,图15示出了示例性装置1000,该装置具有一个或多个处理器1002、被耦合到(一个或多个)处理器1002中的至少一个的控制模块(芯片组)1004、被耦合到控制模块1004的存储器1006、被耦合到控制模块1004的非易失性存储器(nvm)/存储设备1008、被耦合到控制模块1004的一个或多个输入/输出设备1010,以及被耦合到控制模块1004的网络接口1012。
[0323]
处理器1002可包括一个或多个单核或多核处理器,处理器1002可包括通用处理器或专用处理器(例如图形处理器、应用处理器、基频处理器等)的任意组合。在一些实施例中,装置1000能够作为本技术实施例中所述终端设备、服务端(集群)等设备。
[0324]
在一些实施例中,装置1000可包括具有指令1014的一个或多个计算机可读介质(例如,存储器1006或nvm/存储设备1008)以及与该一个或多个计算机可读介质相合并被配置为执行指令1014以实现模块从而执行本公开中所述的动作的一个或多个处理器1002。
[0325]
对于一个实施例,控制模块1004可包括任意适当的接口控制器,以向(一个或多个)处理器1002中的至少一个和/或与控制模块1004通信的任意适当的设备或组件提供任意适当的接口。
[0326]
控制模块1004可包括存储器控制器模块,以向存储器1006提供接口。存储器控制器模块可以是硬件模块、软件模块和/或固件模块。
[0327]
存储器1006可被用于例如为装置1000加载和存储数据和/或指令1014。对于一个实施例,存储器1006可包括任意适当的易失性存储器,例如,适当的dram。在一些实施例中,存储器1006可包括双倍数据速率类型四同步动态随机存取存储器(ddr4sdram)。
[0328]
对于一个实施例,控制模块1004可包括一个或多个输入/输出控制器,以向nvm/存储设备1008及(一个或多个)输入/输出设备1010提供接口。
[0329]
例如,nvm/存储设备1008可被用于存储数据和/或指令1014。nvm/存储设备1008可包括任意适当的非易失性存储器(例如,闪存)和/或可包括任意适当的(一个或多个)非易失性存储设备(例如,一个或多个硬盘驱动器(hdd)、一个或多个光盘(cd)驱动器和/或一个或多个数字通用光盘(dvd)驱动器)。
[0330]
nvm/存储设备1008可包括在物理上作为装置1000被安装在其上的设备的一部分的存储资源,或者其可被该设备访问可不必作为该设备的一部分。例如,nvm/存储设备1008可通过网络经由(一个或多个)输入/输出设备1010进行访问。
[0331]
(一个或多个)输入/输出设备1010可为装置1000提供接口以与任意其他适当的设备通信,输入/输出设备1010可以包括通信组件、音频组件、传感器组件等。网络接口1012可为装置1000提供接口以通过一个或多个网络通信,装置1000可根据一个或多个无线网络标准和/或协议中的任意标准和/或协议来与无线网络的一个或多个组件进行无线通信,例如接入基于通信标准的无线网络,如wifi、2g、3g、4g、5g等,或它们的组合进行无线通信。
[0332]
对于一个实施例,(一个或多个)处理器1002中的至少一个可与控制模块1004的一个或多个控制器(例如,存储器控制器模块)的逻辑封装在一起。对于一个实施例,(一个或
多个)处理器1002中的至少一个可与控制模块1004的一个或多个控制器的逻辑封装在一起以形成系统级封装(sip)。对于一个实施例,(一个或多个)处理器1002中的至少一个可与控制模块1004的一个或多个控制器的逻辑集成在同一模具上。对于一个实施例,(一个或多个)处理器1002中的至少一个可与控制模块1004的一个或多个控制器的逻辑集成在同一模具上以形成片上系统(soc)。
[0333]
在各个实施例中,装置1000可以但不限于是:服务端、台式计算设备或移动计算设备(例如,膝上型计算设备、手持计算设备、平板电脑、上网本等)等终端设备。在各个实施例中,装置1000可具有更多或更少的组件和/或不同的架构。例如,在一些实施例中,装置1000包括一个或多个摄像机、键盘、液晶显示器(lcd)屏幕(包括触屏显示器)、非易失性存储器端口、多个天线、图形芯片、专用集成电路(asic)和扬声器。
[0334]
其中,检测装置中可采用主控芯片作为处理器或控制模块,传感器数据、位置信息等存储到存储器或nvm/存储设备中,传感器组可作为输入/输出设备,通信接口可包括网络接口。
[0335]
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
[0336]
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
[0337]
本技术实施例是参照根据本技术实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0338]
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0339]
这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0340]
尽管已描述了本技术实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本技术实施例范围的所有变更和修改。
[0341]
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包
括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
[0342]
以上对本技术所提供的一种视频编码方法、装置、电子设备和存储介质,进行了详细介绍,本文中应用了具体个例对本技术的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本技术的方法及其核心思想;同时,对于本领域的一般技术人员,依据本技术的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本技术的限制。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献