Para simplificar su confusión, hay dos procesos:
1. Estimación de
movimiento 2. Compensación de movimiento
Antes de hablar sobre la estimación, deberíamos hablar sobre la compensación de movimiento.
Digamos que la se divide en bloques .B l o c k s t [ k ] ( x ′ , y ′ )yom a gmit( x , y)B l o c k st[ k ] ( x′, y′)
La tarea de la compensación de movimiento es producir de cualquier región de la
.I m a g e t - 1 ( x , y )B l o c k st[ k ] ( x′, y′)yom a gmit - 1( x , y)
Por lo tanto, otro bloque no necesariamente alineado en el límite de 16x16 es la mejor coincidencia posibleB l o c k st - 1[ k ] ( x′+ m x , y′+ m y)
Aquí, se llama vectores de movimiento.m x , m y
Podemos calcular el error entre el objetivo y la referencia como
mir rt[k](x,y)=Blockst[k](x′,y′)−Blockst−1[k](x′+mx,y′+my)
Así que ahora, el codificador básicamente transmite (con DCT y cuantización) y para cada bloque.( m x , m y ) [ k ]Errt[k](x,y)(mx,my)[k]
Entonces el codificador tiene 2 trabajos que hacer:
1. Estimación de movimiento
El proceso o estimación para cada manera que se minimiza se llama estimación de movimiento.k E r r t [ k ] ( x , y )mx,my[k]kErrt[k](x,y)
2. Generación de imagen de error después de la compensación de movimiento
El proceso de construcción de partir de píxeles de imagen y se denomina compensación de movimiento. La imagen de error es lo que se transmite.I t ( m x , m y ) [ k ]Blockst[k](x′,y′)It(mx,my)[k]
Finalmente, el decodificador puede rehacer la compensación de movimiento por sí mismo usando vectores moiton y la imagen de error para hacer la reconstrucción final de la imagen.
Ahora nos damos cuenta de algunos puntos:
La estimación de Best Motion ayuda a minimizar la energía que se requiere transmitir y, por lo tanto, optimiza los bits para una calidad determinada.
Sin embargo, incluso si no es ideal o si la escena tiene un cambio significativo sobre la última imagen, el siempre se transmite al receptor, de ahí la reconstrucción siempre es perfecto (módulo la pérdida creada por la cuantización). Por lo tanto, incluso si tiene un vector de movimiento subóptimo o la redundancia no es mucho, la reconstrucción siempre es perfecta, ¡aunque con más bits!E r r t [ k ] ( x , y )(mx,my)[k]Errt[k](x,y)
Cada bloque es un movimiento compensado por derecho propio, por lo tanto, incluso si los vectores de movimiento reales de los bloques vecinos no tienen ningún efecto en la construcción. Por lo tanto, no es necesario tener vectores de movimiento perfectamente alineados para que sea posible una reconstrucción perfecta.Blockst[k](x′,y′)
Aunque existe un algoritmo que es lo suficientemente inteligente como para adivinar que si tiene un vector de movimiento la suposición para podría estar más cerca de eso solamente.Blockst[k](mx,my)[k]Blockst[k+1]
Finalmente, suponga que la siguiente imagen es completamente diferente, es posible que la energía para .
Energy(Errt[k](x,y))>Energy(Blockst[k](x′,y′))
En tales casos, podría ser más aconsejable transmitir el bloque directamente sin predicción que enviar la diferencia. Esto también es posible en el codificador mediante una disposición llamada bloque INTRA.