[go: up one dir, main page]

ES2985369T3 - Un codificador, un decodificador y métodos correspondientes de derivación de croma de modo intra - Google Patents

Un codificador, un decodificador y métodos correspondientes de derivación de croma de modo intra Download PDF

Info

Publication number
ES2985369T3
ES2985369T3 ES20846688T ES20846688T ES2985369T3 ES 2985369 T3 ES2985369 T3 ES 2985369T3 ES 20846688 T ES20846688 T ES 20846688T ES 20846688 T ES20846688 T ES 20846688T ES 2985369 T3 ES2985369 T3 ES 2985369T3
Authority
ES
Spain
Prior art keywords
video
mode
value
intra prediction
chroma
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
ES20846688T
Other languages
English (en)
Inventor
Biao Wang
Semih Esenlik
Anand Meher Kotra
Han Gao
Elena Alexandrovna Alshina
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 ES2985369T3 publication Critical patent/ES2985369T3/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/103Selection of coding mode or of prediction mode
    • H04N19/11Selection of coding mode or of prediction mode among a plurality of spatial predictive coding modes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/132Sampling, masking or truncation of coding units, e.g. adaptive resampling, frame skipping, frame interpolation or high-frequency transform coefficient masking
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/157Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
    • H04N19/159Prediction type, e.g. intra-frame, inter-frame or bidirectional frame prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/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/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/59Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial sub-sampling or interpolation, e.g. alteration of picture size or resolution
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/593Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial prediction techniques
    • 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)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

Un método de codificación implementado por un dispositivo de decodificación, que comprende obtener un flujo de bits de vídeo; decodificar el flujo de bits de vídeo para obtener un valor de modo de predicción intra inicial para el componente de croma de un bloque de codificación actual; determinar si una relación entre un ancho para el componente de luminancia del bloque de codificación actual y un ancho para el componente de croma del bloque de codificación actual es igual a un umbral o no; obtener un valor de modo de predicción intra mapeado para el componente de croma del bloque de codificación actual de acuerdo con una relación de mapeo predefinida y el valor de modo de predicción intra inicial, cuando se determina que la relación es igual al umbral; obtener un valor de muestra de predicción para el componente de croma del bloque de codificación actual de acuerdo con el valor de modo de predicción intra mapeado. (Traducción automática con Google Translate, sin valor legal)

Description

