ES2965276T3 - Método de decodificación de vídeo y decodificador de vídeo - Google Patents

Método de decodificación de vídeo y decodificador de vídeo Download PDF

Info

Publication number
ES2965276T3
ES2965276T3 ES19860657T ES19860657T ES2965276T3 ES 2965276 T3 ES2965276 T3 ES 2965276T3 ES 19860657 T ES19860657 T ES 19860657T ES 19860657 T ES19860657 T ES 19860657T ES 2965276 T3 ES2965276 T3 ES 2965276T3
Authority
ES
Spain
Prior art keywords
syntax element
current block
block
context
video
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
ES19860657T
Other languages
English (en)
Inventor
Huanbang Chen
Haitao Yang
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Application granted granted Critical
Publication of ES2965276T3 publication Critical patent/ES2965276T3/es
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/13Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/537Motion estimation other than block-based
    • H04N19/54Motion estimation other than block-based using feature points or meshes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/117Filters, e.g. for pre-processing or post-processing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/124Quantisation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/157Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
    • H04N19/159Prediction type, e.g. intra-frame, inter-frame or bidirectional frame prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods 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/176Methods 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/44Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/513Processing of motion vectors
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/513Processing of motion vectors
    • H04N19/517Processing of motion vectors by encoding
    • H04N19/52Processing of motion vectors by encoding by predictive encoding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/91Entropy coding, e.g. variable length coding [VLC] or arithmetic coding

Landscapes

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

Abstract

La presente invención da a conocer un método de decodificación de vídeo y un descodificador de vídeo. El método comprende: analizar un flujo de código recibido y adquirir un elemento semántico para someterlo a decodificación por entropía en un bloque actual, comprendiendo el elemento semántico el elemento semántico 1 del bloque actual o el elemento semántico 2 del mismo; adquirir un modelo de contexto correspondiente a dicho elemento semántico, en el que un modelo de contexto del elemento semántico 1 se determina a partir de un conjunto de modelos de contexto predeterminado, o un modelo de contexto del elemento semántico 2 se determina a partir del conjunto de modelos de contexto predeterminado; realizar una decodificación entrópica de dicho elemento semántico en el bloque actual en base al modelo de contexto correspondiente al mismo; realizar un procesamiento de predicción en el bloque actual basándose en el elemento semántico del bloque actual obtenido a partir de la decodificación de entropía, y adquirir un bloque de predicción del bloque actual; y adquirir una imagen de reconstrucción del bloque actual en base al bloque de predicción del bloque actual. La invención reduce el espacio de memoria ocupado por los modelos de contexto. (Traducción automática con Google Translate, sin valor legal)

Description

