ES2963978T3 - Refinamiento de vectores de movimiento para predicción de referencias múltiples - Google Patents

Refinamiento de vectores de movimiento para predicción de referencias múltiples Download PDF

Info

Publication number
ES2963978T3
ES2963978T3 ES18713694T ES18713694T ES2963978T3 ES 2963978 T3 ES2963978 T3 ES 2963978T3 ES 18713694 T ES18713694 T ES 18713694T ES 18713694 T ES18713694 T ES 18713694T ES 2963978 T3 ES2963978 T3 ES 2963978T3
Authority
ES
Spain
Prior art keywords
motion vector
reference image
image
estimate
images
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
ES18713694T
Other languages
English (en)
Inventor
Semih Esenlik
Anand Kotra
Zhijie Zhao
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Application granted granted Critical
Publication of ES2963978T3 publication Critical patent/ES2963978T3/es
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/523Motion estimation or motion compensation with sub-pixel accuracy
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/57Motion estimation characterised by a search window with variable size or shape
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/573Motion compensation with multiple frame prediction using two or more reference frames in a given prediction direction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/513Processing of motion vectors
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/105Selection of the reference unit for prediction within a chosen coding or prediction mode, e.g. adaptive choice of position and number of pixels used for prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/109Selection of coding mode or of prediction mode among a plurality of temporal predictive coding modes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/124Quantisation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • H04N19/137Motion inside a coding unit, e.g. average field, frame or block difference
    • H04N19/139Analysis of motion vectors, e.g. their magnitude, direction, variance or reliability
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/184Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being bits, e.g. of the compressed video stream
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/513Processing of motion vectors
    • H04N19/517Processing of motion vectors by encoding
    • H04N19/52Processing of motion vectors by encoding by predictive encoding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/533Motion estimation using multistep search, e.g. 2D-log search or one-at-a-time search [OTS]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/56Motion estimation with initialisation of the vector search, e.g. estimating a good candidate to initiate a search
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/577Motion compensation with bidirectional frame interpolation, i.e. using B-pictures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/85Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression
    • H04N19/88Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression involving rearrangement of data among different coding units, e.g. shuffling, interleaving, scrambling or permutation of pixel data or permutation of transform coefficient data among different blocks

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Magnetic Resonance Imaging Apparatus (AREA)

Abstract

La presente invención se refiere a la realización del refinamiento de vectores de movimiento en un espacio de búsqueda para interpredicción de múltiples referencias. Se seleccionan dos o más imágenes de referencia, una de las utilizadas para el refinamiento del vector de movimiento. Sobre la base de una estimación inicial de un vector de movimiento con respecto a la imagen de referencia para el refinamiento del vector de movimiento, se construye un espacio de búsqueda en esta imagen de referencia. Utilizando la coincidencia de plantillas, se refina el primer vector de movimiento. El segundo vector de movimiento de otra imagen de referencia se calcula utilizando su estimación inicial, la estimación inicial del primer vector de movimiento y el primer vector de movimiento refinado. (Traducción automática con Google Translate, sin valor legal)

Description

