H.264中插补算法的VLSI设计与实现

发布时间:2010-12-20 17:56    发布者:conniede
关键词: VLSI , 插补算法 , 滤波器 , 色度
H.264/AVC是由ITU和ISO/IEC的专家共同组成的联合视频小组JVT(Joint Video Team)发展和制定的新一代视频编码国际标准。在相同的视觉感知质量下,H.264的传输码率比以往的H.263、MPEG-4等降低了50%左右。

运动矢量位移的精度越高,则帧间剩余误差越小,压缩比越高。H.263中采用了半像素估计,在H.264中则进一步采用1/4像素精度的运动估计。分数运动估计和运动补偿用到的非整数像素点必须通过插补(interpolation)运算来实现,因而插补运算的硬件加速对整个H.264编解码系统性能的提高有重要意义。在H.264中采用了6抽头FIR滤波器的内插获得1/2像素位置的值,则1/4像素值可通过线性内插获得。而对于常用的4:2:0的视频格式,亮度信号的1/4像素精度对应于色度的1/8像素的运动矢量,因此需要对色度信号进行1/8像素的插补运算。在H.264的帧间预测中,4×4是最基本的处理单元,其7种模式都可以划分为4×4块来进行处理,因而基于面积和时间考虑的4×4模块的插补电路具有良好的可重用性。

文献提出了使用4抽头滤波器取代6抽头滤波器的算法来实现亮度的1/2像素插补,利于硬件实现。本文在4抽头滤波器的基础上提出了可以处理4×4块的流水线结构,可以在一个时钟内完成27个1/2像素位置的插补运算。对色度1/8像素的插补,本文提出的两级处理的结构,巧妙地利用移位器和加法器取代了乘法器,节省了硬件开支。


1 插补算法原理

插补原理示意图如图1所示。2个整数像素位置之间的1/2像素点像素如图1(a)中的a、b、aa等,是利用一个带权重的6抽头有限冲击响应(FIR)滤波器对相邻整数位置的像素值进行内插得到的,权重值是(1/32,-5/32,5/8,5/8,-5/32,1/32)。如:

a=round((A-5*B+20*C+20*D-5*E+F)/32)(1)

h=round((A-5*G+20*H+20*I-5*J+K)/32)(2)

aa=round((a-5*b+20*c+20*d-5*e+f)/32)(3)

=round((h-5*i+20*j+20*k-5*l+m)/32)

由于6抽头FIR的结构比较复杂,文献提出的权重值为(-1/8,5/8,5/8,-1/8)4抽头FIR在对图像质量和比特率影响很小的情况下,可以很大程度地节省硬件资源。如图1(b)中:

a=round((-1*B+5*C+5*D-1*E)/8)(4)

h=round((-1*G+5*H+5*I-1*J)/8)(5)

aa=round((-1*b+5*c+5*d-1*e)/8)(6)

=round((-1*i+5*j+5*k-1*l)/8)

最匹配的1/2像素位置确定以后,1/4像素位置的像素由周围的整数像素位置像素和1/2像素位置像素线性插补得到。

在常用的4:2:0采样中,亮度分量1/4像素精度的运动矢量应用到色度分量需要1/8的像素精度。在色度空间,对整数位置的像素值进行线性插补可以得到1/8像素精度的插补值。如图1(b)所示,1/8像素位置的像素a是周围整数位置像素A,B,C,D的线性组合:

a=round(8-x)*(8-y)*A+x*(8-y)*B+y*(8-x)*C+x*y*D/64 (7)

2 硬件结构

2.1 亮度1/2像素插补电路

4抽头FIR与6抽头FIR结构比较如图2所示。由图2可以看出,4抽头FIR的结构比6抽头FIR易于硬件实现。实验表明前者的电路面积和关键路径延时比后者分别减少了36.2%和16.0%。


4×4块的1/2像素精度插补电路的流水线结构图如图3所示,共有16个4抽头FIR,利用一个6× 4的整数像素点阵列作为缓冲区,每次从存储器中读出8个整数像素点,分别用于5个水平4抽头FIR的输入。每个时钟所有的像素点都会向下传送一级,图中虚线框处已经计算出了整数像素点周围的所有27个1/2像素值,可以输出到并行处理单元同时计算9个半像素位置的SAD(Sum of Absolute Difference)。该架构处理一个4×4单元需要8个时钟,处理一个具有相同运动矢量的4×16块需要20个时钟。


