zoukankan      html  css  js  c++  java
  • JM8.6中的MV计算及上层块预测方法

    JM8.6中的运动估计

    BlockMotionSearch函数对不同帧间模式block type (1-16x16 ... 7-4x4)进行运动搜索.

    从该函数中,我们可以发现,有一个局部变量,通过下面的语句将img->pred_mvpred_mv联系了起来,

    这样其实通过调用函数SetMotionVectorPredictor来计算运动矢量的预测值(MVpred), 代码中向SetMotionVectorPredictor函数传递了pred_mv这个整型指针(指向img->pred_mv具体要保存的地方), 这样在函数SetMotionVectorPredictor中求出运动矢量的预测值,其实就存在了img->pred_mv中了.

    具体在函数SetMotionVectorPredictor中预测MV的求解如下:

    对水平和垂直两个方向进行循环

    具体的计算如下

    根据不同的mvPredType计算得出相应的pred_vec, 然后存在pmv[hv]中.

     

     

     

    2011年4月21日11:01:18

    JM8.6中对上层块模式预测的实现

    下面的几个变量是定义的保存上层块预测的结果

    上面这个三个数组应该都是和快速搜索有关的.

    具体的pred_MV_uplayer是在函数BlockMotionSearch,如代码:

    但是看代码可以发现上层块预测只在FMEable的情况下才使用的.在函数BlockMotionSearch中有对各个搜索函数的调用.

    由于pred_MV_uplayer是一个全局变量, 所以在函数FastIntegerPelBlockMotionSearch中有使用pred_MV_uplayer,如下

    对于模式1[16x16]是没有上层块预测的,所以只有在模式2-7的情况下可以使用的

    在函数FastSubPelBlockMotionSearch中也有使用

    总结上面的,我们可以发现,在进行求MVD的时候, 我们是使用利用中值预测求出来的MV的预测值, 没有使用上层块预测的结果,而上层块预测的结果是只在运动搜索中使用的.

     

  • 相关阅读:
    放一个Dynamicinputs corresponding to Dynamicknobs的Node源码
    NDK学习笔记(四):OutputContext机制
    NDK学习笔记(三):DynamicKnobs的机制
    OpenEXR的采样机制
    OpenEXR的读取机制
    OpenEXR的输出机制
    虚拟机中安装centOS及破解nuke的方法
    OpenEXR-2.2.0在Win7 x64系统下的安装方法
    NDK学习笔记(二)
    NDK学习笔记(Add.cpp注释)(一)
  • 原文地址:https://www.cnblogs.com/xkfz007/p/2612127.html
Copyright © 2011-2022 走看看