[go: up one dir, main page]

ES2994111T3 - Method, computer program product and device for decoding cbf flags - Google Patents

Method, computer program product and device for decoding cbf flags Download PDF

Info

Publication number
ES2994111T3
ES2994111T3 ES20767275T ES20767275T ES2994111T3 ES 2994111 T3 ES2994111 T3 ES 2994111T3 ES 20767275 T ES20767275 T ES 20767275T ES 20767275 T ES20767275 T ES 20767275T ES 2994111 T3 ES2994111 T3 ES 2994111T3
Authority
ES
Spain
Prior art keywords
cbf
unit
flag
transformation
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
ES20767275T
Other languages
English (en)
Inventor
Yin Zhao
Sergey Yurievich Ikonin
Jianle Chen
Roman Igorevich Chernyak
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 ES2994111T3 publication Critical patent/ES2994111T3/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/12Selection from among a plurality of transforms or standards, e.g. selection between discrete cosine transform [DCT] and sub-band transform or selection between H.263 and H.264
    • 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/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/18Methods 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 a set of transform coefficients
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/184Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being bits, e.g. of the compressed video stream
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/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/186Methods 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 a colour or a chrominance component
    • 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/46Embedding additional information in the video signal during the compression process
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • Discrete Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Electrophonic Musical Instruments (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

Un método de codificación implementado por un dispositivo de decodificación o un dispositivo de codificación, comprendiendo el método la obtención de un flujo de bits, comprendiendo el flujo de bits una sintaxis de unidad de transformación (en un ejemplo, el elemento de sintaxis de unidad de transformación puede codificarse para un bloque completo o codificarse para múltiples unidades de subtransformación que se obtienen mediante la Transformación de subbloque para interbloque (SBT), o para satisfacer restricciones de tamaño de unidad de transformación máxima); la sintaxis comprende al menos dos indicadores cbf para bloques de croma (en un ejemplo, la sintaxis de unidad de transformación corresponde a unidades de transformación o subunidades de transformación que incluyen dos indicadores cbf de croma: tu_cbf_cb y tu_cbf_cb - un indicador para cada plano de croma), un indicador cbf de croma especifica si cierto bloque tiene un residuo en el plano de color correspondiente; derivar un valor de un indicador cbf de luminancia tu_cbf_luma basado en uno o cualquier combinación de un valor de un indicador cu_cbf, valores de dos indicadores cbf de croma correspondientes a una unidad de transformación o subunidad de transformación actual, ubicación de la subunidad de transformación dentro de la unidad de transformación, valores de indicadores cbf de luminancia y croma correspondientes a subunidades de transformación anteriores en la unidad de transformación actual. (Traducción automática con Google Translate, sin valor legal)

Description

DESCRIPCIÓN
Método, producto de programa informático y dispositivo para descodificar indicadores cbf
Referencia a solicitudes relacionadas
Esta solicitud de patente reivindica la prioridad de la Solicitud de Patente Provisional de EE. UU. N.° US 62/812.282, presentada el 1 de marzo de 2019, así como la Solicitud de Patente Provisional de EE. UU. N.° US 62/817.498, presentada el 12 de marzo de 2019, así como la Solicitud de Patente Provisional de EE. UU. N.° US 62/825.005, presentada el 27 de marzo de 2019, así como la Solicitud de Patente Internacional PCT/EP2019/064224, presentada el 31 de mayo de 2019.
Campo técnico
Las realizaciones de la presente solicitud (divulgación) se refieren, en general, al campo del procesamiento de imágenes y, más particularmente, a la señalización mediante indicadores de transformación. Se dio a conocer que los indicadores CBF que se presentan en los elementos de sintaxis árbol de transformación o unidad de transformación se pueden señalizar dependiendo de cada uno de ellos y de otros elementos de sintaxis disponibles.
Antecedentes
La codificación de vídeo (codificación y descodificación de vídeo) se utiliza en una amplia gama de aplicaciones de vídeo digital, por ejemplo, difusión de TV digital, transmisión de vídeo sobre Internet y redes móviles, aplicaciones de conversación en tiempo real tales como videollamada, videoconferencia, discos DVD y Bluray, sistemas de obtención y edición de contenido de vídeo y videocámaras para aplicaciones de seguridad.
La cantidad de datos de vídeo necesarios para representar incluso un vídeo relativamente corto puede ser sustancial, lo que puede dar lugar a dificultades cuando los datos se van a transmitir o comunicar de otro modo a través de una red de comunicaciones con capacidad limitada de ancho de banda. Por lo tanto, los datos de vídeo, de manera general, se comprimen antes de ser comunicados a través de las redes de telecomunicaciones modernas. El tamaño de un vídeo también podría ser un problema cuando el vídeo se almacena en un dispositivo de almacenamiento debido a que los recursos de memoria pueden ser limitados. Los dispositivos de compresión de vídeo a menudo usan software y/o hardware en la fuente para codificar los datos de vídeo antes de la transmisión o el almacenamiento, lo que reduce la cantidad de datos necesarios para representar imágenes de vídeo digital. A continuación, los datos comprimidos son recibidos en el destino por un dispositivo de descompresión de vídeo que descodifica los datos de vídeo. Con recursos de la red limitados y demandas cada vez mayores de mayor calidad de vídeo, son deseables técnicas mejoradas de compresión y descompresión, que mejoren la relación de compresión con poco o ningún sacrificio en la calidad de la imagen.
El documento de Bossen, Frank: “CABACReader.cpp VTM4.0.1” da a conocer el código fuente del CABAC Reader para VTM4.0.1. El documento de Barbier, Frederic: “TypeDef.h VTM4.0.1” da a conocer el código fuente de la definición de tipo para VTM4.0.1.
El documento de Suehring, Karsten et al: “UnitTools.cpp VTM4.0.1” da a conocer el código fuente de las herramientas de unidad para VTM4.0.1.
El documento de ZHAO, Y et al: “CE6: Sub-block transform for inter blocks (Test 6.4.1)” da a conocer la solución de la transformación de subbloques para interbloques.
El documento de BROSS, B et al: “Versatile Video Coding (Draft 4)” da a conocer un borrador para codificación de vídeo versátil.
El documento de ITU-T H.265: “ ITU-T H.265 High efficiency video coding”, da a conocer la infraestructura de los servicios audiovisuales.
Compendio
Las realizaciones de la presente divulgación proporcionan aparatos y métodos para codificación y descodificación según las reivindicaciones independientes.
La presente invención está definida por las reivindicaciones independientes. En las reivindicaciones dependientes se presentan características adicionales de la invención. En lo que sigue, las partes de la descripción y los dibujos que se refieren a realizaciones que no están cubiertas por las reivindicaciones no se presentan como realizaciones de la invención, sino como ejemplos útiles para comprender la invención.
Los objetivos anteriores y otros se logran mediante el objeto de las reivindicaciones independientes. Otras formas de implementación se desprenden de las reivindicaciones dependientes, de la descripción y de las figuras.
La divulgación habilitante para la invención tal como está definida en las reivindicaciones se encuentra en la segunda Tabla 3 correspondiente a la 1a realización.
El método según el primer aspecto de la invención puede ser llevado a cabo mediante el aparato según el tercer aspecto de la invención. Otras características y formas de implementación del método según el tercer aspecto de la invención se corresponden con las características y formas de implementación del aparato según el primer aspecto de la invención.
El método según el segundo ejemplo de la invención puede ser llevado a cabo mediante el aparato según el cuarto ejemplo de la invención. Otras características y formas de implementación del método según el cuarto aspecto de la invención se corresponden con las características y formas de implementación del aparato según el segundo aspecto de la invención.
Según un quinto aspecto, la invención se refiere a un aparato para descodificar un flujo de vídeo, que incluye un procesador y una memoria. La memoria almacena instrucciones que hacen que el procesador ejecute el método según el primer aspecto.
Según un sexto aspecto, la invención se refiere a un aparato para codificar un flujo de vídeo, que incluye un procesador y una memoria. La memoria está almacenando instrucciones que hacen que el procesador ejecute el método según el segundo ejemplo.
Según un séptimo ejemplo, se propone un medio de almacenamiento legible por ordenador que tiene almacenadas en el mismo instrucciones que, cuando se ejecutan, hacen que uno o más procesadores sean configurados para codificar datos de vídeo. Las instrucciones hacen que el uno o más procesadores realicen un método según el primer aspecto o segundo ejemplo o cualquier posible realización del primer aspecto o segundo ejemplo,
Según un octavo aspecto, la invención se refiere a un programa informático que comprende un código de programa para realizar el método según el primer aspecto, cuando se ejecuta en un ordenador.
Con más detalle, la presente divulgación da a conocer un método de codificación de vídeo implementado por un dispositivo de descodificación según la reivindicación independiente 1.
Por lo tanto, la presente divulgación permite mejorar la eficiencia de la codificación y propone un mecanismo unificado de señalización mediante indicadores cbf. Por lo tanto, se propone un mecanismo unificado de señalización de los indicadores cbf.
Además, las relaciones entre los indicadores cbf y las herramientas de división de subunidades de transformación permiten eliminar la redundancia en el flujo de bits.
La presente divulgación da a conocer además un codificador que comprende circuitos de procesamiento. La presente divulgación da a conocer además un descodificador que comprende circuitos de procesamiento para llevar a cabo el método tal como se indicó anteriormente.
La presente divulgación da a conocer además un producto de programa informático que comprende un código de programa para realizar el método tal como se indicó anteriormente.
La presente divulgación da a conocer además un descodificador o un codificador, que comprende:
uno o más procesadores; y
un medio de almacenamiento no transitorio legible por ordenador acoplado a los procesadores, y que almacena la programación para su ejecución por los procesadores, en donde la programación, cuando es ejecutada por los procesadores, configura el descodificador para llevar a cabo el método tal como se indicó anteriormente. La presente divulgación da a conocer además un codificador.
La presente divulgación da a conocer además un descodificador.
Los detalles de una o más realizaciones se exponen en los dibujos adjuntos y en la descripción que sigue.
Otras características, objetivos y ventajas serán evidentes a partir de la descripción, los dibujos y las reivindicaciones.
Breve descripción de los dibujos
En lo que sigue, las realizaciones de la invención se describen con más detalle con referencia a las figuras y dibujos adjuntos, en los que:
la figura 1A es un diagrama de bloques que muestra un ejemplo de un sistema de codificación de vídeo, configurado para implementar las realizaciones de la invención;
la figura 1B es un diagrama de bloques que muestra otro ejemplo de un sistema de codificación de vídeo, configurado para implementar las realizaciones de la invención;
la figura 2 es un diagrama de bloques que muestra un ejemplo de un codificador de vídeo, configurado para implementar las realizaciones de la invención;
la figura 3 es un diagrama de bloques que muestra una estructura de ejemplo de un codificador de vídeo, configurado para implementar las realizaciones de la invención;
la figura 4 es un diagrama de bloques que ilustra un ejemplo de un aparato de codificación o un aparato de descodificación;
la figura 5 es un diagrama de bloques que ilustra otro ejemplo de un aparato de codificación o de un aparato de descodificación;
la figura 6 es un diagrama de bloques que ilustra una realización del método de señalización mediante indicadores cbf;
la figura 7 ilustra un diagrama de flujo de un método de codificación implementado por un dispositivo de descodificación o un dispositivo de codificación según la presente divulgación;
la figura 8 ilustra esquemáticamente un ejemplo de un codificador según la presente divulgación; la figura 9 ilustra esquemáticamente un ejemplo de un descodificador según la presente divulgación; la figura 10 ilustra un diagrama de bloques similar al de la figura 6.
En lo que sigue, signos de referencia idénticos se refieren a características idénticas o al menos funcionalmente equivalentes, si no se especifica explícitamente lo contrario.
Descripción detallada de las realizaciones
En la siguiente descripción, se hace referencia a las figuras adjuntas, que forman parte de la descripción, y que muestran, a modo de ilustración, aspectos específicos de realizaciones de la invención o aspectos específicos en los que se pueden usar las realizaciones de la presente invención. Se entiende que las realizaciones de la invención se pueden usar en otros aspectos y comprenden cambios estructurales o lógicos no representados en las figuras. Por lo tanto, la siguiente descripción detallada no debe ser tomada en un sentido limitativo, y el alcance de la presente invención está definido por las reivindicaciones adjuntas.
Por ejemplo, se entiende que una descripción en relación con un método descrito también puede ser válida para un dispositivo o sistema correspondiente configurado para realizar el método y viceversa. Por ejemplo, si se describen una o una pluralidad de etapas del método específicas, un dispositivo correspondiente puede incluir una o una pluralidad de unidades, por ejemplo, unidades funcionales, para realizar la una o la pluralidad de etapas del método descritas (por ejemplo, una unidad que realiza la una o la pluralidad de etapas, o una pluralidad de unidades, cada una de las cuales realiza una o más de la pluralidad de etapas), incluso si tales una o más unidades no se describen o ilustran explícitamente en las figuras. Por otro lado, por ejemplo, si un aparato específico se describe en función de una o una pluralidad de unidades, por ejemplo, unidades funcionales, un método correspondiente puede incluir una etapa para realizar la funcionalidad de la una o la pluralidad de unidades (por ejemplo, una etapa que realiza la funcionalidad de la una o la pluralidad de unidades, o una pluralidad de etapas, cada una de las cuales realiza la funcionalidad de una o más de la pluralidad de unidades), incluso si tal una o pluralidad de etapas no se describen o ilustran explícitamente en las figuras. Además, se entiende que las características de las diversas realizaciones ejemplares y/o los aspectos descritos en la presente memoria pueden combinarse entre sí, a menos que se indique específicamente lo contrario.
La codificación de vídeo se refiere, generalmente, al procesamiento de una secuencia de imágenes, que forman el vídeo o la secuencia de vídeo. En lugar del término “ imagen”, el término “fotograma” se puede usar como sinónimo en el campo de la codificación de vídeo. La codificación de vídeo (o codificación en general) comprende dos partes: codificación de vídeo y descodificación de vídeo. La codificación de vídeo se realiza en el lado de origen, lo que generalmente comprende el procesamiento (por ejemplo, mediante compresión) de las imágenes de vídeo originales, para reducir la cantidad de datos necesarios para representar las imágenes de vídeo (para un almacenamiento y/o transmisión más eficiente). La descodificación de vídeo se realiza en el lado de destino y, generalmente, comprende el procesamiento inverso en comparación con el codificador, para reconstruir las imágenes de vídeo. Las realizaciones que se refieren a la “codificación” de imágenes de vídeo (o imágenes en general, tal como se explicará más adelante) se entenderán relacionadas con la “codificación” o la “descodificación” de secuencias de vídeo respectivas. La combinación de la parte de codificación y la parte de descodificación también se conoce como CODEC (Coding and decoding, Codificación y descodificación).
En caso de codificación de vídeo sin pérdidas, las imágenes de vídeo originales pueden reconstruirse, es decir, las imágenes de vídeo reconstruidas tienen la misma calidad que las imágenes de vídeo originales (suponiendo que no haya pérdida de transmisión u otra pérdida de datos durante el almacenamiento o la transmisión). En caso de codificación de vídeo con pérdida, se realiza una compresión adicional, por ejemplo, mediante cuantificación, para reducir la cantidad de datos que representan las imágenes de vídeo, que no pueden reconstruirse completamente en el descodificador, es decir, la calidad de las imágenes de vídeo reconstruidas es menor o peor en comparación con la calidad de las imágenes de vídeo originales.
Varios estándares de codificación de vídeo pertenecen al grupo de “códecs de vídeo híbridos con pérdida” (es decir, combinan predicción espacial y temporal en el dominio de la muestra y codificación de transformación 2D para aplicar cuantificación en el dominio de la transformación). Cada imagen de una secuencia de vídeo generalmente se divide en un conjunto de bloques que no se superponen y la codificación generalmente se realiza a nivel de bloque. En otras palabras, en el codificador, el vídeo generalmente se procesa, es decir, se codifica, en un nivel de bloque (bloque de vídeo), por ejemplo, usando predicción espacial (intraimagen) y predicción temporal (interimagen) para generar un bloque de predicción, restando el bloque de predicción del bloque actual (bloque actualmente procesado /a procesar) para obtener un bloque residual, transformando el bloque residual y cuantificando el bloque residual en el dominio de la transformación para reducir la cantidad de datos a transmitir (compresión), mientras que en el decodificador se aplica el procesamiento inverso en comparación con el codificador, al bloque codificado o comprimido, para reconstruir el bloque actual para su representación. Además, el codificador duplica el bucle de procesamiento del descodificador de tal manera que ambos generarán predicciones idénticas (por ejemplo, intrapredicciones e interpredicciones) y/o reconstrucciones para el procesamiento, es decir, la codificación, de los bloques posteriores.
En las siguientes realizaciones de un sistema de codificación 10 de vídeo, se describen un codificador de vídeo 20 y un descodificador de vídeo 30, basándose en las figuras 1 a 3.
La figura 1A es un diagrama de bloques conceptual o esquemático que ilustra un sistema de codificación 10 de ejemplo, por ejemplo, un sistema de codificación 10 de vídeo (o sistema 10, para simplificar) que puede utilizar técnicas de esta presente solicitud. El codificador de vídeo 20 (o codificador 20, para simplificar) y el descodificador de vídeo 30 (o descodificador 30, para simplificar) del sistema de codificación 10 de vídeo representan ejemplos de dispositivos que pueden ser configurados para realizar técnicas según diversos ejemplos descritos en la presente solicitud.
Tal como se muestra en la figura 1A, el sistema de codificación 10 comprende un dispositivo de origen 12, configurado para proporcionar datos de imagen codificados 21, por ejemplo, a un dispositivo de destino 14, para descodificar los datos de imagen codificados 13.
El dispositivo de origen 12 comprende un codificador 20, y puede comprender adicionalmente, es decir, opcionalmente, una fuente de imágenes 16, un preprocesador (o unidad de preprocesamiento) 18, por ejemplo un preprocesador de imágenes 18, y una interfaz de comunicación o unidad de comunicación 22.
La fuente de imágenes 16 puede comprender o ser cualquier tipo de dispositivo de obtención de imágenes, por ejemplo, una cámara para obtener una imagen del mundo real, y/o cualquier tipo de dispositivo de generación de imágenes, por ejemplo, un procesador de gráficos de ordenador para generar una imagen animada por ordenador, o cualquier tipo de dispositivo para obtener y/o proporcionar una imagen del mundo real, una imagen generada por ordenador (por ejemplo, un contenido de pantalla, una imagen de realidad virtual (Virtual Reality, VR)) y/o cualquier combinación de las mismas (por ejemplo, una imagen de realidad aumentada (Augmented Reality, a R)). La fuente de imágenes puede ser cualquier tipo de memoria o almacenamiento que almacene cualquiera de las imágenes mencionadas anteriormente.
A diferencia del preprocesador 18 y del procesamiento realizado por la unidad de preprocesamiento 18, la imagen o los datos de imagen 17 también pueden denominarse imagen sin procesar o datos de imagen sin procesar 17.
El preprocesador 18 está configurado para recibir los datos de imagen 17 (sin procesar) y para realizar el preprocesamiento de los datos de imagen 17 para obtener una imagen preprocesada 19 o datos de imagen preprocesados 19. El preprocesamiento realizado por el preprocesador 18 puede comprender, por ejemplo, recorte, conversión de formato de color (por ejemplo, de RGB a YCbCr), corrección de color o eliminación de ruido. Puede entenderse que la unidad de preprocesamiento 18 puede ser un componente opcional.
El codificador de vídeo 20 está configurado para recibir los datos de imagen preprocesados 19 y proporcionar datos de imagen codificados 21 (otros detalles se describirán a continuación, por ejemplo, basándose en la figura 2).
La interfaz de comunicación 22 del dispositivo de origen 12 puede estar configurada para recibir los datos de imagen codificados 21 y para transmitir los datos de imagen codificados 21 (o cualquier otra versión procesada de los mismos) a través del canal de comunicación 13, a otro dispositivo, por ejemplo el dispositivo de destino 14 o cualquier otro dispositivo, para almacenamiento o reconstrucción directa.
El dispositivo de destino 14 comprende un descodificador 30 (por ejemplo, un descodificador de vídeo 30), y puede comprender adicionalmente, es decir, opcionalmente, una interfaz de comunicación o unidad de comunicación 28, un posprocesador 32 (o unidad de posprocesamiento 32) y un dispositivo de visualización 34.
La interfaz de comunicación 28 del dispositivo de destino 14 está configurada para recibir los datos de imagen codificados 21 (o cualquier otra versión procesada de los mismos), por ejemplo directamente desde el dispositivo de origen 12 o desde cualquier otra fuente, por ejemplo un dispositivo de almacenamiento, por ejemplo un dispositivo de almacenamiento de datos de imagen codificados, y proporcionar los datos de imagen codificados 21 al descodificador 30.
La interfaz de comunicación 22 y la interfaz de comunicación 28 pueden configurarse para transmitir o recibir los datos de imagen codificados 21 o los datos codificados 13 a través de un enlace de comunicación directo entre el dispositivo de origen 12 y el dispositivo de destino 14, por ejemplo, una conexión directa por cable o inalámbrica, o a través de cualquier tipo de red, por ejemplo, una red por cable o inalámbrica o cualquier combinación de las mismas, o cualquier tipo de red privada y pública, o cualquier tipo de combinación de las mismas. La interfaz de comunicación 22 puede configurarse, por ejemplo, para empaquetar los datos de imagen codificados 21 en un formato apropiado, por ejemplo, paquetes, y/o procesar los datos de imagen codificados utilizando cualquier tipo de codificación o procesamiento de transmisión para su transmisión a través de un enlace de comunicación o red de comunicación.
La interfaz de comunicación 28, que forma la contraparte de la interfaz de comunicación 22, puede configurarse, por ejemplo, para recibir los datos transmitidos y procesar los datos de transmisión utilizando cualquier tipo de descodificación de transmisión o procesamiento y/o desempaquetado correspondiente para obtener los datos de imagen codificados 21.
Tanto la interfaz de comunicación 22 como la interfaz de comunicación 28 pueden configurarse como interfaces de comunicación unidireccionales, como lo indica la flecha para el canal de comunicación 13 de la figura 1A que apunta desde el dispositivo de origen 12 al dispositivo de destino 14, o interfaces de comunicación bidireccionales, y puede configurarse, por ejemplo, para enviar y recibir mensajes, por ejemplo, para establecer una conexión, para reconocer e intercambiar cualquier otra información relacionada con el enlace de comunicación y/o la transmisión de datos, por ejemplo, la transmisión de datos de imágenes codificadas.
El descodificador 30 está configurado para recibir los datos de imagen codificados 21 y proporcionar datos de imagen descodificados 31 o una imagen descodificada 31(a continuación se describirán más detalles, por ejemplo, basándose en la figura 3 o la figura 5).
El posprocesador 32 del dispositivo de destino 14 está configurado para posprocesar los datos de imagen descodificados 31 (también llamados datos de imagen reconstruida), por ejemplo, la imagen descodificada 31, para obtener datos de imagen posprocesados 33, por ejemplo, una imagen posprocesada 33. El posprocesamiento realizado por la unidad de posprocesamiento 32 puede comprender, por ejemplo, conversión de formato de color (por ejemplo, de YCbCr a RGB), corrección de color, recorte o remuestreo, o cualquier otro procesamiento, por ejemplo, para preparar los datos de imagen descodificados 31 para su visualización, por ejemplo, mediante el dispositivo de visualización 34.
El dispositivo de visualización 34 del dispositivo de destino 14 está configurado para recibir los datos de imagen posprocesados 33 para mostrar la imagen, por ejemplo, a un usuario o espectador. El dispositivo de visualización 34 puede ser o comprender cualquier tipo de pantalla para representar la imagen reconstruida, por ejemplo, una pantalla o monitor integrado o externo. Las pantallas pueden comprender, por ejemplo, pantallas de cristal líquido (Liquid Crystal Display, LCD), pantallas de diodos orgánicos emisores de luz (Organic Light Emitting Diode, OLED), pantallas de plasma, proyectores, pantallas micro LED, cristal líquido sobre silicio (Liquid Crystal on Silicon, LCoS), procesador de luz digital (Digital Light Processor, DLP) o cualquier otro tipo de pantalla. Aunque la figura 1A representa el dispositivo de origen 12 y el dispositivo de destino 14 como dispositivos separados, las realizaciones de los dispositivos también pueden comprender ambos o ambas funcionalidades, el dispositivo de origen 12 o su funcionalidad correspondiente y el dispositivo de destino 14 o su funcionalidad correspondiente. En tales realizaciones, el dispositivo de origen 12 o su funcionalidad correspondiente y el dispositivo de destino 14 o su funcionalidad correspondiente pueden implementarse usando el mismo hardware y/o software o mediante hardware y/o software separados o cualquier combinación de los mismos.
Tal como será evidente para el experto en la materia basándose en la descripción, la existencia y división (exacta) de funcionalidades de las diferentes unidades o funcionalidades dentro del dispositivo de origen 12 y/o el dispositivo de destino 14, tal como se muestra en la figura 1A, puede variar dependiendo del dispositivo y de la aplicación reales.
El codificador 20 (por ejemplo, un codificador de vídeo 20) y el descodificador 30 (por ejemplo, un descodificador de vídeo 30) o tanto el codificador 20 como el descodificador 30 pueden implementarse como circuitos de procesamiento tales como los que se muestran en la figura 1B, como uno o más microprocesadores, procesadores de señales digitales (Digital Signal Processor, DSP), circuitos integrados específicos de la aplicación (Application-Specific Integrated Circuit, ASIC), matrices de puertas programables en campo (Field-Programmable Gate Array, FPGA), lógica discreta, hardware, codificación de vídeo dedicada o cualquier combinación de los mismos El codificador 20 puede implementarse a través de circuitos de procesamiento 46 para incorporar los diversos módulos tal como se analiza con respecto al codificador 20 de la figura 2 y/o cualquier otro sistema o subsistema de codificador descrito en este documento. El descodificador 30 puede implementarse a través de circuitos de procesamiento 46 para incorporar los diversos módulos tal como se explica con respecto al descodificador 30 de la figura 3 y/o cualquier otro sistema o subsistema de descodificador descrito en este documento. Los circuitos lógicos pueden configurarse para realizar las diversas operaciones que se explican a continuación. Tal como se muestra en la figura 5, si las técnicas se implementan parcialmente en software, un dispositivo puede almacenar instrucciones para el software en un medio de almacenamiento no transitorio legible por ordenador adecuado, y puede ejecutar las instrucciones en hardware usando uno o más procesadores para realizar las técnicas de esta divulgación. Cualquiera del codificador de vídeo 20 o del descodificador de vídeo 30 pueden integrarse como parte de un codificador/descodificador (CODEC) combinado en un solo dispositivo, por ejemplo, tal como se muestra en la figura 1B.
El dispositivo de origen 12 y el dispositivo de destino 14 pueden comprender cualquiera de una amplia gama de dispositivos, incluido cualquier tipo de dispositivo portátil o fijo, por ejemplo, ordenadores portátiles o portátiles, teléfonos móviles, teléfonos inteligentes, tabletas u ordenadores tabletas, cámaras, ordenadores de escritorio, descodificadores, televisores, dispositivos de visualización, reproductores de medios digitales, consolas de videojuegos, dispositivos de transmisión en continuo de vídeo (tales tal como servidores de servicios de contenido o servidores de entrega de contenido), dispositivo de recepción de difusiones, dispositivo de transmisión de difusiones o similares, y puede usar ningún o cualquier tipo de sistema operativo. En algunos casos, el dispositivo de origen 12 y el dispositivo de destino 14 pueden estar equipados para comunicación inalámbrica. Por lo tanto, el dispositivo de origen 12 y el dispositivo de destino 14 pueden ser dispositivos de comunicación inalámbrica.
En algunos casos, el sistema de codificación de vídeo 10 ilustrado en la figura 1A es simplemente un ejemplo y las técnicas de la presente solicitud pueden aplicarse a configuraciones de codificación de vídeo (por ejemplo, codificación de vídeo o descodificación de vídeo) que no necesariamente incluyen ninguna comunicación de datos entre los dispositivos de codificación y descodificación. En otros ejemplos, los datos se recuperan de una memoria local, transmitidos en continuo a través de una red o similar. Un dispositivo de codificación de vídeo puede codificar y almacenar datos en la memoria, y/o un dispositivo de descodificación de vídeo puede recuperar y descodificar datos de la memoria. En algunos ejemplos, la codificación y descodificación la realizan dispositivos que no se comunican entre sí, sino que simplemente codifican datos en la memoria y/o recuperan y descodifican datos de la memoria.
Para facilitar la descripción, las realizaciones de la invención se describen en la presente memoria por referencia a la codificación de vídeo de alta eficiencia (High-Efficiency Video Coding, HEVC) o al software de referencia de codificación de vídeo versátil (Versatile Video coding, VVC), desarrollado por el equipo de colaboración conjunta en codificación de vídeo (Joint Collaboration Team on Video Coding, JCT-VC) del grupo de expertos en codificación de vídeo (Video Coding Experts Group, VCEG) del UIT-T y del grupo de expertos en imágenes en movimiento (Motion Picture Experts Group, MPEG) del ISO/IEC. Un experto en la materia comprenderá que las realizaciones de la invención no se limitan a HEVC o VVC.
Codificador y método de codificación
La figura 2 muestra un diagrama de bloques esquemático de un codificador de vídeo 20 de ejemplo que está configurado para implementar las técnicas de la presente solicitud. En el ejemplo de la figura 2, el codificador de vídeo 20 comprende una entrada 201 (o interfaz de entrada 201), una unidad de cálculo del residuo 204, una unidad de procesamiento mediante transformada 206, una unidad de cuantificación 208, una unidad de cuantificación inversa 210 y una unidad de procesamiento mediante transformada inversa 212, una unidad de reconstrucción 214, una unidad de filtro de bucle 220, una unidad de memoria intermedia de imágenes descodificadas (Decoded Picture Buffer, DPB) 230, una unidad de selección de modo 260, una unidad de codificación por entropía 270 y una salida 272 (o interfaz de salida 272). La unidad de selección de modo 260 puede incluir una unidad de interpredicción 244, una unidad de intrapredicción 254 y una unidad de división 262. La unidad de interpredicción 244 puede incluir una unidad de estimación de movimiento y una unidad de compensación de movimiento (no mostrada). Un codificador de vídeo 20 tal como se muestra en la figura 2 también puede denominarse codificador de vídeo híbrido o un codificador de vídeo según un códec de vídeo híbrido.
La unidad de cálculo del residuo 204, la unidad de procesamiento mediante transformada 206, la unidad de cuantificación 208, la unidad de selección de modo 260 pueden ser consideradas como formadoras de una ruta de señal hacia adelante del codificador 20, mientras que la unidad de cuantificación inversa 210, la unidad de procesamiento mediante transformada inversa 212, la unidad de reconstrucción 214, la memoria intermedia 216, el filtro de bucle 220, la memoria intermedia de imágenes descodificadas (DPB) 230, la unidad de interpredicción 244 y la unidad de intrapredicción 254 pueden ser consideradas como formadoras de una ruta de señal hacia atrás del codificador de vídeo 20, en donde la ruta de señal hacia atrás del codificador de vídeo 20 se corresponde con la ruta de señal del descodificador (véase el descodificador de vídeo 30 en la figura 3). La unidad de cuantificación inversa 210, la unidad de procesamiento mediante transformada inversa 212, la unidad de reconstrucción 214, el filtro de bucle 220, la memoria intermedia de imágenes descodificadas (DPB) 230, la unidad de interpredicción 244 y la unidad de intrapredicción 254 también se denominan “descodificador incorporado” del codificador de vídeo 20.
Imágenes y división de imágenes (imágenes y bloques)
El codificador 20 puede ser configurado para recibir, por ejemplo, a través de la entrada 201, una imagen 17 (o datos de imagen 17), por ejemplo, imagen de una secuencia de imágenes que forman un vídeo o una secuencia de vídeo. La imagen o los datos de imagen recibidos también pueden ser una imagen preprocesada 19 (o datos de imagen preprocesados 19). Para simplificar, la siguiente descripción se refiere a la imagen 17. La imagen 17 también puede denominarse imagen actual o imagen a codificar (en particular, en la codificación de vídeo, para distinguir la imagen actual de otras imágenes, por ejemplo, imágenes codificadas y/o descodificadas previamente de la misma secuencia de vídeo, es decir, la secuencia de vídeo que también comprende la imagen actual).
Una imagen (digital) es o puede ser considerada como un conjunto o matriz bidimensional de muestras con valores de intensidad. Una muestra en la matriz también puede denominarse píxel (forma abreviada de elemento de imagen) o un pel. El número de muestras en dirección horizontal y vertical (o eje) de la matriz o imagen define el tamaño y/o resolución de la imagen. Para la representación del color, generalmente se emplean tres componentes de color, es decir, la imagen puede representarse o incluir tres matrices de muestra. En formato RBG o espacio de color, una imagen comprende una matriz de muestra roja, verde y azul correspondiente. Sin embargo, en la codificación de vídeo, cada píxel generalmente se representa en un espacio de color o formato de luminancia y crominancia, por ejemplo, YCbCr, que comprende una componente de luminancia indicada por Y (a veces también se usa L en su lugar) y dos componentes de crominancia indicadas por Cb y Cr. La componente Y de luminancia (o de forma abreviada, luma) representa el brillo o la intensidad del nivel de grises (por ejemplo, como en una imagen en escala de grises), mientras que las dos componentes Cb y Cr de crominancia (o de forma abreviada, croma) representan las componentes de cromaticidad o información de color. En consecuencia, una imagen en formato YCbCr comprende una matriz de muestras de luminancia de valores (Y) de muestras de luminancia y dos matrices de muestras de crominancia de valores (Cb y Cr) de crominancia. Las imágenes en formato RGB se pueden convertir o transformar en formato YCbCr y viceversa, el proceso también se conoce como transformación o conversión de color. Si una imagen es monocromática, la imagen puede comprender solo una matriz de muestras de luminancia. En consecuencia, una imagen puede ser, por ejemplo, una matriz de muestras de luma en formato monocromático o una matriz de muestras de luma y dos matrices correspondientes de muestras de croma en formato de color 4:2:0, 4:2:2 y 4:4:4.
Las realizaciones del codificador de vídeo 20 pueden comprender una unidad de división (no representada en la figura 2) configurada para dividir la imagen 17 en una pluralidad de bloques de imagen 203 (normalmente no superpuestos). Estos bloques también pueden denominarse bloques raíz, macrobloques (H.264/AVC) o bloques de árbol de codificación (Coding Tree Blocks, CTB) o unidades de árbol de codificación (Coding Tree Units, CTU) (H.265/HEVC y VVC). La unidad de división puede configurarse para usar el mismo tamaño del bloque para todas las imágenes de una secuencia de vídeo y la cuadrícula correspondiente que define el tamaño del bloque, o para cambiar el tamaño del bloque entre imágenes, subconjuntos o grupos de imágenes, y dividir cada imagen en los bloques correspondientes.
En otras realizaciones, el codificador de vídeo puede estar configurado para recibir directamente un bloque 203 de la imagen 17, por ejemplo uno, varios o todos los bloques que forman la imagen 17. El bloque de imagen 203 también puede denominarse bloque de imagen actual o bloque de imagen a codificar.
Al igual que la imagen 17, el bloque de imagen 203 nuevamente es o puede ser considerado como una matriz o conjunto bidimensional de muestras con valores de intensidad (valores de muestra), aunque de menor dimensión que la imagen 17. En otras palabras, el bloque 203 puede comprender, por ejemplo, una matriz de muestras (por ejemplo, una matriz de luma en el caso de una imagen 17 monocromática) o tres matrices de muestras (por ejemplo, una matriz de luma y dos de croma en el caso de una imagen 17 en color) o cualquier otro número y/o tipo de matrices, dependiendo del formato de color aplicado. El número de muestras en dirección horizontal y vertical (o eje) del bloque 203 definen el tamaño del bloque 203. En consecuencia, un bloque puede ser, por ejemplo, una matriz de MxN (M columnas por N filas) de muestras, o una matriz de MxN de coeficientes de transformación.
Las realizaciones del codificador de vídeo 20, tal como se muestra en la figura 2, pueden estar configuradas para codificar la imagen 17 bloque por bloque, es decir, la codificación y predicción se realiza por bloque 203.
Las realizaciones del codificador de vídeo 20 tal como se muestra en la figura 2 pueden configurarse además para dividir y/o codificar la imagen mediante el uso de segmentos (también denominados segmentos de vídeo), en donde una imagen puede dividirse o codificarse utilizando uno o más segmentos (normalmente no superpuestos), y cada segmento puede comprender uno o más bloques (por ejemplo, CTU). Las realizaciones del codificador de vídeo 20 tal como se muestra en la figura 2 pueden configurarse además para dividir y/o codificar la imagen mediante el uso de grupos de mosaicos (también denominados grupos de mosaicos de vídeo) y/o mosaicos (también denominados mosaicos de vídeo), en donde una imagen puede dividirse o codificarse utilizando uno o más grupos de mosaicos (normalmente no superpuestos), y cada grupo de mosaicos puede comprender, por ejemplo, uno o más bloques (por ejemplo, CTU) o uno o más mosaicos, en donde cada mosaico, por ejemplo, puede tener forma rectangular y puede comprender uno o más bloques (por ejemplo, CTU), por ejemplo, bloques completos o fraccionales.
Cálculo del residuo
La unidad de cálculo del residuo 204 puede estar configurada para calcular un bloque residual 205 (también denominado residuo 205) basándose en el bloque de imagen 203 y en un bloque de predicción 265 (más adelante se proporcionan más detalles sobre el bloque de predicción 265), por ejemplo, restando valores de muestra del bloque de predicción 265 de los valores de muestra del bloque de imagen 203, muestra por muestra (píxel por píxel) para obtener el bloque residual 205 en el dominio de la muestra.
Transformación
La unidad de procesamiento mediante transformada 206 está configurada para aplicar una transformada, por ejemplo, una transformada del coseno discreta (Discrete Cosine T ransform, DCT) o una transformada del seno discreta (Discrete Sine Transform, DST), en los valores de muestra del bloque residual 205 para obtener coeficientes de transformación 207 en un dominio de la transformación. Los coeficientes de transformación 207 también pueden denominarse coeficientes residuales de transformación y representan el bloque residual 205 en el dominio de la transformación.
La unidad de procesamiento mediante transformada 206 puede configurarse para aplicar aproximaciones enteras de DCT/DST, tales como las transformaciones especificadas para H.265/HEVC. En comparación con una transformada DCT ortogonal, tales aproximaciones de enteros generalmente se escalan mediante un determinado factor. Para preservar la norma del bloque residual que se procesa mediante transformadas directa e inversa, se aplican factores de escala adicionales como parte del proceso de transformación. Los factores de escala se eligen normalmente basándose en ciertas restricciones como que los factores de escala sean una potencia de dos para operaciones de desplazamiento, la profundidad de bits de los coeficientes de transformación, el equilibrio entre precisión y costes de implementación, etc. Los factores de escala específicos se especifican, por ejemplo, para la transformación inversa, por ejemplo, mediante la unidad de procesamiento mediante transformada inversa 212 (y la transformación inversa correspondiente, por ejemplo, mediante la unidad de procesamiento mediante transformada inversa 312 en el descodificador de vídeo 30) y los factores de escala correspondientes para la transformación directa, por ejemplo, mediante la unidad de procesamiento mediante transformada 206, en un codificador 20 se pueden especificar en consecuencia.
Las realizaciones del codificador de vídeo 20 (respectivamente, la unidad de procesamiento mediante transformada 206) pueden configurarse para generar parámetros de transformación, por ejemplo, un tipo de transformación o transformaciones, por ejemplo, directamente o codificadas o comprimidas a través de la unidad de codificación por entropía 270, de modo que, por ejemplo, el descodificador de vídeo 30 pueda recibir y usar los parámetros de transformación para la descodificación.
Cuantificación
La unidad de cuantificación 208 está configurada para cuantificar los coeficientes de transformación 207 para obtener coeficientes de transformación cuantificados 209, por ejemplo, aplicando cuantificación escalar o cuantificación vectorial. Los coeficientes cuantificados 209 también pueden denominarse coeficientes de transformación cuantificados 209 o coeficientes residuales cuantificados 209.
El proceso de cuantificación puede reducir la profundidad de bits asociada con algunos o todos los coeficientes de transformación 207. Por ejemplo, un coeficiente de transformación de n bits puede redondearse hacia abajo a un coeficiente de transformación de m bits durante la cuantificación, donde n es mayor que m. El grado de cuantificación puede modificarse ajustando un parámetro de cuantificación (Quantization Parameter, QP). Por ejemplo, para la cuantificación escalar, se pueden aplicar escalas diferentes para lograr una cuantificación más fina o más gruesa. Los tamaños de los escalones de cuantificación menores corresponden a una cuantificación más fina, mientras que los tamaños de los escalones de cuantificación más grandes corresponden a una cuantificación más gruesa. El tamaño de los escalones de cuantificación aplicables puede indicarse mediante un parámetro de cuantificación (QP). El parámetro de cuantificación puede ser, por ejemplo, un índice de un conjunto predefinido de tamaños de escalones de cuantificación aplicables. Por ejemplo, los parámetros de cuantificación pequeños pueden corresponder a una cuantificación fina (tamaños de escalones de cuantificación pequeños) y los parámetros de cuantificación grandes pueden corresponder a una cuantificación gruesa (tamaños de escalones de cuantificación grandes) o viceversa. La cuantificación puede incluir la división por un tamaño del escalón de cuantificación, y la descuantificación correspondiente o inversa, por ejemplo, mediante la cuantificación inversa 210, puede incluir la multiplicación por el tamaño del escalón de cuantificación. Las realizaciones según algunos estándares, por ejemplo, HEVC, pueden configurarse para usar un parámetro de cuantificación para determinar el tamaño del escalón de cuantificación. De manera general, el tamaño del escalón de cuantificación puede calcularse basándose en un parámetro de cuantificación usando una aproximación de punto fijo de una ecuación que incluye la división. Pueden introducirse factores de escala adicionales para la cuantificación y la descuantificación para restaurar la norma del bloque residual, que podría modificarse debido a la escala usada en la aproximación de punto fijo de la ecuación para el tamaño del escalón de cuantificación y el parámetro de cuantificación. En una implementación de ejemplo, se pueden combinar el escalado de la transformación inversa y la descuantificación. Alternativamente, pueden usarse tablas de cuantificación personalizadas y ser señaladas desde un codificador a un descodificador, por ejemplo, en un flujo de bits. La cuantificación es una operación con pérdida, en la que la pérdida aumenta al aumentar los tamaños de los escalones de cuantificación.
Las realizaciones del codificador de vídeo 20 (respectivamente, la unidad de cuantificación 208) pueden configurarse para emitir parámetros de cuantificación (QP), por ejemplo directamente o codificados a través de la unidad de codificación por entropía 270, de modo que, por ejemplo, el descodificador de vídeo 30 pueda recibir y aplicar los parámetros de cuantificación para la descodificación.
Cuantificación inversa
La unidad de cuantificación inversa 210 está configurada para aplicar la cuantificación inversa de la unidad de cuantificación 208 en los coeficientes cuantificados para obtener los coeficientes descuantificados 211, por ejemplo, aplicando el esquema de cuantificación inversa aplicado por la unidad de cuantificación 208 basándose en o usando el mismo tamaño del escalón de cuantificación que la unidad de cuantificación 208. Los coeficientes descuantificados 211 también pueden denominarse coeficientes residuales descuantificados 211, y se corresponden, aunque generalmente no son idénticos a los coeficientes de transformación debido a la pérdida por cuantificación, con los coeficientes de transformación 207.
Transformación inversa
La unidad de procesamiento mediante transformada inversa 212 está configurada para aplicar la transformada inversa de la transformada aplicada por la unidad de procesamiento mediante transformada 206, por ejemplo, una transformada del coseno discreta (DCT) inversa o una transformada del seno discreta (DST) inversa, para obtener un bloque residual reconstruido 213 (o coeficientes descuantificados 213 correspondientes) en el dominio de la muestra. El bloque residual reconstruido 213 también puede denominarse bloque de transformación 213.
Reconstrucción
La unidad de reconstrucción 214 (por ejemplo, agregador o sumador 214) está configurada para añadir el bloque de transformación 213 (es decir, el bloque residual reconstruido 213) al bloque de predicción 265 para obtener un bloque reconstruido 215 en el dominio de la muestra, por ejemplo, añadiendo, muestra por muestra, los valores de muestra del bloque residual reconstruido 213 y los valores de muestra del bloque de predicción 265.
Filtrado
La unidad de filtro de bucle 220 (o “filtro de bucle” 220 para abreviar), está configurada para filtrar el bloque reconstruido 215 para obtener un bloque filtrado 221, o en general, para filtrar muestras reconstruidas para obtener muestras filtradas. La unidad de filtro de bucle está configurada, por ejemplo, para suavizar las transiciones de píxeles o mejorar de otro modo la calidad del vídeo. La unidad de filtro de bucle 220 puede comprender uno o más filtros de bucle, tales como un filtro de desbloqueo, un filtro de desplazamiento adaptativo de muestra (Sample-Adaptive Offset, SAO) o uno o más filtros adicionales, por ejemplo, un filtro bilateral, un filtro de bucle adaptativo (Adaptive Loop Filter, ALF), un filtro de mejora de nitidez, un filtro de suavizado o un filtro colaborativo, o cualquier combinación de los mismos. Aunque la unidad de filtro de bucle 220 se muestra en la figura 2 como un filtro en bucle, en otras configuraciones, la unidad de filtro de bucle 220 puede implementarse como un filtro posterior al bucle. El bloque filtrado 221 también puede denominarse bloque filtrado reconstruido 221.
Las realizaciones del codificador de vídeo 20 (respectivamente unidad de filtro de bucle 220) puede configurarse para emitir parámetros de filtro de bucle (tales como información de desplazamiento adaptativo de la muestra), por ejemplo directamente o codificados a través de la unidad de codificación por entropía 270, de modo que, por ejemplo, un descodificador 30 pueda recibir y aplicar los mismos parámetros de filtro de bucle o respectivos filtros de bucle para la descodificación.
Memoria intermedia de imágenes descodificadas
la memoria intermedia de imágenes descodificadas (DPB) 230 puede ser una memoria que almacena imágenes de referencia o, en general, datos de imágenes de referencia, para codificar datos de vídeo mediante el codificador de vídeo 20. La DPB 230 puede estar formada por cualquiera de una variedad de dispositivos de memoria, tales como memoria dinámica de acceso aleatorio (Dynamic Random Access Memory, DRAM), incluida la DRAM síncrona (Synchronous DRAM, SDRAM), la<r>A<m>magnetorresistiva (Magnetoresistive RAM, MRAM), la RAM resistiva (Resistive RAM, RRAM) u otros tipos de dispositivos de memoria. La memoria intermedia de imágenes descodificadas (DPB) 230 está configurada para almacenar el bloque filtrado 221. La memoria intermedia de imágenes descodificadas 230 puede configurarse además para almacenar otros bloques previamente filtrados, por ejemplo, bloques 221 previamente reconstruidos y filtrados, de la misma imagen actual o de diferentes imágenes, por ejemplo, imágenes previamente reconstruidas, y puede proporcionar imágenes completas previamente reconstruidas, es decir, descodificadas (y los correspondientes bloques y muestras de referencia) y/o una imagen actual parcialmente reconstruida (y los correspondientes bloques y muestras de referencia), por ejemplo, para interpredicción. La memoria intermedia de imágenes descodificadas (DPB) 230 también puede configurarse para almacenar uno o más bloques reconstruidos sin filtrar 215, o en general muestras reconstruidas sin filtrar, por ejemplo si el bloque reconstruido 215 no es filtrado por la unidad de filtro de bucle 220, o cualquier otra versión procesada adicionalmente de los bloques o muestras reconstruidos.
Selección de modo (división y predicción)
La unidad de selección de modo 260 comprende una unidad de división 262, una unidad de interpredicción 244 y una unidad de intrapredicción 254, y está configurada para recibir u obtener datos de la imagen original, por ejemplo, un bloque original 203 (bloque actual 203 de la imagen actual 17), y datos de la imagen reconstruida, por ejemplo, muestras o bloques reconstruidos filtrados y/o sin filtrar de la misma imagen (actual) y/o de una o una pluralidad de imágenes descodificadas previamente, por ejemplo, de la memoria intermedia de imágenes descodificadas 230 o de otras memorias intermedias (por ejemplo, una memoria intermedia de línea, no mostrada). Los datos de imagen reconstruidos se utilizan como datos de imagen de referencia para la predicción, por ejemplo, interpredicción o intrapredicción, para obtener un bloque de predicción 265 o un predictor 265.
La unidad de selección de modo 260 puede configurarse para determinar o seleccionar una división para un modo de predicción de bloque actual (incluyendo ninguna división) y un modo de predicción (por ejemplo, un modo de intra o interpredicción) y generar un bloque de predicción 265 correspondiente, que se utiliza para el cálculo del bloque residual 205 y para la reconstrucción del bloque reconstruido 215.
Las realizaciones de la unidad de selección de modo 260 puede configurarse para seleccionar el modo de división y de predicción (por ejemplo, de aquellos soportados por o disponibles para la unidad de selección de modo 260), que proporcionen la mejor coincidencia o, en otras palabras, el residuo mínimo (residuo mínimo significa mejor compresión para transmisión o almacenamiento), o una sobrecarga de señalización mínima (sobrecarga de señalización mínima significa mejor compresión para transmisión o almacenamiento), o que considere o equilibre ambos. La unidad de selección de modo 260 puede configurarse para determinar el modo de división y predicción basándose en la optimización de la distorsión de velocidad (Rate Distortion Optimization, RDO), es decir, seleccionar el modo de predicción que proporcione una distorsión de velocidad mínima. Términos tales como “mejor”, “mínimo”, “óptimo”, etc. en este contexto no necesariamente se refieren a un “mejor”, “mínimo”, “óptimo”, etc. general, sino que también pueden referirse al cumplimiento de un criterio de terminación o selección como un valor que excede o cae por debajo de un umbral u otras restricciones que conducen potencialmente a una “selección por debajo del óptimo” pero que reducen la complejidad y el tiempo de procesamiento.
En otras palabras, la unidad de división 262 puede estar configurada para dividir el bloque 203 en divisiones de bloque o subbloques más pequeños (que forman nuevamente bloques), por ejemplo, de manera iterativa utilizando división de árbol cuádruple (Quad-Tree-partitioning, QT), división binaria (Binary partitioning, BT) o división de árbol triple (T riple-T ree-partitioning, TT) o cualquier combinación de las mismas, y para realizar, por ejemplo, la predicción para cada una de las divisiones de bloque o subbloques, en donde la selección de modo comprende la selección de la estructura de árbol del bloque particionado 203 y los modos de predicción se aplican a cada una de las divisiones de bloque o subbloques.
A continuación se explicará con más detalle la división (por ejemplo, mediante la unidad de división 260) y el procesamiento de predicción (mediante la unidad de interpredicción 244 y la unidad de intrapredicción 254) realizados por un codificador de vídeo 20 de ejemplo.
División
La unidad de división 262 puede dividir (o separar) un bloque actual 203 en divisiones más pequeñas, por ejemplo, bloques más pequeños de tamaño cuadrado o rectangular. Estos bloques más pequeños (que también pueden denominarse subbloques) pueden dividirse en divisiones aún más pequeñas. Esto también se denomina división de árbol o división de árbol jerárquica, en donde un bloque raíz, por ejemplo en el nivel de árbol raíz 0 (nivel de jerarquía 0, profundidad 0), se puede dividir de manera recursiva, por ejemplo, se puede dividir en dos o más bloques de un nivel de árbol inmediatamente inferior, por ejemplo, nodos en el nivel de árbol 1 (nivel de jerarquía 1, profundidad 1), en donde estos bloques se pueden volver a dividir en dos o más bloques de un nivel inmediatamente inferior, por ejemplo, nivel de árbol 2 (nivel de jerarquía 2, profundidad 2), etc., hasta que finalice la división, por ejemplo, porque se cumple un criterio de terminación, por ejemplo, se alcanza una profundidad de árbol máxima o un tamaño de bloque mínimo. Los bloques que no están divididos en más partes también se denominan bloques hoja o nodos hoja del árbol. Un árbol que utiliza divisiones en dos se denomina árbol binario (BT), un árbol que utiliza divisiones en tres divisiones se denomina árbol ternario (TT) y un árbol que utiliza divisiones en cuatro divisiones se denomina árbol cuádruple (QT).
Tal como se mencionó anteriormente, el término “bloque” tal como se utiliza aquí puede ser una parte, en particular una parte cuadrada o rectangular, de una imagen. Con referencia, por ejemplo, a HEVC y VVC, el bloque puede ser o corresponder a una unidad de árbol de codificación (CTU), una unidad de codificación (Coding Unit, CU), una unidad de predicción (Prediction Unit, PU) y una unidad de transformación (Transform Unit, TU) y/o a los bloques correspondientes, por ejemplo, un bloque de árbol de codificación (Coding Tree Block, CTB), un bloque de codificación (Coding Block, c B), un bloque de transformación (Transform block, TB) o un bloque de predicción (Prediction Block, PB).
Por ejemplo, una unidad de árbol de codificación (CTU) puede ser o comprender un CTB de muestras de luminancia, dos CTB correspondientes de muestras de croma de una imagen que tiene tres matrices de muestras, o un CTB de muestras de una imagen monocromática o una imagen que está codificada utilizando tres planos de color separados y estructuras de sintaxis utilizadas para codificar las muestras. En consecuencia, un bloque de árbol de codificación (CTB) puede ser un bloque de NxN de muestras para algún valor de N tal que la división de un componente en CTB es una división. Una unidad de codificación (CU) puede ser o comprender un bloque de codificación de muestras de luma, dos bloques de codificación correspondientes de muestras de croma de una imagen que tiene tres matrices de muestras, o un bloque de codificación de muestras de una imagen monocromática o una imagen que se codifica utilizando tres planos de color separados y estructuras de sintaxis utilizadas para codificar las muestras. En consecuencia, un bloque de codificación (CB) puede ser un bloque de MxN de muestras para algunos valores de M y N, de tal manera que la división de un CTB en bloques de codificación es una división.
En realizaciones, por ejemplo, según HEVC, una unidad de árbol de codificación (CTU) se puede dividir en CU mediante el uso de una estructura de árbol cuádruple denominada árbol de codificación. La decisión de codificar un área de la imagen usando predicción interimagen (temporal) o intraimagen (espacial) se toma al nivel de la CU. Cada CU se puede dividir en una, dos o cuatro PU, según el tipo de división de PU. Dentro de una PU, se aplica el mismo proceso de predicción, y la información relevante se transmite al descodificador por cada PU. Después de obtener el bloque residual aplicando el proceso de predicción basándose en el tipo de división de PU, una CU se puede dividir en unidades de transformación (TU) según otra estructura de árbol cuádruple similar al árbol de codificación de la CU.
En realizaciones, por ejemplo, según el último estándar de codificación de vídeo actualmente en desarrollo, al que se hace referencia como Codificación de Video Versátil (VVC), se utiliza, por ejemplo, una división combinada de árbol cuádruple y árbol binario (QTBT) para dividir un bloque de codificación. En la estructura de bloques QTBT, una CU puede tener una forma cuadrada o rectangular. Por ejemplo, una unidad de árbol de codificación (CTU) se divide primero mediante una estructura de árbol cuádruple. Los nodos de hoja de árbol cuádruple se dividen además mediante una estructura de árbol binario o de árbol ternario (o triple). Los nodos de hoja del árbol de división se denominan unidades de codificación (CU), y esa segmentación se usa para el procesamiento de predicción y transformación sin ninguna otra división. Esto significa que la CU, la PU y la TU tienen el mismo tamaño del bloque en la estructura de bloques de codificación QTB<t>. En paralelo, también se propuso usar la división múltiple, por ejemplo, la división de árbol triple junto con la estructura de bloques QTBT.
En un ejemplo, La unidad de selección de modo 260 del codificador de vídeo 20 puede configurarse para realizar cualquier combinación de las técnicas de división descritas en este documento.
Tal como se ha descrito anteriormente, el codificador de vídeo 20 está configurado para determinar o seleccionar el modo de predicción mejor u óptimo de entre un conjunto de modos de predicción (por ejemplo, predeterminados). El conjunto de modos de predicción puede comprender, por ejemplo, modos de intrapredicción y/o modos de interpredicción.
Intrapredicción
El conjunto de modos de intrapredicción puede comprender 35 modos de intrapredicción diferentes, por ejemplo, modos no direccionales como el modo DC (o medio) y el modo planar, o modos direccionales, por ejemplo, tal como se define en HEVC, o pueden comprender 67 modos de intrapredicción diferentes, por ejemplo, modos no direccionales como el modo DC (o medio) y el modo planar, o modos direccionales, por ejemplo, tal como se define para VVC.
La unidad de intrapredicción 254 está configurada para utilizar muestras reconstruidas de bloques vecinos de la misma imagen actual para generar un bloque de intrapredicción 265 según un modo de intrapredicción del conjunto de modos de intrapredicción.
La unidad de intrapredicción 254 (o en general la unidad de selección de modo 260) está configurada además para emitir parámetros de intrapredicción (o en general información indicativa del modo de intrapredicción seleccionado para el bloque) hacia la unidad de codificación por entropía 270 en forma de elementos de sintaxis 266 para su inclusión en los datos de imagen codificados 21, de modo que, por ejemplo, el descodificador de vídeo 30 pueda recibir y utilizar los parámetros de predicción para la descodificación.
Interpredicción
El conjunto de (o posibles) modos de interpredicción depende de las imágenes de referencia disponibles (es decir, imágenes anteriores al menos parcialmente descodificadas, por ejemplo, almacenadas en DBP 230) y de otros parámetros de interpredicción, por ejemplo, si se usa la imagen de referencia completa o solo una parte, por ejemplo, un área de ventana de búsqueda alrededor del área del bloque actual de la imagen de referencia para buscar un bloque de referencia que coincida mejor, y/o por ejemplo, si se aplica la interpolación de píxeles, por ejemplo, interpolación de medio/semipel y/o de cuarto de pel, o no.
Además de los modos de predicción anteriores, se puede aplicar el modo de salto y/o el modo directo.
La unidad de interpredicción 244 puede incluir una unidad de estimación de movimiento (Motion Estimation, ME) y una unidad de compensación de movimiento (Motion Compensation, MC) (ninguna de ellas mostradas en la figura 2). La unidad de estimación de movimiento puede ser configurada para recibir u obtener el bloque de imagen 203 (bloque de imagen 203 actual de la imagen actual 17) y una imagen descodificada 231, o al menos uno o una pluralidad de bloques previamente reconstruidos, por ejemplo, bloques reconstruidos de uno o una pluralidad de otras/diferentes imágenes descodificadas 231 previamente, para estimación de movimiento. Por ejemplo, una secuencia de vídeo puede comprender la imagen actual y las imágenes descodificadas 231 previamente o, en otras palabras, la imagen actual y las imágenes descodificadas 231 previamente pueden ser parte o formar una secuencia de imágenes que forman una secuencia de vídeo.
El codificador 20 puede, por ejemplo, configurarse para seleccionar un bloque de referencia de una pluralidad de bloques de referencia de las mismas o diferentes imágenes de la pluralidad de otras imágenes, y proporcionar una imagen de referencia (o índice de imagen de referencia) y/o un desplazamiento (desplazamiento espacial) entre la posición (coordenadas x, y) del bloque de referencia y la posición del bloque actual, como parámetros de interpredicción para la unidad de estimación de movimiento. Este desplazamiento 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 para realizar una interpredicción basándose en o usando el parámetro de interpredicción para obtener un bloque de interpredicción 265. La compensación de movimiento, realizada por la unidad de compensación de movimiento, puede implicar obtener o generar el bloque de predicción basándose en el vector/bloque de movimiento determinado mediante estimación de movimiento, posiblemente realizando interpolaciones con precisión de subpíxel. El filtrado de interpolación puede generar muestras de píxeles adicionales a partir de muestras de píxeles conocidas, aumentando así potencialmente el número de bloques de predicción candidatos que pueden usarse para codificar un bloque de imagen. Tras recibir el vector de movimiento para la PU del bloque de imagen actual, la unidad de compensación de movimiento puede ubicar el bloque de predicción al que apunta el vector de movimiento en una de las listas de imágenes de referencia.
La unidad de compensación de movimiento también puede generar elementos de sintaxis asociados con los bloques y segmentos de vídeo para su uso por el descodificador de vídeo 30 en la descodificación de los bloques de imágenes del segmento de vídeo. Además o como alternativa a los segmentos y los respectivos elementos de sintaxis, se pueden generar o utilizar grupos de mosaicos y/o mosaicos y los respectivos elementos de sintaxis.
Codificación por entropía
La unidad de codificación por entropía 270 está configurada para aplicar, por ejemplo, un algoritmo o esquema de codificación de entropía (por ejemplo, un esquema de codificación de longitud variable (Variable Length Coding, VLC), un esquema de VLC adaptativo al contexto (Context Adaptive VLC Scheme, CAVLC), un esquema de codificación aritmética, una binarización, una codificación aritmética binaria adaptativa al contexto (CABAC), codificación aritmética binaria adaptativa al contexto basada en sintaxis (SBAC), codificación por entropía de división de intervalo de probabilidad (Probability Interval Partitioning Entropy, PIPE) u otra metodología o técnica de codificación por entropía) u obtención (sin compresión) en los coeficientes cuantificados 209, parámetros de interpredicción, parámetros de intrapredicción, parámetros de filtro de bucle y/u otros elementos de sintaxis para obtener datos de imagen codificados 21 que se pueden emitir a través de la salida 272, por ejemplo, en forma de un flujo de bits codificado 21, de modo que, por ejemplo, el descodificador de vídeo 30 pueda recibir y utilizar los parámetros para la descodificación. El flujo de bits 21 codificado puede transmitirse al descodificador de vídeo 30, o ser archivado para su posterior transmisión o recuperación por el descodificador de vídeo 30.
Se pueden usar otras variaciones estructurales del codificador de vídeo 20 para codificar el flujo de vídeo. Por ejemplo, un codificador 20 no basado en transformación puede cuantificar la señal residual directamente sin la unidad de procesamiento mediante transformada 206 para ciertos bloques o fotogramas. En otra implementación, un codificador 20 puede tener la unidad de cuantificación 208 y la unidad de cuantificación inversa 210 combinadas en una sola unidad.
Descodificador y método de descodificación
La figura 3 muestra un ejemplo de un descodificador de vídeo 30 que está configurado para implementar las técnicas de esta presente solicitud. El descodificador de vídeo 30 está configurado para recibir datos de imagen codificados 21 (por ejemplo, un flujo de bits codificado 21), por ejemplo, codificados mediante el codificador 20, para obtener una imagen descodificada 331. Los datos de imagen o flujo de bits codificados comprenden información para descodificar los datos de imagen codificados, por ejemplo, datos que representan bloques de imagen de un segmento de vídeo codificado (y/o grupos de mosaicos o mosaicos) y elementos de sintaxis asociados.
En el ejemplo de la figura 3, el descodificador 30 comprende una unidad de descodificación por entropía 304, una unidad de cuantificación inversa 310, una unidad de procesamiento mediante transformada inversa 312, una unidad de reconstrucción 314 (por ejemplo, un sumador 314), un filtro de bucle 320, una memoria intermedia de imágenes descodificadas (DBP) 330, una unidad de aplicación de modo 360, una unidad de interpredicción 344 y una unidad de intrapredicción 354. La unidad de interpredicción 344 puede ser o incluir una unidad de compensación de movimiento. El descodificador de vídeo 30 puede, en algunos ejemplos, realizar una etapa de descodificación en general recíproca a la etapa de codificación descrita con respecto al codificador de vídeo 100 de la figura 2.
Tal como se explicó con respecto al codificador 20, la unidad de cuantificación inversa 210, la unidad de procesamiento mediante transformada inversa 212, la unidad de reconstrucción 214, el filtro de bucle 220, la memoria intermedia de imágenes descodificadas (DPB) 230, la unidad de interpredicción 344 y la unidad de intrapredicción 354 también se considera que forman el “descodificador incorporado” del codificador de vídeo 20. En consecuencia, la unidad de cuantificación inversa 310 puede ser idéntica en función a la unidad de cuantificación inversa 110, la unidad de procesamiento mediante transformada inversa 312 puede ser idéntica en función a la unidad de procesamiento mediante transformada inversa 212, la unidad de reconstrucción 314 puede ser idéntica en función a la unidad de reconstrucción 214, el filtro de bucle 320 puede ser idéntico en función al filtro de bucle 220, y la memoria intermedia de imágenes descodificadas 330 puede ser idéntica en función a la memoria intermedia de imágenes descodificadas 230. Por lo tanto, las explicaciones proporcionadas para las respectivas unidades y funciones del codificador de vídeo 20 se aplican en consecuencia a las respectivas unidades y funciones del descodificador de vídeo 30.
Descodificación por entropía
La unidad de descodificación por entropía 304 está configurada para analizar el flujo de bits 21 (o en general los datos de imagen codificados 21) y realizar, por ejemplo, descodificación por entropía a los datos de imagen codificados 21 para obtener, por ejemplo, coeficientes cuantificados 309 y/o parámetros de codificación descodificados (no mostrados en la figura 3), por ejemplo cualquiera o todos los parámetros de interpredicción (por ejemplo, índice de imagen de referencia y vector de movimiento), parámetro de intrapredicción (por ejemplo, modo o índice de intrapredicción), parámetros de transformación, parámetros de cuantificación, parámetros de filtro de bucle y/u otros elementos de sintaxis. La unidad de descodificación por entropía 304 puede ser configurada para aplicar los algoritmos o esquemas de descodificación correspondientes a los esquemas de codificación tal como se describe con respecto a la unidad de codificación por entropía 270 del codificador 20. La unidad de descodificación por entropía 304 está configurada además para proporcionar parámetros de interpredicción, parámetros de intrapredicción y/u otros elementos de sintaxis, a la unidad de aplicación de modo 360, y otros parámetros, a otras unidades del descodificador 30. El descodificador de vídeo 30 puede recibir los elementos de sintaxis al nivel de segmento de vídeo y/o al nivel de bloque de vídeo. Además o como alternativa a los segmentos y los respectivos elementos de sintaxis, se pueden recibir o utilizar grupos de mosaicos y/o mosaicos y los respectivos elementos de sintaxis.
Cuantificación inversa
La unidad de cuantificación inversa 310 puede estar configurada para recibir parámetros de cuantificación (QP) (o en general información relacionada con la cuantificación inversa) y coeficientes cuantificados de los datos de imagen codificados 21 (por ejemplo, mediante análisis sintáctico y/o descodificación, por ejemplo, mediante la unidad de descodificación por entropía 304) y para aplicar, basándose en los parámetros de cuantificación, una cuantificación inversa sobre los coeficientes cuantificados descodificados 309 para obtener coeficientes descuantificados 311, que también pueden denominarse coeficientes de transformación 311. El proceso de cuantificación inversa puede incluir el uso de un parámetro de cuantificación calculado por el codificador de vídeo 20 para cada bloque de vídeo en el segmento de vídeo, para determinar un grado de cuantificación y, asimismo, un grado de cuantificación inversa, que debe aplicarse.
Transformación inversa
La unidad de procesamiento mediante transformada inversa 312 puede estar configurada para recibir coeficientes descuantificados 311, también denominados coeficientes de transformación 311, y para aplicar una transformación a los coeficientes descuantificados 311 para obtener bloques residuales reconstruidos 213 en el dominio de la muestra. Los bloques residuales reconstruidos 213 también pueden denominarse bloques de transformación 313. La transformada puede ser una transformada inversa, por ejemplo, una DCT inversa, una DST inversa, una transformada entera inversa o un proceso de transformación inversa conceptualmente similar. La unidad de procesamiento mediante transformada inversa 312 puede configurarse además para recibir parámetros de transformación o información correspondiente de los datos de imagen codificados 21 (por ejemplo, mediante análisis sintáctico y/o descodificación, por ejemplo, mediante la unidad de descodificación por entropía 304) para determinar la transformación que se aplicará a los coeficientes descuantificados 311.
Reconstrucción
La unidad de reconstrucción 314 (por ejemplo, agregador o sumador 314) puede estar configurada para agregar el bloque residual reconstruido 313 al bloque de predicción 365 para obtener un bloque reconstruido 315 en el dominio de la muestra, por ejemplo, agregando los valores de muestra del bloque residual reconstruido 313 y los valores de muestra del bloque de predicción 365.
Filtrado
La unidad de filtro de bucle 320 (ya sea en el bucle de codificación o después del bucle de codificación) está configurada para filtrar el bloque reconstruido 315 para obtener un bloque filtrado 321, por ejemplo para suavizar las transiciones de píxeles o mejorar de otro modo la calidad del vídeo. La unidad de filtro de bucle 320 puede comprender uno o más filtros de bucle, tales como un filtro de desbloqueo, un filtro de desplazamiento adaptativo de muestra (SAO) o uno o más filtros adicionales, por ejemplo, un filtro bilateral, un filtro de bucle adaptativo (ALF), un filtro de mejora de la nitidez, un filtro de suavizado o un filtro colaborativo, o cualquier combinación de los mismos. Aunque la unidad de filtro de bucle 320 se muestra en la figura 3 como un filtro de bucle, en otras configuraciones, la unidad de filtro de bucle 320 puede implementarse como un filtro posterior al bucle.
Memoria intermedia de imágenes descodificadas
Los bloques de vídeo descodificados 321 de una imagen se almacenan luego en la memoria intermedia de imágenes descodificadas 330, que almacena las imágenes descodificadas 331 como imágenes de referencia para la compensación de movimiento posterior para otras imágenes y/o para la salida o visualización respectivamente.
El descodificador 30 está configurado para emitir la imagen descodificada 311, por ejemplo, a través de la salida 312, para presentación o visualización a un usuario.
Predicción
La unidad de interpredicción 344 puede ser idéntica a la unidad de interpredicción 244 (en particular a la unidad de compensación de movimiento) y la unidad de intrapredicción 354 puede ser idéntica a la unidad de interpredicción 254, en función, y realiza decisiones de separación o división y predicción basadas en los parámetros de división y/o predicción o en la información respectiva recibida de los datos de imagen codificados 21 (por ejemplo, mediante análisis sintáctico y/o descodificación, por ejemplo, mediante la unidad de descodificación por entropía 304). La unidad de aplicación de modo 360 puede configurarse para realizar la predicción (intra o inter predicción) por bloque basándose en imágenes reconstruidas, bloques o muestras respectivas (filtradas o sin filtrar) para obtener el bloque de predicción 365.
Cuando el segmento de vídeo se codifica como un segmento intracodificado (I), la unidad de intrapredicción 354 de la unidad de aplicación de modo 360 es configurada para generar el bloque de predicción 365 para un bloque de imagen del segmento de vídeo actual basándose en un modo de intrapredicción señalizado y en datos de bloques previamente descodificados de la imagen actual. Cuando el fotograma de vídeo se codifica como un segmento intercodificado (es decir, B o P), la unidad de interpredicción 344 (por ejemplo, la unidad de compensación de movimiento) de la unidad de aplicación de modo 360 es configurada para producir bloques de predicción 365 para un bloque de vídeo del segmento de vídeo actual basándose en los vectores de movimiento y en otros elementos de sintaxis recibidos desde la unidad de descodificación por entropía 304. Para la interpredicción, los bloques de predicción pueden generarse a partir de una de las imágenes de referencia dentro de una de las listas de imágenes de referencia. El descodificador de vídeo 30 puede construir las listas de fotogramas de referencia, Lista 0 y Lista 1, usando técnicas de construcción predeterminadas basadas en imágenes de referencia almacenadas en la DPB 330. Lo mismo o similar se puede aplicar para o por realizaciones que utilizan grupos de mosaicos (por ejemplo, grupos de mosaicos de vídeo) y/o mosaicos (por ejemplo, mosaicos de vídeo) además o como alternativa a segmentos (por ejemplo, segmentos de vídeo); por ejemplo, un vídeo se puede codificar utilizando grupos de mosaicos y/o mosaicos I, P o B.
La unidad de aplicación de modo 360 está configurada para determinar la información de predicción para un bloque de vídeo del segmento de vídeo actual analizando sintácticamente los vectores de movimiento o información relacionada y otros elementos de sintaxis, y utiliza la información de predicción para producir los bloques de predicción para el bloque de vídeo actual que se está descodificando. Por ejemplo, la unidad de aplicación de modo 360 utiliza algunos de los elementos de sintaxis recibidos para determinar un modo de predicción (por ejemplo, intra o interpredicción) utilizado para codificar los bloques de vídeo del segmento de vídeo, un tipo de segmento de interpredicción (por ejemplo, segmento B, segmento P o segmento GPB), información de construcción para una o más de las listas de imágenes de referencia para el segmento, vectores de movimiento para cada bloque de vídeo intercodificado del segmento, estado de interpredicción para cada bloque de vídeo intercodificado del segmento, y otra información para descodificar los bloques de vídeo en el segmento de vídeo actual. Lo mismo o similar se puede aplicar para o mediante realizaciones que utilizan grupos de mosaicos (por ejemplo, grupos de mosaicos de vídeo) y/o mosaicos (por ejemplo, mosaicos de vídeo) además o como alternativa a segmentos (por ejemplo, segmentos de vídeo); por ejemplo, un vídeo se puede codificar utilizando grupos de mosaicos y/o mosaicos I, P o B.
Las realizaciones del codificador de vídeo 30 tal como se muestra en la figura 3 pueden configurarse además para dividir y/o descodificar la imagen mediante el uso de segmentos (también denominados segmentos de vídeo), en donde una imagen puede dividirse o codificarse utilizando uno o más segmentos (normalmente no superpuestos), y cada segmento puede comprender uno o más bloques (por ejemplo, CTU).
Las realizaciones del codificador de vídeo 30 tal como se muestra en la figura 3 pueden configurarse además para dividir y/o descodificar la imagen mediante el uso de grupos de mosaicos (también denominados grupos de mosaicos de vídeo) y/o mosaicos (también denominados mosaicos de vídeo), en donde una imagen puede dividirse o codificarse utilizando uno o más grupos de mosaicos (normalmente no superpuestos), y cada grupo de mosaicos puede comprender, por ejemplo, uno o más bloques (por ejemplo, CTU) o uno o más mosaicos, en donde cada mosaico, por ejemplo, puede tener forma rectangular y puede comprender uno o más bloques (por ejemplo, CTU), por ejemplo, bloques completos o fraccionales.
Se pueden usar otras variaciones del descodificador de vídeo 30 para descodificar los datos de imagen codificados 21. Por ejemplo, el descodificador 30 puede producir el flujo de vídeo de salida sin la unidad de filtrado de bucle 320. Por ejemplo, un codificador 30 no basado en transformación puede cuantificar de manera inversa la señal residual directamente sin la unidad de procesamiento mediante transformada inversa 312 para ciertos bloques o fotogramas. En otra implementación, el descodificador de vídeo 30 puede tener la unidad de cuantificación inversa 310 y la unidad de procesamiento mediante transformada inversa 312 combinadas en una sola unidad.
Debe entenderse que, en el codificador 20 y el descodificador 30, un resultado de procesamiento de una etapa actual puede ser procesado aún más y, a continuación, ser enviado a la siguiente etapa. Por ejemplo, después del filtrado de interpolación, la obtención del vector de movimiento o el filtrado de bucle, se puede realizar una operación adicional, tal como recorte o desplazamiento, sobre el resultado del procesamiento del filtrado de interpolación, la obtención del vector de movimiento o el filtrado de bucle.
La figura 4 es un diagrama esquemático de un dispositivo de codificación de vídeo 400 según una realización de la divulgación. El dispositivo de codificación de vídeo 400 es adecuado para implementar las realizaciones descritas tal como se describen en la presente memoria. En una realización, el dispositivo de codificación de vídeo 400 puede ser un descodificador tal como el descodificador de vídeo 30 de la figura 1A, o un codificador tal como el codificador de vídeo 20 de la figura 1A.
El dispositivo de codificación de vídeo 400 comprende puertos de entrada 410 (o puertos de entrada 410) y unidades de recepción (Rx) 420 para recibir datos; un procesador, unidad lógica o unidad central de procesamiento (CPU) 430 para procesar los datos; unidades de transmisión (Tx) 440 y puertos de salida 450 (o puertos de salida 450) para transmitir los datos; y una memoria 460 para almacenar los datos. El dispositivo de codificación de vídeo 400 también puede comprender componentes de óptico a eléctrico (OE) y componentes de eléctrico a óptico (EO) acoplados a los puertos de entrada 410, unidades de recepción 420, unidades de transmisión 440 y puertos de salida 450 para la salida o entrada de señales ópticas o eléctricas.
El procesador 430 está implementado mediante hardware y software. El procesador 430 puede implementarse como uno o más chips de CPU, núcleos (por ejemplo, como un procesador multinúcleo), FPGA, ASIC y DSP. El procesador 430 está en comunicación con el puerto de entrada 410, la unidad 420 de recepción, la unidad 440 de transmisión, los puertos 450 de salida y la memoria 460. El procesador 430 comprende un módulo 470 de codificación. El módulo 470 de codificación implementa las realizaciones descritas anteriormente. Por ejemplo, el módulo 470 de codificación implementa, procesa, prepara o proporciona las diversas operaciones de codificación. La inclusión del módulo 470 de codificación por lo tanto proporciona una mejora sustancial a la funcionalidad del dispositivo 400 de codificación de vídeo y efectúa una transformación del dispositivo 400 de codificación de vídeo a un estado diferente. De manera alternativa, el módulo de codificación 470 se implementa como instrucciones almacenadas en la memoria 460 y ejecutadas por el procesador 430.
La memoria 460 puede comprender uno o más discos, unidades de cinta y unidades de estado sólido, y puede ser usada como un dispositivo de almacenamiento de datos en exceso (overflow), para almacenar programas cuando tales programas se seleccionan para su ejecución, y para almacenar instrucciones y datos que se leen durante la ejecución del programa. La memoria 460 puede ser, por ejemplo, volátil o no volátil, y puede ser una memoria de solo lectura (Read Only Memory, ROM), una memoria de acceso aleatorio (Random Access Memory, RAM), una memoria ternaria de contenido direccionable (Ternary Content-Addressable Memory, TCAM), y/o una memoria estática de acceso aleatorio (Static RAM, SRAM).
La figura 5 es un diagrama de bloques simplificado de un aparato 500 que se puede usar como uno o ambos del dispositivo de origen 12 y el dispositivo de destino 14 de la figura 1, según una realización ejemplar.
Un procesador 502 en el aparato 500 puede ser una unidad central de procesamiento. Alternativamente, el procesador 502 puede ser cualquier otro tipo de dispositivo, o múltiples dispositivos, capaces de manipular o procesar información existente en la actualidad o desarrollada en el futuro. Aunque las implementaciones dadas a conocer se pueden poner en práctica con un solo procesador tal como se muestra, por ejemplo, el procesador 502, se pueden lograr ventajas en velocidad y eficiencia usando más de un procesador.
Una memoria 504 en el aparato 500 puede ser un dispositivo de memoria de solo lectura (ROM) o un dispositivo de memoria de acceso aleatorio (RAM), en una implementación. Cualquier otro tipo adecuado de dispositivo de almacenamiento se puede usar como memoria 504. La memoria 504 puede incluir código y datos 506 a los que accede el procesador 502 usando un bus 512. La memoria 504 puede incluir además un sistema operativo 508 y programas 510 de aplicación, incluyendo los programas de aplicación 510 al menos un programa que permita al procesador 502 realizar los métodos descritos aquí. Por ejemplo, los programas de aplicación 510 pueden incluir las aplicaciones 1 a N, que además incluyen una aplicación de codificación de vídeo que realiza los métodos descritos aquí.
El aparato 500 también puede incluir uno o más dispositivos de salida, tal como una pantalla 518. La pantalla 518 puede ser, en un ejemplo, una pantalla sensible al tacto que combina una pantalla con un elemento sensible al tacto que puede funcionar para detectar entradas táctiles. La pantalla 518 se puede acoplar al procesador 502 a través del bus 512.
Aunque representado aquí como un solo bus, el bus 512 del aparato 500 puede estar compuesto por múltiples buses. Además, el almacenamiento secundario 514 se puede acoplar directamente a los otros componentes del aparato 500 o se puede acceder a él a través de una red, y puede comprender una sola unidad integrada, tal como una tarjeta de memoria, o múltiples unidades, tales como varias tarjetas de memoria. Por lo tanto, el aparato 500 puede implementarse en una amplia variedad de configuraciones.
Los códecs de vídeo modernos normalmente incluyen diferentes modos de división de la unidad de transformación, entre los que se encuentran la transformación de subbloques para interbloques, el modo de codificación de subdivisiones intra para intrabloques y la división de la unidad de transformación para satisfacer la restricción del tamaño máximo de transformación. Además, la unidad de transformación se puede codificar directamente sin división adicional. En etapas posteriores, cada unidad de transformación o subtransformación incluye un conjunto de indicadores cbf que especifican si hay un residuo para el bloque actual en cada componente de color correspondiente. Se debe tener en cuenta que los indicadores cbf tienen cierta redundancia, que se puede utilizar mediante características específicas de cada división de unidad de transformación determinada.
Las realizaciones de la invención proponen un modo general unificado de eliminación de redundancia en la señalización mediante indicadores cbf.
En la presente divulgación, en una primera realización, si no se utiliza la división de la unidad de transformación, entonces tu_cbf_luma se puede obtener del indicador cu_cbf si está ajustado a 1 y dos indicadores de croma de la TU actual están ajustados a 0. En este caso, tu_cbf_luma se ajusta a 1 y no se señaliza. De lo contrario, la señalización de tu_cbf_luma se realiza en modo normal. En la presente divulgación, el indicador cu_cbf igual a 1 especifica que una estructura de sintaxis transform_tree está presente para la unidad de codificación actual, si el indicador cu_cbf igual a 0 especifica que la estructura de sintaxis transform_tree no está presente para la unidad de codificación actual.
En una segunda realización, si la unidad de transformación es separada por SBT en dos subunidades de transformación y una de ellas puede incluir residuos, que son controlados por los indicadores tu_cbf_luma, tu_cbf_cb y tu_cbf_cr, entonces tu_cbf_luma se puede obtener del indicador cu_cbf según la siguiente regla. Si el indicador cu_cbf se ajusta a 1 y dos indicadores de croma de la TU actual se ajustan a 0, entonces tu_cbf_luma se ajusta a 1 y no se señaliza. De lo contrario, la señalización de tu_cbf_luma se realiza en modo normal.
En una tercera realización, si la unidad de transformación es separada en subunidades de transformación para satisfacer la restricción de tamaño máximo de la unidad de transformación, entonces el indicador cbf de luma para la última subunidad de transformación en la unidad de transformación se obtiene según la siguiente condición. Si el indicador cu_cbf es 1 y todos los tu_cbf_luma, tu_cbf_cb y tu cbf_cr son 0 para todas las subunidades de transformación codificadas previamente en la unidad de transformación actual, y tu_cbf_cb y tu_cbf_cr de la unidad de subtransformación actual son 0, entonces tu_cbf_luma se ajusta a 1 y no se señaliza. De lo contrario, la señalización de tu_cbf_luma se realiza en modo normal.
Las realizaciones de la presente divulgación permiten mejorar la eficiencia de la codificación y proponen un mecanismo unificado de señalización mediante indicadores cbf. Por lo tanto, se propone un mecanismo unificado de señalización de los indicadores cbf.
Las relaciones entre los indicadores cbf y las herramientas de división de subunidades de transformación permiten eliminar la redundancia en el flujo de bits.
En otras palabras, las realizaciones de la presente divulgación proponen una modificación de la especificación VVC 4 y el SW VTM 4.0.1 destinada a eliminar la inconsistencia en parte de la señalización de los indicadores CBF entre ellos. Un primer aspecto propone eliminar la señalización CBF de croma jerárquica basándose en la profundidad de la Unidad de Transformación del SW VTM, que no se presenta en la especificación; e incluir en la especificación métodos de obtención de indicadores cbf de luma faltantes para TU normales y TU de SBT basándose en indicadores CBF de croma, que se presentan en el SW. Se propone un segundo aspecto además del primero, y supone un diseño unificado de todos los métodos de obtención de indicadores cbf de luma existentes.
Existen cuatro posibilidades de representación de TU en VVC 4:
1. La TU normal es igual al tamaño de la CU (no separada);
2. división de las TU en SBT;
3. división de las TU en ISP;
4. división de las TU causada por la restricción del tamaño de transformación máximo. Las siguientes tablas demuestran estas posibilidades.
T l 1 - T l in xi r n f rm r r l r n f rm i n VV 4
Tabla 2 - Tabla de sintaxis de la unidad de transformación VVC 4
transform_unit( x0, y0, tbWidth, tbHeight, treeType, subTuIndex ) { Descriptor
si( treeType = = SINGLE_TREE || treeType = = DUAL_TREE_LUMA) {
si( (IntraSubPartitionsSplitType = = ISP_NO_SPLIT && !( cu_sbt_flag && (( subTuIndex = = 0
&& cu_sbt_pos_flag) || ( subTuIndex = = 1 && !cu_sbt_pos_flag)))) || ( IntraSubPartitionsSplitType
!= ISP_NO_SPLIT && ( subTuIndex < NumlntraSubPartitions - 1 || !InferTuCbfLuma) ) )
tu_cbf_luma[ x0][y0] ae(v)
si (IntraSubPartitionsSplitType != ISP_NO_SPLIT )
InferTuCbfLuma = InferTuCbfLuma && !tu_cbf_luma[ x0 ][ y0 ]
}
si( (treeType = = SINGLE TREE || treeType = = DUAL_TREE_CHROMA) {
si( (IntraSubPartitionsSplitType = = ISP_NO_SPLIT && !( cu_sbt_flag && (( subTuIndex = = 0
&& cu_sbt_pos_flag) || ( subTuIndex = = 1 && !cu_sbt_pos_flag)))) || ( IntraSubPartitionsSplitType
!= ISP _NO_SPLIT && ( subTuIndex = = NumlntraSubPartitions - 1 ) ) ) {
tu_cbf_cb[ x0][y0] ae(v)
tu_cbf_cr[ x0][y0] ae(v)
}
}
}
Se puede observar que según la Tabla 1 y la Tabla 2, la señalización mediante cbf de luma y croma se realiza de manera independiente una de la otra y no hay dependencias jerárquicas para los indicadores CBF de croma.
Desde la perspectiva del SW, VTM4.0.1 incluye ambos aspectos mencionados anteriormente.
El método de señalización mediante CBF de croma jerárquicos se probó en VTM4.0.1 y demuestra un impacto despreciable en la eficiencia de la codificación. Por otra parte, el soporte de esta característica requiere una lógica adicional no trivial tanto en el software como en la especificación.
En una realización, se propone eliminar del SW el método de señalización mediante CBF de croma jerárquicos e incluir en la especificación la obtención mediante CBF de luma.
La siguiente tabla muestra la tabla de sintaxis modificada.
Tabla 3 - Tabla de sintaxis de la unidad de transformación propuesta (realización 1)
transform_unit( x0, y0, tbWidth, tbHeight, treeType, subTuIndex ) { Descriptor
si( (treeType = = SINGLE_TREE | | treeType = = DUAL_TREE_CHROMA) {
si( (IntraSubPartitionsSplitType = = ISP_NO_SPLIT && !( cu_sbt_flag && (( subTuIndex =
= 0 && cu_sbt_pos_flag) || ( subTuIndex = = 1 && !cu_sbt_pos_flag)))) || ( IntraSubPartitionsSplitType != ISP _NO_SPLIT && ( subTuIndex = = NumlntraSubPartitions - 1 ) )
) {
tu_cbf_cb[ x0 ][ y0 ] ae(v)
tu_cbf_cr[ x0 ][ y0 ] ae(v)
}
}
si( treeType = = SINGLE_TREE || treeType = = DUAL_TREE_LUMA) {
si( (IntraSubPartitionsSplitType = = ISP_NO_SPLIT && !( cu_sbt_flag && (( subTuIndex = = 0
&& cu_sbt_pos_flag) || ( subTuIndex = = 1 && !cu _sbt_pos_flag ) ) ) && (CuPredMode[ x0 ][ y0 ]
!= MODE_INTRA || tu_cbf_cb[ x0 ][ y0 ] || tu_cbf_cr[ x0 ][ y0 ] ) ) ||( (IntraSubPartitionsSplitType != ISP_NO_SPLIT) && ( subTuIndex < NumlntraSubPartitions - 1 | | !InferTuCbfLuma) ) )
tu_cbf_luma[ x0][y0] ae(v)
}
En otra realización se propone aplicar un método similar de obtención de cbf de luma para TU, dividido para satisfacer la restricción de TU máxima. Esta unificación puede compartir el mecanismo existente del último cbf de luma obtenido para ISP. La siguiente tabla muestra la modificación propuesta.
Tabla 4 - Tabla de sintaxis de la unidad de transformación propuesta (realización 2)
transform_unit( x0, y0, tbWidth, tbHeight, treeType, subTuIndex) { Descriptor si( ( treeType = = SINGLE _TREE || treeType = = DUAL_TREE_CHROMA ) {
si( (IntraSubPartitionsSplitType = = ISP_NO_SPLIT && !( cu_sbt_flag && (( subTuIndex = = 0
&& cu_sbt_pos_flag) || ( subTuIndex = = 1 && !cu_sbt_pos_flag)))) || ( IntraSubPartitionsSplitType
!= ISP _NO_SPLIT && ( subTuIndex = = NumlntraSubPartitions - 1 ) ) ) {
tu_cbf_cb[ x0][y0] ae(v)
tu_cbf_cr[ x0][y0] ae(v)
}
}
si( treeType = = SINGLE_TREE || treeType = = DUAL_TREE_LUMA) {
si( (IntraSubPartitionsSplitType = = ISP _NO_ SPLIT && !( cu_sbt_flag && (( subTuIndex = = 0 && cu_sbt_pos_flag) || ( subTuIndex = = 1 && !cu_sbt_pos_flag))) && (CuPredMode[ x0 ][ y0 ] != MODE_INTRA || tu_cbf_cb[ x0 ][ y0 ] || tu_cbf_cr[x0][y0])) ||( (IntraSubPartitionsSplitType != ISP _NO_SPLIT || (CbWidth[ x0 ][y0] > MaxTbSizeY || CbHeight[ x0 ][ y0 ] > MaxTbSizeY)) && ( subTuIndex < NumlntraSubPartitions - 1 || !InferTuCbfLuma) ) )
tu_cbf_luma[ x0][y0] ae(v)
si (CuPredMode [ x0 ][ y0 ] == MODE_INTRA)
si (IntraSubPartitionsSplitType != ISP_NO_SPLIT )
InferTuCbfLuma = InferTuCbfLuma && !tu_cbf_luma[ x0 ][y0 ]
si no
InferTuCbfLuma = 0
si no
InferTuCbfLuma = InferTuCbfLuma && !tu_cbf_luma[ x0 ][ y0 ] && !tu_cbf_cb[ x0 ][ y0 ]
&& !tu_cbf_cr[ x0 ][ y0 ]
}
Las realizaciones de la invención permiten mejorar la eficiencia de la codificación, simplificar la especificación y proponer un mecanismo unificado de señalización mediante indicadores cbf. Por lo tanto, se propone un mecanismo unificado de señalización de los indicadores cbf.
Las relaciones entre los indicadores cbf y las herramientas de división de subunidades de transformación permiten eliminar la redundancia en el flujo de bits.
En otras palabras, incluso, existen cuatro posibilidades de representación de TU en VVC 4:
1. La TU normal es igual al tamaño de la CU (no separada);
2. división de las TU en SBT;
3. división de las TU en ISP;
4. división de las TU causada por la restricción del tamaño de transformación máximo.
Las siguientes tablas demuestran estas posibilidades.
Tabla 1 - Tabla de sintaxis de transform tree de VVC 4
transform_tree( x0, y0, tbWidth, tbHeight, treeType) { Descriptor InferTuCbfLuma = 1
si( IntraSubPartSplitType = = NO_ISP_SPLIT ) {
si( tbWidth > MaxTbSizeY || tbHeight > MaxTbSizeY ) {
trafoWidth = (tbWidth > MaxTbSizeY ) ? (tbWidth / 2) : tbWidth
trafoHeight = (tbHeight > MaxTbSizeY) ? (tbHeight / 2) : tbHeight
transform_tree( x0, y0, trafoWidth, trafoHeight)
si( tbWidth > MaxTbSizeY)
transform_tree( x0 trafoWidth, y0, trafoWidth, trafoHeight, treeType )
si( tbHeight > MaxTbSizeY)
transform_tree( x0, y0 trafoHeight, trafoWidth, trafoHeight, treeType )
si( tbWidth > MaxTbSizeY && tbHeight > MaxTbSizeY)
transform_tree( x0 trafoWidth, y0 trafoHeight, trafoWidth, trafoHeight, treeType )
} si no {
transform_unit( x0, y0, tbWidth, tbHeight, treeType, 0 )
}
} si no si (cu_sbt_flag) {
si( !cu_sbt_horizontal_flag) {
trafoWidth = tbWidth * SbtNumFourthsTb0 / 4
transform_unit( x0, y0, trafoWidth, tbHeight, treeType , 0 )
transform_unit( x0 trafoWidth, y0, tbWidth - trafoWidth, tbHeight, treeType , 1 )
} si no {
trafoHeight = tbHeight * SbtNumFourthsTb0 / 4
transform_unit( x0, y0, tbWidth, trafoHeight, treeType , 0 )
transform_unit( x0, y0 trafoHeight, tbWidth, tbHeight - trafoHeight, treeType , 1 )
}
} si no si ( IntraSubPartitionsSplitType = = ISP_HOR_SPLIT ) {
trafoheight = tbHeight / NumlntraSubPartitions
para( partIdx = 0; partIdx < NumIntraSubPartitions; partIdx++ )
transform_unit( x0, y0 trafoHeight * partIdx, tbWidth, trafoHeight, treeType, partIdx )
} si no si ( IntraSubPartitionsSplitType = = ISP_VER_SPLIT ) {
trafoWidth = tbWidth / NumIntraSubPartitions
para( partIdx = 0; partIdx < NumIntraSubPartitions; partIdx++ )
transform_unit( x0 trafoWidth * partIdx, y0, trafoWidth, tbHeight, treeType, partIdx )
}
}
Tabla 2 - Tabla de sintaxis de la unidad de transformación VVC 4
transform_unit( x0, y0, tbWidth, tbHeight, treeType, subTuIndex) { Descriptor
tu_cbf_cb[ x0 ][ y0 ] ae(v) tu_cbf_cr[ x0][y0] ae(v) }
}
}
Se puede observar que según la Tabla 1 y la Tabla 2, la señalización mediante CBF de luma y croma se realiza de manera independiente una de la otra y no hay dependencias jerárquicas para los indicadores CBF de croma.
Desde la perspectiva del SW, VTM4.0.1 incluye ambos aspectos mencionados anteriormente.
El método de señalización mediante CBF de croma jerárquicos se probó en VTM4.0.1 y demuestra un impacto despreciable en la eficiencia de la codificación. Por otra parte, el soporte de esta característica requiere una lógica adicional no trivial tanto en el software como en la especificación.
En una realización, se propone eliminar del SW el método de señalización mediante CBF de croma jerárquicos e incluir en la especificación la obtención mediante CBF de luma.
La siguiente tabla muestra la tabla de sintaxis modificada.
Tabla 3 - Tabla de sintaxis de la unidad de transformación propuesta (1a realización)
transform_unit( x0, y0, tbWidth, tbHeight, treeType, subTuIndex) { Descriptor
si( (treeType = = SINGLE TREE || treeType = = DUAL_TREE_CHROMA) {
si( (IntraSubPartitionsSplitType = = ISP_NO_SPLIT && !( cu_sbt_flag && (( subTuIndex = = 0
&& cu_sbt_pos_flag) || ( subTuIndex = = 1 && !cu_sbt_pos_flag)))) || ( IntraSubPartitionsSplitType
!= ISP _NO_SPLIT && ( subTuIndex = = NumlntraSubPartitions - 1 ) ) ) {
tu_cbf_cb[ x0 ][ y0 ] ae(v)
tu_cbf_cr[ x0][y0] ae(v)
}
}
si( treeType = = SINGLE_TREE || treeType = = DUAL_TREE_LUMA) {
&
=
||
subTuIndex < NumlntraSubPartitions - 1 || !InferTuCbfLuma) ) )
tu_cbf_luma[ x0][y0] ae(v)
}
En esta realización, el método de obtención del indicador tu_cbf_luma[ x0 ][ y0 ] realiza 1) para el caso normal en el que TU es igual a CU y para 2) para el caso de SBT para sub-TU que contiene el indicador CBF. El proceso de obtención se realiza basándose en el tipo de bloque (CuPredMode[ x0 ][ y0 ]) y en los valores de los indicadores CBF de Cb y Cr (tu_cbf_cb[ x0 ][ y0 ] y tu_cbf_cr[ x0 ][ y0 ]) que ya se han transmitido en el flujo de bits antes de tu_cbf_luma[ x0 ][ y0 ]. Cabe señalar que la técnica de obtención no se aplica a las TU que se dividen en sub-TU para satisfacer la restricción del tamaño máximo de la unidad de transformación.
Las realizaciones de la presente divulgación permiten mejorar la eficiencia de la codificación y proponen un mecanismo unificado de señalización mediante indicadores cbf.
Las relaciones entre los indicadores cbf y las herramientas de división de subunidades de transformación permiten eliminar la redundancia en el flujo de bits.
En otra realización más, relacionada con la realización descrita anteriormente, se propone eliminar del SW el método de señalización mediante CBF de croma jerárquicos e incluir en la especificación la obtención mediante CBF de luma.
La siguiente tabla demuestra una tabla de sintaxis modificada para la sintaxis de la unidad de transformación, es decir, la sintaxis de la unidad de transformación se señaliza según la siguiente tabla:
Tabla de sintaxis de la unidad de transformación
transform_unit( x0, y0, tbWidth, tbHeight, treeType, subTuIndex) { Descriptor
si( (treeType = = SINGLE TRE treeType = = DUAL_TREE_CHROMA) {
si( (IntraSubPartitionsSplitType = = ISP_NO_SPLIT && !( cu_sbt_flag && (( subTuIndex = = 0 && cu_sbt_pos_flag) || ( subTuIndex = = 1 && !cu_sbt_pos_flag))))
|| ( IntraSubPartitionsSplitType != ISP _NO_SPLIT && ( subTuIndex = = NumlntraSubPartitions - 1 ) ) ) {
tu_cbf_cb[ x0 ][ y0 ] ae(v)
tu_cbf_cr[ x0 ] [ y0 ] ae(v)
}
}
}
En esta realización, el método de obtención del indicador tu_cbf_luma[ x0 ][ y0 ] realiza 1) para el caso normal en el que TU es igual a CU y para 2) para el caso de SBT para sub-TU que contiene el indicador CBF. El proceso de obtención se realiza basándose en el tipo de bloque (CuPredMode[ x0 ][ y0 ]) y en los valores de los indicadores CBF de Cb y Cr (tu_cbf_cb[ x0 ][ y0 ] y tu_cbf_cr[ x0 ][ y0 ]) que ya se han transmitido en el flujo de bits antes de tu_cbf_luma[ x0 ][ y0 ]. Cabe señalar que la técnica de obtención no se aplica a las TU que se dividen en sub-TU para satisfacer la restricción del tamaño máximo de la unidad de transformación.
Esta realización, al igual que las otras realizaciones de la invención, permite mejorar la eficiencia de la codificación, simplificar la especificación y proponer un mecanismo unificado de señalización mediante indicadores cbf.
También para esta realización, las relaciones entre los indicadores cbf y las herramientas de división de unidades de subtransformación permiten eliminar la redundancia en el flujo de bits.
La figura 6 es un diagrama de bloques que ilustra una realización del método de señalización mediante indicadores cbf. La figura 6 ilustra un caso en el que una TU normal es igual al tamaño de una CU, y la TU se divide mediante división de SBT en dirección vertical en dos SubTU: SubTU 0 y SubTU 1, donde según el diseño de SBT solo una SubTu puede tener indicadores tu_cbf_cb, tu_cbf_cr, tu_cbf_luma distintos de cero. En el ejemplo proporcionado en la figura 6, la SubTU 0 puede tener indicadores tu_cbf_cb, tu_cbf_cr, tu_cbf_luma distintos de cero. Suponiendo que toda la unidad de codificación tiene el indicador cu_cbf igual a 1 y que tanto tu_cbf_cb como tu_cbf_cr de la SubTU 0 están señalizados y son iguales a 0, el valor de tu_cbf_luma se puede obtener que es 1 sin señalización explícita.
Esto también se ilustra con más detalle en la figura 10, que muestra un caso en el que TU es igual a CU y sin separación, y un caso con una separación de tubería.
La figura 7 ilustra un diagrama de flujo de un método de codificación implementado por un dispositivo de descodificación o un dispositivo de codificación según la presente divulgación. En la figura 7, el método comprende la etapa 1601, que define la obtención de un flujo de bits, comprendiendo el flujo de bits una sintaxis de la unidad de transformación. Para la etapa 1601, la sintaxis de la unidad de transformación comprende al menos dos indicadores cbf de croma (indicadores de bloque codificado de croma), para bloques de croma correspondientes a una unidad de transformación actual o a una subunidad de transformación actual dentro de la unidad de transformación actual, en donde un indicador cbf de croma de los al menos dos indicadores cbf de croma especifica si un determinado bloque tiene residuo en un plano de color correspondiente. La figura 7 ilustra además la etapa 1602 de obtención de un valor de un indicador cbf de luma. La obtención de un indicador cbf de luma en la etapa 1602 se basa en: un valor de un indicador cbf de unidad de codificación, un indicador cbf de cu; y uno o cualquier combinación de valores de los al menos dos indicadores cbf de croma; y/o la ubicación de la unidad de subtransformación actual dentro de la unidad de transformación actual; y/o valores de indicadores cbf de luma y croma correspondientes a subunidades de transformación en la unidad de transformación actual anterior a la unidad de subtransformación actual. En la presente divulgación, que un bloque tiene un residuo significa que el bloque incluye al menos un coeficiente de transformación con un valor distinto de 0.
La figura 8 ilustra un codificador 20 según la presente divulgación. En la figura 8, el codificador 20 comprende una unidad de obtención 2001, configurada para obtener un flujo de bits, comprendiendo el flujo de bits una sintaxis de unidad de transformación; la unidad de obtención 2001 configurada para obtener según la sintaxis de unidad de transformación, valores de al menos dos indicadores cbf de croma (indicadores de bloque codificado de croma) para bloques de croma correspondientes a una unidad de transformación actual o a una unidad de subtransformación actual dentro de la unidad de transformación actual, en donde un indicador cbf de croma de los al menos dos indicadores cbf de croma especifica si un bloque correspondiente tiene un residuo en un plano de color correspondiente; y una unidad de obtención 2003, configurada para obtener un valor de un indicador cbf de luma al menos basándose en:
un valor de un indicador cbf de la unidad de codificación, indicador cu_cbf, y los valores de los al menos dos indicadores cbf de croma. Se debe entender que se puede utilizar más de una unidad de obtención.
La figura 9 ilustra un descodificador 30 según la presente divulgación. En la figura 9, el descodificador 30 comprende una unidad de obtención 3001, configurada para obtener un flujo de bits, comprendiendo el flujo de bits una sintaxis de la unidad de transformación; la unidad de obtención 3001 configurada para obtener según la sintaxis de la unidad de transformación, valores de al menos dos indicadores cbf de croma (indicadores de bloque codificado de croma) para bloques de croma correspondientes a una unidad de transformación actual o a una unidad de subtransformación actual dentro de la unidad de transformación actual, en donde un indicador cbf de croma de los al menos dos indicadores cbf de croma especifica si un bloque correspondiente tiene un residuo en un plano de color correspondiente;
una unidad de obtención 3003, configurada para obtener un valor de un indicador cbf de luma al menos basándose en:
un valor de un indicador cbf de unidad de codificación, indicador cu_cbf, y los valores de al menos dos indicadores cbf de croma. Se debe entender que se puede utilizar más de una unidad de obtención.
Operadores matemáticos
Los operadores matemáticos utilizados en esta solicitud son similares a los utilizados en el lenguaje de programación C. Sin embargo, los resultados de la división de números enteros y de las operaciones de desplazamiento aritmético se definen con mayor precisión y se definen operaciones adicionales, tales como la exponenciación y la división de valores reales. Las convenciones de numeración y recuento de manera general comienzan desde 0, por ejemplo, “el primero” es equivalente al 0-ésimo, “el segundo” es equivalente al 1-ésimo, etc.
Operadores aritméticos
Los siguientes operadores aritméticos se definen de la siguiente manera:
+ Suma
- Resta (como un operador de dos argumentos) o negación (como un operador de prefijo unitario) * Multiplicación, incluida la multiplicación de matrices
xy Exponenciación. Especifica x elevado a y. En otros contextos, dicha notación se utiliza para superíndices que no están destinados a ser interpretados como exponenciación.
/ División de enteros con truncamiento del resultado hacia cero. Por ejemplo, 7 / 4 y -7 / -4 se truncan a 1 y -7 / 4 y 7 / -4 se truncan a -1.
Se utiliza para denotar división en ecuaciones matemáticas donde no se pretende truncamiento ni redondeo.
x
<j>Se utiliza para denotar división en ecuaciones matemáticas donde no se pretende truncamiento ni redondeo.
La suma de f( i) con i tomando todos los valores enteros desde x hasta y inclusive,
x % y Módulo. Resto de x dividido por definido solo para números enteros x, y siendo x >= 0 e y > 0. Operadores lógicos
Los siguientes operadores lógicos se definen de la siguiente manera:
x && y “Y” lógico booleano de x e y
x | | y “O” lógico booleano de x e y
! “No” lógico booleano
x ? y : z Si x es VERDADERO o distinto de 0, se evalúa al valor de y; de lo contrario, se evalúa al valor de z. Operadores relacionales
Los siguientes operadores relacionales se definen de la siguiente manera:
> Mayor que
>= Mayor o igual que
< Menor que
<= Menor o igual que
= = Igual a
!= Distinto de
Cuando se aplica un operador relacional a un elemento o variable de sintaxis al que se le ha asignado el valor “na” (no aplicable), el valor “na” se trata como un valor distinto para el elemento o variable de sintaxis. El valor “na” no se considera igual a ningún otro valor.
Operadores para bit
Los siguientes operadores para bit se definen de la siguiente manera:
& “Y” para bit. Cuando opera sobre argumentos enteros, opera sobre una representación de complemento a dos del valor entero. Cuando opera sobre un argumento binario que contiene menos bits que otro argumento, el argumento más corto se extiende agregando más bits significativos iguales a 0.
| “O” para bit. Cuando opera sobre argumentos enteros, opera sobre una representación de complemento a dos del valor entero. Cuando opera sobre un argumento binario que contiene menos bits que otro argumento, el argumento más corto se extiende agregando más bits significativos iguales a 0.
A “O exclusivo” para bit. Cuando opera sobre argumentos enteros, opera sobre una representación de complemento a dos del valor entero. Cuando opera sobre un argumento binario que contiene menos bits que otro argumento, el argumento más corto se extiende agregando más bits significativos iguales a 0.
x >> y Desplazamiento aritmético a la derecha de una representación entera en complemento a dos de x por y dígitos binarios. Esta función está definida solo para valores enteros no negativos de y. Los bits desplazados a los bits más significativos (Most Significant Bits, MSB) como resultado del desplazamiento a la derecha tienen un valor igual al MSB de x antes de la operación de desplazamiento.
x << y Desplazamiento aritmético a la izquierda de una representación entera en complemento a dos de x por y dígitos binarios. Esta función está definida solo para valores enteros no negativos de y. Los bits desplazados a los bits menos significativos (Least Significant Bits, LSB) como resultado del desplazamiento a la izquierda tienen un valor igual a 0.
Operadores de asignación
Los siguientes operadores aritméticos se definen de la siguiente manera:
= Operador de asignación
+ Incremento, es decir, x++ es equivalente a x = x 1; cuando se usa en un índice de matriz, se evalúa como el valor de la variable antes de la operación de incremento.
- - Decremento, es decir, x-- es equivalente a x = x - 1; cuando se usa en un índice de matriz, se evalúa como el valor de la variable antes de la operación de decremento.
+= Incrementar en la cantidad especificada, es decir, x = 3 es equivalente a x = x 3, y x = (-3) es equivalente a x = x (-3).
-= Decrementar en la cantidad especificada, es decir, x -= 3 es equivalente a x = x - 3, y x -= (-3) es equivalente a x = x - (-3).
Notación de rango
La siguiente notación se utiliza para especificar un rango de valores:
x = y..z, x toma valores enteros comenzando desde y hasta z, inclusive, donde x,y y z son números enteros y z es mayor que y.
Funciones matemáticas
Se definen las siguientes funciones matemáticas:
Arcsen( x ) la función trigonométrica arco seno, que opera sobre un argumento x que está en el rango de -1,0 a 1,0, inclusive, con un valor de salida en el rango de -n+2 a n^2, inclusive, en unidades de radianes Arctan( x ) la función trigonométrica arco tangente, que opera sobre un argumento x, con un valor de salida en el rango de -n+2 a n^-2, inclusive, en unidades de radianes
Redondeo hacia infinito positivo( x ) el entero más pequeño mayor o igual que x.
Cos( x ) la función trigonométrica coseno que opera sobre un argumento x en unidades de radianes.
Redondeo hacia infinito negativo( x ) el entero más grande menor o igual que x.
Ln( x ) es el logaritmo natural de x (el logaritmo en base e, donde e es la constante base del logaritmo natural 2,718281 828...).
Redondeo( x ) = Signo( x ) * Redondeo hacia infinito negativo( Abs( x ) 0,5 )
Sen( x ) la función trigonométrica coseno que opera sobre un argumento x en unidades de radianes.
Tan( x ) la función trigonométrica tangente que opera sobre un argumento x en unidades de radianes Orden de precedencia de operaciones
Cuando un orden de precedencia en una expresión no se indica explícitamente mediante el uso de paréntesis, se aplican las siguientes reglas:
- Las operaciones de mayor precedencia se evalúan antes que cualquier operación de menor precedencia.
- Las operaciones de la misma precedencia se evalúan secuencialmente de izquierda a derecha. La siguiente tabla especifica la precedencia de las operaciones de mayor a menor; una posición más alta en la tabla indica una precedencia más alta.
Para aquellos operadores que también se utilizan en el lenguaje de programación C, el orden de precedencia utilizado en esta memoria descriptiva es el mismo que el utilizado en el lenguaje de programación C.
Tabla: Precedencia de operaciones desde la más alta (en la parte superior de la tabla) hasta la más baja (en la parte inferior de la tabla)
Descripción textual de operaciones lógicas
En el texto, una declaración de operaciones lógicas tal como se describiría matemáticamente en la siguiente forma:
si( condición 0 )
declaración 0
si no si( condición 1 )
declaración 1
si no /* observación informativa sobre la condición restante */
la declaración n
se puede describir de la siguiente manera:
... de la siguiente manera / ... se aplica lo siguiente:
Si condición 0, declaración 0
De lo contrario, si condición 1, declaración 1
- De lo contrario (observación informativa sobre el estado restante), declaración n
Cada “Si... De lo contrario, si... De lo contrario, la declaración ... “ en el texto se introduce con “... como sigue” o “... se aplica lo siguiente” seguido inmediatamente de “Si ... “. La última condición del “Si...” De lo contrario, si... De lo contrario, ... “ es siempre un “De lo contrario, ...”. Intercalado “Si... De lo contrario, si... De lo contrario, las declaraciones ...” se pueden identificar haciendo coincidir “ ... como sigue” o “... se aplica lo siguiente” con la terminación “De lo contrario,...”.
En el texto, una declaración de operaciones lógicas tal como se describiría matemáticamente en la siguiente forma:
si( condición 0a && condición 0b)
declaración 0
si no si( condición 1a || condición 1b )
declaración 1
si no
declaración n
se puede describir de la siguiente manera:
... de la siguiente manera / ... se aplica lo siguiente:
- Si todas las condiciones siguientes son verdaderas, declaración 0:
- condición 0a
- condición 0b
- De lo contrario, si una o más de las siguientes condiciones son verdaderas, declaración 1:
- condición 1a
- condición 1b
- De lo contrario, declaración n
En el texto, una declaración de operaciones lógicas tal como se describiría matemáticamente en la siguiente forma:
si( condición 0)
declaración 0
si( condición 1)
declaración 1
se puede describir de la siguiente manera:
Cuando la condición es 0, declaración 0
Cuando la condición es 1, declaración 1
Aunque las realizaciones de la invención se han descrito principalmente basándose en la codificación de vídeo, cabe señalar que las realizaciones del sistema de codificación 10, el codificador 20 y el descodificador 30 (y, en consecuencia, el sistema 10) y las otras realizaciones descritas en la presente memoria también pueden configurarse para el procesamiento o codificación de imágenes fijas, es decir, el procesamiento o codificación de una imagen individual independientemente de cualquier imagen precedente o consecutiva como en la codificación de vídeo. En general, es posible que solo las unidades de interpredicción 244 (codificador) y 344 (descodificador) no estén disponibles en caso de que la codificación del procesamiento de imágenes esté limitada a una sola imagen 17. Todas las demás funcionalidades (también denominadas herramientas o tecnologías) del codificador de vídeo 20 y del descodificador de vídeo 30 pueden utilizarse igualmente para el procesamiento de imágenes fijas, por ejemplo, cálculo del residuo 204/304, transformación 206, cuantificación 208, cuantificación inversa 210/310, transformación (inversa) 212/312, división 262/362, intrapredicción 254/354 y/o filtrado de bucle 220, 320 y codificación por entropía 270 y descodificación por entropía 304. Las realizaciones, por ejemplo del codificador 20 y del descodificador 30, y las funciones descritas en este documento, por ejemplo con referencia al codificador 20 y al descodificador 30, pueden implementarse en hardware, software, firmware o cualquier combinación de los mismos. Si se implementan en software, las funciones pueden almacenarse en un medio legible por ordenador o ser transmitidas a través de medios de comunicación como una o más instrucciones o códigos, y ser ejecutadas por una unidad de procesamiento basada en hardware. Los medios legibles por ordenador pueden incluir medios de almacenamiento legibles por ordenador, que corresponden a un medio tangible tal como un medio de almacenamiento de datos, o medios de comunicación incluyendo cualquier medio que facilite la transferencia de un programa informático de un lugar a otro, por ejemplo, según un protocolo de comunicación. De esta manera, los medios legibles por ordenador pueden corresponder, en general, a (1) un medio de almacenamiento tangible legible por ordenador no transitorio o (2) un medio de comunicación tal como una señal u onda portadora. Los medios de almacenamiento de datos pueden ser cualquier medio disponible al que pueden acceder uno o más ordenadores o uno o más procesadores para recuperar instrucciones, códigos y/o estructuras de datos para la implementación de las técnicas descritas en esta divulgación. Un producto de programa informático puede incluir un medio legible por ordenador.
A modo de ejemplo, y sin carácter limitativo, dichos medios de almacenamiento legibles por ordenador pueden comprender RAM, ROM, EEPROM, CD-ROM u otro almacenamiento en disco óptico, almacenamiento en disco magnético u otros dispositivos de almacenamiento magnético, memoria flash o cualquier otro medio que puede usarse para almacenar el código de programa deseado en forma de instrucciones o estructuras de datos y al que se puede acceder mediante un ordenador. Además, cualquier conexión se puede denominar correctamente medio legible por ordenador. Por ejemplo, si las instrucciones se transmiten desde un sitio web, servidor u otra fuente remota utilizando un cable coaxial, cable de fibra óptica, par trenzado, línea de abonado digital (Digital Subscriber Line, DSL) o tecnologías inalámbricas tales como infrarrojos, radio y microondas, entonces el cable coaxial, cable de fibra óptica, par trenzado, DSL o tecnologías inalámbricas tales como infrarrojos, radio y microondas se incluyen en la definición de medio. Debe entenderse, sin embargo, que los medios de almacenamiento legibles por ordenador y los medios de almacenamiento de datos no incluyen conexiones, ondas portadoras, señales u otros medios transitorios, sino que se refieren a medios de almacenamiento tangibles no transitorios. El término disco, tal como se utiliza en este documento, incluye disco compacto (Compact Disc, CD), disco láser, disco óptico, disco versátil digital (Digital Versatile disc, DVD), disquete y disco Blu-ray, donde los discos (disks) generalmente reproducen datos magnéticamente, mientras que los discos (discs) reproducen datos ópticamente con láseres. Las combinaciones de los elementos anteriores también deberían incluirse dentro del alcance de los medios legibles por ordenador.
Las instrucciones pueden ser ejecutadas por uno o más procesadores, tales como uno o más procesadores de señales digitales (DSP), microprocesadores de propósito general, circuitos integrados de aplicación específica (ASIC), matrices lógicas programables en campo (FPGA) u otros circuitos lógicos integrados o discretos equivalentes. En consecuencia, el término “procesador”, tal como se utiliza en este documento, puede referirse a cualquiera de las estructuras anteriores o a cualquier otra estructura adecuada para la implementación de las técnicas descritas en este documento. Además, en algunos aspectos, la funcionalidad descrita en este documento puede proporcionarse dentro de módulos de hardware y/o software dedicados configurados para codificar y descodificar, o incorporados en un códec combinado. Además, las técnicas podrían ser implementadas completamente en uno o más circuitos o elementos lógicos.
Las técnicas de esta divulgación se pueden implementar en una amplia variedad de dispositivos o aparatos, incluyendo un teléfono inalámbrico, un circuito integrado (Integrated Circuit, IC) o un conjunto de IC (por ejemplo, un conjunto de chips). En esta divulgación se describen diversos componentes, módulos o unidades para destacar aspectos funcionales de los dispositivos configurados para realizar las técnicas divulgadas, pero que no requieren necesariamente su realización por diferentes unidades de hardware. Por el contrario, tal como se describió anteriormente, diversas unidades pueden ser combinadas en una unidad de hardware de códec o proporcionadas mediante un conjunto de unidades de hardware interoperativas, incluidos uno o más procesadores, tal como se describió anteriormente, junto con un software y/o firmware adecuado.