亮度1/4像素的线性插补可以用一个加法器和一个移位器实现。图4为4×4块1/4像素插补电路的结构图,采用两级流水线,输入部分为18个像素点,利用线性插补生成所需要的1/4像素位置像素。在图中虚线框部分可以计算出最佳1/2像素点周围的所 有1/4像素点,输出给并行处理单元计算9个1/4像素位置的SAD。该架构完成一个4×4单元需要6个时钟,完成一个具有相同运动矢量的4×16块需要18个时钟。


H.264的帧间预测中,一个宏块(MB)可划分成16×16、16×8、8×16、8×8、8× 4、4×8、4×4不同模式。这7种模式都可以划分为16个4×4块分别进行处理。具有相同整像素运动矢量的纵向相邻4×4块可以连续处理以节省时钟数。表1列出了亮度为1/2像素插补和1/4像素插补时流水线处理一个宏块不同模式分别需要的时钟数。


2.3 色度1/8像素插补电路

如果利用乘法器来实现色度1/8像素精度的插补电路,对每一个点的插补运算都要用到8个乘法器,无论是面积还是时间都会有很大的开销。变换公式(7)可得公式(8),可以看出其中含有如(9)式所示的公共运算单元。

a=round{{(8-y)[(8-x)×A+x×B]+y[(8-x)×C+x×D]}/64}(8)

cf=(8-h)×M+h×N(9)

硬件设计采用两级处理的结构,采用图5所示的CU单元处理公式(9),色度1/8插补电路结构如图6所示。由于该结构的两级间比较平衡,非常容易插入寄存器以减少关键路径的延时。


3 实验结果

使用VerilogHDL对本文中提到的设计进行了实现,仿真工具使用VCS7.2,综合工具使用Synopsys Design Compiler(SMIC 0.18μm工艺)。


文献中使用6抽头FIR的4×4块插补电路流水线结构,与本文使用的4抽头FIR结构进行了比较,其电路性能如表2所示。本文的设计在速度和面积方面均具有非常明显的优势。使用H.264参考软件JM7.3分别对亮度1/2像素插补运算中使用6抽头FIR和4抽头FIR进行仿真比较,采用了4个视频序列Container、Foreman、News和Tenis。其中每个序列由30个QCIF (Quarter Common Intermediate Format)帧组成,序列形式为IBBPBBPBBP。H.264主要档次,搜索半径16,使用5个参考帧。4抽头FIR与6抽头FIR图像质量比较如表3所示。表中△b为平均码率的增加,△P为峰值信噪比(PSNR)的增加。可以看出,使用4抽头FIR对图像质量和比特率的影响非常小。

与其他的设计方法相比较,本文提出的色度1/8像素的插补电路可以很大程度上节省硬件资源。其性能比较如表4所示。与文献中的设计相比,本文的设计关键路径延时仅增加了1.5%,门数减少了26%。


本文介绍了亮度1/4像素精度下,最常用的4:2:0采样模式时插补电路的硬件设计,通过4抽头 FIR代替6抽头FIR来实现亮度1/2像素插补,通过移位器和加法器组成的两级处理结构来实现色度1/8像素插补,设计的电路具有面积小、速度快的优点。在此基础上基于功耗和性能考虑的4×4块的流水线结构具有良好的可重用性,可作为硬件加速器用于基于H.264的编解码系统。
本文地址:https://www.eechina.com/thread-47314-1-1.html     【打印本页】

本站部分文章为转载或网友发布,目的在于传递和分享信息,并不代表本网赞同其观点和对其真实性负责;文章版权归原作者及原出处所有,如涉及作品内容、版权和其它问题,我们将根据著作权人的要求,第一时间更正或删除。
您需要登录后才可以发表评论 登录 | 立即注册

厂商推荐

  • Microchip视频专区
  • 你仿真过吗?使用免费的MPLAB Mindi模拟仿真器降低设计风险
  • 我们是Microchip
  • 深度体验Microchip自动辅助驾驶应用方案——2025巡展开启报名!
  • Cortex-M4外设 —— TC&TCC结合事件系统&DMA优化任务培训教程
  • 贸泽电子(Mouser)专区

相关在线工具

相关视频

关于我们  -  服务条款  -  使用指南  -  站点地图  -  友情链接  -  联系我们
电子工程网 © 版权所有   京ICP备16069177号 | 京公网安备11010502021702
快速回复 返回顶部 返回列表