(1)当UseFME = 0时表示不用快速搜索算法,而是用最原始的全搜索(FS)算法。提供这个算法的主要目的是为了方便大家做研究用,可以将自己优化的快速搜索算法的图象质量和全搜索算法的图象质量进行比较,从而知道自己优化后的算法对图象质量大小的影响;
(2)当UseFME = 1时表示用UMHexagonS搜索算法。这个算法的代码写得很规范,也是我们做运动估计应该重点研究的算法,因为这个算法是在前人研究的基础上进行了深度的整合,把六边形搜索、菱形搜索算法都揉和了进来,同加加入了很多实验经验终止条件,大大提高了搜索的效率而且保持了图象质量, 把这个算法的来龙去脉搞清楚非常有助于我们后面的研究;
(3)当UseFME = 2时表示用Simplified UMHexagonS算法。这个算法是对UMHexagonS算法的一个简化,大致研究下就可以了;
(4)当UMHexagonS = 3时表示用EPZS搜索算法。EPZS(Enhanced Predictive Zonal Search)是一种预测搜索算法,该算法选择更多的预测矢量和多模式搜索路径,企图从几个非常可能的矢量中预测最佳运动矢量。EPZS是一个比较新的搜索算法,建议现在做运动估计的同学可以好好对这个算法研究下,研究下这个算法能写篇高质量的论文出来没有问题。
JM代码:建议搞运动估计这部分的同学,下面几个文件你是一定要看,而且要看明白,因为运动估计代码都要涉及这几个文件:mv_search.h, mv_search.c, fast_me.h, fast_me.h, epzs.h, epzs.c, mode_decision.h, mode_decision.c。
对你最有帮助的文献就是查找一些近一两年发表的这个方面的高质量文章,笔者建议你去IEEE下载,有不少好文章,不建议你看中文的,中文的比如你下的优秀硕士论文,可以作为你将来写论文时候的参考,看下大致的格式,章节安排什么的,千万别去看那上面的算法,很多都没有太大的价值。在IEEE上下二十篇左右的文章就够了,那么怎么利用这些文章来帮助你完成你的算法实现呢?笔者建议你仔细阅读这些文章,这些文章一般分为两大类:一类是原创的,一类是在本文前面介绍的经典算法基础上做的优化,前者一般是作者提出了一个全新的算法,给出了整个算法的流程和测试结果,和其他现有算法的比较,这种原创性的一般比较难。后者就比较简单点了,因为你已经掌握了我所说的把理论转化为代码的方法和能力,那么现在读起文章来就比较简单了,一篇一篇地研究,最好把你认为容易实现的先在代码中跑起来。笔者发现下载到的文章基本都能在JM代码中跑起来,这样你把你下载的文章研究一遍大约需要一个半月的时间,在这个过程中你的收获会非常大的。等你把这些研究完了,你的论文也基本就做出来了,为什么这么说呢?因为在这个过程中,你对前面经典的算法都理解了,而且你又在看这个领域国际上最新的研究成果,那么你会结合你所研究过的所有的东西整合出来一个算法或者对前面的算法做一个更好的优化,这样任何一种方法都可以作为你的论文了。或者你也可以写篇文章来发表一下,能走到这一步就恭喜你,你的论文做出来了,可以让你的导师去看,基本可以顺利通过答辩了,笔者回顾了以下自己写作论文过程:
2008-04-06 调研论文到底做什么,最后定位到了视频编解码方面,补充了一些基础知识。
2008-06-07 通过对整个编码流程的了解,选择了最容易突破和出成果的运动估计部分作为研究的切入点。
2008-07-09 完成了对以前经典算法的研究和对当前这个领域所发表的最新论文的学习,把握了当前的研究进展,完成了算法的优化工作。
2008-09-15 在导师的鼓励下把自己的研究成果写成了文章,投递到了<电子学报>,前几天得到了被录用的消息。
2008-09-30 完成了硕士毕业论文书写,这个过程其实就纯属整理了,不需要什么思考,按学校要求的格式来弄就行了。
在这个过程中有两个关键的概念:一个是空间预测,一个是时间预测,也就是中值矢量和时间矢量如何获取,他们两个之间的关系,需要朋友们不但从理论上理解他们而且在代码中要灵活应用。