Claims (4)

REIVINDICACIONES
1. Un método de codificación de vídeo implementado por un dispositivo de descodificación, comprendiendo el método:
obtener un flujo de bits, comprendiendo el flujo de bits una sintaxis de unidad de transformación;
obtener, mediante análisis sintáctico directo, a partir de la sintaxis de la unidad de transformación, valores de al menos dos indicadores cbf de croma, indicadores de bloque codificado de croma, para bloques de croma correspondientes a una unidad de transformación actual o una unidad de subtransformación actual dentro de la unidad de transformación actual, en donde los al menos dos indicadores de bloque codificado de croma comprenden un indicador tu_cbf_cb y un indicador tu_cbf_cr, en donde el indicador tu_cbf_cb especifica si un bloque correspondiente, correspondiente al indicador tu_cbf_cb, tiene un residuo en un plano de color correspondiente al componente Cb, en donde el indicador tu_cbf_cr especifica si un bloque correspondiente, correspondiente al indicador tu_cbf_cr tiene un residuo en un plano de color correspondiente a la componente Cr; y
determinar, cuando un tipo de árbol es igual a SINGLE_TREE o DUAL_TREE_LUMA y (I) (a) un tipo de división intra subdivisión de una unidad de codificación actual es ISP NO_SPLIT, y (b) (b1) un valor del indicador cu_sbt es igual a 0, o (b2) (b21) un valor de subTuIndex no es igual a 1 y un valor del indicador cu_sbt_pos es igual a 0 o (b22) un valor de subTuIndex no es igual a 0 y un valor del indicador cu_sbt_pos_flag es igual a 1, o (b23) un valor de subTuIndex no es igual a 0 y no es igual a 1, y (c) un modo de predicción de una unidad de codificación actual es el modo intra, el valor de tu_cbf_cb es igual a 1, el valor de tu_cbf_cr es igual a 1, o cualquiera de un ancho o una altura de la unidad de codificación actual es mayor que MaxTbSizeY, o (II) (d) un tipo de división de subdivisión intra de una unidad de codificación actual no es ISP_NO_SPLIT, y (e) (e1) un valor de subTuIndex es menor que un valor de NumIntraSubPartitions menos 1 o (e2) un valor de InferTuCbfLuma es igual a 0, que un indicador cbf de luma está presente en la sintaxis de la unidad de transformación, y obtener, mediante análisis sintáctico directamente a partir de la sintaxis de la unidad de transformación, un valor del indicador cbf de luma, en donde SINGLE _TREE, DUAL_TREE_LUMA, ISP_NO_SPLIT, cu_sbt_flag, subTuIndex, cu_sbt_pos_flag, NumIntraSubPartitions, InferTuCbfLuma y MaxTbSizeY se definen en la codificación de vídeo versátil, VVC; y
determinar de otro modo que el indicador cbf de luma no está presente en la sintaxis de la unidad de transformación y obtener un valor del indicador cbf de luma al menos basándose en:
un valor de un indicador cbf de la unidad de codificación, indicador cu_cbf, y los valores de los al menos dos indicadores cbf de croma, en donde cuando un valor del indicador cu_cbf es igual a 1, y los valores de los al menos dos indicadores cbf de croma son iguales a 0, el valor del indicador cbf de luma se obtiene que es igual a 1;
en donde el indicador cbf de luma especifica si un bloque de transformación de luma correspondiente al indicador cbf de luma contiene uno o más niveles del coeficiente de transformación distintos de 0; en donde el indicador cu_cbf especifica si una estructura de sintaxis transform_tree está presente para la unidad de codificación actual.
2. El método de la reivindicación 1, en el que para la sintaxis de la unidad de transformación, un elemento de sintaxis de la unidad de transformación es:
señalizado para un bloque completo, o
señalizado para múltiples subunidades de transformación que se obtienen mediante la transformación de subbloque, SBT, para interbloques o
señalizado para satisfacer las restricciones de tamaño máximo de la unidad de transformación.
3. Un producto de programa informático que comprende instrucciones que, cuando el programa es ejecutado por un ordenador, hace que el ordenador lleve a cabo el método de cualquiera de las reivindicaciones 1 o 2.
4. Un dispositivo de descodificación, que comprende:
uno o más procesadores; y
un medio de almacenamiento no transitorio legible por ordenador acoplado a los procesadores y que almacena programación para su ejecución por los procesadores, en donde la programación, cuando es ejecutada por los procesadores, configura el descodificador para llevar a cabo el método según la reivindicación 1 o 2.
ES20767275T 2019-03-01 2020-03-02 Method, computer program product and device for decoding cbf flags Active ES2994111T3 (en)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201962812282P 2019-03-01 2019-03-01
US201962817498P 2019-03-12 2019-03-12
US201962825005P 2019-03-27 2019-03-27
EP2019064224 2019-05-31
PCT/RU2020/050033 WO2020180214A1 (en) 2019-03-01 2020-03-02 The method of efficient signalling of cbf flags

