用户登录  |  用户注册
首 页商业源码原创产品编程论坛
当前位置:PB创新网文章中心解决方案电子通信

针对硬件实现的H.264视频编码算法改进

减小字体 增大字体 作者:佚名  来源:本站整理  发布时间:2009-01-10 23:48:38
3.1 搜索范围

硬件实现运动估计过程中,一般会通过使用片内存储弥补片外存储带宽的不足。在图5中给出了一种典型的搜索区域数据重复使用方法,其中搜索范围是-16~+15。图5中左边的3×3块表示当前宏块运动估计进行区域,右边的3×3表示下一个宏块运动估计进行区域,javascript:window.open(this.src);" style="cursor:pointer;"/>它们的重叠区域的数据可以在两次宏块运动估计中重复使用,新增加的数据是最右侧的1×3区域。

为了配合H.264这种重复使用数据的模式,搜索区域的起始点应该设置在(0,0)。只有当真正的运动矢量超出搜索范围时,这种改变才会造成视频质量的下降。

3.2 运动预测因子

在H.264中, 运动预测因子被用来确定运动矢量数据的比特数和计算运动矢量数据编码误差的补偿因子。补偿因子在整个运动估计过程中都会被参考以进行率失真优化。图6表示运动预测因子的相关情况。其中P1到P4是在当前宏块之前的宏块。当前宏块的运动预测因子通过对P1到P4宏块的运动矢量计算得到。但是因为在硬件中,以上基于宏块的处理过程是使用宏块流水时,P1的运动矢量可能是无效的。解决这个问题需要消除运动预测因子计算过程中相关性。具体就是计算过程中只使用P2到P4宏块的运动矢量。而改变的只是针对运动估计补偿因子的计算,因此改进算法仍然符合H.264标准。

3.3 1/4像素精度的运动估计

在H.264中,半像素运动估计是通过二维6抽头内插滤波实现的。二维滤波需要使用线路缓存实现转置运算,而线路缓存的硬件实现相当复杂。不过对编码环路中的另一个部分运动补偿时,该宏块的运动矢量已经确定。
javascript:window.open(this.src);" style="cursor:pointer;"/>
    为了减少硬件代价,可以使用更简单的方法来产生1/4像素精度的数据。虽然用于运动估计与用于运动补偿的1/4像纱数据没必要相同,但是它们之间的误差还是会对编码效果产生影响。所以不能一味地简化内插过程。使用双线性内插代替二维6抽头内插滤波能够较好地解决这个问题。

3.4 哈达码变换

哈达码变换是用简单的变换估算变换后产生的比特数。在H.264的运动估计中用哈达码变换替代SAD,如果要求设计低代价硬件可以将这部分省略。

4 仿真结果

软件仿真是在“Foreman”、“grandma”、“salesman”和“carphone”序列上进行的,帧率是每秒10帧。出于硬件的考虑,不采用率失真优化模式,因为在JM4.0上没有采用码率控制,所以率失真曲线是对应Qp的变化产生的。率失真曲线如图7、图8。
javascript:window.open(this.src);" style="cursor:pointer;"/>
    从仿真结果中可以看出,在改进的帧内预测算法中,PSNR的下降程序是很低的。在慢速运动序列的整像素运动估计中,PSNR几乎没有下降。对QME算法的改进会造成大约0.4~0.6dB的PSNR值下降。这种改进在低代价系统中是可以接受的。在64kbps的环境下,每一个序列的PSNR的下降不超过0.58dB。

在基于宏块处理的系统中,采用上述的改进算法,就能实现并行处理。通过软件仿真的结果表明,改进帧内预测和整像素运动估计上的算法后,其PSNR值的下降几乎可以忽略。对低人代价系统来说,QME和哈达马变换的改进也量种可以考虑的方法。





上一页  [1] [2] 

Tags:

作者:佚名

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
PB创新网ourmis.com】Copyright © 2000-2009 . All Rights Reserved .
页面执行时间:24,921.88000 毫秒
Email:ourmis@126.com QQ:2322888 蜀ICP备05006790号