Simulador de estimación de movimiento

Simula la estimación de movimiento entre fotogramas, el emparejamiento de bloques, los patrones de búsqueda y los residuos de compresión.

Cargando simulación interactiva...

La búsqueda rápida nunca mira la mayor parte de la ventana 🖖

La estimación de movimiento es el cuello de botella de la compresión de vídeo. Un macrobloque de tamaño 16x16 se compara con el fotograma de referencia dentro de una ventana de búsqueda para encontrar el candidato con la menor suma de diferencias absolutas (SAD). La búsqueda completa exhaustiva evalúa las (2r+1)² posiciones, lo cual es lento. Los algoritmos rápidos como la búsqueda en diamante y hexagonal evalúan solo una fracción de los puntos desplazando el centro de búsqueda de forma iterativa, y se detienen cuando el mínimo queda en el centro del patrón. Pasa el ratón sobre cualquier bloque para ver su ventana de búsqueda y las evaluaciones de candidatos en tiempo real.

Por qué enviar movimiento, no píxeles 🖖

Los fotogramas de vídeo consecutivos son casi idénticos, así que en lugar de guardar cada fotograma completo, un códec describe el actual como fragmentos del anterior que se han desplazado. Cada bloque de 16×16 recibe un vector de movimiento que apunta a su mejor coincidencia, más un pequeño residuo con lo que el desplazamiento no logró explicar. La clave: los paneos suaves de cámara se comprimen de maravilla, porque un solo vector sustituye a miles de píxeles.

Los vectores de movimiento no son movimiento real 🖖

El codificador nunca pregunta qué se movió de verdad: solo busca el bloque con la menor SAD. Por eso, en regiones planas o ruidosas, el vector ganador puede apuntar a un lugar absurdo, nada parecido al desplazamiento real. Sube el control de ruido y verás cómo el campo de vectores se dispersa en un caos. Por eso los vectores de movimiento sirven mal como flujo óptico, pero perfectamente para comprimir: obedecen a la tasa de bits, no a la física.

UNA ETAPA DE UNA CADENA: QUÉ LLEGA, QUÉ SALE Y QUÉ SE ROMPE DESPUÉS

Dónde encaja esto en la tubería de codificación

Un codificador de vídeo no es un algoritmo, sino ocho etapas en un orden fijo, y el orden no es arbitrario: cada etapa existe porque la anterior hizo posible su trabajo. Esta herramienta modela una de ellas. La cadena de abajo enlaza con las otras siete.

Simulador de estimación de movimiento — localiza a dónde se movió cada bloque y codifica la diferencia en vez del bloque

Qué llega
Un fotograma P o B junto con sus fotogramas de referencia.
Qué sale
Un vector de movimiento por bloque y un residuo: exactamente aquello en lo que falló la predicción.
Qué supone la etapa siguiente
La cuantización recibe un residuo, no una imagen. Los residuos están cerca de cero en casi todas partes, y por eso cuantizarlos sale barato.
Qué se estropea aquí
Una mala coincidencia no produce una imagen equivocada, produce una cara. El residuo lleva más energía y el mismo ajuste del cuantizador emite entonces más bits. Esta etapa cambia el tamaño de la salida, no ninguno de sus ajustes.

Problema resuelto al detalle

  1. La ventana de búsqueda derivada de 225 posiciones por bloque 5 pasos

    Una búsqueda de movimiento completa comprueba 225 posiciones por bloque, 14 400 en total. Deduzca la ventana de búsqueda a partir de ahí y qué ventajas aporta una búsqueda rápida.

    1. 225 es un cuadrado perfecto, y esa es la clave: la búsqueda es una ventana cuadrada de 15 por 15 desplazamientos candidatos, lo que significa de −7 a +7 píxeles en cada dirección.

    2. Al dividir el total entre el recuento por bloque se obtiene el número de bloques en los que se dividió el fotograma.

    3. El coste aumenta con el cuadrado del radio de búsqueda, por lo que ampliar la ventana se vuelve caro rápidamente: un radio de 7 cuesta 225 posiciones, un radio de 15 cuesta 961, y un radio de 31 cuesta 3969.

    4. Esa relación cuadrática es la razón por la que existen las búsquedas rápidas. Una búsqueda en tres pasos evalúa nueve puntos, afina y repite: 27 posiciones en lugar de 225.

    5. Ocho veces más barata, y no equivalente: desciende hacia un mínimo local y puede pasar de largo el mejor ajuste real si la superficie de error tiene más de una depresión.

    Respuesta

    La herramienta indica 14400 puntos examinados, a razón de 225,0 por bloque. Ahí se resume el dilema central de la codificación de vídeo en la práctica: la búsqueda exhaustiva es óptima, pero su coste crece con el cuadrado del radio. Por eso, todos los codificadores emplean alguna heurística y aceptan que, de vez en cuando, elegirán un vector peor. Parte del coste del error se aprecia en la fila Energía residual (ECM): un vector inadecuado deja un residuo mayor, que exige más datos para codificarlo. La búsqueda rápida de movimiento no es una aproximación destinada a ahorrar tiempo sin más; apuesta por que los bits perdidos debido a vectores imperfectos sean menos que los que podrías aprovechar en otra parte.

Referencias (2)

Problemas de ejemplo

  • Barrido lento - Paneo horizontal lento: residuo casi nulo, los vectores de movimiento apuntan uniformemente a la derecha
  • Barrido rápido - Paneo rápido: mayor SAD en el límite de búsqueda, residuos de alta energía en los bordes
  • Zoom divergente - Movimiento de acercamiento: vectores divergentes desde el centro, ningún vector de traslación único encaja
  • Cámara de mano con ruido - Cámara ruidosa: SAD alto pese a vectores correctos; la energía del ruido domina el residuo