H.264协议是的视频编码标准,但其算法复杂度也是超常的。为了解决这个问题,本文提出一种采用TI公司的多媒体处理器Davinci DM6446为的硬件平台,而在算法上提出了新的基于拉各朗日(Lagrange)的快速算法,充分利用中间结果,预先排除一些可能性小的预测模式,然后快速完成对运动估计的判决和模式选择的优化处理。实验结果表明:该方法可以有效地解决实时性差的问题,实现具有参考价值的H.264编码器。
1 硬件平台
1.1 Davinci DM6446芯片介绍
DM6446采用DSP+ARM的双内核结构(内核图见图1),其中的DSP芯片的CPU时钟频率可达594 MHz,ARM的引入可以释放DSP在控制方面的部分功能,使DSP专门进行数据处理的工作。芯片采用增强型的哈佛结构总线,其CPU内部有2个数据通道,8个32 b的功能单元,2个通用寄存器组(A和B),可同时执行8条32 b长指令。处理器具有双16 b扩充功能,芯片能在一个周期内完成双16 b的乘法、加减法、比较、移位等操作。该芯片内部支持两级Cache,其中级32 kB的程序缓存器L1P,80 kB的数据缓存器L1D,而第二级的Cache大小是可配置的64 kB,芯片自动完成这两级Cache之间数据一致性的维护。有了这两级Cache的支持将使CPU的执行速度大大加快。
Davinci DM6446具有专用的视频图像处理子系统。视频处理子系统包括1个视频前端和1个视频末端,视频前端的输入接口用于接受外部传感器或视频译码器输出的BT.656等图像输入信息;视频末端输出接口输出图像,实现图像本地重现。
视频前端输入(VPFE)接口由1个CCD控制器(CCDC),1个预处理器,柱状模块,自动曝光/白平衡/聚焦模块(H3A)和寄存器组成。CCD控制器可以与视频解码器CMOS传感器或电荷耦合装置连接。预处理器是一个实时的图形处理器。
1.2 H.264编码器硬件平台
本系统的平台处理芯片为Davinci DM6446,如图2所示,片外RAM选取两片DDR并联成32位的数据宽度,空间为256 MB。模拟视频信号在“VIDEO IN”引入后经过解码芯片TVP5146变换为数字信号后输入TMS320DM6446芯片中进行处理,H.264编码处理后的码流可以通过视频末端输出保存在本地硬盘上,以方便调试检查。或者可以通过10/100 M以太网物理层接口输出,进行网络传输。同时,本地的重构图像可以通过TMS320DM6446芯片内部OSD模块和编码模块D/A变换后直接显示输出。
2 H.264编码器结构与编码流程
2.1 H.264编码器结构
如图3所示输入的图像以宏块为单位进入编码器中,根据图像变化的快慢选择帧内或帧间预测编码。如果选择帧间预测编码,当前输入帧Fn和前一帧(参考帧)Fn-1被送到运动估计器(ME),通过块搜索,匹配可以得到当前帧中的各宏块相对于参考帧中对应宏块的偏移量,也就是常说的运动矢量。接着,参考帧Fn-1和刚得到的运动矢量MV被送到运动补偿器(MC),通过计算得到帧间预测值P;当前帧Fn和帧预测值P相减,得到残差Dn,经过变换,量化后产生一组量化后的变换系数X,再经过熵编码,与解码所需的一些边信息(如预测模式量化参数,运动矢量等)一起组成一个压缩后的码流,经NAL(网络自适应层)供传输和存储。
2.2 编码器编码流程
如图4所示为H.264编码器主流程。对输入的一帧图像首先进行单元划分:以宏块为基本单元进行划分,再由若干宏块在组合成Slice,由Slice再组合成Slice Group,这样每个宏块所属的Slice和Slice Group也就确定了。再判断输入的一帧图像是I-Frame还是P-Frame。在以上工作完成后,也就可以对每个宏块进行编码了。在对每个宏块都编码完成后,还需要对重构图像进行1/4象素插值处理、参考帧缓冲区插入处理等工作。至此,编码一帧的工作才算完成。
3 运动估计模式快速率失真决策
为了减少图像序列的时间冗余,达到更好压缩效果的目的,H.264/AVC编码方案采用运动补偿技术和预测。即由先前已编码的一个或多个帧产生当前编码帧的一种预测模式,然后再进行预测编码。且采用了一种可变块尺寸的运动预测模式,亮度块尺寸的范围从16×16变化到4×4,其中包含很多可选模式,形成了一种树形结构的运动预测。对于I帧(包含帧内4×4、帧内16×16),对P帧(包含帧内4×4、帧内16×16、SKIP模式、帧间16×16、帧间16×8、帧间8×16、帧间8×8、帧间8×4、帧间4×8)同时还为P帧和B帧提供了特殊的SKIP模式,总共11种模式。这些可选模式的存在使得编码方式更加灵活,编码相对于固定尺寸块预测要高很多。然而,可选的帧问预测模式增加了,必然会使得运算复杂度增加,因此有必要采用一种高效的决策方法来选取块尺寸组合方式,使得编码效率和编码质量均佳。
3.1 拉各朗日代价函数
引入拉各朗日代价函数如下:
其中D表示重构恢复图像相对于原始图像间的失真;R(si,m)表示对宏块编码后数据及相关参数在码流中所占用的比特数,一般由编码统计得到,但对于SKIP模式,比特数默认为1比特;λ表示模式选择时所使用的拉各朗日乘积因子。
对于运动估计,可使用拉各朗日代价函数作为选择运动矢量的判决标准。根据式(1)得到对一个采样块si进行ME判决的代价函数为下:
该式返回产生代价值的匹配运动矢量mi,其中M指各种可能编码模式的集合,m为当前选定模式,式(2)中R(si,m)是运动矢量(mx,my)所要传输(按熵编码)的比特数。D(si,m)表示对图像宏块的预测误差,对于该预测误差的计算有两种方案:当预测误差选择是误差时用(SAD)表示,如式(3);当预测误差选择是平方差时,则用SSD表示,如式(4)中:
其中A为当前编码宏块。在使用多参考帧进行运动估计时,mi表示所选用的参考帧。在进行运动搜索时,对块si先是进行整象素的运动搜索,以取式(1)值为匹配标准,得到整象素匹配点后,以同样的方法进行1/2,1/4象素的匹配搜索。同时在多个参考帧内作同样的操作,将所得的函数代价进行比较得到值,也就找到了s,块的匹配的运动矢量mi。
3.2 快速预测模式判断算法
快速算法相对于拉各朗日代价函数算法,可分以下两步实现:
(1)以基于预测模式的方式计算代价函数J,但是这里采用简化的计算方法,对每一种采样模式进行分行交错隔点采样,如对8×8块内象素进行下采样,采样如图5所示。
然后对采样点计算SAD,记做SADi。仅对采样点计算的拉各朗日代价函数如下:
先对上述各种模式分别计算代价函数J,然后选择代价的3种模式构成候选模式集。
(2)对步骤(1)所得到的候选模式集中每个模式,按照式(1),通过计算基于率失真的代价实现基于RDO的模式选择,也即C值的模式作为终预测模式。
4 测试结果与结论
目前,基于DM6446平台上设计的以上H.264编码器系统己基本完成,我们选择了几个常见的视频对该编码器进行了性能测试,测试数据如表1所示。数据表明本H.264编码器完够正常工作,而且表现出较好的压缩性能。不过该编码器只实现了H.264协议的基本档次的部分,且尚未进行更专门的优化过程,协议的其他部分由于复杂性,需要进行进一步研究,沿着这个方向,视频还可以进一步压缩。
参考文献
[1] TMS320DM6446 Digital Media System on Chip Data Manu——alrM].Texas Instruments,2006.
[2] JVT 一100,Study of Final Committee Draft of Joint Video Specification ITU Rec.H.264/ISO/IEC 14496—10 AVC)。
[3] Yao Wang,Jorn Dstermann,Ya Qin Zhang.Video Processing and Communications[M].Beijing:Tsinghua University Press,2003.
[4] JM9.3—2005.JVT Reference Software Version.http://bs.hhi.de/~suehring/tml/download
[5] TVP5146 datasheet https://www.dzsc.com/datasheet/TVP5146_665573.html.
[6] TMS320DM6446 datasheet https://www.dzsc.com/datasheet/TMS320DM6446_14470.html.
[7] AVC datasheet https://www.dzsc.com/datasheet/AVC_1518400.html.
免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。