论文部分内容阅读
H.264/AVC是在以往的视频编码标准的基础上发展起来的最新的也是编码效率最高的视频编码标准。H.264/AVC可以抽象成为两个层次:VCL层和NAL层,前者主要用于提高视频编码的效率,而后者着重于改善视频传输接口。H.264/AVC出色的编码效率和有效的传输接口使得它可以广泛地用于IP网络和无线网络上的视频业务。H.264/AVC存在着与早期的视频编码标准相似的研究课题,如码率控制问题。同时H.264/AVC也深入研究和采纳了一些新的技术,如位于预测回路的去块效应滤波和二进制算术编码。为了更深入理解H.264/AVC,并对其性能进行完善和提高,本文从回路滤波、码率控制和熵编码三个方面对H.264/AVC进行研究。本文最后还将讨论可变长码的高吞吐率解码问题。
本文首先深入地研究了基于分块DCT变换的视频编码中Ⅰ帧和P帧的块效应的来源和特点,分析了H.264/AVC的边缘强度计算方法在计算Ⅰ帧边缘强度时定位和分级不够精确的问题。在此基础上,提出了用基于人眼视觉系统(HVS)特性的边缘强度指导H.264/AVC去块效应滤波的方案。本方案把基于HVS特性计算边缘强度量化为和H.264/AVC相当的5个级别,然后使用这5个级别控制H.264/AVC的边缘滤波器进行滤波。测试结果表明基于HVS的去块效应滤波在QP较低,即块效应较弱时,可以提高Ⅰ帧的主观质量和客观质量。比如在QP为28时,测试序列的PSNR值的平均增幅为0.11dB,解码图像也比较自然。而在块效应较强时,基于HVS的去块效应滤波和H.264/AVC参考软件提供的质量相当。
位于预测回路的去块效应滤波器虽然可以提高编码质量,但会导致编码器和解码器的计算量大幅提高。本文针对H.264/AVC去块效应滤波计算量大的问题,提出了高效的去块效应滤波器方案。该方案使用并行流水线结构提高了跳转操作和选择操作的执行效率,避免了这些操作打破流水线引起的开销。该方案中定义了灵活的数据路径和紧凑的数据结构,提高了滤波前后数据的存取效率。该去块效应滤波器的核心部分,即边缘滤波模块,还可以直接嵌入到处理器当中以降低实现成本。
H.264/AVC的码率控制分为GOP层,帧层和基本单元层三个层次。本文针对码率控制过程中GOP层和帧层的目标比特数计算,提出了基于PID的GOP层和帧层码率控制方法。基于PID的GOP层码率控制,使用一个GOP编码完成后编码使用的比特数和信道可以传输的比特数之差作为误差函数。基于PID的帧层码率控制使用实际缓冲区满溢度和目标缓冲区满溢度之差作为误差函数。基于PID的码率控制方法使用误差函数的积分,导数和误差函数本身计算目标比特数,而H.264/AVC参考软件(JM7.6)中的控制方法仅仅使用误差函数本身计算目标比特数。因此基于PID的码率控制方法可抑制编码质量的波动,表现为在不同编码条件下序列的PSNR值的方差都有所降低。基于PID的GOP层的码率控制方法在CBR信道,VBR信道,及对于有场景切换的序列,PSNR的方差分别平均降低了16%,6.6%,25%,仿真中场景切换序列的平均PSNR值也平均提高了0.12dB。而基于PID的帧层码率控制在CBR信道条件下,PSNR的方差平均下降了12%。
比较了H.264/AVC中使用的CABAC和CAVLC两种熵编码方案,在此基础上把视频编码层(VCL)进一步分解为象素编码层(PCL)和熵编码层(ECL)。象素编码层)计算用于表示压缩视频序列的各种语法元素,而熵编码层根据统计特性对这些语法元素进行熵编码。在此基础上提出了在熵编码层进行熵转码的概念和方案。熵转码可以连接在熵编码方式不同的编码器和解码器之间,把编码器输出的码流转化为解码器可接受的熵编码方式。CAVLC向CABAC转码还可提高编码效率,通常CAVLC向CABAC转码的效率接近但是低于直接使用CABAC编码的效率。这样在不改变编码质量的同时降低编码使用的比特数,从而降低传输带宽或者减少存储空间。
本文还提出了双码流编码方案,即使用一种熵编码方案进行率失真优化得到表示压缩视频的各种语法元素,使用两种熵编码方案对象素编码层得到语法元素进行熵编码编码得到两个码流。这两个码流分别等价于熵转码前后的两个码流。
本文还讨论了MPEG-2中可变长码解码器的高吞吐率实现方案,提出了多路并行的可变长码解码器方案。该方案将反馈回路分成多级流水线进行,各级流水线分别为不同的码流服务,这样打破了关于可变长码长度的反馈回路对可变长码解码器吞吐率的制约,一个解码器内核可以同时为多个码流服务。本方案还提出了基于伪基础地址查表的方法,简化了查表地址的计算过程并且缩减了分组信息表中需要保存的信息,这样减少了实现时所需的硬件资源。该方案是针对MPEG-2设计的,但其设计思路可用于各种可变长码的解码器设计。