H.264码率控制算法研究
2016-05-14冯振
冯振
摘要:H.264作为新一代视频编码标准,因其具有优异的压缩性能和良好的网络亲和性成为时下最重要的视频编码标准,是视频通信系统应用中必不可少的组成部分。本文研究了H.264/AVC的GOP层、帧层和基本单元层码率控制算法,并介绍了H.264算法的一些改进模型。
关键词:码率控制;码率分配;编码模式中图分类号:G633.34文献标识码:B文章编号:1672-1578(2016)08-0393-011.引言
H.264/AVC是新一代视频编码标准,它充分考虑了编码效率和网络传输,采用了整型DCT变换、先进的帧内预测、基于上下文的自适应算术编码、1/4象素精度的运动估计、7种不同尺寸的块匹配模式等先进技术,使H.264具有很高的编码效率,特别适合于带宽受限或存储容量受限的视频应用系统。码率控制的目的是使码率满足信道和存储媒体要求,并尽可能地提高视频质量。
一般在视频标准产生后,码率控制都会得到广泛的研究,如针对MPEG-2、MPEG-4、H.263等标准分别提出的TM5、VM8、TMN8码率控制算法。然而,这些算法都不能直接应用于H.264标准,这是因为H.264标准在码率控制算法以及率失真优化(Rate Control Optimization,RDO)中都使用了量化参数,这就导致了在进行码率控制时出现了蛋鸡悖论:对当前帧的宏块进行率失真优化时,需要先通过当前帧或当前宏块的平均绝对差(Mean Absolute Difference,MAD)决定每个宏块的量化参数,而当前帧或宏块的MAD仅在率失真优化后才能得到。H.264的提案JVT-G012提出用流量往返模型来给每个基本单元分配目标比特数,并在宏块层编码采用二次率失真函数计算量化参数的算法,用此量化参数来进行模式选择和编码。
2.H.264码率控制算法
JVT-G012采用了TM5的比特分配方案和VM8可扩展的码率控制思想,由图像组(GOP)层、帧层、基本单元层3部分组成,采用适合于低比特率视频应用的流量控制模型,首先计算出目标比特数,进而调整量化参数。
2.1GOP层码率控制:
首先分配当前GOP 的目标比特:
式中 Bc(ni,j)代表编码第i个GOP第j帧后的虚拟缓存器占有情况,Ngop代表GOP帧数,ni,j (i =1,2...., j= 1,2,...,Ngop)表示第i个GOP的第j帧,A(ni,j)是编码第i个GOP的第j帧产生的比特数, 是帧率,ni,j表示第i个GOP的第j帧时的信道带宽。
设第i个GOP开始时分配的比特数为:
考虑到带宽的波动, 在每一帧图像编码后,GOP中剩余帧的目标比特数由下式更新:
然后确定I帧和第1个P帧的QP(可以凭经验给定,也可根据每个像素需要的比特数计算) 。最后就是不断循环帧层的码率控制,直到这个GOP 结束。
2.2帧层码率控制。帧层的比特数分配是根据GOP 的结构和帧类型来进行的。一般来说,I帧分配最多的比特数,P帧分配次多的比特数,B帧分配较少的比特数。使用线性跟踪理论,分配给第i个GOP的第j帧的目标比特数f(ni,j)是由目标缓冲区满溢程度、帧率、可用信道带宽和实际缓冲区占用程度定义的。得到当前P帧的目标比特数后,利用二次率失真模型和MAD线性预测模型计算出的,为了获取连续帧之间的平滑视觉效果还需要对进行校正,量化参数用于计算当前帧中每个宏块的RDO,通过下式得到编码模式
该阶段主要完成三个任务:更新MAD线性预测模型中的a1和a2,二次R-D模型参数和确定是否有需要跳帧。编完一帧后,更新MAD线性预测模型中的a1和a2和二次R-D模型参数。在编码完一帧后,实际生成的比特数a(ni,j)加入到当前Buffer。
2.3基本单元层码率控制
这是 H.264/AVC中特有的步骤,只有当基本单元不是帧时,才会有这一步骤。
基本单元层码率控制采用是是率失真模型,根据帧层码率控制确定的该帧图像的输出比特数,给图像各部分选择合适的量化参数。
与帧层码率控制类似,先给基本单元分配编码比特数,由于未编码的基本单元的MAD未知,所以平均分配剩余比特给未编码基本单元。基本单元层的码率控制要选择一帧中的所有基本单元的量化参数值,使产生的编码比特数接近帧的目标比特数f(ni,j),算法描述如下:首先确定当前基本单元的纹理比特数,通过线性模型,利用先前帧相同位置基本单元的MAD预测当前基本单元的MAD;然后通过二次R-D模型计算当前基本单元的量化参数,并对当前基本单元的所有宏块进行率失真优化;最后更新当前帧的可用比特数和当前帧未编码的基本单元数;编码完当前帧,更新参数,该参数为前一帧的所有基本单元的量化参数的平均值。
3.结束语
随着H.264的不断改进和推广,其码率控制的算法也在不断改进更新。主要包括考虑编码器端的编码参数(如量化参数、编码模式或直接影响比特流的参数等)的率失真控制模型,结合信源信道失真和缓冲状态的码率控制模型,考虑解码端反馈信息的控制模型等。H.264采用了多种改进编码效率的技术,针对不同的应用可以选择不同的技术,其码率控制模型的建立也应该结合实际应用做出调整,而不是一定要建立一个适应各种场合的控制模型。
参考文献:
[1]胡旭.H.264码率控制算法的研究[D]. 太原理工大学 2013
[2]韩峥,唐昆,崔慧娟.基于H.264的码率控制算法[J].