<p>Motion compensation is the use of the motion estimation information to achieve compression.  If you can describe the motion, then you only have to describe the changes that occur after compensating for that motion.</p>

<p>I used <a href="http://www.cmlab.csie.ntu.edu.tw/cml/dsp/training/coding/motion/me1.html" rel="nofollow">this article</a> as a primer.  Basically the first involves how you determine what movement is happening and the other is then used to determine what information changed after the movement and to describe what changes need to occur for playback.</p>

CC BY-SA 3.0
2014-02-09T20:42:34.757Z
2014-02-09T20:42:34.757Z
AJ Henderson
<p>My understanding of their differences:</p>

<p>Motion Estimation:</p>

<ul>
<li>It is to generate the motion vector(s). </li>
<li>It's in the <em>encoder only</em>, since decoder only <em>consumes</em> the motion vector data.</li>
</ul>

<p>Motion Compensation:</p>

<ul>
<li>It's using <em>existing</em> motion vector(s) information, along with the reference image(s), to generate a predicted microblock. (The predicted block will be added to the residue block to generate a decoded microblock.) 

<ul>
<li>This generation step can be a simple x/y translation of the single reference block. But it could be more complex when dealing with multiple reference frames/blocks or field based coding. </li>
<li>For example, in H.264, you can have two MVs with different weight, thus the compensation step to generate a predicted block would be like <code>PB = w1*RB1 + w2*RB2</code>.</li>
</ul></li>
<li>It's in the decoder. But since there's a mini-decoder in the encoder. So the encoder has this component as well.</li>
</ul>

<p>This page on <a href="http://www.mpeg.org/MPEG/MSSG/tm5/Ch5/Ch5.html" rel="nofollow">MOTION ESTIMATION AND COMPENSATION</a> provides more detailed information. Also looking at their location in an <a href="http://www.csee.wvu.edu/~xinl/courses/ee569/H264_tutorial.pdf" rel="nofollow">encoder diagram</a> might also be helpful.</p>

CC BY-SA 3.0
2016-08-07T04:29:22.747Z
2016-08-07T04:47:28.370Z
2016-08-07T04:47:28.370Z
Penghe Geng
<p>I know that motion estimation has to do with calculating motion vectors, but where does motion compensation come into play. Can't we just do it with motion vectors, since, we are still calculating the differences in the displacement of the blocks in the reference and the target frames. </p>

<encoding>
What is the underlying difference between motion compensation and motion estimation?
Ali Gajani
# What is the underlying difference between motion compensation and motion estimation?

(Asked by: username_0 on 2014-02-08)

I know that motion estimation has to do with calculating motion vectors, but where does motion compensation come into play. Can't we just do it with motion vectors, since, we are still calculating the differences in the displacement of the blocks in the reference and the target frames.

**Tags:** encoding


---

## 2 answers

### Answer by username_1 on 2014-02-09. Score: 2

Motion compensation is the use of the motion estimation information to achieve compression. If you can describe the motion, then you only have to describe the changes that occur after compensating for that motion.

I used [this article](http://www.cmlab.csie.ntu.edu.tw/cml/dsp/training/coding/motion/me1.html) as a primer. Basically the first involves how you determine what movement is happening and the other is then used to determine what information changed after the movement and to describe what changes need to occur for playback.


---

### Answer by username_2 on 2016-08-07. Score: 1

My understanding of their differences:

Motion Estimation:

* It is to generate the motion vector(s).
* It's in the *encoder only*, since decoder only *consumes* the motion vector data.

Motion Compensation:

* It's using *existing* motion vector(s) information, along with the reference image(s), to generate a predicted microblock. (The predicted block will be added to the residue block to generate a decoded microblock.)
  + This generation step can be a simple x/y translation of the single reference block. But it could be more complex when dealing with multiple reference frames/blocks or field based coding.
  + For example, in H.264, you can have two MVs with different weight, thus the compensation step to generate a predicted block would be like `PB = w1*RB1 + w2*RB2`.
* It's in the decoder. But since there's a mini-decoder in the encoder. So the encoder has this component as well.

This page on [MOTION ESTIMATION AND COMPENSATION](http://www.mpeg.org/MPEG/MSSG/tm5/Ch5/Ch5.html) provides more detailed information. Also looking at their location in an [encoder diagram](http://www.csee.wvu.edu/~xinl/courses/ee569/H264_tutorial.pdf) might also be helpful.


---

