MPEG-4中运动估计模块的改进与优化
来源:岁月联盟
时间:2010-08-30
图1、半像素搜索过程。X代表第一步中的搜索点,+代表步骤2种的搜索点,O代表步骤三中的搜索点 从上述步骤中可以看出,在第二步和第三步搜索过程中存在着大量的冗余搜索点。如果第二步搜索过程结束后,最佳匹配宏块位于中心点的话,那么在第三步过程中所有的可能搜索点相对于第二步来说都是多余的。当最佳匹配点不在中心时,这时候第二步和第三步搜索中的冗余情况如图2所示。图中标记重合处即为冗余搜索点。
图2、第二、三步冗余点。标记同图1
图3、第一、二、三步中的冗余点。标记同图1 同样的道理,在第一、第二以及第三步搜索中也存在着大量的冗余搜索点。如图3所示。与以上分析的情况类似,根据第二次搜索结果的不同,一样分为三种情况。当第二次搜索结束后,得到最佳匹配宏块位于中心时,就不再需要进一步的搜索。而当最佳匹配点位于搜索区域边上时,进一步的搜索会产生七个冗余搜索点,其中第二步和第三步之间有六个(图2)。最佳匹配点位于角上的情况下,同样会有七个冗余点。 从上面的分析可以得知,如果能够有效消除半像素搜索中的这些冗余点,那么就可以很大降低运动估计中计算的复杂度。可以考虑将16*16大小宏块搜索分解为同时执行四个8*8大小块的运动搜索。这样的话已经在第一步和第二步搜索过程中执行过的8*8运动估计就不需要继续在第三步中重复了。第三步骤中冗余搜索点的判断条件可以简单归纳如下。 (1) 搜索点是第一步中已经搜索过的位置, (2) 搜索点位于第二步搜索区域中。 因此在我们的实现中把运动估计模块进行了相应改进,主要包括把宏块搜索分解为8*8块的搜索,并且将先前搜索路径上已经过的SAD值和相应运动矢量保存下来,以及在后来的8*8半像素搜索中加入了冗余搜索点的判断条件,以便于略过冗余点的计算。尽管该实现方法中需要额外的比较计算以及少量的内存空间用以保存搜索信息,但是与略过冗余点所节省的大量计算耗费相比,所能节省的运动估计时间还是相当可观的。3 测试与结果分析 我们在对算法改进的基础上,基于TI的TMSC62x平台实现了自己的编码器,并对其他某些模块结合C62x的硬件特性进行了相应优化。表1给出对标准测试序列进行编码优化前后的对比测试结果。实验中对news(播音员)和tempete(风吹落叶)两个测试序列分别测试算法优化前后的性能,表中给出的数据为编码单帧视频图像所需平均周期数。 表1、MPEG4编码器优化前后性能比较| 序列 | 格式 | 优化前(cycles) | 优化后(cycles) |
| news | CIF | 112359702 | 8064527 |
| tempete | CIF | 107861491 | 10692139 |
| foreman | 编码速率(fps) |
| I-frame | 26.8 |
| P-frame | 23.4 |
下一篇:密文数据库加脱密引擎的设计与应用