大范文网 - 每天发现一点点
每天学习一点点!
  • 春节
  • 除夕
  • 元宵
  • 端午节
  • 七夕节
  • 教师节
  • 中秋节
  • 国庆节
  • 重阳节
  • 光棍节
  • 腊八节
  • 新春
  • 小年
  • 二月二
  • 妇女节
  • 新年
  • 情人节
  • 劳动节
  • 母亲节
  • 父亲节
  • 儿童节
  • 万圣节
  • 感恩节
  • 复活节
  • 圣诞节
  • 元旦
  • 新年贺词
  • 新年寄语
  • 春节贺词
  • 春节寄语
  • 生日贺词
  • 开业贺词
  • 满月贺词
  • 结婚贺词
  • 红包贺词
  • 寄语
  • 贺卡
  • 对联
  • 春联
  • 灯谜
  • 祝福短信
  • 中考祝福语
  • 高考祝福语
  • 结婚祝福语
  • 生日祝福语
  • 拜年祝福语
  • 给朋友的祝福
  • 给老师的祝福
  • 给领导的祝福
  • 英语祝福
  • 新学期祝福语
  • 毕业祝福语
  • 给父母祝福语
  • 节日祝福语
  • 节日贺词
  • 节日诗歌
  • 节日习俗
  • 节日晚会
  • 放假安排
  • 火车票订购
  • 12306订票
  • 当前位置:大范文网 > 祝福语 > 12306订票 >

    【基于FPGA的H.264,DCT算法的硬件实现】D-H算法

    分类:12306订票 时间:2019-04-25 本文已影响

      摘 要:二维离散余弦(DCT)在H.264视频编码中承担者信号从时域到频域变换的作用。在现场可编程逻辑门阵列(FPGA)上设计了高效的采用流水线结构的H.264 DCT硬件电路。首先,把二维4×4 DCT变换转换成二次一维DCT变换;其次,DCT变换之间加一个两端口的RAM,以实现数列的转置;最后,在顶层设计一个有限状态机控制整个流程。该设计采用较少的资源实现了较好的功能,获得了可靠的实验结果。
      关键词:二维离散余弦变换; FPGA; H.264; DCT
      中图分类号:TN91134 文献标识码:A 文章编号:1004373X(2012)10009003
      目前,基于分块DCT的编码技术已成为图像/视频编码国际标准的核心技术,一方面是因为DCT具有良好的去相关性和能量压缩性,另一方面是因为DCT具有快速实现算法[1]。随着数字多媒体技术的快速发展,H.264视频压缩标准在多个领域得到了广泛的应用。然而,在当前有限的网络带宽、FPGA有限的资源以及要求更高压缩速率情况下,对二维离散余弦变换(DCT)提出了更高的要求。H.264对图像或预测残差采用了4×4整数离散余弦变换技术,避免了以往标准中使用的通用8×8离散余弦变换、逆变换经常出现的失配问题[2]。
      1 H.264的整数DCT变换
      一维N点离散余弦变换(DCT)可以表示为:yK=CK∑N-1n=0xncos(2n+1)Kπ2N
      (1)式中:xn是输入时域序列中第n项;yK是输出频域序列中的第K项;系数CK定义如下:CK=1N,K=0;CK=2N,K=1,2,…,N-1 二维N×N图像块的DCT可以理解为先对图像块的每行进行一维DCT,然后对经行变换的块的每列再应用一维DCT。可以表示为:Ymn=CmCn∑N-1i=0∑N-1j=0Xijcos(2j+1)nπ2Ncos(2i+1)mπ2N
      Xij=∑N-1i=0∑N-1j=0CmCnYmncos(2j+1)nπ2Ncos(2i+1)mπ2N
      (2)式中:Xij是图像块X中第i行第j列图像或残差值;Ymn是变换结果矩阵Y相应频率点上的DCT系数。可以用矩阵表示为:Y=AXAT
      (3)
      X=ATYA
      (4)式中:N×N变换矩阵A中的系数为Aij=Cicos(2j+1)iπ2N。
      H.264对4×4图像块进行操作,则相应的4×4DCT变换矩阵A为:A=12cos(0)12cos(0)12cos(0)12cos(0)
      12cos(π8)12cos(3π8)12cos(5π8)12cos(7π8)
      12cos(2π8)12cos(6π8)12cos(10π8)12cos(14π8)
      12cos(3π8)12cos(9π8)12cos(15π8)12cos(21π8)
      =12121212
      12cos(π8)12cos(3π8)-12cos(3π8)-12cos(π8)
      12-12-1212
      12cos(3π8)-12cos(π8)12cos(π8)-12cos(3π8)
      (5) 设a=12,b=12cos(π8),c=12cos(3π8),则:A=aaaa
      bc-cb
      a-a-aa
      c-bb-c
      (6) A中的a,b和c是实数,而图像块X中的元素是整数。对实数的DCT,由于在解码端的浮点运算精度问题,会造成解码后的数据的失配,进而引起漂移。H.264比其他图像编码使用了更多的预测过程,甚至内部编码模式也依赖于空间预测。因此,H.264对预测漂移是十分敏感的。为此,H.264对4×4 DCT中的A进行了改造,采用了整数DCT技术,有效地减少计算量,同时不损失图像准确度。式(1)可以等效为:
      Y=(CXCT)E
      =1111
      1d-d-1
      1-1-11
      d-11-dX111d
      1d-1-1
      1-d-11
      1-11-d
      a2aba2ab
      abb2abb2
      a2aba2ab
      abb2abb2
      (7)
      式中:d=c/b≈0.414;符号表示结果中的每个元素乘以矩阵E中对应位置上系数值的运算。为了简化计算,去d为0.5,同时又要保持变换的正交性,对b进行修正,取b=2/5。对矩阵C中的第2行和第4行,以及矩阵CT中的第2列和第4列元素乘以2,相应地改造矩阵E为Ef,以保持式(7)成立,得到:
      Y=(CfXCTf)Ef
      =1111
      21-1-2
      1-1-11
      1-22-1X1211
      11-1-2
      1-1-12
      1-21-1
      a2ab/2a2ab/2
      ab/2b2/4ab/2b2/4
      a2ab/2a2ab/2
      ab/2b2/4ab/2b2/4
      (8)
      式中运算对每个矩阵元素只进行一次乘法,同时它将被归纳到量化运算中。这样,(CfXCTf)中只剩下整数的加法、减法和移位运算。式(8)的矩阵乘法运算可以改造成两次一维整数DCT变换,例如先对图像或其残差块的每行进行一维整数DCT,然后对经行变换块的每列再应用一维整数DCT变换。每次一维整数DCT可以采用蝶形快速算法,以节省时间,如图1所示[34]。
      
      图1 一维快速变换算法整数DCT变换是基于DCT的,但是又有一些不同[5]:
      (1) 它是一个整数变换(所有的操作都可以使用整数算法,而不丢失解码精度);
      (2) 它可以实现编码端正变换与解码端反变换之间的零误差匹配;
      (3) 变换的核心部分可以仅仅使用加法和移位操作实现;

    相关热词搜索:算法 硬件 FPGA DCT

    【基于FPGA的H.264,DCT算法的硬件实现】D-H算法相关文章