基于视频前处理信息的码率调控方法与流程

文档序号:37626755发布日期:2024-04-18 17:40阅读:21来源:国知局
基于视频前处理信息的码率调控方法与流程

本发明属于视频编码,具体涉及一种基于视频前处理信息的码率调控方法。


背景技术:

1、随着现代社会的科学技术的进步与通信需求的增长,视频作为一种重要的信息交流的媒介,其所包含的信息的质量也越来越高。然而,高质量的视频同时带来的是庞大的数据量,有限的带宽无法满足对当下社会对视频的高效传输的需求。为了解决以上问题,国内外的标准组织制定并持续维护了多个视频编码标准,如hevc、vvc、avs标准等,这些标准力求在保证视频高质量的同时,降低视频的码率,即视频的大小,以便于用更低的成本对视频进行压缩传输。

2、当前绝大多数的基于各个标准设计的编码器,都会在实际编码之前对视频进行预处理或预分析,通过这一步获得的信息有助于提升实际编码阶段的质量和效率。运动补偿时域滤波算法是视频预处理中的一种算法,其思路是通过对重要的被参考帧(i帧、部分p帧)进行双边滤波,以保存更多时域信息的同时去除噪声,以降低参考帧的码率。该算法共分为四个阶段:第一阶段,筛选待滤波帧及参考帧。待滤波帧通常是低时间层的帧,即被多次参考的帧,通常是i帧及部分p帧。而参考帧则是待滤波帧时域的前后向相邻的若干帧,通常取前后向相邻的两帧。第二阶段,对待滤波帧和参考帧进行二倍和四倍下采样,进行分层的运动估计。前三层的运动估计为整像素运动估计,估计的单位为16×16的块。而最后一层的运动估计为分像素运动估计,估计的单位缩小为8×8的块。第三阶段,根据上一阶段最后一层运动估计获得的运动向量,对每一个参考帧做运动补偿,并保存补偿帧,计算该过程中的部分参数(如补偿块与当前块的误差,噪声等)。最后一阶段,进行滤波参数决策,结合补偿帧对待滤波帧做双边滤波。

3、在视频预分析阶段,编码器也会对待编码帧进行二倍下采样,并以16×16的cu为单位做简化过的帧内预测和帧间预测。简化的帧内预测分为三个阶段:第一阶段只针对dc,planar,角度方向{5,10,15,20,25,30}共八种模式预测,根据satd cost选出一个最优模式。第二阶段对上一阶段的最优模式步长为2的相邻两侧的两个模式计算satd cost,选出最优的一个模式。第三阶段与第二阶段类似,只不过将步长缩短为1,再次计算两个模式的satd cost,并选择最优模式,该模式对应的cost即为当前cu的帧内预测cost。简化版的帧间预测与实际帧间预测类似,包含运动搜索和估计,并对原始图像与预测图象的残差图像计算satd cost。以上信息在获取后会被保存,以便于后续的码率控制等编码模块使用,以提升视频质量或降低编码复杂度。

4、以上运动补偿时域滤波算法中,在进行运动估计和运动补偿时,计算了很多重要的参数,如当前块与补偿块的误差及噪声,但它们仅仅被用于滤波参数的决策,而忽略了它们在实际编码时能够反映的内容,即编码内容的复杂度和重要性。


技术实现思路

1、鉴于以上存在的问题,本发明提供一种基于视频前处理信息的码率调控方法。

2、为解决上述技术问题,本发明采用如下的技术方案:

3、一种基于视频前处理信息的码率调控方法,包括以下步骤:

4、s1,判断是否启用运动补偿时域滤波,并且当前帧的编码帧为滤波帧;

5、s2,若是,搜集当前帧在前处理过程中计算的帧内以及帧间预测satd值;

6、s3,以编码树单元ctu为单位计算运动补偿时域滤波算法中每一个滤波帧的误差errorfilter64×64;

7、s4,根据上述信息,以及预先设置的qp值调整表deltaqpmap,对待滤波帧每个ctu的量化参数qp进行调整。

