发明内容
为了克服已有的码率控制算法的算法复杂度较大的不足,本发明提供一种降低算法复杂度,又能在给定的目标码率控制范围内获得较高的视频质量的基于片的自适应码率控制方法。
本发明解决其技术问题所采用的技术方案是:
一种基于片的自适应码率控制方法,所述的控制算法包括以下步骤:
(1)、将输入视频序列分成图像组,图像组为一组时间上连续的图像序列,根据H.264基本框架的定义,每个图像组呈IPPP结构,其中I帧是指帧内编码的图像,P帧是指支持前向预测的图像,定义i和j分别表示第i个图像组和第i个图像组的第j帧;
(2)、控制编码器使用一个量化系数(Quantization Parameter,QP)的初始值来编码第i个图像组的首个I帧和首个P帧,初始的量化系数值通过目标码率分配到单位象素的比特数来计算;
(3)、通过动态量化系数QPi k(j)编码第i个图像组的第j帧,每一个片的动态量化系数QPi k(j)的确定过程为:
(3.1)、当第i个图像组的第j-1帧被编码后,在图像组中剩余的目标比特总数(Remaining Bits,RB)用以下公式(1)表示:
RBi(j)=RBi(j-1)-ABi(j-1) j=2,3,...,Ni (1)
其中,ABi(j-1)表示已编码的第j-1帧比特数;
对于一个图像组中的第1帧,它的目标比特数由下式(2)计算:
其中,RS表示目标码率,Ni为第i个图像组总的帧数,FR表示帧率;
第J帧的虚拟缓冲区充盈度(Virtual Buffer,VB),由下式(3)表示:
设第1个图像组中第1帧的虚拟缓冲区冲盈度VB1(1)为0,第i个图像组中的第1帧虚拟缓冲区充盈度等于上一个图像组最后一帧的的虚拟缓冲区充盈度,即VBi(1)=VBi-1(Ni-1);
(3.2)、第i个图像组中第j个P帧的目标比特数(Target Bits,TB)是由要编码的剩余总比特数、目标缓冲区等级(Target Buffer Level,TBL)、帧率、有效的网络带宽、真实的缓冲区充盈度以及先前已编码的I帧和P帧的真实比特数来决定,它可以由下式(4)表示:
其中,Nr,p表示剩余P帧的帧数;TBLi(j)计算公式如下(5):
其中,Ni,p表示第i个图像组包含的P帧总数;
(3.3)、第i个图像组中第j帧的某个片的目标比特数(Slice Target Bits,Slice TB)是由每一个片的复杂程度来估算,由下式(6)计算获得:
其中,Jcostk表示编码当前帧的拉格朗日代价,表示为(7):
其中,Jcost k表示编码当前片K的拉格朗日率失真代价,M是指当前帧的片总数;
Jcost k由一个线性滤波器计算前面的帧得到,其算式为(8):
其中,L表示窗口长度,率失真代价COSTk(j-n)表达式为(9):
COSTk(j-n)=SATDk+λ×Rk (9)
式中,SATDk表示第K片经过哈德曼变化的预测残差绝对值总和,Rk是指片K的比特数,λ为拉格朗日乘数因子;
(3.4)、每一个片的量化参数计算公式表示如下(10):
其中,β特别因子,Xi k(j)的表达式为(11):
本发明的技术构思:本发明采用自适应的控制算法,它通过动态的调整编码参数(量化系数)来实现目标码率控制。该算法可以适用在不同网络的网络带宽条件。该算法已在标准的虚拟参考解码器上验证通过。
本发明的有益效果主要表现在:(1)、降低算法复杂度;(2)、能在给定的目标码率控制范围内获得较高的视频质量。
具体实施方式
下面对本发明作进一步描述。
一种基于片的自适应码率控制方法,所述的控制算法包括以下步骤:
(1)、将输入视频序列分成图像组图像组,图像组为一组时间上连续的图像序列,根据H.264基本框架的定义,每个图像组图像组呈IPPP结构,其中I帧是指帧内编码的图像,P帧是指支持前向预测的图像,定义i和j分别表示第i个图像组和第i个图像组的第j帧;
(2)、控制编码器使用一个量化系数(Quantization Parameter,QP)的初始值来编码第i个图像组的首个I帧和首个P帧,初始的量化系数值通过目标码率分配到单位象素的比特数来计算;
(3)、通过动态量化系数QPi k(j)编码第i个图像组的第j帧,每一个片的动态量化系数QPi k(j)的确定过程为:
(3.1)、当第i个图像组的第j-1帧被编码后,在图像组中剩余的目标比特总数(Remaining Bits,RB)用以下公式(1)表示:
RBi(j)=RBi(j-1)-ABi(j-1) j=2,3,...,Ni (1)
其中,ABi(j-1)表示已编码的第j-1帧比特数;
对于一个图像组中的第1帧,它的目标比特数由下式(2)计算:
其中,RS表示目标码率,Ni为第i个图像组总的帧数,FR表示帧率;
第J帧的虚拟缓冲区充盈度(Virtual Buffer,VB),由下式(3)表示:
设第1个图像组中第1帧的虚拟缓冲区冲盈度VB1(1)为0,第i个图像组中的第1帧虚拟缓冲区充盈度等于上一个图像组最后一帧的的虚拟缓冲区充盈度,即VBi(1)=VBi-1(Ni-1);
(3.2)、第i个图像组中第j个P帧的目标比特数(Target Bits,TB)是由要编码的剩余总比特数、目标缓冲区等级(Target Buffer Level,TBL)、帧率、有效的网络带宽、真实的缓冲区充盈度以及先前已编码的I帧和P帧的真实比特数来决定,它可以由下式(4)表示:
其中,Nr,p表示剩余P帧的帧数;TBLi(j)计算公式如下(5):
其中,Ni,p表示第i个图像组包含的P帧总数;
(3.3)、第i个图像组中第j帧的某个片的目标比特数(Slice Target Bits,Slice TB)是由每一个片的复杂程度来估算,由下式(6)计算获得:
其中,Jcost表示编码当前帧的拉格朗日代价,表示为(7):
其中,Jcost k表示编码当前片K的拉格朗日率失真代价,M是指当前帧的片总数;
Jcost k由一个线性滤波器计算前面的帧得到,其算式为(8):
其中,L表示窗口长度,率失真代价COSTk(j-n)表达式为(9):
COSTk(j-n)=SATDk+λ×Rk (9)
式中,SATDk表示第K片经过哈德曼变化的预测残差绝对值总和,Rk是指片K的比特数,λ为拉格朗日乘数因子;
(3.4)、每一个片的量化参数计算公式表示如下(10):
其中,β特别因子,Xi k(j)的表达式为(11):
本实施例中,给出一个自适应的控制算法,它通过动态的调整编码参数(量化系数)来实现目标码率控制。该算法可以适用在不同网络的网络带宽条件。该算法已在标准的虑拟参考解码器上验证通过,详细的算法在以下给出:
(1)、码率控制初始化
输入视频序列被分成图像组(Group of Picture,图像组),它是指一组时间上连续的图像序列。根据H.264基本框架(Baseline Profile)的定义,每个图像组为IPPP....结构,其中I帧是指帧内编码的图像,P帧是指支持前向预测的图像。我们使用i和j分别表示第i个图像组和第i个图像组的第j帧。第一步,编码器使用一个量化系数(Quantization Parameter,QP)的初始值来编码第i个图像组的首个I帧和首个P帧。初始的量化系数值可以通过目标码率分配到单位象素的比特数来计算。
当第i个图像组的第j-1帧被编码后,在这个图像组中剩余的目标比特总数(Remaining Bits,RB)可以用以下公式(1)表示:
RBi(j)=RBi(j-1)-ABi(j-1) j=2,3,...,Ni (1)
这里,ABi(j-1)表示已编码的第j-1帧比特数。对于一个图像组中的第1帧,它的目标比特数由下式(2)计算:
其中RS表示目标码率,Ni为第i个图像组总的帧数,FR表示帧率。第J帧的虚拟缓冲区充盈度(Fullness of virtual buffer,VB)可以由下式(3)表示:
这里,设第1个图像组中第1帧的虚拟缓冲区冲盈度VB1(1)为0,第i个图像组中的第1帧虚拟缓冲区充盈度等于上一个图像组最后一帧的的虚拟缓冲区充盈度,即VBi(1)=VBi-1(Ni-1)。
(2)、P帧的目标比特数分配
第i个图像组中第j个P帧的目标比特数(Target Bits,TB)是由要编码的剩余总比特数、目标缓冲区等级(Target Buffer Level,TBL)、帧率、有效的网络带宽、真实的缓冲区充盈度以及先前已编码的I帧和P帧的真实比特数来决定。它可以由下式(4)表示:
这里,Nr,p表示剩余P帧的帧数。TBLi(j)计算公式(5)如下:
其中Ni,p表示第i个图像组包含的P帧总数。
(3)、每一个片的目标比特数分配
第i个图像组中第j帧的某个片的目标比特数(Slice Target Bits,Slice TB)是由每一个片的复杂程度来估算。它可以由下式(6)计算获得:
这里Jcost表示编码当前帧的拉格朗日代价,表示为(7):
其中Jcost k表示编码当前片K的拉格朗日率失真代价,M是指当前帧的片总数。
Jcost k可以由一个线性滤波器计算前面的帧得到,其算式为(8):
这里L表示窗口长度。率失真代价COSTk(j-n)表达式为(9):
COSTk(j-n)=SATDk+λ×Rk (9)
式中,SATDk表示第K片经过哈德曼变化的预测残差绝对值总和。Rk是指片K的比特数。λ为拉格朗日乘数因子。
(4)、每片的量化参数计算:
片的量化参数计算公式表示如下(10)::
这里,β特别因子。Xi k(j)的表达式为(11):