DESCRIPCIÓN
Método de decodificación de vídeo y decodificador de vídeo
Campo técnico
Las realizaciones de esta solicitud generalmente se refieran al campo de la codificación de vídeo, y de manera más específica, a un método de decodificación de vídeo y un decodificador de vídeo.
Antecedentes
La codificación de vídeo (codificación y decodificación de vídeo) es utilizada en un amplio gama de aplicaciones de vídeo digital, por ejemplo, TV digital de difusión, transmisión de vídeo sobre Internet y redes móviles, aplicaciones conversacionales en tiempo real tales como salas de conversaciones por vídeo y vídeo conferencia, discos DVD y Blu-ray, y aplicaciones de seguridad de sistemas de adquisición y edición de contenido de vídeo y videocámaras.
Con el desarrollo de un modo de codificación de vídeo híbrido basándose en bloque en la norma H.261 en 1990, se han desarrollado nuevas tecnologías y herramientas de codificación de vídeo que sientas las bases para nuevas normas de codificación de vídeo. Otras normas de codificación de vídeo incluyen vídeo MPEG-1, vídeo MPEG-2, ITU-T H.262/MPEG-2, ITU-T H.263, ITU-T H.264/MPEG-4 Parte 10: codificación de vídeo avanzada (Advanced Vídeo Coding, AVC), e ITU-T H.265/codificación de vídeo de alta eficiencia (High Efficiency Vídeo Coding, HEVC), y extensiones de dichas normas, por ejemplo, extensiones de escalabilidad y/o 3D (tridimensional) de dichas normas. A medida que la creación y uso de vídeo se difunde cada vez más, el tráfico de vídeo se ha convertido en una de las mayores carga para redes de comunicaciones y almacenamiento de datos. Por lo tanto, uno de los objetivos de la mayoría de las normas de codificación de vídeo es reducir una tasa de bits sin sacrificar la calidad de imágenes en comparación con normas previas. Aunque la última codificación de vídeo de alta eficiencia (high efficiency video coding, HEVC) puede comprimir vídeos aproximadamente el doble que AVC sin sacrificar la calidad de la imagen, sigue existiendo una necesidad urgente de una nueva tecnología para comprimir adicionalmente vídeos en comparación con HEVC.
El documento US20130016789A1 describe un método para codificar datos de vídeo que incluye recibir una unidad de transformada que comprende una matriz bidimensional de coeficientes de transformada y procesar los coeficientes de transformada de la matriz bidimensional a lo largo de un orden de exploración de un solo nivel, y seleccionar, para cada coeficiente de transformada distinto de cero a lo largo del orden de exploración de un solo nivel, uno o más modelos de contexto para codificar un nivel absoluto del coeficiente de transformada distinto de cero, donde la selección se basa en uno o más coeficientes de transformada codificados previamente a lo largo del orden de exploración de un solo nivel.
Compendio
Las realizaciones de esta solicitud proporcionan un método de decodificación de vídeo y un decodificador de vídeo, para reducir el espacio requerido por un codificador o un decodificador para almacenar un contexto.
Lo anterior así como otros objetivos se logran a través del objeto de las reivindicaciones independientes. Otras implementaciones son evidentes a partir de las reivindicaciones dependientes, la descripción y los dibujos adjuntos.
Breve descripción de la figuras
Para describir las soluciones técnicas en las realizaciones de esta solicitud o en los antecedentes de manera más clara, lo siguiente describe brevemente los dibujos adjuntos requeridos para describir las realizaciones de esta solicitud o los antecedentes.
La figura 1 es un diagrama de bloques de un ejemplo de un sistema de codificación de vídeo para implementar una realización de la presente invención;
la figura 2 es un diagrama de bloques que ilustra una estructura de un codificador de vídeo de ejemplo para implementar una realización de la presente invención;
la figura 3 es un diagrama de bloques que ilustra una estructura de un decodificador de vídeo de ejemplo para implementar una realización de la presente invención;
la figura 4 es un diagrama que ilustra un sistema de codificación de vídeo que incluye un codificador 20 en la figura 2 y un decodificador 30 en la figura 3;
la figura 5 es un diagrama de bloques que ilustra un ejemplo de otro aparato de codificación o aparato de decodificación;
la figura 6 es un diagrama esquemático que ilustra posiciones de información de movimiento candidata en dominio de espacio y dominio de tiempo de un bloque actual según una realización;
la figura 7 es un diagrama esquemático que ilustra posiciones de un bloque actual y una pluralidad de bloques de posición vecinos según una realización;
la figura 8A es un diagrama de flujo que ilustra un método para predecir un vector de movimiento de punto de control construido según una realización;
la figura 8B es un diagrama de flujo que ilustra un método para predecir un vector de movimiento de punto de control construido según una realización;
la figura 9A es un diagrama de flujo que ilustra un método de interpredicción según una realización.
la figura 9B es un diagrama de flujo que ilustra un método para predecir un vector de movimiento de punto de control construido según una realización;
la figura 9C es un diagrama esquemático que ilustra una posición de una unidad de compensación de movimiento basándose en un punto central de la unidad de compensación de movimiento según una realización;
la figura 10 es un diagrama de flujo que ilustra un método de decodificación de vídeo según un ejemplo que no comprende todas las características necesarias para implementar la invención reivindicada;
la figura 11 es un diagrama de flujo que ilustra un método de decodificación de vídeo según una realización; y
la figura 12 es un diagrama de flujo que ilustra un método de decodificación de vídeo según una realización un ejemplo que no comprende todas las características necesarias para implementar la invención reivindicada.
En lo sucesivo, símbolos de referencia idénticos representan características idénticas o al menos funcionalmente equivalentes a menos que se especifique lo contrario.
Descripción de las realizaciones
En la siguiente descripción, se hace referencia a los dibujos adjuntos que forman una parte de esta descripción y que muestran, a manera de ilustración, aspectos específicos de las realizaciones de la presente invención o aspectos específicos en los cuales se pueden utilizar las realizaciones de la presente invención. Se debe entender que las realizaciones de la presente invención se pueden utilizar en otros aspectos, y pueden incluir cambios estructurales o lógicos no mostrados en los dibujos adjuntos. Por lo tanto, la siguiente descripción detallada no se debe interpretar como una limitación, y el alcance de la presente invención es definido por las reivindicaciones adjuntas.
Por ejemplo, se debe entender que el contenido descrito con referencia a un método descrito puede también ser aplicado a un dispositivo o método correspondiente configurado para realizar el método, y viceversa. Por ejemplo, si se describen uno o más de las etapas del método específico, un dispositivo correspondiente puede incluir una o más unidades tales como unidades de función para realizar una o más etapas del método descrito (por ejemplo, una unidad que realiza una o más etapas, o una pluralidad de unidades, cada una de las cuales realiza una o más de la pluralidad de etapas), incluso si dichas unidades no se describen o ilustran explícitamente en los dibujos adjuntos. Además, por ejemplo, si un aparato específico se describe basándose en una o más unidades tales como unidades de función, un método correspondiente puede incluir una etapa para realizar la funcionalidad de una o más unidades (por ejemplo, una etapa para realizar la funcionalidad de una o más unidades, o una pluralidad de etapas, cada una de los cuales es utilizada para realizar la funcionalidad de una o más de la pluralidad de unidades), incluso si dicha etapa o etapas no son explícitamente descritas o ilustradas en los dibujos adjuntos. Además, se debe entender que características de las diversas realizaciones y/o aspectos ejemplares descritos en esta memoria descriptiva se pueden combinar entre sí, a menos que específicamente se indique lo contrario.
La codificación de vídeo suele procesar una secuencia de imágenes que forman un vídeo o una secuencia de vídeo. En el campo de la codificación de vídeo, los términos "imagen (picture)", "fotograma (frame)", y "fotografía (image)" pueden ser utilizados como sinónimos. La codificación de vídeo utilizada en esta solicitud (o esta descripción) indica la codificación de vídeo o decodificación de vídeo. La codificación de vídeo es realizada en un lado origen, y suele incluir el procesamiento (por ejemplo, a través de compresión) de una imagen de vídeo original para reducir una cantidad de datos requeridos para representar la imagen de vídeo (para un almacenamiento y/o transmisión más eficiente). La decodificación de vídeo es realizada en un lado destino, y suele incluir procesamiento inverso con relación a un codificador para reconstruir una imagen de vídeo. "Codificación" de una imagen de vídeo (o generalmente denominada imagen, que se explica a continuación) en las realizaciones se debe entender como "codificación" o "decodificación" relacionada con una secuencia de vídeo. Una combinación de codificación y decodificación también denomina codificación (codificación y decodificación).
En un caso de codificación de vídeo sin pérdida, una imagen de vídeo original puede ser reconstruida, es decir, una imagen de vídeo reconstruida tiene la misma calidad que la imagen de vídeo original (asumiendo que no se produce una pérdida de transmisión u otra pérdida de datos durante el almacenamiento o transmisión). En un caso de codificación de vídeo con pérdida, se realiza una compresión adicional a través de la cuantificación y similar, para reducir una cantidad de datos requeridos para representar una imagen de vídeo, y una imagen de vídeo no puede ser completamente reconstruida en un lado del decodificador, es decir, la calidad de una imagen de vídeo reconstruida es más deficiente que aquella de la imagen de vídeo original.
Varias normas de codificación de vídeo H.261 se refieren a "codificación de vídeo híbrida con pérdida" (es decir, predicción espacial y temporal en un dominio de muestra se combina con codificación de transformada 2D para aplicar cuantificación en un dominio de transformada). Cada imagen en una secuencia de vídeo generalmente se divide en un conjunto de bloques que no se traslapan, y la codificación generalmente se realiza a un nivel de bloque. Para ser específico, en un lado de codificador, un vídeo generalmente es procesado, es decir, codificado, a un nivel de bloque (bloque de vídeo). Por ejemplo, un bloque de predicción es generado a través de predicción espacial (intraimagen) y predicción temporal (interimagen), el bloque de predicción es sustraído de un bloque actual (un bloque que actualmente está siendo procesado o que va a ser procesado) para obtener un bloque residual, y el bloque residual es transformado en el dominio de transformada y cuantificado para reducir una cantidad de datos que van a ser transmitidos (comprimidos). En un lado del decodificador, el procesamiento inverso relativo al codificador es aplicado al bloque codificado o comprimido para reconstruir el bloque actual para su representación. Además, el codificador duplica un bucle de procesamiento del decodificador, de manera que el codificador y el decodificador generan la misma predicción (por ejemplo, intrapredicción e interpredicción) y/o reconstrucción para su procesamiento, es decir, codificación de un bloque subsiguiente.
Tal como se utiliza en esta memoria descriptiva, el término "bloque" puede ser una parte de una imagen o un fotograma. Para facilidad de la descripción, se hace referencia a la codificación de vídeo versátil (VVC: Versatile Video Coding) o codificación de vídeo de alta eficiencia (High-Efficiency Video Coding, HEVC) desarrollada por el equipo de colaboración conjunto en codificación de vídeo (Joint Collaboration Team on Video Coding, j CT-VC) del grupo de expertos de codificación de vídeo ITU-T (Video Coding Experts Group, VCEG) y el grupo de expertos de imágenes en movimiento ISO/IEC (Motion Picture Experts Group, MPEG), para describir las realizaciones de la presente invención. Un experto en la técnica entiende que las realizaciones de la presente invención no se limitan a HEVC o VVC, y el bloque puede ser una CU, una PU, o una TU. En HEVC, una CTU es dividida en una pluralidad de CUs utilizando una estructura de árbol cuaternario denotado como un árbol de codificación. Se determina si una región de imagen es codificada a través predicción interimagen (temporal) o intraimagen (espacial) a un nivel de CU. Cada CU además se puede dividir en una, dos o cuatro PUs basándose en un tipo de división de PU. Un mismo proceso de predicción es aplicado dentro de una PU, e información relacionada es transmitida a un decodificador basándose en la PU. Después de obtener un bloque residual aplicando el proceso de predicción basándose en el tipo de división de PU, la CU se puede dividir en una unidad de transformada (transform unit, TU) basándose en otra estructura de árbol cuaternario similar al árbol de codificación utilizado en la CU. En el último desarrollo de las tecnologías de compresión de vídeo, un fotograma es dividido a través de un árbol cuaternario más un árbol binario (Quad-tree plus binary tree, QTBT) para dividir un bloque de codificación. En una estructura de bloque QTBT, una CU puede ser cuadrada o rectangular. En VVC, una unidad de árbol de codificación (coding tree unit, CTU) primero es dividida utilizando una estructura de árbol cuaternario, y un nodo hoja de árbol cuaternario es dividido adicionalmente utilizando una estructura de árbol binario. Un nodo hoja de árbol binario se denomina unidad de codificación (CU), y la división es utilizada para su procesamiento de predicción y transformada sin alguna otra división. Esto significa que la CU, la PU, y la TU tienen un mismo tamaño de bloque en la estructura de bloque de codificación QTBT. Además, la división por multiplicación es utilizada junto con la estructura de bloque QTBT, por ejemplo, división de árbol triple.
Lo siguiente describe realizaciones de un codificador 20, un decodificador 30, un sistema 10 de codificación, y un sistema de decodificación 40 basándose en las figuras 1 a 4 (antes que las realizaciones de la presente invención se describan con mayor detalle basándose en la figura 10).
La figura 1 es un diagrama de bloques conceptual o esquemático que ilustra un sistema 10 de codificación ejemplar, por ejemplo, un sistema 10 de codificación de vídeo que puede utilizar la tecnología de esta solicitud (esta descripción). Un codificador 20 (por ejemplo, un codificador 20 de vídeo) y un decodificador 30 (por ejemplo, un decodificador 30 de vídeo) en el sistema 10 de codificación de vídeo representan ejemplos de dispositivos que pueden ser configurados para realizar tecnologías para... (división/intrapredicción/...) según varios ejemplos descritos en esta solicitud. Como se muestra en la figura 1, el sistema 10 de codificación incluye un dispositivo 12 de origen configurado para proporcionar datos 13 codificados tales como una imagen codificada 13 a un dispositivo 14 de destino para decodificar los datos 13 codificados, o similares.
El dispositivo 12 de origen incluye el codificador 20, y adicionalmente u opcionalmente, puede incluir un origen 16 de imágenes, por ejemplo, una unidad 18 de preprocesamiento tal como una unidad 18 de preprocesamiento de imágenes, y una interfaz de comunicaciones o unidad 22 de comunicaciones.
La origen 16 de imágenes puede incluir o puede ser cualquier tipo de dispositivo de captura de imágenes configurado para capturar una imagen del mundo real y similar, y/o cualquier tipo de dispositivo para generar una imagen o comentario (para codificación de contenido de pantalla, cierto texto en una pantalla es también considerado como una parte de una fotografía o imagen a codificar), por ejemplo, una unidad de procesamiento de gráficos por ordenador configurada para generar una imagen de animación por ordenador, o cualquier tipo de dispositivo configurado para obtener y/o proporcionar una imagen del mundo real o una imagen de animación por ordenador (por ejemplo, contenido de pantalla o una imagen de realidad virtual (virtual reality, VR)), y/o cualquier combinación de los mismos (por ejemplo, una imagen de realidad aumentada (augmented reality, AR)).
Una imagen (digital) es o se puede considerar como un conjunto bidimensional o matriz de muestras con valores de luminancia. La muestra en el conjunto también se puede referir como un píxel (pixel) (una forma corta de un elemento de imagen (picture element)) o un pel. Una cantidad de muestras en direcciones (o ejes) horizontal y vertical del conjunto o la imagen define un tamaño y/o una resolución de la imagen. Para representación de color, generalmente se utilizan tres componentes de color, es decir, la imagen puede ser representada como o puede incluir tres conjuntos de muestras. En formato RBG o espacio de color, una imagen incluye conjuntos de muestras de rojo, verde y azul correspondientes. No obstante, en codificación de vídeo, cada muestra por lo general es representada en un formato de luminancia/crominancia o espacio de color, por ejemplo, una imagen en formato YCbCr incluye un componente de luminancia indicado por Y (en ocasiones indicado por L) y dos componentes de crominancia indicados por Cb y Cr. El componente de luminancia (luma para abreviar) Y indica la intensidad del nivel de grises o luminancia (por ejemplo, los dos son iguales en una imagen en escala de grises), y los dos componentes de crominancia (croma para abreviar) Cb y Cr representan los componentes de información de color y crominancia. Por consiguiente, la imagen en formato YCbCr incluye un conjunto de muestras de luminancia de valores de muestras de luminancia (Y), y dos conjuntos de muestras de crominancia de valores de crominancia (Cb y Cr). Una imagen en formato RGB puede ser convertida o transformada en una imagen en formato YCbCr, y viceversa. Este proceso también se denomina transformada o conversión de color. Si una imagen es monocromática, la imagen puede incluir solamente un conjunto de muestras de luminancia.
El origen 16 de imágenes (por ejemplo, un origen 16 de imágenes de vídeo) puede ser, por ejemplo, una cámara configurada para capturar una imagen, por ejemplo, una memoria tal como una memoria de imágenes, la cual incluye o almacena una imagen previamente capturada o generada, y/o cualquier tipo de interfaz (interna o externa) para obtener o recibir una imagen. La cámara puede ser, por ejemplo, una cámara local o una cámara integrada incorporada en el dispositivo de origen, y la memoria puede ser una memoria local o una memoria integrada incorporada en el dispositivo de origen. La interfaz puede ser, por ejemplo, una interfaz externa para recibir una imagen desde un origen de vídeo externo. El origen de vídeo externo, por ejemplo, es un dispositivo de captura de imágenes externo tal como una cámara, una memoria externa, o un dispositivo de generación de imágenes externo. El dispositivo de generación de imágenes externo, por ejemplo, es una unidad de procesamiento de gráficos por ordenador externa, un ordenador, o un servidor. La interfaz puede ser cualquier tipo de interfaz según cualquier protocolo de interfaz estandarizado o patentado, por ejemplo, una interfaz por cable o inalámbrica o una interfaz óptica. La interfaz 17 para obtener datos de imagen puede ser una interfaz igual que la interfaz 22 de comunicaciones, o puede ser una parte de la interfaz 22 de comunicaciones.
A diferencia de la unidad 18 de preprocesamiento y el procesamiento realizado por la unidad 18 de preprocesamiento, la imagen 17 o los datos 17 de imagen (por ejemplo, datos 16 de vídeo) también pueden denominarse imagen 17 original o datos 17 de imagen original.
La unidad 18 de preprocesamiento está configurada para recibir los datos 17 de imagen (original) y realizar preprocesamiento en los datos 17 de imagen, para obtener una imagen 19 preprocesada o datos 19 de imagen preprocesada. Por ejemplo, el procesamiento realizado por la unidad 18 de preprocesamiento puede incluir recorte, conversión de formato de color (por ejemplo, de RGB a YCbCr), corrección de color, o reducción de ruido. Se puede entender que la unidad 18 de preprocesamiento puede ser un componente opcional.
El codificador 20 (por ejemplo, el codificador 20 de vídeo) está configurado para recibir los datos 19 de imagen preprocesada y puede proporcionar datos 21 de imagen codificados (a continuación, se describen detalles adicionales, por ejemplo, basándose en la figura 2 o 4). En un ejemplo, el codificador 20 puede ser configurado para codificar una imagen.
La interfaz 22 de comunicaciones del dispositivo 12 de origen puede ser configurada para recibir los datos 21 de imagen codificados y transmitir los datos 21 de imagen codificados a otro dispositivo, por ejemplo, el dispositivo 14 de destino o cualquier otro dispositivo, para almacenamiento o reconstrucción directa, o se puede configurar para procesar los datos 21 de imagen codificados antes de almacenar de manera correspondiente los datos 13 codificados y/o transmitir los datos 13 codificados a otro dispositivo. El otro dispositivo, por ejemplo, es el dispositivo 14 de destino o cualquier otro dispositivo utilizado para decodificación o almacenamiento.
El dispositivo 14 de destino incluye el decodificador 30 (por ejemplo, el decodificador 30 de vídeo), y adicionalmente u opcionalmente, puede incluir una interfaz de comunicaciones o una unidad 28 de comunicaciones, una unidad 32 de postprocesamiento, y un dispositivo 34 de visualización.
Por ejemplo, la interfaz 28 de comunicaciones del dispositivo 14 de destino está configurada para recibir directamente los datos 21 de imagen codificados o los datos 13 codificados desde el dispositivo 12 de origen o cualquier otro origen. El cualquier otro origen, por ejemplo, es un dispositivo de almacenamiento, y el dispositivo de almacenamiento, por ejemplo, es un dispositivo de almacenamiento de datos de imagen codificados.
La interfaz 22 de comunicaciones y la interfaz 28 de comunicaciones pueden ser configuradas para transmitir o recibir los datos 21 de imagen codificados o los datos 13 codificados sobre un enlace de comunicaciones directo entre el dispositivo 12 de origen y el dispositivo 14 de destino o sobre cualquier tipo de red. El enlace de comunicaciones directo, por ejemplo, es una conexión por cable o inalámbrica directa, y cualquier tipo de red, por ejemplo, es una red por cable o inalámbrica o cualquier combinación de los mismas, o cualquier tipo de red privada o red pública o cualquier combinación de los mismas.
La interfaz 22 de comunicaciones, por ejemplo, puede ser configurada para encapsular los datos 21 de imagen codificados en un formato apropiado tal como un paquete para transmisión sobre un enlace de comunicaciones o una red de comunicaciones.
La interfaz 28 de comunicaciones como una parte correspondiente de la interfaz 22 de comunicaciones puede ser configurada para desencapsular los datos 13 codificados para obtener los datos 21 de imagen codificados, y similares.
Tanto la interfaz 22 de comunicaciones como la interfaz 28 de comunicaciones pueden ser configuradas como interfaces de comunicaciones unidireccionales, por ejemplo, una flecha que apunta desde el dispositivo 12 de origen al dispositivo 14 de destino que son utilizados para los datos 13 de imagen codificados en la figura 1, o pueden ser configurados como interfaces de comunicaciones bidireccionales, y por ejemplo, pueden ser configurados para enviar y recibir un mensaje para establecer una conexión, y confirmar e intercambiar cualquier otra información relacionada con un enlace de comunicaciones y/o transmisión de datos tal como transmisión de datos de imagen codificados.
El decodificador 30 está configurado para recibir los datos 21 de imagen codificados y proporcionar datos 31 de imagen decodificados o una imagen 31 decodificada (los detalles se describen adicionalmente a continuación, por ejemplo, basándose en las figuras 3 o 5).
El postprocesador 32 del dispositivo 14 de destino está configurado para postprocesar los datos 31 de imagen decodificados (también denominados datos de imagen reconstruida) tal como la imagen 31 decodificada, para obtener datos 33 de imagen postprocesados tal como una imagen 33 postprocesada. El postprocesamiento realizado por la unidad 32 de postprocesamiento puede incluir, por ejemplo, conversión de formato de color (por ejemplo, de YCbCr a RGB), corrección de color, recorte, remuestreo, o cualquier otro procesamiento para preparar los datos 31 de imagen decodificados para visualización por el dispositivo 34 de visualización.
El dispositivo 34 de visualización del dispositivo 14 de destino está configurado para recibir los datos 33 de imagen postprocesados para visualizar la imagen a un usuario, un telespectador, o similar. El dispositivo 34 de visualización puede ser o puede incluir cualquier tipo de pantalla configurada para presentar una imagen reconstruida, por ejemplo, una pantalla o monitor integrado o externo. Por ejemplo, la pantalla puede incluir una pantalla de cristal líquido (liquid crystal display, LCD), una pantalla de diodo de emisión de luz orgánica (organic light emitting diode, OLED), una pantalla de plasma, un proyector, una pantalla microLED, una pantalla de cristal líquido sobre silicio (liquid crystal on silicon, LcoS ()), un procesador de luz digital (digital light processor, DLP), o cualquier otro tipo de pantalla.
Aunque la figura 1 muestra el dispositivo 12 de origen y el dispositivo 14 de destino como dispositivos separados, las realizaciones del dispositivo también pueden incluir el dispositivo 12 de origen y el dispositivo 14 de destino o ambos, una función del dispositivo 12 de origen y una función del dispositivo 14 de destino, es decir, el dispositivo 12 de origen o la función correspondiente y el dispositivo 14 de destino o la función correspondiente. En dichas realizaciones, el dispositivo 12 de origen o la función correspondiente y el dispositivo 14 de destino o la función correspondiente pueden ser implementados utilizando el mismo hardware y/o software, hardware y/o software separados, o cualquier combinación de los mismos.
Basándose en las descripciones, un experto en la técnica entiende fácilmente esa existencia y división (precisa) de funciones de diferentes unidades o funciones/una función del dispositivo 12 de origen y/o el dispositivo 14 de destino mostrados en la figura 1 pueden variar con un dispositivo y aplicación reales.
El codificador 20 (por ejemplo, el codificador 20 de vídeo) y el decodificador 30 (por ejemplo, el decodificador 30 de vídeo) pueden ser implementados en cualquiera de varios circuitos apropiados, por ejemplo, uno o más microprocesadores, un procesador de señal digital (digital signal processor, DSP), un circuito integrado de aplicación específica (application-specific integrated circuit, ASIC), una matriz de puertas programable en campo (field-programmable gate array, FPGA), lógica discreta, hardware, o cualquier combinación de los mismos. Si la tecnología es parcialmente implementada en software, el dispositivo puede almacenar una instrucción de software en un medio de almacenamiento legible por ordenador no transitorio apropiado, y puede realizar la instrucción en hardware utilizando uno o más procesadores para realizar las tecnologías en esta descripción. Cualquiera del contenido anterior (que incluye hardware, software, una combinación de hardware y software, y similar) puede ser considerado como uno o más procesadores. El codificador 20 de vídeo y el decodificador 30 de vídeo pueden ser incluidos en uno o más codificadores o decodificadores, y cualquiera de los codificadores o los decodificadores puede estar integrado como una parte de un codificador/decodificador combinado (un códec) en un dispositivo correspondiente.
El dispositivo 12 de origen puede denominarse dispositivo de codificación de vídeo o aparato de codificación de vídeo. El dispositivo 14 de destino puede denominarse dispositivo de decodificación de vídeo o aparato de decodificación de vídeo. El dispositivo 12 de origen y el dispositivo 14 de destino pueden ser un ejemplo de un dispositivo de codificación de vídeo o un aparato de decodificación de vídeo.
El dispositivo 12 de origen y el dispositivo 14 de destino pueden incluir cualquiera de diversos dispositivos, que incluye cualquier tipo de dispositivo manual o fijo, por ejemplo, un ordenador notebook u ordenador portátil, un teléfono móvil, un teléfono inteligente, una tableta o un ordenador de tableta, una cámara de vídeo, un ordenador de escritorio, un decodificador, una televisión, un dispositivo de visualización, un reproductor de medios digitales, una consola de juegos de vídeo, un dispositivo de transmisión por flujos de vídeo (tal como un servidor de servicio de contenido o un servidor de distribución de contenido), un dispositivo receptor de transmisión, o un dispositivo transmisor de transmisión, y puede utilizar o no utilizar cualquier tipo de sistema operativo.
En algunos casos, el dispositivo 12 de origen y el dispositivo 14 de destino puede estar equipados para comunicación inalámbrica. Por lo tanto, el dispositivo 12 de origen y el dispositivo 14 de destino pueden ser dispositivos de comunicación inalámbrica.
En algunos casos, el sistema 10 de codificación de vídeo mostrado en la figura 1 es simplemente un ejemplo, y las tecnologías en esta solicitud pueden ser aplicadas a una configuración de codificación de vídeo (por ejemplo, codificación de vídeo o decodificación de vídeo) que no necesita incluir alguna comunicación de datos entre un dispositivo de codificación y un dispositivo de decodificación. En otros ejemplos, los datos pueden ser recuperados desde una memoria local, transmitidos sobre una red, o similar. Un dispositivo de codificación de vídeo puede codificar datos y almacenar los datos en una memoria, y/o un dispositivo de decodificación de vídeo puede recuperar los datos de la memoria y decodificar los datos. En algunos ejemplos, la codificación y decodificación son realizadas por dispositivos que no se comunican entre sí sino que solamente codifican datos a una memoria y/o recuperan los datos de la memoria y decodifican los datos.
Se debe entender que para cada uno de los ejemplos anteriores descritos con referencia al codificador 20 de vídeo, el decodificador 30 de vídeo puede ser configurado para realizar un proceso inverso. Para un elemento de sintaxis de señalización, el decodificador 30 de vídeo puede ser configurado para recibir y analizar el elemento de sintaxis y decodificar los datos de vídeo relacionados por consiguiente. En algunos ejemplos, el codificador 20 de vídeo puede codificar por entropía uno o más elementos de sintaxis que definen... en un flujo de bits de vídeo codificado. En dichos ejemplos, el decodificador 30 de vídeo puede analizar dichos elementos de sintaxis y puede decodificar datos de vídeo relacionados por consiguiente.
Codificador y método de codificación
La figura 2 es un diagrama de bloques esquemático/conceptual de un ejemplo de un codificador 20 de vídeo configurado para implementar las tecnologías en esta solicitud (descripción). En el ejemplo de la figura 2, el codificador 20 de vídeo incluye una unidad 204 de cálculo residual, una unidad 206 de procesamiento de transformada, una unidad 208 de cuantificación, una unidad 210 de cuantificación inversa, una unidad 212 de procesamiento de transformada inversa, una unidad 214 de reconstrucción, un búfer 216, una unidad 220 de filtro de bucle, un búfer de imágenes decodificadas (decoded picture buffer, DPB) 230, una unidad 260 de procesamiento de predicción, y una unidad 270 de codificación por entropía. La unidad 260 de procesamiento de predicción puede incluir una unidad 244 de interpredicción, una unidad 254 de intrapredicción, y una unidad 262 de selección de modo. La unidad 244 de interpredicción puede incluir una unidad de estimación de movimiento y una unidad de compensación de movimiento (que no se muestra en la figura). El codificador 20 de vídeo mostrado en la figura 2 también se puede denominar codificador de vídeo híbrido o un codificador de vídeo basándose en códec de vídeo híbrido.
Por ejemplo, la unidad 204 de cálculo residual, la unidad 206 de procesamiento de transformada, la unidad 208 de cuantificación, la unidad 260 de procesamiento de predicción, y la unidad 270 de codificación por entropía forman una ruta de señal de avance del codificador 20, y la unidad 210 de cuantificación inversa, la unidad 212 de procesamiento de transformada inversa, la unidad 214 de reconstrucción, el búfer 216, el filtro 220 de bucle, el búfer de imágenes decodificadas (decoded picture buffer, DPB) 230, la unidad 260 de procesamiento de predicción, y similares forman una ruta de señal de retroceso del codificador. La ruta de señal de retroceso del codificador corresponde a una ruta de señal de un decodificador (refiriéndose a un decodificador 30 en la figura 3).
El codificador 20 recibe una imagen 201 o un bloque 203 de la imagen 201 utilizando una entrada 202 o similar, por ejemplo, una imagen en una secuencia de imágenes que forman un vídeo o una secuencia de vídeo. El bloque 203 de imagen también se puede denominar bloque de imagen actual o bloque de imagen a codificar, y la imagen 201 se puede denominar imagen actual o una imagen a codificar (especialmente cuando la imagen actual se distingue de otra imagen en la codificación de vídeo, de otras imágenes, por ejemplo, en una misma secuencia de vídeo, también incluyen imágenes previamente codificadas y/o decodificadas en la secuencia de vídeo de la imagen actual).
División
La realización del codificador 20 puede incluir una unidad de división (que no se muestra en la figura 2), configurada para dividir la imagen 201 en una pluralidad de bloques que no se superponen tal como bloques 203. La unidad de división puede ser configurada para utilizar un mismo tamaño de bloque para todas las imágenes en la secuencia de vídeo y una trama correspondiente definiendo el tamaño de bloque, o se puede configurar para: cambiar un tamaño de bloque entre imágenes, subconjuntos, o grupos de imágenes, y dividir cada imagen en bloques correspondientes.
En un ejemplo, la unidad 260 de procesamiento de predicción del codificador 20 de vídeo puede ser configurada para realizar cualquier combinación de las tecnologías de división anteriores.
Por ejemplo, en la imagen 201, el bloque 203 también es o puede ser considerado como un conjunto bidimensional o matriz de muestras con valores de luminancia (valores de muestra), aunque un tamaño del bloque 203 es más pequeño que el de la imagen 201. En otras palabras, el bloque 203 puede incluir, por ejemplo, un conjunto de muestras (por ejemplo, un conjunto de luminancia en un caso de una imagen 201 monocromática), tres conjuntos de muestras (por ejemplo, un conjunto de luminancia y dos conjuntos de crominancia en un caso de una imagen de color), o cualquier otra cantidad y/o tipo de conjuntos basándose en un formato de color utilizado. Una cantidad de muestras en las direcciones (o ejes) horizontal y vertical del bloque 203 define el tamaño del bloque 203.
El codificador 20 mostrado en la figura 2 está configurado para codificar la imagen 201 bloque por bloque, por ejemplo, realizar codificación y predicción en cada bloque 203.
Cálculo residual
La unidad 204 de cálculo residual está configurada para calcular un bloque 205 residual basándose en el bloque 203 de imagen y un bloque 265 de predicción (a continuación, se proporcionan detalles adicionales referentes al bloque 265 de predicción), por ejemplo, para obtener el bloque 205 residual en un dominio de muestra sustrayendo un valor de muestra del bloque 265 de predicción a partir de un valor de muestra del bloque 203 de imagen muestra por muestra (pixel por pixel).
Transformada
La unidad 206 de procesamiento de transformada está configurada para aplicar una transformada tal como transformada de coseno discreta (discrete cosine transform, DCT) o transformada de seno discreta (discrete sine transform, DST) a un valor de muestra del bloque 205 residual, para obtener un coeficiente 207 de transformada en un dominio de transformada. El coeficiente 207 de transformada también se puede denominar coeficiente de transformada residual, e indica el bloque 205 residual en el dominio de transformada.
La unidad 206 de procesamiento de transformada puede ser configurada para aplicar aproximaciones de números enteros de DCT/DST, por ejemplo, transformadas especificadas en HEVC/H.265. Esta aproximación de números enteros se suele escalar proporcionalmente por un factor en comparación con la transformada DCT ortogonal. Para mantener la norma de un bloque residual obtenido a través de la transformada directa y la transformada inversa, un factor de escala adicional es aplicado como una parte del proceso de transformada. El factor de escala se suele seleccionar basándose en algunas condiciones de restricción, por ejemplo, es una potencia de 2, una profundidad de bit de un coeficiente de transformada, o compensación entre precisión y costes de implementación que se utiliza para una operación de desplazamiento. Por ejemplo, un factor de escala específico es especificado para transformada inversa en un lado del decodificador 30 utilizando la unidad 212 de procesamiento de transformada inversa (y de manera correspondiente, para la transformada inversa en un lado del codificador 20 utilizando la unidad 212 de procesamiento de transformada inversa o similar), y de manera correspondiente, un factor de escala correspondiente puede ser especificado para la transformada directa en un lado del codificador 20 utilizando la unidad 206 de procesamiento de transformada.
Cuantificación
La unidad 208 de cuantificación está configurada para cuantificar el coeficiente 207 de transformada aplicando cuantificación de escala, cuantificación de vector, o similar, para obtener un coeficiente 209 de transformada cuantificado. El coeficiente 209 de transformada cuantificado también se puede denominar un coeficiente 209 residual cuantificado. El proceso de cuantificación puede reducir una profundidad de bit relacionada con algunos o todos los coeficientes 207 de transformada. Por ejemplo, un coeficiente de transformada de n bits puede ser redondeado hacia abajo a un coeficiente de transformada de m-bits durante la cuantificación, donde n es mayor que m. Un grado de cuantificación puede ser modificado ajustando un parámetro de cuantificación (quantization parameter, QP). Por ejemplo, para cuantificación de escala, se pueden aplicar diferentes escalas para lograr una cuantificación más fina o más gruesa. Un escalón de cuantificación más pequeño corresponde a una cuantificación más fina, y un escalón de cuantificación más grande corresponde a una cuantificación más áspera. Un escalón de cuantificación apropiado puede ser indicado utilizando un parámetro de cuantificación (quantization parameter, QP). Por ejemplo, el parámetro de cuantificación puede ser un índice de un conjunto predefinido de escalones de cuantificación apropiados. Por ejemplo, un parámetro de cuantificación más pequeño puede corresponder a una cuantificación más fina (un escalón de cuantificación más pequeño) y un parámetro de cuantificación más grande puede corresponder a cuantificación más gruesa (un escalón de cuantificación más grande), y viceversa. La cuantificación puede incluir la división por un escalón de cuantificación y cuantificación o cuantificación inversa correspondiente realizada por la unidad 210 de cuantificación inversa o similar, o puede incluir la multiplicación por un escalón de cuantificación. En realizaciones según algunas normas tales como HEVC, un parámetro de cuantificación puede ser utilizado para determinar un escalón de cuantificación. Generalmente, el escalón de cuantificación puede ser calculado basándose en el parámetro de cuantificación a través de la aproximación de punto fijo de una ecuación que incluye la división. Factores de escala adicionales pueden ser introducidos para cuantificación y cuantificación inversa, para restaurar la norma que es de un bloque residual y que puede ser modificada debido a una escala utilizada en la aproximación de punto fijo de la ecuación utilizada para el escalón de cuantificación y el parámetro de cuantificación. En una implementación ejemplar, una escala de transformada inversa se puede combinar con una escala de cuantificación inversa. Alternativamente, una tabla de cuantificación personalizada puede ser utilizada y señalizada desde un codificador a un decodificador, por ejemplo, en un flujo de bits. La cuantificación es una operación con pérdida, y un escalón de cuantificación más grande indica una pérdida más grande.
La unidad 210 de cuantificación inversa está configurada para aplicar cuantificación inversa de la unidad 208 de cuantificación a un coeficiente cuantificado para obtener un coeficiente 211 cuantificado a la inversa, por ejemplo, aplicar, basándose en o utilizando un mismo escalón de cuantificación que la unidad 208 de cuantificación, un esquema de cuantificación inversa del esquema de cuantificación aplicado por la unidad 208 de cuantificación. El coeficiente 211 cuantificado a la inversa también se puede denominar coeficiente 211 residual cuantificado a la inversa, y puede corresponder al coeficiente 207 de transformada, aunque una pérdida provocada por la cuantificación generalmente es diferente del coeficiente de transformada.
La unidad 212 de procesamiento de transformada inversa está configurada para aplicar transformada inversa de la transformada aplicada por la unidad 206 de procesamiento de transformada, por ejemplo, transformada de coseno discreta (discrete cosine transform, DCT) inversa o transformada de seno (discrete sine transform, DST) inversa, para obtener un bloque 213 de transformada inversa en un dominio de muestra. El bloque 213 de transformada inversa también se puede denominar bloque 213 cuantificado inverso de transformada inversa o un bloque 213 residual de transformada inversa.
La unidad 214 de reconstrucción (por ejemplo, un sumador 214) está configurada para añadir el bloque 213 de transformada inversa (es decir, un bloque 213 residual reconstruido) al bloque 265 de predicción para obtener un bloque 215 reconstruido en el dominio de muestra, por ejemplo, añadiendo un valor de muestra del bloque 213 residual reconstruido y un valor de muestra del bloque 265 de predicción.
Opcionalmente, la unidad 216 de búfer (o la "búfer" 216 para abreviar) tal como un búfer 216 de línea está configurado para almacenar en búfer o almacenar bloque 215 reconstruido y un valor muestra correspondiente para intrapredicción y similar. En otras realizaciones, un codificador puede ser configurado para utilizar un bloque reconstruido no filtrado y/o un valor muestra correspondiente que es/son almacenado/s en la unidad 216 de búfer para cualquier tipo de estimación y/o predicción tal como intrapredicción.
Por ejemplo, la realización del codificador 20 puede ser configurado, de manera que la unidad 216 de búfer no solamente esté configurada para almacenar el bloque 215 reconstruido para intrapredicción, sino que también esté configurado para almacenar el bloque 221 filtrado de la unidad 220 de filtro de bucle (que no se muestra en la figura 2), y/o la unidad 216 de búfer y la unidad 230 de búfer de imágenes decodificadas forman un búfer. Se pueden utilizar otras realizaciones para utilizar un bloque 221 filtrado y/o un bloque o una muestra del búfer 230 de imágenes decodificadas (no se muestra en la figura 2) como una entrada o una base 254 para intrapredicción.
La unidad 220 de filtro de bucle (o el "filtro 220 de bucle" para abreviar) está configurada para realizar filtrar el bloque 215 reconstruido para obtener el bloque 221 filtrado, a fin de realizar suavemente la transformada de muestra o mejorar la calidad del vídeo. La unidad 220 de filtro de bucle está destinada a representar uno o más filtros de bucle, por ejemplo, un filtro de desbloqueo, un filtro de compensación adaptable a la muestra (sampleadaptive offset, SAO), u otro filtro tal como un filtro bilateral, un filtro de bucle adaptable (adaptive loop filter, ALF), un filtro de nitidez o suavizado, o un filtro colaborativo. Aunque la unidad 220 de filtro de bucle se muestra en la figura 2 como un filtro en-bucle, la unidad 220 de filtro de bucle puede ser implementada como un filtro postbucle en otras configuraciones. El bloque 221 filtrado también se puede denominar un bloque 221 reconstruido filtrado. El búfer 230 de imágenes decodificadas puede almacenar el bloque de codificación reconstruido después de que la unidad 220 de filtro de bucle realice una operación de filtrado en el bloque de codificación reconstruido.
La realización del codificador 20 (de manera correspondiente, la unidad 220 de filtro de bucle) se puede utilizar para emitir un parámetro de filtro de bucle (por ejemplo, información de compensación adaptable a la muestra), por ejemplo, para emitir directamente un parámetro de filtro de bucle o para emitir un parámetro de filtro de bucle después de que la unidad 270 de codificación por entropía o cualquier otra unidad de codificación por entropía realice codificación por entropía, de manera que el decodificador 30 pueda recibir y aplicar un mismo parámetro de filtro de bucle para decodificación, y similar.
El búfer de imágenes decodificadas (decoded picture buffer, DPB) 230 puede ser una memoria de imágenes de referencia que almacena datos de imagen de referencia para que el codificador 20 de vídeo codifique datos de vídeo. El DPB 230 puede ser cualquiera de una pluralidad de memorias, por ejemplo, una memoria de acceso aleatorio dinámica (dynamic random access memory, DRAM) (que incluye una DRAM sincronizada (synchronous DRAM, SDRAM), una RAM magnetoresistiva (magnetoresistive RAM, MRAM), o una RAM resistiva (resistive RAM, RRAM)), u otro tipo de memoria. El DPB 230 y el búfer 216 pueden ser proporcionados por una misma memoria o memorias separadas. En un ejemplo, el búfer de imágenes decodificadas (decoded picture buffer, DPB) 230 está configurado para almacenar el bloque 221 filtrado. El búfer de imágenes decodificadas 230 además se puede configurar para almacenar otros bloques filtrados previos tal como bloques 221 reconstruidos y filtrados previos de una misma imagen actual o diferentes imágenes tales como imágenes reconstruidas previas, y pueden proporcionar una imagen reconstruida previa completa, es decir, decodificada (y un bloque de referencia correspondiente y una muestra correspondiente) y/o una imagen actual parcialmente reconstruida (y un bloque de referencia correspondiente y una muestra correspondiente) para interpredicción y similar. En un ejemplo, si el bloque 215 reconstruido es reconstruido sin filrado en bucle, el búfer de imágenes decodificadas (decoded picture buffer, DPB) 230 está configurado para almacenar el bloque 215 reconstruido.
La unidad 260 de procesamiento de predicción también se denomina unidad 260 de procesamiento de predicción de bloque, y está configurada para: recibir u obtener el bloque 203 (el bloque 203 actual de la imagen 201 actual) y datos de imagen reconstruida, por ejemplo, una muestra de referencia de una misma imagen (actual) en el búfer 216 y/o datos 231 de imagen de referencia de una o más imágenes decodificadas previas en el búfer de imágenes decodificadas 230, y procesar dichos datos para la predicción, es decir, proporcionar un bloque 265 de predicción que puede ser un bloque 245 de interpredicción o un bloque 255 de intrapredicción.
La unidad 262 de selección de modo puede ser configurada para seleccionar un modo de predicción (por ejemplo, un modo de intra o interpredicción) y/o un bloque 245 o 255 de predicción correspondiente como el bloque 265 de predicción, para calcular el bloque 205 residual y reconstruir el bloque 215 reconstruido.
La realización de la unidad 262 de selección de modo puede ser utilizada para seleccionar un modo de predicción (por ejemplo, de los modos de predicción soportados por la unidad 260 de procesamiento de predicción). El modo de predicción proporciona un mejor emparejamiento o un residual mínimo (el residual mínimo significa mejor compresión en transmisión o almacenamiento), o proporciona sobrecargas de señalización mínimas (las sobrecargas de señalización mínimas significan mejor compresión en transmisión o almacenamiento), o considera o equilibra los dos. La unidad 262 de selección de modo puede ser configurada para determinar un modo de predicción basándose en la optimización de distorsión de tasa (rate distortion optimization, RDO), es decir, seleccionar un modo de predicción que proporcione una optimización de distorsión de tasa mínima, o seleccionar un modo de predicción en el cual la distorsión de tasa relacionada cumpla al menos un criterio de selección de modo de predicción.
El procesamiento de predicción (por ejemplo, utilizando la unidad 260 de procesamiento de predicción) y la selección de modo (por ejemplo, utilizando la unidad 262 de selección de modo) realizados por un ejemplo del codificador 20 se describen en detalle a continuación.
Tal como se describió antes, el codificador 20 está configurado para determinar o seleccionar el mejor modo de predicción o el modo óptimo de entre un conjunto (predeterminado) de modos de predicción. El conjunto de modos de predicción puede incluir, por ejemplo, un modo de intrapredicción y/o un modo de interpredicción.
El conjunto de modos de intrapredicción puede incluir 35 modos de intrapredicción diferentes, por ejemplo, modos no direccionales tal como un modo DC (o medio) y un modo planar, o modos direccionales definidos en H.265, o puede incluir 67 modos de intrapredicción diferentes, por ejemplo, modo no direccional tal como un modo DC (o medio) y un modo planar, o modos direccionales en desarrollo definidos en H.266.
Un (posible) conjunto de modos de interpredicción depende de una imagen de referencia disponible (por ejemplo, al menos una parte de la imagen decodificada almacenada en el DBP 230) y otros parámetros de interpredicción, por ejemplo, depende de si se utiliza toda la imagen de referencia o si únicamente se utiliza una parte de la imagen de referencia, por ejemplo, se realiza una búsqueda en una región de ventana de búsqueda rodeando una región de un bloque actual para obtener el mejor bloque de referencia emparejado, y/o depende de si se aplica la interpolación de muestra tal como interpolación de media muestra y/o cuarto de muestra.
Además de los modos de predicción anteriores, también se puede aplicar un modo de omisión y/o un modo directo.
La unidad 260 de procesamiento de predicción además puede ser configurada para: dividir el bloque 203 en divisiones de bloque o subbloques más pequeños, por ejemplo, iterativamente utilizando división de árbol cuaternario (quad-tree, QT), división de árbol binario (binary-tree, BT), división de árbol triple o árbol ternario (triple-tree o ternary-tree, TT), o cualquier combinación de los mismos, y realizar predicción y similares en cada una de las divisiones de bloque o los subbloques. La selección de modo incluye seleccionar una estructura de árbol del bloque 203 dividido y seleccionar un modo de predicción aplicado a cada una de las divisiones de bloque o los subbloques.
La unidad 244 de interpredicción puede incluir una unidad de estimación de movimiento (motion estimation, ME) (no mostrada en la figura 2) y una unidad de compensación de movimiento (motion compensation, MC) (no mostrada en la figura 2). La unidad de estimación de movimiento está configurada para recibir u obtener el bloque 203 de imágenes (el bloque 203 de imagen actual de la imagen 201 actual) y la imagen 31 decodificada, o al menos uno o más bloques reconstruidos previos, por ejemplo, uno o más bloques reconstruidos diferentes de la imagen 31 decodificada previa, para realizar estimación de movimiento. Por ejemplo, una secuencia de vídeo puede incluir la imagen actual y la imagen 31 decodificada previa. En otras palabras, la imagen actual y la imagen 31 decodificada previa pueden ser una parte de una secuencia de imágenes que forman la secuencia de vídeo, o forman la secuencia de imagen.
Por ejemplo, el codificador 20 puede ser configurado para: seleccionar un bloque de referencia de una pluralidad de bloques de referencia de una misma imagen o diferentes imágenes en una pluralidad de otras imágenes, y proporcionar una imagen de referencia (o un índice de imagen de referencia) y/o una compensación (una compensación espacial) entre una posición (coordenadas X-Y) del bloque de referencia y una posición del bloque actual como un parámetro de interpredicción a la unidad de estimación de movimiento (que no se muestra en la figura 2). Esta compensación también se denomina vector de movimiento (motion vector, MV).
La unidad de compensación de movimiento está configurada para: obtener, por ejemplo, recibir un parámetro de interpredicción y realizar interpredicción basándose en o utilizando el parámetro de interpredicción para obtener el bloque 245 de interpredicción. La compensación de movimiento realizada por la unidad de compensación de movimiento (que no se muestra en la figura 2) puede incluir la extracción o generación del bloque de predicción basándose en un vector de movimiento/bloque determinado a través de la estimación de movimiento (posiblemente realizando interpolación en precisión de submuestra). Durante la filtración de interpolación, se puede generar una muestra adicional a partir de muestras conocidas, incrementando así potencialmente una cantidad de bloques de predicción candidatos que pueden ser utilizados para codificar un bloque de imagen. Una vez que se recibe un vector de movimiento utilizado para una PU de un bloque de imagen actual, la unidad 246 de compensación de movimiento puede localizar un bloque de predicción al cual apunta el vector de movimiento en una lista de imágenes de referencia. La unidad 246 de compensación de movimiento además puede generar un elemento de sintaxis asociado con un bloque y un segmento de vídeo, de manera que el decodificador 30 de vídeo utiliza el elemento de sintaxis cuando se decodifica un bloque de imagen del segmento de vídeo.
La unidad 254 de intrapredicción está configurada para obtener, por ejemplo, recibir un bloque 203 de imagen (un bloque de imagen actual) de la misma imagen y uno o más bloques reconstruidos previos tal como bloques vecinos reconstruidos, para realizar intraestimación. Por ejemplo, el codificador 20 puede ser configurado para seleccionar un modo de intrapredicción de entre una pluralidad de modos de intrapredicción (predeterminados).
La realización del codificador 20 puede ser configurada para seleccionar un modo de intrapredicción basándose en un criterio de optimización, por ejemplo, basándose en un residual mínimo (por ejemplo, un modo de intrapredicción que proporciona el bloque 255 de predicción que es más similar al bloque 203 de imagen actual) o distorsión de tasa mínima.
La unidad 254 de intrapredicción además está configurada para determinar el bloque 255 de intrapredicción basándose en un parámetro de intrapredicción del modo de intrapredicción seleccionado. En cualquier caso, después de seleccionar el modo de intrapredicción utilizado para un bloque, la unidad 254 de intrapredicción además está configurada para proporcionar el parámetro de intrapredicción a la unidad 270 de codificación por entropía, es decir, proporcionar información para indicar el modo de intrapredicción seleccionado utilizado para un bloque. En un ejemplo, la unidad 254 de intrapredicción puede ser configurada para realizar cualquier combinación de las siguientes tecnologías de intrapredicción.
La unidad 270 de codificación por entropía está configurada para aplicar un algoritmo o esquema de codificación por entropía (por ejemplo, un esquema de codificación de longitud variable (variable length coding, VLC), un esquema VLC adaptable al contexto (context adaptive VLC, CAVLC), un esquema de codificación aritmética, un esquema de codificación aritmética binaria adaptable al contexto (context adaptive binary arithmetic coding, CABAC), un esquema de codificación aritmética binaria adaptable al contexto basándose en sintaxis (syntax-based context-adaptive binary arithmetic coding, SBAC), un esquema de codificación por entropía de división de intervalo de probabilidad (probability interval partitioning entropy, PIPE), u otro método o tecnología de codificación por entropía) a uno o más (o ninguno) del coeficiente 209 residual cuantificado, el parámetro de interpredicción, el parámetro de intrapredicción, y/o el parámetro de filtro de bucle, para obtener los datos 21 de imagen codificados que pueden ser emitidos utilizando una salida 272, por ejemplo, en una forma de un flujo de bits codificado. El flujo de bits codificado puede ser transmitido al decodificador 30 de vídeo, o se puede archivar para su posterior transmisión o recuperación por el decodificador 30 de vídeo. La unidad 270 de codificación por entropía además se puede configurar para realizar codificación por entropía en otro elemento de sintaxis del segmento de vídeo actual que está siendo codificado.
Otra variante estructural del codificador 20 de vídeo puede ser configurada para codificar un flujo de vídeo. Por ejemplo, el codificador 20 no basado en transformada puede cuantificar directamente una señal residual sin la unidad 206 de procesamiento de transformada para algunos bloques o fotogramas. En otra implementación, el codificador 20 puede tener la unidad 208 de cuantificación y la unidad 210 de cuantificación inversa que se combinan en una unidad.
La figura 3 muestra un ejemplo de un decodificador 30 de vídeo, configurado para implementar las tecnologías en esta solicitud. El decodificador 30 de vídeo está configurado para recibir datos 21 de imagen codificados (por ejemplo, un flujo de bits codificados) por el codificador 20 o similar, para obtener una imagen 31 decodificada. En un proceso de decodificación, el decodificador 30 de vídeo recibe datos de vídeo desde el codificador 20 de vídeo, por ejemplo, un flujo de bits de vídeo codificado que indica un bloque de imagen de un segmento de vídeo codificado y un elemento de sintaxis asociado.
En el ejemplo de la figura 3, el decodificador 30 incluye una unidad 304 de decodificación por entropía, una unidad 310 de cuantificación inversa, una unidad 312 de procesamiento de transformada inversa, una unidad 314 de reconstrucción (por ejemplo, un sumador 314), un búfer 316, un filtro 320 de bucle, un búfer 330 de imágenes decodificadas, y una unidad 360 de procesamiento de predicción. La unidad 360 de procesamiento de predicción puede incluir una unidad 344 de interpredicción, una unidad 354 de intrapredicción, y una unidad 362 de selección de modo. En algunos ejemplos, el decodificador 30 de vídeo puede realizar decodificación trasversal generalmente inversa a la codificación trasversal descrita con referencia al codificador 20 de vídeo en la figura 2.
La unidad 304 de decodificación por entropía está configurada para realizar decodificación por entropía en los datos 21 de imagen codificados, para obtener un coeficiente 309 cuantificado, un parámetro de codificación decodificado (no mostrado en la figura 3), y/o similar, por ejemplo, cualquiera o todos de un parámetro de interpredicción, un parámetro de intrapredicción, un parámetro de filtro de bucle, y/u otro elemento de sintaxis (decodificado). La unidad 304 de decodificación por entropía además está configurada para reenviar el parámetro de interpredicción, el parámetro de intrapredicción, y/o el otro elemento de sintaxis a la unidad 360 de procesamiento de predicción. El decodificador 30 de vídeo puede recibir un elemento de sintaxis a un nivel de segmento de vídeo y/o un elemento de sintaxis a un nivel de bloque de vídeo.
La unidad 310 de cuantificación inversa puede tener una misma función que la unidad 110 de cuantificación inversa, la unidad 312 de procesamiento de transformada inversa puede tener una misma función que la unidad 212 de procesamiento de transformada inversa, la unidad 314 de reconstrucción puede tener una misma función que la unidad 214 de reconstrucción, el búfer 316 puede tener una misma función que el búfer 216, el filtro 320 de bucle puede tener una misma función que el filtro 220 de bucle, y el búfer 330 de imágenes decodificadas puede tener una misma función que el búfer 230 de imágenes decodificadas.
La unidad 360 de procesamiento de predicción puede incluir la unidad 344 de interpredicción y la unidad 354 de intrapredicción. La unidad 344 de interpredicción puede tener una función similar a aquella de la unidad 244 de interpredicción, y la unidad de 354 intrapredicción puede tener una función similar a aquella de la unidad 254 de intrapredicción. La unidad 360 de procesamiento de predicción suele configurarse para realizar predicción de bloque y/u obtener un bloque 365 de predicción de los datos 21 codificados, y puede recibir u obtener (explícitamente o implícitamente) un parámetro relacionado con la predicción y/o información referente a un modo de predicción seleccionado, por ejemplo, de la unidad 304 de decodificación por entropía.
Cuando un segmento de vídeo es codificado como un segmento intracodificado (I), la unidad 354 de intrapredicción de la unidad 360 de procesamiento de predicción está configurada para generar el bloque 365 de predicción utilizado para un bloque de imagen del segmento de vídeo actual basándose en un modo de intrapredicción señalizado y datos de un bloque decodificado previo de una imagen o fotograma actual. Cuando un fotograma de vídeo es codificado como un segmento intercodificado (es decir, B o P), la unidad 344 de interpredicción (por ejemplo, una unidad de compensación de movimiento) de la unidad 360 de procesamiento de predicción está configurada para generar el bloque 365 de predicción utilizado para un bloque de vídeo del segmento de vídeo actual basándose en un vector de movimiento y otro elemento de sintaxis recibido desde la unidad 304 de decodificación por entropía. Para la interpredicción, un bloque de predicción puede ser generado a partir de una de las imágenes de referencia en una lista de imágenes de referencia. El decodificador 30 de vídeo puede construir las listas de fotogramas de referencia: una lista 0 y una lista 1 utilizando una tecnología de construcción por omisión basándose en una imagen de referencia almacenada en el DPB 330.
La unidad 360 de procesamiento de predicción está configurada para: determinar información de predicción utilizada para el bloque de vídeo del segmento de vídeo actual analizando el vector de movimiento y el otro elemento de sintaxis, y utilizar la información de predicción para generar el bloque de predicción utilizado para el bloque de vídeo actual que está siendo decodificado. Por ejemplo, la unidad 360 de procesamiento de predicción determina, utilizando algunos elementos de sintaxis recibidos, un modo de predicción (por ejemplo, intra o interpredicción) utilizado para codificar un bloque de vídeo de una parte del vídeo, un tipo de segmento de interpredicción (por ejemplo, un segmento B, un segmento P, o un segmento GPB), información de construcción de una o más de las imágenes en una lista de imágenes de referencia utilizada para un segmento, un vector de movimiento de cada bloque de vídeo intercodificado utilizado para un segmento, un estado de interpredicción de cada bloque de vídeo intercodificado utilizado para un segmento, y otra información, para decodificar el bloque de vídeo del segmento de vídeo actual.
La unidad 310 de cuantificación inversa puede ser configurada para realizar cuantificación inversa (es decir, descuantificación) en un coeficiente de transformada cuantificado proporcionado en el flujo de bits y decodificado por la unidad 304 de decodificación por entropía. El proceso de cuantificación inversa puede incluir: utilizar un parámetro de cuantificación calculado por el codificador 20 de vídeo para cada bloque de vídeo en el segmento de vídeo, para determinar un grado de cuantificación que debe ser aplicado y determinar un grado de cuantificación inversa que debe ser aplicado.
La unidad 312 de procesamiento de transformada inversa está configurada para aplicar transformada inversa (por ejemplo, DCT inversa, transformada de números enteros inversa, o un proceso de transformada inversa conceptualmente similar) al coeficiente de transformada, para generar un bloque residual en un dominio de muestra.
La unidad 314 de reconstrucción (por ejemplo, el sumador 314) está configurada para añadir un bloque 313 de transformada inversa (es decir, un bloque 313 residual reconstruido) al bloque 365 de predicción, para obtener un bloque 315 reconstruido en un dominio de muestra, por ejemplo, añadiendo un valor de muestra del bloque 313 residual reconstruido a un valor de muestra del bloque 365 de predicción.
La unidad 320 de filtro de bucle (en un bucle de codificación o después de un bucle de codificación) está configurada para filtrar el bloque 315 reconstruido para obtener un bloque 321 filtrado, a fin de realizar suavemente la transformada de muestra o mejorar la calidad del vídeo. En un ejemplo, la unidad 320 de filtro de bucle puede ser configurada para realizar cualquier combinación de las siguientes tecnologías de filtración. La unidad 320 de filtro de bucle está destinada a representar uno o más filtros de bucle, por ejemplo, un filtro de desbloqueo, un filtro de compensación adaptable a la muestra (sample-adaptive offset, SAO), u otro filtro tal como un filtro bilateral, un filtro de bucle adaptable (adaptive loop filter, ALF), un filtro de nitidez o suavizado, o un filtro colaborativo. Aunque la unidad 320 de filtro de bucle se muestra en la figura 3 como un filtro en bucle, la unidad 320 de filtro de bucle puede ser implementada como un filtro postbucle en otras configuraciones.
El bloque 321 filtrado en un fotograma o imagen determinada entonces es almacenado en el búfer 330 de imágenes decodificadas que almacena una imagen de referencia utilizada para una compensación de movimiento subsiguiente.
El decodificador 30 está configurado para emitir la imagen 31 decodificada utilizando una salida 332, y similar, para presentar la imagen 31 decodificada al usuario o proporcionar la imagen 31 decodificada para que el usuario la visualice.
Otra variación del decodificador 30 de vídeo puede ser configurada para decodificar un flujo de bits comprimido. Por ejemplo, el decodificador 30 puede generar un flujo de vídeo de salida sin la unidad 320 de filtro de bucle. Por ejemplo, el decodificador 30 no basado entransformada puede descuantificar directamente una señal residual sin la unidad 312 de procesamiento de transformada inversa para algunos bloques o fotogramas. En otra implementación, el decodificador 30 de vídeo puede tener la unidad 310 de cuantificación inversa y la unidad 312 de procesamiento de transformada inversa que son combinadas en una unidad.
La figura 4 es un diagrama que ilustra un ejemplo de un sistema 40 de codificación de vídeo que incluye el codificador 20 en la figura 2 y/o el decodificador 30 en la figura 3 según una realización ejemplar. El sistema 40 puede implementar una combinación de varias tecnologías de esta solicitud. En la implementación ilustrada, el sistema 40 de codificación de vídeo puede incluir un dispositivo 41 de generación de imágenes, el codificador 20 de vídeo, el decodificador 30 de vídeo (y/o un decodificador de vídeo implementado por un circuito 47 lógico de una unidad 46 de procesamiento), una antena 42, uno o más procesadores 43, una o más memorias 44, y/o un dispositivo 45 de visualización.
Como se muestra en la figura, el dispositivo 41 de generación de imágenes, la antena 42, la unidad 46 de procesamiento, el circuito 47 lógico, el codificador 20 de vídeo, el decodificador 30 de vídeo, el procesador 43, la memoria 44, y/o el dispositivo 45 de visualización se pueden comunicar entre sí. Tal como se describió, aunque el sistema 40 de codificación de vídeo es ilustrado con el codificador 20 de vídeo y el decodificador 30 de vídeo, en diferentes ejemplos, el sistema 40 de codificación de vídeo puede incluir solamente el codificador 20 de vídeo o solamente el decodificador 30 de vídeo.
En algunos ejemplos, como se muestra en la figura, el sistema 40 de codificación de vídeo puede incluir la antena 42. Por ejemplo, la antena 42 puede ser configurada para transmitir o recibir un flujo de bits codificado de datos de vídeo. Además, en algunos ejemplos, el sistema 40 de codificación de vídeo puede incluir el dispositivo 45 de visualización. El dispositivo 45 de visualización puede ser configurado para presentar los datos de vídeo. En algunos ejemplos, como se muestra en la figura, el circuito 47 lógico puede ser implementado por la unidad 46 de procesamiento. La unidad 46 de procesamiento puede incluir lógica de circuito integrado de aplicación específica (application-specific integrated circuit, ASIC), una unidad de procesamiento de gráficos, un procesador de propósito general, o similar. El sistema 40 de codificación de vídeo también puede incluir un procesador 43 opcional. El procesador 43 opcional de manera similar puede incluir lógica de circuito integrado de aplicación específica (application-specific integrated circuit, ASIC), una unidad de procesamiento de gráficos, un procesador de propósito general, o similar. En algunos ejemplos, el circuito 47 lógico puede ser implementado por hardware tal como hardware dedicado de codificación de vídeo, y el procesador 43 puede ser implementado por software universal, un sistema operativo, o similar. Además, la memoria 44 puede ser cualquier tipo de memoria, por ejemplo, una memoria volátil (por ejemplo, una memoria de acceso aleatorio estática (Static Random Access Memory, SRAM) o una memoria de acceso aleatorio dinámica (Dynamic Random Access Memory, DRAM)) o una memoria no volátil (por ejemplo, una memoria flash). En un ejemplo no limitativo, la memoria 44 puede ser implementada por una memoria caché. En algunos ejemplos, el circuito 47 lógico puede tener acceso a la memoria 44 (por ejemplo, para implementar un búfer de imágenes). En otros ejemplos, el circuito 47 lógico y/o la unidad 46 de procesamiento pueden incluir una memoria (por ejemplo, una caché) para implementar un búfer de imágenes o similar.
En algunos ejemplos, el codificador 20 de vídeo implementado por el circuito lógico puede incluir un búfer de imágenes (por ejemplo, implementado por la unidad 46 de procesamiento o la memoria 44) y una unidad de procesamiento de gráficos (por ejemplo, implementada por la unidad 46 de procesamiento). La unidad de procesamiento de gráficos puede estar comunicativamente acoplada al búfer de imágenes. La unidad de procesamiento de gráficos puede incluir el codificador 20 de vídeo implementado por el circuito 47 lógico, para implementar varios módulos que son descritos con referencia a la figura 2 y/o cualquier otro sistema o subsistema de codificador descrito en esta memoria descriptiva. El circuito lógico puede ser configurado para realizar varias operaciones descritas en esta memoria descriptiva.
El decodificador 30 de vídeo puede ser implementado de manera similar por el circuito 47 lógico, para implementar varios módulos que son descritos con referencia al decodificador 30 en la figura 3 y/o cualquier otro sistema o subsistema de decodificador descrito en esta memoria descriptiva. En algunos ejemplos, el decodificador 30 de vídeo implementado por el circuito lógico puede incluir un búfer de imágenes (implementado por la unidad 46 de procesamiento o la memoria 44) y una unidad de procesamiento de gráficos (por ejemplo, implementada por la unidad 46 de procesamiento). La unidad de procesamiento de gráficos puede estar comunicativamente acoplada al búfer de imágenes. La unidad de procesamiento de gráficos puede incluir el decodificador 30 de vídeo implementado por el circuito 47 lógico, para implementar varios módulos que son descritos con referencia a la figura 3 y/o cualquier otro sistema o subsistema de decodificador descrito en esta memoria descriptiva.
En algunos ejemplos, la antena 42 del sistema 40 de codificación de vídeo puede ser configurada para recibir un flujo de bits codificado de datos de vídeo. Tal como se describió, el flujo de bits codificado puede incluir datos, un indicador, un valor de índice, datos de selección de modo, o similar que esté relacionado con la codificación de fotogramas de vídeo descrita en esta memoria descriptiva, por ejemplo, datos relacionados con la división de codificación (por ejemplo, un coeficiente de transformada o un coeficiente de transformada cuantificado, un indicador opcional (tal como se describió), y/o datos que definen la división de codificación). El sistema 40 de codificación de vídeo además puede incluir el decodificador 30 de vídeo que está acoplado a la antena 42 y que está configurado para decodificar el flujo de bits codificado. El dispositivo 45 de visualización está configurado para presentar un fotograma de vídeo.
La figura 5 es un diagrama de bloques simplificado de un aparato 500 que puede ser utilizado como cualquiera o como los dos del dispositivo 12 de origen y el dispositivo 14 de destino en la figura 1 según una realización ejemplar. El aparato 500 puede implementar las tecnologías en esta solicitud. El aparato 500 puede utilizar una forma de un sistema informático que incluye una pluralidad de dispositivos informáticos, o puede utilizar una forma de un solo dispositivo informático tal como un teléfono móvil, un ordenador de tableta, un ordenador portátil, un ordenador notebook, o un ordenador de escritorio.
Un procesador 502 en el aparato 500 puede ser una unidad de procesamiento central. Alternativamente, el procesador 502 puede ser cualquier otro tipo de dispositivo o dispositivos existentes o futuros que puedan controlar o procesar información. Como se muestra en la figura, aunque las implementaciones descritas pueden ser practicadas utilizando un solo procesador tal como el procesador 502, las ventajas en la velocidad y la eficiencia se pueden lograr utilizando más de un procesador.
En una implementación, una memoria 504 en el aparato 500 puede ser una memoria de solo lectura (Read Only Memory, ROM) o una memoria de acceso aleatorio (random access memory, RAM). Cualquier otro tipo apropiado de dispositivo de almacenamiento puede ser utilizado como la memoria 504. La memoria 504 puede incluir un código y datos 506 a los que se tiene acceso por medio del procesador 502 utilizando un bus 512. La memoria 504 además puede incluir un sistema operativo 508 y un programa 510 de aplicación. El programa 510 de aplicación incluye al menos un programa que permite al procesador 502 realizar el método descrito en esta memoria descriptiva. Por ejemplo, el programa 510 de aplicación puede incluir las aplicaciones 1 a N, y las aplicaciones 1 a N además incluyen una aplicación de codificación de vídeo para realizar el método descrito en esta memoria descriptiva. El aparato 500 además puede incluir una memoria adicional en una forma de una memoria 514 secundaria. La memoria 514 secundaria, por ejemplo, puede ser una tarjeta de memoria utilizada junto con un dispositivo informático móvil. Debido a que una sesión de comunicación de vídeo puede contener una cantidad grande de información, la información puede ser completamente o parcialmente almacenada en la memoria 514 secundaria y puede ser cargada en la memoria 504 para su procesamiento según se requiera.
El aparato 500 además puede incluir uno o más dispositivos de salida, por ejemplo, una pantalla 518. En un ejemplo, la pantalla 518 puede ser una pantalla sensible al tacto que combina una pantalla con un elemento sensible al tacto que puede ser operado para detectar una entrada táctil. La pantalla 518 puede ser acoplada al procesador 502 utilizando el bus 512. Además de la pantalla 518, se puede proporcionar otro dispositivo de salida que permite a un usuario programar el aparato 500 o utilizar el aparato 500 de otra manera, o se puede proporcionar otro dispositivo de salida como una alternativa a la pantalla 518. Cuando el dispositivo de salida es una pantalla o incluye una pantalla, la pantalla puede ser implementada de manera diferente, por ejemplo, utilizando una pantalla de cristal líquido (liquid crystal display, LCD), una pantalla de tubo de rayos catódicos (cathode-ray tube, CRT), una pantalla de plasma, o una pantalla de diodo de emisión de luz (LED) tal como una pantalla LED orgánica (organic LED, OLED)
El aparato 500 además puede incluir un dispositivo 520 de detección de imágenes, o se puede conectar al dispositivo 520 de detección de imágenes. El dispositivo 520 de detección de imágenes, por ejemplo, es una cámara o cualquier otro dispositivo 520 de detección de imágenes existente o futuro que pueda detectar una imagen. La imagen, por ejemplo, es una imagen de un usuario que opera el aparato 500. El dispositivo 520 de detección de imágenes puede ser colocado directamente frente al usuario que opera el aparato 500. En un ejemplo, una posición y un eje óptico del dispositivo 520 de detección de imágenes pueden ser configurados, de manera que un campo de visión del dispositivo 520 de detección de imágenes incluya una región adyacente a la pantalla 518, y la pantalla 518 puede ser vista desde la región.
El aparato 500 además puede incluir un dispositivo 522 de detección de sonido, o se puede conectar al dispositivo 522 de detección de sonido. El dispositivo 522 de detección de sonido, por ejemplo, es un micrófono o cualquier otro dispositivo de detección de sonido existente o futuro que pueda detectar un sonido cerca del aparato 500. El dispositivo 522 de detección de sonido puede ser colocado directamente frente al usuario que opera el aparato 500, y puede ser configurado para recibir un sonido tal como una voz u otro sonido que es creado por el usuario cuando el usuario opera el aparato 500.
Aunque el procesador 502 y la memoria 504 del aparato 500 están integrados en una unidad como se ilustra en la figura 5, se pueden utilizar otras configuraciones. La ejecución del procesador 502 puede ser distribuida en una pluralidad de máquinas que pueden estar directamente acopladas (cada máquina tiene uno o más procesadores), o puede estar distribuida en una región local o en otra red. La memoria 504 puede estar distribuida en una pluralidad de máquinas tales como una memoria basándose en red y una memoria en una pluralidad de máquinas que operan el aparato 500. Aunque en la presente memoria se dibuja un solo bus, puede haber una pluralidad de buses 512 del aparato 500. Además, la memoria 514 secundaria puede estar directamente acoplada a los otros componentes del aparato 500 o se puede tener acceso a ella a través de una red, y puede incluir una sola unidad integrada tal como una tarjeta de memoria, o una pluralidad de unidades tal como una pluralidad de tarjetas de memoria. Por lo tanto, el aparato 500 puede ser implementado en una pluralidad de configuraciones.
A continuación, se describen conceptos en esta solicitud.
1. Modo de interpredicción
En HEVC, se utilizan dos modos de interpredicción: un modo de predicción de vector de movimiento avanzado (advanced motion vector prediction, AMVP) y un modo de fusión (merge).
En el modo AMVP, primero se recorren los bloques codificados espacialmente o temporalmente vecinos (denotados como bloques vecinos) de un bloque actual, y una lista de vectores de movimiento candidatos (la cual también se puede denominar lista de candidatos de información de movimiento) es construida basándose en información de movimiento de los bloques vecinos. Luego, un vector de movimiento óptimo es determinado de entre la lista de vectores de movimiento candidatos basándose en un coste de la tasa de distorsión, e información de movimiento candidata con un coste de tasa de distorsión mínimo es utilizada como un predictor de vector de movimiento (motion vector predictor, MVP) del bloque actual. Ambas posiciones de los bloques vecinos y un orden transversal de los mismos están predefinidos. El coste de tasa de distorsión es calculado según una fórmula (1), donde J indica el coste de tasa de distorsión, coste RD, SAD es una suma de diferencias absolutas (sum of absolute differences, SAD) entre un valor muestra original y un valor muestra predicho obtenido a través de estimación de movimiento utilizando el predictor de vector de movimiento candidato, R indica una tasa de bits, y X indica un multiplicador de Lagrange. Un lado del codificador transfiere un índice del predictor de vector de movimiento seleccionado en la lista de vectores de movimiento candidatos y un valor de índice de un fotograma de referencia a un lado del decodificador. Además, se realiza la búsqueda de movimiento en un entorno centrado en el MVP, para obtener un vector de movimiento real del bloque actual. El lado del codificador transfiere una diferencia (diferencia de vector de movimiento) entre el MVP y el vector de movimiento real al lado del decodificador.
J = SAD XR (1)
En el modo de fusión, una lista de vectores de movimiento candidatos primero es construida basándose en información de movimiento de bloques espacialmente o temporalmente codificados vecinos de un bloque actual. Después, la información de movimiento óptima es determinada de entre la lista de vectores de movimiento candidatos basándose en un coste de tasa de distorsión, para servir como información de movimiento del bloque actual. A continuación, un valor de índice (denotado como un índice de fusión en lo sucesivo) de una posición de la información de movimiento óptima en la lista de vectores de movimiento candidatos es transferido a un lado del decodificador. En la figura 6 se muestra información de movimiento candidata espacial e información de movimiento candidata temporal del bloque actual. La información de movimiento candidata espacial es de cinco bloques espacialmente vecinos (A0, A1, B0, B1, y B2). Si un bloque vecino no está disponible (el bloque vecino no existe, o el bloque vecino no está codificado, o un modo de predicción utilizado para el bloque vecino no es el modo de interpredicción), información de movimiento del bloque vecino no es añadida a la lista de vectores de movimiento candidatos. La información de movimiento candidata temporal del bloque actual es obtenida escalando un MV de un bloque en una posición correspondiente en un fotograma de referencia basándose en conteos de orden de imagen (picture order count, POC) del fotograma de referencia y un fotograma actual. Primero se determina si un bloque en una posición T en el fotograma de referencia está disponible. Si el bloque no está disponible, se selecciona un bloque en una posición C.
Similar al modo AMVP, en el modo de fusión, ambas posiciones de los bloques vecinos y un orden transversal de los mismos también están predefinidos. Además, posiciones de bloques vecinos y un orden transversal de los mismos pueden variar con un modo.
Se puede saber que una lista de vectores de movimiento candidatos necesita ser mantenida en el modo AMVP y el modo de fusión. Cada vez previo a que nueva información de movimiento sea añadida a una lista de candidatos, primero se verifica si la misma información de movimiento existe en la lista. Si existe la misma información de movimiento, la información de movimiento no es añadida a la lista. Este proceso de verificación es denominado recorte de la lista de vectores de movimiento candidatos. El recorte de una lista es para evitar la misma información de movimiento en la lista, de esta manera se evita un cálculo redundante de coste de tasa de distorsión.
En inter-predicción HEVC, todas las muestras en un bloque de codificación utilizan la misma información de movimiento, y entonces la compensación de movimiento se realiza basándose en la información de movimiento, para obtener predictores de las muestras del bloque de codificación. No obstante, en el bloque de codificación, no todas las muestras tienen una misma característica de movimiento. El uso de la misma información de movimiento puede provocar una predicción de compensación de movimiento imprecisa y más información residual.
En normas de codificación de vídeo existentes, se utiliza estimación de movimiento de emparejamiento de bloque basándose en un modelo de movimiento de traslación, y se asume que el movimiento de todas las muestras en un bloque es consistente. Sin embargo, en el mundo real, existe una variedad de movimiento. Muchos objetos están en movimiento que no es de traslación, por ejemplo, un objeto giratorio, una montaña rusa que gira en diferentes direcciones, una exhibición de fuegos artificiales, y algunas acrobacias en películas, especialmente un objeto en movimiento en un escenario UGC. Para estos objetos en movimiento, si para la codificación se utiliza una tecnología de compensación de movimiento de bloque basándose en un modelo de movimiento de traslación en las normas de codificación existentes, entonces la eficiencia de la codificación se puede ver muy afectada. Por lo tanto, para mejorar adicionalmente la eficiencia de la codificación se introduce un modelo de movimiento de no traslación tal como un modelo de movimiento afín.
Por lo tanto, en términos de diferentes modelos de movimiento, el modo AMVP puede ser clasificado en un modo AMVP basándose en modelo de traslación y un modo AMVP basándose en modelo de no traslación, y el modo de fusión puede ser clasificado en un modo de fusión basándose en modelo de traslación y un modo de fusión basándose en modelo de no traslación.
2. Modelo de movimiento de no traslación
En la predicción basándose en modelo de movimiento de no traslación, un lado del códec utiliza un modelo de movimiento para derivar información de movimiento de cada unidad de compensación de movimiento secundaria en un bloque actual, y realiza compensación de movimiento basándose en la información de movimiento de la unidad de compensación de movimiento secundaria para obtener un bloque de predicción, a fin de mejorar la eficiencia de la predicción. Un modelo de movimiento de no traslación común es un modelo de movimiento afín de 4 parámetros o un modelo de movimiento afín de 6 parámetros.
La unidad de compensación de movimiento secundaria en las realizaciones de esta solicitud puede ser una muestra o un bloque de muestras N x N2 obtenido a través de la división según un método particular, donde N y N2 son enteros positivos, y N puede ser igual a N2, o puede no ser igual a N2.
El modelo de movimiento afín de 4 parámetros es expresado como una fórmula (2):
El modelo de movimiento afín de 4 parámetros puede ser representado por vectores de movimiento de dos muestras y coordenadas de las dos muestras con relación a la muestra superior-izquierda del bloque actual. Una muestra utilizada para representar un parámetro del modelo de movimiento se denomina punto de control. Si la muestra superior-izquierda (0, 0) y la muestra superior-derecha (W, 0) son utilizadas como puntos de control, entonces primero se determinan vectores de movimiento (vx0,vy0) y (vx1,vy1) del punto de control superior-izquierdo y el punto de control superior-derecho del bloque actual. Luego, la información de movimiento de cada unidad de compensación de movimiento secundaria en el bloque actual es obtenida según una fórmula (3), donde (x, y) son las coordenadas de la unidad de compensación de movimiento secundaria con relación a la muestra superior-izquierda del bloque actual, y W indica una anchura del bloque actual.
El modelo de movimiento afín de 6 parámetros es expresado como una fórmula (4):
El modelo de movimiento afín de 6 parámetros puede ser representado por vectores de movimiento de tres muestras y coordenadas de las tres muestras con relación a la muestra superior-izquierda del bloque actual. Si la muestra superior-izquierda (0, 0), la muestra superior-derecha (W, 0), y la muestra inferior-izquierda (0, H) son utilizadas como puntos de control, entonces primero se determinan los vectores de movimiento (vx0,vy0), (vx1,vy1), y (vx2,vy2) del punto de control superior-izquierdo, el punto de control superior-derecho, y el punto de control inferior-izquierdo del bloque actual. Luego, la información de movimiento de cada unidad de compensación de movimiento secundaria en el bloque actual es obtenida según una fórmula (5), donde (x, y) son las coordenadas de la unidad de compensación de movimiento secundaria con relación a la muestra superior-izquierda del bloque actual, y W y H indican una anchura y una altura del bloque actual, respectivamente.
Un bloque de codificación que es predicho utilizando el modelo de movimiento afín es referido como un bloque de codificación afín.
Generalmente, información de movimiento de un punto de control de un bloque de codificación afín puede ser obtenida utilizando un modo de predicción de vector de movimiento avanzado del modelo de movimiento afín (Advanced Motion Vector Prediction, AMVP) o un modo de fusión basándose en modelo de movimiento afín (Merge).
La información de movimiento del punto de control del bloque de codificación actual se puede obtener utilizando un método de predicción de vector de movimiento de punto de control heredado o un método de predicción de vector de movimiento de punto de control construido.
3. Método de predicción de vector de movimiento de punto de control heredado
El método de predicción de vector de movimiento de punto de control heredado utiliza un modelo de movimiento de un bloque de codificación afín codificado vecino para determinar un vector de movimiento de punto de control candidato de un bloque actual.
Un bloque actual mostrado en la figura 7 es utilizado como un ejemplo. Se recorren bloques vecinos alrededor del bloque actual en un orden especificado, por ejemplo, A1->B1->B0->A0->B2, para encontrar un bloque de codificación afín en el cual se localiza un bloque vecino del bloque actual, y obtener información de movimiento de punto de control del bloque de codificación afín. Además, un vector de movimiento de punto de control (para el modo de fusión) o un predictor de vector de movimiento de punto de control (para el modo AMVP) del bloque actual es derivado utilizando un modelo de movimiento construido utilizando la información de movimiento de punto de control del bloque de codificación afín. El orden A1->B1->B0->A0->B2 es utilizado simplemente un ejemplo. Un orden de otra combinación es también aplicable a esta solicitud. Además, los bloques vecinos no están limitados a A1, B1, B0, A0, y B2.
El bloque vecino puede ser una muestra o un bloque de muestra de un tamaño preestablecido obtenido basándose en un método de división particular, por ejemplo, puede ser un bloque de muestras 4x4, un bloque de muestras 4x2, o un bloque de muestras de otro tamaño. Esto no queda limitado.
Lo siguiente describe un proceso de determinación utilizando A1 como un ejemplo, y otro caso es similar a este.
Como se muestra en la figura 7, si un bloque de codificación en el cual se localiza A1 es un bloque de codificación afín de 4 parámetros, se obtiene un vector de movimiento (vx4, vy4) de la muestra superiorizquierda (x4, y4) y un vector de movimiento (vx5, vy5) de la muestra superior-derecha (x5, y5) del bloque de codificación afín. Un vector de movimiento (vx0, vy0) de la muestra superior-izquierda (x0, y0) de un bloque de codificación afín actual se calcula según una fórmula (6), y un vector de movimiento (vx1, vy1) de la muestra superior-derecha (x1, y1) del bloque de codificación afín se calcula según una fórmula (7).
Una combinación del vector de movimiento (vx0, vy0) de la muestra superior-izquierda (x0, y0) y el vector de movimiento (vx1, vy1) de la muestra superior-derecha (x1, y1) del bloque actual que se obtienen basándose en el bloque de codificación afín en el cual se localiza A1 es el vector de movimiento de punto de control candidato del bloque actual.
Si un bloque de codificación en el cual se localiza A1 es un bloque de codificación afín de 6 parámetros, se obtiene un vector de movimiento (vx4, vy4) de la muestra superior-izquierda (x4, y4), un vector de movimiento (vx5, vy5) de la muestra superior-derecha (x5, y5), y un vector de movimiento (vx6, vy6) de la muestra inferiorizquierda (x6, y6) del bloque de codificación afín. Un vector de movimiento (vx0, vy0) de la muestra superiorizquierda (x0, y0) de un bloque actual es calculado según una fórmula (8), un vector de movimiento (vx1, vy1) de la muestra superior-derecha (x1, y1) del bloque actual es calculado según una fórmula (9), y un vector de movimiento (vx2, vy2) de la muestra inferior-izquierda (x2, y2) del bloque actual es calculado según una fórmula (10).
Una combinación del vector de movimiento (vx0, vy0) de la muestra superior-izquierda (x0, y0), el vector de movimiento (vx1, vy1) de la muestra superior-derecha (x1, y1), y el vector de movimiento (vx2, vy2) de la muestra inferior-izquierda (x2, y2) del bloque actual que se obtienen basándose en el bloque de codificación afín en el cual se localiza A1 es el vector de movimiento de punto de control candidato del bloque actual.
Se debe observar que otros modelos de movimiento, posiciones de candidatos, y órdenes de búsqueda y transversales también son aplicables a esta solicitud. Los detalles no se describen en las realizaciones de esta solicitud.
Se debe observar que un método en el cual se utilizan otros puntos de control para representar modelos de movimiento para bloques de codificación vecinos y actuales también es aplicable a esta solicitud. Los detalles no se describen en la presente memoria.
4. Método 1 de predicción de vector de movimiento de punto de control construido (constructed control point motion vectors)
El método de predicción de vector de movimiento de punto de control construido es la combinación de vectores de movimiento de bloques codificados vecinos alrededor de un punto de control de un bloque actual y el uso de los vectores de movimiento combinados como vectores de movimiento de punto de control de un bloque de codificación afín actual, sin considerar si los bloques codificados vecinos son bloques de codificación afín.
Vectores de movimiento de la muestra superior-izquierda y la muestra superior-derecha del bloque actual son determinados utilizando información de movimiento de los bloques codificados vecinos alrededor del bloque de codificación actual. La figura 8A es utilizada como un ejemplo para describir el método de predicción de vector de movimiento de punto de control construido. Se debe observar que la figura 8A es simplemente un ejemplo.
Como se muestra en la figura 8A, vectores de movimiento de bloques codificados vecinos A2, B2, y B3 en la muestra superior-izquierda son utilizados como vectores de movimiento candidatos para un vector de movimiento de la muestra superior-izquierda del bloque actual, y vectores de movimiento de bloques codificados vecinos B1 y B0 en la muestra superior-derecha son utilizados como vectores de movimiento candidatos para un vector de movimiento de la muestra superior-derecha del bloque actual. Los vectores de movimiento candidatos de la muestra superior-izquierda y la muestra superior-derecha son combinados para constituir una pluralidad de 2-tuplas. Vectores de movimiento de dos bloques codificados incluidos en 2-tuplas pueden ser utilizados como vectores de movimiento de punto de control candidatos del bloque actual, como se muestra en la siguiente fórmula (11A):
{VA 2. VB i } ’ {VA 2. VBo}> {vB2¡ VB i } ’ {vB2¡ Vb o }> {vB3’ VB i } ’ {vB3’ VBo}11(A)
v A2indica el vector de movimiento de A2,v B 1indica el vector de movimiento de B1,v B0indica el vector de movimiento de B0,v B2indica el vector de movimiento de B2, yv B3indica el vector de movimiento de B3.
Tal como se muestra en la figura 8A, vectores de movimiento de bloques codificados vecinos A2, B2, y B3 en la muestra superior-izquierda son utilizados como vectores de movimiento candidatos para un vector de movimiento de la muestra superior-izquierda del bloque actual, vectores de movimiento de bloques codificados vecinos B1 y B0 en la muestra superior-derecha son utilizados como vectores de movimiento candidatos para un vector de movimiento de la muestra superior-derecha del bloque actual, y vectores de movimiento de bloques codificados vecinos A0 y A1 en la muestra inferior-izquierda son utilizados como vectores de movimiento candidatos para un vector de movimiento de la muestra inferior-izquierda del bloque actual. Los vectores de movimiento candidatos de la muestra superior-izquierda, la muestra superior-derecha, y la muestra inferior-izquierda son combinados para constituir una 3-tupla. Vectores de movimiento de tres bloques codificados incluidos en la 3-tupla pueden ser utilizados como vectores de movimiento de punto de control candidatos del bloque actual, como se muestra en las siguientes fórmulas (11B) y (11C):
{ VA2, VB1, v A ü ] , { VA2, VB0, v A ü ] , { VB 2 ,VB1, v A ü ] , { VB2, VB0, v A ü ] , { VB 3 ,VB1, v A ü ] , { VB3, VB0, v A ü }(11B)
i VA2, VB1, VA1} , i VA2, VB0, v A1} , { v B 2 ,VB1, VA1} , i VB2, VB0, VA1} , { v B 3 ,VB1, VA1} , i VB3, VB0, VA1}(11C)
v A2indica el vector de movimiento de A2,v B 1indica el vector de movimiento de B1,v B0indica el vector de movimiento de B0,v B2indica el vector de movimiento de B2,v B3indica el vector de movimiento de B3,v A0indica el vector de movimiento de A0, yv A 1indica el vector de movimiento de A1.
Se debe observar que otros métodos de combinación de vectores de movimiento de punto de control también son aplicables a esta solicitud. Los detalles no se describen en la presente memoria.
Se debe observar que un método en el cual se utilizan otros puntos de control para representar modelos de movimiento de bloques de codificación vecinos y actuales también es aplicable a esta solicitud. Los detalles no se describen en la presente memoria.
5. Método de predicción 2 de vector de movimiento de punto de control construido (constructed control point motion vectors): Para más información, consulte la figura 8B.
Etapa 801: Obtener información de movimiento de puntos de control de un bloque actual.
Por ejemplo, en la figura 8A, CPk (k = 1, 2, 3, o 4) indica un késimo punto de control, A0, A1, A2, B0, B1, B2, y B3 son posiciones espacialmente vecinas del bloque actual y son utilizadas para predecir CP1, CP2, o CP3, y T es una posición temporalmente vecina del bloque actual y se utiliza para predecir CP4.
Se asume que las coordenadas de CP1, CP2, CP3, y CP4 son (0, 0), (W, 0), (H, 0), y (W, H), respectivamente, donde W y H indican una anchura y una altura del bloque actual.
La información de movimiento de cada punto de control se obtiene en el siguiente orden:
(1) Para CP1, un orden de verificación es B2->A2->B3. Si B2 está disponible, se utiliza información de movimiento de B2. Si B2 no está disponible, se verifica A2 y B3. Si información de movimiento de todas las tres posiciones no está disponible, entonces no se puede obtener información de movimiento de CP1.
(2) Para CP2, un orden de verificación es B0->B1. Si B0 está disponible, información de movimiento de B0 es utilizada para CP2. Si B0 no está disponible, se verifica B1. Si no hay disponible información de movimiento de ambas posiciones, entonces no se puede obtener información de movimiento de CP2.
(3) Para CP3, un orden de verificación es A0->A1.
(4) Para CP4, se utiliza información de movimiento de T.
En la presente memoria, que X esté disponible significa que un bloque en una posición X (X es A0, A1, A2, B0, B1, B2, B3, o T) ha sido codificado y se utiliza un modo de interpredicción. De otra manera, la posición X no está disponible.
Se debe observar que otros métodos para obtener información de movimiento de un punto de control también son aplicables a esta solicitud. Los detalles no se describen en la presente memoria.
Etapa 802: Combinar la información de movimiento de los puntos de control para obtener información de movimiento de punto de control construida.
Información de movimiento de dos puntos de control es combinada para constituir una 2-tupla, para constituir un modelo de movimiento afín de 4 parámetros. Una manera de combinar los dos puntos de control puede ser {CP1, CP4}, {CP2, CP3}, {CP1, CP2}, {CP2, CP4}, {CP1, CP3}, o {CP3, CP4}. Por ejemplo, un modelo de movimiento afín de 4 parámetros construido utilizando una 2-tupla que incluye los puntos de control CP1 y CP2 puede ser denotado como Afín (CP1, CP2).
Información de movimiento de tres puntos de control es combinada para constituir una 3-tupla, para construir un modelo de movimiento afín de 6 parámetros. Una manera de combinar los tres puntos de control puede ser {CP1, CP2, CP4}, {CP1, CP2, CP3}, {CP2, CP3, CP4}, o {CP1, CP3, CP4}. Por ejemplo, un modelo de movimiento afín de 6 parámetros construido utilizando una 3-tupla que incluye los puntos de control CP1, CP2, y CP3 puede ser denotado como Afín (CP1, CP2, CP3).
La información de movimiento de cuatro puntos de control se combina para constituir una 4-tupla, para construir un modelo bilineal de 8 parámetros. Un modelo bilineal de 8 parámetros construido utilizando una 4-tupla que incluye los puntos de control CP1, CP2, CP3, y CP4 puede ser denotado como "Bilineal" (CP1, C<p>2,<c>P3, CP4).
En esta realización de esta solicitud, para facilidad de la descripción, una combinación de información de movimiento de dos puntos de control (o dos bloques codificados) se denomina simplemente 2-tupla, una combinación de información de movimiento de tres puntos de control (o tres bloques codificados) se denomina simplemente 3-tupla, y una combinación de información de movimiento de cuatro puntos de control (o cuatro bloques codificados) se denomina simplemente 4-tupla.
Se recorren estos modelos en un orden preestablecido. Si la información de movimiento de un punto de control correspondiente a un modelo combinado no está disponible, se considera que el modelo no está disponible. De otra manera, se determina un índice de fotograma de referencia del modelo, y se escalan vectores de movimiento de puntos de control. Si la información de movimiento escalada de todos los puntos de control es consistente, el modelo es inválido. Si la información de movimiento de todos los puntos de control que controlan el modelo está disponible, y el modelo es válido, la información de movimiento de los puntos de control que construyen el modelo es añadida a una lista de candidatos de información de movimiento.
Un método de escalado de vector de movimiento de puntos de control se muestra en una fórmula (12):
C u r P o cindica un número POC de un fotograma de referencia,D e s P o cindica un número POC de un fotograma de referencia del bloque actual,S r c P o cindica un número POC de un fotograma de referencia de un punto de control, MVS indica un vector de movimiento obtenido a través de escalado, y MV indica un vector de movimiento del punto de control.
Se debe observar que una combinación de diferentes puntos de control puede ser transformada en puntos de control en una misma posición.
Por ejemplo, un modelo de movimiento afín de 4 parámetros obtenido a través de una combinación de {CP1, CP4}, {CP2, CP3}, {CP2, CP4}, {CP1, CP3}, o {CP3, CP4} es transformado en una representación por {CP1, CP2} o {CP1, CP2, CP3}. Un método de transformada es: sustituir un vector de movimiento e información de coordenadas de un punto de control en la fórmula (2 ), para obtener un parámetro del modelo, y después sustituir información de coordenadas de {CP1, CP2} en la fórmula (3), para obtener un vector de movimiento.
Más directamente, la transformada puede ser realizada según las siguientes fórmulas (13) a (21), donde W indica la anchura del bloque actual, y H indica la altura del bloque actual. En las fórmulas (13) a (21),( v x 0 , v y 0 )indica un vector de movimiento de CP1,( v x 1 , v y 1 )indica un vector de movimiento de CP2,( v x 2 , v y 2 )indica un vector de movimiento de CP3, y( v x 3 , v y 3 )indica un vector de movimiento de CP4.
{CP1, CP2} pueden ser transformados en {CP1, CP2, CP3} según la siguiente fórmula (13). En otras palabras, el vector de movimiento de CP3 en {CP1, CP2, CP3} puede ser determinado según la fórmula (13):
{CP1, CP3} puede ser transformado en {CP1, CP2} o {CP1, CP2, CP3} según la siguiente fórmula (14):
{CP2, CP3} puede ser transformado en {CP1, CP2} o {CP1, CP2, CP3} según la siguiente fórmula (15):
{CP1, CP4} puede ser transformado en {CP1, CP2} o {CP1, CP2, CP3} según la siguiente fórmula (16) o (17):
{CP2, CP4} puede ser transformado en {CP1, CP2} según la siguiente fórmula (18), y {CP2, CP4} puede ser transformado en {CP1, CP2, CP3} según las siguientes fórmulas (18) y (19):
{CP3, CP4} puede ser transformado en {CP1, CP2} según la siguiente fórmula (20), y {CP3, CP4} puede ser transformado en {CP1, CP2, CP3} según las siguientes fórmulas (20) y (21):
Por ejemplo, un modelo de movimiento afín de 6 parámetros obtenido a través de una combinación de {CP1, CP2, CP4}, {CP2, CP3, CP4}, o {CP1, CP3, CP4} es transformado en una representación por {CP1, CP2, Cp 3}. Un método de transformada es: sustituir un vector de movimiento e información de coordenadas de un punto de control en la fórmula (4), para obtener un parámetro del modelo, y después sustituir información de coordenadas de {CP1, CP2, CP3} en la fórmula (5), para obtener un vector de movimiento.
De manera más directa, la transformada puede ser realizada según las siguientes fórmulas (22) a (24), donde W indica la anchura del bloque actual, y H indica la altura del bloque actual. En las fórmulas (13) a (21),( v x 0 , v y 0 )indica un vector de movimiento de CP1,( v x 1 , v y 1 )indica un vector de movimiento de CP2,( v x 2 , v y 2 )indica un vector de movimiento de CP3, y( v x 3 , v y 3 )indica un vector de movimiento de CP4.
{CP1, CP2, CP4} puede ser transformado en {CP1, CP2, CP3} según la siguiente fórmula (22):
{CP2, CP3, CP4} puede ser transformado en {CP1, CP2, CP3} según la siguiente fórmula (23):
{CP1, CP3, CP4} puede ser transformado en {CP1, CP2, CP3} según la siguiente fórmula (24):
6. Modo de predicción de vector de movimiento avanzado basándose en modelo de movimiento afín (Modo AMVP Afín)
(1) Construir una lista de vectores de movimiento candidatos
Una lista de vectores de movimiento candidatos para el modelo AMVP basándose en modelo de movimiento afín es construida utilizando un método de predicción de vector de movimiento de punto de control heredado y/o un método de predicción de vector de movimiento de punto de control construido. En esta realización de esta solicitud, la lista de vectores de movimiento candidatos para el modelo AMVP basándose en modelo de movimiento afín se puede denominar lista candidata de predictor de vectores de movimiento de punto de control (control point motion vectors predictor candidate list). Un predictor de vector de movimiento de cada punto de control incluye vectores de movimiento de dos (modelo de movimiento afín de 4 parámetros) puntos de control o vectores de movimiento de tres (modelo de movimiento afín de 6 parámetros) puntos de control.
Opcionalmente, la lista de candidatos de predictor de vectores de movimiento de punto de control es recortada y clasificada según una regla particular, y se puede truncar o rellenar a una cantidad particular.
(2) Determinar un predictor de vector de movimiento de punto de control óptimo.
En un lado del codificador, un vector de movimiento de cada unidad de compensación de movimiento secundaria en un bloque de codificación actual se obtiene basándose en cada predictor de vector de movimiento de punto de control en la lista de candidatos de predictor de vectores de movimiento de punto de control utilizando la fórmula (3)/(5), con el fin de obtener un valor muestra en una posición correspondiente en un fotograma de referencia al cual apunta el vector de movimiento de cada unidad de compensación de movimiento secundaria, y el valor muestra es utilizado como un predictor para realizar compensación de movimiento utilizando el modelo de movimiento afín. Se calcula una diferencia promedio entre un valor original y un predictor de cada muestra en el bloque de codificación actual. Un predictor de vector de movimiento de punto de control correspondiente a una diferencia promedio mínima se selecciona como el predictor de vector de movimiento de punto de control óptimo y es utilizado como predictores de vector de movimiento de dos/tres puntos de control del bloque de codificación actual. Un número de índice que representa una posición del predictor de vector de movimiento de punto de control en la lista de candidatos de predictor de vectores de movimiento de punto de control es codificado en un flujo de bits y es enviado a un decodificador.
En un lado del decodificador, el número de índice es analizado, y el predictor de vector de movimiento de punto de control (control point motion vectors predictor, CPMVP) es determinado de entre la lista de candidatos de predictor de vectores de movimiento de punto de control basándose en el número de índice.
(3) Determinar un vector de movimiento de punto de control
En el lado del codificador, el predictor de vector de movimiento de punto de control se utiliza como un punto de inicio de búsqueda para búsqueda de movimiento dentro de un intervalo de búsqueda específico, para obtener el vector de movimiento de punto de control (control point motion vectors, CPMV). Una diferencia (diferencias de vectores de movimiento de punto de control, CPMVD) entre el vector de movimiento de punto de control y el predictor de vector de movimiento de punto de control es transferida al lado del decodificador.
En el lado del decodificador, la diferencia de vector de movimiento de punto de control es analizada y añadida al predictor de vector de movimiento de punto de control, para obtener el vector de movimiento de punto de control.
7. Modo de Fusión Afín (Affine Merge mode)
Una lista de candidatos de fusión de vectores de movimiento de punto de control (control point motion vectors merge candidate list) es construida utilizando un método de predicción de vector de movimiento de punto de control heredado y/o un método de predicción de vector de movimiento de punto de control construido.
Opcionalmente, la lista de candidatos de fusión de vector de movimiento de punto de control es recortada y clasificada según una regla particular, y puede ser truncada o rellenada a una cantidad particular.
En un lado del codificador, un vector de movimiento de cada unidad de compensación de movimiento secundaria (una muestra o un bloque de muestrasN1 x N2obtenido a través de la división según un método particular) en un bloque de codificación actual se obtiene basándose en cada vector de movimiento de punto de control en la lista de candidatos de fusión utilizando la fórmula (3)/(5), para obtener un valor muestra en una posición en un fotograma de referencia al cual apunta el vector de movimiento de cada unidad de compensación de movimiento secundaria, y el valor muestra es utilizado como un predictor para realizar compensación de movimiento afín. Se calcula una diferencia promedio entre un valor original y un predictor de cada muestra en el bloque de codificación actual. Un vector de movimiento de punto de control correspondiente a una diferencia promedio mínima es seleccionado como vectores de movimiento de dos/tres puntos de control del bloque de codificación actual. Un número de índice que representa una posición del vector de movimiento de punto de control en la lista de candidatos es codificado en un flujo de bits y enviado al decodificador.
En un lado del decodificador, el número de índice es analizado, y el vector de movimiento de punto de control (control point motion vectors, CPMV) es determinado de la lista de candidatos de fusión de vector de movimiento de punto de control basándose en el número de índice.
Además, se debe observar que en esta solicitud, "al menos uno" significa uno o más, y "una pluralidad de" significa dos o más. El término "y/o" describe una relación de asociación para describir objetos asociados e indica que pueden existir tres relaciones. Por ejemplo, A y/o B pueden representar los siguientes casos: solamente A existe, ambos A y B existen, y solamente B existe, donde A y B pueden ser singulares o plurales. El carácter "/" generalmente indica una relación de "o" entre los objetos asociados. "Al menos uno de los siguientes elementos (piezas)" o una expresión similar indican cualquier combinación de estos elementos, que incluye un solo elemento (pieza) o cualquier combinación de una pluralidad de elementos (piezas). Por ejemplo, al menos uno de a, b, o c puede indicar: a, b, c, a y b, a y c, b y c, o a, b, y c, donde a, b, y c pueden ser singulares o plurales.
En esta solicitud, cuando el modo de interpredicción es utilizado para decodificar el bloque actual, se puede utilizar un elemento de sintaxis para señalizar el modo de interpredicción.
Para algunas estructuras de sintaxis actualmente utilizadas del modo de interpredicción utilizado para analizar el bloque actual, consulte la Tabla 1. Se debe observar que un elemento de sintaxis en una estructura de sintaxis alternativamente puede ser representado por otros identificadores. Esto no queda específicamente limitado en esta solicitud.
Tabla 1
_______________________________ _____________________________________________
___________________________________________________________________________
Un elemento de sintaxis fusión_indicador[x0][y0] puede ser utilizado para indicar si el modo de fusión es utilizado para el bloque actual. Por ejemplo, cuando fusión_indicador[x0][y0]=1, esto indica que el modo de fusión es utilizado para el bloque actual, y cuando fusión_indicador[x0][y0]=0, esto indica que el modo de fusión no es utilizado para el bloque actual, donde x0 y y0 indican coordenadas del bloque actual en una imagen de vídeo.
Una variable permitirFusiónAfín puede ser utilizada para indicar si el bloque actual cumple con una condición para utilizar el modo de fusión basándose en modelo de movimiento afín. Por ejemplo, cuando permitirAfínInter=0, esto indica que la condición para utilizar el modo de fusión basándose en modelo de movimiento afín no se cumple, y cuando permitirAfínInter=1, esto indica que la condición para utilizar el modo de fusión basándose en modelo de movimiento afín se cumple. La condición para utilizar el modo de fusión basándose en modelo de movimiento afín puede ser que tanto una anchura como una altura del bloque actual son mayores que o iguales a 8, donde cbAnchura indica la anchura del bloque actual, y cbAltura indica la altura del bloque actual. En otras palabras, cuando cbAnchura<8 o cbAltura<8, permitirFusiónAfín=0, y cuando cbAnchura>8 y cbAltura>8, permitirFusiónAfín=1.
Una variable permitirAfínInter puede ser utilizada para indicar si el bloque actual cumple con una condición para utilizar el modelo AMVP basándose en modelo de movimiento afín. Por ejemplo, cuando permitirAfínInter=0, esto indica que la condición para utilizar el modelo AMVP basándose en modelo de movimiento afín no se cumple, y cuando permitirAfínInter=1, esto indica que la condición para utilizar el modelo AMVP basándose en modelo de movimiento afín se cumple. La condición para utilizar el modelo AMVP basándose en modelo de movimiento afín puede ser que la anchura y la altura del bloque actual son mayores que o iguales a 16. En otras palabras, cuando cbAnchura<16 o cbAltura<16, permitirAfínInter=0, y cuando cbAnchura>16 y cbAltura>16, permitirAfínInter=1.
Un elemento de sintaxis afín_fusión_indicador[x0][y0] puede ser utilizado para indicar si el modo de fusión basándose en modelo de movimiento afín es utilizado para el bloque actual. Un tipo de un segmento (segmento_tipo) en el cual se localiza el bloque actual es un P tipo o un B tipo. Por ejemplo, cuando afín_fusión_indicador[x0][y0]=1, esto indica que el modo de fusión basándose en modelo de movimiento afín es utilizado para el bloque actual, y cuando afín_fusión_indicador[x0][y0]=0, esto indica que el modo de fusión basándose en modelo de movimiento afín no es utilizado para el bloque actual, pero se puede utilizar el modo de fusión basándose en modelo de movimiento de traslación.
Un elemento de sintaxis fusión_idx[x0][y0] puede ser utilizado para indicar un valor de índice de una lista de candidatos de fusión.
Un elemento de sintaxis afín_fusión_idx[x0][y0] puede ser utilizado para indicar un valor de índice de una lista de candidatos de fusión afín.
Un elemento de sintaxis afín_inter_indicador[x0][y0] puede ser utilizado para indicar si el modelo AMVP basándose en modelo de movimiento afín es utilizado para el bloque actual cuando el segmento en el cual se localiza el bloque actual es un segmento tipo P o un segmento tipo B. Por ejemplo, cuando permitirAfínInter=0, esto indica que el modelo AMVP basándose en modelo de movimiento afín es utilizado para el bloque actual, y cuando permitirAfínInter=1, esto indica que el modelo AMVP basándose en modelo de movimiento afín no es utilizado para el bloque actual, pero se puede utilizar el modo AMVP basándose en el modelo de movimiento de traslación.
Un elemento de sintaxis afín_tipo_indicador[x0][y0] puede ser utilizado para indicar si el modelo de movimiento afín de 6 parámetros es utilizado para realizar compensación de movimiento en el bloque actual cuando el segmento en el cual se localiza el bloque actual es un segmento tipo P o un segmento tipo B. Cuando afín_tipo_indicador[x0][y0]=0, esto indica que el modelo de movimiento afín de 6 parámetros no es utilizado para realizar compensación de movimiento en el bloque actual, pero solamente el modelo de movimiento afín de 4 parámetros puede ser utilizado para realizar compensación de movimiento, y cuando afín_tipo_indicador[x0][y0]=1, esto indica que el modelo de movimiento afín de 6 parámetros es utilizado para realizar compensación de movimiento en el bloque actual.
Como se muestra en la Tabla 2, cuando MovimientoModeloIdc[x0][y0]=1, esto indica que el modelo de movimiento afín de 4 parámetros es utilizado, cuando MovimientoModeloIdc[x0][y0]=2, esto indica que el modelo de movimiento afín de 6 parámetros es utilizado, y cuando MovimientoModeloIdc[x0][y0]=0, esto indica que el modelo de movimiento de traslación es utilizado.
Tabla 2
Las variables MaxNumFusiónCand y MaxAfínNumMrgCand son utilizadas para indicar una longitud de lista máxima, e indica una longitud máxima de la lista de vectores de movimiento candidatos construida; inter_pred_idc[x0][y0] es utilizado para indicar una dirección de predicción; PRED_L1 es utilizado para indicar predicción de retroceso; num_ref_idx_10_activo_menos1 indica una cantidad de fotogramas de referencia en una lista de fotogramas de referencia de avance, y ref_idx_l0[x0][y0] indica un valor de índice de fotograma de referencia de avance del bloque actual; mvd_codificación(x0, y0, 0, 0) indica la primera diferencia de vector de movimiento; mvp_10_indicador[x0][y0] indica un valor de índice de lista de candidatos MVP de avance; PRED_L0 indica predicción de avance; num_ref_idx_11_activo_menos1 indica una cantidad de fotogramas de referencia en una lista de fotogramas de referencia de retroceso y ref_idx_l1[x0][y0] indica un valor de índice de fotograma de referencia de retroceso del bloque actual; y mvp_11_indicador[x0][y0] indica un valor de índice de lista de candidatos MVP de retroceso.
En la Tabla 1, ae(v) indica un elemento de sintaxis codificado a través de codificación aritmética binaria adaptable basándose en contexto (context-based adaptive binary arithmetic coding, CABAC).
Lo siguiente describe un proceso de interpredicción en detalle. Para más información, consulte la figura 9A.
Etapa 601: Analizar un flujo de bits basándose en una estructura de sintaxis mostrada en la Tabla 1, para determinar un modo de interpredicción para un bloque actual.
Si se determina que el modo de interpredicción para el bloque actual es un modelo AMVP basándose en modelo de movimiento afín, entonces se realiza la etapa 602a.
Para ser específicos, cuando un elemento de sintaxis fusión_indicador=0 y un elemento de sintaxis afín_inter_indicador=1, esto indica que el modo de interpredicción para el bloque actual es el modelo AMVP basándose en modelo de movimiento afín.
Si se determina que el modo de interpredicción para el bloque actual es un modo de fusión (merge) basándose en modelo de movimiento afín, entonces se realiza la etapa 602b.
Para ser específico, cuando un elemento de sintaxis fusión_indicador=1 y un elemento de sintaxis afín_fusión_indicador=1, esto indica que el modo de interpredicción para el bloque actual es el modo de fusión basándose en modelo de movimiento afín.
Etapa 602a: Construir una lista de vectores de movimiento candidatos correspondiente al modelo AMVP basándose en modelo de movimiento afín, y realizar la etapa 603a.
Un vector de movimiento de punto de control candidato del bloque actual es derivado utilizando un método de predicción de vector de movimiento de punto de control heredado y/o un método de predicción de vector de movimiento de punto de control construido, y se añade a la lista de vectores de movimiento candidatos.
La lista de vectores de movimiento candidatos puede incluir una lista de 2-tuplas (un modelo de movimiento afín de 4 parámetros es utilizado para el bloque de codificación actual) o una lista de 3-tuplas. La lista de 2-tuplas incluye una o más 2-tuplas utilizadas para construir un modelo de movimiento afín de 4 parámetros. La lista de 3-tuplas incluye una o más 3-tuplas utilizadas para construir un modelo de movimiento afín de 6 parámetros.
Opcionalmente, la lista de 2-tuplas/3-tuplas de vector de movimiento candidato es recortada y clasificada según una regla particular, y puede ser truncada o rellenada a una cantidad particular.
A1: Se describe un proceso para construir la lista de vectores de movimiento candidatos utilizando el método de predicción de vector de movimiento de punto de control heredado.
La figura 7 es utilizada como un ejemplo. Por ejemplo, se recorren los bloques vecinos alrededor del bloque actual en un orden de A1->B1->B0->A0->B2 en la figura 7, para encontrar un bloque de codificación afín en el cual se localiza el bloque vecino, y obtener información de movimiento de punto de control del bloque de codificación afín. Además, información de movimiento de punto de control candidato del bloque actual es derivada utilizando un modelo de movimiento construido basándose en la información de movimiento de punto de control del bloque de codificación afín. Para más información, consulte las descripciones relacionadas del método de predicción de vector de movimiento de punto de control heredado en 3. Los detalles no se describen en la presente memoria.
Por ejemplo, cuando un modelo de movimiento afín utilizado para el bloque actual es un modelo de movimiento afín de 4 parámetros (es decir, MovimientoModeloIdc=1), si el modelo de movimiento afín de 4 parámetros es utilizado para un bloque de decodificación afín vecino, se obtienen vectores de movimiento de dos puntos de control del bloque de decodificación afín: un vector de movimiento (vx4, vy4) de un punto de control superiorizquierdo (x4, y4) y un vector de movimiento (vx5, vy5) de un punto de control superior-derecho (x5, y5). El bloque de decodificación afín es un bloque de codificación afín predicho en una fase de codificación utilizando un modelo de movimiento afín.
Vectores de movimiento de un punto de control superior-izquierdo y un punto de control superior-derecho del bloque actual son respectivamente derivados según las fórmulas (6) y (7) correspondientes al modelo de movimiento afín de 4 parámetros utilizando el modelo de movimiento afín de 4 parámetros que incluye los dos puntos de control del bloque de decodificación afín vecino.
Si un modelo de movimiento afín de 6 parámetros es utilizado para el bloque de decodificación afín vecino, se obtienen vectores de movimiento de tres puntos de control del bloque de decodificación afín vecino, por ejemplo, el vector de movimiento (vx4, vy4) del punto de control superior-izquierdo (x4, y4), el vector de movimiento (vx5, vy5) del punto de control superior-derecho (x5, y5), y un vector de movimiento (vx6, vy6) de un punto de control inferior-izquierdo (x6, y6) en la figura 7.
Los vectores de movimiento del punto de control superior-izquierdo y el punto de control superior-derecho del bloque actual son derivados respectivamente según las fórmulas (8) y (9) correspondientes al modelo de movimiento afín de 6 parámetros utilizando el modelo de movimiento afín de 6 parámetros que incluye los tres puntos de control del bloque de decodificación afín vecino.
Por ejemplo, un modelo de movimiento afín utilizado para el bloque de decodificación actual es un modelo de movimiento afín de 6 parámetros (es decir, MovimientoModeloIdc=2).
Si un modelo de movimiento afín utilizado para un bloque de decodificación afín vecino es el modelo de movimiento afín de 6 parámetros, se obtienen vectores de movimiento de tres puntos de control del bloque de decodificación afín vecino, por ejemplo, un vector de movimiento (vx4, vy4) de un punto de control superiorizquierdo (x4, y4), un vector de movimiento (vx5, vy5) de un punto de control superior-derecho, y un vector de movimiento (vx6, vy6) de un punto de control inferior-izquierdo (x6, y6) en la figura 7.
Vectores de movimiento de un punto de control superior-izquierdo, un punto de control superior-derecho, y un punto de control inferior-izquierdo del bloque actual son respectivamente derivados según las fórmulas (8), (9), y (10) correspondientes al modelo de movimiento afín de 6 parámetros utilizando el modelo de movimiento afín de 6 parámetros que incluye los tres puntos de control del bloque de decodificación afín vecino.
Si el modelo de movimiento afín utilizado para el bloque de decodificación afín vecino es un modelo de movimiento afín de 4 parámetros, se obtienen vectores de movimiento de dos puntos de control del bloque de decodificación afín: el vector de movimiento (vx4, vy4) del punto de control superior-izquierdo (x4, y4) y el vector de movimiento (vx5, vy5) del punto de control superior-derecho (x5, y5).
Los vectores de movimiento del punto de control superior-izquierdo, el punto de control superior-derecho, y el punto de control inferior-izquierdo del bloque actual son respectivamente derivados según las fórmulas (6) y (7) correspondientes al modelo de movimiento afín de 4 parámetros utilizando el modelo de movimiento afín de 4 parámetros que incluye los dos puntos de control del bloque de decodificación afín vecino.
Se debe observar que otros modelos de movimiento, posiciones de candidatos, y órdenes de búsqueda también son aplicables a esta solicitud. Los detalles no se describen en la presente memoria. Se debe observar que un método en el cual se utilizan otros puntos de control para representar modelos de movimiento para bloques de codificación vecinos y actuales también es aplicable a esta solicitud. Los detalles no se describen en la presente memoria.
A2: Se describe un proceso para construir la lista de vectores de movimiento candidatos utilizando el método de predicción de vector de movimiento de punto de control construido.
Por ejemplo, si un modelo de movimiento afín utilizado para el bloque de decodificación actual es un modelo de movimiento afín de 4 parámetros (es decir, MovimientoModeloIdc=1), vectores de movimiento de la muestra superior-izquierda y la muestra superior-derecha del bloque de codificación actual son determinados utilizando información de movimiento de un bloque codificado vecino del bloque de codificación actual. Específicamente, la lista de vectores de movimiento candidatos puede ser construida utilizando el método 1 de predicción de vector de movimiento de punto de control construido o el método 2 de predicción de vector de movimiento de punto de control construido. Para más información de una manera específica, consulte las descripciones en 4 y 5. Los detalles no se describen en la presente memoria.
Por ejemplo, si el modelo de movimiento afín utilizado para el bloque de decodificación actual es un modelo de movimiento afín de 6 parámetros (es decir, MovimientoModeloIdc=2), vectores de movimiento de la muestra superior-izquierda, la muestra superior-derecha, y la muestra inferior-izquierda del bloque de codificación actual son determinados utilizando información de movimiento de un bloque codificado vecino del bloque de codificación actual. Específicamente, la lista de vectores de movimiento candidatos puede ser construida utilizando el método 1 de predicción de vector de movimiento de punto de control construido o el método 2 de predicción de vector de movimiento de punto de control construido. Para más información de una manera específica, consulte las descripciones en 4 y 5. Los detalles no se describen en la presente memoria.
Se debe observar que otra manera de combinar información de movimiento de punto de control también es aplicable a esta solicitud. Los detalles no se describen en la presente memoria.
Etapa 603a: Analizar el flujo de bits para determinar un predictor de vector de movimiento de punto de control óptimo, y realizar la etapa 604a.
B1: Si un modelo de movimiento afín utilizado para el bloque de decodificación actual es un modelo de movimiento afín de 4 parámetros (MovimientoModeloIdc=1), se analiza un número de índice, y el predictor de vector de movimiento óptimo en dos puntos de control es determinado de entre la lista de vectores de movimiento candidatos basándose en el número de índice.
Por ejemplo, el número de índice es mvp_10_indicador o mvp_11_indicador.
B2: Si el modelo de movimiento afín utilizado para el bloque de decodificación actual es un modelo de movimiento afín de 6 parámetros (MovimientoModeloIdc=2), se analiza un número de índice, y el predictor de vector de movimiento óptimo en tres puntos de control es determinado de entre la lista de vectores de movimiento candidatos basándose en el número de índice.
Etapa 604a: Analizar el flujo de bits para determinar un vector de movimiento de punto de control.
C1: si un modelo de movimiento afín utilizado para el bloque de decodificación actual es un modelo de movimiento afín de 4 parámetros (MovimientoModeloIdc=1), diferencias de vector de movimiento de dos puntos de control del bloque actual son obtenidas del flujo de bits a través de la decodificación, y vectores de movimiento de los puntos de control son obtenidos basándose en las diferencias de vector de movimiento y predictores de vector de movimiento de los puntos de control. Utilizando la predicción de avance como un ejemplo, las diferencias de vector de movimiento de los dos puntos de control son mvd_codificación(x0, y0, 0, 0) y mvd_codificación(x0, y0, 0, 1), respectivamente.
Por ejemplo, diferencias de vector de movimiento de un punto de control superior-izquierdo y un punto de control superior-derecho son obtenidas del flujo de bits a través de decodificación, y respectivamente se añaden a predictores de vector de movimiento, para obtener vectores de movimiento del punto de control superior-izquierdo y el punto de control superior-derecho del bloque actual.
C2: El modelo de movimiento afín utilizado para el bloque de decodificación actual es un modelo de movimiento afín de 6 parámetros (MovimientoModeloIdc=2).
Diferencias de vector de movimiento de tres puntos de control del bloque actual son obtenidas del flujo de bits a través de decodificación, y vectores de movimiento de los puntos de control son obtenidos basándose en las diferencias de vector de movimiento y predictores de vector de movimiento de los puntos de control. Utilizando predicción de avance como un ejemplo, las diferencias de vector de movimiento de los tres puntos de control son mvd_codificación(x0, y0, 0, 0), mvd_codificación(x0, y0, 0, 1), y mvd_codificación(x0, y0, 0, 2), respectivamente.
Por ejemplo, diferencias de vector de movimiento de un punto de control superior-izquierdo, un punto de control superior-derecho, y un punto de control inferior-izquierdo se obtienen del flujo de bits a través de decodificación y respectivamente se añaden a predictores de vector de movimiento, para obtener vectores de movimiento del punto de control superior-izquierdo, el punto de control superior-derecho, y el punto de control inferior-izquierdo del bloque actual.
Etapa 605a: Obtener un vector de movimiento de cada subbloque en el bloque actual basándose en información de movimiento de punto de control y un modelo de movimiento afín utilizado para el bloque de decodificación actual.
Para cada subbloque en el bloque de decodificación afín actual (un subbloque puede ser equivalente a una unidad de compensación de movimiento, y una anchura y una altura del subbloque son menores que una anchura y una altura del bloque actual), información de movimiento de una muestra en una posición preestablecida en una unidad de compensación de movimiento puede ser utilizada para representar información de movimiento de todas las muestras en la unidad de compensación de movimiento. Asumiendo que un tamaño de la unidad de compensación de movimiento es MxN, la muestra en la posición preestablecida puede ser una muestra central (M/2, N/2), una muestra superior-izquierda (0, 0), una muestra superior-derecha (M-1, 0), o una muestra en otra posición de la unidad de compensación de movimiento. Lo siguiente utiliza la muestra central de la unidad de compensación de movimiento como un ejemplo para la descripción. Haciendo referencia a la figura 9C, V0 indica un vector de movimiento de un punto de control superior-izquierdo, y V1 indica un vector de movimiento de un punto de control superior-derecho. Cada caja pequeña indica una unidad de compensación de movimiento.
Coordenadas de la muestra central de la unidad de compensación de movimiento con relación a la muestra superior-izquierda del bloque de decodificación afín actual son calculadas utilizando una fórmula (25), donde i indica una iésima unidad de compensación de movimiento (de izquierda a derecha) en una dirección horizontal, j indica una jésima unidad de compensación de movimiento (de arriba a abajo) en una dirección vertical, y (X(i,j) , y(i,j) ) indica coordenadas de una muestra central de una (i, j)ésima unidad de compensación de movimiento con relación a la muestra superior-izquierda del bloque de decodificación afín actual.
Si un modelo de movimiento afín utilizado para el bloque de decodificación afín actual es un modelo de movimiento afín de 6 parámetros, ( x j y ^ ) es sustituido en una fórmula (26) correspondiente al modelo de movimiento afín de 6 parámetros, para obtener un vector de movimiento de una muestra central de cada unidad de compensación de movimiento, y el vector de movimiento de la muestra central es utilizada como un vector de movimiento ( v x j v y ^ ) de todas las muestras en la unidad de compensación de movimiento.
Si el modelo de movimiento afín utilizado para el bloque de decodificación afín actual es un modelo de movimiento afín de 4 parámetros, ( x j y ^ ) es sustituido en una fórmula (27) correspondiente al modelo de movimiento afín de 4 parámetros, para obtener un vector de movimiento de una muestra central de cada unidad de compensación de movimiento, y el vector de movimiento de la muestra central es utilizada como un vector de movimiento ( v x j v y ^ )) de todas las muestras en la unidad de compensación de movimiento.
M
X ( i j ) = M x i — , i =0,1..
(25)
y a , j ) = N x j ^ , j =0,1..
v x 1 - v x ^ vx 2- v y 0
VX =VXo
W H ”(26)
vy =Vyl - V y ° X■ ^2 - ^0 ,
w v y o h y
v x i - v x - ^ v y i - v y p
VX =VXo
w w ”(27)
vy = —vy * — -v y
w — o x+<,>—v x i 1 -—v x o 0-w y J + v y o
Etapa 606a: Realizar compensación de movimiento en cada subbloque basándose en el vector de movimiento determinado del subbloque, para obtener un predictor de muestra del subbloque.
Etapa 602b: Construir una lista de candidatos de información de movimiento correspondiente al modo de fusión basándose en modelo de movimiento afín.
Específicamente, la lista de candidatos de información de movimiento correspondiente al modo de fusión basándose en modelo de movimiento afín puede ser construida utilizando un método de predicción de vector de movimiento de punto de control heredado y/o un método de predicción de vector de movimiento de punto de control construido.
Opcionalmente, la lista de candidatos de información de movimiento es recortada y clasificada según una regla particular, y puede ser truncada o rellenada a una cantidad particular.
D1: Se describe un proceso de construcción de la lista de vectores de movimiento candidatos utilizando el método de predicción de vector de movimiento de punto de control heredado.
Información de movimiento de punto de control candidato del bloque actual es derivada utilizando el método de predicción de vector de movimiento de punto de control heredado, y se añade a la lista de candidatos de información de movimiento.
Se recorren los bloques vecinos alrededor del bloque actual en un orden de A1->B1->B0->A0->B2 en la figura 8A, para encontrar un bloque de codificación afín en el cual se localiza la posición, y obtener información de movimiento de punto de control del bloque de codificación afín. Además, la información de movimiento de punto de control candidato del bloque actual es derivada utilizando un modelo de movimiento para el bloque de codificación afín.
Si la lista de vectores de movimiento candidatos está vacía, la información de movimiento de punto de control candidato es añadida a la lista de candidatos. De otra manera, se recorre en secuencia la información de movimiento en la lista de vectores de movimiento candidatos, para verificar si la información de movimiento que es la misma que la información de movimiento de punto de control candidato existe en la lista de vectores de movimiento candidatos. Si ninguna información de movimiento que es la misma que la información de movimiento de punto de control candidato existe en la lista de vectores de movimiento candidatos, la información de movimiento de punto de control candidato es añadida a la lista de vectores de movimiento candidatos.
Para determinar si dos piezas de información de movimiento candidatas son las mismas, es necesario determinar en secuencia si fotogramas de referencia hacia adelante, fotogramas de referencia de retroceso, componentes horizontales y verticales de cada vector de movimiento de avance, y componentes horizontales y verticales de cada vector de movimiento de retroceso en las dos piezas de información de movimiento candidata son los mismos. Las dos piezas de información de movimiento candidata son consideradas como diferentes únicamente cuando todos los elementos anteriores son diferentes.
Si una cantidad de piezas de información de movimiento en la lista de vectores de movimiento candidatos alcanza una longitud de lista máxima MaxAfínNumMrgCand (MaxAfínNumMrgCand es un entero positivo tal como 1,2, 3, 4, o 5, lo siguiente proporciona una descripción utilizando la longitud de 5 como un ejemplo, y los detalles no se describen en la presente memoria), la lista de candidatos está completada. De otra manera, se recorre un siguiente bloque vecino.
D2: La información de movimiento de punto de control candidato del bloque actual es derivada utilizando el método de predicción de vector de movimiento de punto de control construido, y se añade a la lista de candidatos de información de movimiento. Para más información, consulte la figura 9B.
Etapa 601c: Obtener información de movimiento de puntos de control del bloque actual. Para más información, consulte la etapa 801 en el método 2 de predicción de vector de movimiento de punto de control construido en 5. Los detalles no se describen en la presente memoria nuevamente.
Etapa 602c: Combinar la información de movimiento de los puntos de control para obtener información de movimiento de punto de control construida. Para más información, consulte la etapa 801 en la figura 8B. Los detalles no se describen en la presente memoria nuevamente.
Etapa 603c: Añadir la información de movimiento de punto de control construida a la lista de vectores de movimiento candidatos.
Si una longitud de la lista de candidatos es menor que la longitud de lista máxima MaxAfínNumMrgCand, se recorren las combinaciones en un orden preestablecido, para obtener una combinación válida como la información de movimiento de punto de control candidato. En este caso, si la lista de vectores de movimiento candidatos está vacía, la información de movimiento de punto de control candidato es añadida a la lista de vectores de movimiento candidatos. De otra manera, se recorre en secuencia información de movimiento en la lista de vectores de movimiento candidatos, para verificar si la información de movimiento que es la misma que la información de movimiento de punto de control candidato existe en la lista de vectores de movimiento candidatos. Si ninguna información de movimiento que es la misma que la información de movimiento de punto de control candidato existe en la lista de vectores de movimiento candidatos, la información de movimiento de punto de control candidato es añadida a la lista de vectores de movimiento candidatos.
Por ejemplo, un orden preestablecido es de la siguiente manera: Afín (CP1, CP2, CP3) -> Afín (CP1, CP2, CP4) -> Afín (CP1, CP3, CP4) -> Afín (CP2, CP3, CP4) -> Afín (CP1, CP2) -> Afín (CP1, CP3) -> Afín (CP2, CP3) -> Afín (CP1, CP4) -> Afín (CP2, CP4) -> Afín (CP3, CP4). Existen 10 combinaciones en total.
Si información de movimiento de punto de control correspondiente a una combinación no está disponible, se considera que la combinación no está disponible. Si una combinación está disponible, se determina un índice de fotograma de referencia de la combinación (en un caso de dos puntos de control, un índice de fotograma de referencia más pequeño es seleccionado como el índice de fotograma de referencia de la combinación; en un caso de más de dos puntos de control, se selecciona un índice de fotograma de referencia que aparece con más frecuencia, y las cantidades de veces que aparece una pluralidad de índices de fotograma de referencia son las mismas, un índice de fotograma de referencia mínimo es seleccionado como el índice de fotograma de referencia de la combinación), y vectores de movimiento de puntos de control son escalados. Si la información de movimiento escalada de todos los puntos de control es consistente, la combinación es inválida.
Opcionalmente, en esta realización de esta solicitud, se puede rellenar la lista de vectores de movimiento candidatos. Por ejemplo, después del proceso transversal anterior, si la longitud de la lista de vectores de movimiento candidatos es menor que la longitud de lista máxima MaxAfínNumMrgCand, la lista de vectores de movimiento candidatos puede ser rellenada hasta que la longitud de la lista es igual a MaxAfínNumMrgCand.
El relleno se puede realizar utilizando un método de relleno de vector de movimiento cero, o combinando o ponderando por peso información de movimiento candidata existente en la lista existente. Se debe observar que otro método para rellenar la lista de vectores de movimiento candidatos también es aplicable a esta solicitud. Los detalles no se describen en la presente memoria.
Etapa S603b: Analizar el flujo de bits para determinar información de movimiento óptima de punto de control.
Se analiza un número de índice, y la información de movimiento óptima de punto de control es determinada de entre la lista de vectores de movimiento candidatos basándose en el número de índice.
Etapa 604b: Obtener un vector de movimiento de cada subbloque en el bloque actual basándose en la información de movimiento óptima de punto de control y un modelo de movimiento afín utilizado para el bloque de decodificación actual.
Esta etapa es el misma que la etapa 605a.
Etapa 605b: Realizar compensación de movimiento en cada subbloque basándose en el vector de movimiento determinado del subbloque, para obtener un predictor de muestra del subbloque.
En la presente invención, tecnologías relacionadas con un decodificador por entropía de codificación aritmética binaria adaptable al contexto (CABAC) u otro decodificador por entropía tal como un decodificador por entropía de división de intervalo de probabilidad (PIPE) o un decodificador relacionado. La decodificación aritmética es una forma de decodificación por entropía utilizada en muchos algoritmos de compresión con alta eficiencia de la decodificación debido a que un símbolo puede ser mapeado a un código de longitud no entero en decodificación aritmética. En general, la decodificación de un símbolo de datos a través de CABAC involucra una o más de las siguientes etapas:
(1) Binario: Si un símbolo a decodificar es no binario, el símbolo es mapeado a una secuencia "binaria", y cada bit binario puede tener un valor de "0" o "1".
(2) Asignación de contexto: Un contexto es asignado a cada bit binario (en un modo normal). Un modelo de contexto es utilizado para determinar un método para calcular un contexto para un bit binario determinado basándose en información disponible para el bit binario. La información, por ejemplo, es un valor de un símbolo decodificado previo o un número binario.
(3) Codificación binaria: Un codificador aritmético codifica un bit binario. Para codificar un bit binario, el codificador aritmético necesita una probabilidad de un valor del bit binario como una entrada, y la probabilidad es una probabilidad de que el valor del bit binario sea igual a "0" y una probabilidad de que el valor del bit binario sea igual a "1". Una probabilidad (estimada) de cada contexto es representada por un valor entero que se denomina "estado de contexto". Cada contexto tiene un estado, y por lo tanto el estado (es decir, la probabilidad estimada) es el mismo para un bit binario al cual se asigna un contexto y es diferente entre contextos.
(4) Actualización de estado: Una probabilidad (estado) para seleccionar un contexto es actualizada basándose en un valor decodificado real de un bit binario (por ejemplo, si el valor del bit binario es "1", se incrementa una probabilidad de "1").
En la técnica anterior, cuando información de parámetro de un modelo de movimiento afín es analizada a través de CABAC, por ejemplo, afín_fusión_indicador, afín_fusión_idx, afín_interjndicador, y afín_tipo_indicador en la Tabla 1, diferentes contextos necesitan ser utilizados para diferentes elementos de sintaxis en análisis CABAC. En la presente invención, se reduce una cantidad de contextos utilizados en CABAC. Por lo tanto, se ocupa menos espacio requerido por un codificador y un decodificador para almacenar contextos sin afectar la eficiencia de la codificación.
Para afín_fusión_indicador y afín jn terjndicador, se utilizan dos conjuntos de contextos diferentes (cada conjunto de contextos incluye tres contextos) en CABAC en la técnica anterior. Un índice de contexto real utilizado en cada conjunto es igual a una suma de un valor de un mismo elemento de sintaxis en el bloque vecino izquierdo de un bloque de decodificación actual y un valor de un mismo elemento de sintaxis en el bloque vecino superior del bloque de decodificación actual, como se muestra en la Tabla 3. En la presente memoria, disponibleL indica la disponibilidad del bloque vecino izquierdo del bloque de decodificación actual (si el bloque vecino izquierdo existe y ha sido decodificado), y disponibleA indica la disponibilidad del bloque vecino superior del bloque de decodificación actual (si el bloque vecino superior existe y ha sido decodificado). En la técnica anterior, cantidades de contextos de afín_fusión_indicador y a fín jn te rjnd icador son 6.
Tabla 3 Índice de contexto
La figura 10 describe un procedimiento de un método de decodificación de vídeo según un ejemplo que no comprende todas las características necesarias para implementar la invención reivindicada. Esta realización puede ser realizada por el decodificador de vídeo mostrado en la figura 3. Como se muestra en la figura 10, el método incluye las siguientes etapas.
1001. Analizar un flujo de bits recibido para obtener un elemento de sintaxis a decodificar por entropía en un bloque actual, donde el elemento de sintaxis a decodificar por entropía en el bloque actual incluye un elemento 1 de sintaxis en el bloque actual o un elemento 2 de sintaxis en el bloque actual.
En una implementación, el elemento 1 de sintaxis en el bloque actual es afín_fusión_indicador, o el elemento 2 de sintaxis en el bloque actual es afín jnterjndicador.
En una implementación, el elemento 1 de sintaxis en el bloque actual es subbloque_fusión_indicador, o el elemento 2 de sintaxis en el bloque actual es afín jnterjndicador.
Esta etapa puede ser específicamente realizada por la unidad 304 de decodificación por entropía en la figura 3.
El bloque actual en este ejemplo de la presente invención puede ser una CU.
1002. Realizar decodificación por entropía en el elemento de sintaxis a decodificar por entropía en el bloque actual, donde decodificación por entropía en el elemento 1 de sintaxis en el bloque actual es completada utilizando un modelo de contexto prestablecido, o decodificación por entropía en el elemento 2 de sintaxis en el bloque actual es completada utilizando el modelo de contexto.
Esta etapa puede ser específicamente realizada por la unidad 304 de decodificación por entropía en la figura 3.
1003. Realizar procesamiento de predicción en el bloque actual basándose en un elemento de sintaxis que está en el bloque actual y que se obtiene a través de decodificación por entropía, para obtener un bloque de predicción del bloque actual.
Esta etapa puede ser específicamente realizada por la unidad 360 de procesamiento de predicción en la figura 3.
1004. Obtener una imagen reconstruida del bloque actual basándose en el bloque de predicción del bloque actual.
Esta etapa puede ser específicamente realizada por la unidad 314 de reconstrucción en la figura 3.
En esta ejemplo, debido a que el elemento 1 de sintaxis y el elemento 2 de sintaxis en el bloque actual comparten un modelo de contexto, el decodificador no necesita confirmar el modelo de contexto cuando realiza decodificación por entropía, a fin de mejorar la eficiencia de la decodificación de la ejecución de decodificación de vídeo por el decodificador. Además, debido a que el decodificador de vídeo necesita almacenar únicamente un modelo de contexto para el elemento 1 de sintaxis y el elemento 2 de sintaxis, se ocupa menos espacio de almacenamiento del decodificador de vídeo.
Correspondiente al método de decodificación de vídeo descrito en la figura 10, un ejemplo que no comprende todas las características necesarias para implementar la invención reivindicada además proporciona un método de codificación, que incluye:
obtener un elemento de sintaxis a codificar por entropía en un bloque actual, donde el elemento de sintaxis a codificar por entropía en el bloque actual incluye un elemento 1 de sintaxis en el bloque actual o un elemento 2 de sintaxis en el bloque actual; realizar codificación por entropía en el elemento de sintaxis a codificar por entropía en el bloque actual, donde cuando se realiza codificación por entropía en el elemento de sintaxis a codificar por entropía en el bloque actual, la codificación por entropía en el elemento 1 de sintaxis en el bloque actual es completada utilizando un modelo de contexto prestablecido, o la codificación por entropía en el elemento 2 de sintaxis en el bloque actual es completada utilizando el modelo de contexto; y emitir un flujo de bits que incluye un elemento de sintaxis que está en el bloque actual y que se obtiene a través de codificación por entropía. El modelo de contexto utilizado cuando se realiza codificación por entropía en el bloque actual es el mismo que el modelo de contexto en el método de decodificación de vídeo descrito en la figura 10. En esta ejemplo, debido a que el elemento 1 de sintaxis y el elemento 2 de sintaxis en el bloque actual comparten un modelo de contexto, un codificador no necesita confirmar el modelo de contexto cuando se realiza codificación por entropía, para mejorar la eficiencia de codificación de la ejecución de la codificación de vídeo por el codificador. Además, debido a que el codificador de vídeo necesita almacenar únicamente un modelo de contexto para el elemento 1 de sintaxis y el elemento 2 de sintaxis, se ocupa menos espacio de almacenamiento del codificador de vídeo.
La figura 11 describe un procedimiento de un método de decodificación de vídeo según otra realización de la presente invención. Esta realización puede ser realizada por el decodificador de vídeo mostrado en la figura 3. Tal como se muestra en la figura 11, el método incluye las siguientes etapas.
1101. Analizar un flujo de bits recibido para obtener un elemento de sintaxis a decodificar por entropía en un bloque actual, donde el elemento de sintaxis a decodificar por entropía en el bloque actual incluye un elemento 1 de sintaxis en el bloque actual o un elemento 2 de sintaxis en el bloque actual.
En una implementación, el elemento 1 de sintaxis en el bloque actual es afín_fusión_indicador, o el elemento 2 de sintaxis en el bloque actual es afín_inter_indicador.
En una implementación, el elemento 1 de sintaxis en el bloque actual es subbloque_fusión_indicador, o el elemento 2 de sintaxis en el bloque actual es afín_inter_indicador.
Esta etapa puede ser específicamente realizada por la unidad 304 de decodificación por entropía en la figura 3.
1102. Obtener un modelo de contexto correspondiente al elemento de sintaxis a decodificar por entropía, donde un modelo de contexto correspondiente al elemento 1 de sintaxis en el bloque actual es determinado de entre un conjunto de modelos de contexto preestablecidos, o un modelo de contexto correspondiente al elemento 2 de sintaxis en el bloque actual es determinado de entre el conjunto de modelos de contexto preestablecido.
El decodificador de vídeo necesita almacenar únicamente un conjunto de modelos de contexto para el elemento 1 de sintaxis y el elemento 2 de sintaxis.
En algunas implementaciones, el conjunto de modelos de contexto preestablecidos incluye únicamente dos modelos de contexto. En algunas otras implementaciones, el conjunto de modelos de contexto preestablecidos incluye solamente tres modelos de contexto. Se puede entender que el conjunto de modelos de contexto preestablecidos alternativamente puede incluir cuatro, cinco o seis modelos de contexto. Una cantidad de modelos de contexto incluida en el conjunto de modelos de contexto preestablecidos no queda limitada en esta realización de la presente invención.
En una implementación, el hecho de que un modelo de contexto correspondiente al elemento 1 de sintaxis en el bloque actual sea determinado de entre un conjunto de modelos de contexto preestablecidos incluye: determinar un índice de contexto del elemento 1 de sintaxis en el bloque actual basándose en un elemento 1 de sintaxis y un elemento 2 de sintaxis en el bloque vecino izquierdo del bloque actual y un elemento 1 de sintaxis y un elemento 2 de sintaxis en el bloque vecino superior del bloque actual, donde el índice de contexto del elemento 1 de sintaxis en el bloque actual es utilizado para indicar el modelo de contexto correspondiente al elemento 1 de sintaxis en el bloque actual.
En otra implementación, el hecho de que un modelo de contexto correspondiente al elemento 2 de sintaxis en el bloque actual sea determinado de entre el conjunto de modelos de contexto preestablecidos incluye: determinar un índice de contexto del elemento 2 de sintaxis en el bloque actual basándose en un elemento 1 de sintaxis y un elemento 2 de sintaxis en el bloque vecino izquierdo del bloque actual y un elemento 1 de sintaxis y un elemento 2 de sintaxis en el bloque vecino superior del bloque actual, donde el índice de contexto del elemento 2 de sintaxis en el bloque actual es utilizado para indicar el modelo de contexto correspondiente al elemento 2 de sintaxis en el bloque actual.
Por ejemplo, si la cantidad de modelos de contexto en el conjunto de modelos de contexto preestablecidos es 3, un valor del índice de contexto del elemento 1 de sintaxis en el bloque actual es una suma de un valor obtenido por la ejecución de una operación OR sobre el elemento 1 de sintaxis y el elemento 2 de sintaxis en el bloque vecino superior y un valor obtenido por la ejecución de una operación OR sobre el elemento 1 de sintaxis y el elemento 2 de sintaxis en el bloque vecino izquierdo; o un valor del índice de contexto del elemento 2 de sintaxis en el bloque actual es una suma de un valor obtenido por la ejecución de una operación OR sobre el elemento 1 de sintaxis y el elemento 2 de sintaxis en el bloque vecino superior y un valor obtenido por la ejecución de una operación OR sobre el elemento 1 de sintaxis y el elemento 2 de sintaxis en el bloque vecino izquierdo.
Específicamente, el elemento 1 de sintaxis afín_fusión_indicador y el elemento 2 de sintaxis a fín jn te rjnd icador pueden compartir un conjunto de modelos de contexto (el conjunto incluye tres modelos de contexto). Un índice de contexto real utilizado en cada conjunto es igual a un resultado obtenido mediante la adición de un valor obtenido mediante la ejecución de una operación OR sobre dos elementos de sintaxis en el bloque vecino izquierdo de un bloque de decodificación actual y un valor obtenido por la ejecución de una operación OR sobre dos elementos de sintaxis en el bloque vecino superior del bloque de decodificación actual, como se muestra en la Tabla 4. En la presente memoria, "|" indica una operación OR.
Tabla 4 Índice de contexto en la presente invención
Por ejemplo, si la cantidad de modelos de contexto en el conjunto de modelos de contexto preestablecidos es 2, un valor del índice de contexto del elemento 1 de sintaxis en el bloque actual es un resultado obtenido por la ejecución de una operación OR sobre un valor obtenido por la ejecución de una operación OR sobre el elemento 1 de sintaxis y el elemento 2 de sintaxis en el bloque vecino superior y un valor obtenido por la ejecución de una operación OR sobre el elemento 1 de sintaxis y el elemento 2 de sintaxis en el bloque vecino izquierdo; o un valor del índice de contexto del elemento 2 de sintaxis en el bloque actual es un resultado obtenido por la ejecución de una operación OR sobre un valor obtenido por la ejecución de una operación OR sobre el elemento 1 de sintaxis y el elemento 2 de sintaxis en el bloque vecino superior y un valor obtenido por la ejecución de una operación OR sobre el elemento 1 de sintaxis y el elemento 2 de sintaxis en el bloque vecino izquierdo.
Específicamente, el elemento 1 de sintaxis afín_fusión_indicador y el elemento 2 de sintaxis afín_inter_indicador comparten un conjunto de modelos de contexto (el conjunto incluye dos modelos de contexto). Un índice de contexto real utilizado en cada conjunto es igual a un resultado obtenido mediante la ejecución de una operación OR sobre un valor obtenido por la ejecución de una operación OR sobre dos elementos de sintaxis en el bloque vecino izquierdo de un bloque de decodificación actual y un valor obtenido por la ejecución de una operación OR sobre dos elementos de sintaxis en el bloque vecino superior del bloque de decodificación actual, como se muestra en la Tabla 5. En la presente memoria, "|" indica una operación O<r>. En esta realización de la presente invención, la cantidad de contextos para afín_fusión_indicador y afín_inter_indicador se reduce a 2.
T abla 5 Índice de contexto en la presente invención
______________
1103. Realizar decodificación por entropía en el elemento de sintaxis a decodificar por entropía basándose en el modelo de contexto correspondiente al elemento de sintaxis a decodificar por entropía en el bloque actual.
Esta etapa puede ser específicamente realizada por la unidad 304 de decodificación por entropía en la figura 3.
1104. Realizar procesamiento de predicción en el bloque actual basándose en un elemento de sintaxis que está en el bloque actual y que se obtiene a través de decodificación por entropía, para obtener un bloque de predicción del bloque actual.
Esta etapa puede ser específicamente realizada por la unidad 360 de procesamiento de predicción en la figura 3.
1105. Obtener una imagen reconstruida del bloque actual basándose en el bloque de predicción del bloque actual.
Esta etapa puede ser específicamente realizada por la unidad 314 de reconstrucción en la figura 3.
En esta realización, debido a que el elemento 1 de sintaxis y el elemento 2 de sintaxis en el bloque actual comparten un conjunto de modelos de contexto, el decodificador de vídeo necesita almacenar únicamente un modelo de contexto para el elemento 1 de sintaxis y el elemento 2 de sintaxis, para ocupar menos espacio de almacenamiento del decodificador de vídeo.
Correspondiente al método de decodificación de vídeo descrito en la figura 11, una realización de la presente invención además proporciona un método de codificación, que incluye:
obtener un elemento de sintaxis a codificar por entropía en un bloque actual, donde el elemento de sintaxis a codificar por entropía en el bloque actual incluye un elemento 1 de sintaxis en el bloque actual o un elemento 2 de sintaxis en el bloque actual; obtener un modelo de contexto correspondiente al elemento de sintaxis a codificar por entropía, donde un modelo de contexto correspondiente al elemento 1 de sintaxis en el bloque actual es determinado de entre un conjunto de modelos de contexto preestablecidos, o un modelo de contexto correspondiente al elemento 2 de sintaxis en el bloque actual es determinado de entre el conjunto de modelos de contexto preestablecidos; realizar codificación por entropía en el elemento de sintaxis a codificar por entropía basándose en el modelo de contexto correspondiente al elemento de sintaxis a codificar por entropía en el bloque actual; y emitir un flujo de bits que incluye un elemento de sintaxis que está en el bloque actual y que se obtiene a través de codificación por entropía. El conjunto de modelos de contexto utilizado cuando se realiza codificación por entropía en el bloque actual es el mismo que el conjunto de modelos de contexto en el método de decodificación de vídeo descrito en la figura 11. En esta realización, debido a que el elemento 1 de sintaxis y el elemento 2 de sintaxis en el bloque actual comparten un conjunto de modelos de contexto, un codificador de vídeo necesita almacenar únicamente un conjunto de modelos de contexto para el elemento 1 de sintaxis y el elemento 2 de sintaxis, para ocupar menos espacio de almacenamiento del codificador de vídeo.
La figura 12 describe un procedimiento de un método de decodificación de vídeo según un ejemplo que no comprende todas las características necesarias para implementar la invención reivindicada. Esta realización puede ser realizada por el decodificador de vídeo mostrado en la figura 3. Como se muestra en la figura 12, el método incluye las siguientes etapas.
1201. Analizar un flujo de bits recibido para obtener un elemento de sintaxis a decodificar por entropía en un bloque actual, donde el elemento de sintaxis a decodificar por entropía en el bloque actual incluye un elemento 3 de sintaxis en el bloque actual o un elemento 4 de sintaxis en el bloque actual.
En una implementación, el elemento 3 de sintaxis en el bloque actual es fusión_idx, o el elemento 4 de sintaxis en el bloque actual es afín_fusión_idx.
En una implementación, el elemento 3 de sintaxis en el bloque actual es fusión_idx, o el elemento 4 de sintaxis en el bloque actual es subbloque_fusión_idx.
Esta etapa puede ser específicamente realizada por la unidad 304 de decodificación por entropía en la figura 3.
1202. Obtener un modelo de contexto correspondiente al elemento de sintaxis a decodificar por entropía, donde un modelo de contexto correspondiente al elemento 3 de sintaxis en el bloque actual es determinado de entre un conjunto de modelos de contexto preestablecidos, o un modelo de contexto correspondiente al elemento 4 de sintaxis en el bloque actual es determinado del modelo de contexto prestablecido.
En una implementación, una cantidad de modelos de contexto incluidos en el conjunto de modelos de contexto preestablecidos es 5. Se puede entender que la cantidad de modelos de contexto incluidos en el conjunto de modelos de contexto preestablecidos alternativamente puede ser otro valor tal como 1, 2, 3, o 4. Cuando la cantidad de modelos de contexto incluidos en el conjunto de modelos de contexto preestablecidos es 1, el conjunto de modelos de contexto preestablecidos es un modelo de contexto. La cantidad de modelos de contexto incluidos en el conjunto de modelos de contexto preestablecidos no queda limitada en esta realización de la presente invención.
Esta etapa puede ser específicamente realizada por la unidad 304 de decodificación por entropía en la figura 3.
1203. Realizar decodificación por entropía en el elemento de sintaxis a decodificar por entropía basándose en el modelo de contexto correspondiente al elemento de sintaxis a decodificar por entropía en el bloque actual.
Esta etapa puede ser específicamente realizada por la unidad 304 de decodificación por entropía en la figura 3.
1204. Realizar procesamiento de predicción en el bloque actual basándose en un elemento de sintaxis que está en el bloque actual y que se obtiene a través de decodificación por entropía, para obtener un bloque de predicción del bloque actual.
Esta etapa puede ser específicamente realizada por la unidad 360 de procesamiento de predicción en la figura 3.
1205. Obtener una imagen reconstruida del bloque actual basándose en el bloque de predicción del bloque actual.
Esta etapa puede ser específicamente realizada por la unidad 314 de reconstrucción en la figura 3.
En este ejemplo, debido a que el elemento 3 de sintaxis y el elemento 4 de sintaxis en el bloque actual comparten un conjunto de modelos de contexto, el decodificador de vídeo necesita almacenar únicamente un modelo de contexto para el elemento 3 de sintaxis y el elemento 4 de sintaxis, para ocupar menos espacio de almacenamiento del decodificador de vídeo.
Correspondiente al método de decodificación de vídeo descrito en la figura 12, un ejemplo que no comprende todas las características para implementar la invención reivindicada además proporciona un método de codificación, que incluye: obtener un elemento de sintaxis a codificar por entropía en un bloque actual, donde el elemento de sintaxis a codificar por entropía en el bloque actual incluye un elemento 3 de sintaxis en el bloque actual o un elemento 4 de sintaxis en el bloque actual; obtener un modelo de contexto correspondiente al elemento de sintaxis a codificar por entropía, donde un modelo de contexto correspondiente al elemento 3 de sintaxis en el bloque actual es determinado de entre un conjunto de modelos de contexto preestablecidos, o un modelo de contexto correspondiente al elemento 4 de sintaxis en el bloque actual es determinado de entre el conjunto de modelos de contexto preestablecidos; realizar codificación por entropía en el elemento de sintaxis a codificar por entropía basándose en el modelo de contexto correspondiente al elemento de sintaxis a codificar por entropía en el bloque actual; y emitir un flujo de bits que incluye un elemento de sintaxis que está en el bloque actual y que se obtiene a través de codificación por entropía. El conjunto de modelos de contexto utilizado cuando se realiza codificación por entropía en el bloque actual es el mismo que el conjunto de modelos de contexto en el método de decodificación de vídeo descrito en la figura 12. En este ejemplo, debido a que el elemento 3 de sintaxis y el elemento 4 de sintaxis en el bloque actual comparten un conjunto de modelos de contexto, un codificador de vídeo necesita almacenar únicamente un modelo de contexto para el elemento 3 de sintaxis y el elemento 4 de sintaxis, para ocupar menos espacio de almacenamiento del codificador de vídeo.
En uno o más de los ejemplos anteriores, las funciones descritas pueden ser implementadas por hardware, software, firmware, o cualquier combinación de los mismos. Si se implementan en software, las funciones pueden ser almacenadas en o transmitidas sobre un medio legible por ordenador y realizadas por una unidad de procesamiento basándose en hardware como una o más instrucciones o códigos. El medio legible por ordenador puede incluir un medio de almacenamiento legible por ordenador, que corresponde a un medio tangible tal como un medio de almacenamiento de datos o un medio de comunicaciones. El medio de comunicaciones incluye, por ejemplo, cualquier medio que facilite la transferencia de un programa informático de un lugar a otro según un protocolo de comunicaciones. Por lo tanto, el medio legible por ordenador generalmente puede corresponder a (1) un medio de almacenamiento legible por ordenador tangible no transitorio o (2) un medio de comunicaciones tal como una señal o una portadora. El medio de almacenamiento de datos puede ser cualquier medio disponible al que se puede tener acceso a través de uno o más ordenadores o uno o más procesadores para recuperar una instrucción, código y/o estructura de datos para la implementación de las tecnologías descritas en la presente invención. Un producto de programa informático puede incluir el medio legible por ordenador.
A manera de ejemplo en lugar de limitación, dicho medio de almacenamiento legible por ordenador puede incluir una RAM, una ROM, una EEPROM, un CD-ROM u otro almacenamiento de disco óptico, un almacenamiento de disco magnético u otro dispositivo de almacenamiento magnético, una memoria flash, o cualquier otro medio que puede ser utilizado para almacenar un código de programa requerido en una forma de una instrucción o una estructura de datos y a la que se puede tener acceso a través de un ordenador. Además, cualquier conexión puede denominarse de manera apropiada medio legible por ordenador. Por ejemplo, si una instrucción es transmitida desde un sitio Web, un servidor, u otro origen remoto utilizando un cable coaxial, un cable de fibra óptica, un par trenzado, una línea de abonado digital (digital subscriber line, DSL), o tecnologías inalámbricas tales como infrarrojo, radio, y microondas, el cable coaxial, el cable de fibra óptica, el par trenzado, el DSL, o las tecnologías inalámbricas tales como infrarrojo, radio, y microondas son incluidas en la definición del medio. No obstante, se debe entender que el medio de almacenamiento legible por ordenador y el medio de almacenamiento de datos no incluyen una conexión, portadora, señal o algún otro medio transitorio, sino que realmente son dirigidos a un medio de almacenamiento tangible no transitorio. Tal como se utiliza en esta memoria descriptiva, un disco y un disco óptico incluyen un disco compacto (compact disc, CD), un disco láser, un disco óptico, un disco versátil digital (digital versatile disc, DVD), un disco flexible, y un disco Blu-ray. El disco suele reproducir datos de forma magnética, y el disco óptico reproduce datos de manera óptica utilizando un láser. Cualesquiera combinaciones de lo anterior también debe caer dentro del alcance del medio legible por ordenador.
La instrucción puede ser realizada por uno o más procesadores, y el uno o más procesadores son, por ejemplo, uno o más procesadores de señal digital (digital signal processor, DSP), uno o más microprocesadores de propósito general, uno o más circuitos integrados de aplicación específica (application specific integrated circuit, ASIC), uno o más matrices lógicas programables en campo (field programmable logic arrays, FPGA), u otros circuitos lógicos integrados o discretos equivalentes. Por lo tanto, el término "procesador" utilizado en esta memoria descriptiva puede representar cualquiera de las estructuras anteriores u otras estructuras aplicables a la implementación de las tecnologías descritas en esta memoria descriptiva. Además, en algunos aspectos, las funciones descritas en esta memoria descriptiva pueden ser proporcionadas dentro de módulos de hardware y/o software dedicados configurados para realizar codificación y decodificación, o se pueden incorporar en un códec combinado. Además, las tecnologías pueden ser completamente implementadas en uno o más circuitos o elementos lógicos.
Las tecnologías de esta descripción pueden ser implementadas en una pluralidad de dispositivos o aparatos que incluyen un equipo inalámbrico, un circuito integrado (integrated circuit, IC), o un conjunto IC (por ejemplo, un conjunto de chips). Diversos componentes, módulos o unidades se describen en esta descripción para enfatizar las funciones de dispositivos configuradas para realizar las tecnologías descritas, las cuales no necesariamente son implementadas por diferentes unidades de hardware. En realidad, tal como se describió antes, se pueden combinar diversas unidades en una unidad de hardware de códec en conjunto con el correcto software y/o firmware, o se pueden proporcionar mediante un conjunto de unidades de hardware interoperativas. Las unidades de hardware incluyen uno o más procesadores antes descritos.