8、一种可能的实施方式中,s1中判断是否启用运动补偿时域滤波为:预先设定时域滤波开启标志btemporalfilter,该值为1时,代表启用;为0时,代表关闭。

9、一种可能的实施方式中,s1中判断当前帧的编码帧为滤波帧为:判断待滤波帧的标志bisfilter是否为真,当前待处理帧的帧序号能被8整除,且当前待处理帧的帧类型为i帧或p帧时,bisfilter为真。

10、一种可能的实施方式中,s3中以编码树单元ctu为单位计算运动补偿时域滤波算法中每一个滤波帧的误差errorfilter64×64包括:

11、计算待滤波帧的相邻参考帧进行补偿后的块大小为8×8的误差errorref8×8:

12、

13、其中,v为当前块和补偿块的方差,ssd为像素差值的平方和;

14、进行码率控制的单位是64×64大小的ctu,ctu的误差errorref64×64为:

15、

16、其中,blockcnt为当前64×64的ctu中8×8的cu块的数量;

17、对于每个待滤波帧,通常会有4个参考帧,对这4参考帧的errorref64×64都进行计算,以综合判断每个滤波帧的ctu的误差大小;记相邻的前向和后向距离为1的两个参考帧的errorref64×64的平均值为e1,距离为2的平均值为e2,那么每个ctu的errorfilter64×64计算公式为:

18、errorfilter64×64=max(e1,e2)+|e1-e2|×2。

19、一种可能的实施方式中,s4中根据上述信息,以及预先设置的qp值调整表deltaqpmap,对待滤波帧每个ctu的量化参数qp进行调整包括:

20、将计算的每个ctu的error存入数组中备用,该数组可存储的整数数量即为当前帧的ctu数量;

21、提取在视频前处理过程中,对当前编码帧进行二倍下采样,并使用简化版的帧内预测,以16×16为单位进行预测,并计算satd cost;计算完毕后,由于预测帧经过了二倍下采样,所以16×16为单位的块索引经上采样后为32×32块。为了之后的码率控制过程可以利用该satd值,每个ctu块的satd值为这四个32×32块的satd值的平均值;所述的satd值指预测后生成的残差块经hadamard变换后再求各元素的绝对值之和;

22、结合ctu的帧内预测的satd值,以及运动补偿时域滤波过程中获得的error值,设计得到qp值调整表deltaqpmap;

23、根据qp值调整表,以ctu为单位,为当前滤波帧的每个ctu确定qp的变化值,并对每个ctu的qp进行调整;其中ctu的qp代表着当前ctu的量化参数,其计算公式为:

24、

25、其中,qscale通过编码器内部的映射获得;之后,根据deltaqpmap的映射,计算当前ctu的块qp:

26、qpfi0al=qpbase+deltaqp。

27、一种可能的实施方式中,qp值调整表deltaqp map包括:

28、若帧内satd<100,且误差error>75,则deltaqp取值为+3。

29、一种可能的实施方式中,qp值调整表deltaqp map包括:

30、若帧内satd<=400,且误差30<error<=60,则deltaqp取值为+1。

31、一种可能的实施方式中,qp值调整表deltaqp map包括:

32、若帧内satd>1000,且误差error<=10,则deltaqp取值为-3。

33、一种可能的实施方式中,qp值调整表deltaqp map包括:

34、如果误差error>60,则deltaqp取值为+2。

35、一种可能的实施方式中,qp值调整表deltaqp map包括:

36、如果若帧内satd>400,误差30<error<=60,则deltaqp取值为0。

37、一种可能的实施方式中,qp值调整表deltaqp map包括:

38、如果误差15<error<=30,则deltaqp取值为-1。

39、一种可能的实施方式中,qp值调整表deltaqp map包括:

40、如果误差error<=15,则deltaqp取值为-2。

41、采用本发明具有如下的有益效果:用运动补偿时域滤波的中间信息,结合视频前处理过程中的预分析的satd cost,以ctu为单位对所有被滤波的帧进行码率控制,以进一步节省码率。

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