一种视频编码方法、装置、设备及可读存储介质与流程
未命名
10-08
阅读:70
评论:0

1.本发明实施例涉及视频编码技术领域,尤其涉及一种视频编码方法、装置、设备及可读存储介质。
背景技术:
2.随着网络通信和视频处理技术的快速发展,4k、8k和hdr(high dynamic range,高动态光照渲染)等技术逐步成为人们对视觉体验的新需求。4k/8k视频的数据量大,对编码压缩性能要求比较高,目前国内外针对4k/8k视频采用的编码压缩标准主要有h.265、h.266、avs2、avs3,它们都采用四叉树的块划分方法,大大提升了编码压缩效率。以avs2编码器为例,avs2将每帧图像分割为若干个ctu(coding tree unit,编码树单元),并采用四叉树形式对ctu进行递归划分,划分成64x64、32x32、16x16和8x8这4种层次的cu(coding unit,编码单元)。在码率控制阶段,通常采用的方法为:帧级码率控制和ctu级码率控制。但是,帧级码率控制和ctu级码率控制中,将各个编码单元的量化参数(quantization parameter,qp)均设置为相同。并未考虑到针对于不同编码单元,对应设置不同的码率控制方式,易产生块效应,或造成码率浪费。
技术实现要素:
3.本发明实施例提供一种视频编码方法、装置、设备及可读存储介质,以解决相关技术中,并未针对于不同的编码单元,对应设置不同的码率控制方式,导致在编码时易产生块效应,或造成码率浪费的技术问题。
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.根据所述区域类型、所述第一控制结果以及所述第二控制结果,确定所述编码单元的量化参数包括:
30.在所述区域类型为所述运动连续纹理区域的情况下,确定所述编码单元的量化参数为所述帧级量化参数与第二预设阈值之和;
31.在所述区域类型为所述运动不连续纹理区域的情况下,确定所述编码单元的量化参数为所述编码树级量化参数与第二预设阈值之差;
32.其中,所述帧级量化参数为在对所述当前视频帧进行所述帧级码率控制时,所获取的量化参数;所述编码树级量化参数为在对所述编码树单元进行所述编码树单元级码率控制时,所获取的量化参数;所述第二预设阈值均为非负数。
33.可选的,在根据所述量化参数,对所述编码单元进行编码之后,所述方法还包括:
34.判断是否已对所述编码树单元中的每个编码单元均进行了编码;
35.如果是,则结束对所述编码树单元的所述编码树单元级码率控制。
36.第二方面,本发明实施例提供一种一种视频编码装置,所述装置包括:
37.第一控制模块,用于对待处理的当前视频帧进行帧级码率控制,得到第一控制结果;其中,所述当前视频帧包括多个编码树单元,所述编码树单元包括多种尺度的编码单元;
38.第二控制模块,用于对所述编码树单元进行编码树单元级码率控制,得到第二控制结果;
39.第一确定模块,用于基于所述第一控制结果,确定每个所述编码单元的区域类型;其中,所述区域类型为平坦区域或纹理区域;
40.第二确定模块,用于根据所述区域类型、所述第一控制结果以及所述第二控制结果,确定所述编码单元的量化参数;
41.编码模块,用于根据所述量化参数,对所述编码单元进行编码。
42.可选的,所述第一控制结果包括:在对所述当前视频帧进行所述帧级码率控制时,所获取的所述当前视频帧所包含的所有像素块的亮度值方差的第一平均值;所述第一确定模块,用于确定所述编码单元所包含的所有像素块的亮度值方差的第二平均值;
43.判断所述第二平均值是否小于所述第一平均值;
44.如果是,则确定所述编码单元的区域类型为平坦区域;
45.如果否,则确定所述编码单元的区域类型为纹理区域。
46.可选的,所述平坦区域包括以下至少一项:运动连续平坦区域和运动不连续平坦区域;
47.所述装置还包括:第一判断模块,用于当所述区域类型为所述平坦区域时,所述确定每个所述编码单元的区域类型之后,判断所述编码单元的运动矢量和与所述编码单元指定相邻边的编码单元的运动矢量是否相同,如果是,则确定所述区域类型为所述运动连续平坦区域;如果否,则确定所述区域类型为所述运动不连续平坦区域。
48.可选的,所述第一控制结果包括:帧级量化参数;所述第二控制结果包括:编码树级量化参数;
49.所述第二确定模块,用于在所述区域类型为所述运动连续平坦区域的情况下,确定所述编码单元的量化参数为所述帧级量化参数与第一预设阈值之和;
50.在所述区域类型为所述运动不连续平坦区域的情况下,确定所述编码单元的量化参数为所述编码树级量化参数与第一预设阈值之差;
51.其中,所述帧级量化参数为在对所述当前视频帧进行所述帧级码率控制时,所获取的量化参数;所述编码树级量化参数为在对所述编码树单元进行所述编码树单元级码率控制时,所获取的量化参数;所述第一预设阈值为非负数。
52.可选的,所述纹理区域包括以下至少一项:运动连续纹理区域和运动不连续纹理区域;
53.所述装置还包括:第二判断模块,用于当所述区域类型为所述纹理区域时,所述确定每个所述编码单元的区域类型之后,判断所述编码单元的运动矢量和与所述编码单元指定相邻边的编码单元的运动矢量是否相同,如果是,则确定所述区域类型为所述运动连续纹理区域;如果否,则确定所述区域类型为所述运动不连续纹理区域。
54.可选的,所述第一控制结果包括:帧级量化参数;所述第二控制结果包括:编码树级量化参数;
55.所述第二确定模块,还用于在所述区域类型为所述运动连续纹理区域的情况下,确定所述编码单元的量化参数为所述帧级量化参数与第二预设阈值之和;
56.在所述区域类型为所述运动不连续纹理区域的情况下,确定所述编码单元的量化参数为所述编码树级量化参数与第二预设阈值之差;
57.其中,所述帧级量化参数为在对所述当前视频帧进行所述帧级码率控制时,所获取的量化参数;所述编码树级量化参数为在对所述编码树单元进行所述编码树单元级码率控制时,所获取的量化参数;所述第二预设阈值均为非负数。
58.可选的,所述装置还包括:第三判断模块,用于在根据所述量化参数,对所述编码单元进行编码之后,判断是否已对所述编码树单元中的每个编码单元均进行了编码;如果是,则结束对所述编码树单元的所述编码树单元级码率控制。
59.第三方面,本发明实施例提供了一种电子设备,所述电子设备包括:处理器、存储器及存储在所述存储器上并可在所述处理器上运行的程序,所述程序被所述处理器执行时实现如第一方面所述的视频编码方法的步骤。
60.第四方面,本发明实施例提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如第一方面所述的视频编码方法的步骤。
61.在本发明实施例中,面对于不同的编码单元,可针对性的根据其区域类型确定量化参数,由此,避免了相关技术中,将各个编码单元的量化参数均设置为相同,易产生块效应,或造成码率浪费的技术问题,使得块效应明显减少,且节省了码率,进一步提升了视频的主观质量。
附图说明
62.通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
63.图1为本发明实施例提供的一种视频编码方法的流程图;
64.图2为本发明实施例提供的一种编码树单元的四叉树形式分割的示意图;
65.图3为本发明实施例提供的一种编码单元的划分方式的示意图;
66.图4为本发明实施例提供的一种视频编码方法的流程图;
67.图5为本发明实施例提供的一种视频编码方法的流程图;
68.图6为本发明实施例提供的一种视频编码方法的流程图;
69.图7为本发明实施例提供的一种在编码单元级码率控制中获取量化参数的流程图。
70.图8为本发明实施例提供的一种视频编码装置的结构框图;
71.图9为本发明实施例提供的一种电子设备的结构框图。
具体实施方式
72.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
73.图1示出了根据本发明实施例所示的一种视频编码方法,如图1所示,方法包括:
74.步骤s101、对待处理的当前视频帧进行帧级码率控制,得到第一控制结果;
75.步骤s102、对编码树单元进行编码树单元级码率控制,得到第二控制结果;
76.步骤s103、基于第一控制结果,确定每个编码单元的区域类型;
77.其中,区域类型为平坦区域或纹理区域;
78.步骤s104、根据区域类型、第一控制结果以及第二控制结果,确定编码单元的量化参数;
79.步骤s105、根据量化参数,对编码单元进行编码。
80.本发明实施例所示的视频帧的编码方法可应用于h.265编码器,还可应用于h.266编码器、avs2编码器和avs3编码器。
81.在步骤s101中,帧级码率控制(frame-level rate control)是一种视频编码算法,可简要概括为:将一个目标码率划分到各个帧,并根据各个帧的复杂度、各帧的权重因子、缓冲区饱和度计算各帧的量化参数qp。首先对待处理的当前视频帧进行帧级码率控制,并在进行帧级码率控制的过程中,得到第一控制结果。
82.需要说明的是,当前视频帧包括多个编码树单元,编码树单元包括多种尺度的编码单元。以h.265编码器为例,在对当前视频帧进行处理时,可将图像划分为“编码树单元(coding tree units,ctu)”,而不是像h.264那样的16
×
16的宏块。根据不同的编码设置,编码树单元的尺寸可以被设置为64
×
64或有限的32
×
32或16
×
16。很多研究都显示出:更大的编码树单元可以提供更高的压缩效率(同样也需要更高的编码速度)。编码树单元又可向下分成编码单元(coding unit,cu)。
83.以avs2编码器为例,avs2将待处理视频流的每帧图像分割为若干个ctu,并采用四叉树形式对ctu进行递归划分,划分成64
×
64、32
×
32、16
×
16和8
×
8这4种层次的cu,如图2所示。四叉树是一种递回结构,四叉树上的数字可以表示这个节点是否继续做分割,若此节点会继续分割,则为1,若不继续分割则为0,参照图2,当节点上的数字为0时,此节点代表编码单元。也就是说,编码单元可理解为编码树结构上的一个叶子节点。编码树单元可以包含有一个编码单元,或是切割成多个较小的编码单元。
84.cu是以像素块作为输入,对其进行变换和量化处理后,得到压缩数据。cu的大小可以由编码器根据视频帧的内容自适应调节,目的是使每个cu中的像素块具有更为一致的特性,从而更好地被压缩编码。在进行cu的划分过程中,当某个cu内各部分的运动或纹理非常相似时,通常不需要再将其划分成更小的cu,而如果某个cu内各部分运动或纹理的区别很大时,通常需要将其划分成更小的cu,以图3为示例,当某个cu内各部分的运动或纹理非常相似时,即该cu为平坦区域时,可选择大尺寸的cu(如图3左上角的较大尺寸的正方形所示),如果某个cu内各部分运动或纹理的区别很大时,即该cu为纹理复杂区域,通常会选择较小尺寸的cu(如图3中被分割成较小尺寸的正方形所示)。
85.在步骤s102中,编码树单元(ctu)级码率控制(cu-tree level rate control)是一种视频编码算法,可简要概括为:根据每个ctu的重要程度,在帧级qp的基础上根据各个ctu在帧间编码时被参考的次数,计算各ctu的qp,也就是说,对编码树单元进行编码树单元级码率控制,得到第二控制结果。
86.在步骤s103中,可基于第一控制结果,确定每个编码单元的区域类型,其中,区域类型为平坦区域或纹理区域。
87.在一种可能的实现方式中,第一控制结果包括:在对当前视频帧进行帧级码率控制时,所获取的当前视频帧所包含的所有像素块的亮度值方差的第一平均值;如图4所示,步骤s103、基于第一控制结果,确定每个编码单元的区域类型包括:
88.步骤s1021、确定编码单元所包含的所有像素块的亮度值方差的第二平均值;
89.步骤s1022、判断第二平均值是否小于第一平均值;
90.如果是,则执行步骤s1023;如果否,则执行步骤s1024;
91.步骤s1023、确定编码单元的区域类型为平坦区域;
92.步骤s1024、确定编码单元的区域类型为纹理区域;
93.需要说明的是,在视频编码中,平坦区域和纹理区域是指图像中不同的区域类型。平坦区域指的是像素之间颜色非常接近、没有明显变化的区域,平坦区域通常可以采用简单的编码方式进行处理,这种区域不需要很高的精度,可以通过更少的比特数来表示。纹理区域则是指包含有细节和纹理信息的区域,纹理区域中,像素之间颜色变化较为明显,纹理区域需要使用更复杂的编码方式进行处理,例如使用更详细的预测模型、更复杂的变换算法等,在保留图像细节的同时尽可能减小数据量。
94.需要说明的是,本技术中,将码率控制分为3级:帧级(层)码率控制,ctu级(层)码率控制和cu级码率控制。而cu级码率控制以帧级码率控制和ctu级码率控制为基础,需要应用到帧级码率控制和ctu级码率控制中的参数。首先,可根据图4所示的可能的实现方式,初步确定每个编码单元的区域类型。在初步确定每个编码单元的区域类型之后,可根据运动矢量这一参数,进一步细化每个编码单元的区域类型。即当区域类型为平坦区域时,执行图5所示的可能的实现方式,或者,当区域类型为纹理区域时,执行图6所示的可能的实现方式。
95.图5所示的方法包括:
96.步骤s1023、确定编码单元的区域类型为平坦区域;
97.步骤s301、判断编码单元的运动矢量和与编码单元指定相邻边的编码单元的运动矢量是否相同;
98.如果是,则执行步骤s3011;如果否,则执行步骤s3022;
99.步骤s3011、确定区域类型为运动连续平坦区域;
100.步骤s3012、确定区域类型为运动不连续平坦区域。
101.需要说明的是,在视频编码中,运动连续性用于衡量视频帧中像素位置变化是否平滑,在本发明实施例中,若编码单元的运动矢量和与编码单元指定相邻边的编码单元的运动矢量均相同,可认为该编码单元具备运动连续性。因此,可将该编码单元的区域类型在平坦区域的基础上,进一步确定为运动连续平坦区域,否则,则认为该编码单元不具备运动连续性,可将其区域类型进一步确定为运动不连续平坦区域。
102.图6所示的方法包括:
103.步骤s1024、确定编码单元的区域类型为纹理区域;
104.步骤s401、判断编码单元的运动矢量和与编码单元指定相邻边的编码单元的运动矢量是否相同;
105.如果是,则执行步骤s4011;如果否,则执行步骤s4012;
106.s4011、确定区域类型为运动连续纹理区域;
107.s4012、确定区域类型为运动不连续纹理区域。
108.需要说明的是,在视频编码中,运动连续性用于衡量视频帧中像素位置变化是否平滑,在本发明实施例中,若编码单元的运动矢量和与编码单元指定相邻边的编码单元的运动矢量相同,可认为该编码单元具备运动连续性。因此,可将该编码单元的区域类型在纹理区域的基础上,进一步确定为运动连续纹理区域,否则,则认为该编码单元不具备运动连续性,可将其区域类型进一步确定为运动不连续纹理区域。
109.需要说明的是,本发明实施例考虑到相邻cu之间的运动和纹理区别较大,在纹理区域内,如果某cu和与其指定相邻边的cu的运动矢量不同,则容易产生块效应。且针对于待处理的视频帧,进行cu级码率控制的顺序为从左上角起始至右下角,因此,在一种可能的实现方式中,与编码单元指定相邻边的编码单元为与该编码单元相邻的左边编码单元,以及与该编码单元相邻的上边编码单元。也就是说,可将某cu和与其相邻cu(左边cu、上边cu,也可理解为历史cu)的运动矢量进行比较,如果均相同,则不易产生块效应,如果至少一个不同,则容易产生块效应。
110.同理,在平坦区域内,如果某cu和与其指定相邻边的cu的运动矢量不同,则容易产生块效应,如果均相同,则该cu和与其指定相邻边的cu的像素值偏差较小,不易产生块效应。基于此,本发明实施例将cu的区域类型进一步细化为:运动连续纹理区域、运动不连续纹理区域、运动连续平坦区域和运动不连续平坦区域,由此,可针对性的确定不同的区域类型所对应的不同量化参数,区域类型的划分更为精细,可使得量化参数的确定更为准确,进而根据量化参数对编码单元进行编码,可提高视频的主观质量。
111.在一种可能的实现方式中,第一控制结果包括:帧级量化参数;第二控制结果包括:编码树级量化参数;其中,帧级量化参数为在对当前视频帧进行帧级码率控制时,所获取的量化参数;编码树级量化参数为在对编码树单元进行编码树单元级码率控制时,所获取的量化参数;
112.步骤104、根据区域类型、第一控制结果以及第二控制结果,确定编码单元的量化参数包括:
113.在区域类型为运动连续平坦区域的情况下,确定编码单元的量化参数为在对当前视频帧进行帧级码率控制时,所获取的帧级量化参数与第一预设阈值之和;
114.在区域类型为运动不连续平坦区域的情况下,确定编码单元的量化参数为在对编码树单元进行编码树单元级码率控制时,所获取的编码树级量化参数与第一预设阈值之差;
115.在区域类型为运动连续纹理区域的情况下,确定编码单元的量化参数为在对当前视频帧进行帧级码率控制时,所获取的帧级量化参数与第二预设阈值之和;
116.在区域类型为运动不连续纹理区域的情况下,确定编码单元的量化参数为在对编
码树单元进行编码树单元级码率控制时,所获取的编码树级量化参数与第二预设阈值之差;
117.第一预设阈值、第二预设阈值均为非负数。可选的,第一预设阈值的取值范围为[0,5],第一预设阈值如果太大则容易导致cu之间的像素差值太大,而引起块效应,第一预设阈值如果太小则很难达到节省码率的目的,第一预设阈值的典型值为3。可选的,第二预设阈值b的取值范围为[2,6],第二预设阈值如果太大则容易导致cu之间的像素差值太大,而引起块效应,第二预设阈值如果太小则很难达到节省码率的目的,第二预设阈值的典型值为4。
[0118]
需要说明的是,本发明实施例考虑到相邻cu之间的运动和纹理区别较大,在纹理区域内,如果某cu的区域类型为运动连续平坦区域,则当前cu和相邻cu的像素值偏差较小,不易产生块效应,此时qp可适当增大以节省码率;如果某cu的区域类型为运动不连续平坦区域,则容易产生块效应,此时,qp应相对减小从而减少失真。同理,如果某cu的区域类型为运动连续纹理区域,则当前cu和相邻cu的像素值偏差较小,不易产生块效应,此时qp可适当增大以节省码率;如果某cu的区域类型为运动不连续纹理区域,则容易产生块效应,此时,qp应相对减小从而减少失真。
[0119]
由此,本发明实施例所示的方法,对运动不连续平坦区域减小qp以减少平坦区域的块效应,对运动连续平坦区域增大qp以节省码率,对运动不连续纹理区域减小qp以减少纹理区域的块效应,对运动连续纹理区域增大qp以节省码率,进而在总码率保持不变的情况下,可使得视频质量有较大的提升。
[0120]
现以待处理视频帧中,像素块的尺寸均为8
×
8(一个像素块中有64个像素点)为例,并结合公式对上述实施例进行进一步说明,则cu级码率控制的具体流程如下:
[0121]
步骤1:在帧级码率控制时,求取第i帧(第i帧为待处理的当前视频帧)的帧级qp,并获取第i帧中所有8
×
8像素块的亮度值方差var8×8的平均值var
m(i)[0122][0123]
其中,m表示第i帧中,8
×
8像素块的个数;
[0124]
步骤2:在ctu级码率控制时,根据每个ctu的重要程度,以及在帧级qp的基础上根据各个ctu在帧间编码时被参考的次数,计算出第i帧第j个ctu的qp,并标记为qp
ctu
(i,j);
[0125]
步骤3,在cu级码率控制时,求取第i帧第j个ctu第k个cu所包含的8
×
8像素块亮度值方差的平均值,记为var(i,j,k),
[0126][0127]
其中,t表示该第k个cu中包含8
×
8像素块的个数,如果var(i,j,k)小于varm(i),则判定该第k个cu为平坦区域,并执行步骤4,否则,判定该第k个cu为纹理区域,并执行步骤5;
[0128]
步骤4,判断该第k个cu和与其相邻的上边cu、左边cu的运动矢量是否相同(也就是说,该第k个cu、所述上边cu、所述左边cu三者的运动矢量均相同);如果是,则执行步骤4.1;如果否,则执行步骤4.2;
[0129]
步骤4.1:若均相同,则判定该第k个cu为运动连续平坦区域,则该第k个cu的量化
参数qp
cu
(i,j,k)=qp
ctu
(i,j)+a;后执行步骤6;
[0130]
步骤4.2:若不相同,则判定该第k个cu为运动不连续平坦区域,则该第k个cu的量化参数qp
cu
(i,j,k)=qp
ctu
(i,j)-a;后执行步骤6;
[0131]
可理解的是,不相同可分为三种情况,第k个cu和所述上边cu的运动矢量不同,但第k个cu与所述左边cu的运动矢量相同;第k个cu和所述上边cu的运动矢量相同,但第k个cu与所述左边cu的运动矢量不同;第k个cu和所述上边cu的运动矢量不同,且第k个cu与所述左边cu的运动矢量也不同,以上三种情况,均判定该第k个cu为运动不连续平坦区域;
[0132]
且需要说明的是,a为非负数,可选的,a的取值范围为[0,5],a的值如果太大则容易导致cu之间的像素差值太大,而引起块效应,a的值如果太小则很难达到节省码率的目的,a的典型值为3;
[0133]
其中,块效应主要是由视频图像采用基于块的编码方式和量化造成相邻块之间存在明显差异的现象,在视频编码中人眼察觉到的小块边界处的不连续;
[0134]
步骤5:判断该第k个cu和与其相邻的上边cu、左边cu的运动矢量是否相同(也就是说,该第k个cu、所述上边cu、所述左边cu三者的运动矢量均相同);如果是,则执行步骤5.1;如果否,则执行步骤5.2;
[0135]
步骤5.1:若均相同,则判定该第k个cu为运动连续纹理区域,则该第k个cu的量化参数qp
cu
(i,j,k)=qp
ctu
(i,j)+b;后执行步骤6;
[0136]
步骤5.2:若不相同,则判定该第k个cu为运动不连续纹理区域,则该第k个cu的量化参数qp
cu
(i,j,k)=qp
ctu
(i,j)-b;后执行步骤6;
[0137]
同理,不相同也可分为3种情况,如步骤4.2中所示,在此不再赘述;
[0138]
且需要说明的是,b为非负数,b的取值范围为[2,6],b的值如果太大则容易导致cu之间的像素差值太大,而引起块效应,b的值如果太小则很难达到节省码率的目的,b的典型值为4;
[0139]
步骤6:根据步骤4.1/4.2/4.3/4.4中计算出的量化参数qp
cu
(i,j,k)对该第k个cu进行编码;
[0140]
且步骤4.1/4.2/4.3/4.4中,cu的区域类型与具体计算量化参数qp的对应关系,可参照图7所示的流程图;
[0141]
步骤7:判断该第k个cu是否为第j个ctu中的最后一个cu,若是则结束第j个ctu的ctu级码率控制,并执行步骤8,若否,则令k=k+1,并返回执行步骤3;
[0142]
步骤8:判断第j个ctu是否为第i帧中的最后一个ctu,若是,则结束第i帧的帧级码率控制,若否,则令j=j+1,并执行步骤2;
[0143]
需要说明的是,步骤7和步骤8表明,在对当前视频帧进行cu级的码率控制时,需保障对当前视频帧中的每一个ctu的每一个cu均进行了cu级的码率控制;
[0144]
由此,在cu级码率控制时,将cu的区域类型分为:平坦区域或纹理区域,进一步将平坦区域分为:运动连续平坦区域和运动不连续平坦区域,将纹理区域分为运动连续纹理区域和运动不连续纹理区域,并调节各自的量化参数,相较于现有技术中的h.265、h.266、avs2、avs3编码器来说,可达到对运动连续平坦区域节省码率,对运动不连续纹理区域减少块效应的技术效果。
[0145]
图8示出了根据本发明实施例所示的一种视频编码装置80,包括:
[0146]
第一控制模块801,用于对待处理的当前视频帧进行帧级码率控制,得到第一控制结果;
[0147]
其中,当前视频帧包括多个编码树单元,编码树单元包括多种尺度的编码单元;
[0148]
第二控制模块802,用于对编码树单元进行编码树单元级码率控制,得到第二控制结果;
[0149]
第一确定模块803,用于基于第一控制结果,确定每个编码单元的区域类型,其中,区域类型为平坦区域或纹理区域;
[0150]
第二确定模块804,用于根据区域类型、第一控制结果以及第二控制结果,确定编码单元的量化参数;
[0151]
编码模块805,用于根据量化参数,对编码单元进行编码。
[0152]
在一种可能的实现方式中,第一控制结果包括:在对当前视频帧进行帧级码率控制时,所获取的当前视频帧所包含的所有像素块的亮度值方差的第一平均值;第一确定模块803,用于确定编码单元所包含的所有像素块的亮度值方差的第二平均值;
[0153]
判断第二平均值是否小于第一平均值;
[0154]
如果是,则确定编码单元的区域类型为平坦区域;
[0155]
如果否,则确定编码单元的区域类型为纹理区域。
[0156]
在一种可能的实现方式中,平坦区域包括以下至少一项:运动连续平坦区域和运动不连续平坦区域;
[0157]
装置80还包括:第一判断模块,用于当区域类型为平坦区域时,确定每个编码单元的区域类型之后,判断编码单元的运动矢量和与编码单元指定相邻边的编码单元的运动矢量是否相同,如果是,则确定区域类型为运动连续平坦区域;如果否,则确定区域类型为运动不连续平坦区域。
[0158]
在一种可能的实现方式中,第一控制结果包括:帧级量化参数;第二控制结果包括:编码树级量化参数;
[0159]
第二确定模块804,用于在区域类型为运动连续平坦区域的情况下,确定编码单元的量化参数为帧级量化参数与第一预设阈值之和;
[0160]
在区域类型为运动不连续平坦区域的情况下,确定编码单元的量化参数为编码树级量化参数与第一预设阈值之差;
[0161]
其中,帧级量化参数为在对当前视频帧进行帧级码率控制时,所获取的量化参数;编码树级量化参数为在对编码树单元进行编码树单元级码率控制时,所获取的量化参数;第一预设阈值为非负数。
[0162]
在一种可能的实现方式中,纹理区域包括以下至少一项:运动连续纹理区域和运动不连续纹理区域;
[0163]
装置80还包括:第二判断模块,用于当区域类型为纹理区域时,确定每个编码单元的区域类型之后,判断编码单元的运动矢量和与编码单元指定相邻边的编码单元的运动矢量是否相同,如果是,则确定区域类型为运动连续纹理区域;如果否,则确定区域类型为运动不连续纹理区域。
[0164]
在一种可能的实现方式中,第一控制结果包括:帧级量化参数;第二控制结果包括:编码树级量化参数;
[0165]
第二确定模块804,还用于在区域类型为运动连续纹理区域的情况下,确定编码单元的量化参数为帧级量化参数与第二预设阈值之和;
[0166]
在区域类型为运动不连续纹理区域的情况下,确定编码单元的量化参数为编码树级量化参数与第二预设阈值之差;
[0167]
其中,帧级量化参数为在对当前视频帧进行帧级码率控制时,所获取的量化参数;编码树级量化参数为在对编码树单元进行编码树单元级码率控制时,所获取的量化参数;第二预设阈值均为非负数。
[0168]
在一种可能的实现方式中,装置80还包括:第三判断模块,用于在根据量化参数,对编码单元进行编码之后,判断是否已对编码树单元中的每个编码单元均进行了编码;如果是,则结束对编码树单元的编码树单元级码率控制。
[0169]
由此,对运动不连续平坦区域减小qp以减少平坦区域的块效应,对运动连续平坦区域增大qp以节省码率,对运动不连续纹理区域减小qp以减少纹理区域的块效应(例如:针对于h.265视频编码器在低码率下的复杂区域中的块效应明显减少),对运动连续纹理区域增大qp以节省码率,进而在总码率保持不变的情况下,可使得视频主观质量有较大的提升。
[0170]
图9示出了根据本发明实施例的一种电子设备,电子设备90包括:处理器901、存储器902及存储在存储器902上并可在处理器901上运行的程序,所述程序被处理器901执行时实现上述实施例所示的视频编码方法的步骤。
[0171]
本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现上述实施例所示的视频编码方法的步骤,且能达到相同的技术效果,为避免重复,这里不再赘述。其中,所述的计算机可读存储介质,如只读存储器(read-only memory,rom)、随机存取存储器(random access memory,ram)、磁碟或者光盘等。
[0172]
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
[0173]
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
[0174]
上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,均属于本发明的保护之内。
技术特征:
1.一种视频编码方法,其特征在于,所述方法包括:对待处理的当前视频帧进行帧级码率控制,得到第一控制结果;其中,所述当前视频帧包括多个编码树单元,所述编码树单元包括多种尺度的编码单元;对所述编码树单元进行编码树单元级码率控制,得到第二控制结果;基于所述第一控制结果,确定每个所述编码单元的区域类型;其中,所述区域类型为平坦区域或纹理区域;根据所述区域类型、所述第一控制结果以及所述第二控制结果,确定所述编码单元的量化参数;根据所述量化参数,对所述编码单元进行编码。2.根据权利要求1所述的方法,其特征在于,所述第一控制结果包括:在对所述当前视频帧进行所述帧级码率控制时,所获取的所述当前视频帧所包含的所有像素块的亮度值方差的第一平均值;基于所述第一控制结果,确定每个所述编码单元的区域类型包括:确定所述编码单元所包含的所有像素块的亮度值方差的第二平均值;判断所述第二平均值是否小于所述第一平均值;如果是,则确定所述编码单元的区域类型为平坦区域;如果否,则确定所述编码单元的区域类型为纹理区域。3.根据权利要求1所述的方法,其特征在于,所述平坦区域包括以下至少一项:运动连续平坦区域和运动不连续平坦区域;当所述区域类型为所述平坦区域时,所述确定每个所述编码单元的区域类型之后,所述方法还包括:判断所述编码单元的运动矢量和与所述编码单元指定相邻边的编码单元的运动矢量是否相同,如果是,则确定所述区域类型为所述运动连续平坦区域;如果否,则确定所述区域类型为所述运动不连续平坦区域。4.根据权利要求3所述的方法,其特征在于,所述第一控制结果包括:帧级量化参数;所述第二控制结果包括:编码树级量化参数;根据所述区域类型、所述第一控制结果以及所述第二控制结果,确定所述编码单元的量化参数包括:在所述区域类型为所述运动连续平坦区域的情况下,确定所述编码单元的量化参数为所述帧级量化参数与第一预设阈值之和;在所述区域类型为所述运动不连续平坦区域的情况下,确定所述编码单元的量化参数为所述编码树级量化参数与第一预设阈值之差;其中,所述帧级量化参数为在对所述当前视频帧进行所述帧级码率控制时,所获取的量化参数;所述编码树级量化参数为在对所述编码树单元进行所述编码树单元级码率控制时,所获取的量化参数;所述第一预设阈值为非负数。5.根据权利要求1所述的方法,其特征在于,所述纹理区域包括以下至少一项:运动连续纹理区域和运动不连续纹理区域;当所述区域类型为所述纹理区域时,所述确定每个所述编码单元的区域类型之后,所述方法还包括:
判断所述编码单元的运动矢量和与所述编码单元指定相邻边的编码单元的运动矢量是否相同,如果是,则确定所述区域类型为所述运动连续纹理区域;如果否,则确定所述区域类型为所述运动不连续纹理区域。6.根据权利要求5所述的方法,其特征在于,所述第一控制结果包括:帧级量化参数;所述第二控制结果包括:编码树级量化参数;根据所述区域类型、所述第一控制结果以及所述第二控制结果,确定所述编码单元的量化参数包括:在所述区域类型为所述运动连续纹理区域的情况下,确定所述编码单元的量化参数为所述帧级量化参数与第二预设阈值之和;在所述区域类型为所述运动不连续纹理区域的情况下,确定所述编码单元的量化参数为所述编码树级量化参数与第二预设阈值之差;其中,所述帧级量化参数为在对所述当前视频帧进行所述帧级码率控制时,所获取的量化参数;所述编码树级量化参数为在对所述编码树单元进行所述编码树单元级码率控制时,所获取的量化参数;所述第二预设阈值均为非负数。7.根据权利要求1所述的方法,其特征在于,在根据所述量化参数,对所述编码单元进行编码之后,所述方法还包括:判断是否已对所述编码树单元中的每个编码单元均进行了编码;如果是,则结束对所述编码树单元的所述编码树单元级码率控制。8.一种视频编码装置,其特征在于,所述装置包括:第一控制模块,用于对待处理的当前视频帧进行帧级码率控制,得到第一控制结果;其中,所述当前视频帧包括多个编码树单元,所述编码树单元包括多种尺度的编码单元;第二控制模块,用于对所述编码树单元进行编码树单元级码率控制,得到第二控制结果;第一确定模块,用于基于所述第一控制结果,确定每个所述编码单元的区域类型;其中,所述区域类型为平坦区域或纹理区域;第二确定模块,用于根据所述区域类型、所述第一控制结果以及所述第二控制结果,确定所述编码单元的量化参数;编码模块,用于根据所述量化参数,对所述编码单元进行编码。9.一种电子设备,其特征在于,包括:处理器、存储器及存储在所述存储器上并可在所述处理器上运行的程序,所述程序被所述处理器执行时实现如权利要求1至7中任一项所述的视频编码方法的步骤。10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至7中任一项所述的视频编码方法的步骤。
技术总结
本发明提供一种视频编码方法、装置、设备及可读存储介质,方法包括:对待处理的当前视频帧进行帧级码率控制,得到第一控制结果;其中,当前视频帧包括多个编码树单元,编码树单元包括多种尺度的编码单元;对编码树单元进行编码树单元级码率控制,得到第二控制结果;基于第一控制结果,确定每个编码单元的区域类型;其中,区域类型为平坦区域或纹理区域;根据区域类型、第一控制结果以及第二控制结果,确定编码单元的量化参数;根据量化参数,对编码单元进行编码。由此,避免了相关技术中,将各个编码单元的量化参数均设置为相同,易产生块效应,或造成码率浪费的技术问题,使得块效应明显减少,且节省了码率,进一步提升了视频的主观质量。观质量。观质量。
技术研发人员:王峰 王晓丽 林晓青 张平 汪幸
受保护的技术使用者:咪咕文化科技有限公司 中国移动通信集团有限公司
技术研发日:2023.06.30
技术公布日:2023/10/5
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
飞机超市 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/