Claims (11)

REIVINDICACIONES
1. Un método de decodificación de vídeo, que comprende:
analizar (1101) un flujo de bits recibido para obtener un elemento de sintaxis a decodificar por entropía en un bloque actual, en donde el elemento de sintaxis a decodificar por entropía en el bloque actual comprende al menos uno de un elemento 1 de sintaxis en el bloque actual y un elemento 2 de sintaxis en el bloque actual;
obtener (1102) un modelo de contexto correspondiente al elemento de sintaxis a decodificar por entropía;
realizar (1103) decodificación por entropía en el elemento de sintaxis a decodificar por entropía basándose en el modelo de contexto correspondiente al elemento de sintaxis a decodificar por entropía en el bloque actual;
realizar (1104) procesamiento de predicción en el bloque actual basándose en un elemento de sintaxis que está en el bloque actual y que se obtiene a través de decodificación por entropía, para obtener un bloque de predicción del bloque actual; y
obtener (1105) una imagen reconstruida del bloque actual basándose en el bloque de predicción del bloque actual;
en donde, cuando el elemento de sintaxis a decodificar por entropía en el bloque actual comprende el elemento 1 de sintaxis, un modelo de contexto correspondiente al elemento 1 de sintaxis en el bloque actual se determina a partir de un conjunto de modelos de contexto preestablecidos, y cuando el elemento de sintaxis que a decodificar por entropía en el bloque actual comprende el elemento 2 de sintaxis, un modelo de contexto correspondiente al elemento 2 de sintaxis en el bloque actual se determina a partir del conjunto de modelos de contexto preestablecidos;
caracterizado en
que un modelo de contexto correspondiente al elemento 1 de sintaxis en el bloque actual se determina a partir del conjunto de modelos de contexto preestablecidos como sigue: determinar un índice de contexto del elemento 1 de sintaxis en el bloque actual basándose en un elemento 1 de sintaxis y un elemento 2 de sintaxis en el bloque vecino izquierdo del bloque actual y un elemento 1 de sintaxis y un elemento 2 de sintaxis en el bloque vecino superior del bloque actual, en donde el índice de contexto del elemento 1 de sintaxis en el bloque actual indica el modelo de contexto correspondiente al elemento 1 de sintaxis en el bloque actual; o en
que un modelo de contexto correspondiente al elemento 2 de sintaxis en el bloque actual se determina a partir del conjunto de modelos de contexto preestablecidos del siguiente modo: determinar un índice de contexto del elemento 2 de sintaxis en el bloque actual basándose en un elemento 1 de sintaxis y un elemento 2 de sintaxis en el bloque vecino izquierdo del bloque actual y un elemento 1 de sintaxis y un elemento 2 de sintaxis en el bloque vecino superior del bloque actual, en donde el índice de contexto del elemento 2 de sintaxis en el bloque actual indica el modelo de contexto correspondiente al elemento 2 de sintaxis en el bloque actual.
2. El método según la reivindicación 1, en donde una cantidad de modelos de contexto en el conjunto de modelos de contexto preestablecidos es 2 o 3.
3. El método según la reivindicación 1 o 2, en donde si la cantidad de modelos de contexto en el conjunto de modelos de contexto preestablecido es 3, un valor del índice de contexto del elemento 1 de sintaxis en el bloque actual es una suma de un valor obtenido realizando una operación OR sobre el elemento 1 de sintaxis y el elemento 2 de sintaxis en el bloque vecino superior y un valor obtenido realizando una operación OR sobre el elemento 1 de sintaxis y el elemento 2 de sintaxis en el bloque vecino izquierdo; o
un valor del índice de contexto del elemento 2 de sintaxis en el bloque actual es una suma de un valor obtenido realizando una operación OR sobre el elemento 1 de sintaxis y el elemento 2 de sintaxis en el bloque vecino superior y un valor obtenido realizando una operación OR sobre el elemento 1 de sintaxis y el elemento 2 de sintaxis en el bloque vecino izquierdo.
4. El método según la reivindicación 1 o 2, en donde si la cantidad de modelos de contexto en el conjunto de modelos de contexto preestablecido es 2, un valor del índice de contexto del elemento 1 de sintaxis en el bloque actual es un resultado obtenido realizando una operación OR sobre un valor obtenido realizando una operación OR sobre el elemento 1 de sintaxis y el elemento 2 de sintaxis en el bloque vecino superior y un valor obtenido realizando una operación OR sobre el elemento 1 de sintaxis y el elemento 2 de sintaxis en el bloque vecino izquierdo; o
un valor del índice de contexto del elemento 2 de sintaxis en el bloque actual es un resultado obtenido realizando una operación OR sobre un valor obtenido realizando una operación OR sobre el elemento 1 de sintaxis y el elemento 2 de sintaxis en el bloque vecino superior y un valor obtenido realizando una operación OR sobre el elemento 1 de sintaxis y el elemento 2 de sintaxis en el bloque vecino izquierdo.
5. El método según una cualquiera una de las reivindicaciones 1 a 4, en donde el elemento 1 de sintaxis en el bloque actual es afín_fusión_indicador, y se utiliza para indicar si se utiliza un modo de fusión basándose en un modelo de movimiento afín para el bloque actual, o el elemento 2 de sintaxis del bloque actual es afín_interjndicador, y se utiliza para indicar si se utiliza un modo AMVP basándose en un modelo de movimiento afín para el bloque actual cuando un segmento en el que se encuentra el bloque actual es un segmento de tipo P o un segmento de tipo B; o
bien el elemento sintáctico 1 del bloque actual es subblock_merge_flag, y se utiliza para indicar si se utiliza para el bloque actual un modo de fusión basado en subbloques, o bien el elemento sintáctico 2 del bloque actual es affine_inter_flag, y se utiliza para indicar si se utiliza para el bloque actual un modo AMVP basado en un modelo de movimiento afín cuando una sección en la que se encuentra el bloque actual es una sección de tipo P o una sección de tipo B.
6. Un descodificador (30) de vídeo, que comprende:
una unidad (304) de decodificación por entropía, configurada para: analizar un flujo de bits recibido para obtener un elemento de sintaxis a decodificar por entropía en un bloque actual, en donde el elemento de sintaxis a decodificar por entropía en el bloque actual comprende al menos uno de un elemento 1 de sintaxis en el bloque actual y un elemento 2 de sintaxis en el bloque actual; obtener un modelo de contexto correspondiente al elemento de sintaxis a decodificar por entropía;
una unidad (360) de procesamiento de predicción, configurada para realizar un procesamiento de predicción en el bloque actual basándose en un elemento de sintaxis que está en el bloque actual y que se obtiene a través de la decodificación por entropía, para obtener un bloque de predicción del bloque actual; y
una unidad (314) de reconstrucción, configurada para obtener una imagen reconstruida del bloque actual basándose en el bloque de predicción del bloque actual;
en donde cuando el elemento de sintaxis a decodificar por entropía en el bloque actual comprende el elemento 1 de sintaxis, un modelo de contexto correspondiente al elemento 1 de sintaxis en el bloque actual se determina a partir de un conjunto de modelos de contexto preestablecido, y cuando el elemento de sintaxis a decodificar por entropía en el bloque actual comprende el elemento 2 de sintaxis, un modelo de contexto correspondiente al elemento 2 de sintaxis en el bloque actual se determina a partir del conjunto de modelos de contexto preestablecido; y realizar la decodificación por entropía en el elemento de sintaxis a decodificar basándose en el modelo de contexto correspondiente al elemento de sintaxis a decodificar por entropía en el bloque actual; caracterizado en que
la unidad (304) de decodificación por entropía está configurada específicamente para: determinar un índice de contexto del elemento 1 de sintaxis en el bloque actual basándose en un elemento 1 de sintaxis y un elemento 2 de sintaxis en el bloque vecino izquierdo del bloque actual y un elemento 1 de sintaxis y un elemento 2 de sintaxis en el bloque vecino superior del bloque actual, en donde el índice de contexto del elemento 1 de sintaxis en el bloque actual indica el modelo de contexto correspondiente al elemento 1 de sintaxis en el bloque actual; o determinar un índice de contexto del elemento 2 de sintaxis en el bloque actual basándose en un elemento 1 de sintaxis y un elemento 2 de sintaxis en el bloque vecino izquierdo del bloque actual y un elemento 1 de sintaxis y un elemento 2 de sintaxis en el bloque vecino superior del bloque actual, en donde el índice de contexto del elemento 2 de sintaxis en el bloque actual indica el modelo de contexto correspondiente al elemento 2 de sintaxis en el bloque actual.
7. El descodificador (30) de vídeo según la reivindicación 6, en donde una cantidad de modelos de contexto en el conjunto de modelos de contexto preestablecido es 2 o 3.
8. El descodificador (30) de vídeo según la reivindicación 6 o 7, en donde si la cantidad de modelos de contexto en el conjunto de modelos de contexto preestablecido es 3, un valor del índice de contexto del elemento 1 de sintaxis en el bloque actual es una suma de un valor obtenido realizando una operación OR sobre el elemento 1 de sintaxis y el elemento 2 de sintaxis en el bloque vecino superior y un valor obtenido realizando una operación OR sobre el elemento 1 de sintaxis y el elemento 2 de sintaxis en el bloque vecino izquierdo; o
un valor del índice de contexto del elemento 2 de sintaxis en el bloque actual es una suma de un valor obtenido realizando una operación OR sobre el elemento 1 de sintaxis y el elemento 2 de sintaxis en el bloque vecino superior y un valor obtenido realizando una operación OR sobre el elemento 1 de sintaxis y el elemento 2 de sintaxis en el bloque vecino izquierdo.
9. El descodificador (30) de vídeo según la reivindicación 6 o 7, en donde si la cantidad de modelos de contexto en el conjunto de modelos de contexto preestablecido es 2, un valor del índice de contexto del elemento 1 de sintaxis en el bloque actual es un resultado obtenido realizando una operación OR sobre un valor obtenido realizando una operación OR sobre el elemento 1 de sintaxis y el elemento 2 de sintaxis en el bloque vecino superior y un valor obtenido realizando una operación OR sobre el elemento 1 de sintaxis y el elemento 2 de sintaxis en el bloque vecino izquierdo; o
un valor del índice de contexto del elemento 2 de sintaxis en el bloque actual es un resultado obtenido realizando una operación OR sobre un valor obtenido realizando una operación OR sobre el elemento 1 de sintaxis y el elemento 2 de sintaxis en el bloque vecino superior y un valor obtenido realizando una operación OR sobre el elemento 1 de sintaxis y el elemento 2 de sintaxis en el bloque vecino izquierdo.
10. El descodificador (30) de vídeo según una cualquiera de las reivindicaciones 6 a 9, en donde el elemento 1 de sintaxis en el bloque actual es afín_fusión_indicador, y se utiliza para indicar si se utiliza un modo de fusión basándose en un modelo de movimiento afín para el bloque actual, o el elemento 2 de sintaxis en el bloque actual es afín jn terjndicador, y se utiliza para indicar si se utiliza un modo AMVP basándose en un modelo de movimiento afín para el bloque actual cuando un segmento en la que se encuentra el bloque actual es un segmento de tipo P o un segmento de tipo B; o
el elemento 1 de sintaxis del bloque actual es subbloque_fusión_indicador, y se utiliza para indicar si se utiliza un modo de fusión basándose en subbloques para el bloque actual, o el elemento 2 de sintaxis del bloque actual es afín jn terjndicador, y se utiliza para indicar si se utiliza un modo AMVP basándose en un modelo de movimiento afín para el bloque actual cuando un segmento en la que se encuentra el bloque actual es un segmento de tipo P o un segmento de tipo B.
11. Un medio de almacenamiento legible por ordenador, que tiene almacenado en el mismo un programa informático que puede ser ejecutado por al menos un procesador, en donde cuando el programa informático es realizado por el al menos un procesador, se realiza el método según una cualquiera de las reivindicaciones 1 a 5.
ES19860657T 2018-09-10 2019-09-10 Método de decodificación de vídeo y decodificador de vídeo Active ES2965276T3 (es)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN201811053068.0A CN110891180B (zh) 2018-09-10 2018-09-10 视频解码方法及视频解码器
PCT/CN2019/105024 WO2020052534A1 (zh) 2018-09-10 2019-09-10 视频解码方法及视频解码器

