1.本技术涉及视频编解码技术领域,特别是涉及一种视频编码方法、装置、电子装置和存储介质。
背景技术:
2.视频是连续的图像序列,由连续的帧构成,一帧即为一幅图像。由于人眼的视觉暂留效应,当帧序列以一定的速率播放时,我们看到的就是动作连续的视频。由于连续的帧之间相似性极高,为便于储存传输,我们需要对原始的视频进行编码压缩,以去除空间、时间维度的冗余。
3.视频编解码的标准有h.264/avc(高级视频编码标准,advanced video coding,简称为avc)、h.265/hevc(高性能视频编码标准,high efficiency video coding,简称为hevc)、h.266/vvc(通用视频编码标准,versatile video coding,简称为vvc)、vp8、vp9、av1(aomedia video codec 1.0,简称为av1)、avs(数字音视频编码标准,audio video coding standard,简称为avs)等,其主要目的是将采集到的视频信号压缩成不同标准格式的数据,便于传输或存储。为了将视频编码技术应用于实际场景,码率控制技术在视频编码器中起着至关重要的作用,因为它可以在有限的通信带宽或存储空间的情况下调整编码器输出的目标码率,从而避免编码的视频帧出现过大或过小的情况。
4.目前,相关技术中的视频编码技术往往是通过计算图像的模糊复杂度,并根据模糊复杂度计算得到编码初始量化参数,然后根据预分配的码率和当前帧的复杂度来对初始量化参数进行二次调整,最后将二次调整后的量化参数作为最终的编码参数。然而在这类技术方案中,视频编码只考虑了图像内部的复杂度,没有考虑图像在时间域上的特征,导致图像的纹理信息没有得到正确表征,同时,在硬件编码的码率控制过程中,需要编码过程的中间数据特征指导码控模型参数的调整,若不能准确获取其纹理信息,则不能得到准确的码控结果。
5.目前针对相关技术中图像的纹理信息没有得到正确表征所导致的编码结果准确率低以及硬件编码中硬件芯片无法上报纹理信息的问题,尚未提出有效的解决方案。
技术实现要素:
6.本技术实施例提供了一种视频编码方法、装置、电子装置和存储介质,以至少解决相关技术中图像的纹理信息没有得到正确表征所导致的编码结果准确率低以及硬件编码中硬件芯片无法上报纹理信息的问题。
7.第一方面,本技术实施例提供了一种视频编码方法,所述方法包括:获取待编码视频中当前帧图像的原始数据;根据所述当前帧图像的原始数据,计算所述当前帧图像的时空域复杂度;根据所述时空域复杂度,确定所述当前帧图像的模糊复杂度;采用预设的码率控制算法对所述模糊复杂度进行处理,生成所述当前帧图像所对应的编码参数;根据所述编码参数对所述当前帧图像进行编码,生成所述当前帧图像的编码结果。
8.在其中一些实施例中,根据所述时空域复杂度,确定所述当前帧图像的模糊复杂度包括:在所述当前帧图像为所述待编码视频中的非首帧时,根据所述当前帧图像的上一帧图像的编码帧数加权和,计算得到所述当前帧图像的编码帧数加权和;在所述当前帧图像为所述待编码视频中的非首帧时,根据所述当前帧图像的时空域复杂度以及所述当前帧图像的上一帧图像的编码复杂度加权和,计算得到所述当前帧图像的编码复杂度加权和;根据所述当前帧图像的编码帧数加权和以及编码复杂度加权和,确定所述当前帧图像的模糊复杂度。
9.在其中一些实施例中,根据所述时空域复杂度,确定所述当前帧图像的模糊复杂度包括:在所述当前帧图像为所述待编码视频中的首帧时,确定所述当前帧图像的编码帧数加权和为1;在所述当前帧图像为所述待编码视频中的首帧时,确定所述当前帧图像的编码复杂度加权和为所述当前帧图像的时空域复杂度;根据所述当前帧图像的编码帧数加权和以及编码复杂度加权和,确定所述当前帧图像的模糊复杂度。
10.在其中一些实施例中,根据所述当前帧图像的原始数据,计算所述当前帧图像的时空域复杂度包括:根据所述当前帧图像的原始数据,计算所述当前帧图像的时空域纹理信息,其中,所述时空域纹理信息包括空域纹理信息以及时域纹理信息;根据所述当前帧图像的空域纹理信息,计算所述当前帧图像的空域复杂度;根据当前帧图像的所述时域纹理信息,计算所述当前帧图像的时域复杂度;以预设的第一权重值乘以所述空域复杂度,以预设的第二权重值乘以所述时域复杂度,进行加权求和计算,确定所述当前帧图像的时空域复杂度。
11.在其中一些实施例中,在根据所述当前帧图像的时域纹理信息,计算所述当前帧图像的时域复杂度之后,所述方法还包括:根据所述当前帧图像的帧类型和/或所述当前帧图像的上一帧图像的帧类型,确定与所述当前帧图像对应的第一权重值以及第二权重值,其中,所述帧类型包括:关键帧、差别帧。
12.在其中一些实施例中,根据所述当前帧图像的空域纹理信息,计算所述当前帧图像的空域复杂度包括:将所述当前帧图像划分为多个相同尺寸的像素块;根据所述像素块的尺寸信息,计算当前像素块的平均像素值;计算所述当前像素块中所有像素点的像素值与所述平均像素值的差值;将所述当前像素块中每一像素点的像素值与所述平均像素值的差值进行累加并求平均值,确定所述当前像素块的空域复杂度;将每一像素块的空域复杂度进行累加,确定所述当前帧图像的空域复杂度。
13.在其中一些实施例中,根据所述当前帧图像的时域纹理信息,计算所述当前帧图像的时域复杂度包括:获取所述当前帧图像的上一帧图像;分别将所述当前帧图像以及所述上一帧图像划分为多个相同尺寸的像素块;将当前像素块中的像素点的像素值与所述上一帧图像中相同位置的像素点的像素值的差值进行累加并求平均值,确定所述当前像素块的时域复杂度;将每一像素块的时域复杂度进行累加并求平均值,确定所述当前帧图像的时域复杂度。
14.第二方面,本技术实施例提供了一种视频编码装置,所述装置包括:获取模块,用于获取待编码视频中当前帧图像的原始数据;第一计算模块,用于根据所述当前帧图像的原始数据,计算所述当前帧图像的时空域复杂度;第二计算模块,用于根据所述时空域复杂度,确定所述当前帧图像的模糊复杂度;量化模块,用于采用预设的码率控制算法对所述模
等类似词语并不表示数量限制,可表示单数或复数。本技术所涉及的术语“包括”、“包含”、“具有”以及它们任何变形,意图在于覆盖不排他的包含;例如包含了一系列步骤或模块(单元)的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可以还包括没有列出的步骤或单元,或可以还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。本技术所涉及的“连接”、“相连”、“耦接”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电气的连接,不管是直接的还是间接的。本技术所涉及的“多个”是指大于或者等于两个。“和/或”描述关联对象的关联关系,表示可以存在三种关系,例如,“a和/或b”可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。本技术所涉及的术语“第一”、“第二”、“第三”等仅仅是区别类似的对象,不代表针对对象的特定排序。
26.本实施例提供了一种视频编码方法,图1是根据本技术实施例的视频编码方法的流程图,如图1所示,该方法包括:
27.步骤s101,获取待编码视频中当前帧图像的原始数据。
28.步骤s102,根据当前帧图像的原始数据,计算当前帧图像的时空域复杂度。
29.步骤s103,根据时空域复杂度,确定当前帧图像的模糊复杂度。
30.步骤s104,采用预设的码率控制算法对模糊复杂度进行处理,生成当前帧图像所对应的编码参数。
31.步骤s105,根据编码参数对当前帧图像进行编码,生成当前帧图像的编码结果。
32.在本实施例中,可以根据当前帧图像的原始数据获取对应当前帧图像的时空域纹理信息,时空域纹理信息包括时域纹理信息以及空域纹理信息,时域纹理信息可以包括当前帧图像中每个像素块的时域复杂度,空域纹理信息可以包括当前帧图像中每个像素块的空域复杂度,可以将每一帧图像划分为多个相同尺寸的像素块,计算得到每个像素块的空域复杂度,进而计算得到整一帧图像的空域复杂度;再计算每个像素块的时域复杂度,进而计算得到整一帧图像的平均时域复杂度;通过时空域复杂度共同计算得到图像的模糊复杂度,最后再将计算得到的模糊复杂度应用于预设的码率控制算法,得到与当前帧图像的对应的编码参数,基于该编码参数对当前帧图像进行编码,生成当前帧图像的编码结果。
33.相关技术中的视频编码技术往往是通过计算图像的模糊复杂度,并根据模糊复杂度计算得到编码初始量化参数,然后根据预分配的码率和当前帧的复杂度来对初始量化参数进行二次调整,最后由二次调整后的量化参数得出编码参数。然而在这类技术方案中,视频编码只考虑了图像内部的复杂度,没有考虑图像在时间域上的特征,导致图像的纹理信息没有得到正确表征,同时,在硬件编码的码率控制过程中,需要编码过程的中间数据特征指导码控模型参数的调整,若不能准确获取其纹理信息,则不能得到准确的码控结果。
34.通过上述步骤s101至步骤s105,通过计算得到图像的空域复杂度,计算得到图像的平均时域复杂度,进而通过时空域复杂度共同计算得到图像的模糊复杂度,最后再将计算得到的模糊复杂度应用于预设的码率控制算法,得到与当前帧图像的对应的编码参数,基于该编码参数对当前帧图像进行编码,生成当前帧图像的编码结果,充分考虑到图像在时间域上的特征,按照图像的时空域复杂度计算得到模糊复杂度,并根据该模糊复杂度调节图像的视频码率,使得视频编码能够得到更准确的编码结果,提高了图像的画面质量的同时也提高了网络传输的效率。通过本技术,解决了相关技术中图像的纹理信息没有得到正确表征所导致的编码结果准确率低以及硬件编码中硬件芯片无法上报纹理信息的问题,
实现了提高编码结果的准确度的技术效果。
35.在其中一些实施例中,根据时空域复杂度,确定当前帧图像的模糊复杂度通过如下步骤实现:
36.步骤1,在当前帧图像为待编码视频中的非首帧时,根据当前帧图像的上一帧图像的编码帧数加权和,计算得到当前帧图像的编码帧数加权和。
37.步骤2,在当前帧图像为待编码视频中的非首帧时,根据当前帧图像的时空域复杂度以及当前帧图像的上一帧图像的编码复杂度加权和,计算得到当前帧图像的编码复杂度加权和。
38.步骤3,根据当前帧图像的编码帧数加权和以及编码复杂度加权和,确定当前帧图像的模糊复杂度。
39.在本实施例中,计算当前帧图像的编码帧数加权和可以通过下式实现:
40.cplxcount[i]=cplxcount[i
‑
1]*0.5 1;
[0041]
在上式中,cplxcount[i]为当前帧图像的编码帧数加权和,cplxcount[i
‑
1]为当前帧图像的上一帧图像的编码帧数加权和,i为当前帧图像在待编码视频中的编号。
[0042]
在上述实施例中,计算当前帧图像的编码复杂度加权和可以通过下式实现:
[0043]
cplxsum[i]=cplxsum[i
‑
1]*0.5 texturest[i];
[0044]
在上式中,cplxsum[i]为当前帧图像的编码复杂度加权和,cplxsum[i
‑
1]为当前帧图像的上一帧图像的编码复杂度加权和,texturest[i]为当前帧图像的时空域复杂度。
[0045]
在上述实施例中,确定当前帧图像的模糊复杂度可以通过下式实现:
[0046][0047]
在上式中,blurred_complexity[i]为当前帧图像的模糊复杂度,cplxsum以及cplxcount均为迭代量,可以通过当前帧图像的模糊复杂度计算编码参数,将当前帧图像的模糊复杂度输入预设的码率控制算法中,进而完成当前帧图像的编码过程。
[0048]
在本实施例中,在当前帧图像为待编码视频中的首帧时,可以确定当前帧图像的编码帧数加权和为1,在当前帧图像为待编码视频中的首帧时,可以确定当前帧图像的编码复杂度加权和即为当前帧图像的时空域复杂度,根据当前帧图像的编码帧数加权和以及编码复杂度加权和,确定当前帧图像的模糊复杂度。
[0049]
在本实施例中,码率控制算法可以为abr(平均码率控制,average bitrate,简称为abr)码率控制算法,abr码率控制的整个过程可以通过如下步骤实现:
[0050]
步骤1,根据当前帧图像的模糊复杂度,计算得到量化参数,并对量化参数进行两次修正。
[0051]
在本实施例中,可以通过下式获取当前帧图像的量化参数:
[0052]
qscale[i]=blurred_complexity[i]
(1
‑
qcompress)
;
[0053][0054]
qscale[i]=qscale[i]*overflow;
[0055]
在上式中,qscale[i]为当前帧图像的量化参数,可以通过rate_factor以及overflow两个参数,对量化参数进行两次修正,qcompress为压缩控制参数,可设为0.6。
[0056]
量化参数第一次通过rate_factor进行修正,rate_factor反映到目前为止根据模糊复杂度计算的原始编码参数的准确性。
[0057]
量化参数第二次通过overflow进行修正,overflow反映总目标比特和实际产生的总比特之间的偏差。
[0058]
步骤2,根据已编码帧的数量与编码参数、量化参数之间的关系,调整量化参数。
[0059]
在本实施例中,若当前帧图像是待编码视频中的首帧图像,且当前帧图像为关键帧,则不进行该过程。
[0060]
若当前帧图像是待编码视频中的非首帧图像,且当前帧图像为关键帧,可以根据关键帧(i帧)、差别帧(p帧)的比例因子ip_factor,来更新参数accum_p_q,从而调整量化参数,如下式所示:
[0061][0062]
qscale=abs(ip_factor);
[0063]
在上式中,ip_factor可设为1.4,qp2qscale为由编码参数qp转换为量化参数qscale的函数,如下式所示:
[0064]
qscale=0.85
×2(qp
‑
12)/6
;
[0065]
在上式中,accum_p_q以及accum_p_norm为编码参数qp根据已编码帧数量不断的累加平均后的结果。
[0066]
步骤3,根据预设的缓存区和预测帧编码的比特数量之间的关系,调整量化参数。
[0067]
步骤4,根据量化参数计算得到对应于当前帧图像的编码参数。
[0068]
在本实施例中,当前帧图像的编码参数可以通过下式实现:
[0069][0070]
在上式中,a可设为12,b可设为6,c可设为0.85,a、b、c可以按照实际情况以及经验获取。
[0071]
步骤5,根据当前帧图像的编码参数,对当前帧图像进行编码操作,得到当前帧图像的编码结果。
[0072]
在上述实施例中,可以根据当前帧图像的时空域复杂度指导码率控制过程,按照图像的时空域复杂度计算得到模糊复杂度,并根据该模糊复杂度调节图像的视频码率,使得视频编码能够得到更准确的编码结果,提高了图像的画面质量的同时也提高了网络传输的效率。
[0073]
在其中一些实施例中,根据当前帧图像的原始数据,计算当前帧图像的时空域复杂度可以通过如下步骤实现:
[0074]
步骤1,根据所述当前帧图像的原始数据,计算所述当前帧图像的时空域纹理信息,其中,所述时空域纹理信息包括空域纹理信息以及时域纹理信息。
[0075]
步骤2,根据当前帧图像的空域纹理信息,计算当前帧图像的空域复杂度。
[0076]
步骤3,根据当前帧图像的时域纹理信息,计算当前帧图像的时域复杂度。
[0077]
步骤4,以预设的第一权重值乘以空域复杂度,以预设的第二权重值乘以时域复杂度,进行加权求和计算,确定当前帧图像的时空域复杂度。
[0078]
在本实施例中,在根据当前帧图像的时域纹理信息,计算当前帧图像的时域复杂
度之后,还实施如下步骤:根据当前帧图像的帧类型和/或当前帧图像的上一帧图像的帧类型,确定与当前帧图像对应的第一权重值以及第二权重值,其中,帧类型包括:关键帧、差别帧。
[0079]
在上述实施例中,当前帧图像的时空域复杂度可以通过下式获取:
[0080]
texturest=k1
·
textures k2
·
texturet;
[0081]
其中,texturest为当前帧图像的时空域复杂度,textures为当前帧图像的空域复杂度,texturet为当前帧图像的时域复杂度,k1为第一权重值,k2为第二权重值。
[0082]
计算当前帧图像的时空域复杂度时,应当考虑当前帧图像和上一帧图像的帧类型,第一权重值和第二权重值应当根据帧类型的不同而不同。
[0083]
例如,当前帧图像为关键帧时,k1可以为100,k2可以为0;当前帧图像的上一帧图像为关键帧时,k1可以为1.1,k2可以为0;当前帧为差别帧且当前帧图像的上一帧图像不为关键帧时,k1可以为1,k2可以为100。
[0084]
通过考虑当前帧图像和当前帧图像的上一帧图像的帧类型的影响,并设置不同的权重值对当前帧图像的时空域复杂度进行加权求和计算,可以提高当前帧图像的时空域复杂度的计算结果的准确度。
[0085]
在其中一些实施例中,根据当前帧图像的空域纹理信息,计算当前帧图像的空域复杂度通过如下步骤实现:
[0086]
步骤1,将当前帧图像划分为多个相同尺寸的像素块。
[0087]
步骤2,根据像素块的尺寸信息,计算得到当前像素块的平均像素值。
[0088]
步骤3,计算当前像素块中所有像素点的像素值与平均像素值的差值。
[0089]
步骤4,将当前像素块中每一像素点的像素值与平均像素值的差值进行累加并求平均值,确定当前像素块的空域复杂度。
[0090]
步骤5,将每一像素块的空域复杂度进行累加,确定当前帧图像的空域复杂度。
[0091]
在本实施例中,空域纹理信息用于度量当前帧图像的空域复杂度,可以将当前帧图像划分为多个尺寸大小为m*n的像素块,像素块的大小可以设置为16*16、32*32、64*64等尺寸,并计算得到当前像素块的平均像素值
[0092][0093]
在上式中,p
i,j
即为在(i,j)位置的像素值。
[0094]
在计算得到当前像素块中所有像素点的像素值与平均像素值的差值,并将当前像素块中每一像素点的像素值与平均像素值的差值进行累加并求平均值,得到当前像素块的空域复杂度blks:
[0095][0096]
最后每一像素块的空域复杂度进行累加,得到当前帧图像的空域复杂度其中,d为当前帧图像中的像素块的中枢,textures即当前帧图像的空域复杂度。
[0097]
在其中一些实施例中,根据当前帧图像的时域纹理信息,计算当前帧图像的时域
复杂度通过如下步骤实现:
[0098]
步骤1,获取当前帧图像的上一帧图像。
[0099]
步骤2,分别将当前帧图像以及上一帧图像划分为多个相同尺寸的像素块。
[0100]
步骤3,将当前像素块中的像素点的像素值与上一帧图像中相同位置的像素点的像素值的差值进行累加并求平均值,确定当前像素块的时域复杂度。
[0101]
步骤4,将每一像素块的时域复杂度进行累加并求平均值,确定当前帧图像的时域复杂度。
[0102]
在本实施例中,时域纹理信息用于度量当前帧图像的时域复杂度,为了计算当前帧图像或者当前像素块的时域纹理信息,需要获取当前帧图像的上一帧图像的信息,可以用p
curr
‑1表示,可以将当前像素块中的像素点的像素值与上一帧图像中相同位置的像素点的像素值的差值进行累加并求平均值,计算得到当前像素块的时域复杂度:
[0103][0104]
在上式中,m、n表示当前像素块的尺寸大小,表示当前像素块中的像素点的像素值,表示上一帧图像中相同位置的像素点的像素值。
[0105]
假定当前帧图像的像素块的数量为d,则将每一像素块的时域复杂度进行累加并求平均值,计算得到当前帧图像的时域复杂度:
[0106][0107]
在上述实施例中,通过当前帧图像的原始数据计算得到当前帧图像的空域复杂度以及时域复杂度,不仅能够更加准确的表征当前帧图像的空域纹理信息以及时域纹理信息,还能够解决硬件编码中硬件芯片无法上报纹理信息的问题,且该纹理信息的计算方法计算简便,能够很好地满足软件视频编解码装置的使用,且能很好地适配进不同视频编码标准和硬件编码中。
[0108]
本实施例提供了一种视频编码装置,图2是根据本技术实施例的视频编码装置的结构框图,如图2所示,该装置包括:获取模块20,用于获取待编码视频中当前帧图像的原始数据;第一计算模块21,用于根据当前帧图像的原始数据,计算当前帧图像的时空域复杂度;第二计算模块22,用于根据时空域复杂度,确定当前帧图像的模糊复杂度;量化模块23,用于采用预设的码率控制算法对模糊复杂度进行处理,生成当前帧图像所对应的编码参数;编码模块24,用于根据编码参数对当前帧图像进行编码,生成当前帧图像的编码结果。
[0109]
在其中一些实施例中,第二计算模块22还被配置为用于在当前帧图像为待编码视频中的非首帧时,根据当前帧图像的上一帧图像的编码帧数加权和,计算得到当前帧图像的编码帧数加权和;在当前帧图像为待编码视频中的非首帧时,根据当前帧图像的时空域复杂度以及当前帧图像的上一帧图像的编码复杂度加权和,计算得到当前帧图像的编码复杂度加权和;根据当前帧图像的编码帧数加权和以及编码复杂度加权和,确定当前帧图像的模糊复杂度。
[0110]
在其中一些实施例中,第二计算模块22还被配置为用于在当前帧图像为待编码视频中的首帧时,确定当前帧图像的编码帧数加权和为1;在当前帧图像为待编码视频中的首
programmable read
‑
only memory,简称为eeprom)、电可改写rom(electrically alterable read
‑
only memory,简称为earom)或闪存(flash)或者两个或更多个以上这些的组合。在合适的情况下,该ram可以是静态随机存取存储器(static random
‑
access memory,简称为sram)或动态随机存取存储器(dynamic random access memory,简称为dram),其中,dram可以是快速页模式动态随机存取存储器(fast page mode dynamic random access memory,简称为fpmdram)、扩展数据输出动态随机存取存储器(extended date out dynamic random access memory,简称为edodram)、同步动态随机存取内存(synchronous dynamic random
‑
access memory,简称sdram)等。
[0119]
存储器304可以用来存储或者缓存需要处理和/或通信使用的各种数据文件,以及处理器302所执行的可能的计算机程序指令。
[0120]
处理器302通过读取并执行存储器304中存储的计算机程序指令,以实现上述实施例中的任意一种视频编码方法。
[0121]
可选地,上述电子装置还可以包括传输设备306以及输入输出设备308,其中,该传输设备306和上述处理器302连接,该输入输出设备308和上述处理器302连接。
[0122]
可选地,在本实施例中,上述处理器302可以被设置为通过计算机程序执行以下步骤:
[0123]
s1,获取待编码视频中当前帧图像的原始数据。
[0124]
s2,根据当前帧图像的原始数据,计算当前帧图像的时空域复杂度。
[0125]
s3,根据时空域复杂度,确定当前帧图像的模糊复杂度。
[0126]
s4,采用预设的码率控制算法对模糊复杂度进行处理,生成当前帧图像所对应的编码参数。
[0127]
s5,根据编码参数对当前帧图像进行编码,生成当前帧图像的编码结果。
[0128]
需要说明的是,本实施例中的具体示例可以参考上述实施例及可选实施方式中所描述的示例,本实施例在此不再赘述。
[0129]
另外,结合上述实施例中的视频编码方法,本技术实施例可提供一种存储介质来实现。该存储介质上存储有计算机程序;该计算机程序被处理器执行时实现上述实施例中的任意一种视频编码方法。
[0130]
本领域的技术人员应该明白,以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
[0131]
以上实施例仅表达了本技术的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本技术范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本技术构思的前提下,还可以做出若干变形和改进,这些都属于本技术的保护范围。因此,本技术的保护范围应以所附权利要求为准。
转载请注明原文地址:https://win.8miu.com/read-150463.html