Publications (1)

Publication Number Publication Date
ES2994111T3 true ES2994111T3 (en) 2025-01-17

Family

ID=72337453

Family Applications (1)

Application Number Title Priority Date Filing Date
ES20767275T Active ES2994111T3 (en) 2019-03-01 2020-03-02 Method, computer program product and device for decoding cbf flags

Country Status (16)

Country Link
US (4) US11375213B2 (es)
EP (2) EP4436175A3 (es)
JP (3) JP7251882B2 (es)
KR (3) KR20250037584A (es)
CN (1) CN113039797A (es)
AU (2) AU2020232820B2 (es)
BR (1) BR112020026183A2 (es)
CA (1) CA3121220A1 (es)
DK (1) DK3868100T3 (es)
ES (1) ES2994111T3 (es)
HU (1) HUE068449T2 (es)
IL (1) IL286033B2 (es)
MX (3) MX2021008404A (es)
MY (1) MY200855A (es)
PL (1) PL3868100T3 (es)
WO (1) WO2020180214A1 (es)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
HUE068449T2 (hu) * 2019-03-01 2024-12-28 Huawei Tech Co Ltd Módszer, számítógép program termék és eszköz CBF flags dekódolására
EP3939286A4 (en) 2019-03-11 2022-12-21 Beijing Dajia Internet Information Technology Co., Ltd. ENCODING OF TRANSFORMATION COEFFICIENTS IN VIDEO ENCODING
WO2020182907A1 (en) * 2019-03-12 2020-09-17 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Selective inter-component transform (ict) for image and video coding
WO2020189980A1 (ko) * 2019-03-15 2020-09-24 삼성전자주식회사 영상 부호화 방법 및 장치, 영상 복호화 방법 및 장치
US12192527B2 (en) * 2021-07-23 2025-01-07 Tencent America LLC Cross component end of block flag coding
CN120569964A (zh) * 2023-01-12 2025-08-29 联发科技股份有限公司 用于根据帧内色度跨元件预测模型在视频编解码中改进变换信息编解码方法和设备

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9807426B2 (en) * 2011-07-01 2017-10-31 Qualcomm Incorporated Applying non-square transforms to video data
CN103202020B (zh) * 2011-07-29 2017-02-08 太阳专利托管公司 动态图像解码方法以及动态图像解码装置
US8804816B2 (en) * 2011-08-30 2014-08-12 Microsoft Corporation Video encoding enhancements
US9807401B2 (en) * 2011-11-01 2017-10-31 Qualcomm Incorporated Transform unit partitioning for chroma components in video coding
MX359109B (es) 2011-12-15 2018-09-14 Tagivan Ii Llc Metodo de codificacion de imagenes, metodo de decodificacion de imagenes, aparato de codificacion de imagenes, aparato de decodificacion de imagenes y aparato de codificacion y decodificacion de imagenes.
WO2013107027A1 (en) * 2012-01-19 2013-07-25 Mediatek Singapore Pte. Ltd. Methods and apparatuses of cbf coding in hevc
US9467701B2 (en) * 2012-04-05 2016-10-11 Qualcomm Incorporated Coded block flag coding
WO2018045332A1 (en) * 2016-09-02 2018-03-08 Vid Scale, Inc. Methods and apparatus for coded block flag coding in quad-tree plus binary-tree block partitioning
US10523966B2 (en) * 2017-03-31 2019-12-31 Mediatek Inc. Coding transform blocks
HUE068449T2 (hu) * 2019-03-01 2024-12-28 Huawei Tech Co Ltd Módszer, számítógép program termék és eszköz CBF flags dekódolására

