11.6典型实例21:整数DCT改换的规划与完结
11.6.1实例的内容及方针
1.实例的主要内容
本节旨在规划完结了视频紧缩规范H.264算法中的整数DCT改换部分,协助读者了解并行流水规划技巧在算法优化中的作用。
2.实例方针
经过本实例,读者应到达以下方针。
·了解数字域改换的基本原理和用途。
·把握DCT和整数DCT改换的改换办法。
·学习硬件结构规划办法。
·学习流水线规划办法。
·编程完结DCT改换。
11.6.2整数DCT改换的原理
1.DCT简介
H.264是一种图画紧缩编码办法,它的改换编码和曾经各种规范中的DCT有所不同。曾经规范中直接选用DCT的界说进行改换,会带来两个问题。榜首,需求进行浮点数操作,然后形成体系规划及运算上的复杂性;第二,因为改换核都是无理数,而有限精度的浮点数不可能准确地表明无理数,再加上浮点数的运算可能会引进舍入差错,这就使得在详细完结时会导致编解码的不匹配(mismatch),即反改换的输出成果和正改换的输入不一致。
为了处理这些问题,H.264选用根据4×4块的整数操作而不是实数运算,使得改换操作仅用整数加减和移位操作就能够完结。这样既降低了规划复杂度,又防止了编解码误匹配,能够得到与4×4DCT改变相似的编码作用,而由此带来的编码功用的削减微乎其微。
因为改换中无乘法,选用根据提高结构的无乘法二进制DCT(BinDCT),只包含加法和16位算术移位,这样大大减小了运算复杂度。尤其是对低端处理,削减了乘法运算且坚持了整数改换的长处,准确的整数排除了编码器和解码器之间反改换的误匹配,确保了改换的作用。
2.DCT规划原理
咱们能够经过各种公式推导出整数DCT正改换的公式。
(11.1)
公式(11.1)中,尽管乘以1/2的操作能够用右移来完结,但这样会发生截断差错,因而,咱们将1/2说到矩阵外面,并与右边的点乘兼并,得到公式(11.2)。
(11.2)
这便是H.264中所用到的整数改换公式,其改换核仅用加减法(和左移)即能够完结,然后面的点乘操作能够兼并到随后的量化进程中去。
H.264中所用到的反DCT改换公式如下:
(11.3)
其间与Y点乘的操作与反量化兼并,乘以系数1/2的操作由右移来完结,因为反量化后的成果满足地大,所以这儿不会呈现截断差错的问题。以上各式中,,
。
H.264的整数DCT改换能够分做两步完结:先对需求做改换的矩阵的每一列做一维改换,再对其成果的每一行做一维改换,这个次第也能够反过来,先行后列。这样二维改换就能够用一维改换来完结。在详细完结进程中,为了削减运算量,每一步能够选用蝶型算法,以公式(11.2)的榜首步对X的榜首列进行一维改换为例,其运算进程如下式所示。
(11.4)
其间为
榜首列的元素,
为滤波成果。由公式(11.4)可见核算有许多重复,如
就一起被核算
和
的公式所运用,所以能够将其暂时保存起来以防止重复核算,对应的蝶型算法如图11.21所示。
从图中能够看见,若按公式(11.4)核算需求进行12次加法、4次乘法。而按图11.19中的蝶型算法仅需8次加法、2次乘法,它利用了运算中的冗余,大大降低了运算量。
11.6.3实例过程
1.创立新工程并增加源文件
如图11.22所示,首要创立一个新工程并为工程增加源文件。
2.增加测验文件,并增加鼓励
如图11.23所示,为工程增加测验文件。
图11.22创立新工程并增加规划文件 图11.23增加测验文件
在测验文件中为测验增加鼓励,如图11.24所示。
图11.24增加鼓励
3.运用ModelSim进行仿真
要运用ModelSim对工程进行仿真首要要在核算机上面装置ModelSim软件。装置好今后在ISE7.1i的菜单里边挑选Edit→Preferences,如图11.25所示。
在上面的对话框里边,“IntegratedTools”复选页里边的ModelTechSimulator里边挑选modelsim.exe的途径,单击“OK”按钮。
图11.25设置仿真东西参数
然后再挑选菜单里边的View→Refresh,改写方才更改的设置,如图11.26所示。
图11.26改写设置
改写后就会看见ProcessView里边的图标变成ModelsimSimulator的一些功用,如图11.27所示。
图11.27ModelSim仿真选项
此刻双击“SimulateBehavioralModel”就能够对工程进行行为仿真了,如图11.28所示。
图11.28翻开ModelSim进行行为仿真
在ModelSim的波形窗口中观察到的行为仿真成果如图11.29所示。
图11.29行为仿真成果
11.6.4小结
本节介绍视频紧缩规范H.264算法中的整数DCT改换模块的规划与完结办法,并经过ModelSim软件仿真验证的规划成果。