ES3004045T3 - Bidirectional inter-prediction method and device - Google Patents
Bidirectional inter-prediction method and device Download PDFInfo
- Publication number
- ES3004045T3 ES3004045T3 ES19776934T ES19776934T ES3004045T3 ES 3004045 T3 ES3004045 T3 ES 3004045T3 ES 19776934 T ES19776934 T ES 19776934T ES 19776934 T ES19776934 T ES 19776934T ES 3004045 T3 ES3004045 T3 ES 3004045T3
- Authority
- ES
- Spain
- Prior art keywords
- reference frame
- motion information
- motion vector
- poc
- sequence number
- 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
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods 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/103—Selection of coding mode or of prediction mode
- H04N19/105—Selection 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/134—Methods 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/136—Incoming video signal characteristics or properties
- H04N19/137—Motion inside a coding unit, e.g. average field, frame or block difference
- H04N19/139—Analysis of motion vectors, e.g. their magnitude, direction, variance or reliability
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/134—Methods 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/157—Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
- H04N19/159—Prediction type, e.g. intra-frame, inter-frame or bidirectional frame prediction
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods 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/17—Methods 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 an image region, e.g. an object
- H04N19/176—Methods 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 an image region, e.g. an object the region being a block, e.g. a macroblock
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/42—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/503—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/503—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
- H04N19/51—Motion estimation or motion compensation
- H04N19/513—Processing of motion vectors
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/503—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
- H04N19/51—Motion estimation or motion compensation
- H04N19/513—Processing of motion vectors
- H04N19/517—Processing of motion vectors by encoding
- H04N19/52—Processing of motion vectors by encoding by predictive encoding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/503—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
- H04N19/51—Motion estimation or motion compensation
- H04N19/577—Motion compensation with bidirectional frame interpolation, i.e. using B-pictures
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/70—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
Las realizaciones de la presente solicitud divulgan un método de predicción inter-cuadros bidireccional y un dispositivo, relacionados con el campo técnico de la codificación y decodificación de imágenes de vídeo, y que mejoran la eficiencia de la codificación y decodificación. Dicho método comprende: adquirir información de instrucciones, utilizándose la información de instrucciones para instruir la determinación de una segunda información de movimiento según una primera información de movimiento, siendo la primera información de movimiento información de movimiento de un bloque de imagen actual en una primera dirección, y siendo la segunda información de movimiento información de movimiento del bloque de imagen actual en una segunda dirección; adquirir la primera información de movimiento; según la primera información de movimiento, determinar la segunda información de movimiento; y según la primera información de movimiento y la segunda información de movimiento, determinar píxeles de predicción del bloque de imagen actual. (Traducción automática con Google Translate, sin valor legal)
Description
DESCRIPCIÓN
Método y dispositivo de inter predicción bidireccional
Campo técnico
Las realizaciones de esta solicitud están relacionadas con el campo de las tecnologías de la codificación de imágenes de vídeo y, en particular, con un método y un aparato de inter predicción bidireccional.
Antecedentes
En una tecnología de codificación de vídeo, se puede generar un bloque de imágenes de predicción de un bloque de imágenes actual basándose en un solo bloque de imágenes de referencia (lo que se conoce como inter predicción unidireccional), o un bloque de imágenes de predicción de un bloque de imágenes actual se puede generar basándose en al menos dos bloques de imágenes de referencia (lo que se conoce como inter predicción bidireccional). Los al menos dos bloques de imágenes de referencia pueden ser de un mismo fotograma de referencia o de fotogramas de referencia diferentes.
El documento de MA SIWEI ET AL: “The second generation IEEE 1857 video coding standard”, 2015 IEEE CHINA SUMMIT AND INTERNATIONAL CONFERENCE ON SIGNAL AND INFORMATION PROCESSING
(CHINASIP), IEEE, 12 de julio de 2015, páginas 171-175, introduce un estándar de codificación de vídeo. Este estándar prevé un modo de “predicción simétrica” para fotogramas B, que se describe como un modo especial de bi-predicción, en donde solo se codifica un vector de movimiento hacia adelante, y el vector de movimiento hacia atrás se deriva del vector de movimiento hacia adelante.
El documento de CHIU YI-JEN ET AL: “Decoder-side Motion Estimation and Wiener filter for HEVC”, 2013 VISUAL COMMUNICATIONS AND IMAGE PROCESSING (VCIP), IEEE, 17 de noviembre de 2013, páginas 1-6, introduce un método de tecnología DMVD.
El documento US2016286230A1 (LI XIANG ET AL, 29 de septiembre de 2016) introduce un método de emparejamiento de plantillas.
Para permitir que un decodificador y un codificador utilicen un mismo bloque de imágenes de referencia, el codificador necesita enviar información del movimiento de cada bloque de imágenes, al decodificador, en un flujo de bits. En general, la información del movimiento del bloque de imágenes actual incluye un valor de índice de fotograma de referencia, un indicador de predictor de vector de movimiento (Motion Vector Predictor, MVP) y una diferencia del vector de movimiento (Motion Vector Difference, MVD). El decodificador puede encontrar un bloque de imágenes de referencia correcto en un fotograma de referencia seleccionado basándose en el valor del índice de fotograma de referencia, el indicador de MVP y el MVD.
En consecuencia, en la inter predicción bidireccional, el codificador necesita enviar información del movimiento de cada bloque de imágenes, en cada dirección, al decodificador. En consecuencia, la información del movimiento ocupa una cantidad relativamente grande de recursos de transmisión. Esto reduce la utilización efectiva de los recursos de transmisión, una velocidad de transmisión y la eficiencia de compresión de codificación.
Compendio
Las realizaciones de esta solicitud dan a conocer un método y un aparato de inter predicción bidireccional, para resolver el problema de que la utilización efectiva de los recursos de transmisión, la velocidad de transmisión y la eficiencia de compresión de codificación se reducen debido a que la información del movimiento ocupa una cantidad relativamente grande de recursos de transmisión. En lo que sigue, partes de la descripción y de los dibujos que se refieren a realizaciones anteriores que no necesariamente comprenden todas las características para implementar las realizaciones de la invención reivindicada no se representan como realizaciones de la invención, sino como ejemplos útiles para comprender las realizaciones de la invención. Se da a conocer una divulgación de habilitación para la invención protegida con las realizaciones indicadas a continuación, que describen implementaciones específicas de lo que se ilustra en las figuras 4 y 5. El alcance de la protección está definido por la combinación de características especificadas respectivamente en las reivindicaciones independientes 1, 4 y 7 adjuntas.
Para lograr los objetivos anteriores, las siguientes soluciones técnicas se utilizan en las realizaciones de esta solicitud.
Según un primer aspecto, se da a conocer un método de inter predicción bidireccional. El método incluye: obtener información de indicación utilizada para indicar determinar la segunda información del movimiento basándose en la primera información del movimiento, donde la primera información del movimiento es información del movimiento de un bloque de imágenes actual en una primera dirección, y la segunda información del movimiento es información del movimiento del bloque de imágenes actual en una segunda dirección; obtener la primera información del movimiento; determinar la segunda información del movimiento basándose en la primera información del movimiento obtenida; y determinar muestras de predicción del bloque de imágenes actual basándose en la primera información del movimiento obtenida y en la segunda información del movimiento determinada.
Según el método de inter predicción bidireccional dado a conocer en esta solicitud, después de que se obtiene la información de indicación, la segunda información del movimiento se determina basándose en la primera información del movimiento. De esta manera, un flujo de bits necesita incluir solo la información de indicación y la primera información del movimiento, y ya no necesita incluir la segunda información del movimiento. En comparación con la técnica anterior, en la que el flujo de bits incluye información del movimiento de cada bloque de imágenes en cada dirección, el método de inter predicción bidireccional dado a conocer en esta solicitud reduce de manera efectiva la información del movimiento incluida en el flujo de bits, y mejora la utilización efectiva de los recursos de transmisión, la velocidad de transmisión y la velocidad de codificación.
Opcionalmente, en una posible implementación de esta solicitud, un método para “determinar la segunda información del movimiento basándose en la primera información del movimiento” es: obtener un valor de índice de un primer fotograma de referencia en la primera información del movimiento, y determinar un número de secuencia del primer fotograma de referencia basándose en el valor de índice del primer fotograma de referencia y en una primera lista de fotogramas de referencia, donde el primer fotograma de referencia en el presente documento es un fotograma de referencia del bloque de imágenes actual en la primera dirección, y el valor de índice del primer fotograma de referencia es un número del primer fotograma de referencia en la primera lista de fotogramas de referencia; obtener un valor de índice de un segundo fotograma de referencia, y determinar un número de secuencia del segundo fotograma de referencia basándose en el valor de índice del segundo fotograma de referencia y en una segunda lista de fotogramas de referencia, donde el segundo fotograma de referencia en el presente documento es un fotograma de referencia de un bloque de imágenes actual en la segunda dirección, y el valor de índice del segundo fotograma de referencia es un número del segundo fotograma de referencia en la segunda lista de fotogramas de referencia; determinar un primer vector de movimiento basándose en una primera diferencia del vector de movimiento y en un primer indicador de predictor de vector de movimiento que están en la primera información del movimiento, donde el primer vector de movimiento es un vector de movimiento del bloque de imágenes actual en la primera dirección; y derivar un segundo vector de movimiento en la segunda información del movimiento según la siguiente fórmula:
POC_Cur - POCJistY
mv 1Y =
POC.Cur - POCJistX X mvJX
En la fórmula anterior, mv_lY representa el segundo vector de movimiento, POC_Cur representa un número de secuencia de un fotograma actual, POC_listX representa el número de secuencia del primer fotograma de referencia, POC_listY representa el número de secuencia del segundo fotograma de referencia, mv_lX representa el primer vector de movimiento y el segundo vector de movimiento es un vector de movimiento del bloque de imágenes actual en la segunda dirección.
Opcionalmente, en otra posible implementación de esta solicitud, un método para “determinar la segunda información del movimiento basándose en la primera información del movimiento” es: obtener un valor de índice de un primer fotograma de referencia en la primera información del movimiento, donde el primer fotograma de referencia es un fotograma de referencia del bloque de imágenes actual en la primera dirección, y el valor de índice del primer fotograma de referencia es un número del primer fotograma de referencia en una primera lista de fotogramas de referencia; obtener un valor de índice de un segundo fotograma de referencia, donde el segundo fotograma de referencia es un fotograma de referencia del bloque de imágenes actual en la segunda dirección, y el valor de índice del segundo fotograma de referencia es un número del segundo fotograma de referencia en una segunda lista de fotogramas de referencia; determinar un primer vector de movimiento basándose en una primera diferencia del vector de movimiento y en un primer indicador de predictor de vector de movimiento que están en la primera información del movimiento, donde el primer vector de movimiento es un vector de movimiento del bloque de imágenes actual en la primera dirección; y cuando el primer fotograma de referencia es un fotograma de referencia hacia adelante del bloque de imágenes actual y el segundo fotograma de referencia es un fotograma de referencia hacia atrás del bloque de imágenes actual, o cuando el primer fotograma de referencia es un fotograma de referencia hacia atrás del bloque de imágenes actual y el segundo fotograma de referencia es un fotograma de referencia hacia adelante del bloque de imágenes actual, o cuando cada uno del primer fotograma de referencia y el segundo fotograma de referencia son un fotograma de referencia hacia adelante del bloque de imágenes actual, o cuando cada uno del primer fotograma de referencia y el segundo fotograma de referencia son un fotograma de referencia hacia atrás del bloque de imágenes actual, derivar un segundo vector de movimiento en la segunda información del movimiento según la siguiente fórmula:
En la fórmula anterior, mv_lY representa el segundo vector de movimiento, mv_lX representa el primer vector de movimiento, y el segundo vector de movimiento es un vector de movimiento del bloque de imágenes actual en la segunda dirección.
Tanto “el primer fotograma de referencia es un fotograma de referencia hacia adelante del bloque de imágenes actual y el segundo fotograma de referencia es un fotograma de referencia hacia atrás del bloque de imágenes actual” como “el primer fotograma de referencia es un fotograma de referencia hacia atrás del bloque de imágenes actual y el segundo fotograma de referencia es un fotograma de referencia hacia adelante del bloque de imágenes actual”, pueden representarse mediante el uso de una fórmula (POC_Cur - POC_listX) * (POC_listY - POC_Cur) > 0, o pueden representarse mediante el uso de una fórmula POC_listY = 2 * POC_Cur - POC_listX. Esto no está limitado específicamente en esta solicitud.
Además, tanto “cada uno del primer fotograma de referencia y el segundo fotograma de referencia son un fotograma de referencia hacia adelante del bloque de imágenes actual” como “cada uno del primer fotograma de referencia y el segundo fotograma de referencia son un fotograma de referencia hacia atrás del bloque de imágenes actual” pueden representarse utilizando una fórmula (POC_Cur - POC_listX) * (POC_listY -POC_Cur) < 0.
POC_Cur representa un número de secuencia de un fotograma actual, POC_listX representa un número de secuencia del primer fotograma de referencia y POC_listY representa un número de secuencia del segundo fotograma de referencia.
Opcionalmente, en otra posible implementación de esta solicitud, un método para “determinar la segunda información del movimiento basándose en la primera información del movimiento” es: obtener un valor de índice de un primer fotograma de referencia y una primera diferencia del vector de movimiento que están en la primera información del movimiento, y determinar un número de secuencia del primer fotograma de referencia basándose en el valor de índice del primer fotograma de referencia y en una primera lista de fotogramas de referencia, donde el primer fotograma de referencia es un fotograma de referencia del bloque de imágenes actual en la primera dirección, y el valor de índice del primer fotograma de referencia es un número del primer fotograma de referencia en la primera lista de fotogramas de referencia; obtener un valor de índice de un segundo fotograma de referencia, determinar un número de secuencia del segundo fotograma de referencia basándose en el valor de índice del segundo fotograma de referencia y en una segunda lista de fotogramas de referencia, y determinar un segundo vector de movimiento predicho basándose en el valor de índice del segundo fotograma de referencia y en una segunda lista de vectores de movimiento predichos candidatos, donde el segundo vector de movimiento predicho es un vector de movimiento predicho del bloque de imágenes actual en la segunda dirección, el segundo fotograma de referencia es un fotograma de referencia del bloque de imágenes actual en la segunda dirección, y el valor de índice del segundo fotograma de referencia es un número del segundo fotograma de referencia en la segunda lista de fotogramas de referencia; derivar una segunda diferencia del vector de movimiento en la segunda información del movimiento según la siguiente fórmula:
POC_Cur - POCJistY
mvd 1Y = x mvd IX
POC Cur - POC listX
donde en la fórmula anterior, mvd_lY representa la segunda diferencia del vector de movimiento, POC_Cur representa un número de secuencia de un fotograma actual, POC_listX representa el número de secuencia del primer fotograma de referencia, POC_listY representa el número de secuencia del segundo fotograma de referencia, y mvd_lX representa la primera diferencia del vector de movimiento; y determinar un segundo vector de movimiento basándose en el segundo vector de movimiento predicho y en la segunda diferencia del vector de movimiento, donde el segundo vector de movimiento es un vector de movimiento del bloque de imágenes actual en la segunda dirección.
Opcionalmente, en otra posible implementación de esta solicitud, un método para “determinar la segunda información del movimiento basándose en la primera información del movimiento” es: obtener un valor de índice de un primer fotograma de referencia y un primer vector de movimiento que están en la primera información del movimiento, donde el primer fotograma de referencia es un fotograma de referencia del bloque de imágenes actual en la primera dirección, y el valor de índice del primer fotograma de referencia es un número del primer fotograma de referencia en una primera lista de fotogramas de referencia; obtener un valor de índice de un segundo fotograma de referencia, y determinar un segundo vector de movimiento predicho basándose en el valor de índice del segundo fotograma de referencia y en una segunda lista de vectores de movimiento predichos candidatos, donde el segundo vector de movimiento predicho es un vector de movimiento predicho del bloque de imágenes actual en la segunda dirección, el segundo fotograma de referencia es un fotograma de referencia del bloque de imágenes actual en la segunda dirección, y el valor de índice del segundo fotograma de referencia es un número del segundo fotograma de referencia en una segunda lista de fotogramas de referencia; cuando el primer fotograma de referencia es un fotograma de referencia hacia adelante del bloque de imágenes actual y el segundo fotograma de referencia es un fotograma de referencia hacia atrás del bloque de imágenes actual, o cuando el primer fotograma de referencia es un fotograma de referencia hacia atrás del bloque de imágenes actual y el segundo fotograma de referencia es un fotograma de referencia hacia adelante del bloque de imágenes actual, o cuando cada uno del primer fotograma de referencia y el segundo fotograma de referencia son un fotograma de referencia hacia adelante del bloque de imágenes actual, o cuando cada uno del primer fotograma de referencia y el segundo fotograma de referencia son un fotograma de referencia hacia atrás del bloque de imágenes actual, derivar una segunda diferencia de vector de movimiento en la segunda información del movimiento según la siguiente fórmula:
donde en la fórmula anterior, mvd_lY representa la segunda diferencia de vector de movimiento, y mvd_lX representa una primera diferencia de vector de movimiento; y determinar un segundo vector de movimiento basándose en el segundo vector de movimiento predicho y en la segunda diferencia de vector de movimiento, donde el segundo vector de movimiento es un vector de movimiento del bloque de imágenes actual en la segunda dirección.
De manera similar, tanto “el primer fotograma de referencia es un fotograma de referencia hacia adelante del bloque de imágenes actual y el segundo fotograma de referencia es un fotograma de referencia hacia atrás del bloque de imágenes actual” como “el primer fotograma de referencia es un fotograma de referencia hacia atrás del bloque de imágenes actual y el segundo fotograma de referencia es un fotograma de referencia hacia adelante del bloque de imágenes actual” , pueden representarse mediante el uso de una fórmula (POC_Cur -POC_listX) * (POC_listY - POC_Cur) > 0, o pueden representarse mediante el uso de una fórmula POC_listY = 2 * POC_Cur - POC_listX. Esto no está limitado específicamente en esta solicitud.
Tanto “cada uno del primer fotograma de referencia y el segundo fotograma de referencia son un fotograma de referencia hacia adelante del bloque de imágenes actual” como “cada uno del primer fotograma de referencia y el segundo fotograma de referencia son un fotograma de referencia hacia atrás del bloque de imágenes actual” pueden representarse utilizando una fórmula (POC_Cur - POC_listX) * (POC_listY -POC_Cur) < 0.
POC_Cur representa un número de secuencia de un fotograma actual, POC_listX representa un número de secuencia del primer fotograma de referencia y POC_listY representa un número de secuencia del segundo fotograma de referencia.
Se puede obtener que, el método de inter predicción bidireccional dado a conocer en esta solicitud puede ser: determinar el segundo vector de movimiento basándose en el primer vector de movimiento, o puede ser: determinar la segunda diferencia del vector de movimiento basándose en la primera diferencia del vector de movimiento, y determinar el segundo vector de movimiento basándose en la segunda diferencia del vector de movimiento.
Opcionalmente, en otra posible implementación de esta solicitud, un método para “obtener un valor de índice de un segundo fotograma de referencia” es: calcular un primer número de secuencia basándose en el número de secuencia del primer fotograma de referencia actual y en el número de secuencia del primer fotograma de referencia según una fórmula POC_listY0 = 2 * POC_Cur - POC_listX , donde POC_Cur representa el número de secuencia del fotograma actual, POC_listX representa el número de secuencia del primer fotograma de referencia, y POC_listY0 representa el primer número de secuencia; y, cuando la segunda lista de fotogramas de referencia incluye el primer número de secuencia, determinar, como el valor de índice del segundo fotograma de referencia, un número de un fotograma de referencia representado por el primer número de secuencia en la segunda lista de fotogramas de referencia.
Opcionalmente, en otra posible implementación de esta solicitud, un método para “obtener un valor de índice de un segundo fotograma de referencia” es: calcular un segundo número de secuencia basándose en el número de secuencia del fotograma actual y en el número de secuencia del primer fotograma de referencia según una fórmula (POC_Cur - POC_listX) * (POC_listY0' - POC_Cur) > 0, donde POC_listY0' representa el segundo número de secuencia; y, cuando la segunda lista de fotogramas de referencia incluye el segundo número de secuencia, determinar, como el valor de índice del segundo fotograma de referencia, un número de un fotograma de referencia representado por el segundo número de secuencia en la segunda lista de fotogramas de referencia.
Opcionalmente, en otra posible implementación de esta solicitud, un método para “obtener un valor de índice de un segundo fotograma de referencia” es: calcular un tercer número de secuencia basándose en el número de secuencia del fotograma actual y en el número de secuencia del primer fotograma de referencia según una fórmula POC_listX # POC_listY0”, donde POC_listY0” representa el tercer número de secuencia; y determinar, como el valor de índice del segundo fotograma de referencia, un número de un fotograma de referencia representado por el tercer número de secuencia en la segunda lista de fotogramas de referencia.
Opcionalmente, en otra posible implementación de esta solicitud, un método para “obtener un valor de índice de un segundo fotograma de referencia” es: calcular un primer número de secuencia basándose en el número de secuencia del fotograma actual y en el número de secuencia del primer fotograma de referencia según una fórmula POC_listY0 = 2 * POC_Cur - POC_listX , donde POC_Cur representa el número de secuencia del fotograma actual, POC_listX representa el número de secuencia del primer fotograma de referencia, y POC_listY0 representa el primer número de secuencia. Cuando la segunda lista de fotogramas de referencia incluye el primer número de secuencia, un número de un fotograma de referencia representado por el primer número de secuencia en la segunda lista de fotogramas de referencia se determina como el valor de índice del segundo fotograma de referencia. Cuando la segunda lista de fotogramas de referencia no incluye el primer número de secuencia, se calcula un segundo número de secuencia basándose en el número de secuencia del fotograma actual y en el número de secuencia del primer fotograma de referencia según una fórmula (POC_Cur - POC_listX) * (POC_listY0' - POC_Cur) > 0, donde POC_listY0' representa el segundo número de secuencia. Cuando la segunda lista de fotogramas de referencia incluye el segundo número de secuencia, un número de un fotograma de referencia representado por el segundo número de secuencia en la segunda lista de fotogramas de referencia se determina como el valor de índice del segundo fotograma de referencia. Cuando la segunda lista de fotogramas de referencia no incluye el segundo número de secuencia, se calcula un tercer número de secuencia basándose en el número de secuencia del fotograma actual y en el número de secuencia del primer fotograma de referencia según una fórmula POC_listX t POC_listY0”, donde POC_listY0” representa el tercer número de secuencia; y un número de un fotograma de referencia representado por el tercer número de secuencia en la segunda lista de fotogramas de referencia se determina como el valor de índice del segundo fotograma de referencia.
Opcionalmente, en otra posible implementación de esta solicitud, un método para “obtener un valor de índice de un segundo fotograma de referencia” es: analizar un flujo de bits para obtener el valor de índice del segundo fotograma de referencia.
Se puede obtener que puede haber una pluralidad de métodos para “obtener un valor de índice de un segundo fotograma de referencia” en esta solicitud. Un método específico utilizado para obtener el valor de índice del segundo fotograma de referencia debe determinarse basándose en los requisitos reales, o estar preestablecido.
Según un segundo aspecto, se da a conocer un aparato de inter predicción bidireccional. El aparato de inter predicción bidireccional incluye una unidad de obtención y una unidad de determinación.
Específicamente, la unidad de obtención está configurada para: obtener información de indicación, donde la información de indicación se utiliza para indicar determinar la segunda información del movimiento basándose en la primera información del movimiento, la primera información del movimiento es información del movimiento de un bloque de imágenes actual en una primera dirección, y la segunda información del movimiento es información del movimiento del bloque de imágenes actual en una segunda dirección; y obtener la primera información del movimiento. La unidad de determinación está configurada para: determinar la segunda información del movimiento basándose en la primera información del movimiento obtenida por la unidad de obtención, y determinar muestras de predicción del bloque de imágenes actual basándose en la primera información del movimiento y en la segunda información del movimiento.
Opcionalmente, en una posible implementación de esta solicitud, la unidad de determinación está configurada específicamente para: obtener un valor de índice de un primer fotograma de referencia en la primera información del movimiento, y determinar un número de secuencia del primer fotograma de referencia basándose en el valor de índice del primer fotograma de referencia y en una primera lista de fotogramas de referencia, donde el primer fotograma de referencia es un fotograma de referencia del bloque de imágenes actual en la primera dirección, y el valor de índice del primer fotograma de referencia es un número del primer fotograma de referencia en la primera lista de fotogramas de referencia; obtener un valor de índice de un segundo fotograma de referencia, y determinar un número de secuencia del segundo fotograma de referencia basándose en el valor de índice del segundo fotograma de referencia y en una segunda lista de fotogramas de referencia, donde el segundo fotograma de referencia es un fotograma de referencia del bloque de imágenes actual en la segunda dirección, y el valor de índice del segundo fotograma de referencia es un número del segundo fotograma de referencia en la segunda lista de fotogramas de referencia; determinar un primer vector de movimiento basándose en una primera diferencia de vector de movimiento y en un primer indicador de predictor de vector de movimiento que están en la primera información del movimiento, donde el primer vector de movimiento es un vector de movimiento del bloque de imágenes actual en la primera dirección; y derivar un segundo vector de movimiento en la segunda información del movimiento según la siguiente fórmula: POC_Cur - POCJistY
mvJY =
POclcur - POC JistX X mv- ^
En la fórmula anterior, mv_lY representa el segundo vector de movimiento, POC_Cur representa un número de secuencia de un fotograma actual, POC_listX representa el número de secuencia del primer fotograma de referencia, POCJistY representa el número de secuencia del segundo fotograma de referencia, mv_IX representa el primer vector de movimiento y el segundo vector de movimiento es un vector de movimiento del bloque de imágenes actual en la segunda dirección.
Opcionalmente, en otra posible implementación de esta solicitud, la unidad de determinación está configurada específicamente para: obtener un valor de índice de un primer fotograma de referencia en la primera información del movimiento, donde el primer fotograma de referencia es un fotograma de referencia del bloque de imágenes actual en la primera dirección, y el valor de índice del primer fotograma de referencia es un número del primer fotograma de referencia en una primera lista de fotogramas de referencia; obtener un valor de índice de un segundo fotograma de referencia, donde el segundo fotograma de referencia es un fotograma de referencia del bloque de imágenes actual en la segunda dirección, y el valor de índice del segundo fotograma de referencia es un número del segundo fotograma de referencia en una segunda lista de fotogramas de referencia; determinar un primer vector de movimiento basándose en una primera diferencia de vector de movimiento y un primer indicador de predictor de vector de movimiento que están en la primera información del movimiento, donde el primer vector de movimiento es un vector de movimiento del bloque de imágenes actual en la primera dirección; y cuando el primer fotograma de referencia es un fotograma de referencia hacia adelante del bloque de imágenes actual y el segundo fotograma de referencia es un fotograma de referencia hacia atrás del bloque de imágenes actual, o cuando el primer fotograma de referencia es un fotograma de referencia hacia atrás del bloque de imágenes actual y el segundo fotograma de referencia es un fotograma de referencia hacia adelante del bloque de imágenes actual, o cuando cada uno del primer fotograma de referencia y el segundo fotograma de referencia son un fotograma de referencia hacia adelante del bloque de imágenes actual, o cuando cada uno del primer fotograma de referencia y el segundo fotograma de referencia son un fotograma de referencia hacia atrás del bloque de imágenes actual, derivar un segundo vector de movimiento en la segunda información del movimiento según la siguiente fórmula:
mvJY = -mvJX
En la fórmula anterior, mv_lY representa el segundo vector de movimiento, mv_lX representa el primer vector de movimiento, y el segundo vector de movimiento es un vector de movimiento del bloque de imágenes actual en la segunda dirección.
Opcionalmente, en otra posible implementación de esta solicitud, la unidad de determinación está configurada específicamente para: obtener un valor de índice de un primer fotograma de referencia y una primera diferencia de vector de movimiento que están en la primera información del movimiento, y determinar un número de secuencia del primer fotograma de referencia basándose en el valor de índice del primer fotograma de referencia y en una primera lista de fotogramas de referencia, donde el primer fotograma de referencia es un fotograma de referencia del bloque de imágenes actual en la primera dirección, y el valor de índice del primer fotograma de referencia es un número del primer fotograma de referencia en la primera lista de fotogramas de referencia; obtener un valor de índice de un segundo fotograma de referencia, determinar un número de secuencia del segundo fotograma de referencia basándose en el valor de índice del segundo fotograma de referencia y en una segunda lista de fotogramas de referencia, y determinar un segundo vector de movimiento predicho basándose en el valor de índice del segundo fotograma de referencia y en una segunda lista de vectores de movimiento predichos candidatos, donde el segundo vector de movimiento predicho es un vector de movimiento predicho del bloque de imágenes actual en la segunda dirección, el segundo fotograma de referencia es un fotograma de referencia del bloque de imágenes actual en la segunda dirección, y el valor de índice del segundo fotograma de referencia es un número del segundo fotograma de referencia en la segunda lista de fotogramas de referencia; derivar una segunda diferencia de vector de movimiento en la segunda información del movimiento según la siguiente fórmula:
POC_Cur - POCJistY
mvdJY= -^------———— -X mvdJX
POC Cur - POC listX
donde mvd_lY representa la segunda diferencia de vector de movimiento, POC_Cur representa un número de secuencia de un fotograma actual, POC_listX representa el número de secuencia del primer fotograma de referencia, POCJistY representa el número de secuencia del segundo fotograma de referencia y mvd_lX representa la primera diferencia de vector de movimiento; y determinar un segundo vector de movimiento basándose en el segundo vector de movimiento predicho y en la segunda diferencia de vector de movimiento, donde el segundo vector de movimiento es un vector de movimiento del bloque de imágenes actual en la segunda dirección.
Opcionalmente, en otra posible implementación de esta solicitud, la unidad de determinación está configurada específicamente para: obtener un valor de índice de un primer fotograma de referencia y un primer vector de movimiento que están en la primera información del movimiento, donde el primer fotograma de referencia es un fotograma de referencia del bloque de imágenes actual en la primera dirección, y el valor de índice del primer fotograma de referencia es un número del primer fotograma de referencia en una primera lista de fotogramas de referencia; obtener un valor de índice de un segundo fotograma de referencia, y determinar un segundo vector de movimiento predicho basándose en el valor de índice del segundo fotograma de referencia y en una segunda lista de vectores de movimiento predichos candidatos, donde el segundo vector de movimiento predicho es un vector de movimiento predicho del bloque de imágenes actual en la segunda dirección, el segundo fotograma de referencia es un fotograma de referencia del bloque de imágenes actual en la segunda dirección, y el valor de índice del segundo fotograma de referencia es un número del segundo fotograma de referencia en una segunda lista de fotogramas de referencia; cuando el primer fotograma de referencia es un fotograma de referencia hacia adelante del bloque de imágenes actual y el segundo fotograma de referencia es un fotograma de referencia hacia atrás del bloque de imágenes actual, o cuando el primer fotograma de referencia es un fotograma de referencia hacia atrás del bloque de imágenes actual y el segundo fotograma de referencia es un fotograma de referencia hacia adelante del bloque de imágenes actual, o cuando cada uno del primer fotograma de referencia y el segundo fotograma de referencia son un fotograma de referencia hacia adelante del bloque de imágenes actual, o cuando cada uno del primer fotograma de referencia y el segundo fotograma de referencia son un fotograma de referencia hacia atrás del bloque de imágenes actual, derivar una segunda diferencia de vector de movimiento en la segunda información del movimiento según la siguiente fórmula:
donde mvd_lY representa la segunda diferencia de vector de movimiento, y mvd_lX representa una primera diferencia de vector de movimiento; y determinar un segundo vector de movimiento basándose en el segundo vector de movimiento predicho y en la segunda diferencia de vector de movimiento, donde el segundo vector de movimiento es un vector de movimiento del bloque de imágenes actual en la segunda dirección.
Opcionalmente, en otra posible implementación de esta solicitud, la unidad de obtención está configurada específicamente para: calcular un primer número de secuencia basándose en el número de secuencia del fotograma actual y en el número de secuencia del primer fotograma de referencia según una fórmula POC_listY0 = 2 * POC_Cur - POC_listX, donde POC_Cur representa el número de secuencia del fotograma actual, POC_listX representa el número de secuencia del primer fotograma de referencia y POC_listY0 representa el primer número de secuencia; y, cuando la segunda lista de fotogramas de referencia incluye el primer número de secuencia, determinar, como valor de índice del segundo fotograma de referencia, un número de un fotograma de referencia representado por el primer número de secuencia en la segunda lista de fotogramas de referencia.
Opcionalmente, en otra posible implementación de esta solicitud, la unidad de obtención está configurada específicamente para: calcular un segundo número de secuencia basándose en el número de secuencia del fotograma actual y en el número de secuencia del primer fotograma de referencia según una fórmula (POC_Cur - POC_listX) * (POC_listY0' - POC_Cur) > 0, donde POC_listY0' representa el segundo número de secuencia; y cuando la segunda lista de fotogramas de referencia incluye el segundo número de secuencia, determinar, como valor de índice del segundo fotograma de referencia, un número de un fotograma de referencia representado por el segundo número de secuencia en la segunda lista de fotogramas de referencia.
Opcionalmente, en otra posible implementación de esta solicitud, la unidad de obtención está configurada específicamente para: calcular un tercer número de secuencia basándose en el número de secuencia del fotograma actual y en el número de secuencia del primer fotograma de referencia según una fórmula POC_listX # POC_listY0”, donde POC_listY0” representa el tercer número de secuencia; y determinar, como valor de índice del segundo fotograma de referencia, un número de un fotograma de referencia representado por el tercer número de secuencia en la segunda lista de fotogramas de referencia.
Según un tercer aspecto, se da a conocer un método de inter predicción bidireccional. Existen una pluralidad de implementaciones para el método de inter predicción bidireccional.
Una implementación es: analizar un flujo de bits para obtener un primer identificador, donde el primer identificador se usa para indicar si se determina la segunda información del movimiento basándose en la primera información del movimiento, la primera información del movimiento es información del movimiento de un bloque de imágenes actual en una primera dirección, y la segunda información del movimiento es información del movimiento del bloque de imágenes actual en una segunda dirección; si un valor del primer identificador es un primer valor preestablecido, obtener la primera información del movimiento y determinar la segunda información del movimiento basándose en la primera información del movimiento; y determinar muestras de predicción del bloque de imágenes actual basándose en la primera información del movimiento y en la segunda información del movimiento.
Otra implementación es: analizar un flujo de bits para obtener un segundo identificador, donde el segundo identificador se usa para indicar si se calcula la información del movimiento de un bloque de imágenes actual mediante el uso de un algoritmo de derivación de información del movimiento; si un valor del segundo identificador es un segundo valor preestablecido, obtener un tercer identificador, donde el tercer identificador se usa para indicar si se determina la segunda información del movimiento basándose en la primera información del movimiento, la primera información del movimiento es información del movimiento del bloque de imágenes actual en una primera dirección, y la segunda información del movimiento es información del movimiento del bloque de imágenes actual en una segunda dirección; si un valor del tercer identificador es un tercer valor preestablecido, obtener la primera información del movimiento y determinar la segunda información del movimiento basándose en la primera información del movimiento y en la segunda información de la operación.
Otra implementación es: analizar un flujo de bits para obtener un segundo identificador, donde el segundo identificador se utiliza para indicar si se debe calcular la información del movimiento de un bloque de imágenes actual mediante el uso de un algoritmo de derivación de información del movimiento; si un valor del segundo identificador es un segundo valor preestablecido, obtener primera información del movimiento y determinar segunda información del movimiento basándose en la primera información del movimiento, donde la primera información del movimiento es información del movimiento del bloque de imágenes actual en una primera dirección, y la segunda información del movimiento es información del movimiento del bloque de imágenes actual en una segunda dirección; y determinar muestras de predicción del bloque de imágenes actual basándose en la primera información del movimiento y en la segunda información del movimiento.
Otra implementación es: analizar un flujo de bits para obtener un cuarto identificador, donde el cuarto identificador se usa para indicar si se calcula la información del movimiento de un bloque de imágenes actual mediante el uso de un algoritmo de derivación de información del movimiento; si un valor del cuarto identificador es un cuarto valor preestablecido, determinar un valor de índice de un primer fotograma de referencia y un valor de índice de un segundo fotograma de referencia basándose en una primera lista de fotogramas de referencia y en una segunda lista de fotogramas de referencia, donde la primera lista de fotogramas de referencia es una lista de fotogramas de referencia del bloque de imágenes actual en una primera dirección, la segunda lista de fotogramas de referencia es una lista de fotogramas de referencia del bloque de imágenes actual en una segunda dirección, el primer fotograma de referencia es un fotograma de referencia del bloque de imágenes actual en la primera dirección, y el segundo fotograma de referencia es un fotograma de referencia del bloque de imágenes actual en la segunda dirección; obtener una primera diferencia de vector de movimiento y un primer indicador de predictor de vector de movimiento, y determinar una segunda información del movimiento basándose en la primera información del movimiento, donde la primera información del movimiento incluye el valor de índice del primer fotograma de referencia, la primera diferencia de vector de movimiento y el primer indicador de predictor de vector de movimiento, y la segunda información del movimiento es información del movimiento del bloque de imágenes actual en la segunda dirección; y determinar muestras de predicción del bloque de imágenes actual basándose en la primera información del movimiento y en la segunda información del movimiento.
Otra implementación, que describe una realización de la invención protegida, es: analizar un flujo de bits para obtener un primer identificador, donde el primer identificador se utiliza para indicar si se debe determinar una segunda información del movimiento basándose en una primera información del movimiento, la primera información del movimiento es información del movimiento de un bloque de imágenes actual en una primera dirección, y la segunda información del movimiento es información del movimiento del bloque de imágenes actual en una segunda dirección; si un valor del primer identificador es un octavo valor preestablecido, obtener un quinto identificador, donde el quinto identificador se utiliza para indicar si se debe determinar la primera información del movimiento basándose en la segunda información del movimiento; si un valor del quinto identificador es un quinto valor preestablecido, obtener la segunda información del movimiento, y determinar la primera información del movimiento basándose en la segunda información del movimiento; y determinar muestras de predicción del bloque de imágenes actual basándose en la primera información del movimiento y en la segunda información del movimiento.
Otra implementación es: analizar un flujo de bits para obtener un segundo identificador, donde el segundo identificador se utiliza para indicar si se debe calcular la información del movimiento de un bloque de imágenes actual mediante el uso de un algoritmo de derivación de información del movimiento; si un valor del segundo identificador es un segundo valor preestablecido, obtener un tercer identificador, donde el tercer identificador se utiliza para indicar si se debe determinar una segunda información del movimiento basándose en una primera información del movimiento, la primera información del movimiento es información del movimiento del bloque de imágenes actual en una primera dirección, y la segunda información del movimiento es información del movimiento del bloque de imágenes actual en una segunda dirección; si un valor del tercer identificador es un sexto valor preestablecido, obtener la segunda información del movimiento y determinar la primera información del movimiento basándose en la segunda información del movimiento; y determinar muestras de predicción del bloque de imágenes actual basándose en la primera información del movimiento y en la segunda información de operación.
Para las descripciones específicas del primer identificador al cuarto identificador, consulte las siguientes descripciones.
En el método de inter predicción bidireccional dado a conocer en esta solicitud, después de que se obtiene un identificador analizando el flujo de bits, se determina si determinar la segunda información del movimiento basándose en la primera información del movimiento basándose en un valor del identificador. Después de que se determina que la segunda información del movimiento necesita ser determinada basándose en la primera información del movimiento, se obtiene la primera información del movimiento, y luego se determina la segunda información del movimiento basándose en la primera información del movimiento obtenida. De esta manera, el flujo de bits necesita incluir solo el identificador correspondiente y la primera información del movimiento, y ya no necesita incluir la segunda información del movimiento. En comparación con la técnica anterior, en la que el flujo de bits incluye información del movimiento de cada bloque de imágenes en cada dirección, el método de inter predicción bidireccional dado a conocer en esta solicitud reduce de manera efectiva la información del movimiento incluida en el flujo de bits, y mejora la utilización efectiva de los recursos de transmisión, la velocidad de transmisión y la velocidad de codificación.
Según un cuarto aspecto, se da a conocer un aparato de inter predicción bidireccional. El aparato de inter predicción bidireccional incluye una unidad de obtención y una unidad de determinación.
Específicamente, en una implementación, la unidad de obtención está configurada para: analizar un flujo de bits para obtener un primer identificador, donde el primer identificador se usa para indicar si se determina la segunda información del movimiento basándose en la primera información del movimiento, la primera información del movimiento es información del movimiento de un bloque de imágenes actual en una primera dirección, y la segunda información del movimiento es información del movimiento del bloque de imágenes actual en una segunda dirección; y si un valor del primer identificador es un primer valor preestablecido, obtener la primera información del movimiento. La unidad de determinación está configurada para: determinar la segunda información del movimiento basándose en la primera información del movimiento obtenida por la unidad de obtención, y determinar muestras de predicción del bloque de imágenes actual basándose en la primera información del movimiento y en la segunda información del movimiento. La unidad de determinación está configurada para: determinar la segunda información del movimiento basándose en la primera información del movimiento obtenida por la unidad de obtención, y determinar muestras de predicción del bloque de imágenes actual basándose en la primera información del movimiento y en la segunda información del movimiento.
En otra implementación, la unidad de obtención está configurada para: analizar un flujo de bits para obtener un segundo identificador, donde el segundo identificador se utiliza para indicar si se debe calcular la información del movimiento de un bloque de imágenes actual mediante el uso de un algoritmo de derivación de información del movimiento; si un valor del segundo identificador es un segundo valor preestablecido, obtener un tercer identificador, donde el tercer identificador se utiliza para indicar si se debe determinar la segunda información del movimiento basándose en la primera información del movimiento, la primera información del movimiento es información del movimiento del bloque de imágenes actual en una primera dirección, y la segunda información del movimiento es información del movimiento del bloque de imágenes actual en una segunda dirección; y si un valor del tercer identificador es un tercer valor preestablecido, obtener la primera información del movimiento. La unidad de determinación está configurada para: determinar la segunda información del movimiento basándose en la primera información del movimiento obtenida por la unidad de obtención, y determinar muestras de predicción del bloque de imágenes actual basándose en la primera información del movimiento y en la segunda información del movimiento.
En otra implementación, la unidad de obtención está configurada para analizar un flujo de bits para obtener un cuarto identificador, donde el cuarto identificador se utiliza para indicar si se calcula la información del movimiento de un bloque de imágenes actual mediante el uso de un algoritmo de derivación de información del movimiento. La unidad de determinación está configurada para: si un valor del cuarto identificador obtenido por la unidad de obtención es un cuarto valor preestablecido, determinar un valor de índice de un primer fotograma de referencia y un valor de índice de un segundo fotograma de referencia basándose en una primera lista de fotogramas de referencia y en una segunda lista de fotogramas de referencia, donde la primera lista de fotogramas de referencia es una lista de fotogramas de referencia del bloque de imágenes actual en una primera dirección, la segunda lista de fotogramas de referencia es una lista de fotogramas de referencia del bloque de imágenes actual en una segunda dirección, el primer fotograma de referencia es un fotograma de referencia del bloque de imágenes actual en la primera dirección, y el segundo fotograma de referencia es un fotograma de referencia del bloque de imágenes actual en la segunda dirección. La unidad de obtención está configurada además para obtener una primera diferencia del vector de movimiento y un primer indicador de predictor de vector de movimiento. La unidad de determinación está configurada además para: determinar la segunda información del movimiento basándose en la primera información del movimiento, donde la primera información del movimiento incluye el valor de índice del primer fotograma de referencia, la primera diferencia del vector de movimiento, y el primer indicador de predictor de vector de movimiento, y la segunda información del movimiento es información del movimiento del bloque de imágenes actual en la segunda dirección; y determinar muestras de predicción del bloque de imágenes actual basándose en la primera información del movimiento y en la segunda información del movimiento.
Según un quinto aspecto, se da a conocer un terminal. El terminal incluye uno o más procesadores, una memoria y una interfaz de comunicaciones. La memoria y la interfaz de comunicaciones se acoplan a uno o más procesadores. La memoria está configurada para almacenar código de programa informático. El código de programa informático incluye una instrucción. Cuando el uno o más procesadores ejecutan la instrucción, el terminal realiza el método de inter predicción bidireccional según cualquiera del primer aspecto o de las posibles implementaciones del primer aspecto, o realiza el método de inter predicción bidireccional según cualquiera del tercer aspecto o de las posibles implementaciones del tercer aspecto.
Según un sexto aspecto, se da a conocer un decodificador de vídeo, que incluye un medio de almacenamiento no volátil y una unidad central de procesamiento. El medio de almacenamiento no volátil almacena un programa ejecutable. La unidad central de procesamiento está conectada al medio de almacenamiento no volátil, y ejecuta el programa ejecutable para implementar el método de inter predicción bidireccional según cualquiera del primer aspecto o de las posibles implementaciones del primer aspecto, o el método de inter predicción bidireccional según cualquiera del tercer aspecto o de las posibles implementaciones del tercer aspecto.
Según un séptimo aspecto, se da a conocer un decodificador. El decodificador incluye el aparato de inter predicción bidireccional en el segundo aspecto y un módulo de reconstrucción, donde el módulo de reconstrucción está configurado para determinar los valores de muestra reconstruidos de un bloque de imágenes actual basándose en muestras de predicción obtenidas por el aparato de inter predicción bidireccional; o el decodificador incluye el aparato de inter predicción bidireccional en el cuarto aspecto y un módulo de reconstrucción, donde el módulo de reconstrucción está configurado para determinar los valores de muestra reconstruidos de un bloque de imágenes actual basándose en muestras de predicción obtenidas por el aparato de inter predicción bidireccional.
Según un octavo aspecto, se da a conocer un medio de almacenamiento legible por ordenador. El medio de almacenamiento legible por ordenador almacena una instrucción. Cuando la instrucción se ejecuta en el terminal en el quinto aspecto, el terminal está habilitado para realizar el método de inter predicción bidireccional según cualquiera del primer aspecto o las posibles implementaciones del primer aspecto, o realizar el método de inter predicción bidireccional según cualquiera del tercer aspecto o las posibles implementaciones del tercer aspecto.
Según un noveno aspecto, se da a conocer un producto de programa informático que incluye una instrucción. Cuando el producto de programa informático se ejecuta en el terminal en el quinto aspecto, el terminal está habilitado para realizar el método de inter predicción bidireccional según cualquiera del primer aspecto o las posibles implementaciones del primer aspecto, o realizar el método de inter predicción bidireccional según cualquiera del tercer aspecto o las posibles implementaciones del tercer aspecto.
En esta solicitud, un nombre del aparato de inter predicción no impone ninguna limitación a los dispositivos o módulos funcionales. En la implementación real, los dispositivos o los módulos funcionales pueden tener otros nombres. Siempre que las funciones de los dispositivos o los módulos funcionales sean similares a las de esta solicitud, los dispositivos o los módulos funcionales caen dentro del alcance de las reivindicaciones en esta solicitud y tecnologías equivalentes de la misma.
Para las descripciones específicas del quinto aspecto al noveno aspecto y las implementaciones del quinto aspecto al noveno aspecto, consulte las descripciones detalladas del primer aspecto y las implementaciones del primer aspecto o las descripciones detalladas del tercer aspecto y las implementaciones del tercer aspecto. Además, para los efectos beneficiosos del quinto aspecto al noveno aspecto y las implementaciones del quinto aspecto al noveno aspecto, consulte el análisis de los efectos beneficiosos del primer aspecto y las implementaciones del primer aspecto o el análisis de los efectos beneficiosos del tercer aspecto y las implementaciones del tercer aspecto. No se describirán nuevamente los detalles en esta invención.
Estos u otros aspectos de esta solicitud son más concisos y comprensibles en la siguiente descripción.
Breve descripción de los dibujos
La figura 1 es un diagrama estructural esquemático de un sistema de codificación de vídeo, según una realización de esta solicitud;
la figura 2 es un diagrama estructural esquemático de un codificador de vídeo, según una realización de esta solicitud;
la figura 3 es un diagrama estructural esquemático de un decodificador de vídeo, según una realización de esta solicitud.
la figura 4 es un diagrama de flujo esquemático de un método de inter predicción bidireccional, según una realización de esta solicitud;
la figura 5 es un diagrama estructural esquemático de un aparato de inter predicción bidireccional, según una realización de esta solicitud; y
la figura 6 es un diagrama estructural esquemático de un aparato de inter predicción bidireccional, según una realización de esta solicitud.
Descripción de las realizaciones
En la memoria descriptiva, las reivindicaciones y los dibujos adjuntos de la presente invención, los términos “primero”, “segundo”, “tercero”, “cuarto”, etc. pretenden distinguir entre diferentes objetos, pero no indican un orden particular.
En las realizaciones de esta solicitud, la expresión “de ejemplo” o “por ejemplo” se usa para representar que se proporciona un ejemplo, una ilustración o una descripción. Cualquier realización o esquema de diseño descrito como “de ejemplo” o “por ejemplo” en las realizaciones de esta solicitud no debería explicarse como que es más preferido o que tiene más ventajas que otra realización o esquema de diseño. Exactamente, el uso de la expresión “de ejemplo” o “por ejemplo”, o similar, pretende presentar un concepto relacionado de un modo específico.
Para facilitar la comprensión de las realizaciones de esta solicitud, los elementos relacionados en las realizaciones de esta solicitud se describen primero en el presente documento.
Codificación de imágenes: un proceso de compresión de un flujo de imagen en un flujo de bits.
Decodificación de imágenes: un proceso de restauración del flujo de bits a una imagen reconstruida según una regla de sintaxis específica y un método de procesamiento específico.
Actualmente, un proceso de codificación de imagen de vídeo es el siguiente: un codificador primero divide un fotograma de la imagen original en una pluralidad de partes que no se superponen entre sí, donde cada parte puede usarse como un bloque de imágenes. Luego, el codificador realiza operaciones tales como predicción, transformación y cuantificación sobre cada bloque de imágenes, para obtener un flujo de bits correspondiente al bloque de imágenes, donde la predicción se realiza para obtener un bloque de predicción del bloque de imágenes, de modo que solo se pueda codificar y transmitir una diferencia (o referida como un bloque residual o un bloque residual) entre el bloque de imágenes y el bloque de predicción del bloque de imágenes, para reducir los sobrecostes de transmisión. Finalmente, el codificador envía el flujo de bits correspondiente al bloque de imágenes, a un decodificador.
En consecuencia, después de recibir el flujo de bits, el decodificador realiza un proceso de decodificación de vídeo. Específicamente, el decodificador realiza operaciones tales como predicción, cuantificación inversa y transformación inversa sobre el flujo de bits recibida para obtener un bloque de imágenes reconstruido (o referido como un bloque de imágenes después de la reconstrucción). Este proceso se conoce como un proceso de reconstrucción de imágenes. Luego, el decodificador ensambla un bloque reconstruido de cada bloque de imágenes en la imagen original para obtener una imagen reconstruida de la imagen original, y reproduce la imagen reconstruida.
Una tecnología existente de codificación de imágenes de vídeo incluye intra predicción e inter predicción. La inter predicción es la predicción completada codificando un bloque de imágenes/decodificando un bloque de imágenes utilizando una correlación entre un fotograma actual y un fotograma de referencia del fotograma actual. El fotograma actual puede tener uno o más fotogramas de referencia. Específicamente, se genera un bloque de imágenes de predicción de un bloque de imágenes actual basándose en muestras en un fotograma de referencia del bloque de imágenes actual.
En general, el bloque de imágenes de predicción del bloque de imágenes actual puede generarse basándose en un solo bloque de imágenes de referencia, o el bloque de imágenes de predicción del bloque de imágenes actual puede generarse basándose en al menos dos bloques de imágenes de referencia. La generación del bloque de imágenes de predicción del bloque de imágenes actual basándose en un bloque de imágenes de referencia se conoce como predicción unidireccional, y la generación del bloque de imágenes de predicción del bloque de imágenes actual basándose en al menos dos bloques de imágenes de referencia se conoce como inter predicción bidireccional. Los al menos dos bloques de imágenes de referencia en la inter predicción bidireccional pueden ser de un mismo fotograma de referencia o de fotogramas de referencia diferentes. En otras palabras, una “dirección” en esta solicitud es una definición generalizada. Una dirección en esta solicitud corresponde a un bloque de imágenes de referencia. La siguiente primera dirección y segunda dirección corresponden a diferentes bloques de imágenes de referencia. Los dos bloques de imágenes de referencia pueden estar incluidos en un fotograma de referencia hacia adelante/fotograma de referencia hacia atrás del bloque de imágenes actual; o un bloque de imágenes de referencia puede estar incluido en un fotograma de referencia hacia adelante del bloque de imágenes actual, y el otro bloque de imágenes de referencia puede estar incluido en un fotograma de referencia hacia atrás del bloque de imágenes actual.
Opcionalmente, la inter predicción bidireccional puede ser la inter predicción realizada mediante el uso de una correlación entre un fotograma de vídeo actual y un fotograma de vídeo que se codifica y reproduce antes del fotograma de vídeo actual y una correlación entre el fotograma de vídeo actual y un fotograma de vídeo que se codifica antes del fotograma de vídeo actual y se reproduce después del fotograma de vídeo actual.
Se puede obtener que la inter predicción bidireccional incluye la inter predicción en dos direcciones, que generalmente se conoce como inter predicción hacia adelante e inter predicción hacia atrás. La inter predicción hacia adelante es la inter predicción realizada utilizando la correlación entre el fotograma de vídeo actual y el fotograma de vídeo que se codifica y se reproduce antes del fotograma de vídeo actual. La inter predicción hacia atrás es la inter predicción realizada utilizando la correlación entre el fotograma de vídeo actual y el fotograma de vídeo que se codifica antes del fotograma de vídeo actual y se reproduce después del fotograma de vídeo actual.
La inter predicción hacia adelante corresponde a una lista de fotogramas de referencia hacia adelante L0, y la inter predicción hacia atrás corresponde a una lista de fotogramas de referencia hacia atrás L1. Las dos listas de fotogramas de referencia pueden incluir una misma cantidad de fotogramas de referencia o diferentes cantidades de fotogramas de referencia.
La compensación de movimiento (Motion Compensation, MC) es un proceso de predecir el bloque de imágenes actual utilizando un bloque de imágenes de referencia.
En la mayoría de las estructuras de codificación, un flujo de vídeo incluye una serie de imágenes, una imagen es dividida en al menos un fragmento y cada fragmento es dividido aún más en bloques de imágenes. La codificación/decodificación de vídeo se realiza mediante un bloque de imágenes. El procesamiento de codificación/decodificación se puede realizar de izquierda a derecha y de arriba abajo fila por fila a partir de una posición de esquina superior izquierda de la imagen. En este caso, el bloque de imágenes puede ser un macro bloque (MB) en un estándar de codificación de vídeo H.264, o puede ser una unidad de codificación (Coding Unit, CU) en un estándar de codificación de vídeo de alta eficiencia (High Efficiency Video Coding, HEVC). Esto no se limita específicamente en las realizaciones de esta aplicación.
En esta solicitud, un bloque de imágenes que está siendo codificado/decodificado se denomina bloque de imágenes actual (bloque actual) ??? , y una imagen en la que se encuentra el bloque de imágenes actual se denomina fotograma actual.
En general, el fotograma actual puede ser un fotograma de predicción unidireccional (fotograma P), o puede ser un fotograma de predicción bidireccional (fotograma B). Cuando el fotograma actual es el fotograma P, el fotograma actual tiene una lista de fotogramas de referencia. Cuando el fotograma actual es el fotograma B, el fotograma actual tiene dos listas de fotogramas de referencia, y las dos listas generalmente se denominan L0 y L1 respectivamente. Cada lista de fotogramas de referencia incluye al menos un fotograma reconstruido que se utiliza como fotograma de referencia del fotograma actual. El fotograma de referencia se utiliza para proporcionar una muestra de referencia para la inter predicción del fotograma actual.
En el fotograma actual, un bloque de imágenes vecino (por ejemplo, en el lado izquierdo, superior o derecho del bloque actual) del bloque de imágenes actual puede haber sido codificado/decodificado, y se obtiene una imagen reconstruida. El bloque de imágenes vecino se conoce como el bloque de imágenes reconstruido. Información tal como un modo de codificación y una muestra reconstruida del bloque de imágenes reconstruido está disponible.
Un fotograma que ha sido codificado/decodificado antes de que el fotograma actual sea codificado/decodificado se denomina fotograma reconstruido.
Un vector de movimiento (Motion Vector, MV) es un parámetro importante en un proceso de inter predicción, y representa un desplazamiento espacial de un bloque de imágenes codificado, con respecto al bloque de imágenes actual. Por lo general, el vector de movimiento se puede obtener utilizando un método de estimación de movimiento (Motion Estimation, ME) tal como la búsqueda de movimiento. En una tecnología de inter predicción preliminar, el codificador transmite un vector de movimiento del bloque de imágenes actual en el flujo de bits, de modo que el decodificador reproduzca muestras de predicción del bloque de imágenes actual, para obtener un bloque reconstruido. Para mejorar adicionalmente la eficiencia de codificación, se da a conocer más adelante un método para codificar diferencialmente el vector de movimiento utilizando un vector de movimiento de referencia; para ser específicos, solo se codifica una diferencia del vector de movimiento (MVD).
Para permitir que el decodificador y el codificador utilicen un mismo bloque de imágenes de referencia, el codificador necesita enviar información del movimiento de cada bloque de imágenes, al decodificador, en un flujo de bits. Si el codificador codifica directamente un vector de movimiento de cada bloque de imágenes, se consume una gran cantidad de recursos de transmisión. Debido a que los vectores de movimiento de los bloques de imágenes espacialmente vecinos están fuertemente correlacionados, el vector de movimiento del bloque de imágenes actual se puede predecir basándose en un vector de movimiento de un bloque de imágenes vecino codificado. Un vector de movimiento obtenido a través de la predicción se conoce como MVP, y una diferencia entre el vector de movimiento del bloque de imágenes actual y el MVP se conoce como MVD.
En el estándar de codificación de vídeo H.264, la predicción de múltiples fotogramas de referencia se utiliza en un proceso de estimación de movimiento para mejorar la precisión de la predicción. Para ser específicos, se crea un búfer que almacena una pluralidad de fotogramas reconstruidos, y se realiza una búsqueda entre todos los fotogramas reconstruidos en el búfer, de un bloque de imágenes de referencia óptimo para la compensación de movimiento, para eliminar mejor la redundancia temporal. En el estándar de codificación de vídeo H.264, se utilizan dos búferes en la inter predicción: una lista de fotogramas de referencia 0 (lista de referencia 0) y una lista de fotogramas de referencia 1 (lista de referencia 1). Un fotograma de referencia en donde se encuentra un bloque de referencia óptimo en cada lista se marca con un valor de índice, a saber, ref_idx_l0 y ref_idx_l1. En cada lista de fotogramas de referencia, la información del movimiento de un bloque de imágenes de referencia incluye un valor de índice de fotograma de referencia (ref_idx_l0 o ref_idx_l1), un indicador de MVP y una MVD. El decodificador puede encontrar un bloque de imágenes de referencia correcto en un fotograma de referencia seleccionado basándose en el valor del índice de fotograma de referencia, el indicador de MVP y el MVD.
Actualmente, los modos de inter predicción utilizados con frecuencia en el estándar HEVC son un modo de predicción de vector de movimiento avanzada (Advanced MVP, AMVP), un modo de fusión y un modo de predicción de modelo de movimiento no traslacional.
En el modo de AMVP, el codificador construye una lista de vectores de movimiento candidatos utilizando un vector de movimiento de un bloque de imágenes codificado que es espacial o temporalmente adyacente al bloque de imágenes actual, y determina un vector de movimiento óptimo en la lista de vectores de movimiento candidatos como el MVP del bloque de imágenes actual basándose en un coste de distorsión de velocidad. Además, el codificador realiza una búsqueda de movimiento en un vecindario centrado en el MVP para obtener el vector de movimiento del bloque de imágenes actual. El codificador transmite un valor de índice (es decir, el indicador de MVP) del MVP en la lista de vectores de movimiento candidatos, el valor de índice de fotograma de referencia y el MVD, al decodificador.
En el modo de fusión, el codificador construye una lista de información del movimiento candidata mediante el uso de información del movimiento del bloque de imágenes codificado que es espacial o temporalmente adyacente al bloque de imágenes actual, y determina la información del movimiento óptima en la lista de información del movimiento candidata como información del movimiento del bloque de imágenes actual basándose en el coste de distorsión de velocidad. El codificador transmite un valor de índice de una posición de la información del movimiento óptima en la lista de información del movimiento candidata, al decodificador.
En el modo de predicción del modelo de movimiento no traslacional, el codificador y el decodificador derivan información del movimiento de todos los subbloques del bloque de imágenes actual utilizando un mismo modelo de movimiento, y realizan una compensación de movimiento basándose en la información del movimiento de todos los subbloques para obtener el bloque de imágenes de predicción. Esto mejora la eficiencia de la predicción. Un modelo de movimiento utilizado con frecuencia por el codificador y el decodificador es un modelo afín de 4 parámetros, un modelo de transformación afín de 6 parámetros o un modelo bilineal de 8 parámetros.
Por ejemplo, el modelo de transformación afín de 4 parámetros puede representarse utilizando vectores de movimiento de dos muestras y coordenadas de las dos muestras con respecto a una muestra en la esquina superior izquierda del bloque de imágenes actual. En este caso, una muestra utilizada para representar un parámetro de modelo de movimiento se denomina punto de control. Si la muestra en la esquina superior izquierda (0, 0) del bloque de imágenes actual y una muestra en la esquina superior derecha (W, 0) del bloque de imágenes actual son puntos de control, y los vectores de movimiento de las muestras en la esquina superior izquierda y la esquina superior derecha del bloque de imágenes actual son (vxa, vya)y (vx-i, vy-i) respectivamente, la información del movimiento de cada subbloque del bloque de imágenes actual se obtiene según la siguiente fórmula (1). En la siguiente fórmula (1), (x, y) son coordenadas del subbloque con respecto a la muestra en la esquina superior izquierda del bloque de imágenes actual, (vx, vy) es un vector de movimiento del subbloque, yWes el ancho del bloque de imágenes actual.
Por ejemplo, el modelo de transformación afín de 6 parámetros puede representarse utilizando vectores de movimiento de tres muestras y coordenadas de las tres muestras con respecto a una muestra en la esquina superior izquierda del bloque de imágenes actual. Si la muestra en la esquina superior izquierda (0, 0) del bloque de imágenes actual, la muestra en la esquina superior derecha (W, 0) del bloque de imágenes actual y una muestra en la esquina inferior izquierda (0,H)del bloque de imágenes actual son puntos de control, y los vectores de movimiento de las muestras en la esquina superior izquierda, la esquina superior derecha y la esquina inferior izquierda del bloque de imágenes actual son(vx0, vy0),(vxi, vyi) y(vx2 , vy2)respectivamente, la información del movimiento de cada subbloque del bloque de imágenes actual se obtiene según la siguiente fórmula (2). En la siguiente fórmula (2), (x, y) son las coordenadas del subbloque relativas a la muestra en la esquina superior izquierda del bloque de imágenes actual, (vx, vy) es el vector de movimiento del subbloque, W y H son el ancho y la altura del bloque de imágenes actual respectivamente.
Por ejemplo, el modelo bilineal de 8 parámetros se puede representar utilizando vectores de movimiento de cuatro muestras y coordenadas de las cuatro muestras relativas a la muestra en la esquina superior izquierda del bloque de imágenes actual. Si la muestra en la esquina superior izquierda (0, 0) del bloque de imágenes actual, la muestra en la esquina superior derecha(W,0) del bloque de imágenes actual, la muestra en la esquina inferior izquierda (0,H)del bloque de imágenes actual y una muestra en la esquina inferior derecha(W, H)del bloque de imágenes actual son puntos de control, y los vectores de movimiento de las muestras en la esquina superior izquierda, la esquina superior derecha, la esquina inferior izquierda y la esquina inferior derecha del bloque de imágenes actual son (vx0, vy0), (vxi, vyi), (vx2, vy2) y (vx3, vy3) respectivamente, la información del movimiento de cada subbloque del bloque de imágenes actual se obtiene según la siguiente fórmula (3). En la siguiente fórmula (3), (x, y) son las coordenadas del subbloque relativas a la muestra en la esquina superior izquierda del bloque de imágenes actual, (vx, vy) es el vector de movimiento del subbloque, yWyHson el ancho y la altura del bloque de imágenes actual respectivamente.
Se puede obtener fácilmente que, en cualquiera de los modos de inter predicción anteriores, si la inter predicción es una inter predicción bidireccional, el codificador necesita enviar información del movimiento de cada bloque de imágenes, en cada dirección, al decodificador. En consecuencia, la información del movimiento ocupa una cantidad relativamente grande de recursos de transmisión. Esto reduce la utilización efectiva de los recursos de transmisión, una velocidad de transmisión y la eficiencia de compresión de codificación.
Para resolver el problema anterior, esta solicitud da a conocer un método de inter predicción bidireccional. En la inter predicción bidireccional, un codificador envía información del movimiento de un bloque de imágenes actual, en una primera dirección, a un decodificador y, después de recibir la información del movimiento del bloque de imágenes actual en la primera dirección, el decodificador calcula la información del movimiento del bloque de imágenes actual en una segunda dirección, basándose en la información del movimiento del bloque de imágenes actual en la primera dirección. De esta manera, las muestras de predicción del bloque de imágenes actual se pueden calcular basándose en la información del movimiento del bloque de imágenes actual en la primera dirección y en la información del movimiento del bloque de imágenes actual en la segunda dirección.
El método de inter predicción bidireccional dado a conocer en esta solicitud puede ser realizado por un aparato de inter predicción bidireccional, un aparato de codificación de vídeo, un códec de vídeo u otro dispositivo que tenga una función de codificación de vídeo.
El método de inter predicción bidireccional dado a conocer en esta solicitud es aplicable a un sistema de codificación de vídeo. En el sistema de codificación de vídeo, un codificador de vídeo 100 y un decodificador de vídeo 200 están configurados para calcular la información del movimiento de un bloque de imágenes actual según los ejemplos del método de inter predicción bidireccional dado a conocer en esta solicitud. Específicamente, la información del movimiento del bloque de imágenes actual en una segunda dirección se calcula basándose en la información del movimiento del bloque de imágenes actual en una primera dirección, de modo que las muestras de predicción del bloque de imágenes actual se determinen basándose en la información del movimiento del bloque de imágenes actual en la primera dirección y en la información del movimiento del bloque de imágenes actual en la segunda dirección. De esta manera, solo la información del movimiento del bloque de imágenes actual en la primera dirección necesita ser transmitida entre el codificador de vídeo 100 y el codificador de vídeo 200. Esto mejora de manera efectiva la utilización de recursos de transmisión y la eficiencia de la compresión de codificación.
La figura 1 muestra la estructura de un sistema de codificación de vídeo 1. Tal como se muestra en la figura 1, el sistema de codificación de vídeo 1 incluye un aparato de origen 10 y un aparato de destino 20. El aparato de origen 10 genera datos de vídeo codificados. El aparato de origen 10 también puede denominarse aparato de codificación de vídeo o dispositivo de codificación de vídeo. El aparato de destino 20 puede decodificar los datos de vídeo codificados generados por el aparato de origen 10. El aparato de destino 20 puede denominarse aparato de decodificación de vídeo o dispositivo de decodificación de vídeo. El aparato de origen 10 y/o el aparato de destino 20 pueden incluir al menos un procesador y una memoria acoplada al al menos un procesador. La memoria puede incluir, entre otros, una memoria de solo lectura (Read Only Memory, ROM), una memoria de acceso aleatorio (Random Access Memory, RAM), una memoria de solo lectura programable borrable eléctricamente (Electrically Erasable Programmable Read-Only Memory, EEPROM), una memoria flash o cualquier otro medio que pueda ser configurado para almacenar el código de programa requerido en forma de una instrucción o una estructura de datos a la que puede acceder un ordenador. Esto no está limitado específicamente en esta solicitud.
El aparato de origen 10 y el aparato de destino 20 pueden incluir diversos aparatos, incluyendo un ordenador de escritorio, un aparato informático móvil, un bloc de notas (notebook) (por ejemplo, un ordenador portátil), un ordenador de tipo tableta, un decodificador de televisión, un teléfono de mano, tal como un teléfono “inteligente”, un televisor, una cámara, un aparato de visualización, un reproductor de medios digital, una consola de videojuegos, un ordenador montado en un vehículo o un aparato similar.
El aparato de destino 20 puede recibir los datos de vídeo codificados del aparato de origen 10 sobre un enlace 30. El enlace 30 puede incluir uno o más medios y/o aparatos que pueden transferir los datos de vídeo codificados desde el aparato de origen 10 al aparato de destino 20. En un ejemplo, el enlace 30 puede incluir uno o más medios de comunicación que permiten que el aparato de origen 10 transmita directamente los datos de vídeo codificados al aparato de destino 20 en tiempo real. En este ejemplo, el aparato de origen 10 puede modular los datos de vídeo codificados según un estándar de comunicaciones (por ejemplo, un protocolo de comunicaciones inalámbricas), y puede transmitir datos de vídeo modulados al aparato de destino 20. El uno o más medios de comunicación puede incluir cualquier medio de comunicación inalámbrica o por cable, por ejemplo, un espectro de radiofrecuencia (RF) o uno o más cables físicos de transmisión. El uno o más medios de comunicación pueden constituir una parte de una red basada en paquetes, y la red basada en paquetes es, por ejemplo, una red de área local, una red de área amplia o una red global (por ejemplo, Internet). El uno o más medios de comunicación pueden incluir un enrutador, un conmutador, una estación base u otro dispositivo que implemente la comunicación del aparato de origen 10 al aparato de destino 20.
En otro ejemplo, los datos de vídeo codificados pueden ser enviados a un aparato de almacenamiento 40 a través de una interfaz de salida 140. De manera similar, se puede acceder a los datos codificados desde el dispositivo de almacenamiento 40 a través de una interfaz de entrada 240. El aparato de almacenamiento 40 puede incluir una pluralidad de tipos de medios de almacenamiento de datos localmente accesibles, tales como un disco Blu-ray, un disco de vídeo digital (Digital Video Disc, DVD) de alta densidad, un disco compacto de memoria de solo lectura (Compact Disc - ROM, CD-ROM), una memoria flash, u otro medio de almacenamiento digital apropiado configurado para almacenar los datos de vídeo codificados.
En otro ejemplo, el aparato de almacenamiento 40 puede corresponder a un servidor de archivos, u otro aparato de almacenamiento intermedio que almacene los datos de vídeo codificados generados por el aparato de origen 10. En este ejemplo, el aparato de destino 20 puede obtener datos de vídeo almacenados del aparato de almacenamiento 40 a través de transmisión en continuo o descarga. El servidor de archivos puede ser cualquier tipo de servidor capaz de almacenar datos de vídeo codificados y transmitir esos datos de vídeo codificados al aparato de destino 20. Por ejemplo, el servidor de archivos puede incluir un servidor web (por ejemplo, utilizado para un sitio web), un servidor de protocolo de transferencia de archivos (File Transfer Protocol, FTP), un aparato de almacenamiento conectado a la red (Network Attached Storage, NAS) o una unidad de disco local.
El aparato de destino 20 puede acceder a los datos de vídeo codificados a través de cualquier conexión de datos estándar (por ejemplo, una conexión a Internet). Un tipo de ejemplo de la conexión de datos incluye un canal inalámbrico o una conexión por cable (por ejemplo, un módem de cable) que sea adecuado para acceder a los datos de vídeo codificados almacenados en el servidor de archivos, o una combinación de los mismos. Los datos de vídeo codificados pueden ser transmitidos desde el servidor de archivos en un modo de transmisión en continuo, a través de descarga, o a través de una combinación de los mismos.
El método de inter predicción bidireccional en esta solicitud no está limitado a un escenario de aplicación inalámbrico. Por ejemplo, el método de inter predicción en esta solicitud se puede aplicar a la codificación de vídeo para soportar una pluralidad de aplicaciones multimedia tales como las siguientes aplicaciones: difusión de televisión por el aire, transmisión de televisión por cable, transmisión de televisión vía satélite, transmisión de vídeo en continuo (streaming)(por ejemplo, a través de Internet), codificación de datos de vídeo almacenados en un medio de almacenamiento de datos, decodificación de datos de vídeo almacenados en un medio de almacenamiento de datos u otra aplicación. En algunos ejemplos, el sistema de codificación de vídeo 1 puede estar configurado para soportar transmisión de vídeo unidireccional o bidireccional, para soportar aplicaciones tales como transmisión de vídeo en continuo, reproducción de vídeo, difusión de vídeo y/o videotelefonía.
Cabe señalar que el sistema de codificación de vídeo 1 que se muestra en la figura 1 es simplemente un ejemplo del sistema de codificación de vídeo, y no limita el sistema de codificación de vídeo en esta solicitud. El método de inter predicción dado a conocer en esta solicitud puede ser además aplicable a un escenario en el cual no hay comunicación de datos entre un aparato de codificación y un aparato de decodificación. En otros ejemplos, los datos de vídeo a codificar o los datos de vídeo codificados pueden ser recuperados de una memoria local, o pueden ser transmitidos en el modo de transmisión en continuo, o similar. El aparato de codificación de vídeo puede codificar los datos de vídeo a codificar y almacenar los datos de vídeo codificados, en la memoria. El aparato de decodificación de vídeo también puede obtener los datos de vídeo codificados, de la memoria, y decodificar los datos de vídeo codificados.
En la figura 1, el aparato de origen 10 incluye una fuente de vídeo 101, un codificador de vídeo 102 y una interfaz de salida 103. En algunos ejemplos, la interfaz de salida 103 puede incluir un regulador/demodulador (módem) y/o un transmisor. La fuente de vídeo 101 puede incluir un aparato de captura de vídeo (por ejemplo, una cámara), un archivo de vídeo que incluye datos de vídeo previamente capturados, una interfaz de entrada de vídeo para recibir datos de vídeo de un proveedor de contenido de vídeo, y/o un sistema de gráficos por ordenador para generar datos de vídeo, o una combinación de las fuentes de datos de vídeo anteriores.
El codificador de vídeo 102 puede codificar datos de vídeo que son de la fuente de vídeo 101. En algunos ejemplos, el aparato de origen 10 transmite directamente los datos de vídeo codificados al aparato de destino 20 a través de la interfaz de salida 103. En otros ejemplos, los datos de vídeo codificados se pueden almacenar alternativamente en el aparato de almacenamiento 40, de modo que el aparato de destino 20 acceda posteriormente a los datos de vídeo codificados para decodificación y/o reproducción.
En un ejemplo de la figura 1, el aparato de destino 20 incluye un aparato de visualización 201, un decodificador de vídeo 202 y una interfaz de entrada 203. En algunos ejemplos, la interfaz de entrada 203 incluye un receptor y/o un módem. La interfaz de entrada 203 puede recibir los datos de vídeo codificados sobre el enlace 30 y/o desde el aparato de almacenamiento 40. El aparato de visualización 201 puede estar integrado con el aparato de destino 20 o puede estar dispuesto fuera del aparato de destino 20. Por lo general, el aparato de visualización 201 muestra datos de vídeo decodificados. El aparato de visualización 201 puede incluir una pluralidad de tipos de aparatos de visualización, por ejemplo, una pantalla de cristal líquido, una pantalla de plasma, una pantalla de diodo emisor de luz orgánico, o un aparato de visualización de otro tipo.
Opcionalmente, el codificador de vídeo 102 y el decodificador de vídeo 202 pueden estar integrados respectivamente con un codificador de audio y un decodificador de audio, y pueden incluir una unidad multiplexora-demultiplexora adecuada u otro hardware y software, para codificar tanto un audio como un vídeo en un flujo de datos común o en flujos de datos separados.
El codificador de vídeo 102 y el decodificador de vídeo 202 pueden incluir al menos un microprocesador, un procesador de señal digital (Digital Signal Processor, DSP), un circuito integrado específico de la aplicación (Application-Specific Integrated Circuit, ASIC), una matriz de puertas programables en campo (Field Programmable Gate Array, FPGA), lógica discreta, hardware o cualquier combinación de los mismos. Si el método de inter predicción bidireccional dado a conocer en esta solicitud se implementa mediante el uso de software, una instrucción utilizada para el software puede almacenarse en un medio de almacenamiento no volátil legible por ordenador apropiado, y al menos un procesador puede ser utilizado para ejecutar la instrucción en el hardware para implementar esta solicitud. Cualquiera de los contenidos anteriores (incluido el hardware, el software, una combinación del hardware y el software, y similares) puede considerarse como el al menos un procesador. El codificador de vídeo 102 puede estar incluido en un codificador, el decodificador de vídeo 202 puede estar incluido en un decodificador, y el codificador o el decodificador puede ser una parte de un codificador/decodificador combinado (códec) en un aparato correspondiente.
El codificador de vídeo 102 y el decodificador de vídeo 202 en esta solicitud pueden realizar operaciones según un estándar de compresión de vídeo (por ejemplo, HEVC), o pueden realizar operaciones según otro estándar de la industria. Esto no está limitado específicamente en esta solicitud.
El codificador de vídeo 102 está configurado para: realizar una estimación de movimiento bidireccional en un bloque de imágenes actual, para determinar la información del movimiento del bloque de imágenes actual en una primera dirección, y calcular la información del movimiento del bloque de imágenes actual en una segunda dirección basándose en la información del movimiento del bloque de imágenes actual en la primera dirección. De esta manera, el codificador de vídeo 102 determina un bloque de imágenes de predicción del bloque de imágenes actual basándose en la información del movimiento del bloque de imágenes actual en la primera dirección y en la información del movimiento del bloque de imágenes actual en la segunda dirección. Además, el codificador de vídeo 102 realiza operaciones tales como transformación y cuantificación sobre un residuo entre el bloque de imágenes actual y el bloque de imágenes de predicción del bloque de imágenes actual, para generar un flujo de bits, y envía el flujo de bits al decodificador de vídeo 202. El flujo de bits incluye la información del movimiento del bloque de imágenes actual en la primera dirección, y la información de indicación que se utiliza para indicar determinar la segunda información del movimiento basándose en la primera información del movimiento. La información de indicación puede representarse utilizando diferentes identificadores. Para obtener un método para representar la información de la indicación, consulte las siguientes descripciones.
Opcionalmente, un método utilizado por el codificador de vídeo 102 para calcular la información del movimiento del bloque de imágenes actual en la segunda dirección basándose en la información del movimiento del bloque de imágenes actual en la primera dirección puede ser: el codificador de vídeo 102 determina un vector de movimiento del bloque de imágenes actual en la segunda dirección basándose en un vector de movimiento del bloque de imágenes actual en la primera dirección; o el codificador de vídeo 102 determina una diferencia del vector de movimiento del bloque de imágenes actual en la segunda dirección basándose en una diferencia del vector de movimiento del bloque de imágenes actual en la primera dirección, y determina un vector de movimiento del bloque de imágenes actual en la segunda dirección basándose en la diferencia del vector de movimiento del bloque de imágenes actual en la segunda dirección.
Véase la siguiente figura 4. El decodificador de vídeo 202 está configurado para: obtener el flujo de bits, y analizar el flujo de bits para obtener la información de indicación utilizada para indicar determinar la segunda información del movimiento basándose en la primera información del movimiento (S400), en otras palabras, para determinar derivar y calcular, basándose en la información del movimiento en una dirección, la información del movimiento en otra dirección, donde la primera información del movimiento es la información del movimiento del bloque de imágenes actual en la primera dirección, la segunda información del movimiento es la información del movimiento del bloque de imágenes actual en la segunda dirección, y la primera dirección y la segunda dirección, en este caso, son diferentes; obtener la primera información del movimiento (S401); determinar la segunda información del movimiento basándose en la primera información del movimiento obtenida (S402); y determinar muestras de predicción del bloque de imágenes actual basándose en la información del movimiento y en la segunda información del movimiento (S403).
Un método utilizado por el decodificador de vídeo 202 para calcular la información del movimiento del bloque de imágenes actual en la segunda dirección basándose en la información del movimiento del bloque de imágenes actual en la primera dirección puede ser: el decodificador de vídeo 202 determina el vector de movimiento del bloque de imágenes actual en la segunda dirección basándose en el vector de movimiento del bloque de imágenes actual en la primera dirección; o el decodificador de vídeo 202 determina la diferencia del vector de movimiento del bloque de imágenes actual en la segunda dirección basándose en la diferencia del vector de movimiento del bloque de imágenes actual en la primera dirección, y determina el vector de movimiento del bloque de imágenes actual en la segunda dirección basándose en la diferencia del vector de movimiento del bloque de imágenes actual en la segunda dirección y en el vector de movimiento predicho del bloque de imágenes actual en la segunda dirección.
La figura 2 es un diagrama estructural esquemático del codificador de vídeo 102, según una realización de esta solicitud. Tal como se muestra en la figura 2, el codificador de vídeo 102 está configurado para enviar un vídeo a una entidad de post-procesamiento 41. La entidad de post-procesamiento 41 representa un ejemplo de una entidad de vídeo capaz de procesar los datos de vídeo codificados que son del codificador de vídeo 102, por ejemplo, un elemento de red consciente de medios (Media Aware Network Element, MANE) o un aparato de empalme/un aparato de edición. En algunos casos, la entidad de post-procesamiento 41 puede ser un ejemplo de una entidad de red. En algunos sistemas de codificación de vídeo, la entidad de post-procesamiento 41 y el codificador de vídeo 102 pueden ser componentes de aparatos separados. En otros casos, las funciones descritas con respecto a la entidad de post-procesamiento 41 pueden ser realizadas por un mismo aparato que incluye el codificador de vídeo 102. En un ejemplo, la entidad de post-procesamiento 41 es un ejemplo del aparato de almacenamiento 40 en la figura 1.
El codificador de vídeo 102 puede derivar y calcular la información del movimiento del bloque de imágenes actual en la segunda dirección basándose en la información del movimiento del bloque de imágenes actual en la primera dirección, y además determinar el bloque de imágenes de predicción del bloque de imágenes actual basándose en la información del movimiento del bloque de imágenes actual en la primera dirección y en la información del movimiento del bloque de imágenes actual en la segunda dirección, para completar aún más la codificación inter predictiva bidireccional.
Tal como se muestra en la figura 2, el codificador de vídeo 102 incluye un transformador 301, un cuantificador 302, un codificador por entropía 303, un filtro 306, una memoria 307, una unidad de procesamiento de predicción 308 y un sumador 312. La unidad de procesamiento de predicción 308 incluye un intra-predictor 309 y un inter-predictor 310. Para reconstruir un bloque de imágenes, el codificador de vídeo 102 incluye además un cuantificador inverso 304, un transformador inverso 305 y un sumador 311. El filtro 306 se especifica para representar uno o más filtros de bucle, por ejemplo, un filtro de desbloqueo, un filtro de bucle adaptativo y un filtro de desplazamiento adaptativo de muestra.
La memoria 307 puede almacenar datos de vídeo codificados por un componente del codificador de vídeo 102. Los datos de vídeo almacenados en la memoria 307 pueden obtenerse de la fuente de vídeo 101. La memoria 307 puede ser una memoria de imagen de referencia que almacena datos de vídeo de referencia utilizados por el codificador de vídeo 102 para codificar los datos de vídeo en un modo de intra o inter codificación. La memoria 307 puede ser una memoria de acceso aleatorio dinámica (Dynamic RAM, DRAM) que incluye una DRAM síncrona (Synchronous DRAM, SDRAM), una RAM magnetorresistiva (Magnetoresistive RAM, MRAM), una RAM resistiva (RRAM) o un aparato de memoria de otro tipo.
El codificador de vídeo 102 recibe datos de vídeo y almacena los datos de vídeo en una memoria de datos de vídeo. Una unidad de división divide los datos de vídeo en varios bloques de imágenes, y estos bloques de imágenes se pueden dividir en bloques más pequeños, por ejemplo, división de bloques de imágenes basándose en una estructura de árbol cuádruple o una estructura de árbol binario. La división puede incluir además la división en segmentos, mosaicos u otras unidades más grandes. El codificador de vídeo 102 es normalmente un componente para codificar un bloque de imágenes en un segmento de vídeo a codificar. El segmento se puede dividir en una pluralidad de bloques de imágenes (y se puede dividir en conjuntos de bloques de imágenes que se denominan mosaicos).
El intra-predictor 309 en la unidad de procesamiento de predicción 308 puede realizar codificación intrapredictiva en el bloque de imágenes actual con respecto a uno o más bloques de imágenes vecinos en un fotograma o segmento que es el mismo que el del bloque de imágenes actual, para eliminar la redundancia espacial. El inter predictor 310 en la unidad de procesamiento de predicción 308 puede realizar codificación inter predictiva en el bloque de imágenes actual con respecto a uno o más bloques de imágenes de predicción en una o más imágenes de referencia, para eliminar la redundancia temporal.
La unidad de procesamiento de predicción 308 puede proporcionar bloques de imágenes intra-codificados e inter-codificados obtenidos para el sumador 310 para generar un bloque residual, y proporcionar el bloque residual al sumador 309 para reconstruir un bloque codificado utilizado como una imagen de referencia.
Después de que la unidad de procesamiento de predicción 308 genera el bloque de imágenes de predicción del bloque de imágenes actual por medio de inter predicción e intra predicción, el codificador de vídeo 102 genera el bloque de imágenes residual restando el bloque de imágenes de predicción, del bloque de imágenes actual a codificar. El sumador 312 representa uno o más componentes que realizan esta operación de resta. Los datos de vídeo residuales en el bloque residual se pueden incluir en una o más unidades de transformación (T ransform Unit, TU) y ser aplicados al transformador 301. El transformador 301 transforma los datos de vídeo residual en un coeficiente de transformación residual por medio de transformaciones tales como transformada del coseno discreta (Discrete Cosine Transform, DCT) o transformadas conceptualmente similares. El transformador 301 puede convertir los datos de vídeo residuales de un dominio del valor de muestra en un dominio de la transformada, por ejemplo, un dominio de la frecuencia.
El transformador 301 puede enviar el coeficiente de transformación obtenido al cuantificador 302. El cuantificador 302 cuantifica los coeficientes de transformación para reducir aún más la velocidad de bits. En algunos ejemplos, el cuantificador 302 puede escanear además una matriz que incluye un coeficiente de transformación cuantificado. Alternativamente, el codificador por entropía 303 puede realizar un escaneo.
Después de la cuantificación, el codificador por entropía 303 realiza la codificación por entropía sobre el coeficiente de transformación cuantificado. Por ejemplo, el codificador por entropía 303 puede realizar codificación de longitud variable adaptativa al contexto (Context-Adaptive Variable-Length Coding, CAVLC), codificación aritmética binaria adaptativa al contexto (Context-Adaptive Binary Arithmetic Coding, CABAC) u otro método o tecnología de codificación por entropía. Después de que el codificador por entropía 303 realiza la codificación por entropía, se puede enviar un flujo de bits codificado al decodificador de vídeo 202, o se puede archivar para el envío posterior o la recuperación posterior por el decodificador de vídeo 202. El codificador por entropía 303 puede además realizar codificación por entropía sobre un elemento sintáctico del bloque de imágenes actual a codificar.
El cuantificador inverso 304 y el transformador inverso 305, respectivamente, realizan la cuantificación inversa y la transformación inversa, para reconstruir el bloque residual en el dominio de la muestra, por ejemplo, para ser posteriormente utilizado como un bloque de referencia de la imagen de referencia. El sumador 311 agrega un bloque residual reconstruido al bloque de imágenes de predicción generado por el inter-predictor 310 o el intra-predictor 309, para generar un bloque de imágenes reconstruido. Se puede obtener un bloque de imágenes de predicción de un bloque de imágenes procesando (por ejemplo, interpolando) un bloque de imágenes de referencia del bloque de imágenes.
Debe entenderse que se pueden utilizar otras variantes estructurales del codificador de vídeo 102 para codificar un flujo de vídeo. Por ejemplo, para algunos bloques de imágenes o fotogramas de imagen, el codificador de vídeo 102 puede cuantificar directamente una señal residual y, en consecuencia, no se requiere el procesamiento por el transformador 301 y por el transformador inverso 305. Alternativamente, para algunos bloques de imágenes o fotogramas de imagen, el codificador de vídeo 102 no genera datos residuales y, en consecuencia, no se requiere el procesamiento por el transformador 301, el cuantificador 302, el cuantificador inverso 304 y el transformador inverso 305. Alternativamente, el codificador de vídeo 102 puede almacenar directamente el bloque de imágenes reconstruido como el bloque de referencia, y no se requiere el procesamiento por el filtro 306. Alternativamente, el cuantificador 302 y el cuantificador inverso 304 en el codificador de vídeo 102 pueden combinarse.
La figura 3 es un diagrama estructural esquemático del decodificador de vídeo 202, según una realización de esta solicitud. Tal como se muestra en la figura 3, el decodificador de vídeo 202 incluye un decodificador por entropía 401, un cuantificador inverso 402, un transformador inverso 403, un filtro 404, una memoria 405, una unidad de procesamiento de predicción 406 y un sumador 409. La unidad de procesamiento de predicción 406 incluye un intra-predictor 407 y un inter-predictor 408. En algunos ejemplos, el decodificador de vídeo 202 puede realizar un proceso de decodificación que es aproximadamente inverso al proceso de codificación descrito con respecto al codificador de vídeo 102 en la figura 2.
En el proceso de decodificación, el decodificador de vídeo 202 recibe el flujo de bits del codificador de vídeo 102. El decodificador de vídeo 202 puede recibir datos de vídeo de una entidad de red 42, y opcionalmente, puede almacenar adicionalmente los datos de vídeo en una memoria de datos de vídeo (que no se muestra en la figura). La memoria de datos de vídeo puede almacenar datos de vídeo que van a ser decodificados por un componente del decodificador de vídeo 202, por ejemplo, el flujo de bits codificado. Los datos de vídeo almacenados en la memoria de datos de vídeo se pueden obtener, por ejemplo, de una fuente de vídeo local tal como el aparato de almacenamiento 40 o una cámara por medio de comunicación de red cableada o inalámbrica, o accediendo a un medio físico de almacenamiento de datos. Aunque la memoria de datos de vídeo no se muestra en la figura 3, la memoria de datos de vídeo y la memoria 405 pueden ser una misma memoria, o pueden ser memorias configuradas por separado. La memoria de datos de vídeo y la memoria 405 cada una pueden estar constituidas por cualquiera de una pluralidad de tipos de aparatos de memoria, por ejemplo, una memoria de acceso aleatorio dinámica (DRAM) que incluye una DRAM síncrona (SDRAM), una RAM magnetorresistiva (MRAM), una RAM resistiva (RRAM), o un aparato de memoria de otro tipo. En diversos ejemplos, la memoria de datos de vídeo puede estar integrada en un chip junto con otros componentes del decodificador de vídeo 202, o puede estar dispuesta fuera del chip con respecto a esos componentes.
La entidad de red 42 puede ser, por ejemplo, un servidor, un MANE, un editor/empalmador de vídeo u otro aparato similar, configurado para implementar una o más de las tecnologías descritas anteriormente. La entidad de red 42 puede o no incluir un codificador de vídeo, por ejemplo, el codificador de vídeo 102. Antes de que la entidad de red 42 envíe el flujo de bits al decodificador de vídeo 202, la entidad de red 42 puede implementar una parte de las tecnologías descritas en esta solicitud. En algunos sistemas de decodificación de vídeo, la entidad de red 42 y el decodificador de vídeo 202 pueden ser componentes de aparatos separados. En otros casos, las funciones descritas con respecto a la entidad de red 42 pueden ser realizadas por un mismo aparato que incluye el decodificador de vídeo 202. En algunos casos, la entidad de red 42 puede ser un ejemplo del aparato de almacenamiento 40 en la figura 1.
El decodificador por entropía 401 del decodificador de vídeo 202 realiza la decodificación por entropía en el flujo de bits para generar un coeficiente cuantificado y algunos elementos sintácticos. El decodificador por entropía 401 reenvía los elementos sintácticos al filtro 404. El decodificador de vídeo 202 puede recibir elementos sintácticos/un elemento sintáctico en un nivel de segmento de vídeo y/o un nivel de bloque de imágenes. En esta solicitud, en un ejemplo, el elemento sintáctico en el presente documento puede incluir información de indicación relacionada con el bloque de imágenes actual, y la información de indicación se utiliza para indicar determinar la segunda información del movimiento basándose en la primera información del movimiento. Además, en algunos ejemplos, el codificador de vídeo 102 puede enviar una señal para notificar un elemento sintáctico específico que indica si se determina la segunda información del movimiento basándose en la primera información del movimiento.
El cuantificador inverso 402 realiza la cuantificación inversa en, en otras palabras, descuantifica, el coeficiente de transformación cuantificado proporcionado en el flujo de bits y decodificado por el decodificador por entropía 401. Un proceso de cuantificación inversa puede incluir: determinar un grado de cuantificación a aplicar mediante el uso de un parámetro de cuantificación calculado por el codificador de vídeo 102 para cada bloque de imágenes en el segmento de vídeo y, de manera similar, determinar un grado de cuantificación inversa a aplicar. El transformador inverso 403 realiza la transformación inversa, por ejemplo, DCT inversa, transformación entera inversa, o un proceso de transformación inversa conceptualmente similar, sobre el coeficiente de transformación para generar un bloque residual del dominio de la muestra.
Después de que la unidad de procesamiento de predicción 406 genera el bloque de imágenes de predicción para el bloque de imágenes actual o un bloque de imágenes de predicción para un subbloque del bloque de imágenes actual, el decodificador de vídeo 202 suma el bloque residual del transformador inverso 403 y el bloque de imágenes de predicción correspondiente generado por la unidad de procesamiento de predicción 406, para obtener un bloque reconstruido, en otras palabras, un bloque de imágenes decodificado. El sumador 409 (que también se conoce como reconstructor 409) representa un componente que realiza esta operación de suma. Cuando sea necesario, un filtro (en un bucle de decodificación o después de un bucle de decodificación) se puede usar además para suavizar las muestras, o la calidad de vídeo se puede mejorar de otra manera. El filtro 404 puede ser uno o más filtros de bucle, por ejemplo, un filtro de desbloqueo, un filtro de bucle adaptativo (Adaptive Loop Filter, ALF) y un filtro de desplazamiento adaptativo de muestra (Sample Adaptive Offset, SAO).
Debe entenderse que se pueden utilizar otras variantes estructurales del decodificador de vídeo 202 para decodificar el flujo de bits. Por ejemplo, para algunos bloques de imágenes o fotogramas de imagen, el decodificador por entropía 401 del decodificador de vídeo 202 no obtiene el coeficiente cuantificado por medio de la decodificación y, en consecuencia, no se requiere el procesamiento por el cuantificador inverso 402 y el transformador inverso 403. Por ejemplo, el cuantificador inverso 402 y el transformador inverso 403 en el decodificador de vídeo 202 pueden combinarse.
Basado en el sistema de codificación de video 1 mostrado en la figura 1, el codificador de video 102 mostrado en la figura 2, y el decodificador de video 202 mostrado en la figura 3, lo siguiente describe en detalle el método de inter predicción bidireccional provisto en esta aplicación.
La figura 4 es un diagrama de flujo esquemático de un método de predicción bidireccional inter según una realización de esta aplicación. El método mostrado en la figura 4 se realiza mediante un aparato de inter predicción bidireccional. El aparato de inter predicción bidireccional puede ser el decodificador de vídeo 202 en la figura 1. La figura 4 se describe utilizando un ejemplo en donde el aparato de inter predicción bidireccional es el decodificador de vídeo 202.
Tal como se muestra en la figura 4, el método de inter predicción bidireccional en esta realización de esta solicitud puede incluir las siguientes etapas.
S400: El decodificador de vídeo 202 analiza un flujo de bits obtenido y obtiene la información de indicación.
Opcionalmente, el decodificador de vídeo 202 analiza el flujo de bits y determina, basándose en un valor de un elemento sintáctico en el flujo de bits, un modo de inter predicción utilizado para realizar la inter predicción en un bloque de imágenes actual en un fotograma actual. Cuando el modo de inter predicción es un modo de inter predicción bidireccional, el decodificador de vídeo 202 obtiene la información de indicación.
El decodificador de vídeo 202 puede recibir el flujo de bits codificado enviado por el codificador de vídeo 102, o puede obtener el flujo de bits codificado de un aparato de almacenamiento 40.
Opcionalmente, el decodificador de vídeo 202 en esta realización de esta solicitud determina, basándose en un valor de un elemento sintáctico inter_pred_idc, el modo de inter predicción utilizado para realizar la inter predicción en el bloque de imágenes actual en el fotograma actual. Se puede obtener de la descripción anterior que la inter predicción incluye la inter predicción unidireccional y la inter predicción bidireccional. Opcionalmente, cuando el valor del elemento sintáctico inter_pred_idc es 0, el decodificador de vídeo 202 determina que el modo de inter predicción utilizado para realizar la inter predicción en el bloque de imágenes actual en el fotograma actual es la inter predicción hacia adelante. Cuando el valor del elemento sintáctico inter_pred_idc es 1, el decodificador de vídeo 202 determina que el modo de inter predicción utilizado para realizar la inter predicción en el bloque de imágenes actual en el fotograma actual es la inter predicción hacia atrás. Cuando el valor del elemento sintáctico inter_pred_idc es 2, el decodificador de vídeo 202 determina que el modo de inter predicción utilizado para realizar la inter predicción en el bloque de imágenes actual en el fotograma actual es la inter predicción bidireccional.
Opcionalmente, después de determinar que el valor del elemento sintáctico inter_pred_idc es 2, el decodificador de vídeo 202 obtiene la información de indicación utilizada para indicar determinar la segunda información del movimiento basándose en la primera información del movimiento. La primera información del movimiento es la información del movimiento del bloque de imágenes actual en una primera dirección, la segunda información del movimiento es la información del movimiento del bloque de imágenes actual en una segunda dirección, y la primera dirección y la segunda dirección son diferentes.
Un bloque de imágenes en esta solicitud puede ser una unidad básica para realizar codificación de vídeo o decodificación de vídeo, por ejemplo, una unidad de codificación (Coding Unit, CU), o puede ser una unidad básica para realizar una operación de predicción, por ejemplo, una unidad de predicción (Prediction Unit, PU). Esto no está limitado específicamente en esta realización de esta solicitud.
Si el bloque de imágenes es la unidad básica para realizar la codificación o decodificación de vídeo, el bloque de imágenes actual en esta realización de esta solicitud incluye al menos un subbloque. En consecuencia, la primera información del movimiento incluye la información del movimiento de cada uno del al menos un subbloque en el bloque de imágenes actual en la primera dirección, la segunda información del movimiento incluye la información del movimiento de cada uno del al menos un subbloque en el bloque de imágenes actual en la segunda dirección, y la información de indicación se utiliza para indicar determinar la información del movimiento de un subbloque en la segunda dirección basándose en información del movimiento del subbloque en la primera dirección.
El decodificador de vídeo 202 puede obtener la información de indicación en una pluralidad de modos.
En una primera implementación, que está según la invención protegida, el decodificador de vídeo 202 analiza un primer identificador. Cuando un valor del primer identificador es un primer valor preestablecido, el decodificador de vídeo 202 determina analizar la primera información del movimiento, y determina la segunda información del movimiento basándose en la primera información del movimiento. En otras palabras, el decodificador de vídeo 202 obtiene la información de indicación. Cuando el valor del primer identificador es un octavo valor preestablecido, el decodificador de vídeo 202 analiza el flujo de bits para obtener un quinto identificador. Cuando un valor del quinto identificador es un quinto valor preestablecido, el decodificador de vídeo 202 determina analizar la segunda información del movimiento, y calcula la primera información del movimiento basándose en la segunda información del movimiento. Cuando el valor del quinto identificador es un noveno valor preestablecido, el decodificador de vídeo 202 obtiene la primera información del movimiento y la segunda información del movimiento. El primer valor preestablecido y el quinto valor preestablecido pueden ser iguales o diferentes. Esto no está limitado específicamente en esta realización de esta solicitud.
Según la invención protegida, dichos valores están, no obstante, limitados según se especifica en las reivindicaciones y en el siguiente ejemplo. El primer identificador es mv_derived_flag_l0, el quinto identificador es mv_derived_flag_l1, tanto el primer valor preestablecido como el quinto valor preestablecido son 1, y tanto el octavo valor preestablecido como el noveno valor preestablecido son 0. El decodificador de vídeo 202 analiza primero mv_derived_flag_I0. Cuando un valor de mv_derived_flag_l0 es 1, el decodificador de vídeo 202 analiza la primera información del movimiento y determina la segunda información del movimiento basándose en la primera información del movimiento. Cuando el valor de mv_derived_flag_l0 es 0, el decodificador de vídeo 202 analiza mv_derived_flag_l1. Cuando un valor de mv_derived_flag_l1 es 1, el decodificador de vídeo 202 analiza la segunda información del movimiento y calcula la primera información del movimiento basándose en la segunda información del movimiento. Cuando tanto el valor de mv_derived_flag_l0 como el valor de mv_derived_flag_l1 son 0, el decodificador de vídeo 202 analiza la primera información del movimiento y la segunda información del movimiento.
En una segunda implementación, el decodificador de vídeo 202 analiza un segundo identificador. Cuando un valor del segundo identificador es un segundo valor preestablecido, el decodificador de vídeo 202 determina calcular la información del movimiento del bloque de imágenes actual mediante el uso de un algoritmo de derivación de información del movimiento. Luego, el decodificador de vídeo 202 analiza un tercer identificador. Cuando un valor del tercer identificador es un tercer valor preestablecido, el decodificador de vídeo 202 determina analizar la primera información del movimiento, y determina la segunda información del movimiento basándose en la primera información del movimiento. En otras palabras, el decodificador de vídeo 202 obtiene la información de indicación. Cuando un valor del tercer identificador es un sexto valor preestablecido, el decodificador de vídeo 202 determina analizar la segunda información del movimiento, y calcula la primera información del movimiento basándose en la segunda información del movimiento.
Por ejemplo, el segundo identificador es derived_mv_flag, el tercer identificador es derived_mv_direction, el tercer valor preestablecido es 1 y el sexto valor preestablecido es 0. El decodificador de vídeo 202 analiza primero derived_mv_flag. Cuando un valor de derived_mv_flag es 1, el decodificador de vídeo 202 determina calcular la información del movimiento del bloque de imágenes actual utilizando el algoritmo de derivación de información del movimiento. Cuando el valor de derived_mv_flag es 0, el decodificador de vídeo 202 analiza la primera información del movimiento y la segunda información del movimiento. Cuando un valor de derived_mv_direction es 1, el decodificador de vídeo 202 analiza la primera información del movimiento, y determina la segunda información del movimiento basándose en la primera información del movimiento. Cuando el valor de derived_mv_direction es 0, el decodificador de vídeo 202 analiza la segunda información del movimiento, y calcula la primera información del movimiento basándose en la segunda información del movimiento.
En una tercera implementación, el decodificador de vídeo 202 analiza un segundo identificador. Cuando un valor del segundo identificador es un segundo valor preestablecido, el decodificador de vídeo 202 determina calcular la información del movimiento del bloque de imágenes actual mediante el uso de un algoritmo de derivación de información del movimiento. Luego, el decodificador de vídeo 202 determina, basándose en una dirección derivada preestablecida, analizar la primera información del movimiento, y determina la segunda información del movimiento basándose en la primera información del movimiento. En otras palabras, el decodificador de vídeo 202 obtiene la información de indicación. En otras palabras, en esta implementación, “determinar la segunda información movimiento basándose en la primera información movimiento” está preestablecido. Cuando el valor del segundo identificador es un séptimo valor preestablecido, el decodificador de vídeo 202 obtiene la primera información del movimiento y la segunda información del movimiento.
Por ejemplo, el segundo identificador es derived_mv_flag, el segundo valor preestablecido es 1 y el séptimo valor preestablecido es 0. El decodificador de vídeo 202 analiza derived_mv_flag. Cuando un valor de derived_mv_flag es 1, el decodificador de vídeo 202 determina calcular la información del movimiento del bloque de imágenes actual utilizando el algoritmo de derivación de información del movimiento. Además, el decodificador de vídeo 202 determina analizar la primera información del movimiento y determina la segunda información del movimiento basándose en la primera información del movimiento. Cuando el valor de derived_mv_flag es 0, el decodificador de vídeo 202 analiza la primera información del movimiento y la segunda información del movimiento.
En una cuarta implementación, el decodificador de vídeo 202 analiza un cuarto identificador (por ejemplo, mv_derived_flag_l0). Cuando un valor del cuarto identificador es un cuarto valor preestablecido, el decodificador de vídeo 202 determina calcular la información del movimiento del bloque de imágenes actual utilizando un algoritmo de derivación de información del movimiento, y calcula una variable derived_ref_num basándose en una primera lista de fotogramas de referencia y en una segunda lista de fotogramas de referencia. La variable representa una cantidad de pares de fotogramas de referencia reflejados/lineales que pueden estar constituidos por un primer fotograma de referencia y un segundo fotograma de referencia. Cuando la cantidad de pares de fotogramas de referencia es 1, el decodificador de vídeo 202 determina directamente los valores del índice de fotogramas de referencia. Luego, el decodificador de vídeo 202 determina, basándose en una dirección derivada preestablecida, analizar la primera información del movimiento, y determina la segunda información del movimiento basándose en la primera información del movimiento. En otras palabras, el decodificador de vídeo 202 obtiene la información de indicación. La primera lista de fotogramas de referencia es una lista de fotogramas de referencia del bloque de imágenes actual en la primera dirección, la segunda lista de fotogramas de referencia es una lista de fotogramas de referencia del bloque de imágenes actual en la segunda dirección, el primer fotograma de referencia es un fotograma de referencia del bloque de imágenes actual en la primera dirección, y el segundo fotograma de referencia es un fotograma de referencia del bloque de imágenes actual en la segunda dirección. Un valor de índice de fotograma de referencia en esta realización de esta solicitud es un número de un fotograma de referencia en una lista de fotogramas de referencia correspondiente.
Por ejemplo, un número de secuencia del fotograma actual es 4, la primera lista de fotogramas de referencia es {2, 0}, la segunda lista de fotogramas de referencia es {6, 7}, y se determina, basándose en la siguiente condición B o condición C, que un fotograma de referencia cuyo número de secuencia es 2 en la primera lista de fotogramas de referencia y un fotograma de referencia cuyo número de secuencia es 6 en la segunda lista de fotogramas de referencia pueden constituir un par de fotogramas de referencia. En este caso, tanto un valor de índice del primer fotograma de referencia como un valor de índice del segundo fotograma de referencia son 0.
Por ejemplo, el número de secuencia del fotograma actual es 4, la primera lista de fotogramas de referencia es {2, 0}, la segunda lista de fotogramas de referencia es {6, 7} y se determina, basándose en la siguiente condición B o condición C, que el fotograma de referencia cuyo número de secuencia es 2 en la primera lista de fotogramas de referencia y el fotograma de referencia cuyo número de secuencia es 6 en la segunda lista de fotogramas de referencia pueden constituir el par de fotogramas de referencia, y que un fotograma de referencia cuyo número de secuencia es 0 en la primera lista de fotogramas de referencia y un fotograma de referencia cuyo número de secuencia es 7 en la segunda lista de fotogramas de referencia también pueden constituir un par de fotogramas de referencia. En este caso, el decodificador de vídeo 202 necesita analizar el valor del índice de fotograma de referencia.
Además, cuando se determina que el modo de inter predicción es el modo de inter predicción bidireccional, el decodificador de vídeo 202 puede determinar además si la información de la característica del fotograma actual satisface una condición preestablecida. De esta manera, cuando la información de la característica del fotograma actual satisface la condición preestablecida, el decodificador de vídeo 202 obtiene la información de indicación. Para ser específicos, un proceso de S401 puede ser específicamente: el decodificador de vídeo 202 obtiene la información de indicación al determinar que el modo de inter predicción es el modo de inter predicción bidireccional y que la información de la característica del fotograma actual satisface una primera condición preestablecida.
La información de la característica del fotograma actual incluye al menos uno de un número de secuencia, un ID de nivel temporal (Temporal Level ID, TID), o una cantidad de fotogramas de referencia. El flujo de bits obtenido por el decodificador de vídeo 202 incluye un conjunto de parámetros de secuencia (Sequence Parameter Set, SPS), un conjunto de parámetros de imagen (Picture Parameter Set, PPS), una cabecera de segmento o una cabecera de segmento de segmento, y datos de imagen codificados. Luego, el decodificador de vídeo 202 analiza el flujo de bits para obtener la información de la característica del fotograma actual. La condición preestablecida incluye al menos una de las siguientes condiciones:
Condición A: El bloque de imágenes actual tiene al menos dos fotogramas de referencia.
Condición B: El número de secuencia del fotograma actual, un número de secuencia del primer fotograma de referencia y un número de secuencia del segundo fotograma de referencia satisfacen la siguiente fórmula: P0C_Cur - POCJistX = POCJistY - P0C_Cur
En la fórmula anterior, POC_Cur representa el número de secuencia del fotograma actual, POC_listX representa el número de secuencia del primer fotograma de referencia, POC_listY representa el número de secuencia del segundo fotograma de referencia, el primer fotograma de referencia es el fotograma de referencia del bloque de imágenes actual en la primera dirección y el segundo fotograma de referencia es el fotograma de referencia del bloque de imágenes actual en la segunda dirección.
Condición C: El número de secuencia del fotograma actual, un número de secuencia del primer fotograma de referencia y un número de secuencia del segundo fotograma de referencia satisfacen la siguiente fórmula:
En la fórmula anterior, POC_Cur representa el número de secuencia del fotograma actual, POC_listX representa el número de secuencia del primer fotograma de referencia, POC_listY representa el número de secuencia del segundo fotograma de referencia, el primer fotograma de referencia es el fotograma de referencia del bloque de imágenes actual en la primera dirección y el segundo fotograma de referencia es el fotograma de referencia del bloque de imágenes actual en la segunda dirección.
Condición D: El TID del fotograma actual es mayor o igual que un valor preestablecido.
La condición preestablecida en esta realización de esta solicitud puede estar preestablecida, o puede estar especificada en una sintaxis de capa superior, por ejemplo, en un conjunto de parámetros tales como el SPS, el PPS, la cabecera de segmento o la cabecera de segmento del segmento. Esto no está limitado específicamente en esta realización de esta solicitud.
Específicamente, para la condición B (o la condición C), el decodificador de vídeo 202 obtiene un número de secuencia de fotograma de referencia de cada una de la primera lista de fotogramas de referencia y la segunda lista de fotogramas de referencia, y determina si el número de secuencia de fotograma de referencia obtenido y el número de secuencia del fotograma actual satisfacen la condición B o la condición C. La información de indicación se obtiene cuando se cumple la condición B (o la condición C).
En esta realización de esta solicitud, un método utilizado por el decodificador de vídeo 202 para obtener la información de indicación al determinar que el modo de inter predicción es el modo de inter predicción bidireccional y que la información de la característica del fotograma actual satisface la condición preestablecida es el mismo que un método utilizado por el decodificador de vídeo 202 para obtener la información de indicación al determinar que el modo de inter predicción es el modo de inter predicción bidireccional.
basándose en las descripciones anteriores, la Tabla 1 es una tabla de sintaxis utilizada cuando el decodificador de vídeo 202 obtiene, al determinar que el modo de inter predicción es el modo de inter predicción bidireccional y que la información de la característica del fotograma actual satisface la condición preestablecida, la información de indicación en la primera implementación. prediction_unit() es una estructura de sintaxis de un bloque de imágenes de predicción, y describe un método para determinar la información del movimiento de cada subbloque en el bloque de imágenes actual.
En la Tabla 1, x0 e y0, respectivamente, indican un desplazamiento de coordenadas horizontal y un desplazamiento de coordenadas vertical de un subbloque en el bloque de imágenes actual con respecto a la esquina superior izquierda del bloque de imágenes actual, nPbW indica el ancho del bloque de imágenes actual y nPbH indica la altura del bloque de imágenes actual. Cuando un valor de inter_pred_idc[x0][y0] es PRED_L0, indica que la inter predicción de un subbloque actual es una predicción hacia adelante. Cuando un valor de inter_pred_idc[x0][y0] es PRED_L1, indica que la inter predicción del subbloque actual es una predicción hacia atrás. Cuando un valor de inter_pred_idc[x0][y0] es pRED_BI, indica que la inter predicción del subbloque actual es una predicción bidireccional.
Para la inter predicción bidireccional (es decir, inter_pred_idc[x0][y0]==PRED_BI), si se cumple la condición preestablecida, se analiza mv_derived_flag_l0[x0][y0]. Si el valor de mv_derived_flag_l0 no es el primer valor preestablecido, se analiza mv_derived_flagJ1[x0j[y0]. Cuando el valor de mv_derived_flag_l0 es el primer valor preestablecido o el valor de mv_derived_flag_l1[x0][y0] es el quinto valor preestablecido, se determina la información del movimiento del subbloque del bloque de imágenes actual; para ser específicos, se determina un valor de índice de fotograma de referencia ref_idx_l0[x0][y0], un indicador de predictor de vector de movimiento mvp_l0_flag[x0][y0] y una diferencia del vector de movimiento mvd_coding( x0, y0, 0).
Tabla 1
prediction_unit(x0, yO, nPbW, nPbH) {
/* motion vector coding */
if( slice_type==B )
inter_pred_idc[xO] [yO]
if( inter_pred_idc[x0][y0]==PRED_L0 ) {
if( num ref idx lO active minusl > 0 )
ref_i dx_l 0 [xO ] [y 0]
mvd_coding( xO, yO, 0 )
mvp l 0_fl ag [xO ] [y 0]
}
^if( inter_pred_idc[x0][y0]==PRED_L l ) {
if( num_ref_idx_ll_active_minusl > 0 )
r e f i d x l 1 [xO] [yO]
mvd_coding( xO, yO, 1)
mvp_ll_flag[xO][yO]
}
if( inter_pred_idc[xO][yO]==PRED_BI) {
if( conditions ) {
mv derived flag_10[x0] [yO]
if( !mv_derived_flag_10[x0][y0]) {
mv derived flag ll [xO] [yO]
}
if( !mv_derived_flag_10[x0][y0]) {
if( num_ref_idx_10_active_minusl > 0 )
ref_i dx_l 0 [xO ] [y 0 ]
mvd_coding( xO, yO, 0 )
mvp_l 0_fl ag [xO ] [y 0]
}
if( !mv_derived_flag_ll[xO][yO]) {
if( num_ref_idx_ll_active_minusl > 0 )
r e f i d x l 1 [xO] [yO]
mvd_coding(xO, yO, 0 )
mvp_l I_flag[x0][y0]
}
}
basándose en las descripciones anteriores, la Tabla 2 es una tabla de sintaxis utilizada cuando el decodificador de vídeo 202 obtiene, al determinar que el modo de inter predicción es el modo de inter predicción bidireccional y que la información de la característica del fotograma actual satisface la condición preestablecida, la información de indicación mediante el uso de la tercera implementación.
En la Tabla 2, para la inter predicción bidireccional (en otras palabras, inter_pred_idc[x0][y0]==PRED_BI), si se cumple la condición preestablecida, se analiza derived_mv_flag[x0][y0]. Cuando un valor de derived_mv_flag[x0][y0] es el segundo valor preestablecido, se determina la información del movimiento del subbloque del bloque de imágenes actual; para ser específicos, se determina un valor de índice de fotograma de referencia ref_idx_lx[x0][y0], un indicador de predictor de vector de movimiento mvp_lx_flag[x0][y0] y una diferencia del vector de movimiento mvd_coding( x0, y0, x).
Tabla 2
prediction_unit(xO, yO, nPbW, nPbH) {
/* motion vector coding */
if( slice_type==B )
inter_pred_idc[xO] [yO]
if( inter_pred_idc[xO][yO]==PRED_LO ) {
if( num ref idx lO active minusl > 0 )
ref_i dx_l 0 [xO ] [y 0]
mvd_coding( xO, yO, 0 )
mvp l 0_fl ag [xO ] [y 0]
}
if( ínter j)red_idc[xO][yO]==PRED_Ll ) {
if( num ref idx ll active minusl > 0 )
ref_idx_l 1 [xO][yO]
mvd_coding( xO, yO, 1)
mvp l I_flag[x0][y0]
}
if( inter_pred_idc[xO][yO]==PRED_BI ) {
if( conditions ) {
derived mv flag[ xO ][ yO ]
if( derived mv flag[xO][yO] ) {
if( num ref idx lx active minusl > 0 )
ref_idx_lx[ xO ][ yO ]
mvd_coding( xO, yO, x )
mvp lx_flag[ xO ][ yO ]
} else {
}
}
Basándose en las descripciones anteriores, la Tabla 3 es una tabla de sintaxis utilizada cuando el decodificador de vídeo 202 obtiene, al determinar que el modo de inter predicción es el modo de inter predicción bidireccional y que la información de la característica del fotograma actual satisface la condición preestablecida, la información de indicación mediante el uso de la cuarta implementación.
En la Tabla 3, para la inter predicción bidireccional (en otras palabras, inter_pred_idc[x0][y0]==PRED_BI), si se cumple la condición preestablecida, se analiza derived_mv_flag[x0][y0]. Cuando el valor de derived_mv_flag[x0][y0] es el cuarto valor preestablecido, se determina derived_ref_num, y cuando un valor de derived_ref_num es mayor que 1, se determina la información del movimiento del subbloque en el bloque de imágenes actual; para ser específicos, se determinan el valor de índice de fotograma de referencia ref_idx_lx[x0][y0], el indicador de predictor de vector de movimiento mvp_lx_flag[x0][y0] y la diferencia del vector de movimiento mvd_coding( x0, y0, x).
Tabla 3
prediction_unit(xO, yO, nPbW, nPbH) {
/* motion vector coding */
if( slice_type==B )
ínter_pred_idc[xO] [yO]
if( inter_pred_idc[xO][yO]==PRED_LO ) {
if( num ref idx lO active minusl > 0 )
ref_i dx_l 0 [xO ] [y 0]
mvd_coding( xO, yO, 0 )
mvp l 0_fl ag [xO ] [y 0]
}
if( ínter j)red_idc[x0][y0]==PRED_Ll ) {
if( num ref idx ll active minusl > 0 )
ref_idx_l 1 [xO] [yO]
mvd_coding( xO, yO, 1)
mvpllflagfxOJfyO]
}
if( inter_pred_idc[xO][yO]==PRED_BI) {
if( conditions ) {
derivedmv_flag[x0] [yO]
if( derived mv flag[xO][yO] ) {
if( n u m r e f i d x l x a c t i v e m in u s l > 0 && derivedrefnum > 1)
<r>*<p>*"<f>--<íH>- -<t>---*<w>“<r-vO>” J<ir>L<v>J<O>“ J<i>
mvd_coding(x0, yO, x )
m vplx flag[xO] [yO]
} else {
}
}
El primer identificador, el segundo identificador, el tercer identificador y el cuarto identificador pueden estar preestablecidos, o pueden ser especificados en la sintaxis de la capa superior, por ejemplo, en el conjunto de parámetros tales como el SPS, el PPS, la cabecera de segmento o la cabecera de segmento del segmento. Esto no está limitado específicamente en esta realización de esta solicitud.
El decodificador de vídeo 202 obtiene la información de indicación al determinar que el modo de inter predicción es el modo de inter predicción bidireccional y que la información de la características del fotograma actual satisface la condición preestablecida. Esto mejora de manera efectiva una velocidad de decodificación del decodificador de vídeo 202 y reduce la redundancia de información.
S401: El decodificador de vídeo 202 obtiene la primera información del movimiento.
Opcionalmente, el decodificador de vídeo 202 analiza el flujo de bits para obtener el valor de índice del primer fotograma de referencia, un primer indicador de predictor de vector de movimiento y una primera diferencia del vector de movimiento, en otras palabras, para obtener la primera información del movimiento. El primer indicador de predictor de vector de movimiento se utiliza para indicar un valor de índice de un primer vector de movimiento predicho en una primera lista de vectores de movimiento candidatos, el primer vector de movimiento predicho es un vector de movimiento predicho del bloque de imágenes actual en la primera dirección, la primera diferencia del vector de movimiento es una diferencia entre el primer vector de movimiento predicho y un primer vector de movimiento, y el primer vector de movimiento es un vector de movimiento del bloque de imágenes actual en la primera dirección.
En cada una de las tablas de sintaxis mostradas en la Tabla 1 a la Tabla 3, el decodificador de vídeo 202 determina la información del movimiento del subbloque en el bloque de imágenes actual en la primera dirección.
S402: El decodificador de vídeo 202 determina la segunda información del movimiento basándose en la primera información del movimiento.
En una primera implementación, un método utilizado por el decodificador de vídeo 202 para determinar la segunda información del movimiento es: el decodificador de vídeo 202 selecciona el valor de índice del primer fotograma de referencia de la primera información del movimiento, y determina el número de secuencia del primer fotograma de referencia basándose en el valor de índice del primer fotograma de referencia y en la primera lista de fotogramas de referencia; calcula el número de secuencia del segundo fotograma de referencia basándose en el número de secuencia del fotograma actual y en el número de secuencia del primer fotograma de referencia según una fórmula preestablecida; determina el valor de índice del segundo fotograma de referencia basándose en el número de secuencia del segundo fotograma de referencia y en la segunda lista de fotogramas de referencia; y determina la segunda información del movimiento basándose en la primera información de índice del segundo fotograma de referencia.
En este caso, la fórmula preestablecida puede ser POC_listY = 2 * POC_Cur - POC_listX. POC_Cur representa un número de secuencia de un fotograma actual, POC_listX representa un número de secuencia del primer fotograma de referencia y POC_listY representa un número de secuencia del segundo fotograma de referencia.
Por ejemplo, si el número de secuencia del fotograma actual es 4, el número de secuencia del primer fotograma de referencia es 2, la segunda lista de fotogramas de referencia es [6, 8] y se determina, según la fórmula POC_listY = 2 * POC_Cur - POC_listX, que el número de secuencia del segundo fotograma de referencia es 6, el decodificador de vídeo 202 determina que el valor de índice ref_lY_idx del segundo fotograma de referencia es 0.
Opcionalmente, la fórmula preestablecida puede ser alternativamente (POC_Cur - POC_listX) * (POC_listY -POC_Cur) > 0. Cabe señalar que, si una pluralidad de números de flujo de fotogramas de referencia en la segunda lista de fotogramas de referencia satisfacen la fórmula, el decodificador de vídeo 202 selecciona primero un fotograma de referencia con un mínimo abs((POC_listY - POC_Cur) - (POC_Cur - POC_listX)), y luego selecciona un fotograma de referencia con un mínimo abs(POC_listY - POC_Cur), para determinar el valor de índice del segundo fotograma de referencia. abs es una función de valor absoluto.
Por ejemplo, si el número de secuencia del fotograma actual es 4, el número de secuencia del primer fotograma de referencia es 2, la segunda lista de fotogramas de referencia es [5, 7, 8], y se determina, según la fórmula (POC_Cur - POC_listX) * (POC_listY - POC_Cur) > 0, que el número de secuencia del segundo fotograma de referencia es 5, el decodificador de vídeo 202 determina que el valor de índice ref_lY_idx del segundo fotograma de referencia es 0.
Opcionalmente, la fórmula preestablecida puede ser alternativamente POC_listX t POC_listY. Se debe tener en cuenta que, si una pluralidad de números de secuencia de fotogramas de referencia en la segunda lista de fotogramas de referencia satisfacen la fórmula, el decodificador de vídeo 202 primero selecciona un fotograma de referencia con un abs mínimo ((POC_listY - POC_Cur) - (POC_Cur - POC_listX)) y, a continuación, selecciona un fotograma de referencia con un abs mínimo (POC_listY - POC_Cur), para determinar el valor de índice del segundo fotograma de referencia. abs es una función de valor absoluto.
Por ejemplo, si el número de secuencia del fotograma actual es 4, el número de secuencia del primer fotograma de referencia es 2, la segunda lista de fotogramas de referencia es [3, 2, 1, 0], y se determina, según la fórmula POC_listX t POC_listY, que el número de secuencia del segundo fotograma de referencia es 3, el decodificador de vídeo 202 determina que el valor de índice ref_lY_idx del segundo fotograma de referencia es 0.
Opcionalmente, la fórmula preestablecida puede ser alternativamente POC_listY0 = 2 * POC_Cur - POC_listX , (POC_Cur - POC_listX) * (POC_listY0' - POC_Cur) > 0 , y POC_listX t POC_listY0”. En este caso, un método utilizado por el decodificador de vídeo 202 para determinar el valor de índice del segundo fotograma de referencia es específicamente: calcular un primer número de secuencia basándose en el número de secuencia del primer fotograma de referencia actual y en el número de secuencia del primer fotograma de referencia utilizando la fórmula POC_listY0 = 2 * pOc_Cur - POC listX, donde POC_Cur representa el número de secuencia del fotograma actual, POC_listX representa el número de secuencia del primer fotograma de referencia, y POC_listY0 representa el primer número de secuencia; y cuando la segunda lista de fotogramas de referencia incluye el primer número de secuencia, determinar, como el valor de índice del segundo fotograma de referencia, un número de un fotograma de referencia representado por el primer número de secuencia en la segunda lista de fotogramas de referencia; o cuando la segunda lista de fotogramas de referencia no incluye el primer número de secuencia, calcular un segundo número de secuencia basándose en el número de secuencia del fotograma actual y en el número de secuencia del primer fotograma de referencia utilizando (POC_Cur - POC_listX) * (POC_listY0' - POC_Cur) > 0, donde POC_listY0' representa el segundo número de secuencia, y cuando la segunda lista de fotogramas de referencia incluye el segundo número de secuencia, determinar, como el valor de índice del segundo fotograma de referencia, un número de un fotograma de referencia representado por el segundo número de secuencia en la segunda lista de fotogramas de referencia, o cuando la segunda lista de fotogramas de referencia no incluye el segundo número de secuencia, calcular un tercer número de secuencia basándose en el número de secuencia del fotograma actual y en el número de secuencia del primer fotograma de referencia utilizando la fórmula POC_listX t POC_listY0”, donde POC_listY0” representa el tercer número de secuencia y determina, como el valor de índice del segundo fotograma de referencia, un número del fotograma de referencia representado por el tercer número de secuencia en la segunda lista de fotogramas de referencia.
En una segunda implementación, un método utilizado por el decodificador de vídeo 202 para determinar la segunda información del movimiento es: el decodificador de vídeo 202 analiza el flujo de bits para obtener el valor de índice del segundo fotograma de referencia, y determina la segunda información del movimiento basándose en la primera información del movimiento y en el valor de índice del segundo fotograma de referencia. El valor de índice del segundo fotograma de referencia puede estar preestablecido o puede ser especificado en el conjunto de parámetros, por ejemplo, en el SPS, el PPS, la cabecera de segmento o la cabecera de segmento de segmento. Esto no está limitado específicamente en esta realización de esta solicitud.
Se puede obtener que, tanto en la primera implementación como en la segunda implementación, el decodificador de vídeo 202 determina la segunda información del movimiento basándose la primera información del movimiento y en el valor de índice del segundo fotograma de referencia.
Opcionalmente, el decodificador de vídeo 202 puede calcular toda la información del movimiento del bloque de imágenes actual en la segunda dirección, o puede calcular una parte de la información del movimiento del bloque de imágenes actual en la segunda dirección.
A continuación se describe un proceso en donde el decodificador de vídeo 202 determina la segunda información del movimiento basándose en la primera información del movimiento y en el valor de índice del segundo fotograma de referencia.
Opcionalmente, un método utilizado por el decodificador de vídeo 202 para determinar la segunda información del movimiento basándose en la primera información del movimiento y en el valor de índice del segundo fotograma de referencia puede ser: obtener el valor de índice del primer fotograma de referencia en la primera información del movimiento, y determinar el número de secuencia del primer fotograma de referencia basándose en el valor de índice del primer fotograma de referencia y en la primera lista de fotogramas de referencia; obtener el valor de índice del segundo fotograma de referencia, y determinar el número de secuencia del segundo fotograma de referencia basándose en el valor de índice del segundo fotograma de referencia y en la segunda lista de fotogramas de referencia; determinar el primer vector de movimiento (el vector de movimiento del bloque de imágenes actual en la primera dirección) basándose en la primera diferencia de vector de movimiento y en el primer indicador de predictor de vector de movimiento que están en la primera información del movimiento; y derivar un segundo vector de movimiento en la segunda información del movimiento según la siguiente fórmula:
POC_Cur - POCJistY
mv 1Y =
P0C_Cur — POCJistX X mv- X
En la fórmula anterior, mv_lY representa el segundo vector de movimiento, POC_Cur representa el número de secuencia del fotograma actual, POCJistX representa el número de secuencia del primer fotograma de referencia, POC_listY representa el número de secuencia del segundo fotograma de referencia, mv_lX representa el primer vector de movimiento y el segundo vector de movimiento es un vector de movimiento del bloque de imágenes actual en la segunda dirección.
El decodificador de vídeo 202 construye una lista de información del movimiento candidata de una manera que es la misma que la manera en que el codificador construye la lista de información del movimiento candidata en el modo de AMVP o el modo de fusión, y determina el primer vector de movimiento predicho en la lista de información del movimiento candidata basándose en el primer indicador de predicción de vector de movimiento. De esta manera, el decodificador de vídeo 202 puede determinar una suma del primer vector de movimiento predicho y la primera diferencia del vector de movimiento como el primer vector de movimiento.
Opcionalmente, cuando el primer fotograma de referencia es un fotograma de referencia hacia adelante del bloque de imágenes actual y el segundo fotograma de referencia es un fotograma de referencia hacia atrás del bloque de imágenes actual, o cuando el primer fotograma de referencia es un fotograma de referencia hacia atrás del bloque de imágenes actual y el segundo fotograma de referencia es un fotograma de referencia hacia adelante del bloque de imágenes actual, o cuando cada uno del primer fotograma de referencia y el segundo fotograma de referencia son un fotograma de referencia hacia adelante del bloque de imágenes actual, o cuando cada uno del primer fotograma de referencia y el segundo fotograma de referencia son un fotograma de referencia hacia atrás del bloque de imágenes actual, el decodificador de vídeo 202 puede establecer directamente mv lY = mv lX.
Por ejemplo, tanto “el primer fotograma de referencia es un fotograma de referencia hacia adelante del bloque de imágenes actual y el segundo fotograma de referencia es un fotograma de referencia hacia atrás del bloque de imágenes actual” como “el primer fotograma de referencia es un fotograma de referencia hacia atrás del bloque de imágenes actual y el segundo fotograma de referencia es un fotograma de referencia hacia adelante del bloque de imágenes actual” pueden representarse utilizando la fórmula (POC_Cur - POCJistX) * (POCJistY - POC_Cur) > 0, o pueden representarse utilizando la fórmula POCJistY = 2 * POC_Cur -POC listX.
Tanto “cada uno del primer fotograma de referencia y el segundo fotograma de referencia son un fotograma de referencia hacia adelante del bloque de imágenes actual” como “cada uno del primer fotograma de referencia y el segundo fotograma de referencia son un fotograma de referencia hacia atrás del bloque de imágenes actual” pueden representarse utilizando una fórmula (POC_Cur - POCJistX) * (POCJistY -POC_Cur) < 0.
Opcionalmente, un método utilizado por el decodificador de vídeo 202 para determinar la segunda información del movimiento basándose en la primera información del movimiento y en el valor de índice del segundo fotograma de referencia puede ser: obtener el valor de índice del primer fotograma de referencia y la primera diferencia de vector de movimiento que están en la primera información del movimiento, y determinar el número de secuencia del primer fotograma de referencia basándose en el valor de índice del primer fotograma de referencia y en la primera lista de fotogramas de referencia; obtener el valor de índice del segundo fotograma de referencia, determinar el número de secuencia del segundo fotograma de referencia basándose en el valor de índice del segundo fotograma de referencia y en la segunda lista de fotogramas de referencia, y determinar un segundo vector de movimiento predicho basándose en el valor de índice del segundo fotograma de referencia y en una segunda lista de vectores de movimiento predichos candidatos, donde el segundo vector de movimiento predicho es un vector de movimiento predicho del bloque de imágenes actual en la segunda dirección; derivar una segunda diferencia de vector de movimiento en la segunda información del movimiento según la siguiente fórmula:
POC_Cur - POCJistY
mvd 1Y x mvd IX
POC Cur - POC listX
donde mvd_lY representa la segunda diferencia de vector de movimiento, POC_Cur representa el número de secuencia del fotograma actual, POCJistX representa el número de secuencia del primer fotograma de referencia, POCJistY representa el número de secuencia del segundo fotograma de referencia y mvd_lX representa la primera diferencia de vector de movimiento; y determinar un segundo vector de movimiento basándose en el segundo vector de movimiento predicho y en la segunda diferencia de vector de movimiento, donde el segundo vector de movimiento es un vector de movimiento del bloque de imágenes actual en la segunda dirección.
Opcionalmente, cuando el primer fotograma de referencia es un fotograma de referencia hacia adelante del bloque de imágenes actual y el segundo fotograma de referencia es un fotograma de referencia hacia atrás del bloque de imágenes actual, o cuando el primer fotograma de referencia es un fotograma de referencia hacia atrás del bloque de imágenes actual y el segundo fotograma de referencia es un fotograma de referencia hacia adelante del bloque de imágenes actual, o cuando cada uno del primer fotograma de referencia y el segundo fotograma de referencia son un fotograma de referencia hacia adelante del bloque de imágenes actual, o cuando cada uno del primer fotograma de referencia y el segundo fotograma de referencia son un fotograma de referencia hacia atrás del bloque de imágenes actual, el decodificador de vídeo 202 puede establecer directamente mvd_lY = -mvd_lX.
Por ejemplo, si (POC_Cur - POC_listX) * (POC_listY - POC_Cur) > 0 , POC_listY = 2 * POC_Cur - POC_listX , o (POC_Cur - POC_listX) * (POC_listY - POC_Cur) < 0, el decodificador de vídeo 202 establece directamente mvd_lY = -mvd_lX.
S403: El decodificador de vídeo 202 determina muestras de predicción del bloque de imágenes actual basándose en la primera información del movimiento y en la segunda información del movimiento.
Opcionalmente, el decodificador de vídeo 202 determina el primer vector de movimiento y el segundo vector de movimiento en S402. De esta manera, el decodificador de vídeo 202 puede determinar un primer bloque de imágenes de referencia basándose en el primer vector de movimiento y en la primera lista de fotogramas de referencia, y determinar un segundo bloque de imágenes de referencia basándose en el segundo vector de movimiento y en la segunda lista de fotogramas de referencia. Además, el decodificador de vídeo 202 determina las muestras de predicción del bloque de imágenes actual basándose en el primer bloque de imágenes de referencia y en el segundo bloque de imágenes de referencia. En otras palabras, el decodificador de vídeo 202 completa un proceso de compensación de movimiento.
Para un método utilizado por el decodificador de vídeo 202 para determinar las muestras de predicción del bloque de imágenes actual basándose en el primer bloque de imágenes de referencia y en el segundo bloque de imágenes de referencia, consulte cualquier método existente. Esto no está limitado específicamente en esta realización de esta solicitud.
En el método de inter predicción bidireccional dado a conocer en esta realización de esta solicitud, el decodificador de vídeo 202 puede obtener solo la primera información del movimiento a partir del flujo de bits codificado. Después de obtener la primera información del movimiento, el decodificador de vídeo 202 calcula la segunda información del movimiento basándose en la primera información del movimiento y, además, determina las muestras de predicción del bloque de imágenes actual basándose en la primera información del movimiento y en la segunda información del movimiento. Según el método dado a conocer en esta solicitud, la información del movimiento de cada bloque de imágenes en todas las direcciones ya no necesita ser transmitida, lo cual es diferente de la técnica anterior. Esto reduce de manera efectiva una cantidad de información del movimiento transmitida y mejora la utilización efectiva de los recursos de transmisión, una velocidad de transmisión y la eficiencia de compresión de codificación.
El método de inter predicción bidireccional que se muestra en la figura 4 se describe para el bloque de imágenes actual, es decir, se puede entender que la inter predicción se realiza en el bloque de imágenes actual basándose en el modo de AMVP.
Es fácil entender que el método de inter predicción bidireccional dado a conocer en esta solicitud también es aplicable a un modo de predicción de modelo de movimiento no traslacional, por ejemplo, un modelo de movimiento de transformación afín de 4 parámetros, un modelo de movimiento de transformación afín de 6 parámetros o un modelo de movimiento bilineal de 8 parámetros. En este escenario, el bloque de imágenes actual incluye al menos un subbloque, y la información del movimiento del bloque de imágenes actual incluye la información del movimiento de cada uno de los subbloques del bloque de imágenes actual. Un método utilizado por el decodificador de vídeo 202 para determinar la información del movimiento (la información del movimiento en la primera dirección y la información del movimiento en la segunda dirección) de cada subbloque es similar a un método utilizado por el decodificador de vídeo 202 para determinar la información del movimiento del bloque de imágenes actual.
En el modo de predicción del modelo de movimiento no traslacional, el decodificador de vídeo 202 calcula un vector de movimiento del i-ésimo punto de control en la segunda dirección basándose en un vector de movimiento del i-ésimo punto de control en la primera dirección según la siguiente fórmula:
POC_Cur - POCJistY
mviJY = -^-----———— -- x mviJY
POC Cur - POC listX
En la fórmula anterior, mvi_lY representa el vector de movimiento del i-ésimo punto de control en la segunda dirección, mvi_lX representa el vector de movimiento del i-ésimo punto de control en la primera dirección, POC_Cur representa el número de secuencia del fotograma actual, POC_listX representa el número de secuencia del primer fotograma de referencia y POC_listY representa el número de secuencia del segundo fotograma de referencia.
En consecuencia, el decodificador de vídeo 202 calcula una diferencia del vector de movimiento del i-ésimo punto de control en la segunda dirección basándose en una diferencia del vector de movimiento del i-ésimo punto de control en la primera dirección utilizando la siguiente fórmula:
POC_Cur - POCJistY
mvdi_lY = ^------ ———— - X mvdiJY
POC Cur - POC listX
En la fórmula anterior, mvdi_lY representa la diferencia del vector de movimiento del i-ésimo punto de control en la segunda dirección, mvdi_lX representa la diferencia del vector de movimiento del i-ésimo punto de control en la primera dirección, POC_Cur representa el número de secuencia del fotograma actual, POC_listX representa el número de secuencia del primer fotograma de referencia y POC_listY representa el número de secuencia del segundo fotograma de referencia.
En comparación con el decodificador de vídeo 202, el codificador de vídeo 102 en las realizaciones de esta solicitud realiza una estimación de movimiento bidireccional en el bloque de imágenes actual, para determinar la información del movimiento del bloque de imágenes actual en la primera dirección, y calcula la información del movimiento del bloque de imágenes actual en la segunda dirección basándose en la información del movimiento del bloque de imágenes actual en la primera dirección. De esta manera, el codificador de vídeo 102 determina el bloque de imágenes de predicción del bloque de imágenes actual basándose en la información del movimiento del bloque de imágenes actual en la primera dirección y en la información del movimiento del bloque de imágenes actual en la segunda dirección. Luego, el codificador de vídeo 102 realiza operaciones tales como transformación y cuantificación en un residuo entre el bloque de imágenes actual y el bloque de imágenes de predicción del bloque de imágenes actual para generar el flujo de bits, y envía el flujo de bits al decodificador de vídeo 202. El flujo de bits incluye la información del movimiento del bloque de imágenes actual en la primera dirección.
Para un método utilizado por el codificador de vídeo 102 para calcular la información del movimiento del bloque de imágenes actual en la segunda dirección basándose en la información del movimiento del bloque de imágenes actual en la primera dirección, consulte el método utilizado por el decodificador de vídeo 202 para determinar la segunda información del movimiento basándose en la primera información del movimiento; en otras palabras, consulte las descripciones en S402. Los detalles no se describen en esta solicitud.
En conclusión, según el método de inter predicción bidireccional dado a conocer en esta solicitud, durante la inter predicción bidireccional, la información del movimiento de cada bloque de imágenes en todas las direcciones ya no necesita ser transmitida, y solo la información del movimiento en una dirección necesita ser transmitida. Esto reduce de manera efectiva una cantidad de información del movimiento transmitida y mejora la utilización efectiva de los recursos de transmisión, una velocidad de transmisión y la eficiencia de compresión de codificación.
Una realización de esta solicitud da a conocer un aparato de inter predicción bidireccional. El aparato de inter predicción bidireccional puede ser un decodificador de vídeo. Específicamente, el aparato de inter predicción bidireccional está configurado para realizar las etapas llevadas a cabo por el decodificador de vídeo 202 en el método de inter predicción bidireccional anterior. El aparato de inter predicción proporcionado en esta realización de esta solicitud puede incluir módulos para etapas correspondientes.
En las realizaciones de esta solicitud, el aparato de predicción inter bidireccional puede ser dividido en módulos funcionales basándose en los ejemplos de métodos anteriores. Por ejemplo, cada módulo de función puede obtenerse por medio de división basándose en cada función correspondiente, o dos o más funciones se pueden integrar en un módulo de procesamiento. El módulo integrado se puede implementar en una forma de hardware, o se puede implementar en una forma de un módulo funcional de software. En las realizaciones de esta solicitud, la división en módulos es un ejemplo y es simplemente una división en funciones lógicas. En una implementación real, se puede usar otro modo de división.
Cuando cada módulo funcional se obtiene por medio de división basándose en una función correspondiente, la figura 5 es un posible diagrama estructural esquemático del aparato de inter predicción bidireccional en las realizaciones anteriores. Tal como se muestra en la figura 5, un aparato de inter predicción bidireccional 5 incluye una unidad de obtención 50 y una unidad de determinación 51.
La unidad de obtención 50 está configurada para soportar el aparato de inter predicción bidireccional para realizar S400, S401 y similares, en la realización anterior, y/o se utiliza en otro proceso de la tecnología descrita en esta memoria descriptiva.
La unidad de determinación 51 está configurada para soportar el aparato de inter predicción bidireccional para realizar S402, S403 y similares en la realización anterior, y/o se utiliza en otro proceso de la tecnología descrita en esta memoria descriptiva.
Todo el contenido relacionado con las etapas en las realizaciones del método anterior se puede citar en las descripciones de los módulos funcionales correspondientes. No se describirán nuevamente los detalles en esta invención.
Ciertamente, el aparato de inter predicción bidireccional dado a conocer en esta realización de esta solicitud incluye, entre otros, los módulos anteriores. Por ejemplo, el aparato de inter predicción bidireccional puede incluir además una unidad de almacenamiento 52.
La unidad de almacenamiento 52 puede configurarse para almacenar código de programa y datos del aparato de inter predicción bidireccional.
Cuando se utiliza una unidad integrada, la figura 6 es un diagrama estructural esquemático del aparato de inter predicción bidireccional dado a conocer en las realizaciones de esta solicitud. Tal como se muestra en la figura 6, un aparato de inter predicción bidireccional 6 incluye un módulo de procesamiento 60 y un módulo de comunicaciones 61. El módulo de procesamiento 60 está configurado para controlar y gestionar una acción del aparato de inter predicción bidireccional, por ejemplo, realizar etapas realizadas por la unidad de obtención 50 y la unidad de determinación 51, y/o configurado para realizar otro proceso de la tecnología descrita en esta memoria descriptiva. El módulo de comunicaciones 61 está configurado para soportar la interacción entre el aparato de inter predicción bidireccional y otro dispositivo. Tal como se muestra en la figura 6, el aparato de inter predicción bidireccional puede incluir además un módulo de almacenamiento 62. El módulo de almacenamiento 62 está configurado para almacenar código de programa y datos del aparato de inter predicción bidireccional, por ejemplo, almacenar contenido almacenado por la unidad de almacenamiento 52.
El módulo de procesamiento 60 puede ser un procesador o un controlador, por ejemplo, puede ser una unidad central de procesamiento (Central Processing Unit, CPU), un procesador de propósito general, un procesador de señal digital (DSP), un ASIC, una FPGA u otro dispositivo lógico programable, un dispositivo lógico de transistor, un componente de hardware o cualquier combinación de los mismos. El procesador o el controlador puede implementar o ejecutar diversos bloques, módulos y circuitos lógicos de ejemplo descritos con referencia al contenido dado a conocer en esta solicitud. Alternativamente, el procesador puede ser una combinación que implementa una función informática, por ejemplo, una combinación que incluye uno o más microprocesadores o una combinación de un DSP y un microprocesador. El módulo de comunicaciones 61 puede ser un transceptor, un circuito de RF, una interfaz de comunicaciones, o similares. El módulo de almacenamiento 62 puede ser una memoria.
Todo el contenido relacionado de los escenarios en las realizaciones del método anterior se puede citar en las descripciones de funciones de los módulos funcionales correspondientes. No se describirán nuevamente los detalles en esta invención.
Tanto el aparato de inter predicción bidireccional 5 como el aparato de inter predicción bidireccional 6 pueden realizar el método de inter predicción bidireccional que se muestra en la figura 4. Específicamente, el aparato de inter predicción bidireccional 5 y el aparato de inter predicción bidireccional 6 pueden ser aparatos de decodificación de vídeo u otros dispositivos que tienen una función de codificación de vídeo. El aparato de inter predicción bidireccional 5 y el aparato de inter predicción bidireccional 6 pueden configurarse para realizar la predicción de imágenes en un proceso de decodificación.
Esta solicitud da a conocer además un terminal. El terminal incluye uno o más procesadores, una memoria y una interfaz de comunicaciones. La memoria y la interfaz de comunicaciones se acoplan a uno o más procesadores. La memoria está configurada para almacenar código de programa informático. El código de programa informático incluye una instrucción. Cuando uno o más procesadores ejecutan la instrucción, el terminal realiza el método de inter predicción bidireccional en las realizaciones de esta solicitud.
El terminal en el presente documento puede ser un dispositivo de visualización de vídeo, un teléfono inteligente, un ordenador portátil u otro dispositivo que pueda procesar o reproducir un vídeo.
Esta solicitud da a conocer además un decodificador de vídeo, que incluye un medio de almacenamiento no volátil y una unidad central de procesamiento. El medio de almacenamiento no volátil almacena un programa ejecutable. La unidad central de procesamiento está conectada al medio de almacenamiento no volátil y ejecuta el programa ejecutable para realizar el método de inter predicción bidireccional en las realizaciones de esta solicitud.
Esta solicitud da a conocer además un decodificador. El decodificador incluye el aparato de inter predicción bidireccional (el aparato de inter predicción bidireccional 5 o el aparato de inter predicción bidireccional 6) en las realizaciones de esta solicitud, y un módulo de reconstrucción. El módulo de reconstrucción está configurado para determinar los valores de muestra reconstruidos de un bloque de imágenes actual basándose en muestras de predicción obtenidas por el aparato de inter predicción bidireccional.
Otra realización de esta solicitud da a conocer además un medio de almacenamiento legible por ordenador. El medio de almacenamiento legible por ordenador almacena uno o más fragmentos de código de programa. El uno o más fragmentos de código de programa incluyen una instrucción. Cuando un procesador de un terminal ejecuta el código de programa, el terminal realiza el método de inter predicción bidireccional que se muestra en la figura 4.
En otra realización de esta solicitud se da a conocer además un producto de programa informático. El producto de programa informático incluye una instrucción ejecutable por un ordenador. La instrucción ejecutable por ordenador se almacena en un medio de almacenamiento legible por ordenador. Al menos un procesador de un terminal puede leer la instrucción ejecutable por ordenador desde el medio de almacenamiento legible por ordenador. El al menos un procesador ejecuta la instrucción ejecutable por ordenador, para permitir que el terminal realice las etapas realizadas por el decodificador de vídeo 202 en el método de inter predicción bidireccional que se muestra en la figura 4.
Todas o algunas de las realizaciones anteriores se pueden implementar usando software, hardware, firmware o cualquier combinación de los mismos. Cuando se usa software para implementar las realizaciones, las realizaciones se pueden implementar, completa o parcialmente, en una forma de un producto de programa informático. El producto de programa informático incluye una o más instrucciones informáticas. Cuando las instrucciones de programa informático se cargan y se ejecutan en el ordenador, se generan total o parcialmente los procedimientos o las funciones según las realizaciones de esta solicitud.
El ordenador puede ser un ordenador de propósito general, un ordenador de propósito especial, una red de ordenadores u otro aparato programable. Las instrucciones informáticas pueden ser almacenadas en un medio de almacenamiento legible por ordenador o pueden ser transmitidas desde un medio de almacenamiento legible por ordenador a otro medio de almacenamiento legible por ordenador. Por ejemplo, las instrucciones informáticas pueden ser transmitidas desde un sitio web, ordenador, servidor o centro de datos, a otro sitio web, ordenador, servidor o centro de datos, de una manera cableada (por ejemplo, un cable coaxial, una fibra óptica o una línea de abonado digital (DSL)) o de manera inalámbrica (por ejemplo, infrarrojo, radio o microondas). El medio de almacenamiento legible por ordenador puede ser cualquier medio utilizable accesible por un ordenador, o un dispositivo de almacenamiento de datos, tal como un servidor o un centro de datos, que integre uno o más medios utilizables. El medio utilizable puede ser un medio magnético (por ejemplo, un disquete, un disco duro o una cinta magnética), un medio óptico (por ejemplo, un DVD), un medio de semiconductores (por ejemplo, una unidad de estado sólido (Disco de Estado Sólido, Solid State Disk - SSD)) o similar.
Las descripciones anteriores de las implementaciones permiten que un experto en la materia entienda claramente que, con el propósito de una descripción breve y concisa, la división de los anteriores módulos funcionales se usa como ejemplo ilustrativo. En una solicitud real, las funciones anteriores pueden ser asignadas a diferentes módulos funcionales e implementadas según se requiera, es decir, una estructura interna de un aparato es dividida en diferentes módulos funcionales para implementar todas o algunas de las funciones descritas anteriormente.
En las diversas realizaciones dadas a conocer en esta solicitud, se debe entender que el aparato y procedimiento descritos se pueden implementar de otras maneras. Por ejemplo, la realización del aparato descrita es solo un ejemplo. Por ejemplo, la división en módulos o unidades es simplemente una división en funciones lógicas, y puede ser otra división en una implementación real. Por ejemplo, se pueden combinar o integrar una pluralidad de unidades o componentes en otro aparato, o algunas características se pueden ignorar o no realizar. Además, los acoplamientos mutuos o acoplamientos directos o conexiones de comunicación que se muestran o se analizan, se pueden implementar usando otras interfaces. Los acoplamientos indirectos o conexiones de comunicación entre los aparatos o unidades pueden implementarse de manera electrónica, mecánica, o de otro tipo.
Las unidades descritas como partes separadas pueden o no estar físicamente separadas, y las partes mostradas como unidades pueden ser una o más unidades físicas, pueden estar ubicadas en un lugar o pueden estar distribuidas en diferentes lugares. Algunos o todos los conjuntos pueden seleccionarse según los requisitos reales para lograr los objetivos de las soluciones de las realizaciones.
Además, las unidades funcionales en las realizaciones de esta solicitud se pueden integrar en una unidad de procesamiento, o cada una de las unidades puede existir físicamente de manera independiente, o dos o más unidades se integran en una unidad. La unidad integrada se puede implementar en una forma de hardware, o se puede implementar en una forma de unidad funcional de software.
Cuando la unidad integrada se implementa en forma de unidad funcional de software y se vende o se utiliza como un producto independiente, la unidad integrada se puede almacenar en un medio de almacenamiento legible. Basándose en dicha comprensión, las soluciones técnicas en las realizaciones de esta solicitud, esencialmente, o la parte que contribuye a la técnica anterior, o todas o algunas de las soluciones técnicas se pueden implementar en forma de un producto de software. El producto de software se almacena en un medio de almacenamiento e incluye varias instrucciones para indicar a un dispositivo (que puede ser un microordenador de un solo chip, un chip o similar) o un procesador que realice todas o algunas de las etapas de los procedimientos descritos en las realizaciones de esta solicitud. El medio de almacenamiento anterior incluye: cualquier medio que pueda almacenar código de programa, tal como una unidad flash USB, un disco duro extraíble, una memoria de solo lectura (ROM), una memoria de acceso aleatorio (RAM), un disco magnético o un disco óptico.
Las descripciones anteriores son, simplemente, implementaciones específicas de esta solicitud, pero no pretenden limitar el alcance de protección de esta solicitud. El alcance de protección de esta solicitud deberá estar sujeto al alcance de protección de las reivindicaciones.
Claims (7)
1. Un método de inter predicción bidireccional para uso en codificación de imágenes de vídeo, que comprende: obtener información de indicación (S400) analizando un flujo de bits, en donde la información de indicación incluye un identificador mv_derived_flag_l0;
cuando el identificador mv_derived_flag_l0 es 1:
obtener (S401) una primera información del movimiento; y
determinar (S402) una segunda información del movimiento basándose en la primera información del movimiento; y
cuando el identificador mv_derived_flag_l0 es 0:
analizar un segundo identificador mv_derived_flag_l1 y, cuando el segundo identificador mv_derived_flag_l1 es 1:
obtener la segunda información del movimiento; y
determinar la primera información del movimiento basándose en la segunda información del movimiento, en donde la primera información del movimiento es la información del movimiento de un bloque de imágenes actual en una primera dirección, y la segunda información del movimiento es la información del movimiento del bloque de imágenes actual en una segunda dirección; y
determinar (S403) muestras de predicción del bloque de imágenes actual basándose en la primera información del movimiento y en la segunda información del movimiento.
2. El método según la reivindicación 1, en donde la determinación de la segunda información del movimiento basándose en la primera información del movimiento comprende específicamente:
obtener un valor de índice de un primer fotograma de referencia y un primer vector de movimiento que están en la primera información del movimiento, en donde el primer fotograma de referencia es un fotograma de referencia del bloque de imágenes actual en la primera dirección, y el valor de índice del primer fotograma de referencia es un número del primer fotograma de referencia en una primera lista de fotogramas de referencia; obtener un valor de índice de un segundo fotograma de referencia, y determinar un segundo vector de movimiento previsto basándose en el valor de índice del segundo fotograma de referencia y una segunda lista de vectores de movimiento previstos candidatos, en donde el segundo vector de movimiento previsto es un vector de movimiento previsto del bloque de imagen actual en la segunda dirección, el segundo fotograma de referencia es un fotograma de referencia del bloque de imagen actual en la segunda dirección, y el valor de índice del segundo fotograma de referencia es un número del segundo fotograma de referencia en una segunda lista de fotogramas de referencia;
cuando el primer fotograma de referencia es un fotograma de referencia hacia delante del bloque de imágenes actual y el segundo fotograma de referencia es un fotograma de referencia hacia atrás del bloque de imágenes actual, o cuando el primer fotograma de referencia es un fotograma de referencia hacia atrás del bloque de imágenes actual y el segundo fotograma de referencia es un fotograma de referencia hacia delante del bloque de imágenes actual, o cuando el primer fotograma de referencia y el segundo fotograma de referencia son cada uno un fotograma de referencia hacia delante del bloque de imágenes actual, o cuando el primer fotograma de referencia y el segundo fotograma de referencia son cada uno un fotograma de referencia hacia atrás del bloque de imágenes actual, calculando una segunda diferencia de vector de movimiento en la segunda información de movimiento según la siguiente fórmula:
en donde mvd_lY representa la segunda diferencia del vector de movimiento, y mvd_lX representa una primera diferencia del vector de movimiento; y
determinar un segundo vector de movimiento basándose en el segundo vector de movimiento predicho y en la segunda diferencia del vector de movimiento, en donde el segundo vector de movimiento es un vector de movimiento del bloque de imágenes actual en la segunda dirección.
3. El método según la reivindicación 2, en donde la obtención de un valor de índice de un segundo fotograma de referencia comprende específicamente:
calcular un segundo número de secuencia basándose en el número de secuencia del fotograma actual y en el número de secuencia del primer fotograma de referencia según una fórmula (POC_Cur - POC_listX) * (POC_listY0' - POC_Cur) > 0, en donde POC_Cur representa el número de secuencia del fotograma actual, POC_listX representa el número de secuencia del primer fotograma de referencia, y POC_listY0' representa el segundo número de secuencia; y
cuando la segunda lista de fotogramas de referencia incluye el segundo número de secuencia, determinar, como valor de índice del segundo fotograma de referencia, un número de un fotograma de referencia representado por el segundo número de secuencia en la segunda lista de fotogramas de referencia.
4. Un aparato de inter predicción bidireccional para uso en codificación de imágenes de vídeo, que comprende:
una unidad de obtención, configurada para: obtener información de indicación analizando un flujo de bits, en donde la información de indicación incluye un identificador, mv_derived_flag_l0; y, cuando el identificador mv_derived_flag_l0 es 1, obtener una primera información del movimiento; y, cuando el identificador mv_derived_flag_l0 es 0, analizar un segundo identificador mv_derived_flag_l1 y, cuando el segundo identificador mv_derived_flag_l1 es 1, obtener una segunda información del movimiento; en donde la primera información del movimiento es información del movimiento de un bloque de imágenes actual en una primera dirección, y la segunda información del movimiento es información del movimiento del bloque de imágenes actual en una segunda dirección; y
una unidad de determinación, configurada para: cuando el identificador mv_derived_flag_l0 es 1, determinar la segunda información del movimiento basándose en la primera información del movimiento obtenida por la unidad de obtención; cuando el identificador mv_derived_flag_l0 es 0 y el identificador mv_derived_flag_l1 es 1, determinar la primera información del movimiento basándose en la segunda información del movimiento obtenida por la unidad de obtención; y determinar muestras de predicción del bloque de imágenes actual basándose en la primera información del movimiento y en la segunda información del movimiento.
5. El aparato según la reivindicación 4, en donde la unidad de determinación está configurada específicamente para:
obtener un valor de índice de un primer fotograma de referencia y un primer vector de movimiento que están en la primera información del movimiento, en donde el primer fotograma de referencia es un fotograma de referencia del bloque de imágenes actual en la primera dirección, y el valor de índice del primer fotograma de referencia es un número del primer fotograma de referencia en una primera lista de fotogramas de referencia;
obtener un valor de índice de un segundo fotograma de referencia, y determinar un segundo vector de movimiento predicho basándose en el valor de índice del segundo fotograma de referencia y en una segunda lista de vectores de movimiento predichos candidatos, en donde el segundo vector de movimiento predicho es un vector de movimiento predicho del bloque de imágenes actual en la segunda dirección, el segundo fotograma de referencia es un fotograma de referencia del bloque de imágenes actual en la segunda dirección, y el valor de índice del segundo fotograma de referencia es un número del segundo fotograma de referencia en una segunda lista de fotogramas de referencia;
cuando el primer fotograma de referencia es un fotograma de referencia hacia adelante del bloque de imágenes actual y el segundo fotograma de referencia es un fotograma de referencia hacia atrás del bloque de imágenes actual, o cuando el primer fotograma de referencia es un fotograma de referencia hacia atrás del bloque de imágenes actual y el segundo fotograma de referencia es un fotograma de referencia hacia adelante del bloque de imágenes actual, o cuando cada uno del primer fotograma de referencia y el segundo fotograma de referencia son un fotograma de referencia hacia adelante del bloque de imágenes actual, o cuando cada uno del primer fotograma de referencia y el segundo fotograma de referencia son un fotograma de referencia hacia atrás del bloque de imágenes actual, calcular una segunda diferencia de vector de movimiento en la segunda información del movimiento según la siguiente fórmula:
en donde mvd_lY representa la segunda diferencia del vector de movimiento, y mvd_lX representa una primera diferencia del vector de movimiento; y
determinar un segundo vector de movimiento basándose en el segundo vector de movimiento predicho y en la segunda diferencia del vector de movimiento, en donde el segundo vector de movimiento es un vector de movimiento del bloque de imágenes actual en la segunda dirección.
6. El aparato según la reivindicación 5, en donde la unidad de obtención está configurada específicamentepara:
calcular un segundo número de secuencia basándose en el número de secuencia del fotograma actual y en el número de secuencia del primer fotograma de referencia según una fórmula (POC_Cur - POC_listX) * (POC_listY0' - POC_Cur) > 0, en donde POC_Cur representa el número de secuencia del fotograma actual, POC_listX representa el número de secuencia del primer fotograma de referencia, y POC_listY0' representa el segundo número de secuencia; y
cuando la segunda lista de fotogramas de referencia incluye el segundo número de secuencia, determinar, como valor de índice del segundo fotograma de referencia, un número de un fotograma de referencia representado por el segundo número de secuencia en la segunda lista de fotogramas de referencia.
7. Un medio de almacenamiento legible por ordenador, que comprende una instrucción, en donde cuando la instrucción es ejecutada en un terminal, el terminal debe realizar el método de inter predicción bidireccional según cualquiera de las reivindicaciones 1 a 3.
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN201810274457.XA CN110324637B (zh) | 2018-03-29 | 2018-03-29 | 一种双向帧间预测方法及装置 |
| PCT/CN2019/071471 WO2019184556A1 (zh) | 2018-03-29 | 2019-01-11 | 一种双向帧间预测方法及装置 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| ES3004045T3 true ES3004045T3 (en) | 2025-03-11 |
Family
ID=68062196
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| ES19776934T Active ES3004045T3 (en) | 2018-03-29 | 2019-01-11 | Bidirectional inter-prediction method and device |
Country Status (20)
| Country | Link |
|---|---|
| US (5) | US11350122B2 (es) |
| EP (2) | EP4468710A3 (es) |
| JP (3) | JP7143435B2 (es) |
| KR (2) | KR102525178B1 (es) |
| CN (6) | CN113315975B (es) |
| AU (1) | AU2019240981B2 (es) |
| CA (1) | CA3095220C (es) |
| DK (1) | DK3771211T3 (es) |
| ES (1) | ES3004045T3 (es) |
| FI (1) | FI3771211T3 (es) |
| HU (1) | HUE069384T2 (es) |
| MX (1) | MX2020010174A (es) |
| MY (1) | MY204919A (es) |
| PH (1) | PH12020551544A1 (es) |
| PL (1) | PL3771211T3 (es) |
| PT (1) | PT3771211T (es) |
| RU (1) | RU2762262C1 (es) |
| SG (1) | SG11202009509VA (es) |
| WO (1) | WO2019184556A1 (es) |
| ZA (1) | ZA202006408B (es) |
Families Citing this family (6)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN113315975B (zh) | 2018-03-29 | 2022-12-06 | 华为技术有限公司 | 一种双向帧间预测方法及装置 |
| CN113709488B (zh) * | 2020-06-30 | 2023-02-28 | 杭州海康威视数字技术股份有限公司 | 一种编解码方法、装置及其设备 |
| CN114071159B (zh) * | 2020-07-29 | 2023-06-30 | Oppo广东移动通信有限公司 | 帧间预测方法、编码器、解码器及计算机可读存储介质 |
| CN115512257B (zh) * | 2021-06-21 | 2025-12-02 | Oppo广东移动通信有限公司 | 用于反馈运动表现的方法、装置、设备及存储介质 |
| CN116320428A (zh) * | 2021-12-20 | 2023-06-23 | 维沃移动通信有限公司 | 帧间预测方法及终端 |
| CN114339219B (zh) * | 2021-12-31 | 2025-08-01 | 浙江大华技术股份有限公司 | 帧间预测方法、装置、编解码方法、编解码器及电子设备 |
Family Cites Families (36)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| ES2354251T3 (es) * | 2002-10-04 | 2011-03-11 | Lg Electronics Inc. | Método para extraer vectores de movimiento de modo directo. |
| CN1225127C (zh) * | 2003-09-12 | 2005-10-26 | 中国科学院计算技术研究所 | 一种用于视频编码的编码端/解码端双向预测方法 |
| US8917769B2 (en) | 2009-07-03 | 2014-12-23 | Intel Corporation | Methods and systems to estimate motion based on reconstructed reference frames at a video decoder |
| KR20110071047A (ko) * | 2009-12-20 | 2011-06-28 | 엘지전자 주식회사 | 비디오 신호 디코딩 방법 및 장치 |
| EP3913923A1 (en) | 2010-01-19 | 2021-11-24 | Samsung Electronics Co., Ltd. | Method and apparatus for encoding/decoding images using a motion vector of a previous block as a motion vector for the current block |
| JP5281597B2 (ja) * | 2010-02-04 | 2013-09-04 | 日本電信電話株式会社 | 動きベクトル予測方法,動きベクトル予測装置および動きベクトル予測プログラム |
| WO2011142815A1 (en) * | 2010-05-12 | 2011-11-17 | Thomson Licensing | Methods and apparatus for uni-prediction of self-derivation of motion estimation |
| CN105744282B (zh) * | 2010-05-26 | 2018-10-23 | Lg电子株式会社 | 用于处理视频信号的方法和设备 |
| US9357229B2 (en) * | 2010-07-28 | 2016-05-31 | Qualcomm Incorporated | Coding motion vectors in video coding |
| KR102401123B1 (ko) * | 2011-02-09 | 2022-05-23 | 엘지전자 주식회사 | 움직임 정보 저장 방법 및 이를 이용한 시간적 움직임 벡터 예측자 유도 방법 |
| JP2012186762A (ja) | 2011-03-08 | 2012-09-27 | Mitsubishi Electric Corp | 動画像符号化装置、動画像復号装置、動画像符号化方法及び動画像復号方法 |
| US9288501B2 (en) * | 2011-03-08 | 2016-03-15 | Qualcomm Incorporated | Motion vector predictors (MVPs) for bi-predictive inter mode in video coding |
| JP5786498B2 (ja) * | 2011-06-30 | 2015-09-30 | 株式会社Jvcケンウッド | 画像符号化装置、画像符号化方法及び画像符号化プログラム |
| US9094689B2 (en) | 2011-07-01 | 2015-07-28 | Google Technology Holdings LLC | Motion vector prediction design simplification |
| CN107277533B (zh) * | 2011-10-28 | 2020-04-24 | 三星电子株式会社 | 帧间预测的方法及其装置和运动补偿的方法及其装置 |
| JP2013106312A (ja) * | 2011-11-16 | 2013-05-30 | Jvc Kenwood Corp | 画像符号化装置、画像符号化方法及び画像符号化プログラム |
| CN103188490A (zh) * | 2011-12-29 | 2013-07-03 | 朱洪波 | 视频编码中的合并补偿模式 |
| WO2013109124A1 (ko) | 2012-01-19 | 2013-07-25 | 삼성전자 주식회사 | 쌍방향 예측 및 블록 병합을 제한하는 비디오 부호화 방법 및 장치, 비디오 복호화 방법 및 장치 |
| JP5997363B2 (ja) | 2012-04-15 | 2016-09-28 | サムスン エレクトロニクス カンパニー リミテッド | ビデオ復号化方法及びビデオ復号化装置 |
| MX358152B (es) | 2012-07-02 | 2018-08-07 | Samsung Electronics Co Ltd | Método y aparato para codificar video y método y aparato para decodificar video determinando la lista de cuadros de referencia inter-prediccion, dependiendo del tamaño del bloque. |
| JP6120707B2 (ja) * | 2013-07-08 | 2017-04-26 | ルネサスエレクトロニクス株式会社 | 動画像符号化装置およびその動作方法 |
| CN104427345B (zh) * | 2013-09-11 | 2019-01-08 | 华为技术有限公司 | 运动矢量的获取方法、获取装置、视频编解码器及其方法 |
| CN104717512B (zh) * | 2013-12-16 | 2019-07-23 | 浙江大学 | 一种前向双假设编码图像块的编解码方法和装置 |
| GB2524476B (en) | 2014-03-14 | 2016-04-27 | Canon Kk | Method, device and computer program for optimizing transmission of motion vector related information when transmitting a video stream |
| EP3202143B8 (en) | 2014-11-18 | 2019-09-25 | MediaTek Inc. | Method of bi-prediction video coding based on motion vectors from uni-prediction and merge candidate |
| US10958927B2 (en) * | 2015-03-27 | 2021-03-23 | Qualcomm Incorporated | Motion information derivation mode determination in video coding |
| EP3342167B1 (en) | 2015-09-02 | 2020-12-30 | MediaTek, Inc | Method and apparatus of decoder side motion derivation for video coding |
| WO2017065525A2 (ko) * | 2015-10-13 | 2017-04-20 | 삼성전자 주식회사 | 영상을 부호화 또는 복호화하는 방법 및 장치 |
| US20200351505A1 (en) * | 2016-04-28 | 2020-11-05 | Lg Electronics Inc. | Inter prediction mode-based image processing method and apparatus therefor |
| CN116567261A (zh) | 2016-05-24 | 2023-08-08 | 韩国电子通信研究院 | 图像编码/解码方法和用于所述方法的记录介质 |
| US10462462B2 (en) * | 2016-09-29 | 2019-10-29 | Qualcomm Incorporated | Motion vector difference coding technique for video coding |
| US12063387B2 (en) * | 2017-01-05 | 2024-08-13 | Hfi Innovation Inc. | Decoder-side motion vector restoration for video coding |
| US10595035B2 (en) * | 2017-03-22 | 2020-03-17 | Qualcomm Incorporated | Constraining motion vector information derived by decoder-side motion vector derivation |
| CN113315975B (zh) * | 2018-03-29 | 2022-12-06 | 华为技术有限公司 | 一种双向帧间预测方法及装置 |
| CN115842912A (zh) * | 2018-08-04 | 2023-03-24 | 抖音视界有限公司 | 不同解码器侧运动矢量推导模式之间的交互 |
| ES3042386T3 (en) * | 2019-04-28 | 2025-11-20 | Beijing Bytedance Network Tech Co Ltd | Symmetric motion vector difference coding |
-
2018
- 2018-03-29 CN CN202110443658.XA patent/CN113315975B/zh active Active
- 2018-03-29 CN CN202010763105.8A patent/CN112040244B/zh active Active
- 2018-03-29 CN CN201810274457.XA patent/CN110324637B/zh active Active
- 2018-03-29 CN CN202311519172.5A patent/CN117560505A/zh active Pending
- 2018-03-29 CN CN202311519450.7A patent/CN117560506A/zh active Pending
- 2018-03-29 CN CN202311519024.3A patent/CN117528116A/zh active Pending
-
2019
- 2019-01-11 MY MYPI2020005012A patent/MY204919A/en unknown
- 2019-01-11 JP JP2020552815A patent/JP7143435B2/ja active Active
- 2019-01-11 FI FIEP19776934.2T patent/FI3771211T3/fi active
- 2019-01-11 WO PCT/CN2019/071471 patent/WO2019184556A1/zh not_active Ceased
- 2019-01-11 SG SG11202009509VA patent/SG11202009509VA/en unknown
- 2019-01-11 AU AU2019240981A patent/AU2019240981B2/en active Active
- 2019-01-11 KR KR1020207029639A patent/KR102525178B1/ko active Active
- 2019-01-11 KR KR1020237013341A patent/KR102622150B1/ko active Active
- 2019-01-11 DK DK19776934.2T patent/DK3771211T3/da active
- 2019-01-11 CA CA3095220A patent/CA3095220C/en active Active
- 2019-01-11 EP EP24206485.5A patent/EP4468710A3/en active Pending
- 2019-01-11 ES ES19776934T patent/ES3004045T3/es active Active
- 2019-01-11 MX MX2020010174A patent/MX2020010174A/es unknown
- 2019-01-11 EP EP19776934.2A patent/EP3771211B1/en active Active
- 2019-01-11 RU RU2020134970A patent/RU2762262C1/ru active
- 2019-01-11 PT PT197769342T patent/PT3771211T/pt unknown
- 2019-01-11 PL PL19776934.2T patent/PL3771211T3/pl unknown
- 2019-01-11 HU HUE19776934A patent/HUE069384T2/hu unknown
-
2020
- 2020-09-23 PH PH12020551544A patent/PH12020551544A1/en unknown
- 2020-09-25 US US16/948,625 patent/US11350122B2/en active Active
- 2020-10-15 ZA ZA2020/06408A patent/ZA202006408B/en unknown
-
2022
- 2022-04-27 US US17/731,109 patent/US11924458B2/en active Active
- 2022-05-27 US US17/827,361 patent/US11838535B2/en active Active
- 2022-09-14 JP JP2022146320A patent/JP7520931B2/ja active Active
-
2024
- 2024-01-18 US US18/416,294 patent/US12238325B2/en active Active
- 2024-07-10 JP JP2024111033A patent/JP7755005B2/ja active Active
-
2025
- 2025-01-15 US US19/022,973 patent/US20250159236A1/en active Pending
Also Published As
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| ES3004045T3 (en) | Bidirectional inter-prediction method and device | |
| ES3032692T3 (en) | Method and device for bidirectional inter frame prediction | |
| ES3012742T3 (en) | Interframe prediction method and device for video data | |
| BR112013032110B1 (pt) | Método e equipamento para codificar um vetor de movimento em um processo de codificação de vídeo, método e equipamento para decodificar um vetor de movimento em um processo de codificação de vídeo e memória legível por computador | |
| US20240196003A1 (en) | Method for constructing candidate motion information list, inter prediction method, and apparatus | |
| CN111355958A (zh) | 视频解码方法及装置 | |
| BR112020018923B1 (pt) | Método e aparelho de predição inter bidirecional | |
| CN110971899B (zh) | 一种确定运动信息的方法、帧间预测方法及装置 | |
| BR122023008923B1 (pt) | Método e aparelho de predição inter bidirecional | |
| BR122023008929B1 (pt) | Método e aparelho de predição inter bidirecional |