Also Published As

Publication number Publication date
AU2020232820B2 (en) 2024-05-16
KR20210087088A (ko) 2021-07-09
JP7556657B2 (ja) 2024-09-26
AU2020232820A8 (en) 2021-07-08
AU2020232820A1 (en) 2021-06-10
US11716479B2 (en) 2023-08-01
EP4436175A2 (en) 2024-09-25
JP2023085351A (ja) 2023-06-20
US20220295082A1 (en) 2022-09-15
AU2024205490A1 (en) 2024-08-22
EP4436175A3 (en) 2024-12-18
MX2021008404A (es) 2021-08-16
EP3868100B1 (en) 2024-08-21
US20210352304A1 (en) 2021-11-11
CA3121220A1 (en) 2020-09-10
IL286033B2 (en) 2023-03-01
IL286033B (en) 2022-11-01
KR102626200B1 (ko) 2024-01-19
KR102776921B1 (ko) 2025-03-10
US20230353760A1 (en) 2023-11-02
EP3868100A4 (en) 2021-12-29
JP7251882B2 (ja) 2023-04-04
MY200855A (en) 2024-01-19
BR112020026183A2 (pt) 2021-09-08
MX2024014552A (es) 2025-01-09
KR20240011253A (ko) 2024-01-25
IL286033A (en) 2021-10-31
CN113039797A (zh) 2021-06-25
PL3868100T3 (pl) 2024-11-18
KR20250037584A (ko) 2025-03-17
US12143607B2 (en) 2024-11-12
JP2022522083A (ja) 2022-04-14
US11375213B2 (en) 2022-06-28
EP3868100A1 (en) 2021-08-25
WO2020180214A1 (en) 2020-09-10
JP2025000671A (ja) 2025-01-07
HUE068449T2 (hu) 2024-12-28
US20250039412A1 (en) 2025-01-30
MX2024014550A (es) 2025-01-09
DK3868100T3 (da) 2024-11-04