DESCRIPCIÓN
Un codificador, un decodificador y métodos correspondientes de derivación de croma de modo intra
Sector de la invención
Las realizaciones de la presente solicitud (divulgación) se refieren, en general, al sector del procesamiento de imágenes y, de manera más particular, a la derivación de croma de modo de intra predicción.
Antecedentes de la invención
La codificación de vídeo (codificación y decodificación de vídeo) es utilizada en un amplio rango de aplicaciones de vídeo digital, por ejemplo, TV digital de difusión, transmisión de vídeo sobre Internet y redes móviles, aplicaciones de conversación en tiempo real tales como chat de vídeo, conferencias de vídeo, discos DVD y Blu-ray, sistemas de adquisición y edición de contenido de vídeo, grabadoras de vídeo de 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 tener como resultado dificultades cuando los datos van a ser transmitidos en continuo o comunicados de otra manera a través de una red de comunicaciones con capacidad limitada de ancho de banda. Por lo tanto, datos de vídeo son comprimidos, en general, antes de ser comunicados a través de las redes de telecomunicaciones modernas de hoy en día. El tamaño de un vídeo también podría ser un problema cuando el vídeo está almacenado en un dispositivo de almacenamiento, debido a que los recursos de memoria pueden ser limitados. Dispositivos de compresión de vídeo con frecuencia utilizan software y/o hardware en la de origen para codificar los datos de vídeo antes de su transmisión o almacenamiento, disminuyendo de esta manera la cantidad de datos necesarios para representar imágenes de vídeo digitales. A continuación, los datos comprimidos son recibidos en el destino por un dispositivo de descompresión de vídeo que decodifica los datos de vídeo. Con recursos de red limitados y demandas cada vez mayores de calidad superior de vídeo, son deseables técnicas de compresión y descompresión mejoradas que ayuden en la relación de compresión con poco a ningún sacrificio en la calidad de la imagen.
El documento US20180241995A1 divulga un método de intra predicción que comprende las etapas de: obtener información sobre un modo de predicción de luma de un bloque actual e información sobre un modo de predicción de croma del bloque actual a partir de un flujo de bits; obtener un modo de intra predicción de luma del bloque actual con base en la información sobre el modo de predicción de luma; determinar un modo de intra predicción de croma del bloque actual con base en información sobre el modo de intra predicción de luma y la información sobre el modo de predicción de croma; y generar una muestra de predicción de croma del bloque actual con base en el modo de intra predicción de croma.
El documento US20180332283A1 divulga un método para procesar bloques de croma que comprende recibir un bloque de codificación desde un codificador; dividir el bloque de codificación en una pluralidad de bloques de croma; fusionar al menos dos bloques de croma entre la pluralidad de bloques de croma en un bloque fusionado.
La publicación de BENJAMIN BROSS, JAIME CHEN, SHAN LIU: “Versatile Video Coding (Borrador 6)”, 127. REUNIÓN MPEG; 20190708 - 20190712; GOTEMBURGO; (GRUPO DE EXPERTOS EN IMÁGENES EN MOVIMIENTO O ISO/IEC JTC1/SC29/WG11), no. JVET-02001-vA, 12 de julio de 2019 (2019-07-12), Gotemburgo SE, páginas 1 - 423, XP030208564, divulga una tecnología de codificación de vídeo conocida como Codificación de vídeo versátil.
La publicación de JANI LAINEMA ET AL: “Intra Coding of the HEVC Standard”; Transacciones del IEEE sobre circuitos y sistemas para tecnología de vídeo, 1 de diciembre de 2012, páginas 1792-1801, XP 055559664 divulga un proceso de intra codificación para el estándar HEVC.
Compendio
Las realizaciones de la presente solicitud proporcionan aparatos y métodos para codificación y decodificación según las reivindicaciones independientes. La invención está definida por el alcance de las reivindicaciones independientes. Las realizaciones específicas están definidas por las reivindicaciones dependientes.
Los objetivos anteriores así como otros se logran a través del asunto de las reivindicaciones independientes. Formas de implementación adicionales son aparentes a partir de las reivindicaciones dependientes, de la descripción y de las figuras.
Los detalles de una o más realizaciones se establecen en los dibujos adjuntos y en la siguiente descripción. Otras características, objetivos y ventajas serán aparentes a partir de la descripción, de los dibujos y de las reivindicaciones.
Breve descripción de los dibujos
En lo que sigue, se describen con más detalle realizaciones de la invención con referencia a las figuras y dibujos adjuntos, en los cuales:
la FIG. 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 FIG. 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 FIG. 2es un diagrama de bloques que muestra un ejemplo de un codificador de vídeo configurado para implementar las realizaciones de la invención;
la FIG. 3es un diagrama de bloques que muestra una estructura a modo de ejemplo de un decodificador de vídeo configurado para implementar las realizaciones de la invención;
la FIG. 4es un diagrama de bloques que ilustra un ejemplo de un aparato de codificación o un aparato de decodificación;
la FIG. 5es un diagrama de bloques que ilustra otro ejemplo de un aparato de codificación o un aparato de decodificación;
la FIG. 6es un ejemplo sobre el formato de submuestreo de croma 4:4:4;
la FIG. 7es un ejemplo sobre el formato de submuestreo de croma 4:2:0;
la FIG. 8es un ejemplo sobre el formato de submuestreo de croma 4:2:2;
la FIG. 9es un diagrama de bloques que ilustra un ejemplo sobre los modos de predicción;
la FIG. 10 es un ejemplo de modos correspondientes del modo original y el caso en el que se aplica submuestreo de croma en la dirección horizontal utilizando formato de submuestreo de croma 4:2:2.
la FIG. 11 es un diagrama de bloques que muestra una estructura a modo de ejemplo de un sistema de suministro de contenido 3100 el cual realiza un servicio de entrega de contenido.
la FIG. 12 es un diagrama de bloques que muestra una estructura de un ejemplo de un dispositivo terminal.
la FIG. 13 es un gráfico de flujo que muestra una realización del método que hace referencia a la presente invención.
la FIG. 14 es un diagrama de bloques que muestra una realización del aparato que hace referencia a la presente invención.
En lo que sigue, signos de referencia idénticos se refieren a características idénticas o al menos funcionalmente equivalentes en caso que no se especifiquen de manera explícita de otra manera.
Descripción detallada de las realizaciones
En la siguiente descripción, se hace referencia a las figuras adjuntas, las cuales forman parte de la divulgación, y las cuales muestran, a manera de ilustración, aspectos específicos de realizaciones de la invención o aspectos específicos en los cuales se pueden utilizar las realizaciones de la invención. Se entiende que las realizaciones de la invención pueden ser utilizadas en otros aspectos y comprenden cambios estructurales o lógicos no representados en las figuras. Por lo tanto, la siguiente descripción detallada, no se tomará en un sentido limitativo, y el alcance de la invención está definido por las reivindicaciones adjuntas.
Por ejemplo, se entiende que una divulgación en conexión con un método descrito también puede ser verdadera para un dispositivo o sistema correspondiente configurado para ejecutar el método, y viceversa. Por ejemplo, si se describe uno o una pluralidad de pasos de método específicos, un dispositivo correspondiente puede incluir una o una pluralidad de unidades, por ejemplo unidades funcionales, para ejecutar el paso de método o la pluralidad de pasos del método (por ejemplo una unidad que ejecuta uno o una pluralidad de pasos, o una pluralidad de unidades, cada una ejecutando uno o más de la pluralidad de pasos), incluso si dicha unidad o unidades no son explícitamente descritas o ilustradas en las figuras. Por otra parte, por ejemplo, si un aparato específico es descrito con base en una o una pluralidad de unidades, por ejemplo unidades funcionales, un método correspondiente puede incluir un paso para ejecutar la funcionalidad de una o una pluralidad de unidades (por ejemplo un paso que ejecuta la funcionalidad de una o una pluralidad de unidades, o una pluralidad de pasos, cada uno ejecutando la funcionalidad de una o más de la pluralidad de unidades), incluso si dicho paso o pluralidad de pasos no se describen o ilustran explícitamente en las figuras. Además, se entiende que las características de las realizaciones y/o aspectos a modo de ejemplo aquí descritos se pueden combinar entre sí, a menos que específicamente se observe de otra manera.
La codificación de vídeo habitualmente se refiere al procesamiento de una secuencia de imágenes, las cuales forman el vídeo o la secuencia de vídeo. En lugar del término “ imagen" se puede utilizar el término “fotograma" o “ imagen" como sinónimos en el sector 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 decodificación de vídeo. La codificación de vídeo es ejecutada en el lado de origen, habitualmente comprendiendo el procesamiento (por ejemplo por compresión) de las imágenes de vídeo originales para reducir la cantidad de datos requeridos para representar las imágenes de vídeo (para almacenamiento y/o transmisión más eficientes). La decodificación de vídeo es ejecutada en el lado de destino y habitualmente comprende el procesamiento inverso en comparación con el codificador para reconstruir las imágenes de vídeo. Las realizaciones que hacen referencia a “codificación" de imágenes de vídeo (o imágenes en general) deberán entenderse como relacionadas con la “codificación“ o “decodificación“ de imágenes de vídeo o secuencias de vídeo respectivas. La combinación de la parte de codificación y la parte de decodificación se denomina también CODEC (Codificación y Decodificación).
En el caso de codificación de vídeo sin pérdidas, las imágenes de vídeo originales pueden ser reconstruidas, es decir las imágenes de vídeo reconstruidas tienen la misma calidad que las imágenes de vídeo originales (asumiendo que no hay pérdida de transmisión u otra pérdida de datos durante el almacenamiento o la transmisión). En caso de decodificación de vídeo con pérdidas, se ejecuta compresión adicional, por ejemplo mediante cuantificación, para reducir la cantidad de datos que representan las imágenes de vídeo, las cuales no pueden ser completamente reconstruidas en el decodificador, es decir la calidad de las imágenes de vídeo reconstruidas es inferior o peor en comparación con la calidad de las imágenes de vídeo originales.
Varias normas de codificación de vídeo pertenecen al grupo de “códecs de vídeo híbrido con pérdidas'' (es decir combinan predicción espacial y temporal en el dominio de la muestra y codificación de transformada 2D para aplicar cuantificación en el dominio de la transformada). Cada imagen de una secuencia de vídeo habitualmente es dividida en un conjunto de bloques que no se superponen y la codificación habitualmente es ejecutada en un nivel de bloque. En otras palabras, en el codificador el vídeo habitualmente es procesado, es decir codificado, en un nivel de bloque (bloque de vídeo), por ejemplo utilizando predicción espacial (intra imagen) y/o predicción temporal (inter imagen) para generar un bloque de predicción, sustrayendo el bloque de predicción del bloque actual (bloque actualmente procesado/a ser procesado) para obtener un bloque de residuo, transformando el bloque de residuo y cuantificando el bloque de residuo en el dominio de la transformada para reducir la cantidad de datos que se van a transmitir (compresión), mientras que en el decodificador el procesamiento inverso, en comparación con el codificador, es aplicado al bloque codificado o comprimido para reconstruir el bloque actual para representación. Además, el codificador duplica el bucle de procesamiento del decodificador de manera que ambos generarán predicciones idénticas (por ejemplo intra predicciones e inter predicciones) y/o reconstrucciones para procesamiento, es decir codificación, de los bloques subsiguientes.
En las siguientes realizaciones de un sistema de codificación de vídeo 10, un codificador de vídeo 20 y un decodificador de vídeo 30 se describen con base en las figuras 1 a 3.
La FIG. 1A es un diagrama de bloques esquemático que ilustra un ejemplo de sistema de codificación 10, por ejemplo un sistema de codificación de vídeo 10 (o para abreviar sistema de codificación 10) que puede utilizar técnicas de esta presente solicitud. El codificador de vídeo 20 (o para abreviar codificador 20) y el decodificador de vídeo 30 (o para abreviar decodificador 30) del sistema de codificación de vídeo 10 representan ejemplos de dispositivos que pueden ser configurados para ejecutar técnicas según diversos ejemplos descritos en la presente solicitud.
Tal como se muestra en la FIG. 1A, el sistema de codificación 10 comprende un dispositivo de origen 12 configurado para proporcionar datos de imagen codificada 21 por ejemplo, a un dispositivo de destino 14 para decodificar los datos de imagen codificada 13.
El dispositivo de origen 12 comprende un codificador 20, y adicionalmente, es decir opcionalmente, puede comprender una fuente de imagen 16, un preprocesador (o unidad de preprocesamiento) 18, por ejemplo un preprocesador de imagen 18, y una interfaz de comunicación o unidad de comunicación 22.
La fuente de imagen 16 puede comprender o puede ser cualquier tipo de dispositivo de captura de imagen, por ejemplo una cámara para capturar una imagen del mundo real y/o cualquier tipo de dispositivo de generación de imagen, por ejemplo un procesador de gráficos por ordenador para generar una imagen animada por ordenador, o cualquier otro 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 los mismos (por ejemplo una imagen de realidad aumentada (Augmented Reality, AR)). La fuente de imagen puede ser cualquier tipo de memoria o almacenamiento que almacene cualquiera de las imágenes anteriormente mencionadas.
A diferencia del preprocesador 18 y el procesamiento ejecutado por la unidad de preprocesamiento 18, la imagen o datos de imagen 17 también se pueden denominar imagen sin procesar o datos de imagen 17 sin procesar.
El preprocesador 18 está configurado para recibir los datos de imagen 17 (sin procesar) y para ejecutar preprocesamiento en los datos de imagen 17 para obtener una imagen preprocesada 19 o datos de imagen preprocesada 19. El preprocesamiento ejecutado por el preprocesador 18, por ejemplo, puede comprender recorte, conversión de formato de color (por ejemplo de RGB a YCbCr), corrección de color, o eliminación de ruido. Se puede entender 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 preprocesada 19 y puede proporcionar datos de imagen codificada 21 (detalles adicionales se describirán a continuación, por ejemplo, con base en la FIG. 2).
La interfaz de comunicación 22 del dispositivo de origen 12 se puede configurar para recibir los datos de imagen codificada 21 y transmitir los datos de imagen codificada 21 (o cualquier versión procesada adicional de los mismos) sobre el 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 decodificador 30 (por ejemplo un decodificador de vídeo 30), y adicionalmente, es decir opcionalmente, puede comprender una interfaz de comunicación o unidad de comunicación 28, un postprocesador 32 (o unidad de postprocesamiento 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 codificada 21 (o cualquier versión procesada adicional 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 codificada, y proporcionar los datos de imagen codificada 21 al decodificador 30.
La interfaz de comunicación 22 y la interfaz de comunicación 28 pueden ser configuradas para transmitir o recibir los datos de imagen codificada 21 o los datos codificados 13 a través de un enlace de comunicación directa entre el dispositivo de origen 12 y el dispositivo de destino 14, por ejemplo una conexión cableada o inalámbrica directa, o a través de cualquier tipo de red, por ejemplo una red cableada 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 por ejemplo, puede ser configurada para empaquetar los datos de imagen codificada 21 en un formato apropiado, por ejemplo paquetes, y/o procesar los datos de imagen codificada utilizando cualquier tipo de codificación de transmisión o procesamiento para transmisión sobre un enlace de comunicación o red de comunicación.
La interfaz de comunicación 28, formando la contraparte de la interfaz de comunicación 22, por ejemplo, puede ser configurada para recibir los datos transmitidos y procesar los datos de transmisión utilizando cualquier tipo de decodificación o procesamiento de transmisión correspondiente y/o desempaquetado para obtener datos de imagen codificada 21.
Ambas, la interfaz de comunicación 22 y la interfaz de comunicación 28 pueden ser configuradas como interfaces de comunicación unidireccionales conforme a lo indicado por la flecha para el canal de comunicación 13 en la FIG. 1A apuntando desde el dispositivo de origen 12 al dispositivo de destino 14, o interfaces de comunicación bidireccionales, y se pueden configurar, 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 transmisión de datos, por ejemplo transmisión de datos de imagen codificada.
El decodificador 30 está configurado para recibir los datos de imagen codificada 21 y proporcionar los datos de imagen decodificados 31 o una imagen decodificada 31 (detalles adicionales se describirán a continuación, por ejemplo, con base en la FIG. 3 o la FIG. 5).
El postprocesador 32 del dispositivo de destino 14 está configurado para postprocesar los datos de imagen decodificados 31 (también denominados datos de imagen reconstruida), por ejemplo la imagen decodificada 31, para obtener datos de imagen postprocesada 33, por ejemplo una imagen postprocesada 33. El postprocesamiento ejecutado por la unidad de postprocesamiento 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 decodificada 31 para visualización, por ejemplo a través del dispositivo de visualización 34.
El dispositivo de visualización 34 del dispositivo de destino 14 está configurado para recibir los datos de imagen postprocesada 33 para mostrar la imagen, por ejemplo a un usuario o un telespectador. 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, por ejemplo pueden comprender pantallas de cristal líquido (Liquid Crystal Displays, LCD), pantallas de diodos de emisión de luz orgánica (Organic Light Emitting Diodes, OLED), pantallas de plasma, proyectores, pantallas micro LED, cristal líquido sobre silicio (Liquid Crystal con Silicon, LCoS), procesador de luz digital (Digital Light Processor, DLP) o cualquier otro tipo de pantalla.
Aunque la FIG. 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 la funcionalidad correspondiente y el dispositivo de destino 14 o la funcionalidad correspondiente. En dichas realizaciones el dispositivo de origen 12 o la funcionalidad correspondiente y el dispositivo de destino 14 o la funcionalidad correspondiente pueden ser implementados utilizando el mismo hardware y/o software o mediante hardware y/o software separados o cualquier combinación de los mismos.
Tal como resultará aparente para un experto en la materia con base en la descripción, la existencia y (exacta) división de las 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 FIG. 1A, pueden variar dependiendo del dispositivo y aplicación reales en el dispositivo y aplicación reales.
El codificador 20 (por ejemplo un codificador de vídeo 20) o el decodificador 30 (por ejemplo un decodificador de vídeo 30) o ambos el codificador 20 y el decodificador 30 pueden ser implementados a través de circuitos de procesamiento tal como se utilizan en la FIG. 1B, tal como uno o más microprocesadores, procesadores de señal digital (Digital Signal Processors, DSP), circuitos integrados de aplicación específica (Application Specific Integrated Circuits, ASIC), matrices de puertas programables en campo (Field Programmable Gate Arrays, FPGA), lógica discreta, hardware, codificación de vídeo dedicada o cualquier combinación de los mismos. El codificador 20 puede ser implementado 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 FIG. 2 y/o cualquier otro sistema o subsistema de codificador aquí descrito. El decodificador 30 puede ser implementado a través de los circuitos de procesamiento 46 para incorporar los diversos módulos, tal como se analizó con respecto al decodificador 30 de la FIG. 3 y/o a cualquier otro sistema o subsistema de decodificador aquí descrito. Los circuitos de procesamiento pueden ser configurados para ejecutar las diversas operaciones tal como se analiza más adelante. Tal como se muestra en la FIG. 5, si las técnicas son implementadas parcialmente en software, un dispositivo puede almacenar instrucciones para el software en un medio de almacenamiento no-transitorio legible por ordenador conveniente, y puede ejecutar las instrucciones en hardware utilizando uno o más procesadores para llevar a cabo las técnicas de esta divulgación. Cualquiera del codificador de vídeo 20 y el decodificador de vídeo 30 puede ser integrado como parte de un codificador/decodificador (CODEC) combinado en un solo dispositivo, por ejemplo, tal como se muestra en la FIG. 1B.
El dispositivo de origen 12 y el dispositivo de destino 14 pueden comprender cualquiera de un amplio rango de dispositivos, incluyendo cualquier tipo de dispositivos manuales o estacionarios, por ejemplo ordenadores notebook o laptop, teléfonos móviles, teléfonos inteligentes, tabletas u ordenadores de tableta, cámaras, ordenadores de escritorio, decodificadores, televisiones, dispositivos de visualización, reproductores de medios digitales, consolas de juegos de vídeo, dispositivos de transmisión en continuo de vídeo (tal como servidores de servicios de contenido o servidores de entrega de contenido), dispositivo receptor de difusión, dispositivo transmisor de difusión, o similar y puede no utilizar ningún tipo o utilizar 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 FIG. 1A es simplemente un ejemplo y las técnicas de la presente solicitud pueden ser aplicadas a ajustes de codificación de vídeo (por ejemplo, codificación de vídeo o decodificación de vídeo) que no necesariamente incluyen alguna comunicación de datos entre los dispositivos de codificación y decodificación. En otros ejemplos, se recuperan datos de una memoria local, transmitidos sobre 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 decodificación de vídeo puede recuperar y decodificar datos de la memoria. En algunos ejemplos, la codificación y decodificación es ejecutada por dispositivos que no se comunican entre sí, sino que simplemente codifican datos en la memoria y/o recuperan y decodifican datos de la memoria.
Por conveniencia de la descripción, aquí se describen realizaciones de la invención, por ejemplo, por referencia a la codificación de vídeo de alta eficiencia (High-Efficiency Video Coding, HEVC) o al software de referencia de la Codificación de Vídeo Versátil (Versatile Video Coding, VVC), la norma de codificación de vídeo de siguiente generación desarrollada por el equipo de colaboración conjunto en codificación de vídeo (Joint Collaboration Team on Video Coding, JCT-VC) del grupo de expertos de codificación de vídeo ITU-T (Video Coding Experts Group, VCEG) y el grupo de expertos de imágenes en movimiento (Motion Picture Experts Group, MPEG) de ISO/IEC. Un experto en la materia entenderá que las realizaciones de la invención no se limitan a HEVC o VVC.
Codificador y método de codificación
La FIG. 2 muestra un diagrama de bloques esquemático de un codificador de vídeo a modo de ejemplo 20 que está configurado para implementar las técnicas de la presente solicitud. En el ejemplo de la FIG. 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 memoria intermedia de imágenes decodificadas (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 inter predicción 244, una unidad de intra predicción 254 y una unidad de división 262. La unidad de inter predicción 244 puede incluir una unidad de estimación del movimiento y una unidad de compensación del movimiento (que no se muestra). Un codificador de vídeo 20 tal como se muestra en la FIG.
2 también se puede denominar 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 referidas como formando una trayectoria de señal de avance 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 decodificadas (DPB) 230, la unidad de inter predicción 244 y la unidad de intra predicción 254 pueden ser referidas como formando una trayectoria de señal de retorno del codificador de vídeo 20, en donde la trayectoria de la señal de retorno del codificador de vídeo 20 corresponde a la trayectoria de señal del decodificador (ver decodificador de vídeo 30 en la FIG. 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 decodificadas (DPB) 230, la unidad de inter predicción 244 y la unidad de intra predicción 254 también se refieren como formando el “decodificador integrado" del codificador de vídeo 20.
Imágenes y división de imagen (Imágenes y Bloques)
El codificador 20 puede estar 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 secuencia de vídeo. La imagen o datos de imagen recibidos también pueden ser una imagen preprocesada 19 (o datos de imagen preprocesados 19). En aras de la sencillez, la siguiente descripción se refiere a la imagen 17. La imagen 17 también se puede referir como imagen actual o imagen a ser codificada (en concreto en la codificación de vídeo, para distinguir la imagen actual de otras imágenes, por ejemplo imágenes previamente codificadas y/o decodificadas 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 vista como una matriz bidimensional o matriz de muestras con valores de intensidad. Una muestra en la matriz también se puede denominar píxel (forma corta de elemento de imagen) o un pel. El número de muestras en la dirección (o eje) horizontal y vertical de la matriz o imagen definen el tamaño y/o resolución de la imagen. Para representación de color, habitualmente se emplean tres componentes de color, es decir la imagen puede ser representada o puede incluir tres matrices de muestra. En formato o espacio de color RBG una imagen comprende una matriz de muestra de rojo, verde y azul correspondiente. No obstante, en la codificación de vídeo, cada píxel habitualmente es representado en un formato o espacio de color de luminancia y crominancia, por ejemplo YCbCr, el cual comprende una componente de luminancia, indicada por Y (en ocasiones también se utiliza L) y dos componentes de crominancia indicadas por Cb y Cr. La componente de luminancia Y (o luma para abreviar) representa la brillantez o la intensidad del nivel de grises (por ejemplo tal como en una imagen en escala de grises), mientras que las dos componentes de crominancia (o croma para abreviar) Cb y Cr representan la cromaticidad o componentes de información de color. Por consiguiente, una imagen en formato YCbCr comprende una matriz de muestras de luminancia de valores de muestras de luminancia (Y), y dos matrices de muestras de crominancia de valores de crominancia (Cb y Cr). Las imágenes en formato RGB pueden ser convertidas o transformadas 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 solamente una matriz de muestras de luminancia. Por consiguiente, una imagen puede ser, por ejemplo, una matriz de muestras de luminancia en formato monocromático o una matriz de muestras de luminancia y dos matrices correspondientes de muestras de crominancia 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 de imagen (que no se muestra en la FIG. 2) configurada para dividir la imagen 17 en una pluralidad de bloques 203 de imagen (habitualmente no se superponen). Estos bloques también se pueden denominar bloques raíz, macro bloques (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 de imagen puede ser configurada para utilizar el mismo tamaño de bloque para todas las imágenes de una secuencia de vídeo y la cuadrícula correspondiente que define el tamaño de bloque, o para cambiar el tamaño de bloque entre imágenes o subconjuntos o grupos de imágenes, y dividir cada imagen en los bloques correspondientes.
En realizaciones adicionales, el codificador de vídeo puede ser 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 203 de imagen también se puede denominar un bloque de imagen actual o bloque de imagen a ser codificado.
Al igual que la imagen 17, el bloque 203 de imagen una vez más es o puede ser visto como una matriz bidimensional o matriz de muestras con valores de intensidad (valores de muestra), aunque de dimensión más pequeña 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 caso de una imagen 17 monocromática, o una matriz de luma o crominancia en el caso de una imagen de color) o tres matrices de muestras (por ejemplo una matriz de luma y dos matrices de crominancia 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 la dirección (o eje) horizontal y vertical del bloque 203 define el tamaño del bloque 203. Por consiguiente, un bloque, por ejemplo, puede ser una matriz MxN (M-columnas por N-filas) de muestras, o una matriz MxN de coeficientes de transformada.
Las realizaciones del codificador de vídeo 20, tal como el mostrado en la FIG. 2, pueden ser configuradas para codificar la imagen 17 bloque por bloque, por ejemplo, la codificación y la predicción es ejecutada por cada bloque 203.
Las realizaciones del codificador de vídeo 20 tal como el mostrado en la FIG. 2 pueden ser configuradas, además, para dividir y/o codificar la imagen utilizando segmentos (también denominados segmentos de vídeo), en donde una imagen puede ser dividida en o codificada utilizando uno o más segmentos (habitualmente que no se superponen), y cada segmento puede comprender uno o más bloques (por ejemplo, CTU).
Las realizaciones del codificador de vídeo 20 tal como el mostrado en la FIG. 2 pueden ser configuradas, además, para dividir y/o codificar la imagen utilizando 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 ser dividida en o codificada utilizando uno o más grupos de mosaicos (habitualmente que no se superponen), 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 ser de 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 ser configurada para calcular un bloque de residuo 205 (también referido como residuo 205) con base en el bloque 203 de imagen y un bloque de predicción 265 (detalles adicionales referentes al bloque de predicción 265 se proporcionan más adelante), por ejemplo sustrayendo valores muestra del bloque de predicción 265 de los valores muestra del bloque 203 de imagen, muestra por muestra (píxel por píxel) para obtener el bloque de residuo 205 en el dominio de la muestra.
Transformación
La unidad de procesamiento mediante transformada 206 puede ser configurada para aplicar una transformada, por ejemplo una transformada de coseno discreta (DCT) o una transformada de seno discreta (DST), en los valores muestra del bloque de residuo 205 para obtener coeficientes de transformada 207 en el dominio de la transformada. Los coeficientes de transformada 207 también pueden ser denominados coeficientes residuales de transformada y representan el bloque de residuo 205 en el dominio de la transformada.
La unidad de procesamiento mediante transformada 206 puede ser configurada para aplicar aproximaciones enteras de d Ct /DST, tal como las transformadas especificadas para H.265/HEVC. En comparación con una transformada DCT ortogonal, dichas aproximaciones enteras habitualmente están escaladas por un cierto factor. A fin de preservar la norma del bloque de residuo que es procesado mediante transformadas directa e inversa, factores de escalado adicionales son aplicados como parte del proceso mediante transformada. Los factores de escalado habitualmente son elegidos con base en ciertas restricciones tales como factores de escalado que son una potencia de dos para operaciones de cambio, profundidad de bit de los coeficientes de transformada, desfase entre precisión y costes de implementación, etc. Factores de escalado específicos, por ejemplo, son especificados para la transformada inversa, por ejemplo por la unidad de procesamiento mediante transformada inversa 212 (y la transformada inversa correspondiente, por ejemplo por la unidad de procesamiento mediante transformada inversa 312 en el decodificador de vídeo 30 y factores de escalado correspondientes para la transformada directa, por ejemplo por la unidad de procesamiento mediante transformada 206, en un codificador 20 pueden ser especificados de manera correspondiente.
Las realizaciones del codificador de vídeo 20 (respectivamente la unidad de procesamiento mediante transformada 206) pueden ser configuradas para emitir parámetros de transformada, por ejemplo un tipo de transformada o transformadas, 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 decodificador de vídeo 30 pueda recibir y utilizar los parámetros de transformada para decodificación.
Cuantificación
La unidad de cuantificación 208 puede ser configurada para cuantificar los coeficientes de transformada 207 con el fin de obtener coeficientes cuantificados 209, por ejemplo aplicando una cuantificación escalar o cuantificación de vector. Los coeficientes cuantificados 209 también pueden ser denominados coeficientes de transformada cuantificados 209 o coeficientes residuales cuantificados 209.
El proceso de cuantificación puede reducir la profundidad de bit asociada con algunos o todos los coeficientes de transformada 207. Por ejemplo, un coeficiente de transformada de n-bits puede ser redondeado hacia abajo a un coeficiente de transformada de m-bits durante la cuantificación, donde n es mayor que m. El grado de cuantificación puede ser modificado ajustando un parámetro de cuantificación (Quantization Parameter, QP). Por ejemplo para cuantificación escalar, se puede aplicar un escalado diferente para lograr una cuantificación más fina o más grosera. Tamaños de paso de cuantificación más pequeños corresponden a una cuantificación más fina, mientras que tamaños de paso de cuantificación más grandes corresponden a una cuantificación más grosera. El tamaño de paso de cuantificación aplicable puede ser indicado por un parámetro de cuantificación (QP). El parámetro de cuantificación puede ser, por ejemplo, un índice a un conjunto predefinido de tamaños de pasos de cuantificación aplicables. Por ejemplo, parámetros de cuantificación pequeños pueden corresponder a cuantificación fina (tamaños pequeños de pasos de cuantificación) y parámetros de cuantificación grandes pueden corresponder a cuantificación grosera (tamaños grandes de pasos de cuantificación) o viceversa. La cuantificación puede incluir división por un tamaño de paso de cuantificación y una descuantificación inversa y/o correspondiente, por ejemplo mediante la unidad de cuantificación inversa 210, puede incluir multiplicación por el tamaño del paso de cuantificación.
Las realizaciones según algunas normas, por ejemplo HEVC, pueden ser configuradas para utilizar un parámetro de cuantificación con el fin de determinar el tamaño del paso de cuantificación. En general, el tamaño de paso de cuantificación puede ser calculado con base en un parámetro de cuantificación utilizando una aproximación de punto fijo de una ecuación que incluye división. Factores de escalado adicionales pueden ser introducidos para cuantificación y descuantificación con el fin de restaurar la norma del bloque de residuo que pudiera ser modificada debido al escalado utilizado en la aproximación de punto fijo de la ecuación para tamaño de paso de cuantificación y parámetro de cuantificación. En una implementación a modo de ejemplo, el escalado de la transformada inversa y la descuantificación podrían ser combinados. Alternativamente, tablas de cuantificación personalizadas pueden ser utilizadas y señalizadas desde un codificador a un decodificador, por ejemplo en un flujo de bits. La cuantificación es una operación con pérdidas, en donde la pérdida aumenta con el incremento de los tamaños de paso de cuantificación.
Las realizaciones del codificador de vídeo 20 (respectivamente, unidad de cuantificación 208) pueden ser configuradas 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 decodificador de vídeo 30 puede recibir y aplicar los parámetros de cuantificación para decodificació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 coeficientes descuantificados 211, por ejemplo aplicando lo inverso del esquema de cuantificación aplicado por la unidad de cuantificación 208 con base en o utilizando el mismo tamaño de paso de cuantificación que la unidad de cuantificación 208. Los coeficientes descuantificados 211 también pueden ser denominados coeficientes residuales descuantificados 211 y corresponden - aunque habitualmente no son idénticos a los coeficientes de transformada debido a la pérdida por cuantificación - a los coeficientes de la transformada 207.
Transformada 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 inversa de coseno discreta (DCT) o una transformada inversa de seno discreta (DST), u otras transformadas inversas, para obtener un bloque de residuo reconstruido 213 (o coeficientes descuantificados correspondientes 213) en el dominio de la muestra. El bloque de residuo reconstruido 213 también se puede denominar bloque de transformada 213.
Reconstrucción
La unidad de reconstrucción 214 (por ejemplo sumadora 214) está configurada para agregar el bloque de transformada 213 (es decir bloque de residuo reconstruido 213) al bloque de predicción 265 para obtener un bloque reconstruido 215 en el dominio de la muestra, por ejemplo agregando, muestra por muestra, los valores muestra del bloque de residuo reconstruido 213 y los valores muestra del bloque de predicción 265.
Filtrado
La unidad de filtro de bucle 220 (o para abreviar “filtro de bucle" 220), 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, por ejemplo, está configurada para suavizar las transiciones de píxel o mejorar de otra manera 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 desfase adaptable a la muestra (Sample Adaptive Offset, SAO) o uno o más filtros diferentes, por ejemplo un filtro bilateral, un filtro de bucle adaptable (Adaptive Loop Filter, ALF), un filtro 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 FIG. 2 como un filtro de bucle, en otras configuraciones, la unidad de filtro de bucle 220 puede ser implementada como un filtro post-bucle. El bloque filtrado 221 también se puede denominar bloque filtrado reconstruido 221.
Las realizaciones del codificador de vídeo 20 (respectivamente unidad de filtro de bucle 220) pueden ser configuradas para emitir parámetros de filtro de bucle (tal como información de desfase de muestra adaptable), por ejemplo directamente o codificados a través de la unidad de codificación por entropía 270, de modo que, por ejemplo, un decodificador 30 pueda recibir y aplicar los mismos parámetros de filtro de bucle o filtros de bucle respectivos para decodificación.
Memoria intermedia de imágenes decodificadas
La memoria intermedia de imágenes decodificadas (Decoded Picture Buffer, 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 a través del codificador de vídeo 20. La DPB 230 puede estar formada por cualquiera de una variedad de dispositivos de memoria, tal como memoria de acceso aleatorio dinámica (DRAM), incluyendo DRAM sincronizada (SDRAM), RAM magneto-resistiva (MRAM), RAM resistiva (RRAM), u otros tipos de dispositivos de memoria. La memoria intermedia de imágenes decodificadas (DPB) 230 puede ser configurada para almacenar uno o más bloques filtrados 221. La memoria intermedia de imágenes decodificadas 230 además puede ser configurada para almacenar otros bloques previamente filtrados, por ejemplo, bloques previamente reconstruidos y filtrados 221, de la misma imagen actual o de imágenes diferentes, por ejemplo imágenes previamente reconstruidas, y puede proporcionar imágenes completas previamente reconstruidas, es decir decodificadas, (y bloques de referencia y muestras correspondientes) y/o una imagen actual parcialmente reconstruida (y bloques de referencia y muestras correspondientes), por ejemplo para inter predicción. La memoria intermedia de imágenes decodificadas (DPB) 230 también puede ser configurada para almacenar uno o más bloques reconstruidos no filtrados 215, o en general muestras reconstruidas no filtradas, por ejemplo si el bloque reconstruido 215 no es filtrado por la unidad de filtro de bucle 220, o cualquier otra versión adicional procesada de los bloques reconstruidos o muestras.
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 inter predicción 244 y una unidad de intra predicción 254, y está configurada para recibir u obtener datos de imagen originales, por ejemplo un bloque 203 original (bloque 203 actual de la imagen 17 actual), y datos de imagen reconstruida por ejemplo muestras reconstruidas filtradas y/o no filtradas o bloques de la misma imagen (actual) y/o de una o una pluralidad de imágenes previamente decodificadas, por ejemplo de la memoria intermedia de imágenes decodificadas 230 u otras memorias intermedias (por ejemplo una memoria intermedia de línea, que no se muestra). Los datos de imagen reconstruida son utilizados como datos de imagen de referencia para predicción, por ejemplo inter predicción o intra predicción, para obtener un bloque de predicción 265 o predictor 265.
La unidad de selección de modo 260 puede ser configurada para determinar o seleccionar una división para un modo de predicción de bloque actual (incluyendo la no división) y un modo de predicción (por ejemplo un modo de intra o inter predicción) y generar un bloque de predicción 265 correspondiente, el cual es utilizado para el cálculo del bloque de residuo 205 y para la reconstrucción del bloque reconstruido 215.
Las realizaciones de la unidad de selección de modo 260 pueden ser configuradas para seleccionar el modo de división y predicción (por ejemplo de entre aquellos soportados por o disponibles para la unidad de selección de modo 260), que proporcione el mejor emparejamiento 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 lo que considere o equilibre ambos. La unidad de selección de modo 260 puede ser configurada para determinar el modo de división y predicción con base 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. global sino que también se pueden referir al cumplimiento de un criterio de terminación o selección tal como un valor que excede o que queda por debajo de un umbral u otras restricciones que potencialmente conducen a una “selección sub-óptima“ pero reduciendo la complejidad y el tiempo de procesamiento.
En otras palabras, la unidad de división 262 puede ser configurada para dividir el bloque 203 en unidades de bloque más pequeñas o subbloques (que forman bloques nuevamente), por ejemplo utilizando iterativamente división de árbol cuaternario (Quad-Tree-Partitioning, QT), división binaria (Binary Partitioning, BT) o división de árbol ternario (T riple-T ree-Partitioning, TT) o cualquier combinación de las mismas, y ejecutar, 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 203 dividido y los modos de predicción son aplicados a cada una de las divisiones de bloque o subbloques.
En lo que sigue, el procesamiento de división (por ejemplo por la unidad de división 260) y predicción (por la unidad de inter predicción 244 y la unidad de intra predicción 254) ejecutado por un codificador de vídeo 20 a modo de ejemplo se explicará con más detalle.
División
La unidad de división 262 puede partir (o dividir) un bloque 203 actual 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 (los cuales también se pueden denominar subbloques) se pueden dividir adicionalmente en divisiones incluso más pequeñas. Esta también se refiere a división de árbol o división de árbol jerárquica, en donde un bloque raíz, por ejemplo, al nivel 0 del árbol raíz (nivel de jerarquía 0, profundidad 0), puede ser dividido de manera recursiva, por ejemplo puede ser dividido en dos o más bloques de un siguiente nivel de árbol inferior, por ejemplo, nodos en el nivel de árbol 1 (nivel de jerarquía 1, profundidad 1), en donde estos bloques nuevamente pueden ser divididos en dos o más bloques de un siguiente nivel inferior, por ejemplo nivel de árbol 2 (nivel de jerarquía 2, profundidad 2), etc. hasta que la división finaliza, por ejemplo, debido a que se cumple un criterio de terminación, por ejemplo se alcanza una profundidad de árbol máxima o tamaño de bloque mínimo. Los bloques que no son divididos adicionalmente también se denominan bloques hoja o nodos hoja del árbol. Un árbol que utiliza la división en dos divisiones se denomina árbol binario (BT), un árbol que utiliza la división en tres divisiones se denomina árbol ternario (TT), y un árbol que utiliza la división en cuatro divisiones se denomina árbol cuaternario (QT).
Tal como se mencionó anteriormente, el término “bloque“ tal como aquí se utiliza puede ser una porción, en concreto una porción 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 transformada (Transform Unit, TU) y/o a los bloques correspondientes, por ejemplo, un bloque de árbol de codificación (CTB), un bloque de codificación (CB), un bloque de transformada (Tb ) o un bloque de predicción (PB).
Por ejemplo una unidad de árbol de codificación (CTU) puede ser o comprender un CTB de muestras de luma, dos CTB correspondientes de muestras de croma de una imagen que tiene tres matrices de muestra, o un CTB de muestras de una imagen monocromática o una imagen que es 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 muestras NxN para cierto valor de N, de tal manera que la división de un componente en varios c Tb 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 muestra, o un bloque de codificación de muestras de una imagen monocromática o una imagen que es codificada 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 muestras MxN 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) puede ser dividida en varias CU utilizando una estructura de árbol cuaternario designada como árbol de codificación. La decisión respecto a si se codifica un área de imagen utilizando predicción de inter imagen (temporal) o intra imagen (espacial) se realiza al nivel de CU. Cada CU puede ser dividida adicionalmente 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 es transmitida al decodificador sobre la base de la PU. Después de obtener el bloque de residuo aplicando el proceso de predicción con base en el tipo de división de PU, una CU puede ser dividida en unidades de transformada (TU) según otra estructura de árbol cuaternario similar al árbol de codificación para la CU.
En realizaciones, por ejemplo, según la última norma de codificación de vídeo actualmente en desarrollo, la cual se denomina codificación de vídeo versátil (VVC), una división de árbol cuaternario y árbol binario combinada (QTBT) es utilizada, por ejemplo, para dividir un bloque de codificación. En la estructura de bloque de QTBT, una CU puede tener una forma cuadrada o rectangular. Por ejemplo, una unidad de árbol de codificación (CTU) primero es dividida por una estructura de árbol cuaternario. Los nodos hoja de árbol cuaternario son divididos adicionalmente por una estructura de árbol binario o árbol ternario (o triple). Los nodos hoja de árbol de división son denominados unidades de codificación (CU), y esa segmentación es utilizada para procesamiento de predicción y transformada sin división adicional. Esto significa que la CU, la PU y la TU tienen el mismo tamaño de bloque en la estructura de bloque de codificación de QTBT. En paralelo, se puede utilizar la división múltiple, por ejemplo, la división de árbol triple para ser utilizada junto con la estructura de bloque de QTBT.
En un ejemplo, la unidad de selección de modo 260 del codificador de vídeo 20 se puede configurar para ejecutar cualquier combinación de las técnicas de división aquí descritas.
Tal como se describió anteriormente, el codificador de vídeo 20 está configurado para determinar o seleccionar el mejor modo de predicción o un modo de predicción óptimo de entre un conjunto de modos de predicción (por ejemplo, predeterminado). El conjunto de modos de predicción puede comprender, por ejemplo, modos de intra predicción y/o modos de inter predicción.
Intra predicción
El conjunto de modos de intra predicción puede comprender 35 modos de intra predicción diferentes, por ejemplo modos no direccionales tales como el modo de DC (o medio) y el modo plano o modos direccionales, por ejemplo conforme a lo definido en HEVC, o puede comprender 67 modos de intra predicción diferentes, por ejemplo modos no direccionales tales como el modo de DC (o medio) y el modo plano, o modos direccionales, por ejemplo conforme a lo definido para VVC.
La unidad de intra predicción 254 está configurada para utilizar muestras reconstruidas de bloques vecinos de la misma imagen actual para generar un intra bloque de predicción 265 según un modo de intra predicción del conjunto de modos de intra predicción.
La unidad de intra predicción 254 (o en general la unidad de selección de modo 260) está configurada adicionalmente para emitir parámetros de intra predicción (o en general información indicativa del modo de intra predicción seleccionado para el bloque) a 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 codificada 21, de modo que, por ejemplo, el decodificador de vídeo 30 pueda recibir y utilizar los parámetros de predicción para decodificación.
Inter predicción
El conjunto de (o posibles) modos de inter predicción depende de las imágenes de referencia disponibles (es decir imágenes previas al menos parcialmente decodificadas, por ejemplo almacenadas en DBP 230) y otros parámetros de inter predicción, por ejemplo ya sea toda la imagen de referencia o solamente una parte; por ejemplo un área de ventana de búsqueda alrededor del área del bloque actual, de la imagen de referencia, es utilizada para buscar un mejor bloque de referencia de emparejamiento, y/o por ejemplo si se aplica la interpolación de píxel, por ejemplo interpolación de medio/semi-pel, y/o interpolación de cuarto-pel, o no.
Adicional a los modos de predicción anteriores, se puede aplicar el modo de salto, y/o modo directo.
La unidad de inter predicción 244 puede incluir una unidad de estimación de movimiento (Motion Estimation, ME) y una unidad de compensación del movimiento (Motion Compensation, MC) (ninguna se muestra en la FIG. 2). La unidad de estimación de movimiento puede ser configurada para recibir u obtener el bloque 203 de imagen (bloque 203 de imagen actual de la imagen 17 actual) y una imagen decodificada 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 previamente decodificadas 231, para estimación de movimiento. Por ejemplo, una secuencia de vídeo puede comprender la imagen actual y las imágenes previamente decodificadas 231, o en otras palabras, la imagen actual y las imágenes previamente decodificadas 231 pueden ser parte de o formar una secuencia de imágenes que forman una secuencia de vídeo.
El codificador 20, por ejemplo, puede ser configurado para seleccionar un bloque de referencia de entre 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 desfase (desfase espacial) entre la posición (coordenadas x, y) del bloque de referencia y la posición del bloque actual como parámetros de inter predicción, a la unidad de estimación de movimiento. Este desfase también se denomina vector de movimiento (Motion Vector, MV).
La unidad de compensación del movimiento está configurada para obtener, por ejemplo recibir, un parámetro de inter predicción y ejecutar inter predicción con base en o utilizando el parámetro de inter predicción para obtener un bloque de inter predicción 265. La compensación del movimiento, ejecutada por la unidad de compensación del movimiento puede involucrar la extracción o generación del bloque de predicción con base en el vector de movimiento/bloque determinado por la estimación de movimiento, posiblemente ejecutando interpolaciones a precisión de subpíxel. La filtración de interpolación puede generar muestras de píxel adicionales de muestras de píxel conocidas, incrementando así potencialmente el número de bloques de predicción candidatos que pueden ser utilizados para codificar un bloque de imagen. Al momento de recibir el vector de movimiento para la PU del bloque de imagen actual, la unidad de compensación del movimiento puede ubicar el bloque de predicción al cual apunta el vector de movimiento en una de las listas de imágenes de referencia.
La unidad de compensación del movimiento también puede generar elementos de sintaxis asociados con los bloques y segmentos de vídeo para uso por el decodificador de vídeo 30 en la decodificación de los bloques de imagen del segmento de vídeo. Además o como una alternativa a segmentos y elementos de sintaxis respectivos, se pueden generar o utilizar grupos de mosaicos y/o mosaicos y elementos de sintaxis respectivos.
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 por entropía (por ejemplo un esquema de codificación de longitud variable (VLC), un esquema de VLC adaptable al contexto ( CAVLC), un esquema de codificación aritmética, una binarización, una codificación aritmética binaria adaptable al contexto (CABAC), una codificación aritmética binaria adaptable al contexto basada en sintaxis (SBAc ), una codificación por entropía de división de intervalo de probabilidad (PIPE) u otra metodología o materia de codificación por entropía) o derivación (no compresión) en los coeficientes cuantificados 209, parámetros de inter predicción, parámetros de intra predicción, parámetros de filtro de bucle y/u otros elementos de sintaxis para obtener datos de imágenes codificadas 21 que pueden ser emitidas por la salida 272, por ejemplo en la forma de un flujo de bits codificado 21 de manera que, por ejemplo, el decodificador de vídeo 30 puede recibir y utilizar los parámetros para decodificación. El flujo de bits codificado 21 puede ser transmitido al decodificador de vídeo 30, o almacenado en una memoria para su posterior transmisión o recuperación por el decodificador de vídeo 30.
Otras variaciones estructurales del codificador de vídeo 20 pueden ser utilizadas para codificar el flujo de vídeo. Por ejemplo un codificador no basado en transformada 20 puede cuantificar la señal del residuo 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.
Decodificador y método de decodificación
La FIG. 3 muestra un ejemplo de un decodificador de vídeo 30 que está configurado para implementar las técnicas de esta solicitud. El decodificador de vídeo 30 está configurado para recibir los datos de imagen codificada 21 (por ejemplo flujo de bits codificado 21), por ejemplo codificado por el codificador 20, para obtener una imagen decodificada 331. El flujo de bits o datos de imagen codificada comprenden información para decodificar los datos de imagen codificada, 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 FIG. 3, el decodificador 30 comprende una unidad de decodificació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 decodificadas (DBP) 330, una unidad de aplicación de modo 360, una unidad de inter predicción 344 y una unidad de intra predicción 354. La unidad de inter predicción 344 puede ser o incluir una unidad de compensación del movimiento. El decodificador de vídeo 30, en algunos ejemplos, puede ejecutar un paso de decodificación en general recíproco al paso de codificación descrito con respecto al codificador de vídeo 100 de la FIG. 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 decodificadas (DPB) 230, la unidad de inter predicción 344 y la unidad de intra predicción 354 también son referidas como formando el “decodificador integrado" del codificador de vídeo 20. Por consiguiente, 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 decodificadas 330 puede ser idéntica en función a la memoria intermedia de imágenes decodificadas 230. Por lo tanto, las explicaciones proporcionadas para las unidades y funciones respectivas del codificador de vídeo 20 aplican en consecuencia a las unidades y funciones respectivas del decodificador de vídeo 30.
Decodificación por entropía
La unidad de decodificación por entropía 304 está configurada para analizar el flujo de bits 21 (o en general los datos de imagen codificada 21) y ejecutar, por ejemplo, decodificación por entropía a los datos de imagen codificada 21 para obtener, por ejemplo, coeficientes cuantificados 309 y/o parámetros de codificación decodificados (que no se muestran en la FIG. 3), por ejemplo cualquiera o todos los parámetros de inter predicción (por ejemplo, índice de imagen de referencia y vector de movimiento), parámetro de intra predicción (por ejemplo modo o índice de intra predicción), parámetros de transformada, parámetros de cuantificación, parámetros de filtro de bucle, y/u otros elementos de sintaxis. La unidad de decodificación por entropía 304 puede ser configurada para aplicar los algoritmos o esquemas de decodificación correspondientes a los esquemas de codificación tal como se describió con referencia a la unidad de codificación por entropía 270 del codificador 20. La unidad de decodificación por entropía 304 además se puede configurar para proporcionar parámetros de inter predicción, parámetros de intra predicción y/u otros elementos de sintaxis a la unidad de aplicación de modo 360 y otros parámetros, a otras unidades del decodificador 30. El decodificador 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 una alternativa a segmentos y elementos de sintaxis respectivos, se pueden generar y utilizar grupos de mosaicos y/o mosaicos y elementos de sintaxis respectivos.
Cuantificación inversa
La unidad de cuantificación inversa 310 puede ser 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 codificada 21 (por ejemplo mediante análisis y/o decodificación, por ejemplo por la unidad de decodificación por entropía 304) y aplicar, con base en los parámetros de cuantificación, una cuantificación inversa en los coeficientes cuantificados decodificados 309 para obtener coeficientes descuantificados 311, los cuales también se pueden denominar coeficientes de transformada 311. El proceso de cuantificación inversa puede incluir el uso de un parámetro de cuantificación determinado por el codificador de vídeo 20 para cada bloque de vídeo en el segmento de vídeo (o mosaico o grupo de mosaicos) para determinar un grado de cuantificación y, de igual manera, un grado de cuantificación inversa que se debería aplicar.
Transformada inversa
La unidad de procesamiento mediante transformada inversa 312 puede ser configurada para recibir coeficientes descuantificados 311, también denominados coeficientes de transformada 311, y aplicar una transformada a los coeficientes descuantificados 311 para obtener bloques de residuo reconstruidos 213 en el dominio de la muestra. Los bloques de residuo reconstruidos 213 también se pueden denominar bloques de transformada 313. La transformada puede ser una transformada inversa, por ejemplo, una DCT inversa, una DST inversa, una transformada inversa de entero, o un proceso de transformada inversa conceptualmente similar. La unidad de procesamiento mediante transformada inversa 312 además se puede configurar para recibir parámetros de transformada o información correspondiente de los datos de imagen codificada 21 (por ejemplo mediante análisis y/o decodificación, por ejemplo por la unidad de decodificación de entropía 304) para determinar la transformada que se va a aplicar a los coeficientes descuantificados 311.
Reconstrucción
La unidad de reconstrucción 314 (por ejemplo el sumador 314) puede ser configurado para agregar el bloque de residuo 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 de residuo 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íxel, o de otra manera mejorar la calidad del vídeo. La unidad de filtro de bucle 320 puede comprender uno o más filtros de bucle tal como un filtro de desbloqueo, un filtro de desfase adaptable a la muestra (SAO) o uno o más filtros diferentes, por ejemplo, un filtro bilateral, un filtro de bucle adaptable (ALF), un filtro de nitidez, un filtro de suavizado o filtros colaborativos, o cualquier combinación de los mismos. Aunque la unidad de filtro de bucle 320 se muestra en la FIG. 3 como un filtro de bucle, en otras configuraciones, la unidad de filtro de bucle 320 puede ser implementada como un filtro post-bucle.
Memoria intermedia de imágenes decodificadas
Los bloques de vídeo decodificados 321 de una imagen son entonces almacenados en la memoria intermedia de imágenes decodificadas 330, la cual almacena las imágenes decodificadas 331 como imágenes de referencia para posterior compensación del movimiento para otras imágenes y/o para emitir una visualización respectivamente.
El decodificador 30 está configurado para emitir la imagen decodificada 311, por ejemplo a través de la salida 312, para presentación o visualización a un usuario.
Predicción
La unidad de inter predicción 344 puede ser idéntica a la unidad de inter predicción 244 (en concreto a la unidad de compensación del movimiento) y la unidad de intra predicción 354 puede ser idéntica a la unidad de inter predicción 254 en función, y toma decisiones de división o división y predicción basada en los parámetros de división y/o predicción o información respectiva recibida desde los datos de imagen codificada 21 (por ejemplo, mediante análisis y/o decodificación, por ejemplo, por la unidad de decodificación de entropía 304). La unidad de aplicación de modo 360 puede ser configurada para ejecutar la predicción (intra o inter predicción) por bloque con base en imágenes reconstruidas, bloques o muestras respectivas (filtradas o no filtradas) para obtener el bloque de predicción 365.
Cuando el segmento de vídeo es codificado como un segmento intra codificado (I), la unidad de intra predicción 354 de la unidad de aplicación de modo 360 está configurada para generar el bloque de predicción 365 para un bloque de imagen del segmento de vídeo actual con base en un modo de intra predicción señalizado y datos de bloques previamente decodificados de la imagen actual. Cuando la imagen de vídeo es codificada como segmento inter codificado (es decir, B, o P), la unidad de inter predicción 344 (por ejemplo unidad de compensación del movimiento) de la unidad de aplicación de modo 360 está configurada para producir bloques de predicción 365 para un bloque de vídeo del segmento de vídeo actual con base en los vectores de movimiento y otros elementos de sintaxis recibidos desde la unidad de decodificación de entropía 304. Para inter predicción, los bloques de predicción pueden ser producidos a partir de una de las imágenes de referencia dentro de una de las listas de imágenes de referencia. El decodificador de vídeo 30 puede construir las listas de fotogramas de referencia, Lista 0 y Lista 1, utilizando técnicas de construcción predeterminadas con base en las 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 alternativamente a mosaicos (por ejemplo, mosaicos de vídeo), por ejemplo un vídeo puede ser codificado utilizando I, P o B grupos de mosaicos y/o mosaicos.
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 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 que el bloque de vídeo actual sea decodificado. 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 inter predicción) utilizado para codificar los bloques de vídeo del segmento de vídeo, un tipo de segmento de inter predicció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 inter codificado del segmento, estatus de inter predicción para cada bloque de vídeo inter codificado del segmento, y otra información para decodificar los bloques de vídeo en el segmento de vídeo actual. Lo mismo o similar se puede aplicar para o por realizaciones utilizando grupos de mosaicos (por ejemplo, grupos de mosaicos de vídeo) y/o mosaicos (por ejemplo, mosaicos de vídeo) además o alternativamente a segmentos (por ejemplo, segmentos de vídeo), por ejemplo, un vídeo puede ser codificado utilizando grupos de mosaicos y/o mosaicos I, P o B.
Las realizaciones del decodificador de vídeo 30 tal como se muestra en la FIG. 3 pueden ser configuradas para dividir y/o decodificar la imagen utilizando segmentos (también denominados segmentos de vídeo), en donde una imagen puede ser dividida en o decodificada utilizando uno o más segmentos (habitualmente sin superponerse), y cada segmento puede comprender uno o más bloques (por ejemplo, CTU).
Las realizaciones del decodificador de vídeo 30 tal como se muestra en la FIG. 3 pueden ser configuradas para dividir y/o decodificar la imagen utilizando 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 ser dividida en o decodificada utilizando uno o más grupos de mosaicos (habitualmente sin superponerse), 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.
Otras variaciones del decodificador de vídeo 30 pueden ser utilizadas para decodificar los datos de imagen codificada 21. Por ejemplo el decodificador 30 puede producir la salida del flujo de vídeo sin la unidad de filtrado de bucle 320. Por ejemplo un decodificador no basado en transformada 30 puede cuantificar a la inversa la señal del residuo directamente sin la unidad de procesamiento mediante transformada inversa 312 para algunos bloques o fotogramas. En otra implementación, el decodificador 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.
Se debe comprender que, en el codificador 20 y el decodificador 30, un resultado de procesamiento de un paso actual puede ser procesado adicionalmente y después emitido al siguiente paso. Por ejemplo después del filtrado de interpolación, la derivación de vector de movimiento o el filtrado de bucle, se puede ejecutar una operación adicional, tal como recorte o cambio, sobre el resultado del procesamiento del filtrado de interpolación, derivación de vector de movimiento o filtrado de bucle.
Cabe señalar que se pueden aplicar operaciones adicionales a los vectores de movimiento derivados del bloque actual (incluyendo pero sin estar limitado a vectores de movimiento de punto de control de modo afín, vectores de movimiento de subbloque en modos afín, plano ATMVP, vectores de movimiento temporales, y otros). Por ejemplo, el valor del vector de movimiento queda restringido a un rango predefinido según su bit representativo. Si el bit representativo del vector de movimiento es profundidad de bit, entonces el rango es -2A(profundidad de bit-1) ~ 2A(profundidad de bit-1)-1, donde “A“ significa exponenciación. Por ejemplo, si profundidad de bit se establece igual a 16, el rango es -32768 ~ 32767; si profundidad de bit se establece igual a 18, el rango es -131072—131071. Por ejemplo, el valor del vector de movimiento derivado (por ejemplo, los MV de cuatro subbloques 4x4 dentro de un bloque 8x8) está restringido de tal manera que la máxima diferencia entre partes enteras de los MV de cuatro subbloques 4x4 no es mayor que N píxeles, tal como no más de 1 píxel. Aquí se proporcionan dos métodos para restringir el vector de movimiento según el profundidad de bit.
Método 1: eliminar el MSB (bit más significativo) de desbordamiento mediante las operaciones de flujo
donde mvx es una componente horizontal de un vector de movimiento de un bloque de imagen o un subbloque, mvy es una componente vertical de un vector de movimiento de un bloque de imagen o un subbloque, y ux y uy indican un valor intermedio.
Por ejemplo, si el valor de mvx es -32769, después de aplicar las fórmulas (1) y (2), el valor resultante es 32767. En el sistema informático, los números decimales son almacenados como complemento a dos. El complemento a dos de -32769 es 1,0111,1111,1111,1111 (17 bits), entonces el MSB es desechado, de modo que el complemento a dos resultante sea 0111,1111,1111,1111 (el número decimal es 32767), que es el mismo que la salida aplicando las fórmulas (1) y (2).
ux= ( m vpx m vdx 2pl* idlítebit) % 2p,“ detl (5)
Las operaciones pueden ser aplicadas durante la suma de mvp y mvd, tal como se muestra en las fórmulas (5) a (8).
Método 2: eliminar el MSB de desbordamiento recortando el valor
y y = Reco rte3( -2 Prcf-ldi,:3:1 de b¡>' 2 Frii,-Tl¡,:3í;lEti:'‘ -1 yx )
v v — Reoorte3(-2profundidaddebil’12 w L l k ! i m ‘-1 v v j
donde vx es una componente horizontal de un vector de movimiento de un bloque de imagen o un subbloque, vy es una componente vertical de un vector de movimiento de un bloque de imagen o un subbloque; x, y, z respectivamente corresponden a tres valores de entrada del proceso de recorte de MV, y la definición de la función Recorte3 es de la siguiente manera:
x z < x
Recorte3( x, y, z ) = y z > y
zde otra manera
La FIG. 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 divulgadas tal como aquí se describen. En una realización, el dispositivo de codificación de vídeo 400 puede ser un decodificador tal como el decodificador de vídeo 30 de la FIG. 1A o un codificador tal como el codificador de vídeo 20 de la FIG. 1A.
El dispositivo de codificación de vídeo 400 comprende puertos de entrada 410 (o puertos de entrada 410) y unidades de receptor (Rx) 420 para recibir datos; un procesador, unidad lógica, o unidad de procesamiento central (CPU) 430 para procesar los datos; unidades de transmisor (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 óptico-a-eléctrico (OE) y componentes eléctrico-a-óptico (EO) acoplados a los puertos de entrada 410, las unidades de receptor 420, las unidades de transmisor 440, y los puertos de salida 450 para la salida o la entrada de señales ópticas o eléctricas.
El procesador 430 es implementado mediante hardware y software. El procesador 430 puede ser implementado como uno o más chips de CPU, núcleos (por ejemplo, como un procesador multi-núcleo), FPGA, ASIC, y DSP. El procesador 430 está en comunicación con los puertos de entrada 410, unidades de receptor 420, unidades de transmisor 440, puertos de salida 450, y memoria 460. El procesador 430 comprende un módulo de codificación 470. El módulo de codificación 470 implementa las realizaciones divulgadas descritas anteriormente. Por ejemplo, el módulo de codificación 470 implementa, procesa, prepara o proporciona las diversas operaciones de codificación. La inclusión del módulo de codificación 470 entonces proporciona una mejora sustancial a la funcionalidad del dispositivo de codificación de vídeo 400 y efectúa una transformación del dispositivo de codificación de vídeo 400 a un estado diferente. Alternativamente, el módulo de codificación 470 es implementado 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 utilizada como un dispositivo de almacenamiento de datos de desbordamiento, para almacenar programas cuando dichos programas son seleccionados para su ejecución, y almacenar instrucciones y datos que son leídos durante la ejecución de programa. La memoria 460 puede ser, por ejemplo, volátil y/o no volátil y puede ser una memoria de solo lectura (ROM), memoria de acceso aleatorio (RAM), memoria de contenido direccionable ternaria (Ternary Content-Addressable Memory, TCAM), y/o memoria de acceso aleatorio estática (SRAM).
La FIG. 5 es un diagrama de bloques simplificado de un aparato 500 que puede ser utilizado como cualquiera o por ambos del dispositivo de origen 12 y el dispositivo de destino 14 de la FIG. 1, según una realización a modo de ejemplo.
Un procesador 502 en el aparato 500 puede ser una unidad de procesamiento central. Alternativamente, el procesador 502 puede ser cualquier otro tipo de dispositivo, o múltiples dispositivos, con la capacidad para manipular o procesar información ahora existente o que se desarrolle más adelante. Aunque las implementaciones divulgadas pueden ser puestas en práctica con un solo procesador tal como se muestra, por ejemplo, el procesador 502, se pueden lograr ventajas en velocidad y eficiencia utilizando 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 conveniente de dispositivo de almacenamiento puede ser utilizado como la memoria 504. La memoria 504 puede incluir un código y datos 506 a los que se tiene acceso a través del procesador 502 utilizando un bus 512. La memoria 504 puede además incluir un sistema operativo 508 y programas de aplicación 510, incluyendo los programas de aplicación 510 al menos un programa que permite al procesador 502 ejecutar los métodos aquí descritos. Por ejemplo los programas de aplicación 510 pueden incluir las aplicaciones 1 a N, las cuales además incluyen una aplicación de codificación de vídeo que ejecuta los métodos aquí descritos.
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 opera para detectar entradas táctiles. La pantalla 518 puede ser acoplada al procesador 502 a través del bus 512.
Aunque aquí se muestra como un solo bus, el bus 512 del aparato 500 puede estar compuesto de múltiples buses. Además, el almacenamiento secundario 514 puede ser directamente acoplado a los otros componentes del aparato 500 o se puede tener acceso al mismo a través de una red y puede comprender una sola unidad integrada tal como una tarjeta de memoria o múltiples unidades tal como múltiples tarjetas de memoria. El aparato 500 entonces puede ser implementado en una amplia variedad de configuraciones.
Submuestreo de la componente de croma
En la codificación de vídeo, normalmente, existe una componente de luminancia (Y), y dos componentes de crominancia (Cb y Cr) para un vídeo de entrada. En la práctica, las componentes de croma son submuestreadas, en general, para reducir el ancho de banda de almacenamiento y transición para el vídeo.
Existen varios formatos de submuestreo de croma. En algunos ejemplos, también hay un formato de submuestreo de croma que no necesita hacer submuestreo de croma para el vídeo, por ejemplo, un formato de submuestreo de croma 4:4:4. En el formato de submuestreo de croma 4:4:4, tres componentes Y, U, V están igualmente distribuidas en un fotograma, tal como se muestra en el ejemplo en la FIG. 6. En un ejemplo, asumiendo que el tamaño de la componente de luma es 1 en un vídeo, entonces el tamaño total del vídeo es 3.
En la práctica, un formato de submuestreo de croma 4:2:0 es ampliamente utilizado, donde la componente de croma es submuestreada, la mitad horizontalmente y la mitad verticalmente correspondiendo a la componente de luma, tal como se muestra en el ejemplo en la FIG. 7, un tamaño de Cb o Cr es un cuarto de un tamaño de la componente de luma. Por lo tanto, en el formato 4:2:0, un tamaño total del vídeo es 1(Y) 0.25(Cb) 0.25(Cr) = 1.5 del tamaño de la componente de luma. Comparado con el formato de submuestreo de croma 4:4:4, el formato 4:2:0 ahorra la mitad del tamaño requerido para almacenamiento o transición del flujo de vídeo.
En otro ejemplo, se divulga un formato de submuestreo de croma 4:2:2, las componentes de crominancia son submuestreadas horizontalmente, tal como se muestra en el ejemplo en la FIG. 8. En este caso, un tamaño de Cb o Cr es la mitad de la componente de luma. Por lo tanto, un tamaño total del vídeo en este formato es 1(Y) 0.5(Cb) 0.5(Cr) = 2 del tamaño de la componente de luma. Comparado con el formato de submuestreo de croma 4:4:4, el formato 4:2:2 ahorra un tercio del tamaño requerido para almacenamiento o transición.
En este ejemplo, el tamaño de la componente de luma se asume como 1 en un vídeo.
En un ejemplo mostrado en ITU-T JVET O2001, (el enlace es http://phenix.itsudparis.eu/jvet/doc_end_user/documents/15_Gothenburg/wg11JVET-O2001-v14.zip), las variables y términos asociados con estas matrices se denominan luma (o L o Y) y croma, donde las dos matrices de croma se denominan Cb y Cr.
Las variables SubAnchoC y SubAlturaC son especificadas en la siguiente tabla 1, dependiendo de la estructura de muestreo de formato de croma, la cual es especificada a través de idc_formato_croma y indicador_plano_color_separado. Otros valores de idc_formato_croma, SubAnchoC y SubAlturaC pueden ser especificados en el futuro por ITU-T | ISO/IEC.
Tabla 1 - Valores de SubAnchoC y SubAlturaC derivados de idc_formato_croma y in i r l n l r r
idc_formato_croma especifica el muestreo de croma con relación al muestreo de luma (tal como se muestra en la tabla 1 y párrafos relacionados). El valor de idc_formato_croma deberá estar en el rango de 0 a 3, ambos incluidos.
En muestreo monocromático solamente hay una matriz de muestra, que se considera nominalmente la matriz de luma.
En muestreo 4:2:0, cada una de las dos matrices de croma tiene la mitad de la altura y la mitad del ancho de la matriz de luma.
En muestreo 4:2:2, cada una de las dos matrices de croma tiene la misma altura y la mitad del ancho de la matriz de luma.
En muestreo 4:4:4, dependiendo del valor de indicador_plano_color_separado, aplica lo siguiente:
- Si indicador_plano_color_separado es igual a 0, cada una de las dos matrices de croma tiene los mismos altura y ancho que la matriz de luma.
- En caso contrario (indicador_plano_color_separado es igual a 1), los tres planos de color se procesan separadamente como imágenes muestreadas monocromáticas.
El número de bits necesarios para la representación de cada una de las muestras en las matrices de luma y croma en una secuencia de vídeo está en el rango de 8 a 16, ambos incluidos, y el número de bits utilizados en la matriz de luma puede diferir del número de bits utilizados en las matrices de croma.
Cuando el valor de idc_formato_croma es igual a 1, las ubicaciones relativas vertical y horizontal nominales de las muestras de luma y croma en las imágenes se muestran en la FIG. 7. Ubicaciones relativas de muestras de croma alternativas pueden ser indicadas en la información de utilización del vídeo.
Cuando el valor de idc_formato_croma es igual a 2, las muestras de croma están ubicadas con las muestras de luma correspondientes y las ubicaciones nominales en una imagen son tal como se muestra en la FIG. 8. Cuando el valor de idc_formato_croma es igual a 3, todas las muestras de la matriz están ubicadas para todos los casos de las imágenes y las ubicaciones nominales en una imagen tal como se muestra en la FIG. 6. Modos de intra predicción angulares y su interpretación direccional correspondiente
En un ejemplo mostrado en la FIG. 9, modos de intra predicción angulares se muestran con la línea continua con las flechas (de 2 a 66). Entre ellos, los modos 18, 50 corresponden a la dirección de predicción horizontal y vertical, respectivamente. Con relación a la dirección horizontal, los modos 2 y 34 corresponden a 45° y -45°, respectivamente. Con relación a la dirección vertical, los modos 66 y 34 corresponden a 45° y -45°.
En algunos ejemplos, los ángulos de estos modos (por ejemplo, las entradas 2, 18, 34, 50, 66) están definidos de manera implícita con un valor de distancia, tal como se muestra en la tabla 2 con el modo como entrada y la distancia como salida.
T l 2: v l r i n i m n m inr r i i n nr
El grado correspondiente de modo X puede ser derivado como
grado = arcotangente (salida(x)/32)
En un ejemplo, un modo de entrada 2 emitiría un valor de 32, y el grado correspondiente para el modo 2 es 45°. De manera similar, los modos 18, 34, 50, 66 emitirían los valores de 0, -32, 0, 32, y los grados correspondientes son 0, -45°, 0, 45°, respectivamente. Se observa que el modo 18 (predicción horizontal) y el modo 50 (predicción vertical) corresponden al grado 0, y el modo 34 corresponde a un -45° superpuesto con relación a los dos modos de grado 0.
Tal como se muestra en la FIG. 10, para los modos 0 a 34, el borde adyacente del ángulo deseado es paralelo a la dirección horizontal, mientras que el borde opuesto del ángulo deseado es paralelo a la dirección vertical. El ángulo deseado correspondiente al modo 8 se ha mostrado en el lado izquierdo de la FIG. 10. Para los modos 34 a 66, el borde adyacente del ángulo deseado es paralelo a la dirección vertical, mientras que el borde opuesto del ángulo deseado es paralelo a la dirección horizontal.
En algunos ejemplos, algunos modos (por ejemplo, los modos 3, 4, 6...26) no tienen una salida que sea un múltiplo de 32. Los grados correspondientes para estos modos no están distribuidos de manera uniforme entre los 45 grados entre los modos 2, 18, 34, 50, 66. Tal como se muestra en la FIG. 9, los modos son definidos de manera más densa cuando su ángulo correspondiente está más cerca de los grados horizontal (modo 18) y vertical (modo 50).
En algunos ejemplos, algunos modos de intra predicción (por ejemplo, 8, 28, 40 y 60. ) emitirían un valor de múltiplo de 16 (pero no 32), el cual corresponde a un ángulo cuyo borde opuesto es la mitad del adyacente (la función tangente de estos ángulos es 0.5 o -0.5).
En algunos ejemplos, hay modos de ángulo ancho, de -1 a -14 y de 67 a 80. Estos modos no están directamente codificados sino que son mapeados cuando la relación de aspecto de bloque no es 1:1.
La regla de mapeo es definida como el siguiente proceso, con la entrada nW como el ancho del bloque, nH como la altura del bloque, y predModoIntra como el modo de ángulo de entrada:
La variable relación ponderada se establece igual a Valor absoluto( Log2( nW / nH ) ).
Para bloques no-cuadrados (nW no es igual a nH), el modo de intra predicción predModoIntra es modificado de la siguiente manera:
- Si todas las siguientes condiciones (estas condiciones son utilizadas para determinar si se aplica o no el proceso de mapeo de ángulo ancho) son verdaderas, predModoIntra se establece igual a ( predModoIntra 65 ).
- nW es mayor que nH,
- predModoIntra es mayor o igual a 2,
- predModoIntra es menor que ( relación ponderada > 1 ) ? ( 8 2 * relación ponderada ) : 8.
- En caso contrario, si todas las siguientes condiciones (estas condiciones son utilizadas para determinar si se aplica o no el proceso de mapeo de ángulo ancho) son verdaderas, predModoIntra se establece igual a ( predModoIntra - 67 ).
- nH es mayor que nW,
- predModoIntra es menor o igual a 66,
- predModoIntra es mayor que ( relación ponderada > 1 ) ? ( 60 - 2 * relación ponderada ) : 60.
Tomar un bloque con relación de aspecto 1:2 (el ancho del bloque es la mitad de la altura) como un ejemplo, los modos predModoIntra 61 a 66 serían mapeados a -6 a -1 en la medida en que se cumplen las siguientes condiciones:
- nH es mayor que nW,
- predModoIntra es menor o igual a 66,
- predModoIntra es mayor que ( relación ponderada > 1 ) ? ( 60 - 2 * relación ponderada ) : 60, donde relación ponderada = Valor absoluto( Log2( nW / nH ) ) = 1.
Derivación de modo de intra predicción de croma cuando la componente de croma es submuestreada horizontal o verticalmente
En algunos ejemplos, para el formato de submuestreo de croma 4:2:2, se puede definir una tabla de mapeo para derivar modos intra angulares de croma finales, donde un modo de predicción angular de croma original es ajustado con base en la relación cambiada debido al submuestreo.
En un ejemplo, tal como se muestra en la FIG. 10, un bloque sin submuestreo de croma (el lado izquierdo) tiene los mismos ancho y altura. Los modos 2, 8, 18, 34, 50, 66 son etiquetados con su dirección de predicción. Cuando la componente de croma es aplicada con el formato de submuestreo de croma 4:2:2 (es decir, la componente de croma es submuestreada solo horizontalmente, las muestras de croma son alineadas con las muestras de luma cada dos columnas, tal como se muestra en la FIG. 8), el ancho de la componente de croma es la mitad del ancho de la componente de luma.
En este caso, la relación de aspecto del bloque de croma es 1:2 debido al submuestreo de croma. Por lo tanto, los modos originales son ajustados (mapeados) según la componente de croma submuestreada horizontalmente. En este caso, el modo 2 es mapeado a 61 para ajustar la mitad de la reducción en la dirección horizontal. Debido a que la relación de aspecto del bloque submuestreado es 1:2, y si el modo mapeado 61 cumple con las condiciones para el proceso de mapeo de ángulo ancho, el modo mapeado 61 sería mapeado adicionalmente al modo -6 según el proceso de mapeo de ángulo ancho.
El modo -6 corresponde a un valor de salida de 64 según la tabla 2. Por lo tanto, el grado correspondiente del ángulo final después del submuestreo de croma es
grado = arcotangente(64/32)
El valor de tangente de este ángulo es dos veces el valor de tangente del modo 2, lo cual refleja que el borde adyacente del modo 2 ha sido cortado a la mitad debido al submuestreo de croma.
El modo 8 es mapeado al modo 2 debido a que la posición de medio ancho corresponde al modo 8 (tal como se muestra a la izquierda en la FIG. 10), y el modo 8 corresponde al ángulo 45° debido al ancho en la dirección horizontal. De manera similar, los modos 34 y 60 son mapeados a 40 y 60, respectivamente. En estos ejemplos, los modos de predicción horizontal y vertical cuyo grado son cero no son mapeados a otros modos, o, el modo horizontal/vertical sigue siendo mapeado al mismo modo.
Para mapear el modo de intra predicción cuando las componentes de croma son submuestreadas (por ejemplo, el formato de submuestreo de croma 4:2:2), una tabla de mapeo se define de la siguiente manera:
Tabla 3: Tabla de mapeo de intra modos (modo X) sin submuestreo de croma a modos (modo Y) con formato de submuestreo de croma 4:2:2
Tabla 4 Tabla de mapeo de intra modos (modo X) sin submuestreo de croma a modos (modo Y) con formato de submuestreo de croma 4:2:2 r n m nr ^ 7
En el ejemplo anterior, el modo 2 se mapearía a 61. En esta realización, el modo 2 se mapearía al modo 60, tal como se muestra en la FIG. 10.
En una realización de la presente invención, se propone reemplazar el mapeo de los modos 2 a 7 con 61 a 66, tal como se define en la Tabla 5, que es igual que los modos 2 a 7 en la Tabla 3.
Tabla 5_Tabla de mapeo de intra modos (modo X) sin submuestreo de croma a modos (modo Y) con formato de submuestreo de croma 4:2:2 ran os de ran os de modo de entrada de 0 a 7
En una realización de la presente invención, se propone mapear los modos 8 a 18 con los siguientes modos, tal como se define en la Tabla 6.
Tabla 6 Tabla de mapeo de intra modos (modo X) sin submuestreo de croma a modos (modo Y) con formato de submuestreo de cr m 4:2:2 r n m nr 1
En una realización de la presente invención, la siguiente Tabla 7 es utilizada para mostrar cómo se derivan los modos mapeados.
Tabla 7 Derivación de modo para formatos de submuestreo 4:2:2 de croma utilizando la tabla de mapeo con modos de entrada sin submuestreo de croma
El lado izquierdo muestra los modos de entrada de 2-18, correspondiendo cada modo a un valor de tangente y un ángulo. En el caso sin submuestreo, estos ángulos de modo pueden ser definidos como
grado = arcotangente(salida(x)/32)
Un factor de escalado 32 puede ser considerado como el ancho mostrado en la FIG. 10, para el modo 2 a 34. Para esos modos, el borde adyacente del ángulo deseado es paralelo con la dirección horizontal, mientras el borde opuesto del ángulo deseado es paralelo a la dirección vertical. El ángulo deseado correspondiente al modo 8 ha sido mostrado en la parte izquierda de la FIG. 10. En contraste, para los modos 34 a 66 (debido a que el ángulo correspondiente al modo 34 es un ángulo superpuesto (-45 grados) relacionado con la dirección horizontal y vertical), el borde adyacente del ángulo deseado es paralelo a la dirección vertical, mientras que el borde opuesto del ángulo deseado es paralelo a la dirección horizontal.
Debido al submuestreo de croma, para los modos 2 a 34, el valor de tangente con submuestreo es duplicado debido a que el borde adyacente (en paralelo al ancho) es la mitad; para los modos 34 a 66, el valor de tangente con submuestreo es la mitad debido que el borde opuesto es la mitad.
En un ejemplo, el valor de tangente duplicado es enumerado para cada modo en el lado derecho de la Tabla 7. Sin embargo, el ángulo no es linealmente proporcional al valor de tangente. Por lo tanto, estos valores de tangente duplicados necesitan ser convertidos nuevamente en valores de ángulo. Utilizando el valor de ángulo convertido en el lado derecho con el submuestreo de croma, los modos con el ángulo más cercano en el lado izquierdo de la Tabla 7 es el modo de salida.
En pocas palabras, para encontrar el modo de mapeo correspondiente, primero se genera una tabla de referencia, utilizando los siguientes pasos con el modo de entrada X:
• Según la Tabla 2, obtener un valor de salida.
• Alternativamente o de manera adicional, calcular el valor de tangente de este modo como salida (X)/32.
• Alternativamente o de manera adicional, calcular el ángulo utilizando el valor de tangente derivado: por ejemplo arcotangente (salida(x)/32).
• Alternativamente o de manera adicional, generar una tabla de referencia utilizando los tres pasos anteriores utilizando un rango de modo de entrada X, X pertenece a 2..18, tal como se muestra en el lado izquierdo de la Tabla 7, incluyendo el valor de tangente de columnas, valor de ángulo, y los modos de entrada.
Para derivar un modo mapeado con el modo de entrada X, aplican los siguientes pasos:
• Alternativamente o de manera adicional, duplicar el valor de tangente del modo X como 2*salida(X)/32.
• Alternativamente o de manera adicional, calcular el ángulo en formato de submuestreo de croma 4:2:2 utilizando el valor de tangente duplicado: por ejemplo arcotangente (2*salida(x)/32).
• Alternativamente o de manera adicional, según el valor de ángulo calculado en formato de submuestreo de croma 4:2:2, encontrar el ángulo más cercano en la tabla de referencia (por ejemplo, lista de ángulo sin submuestreo de croma en la tabla 7).
• Alternativamente o de manera adicional, según el ángulo más cercano en la tabla de referencia, elegir el modo de salida correspondiente.
En aras de la sencillez, el proceso anterior es referido como el proceso para derivar el modo de salida.
En un ejemplo, el modo de entrada 10 deriva sus modos de salida de la siguiente manera después que se genera la tabla de referencia:
• duplicar el valor de tangente del modo 10 como 2*12/32 = 0.75
• calcular el ángulo en el formato de submuestreo de croma 4:2:2 utilizando el valor de tangente duplicado: por ejemplo arcotangente (0.75) = 36.8699°
• según el valor de ángulo calculado 36.8699°, encontrar el ángulo más cercano en la tabla de referencia 35.70669°
• según el ángulo más cercano 35.70669° en la tabla de referencia, elegir el modo 5 de salida correspondiente.
Por lo tanto, un modo de entrada 10 es mapeado al modo 5.
En una realización de la presente invención, se propone mapear los modos 19 a 28 con los siguientes modos, tal como se define en la Tabla 8.
Tabla 8 Tabla de mapeo de intra modos (modo X) sin submuestreo de croma a modos (modo Y) con formato de submuestreo de crom 4:2:2 r n m ^ nr 1 2
En una realización de la presente invención, la siguiente Tabla 9 es utilizada para mostrar cómo se derivan los modos mapeados.
Tabla 9 Derivación de modo para formatos de submuestreo 4:2:2 de croma utilizando la tabla de mapeo con modos de entrada sin submuestreo de croma
La tabla 9 puede ser derivada de manera similar utilizando el proceso para derivar el modo de salida, conforme a lo definido en la realización previa. En este ejemplo, cuando se genera la tabla de referencia (el lado izquierdo de la tabla 9), se utilizan modos de entrada de 19 a 34.
En una realización de la presente invención, se propone mapear los modos 29 a 34 con los siguientes modos, tal como se define en la Tabla 10.
Tabla 10 Tabla de mapeo de intra modos (modo X) sin submuestreo de croma a modos (modo Y) con formato de submuestreo de croma 4:2:2, r n m ^ nr 2 4
En una realización de la presente invención, la siguiente Tabla 11 es utilizada para mostrar cómo se derivan los modos mapeados.
Tabla 11 Derivación de modo para formatos de submuestreo 4:2:2 de croma utilizando la tabla de mapeo con modos de entrada sin submuestreo de croma
En un ejemplo, la tabla 11 puede ser derivada utilizando el proceso para derivar el modo de salida conforme a lo definido en la realización previa, excepto por los siguientes aspectos:
• cuando se genera la tabla de referencia, se utilizan los modos de entrada de 29 a 40.
• Para los modos 29 a 34, se requiere un paso más para derivar el modo de salida. El ángulo correspondiente al valor de 2*tangente(salida(x)/32) es más pequeño que -45° (o el valor absoluto del ángulo es más grande que 45°). Estos ángulos (más pequeños que -45°) no pueden ser directamente utilizados debido a que el ángulo más pequeño que puede ser derivado es -45°. En este caso, se utilizan sus ángulos complementarios y el ángulo mapeado es opuesto al límite superior del bloque actual (en lugar del límite izquierdo del flujo). Por lo tanto, el borde adyacente y el borde opuesto del ángulo mapeado se cambian, y por lo tanto el valor de tangente de sus ángulos complementarios 1/2*tangente(salida(x)/32) se utiliza para derivar el ángulo correcto, el cual se utiliza para encontrar el ángulo más cercano en la tabla de referencia.
En una realización de la presente invención, se propone mapear los modos 35 a 50 con los siguientes modos, tal como se define en la Tabla 12.
Tabla 12 Tabla de mapeo de intra modos (modo X) sin submuestreo de croma a modos (modo Y) con formato de submuestreo de croma 4:2:2, rangos de modo de entrada de 35 a 50
En una realización de la presente invención, se utiliza la siguiente tabla 13 para mostrar cómo se derivan los modos mapeados.
Tabla 13 Derivación de modo para formatos de submuestreo 4:2:2 de croma utilizando la tabla de mapeo con modos de entrada sin submuestreo de croma
La tabla 13 puede ser derivada utilizando el proceso para derivar el modo de salida, pero cambian los siguientes aspectos:
• cuando se genera la tabla de referencia, se utilizan modos de entrada de 35 a 50.
• los modos 35 a 50 corresponden a los ángulos cuyo borde opuesto es el límite superior del bloque actual. Después del submuestreo de croma, el valor de tangente correspondiente se divide por la mitad (en lugar de ser duplicado como en la tabla 7) debido a que el borde opuesto es cortado a la mitad con el formato de submuestreo de croma 4:2:2.
En un ejemplo, el modo 36 también puede ser mapeado a 42 considerando la siguiente tabla de mapeo, tal como se muestra en la Tabla 2.
Modo Salida
35 -29
36 -26
37 -23
38 -20
39 -18
40 -16
41 -14
42 -12
43 -10
44 -8
45 -6
46 -4
47 -3
48 -2
49 -1
50 0
Desde el punto de vista del modo 36, el borde opuesto del ángulo correspondiente es paralelo a la dirección horizontal, y el borde adyacente del ángulo correspondiente es paralelo a la dirección vertical. Debido al submuestreo de croma, la dirección horizontal es reducida en la mitad, es decir, el borde opuesto del ángulo correspondiente es reducido en la mitad. Esto es equivalente a reducir su valor de salida en la mitad, lo cual significa que su valor de salida es ahora -26/2 = -13. Debido a que -13 tiene dos valores de salida más cercanos equivalentes -12 y -14, este puede ser mapeado ya sea al modo 41 o 42.
Por el mismo motivo, los modos 39, 41, 43, 47, 49 pueden ser mapeados ya sea a 43 o 44, 44 o 45, 45 o 46, 48 o 49, 49 o 50, respectivamente. La tabla 14 resume los modos de mapeo posibles y la manera en que son derivados.
Tabla 14 Tabla de mapeo alternativa de intra modos (modo X) sin submuestreo de croma a modos (modo Y) con formato de submuestreo de croma 4:2:2, rangos de modo de entrada de 35 a 50
salida
más modo Y
Modo X salida salida/2 cercana mapeado
35 -29 -14.5 -14 41
36 -26 -13
37 -23 -11.5
38 -20 -10 -10 43
39 -18 -9 -10, -8 43, 44
40 -16 -8 -8 44
41 -14 -7 44, 45
42 -12 -6 45
43 -10 -5 -6, -4 45, 46
44 -8 -4 -4 46
45 -6 -3 -3 47
46 -4 -2 -2 48
47 -3 -1.5 -2, -1 48, 49
48 -2 -1 -1 49
49 -1 -0.5 -1, 0 49, 50
50 0 0 0 50
En una realización de la presente invención, se propone mapear los modos 51 a 66 con los siguientes modos, tal como se define en la Tabla 15.
Tabla 15 Tabla de mapeo de intra modos (modo X) sin submuestreo de croma a modos (modo Y) con formato de m r ^ r m 4:2:2 r n m nr 1 . . . . . .
En una realización de la presente invención, se utiliza la siguiente tabla 16 para mostrar cómo se derivan los modos mapeados.
Tabla 16 Derivación de modo para formatos de submuestreo 4:2:2 de croma utilizando la tabla de mapeo con modos de entrada sin submuestreo de croma
De manera similar a la tabla 13, la tabla 16 puede ser derivada utilizando el proceso para derivar el modo de salida, pero cambian los siguientes aspectos:
• Cuando se genera la tabla de referencia, se utilizan los modos de entrada de 50 a 66.
• Los modos 51 a 66 corresponden a ángulos cuyo borde opuesto es el límite superior del bloque actual. Después del submuestreo de croma, los valores de tangente correspondientes son divididos a la mitad (en lugar de duplicarse como en la tabla 7) debido a que el borde opuesto es dividido a la mitad con el formato de sub-muestreo de croma 4:2:2.
De manera similar a la Tabla 14, algunos de los modos en los modos 51 a 66 pueden tener modos mapeados alternativos, tal como se muestra en la Tabla 17.
Tabla 17 Tabla de mapeo alternativa de intra modos (modo X) sin submuestreo de croma a modos (modo Y) con formato de submuestreo de croma 4:2:2, rangos de modo de entrada de 50 a 66.
salida
más modo Y
Modo X salida salida/2 cercana mapeado
50 0 0 0 50
51 1 0.5 0, 1 50, 51
52 2 1 1 51
53 3 1.5 1, 2
54 4 2 2
55 6 3 3 53
56 8 4 4 54
57 10 5 4, 6 54, 55
58 12 6 6 55
59 14 7 6, 8 55, 56
60 16 8 8 56
61 18 9 8, 10 56, 57
62 20 10 10 57
63 23 11.5 12 58
64 26 13 12, 14 58, 59
65 29 14.5 14 59
66 32 16 16 60
En las realizaciones anteriores, muchas realizaciones son mostradas como modos de mapeo para el modo de submuestreo de croma 4:2:2, es decir, submuestreando por la mitad en la componente de croma sobre la dirección horizontal. Se observa que un enfoque similar puede ser propuesto para un formato de submuestreo de croma donde las componentes de croma son submuestreadas verticalmente.
En algunos ejemplos, no es necesario ejecutar mapeo de modo de intra predicción para un formato de submuestreo de croma donde el aspecto del bloque no cambiaría. Por ejemplo, con formato de submuestreo de croma 4:2:0, en la medida en que los componentes de croma son submuestreados en ambas direcciones horizontal y vertical, el aspecto de bloque no cambiaría, por lo tanto no habría necesidad de ejecutar el mapeo de modo.
En algunos ejemplos, las realizaciones anteriores se pueden combinar, siempre y cuando un modo X de entrada tenga un modo Y de salida. Por ejemplo, la siguiente Tabla 18 es una de la combinación de las realizaciones propuestas.
T l 1 n m l n m in i n l r liz i n r
A continuación se proporciona una explicación de las aplicaciones del método de codificación así como del método de decodificación tal como se muestra en las realizaciones mencionadas anteriormente, y el sistema que las utiliza.
La FIG. 11 es un diagrama de bloques que muestra un sistema de suministro de contenido 3100 para realizar el servicio de distribución de contenido. Este sistema de suministro de contenido 3100 incluye el dispositivo de captura 3102, el dispositivo terminal 3106, y opcionalmente incluye la pantalla 3126. El dispositivo de captura 3102 se comunica con el dispositivo terminal 3106 sobre el enlace de comunicación 3104. El enlace de comunicación puede incluir el canal de comunicación 13 antes descrito. El enlace de comunicación 3104 incluye, pero no se limita a WIFI, Ethernet, Cable, inalámbrico (3G/4G/5G), USB, o cualquier tipo de combinación de los mismos, o similar.
El dispositivo de captura 3102 genera datos, y puede codificar los datos por medio del método de codificación tal como se muestra en las realizaciones anteriores. Alternativamente, el dispositivo de captura 3102 puede distribuir los datos a un servidor de transmisión en continuo (que no se muestra en las figuras), y el servidor codifica los datos y transmite los datos codificados al dispositivo terminal 3106. El dispositivo de captura 3102 incluye pero no se limita a una cámara, teléfono inteligente o Pad, ordenador o laptop, sistema de conferencias de vídeo, PDA, dispositivo montado en vehículo, o una combinación de cualquiera de los anteriores, o similar. Por ejemplo, el dispositivo de captura 3102 puede incluir el dispositivo de origen 12 tal como se describió anteriormente. Cuando los datos incluyen vídeo, el codificador de vídeo 20 incluido en el dispositivo de captura 3102 realmente puede ejecutar procesamiento de codificación de vídeo. Cuando los datos incluyen audio (es decir, voz), un codificador de audio incluido en el dispositivo de captura 3102 realmente puede ejecutar procesamiento de codificación de audio. Para algunos escenarios prácticos, el dispositivo de captura 3102 distribuye los datos de audio y vídeo codificados multiplexándolos juntos. Para otros escenarios prácticos, por ejemplo en el sistema de conferencias de vídeo, los datos de audio codificados y los datos de vídeo codificados no son multiplexados. El dispositivo de captura 3102 distribuye los datos de audio codificados y los datos de vídeo codificados al dispositivo terminal 3106 separadamente.
En el sistema de suministro de contenido 3100, el dispositivo terminal 310 recibe y reproduce los datos codificados. El dispositivo terminal 3106 podría ser un dispositivo con capacidad de recepción y recuperación de datos, tal como teléfono inteligente o Pad 3108, ordenador o laptop 3110, grabadora de vídeo de red (NVR)/ grabadora de vídeo digital (DVR) 3112, TV 3114, decodificador (STB) 3116, sistema de conferencia de vídeo 3118, sistema de vigilancia de vídeo 3120, asistente digital personal (PDA) 3122, dispositivo montado en vehículo 3124, o una combinación de cualquiera de los anteriores, o similar con la capacidad para decodificar los datos codificados mencionados anteriormente. Por ejemplo, el dispositivo terminal 3106 puede incluir el dispositivo de destino 14 tal como se describió anteriormente. Cuando los datos codificados incluyen vídeo, el decodificador de vídeo 30 incluido en el dispositivo terminal es priorizado para ejecutar decodificación de vídeo. Cuando los datos codificados incluyen audio, un decodificador de audio incluido en el dispositivo terminal es priorizado para ejecutar procesamiento de decodificación de audio.
Para un dispositivo terminal con su pantalla, por ejemplo, teléfono inteligente o Pad 3108, ordenador o laptop 3110, la grabadora de vídeo de red (NVR)/ grabadora de vídeo digital (DVR) 3112, TV 3114, asistente digital personal (PDA) 3122, o dispositivo montado en vehículo 3124, el dispositivo terminal puede alimentar los datos decodificados a su pantalla. Para un dispositivo terminal que no está equipado con pantalla, por ejemplo, STB 3116, sistema de conferencia de vídeo 3118, o sistema de vigilancia de vídeo 3120, una pantalla externa 3126 es contactada por el mismo para recibir y mostrar los datos decodificados.
Cuando cada dispositivo en este sistema ejecuta codificación o decodificación, se puede utilizar el dispositivo de codificación de imagen o el dispositivo de decodificación de imagen, tal como se muestra en las realizaciones mencionadas anteriormente.
La FIG. 12 es un diagrama que muestra una estructura de un ejemplo del dispositivo terminal 3106. Después de que el dispositivo terminal 3106 recibe el flujo desde el dispositivo de captura 3102, la unidad de procedimiento de protocolo 3202 analiza el protocolo de transmisión del flujo. El protocolo incluye pero no se limita a protocolo de transmisión en continuo en tiempo real (Real Time Streaming Protocol, RTSP), Protocolo de Transferencia de Hiper Texto (Hyper Text Transfer Protocol, HTTP), protocolo de transmisión en continuo HTTP en Vivo (HLS), MPEG-DASH, protocolo de transporte en tiempo real (Real-Time Transport Protocol, RTP), protocolo de mensajería en tiempo real (Real Time Messaging Protocol, RTMP), o cualquier tipo de combinación de los mismos, o similar.
Después que la unidad de procedimiento de protocolo 3202 procesa el flujo, se genera el archivo de flujo. El archivo es emitido a una unidad de desmultiplexación 3204. La unidad de desmultiplexación 3204 puede separar los datos multiplexados en los datos de audio codificados y los datos de vídeo codificados. Tal como se describió anteriormente, para algunos escenarios prácticos, por ejemplo en el sistema de conferencia de vídeo, los datos de audio codificados y los datos de vídeo codificados no son multiplexados. En esta situación, los datos codificados son transmitidos al decodificador de vídeo 3206 y al decodificador de audio 3208 sin hacerlo a través de la unidad de desmultiplexación 3204.
A través del procesamiento de desmultiplexación, se genera el flujo elemental (Elementary Stream, ES) de vídeo, el ES de audio, y opcionalmente el subtítulo. El decodificador de vídeo 3206, el cual incluye el decodificador de vídeo 30 tal como se explicó en las realizaciones anteriormente mencionadas, decodifica el ES de vídeo a través del método de decodificación tal como se muestra en las realizaciones anteriormente mencionadas para generar el fotograma de vídeo, y alimenta estos datos a la unidad de sincronización 3212. El decodificador de audio 3208, decodifica el ES de audio para generar la trama de audio, y alimenta estos datos a la unidad de sincronización 3212. Alternativamente, el fotograma de vídeo puede almacenarlos en una memoria intermedia (que no se muestra en la FIG. 12) antes de alimentarlos a la unidad de sincronización 3212. De manera similar, la trama de audio puede almacenarlos en una memoria intermedia (que no se muestra en la FIG. 12) antes de alimentarlos a la unidad de sincronización 3212.
La unidad de sincronización 3212 sincroniza el fotograma de vídeo y la trama de audio, y suministra el vídeo/audio a una pantalla de vídeo/audio 3214. Por ejemplo, la unidad de sincronización 3212 sincroniza la presentación de la información de vídeo y audio. La información se puede codificar en la sintaxis utilizando marcas de tiempo concernientes a la presentación de datos de audio y visuales codificados y marcas de tiempo concernientes a la entrega del propio flujo de datos.
Si el subtítulo está incluido en el flujo, el decodificador de subtítulo 3210 decodifica el subtítulo, y lo sincroniza con el fotograma de vídeo y la trama de audio, y suministra el vídeo/audio/subtítulo a una pantalla de vídeo/audio/subtítulo 3216.
La presente invención no se limita al sistema anteriormente mencionado, y cualquiera del dispositivo de codificación de imágenes o el dispositivo de decodificación de imágenes en las realizaciones anteriormente mencionadas se puede incorporar en otro sistema, por ejemplo, un sistema de automóvil.
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 las operaciones de división entera y cambio aritmético son definidos de manera más precisa, y se definen operaciones adicionales, tal como exponenciación y división de valor real. Las convenciones de numeración y recuento generalmente comienzan en 0, por ejemplo, “el primero" es equivalente a de orden 0, “el segundo" es equivalente al 1°, etc.
Operadores aritméticos
A continuación se definen los siguientes operadores aritméticos:
Suma
_ Resta (como un operador de dos argumentos) o negación (como un operador de prefijo unitario)
* Multiplicación, incluyendo multiplicación matricial
Exponenciación. Especifica x a la potencia de y. En otros contextos, dicha notación es x<y>utilizada para colocación de superíndice no destinado para interpretación como exponenciación.
/ División entera con truncado del resultado a cero. Por ejemplo 7 / 4 y _7 / _4 son truncados a 1 y _7 / 4 y 7 / _4 son truncados a _1.
Utilizado para denotar la división en ecuaciones matemáticas donde no se pretende que haya truncado o redondeo.
x Utilizado para denotar división en ecuaciones matemáticas donde no se pretende que haya y truncado o redondeo.
La suma de f( i ), tomando i todos los valores enteros desde x hasta, e incluyendo, y.
Módulo. Resto de x dividido entre y, definido solamente para enteros x e y, siendo x>= 0 e x % y y> 0.
Operadores lógicos
A continuación se definen los siguientes operadores lógicos:
x&&y Lógica Booleana “y" de x e y
x || y Lógica Booleana “o" de x e y
! Lógica Booleana “no“
x ? y : z Si x es VERDADERO o distinto de 0, evalúa al valor de y; en caso contrario, evalúa al valor de z.
Operadores relacionales
A continuación se definen los siguientes operadores relacionales:
> 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 de sintaxis o variable al que se ha asignado el valor “na“ (no aplicable), el valor “na“ es tratado como un valor distinto para el elemento de sintaxis o variable. El valor “na“ es considerado distinto de cualquier otro valor.
Operadores por mapa de bits
A continuación se definen los siguientes operadores por mapa de bits:
& Por mapa de bits “y“. Cuando opera sobre argumentos enteros, opera en una representación de complemento a dos del valor entero. Cuando opera en un argumento binario que contiene menor cantidad de bits que otro argumento, el argumento más corto es extendido agregando bits más significativos iguales a 0. | Por mapa de bits “o“. Cuando opera sobre argumentos enteros, opera en una representación de complemento a dos del valor entero. Cuando opera sobre un argumento binario que contiene menor cantidad de bits que otro argumento, el argumento más corto es extendido agregando bits más significativos iguales a 0.
a Por mapa de bits “o exclusivo". Cuando opera sobre argumentos enteros, opera en una representación de complemento a dos del valor entero. Cuando opera en un argumento binario que contiene menor cantidad de bits que otro argumento, el argumento más corto es extendido agregando bits más significativos iguales a 0.
x >> y Cambio aritmético a la derecha de una representación entera de complemento a dos de dígitos binarios x por y. Esta función está definida solamente para valores enteros no negativos de y. Bits cambiados a los bits más significativos (Most Significant Bits, MSB) como resultado del cambio a la derecha tienen un valor igual al MSB de x antes de la operación de cambio.
x << y Cambio aritmético a la izquierda de una representación entera de complemento a dos de dígitos binarios x por y. Esta función está definida solamente para valores enteros no negativos de y. Bits cambiados a los bits menos significativos (Least Significant Bits, LSB) como un resultado del cambio a la izquierda tienen un valor igual a 0
Operadores de asignación
A continuación se definen los siguientes operadores aritméticos:
= Operador de asignación
Incremento, es decir, x++ es equivalente a x = x 1; cuando se utiliza en un índice de matriz, evalúa al valor de la variable antes de la operación de incremento.
— Decremento, es decir, x— es equivalente a x = x - 1; cuando se utiliza en un índice de matriz, evalúa al valor de la variable antes de la operación de decremento.
= Incremento por cantidad especificada, es decir, x = 3 es equivalente a x = x 3, y x = (-3) es equivalente a x = x (-3).
-= Decremento por 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 empezando desde y a z, ambos incluidos, siendo x, y, y z números enteros y siendo z mayor que y.
Funciones matemáticas
Se definen las siguientes funciones matemáticas:
Arcoseno( x ) la función de seno inversa trigonométrica, que opera sobre un argumento x que está en el rango de -1.0 a 1.0, ambos incluidos, con un valor de salida en el rango de -n -2 a n-2 , ambos incluidos, en unidades de radianes
Arcotangente( x ) la función de tangente inversa trigonométrica, que opera sobre un argumento x, con un valor de salida en el rango de -n -2 a n-2, ambos incluidos, en unidades de radianes
Redondeo hacia infinito positivo ( x ) el entero más pequeño mayor o igual a x.
Recortel<Y>( x ) = Recorte3( 0, ( 1 << Profundidad de bit<Y>) - 1, x )
Recorte1<C>( x ) = Recorte3( 0, ( 1 << Profundidad de bife ) - 1, x )
z < x
z > y
en caso contrario
Cos( x ) la función de coseno trigonométrica que opera sobre un argumento x en unidades de radianes. Redondeo hacia infinito negativo ( x ) el entero más grande menor o igual a x.
c d b - a >= d / 2
Obtener MSB actual( a, b, c, d ) : c - d a - b > d / 2
c en caso contrario
Ln( x ) el logaritmo natural de x (el algoritmo en base e, donde e es la constante 2.718281 828... base del logaritmo natural).
Log2( x ) el logaritmo en base 2 de x.
Log10( x ) el logaritmo en base 10 de x.
x <= y
Mín( x, y ) = {y : x > y
x : x >= y
Máx( x y ) = (y : x < y
Redondeo( x ) = Signo( x ) * Redondeo a infinito negativo( Valor absoluto ( x ) 0.5 )
1 x > 0
Signo( x ) = 0 x = = 0
-1 x < 0
Sen( x ) la función de seno trigonométrica que opera sobre un argumento x en unidades de radianes Raíz cuadrada( x ) = Vx
Conmutar( x, y ) = ( y, x )
Tan( x ) la función de tangente trigonométrica que opera sobre un argumento x en unidades de radianes Orden de precedencia de operación
Cuando un orden de precedencia en una expresión no está indicado explícitamente por el uso de paréntesis, aplican las siguientes reglas:
- Las operaciones de precedencia superior son evaluadas antes de cualquier operación de una precedencia inferior.
- Las operaciones de la misma precedencia son evaluadas en secuencia de izquierda a derecha. La siguiente tabla especifica la precedencia de las operaciones de la más alta a la más baja; una posición más elevada en la tabla indica una precedencia más elevada.
Para aquellos operadores que también son utilizados 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 operación de la más alta (en la parte superior de la tabla) a la más baja (en la parte inferior de la tabla)
Descripción de texto de operadores lógicos
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 )
entonces 0
si no, si ( condición 1 )
entonces 1
si no /* comentario informativo sobre la condición restante */
entonces n
se puede describir de la siguiente manera:
... de la siguiente manera / ... aplica lo siguiente:
- Si condición 0, entonces 0
- En caso contrario, si condición 1, entonces 1
- En caso contrario (comentario informativo sobre la condición restante), entonces n
Cada declaración “Si ... En caso contrario, si ... En caso contrario, ...” en el texto se introduce con “... de la siguiente manera” o “.. aplica lo siguiente” inmediatamente seguido por “Si ... “ . La última condición de “Si ... En caso contrario, si ... En caso contrario, ...” siempre es un “En caso contrario, ...”. Declaraciones intercaladas “Si ... En caso contrario, si ... En caso contrario, ...” pueden ser identificadas emparejando “... de la siguiente manera” o “... aplica lo siguiente” finalizando con “En caso 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 )
entonces 0
si no, si ( condición 1a | | condición 1b )
entonces 1
si no
entonces n
se puede describir de la siguiente manera:
... de la siguiente manera / ... aplica lo siguiente:
- Si todas las siguientes condiciones son verdaderas, entonces 0:
- condición 0a
- condición 0b
- En caso contrario, si una o más de las siguientes condiciones son verdaderas, entonces 1:
- condición 1a
- condición 1b
- En caso contrario, entonces 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 )
entonces 0
si ( condición 1 )
entonces 1
se puede describir de la siguiente manera:
Cuando condición 0, entonces 0
Cuando condición 1, entonces 1.
Aunque las realizaciones de la invención han sido descritas principalmente con base en la codificación de vídeo, se debe observar que las realizaciones del sistema de codificación 10, el codificador 20 y el decodificador 30 (y, en consecuencia el sistema 10) y las otras realizaciones aquí descritas también se pueden configurar para procesamiento o codificación de imágenes estáticas, es decir, el procesamiento o codificación de una imagen individual independiente de cualquier imagen precedente o consecutiva, tal como en codificación de vídeo. En general solamente las unidades de inter predicción 244 (codificador) y 344 (decodificador) pueden no estar disponibles en el caso en que la codificación de procesamiento de imagen 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 el decodificador de vídeo 30 igualmente se pueden utilizar para procesamiento de imágenes estáticas, por ejemplo cálculo del residuo 204/304, transformada 206, cuantificación 208, cuantificación inversa 210/310, transformada (inversa) 212/312, división 262/362, intra predicción 254/354, y/o filtrado de bucle 220, 320, y codificación por entropía 270 y decodificación por entropía 304.
Las realizaciones, por ejemplo del codificador 20 y el decodificador 30, y funciones aquí descritas, por ejemplo con referencia al codificador 20 y el decodificador 30, pueden ser implementadas en hardware, software, firmware, o cualquier combinación de los mismos. Si se implementan en software, las funciones pueden ser almacenadas en un medio legible por ordenador o transmitidas sobre el medio de comunicación como una o más instrucciones o código y ejecutadas por una unidad de procesamiento basada en hardware. Los medios legibles por ordenador pueden incluir medios de almacenamiento legibles por ordenador, que corresponde a un medio tangible tal como medios 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, que es 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 se pueda tener acceso a través de uno o más ordenadores o uno o más procesadores para recuperar instrucciones, código y/o estructuras de datos para 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 manera de ejemplo, y no de limitación, dichos medios de almacenamiento legibles por ordenador pueden comprender RAM, ROM, EEPROM, CD-ROM u otro almacenamiento de disco óptico, almacenamiento de disco magnético, otros dispositivos de almacenamiento magnético, memoria flash, o cualquier otro medio que pueda ser utilizado para almacenar un código de programa deseado en forma de instrucciones o estructuras de datos y a las que se puede tener acceso por medio de un ordenador. También, cualquier conexión se denomina de manera apropiada medio legible por ordenador. Por ejemplo si las instrucciones son transmitidas desde un sitio Web, servidor, u otro de origen remoto utilizando un cable coaxial, cable de fibra óptica, par trenzado, línea de abonado digital (Subscriber Digital Line, DSL), o tecnologías inalámbricas tales como infrarrojo, radio y microondas, entonces el cable coaxial, cable de fibra óptica, par trenzado, DSL, o tecnologías inalámbricas tales como infrarrojo, radio, y microondas están incluidas en la definición de medio. Sin embargo, se debe comprender que los medios de almacenamiento legibles por ordenador y los medios de almacenamiento de datos no incluyen conexiones, ondas de portadora, señales u otros medios transitorios, sino que más bien están dirigidos a medios de almacenamiento tangibles no transitorios. Disco (disk) y disco (disc), tal como aquí se utilizan, incluyen disco compacto (CD), disco láser, disco óptico, disco versátil digital (DVD), disco (disk) flexible y disco Blu-ray, donde los discos (disks) en general reproducen datos de manera magnética, mientras que los discos (discs) reproducen datos de manera óptica con láser. Combinaciones de lo anterior también se deben incluir dentro del alcance de medios legibles por ordenador.
Las instrucciones pueden ser ejecutadas por uno o más procesadores, tal como uno o más procesadores de señal digital (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 discretos o integrados equivalentes. Por consiguiente, el término “procesador" como aquí se utiliza se puede referir a cualquiera de la estructura anterior o a cualquier otra estructura adecuada para implementación de las técnicas aquí descritas. Además, en algunos aspectos, la funcionalidad aquí descrita puede ser proporcionada dentro de los módulos de hardware y/o software dedicados configurados para codificación y decodificación, o incorporados en un códec combinado. También, las técnicas podrían ser completamente implementadas en uno o más circuitos o elementos lógicos.
Las técnicas de esta divulgación pueden ser implementadas en una amplia variedad de dispositivos o aparatos, incluyendo un equipo inalámbrico, un circuito integrado (Integrated Circuit, IC) o un conjunto de IC (por ejemplo, un conjunto de chips). Diversos componentes, módulos o unidades se describen en esta divulgación para destacar aspectos funcionales de dispositivos configurados para ejecutar las técnicas dadas a conocer, pero no necesariamente requieren la realización a través de diferentes unidades de hardware. Más bien, tal como se describió anteriormente, diversas unidades se pueden combinar en una unidad de hardware de códec o pueden ser proporcionadas por un agrupamiento de unidades de hardware interoperativas, incluyendo uno o más procesadores tal como se describió anteriormente, en conjunto con software y/o firmware conveniente.

Claims (7)

  1. REIVINDICACIONES 1. Un método de decodificación implementado por un dispositivo de decodificación, que comprende: obtener un flujo de bits de vídeo; decodificar el flujo de bits de vídeo para obtener un valor de información de indicación de formato de croma para un bloque de codificación actual; obtener un valor de modo de intra predicción inicial para la componente de croma del bloque de codificación actual; obtener un valor de modo de intra predicción mapeado para la componente de croma del bloque de codificación actual según una relación de mapeo predefinida y el valor de modo de intra predicción inicial, cuando el valor de información de indicación de formato de croma para el bloque de codificación actual es igual a un valor predefinido; donde el valor predefinido es 2; siendo 2 el valor predefinido, representa que el formato de croma es 4:2:2 obtener un valor de muestra de predicción para la componente de croma del bloque de codificación actual según el valor de modo de intra predicción mapeado; caracterizado por que la siguiente tabla se utiliza para mostrar la relación de mapeo predefinida,
    En donde el modo X representa el valor del modo de intra predicción inicial, y el modo Y representa el modo de intra predicción mapeado; en donde 0 representa un modo plano, 1 representa un modo de DC, 2 a 66 representa modos angulares, correspondiendo cada uno de 2 a 66 una dirección de predicción predefinida.
  2. 2. El método según la reivindicación 1, en el que el valor del modo de intra predicción para la componente de croma del bloque de codificación actual se obtiene basándose en un modo de intra predicción para la componente de luma del bloque de codificación actual.
  3. 3. Un decodificador (30) que comprende circuitos de procesamiento para realizar el método según la reivindicación 1 o 2.
  4. 4. Un método de codificación implementado por un dispositivo de codificación, que comprende: obtener un valor del modo de intra predicción inicial para una componente de croma del bloque de codificación actual; obtener un valor del modo de intra predicción mapeado para la componente de croma del bloque de codificación actual según una relación de mapeo predefinida y el valor del modo de intra predicción inicial, cuando el valor de la información de indicación del formato de croma para el bloque de codificación actual es igual a un valor predefinido, en el que el valor predefinido es 2; siendo 2 el ancho para el valor predefinido, representa que el formato de croma es 4:2:2; codificar el bloque de codificación actual según el valor del modo de intra predicción mapeado; caracterizado por que la siguiente tabla se utiliza para mostrar la relación de mapeo predefinida,
    en donde el modo X representa el valor del modo de intra predicción inicial, y el modo Y representa el modo de intra predicción mapeado; en donde 0 representa un modo plano, 1 representa un modo de DC, 2 a 66 representa modos angulares, correspondiendo cada uno de 2 a 66 una dirección de predicción predefinida.
  5. 5. El método según la reivindicación 4, en el que el método comprende, además: codificar un valor de información de indicación de formato de croma para el bloque de codificación actual en un flujo de bits, en el que el valor de información de indicación de formato de croma representa la relación entre el ancho para la componente de luma del bloque de codificación actual y el ancho para la componente de croma del bloque de codificación actual.
  6. 6. 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 programación para su ejecución por los procesadores, en el que la programación, cuando es ejecutada por los procesadores, configura el codificador para llevar a cabo el método según cualquiera de las reivindicaciones 4 o 5.
  7. 7. Un producto de programa informático que comprende un código de programa para realizar el método según cualquiera de las reivindicaciones 1, 2, 4 y 5.
ES20846688T 2019-08-01 2020-07-20 Un codificador, un decodificador y métodos correspondientes de derivación de croma de modo intra Active ES2985369T3 (es)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
EP2019070804 2019-08-01
PCT/CN2020/103055 WO2021017923A1 (en) 2019-08-01 2020-07-20 An encoder, a decoder and corresponding methods of chroma intra mode derivation

Publications (1)

Publication Number Publication Date
ES2985369T3 true ES2985369T3 (es) 2024-11-05

Family

ID=74230185

Family Applications (1)

Application Number Title Priority Date Filing Date
ES20846688T Active ES2985369T3 (es) 2019-08-01 2020-07-20 Un codificador, un decodificador y métodos correspondientes de derivación de croma de modo intra

Country Status (16)

Country Link
US (2) US12058330B2 (es)
EP (2) EP3991409B1 (es)
JP (3) JP7384998B2 (es)
KR (1) KR20220032625A (es)
CN (5) CN117896520A (es)
AU (1) AU2020322553A1 (es)
BR (1) BR112022001411A2 (es)
CA (1) CA3145479A1 (es)
CL (1) CL2022000251A1 (es)
ES (1) ES2985369T3 (es)
HU (1) HUE067474T2 (es)
IL (1) IL290049A (es)
MX (2) MX2022001306A (es)
PL (1) PL3991409T3 (es)
PT (1) PT3991409T (es)
WO (1) WO2021017923A1 (es)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11477444B2 (en) * 2019-08-06 2022-10-18 Hfi Innovation Inc. Method and apparatus of encoding or decoding video data with intra prediction mode mapping
CN115767088A (zh) 2019-08-14 2023-03-07 Lg电子株式会社 图像编解码方法、发送比特流的方法和记录介质
CN115380535A (zh) * 2020-09-30 2022-11-22 谷歌有限责任公司 多颜色无损图像压缩
CN113489974B (zh) * 2021-07-02 2023-05-16 浙江大华技术股份有限公司 帧内预测方法、视频/图像编解码方法及相关装置
WO2024238680A1 (en) * 2023-05-15 2024-11-21 Google Llc Chroma prediction mode signaling

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9654785B2 (en) * 2011-06-09 2017-05-16 Qualcomm Incorporated Enhanced intra-prediction mode signaling for video coding using neighboring mode
JP5614381B2 (ja) 2011-06-23 2014-10-29 株式会社Jvcケンウッド 画像符号化装置、画像符号化方法、及び画像符号化プログラム、並びに、送信装置、送信方法、及び送信プログラム
KR20130049526A (ko) * 2011-11-04 2013-05-14 오수미 복원 블록 생성 방법
WO2013102293A1 (en) * 2012-01-04 2013-07-11 Mediatek Singapore Pte. Ltd. Improvements of luma-based chroma intra prediction
US20140198855A1 (en) * 2013-01-14 2014-07-17 Qualcomm Incorporated Square block prediction
JP6462693B2 (ja) * 2013-12-13 2019-01-30 クゥアルコム・インコーポレイテッドQualcomm Incorporated 3dビデオコーディングにおける深度イントラ予測モードおよび深度インター予測モードのための簡易深度コーディング(sdc)のシグナリング
WO2017034331A1 (ko) * 2015-08-27 2017-03-02 엘지전자 주식회사 영상 코딩 시스템에서 크로마 샘플 인트라 예측 방법 및 장치
WO2017139937A1 (en) * 2016-02-18 2017-08-24 Mediatek Singapore Pte. Ltd. Advanced linear model prediction for chroma coding
US10750172B2 (en) * 2016-04-22 2020-08-18 Vid Scale, Inc. Prediction systems and methods for video coding based on filtering nearest neighboring pixels
US10917660B2 (en) * 2017-01-13 2021-02-09 Vid Scale, Inc. Prediction approaches for intra planar coding
US10531085B2 (en) 2017-05-09 2020-01-07 Futurewei Technologies, Inc. Coding chroma samples in video compression
CN109922348B (zh) * 2017-12-13 2020-09-18 华为技术有限公司 图像编解码方法和装置
WO2020060185A1 (ko) * 2018-09-19 2020-03-26 한국전자통신연구원 영상 부호화/복호화 방법, 장치 및 비트스트림을 저장한 기록 매체
CN113692741B (zh) * 2019-04-18 2022-12-13 北京字节跳动网络技术有限公司 跨分量模式中的参数推导
KR20200145749A (ko) * 2019-06-19 2020-12-30 한국전자통신연구원 화면 내 예측 모드 및 엔트로피 부호화/복호화 방법 및 장치

Also Published As

Publication number Publication date
AU2020322553A1 (en) 2022-02-24
CN117528078A (zh) 2024-02-06
CN113348665B (zh) 2024-01-02
PL3991409T3 (pl) 2024-09-09
JP7625674B2 (ja) 2025-02-03
US20240373025A1 (en) 2024-11-07
HUE067474T2 (hu) 2024-10-28
CN113348665A (zh) 2021-09-03
CL2022000251A1 (es) 2022-09-20
IL290049A (en) 2022-03-01
EP3991409A4 (en) 2022-08-17
CN117896521A (zh) 2024-04-16
KR20220032625A (ko) 2022-03-15
PT3991409T (pt) 2024-08-12
CA3145479A1 (en) 2021-02-04
US12058330B2 (en) 2024-08-06
JP7384998B2 (ja) 2023-11-21
MX2022001306A (es) 2022-03-02
JP2025081317A (ja) 2025-05-27
EP3991409B1 (en) 2024-06-05
EP4383718A3 (en) 2024-08-28
JP2024012544A (ja) 2024-01-30
EP3991409A1 (en) 2022-05-04
EP4383718A2 (en) 2024-06-12
MX2025000991A (es) 2025-03-07
CN117896519A (zh) 2024-04-16
JP2022542454A (ja) 2022-10-03
WO2021017923A1 (en) 2021-02-04
US20220159263A1 (en) 2022-05-19
BR112022001411A2 (pt) 2022-03-22
CN117896520A (zh) 2024-04-16

Similar Documents

Publication Publication Date Title
ES2966479T3 (es) Un codificador, un decodificador y métodos correspondientes para la intrapredicción
ES2946909T3 (es) Método, aparato y producto de programa informático para interpredicción
ES2992657T3 (en) Method and apparatus for affine based inter prediction of chroma subblocks
ES3024974T3 (en) An encoder, a decoder and corresponding methods for sub-block partitioning mode
ES2985369T3 (es) Un codificador, un decodificador y métodos correspondientes de derivación de croma de modo intra
ES2975941T3 (es) Armonización de intrapredicción basada en matriz y selección de núcleo de transformada secundaria
ES2972326T3 (es) Un codificador, un decodificador y métodos correspondientes para el modo de fusión
ES2987742T3 (es) Método y aparato para intrapredicción
CN113748677A (zh) 编码器、解码器及对应的帧内预测方法
ES2992659T3 (en) Method and apparatus for prediction refinement with optical flow for an affine coded block
ES2984615T3 (es) Interpredicción de video basada en flujo óptico
ES2993252T3 (en) An encoder, a decoder and corresponding methods using ibc merge list
ES2984321T3 (es) Método y aparato de restricciones a nivel de bloque dependientes de modo y tamaño
BR112021016560A2 (pt) Método e aparelho para predição intra usando modelo linear
ES2988839T3 (es) Método y aparato de modelización lineal de componentes cruzados para intrapredicción
BR122023020161A2 (pt) Processo de codificação para modo de partição geométrica
BR112021010286A2 (pt) codificador, decodificador e métodos correspondentes de construção de lista de modos mais prováveis para blocos com predição de múltiplas hipóteses
ES2992660T3 (en) Method and apparatus for chroma intra prediction in video coding
BR122023021045A2 (pt) Método de compactação do vetor de movimento, meio de armazenamento legível por computador não transitório, codificador, decodificador e meio de armazenamento
BR112021009833A2 (pt) codificador, decodificador e métodos correspondentes para predição inter
ES2967903T3 (es) Codificador, decodificador y métodos correspondientes utilizando filtrado por interpolación
ES2946058T3 (es) Un codificador, un decodificador y los métodos correspondientes que usan la codificación intramodo para la intrapredicción
ES2967663T3 (es) Método y aparato para el almacenamiento de información de movimiento
US20220345712A1 (en) Method and apparatus for intra prediction
ES2983321T3 (es) Método y aparato de filtrado de interpolación para la codificación predictiva