DESCRIPCIÓN
Refinamiento de vectores de movimiento para predicción de referencias múltiples
La presente invención se refiere al campo de la codificación de vídeo y, en particular, a la estimación de vectores de movimiento aplicable en una interpredicción de referencias múltiples. La solicitud reivindica la prioridad del documento PCT/EP2017/066342 presentado el 30 de junio de 2017.
Antecedentes
Los códec de vídeo híbridos actuales emplean una codificación predictiva. Una imagen de una secuencia de vídeo se subdivide en bloques de píxeles, y estos bloques se codifican luego. En lugar de codificar un bloque de píxeles por píxel, el bloque completo se predice usando píxeles ya codificados en la proximidad espacial o temporal del bloque. El codificador procesa además solo las diferencias entre el bloque y su predicción. El procesamiento adicional incluye típicamente una transformación de los píxeles del bloque en coeficientes en un dominio de transformación. Los coeficientes pueden entonces comprimirse adicionalmente por medio de cuantificación y compactarse adicionalmente mediante codificación entrópica para formar un flujo de bits. El flujo de bits incluye además cualquier información de señalización que permita al decodificador decodificar el vídeo codificado. Por ejemplo, la señalización puede incluir ajustes con respecto a los ajustes del codificador, tal como el tamaño de la imagen de entrada, la tasa de fotogramas, la indicación de la etapa de cuantificación, la predicción aplicada a los bloques de las imágenes, o similares. La predicción temporal explota la correlación temporal entre las imágenes, también denominadas fotogramas, de un vídeo. La predicción temporal también se denomina interpredicción, ya que es una predicción que usa las dependencias entre (inter) fotogramas de vídeo diferentes. Por consiguiente, un bloque que se codifica, también denominado bloque actual, se predice a partir de (una o más) imágenes codificadas previamente denominadas imagen de referencia. La imagen de referencia no es necesariamente una imagen que precede a la imagen actual, en la que se ubica el bloque actual en el orden de visualización de la secuencia de vídeo. El codificador puede codificar las imágenes en un orden de codificación diferente del orden de visualización. Como una predicción del bloque actual, puede determinarse un bloque coubicado en una imagen de referencia. El bloque coubicado es un bloque que está ubicado en la imagen de referencia en la misma posición que el bloque actual en la imagen actual. Dicha predicción es precisa para regiones de imagen inmóviles, es decir, regiones de imagen sin movimiento de una imagen a otra.
Con el fin de obtener un predictor que tenga en cuenta el movimiento, es decir, un predictor con compensación de movimiento, típicamente se emplea una estimación de movimiento al determinar la predicción del bloque actual. Por consiguiente, el bloque actual se predice mediante un bloque en la imagen de referencia, que está ubicado a una distancia dada por un vector de movimiento desde la posición del bloque coubicado. Con el fin de permitir a un decodificador determinar la misma predicción del bloque actual, el vector de movimiento puede señalizarse en el flujo de bits. Con el fin de reducir adicionalmente la sobrecarga de señalización provocada por la señalización del vector de movimiento para cada uno de los bloques, el propio vector de movimiento puede estimarse. La estimación del vector de movimiento puede realizarse basándose en los vectores de movimiento de los bloques vecinos en el dominio espacial y/o temporal.
La predicción del bloque actual puede calcularse usando una imagen de referencia o ponderando las predicciones obtenidas a partir de dos o más imágenes de referencia. La imagen de referencia puede ser una imagen adyacente, es decir, una imagen inmediatamente anterior y/o la imagen inmediatamente posterior a la imagen actual en el orden de visualización, ya que es más probable que las imágenes adyacentes sean similares a la imagen actual. Sin embargo, en general, la imagen de referencia puede ser también cualquier otra imagen anterior o posterior a la imagen actual en el orden de visualización y que precede a la imagen actual en el flujo de bits (orden de decodificación). Esto puede proporcionar ventajas, por ejemplo, en caso de oclusiones y/o movimiento no lineal en el contenido del vídeo. Por lo tanto, la imagen de referencia también puede señalizarse en el flujo de bits.
Un modo especial de la interpredicción es la denominada bipredicción, en la que se usan dos imágenes de referencia para generar la predicción del bloque actual. En particular, dos predicciones determinadas en las dos respectivas imágenes de referencia se combinan en una señal de predicción del bloque actual. La bipredicción puede dar como resultado una predicción más precisa del bloque actual que la unipredicción, es decir, la predicción usando solo una única imagen de referencia. Una predicción más precisa conduce a diferencias más pequeñas entre los píxeles del bloque actual y la predicción (denominada también “ residual” ), que pueden codificarse de manera más eficiente, es decir, comprimirse en un flujo de bits más corto. En general, se pueden usar más de dos imágenes de referencia para encontrar más de dos bloques de referencia respectivos para predecir el bloque actual, es decir, se puede aplicar una interpredicción de referencias múltiples. Por lo tanto, el término predicción de referencias múltiples incluye la bipredicción así como predicciones que usan más de dos imágenes de referencia.
Con el fin de proporcionar una estimación de movimiento más precisa, la resolución de la imagen de referencia puede mejorarse mediante la interpolación de muestras entre píxeles. La interpolación fraccionaria de píxeles puede realizarse promediando ponderadamente los píxeles más cercanos. En caso de resolución de medio píxel, por ejemplo, se usa una interpolación bilineal. Otros píxeles fraccionarios se calculan como un promedio de los píxeles más cercanos ponderados por la inversa de la distancia entre los respectivos píxeles más cercanos al píxel que se predice.
La estimación del vector de movimiento es una tarea computacionalmente compleja en la que se calcula una similitud entre el bloque actual y los correspondientes bloques de predicción a los que apuntan los vectores de movimiento candidatos en la imagen de referencia. Con el fin de reducir la complejidad, el número de vectores de movimiento candidatos generalmente se reduce limitando los vectores de movimiento candidatos a un cierto espacio de búsqueda. El espacio de búsqueda puede estar definido, por ejemplo, por un número y/o posiciones de píxeles que rodean la posición en la imagen de referencia correspondiente a la posición del bloque actual en la imagen actual. Por otro lado, los vectores de movimiento candidatos pueden definirse mediante una lista de vectores de movimiento candidatos formada por los vectores de movimiento de bloques vecinos.
Los vectores de movimiento generalmente se determinan, al menos parcialmente, en el lado del codificador y se señalan al decodificador dentro del flujo de bits codificado. Sin embargo, los vectores de movimiento también pueden derivarse en el decodificador. En tal caso, el bloque actual no está disponible en el decodificador y no puede usarse para calcular la similitud con los bloques a los que los vectores de movimiento candidatos apuntan en la imagen de referencia. Por lo tanto, en lugar del bloque actual, se usa una plantilla que se construye con píxeles de bloques ya decodificados. Por ejemplo, pueden usarse píxeles ya decodificados adyacentes al bloque actual (en la imagen actual o en la imagen de referencia). Dicha estimación de movimiento proporciona la ventaja de reducir la señalización: el vector de movimiento se deriva de la misma manera tanto en el codificador como en el decodificador y, por lo tanto, no se necesita señalización. Por otro lado, la precisión de dicha estimación de movimiento puede ser menor.
Con el fin de proporcionar un equilibrio entre la precisión y la sobrecarga de señalización, la estimación del vector de movimiento puede dividirse en dos etapas: derivación del vector de movimiento y refinamiento del vector de movimiento. Por ejemplo, una derivación del vector de movimiento puede incluir la selección de un vector de movimiento de la lista de candidatos. Dicho vector de movimiento seleccionado puede refinarse adicionalmente, por ejemplo, mediante una búsqueda dentro de un espacio de búsqueda. La búsqueda en el espacio de búsqueda se basa en el cálculo de la función de coste para cada vector de movimiento candidato, es decir, para cada posición candidata del bloque al que apunta el vector de movimiento candidato.
El documento JVET-D0029: Decoder-Side Motion Vector Refinement Based on Bilateral Template Matching, X. Chen, J. An, J. Zheng (el documento se puede encontrar en: http://phenix.it-sudparis.eu/ivet/site) muestra el refinamiento del vector de movimiento en el que se encuentra un primer vector de movimiento con una resolución de píxeles enteros y se refina adicionalmente mediante una búsqueda con una resolución de medio píxel en un espacio de búsqueda alrededor del primer vector de movimiento.
El documento WO 2016/160608 A1 describe un método de procesamiento de datos de vídeo que incluye determinar un vector de movimiento candidato para derivar información de movimiento de un bloque actual de datos de vídeo, donde la información de movimiento indica movimiento del bloque actual con respecto a datos de vídeo de referencia. El método también incluye determinar un vector de movimiento derivado para el bloque actual basándose en el vector de movimiento candidato determinado, donde determinar el vector de movimiento derivado comprende realizar una búsqueda de movimiento para un primer conjunto de datos de referencia que corresponde a un segundo conjunto de datos de referencia fuera del bloque actual.
Resumen
Cuando se aplica una predicción de referencias múltiples, los vectores de movimiento deben determinarse en una pluralidad de imágenes de referencia. Incluso si los vectores de movimiento se señalan en la primera etapa de modo que el decodificador no necesita realizar ninguna búsqueda adicional, el refinamiento del vector de movimiento aún requiere una búsqueda adicional entre los vectores de movimiento de un espacio de búsqueda correspondiente. Esta puede ser una tarea compleja que requiere recursos computacionales, además de memoria.
La presente descripción proporciona una técnica en la que se determina un primer vector de movimiento en una primera imagen de referencia y un segundo vector de movimiento en una segunda imagen de referencia. Por lo tanto, la complejidad se puede reducir. En primer lugar, el primer vector de movimiento y el segundo vector de movimiento se estiman aproximadamente. A continuación, el primer vector de movimiento se refina realizando una búsqueda en un espacio de búsqueda dado por la estimación aproximada del primer vector de movimiento. El segundo vector de movimiento se determina mediante cálculos basados en su estimación aproximada, así como basados en el primer vector de movimiento refinado. El primer y segundo vectores de movimiento pueden aplicarse en la interpredicción del bloque actual en una imagen actual, usada en el decodificador en el lado de codificación y/o decodificación.
El invento se expone en el conjunto de reivindicaciones adjuntas.
Según un primer aspecto, el invento se refiere a un aparato para determinar un primer vector de movimiento asociado a una primera imagen de referencia y un segundo vector de movimiento asociado a una segunda imagen de referencia, donde el primer y segundo vectores de movimiento se aplicarán en la interpredicción de un bloque de imagen en una imagen actual; el aparato comprende una unidad de refinamiento de vector de movimiento y una unidad de cálculo de vector de movimiento. La unidad de refinamiento de vector de movimiento se configura para obtener una estimación del primer vector de movimiento. Se especifica un espacio de búsqueda basándose en la estimación del primer vector de movimiento. Dentro del espacio de búsqueda, la unidad de refinamiento de vector de movimiento realiza una búsqueda usando una coincidencia de plantilla para determinar el primer vector de movimiento. La unidad de cálculo del vector de movimiento obtiene una estimación del segundo vector de movimiento. Basándose en la estimación del segundo vector de movimiento y una diferencia entre el primer vector de movimiento y la estimación del primer vector de movimiento, la unidad de cálculo de vector de movimiento calcula el segundo vector de movimiento.
Por lo tanto, la determinación del vector de movimiento puede realizarse con menos complejidad manteniendo la precisión dada por el refinamiento del primer vector de movimiento y, basándose en eso, se estima la cantidad de refinamiento para el segundo vector de movimiento.
En una posible forma de implementación del aparato según el primer aspecto como tal, el segundo vector de movimiento se calcula añadiendo a la estimación del segundo vector de movimiento una función de una diferencia entre el primer vector de movimiento y la estimación del primer vector de movimiento. Esta función puede incluir escalado y/o recorte. Cuando se determina el parámetro de escala, su valor puede depender de la relación entre las distancias respectivas de la primera imagen de referencia y la segunda imagen de referencia a la imagen actual.
El cálculo del segundo vector de movimiento en función del refinamiento realizado en el primer vector de movimiento es una estimación de baja complejidad. Además, al modificarlo adicionalmente (p. ej., al escalarlo según la distancia entre las imágenes de referencia respectivas), la estimación puede volverse aún más precisa.
Ventajosamente, el aparato contiene además una unidad de selección de imágenes de referencia para obtener imágenes de referencia y seleccionar cuál de ellas es la primera imagen de referencia y cuál la segunda imagen de referencia. Después de esta selección, determina si la primera imagen de referencia o la segunda imagen de referencia se usarán para el refinamiento del vector de movimiento. Una lista de imágenes de referencia asocia un índice que se incluirá en el flujo de bits con la posición de una imagen de referencia con respecto a la imagen actual. La unidad de selección de imágenes de referencia se configura para seleccionar la primera imagen de referencia y la segunda imagen de referencia basándose en si se hace referencia a esta en el flujo de bits mediante un índice en la lista predefinida de imágenes de referencia.
En otras palabras, la unidad de selección de imágenes de referencia se configura para seleccionar ya sea la primera imagen o la segunda imagen basándose en si hace referencia a la respectiva primera o segunda imagen en un flujo de bits, que también comprende el bloque de imagen codificado del vídeo, un índice relacionado con una lista predefinida de imágenes de referencia entre al menos dos listas de imágenes de referencia, en donde una lista de imágenes de referencia asocia un índice con la posición de una imagen de referencia con respecto a la imagen actual.
Si a las dos imágenes de referencia hace referencia en el flujo de bits un índice en la misma lista predefinida de imágenes de referencia, la unidad de selección de imágenes de referencia puede seleccionar la imagen de referencia que se usará para el refinamiento del vector de movimiento como la imagen con la posición más alta en dicha lista de imágenes de referencia.
Alternativamente, la imagen de referencia que se usará para el refinamiento del vector de movimiento se puede seleccionar como la imagen que tiene la capa temporal más baja entre las dos imágenes.
La imagen de referencia que se usará para el refinamiento del vector de movimiento puede seleccionarse como la imagen que tiene el valor de cuantificación base más bajo, o como la imagen que tiene la distancia más baja a la imagen actual.
Como un enfoque adicional, la imagen de referencia que se usará para el refinamiento del vector de movimiento se puede seleccionar de tal manera que la magnitud de la estimación del vector de movimiento que apunta a la imagen de referencia que se usará para el refinamiento del vector de movimiento sea menor que la magnitud de la estimación del otro vector de movimiento.
El aparato puede comprender además una unidad de determinación del vector de movimiento para determinar la estimación del primer vector de movimiento y la estimación del segundo vector de movimiento. Esta determinación se realiza seleccionándolos de un conjunto de candidatos a vector de movimiento basándose en la similitud de una plantilla con una porción de la respectiva imagen a la que hace referencia el candidato a vector de movimiento.
Un codificador de vídeo para codificar una pluralidad de imágenes en un flujo de bits comprende una unidad de interpredicción, un formador de flujo de bits y una unidad de reconstrucción. La unidad de interpredicción incluye el aparato para determinar el primer vector de movimiento y el segundo vector de movimiento, así como una unidad de predicción. La unidad de predicción determina el bloque de predicción según una porción de la primera imagen de referencia a la que hace referencia el primer vector de movimiento y una porción de la segunda imagen de referencia a la que hace referencia el segundo vector de movimiento. El formador de flujo de bits incluye en el flujo de bits la estimación del primer vector de movimiento y la estimación del segundo vector de movimiento. La unidad de reconstrucción reconstruye el bloque actual según el bloque de predicción y almacena el bloque reconstruido en una memoria.
Un decodificador de vídeo para decodificar una pluralidad de imágenes desde un flujo de bits comprende una unidad de interpredicción, un analizador de flujo de bits y una unidad de reconstrucción. La unidad de interpredicción incluye el aparato para determinar el primer vector de movimiento y el segundo vector de movimiento, así como una unidad de predicción. La unidad de predicción determina el bloque de predicción según una porción de la primera imagen de referencia a la que hace referencia el primer vector de movimiento y una porción de la segunda imagen de referencia a la que hace referencia el segundo vector de movimiento. El analizador de flujo de bits obtiene del flujo de bits una estimación del primer vector de movimiento y una estimación del segundo vector de movimiento. La unidad de reconstrucción reconstruye el bloque actual, según el bloque de predicción.
El método comprende el refinamiento del vector de movimiento y el cálculo del vector de movimiento. Se obtiene una estimación del primer vector de movimiento. Se especifica un espacio de búsqueda basándose en la estimación del primer vector de movimiento. Dentro del espacio de búsqueda, se realiza una búsqueda para determinar el primer vector de movimiento usando la coincidencia de plantilla. Se obtiene una estimación del segundo vector de movimiento. Después de que se ha realizado la búsqueda para determinar el primer vector de movimiento, basándose en la estimación del segundo vector de movimiento y una diferencia entre el primer vector de movimiento y la estimación del primer vector de movimiento, se calcula el segundo vector de movimiento. El segundo vector de movimiento puede calcularse añadiendo a la estimación del segundo vector de movimiento una función de una diferencia entre el primer vector de movimiento y la estimación del primer vector de movimiento. Esta función incluye escalado y/o recorte. El valor del parámetro de escala depende de la relación entre las distancias respectivas de la primera imagen de referencia y la segunda imagen de referencia a la imagen actual.
El método comprende además una selección de imágenes de referencia para obtener imágenes de referencia y seleccionar cuál de ellas es la primera imagen de referencia y cuál la segunda imagen de referencia. Después de esta selección, determina si la primera imagen de referencia o la segunda imagen de referencia se usarán para el refinamiento del vector de movimiento. Una lista de imágenes de referencia asocia un índice que se incluirá en el flujo de bits con la posición de una imagen de referencia con respecto a la imagen actual. La selección de imágenes de referencia se realiza para seleccionar la primera imagen de referencia y la segunda imagen de referencia basándose en si se hace referencia a esta en el flujo de bits mediante un índice en la lista predefinida de imágenes de referencia. Si a las dos imágenes de referencia se hace referencia en el flujo de bits mediante un índice en la misma lista predefinida de imágenes de referencia, la imagen de referencia que se usará para el refinamiento del vector de movimiento se selecciona como la imagen con la posición más alta en dicha lista de imágenes de referencia. Alternativamente, la imagen de referencia que se usará para el refinamiento del vector de movimiento se puede seleccionar como la imagen que tiene la capa temporal más baja entre las dos imágenes. La imagen de referencia que se usará para el refinamiento del vector de movimiento puede seleccionarse como la imagen que tiene el valor de cuantificación base más bajo, o como la imagen que tiene la distancia más baja a la imagen actual. Como un enfoque adicional, la imagen de referencia que se usará para el refinamiento del vector de movimiento se puede seleccionar de tal manera que la magnitud de la estimación del vector de movimiento que apunta a la imagen de referencia que se usará para el refinamiento del vector de movimiento sea menor que la magnitud de la estimación del otro vector de movimiento.
El método puede determinar además la estimación del primer vector de movimiento y la estimación del segundo vector de movimiento. Esta determinación se realiza seleccionándolos de un conjunto de candidatos a vector de movimiento basándose en la similitud de una plantilla con una porción de la respectiva imagen a la que hace referencia el candidato a vector de movimiento.
Un método de codificación de vídeo para codificar una pluralidad de imágenes en un flujo de bits comprende realizar la interpredicción, formación de flujo de bits y reconstrucción de bloques. La interpredicción incluye determinar el primer vector de movimiento y el segundo vector de movimiento, así como una predicción de bloque. La predicción incluye determinar el bloque de predicción según una porción de la primera imagen de referencia a la que hace referencia el primer vector de movimiento y una porción de la segunda imagen de referencia a la que hace referencia el segundo vector de movimiento. La formación de flujo de bits incluye en el flujo de bits la estimación del primer vector de movimiento y la estimación del segundo vector de movimiento. La reconstrucción incluye reconstruir el bloque actual según el bloque de predicción y almacenar el bloque reconstruido en una memoria.
Un método de decodificación de vídeo para decodificar una pluralidad de imágenes desde un flujo de bits comprende realizar la interpredicción, el análisis de flujo de bits y la reconstrucción de bloques. La interpredicción incluye determinar el primer vector de movimiento y el segundo vector de movimiento, así como una predicción de bloque. La predicción determina el bloque de predicción según una porción de la primera imagen de referencia a la que hace referencia el primer vector de movimiento y una porción de la segunda imagen de referencia a la que hace referencia el segundo vector de movimiento.
El análisis del flujo de bits obtiene del flujo de bits una estimación del primer vector de movimiento y una estimación del segundo vector de movimiento. La reconstrucción incluye reconstruir el bloque actual, según el bloque de predicción.
El presente invento puede reducir el número de candidatos a búsqueda en el proceso de refinamiento del vector de movimiento sin ningún impacto en el rendimiento de la codificación proporcionando al mismo tiempo una calidad de imagen similar. Esto se logra realizando una búsqueda para el refinamiento del vector de movimiento solo en una imagen de referencia para un bloque actual, mientras que otro vector de movimiento para otra imagen de referencia del mismo bloque actual se calcula basándose en el vector de movimiento refinado.
Breve descripción de los dibujos
En las siguientes realizaciones ilustrativas se describen con más detalle con referencia a las figuras y dibujos adjuntos, en los que:
la Figura 1 es un diagrama de bloques que muestra una estructura ilustrativa de un codificador que se puede emplear en la derivación y el refinamiento del vector de movimiento;
la Figura 2 es un diagrama de bloques que muestra una estructura ilustrativa de un decodificador que se puede emplear en la derivación y el refinamiento del vector de movimiento;
la Figura 3 es un dibujo esquemático que ilustra el refinamiento de vector de movimiento de un primer vector de movimiento;
la Figura 4 es un dibujo esquemático que ilustra el refinamiento de vector de movimiento del segundo vector de movimiento basándose en el primer vector de movimiento refinado;
la Figura 5 es un diagrama de bloques que ilustra un aparato de refinamiento de vector de movimiento;
la Figura 6 es un dibujo esquemático que ilustra varias configuraciones de espacios de búsqueda;
la Figura 7 es un dibujo esquemático que ilustra un método para determinar vectores de movimiento según una realización; y
la Figura 8 es un diagrama de bloques que ilustra una unidad de interpredicción para determinar vectores de movimiento y realizar la intrapredicción según una realización.
Descripción de las realizaciones
La presente descripción se refiere a la determinación de vectores de movimiento para una predicción de referencias múltiples. Puede emplearse en la estimación de movimiento realizada durante la codificación y decodificación de vídeo. A continuación se describen un codificador y decodificador ilustrativos que pueden implementar la estimación de movimiento empleando la construcción de espacio de búsqueda de la presente descripción.
La Figura 1 muestra un codificador 100 que comprende una entrada para recibir bloques de entrada de fotogramas o imágenes de un flujo de vídeo y una salida para generar un flujo de bits de vídeo codificado. El término “ fotograma” en esta descripción se usa como sinónimo de imagen. Sin embargo, cabe señalar que la presente descripción también es aplicable a los campos en el caso en que se aplica el entrelazado. En general, una imagen incluye m veces n píxeles. Esto corresponde a muestras de imágenes y puede comprender uno o más componentes de color. En aras de la simplicidad, la siguiente descripción se refiere a píxeles, entendiéndose como muestras de luminancia. Sin embargo, cabe señalar que la búsqueda de vectores de movimiento de la invención puede aplicarse a cualquier componente de color, incluida la crominancia o componentes de un espacio de búsqueda, tal como RGB o similares. Por otro lado, puede resultar beneficioso realizar solo la estimación del vector de movimiento para un componente y aplicar el vector de movimiento determinado a más (o todos los) componentes.
Los bloques de entrada que se codificarán no tienen necesariamente el mismo tamaño. Una imagen puede incluir bloques de diferentes tamaños y también la trama de los bloques de imágenes diferentes puede diferir.
En una realización explicativa, el codificador 100 se configura para aplicar una predicción, transformación, cuantificación y codificación entrópica al flujo de vídeo. La transformación, cuantificación y codificación entrópica se llevan a cabo respectivamente mediante una unidad de transformación 101, una unidad de cuantificación 102 y una unidad de codificación entrópica 103 para generar como una salida el flujo de bits de vídeo codificado.
El flujo de vídeo puede incluir una pluralidad de fotogramas, en donde cada fotograma se divide en bloques de un cierto tamaño que se intra o intercodifican. Por ejemplo, los bloques del primer fotograma del flujo de vídeo se intracodifican por medio de una unidad de intrapredicción 109. Un intrafotograma se codifica usando solo la información dentro del mismo fotograma, de modo que puede decodificarse independientemente y puede proporcionar un punto de entrada en el flujo de bits para acceso aleatorio. Los bloques de otros fotogramas del flujo de vídeo pueden intercodificarse por medio de una unidad de interpredicción 110: la información de fotogramas previamente codificados (fotogramas de referencia) se usa para reducir la redundancia temporal, de modo que cada bloque de un fotograma intercodificado se predice a partir de un bloque en un fotograma de referencia. Una unidad de selección de modo 108 se configura para seleccionar si un bloque de un fotograma debe procesarse mediante la unidad 109 de intrapredicción o la unidad 110 de interpredicción 110. Este bloque también controla los parámetros de intra o interpredicción. Con el fin de permitir la actualización de la información de imagen, el bloque intracodificado puede proporcionarse dentro de fotogramas intercodificados. Además, los intrafotogramas que contienen solo bloques intracodificados pueden insertarse regularmente en la secuencia de vídeo para proporcionar puntos de entrada para la decodificación, es decir, puntos donde el decodificador puede comenzar a decodificar sin tener información de los fotogramas previamente codificados.
La unidad 109 de intrapredicción es una unidad de predicción de bloques. Para realizar una predicción espacial o temporal, los bloques codificados pueden procesarse adicionalmente mediante una unidad 104 de cuantificación inversa y una unidad 105 de transformación inversa. Después de la reconstrucción del bloque, se aplica una unidad 106 de filtrado de bucle para mejorar adicionalmente la calidad de la imagen decodificada. Los bloques filtrados forman entonces los fotogramas de referencia que, a continuación, se almacenan en una memoria intermedia 107 de fotogramas. Dicho bucle de decodificación (decodificador) en el lado del codificador proporciona la ventaja de producir fotogramas de referencia que son los mismos que las imágenes de referencia reconstruidas en el lado del decodificador. Por consiguiente, el lado del codificador y el del decodificador funcionan de manera correspondiente. El término “ reconstrucción” aquí se refiere a la obtención del bloque reconstruido añadiendo al bloque residual decodificado el bloque de predicción.
La unidad 110 de interpredicción recibe como entrada un bloque de un fotograma o imagen actual que se intercodificará y uno o varios fotogramas o imágenes de referencia desde la memoria intermedia 107 de fotogramas. La estimación de movimiento y la compensación de movimiento se aplican mediante la unidad 110 de interpredicción. La estimación de movimiento se usa para obtener un vector de movimiento y un fotograma de referencia basándose en una cierta función de coste. La compensación de movimiento describe entonces un bloque actual del fotograma actual en términos del traslado de un bloque de referencia del fotograma de referencia al fotograma actual, es decir, mediante un vector de movimiento. La unidad 110 de interpredicción genera el bloque de predicción para el bloque actual, en donde dicho bloque de predicción minimiza la función de coste. Por ejemplo, la función de coste puede ser una diferencia entre el bloque actual que se codificará y su bloque de predicción, es decir, la función de coste minimiza el bloque residual. La minimización del bloque residual se basa, p. ej., en calcular una suma de diferencias absolutas (SAD) entre todos los píxeles (muestras) del bloque actual y el bloque candidato en la imagen de referencia candidata. Sin embargo, en general, puede emplearse cualquier otra métrica de similitud, tal como el error cuadrático medio (MSE) o la métrica de similitud estructural (SSIM).
Sin embargo, la función de coste también puede ser el número de bits necesarios para codificar dicho interbloque y/o distorsión resultante de dicha codificación. Por lo tanto, puede usarse el procedimiento de optimización tasadistorsión para decidir sobre la selección del vector de movimiento y/o, en general, sobre los parámetros de codificación, tales como si usar la inter o intrapredicción para un bloque y con cuáles configuraciones.
La unidad 109 de intrapredicción recibe como una entrada un bloque de un fotograma o imagen actual que se intracodificará y una o varias muestras de referencia de un área ya reconstruida del fotograma actual. La intrapredicción describe entonces píxeles de un bloque actual del fotograma actual en términos de una función de muestras de referencia del fotograma actual. La unidad 109 de intrapredicción genera un bloque de predicción para el bloque actual, en donde dicho bloque de predicción minimiza ventajosamente la diferencia entre el bloque actual que se codificará y su bloque de predicción, es decir, minimiza el bloque residual. La minimización del bloque residual puede basarse, p. ej., en un procedimiento de optimización tasa-distorsión. En particular, el bloque de predicción se obtiene como una interpolación direccional de las muestras de referencia. La dirección puede determinarse mediante la optimización tasa-distorsión y/o el cálculo de una medida de similitud como se mencionó anteriormente en relación con la interpredicción.
La diferencia entre el bloque actual y su predicción, es decir, el bloque residual, se transforma a continuación mediante la unidad 101 de transformación. Los coeficientes de transformada se cuantifican mediante la unidad 102 de cuantificación y se codifican por entropía mediante la unidad 103 de codificación entrópica. El flujo de bits de vídeo codificado así generado comprende bloques intracodificados y bloques intercodificados y la señalización correspondiente (tal como la indicación de modo, indicación del vector de movimiento y/o dirección de intrapredicción). La unidad 101 de transformación puede aplicar una transformada lineal tal como una transformada de Fourier o de coseno discreta (DFT/FFT o DCT). Dicha transformación en el dominio de frecuencia espacial proporciona la ventaja de que los coeficientes resultantes tienen típicamente valores más altos en las frecuencias más bajas. Por lo tanto, después de un escaneo efectivo (tal como en zigzag) de los coeficientes y cuantificación, la secuencia resultante de valores tiene típicamente algunos valores más grandes al inicio y termina con una serie de ceros. Esto permite una codificación más eficiente. La unidad 102 de cuantificación realiza la compresión con pérdidas reales al reducir la resolución de los valores de coeficiente. La unidad 103 de codificación entrópica asigna entonces a los valores de coeficiente palabras código binarias para producir un flujo de bits. La unidad 103 de codificación entrópica también codifica la información de señalización (no mostrada en la Figura 1).
La Figura 2 muestra un decodificador de vídeo 200. El decodificador de vídeo 200 comprende particularmente una memoria intermedia 207 de imágenes de referencia y una unidad 209 de intrapredicción, que es una unidad de predicción de bloques. La memoria intermedia 207 de imágenes de referencia se configura para almacenar al menos un fotograma de referencia reconstruido a partir del flujo de bits de vídeo codificado, siendo dicho fotograma de referencia diferente de un fotograma actual (fotograma decodificado actualmente) del flujo de bits de vídeo codificado. La unidad 209 de intrapredicción se configura para generar un bloque de predicción, que es una estimación del bloque que se decodificará. La unidad 209 de intrapredicción se configura para generar esta predicción basándose en muestras de referencia que se obtienen de la memoria intermedia 207 de imágenes de referencia.
El decodificador 200 se configura para decodificar el flujo de bits de vídeo codificado generado por el codificador de vídeo 100 y, preferiblemente, tanto el decodificador 200 como el codificador 100 generan predicciones idénticas para el bloque respectivo que se codificará/decodificará. Las características de la memoria intermedia 207 de imágenes de referencia y la unidad 209 de intrapredicción son similares a las características de la memoria intermedia 107 de imágenes de referencia y la unidad 109 de intrapredicción de la Figura 1.
El decodificador de vídeo 200 comprende unidades adicionales que también están presentes en el codificador de vídeo 100 como, p. ej., una unidad 204 de cuantificación inversa, una unidad 205 de transformación inversa y una unidad 206 de filtrado de bucle, que corresponden respectivamente a la unidad 104 de cuantificación inversa, la unidad 105 de transformación inversa y la unidad 106 de filtrado de bucle del codificador de vídeo 100.
Una unidad 203 de decodificación entrópica se configura para decodificar el flujo de bits de vídeo codificado recibido y para obtener correspondientemente coeficientes de transformación residuales cuantificados e información de señalización. Los coeficientes de transformación residuales cuantificados se alimentan a la unidad 204 de cuantificación inversa y a una unidad 205 de transformación inversa para generar un bloque residual. El bloque residual se añade a un bloque de predicción y la adición se alimenta a la unidad 206 de filtrado de bucle para obtener el vídeo decodificado. Los fotogramas del vídeo decodificado pueden almacenarse en la memoria intermedia 207 de imágenes de referencia y servir como un fotograma de referencia para la interpredicción.
Generalmente, las unidades 109 y 209 de intrapredicción de las Figuras 1 y 2 pueden usar muestras de referencia de un área ya codificada para generar señales de predicción para bloques que necesitan codificarse o necesitan decodificarse.
La unidad 203 de decodificación entrópica recibe como su entrada el flujo de bits codificado. En general, el flujo de bits se analiza en primer lugar, es decir, los parámetros de señalización y los residuales se extraen del flujo de bits. Típicamente, la sintaxis y la semántica del flujo de bits se definen mediante un estándar de modo que los codificadores y decodificadores pueden funcionar de una manera interoperable. Como se describe en la sección de antecedentes anterior, el flujo de bits codificado no solo incluye los residuales de predicción. En el caso de predicción con compensación de movimiento, una indicación de vector de movimiento también se codifica en el flujo de bits y se analiza a partir del mismo en el decodificador. La indicación de vector de movimiento puede ser dada por medio de una imagen de referencia en la que se proporciona el vector de movimiento y por medio de las coordenadas de vector de movimiento. Hasta ahora, se ha tomado en consideración la codificación de los vectores de movimiento completo. Sin embargo, también se puede codificar solo la diferencia entre el vector de movimiento actual y el vector de movimiento anterior en el flujo de bits. Este enfoque permite explotar la redundancia entre vectores de movimiento de bloques vecinos.
Con el fin de codificar eficientemente la imagen de referencia, el códec H.265 (ITU-T, H265, Serie H: Audiovisual and multimedia systems: High Efficient Video Coding) proporciona una lista de imágenes de referencia asignando a los índices de lista los respectivos fotogramas de referencia. A continuación, el fotograma de referencia se señaliza en el flujo de bits incluyendo en el mismo el correspondiente índice de lista asignado. Dicha lista puede definirse en el estándar o señalizarse al inicio del vídeo o de un conjunto de varios fotogramas. Cabe señalar que en H.265 hay dos listas de imágenes de referencia definidas, llamadas L0 y L1. A continuación, la imagen de referencia se señaliza en el flujo de bits indicando la lista (L0 o L1) e indicando un índice en esa lista asociada con la imagen de referencia deseada. Proporcionar dos o más listas puede tener ventajas para una mejor compresión. Por ejemplo, L0 puede usarse tanto para secciones interpredichas unidireccionalmente como para secciones interpredichas bidireccionalmente, mientras que L1 solo puede usarse para secciones interpredichas bidireccionalmente. Sin embargo, en general, la presente descripción no se limita a ningún contenido de las listas L0 y L1.
Las listas L0 y L1 pueden definirse en el estándar y fijarse. Sin embargo, se puede lograr más flexibilidad en la codificación/decodificación señalizando las mismas al inicio de la secuencia de vídeo. Por consiguiente, el codificador puede configurar las listas L0 y L1 con imágenes de referencia particulares ordenadas según el índice. Las listas L0 y L1 pueden tener el mismo tamaño fijo. Puede haber más de dos listas en general. El vector de movimiento puede señalizarse directamente mediante las coordenadas en la imagen de referencia. Alternativamente, como también se especifica en H.265, se puede construir una lista de vectores de movimiento candidatos y se puede transmitir un índice asociado en la lista con el vector de movimiento particular.
Los vectores de movimiento del bloque actual normalmente se correlacionan con los vectores de movimiento de bloques vecinos en la imagen actual o en las imágenes codificadas anteriormente. Esto se debe a que es probable que los bloques vecinos correspondan al mismo objeto móvil con un movimiento similar y no es probable que el movimiento del objeto cambie abruptamente con el tiempo. En consecuencia, el uso de los vectores de movimiento en bloques vecinos como predictores reduce el tamaño de la diferencia del vector de movimiento señalizado. Los MVP normalmente se derivan de vectores de movimiento ya decodificados a partir de bloques espaciales vecinos o de bloques temporalmente vecinos en la imagen coubicada. En H.264/AVC, esto se hace efectuando una mediana por componente de tres vectores de movimiento espacialmente vecinos. Usando este enfoque, no se requiere señalización del predictor. Los MVP temporales de una imagen coubicada solo se consideran en el denominado modo directo temporal de H.264/AVC. Los modos directos de H.264/AVC también se usan para derivar datos de movimiento distintos de los vectores de movimiento. Por lo tanto, se relacionan más con el concepto de fusión de bloques en HEVC. En HEVC, el enfoque de derivar implícitamente el MVP se reemplazó por una técnica conocida como competición de vectores de movimiento, que señala explícitamente qué MVP de una lista de MVP se usa para la derivación del vector de movimiento. La estructura de bloque de árbol cuádruple de codificación variable en HEVC puede dar como resultado un bloque que tiene varios bloques vecinos con vectores de movimiento como potenciales candidatos a MVP. Tomando el vecino izquierdo como un ejemplo, en el peor de los casos un bloque de predicción de luma de 64 x 64 podría tener 16 bloques de predicción de luma de 4 x 4 a la izquierda cuando un bloque de árbol de codificación de luma de 64 x 64 no se divide más y el de la izquierda se divide a la profundidad máxima.
Se introdujo una predicción avanzada de vectores de movimiento (AMVP) para modificar la competición de vectores de movimiento para tener en cuenta dicha estructura de bloque flexible. Durante el desarrollo de HEVC, el diseño inicial de AMVP se simplificó significativamente para proporcionar un buen equilibrio entre eficiencia de codificación y diseño fácil de implementar. El diseño inicial de A m v P incluyó cinco MVP de tres clases diferentes de predictores: tres vectores de movimiento de vecinos espaciales, la mediana de los tres predictores espaciales y un vector de movimiento escalado de un bloque coubicado temporalmente vecino. Además, la lista de predictores se modificó reordenándola para colocar el predictor de movimiento más probable en la primera posición y eliminando los candidatos redundantes para garantizar una sobrecarga mínima de señalización. El diseño final de la construcción de la lista de candidatos a AMVP incluye los siguientes dos candidatos a MVP; a) hasta dos MVP candidatos espaciales que se derivan de cinco bloques vecinos espaciales; b) un MVP candidato temporal derivado de dos bloques temporales coubicados cuando ambos MVP candidatos espaciales no están disponibles o son idénticos; y c) vectores de movimiento cero cuando el candidato espacial, el temporal o ambos no están disponibles. Los detalles sobre la determinación de vectores de movimiento se pueden encontrar en el libro de V. Sze et al (Ed.), High Efficiency Video Coding (HEVC): Algorithms and Architectures, Springer, 2014, en particular en el Capítulo 5, incorporado como referencia en la presente memoria.
Con el fin de mejorar adicionalmente la estimación del vector de movimiento sin aumentar adicionalmente la sobrecarga de señalización, puede ser beneficioso refinar adicionalmente el vector de movimiento derivado en el lado del codificador y proporcionado en el flujo de bits. El refinamiento del vector de movimiento puede realizarse en el decodificador sin ayuda del codificador. El codificador en su bucle decodificador puede emplear el mismo refinamiento para obtener las imágenes de referencia correspondientes. El refinamiento se realiza determinando una plantilla, determinando un espacio de búsqueda y encontrando en el espacio de búsqueda una porción de imagen de referencia que mejor coincida con la plantilla. La posición de la porción de mejor coincidencia determina el mejor vector de movimiento que, a continuación, se usa para obtener el predictor del bloque actual, es decir, el bloque actual que se está reconstruyendo.
La Figura 3 ilustra un espacio de búsqueda (región de búsqueda) 310 que incluye posiciones de píxel enteras (puntos completos) y posiciones de píxel fraccionarias (puntos vacíos) de una imagen de referencia. En este ejemplo, las posiciones de píxel fraccionarias son posiciones de medio píxel. Como se ha descrito anteriormente, las posiciones de píxel fraccionarias pueden obtenerse a partir de las posiciones enteras (píxel completo) mediante interpolación tal como interpolación bilineal.
En una bipredicción del bloque actual, dos bloques de predicción obtenidos usando los respectivos primer vector de movimiento de la lista L0 y segundo vector de movimiento de la lista L1 se combinan con una única señal de predicción, lo que puede proporcionar una mejor adaptación a la señal original que la unipredicción, dando como resultado menos información residual y posiblemente una compresión más eficiente. La Figura 3 ilustra además un bloque actual 320 de la imagen actual. Dado que en el decodificador, el bloque actual no está disponible porque se está decodificando, para el propósito de refinamiento del vector de movimiento se usa una plantilla, que es una estimación del bloque actual y que se construye basándose en las porciones de imagen ya procesadas (es decir, codificadas en el lado del codificador y decodificadas en el lado del decodificador).
La plantilla puede construirse, por ejemplo, basándose en muestras que pertenecen a la imagen actual que ya se han decodificado, es decir, que se decodificaron antes del bloque actual. Adicional o alternativamente, estas muestras pueden pertenecer a cualquiera de las imágenes de referencia previamente decodificadas. Como ejemplo, las muestras que se usarán en la construcción de la plantilla pueden pertenecer a la imagen de referencia que se decodifica antes de la imagen actual y precede a la imagen actual en el orden de visualización. Alternativamente, las muestras pueden pertenecer a la imagen de referencia que se decodifica antes de la imagen actual y que sigue a la imagen actual en orden de visualización. Finalmente, la plantilla se puede construir basándose en una combinación de muestras de dos imágenes de referencia diferentes. Como es evidente para el experto en la técnica, la plantilla puede obtenerse usando diferentes métodos de tal manera que el bloque actual pueda estimarse con la plantilla construida.
En primer lugar, una estimación del primer vector de movimiento MV0 y una estimación del segundo vector de movimiento MV1 se reciben como entrada en el decodificador 200 como se ilustra en la Figura 3. En el lado 100 del codificador, las estimaciones del vector de movimiento MV0 y MV1 pueden obtenerse mediante coincidencia de bloque y/o mediante búsqueda en una lista de candidatos (tal como una lista de fusión) formada por vectores de movimiento de los bloques vecinos al bloque actual (en la misma imagen o en imágenes adyacentes). El MV0 y MV1 se señalizan ventajosamente en el lado del decodificador dentro del flujo de bits. Sin embargo, cabe señalar que, en general, también la primera etapa de determinación en el codificador podría realizarse mediante la coincidencia de plantilla, lo que proporcionaría la ventaja de reducir la sobrecarga de señalización.
En el lado 200 del decodificador, los vectores de movimiento MV0 y MV1 se obtienen ventajosamente basándose en información en el flujo de bits. El MV0 y MV1 se señalizan directamente, o se señalizan diferencialmente, y/o se señaliza un índice en la lista de vectores de movimiento (lista de fusión). Sin embargo, la presente descripción no se limita a vectores de movimiento de señalización en el flujo de bits. Más bien, el vector de movimiento puede determinarse mediante la coincidencia de plantilla ya en la primera etapa, en correspondencia con el funcionamiento del codificador. La coincidencia de plantilla de la primera etapa (derivación del vector de movimiento) se puede realizar basándose en un espacio de búsqueda diferente del espacio de búsqueda de la segunda etapa de refinamiento. En particular, el refinamiento puede realizarse en un espacio de búsqueda con mayor resolución (es decir, menor distancia entre las posiciones de búsqueda).
Al decodificador también se proporciona una indicación de las dos imágenes de referencia, a las que apuntan respectivamente MV0 y MV1. Las imágenes de referencia se almacenan en la memoria intermedia de imágenes de referencia en el lado del codificador y del decodificador como resultado del procesamiento anterior, es decir, codificación y decodificación respectivas. Una de estas imágenes de referencia se selecciona para el refinamiento del vector de movimiento mediante búsqueda. Una unidad de selección de imágenes de referencia del aparato para la determinación de vectores de movimiento se configura para seleccionar la primera imagen de referencia a la que apunta MV0 y la segunda imagen de referencia a la que apunta MV1. Después de la selección, la unidad de selección de imágenes de referencia determina si la primera imagen de referencia o la segunda imagen de referencia se usa para realizar el refinamiento del vector de movimiento. En la Figura 3, la primera imagen de referencia a la que apunta el vector de movimiento MV0 se selecciona para la búsqueda. Para realizar el refinamiento del vector de movimiento, la región de búsqueda 310 en la primera imagen de referencia se define alrededor de la posición candidata a la que apunta el vector de movimiento MV0. Las posiciones de espacio de búsqueda candidatas dentro de la región de búsqueda 310 se analizan para encontrar un bloque más similar a un bloque de plantilla realizando la coincidencia de plantilla dentro del espacio de búsqueda y determinando una métrica de similitud tal como la suma de diferencias absolutas (SAD). Como se mencionó anteriormente, en una implementación, la plantilla se construye basándose en una combinación de muestras de dos imágenes de referencia diferentes con el vector de movimiento respectivo de MV0 y MV1. La coincidencia de plantilla se realiza para encontrar un bloque basándose en el punto en la región de búsqueda 310 que es más similar a la plantilla. Alternativamente, en otra implementación, la plantilla se construye para encontrar similitud entre un bloque de predicción P0 generado basándose en MV0 en L0 y un bloque de predicción P1 generado basándose en MV1 en L1. Para realizar el refinamiento para MV0, la coincidencia de plantilla comprende encontrar un bloque basándose en el punto en la región de búsqueda 310 que se determina mediante una métrica de similitud (tal como SAD, por ejemplo) entre P0 y P1. Las posiciones del espacio de búsqueda 310 indican las posiciones en las que la esquina superior izquierda de la plantilla 320 coincide. Como ya se mencionó anteriormente, indicar la esquina superior izquierda es una simple comodidad, y cualquier punto del espacio de búsqueda, tal como el punto central 330, puede usarse en general para indicar la posición de coincidencia.
La posición candidata con el valor SAD más bajo se determina como el vector de movimiento MV0". En la Figura 3, la posición a la que apunta MV0" es una posición de medio píxel y difiere de la estimación inicial MV0 por 1,5 posiciones de píxel en dirección vertical, mientras que la dirección horizontal permanece igual.
Según la presente descripción, para la bipredicción o predicción de referencias múltiples, al menos un vector de movimiento del bloque actual se refina mediante cálculo basado en otro vector de movimiento refinado del bloque actual, en lugar de realizar la coincidencia de plantilla. La Figura 4 ilustra dicho refinamiento. En particular, el vector de movimiento MV1" se calcula basándose en la estimación del vector de movimiento MV1 y una función de MV0"-MV0, en lugar de realizar una segunda coincidencia de plantilla. En el ejemplo de la Figura 4, la determinación y refinamiento del primer vector de movimiento MV0" se realiza como se describió anteriormente con referencia a la Figura 3. Además, el vector de movimiento MV1" se calcula restando de la estimación del segundo vector de movimiento MV1" la diferencia entre el MV0" y el MV0.
Este enfoque explota el hecho de que la mayor parte del movimiento en una secuencia de vídeo entra en la categoría de “ movimiento de traslación” . En el movimiento de traslación, un objeto se mueve a una velocidad constante (al menos entre los fotogramas que están cerca uno de otro en el tiempo de muestreo). Esto significa que un objeto se desplaza en fotogramas consecutivos la misma distancia de píxeles en direcciones x e y (si el período de muestreo temporal no varía con el tiempo). La invención utiliza el principio de movimiento de traslación en cierta medida.
En el ejemplo anterior, se refinó un primer vector de movimiento MV0" mediante coincidencia de plantilla, mientras que un segundo vector de movimiento se refinó mediante cálculo. Sin embargo, según la presente descripción, se puede realizar además un proceso de selección para establecer qué vectores de movimiento se refinarán mediante coincidencia de plantilla y cuáles se determinarán mediante cálculo. La Figura 5 muestra un diagrama de bloques de un ejemplo de un refinador 500 de vector de movimiento.
El refinador 500 de vector de movimiento puede incluirse dentro de un aparato para determinar vectores de movimiento 810 como se ilustra en la Figura 8. El aparato puede incluirse en la unidad 800 de interpredicción, que puede reemplazar la unidad 110 de interpredicción mostrada en la Figura 1, y/o en la unidad 210 de interpredicción mostrada en la Figura 2.
Más específicamente, se proporciona un aparato 810 para determinar un primer vector de movimiento en una primera imagen de referencia y un segundo vector de movimiento en una segunda imagen de referencia. El primer y segundo vectores de movimiento pueden aplicarse en la interpredicción de un bloque de imagen en una imagen actual.
El aparato 810 comprende un refinador 500 de vector de movimiento que, como se muestra en detalle en la Figura 5, comprende además una unidad 530 de refinamiento de vector de movimiento configurada para obtener una estimación MV0 de un primer vector de movimiento MV0" y determinar el primer vector de movimiento MV0" realizando una búsqueda dentro de un espacio de búsqueda especificado basándose en la estimación MV0. El aparato comprende además una unidad 550 de cálculo de vector de movimiento configurada para obtener una estimación MV1 de un segundo vector de movimiento MV1" y calcular el segundo vector de movimiento MV1" basándose en la estimación MV1 del segundo vector de movimiento MV1" y basándose en el primer vector de movimiento MV0".
En el ejemplo, el aparato comprende una primera rama que comprende la unidad 530 de cálculo de vector de movimiento y la unidad 550 de cálculo de vector de movimiento, y una segunda rama que comprende la unidad 540 de cálculo de vector de movimiento y la unidad 560 de cálculo de vector de movimiento, y un conmutador 520 para activar una de las dos ramas y desactivar la otra. La segunda rama es similar a la primera rama y difiere de la misma principalmente en que genera un primer vector de movimiento MV1" y un segundo vector de movimiento MV0", procesando MV1 como una estimación del primer vector de movimiento y MV0 como una estimación del segundo vector de movimiento.
Más específicamente, la unidad 540 de refinamiento de vector de movimiento se configura para obtener una estimación MV1 de un primer vector de movimiento MV1" y determinar el primer vector de movimiento MV1" realizando una búsqueda dentro de un espacio de búsqueda especificado basándose en la estimación MV1. El aparato comprende además una unidad 560 de cálculo de vector de movimiento configurada para obtener una estimación MV0 de un segundo vector de movimiento MV0" y calcular el segundo vector de movimiento MV0" basándose en la estimación MV0 del segundo vector de movimiento MV0" y basándose en el primer vector de movimiento MV1".
La Figura 5 muestra la aplicación del invento a la bipredicción en la que hay dos vectores de movimiento en dos respectivas imágenes de referencia determinadas, a saber, los vectores de movimiento MV0" y MV1". En consecuencia, también la selección de la imagen para el refinamiento por coincidencia de plantilla también se realiza simplemente tomando uno de MV0 y MV1 para la coincidencia de plantilla y manteniendo el otro un MV1 o MV0 respectivamente para el cálculo.
Este proceso del refinamiento de vector de movimiento del decodificador (DMVR) lo realiza el aparato 500. La unidad 530 o 540 de refinamiento de vector de movimiento (dependiendo de cuál de las respectivas estimaciones del vector de movimiento MV0 y MV1 se realizará la búsqueda con plantilla) recibe en una entrada 505 la respectiva estimación del vector del movimiento MV0 o MV1 del estimador 820 de vector de movimiento y establece una región de búsqueda 310 alrededor del MV0 o MV1. El tamaño de la región de búsqueda en las Figuras 3 y 4 es 3 x 3 píxeles enteros, medio píxel interpolado a 7 x 7, por lo tanto 49 posiciones en total. En general, la forma y/o el tamaño de la región de búsqueda pueden ser diferentes y la presente invención funciona independientemente del tamaño y la forma de la región de búsqueda. La región de búsqueda puede tener un tamaño predeterminado o predefinido. En otras palabras, la forma y el tamaño del espacio de búsqueda pueden fijarse y especificarse en un estándar. Alternativamente, el usuario puede seleccionar manualmente una de varias formas y tamaños posibles dentro de la configuración del codificador y/o automáticamente basándose en el contenido del vídeo.
En la Figura 6 se muestran algunos ejemplos de tamaños y formas de un espacio de búsqueda. El triángulo completo marca el píxel central del espacio de búsqueda, mientras que los círculos completos marcan las posiciones restantes del espacio de búsqueda. Cabe señalar que el espacio de búsqueda puede extenderse adicionalmente mediante interpolación fraccionaria (medio píxel, cuarto de píxel o similares). La presente descripción generalmente no se limita a ningún patrón de píxeles en particular.
Para cada una de las posiciones o posiciones fraccionarias dentro de la región de búsqueda, se realiza la coincidencia de plantilla usando la plantilla que se aproxima al bloque actual, proporcionando un valor de SAD para cada coordenada de espacio de búsqueda. Cabe señalar que la resolución en píxeles enteros y la resolución en medio píxel en la presente memoria describe la resolución del espacio de búsqueda, es decir, el desplazamiento de las posiciones buscadas con respecto al vector de movimiento no refinado que se introduce en el proceso. Como resultado, las coordenadas de búsqueda no necesariamente coinciden con las coordenadas reales de los píxeles en el plano de la imagen. En otras palabras, la resolución en píxeles enteros (muestra) del espacio de búsqueda no significa necesariamente que las posiciones de espacio de búsqueda estén ubicadas en los píxeles enteros de la imagen de referencia. Las posiciones enteras del espacio de búsqueda pueden coincidir con píxeles fraccionarios de la imagen de referencia, especialmente si el vector de movimiento inicial MV0, MV1 apunta a un píxel fraccionario dentro de la imagen de referencia.
Se realiza una comparación de los valores de SAD de las posiciones en la región de búsqueda, determinando la posición con el valor de SAD mínimo. La posición con el valor de SAD mínimo se determina como el vector de movimiento MV0". Como se mencionó en la sección de antecedentes, SAD es solo un ejemplo y cualquier otra métrica, tal como MSE, SSIM, coeficiente de correlación o similares, puede usarse en general. El primer vector de movimiento determinado MV0" junto con una estimación del segundo vector de movimiento MV1 pasan a la unidad 550 de cálculo de vector de movimiento, donde la determinación (refinamiento) del vector de movimiento MV1" se realiza mediante cálculo.
Como un primer enfoque ilustrativo, como ya se ha descrito anteriormente con referencia a la Figura 4, la unidad 550 de cálculo del vector de movimiento se configura para calcular el segundo vector de movimiento añadiendo a la estimación del segundo vector de movimiento una diferencia entre el primer vector de movimiento y la estimación del primer vector de movimiento o una función de la diferencia entre el primer vector de movimiento y la estimación del primer vector de movimiento.
La adición de la diferencia se puede calcular de la siguiente manera:
MV1" = MV1 (MV0 - MV0") (ecuación 1)
Esta ecuación 1 (con la adición de la diferencia negativa MV0"-MV0) funciona para el caso mostrado en la Figura 4, cuando las dos imágenes de referencia se ubican una de ellas antes y la otra restante después de la imagen actual. Como se puede observar en la Figura 4, para extrapolar el movimiento regular, la diferencia entre el vector de movimiento actual y el primer vector de movimiento en una imagen anterior se proyecta en la imagen que sigue a la imagen actual con el signo inverso. Si ambos fotogramas de referencia para MV0 y MV1 se ubican después o antes de la imagen actual, entonces la diferencia se añade directamente sin cambiar el signo, lo que da como resultado:
MV1" = MV1 (MV0" - MV0) (ecuación 2)
La ubicación antes/después mencionada anteriormente debe ser en orden de visualización. El orden de visualización de las imágenes en un vídeo puede diferir del orden de codificación/decodificación, es decir, del orden en el que las imágenes codificadas se integran en el flujo de bits. El orden de visualización de las imágenes puede ser dado por Picture Order Count (POC). En particular, POC en H.265/HEVC se señala en la cabecera de segmento de cada segmento que es una imagen o su porción.
La condición usada para determinar si las dos imágenes de referencia son o no una que sigue y la otra que precede a la imagen actual puede implementarse usando el parámetro POC de la siguiente manera:
(POCi-POCO)*(POCi-POC1) <0 (ecuación 3)
en donde POCi es un orden de visualización (número de secuencia) de la imagen actual, POCO es un orden de visualización de la primera imagen de referencia y POC1 es un orden de visualización de la segunda imagen de referencia. Si la condición en la ecuación 3 es verdadera, entonces la primera imagen de referencia precede y la segunda imagen de referencia sigue a la imagen actual, o viceversa. Si, por otro lado, la condición de la ecuación 3 no es verdadera, entonces ambas imágenes de referencia preceden o ambas siguen a la imagen actual. Sin embargo, téngase en cuenta que la condición puede implementarse de cualquier manera que permita comprobar si los signos de las dos expresiones de diferencia (POCi-POCO) y (POCi-POCl) son iguales. La ecuación 3 anterior es solo un ejemplo que toma la multiplicación “ *” por su implementación relativamente simple.
La adición de la función de la diferencia se puede calcular como sigue, en caso de una predicción bidireccional en la que una de las imágenes de referencia precede y la otra sigue a la imagen actual (siendo verdadera la condición en la ecuación 3):
MV1" = MV1 - f(MV0" - MVO) (ecuación 4)
Nuevamente, si las dos imágenes de referencia ambas precedieran o ambas siguieran a la imagen actual en el orden de visualización (siendo falsa la condición en la ecuación 3), entonces el cálculo añadiría la diferencia sin invertir la señal:
MV1" = MV1 f(MV0" - MVO) (ecuación 5)
Por ejemplo, la función puede incluir escalado y/o recorte.
Si la función se escala, el cálculo del vector de movimiento puede ser el siguiente:
MV1" = MV1 - k * (MVO" - MVO) = MV1+ k * (MVO - MVO") (ecuación 6) en donde “ *” significa multiplicación (escalado) y k es un parámetro de escalado. Si k = 1, se obtiene la ecuación 1. Con un k fijo (predefinido), la ecuación 6 es aplicable a los casos donde una de las imágenes de referencia precede y la otra sigue a la imagen actual. Para el caso en el que ambas imágenes de referencia preceden o ambas siguen a la imagen actual, sería necesario invertir el signo:
MV1" = MV1 k * (MVO" - MVO) = MV1 - k * (MVO - MVO") (ecuación 7) Según una realización, el valor del parámetro de escala depende de una relación entre las distancias respectivas de la primera imagen y la segunda imagen a la imagen actual. Por lo tanto, el valor de k no está predefinido ni es fijo, sino que puede variar dependiendo de las imágenes de referencia en las que se definen los vectores de movimiento. Por ejemplo, el factor de escala k puede darse mediante:
k = -(POCi-POC1)/(POCi-POCO) (ecuación 8)
Cabe señalar que la ecuación 8 anterior ya tiene en cuenta el cambio del signo ya que el parámetro de escala cambia de signo dependiendo de si ambas imágenes de referencia están en el mismo lado (preceden o siguen) de la imagen actual o en diferentes lados de la imagen actual en el orden de visualización.
Aunque puede ser beneficioso tener en cuenta la distancia entre las respectivas primera y segunda imágenes de referencia con respecto a la imagen actual, incluso si estas distancias son diferentes entre ellas, el establecimiento de k=1 como en las ecuaciones 1 y 2 todavía puede aplicarse. Es más sencillo y la calidad del vector de movimiento refinado aún puede ser sustancialmente mayor que si no se aplicara el refinamiento.
Después de la operación de escalado, se pueden aplicar operaciones de redondeo o recorte. En este caso, redondeo se refiere a proporcionar un número entero o real con una precisión predefinida más cercana al valor de entrada. El recorte se refiere a eliminar dígitos con una precisión superior a una precisión predefinida del valor de entrada. Esto puede ser particularmente beneficioso en vista de una aritmética de coma fija aplicada en los sistemas de cálculo típicos.
Como el refinamiento de vector de movimiento se realiza solo en una de las dos imágenes de referencia, el espacio de búsqueda para realizar la coincidencia de plantilla se reduce en un 50 %.
Después del procesamiento descrito anteriormente para el bloque actual en la imagen actual, se proporcionan dos imágenes de referencia y sus respectivos vectores de movimiento asociados MV0" y MV1" en la salida 580. Estos vectores de movimiento se usan para determinar el predictor para el bloque actual, por ejemplo, promediando dos respectivos predictores obtenidos tomando respectivas porciones de las imágenes de referencia correspondientes en tamaño y forma al bloque actual y a las que apuntan los vectores de movimiento MV0" y MV1". Esto se realiza mediante una unidad 890 de predicción.
En términos generales, la unidad 890 de predicción determina el bloque de predicción al combinar una porción de la primera imagen de referencia a la que hace referencia el primer vector de movimiento MV0" y una porción de la segunda imagen de referencia a la que hace referencia el segundo vector de movimiento MV1".
La señal de predicción combinada puede proporcionar una mejor adaptación a la señal original que la unipredicción, lo que da como resultado menos información residual y posiblemente una compresión más eficiente.
Como se explica en el párrafo anterior, los vectores de movimiento de salida MV0" y MV1" del aparato 500 pueden dar como resultado una menor información residual. Por lo tanto, usarlos pueden mejorar el rendimiento de predicción en comparación con los vectores de movimiento iniciales MV0 y MV1. Cabe señalar que el aparato 500 puede emplearse varias veces con el fin de mejorar adicionalmente el rendimiento de predicción. En este caso, la salida de la primera aplicación del aparato 500 se considera como la entrada de la segunda aplicación y la igualdad entre los vectores de movimiento (ecuaciones 1 a 8) se mantiene después de cada aplicación. En este caso, dado que los vectores de movimiento MV0" y MV1" proporcionan una mejor estimación del bloque actual después de la primera aplicación del aparato 500, la plantilla que se usa en la unidad 530 refinadora de MV se construye basándose en las muestras a las que apunta MV0" o las muestras a las que apunta MV1" en la segunda aplicación.
Según una realización ilustrativa, el aparato 500 comprende además una unidad 510 de selección de imágenes de referencia configurada para obtener dos imágenes de referencia y seleccionar cuál de ellas será la primera imagen de referencia y cuál la segunda imagen de referencia.
En otras palabras, la unidad 510 de selección de imágenes de referencia controla, para un bloque actual, cuál de sus vectores de movimiento se refinará mediante coincidencia de plantilla y cuál se refinará mediante cálculo basándose en un refinamiento de otro vector de movimiento refinado. A continuación, se proporcionan varios ejemplos sobre cómo se puede realizar el proceso de selección mediante la unidad 510 de selección de imágenes de referencia.
La Figura 7 muestra un diagrama esquemático que ilustra un método 700 para determinar un primer vector de movimiento en una primera imagen de referencia y un segundo vector de movimiento en una segunda imagen de referencia según una realización. Por ejemplo, un codificador 100 o decodificador 200 de vídeo digital, descrito anteriormente, particularmente la unidad de interpredicción 110 o 210, puede usar el proceso 700 para obtener el primer y segundo vectores de movimiento que se aplicarán en la interpredicción de un bloque de imagen en una imagen actual. El método 700 comprende una etapa 701 para la obtención de una estimación del primer vector de movimiento, una etapa 703 para la determinación del primer vector de movimiento realizando una búsqueda dentro de un espacio de búsqueda especificado basándose en la estimación del primer vector de movimiento, una etapa 705 para la obtención de una estimación del segundo vector de movimiento y una etapa 707 para el cálculo del segundo vector de movimiento basándose en la estimación del segundo vector de movimiento y basándose en el primer vector de movimiento.
Ejemplo 1:
En un primer ejemplo, la unidad 510 de selección de imágenes de referencia decide cuál de los vectores de movimiento debe determinarse mediante búsqueda en un espacio de búsqueda basándose en la lista a partir de la cual se hizo referencia a la imagen de referencia que pertenece al vector de movimiento respectivo. En particular, para señalizar información de predictor que usa el decodificador para recuperar el mismo predictor que se usa en el codificador dentro del flujo de bits, algunos codec señalizan la imagen de referencia incluyendo en el flujo de bits un índice asociado en una lista de imágenes de referencia con una imagen de referencia particular. Por ejemplo, la lista de imágenes de referencia (lista de imágenes de referencia) puede ser una tabla disponible tanto en el codificador como en el decodificador y que asocia un índice con una posición relativa de una imagen de referencia respectiva con respecto a una imagen actual.
Puede haber más de una lista de imágenes de referencia. Por ejemplo, la lista L0 de imágenes de referencia y la L1 de imágenes de referencia como se usa habitualmente en H.265/HEVC. Con el fin de señalizar en el flujo de bits la imagen de referencia, en primer lugar se señaliza una lista de imágenes de referencia seguida del índice dentro de la lista de imágenes de referencia señalizada.
La unidad 510 de selección de imágenes de referencia se configura entonces ventajosamente para seleccionar ya sea la primera imagen de referencia o la segunda imagen de referencia basándose en si se hace referencia a esta en el flujo de bits mediante un índice en una lista predefinida de imágenes de referencia. En este contexto, el término “ predefinido” significa definido de manera fija, por ejemplo, en un estándar o definido para todo el vídeo en una señalización. A modo de ejemplo, la lista predefinida puede ser la lista L0. Entonces, si se hizo referencia a la primera imagen de referencia desde la lista L0 de imágenes de referencia, mientras que a la segunda lista se hizo referencia desde la lista L1 de imágenes de referencia, el primer vector de movimiento que apunta a la primera imagen de referencia se refinará mediante coincidencia de plantilla, ya que se hizo referencia desde L0, mientras que el segundo vector de movimiento se calculará ya que no se hizo referencia a este desde L0. Sin embargo, debe tenerse en cuenta que la lista predefinida no se limita a la lista L0. Cualquiera de las listas de imágenes de referencia usadas puede ser predefinida en su lugar. Por lo general, L0 enumeraría imágenes de referencia en una vecindad más cercana que L1. Alternativamente, L0 puede incluir más imágenes de referencia que preceden a la imagen actual en el orden de visualización, mientras que L1 puede incluir más imágenes que siguen a la imagen actual en el orden de visualización. Sin embargo, la presente invención funciona independientemente de qué diferencia particular exista entre las dos o más listas de imágenes de referencia.
Cabe señalar que puede producirse una situación en la que se hace referencia tanto a la primera imagen de referencia como a la segunda imagen de referencia, a las que apuntan los respectivos primero y segundo vectores de movimiento, desde la misma lista de imágenes de referencia. Por ejemplo, se puede hacer referencia tanto a la primera imagen de referencia como a la segunda imagen de referencia desde la lista L0 predefinida. Alternativamente, si un bloque de codificación actual aplica bipredicción, se debe indicar una imagen de referencia de la lista L0 y una imagen de referencia de la lista L1, donde ambas imágenes de referencia podrían incluirse juntas en una (o ambas) de las listas de referencia. La razón es que una imagen de referencia puede estar presente en ambas listas (lista L0 y lista L1).
Si la primera imagen de referencia y la segunda imagen de referencia se incluyen en la lista predefinida (tal como L0), la imagen con la posición más alta en la lista (L0) se selecciona como la imagen de referencia usada para el refinamiento del vector de movimiento mediante coincidencia de plantilla del vector de movimiento correspondiente al que apunta el mismo.
La misma selección se puede realizar si ambas imágenes de referencia se incluyen en una lista de imágenes de referencia que no está predefinida (tal como L1, si L0 está predefinida). En otras palabras, si se hace referencia a las imágenes de referencia desde una lista de imágenes de referencia distinta de la lista predefinida de imágenes de referencia, la imagen de referencia con la posición más alta en la lista se selecciona para la coincidencia de plantilla basándose en el refinamiento del vector de movimiento.
En resumen, la unidad 510 de selección de imágenes de referencia se configura para, si se hace referencia a las dos imágenes de referencia en el flujo de bits mediante un índice en la misma lista predefinida de imágenes de referencia, seleccionar la primera imagen de referencia como la imagen con la posición más alta en dicha lista de imágenes de referencia.
Este ejemplo proporciona una implementación simple sin ningún proceso de selección inteligente adicional. En particular, la unidad 510 de selección de imágenes de referencia controla un conmutador 520 y 570 para seleccionar la rama superior o inferior en el diagrama de bloques de la Figura 5 cuando la lista de imágenes de referencia analizada es la lista predefinida (tal como L0) y, si ambas imágenes están en la misma lista, también basándose en el valor de índice de la imagen de referencia.
Ejemplo 2:
Según un segundo ejemplo, la unidad 510 de selección de imágenes de referencia se configura para seleccionar como la primera imagen de referencia (que se refinará mediante coincidencia de plantilla) una imagen que tiene la capa temporal más baja entre las dos (o más) imágenes de referencia para el bloque actual. En otras palabras, la unidad 510 de selección de imágenes de referencia controla los conmutadores 520 y 580 para seleccionar la rama superior (530, 550) o la rama inferior (540, 560) según la capa temporal de las imágenes de referencia a las que se relacionan los vectores de movimiento MV0 y MV1.
Cabe señalar que en la Figura 5, las ramas superior e inferior no necesariamente deben implementarse de manera doble. En general, en cualquiera de las realizaciones y ejemplos de la presente descripción, se proporcionan una única unidad 530 de refinamiento de vector de movimiento y una única unidad 550 de cálculo de vector de movimiento y simplemente la entrada a la única rama se conmuta según el control de la unidad 210 de selección de imágenes de referencia.
En particular, se determinan las capas temporales de las dos (o más) imágenes de referencia. La capa temporal de una imagen de referencia indica el número de imágenes que tienen que decodificarse antes de que se pueda decodificar la imagen de referencia. La capa temporal normalmente se establece en el decodificador que codifica la imagen en movimiento de vídeo en diferentes capas temporales. Puede incluirse en el flujo de bits. Por lo tanto, el decodificador puede, basándose en información de señalización del flujo de bits, determinar qué imágenes de referencia pertenecen a qué capa temporal. Por consiguiente, entonces, la primera imagen de referencia o la segunda imagen de referencia con la capa temporal más baja se selecciona como la imagen de referencia usada para el refinamiento del vector de movimiento mediante coincidencia de plantilla. Este enfoque puede proporcionar la ventaja de seleccionar para la coincidencia de plantilla la imagen de referencia que depende de menos imágenes previamente decodificadas y, por lo tanto, con menor probabilidad de errores y artefactos. Por consiguiente, el procedimiento de refinamiento del vector de movimiento se hace más resiliente.
Ejemplo 3:
En un tercer ejemplo, la unidad 510 de selección de imágenes de referencia se configura para seleccionar como la primera imagen de referencia (que se refinará mediante coincidencia de plantilla) la imagen que tiene el valor de cuantificación base más bajo. En otras palabras, la unidad 510 de selección de imágenes de referencia controla los conmutadores 520 y 580 para seleccionar la rama superior (530, 550) o la rama inferior (540, 560) según el parámetro de cuantificación de las imágenes de referencia a las que se relacionan los vectores de movimiento MV0 y MV1.
El valor de cuantificación o parámetro de cuantificación en este contexto es información proporcionada en el flujo de bits que permite determinar la etapa de cuantificación. En los códec conocidos tales como H.264/AVC y H.265/HEVC, el parámetro de cuantificación permite determinar el valor por el cual deben dividirse los coeficientes que se cuantificarán. Cuanto mayor sea el valor de cuantificación, más basta será la cuantificación que típicamente conduce a una peor calidad de imagen después de la reconstrucción. Por lo tanto, un valor de cuantificación más bajo significa que puede proporcionarse una mayor calidad de imagen reconstruida. La selección de la imagen de referencia con un parámetro de cuantificación más bajo significa que una imagen de referencia con una mejor calidad se usa para el refinamiento del vector de movimiento, lo que también conduce a mejores resultados de refinamiento.
El término valor de cuantificación “ base” se refiere a un valor de cuantificación que es común a un segmento de imagen y se usa como base para todos los bloques. Por lo general, dicho valor se señaliza, por ejemplo, en la cabecera de segmento. A continuación, típicamente, una diferencia con respecto al valor base se señaliza por bloque o por unidad de procesamiento.
Sin embargo, la presente invención no se limita a ninguna señalización particular ni siquiera a la existencia de dicho valor. Se puede lograr el mismo efecto determinando el valor de cuantificación base para una imagen según los valores de cuantificación de los elementos de la imagen, para los cuales se señaliza el valor de cuantificación. En otras palabras, el término valor de cuantificación base indica un valor de cuantificación general para una imagen.
Ejemplo 4:
Según un cuarto ejemplo, la unidad 510 de selección de imágenes de referencia se configura para seleccionar como la primera imagen de referencia la imagen que tiene la distancia más baja a la imagen actual. En otras palabras, la unidad 510 de selección de imágenes de referencia controla los conmutadores 520 y 580 para seleccionar la rama superior (530, 550) o la rama inferior (540, 560) según la distancia de las imágenes de referencia relacionadas con los respectivos vectores de movimiento MV0 y MV1 a la imagen actual.
Por ejemplo, se determinan las diferencias entre los valores de recuento de orden de imagen (POC) POC0 y POC1 de las respectivas imágenes de referencia relacionadas con los respectivos vectores de movimiento MV0 y MV1 y el valor de POC POCi de la imagen actual. El valor de POC especifica el orden de visualización de las imágenes en lugar de la codificación/decodificación. Por lo tanto, una imagen con POC = 2 se visualiza antes de una imagen con POC = 8. Sin embargo, cabe señalar que, como la invención no se limita a la aplicación en los códec conocidos tales como H.264/AVC y H.265/HEVC, la diferencia entre la imagen de referencia y la imagen actual puede determinarse de cualquier otra manera, no dependiendo del parámetro POC particular.
La primera imagen de referencia relacionada con el vector de movimiento MV0 o la segunda imagen de referencia relacionada con el vector de movimiento MV1 que tiene la diferencia de POC absoluta más pequeña (entre la imagen de referencia y la imagen actual) se selecciona como la imagen de referencia que se usará para el refinamiento del vector de movimiento, ya que se espera que los vectores de movimiento de las imágenes de referencia más cercanas sean más precisos y/o el bloque de referencia al que apuntan los vectores de movimiento sea más similar al bloque actual. Esto puede conducir a una mejor calidad del refinamiento.
Ejemplo 5
Según un quinto ejemplo, la unidad de selección de imágenes de referencia se configura para seleccionar la primera imagen de referencia y la segunda imagen de referencia de modo que la magnitud de la estimación del primer vector sea menor que la magnitud de la estimación del segundo vector de movimiento. En otras palabras, la unidad 510 de selección de imágenes de referencia controla los conmutadores 520 y 580 para seleccionar la rama superior (530, 550) o la rama inferior (540, 560) según la longitud (magnitud) de los vectores de movimiento MV0 y MV1 relacionados con las respectivas imágenes de referencia.
Las magnitudes absolutas de los vectores de movimiento MV0 y MV1 que apuntan a la primera imagen de referencia y la segunda imagen de referencia se determinan usando procedimientos estándar para la determinación de un valor absoluto de un vector. Por ejemplo, se suman los valores al cuadrado de cada componente vectorial de un vector de movimiento. Ya sea esta suma o su raíz cuadrada se puede usar como la magnitud del vector de movimiento, pero el cálculo de una raíz cuadrada tiene mayores costes computacionales. Tomar el vector de movimiento con menor magnitud para el refinamiento proporciona la ventaja de una mayor probabilidad de determinarse correctamente, suponiendo que el movimiento entre imágenes es típicamente pequeño.
Alguna información sobre una estimación del primer vector de movimiento MV0, una estimación del segundo vector de movimiento MV1 e índices de las imágenes de referencia a las que se refieren MV0 y MV1 puede recibirse en el decodificador como entrada. La información del vector de movimiento se señaliza típicamente por bloque, pudiendo tener los bloques diferentes tamaños. Lo mismo es cierto para la indicación de imagen de referencia. Un analizador de flujo de bits implementado como parte de la unidad 203 de decodificación entrópica obtiene la información de vector de movimiento del flujo de bits. La información de movimiento puede ser directamente las coordenadas del vector de movimiento (coordenadas con respecto al punto (0, 0) dadas por la ubicación de un bloque en la imagen de referencia igual que la ubicación del bloque actual en la imagen actual). Alternativamente, se puede señalar una diferencia con un vector de movimiento de un bloque que precede al bloque actual en el orden de decodificación. Este puede ser ventajosamente uno de los vecinos espaciales o temporales del bloque actual.
Según otro ejemplo, un aparato para la determinación del vector de movimiento que también incluye el refinador 500 de vector de movimiento, incluye además una unidad 820 de estimación de vector de movimiento configurada para determinar la estimación del primer vector de movimiento y la estimación del segundo vector de movimiento seleccionándolos de un conjunto de candidatos a vector de movimiento basándose en la similitud de una plantilla con una porción de la respectiva imagen a la que hace referencia el candidato a vector de movimiento. En otras palabras, la determinación del vector de movimiento (de MV0 y MV1) no se basa necesariamente en la coincidencia de plantilla en un espacio de búsqueda definido en la imagen de referencia. El espacio de búsqueda puede ser dado por una lista (fusión) que enumera índices en asociación con los respectivos vectores de movimiento de los bloques espacial o temporalmente adyacentes en la proximidad del bloque actual. Esto quiere decir que la presente invención no se limita a la manera en que se derivan las estimaciones del vector de movimiento MV0 y MV1 antes de que se proporcionen para el refinamiento.
En resumen, la operación de bipredicción de un bloque de codificación, los dos bloques de predicción, de los vectores de movimiento (MV) de la lista L0 y MV de la lista L1 respectivamente, se combinan con una única señal de predicción, que puede proporcionar una mejor adaptación a la señal original que la unipredicción, lo que da como resultado menos información residual y posiblemente una compresión más eficiente. El procesamiento de decodificación por bipredicción para el bloque actual en la imagen actual contiene las siguientes etapas de procesamiento.
En primer lugar, una estimación del primer vector de movimiento MV0 y una estimación del segundo vector de movimiento MV1 se reciben como entrada en el lado del decodificador. Dos imágenes de referencia, a las que apuntan MV0 y MV1, están en la memoria intermedia de imágenes del decodificador, ya que ya se han decodificado antes del procesamiento de la imagen actual. Una de estas imágenes de referencia se selecciona para el refinamiento del vector de movimiento mediante coincidencia de plantilla, para ilustrar la imagen de referencia a la que apunta MV0. Para realizar el refinamiento del vector de movimiento, se define una región de búsqueda en la imagen de referencia a la que apunta MV0 alrededor del punto candidato al que apunta el MV0 seleccionado. Las posiciones de espacio de búsqueda candidatas dentro de la región de búsqueda se analizan realizando una coincidencia de plantilla con el espacio del bloque actual y determinando una medida de similitud. La posición de espacio de búsqueda candidata con el valor de disimilitud más bajo se determina como el vector de movimiento MV0". El vector de movimiento MV1" se calcula basándose en MV1 y una función de MV0"-MV0 en lugar de realizar una segunda coincidencia de plantilla.
Según una realización de la invención, la comparación de similitud se realiza comparando las muestras a las que apunta MV0" y las muestras a las que apunta MV1". Según la figura 4, cualquier punto al que apunta MV0" en el espacio de búsqueda 310 tiene un vector de movimiento homólogo MV1" dado por una o más de las ecuaciones 1 a 8. Con el fin de comparar la similitud entre los bloques de muestra en el proceso de coincidencia de plantilla, el bloque de muestra al que apunta MV0" y el bloque de muestra al que apunta MV1" pueden usarse en una función tal como una función SAD. En este caso, la plantilla consiste solo en muestras que pertenecen a la imagen de referencia a la que hace referencia MV1, y la operación de refinamiento del vector de movimiento se realiza en MV0. Además, la plantilla se cambia ligeramente para cada punto en el espacio de búsqueda 310.
Más específicamente, según la realización, se aplican las siguientes etapas:
Etapa 1: Se calcula la similitud entre las muestras a las que apunta el vector de movimiento de entrada MV0 y las muestras a las que apunta el vector de movimiento de entrada MV1. El vector de movimiento de entrada MV0 apunta al punto 330 en el espacio de búsqueda.
Etapa 2: Se selecciona un segundo punto en el espacio de búsqueda 310, que es diferente del punto 330. El segundo punto se indica con MV0".
Etapa 3: El vector de movimiento MV1" se calcula usando una o más de las ecuaciones 1 a 8, basándose en MV0", MV0 y MV1.
Etapa 4: Se calcula la similitud entre las muestras a las que apunta el vector de movimiento de entrada MV0" y las muestras a las que apunta el vector de movimiento de entrada MV1". Si la similitud es mayor que el valor calculado en la etapa 1, el par de<m>V0" y MV1" se selecciona como los vectores de movimiento refinados. De lo contrario, el par MV0 y MV1 (es decir, el par de vectores de movimiento iniciales) se selecciona como vectores de movimiento refinados.
Las etapas 2, 3 y 4 se pueden repetir para evaluar más puntos candidatos en el espacio de búsqueda 310. Si no quedan puntos de búsqueda en el espacio de búsqueda, entonces los vectores de movimiento refinados se generan como los vectores de movimiento refinados finales.
En la etapa 4, está claro que si la métrica de similitud (tal como SAD, SSIM, etc.) podría dar como resultado la mayor similitud en el punto inicial 330 al que apunta el vector de movimiento inicial MV0 cuyo homólogo es el vector de movimiento inicial MV1 según una o más de las ecuaciones 1 a 8. Si este es el caso, entonces los vectores de movimiento refinados se consideran como la salida del proceso de refinamiento del vector de movimiento, como MV0 y MV1.
Cualquier par de vectores de movimiento MV0" y MV1" que es la salida del aparato 500 debe obedecer las reglas descritas en una o más de las ecuaciones 1-8. Los detalles específicos de la construcción de la plantilla y la métrica de similitud que se usa en la operación de coincidencia de plantilla podrían cambiar sin afectar a la invención y su beneficio, que es la reducción de los puntos de búsqueda que se verificarán mediante el emparejamiento de dos vectores de movimiento.
Según una realización de la presente invención, aparte del procesamiento de predicción bidireccional realizado en la unidad de interpredicción como se ha descrito anteriormente, las otras etapas de procesamiento para la codificación y decodificación siguen la norma H.265/HEVC.
Sin embargo, en general, la presente invención es aplicable a cualquier decodificador de vídeo para decodificar una pluralidad de imágenes desde un flujo de bits. Dicho decodificador puede comprender entonces una unidad de interpredicción que incluye el aparato según cualquiera de las reivindicaciones 1 a 11 y una unidad de predicción para determinar un bloque de predicción según una porción de la primera imagen de referencia a la que hace referencia el primer vector de movimiento y una porción de la segunda imagen de referencia a la que hace referencia el segundo vector de movimiento. El decodificador puede comprender además un analizador de flujo de bits. El analizador de flujo de bits puede implementarse, por ejemplo, como una parte de la unidad de decodificación entrópica 203 y configurarse para obtener del flujo de bits la estimación del primer vector de movimiento y la estimación del segundo vector de movimiento. El decodificador de vídeo puede comprender además una unidad de reconstrucción 211 configurada para reconstruir el bloque actual según el bloque de predicción.
Por otro lado, un codificador de vídeo para codificar una pluralidad de imágenes en un flujo de bits puede comprender una unidad de interpredicción que incluye el aparato según cualquiera de las reivindicaciones 1 a 12 y una unidad de predicción para determinar el bloque de predicción según una porción de la primera imagen de referencia a la que hace referencia el primer vector de movimiento y una porción de la segunda imagen de referencia a la que hace referencia el segundo vector de movimiento, un formador de flujo de bits que se implementa como una parte de la unidad 103 de codificación entrópica y se configura para incluir en el flujo de bits la estimación del primer vector de movimiento y la estimación del segundo vector de movimiento, y una unidad 111 de reconstrucción configurada para reconstruir el bloque actual según el bloque de predicción y almacenar el bloque reconstruido en una memoria.
El procesamiento de decodificación por interpredicción descrito anteriormente no se limita al uso de dos imágenes de referencia. Alternativamente, se pueden considerar más de dos imágenes de referencia y los vectores de movimiento asociados. En este caso, la unidad de selección de imágenes de referencia selecciona más de dos imágenes de referencia de las cuales se usa una imagen de referencia para el refinamiento del vector de movimiento. La selección de la imagen de referencia que se usa para el refinamiento del vector de movimiento usa uno de los enfoques descritos en los ejemplos 1 a 5 analizados anteriormente. Los vectores de movimiento restantes se ajustan usando la estimación del respectivo vector de movimiento y el vector de movimiento resultante del refinamiento del vector de movimiento. En otras palabras, la presente invención como se describió anteriormente también puede funcionar si se realiza una predicción de referencias múltiples. Por ejemplo, si hay tres imágenes de referencia y tres respectivos vectores de movimiento, uno de los tres vectores de movimiento puede determinarse mediante refinamiento por coincidencia de plantilla y los otros dos pueden calcularse. Esto proporciona una reducción de la complejidad. Alternativamente, dos de los vectores de movimiento se determinan mediante refinamiento por coincidencia de plantilla y uno se calcula basándose en uno o ambos vectores de movimiento refinados.
Como es evidente para los expertos en la técnica, la presente invención es extensible a cualquier número de imágenes de referencia y los vectores de movimiento correspondientes usados para construir el predictor para el bloque actual.
La invención tiene el efecto de hacer posible la realización de una predicción bidireccional en un decodificador con requisitos de carga y memoria reducidos. Puede aplicarse en cualquier decodificador, puede incluirse en un dispositivo de codificación y/o en un dispositivo de decodificación, es decir, en el lado del codificador o el lado del decodificador.
El refinamiento del vector de movimiento como se describió anteriormente puede implementarse como una parte de la codificación y/o decodificación de una señal de vídeo (imagen de movimiento). Sin embargo, el refinamiento del vector de movimiento también puede usarse para otros fines en el procesamiento de imágenes, tal como la detección de movimiento, el análisis de movimiento o similares.
El refinamiento del vector de movimiento puede implementarse como un aparato. Dicho aparato puede ser una combinación de software y hardware. Por ejemplo, el refinamiento del vector de movimiento puede realizarse mediante un chip tal como un procesador de propósito general, o un procesador de señal digital (DSP), o una matriz de puertas programables en campo (FPGA), o similares. Sin embargo, la presente invención no se limita a la implementación en un hardware programable. Puede implementarse en un circuito integrado de aplicación específica (ASIC) o mediante una combinación de los componentes de hardware mencionados anteriormente.
El refinamiento del vector de movimiento también puede implementarse mediante instrucciones de programa almacenadas en un medio legible por ordenador. El programa, cuando se ejecuta, hace que el ordenador realice las etapas de obtención de estimaciones de los vectores de movimiento, determinación de la primera imagen de referencia y la segunda imagen de referencia basándose en las estimaciones, realización del refinamiento del vector de movimiento del primer vector de movimiento, cálculo del segundo vector de movimiento basándose en las estimaciones de los vectores de movimiento y el primer vector de movimiento después del refinamiento. El medio legible por ordenador puede ser cualquier medio en el que se almacene el programa tal como un DVD, CD, USB (flash), disco duro, almacenamiento de servidor disponible a través de una red, etc.
El codificador y/o el decodificador pueden implementarse en diversos dispositivos que incluyen un televisor, un decodificador, una PC, una tableta, un teléfono inteligente o similares. Puede ser un software o una aplicación que implementa las etapas del método.

Claims (11)

  1. REIVINDICACIONES
    i. Un aparato para determinar un primer vector de movimiento (MVO") asociado a una primera imagen de referencia de un vídeo y un segundo vector de movimiento (MV1") asociado a una segunda imagen de referencia del vídeo, el primer y segundo vectores de movimiento se aplicarán en la interpredicción de un bloque de imagen actual del vídeo en una imagen actual, comprendiendo el aparato:
    una unidad (530) de refinamiento de vector de movimiento configurada para obtener una estimación (MVO) del primer vector de movimiento y determinar el primer vector de movimiento (MVO") realizando una búsqueda usando una coincidencia de plantilla dentro de un espacio de búsqueda (310) especificado basándose en la estimación (MVO) del primer vector de movimiento, y
    una unidad (550) de cálculo del vector de movimiento configurada para obtener una estimación (MV1) del segundo vector de movimiento y calcular, después de que se ha realizado la búsqueda para determinar el primer vector de movimiento (MVO"), el segundo vector de movimiento (MV1") basándose en la estimación (MV1) del segundo vector de movimiento y en una diferencia entre el primer vector de movimiento (MVO") y la estimación (MVO) del primer vector de movimiento.
  2. 2. El aparato según la reivindicación 1, en donde la unidad (550, 560) de cálculo del vector de movimiento se configura para calcular el segundo vector de movimiento añadiendo a la estimación del segundo vector de movimiento la diferencia entre el primer vector de movimiento y la estimación del primer vector de movimiento o una función de la diferencia entre el primer vector de movimiento y la estimación del primer vector de movimiento.
  3. 3. El aparato según la reivindicación 2, en donde la función incluye escalar mediante un factor de escala y/o recorte.
  4. 4. El aparato según la reivindicación 3, en donde el valor del factor de escala depende de una relación entre las distancias respectivas de la primera imagen de referencia y la segunda imagen de referencia a la imagen actual.
  5. 5. El aparato según cualquiera de las reivindicaciones 1 a 4, que comprende además:
    una unidad (510) de selección de imágenes de referencia configurada para obtener dos imágenes de referencia y seleccionar la primera imagen de referencia de entre las dos imágenes de referencia y seleccionar la segunda imagen de referencia de entre las dos imágenes de referencia.
  6. 6. El aparato según la reivindicación 5, en donde
    la unidad (510) de selección de imágenes de referencia se configura para seleccionar ya sea la primera imagen de referencia o la segunda imagen de referencia basándose en si se hace referencia a las respectivas primera o segunda imagen de referencia en un flujo de bits que también incluye el bloque de imagen codificada del vídeo mediante un índice relacionado con una lista predefinida de imágenes de referencia entre al menos dos listas de imágenes de referencia, en donde una lista de imágenes de referencia asocia un índice con la posición de una imagen de referencia con respecto a la imagen actual.
  7. 7. El aparato según la reivindicación 6, en donde
    la unidad (510) de selección de imágenes de referencia se configura para, si las dos imágenes de referencia a las que se hace referencia en el flujo de bits mediante un índice en la misma lista predefinida de imágenes de referencia, seleccionar como la primera imagen de referencia la imagen con la posición más alta en dicha lista de imágenes de referencia.
  8. 8. El aparato según la reivindicación 5, en donde la unidad (510) de selección de imágenes de referencia se configura para seleccionar como la primera imagen de referencia la imagen que tiene la capa temporal más baja entre las dos imágenes, en donde la capa temporal de una imagen de referencia indica el número de imágenes que deben decodificarse antes de que se pueda decodificar la imagen de referencia.
  9. 9. El aparato según la reivindicación 5, en donde la unidad (510) de selección de imágenes de referencia se configura para seleccionar, como la primera imagen de referencia, la imagen que tiene el valor de cuantificación base más bajo en donde el valor de cuantificación base se refiere a un valor de cuantificación que es común a un segmento de imagen y se usa para todos los bloques.
  10. 10. El aparato según la reivindicación 5, en donde la unidad (510) de selección de imágenes de referencia se configura para seleccionar como la primera imagen de referencia la imagen que tiene la distancia más baja a la imagen actual.
  11. 11. El aparato según la reivindicación 5, en donde la unidad (510) de selección de imágenes de referencia se configura para seleccionar la primera imagen de referencia y la segunda imagen de referencia de tal manera que la estimación del primer vector de movimiento sea menor en magnitud que la estimación del segundo vector de movimiento.
    El aparato según cualquiera de las reivindicaciones 1 a 11, que comprende, además:
    un estimador (820) de vector de movimiento configurado para determinar la estimación del primer vector de movimiento y la estimación del segundo vector de movimiento seleccionándolos de un conjunto de candidatos a vector de movimiento basándose en la similitud de una plantilla con una porción de la imagen a la que hace referencia el respectivo candidato a vector de movimiento.
    Un decodificador de vídeo (200) para decodificar una pluralidad de imágenes desde un flujo de bits, que comprende:
    una unidad (210) de interpredicción que incluye el aparato según cualquiera de las reivindicaciones 1 a 12 y una unidad de predicción configurada para determinar un bloque de predicción según una porción de la primera imagen de referencia a la que hace referencia el primer vector de movimiento y una porción de la segunda imagen de referencia a la que hace referencia el segundo vector de movimiento,
    un analizador (203) de flujo de bits configurado para obtener del flujo de bits la estimación del primer vector de movimiento y la estimación del segundo vector de movimiento, y
    una unidad (211) de reconstrucción configurada para reconstruir el bloque actual según el bloque de predicción. Un codificador de vídeo (100) para codificar una pluralidad de imágenes en un flujo de bits, que comprende: una unidad (110) de interpredicción que incluye el aparato según cualquiera de las reivindicaciones 1 a 12 y una unidad de predicción configurada para determinar un bloque de predicción según una porción de la primera imagen de referencia a la que hace referencia el primer vector de movimiento y una porción de la segunda imagen de referencia a la que hace referencia el segundo vector de movimiento,
    un formador (103) de flujo de bits configurado para incluir en el flujo de bits la estimación del primer vector de movimiento y la estimación del segundo vector de movimiento,
    una unidad (111) de reconstrucción configurada para reconstruir el bloque actual según el bloque de predicción y almacenar el bloque reconstruido en una memoria.
    Un método (700) para determinar un primer vector de movimiento (MVO") asociado a una primera imagen de referencia de un vídeo y un segundo vector de movimiento (MV1") asociado a una segunda imagen de referencia del vídeo, el primer y segundo vectores de movimiento se aplicarán en la interpredicción de un bloque de imagen actual en una imagen actual del vídeo, comprendiendo el método:
    obtener (701) una estimación (MVO) del primer vector de movimiento,
    determinar (703) el primer vector de movimiento realizando una búsqueda usando la coincidencia de plantilla dentro de un espacio de búsqueda (310) especificado basándose en la estimación del primer vector de movimiento, obtener (705) una estimación (MV1) del segundo vector de movimiento, y
    calcular (707), después de que se ha realizado la búsqueda para determinar el primer vector de movimiento (MVO"), el segundo vector de movimiento (MV1") basándose en la estimación (MV1) del segundo vector de movimiento y en una diferencia entre el primer vector de movimiento (MVO") y la estimación (MVO) del primer vector de movimiento.
ES18713694T 2017-06-30 2018-03-29 Refinamiento de vectores de movimiento para predicción de referencias múltiples Active ES2963978T3 (es)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
PCT/EP2017/066342 WO2019001741A1 (en) 2017-06-30 2017-06-30 MOTION VECTOR REFINEMENT FOR MULTI-REFERENCE PREDICTION
PCT/EP2018/058203 WO2019001786A1 (en) 2017-06-30 2018-03-29 MOTION VECTOR REFINEMENT FOR MULTI-REFERENCE PREDICTION

Publications (1)

Publication Number Publication Date
ES2963978T3 true ES2963978T3 (es) 2024-04-03

Family

ID=59258246

Family Applications (1)

Application Number Title Priority Date Filing Date
ES18713694T Active ES2963978T3 (es) 2017-06-30 2018-03-29 Refinamiento de vectores de movimiento para predicción de referencias múltiples

Country Status (19)

Country Link
US (4) US11463726B2 (es)
EP (3) EP3635956A1 (es)
JP (3) JP6977068B2 (es)
KR (4) KR102344430B1 (es)
CN (3) CN110809887B (es)
AU (1) AU2018294206B2 (es)
BR (1) BR112019027261A2 (es)
CA (1) CA3068332C (es)
CL (1) CL2019003880A1 (es)
ES (1) ES2963978T3 (es)
FI (1) FI3632104T3 (es)
HU (1) HUE064054T2 (es)
IL (1) IL271762B2 (es)
MX (1) MX2019015871A (es)
PL (1) PL3632104T3 (es)
PT (1) PT3632104T (es)
SG (1) SG11201911978TA (es)
UA (1) UA126919C2 (es)
WO (3) WO2019001741A1 (es)

Families Citing this family (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019001741A1 (en) * 2017-06-30 2019-01-03 Huawei Technologies Co., Ltd. MOTION VECTOR REFINEMENT FOR MULTI-REFERENCE PREDICTION
CN117615153A (zh) * 2017-08-29 2024-02-27 株式会社Kt 视频解码和编码方法及用于存储压缩视频数据的装置
CN117336504A (zh) * 2017-12-31 2024-01-02 华为技术有限公司 图像预测方法、装置以及编解码器
WO2019191717A1 (en) 2018-03-30 2019-10-03 Hulu, LLC Template refined bi-prediction for video coding
WO2019234673A1 (en) * 2018-06-07 2019-12-12 Beijing Bytedance Network Technology Co., Ltd. Chroma dmvr
TWI719519B (zh) 2018-07-02 2021-02-21 大陸商北京字節跳動網絡技術有限公司 對於dmvr的塊尺寸限制
CN111083484A (zh) 2018-10-22 2020-04-28 北京字节跳动网络技术有限公司 基于子块的预测
CN111083489B (zh) 2018-10-22 2024-05-14 北京字节跳动网络技术有限公司 多次迭代运动矢量细化
CN111436228A (zh) 2018-11-12 2020-07-21 北京字节跳动网络技术有限公司 组合帧间-帧内预测的简化
WO2020103872A1 (en) * 2018-11-20 2020-05-28 Beijing Bytedance Network Technology Co., Ltd. Prediction refinement for combined inter intra prediction mode
WO2020103852A1 (en) 2018-11-20 2020-05-28 Beijing Bytedance Network Technology Co., Ltd. Difference calculation based on patial position
US11095900B2 (en) * 2018-12-19 2021-08-17 Sony Group Corporation Point cloud coding structure
KR20210094664A (ko) 2019-01-02 2021-07-29 텔레폰악티에볼라겟엘엠에릭슨(펍) 비디오 인코딩/디코딩 시스템의 사이드 모션 정교화
CA3128112A1 (en) 2019-02-22 2020-08-27 Huawei Technologies Co., Ltd. Early termination for optical flow refinement
WO2020177755A1 (en) 2019-03-06 2020-09-10 Beijing Bytedance Network Technology Co., Ltd. Usage of converted uni-prediction candidate
EP3912354A4 (en) * 2019-03-08 2022-03-16 Huawei Technologies Co., Ltd. SEARCH REGION FOR MOTION VECTOR REFINEMENT
CN117014634A (zh) * 2019-03-11 2023-11-07 阿里巴巴集团控股有限公司 用于对视频数据进行编码的帧间预测方法
CN112954329B (zh) * 2019-03-11 2022-08-26 杭州海康威视数字技术股份有限公司 一种编解码方法、装置及其设备
EP3939310A4 (en) * 2019-03-11 2022-07-27 Telefonaktiebolaget LM Ericsson (publ) MOTION REFINING AND WEIGHTED PREDICTION
WO2020200269A1 (en) 2019-04-02 2020-10-08 Beijing Bytedance Network Technology Co., Ltd. Decoder side motion vector derivation
US11736720B2 (en) 2019-09-03 2023-08-22 Tencent America LLC Motion vector refinement methods for video encoding
EP4118835A4 (en) * 2020-03-31 2023-05-10 Beijing Dajia Internet Information Technology Co., Ltd. HIGH LEVEL SYNTAX METHODS AND DEVICES IN VIDEO CODING
WO2021203039A1 (en) * 2020-04-03 2021-10-07 Beijing Dajia Internet Information Technology Co., Ltd. Methods and devices for high-level syntax in video coding
US20220295090A1 (en) * 2021-03-12 2022-09-15 Lemon Inc. Motion candidate derivation
US11936899B2 (en) 2021-03-12 2024-03-19 Lemon Inc. Methods and systems for motion candidate derivation
US11671616B2 (en) 2021-03-12 2023-06-06 Lemon Inc. Motion candidate derivation
CN117337567A (zh) * 2021-04-21 2024-01-02 抖音视界有限公司 用于视频处理的方法、设备和介质
US11895302B2 (en) * 2021-06-29 2024-02-06 Qualcomm Incorporated Adaptive bilateral matching for decoder side motion vector refinement
CN114161197B (zh) * 2021-12-22 2023-09-15 中国科学技术大学 一种偏心工件自动校正方法、系统、设备及存储介质
WO2023136655A1 (ko) * 2022-01-13 2023-07-20 엘지전자 주식회사 영상 인코딩/디코딩 방법 및 장치, 그리고 비트스트림을 저장한 기록 매체
WO2024076220A1 (ko) * 2022-10-07 2024-04-11 한국전자통신연구원 영상 부호화/복호화를 위한 방법, 장치 및 기록 매체

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20110022133A (ko) * 2009-08-27 2011-03-07 삼성전자주식회사 영상의 움직임 추정방법 및 영상처리장치
JP5248632B2 (ja) * 2010-01-14 2013-07-31 インテル コーポレイション 動き推定のための技術
US20120281759A1 (en) * 2010-03-31 2012-11-08 Lidong Xu Power efficient motion estimation techniques for video encoding
JP5786498B2 (ja) * 2011-06-30 2015-09-30 株式会社Jvcケンウッド 画像符号化装置、画像符号化方法及び画像符号化プログラム
EP3198872A1 (en) * 2014-09-26 2017-08-02 VID SCALE, Inc. Intra block copy coding with temporal block vector prediction
US10958927B2 (en) 2015-03-27 2021-03-23 Qualcomm Incorporated Motion information derivation mode determination in video coding
CA2995507C (en) * 2015-09-02 2021-05-25 Mediatek Inc. Method and apparatus of decoder side motion derivation for video coding
KR102577599B1 (ko) * 2017-04-13 2023-09-12 파나소닉 인텔렉츄얼 프로퍼티 코포레이션 오브 아메리카 부호화 장치, 복호 장치, 부호화 방법 및 복호 방법
US20190007699A1 (en) * 2017-06-28 2019-01-03 Futurewei Technologies, Inc. Decoder Side Motion Vector Derivation in Video Coding
WO2019001741A1 (en) 2017-06-30 2019-01-03 Huawei Technologies Co., Ltd. MOTION VECTOR REFINEMENT FOR MULTI-REFERENCE PREDICTION

Also Published As

Publication number Publication date
CA3068332A1 (en) 2019-01-03
US11463726B2 (en) 2022-10-04
CN116248898A (zh) 2023-06-09
CL2019003880A1 (es) 2020-10-02
WO2019001785A1 (en) 2019-01-03
KR102450443B1 (ko) 2022-09-30
WO2019001741A1 (en) 2019-01-03
AU2018294206A1 (en) 2020-01-23
CN110809887B (zh) 2022-12-27
JP2023174703A (ja) 2023-12-08
MX2019015871A (es) 2020-08-06
KR20220136509A (ko) 2022-10-07
JP2022022228A (ja) 2022-02-03
JP6977068B2 (ja) 2021-12-08
EP3632104A1 (en) 2020-04-08
EP4319154A3 (en) 2024-02-28
FI3632104T3 (fi) 2023-11-09
US10856006B2 (en) 2020-12-01
KR102570488B1 (ko) 2023-08-23
IL271762B2 (en) 2023-11-01
BR112019027261A2 (pt) 2020-07-14
NZ780051A (en) 2023-09-29
KR20220000917A (ko) 2022-01-04
EP3632104B1 (en) 2023-10-04
SG11201911978TA (en) 2020-01-30
AU2018294206A8 (en) 2020-01-30
HUE064054T2 (hu) 2024-02-28
US20200137416A1 (en) 2020-04-30
AU2018294206B2 (en) 2022-12-01
WO2019001786A1 (en) 2019-01-03
CN110809887A (zh) 2020-02-18
KR20230125348A (ko) 2023-08-29
EP4319154A2 (en) 2024-02-07
IL271762B1 (en) 2023-07-01
KR102344430B1 (ko) 2021-12-27
US20220046274A1 (en) 2022-02-10
NZ760521A (en) 2021-09-24
PT3632104T (pt) 2023-12-07
CA3068332C (en) 2023-10-03
JP2020526109A (ja) 2020-08-27
US11683520B2 (en) 2023-06-20
EP3635956A1 (en) 2020-04-15
US20230353778A1 (en) 2023-11-02
UA126919C2 (uk) 2023-02-22
US20200137414A1 (en) 2020-04-30
KR20200015734A (ko) 2020-02-12
PL3632104T3 (pl) 2024-02-12
JP7358436B2 (ja) 2023-10-10
IL271762A (en) 2020-02-27
CN116233463A (zh) 2023-06-06

Similar Documents

Publication Publication Date Title
ES2963978T3 (es) Refinamiento de vectores de movimiento para predicción de referencias múltiples
ES2927560T3 (es) Aparato de decodificación de vídeo, aparato de codificación de vídeo, medio de almacenamiento y método para la trasmisión
ES2755573T3 (es) Predicción de vector de movimiento temporal avanzada basada en unidades de subpredicción
KR20180109786A (ko) 영상 복호화 방법 및 장치
TW201904284A (zh) 用於視訊編解碼的子預測單元時間運動向量預測
CN111201795B (zh) 存储访问窗口和用于运动矢量修正的填充
US11310521B2 (en) Error surface based sub-pixel accurate refinement method for decoder side motion vector refinement
NZ760521B2 (en) Motion vector refinement for multi-reference prediction
NZ780051B2 (en) Motion vector refinement for multi-reference prediction