Publications (1)

Publication Number Publication Date
ES2965276T3 true ES2965276T3 (es) 2024-04-11

Family

ID=69745196

Family Applications (1)

Application Number Title Priority Date Filing Date
ES19860657T Active ES2965276T3 (es) 2018-09-10 2019-09-10 Método de decodificación de vídeo y decodificador de vídeo

Country Status (15)

Country Link
US (2) US11706417B2 (es)
EP (2) EP4283999A3 (es)
JP (3) JP7164710B2 (es)
KR (2) KR102571317B1 (es)
CN (6) CN117714717A (es)
AU (2) AU2019337242B2 (es)
BR (1) BR112021004442A2 (es)
CA (1) CA3116614A1 (es)
ES (1) ES2965276T3 (es)
HU (1) HUE064178T2 (es)
MX (1) MX2021002747A (es)
PL (1) PL3843398T3 (es)
SG (1) SG11202101762PA (es)
WO (1) WO2020052534A1 (es)
ZA (1) ZA202200892B (es)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2577318B (en) * 2018-09-21 2021-03-10 Canon Kk Video coding and decoding
KR20210069715A (ko) * 2018-10-10 2021-06-11 인터디지털 브이씨 홀딩스 인코포레이티드 비디오 인코딩 및 디코딩의 아핀 모드 시그널링
GB2580084B (en) * 2018-12-20 2022-12-28 Canon Kk Video coding and decoding
CN112135135A (zh) * 2019-06-24 2020-12-25 腾讯美国有限责任公司 视频解码方法、装置、计算机设备及存储介质
US11516489B2 (en) * 2019-06-24 2022-11-29 Tencent America LLC Method and apparatus for video coding
CN110533165B (zh) * 2019-08-16 2022-05-17 浪潮电子信息产业股份有限公司 一种图像处理方法、装置及设备
WO2023197104A1 (zh) * 2022-04-11 2023-10-19 Oppo广东移动通信有限公司 一种编解码方法、编码器、解码器及存储介质

