本发明涉及视频编码技术领域,尤其涉及一种基于h.265的码率控制方法、系统及装置。
背景技术:
随着视频服务多样化的发展以及超高清视频的普及,原有的视频编码标准h.264/avc越来越满足不了需求,人们迫切需要一种新的更加高效的视频编码标准。h.265是新一代视频编码标准,它沿用了传统视频编码标准的混合视频编码基本框架,但在各个编码模块上都进行了改进和革新,如采用了基于四叉树结构的分割技术等。与h.264/avc相比,在同等应用条件和视频质量下釆用h.265进行编码的码率要降低将近一半。
在视频编码的过程中,输出的视频质量与使用的码率是密切相关的,编码视频的质量越好,消耗的码率资源也会越多。但是在实际的应用过程中,因为存储空间和传输带宽有限,需要将编码视频的输出码率控制在一定范围内,同时又要尽可能地提高视频质量,这时就用到了码率控制。码率控制虽然不是视频编码中必须的内容,但是却是视频编码的非常重要组成部分。然而,现有的一些码率控制算法并未考虑到实际应用中场景切换对视频编码和码率控制的影响。场景切换会切断相邻帧之间的时间相关性,若编码器不能及时进行调整,将会导致编码资源浪费,压缩效率降低,同时预测模型参数的有效性也会降低,影响码率控制的准确性。
技术实现要素:
为了解决上述技术问题,本发明的目的是提供一种基于h.265的码率控制方法、系统及装置,令码率控制效果更好,在保证编码视频的输出码率的同时可提高有场景切换视频的客观质量。
本发明所采用的第一技术方案是:一种基于h.265的码率控制方法,包括以下步骤:
s1、根据输入的视频序列,判断当前帧是否为场景切换帧;
s2、若当前帧为场景切换帧时,将当前帧设置为i帧,以及令位于场景切换帧之后的帧不将位于场景切换帧之前的帧作为参考帧;
s3、根据量化参数与拉格朗日乘子法系数之间的关系,更新量化参数;
s4、对位于场景切换帧后的新的gop进行目标比特分配;
s5、根据新的gop的目标比特数,对新的帧层进行目标比特分配,然后执行步骤s8;
s6、若当前帧不为场景切换帧时,则进行gop层目标比特分配;
s7、根据步骤s6的gop的目标比特数,进行帧层目标比特分配,然后执行步骤s8;
s8、利用r-q模型以及帧层目标比特分配结果,计算出对应的量化参数;
s9、根据计算出的量化参数,进行率失真优化后,根据率失真优化结果来选出最佳编码模式;
s10、根据选出的最佳编码模式进行编码处理;
s11、判断当前帧是否为最后一帧,若是,则结束;反之,则进行模型参数的更新,然后返回执行步骤s1。
进一步,所述步骤s1中所述判断当前帧是否为场景切换帧这一步骤,其具体包括:
s101、计算当前帧与前一帧之间的亮度差;
s102、计算已编码帧的亮度变化趋势;
s103、计算亮度差与亮度变化趋势之间的比值;
s104、判断计算出的比值是否大于阈值,若是,则表示当前帧为场景切换帧;反之,则表示当前帧不为场景切换帧。
进一步,所述步骤s3具体包括:
s301、计算出场景切换帧的拉格朗日乘子法系数;
s302、根据量化参数与拉格朗日乘子法系数之间的关系,以及计算出的拉格朗日乘子法系数,计算出新的量化参数。
进一步,所述步骤s4中所采用的分配公式如下所示:
式中,tgop,i是分配给第i个gop的目标比特数;rt是目标码率;f是帧率;ngop表示gop的大小;r'r,i-1是前一个gop的剩余比特数,需要将提前终止的gop的剩余比特数计算在内;ncoded是已编码帧数;r'coded是已编码帧消耗的比特数,需要将编码场景切换帧所消耗的比特数计算在内;sw是平滑窗大小。
进一步,所述步骤s5中所述根据新的gop的目标比特数,对新的帧层进行目标比特分配这一步骤,其所采用的分配公式如下所示:
式中,tf,j为分配给第j帧的目标比特数;tbl,j和bc,j分别为第j帧的目标缓冲水平和实际缓冲水平;rj,gop是将gop的目标比特数tgop减去编码帧所消耗的比特数后所得到的剩余比特数;nrem是剩余帧数;γ和ω为参数。
进一步,所述步骤s6中所述进行gop层目标比特分配这一步骤,其所采用的分配公式如下所示:
式中,tgop,i是分配给第i个gop的目标比特;rt是目标码率;f是帧率;ngop表示gop的大小;rr,i-1是前一个gop的剩余比特数;ncoded是已编码帧数;rcoded是已编码帧消耗的比特数;sw是平滑窗大小。
进一步,所述s8具体包括:
s801、根据帧层目标比特分配的总比特数以及利用码率模型,计算出码率;
s802、根据计算出的码率以及利用码率控制公式,计算出量化步长;
s803、根据量化步长与量化参数之间的映射关系以及计算出的量化步长,计算得出量化参数。
进一步,所述步骤s11中所述进行模型参数的更新这一步骤,其具体包括:
s1101、对块大小进行更新,其所采用的第一更新公式如下所示:
s1102、对r-q模型中的指数参数进行更新,其所采用的第二更新公式如下所示:
式中,
s1103、对r-q模型中的系数参数进行更新。
本发明所采用的第二技术方案是:一种基于h.265的码率控制系统,包括:
第一模块,用于根据输入的视频序列,判断当前帧是否为场景切换帧;
第二模块,用于若当前帧为场景切换帧时,将当前帧设置为i帧,以及令位于场景切换帧之后的帧不将位于场景切换帧之前的帧作为参考帧;
第三模块,用于根据量化参数与拉格朗日乘子法系数之间的关系,更新量化参数;
第四模块,用于对位于场景切换帧后的新的gop进行目标比特分配;
第五模块,用于根据新的gop的目标比特数,对新的帧层进行目标比特分配,然后执行第八模块所对应的数据处理流程;
第六模块,用于若当前帧不为场景切换帧时,则进行gop层目标比特分配;
第七模块,用于根据第六模块的gop的目标比特数,进行帧层目标比特分配,然后执行第八模块所对应的数据处理流程;
第八模块,用于利用r-q模型以及帧层目标比特分配结果,计算出对应的量化参数;
第九模块,用于根据计算出的量化参数,进行率失真优化后,根据率失真优化结果来选出最佳编码模式;
第十模块,用于根据选出的最佳编码模式进行编码处理;
第十一模块,用于判断当前帧是否为最后一帧,若是,则结束;反之,则进行模型参数的更新,然后返回执行第一模块所对应的数据处理流程。
本发明所采用的第三技术方案是:一种基于h.265的码率控制装置,包括:
至少一个处理器;
至少一个存储器,用于存储至少一个程序;
当所述至少一个程序被所述至少一个处理器执行,使得所述至少一个处理器实现如第一技术方案所述基于h.265的码率控制方法。
本发明方法、系统及装置的有益效果是:本发明在基于r-q模型码率控制过程中加入了场景切换的判断,这可在保证编码视频的输出码率的同时提高有场景切换视频的客观质量,而且可以适用于不同的视频类型进行编码,具有广泛的应用意义以及高的商业价值。
附图说明
图1是本发明一种基于h.265的码率控制方法的步骤流程图;
图2是本发明一种基于h.265的码率控制系统的结构框图;
图3是本发明一种基于h.265的码率控制装置的结构框图。
具体实施方式
下面结合附图和具体实施例对本发明做进一步的详细说明。对于以下实施例中的步骤编号,其仅为了便于阐述说明而设置,对步骤之间的顺序不做任何限定,实施例中的各步骤的执行顺序均可根据本领域技术人员的理解来进行适应性调整。
如图1所示,本发明实施例提供了一种基于h.265的码率控制方法,包括以下步骤:
s1、根据输入的视频序列,判断当前帧是否为场景切换帧。
优选地,所述步骤s1中所述判断当前帧是否为场景切换帧这一步骤,其具体包括:
s101、计算当前帧与前一帧之间的亮度差;
具体地,所述亮度差的计算公式优选为:
式中,d(n)为当前帧与前一帧之间的亮度差,即第n帧与第n-1帧之间的亮度差,即当前帧的亮度变化;yn(i,j)和yn-1(i,j)分别是n帧和n-1帧在(i,j)位置的亮度分量值;m和n分别是帧的宽度和高度;
s102、计算已编码帧的亮度变化趋势;
具体地,所述前面已编码帧的亮度变化趋势d′(n-1),其计算公式优选为:
d′(n-1)=0.5×d(n-1)+0.5×d′(n-2)
式中,设输入的视频序列中的第二帧以及场景切换后一帧的d′都等于d,d′(n-1)的计算不包括上一个场景切换帧及其之前的帧;
s103、计算亮度差与亮度变化趋势之间的比值;
具体地,为了消除没有发生切换的场景中运动的快慢变化也会影响到d(n)的大小,将当前帧的亮度变化d(n)与前面已编码帧的亮度变化趋势d′(n-1)相比较,求出它们之间的比值;
优选地,所述比值的计算公式如下所示:
设输入的视频序列中的第一帧、第二帧的k为1,由于场景切换发生后的几帧内一般不会再发生场景变换,但此时亮度变化趋势也并不稳定,为防止发生误判,优选设场景变换后的4帧的k都等于1;
s104、判断计算出的比值是否大于阈值,若是,则表示当前帧为场景切换帧;反之,则表示当前帧不为场景切换帧;
具体地,将k(n)与设置的阈值th进行比较,当k(n)>th时,判断当前帧为场景切换帧;反之,判断当前帧不为场景切换帧;其中,阈值可通过实验经验取值。
s2、若当前帧为场景切换帧时,将当前帧设置为i帧,以及令位于场景切换帧之后的帧不将位于场景切换帧之前的帧作为参考帧。
具体地,当判断出当前帧为场景切换帧时,则将当前帧设置为i帧,而后面的帧不把发生场景变换以前的帧作为参考帧;并且此时,则终止当前帧所处的gop的处理。
s3、根据量化参数qp与拉格朗日乘子法系数λ之间的关系,更新量化参数。
具体地,所述步骤s3优选包括:
s301、计算出场景切换帧的拉格朗日乘子法系数;
s302、根据量化参数qp与拉格朗日乘子法系数λ之间的关系,以及计算出的拉格朗日乘子法系数,计算出新的量化参数。
在本实施例中,对于上述量化参数qp与拉格朗日乘子法系数λ之间的关系,以及场景切换帧的拉格朗日乘子法系数λ的计算公式,它们优选为:
根据r-λ模型得知,量化参数qp与λ之间的关系如下:
qp=4.2005×lnλ+13.7122
为了保证视频质量的平滑,当前帧的λ和qp应该尽量与前面已编码帧的λ和qp保持一致,同时,又考虑当前帧可能会产生大量比特进而造成缓冲区上溢,那么λ和qp应该适当上调,但场景切换帧作为关键参考帧,它的编码质量将严重影响后续编码帧的质量,λ和qp又不能过大,故步骤s301优选采用如下公式来确定计算出场景切换帧的λ:
λcur=λpre×r'
式中,λcur是编码当前场景切换帧要用的λ值;λpre表示实际编码上一个gop中最后一帧所用的λ值;r'是一个调节因子,设qppre为实际编码上一个gop中最后一帧所用的qp值,当qppre小于32时,令r的取值为4,这可防止发生缓冲区上溢,当qppre大于32时,令r的取值为-4,这可保证编码质量;结合上边两个公式计算出更新的qp值。
s4、对位于场景切换帧后的新的gop进行目标比特分配。
具体地,所述步骤s4中所述对位于场景切换帧后的新的gop进行目标比特分配这一步骤,其所采用的分配公式如下所示:
式中,tgop,i是分配给第i个gop的目标比特数,即第i个gop的目标比特数;rt是目标码率;f是帧率;ngop表示gop的大小;ncoded是已编码帧数;sw是平滑窗大小;r'r,i-1是前一个gop的剩余比特数,需要将提前终止的gop的剩余比特数计算在内,即r'r,i-1是前一个gop的剩余比特数加上提前终止的gop的剩余比特数的和;r'coded是已编码帧消耗的比特数,需要将编码场景切换帧所消耗的比特数计算在内,即r'coded是已编码帧消耗的比特数加上编码场景切换帧所消耗的比特数的和。其中,对于所述提前终止的gop的剩余比特数和编码场景切换帧所消耗的比特数,它们是基于上述步骤s3所更新的qp值而计算得出的。
s5、根据新的gop的目标比特数,对新的帧层进行目标比特分配,即对新的gop中的帧图进行帧层目标比特分配;然后执行步骤s8。
具体地,所述步骤s5中所述根据新的gop的目标比特数,对新的帧层进行目标比特分配这一步骤,其所优选采用的分配公式如下所示:
式中,tf,j为分配给第j帧的目标比特数,即第j帧的目标比特数;rt是目标码率;f是帧率;tbl,j和bc,j分别为第j帧的目标缓冲水平和实际缓冲水平;rj,gop是将gop的目标比特数tgop减去已编码帧所消耗的比特数后所得到的剩余比特数;nrem是剩余帧数;γ和ω为参数。在本实施例中,γ和ω优选被设置成0.25和0.5。
s6、若当前帧不为场景切换帧时,则进行gop层目标比特分配。
具体地,所述步骤s6中所述进行gop层目标比特分配这一步骤,其所采用的分配公式如下所示:
式中,tgop,i是分配给第i个gop的目标比特;rt是目标码率;f是帧率;ngop表示gop的大小;rr,i-1是前一个gop的剩余比特数;ncoded是已编码帧数;rcoded是已编码帧消耗的比特数;sw是平滑窗大小。可见,在此步骤s6中,所述进行gop层目标比特分配所采用的公式与上述步骤s4所采用的公式相同,只是此处无需添加切换帧和所在组的剩余比特数,即正常处理便可。
s7、根据步骤s6的gop的目标比特数,进行帧层目标比特分配,然后执行步骤s8。
具体地,所述步骤s7中所述进行帧层目标比特分配,其所采用的计算公式与步骤s5所采用的计算公式相同。
s8、利用r-q模型以及帧层目标比特分配结果,计算出对应的量化参数。
具体地,所述s8优选包括:
s801、根据帧层目标比特分配的总比特数以及利用码率模型,计算出码率r;
具体地,所述码率模型优选为:
r=r't-rnontex
s802、根据计算出的码率r以及利用码率控制公式,计算出量化步长q;
具体地,所述码率控制公式优选为:
s803、根据量化步长q与量化参数qp之间的映射关系以及计算出的量化步长q,计算得出量化参数。
在本实施例中,对于上述步骤s801~s803,它们的具体优选阐述如下所示。
由于h.265具有更深的编码深度的分层四叉树结构,通过实验观察变换系数的平均方差值,发现不同cu深度级别有不同的特征,其中,帧间编码模式下的cu0和cu1深度下平均方差值较小,故将cu0和cu1分为一类统称cul,帧间编码模式下的cu2和cu3深度下平均方差值为中等大小,故将cu2和cu3分为一类统称cum,帧内编码模式下的平均方差值显著高于帧间编码模式下的平均方差值,故将帧内编码模式下的cu分为一类统称cuh,其中l,m,h分别代表低类纹理,中类纹理和高类纹理;为每个cu类别的残差变换分布建立如下所示的拉普拉斯概率密度模型:
式中,λc为不同cu类别的模型参数;σc为不同cu类别的残差变换系数的平均标准偏差;
建立码率模型,如下式:
r(q)=αlnlhl(q,λl)+αmnmhm(q,λm)+αhnhhh(q,λh)
式中,hl(q,λl),hm(q,λm)和hh(q,λh)分别为不同cu类别的熵;nl,nm和nh分别为不同cu类别的像素总数;αl,αm和αh为不同cu类别的模型参数;
将变换系数的熵进行均匀量化得到下式:
式中,hc(q,λc)为不同cu类别的熵,p0,c和pi,c为不同cu类别的变换系数被量化为0和第i个量化间隔的概率;
将量化后的熵公式进一步改写为:
式中,q为量化步长;f'为四舍五入的偏移;αc为不同cu类别的模型参数,其作为码率控制公式中的系数,因此,αc也表示为r-q模型中的系数参数,其表示αl,αm,αh中任一个,即αc为αl,αm,αh的通用表达符号;同样,λc为不同cu类别的模型参数,其作为码率控制公式中的指数,因此,λc也表示为r-q模型中的指数参数,其表示λl,λm,λh中任一个,即λc为λl,λm,λh的通用表达符号;
将码率控制公式改写成下式:
式中,
由于码率模型的位是针对纹理信号建立的,而非纹理的位对于大的qp值会产生很大的影响,因此,拟议的码率模型可以写成:
r=r't-rnontex
式中,r't是帧层目标比特分配的总比特数;rnontex是包含头信息、运动矢量和/或宏块模式等的信息比特;
根据以上计算公式得到量化步长q,可优选采用h.264/avc的方法将量化步长q映射到qp值,即得到量化参数qp。
s9、根据步骤s8计算出的量化参数,进行率失真优化后,根据率失真优化结果来选出最佳编码模式。
具体地,将步骤s8计算出的量化参数qp和编码相关参数带入率失真优化公式:
j=d+λr
式中,j为拉格朗日代价函数;d为失真;r为码率;λ是拉格朗日乘子。然后利用此公式的计算结果进而选出最佳编码模式。其中,j,d,r均与步骤s8计算出的量化参数qp有关。
s10、根据选出的最佳编码模式进行编码处理。
具体地,利用hevc官方参考软件hm以及基于最佳编码模式,从而进行编码处理。
s11、判断当前帧是否为最后一帧,若是,则结束;反之,则进行模型参数的更新,然后返回执行步骤s1,以对下一帧进行处理。
优选地,所述步骤s11中所述进行模型参数的更新,其具体包括:
s1101、对块大小进行更新,其所采用的第一更新公式如下所示:
s1102、对r-q模型中的指数参数进行更新,其所采用的第二更新公式如下所示:
式中,
s1103、对r-q模型中的系数参数进行更新,其所采用的第二更新公式如下所示:
式中,
由上述可得,本发明方法设计出了一种在基于h.265的新型r-q模型码率控制算法中,加入了场景切换的判断的方案,这可在保证编码视频的输出码率的同时,大大提高了有场景切换视频的客观质量。本发明方法可以适用不同的视频类型进行编码,因此具有广泛的应用意义。
如图2所示,本发明实施例还提供了一种基于h.265的码率控制系统,包括:
第一模块,用于根据输入的视频序列,判断当前帧是否为场景切换帧;
第二模块,用于若当前帧为场景切换帧时,将当前帧设置为i帧,以及令位于场景切换帧之后的帧不将位于场景切换帧之前的帧作为参考帧;
第三模块,用于根据量化参数与拉格朗日乘子法系数之间的关系,更新量化参数;
第四模块,用于对位于场景切换帧后的新的gop进行目标比特分配;
第五模块,用于根据新的gop的目标比特数,对新的帧层进行目标比特分配,然后执行第八模块所对应的数据处理流程;
第六模块,用于若当前帧不为场景切换帧时,则进行gop层目标比特分配;
第七模块,用于根据第六模块的gop的目标比特数,进行帧层目标比特分配,然后执行第八模块所对应的数据处理流程;
第八模块,用于利用r-q模型以及帧层目标比特分配结果,计算出对应的量化参数;
第九模块,用于根据计算出的量化参数,进行率失真优化后,根据率失真优化结果来选出最佳编码模式;
第十模块,用于根据选出的最佳编码模式进行编码处理;
第十一模块,用于判断当前帧是否为最后一帧,若是,则结束;反之,则进行模型参数的更新,然后返回执行第一模块所对应的数据处理流程。
上述方法实施例中的内容均适用于本系统实施例中,本系统实施例所具体实现的功能与上述方法实施例相同,并且达到的有益效果与上述方法实施例所达到的有益效果也相同。
如图3所示,本发明实施例还提供了一种基于h.265的码率控制装置,包括:
至少一个处理器;
至少一个存储器,用于存储至少一个程序;
当所述至少一个程序被所述至少一个处理器执行,使得所述至少一个处理器实现如上述方法实施例所述基于h.265的码率控制方法。
上述方法实施例中的内容均适用于本装置实施例中,本装置实施例所具体实现的功能与上述方法实施例相同,并且达到的有益效果与上述方法实施例所达到的有益效果也相同。
以上是对本发明的较佳实施进行了具体说明,但本发明创造并不限于所述实施例,熟悉本领域的技术人员在不违背本发明精神的前提下还可做作出种种的等同变形或替换,这些等同的变形或替换均包含在本申请权利要求所限定的范围内。