Algoritmo utilizado en la estimación de movimiento, consistente en la eliminación de redundancia temporal entre dos o más fotogramas sucesivos. Se ha convertido en una técnica fundamental en la mayoría de los estándares de compresión y codificación de video basados en la compensación de movimiento.
Cada una de las imágenes pertenecientes a una secuencia de video se divide en bloques rectangulares (generalmente cuadrados) denominados macrobloques. El método pretende detectar el movimiento entre imágenes con respecto a los macrobloques que las constituyen.
Los bloques del fotograma actual son cotejados con los bloques del fotograma de destino o de referencia (anterior al actual, generalmente el primero), deslizando el actual a lo largo de una región concreta de píxeles del fotograma de destino. 
Un criterio de semejanza determina la elección del bloque con mayor similitud (o que minimiza un error medido) de entre los candidatos dentro de la ventana de búsqueda de tamaño fijo del fotograma de referencia. Si el bloque elegido no se encuentra en la misma posición en ambas frames, significa que se ha movido. La distancia del bloque coincidente entre el fotograma actual y el de referencia se define como el vector de desplazamiento estimado, y será el que se le asigne a todos los píxeles del macrobloque.
En el caso ideal, los píxeles correspondientes de los bloques coincidentes serían exactamente iguales. No obstante, ese caso sucede en muy raras ocasiones, ya que la forma de los objetos en movimiento varía con respecto al punto de vista del observador o la luz reflejada sobre su superficie, y siempre nos veremos afectados por el ruido.

Bloques que presentan un mismo patrón de desplazamiento pueden combinarse formando objetos en movimiento, lo cual puede resultar muy atractivo en aplicaciones de rastreo.