图1中,Nunit是帧内基本单元总数,TRi(j)表示第i帧中第j个基本单元编码前该帧剩余比特数,设首基本单元的序号为1,那么易知TRi(1)即为当前帧比特数预测值,TRi(1)/Nunit为上述理想状况下一个基本单元所消耗的比特数(各基本单元消耗比特数相同)。
根据图1易知,第i帧中第j个基本单元编码完成后该帧消耗的总比特数的理想值与实际值的差Di(j)可由式(9)表示。
其中,TAi(k)表示编码第i帧中第k个基本单元实际消耗的比特数。
当Di(j)<0时,即认为该帧比特数消耗过多,此时适当增加量化参数(仿真中为增加1)以更强的控制后续基本单元的比特数消耗。
4 仿真结果与分析
文中以H.264官方验证软件JM13.2作为实验平台,对提出的基本单元层码率控制方法进行仿真。测试序列为QCIF格式,共编码150帧,首帧为I帧,其余为P帧,不考虑跳帧,帧率为15帧每秒,I帧和首P帧的初始量化步长的计算采用默认方法。分别对复杂度相差较大的akiyo,earphone,foreman和mobile序列进行编码测试。
表1所示为在24 kbits/s,48 kbits/s和64 kbits/s 3种编码码率下对上述序列进仃编码的结果。从表1可见,除了在24kbits/s码率下编码mobile 序列外,采用本文算法编码的平均峰值信噪比均要高于JM软件和[6]中提出的算法,最大可比JM提高0.49dB,比[6]中的算法提高0,18dB。码率控制的结果也更为精确,JM13.2的实际码率与预定码率的平均误差是0.37%,[6]中算法的码率平均误差是0.32%,而本文算法的码率平均误差是0.28%,可见本文算法更符合预定的码率要求。
为了验证算法在场景变换时的编码性能,在48 kbits/s码率下,用3种方法分别对carphone序列和akiyo序列的混合序列C55A55进行编码测试,混合序列在第55帧发生场景变换。编码结果如图2和图3所示。由图2可见,本文提出的方法在场景变换帧及后续帧均取得了更高的编码信噪比,提高了新场景的编码质量。
图3对3种码率控制方法在编码过程中的缓冲区状态进行了对比。从图3可见,文中方法比JM更接近目标缓冲区占用度,并且在场景变换时有效降低了缓冲区占用度,在编码器缓冲区尺寸有限的情况下,为新场景提供丁更多可用编码资源。
5 结论
文中提出了一种复杂度自适应的基本单元层码率控制算法。该算法利用DMAD参数来判断视频复杂度,对JVT-H017的比特数分配方法进行了改进,并利用理想的基本单元层编码情况来对基本单元比特数分配进行修正。仿真表明,该方法在一般情况和场景变换时的编码质量均高于JM模型,平均峰值信噪比最大可提高0.49 dB,实际编码码率更接近预定要求。
本文关键字:暂无联系方式综合-其它,单片机-工控设备 - 综合-其它
上一篇:使用JMP绘制地图实现数据可视化