Family Cites Families (41)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7599435B2 (en) * 2004-01-30 2009-10-06 Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung E.V. Video frame encoding and decoding
US7777654B2 (en) * 2007-10-16 2010-08-17 Industrial Technology Research Institute System and method for context-based adaptive binary arithematic encoding and decoding
WO2011126277A2 (en) * 2010-04-05 2011-10-13 Samsung Electronics Co., Ltd. Low complexity entropy-encoding/decoding method and apparatus
KR20110112168A (ko) * 2010-04-05 2011-10-12 삼성전자주식회사 내부 비트뎁스 확장에 기반한 비디오 부호화 방법 및 그 장치, 내부 비트뎁스 확장에 기반한 비디오 복호화 방법 및 그 장치
KR101539312B1 (ko) 2011-05-27 2015-07-24 미디어텍 인크. 비디오 프로세싱에 대한 라인 버퍼 감소를 위한 방법 및 장치
US8995523B2 (en) * 2011-06-03 2015-03-31 Qualcomm Incorporated Memory efficient context modeling
IL297827B2 (en) 2011-06-16 2024-01-01 Ge Video Compression Llc Entropy coding of motion vector differences
US9282338B2 (en) * 2011-06-20 2016-03-08 Qualcomm Incorporated Unified merge mode and adaptive motion vector prediction mode candidates selection
MX2013013483A (es) * 2011-06-27 2014-02-27 Panasonic Corp Metodo de decodificacion de imagenes, metodo de codificacion de imagenes, aparato de decodificacion de imagenes, aparato de codificacion de imagenes y aparato de codificacion y decodificacion de imagenes.
US9167253B2 (en) * 2011-06-28 2015-10-20 Qualcomm Incorporated Derivation of the position in scan order of the last significant transform coefficient in video coding
SG10201706004TA (en) * 2011-07-01 2017-08-30 Samsung Electronics Co Ltd Method And Apparatus For Entropy Encoding Using Hierarchical Data Unit, And Method And Apparatus For Decoding
WO2013012819A2 (en) * 2011-07-15 2013-01-24 General Instrument Corporation Context modeling techniques for transform coefficient level coding
US9800870B2 (en) * 2011-09-16 2017-10-24 Qualcomm Incorporated Line buffer reduction for short distance intra-prediction
US9838692B2 (en) * 2011-10-18 2017-12-05 Qualcomm Incorporated Detecting availabilities of neighboring video units for video coding
US9088796B2 (en) * 2011-11-07 2015-07-21 Sharp Kabushiki Kaisha Video decoder with enhanced CABAC decoding
US9288508B2 (en) * 2011-11-08 2016-03-15 Qualcomm Incorporated Context reduction for context adaptive binary arithmetic coding
CN102611888B (zh) * 2011-11-18 2014-07-23 北京工业大学 一种对屏幕内容的编码方法
US20130176390A1 (en) * 2012-01-06 2013-07-11 Qualcomm Incorporated Multi-hypothesis disparity vector construction in 3d video coding with depth
CN104093025B (zh) * 2012-01-20 2017-09-19 华为技术有限公司 编解码方法和装置
US9264706B2 (en) 2012-04-11 2016-02-16 Qualcomm Incorporated Bypass bins for reference index coding in video coding
US20130272412A1 (en) * 2012-04-12 2013-10-17 Qualcomm Incorporated Common motion information candidate list construction process
SG11201406493RA (en) 2012-04-13 2014-11-27 Ge Video Compression Llc Low delay picture coding
US9503702B2 (en) 2012-04-13 2016-11-22 Qualcomm Incorporated View synthesis mode for three-dimensional video coding
CA2863549C (en) * 2012-05-29 2018-12-04 Mediatek Inc. Method and apparatus for coding of sample adaptive offset information
CN103716629B (zh) 2012-09-29 2017-02-22 华为技术有限公司 用于图像处理的方法、装置、编码器和解码器
US9247271B2 (en) * 2012-10-08 2016-01-26 Inria Institut National De Recherche En Informatique Et En Automatique Method and device for motion information prediction in multi-view video coding
CN103024380B (zh) * 2012-12-10 2016-04-13 浙江大学 一种数据的熵编码方法和装置
US9516306B2 (en) * 2013-03-27 2016-12-06 Qualcomm Incorporated Depth coding modes signaling of depth data for 3D-HEVC
US9369708B2 (en) 2013-03-27 2016-06-14 Qualcomm Incorporated Depth coding modes signaling of depth data for 3D-HEVC
KR101909863B1 (ko) * 2013-07-08 2018-10-18 미디어텍 싱가폴 피티이. 엘티디. 3d 비디오 코딩에서 단순화된 cabac 코딩의 방법
KR20160102067A (ko) 2013-12-30 2016-08-26 퀄컴 인코포레이티드 3d 비디오 코딩에서의 델타 dc 잔차 코딩의 단순화
US10484696B2 (en) 2014-01-07 2019-11-19 Mediatek Inc. Method and apparatus for color index prediction
KR102060871B1 (ko) 2015-04-08 2019-12-30 에이치에프아이 이노베이션 인크. 비디오 코딩에서의 팔레트 모드 콘텍스트 코딩 및 이진화를 위한 방법
WO2016200100A1 (ko) * 2015-06-10 2016-12-15 삼성전자 주식회사 적응적 가중치 예측을 위한 신택스 시그널링을 이용하여 영상을 부호화 또는 복호화하는 방법 및 장치
US10148977B2 (en) * 2015-06-16 2018-12-04 Futurewei Technologies, Inc. Advanced coding techniques for high efficiency video coding (HEVC) screen content coding (SCC) extensions
US10142627B2 (en) * 2015-06-18 2018-11-27 Qualcomm Incorporated Intra prediction and intra mode coding
WO2017041271A1 (en) * 2015-09-10 2017-03-16 Mediatek Singapore Pte. Ltd. Efficient context modeling for coding a block of data
KR102469145B1 (ko) 2015-10-13 2022-11-21 삼성전자주식회사 영상을 부호화 또는 복호화하는 방법 및 장치
US10721489B2 (en) * 2016-09-06 2020-07-21 Qualcomm Incorporated Geometry-based priority for the construction of candidate lists
US10979732B2 (en) * 2016-10-04 2021-04-13 Qualcomm Incorporated Adaptive motion vector precision for video coding
US10555006B2 (en) 2016-12-22 2020-02-04 Qualcomm Incorporated Deriving bilateral filter information based on a prediction mode in video coding