Similar Documents

Publication Publication Date Title
JP7375125B2 (ja) ルーマおよびクロマ成分についてibc専用バッファおよびデフォルト値リフレッシュを使用するエンコーダ、デコーダおよび対応する方法
ES2989421T3 (es) Un codificador, un decodificador y métodos correspondientes para la intrapredicción
ES2994231T3 (en) Coding method and apparatus
ES2994111T3 (en) Method, computer program product and device for decoding cbf flags
ES3024974T3 (en) An encoder, a decoder and corresponding methods for sub-block partitioning mode
ES2975941T3 (es) Armonización de intrapredicción basada en matriz y selección de núcleo de transformada secundaria
ES2996341T3 (en) Video processing method, video processing apparatus, encoder, decoder, medium and computer program
ES2987742T3 (es) Método y aparato para intrapredicción
KR102767916B1 (ko) 서브블록 병합 후보를 위한 개별적인 병합 목록 및 비디오 코딩을 위한 인트라-인터 기술 조화
ES2984321T3 (es) Método y aparato de restricciones a nivel de bloque dependientes de modo y tamaño
US20230396765A1 (en) Encoder, decoder and corresponding methods using dct2 enabled high level flag
BR112021009911A2 (pt) codificador, decodificador e métodos correspondentes usando armazenamento de mv compacto
ES2983321T3 (es) Método y aparato de filtrado de interpolación para la codificación predictiva
ES2992660T3 (en) Method and apparatus for chroma intra prediction in video coding
ES2946058T3 (es) Un codificador, un decodificador y los métodos correspondientes que usan la codificación intramodo para la intrapredicción
ES2946487T3 (es) Un codificador, un decodificador y métodos correspondientes de reducción de complejidad en intra predicción para el modo planar
BR112021007509B1 (pt) Lista de fusão separada para candidatos de fusão de subbloco e harmonização de técnicas intra-inter para codificação de vídeo
HK40049521B (en) Method, computer program product and device for decoding cbf flags
HK40049521A (en) Method, computer program product and device for decoding cbf flags
BR122023004661B1 (pt) Codificador, decodificador e métodos correspondentes para predição intra
BR112021018554B1 (pt) Codificador, decodificador e métodos correspondentes para predição intra
BR122023005383B1 (pt) Codificador, decodificador e métodos correspondentes para predição intra
BR112021018535B1 (pt) Codificador, decodificador e métodos correspondentes para predição intra
BR122024001393A2 (pt) Codificador, decodificador e métodos correspondentes para sinalização de subimagem em conjunto de parâmetros de sequência
BR122023005386B1 (pt) Codificador, decodificador e métodos correspondentes para predição intra