在代码阅读中,可以看到MV、MVD、MVP三个概念,在开始学习的时候就很糊涂,一直买具体来看下,也找不到具体在哪里有讲解,现在来关注学习一下。
先来逗比一下,名词解析:
MVP——most valuable player,那MVD是什么呢?most valuable dog。好冷。。。。。算了开始正题吧。
概念
MV在之前已经详细学习过了,是通过当前帧和参考帧进行搜索求出的,是一个指示最佳匹配块位置的矢量。
对每一个块的MV都进行编码,那么将花费很多的比特数,特别是小尺寸块。空间相邻的块之间存在相关性,因此可以根据邻近已编码的块进行预测,预测得到的运动矢量即为MVP。时域上也是存在相关性的,因此也可以进行时域预测,可以得到时域MVP。
为了进一步减少编码比特数,采用了残差编码,即对当前MV和预测MV(MVP)的差值进行编码,这个差值即为MVD。
三者之间的关系:MV=MVP+MVD
MV的数据结构详见:
http://blog.csdn.net/lin453701006/article/details/73116271
MV通过xMotionEstimation得到。
http://blog.csdn.net/lin453701006/article/details/70860150
MVD的实际计算在predInterSearch