Also Published As

Publication number Publication date
CN117651149A (zh) 2024-03-05
BR112021004442A2 (pt) 2021-05-25
EP4283999A3 (en) 2024-02-21
KR20230128578A (ko) 2023-09-05
EP4283999A2 (en) 2023-11-29
CN117676165A (zh) 2024-03-08
MX2021002747A (es) 2021-05-12
AU2019337242A1 (en) 2021-03-18
US20230300335A1 (en) 2023-09-21
HUE064178T2 (hu) 2024-02-28
ZA202200892B (en) 2023-06-28
CN112703735A (zh) 2021-04-23
CN112040247A (zh) 2020-12-04
CN112040247B (zh) 2021-09-21
JP2021536710A (ja) 2021-12-27
CN117714717A (zh) 2024-03-15
AU2019337242B2 (en) 2023-05-11
JP7507827B2 (ja) 2024-06-28
JP2023012484A (ja) 2023-01-25
JP2024097048A (ja) 2024-07-17
KR20210036405A (ko) 2021-04-02
EP3843398B1 (en) 2023-11-01
CN110891180B (zh) 2023-11-17
AU2023214364A1 (en) 2023-08-31
US20210195198A1 (en) 2021-06-24
EP3843398A1 (en) 2021-06-30
KR102571317B1 (ko) 2023-08-25
US12047577B2 (en) 2024-07-23
JP7164710B2 (ja) 2022-11-01
WO2020052534A1 (zh) 2020-03-19
EP3843398A4 (en) 2021-10-20
CN112703735B (zh) 2022-03-08
PL3843398T3 (pl) 2024-02-19
SG11202101762PA (en) 2021-03-30
AU2023214364B2 (en) 2024-06-13
CA3116614A1 (en) 2020-03-19
CN110891180A (zh) 2020-03-17
US11706417B2 (en) 2023-07-18

Similar Documents

Publication Publication Date Title
ES2965276T3 (es) Método de decodificación de vídeo y decodificador de vídeo
ES2946909T3 (es) Método, aparato y producto de programa informático para interpredicción
ES2974237T3 (es) Método y aparato de predicción de imágenes de vídeo
ES2974160T3 (es) Decodificador de video y métodos
KR102620024B1 (ko) 아핀 모션 모델을 기반으로 한 모션 벡터 예측 방법 및 디바이스
ES2972326T3 (es) Un codificador, un decodificador y métodos correspondientes para el modo de fusión
BR112021001813A2 (pt) método de processamento de vídeo, aparelho de processamento de vídeo, codificador, decodificador, mídia e programa de computador
WO2020088482A1 (zh) 基于仿射预测模式的帧间预测的方法及相关装置
CN111698515A (zh) 帧间预测的方法及相关装置
WO2020182194A1 (zh) 帧间预测的方法及相关装置
CN111355961A (zh) 一种帧间预测的方法和装置
RU2783337C2 (ru) Способ декодирования видео и видеодекодер