ES2946058T3 - Un codificador, un decodificador y los métodos correspondientes que usan la codificación intramodo para la intrapredicción - Google Patents
Un codificador, un decodificador y los métodos correspondientes que usan la codificación intramodo para la intrapredicción Download PDFInfo
- Publication number
- ES2946058T3 ES2946058T3 ES20762968T ES20762968T ES2946058T3 ES 2946058 T3 ES2946058 T3 ES 2946058T3 ES 20762968 T ES20762968 T ES 20762968T ES 20762968 T ES20762968 T ES 20762968T ES 2946058 T3 ES2946058 T3 ES 2946058T3
- Authority
- ES
- Spain
- Prior art keywords
- mode
- mpm
- intra
- block
- video
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/593—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial prediction techniques
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/103—Selection of coding mode or of prediction mode
- H04N19/11—Selection of coding mode or of prediction mode among a plurality of spatial predictive coding modes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/134—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
- H04N19/157—Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/134—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
- H04N19/136—Incoming video signal characteristics or properties
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
- H04N19/17—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
- H04N19/176—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/46—Embedding additional information in the video signal during the compression process
- H04N19/463—Embedding additional information in the video signal during the compression process by compressing encoding parameters before transmission
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/119—Adaptive subdivision aspects, e.g. subdivision of a picture into rectangular or non-rectangular coding blocks
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
Se proporciona un método de codificación de predicción de un bloque actual implementado por un dispositivo decodificador o un dispositivo codificador, que comprende: obtener un modo de predicción intra de un bloque vecino izquierdo del bloque actual; obtener un modo de predicción intra de un bloque vecino anterior del bloque actual; construyendo un modo más probable, MPM, lista de modos de predicción intra para el bloque actual, la lista MPM comprende al menos 5 entradas de modos de predicción intra de la siguiente manera: {ang, 2 + ((ang + 61) %64), 2 + ((ang -1) %64), 2 + ((ang + 60) %64), 2 + ((ang) %64) } cuando se cumple al menos una primera condición, donde la primera condición incluye que la predicción intra el modo del bloque vecino izquierdo y el modo de predicción intra del bloque vecino anterior son el mismo modo angular, (Traducción automática con Google Translate, sin valor legal)
Description
DESCRIPCIÓN
Un codificador, un decodificador y los métodos correspondientes que usan la codificación intramodo para la intrapredicción
Campo técnico
Las realizaciones de la presente solicitud generalmente se relacionan con el campo del procesamiento de imágenes y más particularmente con la intrapredicción.
Antecedentes
La codificación de vídeo (codificación y decodificación de vídeo) se usa en una amplia gama de aplicaciones de vídeo digital, por ejemplo, transmisión de TV digital, transmisión de vídeo a través de Internet y redes móviles, aplicaciones de conversación en tiempo real como chat de vídeo, videconferencia, DVD y discos Blueray, sistemas de adquisición y edición de contenido de vídeo y videocámaras 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 generar dificultades cuando los datos se transmiten o se comunican de otro modo a través de una red de comunicaciones con capacidad de ancho de banda limitada. Por lo tanto, los datos de vídeo generalmente se comprimen antes de comunicarse a través de las redes de telecomunicaciones modernas. El tamaño de un vídeo también podría ser un problema cuando el vídeo se almacena en un dispositivo de almacenamiento porque los recursos de memoria pueden ser limitados. Los dispositivos de compresión de vídeo a menudo usan software y/o hardware en el origen para codificar los datos de vídeo antes de la transmisión o el almacenamiento, lo que reduce la cantidad de datos necesarios para representar imágenes de vídeo digital. Luego, 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 mayor calidad de vídeo, son deseables técnicas mejoradas de compresión y descompresión que mejoren la relación de compresión con poco o ningún sacrificio en la calidad de la imagen.
En particular, existe una demanda constante para reducir la carga del procesador en el contexto del procesamiento de intrapredicción. En la técnica, se conoce el empleo de la lista del Modo Más Probable (MPM) para la codificación del modo de intrapredicción. La lista MPM reduce los bits necesarios para codificar el modo de intrapredicción del bloque actual. Cuando el modo de intrapredicción del bloque actual corresponde a una entrada de una lista MPM, se codifica un índice en lugar del modo real, por lo que se necesitan menos bits. Sin embargo, seleccionar las entradas para la generación de una lista de MPM con vistas a la codificación de intrapredicción más eficiente sigue siendo una tarea pendiente. La selección adecuada de las entradas influye en gran medida en la eficiencia de la codificación del modo de intrapredicción basada en la lista MPM.
El documento de BROSS B ET AL: "Versatile Video Coding (Draft 4)-V3" describe un proceso de derivación para el modo de intrapredicción de luminancia (o abreviado, luma) y 3 candModelist[x] con x=0-5, cuando candIntraPredModeB es igual a candIntraPredModeA y candIntraPredModeA es mayor que INTRA_DC.
El documento de LEE J ET AL: "Non-CE3: Modification of MPM derivation” describe dos métodos de derivación de MPM según intra_luma_ref_idx y varias listas de MPM diferentes.
El documento de VAN DER AUWERA (QUALCOMM) G ET AL: "Description of Core Experiment 3 (CE3): Intra Prediction and Mode Coding" describe que si un modo vecino es el modo planar o DC, y el otro modo vecino es el modo angular, se propone que el modo planar se inserte primero en la lista de MPM, así como en varias listas de MPM diferentes en diferentes condiciones.
El documento de Zhao (TENCENT) L ET AL: "CE3-related: Modifications on MPM list generation” propone modificaciones en la generación de la lista MPM: para la línea de referencia cero, si un modo vecino es el modo planar o DC, y el otro modo vecino es el modo angular, se propone insertar primero el modo planar en la lista MPM.
El documento de BOSSEN (BOSSENTECH) F ET AL: "Non-CE3: A unified lume intra mode list constructor process" propone tres procesos diferentes de construcción de listas de luminancia intramodo. La contribución propone el uso de un único proceso de construcción de listas que comprende únicamente modos angulares. Y la lista ya no contiene modos no angulares (modos PLANAR, DC), la señalización de luminancia intramodo es modificada para señalar primero un indicador que indica si el modo seleccionado es angular.
En vista de esto, es un objeto fundamental de la presente invención proporcionar una técnica para generar una lista de MPM que dé como resultado una codificación más eficaz en comparación con la técnica.
Compendio
Las realizaciones de la presente solicitud proporcionan aparatos y métodos para codificar y decodificar según las
reivindicaciones independientes.
Los objetos anteriores y otros se consiguen mediante el objeto de las reivindicaciones independientes. Otras formas de implementación se desprenden de las reivindicaciones dependientes, la descripción y las figuras. La invención se expone en el conjunto de reivindicaciones adjunto. A continuación, las partes de la descripción y los dibujos que se refieren a realizaciones que no están cubiertas por las reivindicaciones no se presentan como realizaciones de la invención, sino como ejemplos útiles para comprender la invención.
En otras palabras, ang es un valor o un índice que representa el modo de intrapredicción del bloque vecino izquierdo o el modo de intrapredicción del bloque vecino superior. El intervalo de ang puede ser {2-66}.
Como una implementación de la realización, el método puede incluir además comprobar si el modo de intrapredicción del bloque vecino izquierdo y el modo de intrapredicción del bloque vecino superior son el mismo modo angular o no. La lista MPM así generada puede ser ventajosa con respecto a la eficiencia de la codificación, ya que, en la práctica, los modos de intrapredicción comúnmente usados están incluidos en esa lista MPM y, por lo tanto, pueden ser referenciados por el índice de la lista sin necesidad de codificar el modo real.
Los detalles de una o más realizaciones se exponen en los dibujos adjuntos y en la descripción a continuación. Otras características, objetos y ventajas serán evidentes a partir de la descripción, los dibujos y las reivindicaciones. Breve descripción de los dibujos
En las siguientes realizaciones de la invención se describen con más detalle 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 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 realizaciones de la invención;
La FIG. 2 es un diagrama de bloques que muestra un ejemplo de un codificador de vídeo configurado para implementar realizaciones de la invención;
La FIG. 3 es un diagrama de bloques que muestra una estructura de ejemplo de un decodificador de vídeo configurado para implementar realizaciones de la invención;
La FIG. 4 es un diagrama de bloques que ilustra un ejemplo de un aparato de codificación o un aparato de decodificación;
La FIG. 5 es un diagrama de bloques que ilustra otro ejemplo de un aparato codificador o un aparato decodificador; La FIG. 6 ilustra el funcionamiento de una herramienta de codificación de línea de referencia múltiple.
La FIG. 7 ilustra un ejemplo de codificación dentro de subparticiones.
La FIG. 8 ilustra un ejemplo de codificación dentro de subparticiones.
La FIG. 9 muestra las posiciones de los bloques vecinos de los que depende la codificación intrapredicción de un bloque actual.
La FIG. 10 ilustra realizaciones de un método de codificación de predicción de un bloque actual implementado por un dispositivo de decodificación o un dispositivo de codificación según la presente invención.
La FIG. 11 ilustra realizaciones de un dispositivo para uso en un codificador de imágenes y/o un decodificador de imágenes según la presente invención.
La FIG. 12 es un diagrama de bloques que muestra una estructura de ejemplo de un sistema 3100 de suministro de contenido que realiza un servicio de entrega de contenido; y
La FIG. 13 es un diagrama de bloques que muestra la estructura de un ejemplo de un dispositivo terminal. A continuación, los signos de referencia idénticos se refieren a características idénticas o al menos funcionalmente equivalentes, si no se especifica explícitamente lo contrario.
Descripción detallada de las realizaciones
En la siguiente descripción, se hace referencia a las figuras adjuntas, que forman parte de la descripción, y que muestran, a modo de ilustración, aspectos específicos de realizaciones de la invención o aspectos específicos en los que pueden usarse realizaciones de la presente invención. Se entiende que las realizaciones de la invención se pueden usar en otros aspectos y comprenden cambios estructurales o lógicos no representados en las figuras. La siguiente descripción detallada, por lo tanto, no debe tomarse en un sentido limitativo, y el alcance de la presente invención está definido por las reivindicaciones adjuntas.
Por ejemplo, se entiende que una descripción en relación con un método descrito también puede ser válida para un dispositivo o sistema correspondiente configurado para realizar el método y viceversa. Por ejemplo, si se describen uno o una pluralidad de etapas específicas del método, un dispositivo correspondiente puede incluir una o una pluralidad de unidades, por ejemplo, unidades funcionales, para realizar la etapa descrita o la pluralidad de etapas del método (por ejemplo, una unidad que realiza la una o varias etapas, o una pluralidad de unidades, cada una de las cuales realiza una o más etapas de la pluralidad de etapas), incluso si tales una o más unidades están no descritas o ilustradas explícitamente en las figuras. Por otro lado, por ejemplo, si un aparato específico se describe en función de una o una pluralidad de unidades, por ejemplo, unidades funcionales, un método correspondiente puede incluir una etapa para realizar la funcionalidad de una o varias unidades (por ejemplo, una etapa que realiza la funcionalidad de una o varias unidades, o una pluralidad de etapas, cada una de las cuales realiza la funcionalidad de una o más de la pluralidad de unidades), incluso si tal una o la pluralidad de etapas no se describen o ilustran explícitamente en las figuras. Además, se entiende que las características de las diversas realizaciones ejemplares y/o aspectos descritos en la presente memoria pueden combinarse entre sí, a menos que se indique específicamente lo contrario.
La codificación de vídeo generalmente se refiere al procesamiento de una secuencia de imágenes, que forman el vídeo o la secuencia de vídeo. En lugar del término "imagen", el término "fotograma" o "imagen" se puede usar como sinónimos en el campo de la codificación de vídeo. La codificación de vídeo (o la codificación en general) comprende dos partes: codificación de vídeo y decodificación de vídeo. La codificación de vídeo se realiza en el lado de origen, lo que típicamente comprende el procesamiento (por ejemplo, por compresión) de las imágenes de vídeo originales para reducir la cantidad de datos necesarios para representar las imágenes de vídeo (para un almacenamiento y/o transmisión más eficiente). La decodificación de vídeo se realiza en el lado de destino y normalmente comprende el procesamiento inverso en comparación con el codificador para reconstruir las imágenes de vídeo. Se entenderá que las realizaciones que se refieren a "codificación" de imágenes de vídeo (o imágenes en general) se relacionan con "codificación" o "descodificació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 también se conoce como CODEC (Codificación y Decodificación).
En el caso de la codificación de vídeo sin pérdida, las imágenes de vídeo originales se pueden reconstruir, es decir, las imágenes de vídeo reconstruidas tienen la misma calidad que las imágenes de vídeo originales (suponiendo que no haya pérdida de transmisión u otra pérdida de datos durante el almacenamiento o la transmisión). En caso de codificación de vídeo con pérdida se realiza una compresión adicional, por ejemplo, mediante cuantificación, para reducir la cantidad de datos que representan las imágenes de vídeo, que no pueden reconstruirse completamente en el decodificador, es decir, la calidad de las imágenes de vídeo reconstruidas es menor o peor en comparación con la calidad de las imágenes de vídeo originales.
Varios estándares de codificación de vídeo pertenecen al grupo de "códecs de vídeo híbridos con pérdida" (es decir, combinan la predicción espacial y temporal en el dominio de muestra y la codificación de transformación 2D para aplicar la cuantificación en el dominio de transformación). Cada imagen de una secuencia de vídeo normalmente se divide en un conjunto de bloques que no se superponen y la codificación normalmente se realiza a nivel de bloque. En otras palabras, en el codificador, el vídeo generalmente se procesa, es decir, se codifica, en un nivel de bloque (bloque de vídeo), por ejemplo, usando predicción espacial (intraimágenes) y/o predicción temporal (interimágenes) para generar un bloque de predicción, restando el bloque de predicción del bloque actual (bloque actualmente procesado/a procesar) para obtener un bloque residual, transformando el bloque residual y cuantificar el bloque residual en el dominio de transformación para reducir la cantidad de datos a transmitir (compresión), mientras que en el decodificador se aplica el procesamiento inverso en comparación con el codificador al bloque codificado o comprimido para reconstruir el bloque actual para su representación. Además, el codificador duplica el bucle de procesamiento del decodificador de modo que ambos generarán predicciones idénticas (por ejemplo, predicciones intra e inter) y/o reconstrucciones para el procesamiento, es decir, la codificación, de los bloques posteriores.
En las siguientes realizaciones de un sistema 10 de codificación de vídeo, un codificador de vídeo 20 y un decodificador de vídeo 30 se describen en base a las FIGs. 1 a 3.
La figura 1A es un diagrama de bloques esquemático que ilustra un sistema 10 de codificación de ejemplo, por ejemplo, un sistema 10 de codificación de vídeo (o abreviado, sistema 10 de codificación) que puede usar técnicas de esta presente solicitud. El codificador 20 de vídeo (o abreviado, codificador 20) y el decodificador 30 de vídeo (o abreviado, decodificador 30) del sistema 10 de codificación de vídeo representan ejemplos de dispositivos que pueden configurarse para realizar técnicas según varios ejemplos descritos en la presente solicitud.
Como se muestra en la FIG. 1A, el sistema 10 de codificación comprende un dispositivo 12 de origen configurado para
proporcionar datos 21 de imagen codificados, por ejemplo, a un dispositivo 14 de destino para decodificar los datos 13 de imagen codificados.
El dispositivo 12 de origen comprende un codificador 20 y, además, es decir, opcionalmente, puede comprender una fuente 16 de imágenes, un preprocesador (o unidad de preprocesamiento) 18, por ejemplo, un preprocesador 18 de imagen y una interfaz de comunicación o unidad 22 de comunicación.
La fuente 16 de imágenes puede comprender o ser cualquier tipo de dispositivo de captura de imágenes, por ejemplo, una cámara para capturar una imagen del mundo real, y/o cualquier tipo de dispositivo generador de imágenes, por ejemplo, un procesador de gráficos por ordenador para generar una imagen animada por ordenador, o cualquier tipo de otro 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 (VR)) y/o cualquier combinación de los mismos (por ejemplo, una imagen de realidad aumentada (AR)). La fuente de imagen puede ser cualquier tipo de memoria o almacenamiento que almacene cualquiera de las imágenes antes mencionadas.
A diferencia del preprocesador 18 y el procesamiento realizado por la unidad 18 de preprocesamiento, la imagen o los datos 17 de imagen también pueden denominarse imagen sin procesar o datos 17 de imagen sin procesar.
El preprocesador 18 está configurado para recibir los datos 17 de imagen (sin procesar) y para realizar el preprocesamiento de los datos 17 de imagen para obtener una imagen 19 preprocesada o datos 19 de imagen preprocesados. El preprocesamiento realizado por el procesador 18 puede comprender, por ejemplo, un recorte, una conversión de formato de color (por ejemplo, de RGB a YCbCr), una corrección de color o una eliminación de ruido. Puede entenderse que la unidad 18 de preprocesamiento puede ser un componente opcional.
El codificador 20 de vídeo está configurado para recibir los datos 19 de imagen preprocesados y proporcionar datos 21 de imagen codificados (a continuación se describirán más detalles, por ejemplo, en base a la figura 2).
La interfaz 22 de comunicación del dispositivo 12 de origen puede configurarse para recibir los datos 21 de imagen codificados y transmitir los datos 21 de imagen codificados (o cualquier otra versión procesada de los mismos) a través del canal 13 de comunicación a otro dispositivo, por ejemplo, el dispositivo 14 de destino o cualquier otro dispositivo, para almacenamiento o reconstrucción directa.
El dispositivo 14 de destino comprende un decodificador 30 (por ejemplo, un decodificador 30 de vídeo), y puede comprender adicionalmente, es decir, opcionalmente, una interfaz de comunicación o unidad 28 de comunicación, un posprocesador 32 (o unidad 32 de posprocesamiento) y un dispositivo 34 de visualización.
La interfaz 28 de comunicación del dispositivo 14 de destino está configurada para recibir los datos 21 de imagen codificados (o cualquier otra versión procesada de los mismos), por ejemplo, directamente desde el dispositivo 12 de origen o desde cualquier otra fuente, por ejemplo, un dispositivo de almacenamiento, por ejemplo, un dispositivo de almacenamiento de datos de imágenes codificadas, y proporcionar los datos 21 de imagen codificados al decodificador 30.
La interfaz 22 de comunicación y la interfaz 28 de comunicación pueden configurarse para transmitir o recibir los datos 21 de imagen codificados o los datos 13 codificados a través de un enlace de comunicación directo entre el dispositivo 12 de origen y el dispositivo 14 de destino, por ejemplo, una conexión directa por cable o inalámbrica, o a través de cualquier tipo de red, por ejemplo, una red por cable o inalámbrica o cualquier combinación de las mismas, o cualquier tipo de red privada y pública, o cualquier tipo de combinación de las mismas.
La interfaz 22 de comunicación puede configurarse, por ejemplo, para empaquetar los datos 21 de imagen codificados en un formato apropiado, por ejemplo, paquetes, y/o procesar los datos de imagen codificados usando cualquier tipo de codificación o procesamiento de transmisión para la transmisión a través de un enlace de comunicación o una red de comunicación.
La interfaz 28 de comunicación, que forma la contraparte de la interfaz 22 de comunicación, puede configurarse, por ejemplo, para recibir los datos transmitidos y procesar los datos de transmisión usando cualquier tipo de decodificación o procesamiento de transmisión correspondiente y/o desempaquetado para obtener los datos 21 de imagen codificados.
Tanto la interfaz 22 de comunicación como la interfaz 28 de comunicación pueden configurarse como interfaces de comunicación unidireccionales, como lo indica la flecha del canal 13 de comunicación en la FIG. 1A que apunta desde el dispositivo 12 de origen al dispositivo 14 de destino, o interfaces de comunicación bidireccionales, y se puede configurar, por ejemplo, para enviar y recibir mensajes, por ejemplo, para establecer una conexión, reconocer e intercambiar cualquier otra información relacionada con el enlace de comunicación y/o la transmisión de datos, por ejemplo, transmisión de datos de imágenes codificadas.
El decodificador 30 está configurado para recibir los datos 21 de imagen codificados y proporcionar datos 31 de imagen
decodificados o una imagen 31 decodificada (a continuación se describirán más detalles, por ejemplo, en base a la figura 3 o la figura 5).
El posprocesador 32 del dispositivo 14 de destino está configurado para posprocesar los datos 31 de imagen decodificados (también llamados datos de imagen reconstruidos), por ejemplo, la imagen 31 decodificada, para obtener datos 33 de imagen posprocesados, por ejemplo, una imagen 33 posprocesada. El posprocesamiento realizado por la unidad 32 de posprocesamiento 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 31 de imagen decodificados para visualización, por ejemplo, por el dispositivo 34 de visualización.
El dispositivo 34 de visualización del dispositivo 14 de destino está configurado para recibir los datos 33 de imagen posprocesados para mostrar la imagen, por ejemplo, a un usuario o espectador. El dispositivo 34 de visualización puede ser o comprender cualquier tipo de visualización para representar la imagen reconstruida, por ejemplo, una pantalla o monitor integrado o externo. Las pantallas pueden, por ejemplo, comprender pantallas de cristal líquido (LCD), pantallas de diodos orgánicos emisores de luz (OLED), pantallas de plasma, proyectores, pantallas micro LED, cristal líquido sobre silicio (LCoS), procesador de luz digital (d Lp ) o cualquier otro tipo de pantalla.
Aunque la FIG. 1A representa el dispositivo 12 de origen y el dispositivo 14 de destino como dispositivos separados, las realizaciones de los dispositivos también pueden comprender ambos o ambas funcionalidades, el dispositivo 12 de origen o la funcionalidad correspondiente y el dispositivo 14 de destino o la funcionalidad correspondiente. En dichas realizaciones, el dispositivo 12 de origen o la funcionalidad correspondiente y el dispositivo 14 de destino o la funcionalidad correspondiente pueden implementarse usando el mismo hardware y/o software o por hardware y/o software separado o cualquier combinación de los mismos.
Como será evidente para los expertos en base a la descripción, la existencia y división (exacta) de funcionalidades de las diferentes unidades o funcionalidades dentro del dispositivo 12 de origen y/o el dispositivo 14 de destino como se muestra en la Fig. 1A puede variar dependiendo de la dispositivo y aplicación reales.
El codificador 20 (por ejemplo, un codificador 20 de vídeo) o el decodificador 30 (por ejemplo, un decodificador 30 de vídeo) o tanto el codificador 20 como el decodificador 30 pueden implementarse a través de circuitos de procesamiento como se muestra en la FIG. 1B, como uno o más microprocesadores, procesador de señal digital (DSP), circuitos integrados de aplicación específica (ASIC), matriz de puertas programables en campo (FPGA), lógica discreta, hardware, codificación de vídeo dedicada o cualquier combinación de los mismos. El codificador 20 puede implementarse a través del circuito 46 de procesamiento para incorporar los diversos módulos como se explica con respecto al codificador 20 de la FIG. 2 y/o cualquier otro sistema codificador o subsistema descrito en la presente memoria. El decodificador 30 puede implementarse a través del circuito 46 de procesamiento para incorporar los diversos módulos como se explica con respecto al decodificador 30 de la FIG. 3 y/o cualquier otro sistema o subsistema decodificador descrito en la presente memoria. El circuito de procesamiento puede configurarse para realizar las diversas operaciones que se describen más adelante. Como se muestra en la FIG. 5, si las técnicas se implementan parcialmente en software, un dispositivo puede almacenar instrucciones para el software en un medio de almacenamiento legible por ordenador no transitorio adecuado y puede ejecutar las instrucciones en hardware usando uno o más procesadores para realizar las técnicas de esta descripción. Tanto el codificador 20 de vídeo como el decodificador 30 de vídeo pueden integrarse como parte de un codificador/descodificador (CODEC) combinado en un solo dispositivo, por ejemplo, como se muestra en la FIG. 1B.
El dispositivo 12 de origen y el dispositivo 14 de destino pueden comprender cualquiera de una amplia gama de dispositivos, incluido cualquier tipo de dispositivo portátil o estacionario, por ejemplo, ordenadores portátiles o portátiles, teléfonos móviles, teléfonos inteligentes, tabletas u ordenadores tabletas, cámaras, ordenadores de escritorio, decodificadores, televisores, dispositivos de visualización, reproductores de medios digitales, consolas de videojuegos, dispositivos de transmisión de vídeo (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 usar cualquier tipo de sistema operativo o no usarlo. En algunos casos, el dispositivo 12 de origen y el dispositivo 14 de destino pueden estar equipados para comunicación inalámbrica. Por lo tanto, el dispositivo 12 de origen y el dispositivo 14 de destino pueden ser dispositivos de comunicación inalámbrica.
En algunos casos, el sistema 10 de codificación de vídeo ilustrado en la FIG. 1A es simplemente un ejemplo y las técnicas de la presente solicitud pueden aplicarse a configuraciones de codificación de vídeo (por ejemplo, codificación de vídeo o decodificación de vídeo) que no necesariamente incluyen ninguna comunicación de datos entre la codificación y los dispositivos de decodificación. En otros ejemplos, los datos se recuperan de una memoria local, se transmiten a través de una red o similar. Un dispositivo de codificación de vídeo puede codificar y almacenar datos en la memoria y/o un dispositivo de decodificación de vídeo puede recuperar y decodificar datos de la memoria. En algunos ejemplos, la codificación y decodificación la realizan dispositivos que no se comunican entre sí, sino que simplemente codifican datos en la memoria y/o recuperan y decodifican datos de la memoria.
Para facilitar la descripción, las realizaciones de la invención se describen en la presente memoria, por ejemplo, con
referencia a la codificación de vídeo de alta eficiencia (HEVC) o al software de referencia de codificación de vídeo versátil (VVC), el estándar de codificación de vídeo de próxima generación desarrollado por el Equipo de Colaboración Conjunta sobre Codificación de Vídeo (JCT-VC) del Grupo de expertos en codificación de vídeo (VCEG) del ITU-T y el Grupo de Expertos en Imágenes en Movimiento (MPEG) de iSo /IEC. Un experto en la técnica comprenderá 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 20 de vídeo de ejemplo que está configurado para implementar las técnicas de la presente solicitud. En el ejemplo de la FIG. 2, el codificador 20 de vídeo comprende una entrada 201 (o interfaz 201 de entrada), una unidad 204 de cálculo residual, una unidad 206 de procesamiento de transformación, una unidad 208 de cuantificación, una unidad 210 de cuantificación inversa y procesamiento 212 de transformada inversa, una unidad 214 de reconstrucción, una unidad 220 de filtro de bucle, una memoria intermedia de imagen decodificada (DPB) 230, una unidad 260 de selección de modo, una unidad 270 de codificación de entropía y una salida 272 (o interfaz 272 de salida). La unidad 260 de selección de modo puede incluir una unidad 244 de interpredicción, una unidad 254 de intrapredicción y una unidad 262 de partición. La unidad 244 de interpredicción puede incluir una unidad de estimación de movimiento y una unidad de compensación de movimiento (no mostradas). Un codificador 20 de vídeo como se muestra en la FIG. 2 también puede denominarse codificador de vídeo híbrido o un codificador de vídeo según un códec de vídeo híbrido.
La unidad 204 de cálculo residual, la unidad 206 de procesamiento de transformación, la unidad 208 de cuantificación, la unidad 260 de selección de modo pueden denominarse formadoras de una ruta de señal hacia adelante del codificador 20, mientras que la unidad 210 de cuantificación inversa, la unidad 212 de procesamiento de transformada inversa, la unidad 214 de reconstrucción, el búfer 216, el filtro 220 de bucle, el búfer de imágenes decodificadas (DPB) 230, la unidad 244 de interpredicción y la unidad 254 de intrapredicción pueden denominarse formadoras de una ruta de señal hacia atrás del codificador 20 de vídeo, donde la ruta de señal hacia atrás del codificador 20 de vídeo corresponde a la ruta de señal del decodificador (véase el decodificador 30 de vídeo en la FIG. 3). La unidad 210 de cuantificación inversa, la unidad 212 de procesamiento de transformada inversa, la unidad 214 de reconstrucción, el filtro 220 de bucle, la memoria intermedia de imágenes decodificadas (DPB) 230, la unidad 244 de interpredicción y la unidad 254 de intrapredicción también se denominan formadoras del "decodificador incorporado" del codificador 20 de vídeo.
Imágenes y partición de imágenes (imágenes y bloques)
El codificador 20 puede configurarse para recibir, por ejemplo, a través de la entrada 201, una imagen 17 (o datos 17 de imagen), por ejemplo, una imagen de una secuencia de imágenes que forman un vídeo o secuencia de vídeo. La imagen o los datos de imagen recibidos también pueden ser una imagen 19 preprocesada (o datos 19 de imagen preprocesados). En aras de la simplicidad, la siguiente descripción se refiere a la imagen 17. La imagen 17 también puede denominarse imagen actual o imagen a codificar (en particular, en la codificación de vídeo para distinguir la imagen actual de otras imágenes, por ejemplo, imágenes previamente codificadas y/o decodificada de la misma secuencia de vídeo, es decir, la secuencia de vídeo que también comprende la imagen actual).
Una imagen (digital) es o puede ser considerada como un conjunto o matriz bidimensional de muestras con valores de intensidad. Una muestra en la matriz también puede denominarse píxel (forma abreviada de elemento de imagen) o pel. El número de muestras en dirección horizontal y vertical (o eje) de la matriz o imagen define el tamaño y/o la resolución de la imagen. Para la representación del color, normalmente se emplean tres componentes de color, es decir, la imagen puede representarse o incluir tres matrices de muestra. En formato RGB o espacio de color, una imagen comprende una matriz de muestra roja, verde y azul correspondiente. Sin embargo, en la codificación de vídeo, cada píxel generalmente se representa en un formato de luminancia y crominancia o espacio de color, por ejemplo, YCbCr, que comprende una componente de luminancia indicada por Y (a veces también se usa L en su lugar) y dos componentes de crominancia indicadas por Cb y Cr. El componente de luminancia (o luminancia corta) Y representa el brillo o la intensidad del nivel de gris (por ejemplo, como en una imagen en escala de grises), mientras que los dos componentes de crominancia (o abreviado, croma) Cb y Cr representan la cromaticidad o los componentes de información de color. En consecuencia, una imagen en formato YCbCr comprende una matriz de muestra de luminancia de valores de muestra de luminancia (Y) y dos matrices de muestra de crominancia de valores de crominancia (Cb y Cr). Las imágenes en formato RGB se pueden convertir o transformar en formato YCbCr y viceversa, el proceso también se conoce como transformación o conversión de color. Si una imagen es monocromática, la imagen puede comprender solo una matriz de muestra de luminancia. En consecuencia, 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 20 de vídeo pueden comprender una unidad de partición de imágenes (no representada en la FIG. 2) configurada para dividir la imagen 17 en una pluralidad de bloques 203 de imágenes (normalmente no superpuestos). Estos bloques también pueden denominarse bloques raíz, bloques de macros (H.264/AVC) o bloques de árbol de codificación (CTB) o unidades de árbol de codificación (CTU) (H.265/HEVC y VVC). La unidad de partición de imágenes puede configurarse para usar 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 bloques correspondientes.
En realizaciones adicionales, el codificador de vídeo puede configurarse 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 puede denominarse bloque de imagen actual o bloque de imagen a codificar.
Al igual que la imagen 17, el bloque 203 de imagen nuevamente es o puede ser considerado como un conjunto o matriz bidimensional de muestras con valores de intensidad (valores de muestra), aunque de menor dimensión que la imagen 17. En otras palabras, el bloque 203 puede comprenden, por ejemplo, una matriz de ensayo (por ejemplo, la una matriz luma en caso de una imagen 17 monocromática, o una matriz luma o croma en caso de una imagen de color) o tres matrices de muestra (por ejemplo, matrices de una luma y dos cromas en caso de una imagen 17 de color) o cualquier otro número y/o tipo de matriz dependiendo del formato de color aplicado. El número de muestras en dirección horizontal y vertical (o eje) del bloque 203 define el tamaño del bloque 203. En consecuencia, un bloque puede ser, por ejemplo, una matriz de muestras MxN (M-columna por N-fila), o una matriz MxN de coeficientes de transformación.
Las realizaciones del codificador 20 de vídeo como se muestra en la FIG. 2 pueden configurarse para codificar la imagen 17 bloque por bloque, por ejemplo, la codificación y la predicción se realizan por bloque 203.
Las realizaciones del codificador 20 de vídeo, como se muestra en la FIG. 2, pueden configurarse adicionalmente para dividir y/o codificar la imagen usando segmentos (también denominados segmentos de vídeo), donde una imagen puede dividirse o codificarse usando uno o más segmentos (por lo general, no se superponen), y cada segmento puede comprender uno o más bloques (por ejemplo, CTU).
Las realizaciones del codificador 20 de vídeo como se muestra en la FIG. 2 pueden configurarse adicionalmente para dividir y/o codificar la imagen usando grupos de teselas (también denominados grupos de teselas de vídeo) y/o teselas (también denominados teselas de vídeo), en donde una imagen puede dividirse o codificarse usando uno o más grupos de teselas (típicamente no superpuestos), y cada grupo de teselas puede comprender, por ejemplo, uno o más bloques (por ejemplo, CTU) o una o más fichas, en las que cada ficha, por ejemplo, puede tener forma rectangular y puede comprender uno o más bloques (por ejemplo, CTU), por ejemplo, bloques completos o fraccionarios.
Cálculo de Residuales
La unidad 204 de cálculo residual puede configurarse para calcular un bloque 205 residual (también denominado residual 205) en función del bloque 203 de imagen y un bloque 265 de predicción (más adelante se proporcionan más detalles sobre el bloque 265 de predicción), por ejemplo, restando valores de muestra del bloque 265 de predicción de valores de muestra del bloque 203 de imagen, muestra por muestra (píxel por píxel) para obtener el bloque 205 residual en el dominio de muestra.
Transformar
La unidad 206 de procesamiento de transformación puede configurarse para aplicar una transformación, por ejemplo, una transformada de coseno discreta (DCT) o una transformada de seno discreta (DST), sobre los valores de muestra del bloque 205 residual para obtener coeficientes 207 de transformada en un dominio de transformada. Los coeficientes 207 de transformación también pueden denominarse coeficientes residuales de transformación y representan el bloque 205 residual en el dominio de transformación.
La unidad 206 de procesamiento de transformación puede configurarse para aplicar aproximaciones de números enteros de DCT/DST, como las transformadas especificadas para H.265/HEVC. En comparación con una transformada DCT ortogonal, estas aproximaciones de números enteros normalmente se escalan según un determinado factor. Para preservar la norma del bloque residual que se procesa mediante transformadas directas e inversas, se aplican factores de escala adicionales como parte del proceso de transformación. Los factores de escala se eligen generalmente en función de ciertas restricciones, como que los factores de escala sean una potencia de dos para las operaciones de cambio, la profundidad de bits de los coeficientes de transformación, el equilibrio entre la precisión y los costes de implementación, etc. Los factores de escala específicos se especifican, por ejemplo, para la transformada inversa, por ejemplo, por la unidad 212 de procesamiento de transformada inversa (y la correspondiente transformada inversa, por ejemplo, por la unidad 312 de procesamiento de transformada inversa en el decodificador 30 de vídeo) y los factores de escala correspondientes para la transformada directa, por ejemplo, por la unidad 206 de procesamiento de transformación, en un codificador 20 puede especificarse en consecuencia.
Las realizaciones del codificador 20 de vídeo (respectivamente, la unidad 206 de procesamiento de transformación) pueden configurarse para generar parámetros de transformación, por ejemplo, un tipo de transformación o transformaciones, por ejemplo, directamente o codificado o comprimido a través de la unidad 270 de codificación de entropía, de modo que, por ejemplo, el decodificador 30 de vídeo pueda recibir y usar los parámetros de transformación
para la decodificación.
Cuantización
La unidad 208 de cuantificación puede configurarse para cuantificar los coeficientes 207 de transformación para obtener coeficientes 209 cuantificados, por ejemplo, aplicando cuantificación escalar o cuantificación vectorial. Los coeficientes 209 cuantificados también pueden denominarse coeficientes 209 de transformada cuantificados o coeficientes 209 residuales cuantificados.
El proceso de cuantificación puede reducir la profundidad de bits asociada con algunos o todos los coeficientes 207 de transformación. Por ejemplo, un coeficiente de transformación de n bits puede redondearse a un coeficiente de transformación de m bits durante la cuantificación, donde n es mayor que m. El grado de cuantificación puede modificarse ajustando un parámetro de cuantificación (QP). Por ejemplo, para la cuantificación escalar, se pueden aplicar escalas diferentes para lograr una cuantificación más fina o más gruesa. Los tamaños de escalón de cuantificación más pequeños corresponden a una cuantificación más fina, mientras que los tamaños de escalón de cuantificación más grandes corresponden a una cuantificación más gruesa. El tamaño de escalón de cuantificación aplicable puede indicarse mediante un parámetro de cuantificación (QP). El parámetro de cuantificación puede ser, por ejemplo, un índice de un conjunto predefinido de tamaños de escalones de cuantificación aplicables. Por ejemplo, los parámetros de cuantificación pequeños pueden corresponder a una cuantificación fina (tamaños de escalón de cuantificación pequeños) y los parámetros de cuantificación grandes pueden corresponder a una cuantificación gruesa (tamaños de escalón de cuantificación grandes) o viceversa. La cuantificación puede incluir la división por un tamaño de escalón de cuantificación y una descuantificación correspondiente y/o inversa, por ejemplo, por la unidad 210 de cuantificación inversa, puede incluir la multiplicación por el tamaño de escalón de cuantificación. Realizaciones según algunos estándares, por ejemplo, HEVC puede configurarse para usar un parámetro de cuantificación para determinar el tamaño de escalón de cuantificación. Generalmente, el tamaño de escalón de cuantificación puede calcularse en función de un parámetro de cuantificación usando una aproximación de punto fijo de una ecuación que incluye la división. Pueden introducirse factores de escala adicionales para la cuantificación y la descuantificación para restaurar la norma del bloque residual, que podría modificarse debido a la escala usada en la aproximación de punto fijo de la ecuación para el tamaño de escalón de cuantificación y el parámetro de cuantificación. En una implementación de ejemplo, se pueden combinar el escalado de la transformada inversa y la descuantificación. Alternativamente, se pueden usar tablas de cuantificación personalizadas 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érdida, en la que la pérdida aumenta al aumentar los tamaños de los escalones de cuantificación.
Las realizaciones del codificador 20 de vídeo (respectivamente, la unidad 208 de cuantificación) pueden configurarse para generar parámetros de cuantificación (QP), por ejemplo, directamente o codificado a través de la unidad 270 de codificación de entropía, de modo que, por ejemplo, el decodificador 30 de vídeo pueda recibir y aplicar los parámetros de cuantificación para la decodificación.
Cuantificación inversa
La unidad 210 de cuantificación inversa está configurada para aplicar la cuantificación inversa de la unidad 208 de cuantificación sobre los coeficientes cuantificados para obtener coeficientes 211 descuantificados, por ejemplo, aplicando el esquema de cuantificación inverso aplicado por la unidad 208 de cuantificación basado en o usando el mismo tamaño de escalón de cuantificación que la unidad 208 de cuantificación. Los coeficientes 211 descuantificados también pueden denominarse coeficientes 211 residuales descuantificados y corresponden, aunque normalmente no son idénticos a los coeficientes de transformación debido a la pérdida por cuantificación - a los coeficientes 207 de transformación.
Transformada inversa
La unidad 212 de procesamiento de transformada inversa está configurada para aplicar la transformada inversa de la transformada aplicada por la unidad 206 de procesamiento de transformada, por ejemplo, una transformada de coseno discreta inversa (DCT) o una transformada de seno discreta inversa (DST) u otras transformadas inversas, para obtener un bloque 213 residual reconstruido (o los correspondientes coeficientes 213 descuantificados) en el dominio de la muestra. El bloque 213 residual reconstruido también puede denominarse bloque 213 de transformación.
Reconstrucción
La unidad 214 de reconstrucción (por ejemplo,, sumador o sumador 214) está configurada para sumar el bloque 213 de transformación (es decir, el bloque 213 residual reconstruido) al bloque 265 de predicción para obtener un bloque 215 reconstruido en el dominio de la muestra, por ejemplo, sumando, muestra por muestra, los valores de muestra del bloque 213 residual reconstruido y los valores de muestra del bloque 265 de predicción.
Filtrado
La unidad 220 de filtro de bucle (o "filtro de bucle" 220 abreviado), está configurada para filtrar el bloque 215 reconstruido para obtener un bloque 221 filtrado, o en general, para filtrar muestras reconstruidas para obtener muestras filtradas. La unidad de filtro de bucle está, por ejemplo, configurada para suavizar las transiciones de píxeles o mejorar la calidad del vídeo. La unidad 220 de filtro de bucle puede comprender uno o más filtros de bucle, como un filtro de desbloqueo, un filtro de desplazamiento adaptativo de muestra (SAO) o uno o más filtros, por ejemplo, un filtro bilateral, un filtro de bucle adaptativo (ALF), filtros de nitidez, filtros de suavizado o filtros colaborativos, o cualquier combinación de los mismos. Aunque la unidad 220 de filtro de bucle se muestra en la FIG. 2 como un filtro en bucle, en otras configuraciones, la unidad 220 de filtro de bucle puede implementarse como un filtro posterior al bucle. El bloque 221 filtrado también puede denominarse bloque 221 filtrado reconstruido.
Las realizaciones del codificador 20 de vídeo (respectivamente, la unidad 220 de filtro de bucle) pueden configurarse para generar parámetros de filtro de bucle (como información de compensación adaptativa de muestra), por ejemplo, directamente o codificado a través de la unidad 270 de codificación de entropía, de modo que, por ejemplo, un decodificador 30 puede recibir y aplicar los mismos parámetros de filtro de bucle o filtros de bucle respectivos para la decodificación.
Búfer de imágenes decodificadas
La memoria intermedia de imágenes decodificadas (DPB) 230 puede ser una memoria que almacena imágenes de referencia, o en general datos de imágenes de referencia, para codificar datos de vídeo mediante el codificador 20 de vídeo. La DPB 230 puede estar formada por cualquiera de una variedad de dispositivos de memoria, como memoria dinámica de acceso aleatorio (DRAM), que incluye DRAM síncrona (SDRAM), RAM magnetorresistiva (MRAM), RAM resistiva (RRAM) u otros tipos de dispositivos de memoria. La memoria intermedia de imágenes decodificadas (DPB) 230 puede configurarse para almacenar uno o más bloques 221 filtrados. La memoria intermedia de imágenes decodificadas 230 puede configurarse además para almacenar otros bloques previamente filtrados, por ejemplo, bloques 221 previamente reconstruidos y filtrados, de la misma imagen actual o de diferentes imágenes, por ejemplo, imágenes previamente reconstruidas, y puede proporcionar imágenes completas previamente reconstruidas, es decir, 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 interpredicción. La memoria intermedia de imágenes decodificadas (DPB) 230 también puede configurarse para almacenar uno o más bloques 215 reconstruidos sin filtrar o, en general, muestras reconstruidas sin filtrar, por ejemplo, si el bloque 215 reconstruido no es filtrado por la unidad 220 de filtro de bucle, o cualquier otra versión procesada adicionalmente de los bloques o muestras reconstruidos.
Selección de modo (particionamiento y predicción)
La unidad 260 de selección de modo comprende la unidad 262 de partición, la unidad de interpredicción 244 y la unidad 254 de intrapredicción, y está configurada para recibir u obtener datos de imágenes originales, por ejemplo, un bloque 203 original (bloque 203 actual de la imagen 17 actual) y datos de imagen reconstruidos, por ejemplo, muestras o bloques reconstruidos filtrados y/o sin filtrar de la misma imagen (actual) y/o de una o una pluralidad de imágenes previamente decodificadas, por ejemplo, desde la memoria intermedia de imagen decodificada 230 u otras memorias intermedias (por ejemplo, la memoria intermedia de línea, no mostrada). Los datos de imagen reconstruidos se usan como datos de imagen de referencia para la predicción, por ejemplo, interpredicción o intrapredicción, para obtener un bloque 265 de predicción o predictor 265.
La unidad 260 de selección de modo puede configurarse para determinar o seleccionar un particionamiento para un modo de predicción de bloque actual (que incluye no particionar) y un modo de predicción (por ejemplo, un modo de intrapredicción o interpredicción) y generar un bloque 265 de predicción correspondiente, que se usa para el cálculo del bloque 205 residual y para la reconstrucción del bloque 215 reconstruido.
Las realizaciones de la unidad 260 de selección de modo pueden configurarse para seleccionar la partición y el modo de predicción (por ejemplo, de aquellos compatibles o disponibles para la unidad 260 de selección de modo), que proporcionan la mejor coincidencia o, en otras palabras, el mínimo residual (mínimo residual significa mejor compresión para la transmisión o el almacenamiento), o una sobrecarga de señalización mínima (la sobrecarga de señalización mínima significa una mejor compresión para la transmisión o el almacenamiento), o que considere o equilibre ambas. La unidad 260 de selección de modo puede configurarse para determinar el modo de partición y predicción en función de la optimización de distorsión de tasa (RDO), es decir, seleccionar el modo de predicción que proporciona una distorsión de tasa mínima. Términos como "mejor", "mínimo", "óptimo", etc. en este contexto no se refieren necesariamente a un valor global "mejor", "mínimo", "óptimo" etc., sino que también pueden referirse al cumplimiento de una terminación o criterio de selección como un valor que excede o cae por debajo de un umbral u otras restricciones que conducen potencialmente a una "selección subóptima" pero que reducen la complejidad y el tiempo de procesamiento.
En otras palabras, la unidad 262 de partición puede configurarse para particionar el bloque 203 en particiones de bloque más pequeñas o subbloques (que forman nuevamente bloques), por ejemplo, de forma iterativa usando particiones de cuatro árboles (QT), particiones binarias (BT) o particiones de tres árboles (TT) o cualquier combinación
de las mismas, y para realizar, por ejemplo, la predicción para cada una de las particiones de bloque o subbloques, donde la selección de modo comprende la selección de la estructura de árbol del bloque 203 particionado y los modos de predicción se aplican a cada una de las particiones de bloque o subbloques.
A continuación, se explicará con más detalle el particionamiento (por ejemplo, por la unidad 260 de particionamiento) y el procesamiento de predicción (por la unidad 244 de interpredicción y la unidad 254 de intrapredicción) realizados por un codificador 20 de vídeo de ejemplo.
Particionamiento
La unidad 262 de partición puede particionar (o dividir) un bloque 203 actual en particiones más pequeñas, por ejemplo, bloques más pequeños de tamaño cuadrado o rectangular. Estos bloques más pequeños (que también pueden denominarse subbloques) pueden particionarse en particiones aún más pequeñas. Esto también se conoce como partición en árbol o partición en árbol jerárquica, en la que un bloque raíz, por ejemplo, en el nivel de árbol raíz 0 (nivel de jerarquía 0, profundidad 0), se puede particionar recursivamente, por ejemplo, particionados en dos o más bloques del siguiente nivel de árbol inferior, por ejemplo, nodos en el nivel 1 del árbol (nivel 1 de jerarquía, profundidad 1), donde estos bloques pueden dividirse nuevamente en dos o más bloques de un siguiente nivel inferior, por ejemplo, nivel 2 del árbol (nivel 2 de jerarquía, profundidad 2), etc. hasta que finalice la partición, por ejemplo, porque se cumpla un criterio de terminación, por ejemplo, se alcanza una profundidad de árbol máxima o un tamaño de bloque mínimo. Los bloques que no se particionan más también se denominan bloques hoja o nodos hoja del árbol. Un árbol que usa la partición en dos particiones se denomina árbol binario (BT), un árbol que usa la partición en tres particiones se denomina árbol ternario (TT) y un árbol que usa la partición en cuatro particiones se denomina árbol cuádruple (QT).
Como se mencionó anteriormente, el término "bloque" como se usa en la presente memoria puede ser una partición, en particular una parte cuadrada o rectangular, de una imagen. Con referencia, por ejemplo, a HEVC y VVC, el bloque puede ser o corresponder a una unidad de árbol de codificación (CTU), una unidad de codificación (CU), una unidad de predicción (PU) y una unidad de transformación (TU) y/o a la bloques correspondientes, por ejemplo, un bloque de árbol de codificación (CTB), un bloque de codificación (CB), un bloque de transformación (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 luminancia, dos CTB correspondientes de muestras de crominancia de una imagen que tiene tres conjuntos de muestras, o un CTB de muestras de una imagen monocromática o una imagen codificada usando tres planos de color separados y estructuras de sintaxis usadas para codificar las muestras. En consecuencia, un bloque de árbol de codificación (CTB) puede ser un bloque NxN de muestras para algún valor de N tal que la división de un componente en CTB es una partición. Una unidad de codificación (CU) puede ser o comprender un bloque de codificación de muestras de luminancia, dos bloques de codificación correspondientes de muestras de crominancia de una imagen que tiene tres conjuntos de muestras, o un bloque de codificación de muestras de una imagen monocromática o una imagen codificada usando tres planos de color separados y estructuras de sintaxis usadas para codificar las muestras. En consecuencia, un bloque de codificación (CB) puede ser un bloque MxN de muestras para algunos valores de M y N, de manera que la división de un CTB en bloques de codificación es una partición.
En realizaciones, por ejemplo, según HEVC, una unidad de árbol de codificación (CTU) puede dividirse en CU usando una estructura de árbol cuádruple denominada árbol de codificación. La decisión de codificar un área de imagen usando predicción dentro de una imagen (temporal) o entre imágenes (espacial) se toma en el nivel de CU. Cada CU se puede dividir en una, dos o cuatro PU según el tipo de división de PU. Dentro de una PU, se aplica el mismo proceso de predicción y la información relevante se transmite al decodificador en función de la PU. Después de obtener el bloque residual mediante la aplicación del proceso de predicción en función del tipo de división de PU, una CU se puede dividir en unidades de transformación (TU) según otra estructura de árbol cuádruple similar al árbol de codificación de la CU.
En realizaciones, por ejemplo, según el último estándar de codificación de vídeo actualmente en desarrollo, que se denomina Codificación de Vídeo Versátil (VVC), se usa, por ejemplo, una partición combinada de árbol cuádruple y árbol binario (QTBT) para dividir un bloque de codificación. En la estructura de bloques QTBT, una CU puede tener forma cuadrada o rectangular. Por ejemplo, una unidad de árbol de codificación (CTU) se divide primero mediante una estructura de árbol cuádruple. Los nodos de hoja del árbol cuádruple se dividen aún más mediante una estructura de árbol binario o árbol ternario (o triple). Los nodos de hoja del árbol de particiones se denominan unidades de codificación (CU) y esa segmentación se usa para la predicción y el procesamiento de transformación sin ninguna partición adicional.
Esto significa que CU, PU y TU tienen el mismo tamaño de bloque en la estructura de bloque de codificación QTBT. En paralelo, la partición múltiple, por ejemplo, la partición de árbol triple se puede usar junto con la estructura de bloque QTBT.
En un ejemplo, la unidad 260 de selección de modo del codificador 20 de vídeo puede configurarse para realizar cualquier combinación de las técnicas de partición descritas en la presente memoria.
Como se describió anteriormente, el codificador 20 de vídeo está configurado para determinar o seleccionar el modo de predicción mejor u óptimo de un conjunto de modos de predicción (por ejemplo, predeterminados). El conjunto de modos de predicción puede comprender, por ejemplo, modos de intrapredicción y/o modos de intrapredicción.
Intrapredicción
El conjunto de modos de intrapredicción puede comprender 35 modos de intrapredicción diferentes, por ejemplo, modos no direccionales como el modo DC (o medio) y el modo planar, o modos direccionales, por ejemplo, como se define en HEVC, o puede comprender 67 modos diferentes de intrapredicción, por ejemplo, modos no direccionales como el modo DC (o medio) y el modo planar, o modos direccionales, por ejemplo, como se define para VVC.
La unidad 254 de intrapredicción está configurada para usar muestras reconstruidas de bloques vecinos de la misma imagen actual para generar un bloque 265 de intrapredicción según un modo de intrapredicción del conjunto de modos de intrapredicción.
La unidad 254 de intrapredicción (o, en general, la unidad 260 de selección de modo) está configurada además para generar parámetros de intrapredicción (o información general indicativa del modo de intrapredicción seleccionado para el bloque) a la unidad 270 de codificación de entropía en forma elementos 266 de sintaxis para su inclusión en los datos 21 de imagen codificados, de manera que, por ejemplo, el decodificador 30 de vídeo pueda recibir y usar los parámetros de predicción para la decodificación.
Interpredicción
El conjunto de (o posibles) modos de predicción mutua depende de las imágenes de referencia disponibles (es decir, imágenes anteriores al menos parcialmente decodificadas, por ejemplo, almacenadas en DPB 230) y otros parámetros de predicción mutua, por ejemplo, ya sea la imagen de referencia completa o solo una parte, por ejemplo, se usa un área de ventana de búsqueda alrededor del área del bloque actual, de la imagen de referencia para buscar un bloque de referencia que mejor se ajuste, y/o por ejemplo, si se aplica la interpolación de píxeles, por ejemplo, interpolación de medio pel/semipel y/o cuarto de pel, o no.
Además de los modos de predicción anteriores, se pueden aplicar el modo de salto y/o el modo directo.
La unidad 244 de interpredicción puede incluir una unidad de estimación de movimiento (ME) y una unidad de compensación de movimiento (MC) (ambas no mostradas en la FIG. 2). La unidad de estimación de movimiento puede configurarse para recibir u obtener el bloque 203 de imagen (bloque 203 de imagen actual de la imagen 17 actual) y una imagen 231 decodificada, o al menos uno o una pluralidad de bloques previamente reconstruidos, por ejemplo, bloques reconstruidos de una o una pluralidad de otras/diferentes imágenes 231 previamente decodificadas, para estimación de movimiento, por ejemplo, una secuencia de vídeo puede comprender la imagen actual y las imágenes 231 previamente decodificadas, o en otras palabras, la imagen actual y las imágenes 231 previamente decodificadas pueden ser parte o formar una secuencia de imágenes que forman una secuencia de vídeo.
El codificador 20 puede, por ejemplo, configurarse para seleccionar un bloque de referencia de una pluralidad de bloques de referencia de las mismas o diferentes imágenes de la pluralidad de otras imágenes y proporcionar una imagen de referencia (o índice de imagen de referencia) y/o un desplazamiento (desplazamiento espacial). entre la posición (coordenadas x, y) del bloque de referencia y la posición del bloque actual como parámetros de interpredicción para la unidad de estimación de movimiento. Este desplazamiento también se denomina vector de movimiento (MV).
La unidad de compensación de movimiento está configurada para obtener, por ejemplo, recibir, un parámetro de interpredicción y para realizar la interpredicción en función o usando el parámetro de interpredicción para obtener un bloque 265 de interpredicción. La compensación de movimiento, realizada por la unidad de compensación de movimiento, puede implicar la obtención o generación del bloque de predicción en función del vector de bloque determinado por estimación de movimiento, posiblemente realizando interpolaciones con precisión de subpíxel. El filtrado de interpolación puede generar muestras de píxeles adicionales a partir de muestras de píxeles conocidas, aumentando así potencialmente el número de bloques de predicción candidatos que pueden usarse para codificar un bloque de imagen. Al recibir el vector de movimiento para la PU del bloque de imagen actual, la unidad de compensación de movimiento puede localizar el bloque de predicción al que apunta el vector de movimiento en una de las listas de imágenes de referencia.
La unidad de compensación de movimiento también puede generar elementos de sintaxis asociados con los bloques y segmentos de vídeo para que los use el decodificador 30 de vídeo para decodificar los bloques de imagen del segmento de vídeo. Además o como alternativa a los segmentos y los elementos de sintaxis respectivos, se pueden generar o usar grupos de teselas y/o teselas y elementos de sintaxis respectivos.
Codificación de entropía
La unidad 270 de codificación de entropía está configurada para aplicar, por ejemplo, un algoritmo o esquema de codificación de entropía (por ejemplo, un esquema de codificación de longitud variable (VLC), un esquema 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), codificación aritmética binaria adaptativa al contexto basada en sintaxis (SBAC), codificación de entropía de partición de intervalo de probabilidad (PIPE) u otra metodología o técnica de codificación de entropía) o derivación (sin compresión) en los coeficientes 209 cuantificados, parámetros de interpredicción, parámetros de intrapredicción, parámetros de filtro de bucle y/u otros elementos de sintaxis para obtener datos 21 de imagen codificados que se pueden enviar a través de la salida 272, por ejemplo, en forma de un flujo 21 de bits codificado, de modo que, por ejemplo, el decodificador 30 de vídeo pueda recibir y usar los parámetros para decodificar. El flujo 21 de bits codificado puede transmitirse al decodificador 30 de vídeo o almacenarse en una memoria para su posterior transmisión o recuperación por parte del decodificador 30 de vídeo.
Se pueden usar otras variaciones estructurales del codificador 20 de vídeo para codificar el flujo de vídeo. Por ejemplo, un codificador 20 no basado en transformación puede cuantificar la señal residual directamente sin la unidad 206 de procesamiento de transformación para ciertos bloques o tramas. En otra implementación, un codificador 20 puede tener la unidad 208 de cuantificación y la unidad 210 de cuantificación inversa combinadas en una sola unidad.
Decodificador y método de decodificación
La FIG. 3 muestra un ejemplo de un decodificador 30 de vídeo que está configurado para implementar las técnicas de esta presente solicitud. El decodificador 30 de vídeo está configurado para recibir datos 21 de imagen codificados (por ejemplo, el flujo 21 de bits codificado), por ejemplo, codificado por el codificador 20, para obtener una imagen 331 decodificada. Los datos de imagen codificados o el flujo de bits comprende información para decodificar los datos de imagen codificados, por ejemplo, datos que representan bloques de imágenes de un segmento de vídeo codificado (y/o grupos de teselas o teselas) y elementos de sintaxis asociados.
En el ejemplo de la FIG. 3, el decodificador 30 comprende una unidad 304 de decodificación de entropía, una unidad 310 de cuantificación inversa, una unidad 312 de procesamiento de transformada inversa, una unidad 314 de reconstrucción (por ejemplo, un sumador 314), un filtro 320 de bucle, una imagen decodificada memoria intermedia (DPB) 330, una unidad 360 de aplicación de modo, una unidad 344 de intrapredicción y una unidad 354 de intrapredicción. La unidad 344 de intrapredicción puede ser o incluir una unidad de compensación de movimiento. El decodificador 30 de vídeo puede, en algunos ejemplos, realizar una etapa de decodificación generalmente recíproca a la etapa de codificación descrita con respecto al codificador 100 de vídeo de la FIG. 2.
Como se explicó con respecto al codificador 20, la unidad 210 de cuantificación inversa, la unidad 212 de procesamiento de transformada inversa, la unidad 214 de reconstrucción, el filtro 220 de bucle, la memoria intermedia de imágenes decodificadas (DPB) 230, la unidad 344 de interpredicción y la unidad 354 de intrapredicción también se denominan formadores del "descodificador integrado" del codificador 20 de vídeo. En consecuencia, la unidad 310 de cuantificación inversa puede ser idéntica en función a la unidad 110 de cuantificación inversa, la unidad 312 de procesamiento de transformada inversa puede ser idéntica en función a la unidad 212 de procesamiento de transformada inversa, la unidad 314 de reconstrucción puede tener una función idéntica a la unidad 214 de reconstrucción, el filtro 320 de bucle puede tener una función idéntica al filtro 220 de bucle, y la memoria 330 intermedia de imagen decodificada puede tener una función idéntica al buffer 230 de imágenes decodificadas. Por lo tanto, las explicaciones proporcionadas para las respectivas unidades y funciones del codificador 20 de vídeo se aplican correspondientemente a las respectivas unidades y funciones del decodificador 30 de vídeo.
Decodificación de entropía
La unidad 304 de decodificación de entropía está configurada para analizar el flujo 21 de bits (o, en general, los datos 21 de imagen codificados) y realizar, por ejemplo, la decodificación de entropía de los datos 21 de imagen codificados para obtener, por ejemplo, coeficientes 309 cuantificados y/o parámetros de codificación decodificados (no se muestran en la FIG. 3), por ejemplo, cualquiera o todos los parámetros de intrapredicción (por ejemplo, el índice de imagen de referencia y el vector de movimiento), parámetro de intrapredicción (por ejemplo, modo o índice de intrapredicción), parámetros de transformación, parámetros de cuantificación, parámetros de filtro de bucle y/u otros elementos de sintaxis. La unidad 304 de decodificación de entropía puede configurarse para aplicar los algoritmos o esquemas de decodificación correspondientes a los esquemas de codificación como se describe con respecto a la unidad 270 de codificación de entropía del codificador 20. La unidad 304 de decodificación de entropía puede configurarse además para proporcionar parámetros de interpredicción, parámetros de intrapredicción y/u otros elementos de sintaxis a la unidad 360 de aplicación de modo y otros parámetros a otras unidades del decodificador 30. El decodificador 30 de vídeo puede recibir los elementos de sintaxis a nivel de segmento de vídeo y/o nivel de bloque de vídeo. Además o como alternativa a los segmentos y los elementos de sintaxis respectivos, se pueden recibir y/o usar grupos de teselas y/o teselas y elementos de sintaxis respectivos.
Cuantificación inversa
La unidad 310 de cuantificación inversa puede configurarse 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 21 de imagen codificados (por ejemplo, analizando y/o decodificando, por ejemplo, mediante la unidad de decodificación 304 de entropía) y aplicar en base a los parámetros de cuantificación una cuantificación inversa sobre los coeficientes 309 cuantificados decodificados para obtener coeficientes 311 descuantificados, que también pueden denominarse coeficientes 311 de transformación. El proceso de cuantificación inversa puede incluir el uso de un parámetro de cuantificación determinado por el codificador 20 de vídeo para cada bloque de vídeo en el segmento de vídeo (o tesela o grupos de teselas) para determinar un grado de cuantificación y, del mismo modo, un grado de cuantificación inversa que debe aplicarse.
Transformada inversa
La unidad 312 de procesamiento de transformada inversa puede configurarse para recibir coeficientes 311 descuantificados, también denominados coeficientes 311 de transformación, y para aplicar una transformación a los coeficientes 311 descuantificados para obtener bloques 213 residuales reconstruidos en el dominio de la muestra. Los bloques 213 residuales reconstruidos también pueden denominarse bloques 213 de transformación. La transformación puede ser una transformación inversa, por ejemplo, una DCT inversa, una DST inversa, una transformación entera inversa o un proceso de transformación inversa conceptualmente similar. La unidad 312 de procesamiento de transformada inversa puede configurarse además para recibir parámetros de transformada o la información correspondiente de los datos 21 de imagen codificados (por ejemplo, analizando y/o decodificando, por ejemplo, mediante la unidad 304 de decodificación de entropía) para determinar la transformada que se aplicará a los coeficientes 311 descuantificados.
Reconstrucción
La unidad 314 de reconstrucción (por ejemplo, agregador o sumador 314) puede configurarse para sumar el bloque 313 residual reconstruido al bloque 365 de predicción para obtener un bloque 315 reconstruido en el dominio de la muestra, por ejemplo, sumando los valores de muestra del bloque 313 residual reconstruido y los valores de muestra del bloque 365 de predicción.
Filtrado
La unidad 320 de filtro de bucle (ya sea en el bucle de codificación o después del bucle de codificación) está configurada para filtrar el bloque 315 reconstruido para obtener un bloque 321 filtrado, por ejemplo, para suavizar las transiciones de píxeles o mejorar la calidad del vídeo. La unidad 320 de filtro de bucle puede comprender uno o más filtros de bucle, como un filtro de desbloqueo, un filtro de desplazamiento adaptativo de muestra (SAO) o uno o más filtros, por ejemplo, un filtro bilateral, un filtro de bucle adaptativo (ALF), filtros de nitidez, filtros de suavizado o filtros colaborativos, o cualquier combinación de los mismos. Aunque la unidad 320 de filtro de bucle se muestra en la FIG.
3 como un filtro en bucle, en otras configuraciones, la unidad 320 de filtro de bucle puede implementarse como un filtro de bucle posterior.
Búfer de imágenes decodificadas
Los bloques 321 de vídeo decodificados de una imagen se almacenan luego en la memoria 330 intermedia de imágenes decodificadas, que almacena las imágenes 331 decodificadas como imágenes de referencia para la compensación de movimiento posterior para otras imágenes y/o para la visualización de salida respectivamente.
El decodificador 30 está configurado para dar salida a la imagen 311 decodificada, por ejemplo, a través de la salida 312, para presentación o visualización a un usuario.
Predicción
La unidad 344 de interpredicción puede ser idéntica a la unidad 244 de interpredicción (en particular a la unidad de compensación de movimiento) y la unidad 354 de intrapredicción puede ser idéntica a la unidad 254 de interpredicción en función, y realiza decisiones de división o partición y predicción en función de los parámetros de partición y/o predicción o la información respectiva recibida de los datos 21 de imagen codificados (por ejemplo, analizando y/o decodificando, por ejemplo, mediante la unidad 304 de decodificación de entropía). La unidad 360 de aplicación de modo puede configurarse para realizar la predicción (intrapredicción o interprediccón) por bloque en función de las imágenes reconstruidas, bloques o muestras respectivas (filtradas o sin filtrar) para obtener el bloque 365 de predicción.
Cuando el segmento de vídeo se codifica como un segmento intracodificado (I), la unidad 354 de intrapredicción de la unidad 360 de aplicación de modo está configurada para generar un bloque 365 de predicción para un bloque de imagen del segmento de vídeo actual en función de un modo de intrapredicción señalado y datos de bloques previamente decodificados de la imagen actual. Cuando la imagen de vídeo se codifica como un segmento intercodificado (es decir, B o P), la unidad 344 de interpredicción (por ejemplo, la unidad de compensación de movimiento) de la unidad 360 de aplicación de modo está configurada para producir bloques 365 de predicción para
un bloque de vídeo del segmento de vídeo actual en función de los vectores de movimiento y otros elementos de sintaxis recibidos desde la unidad 304 de decodificación de entropía. Para la interpredicción, los bloques de predicción pueden generarse a partir de una de las imágenes de referencia dentro de una de las listas de imágenes de referencia. El decodificador 30 de vídeo puede construir las listas de marcos de referencia, Lista 0 y Lista 1, usando técnicas de construcción predeterminadas en función de las imágenes de referencia almacenadas en DPB 330. Se puede aplicar lo mismo o similar para o mediante realizaciones que usan grupos de teselas (por ejemplo, grupos de teselas de vídeo) y /o teselas (por ejemplo, teselas de vídeo) además o alternativamente a los segmentos (por ejemplo, segmentos de vídeo), por ejemplo, un vídeo se puede codificar usando grupos de teselas I, P o B y/o teselas.
La unidad 360 de aplicación de modo 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 la información relacionada y otros elementos de sintaxis, y usa la información de predicción para producir los bloques de predicción para el bloque de vídeo actual que se está decodificando. Por ejemplo, la unidad 360 de aplicación de modo usa algunos de los elementos de sintaxis recibidos para determinar un modo de predicción (por ejemplo, intrapredicción o interpredicción) usado para codificar los bloques de vídeo del segmento de vídeo, un tipo de segmento de interpredicción (por ejemplo, segmento B, segmento P o segmento GPB), información de construcción para una o más de las listas de imágenes de referencia para el segmento, vectores de movimiento para cada bloque de vídeo intercodificado del segmento, estado de interpredicción para cada bloque de vídeo intercodificado del segmento, y otra información para decodificar los bloques de vídeo en el segmento de vídeo actual. Se puede aplicar lo mismo o similar para o mediante realizaciones que usan grupos de teselas (por ejemplo, grupos de teselas de vídeo) y/o teselas (por ejemplo, teselas de vídeo) además o alternativamente a segmentos (por ejemplo, segmentos de vídeo), por ejemplo, un vídeo se puede codificar usando grupos de teselas I, P o B y/o teselas.
Las realizaciones del decodificador 30 de vídeo, como se muestra en la FIG. 3, pueden configurarse para dividir y/o decodificar la imagen usando segmentos (también denominados segmentos de vídeo), donde una imagen puede dividirse o decodificarse usando uno o más segmentos (normalmente no se superponen), y cada segmento puede comprender uno o más bloques (por ejemplo, CTU).
Las realizaciones del decodificador 30 de vídeo como se muestra en la FIG. 3 pueden configurarse para dividir y/o decodificar la imagen usando grupos de teselas (también denominados grupos de teselas de vídeo) y/o teselas (también denominados teselas de vídeo), donde una imagen puede dividirse o decodificarse usando uno o más grupos de teselas (normalmente no superpuestos), y cada grupos de teselas puede comprender, por ejemplo, uno o más bloques (por ejemplo, CTU) o una o más fichas, en las que cada ficha, por ejemplo, puede tener forma rectangular y puede comprender uno o más bloques (por ejemplo, CTU), por ejemplo, bloques completos o fraccionados.
Se pueden usar otras variaciones del decodificador 30 de vídeo para decodificar los datos 21 de imagen codificados. Por ejemplo, el decodificador 30 puede producir el flujo de vídeo de salida sin la unidad de filtrado 320 de bucle. Por ejemplo, un decodificador 30 sin transformación puede cuantificar inversamente la señal residual directamente sin la unidad 312 de procesamiento de transformada inversa para ciertos bloques o tramas. En otra implementación, el decodificador 30 de vídeo puede tener la unidad 310 de cuantificación inversa y la unidad 312 de procesamiento de transformada inversa combinadas en una sola unidad.
Debe entenderse que, en el codificador 20 y el decodificador 30, un resultado de procesamiento de una etapa actual puede procesarse adicionalmente y luego enviarse a la siguiente etapa. Por ejemplo, después del filtrado de interpolación, la derivación del vector de movimiento o el filtrado de bucle, se puede realizar una operación adicional, como Recortar o desplazar, sobre el resultado del procesamiento del filtrado de interpolación, la derivación del vector de movimiento o el filtrado de bucle.
Cabe señalar que se pueden aplicar más operaciones a los vectores de movimiento derivados del bloque actual (incluidos, entre otros, vectores de movimiento de punto de control de modo afín, vectores de movimiento de subbloque en modos afines, planos, ATMVP, vectores de movimiento temporal, etc). Por ejemplo, el valor del vector de movimiento está restringido a un intervalo predefinido según su bit de representación. Si el bit de representación del vector de movimiento es Profundidaddebit (bitDepth), entonces el intervalo es -2A(Profundidaddebit-1) -2A(Profundidaddebit-1)-1, donde "A" significa exponenciación. Por ejemplo, si la Profundidaddebit se establece en 16, el intervalo es -32768 ~ 32767; si Profundidaddebit se establece igual a 18, el intervalo es -131072-131071. Por ejemplo, el valor del vector de movimiento derivado (por ejemplo, los MV de cuatro subbloques de 4x4 dentro de un bloque de 8x8) está restringido de tal manera que la diferencia máxima entre las partes enteras de los cuatro MV de subbloques de 4x4 no es más de N píxeles, tal como no más de 1 píxel. Aquí proporciona dos métodos para restringir el vector de movimiento de acuerdo con la Profundidaddebit.
Método 1: eliminar el MSB de desbordamiento (bit más significativo) mediante 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 la fórmula (1) y (2), el valor resultante es 32767. En el sistema informático, los números decimales se almacenan como complemento a dos. El complemento a dos de -32769 es 1,0111,1111,1111,1111 (17 bits), luego se descarta el MSB, por lo que el complemento a dos resultante es 0111,1111,1111,1111 (el número decimal es 32767), que es el mismo como salida aplicando la fórmula (1) y (2).
Las operaciones pueden aplicarse durante la suma de mvp y mvd, como se muestra en la fórmula (5) a (8).
Método 2: eliminar el MSB de desbordamiento recortando el valor
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 y z corresponden respectivamente a tres valores de entrada del proceso de recorte de MV, y la definición de la función Clip3 es la siguiente:
La FIG. 4 es un diagrama esquemático de un dispositivo 400 de codificación de vídeo según una realización de la descripción. El dispositivo 400 de codificación de vídeo es adecuado para implementar las realizaciones descritas como se describe en la presente memoria. En una realización, el dispositivo 400 de codificación de vídeo puede ser un decodificador tal como el decodificador 30 de vídeo de la FIG. 1A o un codificador tal como el codificador 20 de vídeo de la FIG. 1A.
El dispositivo 400 de codificación de vídeo comprende puertos 410 de ingreso (o puertos 410 de entrada) y unidades receptoras (Rx) 420 para recibir datos; un procesador, unidad lógica o unidad central de procesamiento (CPU) 430 para procesar los datos; unidades transmisoras (Tx) 440 y puertos 450 de egreso (o puertos de salida 450) para transmitir los datos; y una memoria 460 para almacenar los datos. El dispositivo 400 de codificación de vídeo también puede comprender componentes ópticos a eléctricos (OE) y componentes eléctricos a ópticos (EO) acoplados a los puertos 410 de entrada, las unidades 420 receptoras, las unidades 440 transmisoras y los puertos 450 de salida para salida o entrada de señales ópticas o eléctricas.
El procesador 430 está implementado por hardware y software. El procesador 430 puede implementarse como uno o más chips de CPU, núcleos (por ejemplo, como un procesador multinúcleo), FPGA, ASIC y DSP. El procesador 430 está en comunicación con los puertos 410 de entrada, las unidades 420 receptoras, las unidades 440 transmisoras, los puertos 450 de salida y la memoria 460. El procesador 430 comprende un módulo 470 de codificación. El módulo
470 de codificación implementa las realizaciones descritas anteriormente. Por ejemplo, el módulo 470 de codificación implementa, procesa, prepara o proporciona las diversas operaciones de codificación. La inclusión del módulo 470 de codificación por lo tanto proporciona una mejora sustancial a la funcionalidad del dispositivo 400 de codificación de vídeo y efectúa una transformación del dispositivo 400 de codificación de vídeo a un estado diferente. Alternativamente, el módulo 470 de codificación se implementa como instrucciones almacenadas en la memoria 460 y ejecutadas por el procesador 430.
La memoria 460 puede comprender uno o más discos, unidades de cinta y unidades de estado sólido y puede usarse como un dispositivo de almacenamiento de datos de desbordamiento, para almacenar programas cuando dichos programas se seleccionan para su ejecución y para almacenar instrucciones y datos que se leen durante ejecución del programa. La memoria 460 puede ser, por ejemplo, volátil y/o no volátil y puede ser una memoria de solo lectura (ROM), una memoria de acceso aleatorio (RAM), una memoria ternaria de contenido direccionable (TCAM) y/o una memoria estática de acceso aleatorio (SRAM).
La FIG. 5 es un diagrama de bloques simplificado de un aparato 500 que se puede usar como el dispositivo 12 de origen y el dispositivo 14 de destino de la FIG. 1, o como ambos, según una realización ejemplar.
Un procesador 502 en el aparato 500 puede ser una unidad central de procesamiento. Alternativamente, el procesador 502 puede ser cualquier otro tipo de dispositivo, o múltiples dispositivos, capaces de manipular o procesar información existente ahora o desarrollada en el futuro. Aunque las implementaciones descritas se pueden practicar con un solo procesador como se muestra, por ejemplo, el procesador 502, se pueden lograr ventajas en velocidad y eficiencia usando más de un procesador.
Una memoria 504 en el aparato 500 puede ser un dispositivo de memoria de solo lectura (ROM) o un dispositivo de memoria de acceso aleatorio (RAM) en una implementación. Cualquier otro tipo adecuado de dispositivo de almacenamiento puede usarse como memoria 504. La memoria 504 puede incluir código y datos 506 a los que accede el procesador 502 usando un bus 512. La memoria 504 puede incluir además un sistema operativo 508 y programas 510 de aplicación, los programas 510 de aplicación incluyen al menos un programa que permite que el procesador 502 realice los métodos descritos aquí. Por ejemplo, los programas 510 de aplicación pueden incluir aplicaciones 1 a N, que además incluyen una aplicación de codificación de vídeo que realiza los métodos descritos aquí.
El aparato 500 también puede incluir uno o más dispositivos de salida, 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 se puede operar para detectar entradas táctiles. La pantalla 518 se puede acoplar al procesador 502 a través del bus 512.
Aunque representado aquí como un solo bus, el bus 512 del aparato 500 puede estar compuesto por múltiples buses. Además, el almacenamiento 514 secundario se puede acoplar directamente a los otros componentes del aparato 500 o se puede acceder a él a través de una red y puede comprender una única unidad integrada, como una tarjeta de memoria, o varias unidades, como varias tarjetas de memoria. Por lo tanto, el aparato 500 puede implementarse en una amplia variedad de configuraciones.
Codificación intramodo de fondo
En el VTM 4.0 actual, se construye una lista de 6 MPM (modo más probable) para la codificación intramodo. La lista MPM se introduce para reducir los bits necesarios para codificar el modo de intrapredicción del bloque actual. La lista de 6 MPM se construye en base a modos de intrapredicción de bloques vecinos del bloque actual. Cuando el modo de intrapredicción del bloque actual cae en la lista de MPM, se codifica un índice en lugar del modo real, que puede usar menos bits. Cuando el modo de intrapredicción del bloque actual no cae en la lista de MPM, se usa binarización truncada para codificar el modo de intrapredicción del bloque actual. La lista de MPM proporciona una buena predicción para el intramodo del bloque actual.
Lista MPM para línea de referencia múltiple (MRL).
En VTM 4.0, la herramienta de codificación de línea de referencia múltiple (MRL) puede usar una de las múltiples líneas vecinas para predecir las muestras del bloque actual. Cuando un valor del índice de línea MRL igual a 0 (es decir, se usa la línea de referencia vecina más cercana, como se muestra en la FIG. 6), se usa una lista normal de 6 MPM que contiene planar y DC. Cuando un valor del índice de línea de MRL no es igual a 0, se usa una lista de 6 MPM que excluye planar (es decir, un valor de 0) y DC (es decir, un valor de 1).
Lista de MPM para el modo de codificación intrasubpartición (ISP)
El modo de codificación intrasubpartición (ISP) es una herramienta recientemente adoptada en VTM4.0 (JVET-M0102). Los bloques predichos de Luminancia se dividen vertical u horizontalmente en 2 o 4 subparticiones, según las dimensiones del tamaño del bloque, como se muestra en la Tabla 1. La FIG. 7 y la FIG. 8 muestran ejemplos de las dos posibilidades. Todas las subparticiones cumplen la condición de tener al menos 16 muestras.
Tabla 1: número de subparticiones según el tamaño del bloque
Cuando el modo de codificación intrasubpartición está habilitado, en VTM 4.0 se usa otra lista de MPM que excluye el modo DC. El modo de intrasubpartición se puede aplicar cuando un valor del índice de línea de referencia múltiple es igual a 0 (es decir, el MRL no se aplica al bloque de intrapredicción actual). Todas las subparticiones comparten un solo modo de intrapredicción, por lo tanto, la lista MPM se construye una vez para el bloque intra y es compartida por todas las subparticiones.
La construcción de MPM podría depender del modo de división del ISP. Se determinan dos modos de división: horizontal o vertical. Se muestran como en la FIG. 7, donde la división/partición horizontal se muestra en la parte superior y la división/partición vertical se muestra en la parte inferior.
La siguiente tabla resume las características de la lista de 3 MPM usada en VTM 4.0.
Tabla 2: diferentes 6-MPM usadas en VTM 4.0 en diferentes circunstancias
Antecedentes sobre cómo determinar los vecinos izquierdos y superiores.
La codificación intramodo de VVC depende de los intramodos de sus bloques vecinos. Es decir, los bloques izquierdo y superior del bloque actual. Su posición se muestra en la FIG. 9.
Señalización del índice MPM
Se usa un indicador (es decir, un indicador MPM) para indicar si el intramodo del bloque actual está en la lista mμm o no. Cuando el indicador de MPM es verdadero (es decir, un valor de 1), entonces el modo de intrapredicción se puede determinar usando un índice de MPM. El índice mμm se codifica usando un código unario truncado, como se muestra en la siguiente tabla cuando la longitud de la lista MPM es 6. Cuando el indicador MPM no es verdadero, el intramodo del bloque actual no está en la lista mμm y el modo está codificado usando código binario truncado.
Antecedentes sobre el modo planar, DC, modos horizontales, verticales y angulares: modos de intrapredicción planar (un valor de 0) y DC (un valor de 1). Otros modos de intrapredicción se denominan modos de predicción angular. En la presente memoria, se proporcionan técnicas mejoradas para generar una lista de MPM con respecto a la eficiencia de codificación. En particular, se proporcionan los siguientes esquemas para generar la lista de MPM. Los esquemas pueden implementarse en el codificador 20 descrito anteriormente, véase la FIG. 2, el decodificador 30,
véase la FIG. 3, y el dispositivo 400 de codificación de vídeo, véase la FIG. 4, por ejemplo.
MARK I: conjunto de alternativas para la construcción de listas MPM optimizadas para ISP
Según un ejemplo que no forma parte de la invención (rama no angular, H):
• Etapa 1: obtener un modo de intrapredicción de un bloque vecino izquierdo y un modo de intrapredicción de un bloque vecino superior según la FIG. 9. Si un modo de intrapredicción del bloque vecino no está disponible (por ejemplo, el bloque vecino está fuera de los límites de la imagen o el bloque vecino está intercodificado), el modo de intrapredicción del bloque vecino se establece como planar. El modo de intrapredicción del bloque vecino izquierdo se denomina modo_izquierdo y el modo de intrapredicción del bloque vecino superior se denomina modo_superior.
Etapa 2: determinar si los modos de intrapredicción de los bloques vecinos son modos angulares o no.
Etapa 3: determinar si el bloque actual está codificado con modo ISP o no.
Etapa 4: si el bloque actual se aplica con el modo ISP, determinar el modo de división del bloque actual.
Etapa 5: si todas las siguientes condiciones (elementos de viñetas) se evalúan como verdaderas, Modo_izquierdo no es el modo angular y modo_superior no es el modo angular.
El bloque actual está codificado con el modo ISP.
El modo de división del bloque actual es horizontal.
luego, se construye una lista de modos de intrapredicción que comprende N entradas de modos de intrapredicción de la siguiente manera (N es igual a 6, donde la 1a entrada corresponde a MPM[0], la 2a entrada corresponde a MPM[1], y así sucesivamente):
MPM[0]: planar
MPM[1]: DC
MPM[2]: horizontal
MPM[3]: 25
MPM[4] : 10
MPM[5]: 65
Según un ejemplo que no forma parte de la invención (rama no angular, V):
• Etapa 1: obtener un modo de intrapredicción de un bloque vecino izquierdo y un modo de intrapredicción de un bloque vecino superior de acuerdo con la FIG. 9. Si un modo de intrapredicción del bloque vecino no está disponible (por ejemplo, el bloque vecino está fuera de los límites de la imagen o el bloque vecino está intercodificado), el modo de intrapredicción del bloque vecino se establece como planar. El modo de intrapredicción del vecino izquierdo se denomina modo_izquierdo y el modo de intrapredicción del bloque vecino superior se denomina modo_superior.
Etapa 2: determinar si los modos de intrapredicción de los bloques vecinos son modos angulares o no.
Etapa 3: determinar si el bloque actual está codificado con modo ISP o no.
Etapa 4: si el bloque actual se aplica con el modo ISP, determinar el modo de división del bloque actual.
Etapa 5: si todas las siguientes condiciones (elementos de viñetas) se evalúan como verdaderas, Modo_izquierdo no es el modo angular y modo_superior no es el modo angular
El bloque actual está codificado con el modo ISP
El modo de división del bloque actual es vertical.
luego, se construye una lista de modos de intrapredicción que comprende N entradas de modos de intrapredicción de
la siguiente manera (N es igual a 6, donde la 1a entrada corresponde a MPM[0], la 2a entrada corresponde a MPM[1], y así sucesivamente):
MPM[0]: planar
MPM[1]: DC
MPM[2]: vertical
MPM[3]: 43
MPM[4]: 60
MPM[5]: 3
Según un ejemplo que no forma parte de la invención (una rama angular, una angular la otra no angular):
• Etapa 1: obtener un modo de intrapredicción de un bloque vecino izquierdo y un modo de intrapredicción de un bloque vecino superior de acuerdo con la FIG. 9. Si un modo de intrapredicción del bloque vecino no está disponible (por ejemplo, el bloque vecino está fuera de los límites de la imagen o el bloque vecino está intercodificado), el modo de intrapredicción del bloque vecino se establece como planar. El modo de intrapredicción del vecino izquierdo se denomina modo_izquierdo y el modo de intrapredicción del bloque vecino superior se denomina modo_superior. • Etapa 2: determinar si los modos de intrapredicción de los bloques vecinos son modos angulares o no.
• Etapa 3: determinar si el bloque actual está codificado con modo ISP o no.
• Etapa 4: si todas las siguientes condiciones (elementos de viñetas) se evalúan como verdaderas,
• Uno de los modos modo_izquierdo y modo_superior es el modo angular, el otro es el modo no angular. • El bloque actual está codificado con el modo ISP. Luego, se construye una lista de modos de intrapredicción que comprende N entradas de modos de intrapredicción de la siguiente manera (N es igual a 6, donde la 1a entrada corresponde a MPM[0], la 2a entrada corresponde a MPM[1], y así sucesivamente):
definir un modo angular como ang y obtener lo siguiente:
si modo_izquierdo es modo angular, ang=modo izquierdo
de lo contrario (el modo superior es el modo angular) ang = modo superior
MPM[0]: planar
MPM[1]: ang
MPM[2]: 2 ((ang 61 ) % 64)
MPM[3]: 2 ((ang-1) % 64)
MPM[4]: 2 ((ang 60) % 64)
MPM[5]: 2 ((ang) % 64)
• Etapa 6: predecir el bloque actual según un índice (denotado como índice MPM) y las entradas de la lista construida.
Según una forma de realización de la invención (una rama angular, dos son el mismo angular):
• Etapa 1: obtener un modo de intrapredicción de un bloque vecino izquierdo y un modo de intrapredicción de un bloque vecino superior según la FIG. 9. Si un modo de intrapredicción del bloque vecino no está disponible (por ejemplo, el bloque vecino está fuera de los límites de la imagen o el bloque vecino está intercodificado), el modo de intrapredicción del bloque vecino se establece como planar. El modo de intrapredicción del vecino izquierdo se denomina modo_izquierdo y el modo de intrapredicción del bloque vecino superior se denomina modo_superior. • Etapa 2: determinar si los modos de intrapredicción de los bloques vecinos son modos angulares o no.
• Etapa 3: determinar si el bloque actual está codificado con modo ISP o no.
• Etapa 4: si todas las siguientes condiciones (elementos de viñetas) se evalúan como verdaderas,
• Modo_izquierdo y modo_superior son modos angulares y son iguales.
• El bloque actual está codificado con el modo ISP.
luego, se construye una lista de modos de intrapredicción que comprende N entradas de modos de intrapredicción de la siguiente manera (N es igual a 6, donde la 1a entrada corresponde a MPM[0], la 2a entrada corresponde a MPM[1], y así sucesivamente):
MPM[0]: planar
MPM[1]: modo_izquierdo
MPM[2]: 2 ((modo_izquierdo+ 61) % 64)
MPM[3]: 2 ((modo_izquierdo-1) % 64)
MPM[4]: 2 ((modo_izquierdo+ 60) % 64)
MPM[5]: 2 ((modo_izquierdo) % 64)
• Etapa 6: predecir el bloque actual según un índice (denotado como índice MPM) y las entradas de la lista construida.
Según un ejemplo que no forma parte de la invención (rama de dos angulares):
• Etapa 1: obtener un modo de intrapredicción de un bloque vecino izquierdo y un modo de intrapredicción de un bloque vecino superior según la FIG. 9. Si un modo de intrapredicción del bloque vecino no está disponible (por ejemplo, el bloque vecino está fuera de los límites de la imagen o el bloque vecino está intercodificado), el modo de intrapredicción del bloque vecino se establece como planar. El modo de intrapredicción del vecino izquierdo se denomina modo_izquierdo y el modo de intrapredicción del bloque vecino superior se denomina modo_superior. • Etapa 2: determinar si el modo de intrapredicción de los bloques vecinos son modos angulares o no.
• Etapa 3: determinar si el bloque actual está codificado con modo ISP o no.
• Etapa 4: si todas las siguientes condiciones (elementos de viñetas) se evalúan como verdaderas,
• Modo_izquierdo y modo_superior son dos modos angulares diferentes.
• El bloque actual está codificado con el modo ISP
luego, se construye una lista de modos de intrapredicción que comprende N entradas de modos de intrapredicción de la siguiente manera (N es igual a 6, donde la 1a entrada corresponde a MPM[0], la 2a entrada corresponde a MPM[1], y así sucesivamente):
MPM[0]: planar
MPM[1]: modo_superior
MPM[2]: modo_izquierdo
- Las variables minAB y maxAB se derivan de la siguiente manera:
- Si maxAB - minAB es igual a 1, se aplica lo siguiente:
MPM[ 3 ] = 2 ( ( minAB 61) % 64 (8-30)
MPM[ 4 ] = 2 ( ( maxAB - 1) % 64) (8-31)
MPM[ 5 ] = 2 ( ( minAB 60) % 64 (8-32)
De lo contrario, si maxAB - minAB es igual a 2, se aplica lo siguiente:
MPM[ 3 ] = 2 ( ( minAB - 1) % 64) (8-34)
MPM[ 4 ] = 2 ( ( minAB 61) % 64) (8-35)
MPM[ 5 ] = 2 ( ( maxAB - 1) % 64 ) (8-36)
De lo contrario, si maxAB - minAB es mayor que 61, se aplica lo siguiente:
MPM[ 3 ] = 2 ( ( minAB - 1) % 64) (8-38)
MPM[ 4 ] = 2 ( ( maxAB 61) % 64) (8-39)
MPM[ 5 ] = 2 ( minAB % 64) (8-40)
De lo contrario, se aplica lo siguiente:
MPM[ 3 ] = 2 ( ( minAB 61) % 64) (8-42)
MPM[ 4 ] = 2 ( ( minAB - 1) % 64) (8-43)
MPM[ 5 ] = 2 ( ( maxAB 61) % 64) (8-44)
• Etapa 6: predecir el bloque actual según un índice (denotado como índice MPM) y las entradas de la lista construida.
MARK II: conjunto de alternativas para la construcción de listas MPM de intrabloques no ISP
Según un ejemplo que no forma parte de la invención (rama no angular):
• Etapa 1: obtener un modo de intrapredicción de un bloque vecino izquierdo y un modo de intrapredicción de un bloque vecino superior según la FIG. 9. Si un modo de intrapredicción del bloque vecino no está disponible (por ejemplo, el bloque vecino está fuera de los límites de la imagen o el bloque vecino está intercodificado), el modo de intrapredicción del bloque vecino se establece como planar. El modo de intrapredicción del vecino izquierdo se denomina modo_izquierdo y el modo de intrapredicción del bloque vecino superior se denomina modo_superior. • Etapa 2: determinar si los modos de intrapredicción de los bloques vecinos son modos angulares o no.
• Etapa 3: determinar si el bloque actual está codificado con modo ISP o no.
• Etapa 4: y si todas las siguientes condiciones (elementos de viñetas) se evalúan como verdaderas,
• Modo_izquierdo no es el modo angular y modo_superior no es el modo angular.
• El bloque actual NO se aplica con el modo ISP
Luego, se construye una lista de modos de intrapredicción que comprende N entradas de modos de intrapredicción de la siguiente manera (N es igual a 6, donde la 1a entrada corresponde a MPM[0], la 2a entrada corresponde a MPM[1], y así sucesivamente):
MPM[0]: modo_izquierdo
MPM[1]: si el modo izquierdo es el modo DC, entonces esta entrada es el modo planar; si el modo izquierdo es el modo planar, entonces esta entrada es el modo DC.
MPM[2]: VER_IDX (es decir, un valor de 50, por ejemplo)
MPM[3]: HOR_IDX (es decir, un valor de 18, por ejemplo)
MPM[4] : VER_IDX - 4 (es decir, un valor de 46, por ejemplo)
MPM[5]: VER_IDX 4 (es decir, un valor de 54, por ejemplo)
donde VER_IDX denota el índice del modo de intrapredicción vertical y HOR_IDX denota el índice del modo de intrapredicción horizontal.
Según un ejemplo que no forma parte de la invención (una rama angular, una angular la otra no angular):
• Etapa 1: obtener un modo de intrapredicción de un bloque vecino izquierdo y un modo de intrapredicción de un bloque vecino superior según la FIG. 9. Si un modo de intrapredicción del bloque vecino no está disponible (por ejemplo, el bloque vecino está fuera de los límites de la imagen o el bloque vecino está intercodificado), el modo de intrapredicción del bloque vecino se establece como planar. El modo de intrapredicción del vecino izquierdo se denomina modo_izquierdo y el modo de intrapredicción del bloque vecino superior se denomina modo_superior. • Etapa 2: determinar si los modos de intrapredicción de los bloques vecinos son modos angulares o no.
• Etapa 3: determinar si el bloque actual está codificado con modo ISP o no.
• Etapa 4: y si todas las siguientes condiciones (elementos de viñetas) se evalúan como verdaderas,
• Uno de los modos modo_izquierdo y modo_superior es el modo angular, el otro es el modo no angular; • El bloque actual NO se aplica con el modo ISP
Luego, se construye una lista de modos de intrapredicción que comprende N entradas de modos de intrapredicción de la siguiente manera (N es igual a 6, donde la 1a entrada corresponde a MPM[0], la 2a entrada corresponde a MPM[1], y así sucesivamente):
definir un modo angular como maxAB y obtener lo siguiente:
si modo_izquierdo es el modo angular, maxAB = modo izquierdo
de lo contrario (el modo superior es el modo angular) maxAB = modo superior
MPM[0]: planar
MPM[1]: modo maxAB
MPM[2]: DC
MPM[3]: 2 ((maxAB 61) % 64)
MPM[4]: 2 ((maxAB-1) % 64)
MPM[5]: 2 ((maxAB 60) % 64)
• Etapa 6: predecir el bloque actual según un índice (denotado como índice MPM) y las entradas de la lista construida.
Según un ejemplo que no forma parte de la invención (una rama angular, dos son el mismo angular):
• Etapa 1: obtener un modo de intrapredicción de un bloque vecino izquierdo y un modo de intrapredicción de un bloque vecino superior según la FIG. 9. Si un modo de intrapredicción del bloque vecino no está disponible (por ejemplo, el bloque vecino está fuera de los límites de la imagen o el bloque vecino está intercodificado), el modo de intrapredicción del bloque vecino se establece como planar. El modo de intrapredicción del vecino izquierdo se denomina modo_izquierdo y el modo de intrapredicción del bloque vecino superior se denomina modo_superior. • Etapa 2: determinar si los modos de intrapredicción de los bloques vecinos son modos angulares o no.
• Etapa 3: determinar si el bloque actual está codificado con modo ISP o no.
• Etapa 4: si todas las siguientes condiciones (elementos de viñetas) se evalúan como verdaderas, • modojzquierdo y modo_superior son ambos modos angulares y son iguales.
• el bloque actual NO se aplica con el modo ISP.
luego, se construye una lista de modos de intrapredicción que comprende N entradas de modos de intrapredicción de la siguiente manera (N es igual a 6, donde la 1a entrada corresponde a MPM[0], la 2a entrada corresponde a MPM[1], y así sucesivamente):
definir un modo angular como ang y obtener lo siguiente:
MPM[0]: modo izquierdo
MPM[1]: planar
MPM[2]: DC
MPM[3]: 2 ((modo izquierdo 61) % 64)
MPM[4]: 2 ((modo izquierdo - 1) % 64)
MPM[5]: 2 ((modo izquierdo 60) % 64)
• Etapa 6: predecir el bloque actual según un índice (denotado como índice MPM) y las entradas de la lista construida.
Según un ejemplo que no forma parte de la invención (rama de dos angulares):
• Etapa 1: obtener un modo de intrapredicción de un bloque vecino izquierdo y un modo de intrapredicción de un bloque vecino superior según la FIG. 9. Si un modo de intrapredicción del bloque vecino no está disponible (por ejemplo, el bloque vecino está fuera de los límites de la imagen o el bloque vecino está intercodificado), el modo de intrapredicción del bloque vecino se establece como planar. El modo de intrapredicción del vecino izquierdo se denomina modo_izquierdo y el modo de intrapredicción del bloque vecino superior se denomina modo_superior. • Etapa 2: determinar si el modo de intrapredicción de los bloques vecinos son modos angulares o no.
• Etapa 3: determinar si el bloque actual está codificado con modo ISP o no.
• Etapa 4: si todas las siguientes condiciones (elementos de viñetas) se evalúan como verdaderas,
• modo_izquierdo y modo_superior son dos modos angulares diferentes.
• el bloque actual NO se aplica con el modo ISP
luego, se construye una lista de modos de intrapredicción que comprende N entradas de modos de intrapredicción de la siguiente manera (N es igual a 6, donde la 1a entrada corresponde a MPM[0], la 2a entrada corresponde a MPM[1], y así sucesivamente):
MPM[0]: modo_izquierdo
MPM[1]: planar
MPM[2]: modo_superior
MPM[3]: DC
- Las variables minAB y maxAB se derivan de la siguiente manera:
- Si maxAB - minAB está en el intervalo de 2 a 62, inclusive, se aplica lo siguiente:
- De lo contrario, se aplica lo siguiente:
• Etapa 6: predecir el bloque actual según un índice (denotado como índice MPM) y las entradas de la lista construida.
MARK III: conjunto de alternativas para la construcción de listas MPM para bloques intra ISP y no ISP
Según un ejemplo que no forma parte de la invención (rama no angular, H):
• Etapa 1: obtener un modo de intrapredicción de un bloque vecino izquierdo y un modo de intrapredicción de un bloque vecino superior según la FIG. 9. Si un modo de intrapredicción del bloque vecino no está disponible (por ejemplo, el bloque vecino está fuera de los límites de la imagen o el bloque vecino está intercodificado), el modo de intrapredicción del bloque vecino se establece como planar. El modo de intrapredicción del vecino izquierdo se denomina modo_izquierdo y el modo de intrapredicción del bloque vecino superior se denomina modo_superior. • Etapa 2: determinar si los modos de intrapredicción de los bloques vecinos son modos angulares o no.
• Etapa 3: determinar si el bloque actual está codificado con modo ISP o no.
• Etapa 4: si el bloque actual se aplica con el modo ISP determinar el modo de división del bloque actual.
• Etapa 5: si todas las siguientes condiciones (elementos de viñetas) se evalúan como verdaderas,
• Modo_izquierdo no es el modo angular y modo_superior no es el modo angular
• El bloque actual se aplica con el modo ISP y el modo dividido es horizontal
luego, se construye una lista de modos de intrapredicción que comprende N entradas de modos de intrapredicción de la siguiente manera (N es igual a 6, donde la 1a entrada corresponde a MPM[0], la 2a entrada corresponde a MPM[1], y así sucesivamente):
MPM[0]: planar
MPM[1]: horizontal
MPM[2]: modo vertical
MPM[3]: 25
MPM[4] : 10
MPM[5]: 65.
Según un ejemplo que no forma parte de la invención (rama no angular, V):
• Etapa 1: obtener un modo de intrapredicción de un bloque vecino izquierdo y un modo de intrapredicción de un bloque vecino superior según la FIG. 9. Si un modo de intrapredicción del bloque vecino no está disponible (por ejemplo, el bloque vecino está fuera de los límites de la imagen o el bloque vecino está intercodificado), el modo de intrapredicción del bloque vecino se establece como planar. El modo de intrapredicción del vecino izquierdo se denomina modo_izquierdo y el modo de intrapredicción del bloque vecino superior se denomina modo_superior. • Etapa 2: determinar si los modos de intrapredicción de los bloques vecinos son modos angulares o no.
• Etapa 3: determinar si el bloque actual está codificado con modo ISP o no.
• Etapa 4: si el bloque actual se aplica con el modo ISP determinar el modo de división del bloque actual.
• Etapa 5: si todas las siguientes condiciones (elementos de viñetas) se evalúan como verdaderas,
• Modo_izquierdo no es el modo angular y modo_superior no es el modo angular
• El bloque actual NO se aplica con el modo ISP, o el bloque actual se aplica con el modo ISP y el modo dividido es vertical
luego, se construye una lista de modos de intrapredicción que comprende N entradas de modos de intrapredicción de la siguiente manera (N es igual a 6, donde la 1a entrada corresponde a MPM[0], la 2a entrada corresponde a MPM[1], y así sucesivamente):
MPM[0]: planar
MPM[1]: vertical
MPM[2]: Horizontal
MPM[3]: 43
MPM[4]: 60
MPM[5]: 3.
Según un ejemplo que no forma parte de la invención (una rama angular, una angular la otra no angular):
• Etapa 1: obtener un modo de intrapredicción de un bloque vecino izquierdo y un modo de intrapredicción de un bloque vecino superior según la FIG. 9. Si un modo de intrapredicción del bloque vecino no está disponible (por ejemplo, el bloque vecino está fuera de los límites de la imagen o el bloque vecino está intercodificado), el modo de intrapredicción del bloque vecino se establece como planar. El modo de intrapredicción del vecino izquierdo se denomina modo_izquierdo y el modo de intrapredicción del bloque vecino superior se denomina modo_superior. • Etapa 2: determinar si los modos de intrapredicción de los bloques vecinos son modos angulares o no.
• Etapa 3: si todas las condiciones siguientes (elementos de viñetas) se evalúan como verdaderas,
• Uno de los modos modo_izquierdo y modo_superior es el modo angular, el otro es el modo no angular. luego, se construye una lista de modos de intrapredicción que comprende N entradas de modos de intrapredicción de la siguiente manera (N es igual a 6, donde la 1a entrada corresponde a MPM[0], la 2a entrada corresponde a MPM[1], y así sucesivamente):
defina un modo angular como ang y obtenga lo siguiente:
si modo_izquierdo es modo angular, ang=modo izquierdo
de lo contrario (el modo superior es el modo angular) ang = modo superior
MPM[0]: planar
MPM[1]: ang
MPM[2]: 2 ((ang 61) % 64)
MPM[3]: 2 ((ang-1) % 64)
MPM[4]: 2 ((ang 60) % 64)
MPM[5]: 2 ((ang) % 64 ).
• Etapa 6: predecir el bloque actual según un índice (denotado como índice MPM) y las entradas de la lista construida.
Según una forma de realización de la invención (una rama angular, dos son el mismo angular):
• Etapa 1: obtener un modo de intrapredicción de un bloque vecino izquierdo y un modo de intrapredicción de un bloque vecino superior según la FIG. 9. Si un modo de intrapredicción del bloque vecino no está disponible (por ejemplo, el bloque vecino está fuera de los límites de la imagen o el bloque vecino está intercodificado), el modo de intrapredicción del bloque vecino se establece como planar. El modo de intrapredicción del vecino izquierdo se denomina modo_izquierdo y el modo de intrapredicción del bloque vecino superior se denomina modo_superior. • Etapa 2: determinar si los modos de intrapredicción de los bloques vecinos son modos angulares o no.
• Etapa 3: si todas las condiciones siguientes (elementos de viñetas) se evalúan como verdaderas,
• modo_izquierdo y modo_superior son ambos modos angulares y son iguales.
luego, se construye una lista de modos de intrapredicción que comprende N entradas de modos de intrapredicción de la siguiente manera (N es igual a 6, donde la 1a entrada corresponde a MPM[0], la 2a entrada corresponde a MPM[1], y así sucesivamente):
MPM[0]: planar
MPM[1]: modo izquierdo
MPM[2]: 2 ((modo izquierdo 61) % 64)
MPM[3]: 2 ((modo izquierdo - 1) % 64 )
MPM[4]: 2 ((modo izquierdo 60) % 64)
MPM[5]: 2 ((modo izquierdo) % 64)
• Etapa 6: predecir el bloque actual según un índice (denotado como índice MPM) y las entradas de la lista construida.
Según un ejemplo que no forma parte de la invención (rama de dos angulares):
• Etapa 1: obtener un modo de intrapredicción de un bloque vecino izquierdo y un modo de intrapredicción de un bloque vecino superior según la FIG. 9. Si un modo de intrapredicción del bloque vecino no está disponible (por ejemplo, el bloque vecino está fuera de los límites de la imagen o el bloque vecino está intercodificado), el modo de intrapredicción del bloque vecino se establece como planar. El modo de intrapredicción del vecino izquierdo se denomina modo_izquierdo y el modo de intrapredicción del bloque vecino superior se denomina modo_superior. • Etapa 2: determinar si el modo de intrapredicción de los bloques vecinos son modos angulares o no.
• Etapa 3: si todas las condiciones siguientes (elementos de viñetas) se evalúan como verdaderas,
• modo_izquierdo y modo_superior son dos modos angulares diferentes.
luego, se construye una lista de modos de intrapredicción que comprende N entradas de modos de intrapredicción de la siguiente manera (N es igual a 6, donde la 1a entrada corresponde a MPM[0], la 2a entrada corresponde a MPM[1], y así sucesivamente):
MPM[0]: planar
MPM[1]: modo_superior
MPM[2]: modo_izquierdo
- Las variables minAB y maxAB se derivan de la siguiente manera:
- Si maxAB - minAB es igual a 1, se aplica lo siguiente:
- De lo contrario, si maxAB - minAB es igual a 2, se aplica lo siguiente:
- De lo contrario, si maxAB - minAB es mayor que 61, se aplica lo siguiente:
- De lo contrario, se aplica lo siguiente:
• Etapa 6: predecir el bloque actual según un índice (denotado como índice MPM) y las entradas de la lista construida.
MARK IV: conjunto de alternativas para la construcción de listas MPM para intrabloques ISP y no ISP con DC, pero solo para rama no angular, ya que otras ramas ya no tienen DC con la versión optimizada para ISP.
Según un ejemplo que no forma parte de la invención (rama no angular, H):
• Etapa 1: obtener un modo de intrapredicción de un bloque vecino izquierdo y un modo de intrapredicción de un bloque vecino superior según la FIG. 9. Si un modo de intrapredicción del bloque vecino no está disponible (por ejemplo, el bloque vecino está fuera de los límites de la imagen o el bloque vecino está intercodificado), el modo de intrapredicción del bloque vecino se establece como planar. El modo de intrapredicción del vecino izquierdo se denomina modo_izquierdo y el modo de intrapredicción del bloque vecino superior se denomina modo_superior. • Etapa 2: determinar si los modos de intrapredicción de los bloques vecinos son modos angulares o no.
• Etapa 3: determinar si el bloque actual está codificado con modo ISP o no.
• Etapa 4: si el bloque actual se aplica con el modo ISP determinar el modo de división del bloque actual.
• Etapa 5: si todas las siguientes condiciones (elementos de viñetas) se evalúan como verdaderas,
• Modo_izquierdo no es el modo angular y modo_superior no es el modo angular
• El bloque actual se aplica con el modo ISP y el modo de división es división horizontal
luego, se construye una lista de modos de intrapredicción que comprende N entradas de modos de intrapredicción de la siguiente manera (N es igual a 6, donde la 1a entrada corresponde a MPM[0], la 2a entrada corresponde a MPM[1], y así sucesivamente):
MPM[0]: planar
MPM[1]: DC
MPM[2]: horizontal
MPM[3]: 25
MPM[4] : 10
MPM[5]: 65.
Según un ejemplo que no forma parte de la invención (rama no angular, V):
• Etapa 1: obtener un modo de intrapredicción de un bloque vecino izquierdo y un modo de intrapredicción de un bloque vecino superior según la FIG. 9. Si un modo de intrapredicción del bloque vecino no está disponible (por ejemplo, el bloque vecino está fuera de los límites de la imagen o el bloque vecino está intercodificado), el modo de intrapredicción del bloque vecino se establece como planar. El modo de intrapredicción del vecino izquierdo se denomina modo_izquierdo y el modo de intrapredicción del bloque vecino superior se denomina modo_superior.
Etapa 2: determinar si los modos de intrapredicción de los bloques vecinos son modos angulares o no.
Etapa 3: determinar si el bloque actual está codificado con modo ISP o no.
Etapa 4: si el bloque actual se aplica con el modo ISP determinar el modo de división del bloque actual Etapa 5: si todas las siguientes condiciones (elementos de viñetas) se evalúan como verdaderas, Modo_izquierdo no es el modo angular y modo_superior no es el modo angular
El bloque actual NO se aplica con el modo ISP, o el bloque actual se aplica con el modo ISP y el modo dividido es vertical
luego, se construye una lista de modos de intrapredicción que comprende N entradas de modos de intrapredicción de la siguiente manera (N es igual a 6, donde la 1a entrada corresponde a MPM[0], la 2a entrada corresponde a MPM[1], y así sucesivamente):
MPM[0]: planar
MPM[1]: DC
MPM[2]: vertical
MPM[3]: 43
MPM[4]: 60
MPM[5]: 3.
En una implementación del ejemplo que no forma parte de la invención, N se establece igual a 6.
Los siguientes ejemplos no están según la invención y se presentan únicamente con fines ilustrativos.
En un ejemplo, N se establece igual a 5. En este caso, dicha lista de modos de intrapredicción incluye las primeras 5 entradas como se enumeran anteriormente y no la sexta entrada.
En un ejemplo, N se establece igual a 4. En este caso, dicha lista de modos de intrapredicción incluye las primeras 4 entradas como se enumeran anteriormente y no la quinta entrada y la sexta entrada.
En un ejemplo, dicha lista de modos de intrapredicción se denomina lista MPM.
En una implementación, dicho índice de lista (índice MPM) se señala en el flujo de bits como un indicador. Ventajosamente, el índice MPM se puede codificar con el Codificador de Entropía Adaptable al Contexto (CABAC). El índice MPM podría codificarse según varios modelos de probabilidad (en otras palabras, contexto) por CABAC. Interacción con múltiples líneas de referencia
Si una lista MPM contiene tanto el modo planar como el modo DC, la herramienta de codificación de líneas de referencia múltiples usa una lista MPM que excluye el modo planar y DC de la lista MPM construida. En este caso, la
codificación intramodo de múltiples líneas de referencia usa una lista de 4 MPM. En un ejemplo, una lista MPM es {Planar (un valor de 0), DC (un valor de 1), VER (un valor de 50), HOR (un valor de 18), v Er -4 (un valor de 46), VER+4 (un valor de 54)} después de la construcción de la lista de MPM, la codificación intramodo usa una lista de 4 MPM de {VER, HOR, v Er -4, VER+4} cuando se habilita la línea de referencia múltiple.
Si una lista de MPM contiene el modo planar pero no el modo DC, la herramienta de codificación de línea de referencia múltiple usa una lista de MPM que excluye planar de la lista de MPM construida. En este caso, la codificación intramodo de múltiples líneas de referencia usa una lista de 5 MPM. En un ejemplo, una lista de MPM es {Planar, VER, HOR, 43, 60, 3} después de la construcción de la lista de MPM, luego la codificación intramodo usa una lista de 5 MPM de {VER, h Or , 43, 60, 3} cuando la línea de referencia múltiple está habilitada.
En otro ejemplo, podría ser necesaria la modificación de sintaxis para una lista MPM sin modo DC. Si una lista MPM no contiene Dc , probablemente el modo DC se usará con mucha frecuencia en la rama que no es MPM (es decir, el indicador MPM es falso). En este caso, se introduce una nueva sintaxis, modo_DC. El modo_DC es igual a 1 indica que el intramodo del bloque actual es el modo DC. El modo_DC es igual a 0 indica que el intramodo del bloque actual no es el modo DC.
Es decir, la antigua sintaxis de no-MPM se cambia de
a
La sintaxis modo_DC se puede codificar con el codificador de entropía adaptable al contexto (CABAC). El modo_DC podría codificarse según varios modelos de probabilidad (en otro contexto de palabras) por CABAC. Con la introducción del modo_DC, el valor máximo para el binario truncado es 60, es decir, 67 (número total de modos) - 6 (MPM) -1 (DC). Mientras que sin la introducción del modo_DC, el valor máximo para el binario truncado es 61, es decir, 67 (número de modos totales) - 6 (MPM).
En particular, en la presente memoria se proporcionan los siguientes métodos de codificación de predicción de un bloque actual implementado por un dispositivo de decodificación o un dispositivo de codificación. El dispositivo de decodificación puede ser el decodificador 30 de la FIG. 3 y el dispositivo de codificación puede ser el codificador 20 de la FIG. 2.
Según un ejemplo (véase la FIG. 10), un método de codificación de predicción de un bloque actual implementado por un dispositivo decodificador o un dispositivo codificador comprende las etapas de obtención 1001 de un modo intrapredicción de un bloque vecino izquierdo del bloque actual y obtener 1002 un modo de intrapredicción de un bloque vecino superior del bloque actual (véase la FIG. 9). Además, el método comprende construir 1003, en función de los resultados proporcionados por las etapas 1101 y 1002 de obtención, una lista de Modo Más Probable, MPM, de modos de intrapredicción para el bloque actual, comprendiendo la lista MPM al menos 5 entradas de modos de intrapredicción.
Las al menos 5 entradas son las siguientes, por ejemplo:
{ang, 2 ((ang 61) % 64), 2 ((ang-1) % 64), 2 ((ang 60) % 64), 2 ((ang) % 64)} cuando al menos primero se cumple una condición, donde la primera condición incluye que el modo de intrapredicción del bloque vecino izquierdo y el modo de intrapredicción del bloque vecino superior son el mismo modo angular, y donde ang representa el modo de intrapredicción del bloque vecino izquierdo o el modo de intrapredicción del bloque vecino superior.
Según un ejemplo alternativo, las al menos 5 entradas son las siguientes:
{ang, 2 ((ang 61) % 64), 2 ((ang - 1) % 64), 2 ((ang 60) % 64), 2 ((ang) % 64)} cuando se cumple al menos una primera condición, donde la primera condición incluye que uno del modo de intrapredicción del bloque vecino izquierdo y el modo de intrapredicción del bloque vecino superior es un modo angular, donde ang representa el modo angular.
Según otro ejemplo alternativo, las al menos 5 entradas son las siguientes:
cuando tanto el modo de intrapredicción del bloque vecino izquierdo como el modo de intrapredicción del bloque vecino superior son modos angulares, donde modo_superior representa el modo de intrapredicción del bloque vecino superior, modo_izquierdo representa el modo de intrapredicción del bloque vecino izquierdo,
a) si maxAB - minAB es igual a 1, las al menos 5 entradas de los modos de intrapredicción son las siguientes:
{modo_superior, modojzquierdo, 2 ((minAB 61) % 64), 2 ((maxAB - 1) % 64), 2 ((minAB 60) % 64)}; o b) si maxAB - minAB es igual a 2, las al menos 5 entradas de los modos de intrapredicción son las siguientes:
{modo_superior, modo_izquierdo,2 ((minAB - 1) % 64), 2 (( minAB 61) % 64 ), 2 (( maxAB - 1) % 64 )}; o c) si maxAB - minAB es mayor que 61, las al menos 5 entradas de los modos de intrapredicción son las siguientes: {modo_superior, modojzquierdo, 2 (( minAB - 1) % 64 ), 2 (( maxAB 61) % 64 ), 2 (minAB % 64 )}; o d) de lo contrario, las al menos 5 entradas de modos de intrapredicción son las siguientes:
{modo_superior, modojzquierdo, 2 (( minAB 61) % 64 ), 2 (( minAB - 1) % 64), 2 (( maxAB 61) % 64 )}. Según otro ejemplo, 4 de las al menos 5 entradas de modos de intrapredicción están dadas por VER_IDX, HOR_IDX, VER_IDX - 4 y VER_ID 4 cuando se cumple al menos una primera condición, donde la primera condición incluye que ninguna del modo de intrapredicción del bloque vecino izquierdo y del modo de intrapredicción del bloque vecino superior es un modo angular, en el que VER_iDx indica el índice del modo de intrapredicción vertical y HOR_IDX indica el índice del modo de intrapredicción horizontal.
En particular, la lista MPM puede constar de 5 entradas, por ejemplo, las 5 entradas mencionadas en los ejemplos no forman parte de la invención.
Además, un modo planar puede señalarse por medio de un indicador de modo planar.
Los métodos descritos anteriormente de codificación de predicción de un bloque actual se pueden implementar en un dispositivo para usar en un codificador de imágenes y/o un decodificador de imágenes, por ejemplo, el codificador 20 de la FIG. 2 y/o el decodificador 30 de la FIG. 3.
Como se ilustra en la FIG. 11, el dispositivo 1100 comprende una unidad 1101 de modo de predicción configurada para obtener un modo de intrapredicción de un bloque vecino izquierdo del bloque actual y para obtener un modo de intrapredicción de un bloque vecino superior del bloque actual. Además, el dispositivo 1100 comprende una unidad 1102 de modo más probable configurada para construir (en función de los resultados proporcionados por la unidad 1101 de modo de predicción) una lista de modo más probable, MPM, de modos de intrapredicción para el bloque actual que comprende al menos 5 entradas.
Según ejemplos alternativos, la lista de MPM proporcionada por la unidad 1102 de modo más probable comprende al menos 5 entradas de modos de intrapredicción de la siguiente manera:
I)
{ang, 2 ((ang 61) % 64), 2 ((ang- 1) % 64), 2 ((ang 60) % 64), 2 ((ang) % 64)} cuando se cumple al menos la primera condición, donde la primera condición incluye que el modo de intrapredicción del bloque vecino izquierdo y el modo de intrapredicción del bloque vecino superior son el mismo modo angular, y donde ang representa el modo de intrapredicción del bloque vecino izquierdo o el modo de intrapredicción del bloque vecino superior; o
ii
)
{ang, 2 ((ang 61) % 64), 2 ((ang - 1) % 64), 2 ((ang 60) % 64), 2 ((ang) % 64)} cuando se cumple al menos la primera condición, donde la primera condición incluye que uno del modo de intrapredicción del bloque vecino izquierdo y el modo de intrapredicción del bloque vecino superior es un modo angular, donde ang representa el modo angular.
Según otra alternativa, la lista MPM comprende al menos 5 entradas de modos de intrapredicción de la siguiente manera:
cuando tanto el modo de intrapredicción del bloque vecino izquierdo como el modo de intrapredicción del bloque vecino superior son modos angulares, en donde modo_superior representa el modo de intrapredicción del bloque vecino superior, el modo_izquierdo representa el modo de intrapredicción del bloque vecino izquierdo,
a) si maxAB - minAB es igual a 1, las al menos 5 entradas de los modos de intrapredicción son las siguientes:
{modo_superior, modojzquierdo, 2 ((minAB 61) % 64), 2 ((maxAB - 1) % 64), 2 ((minAB 60) % 64)}; o b) si maxAB - minAB es igual a 2, las al menos 5 entradas de los modos de intrapredicción son las siguientes:
{modo_superior, modo_izquierdo,2 ((minAB - 1) % 64), 2 ((minAB 61) % 64), 2 ((maxAB - 1) % 64)}; o c) si maxAB - minAB es mayor que 61, las al menos 5 entradas de los modos de intrapredicción son las siguientes: {modo_superior, modojzquierdo, 2 ((minAB - 1) % 64), 2 ((maxAB 61) % 64), 2 (minAB % 64)}; o d) de lo contrario, las al menos 5 entradas de modos de intrapredicción son las siguientes:
{modo_superior, modojzquierdo, 2 ((minAB 61) % 64), 2 ((minAB - 1) % 64), 2 ((maxAB 61) % 64)}.
Según otro ejemplo, 4 de las al menos 5 entradas de modos de intrapredicción están dadas por VER_IDX, HOR_IDX, VER_IDX - 4 y VER_ID 4 cuando se cumple al menos una primera condición, donde la primera condición incluye que ninguno del modo de intrapredicción del bloque vecino izquierdo y del modo de intrapredicción del bloque vecino superior es un modo angular, en el que VER_|Dx indica el índice del modo de intrapredicción vertical y HOR_IDX indica el índice del modo de intrapredicción horizontal.
En particular, la lista MPM puede constar de 5 entradas, por ejemplo, las 5 entradas mencionadas en los ejemplos anteriores no forman parte de la invención.
Además, un modo planar puede señalarse por medio de un indicador de modo planar.
Lo que sigue es una explicación de las aplicaciones del método de codificación así como del método de decodificación como se muestra en los ejemplos que no forman parte de la invención, y un sistema que los usa.
La FIG. 12 es un diagrama de bloques que muestra un sistema 3100 de suministro de contenido para realizar el servicio de distribución de contenido. Este sistema 3100 de suministro de contenido incluye el dispositivo 3102 de captura, el dispositivo 3106 terminal y opcionalmente incluye la pantalla 3126. El dispositivo 3102 de captura se comunica con el dispositivo 3106 terminal a través del enlace 3104 de comunicación. El enlace de comunicación puede incluir el canal 13 de comunicación descrito anteriormente. El enlace 3104 de comunicación incluye, entre otros, WIFI, Ethernet, cable, inalámbrico (3G/4G/5G), USB o cualquier tipo de combinación de los mismos, o similares.
El dispositivo 3102 de captura genera datos y puede codificar los datos mediante el método de codificación como se muestra en las realizaciones anteriores. Alternativamente, el dispositivo 3102 de captura puede distribuir los datos a un servidor de transmisión (no mostrado en las figuras), y el servidor codifica los datos y transmite los datos codificados al dispositivo 3106 terminal. El dispositivo 3102 de captura incluye pero no se limita a, una cámara, teléfono inteligente o Pad, ordenador u ordenador portátil, sistema de videconferencia, PDA, dispositivo montado en el vehículo, o una combinación de cualquiera de ellos, o similar. Por ejemplo, el dispositivo 3102 de captura puede incluir el dispositivo 12 de origen como se describe anteriormente. Cuando los datos incluyen vídeo, el codificador 20 de vídeo incluido en el dispositivo 3102 de captura puede realizar realmente el procesamiento de codificación de vídeo. Cuando los datos incluyen audio (es decir, voz), un codificador de audio incluido en el dispositivo 3102 de captura puede realizar
realmente el procesamiento de codificación de audio. Para algunos escenarios prácticos, el dispositivo 3102 de captura distribuye los datos de audio y vídeo codificados multiplexándolos juntos. Para otros escenarios prácticos, por ejemplo en el sistema de videconferencia, los datos de audio codificados y los datos de vídeo codificados no se multiplexan. El dispositivo 3102 de captura distribuye los datos de audio codificados y los datos de vídeo codificados al dispositivo 3106 terminal por separado.
En el sistema 3100 de suministro de contenido, el dispositivo 310 terminal recibe y reproduce los datos codificados. El dispositivo 3106 terminal podría ser un dispositivo con capacidad de recepción y recuperación de datos, como un teléfono inteligente o Pad 3108, ordenador u ordenador 3110 portátil, grabadora de vídeo en red (NVR)/grabadora de vídeo digital (DVR) 3112, TV 3114, decodificador (STB) 3116, sistema 3118 de videconferencia, sistema 3120 de vídeovigilancia, asistente digital personal (PDA) 3122, dispositivo 3124 montado en vehículo, o una combinación de cualquiera de ellos, o similar capaz de decodificar los datos codificados mencionados anteriormente. Por ejemplo, el dispositivo 3106 terminal puede incluir el dispositivo 14 de destino como se describe anteriormente. Cuando los datos codificados incluyen vídeo, el decodificador 30 de vídeo incluido en el dispositivo terminal tiene prioridad para realizar la decodificación de vídeo. Cuando los datos codificados incluyen audio, se prioriza un decodificador de audio incluido en el dispositivo terminal para realizar el procesamiento de decodificación de audio.
Para un dispositivo terminal con su pantalla, por ejemplo, teléfono inteligente o Pad 3108, ordenador u ordenador 3110 portátil, grabadora de vídeo en red (NVR)/grabadora de vídeo digital (DVR) 3112, TV 3114, asistente digital personal (PDA) 3122 o dispositivo 3124 montado en vehículo, el dispositivo terminal puede suministrar los datos decodificados a su pantalla. Para un dispositivo terminal equipado sin pantalla, por ejemplo, STB 3116, sistema 3118 de videconferencia o sistema 3120 de vídeovigilancia, se contacta una pantalla 3126 externa para recibir y mostrar los datos decodificados.
Cuando cada dispositivo en este sistema realiza la codificación o decodificación, se puede usar el dispositivo de codificación de imágenes o el dispositivo de decodificación de imágenes, como se muestra en las realizaciones mencionadas anteriormente.
La FIG. 13 es un diagrama que muestra una estructura de un ejemplo del dispositivo 3106 terminal. Después de que el dispositivo 3106 terminal reciba el flujo del dispositivo 3102 de captura, la unidad 3202 de procesamiento de protocolo analiza el protocolo de transmisión del flujo. El protocolo incluye, entre otros, Protocolo de Transmisión en Tiempo Real (RTSP), Protocolo de Transferencia de Hipertexto (HTTP), Protocolo de Transmisión en vivo HTTP (HLS), MPEG-DASH, Protocolo de Transporte en Tiempo Teal (RTP), Protocolo de Mensajería en Tiempo Real (RTMP), o cualquier tipo de combinación de los mismos, o similares.
Después de que la unidad 3202 de procedimiento de protocolo procese el flujo, se genera el archivo de flujo. El archivo se envía a una unidad 3204 de demultiplexación. La unidad 3204 de demultiplexación puede separar los datos multiplexados en datos de audio codificados y datos de vídeo codificados. Como se describió anteriormente, para algunos escenarios prácticos, por ejemplo en el sistema de videconferencia, los datos de audio codificados y los datos de vídeo codificados no se multiplexan. En esta situación, los datos codificados se transmiten al decodificador 3206 de vídeo y al decodificador 3208 de audio sin pasar por la unidad 3204 de demultiplexación.
A través del procesamiento de demultiplexación, se generan flujos elementales (ES) de vídeo, ES de audio y, opcionalmente, subtítulos. El decodificador 3206 de vídeo, que incluye el decodificador 30 de vídeo como se explica en las realizaciones mencionadas anteriormente, decodifica los ES de vídeo mediante el método de decodificación que se muestra en las realizaciones mencionadas anteriormente para generar tramas de vídeo y suministra estos datos a la unidad 3212 de sincronización. El decodificador 3208 de audio, decodifica el audio ES para generar una trama de audio y envía estos datos a la unidad 3212 de sincronización. Alternativamente, la trama de vídeo puede almacenarse en un búfer (no se muestra en la FIG. Y) antes de enviarlo a la unidad 3212 de sincronización. De manera similar, la trama de audio puede almacenarse en un búfer (no se muestra en la FIG. Y) antes de enviarlo a la unidad 3212 sincronización.
La unidad 3212 de sincronización sincroniza la trama de vídeo y la trama de audio, y suministra el vídeo/audio a una pantalla 3214 de vídeo/audio. Por ejemplo, la unidad 3212 de sincronización sincroniza la presentación de la información de vídeo y audio. La información puede codificarse en la sintaxis usando marcas de tiempo relacionadas con la presentación de datos de audio y visuales codificados y marcas de tiempo relacionadas con la entrega del propio flujo de datos.
Si se incluyen subtítulos en el flujo, el decodificador 3210 de subtítulos decodifica el subtítulo y lo sincroniza con la trama de vídeo y la trama de audio, y proporciona el vídeo/audio/subtítulo a una pantalla 3216 de vídeo/audio/subtítulo.
La presente invención no se limita al sistema mencionado anteriormente, y el dispositivo de codificación de imágenes o el dispositivo de decodificación de imágenes en las realizaciones mencionadas anteriormente pueden incorporarse a otro sistema, por ejemplo, un sistema de automóvil.
Operadores matemáticos
Los operadores matemáticos usados en esta solicitud son similares a los usados en el lenguaje de programación C. Sin embargo, los resultados de la división de enteros y las operaciones de cambio aritmético se definen con mayor precisión y se definen operaciones adicionales, como la exponenciación y la división de valores reales. Las convenciones de numeración y recuento generalmente comienzan desde 0, por ejemplo, "el primero" es equivalente al 0-ésimo, "el segundo" es equivalente al 1-ésimo, etc.
Operadores aritméticos
Los siguientes operadores aritméticos se definen de la siguiente manera:
+ Suma
Resta (como operador de dos argumentos) o negación (como operador de prefijo unario)
Multiplicación, incluida la multiplicación de matrices
Xy Exponenciación. Especifica x a la potencia de y. En otros contextos, dicha notación se usa para superíndices que no están destinados a la interpretación como exponenciación.
/ División de enteros con truncamiento del resultado hacia cero. Por ejemplo, H4 y -H-4
se truncan en 1 y -H4 y H-4 se truncan en -1.
Se usa para denotar divisiones en ecuaciones matemáticas en las que no se pretende truncar ni redondear.
Se usa para denotar divisiones en ecuaciones matemáticas en las que no se pretende x truncar ni redondear.
y
La suma de f(i) con i tomando todos los valores enteros desde x hasta e incluyendo y.
x%y Módulo. Resto de x dividido por y, definido solo para números enteros x e y con x >= 0
e y > 0.
Operadores lógicos
Los siguientes operadores lógicos se definen de la siguiente manera:
x & & y "Y" lógico booleano de x e y
x | | y "O" lógico booleano de x e y
! Lógico booleano "no"
X ? y : z Si x es VERDADERO o no es igual a 0, se evalúa como el valor de y; de lo contrario,
se evalúa al valor de z.
Operadores relacionales
Los siguientes operadores relacionales se definen de la siguiente manera:
> Mas grande que
>= Mayor que o igual a
< Menor que
<= Menor que o igual a
= = Igual a
!= No igual a
Cuando se aplica un operador relacional a un elemento de sintaxis o variable al que se le ha asignado el valor "na" (no aplicable), el valor "na" se trata como un valor distinto para el elemento de sintaxis o variable. Se considera que el valor "na" no es igual a ningún otro valor.
Operadores binarios
Los siguientes operadores bit a bit se definen de la siguiente manera:
& Binario "y". Cuando opera con argumentos enteros, opera con una representación de complemento a dos del valor entero. Cuando se opera con un argumento binario que contiene menos bits que otro argumento, el argumento más corto se amplía agregando más bits significativos iguales a 0.
| Binario "o". Cuando opera con argumentos enteros, opera con una representación de complemento a dos del valor entero. Cuando se opera con un argumento binario que contiene menos bits que otro argumento, el argumento más corto se amplía agregando más bits significativos iguales a 0.
A Binario "exclusivo o". Cuando opera con argumentos enteros, opera con una representación de complemento a dos del valor entero. Cuando se opera con un argumento binario que contiene menos bits que otro argumento, el argumento más corto se amplía agregando más bits significativos iguales a 0.
x >> y Desplazamiento aritmético a la derecha de una representación entera en complemento a dos de los dígitos binarios x por y. Esta función se define solo para valores enteros no negativos de y. Los bits desplazados a los bits más significativos (MSB) como resultado del desplazamiento a la derecha tienen un valor igual al MSB de x antes de la operación de desplazamiento.
x << y Desplazamiento aritmético a la izquierda de una representación entera en complemento a dos de x por y dígitos binarios. Esta función se define solo para valores enteros no negativos de y. Los bits desplazados a los bits menos significativos (LSB) como resultado del desplazamiento a la izquierda tienen un valor igual a 0.
Operadores de Asignación
Los siguientes operadores aritméticos se definen de la siguiente manera:
= Operador de asignación
Incremento, es decir, X++ es equivalente a X = X 1; cuando se usa en un índice de matriz, se evalúa como el valor de la variable antes de la operación de incremento. - - Decremento, es decir, X- - es equivalente a X = X - 1; cuando se usa en un índice de matriz, se evalúa como el valor de la variable antes de la operación de disminución. = Incremento por la 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 intervalo
La siguiente notación se usa para especificar un intervalo de valores:
x = y..z x toma valores enteros a partir de y hasta z, ambos inclusive, siendo x, y y z números enteros y z mayor que y.
Funciones matemáticas
Se definen las siguientes funciones matemáticas:
Asin( x ) la función de seno inverso trigonométrico, que opera en un argumento x que está en el intervalo de -1.0 a 1.0, inclusive, con un valor de salida en el intervalo de -n^2 a n^2, inclusive, en unidades de radianes
Atan( x ) la función de tangente inversa trigonométrica, que opera en un argumento x, con un valor de salida en el intervalo de -n^2 a n^2, inclusive, en unidades de radianes
Ceil( x ) el entero más pequeño mayor o igual que x.
Cos( x ) la función coseno trigonométrica que opera en un argumento x en unidades de radianes.
Floor( x ) el entero más grande menor o igual a x.
Ln( x ) el logaritmo natural de x (el logaritmo en base e, donde e es la constante en base del logaritmo natural 2.718281 828...).
Log2( x ) el logaritmo en base 2 de x.
Log10( x ) el logaritmo en base 10 de x.
Round( x ) = Sign( x ) * Floor( Abs( x ) 0.5 )
Sin( x ) la función trigonométrica del seno que opera en un argumento x en unidades de radianes
Tan(x) la función tangente trigonométrica que opera en un argumento x en unidades de radianes
Orden de precedencia de operaciones
Cuando un orden de precedencia en una expresión no se indica explícitamente usando paréntesis, se aplican las siguientes reglas:
- Las operaciones de mayor precedencia se evalúan antes que cualquier operación de menor precedencia.
- Las operaciones de la misma precedencia se evalúan secuencialmente de izquierda a derecha.
La siguiente tabla especifica la precedencia de las operaciones de mayor a menor; una posición más alta en la tabla indica una precedencia más alta.
Para aquellos operadores que también se usan en el lenguaje de programación C, el orden de precedencia usado en esta Memoria Descriptiva es el mismo que se usa en el lenguaje de programación C.
Tabla: precedencia de operaciones desde la más alta en la parte superior de la tabla hasta la más baja en la parte inferior de la tabla
Texto descriptivo de operaciones lógicas
En el texto, una declaración de operaciones lógicas como se describiría matemáticamente de la siguiente forma: if ( condición 0 )
declaración 0
else if ( condición 1 )
declaración 1
else /* comentario informativo sobre la condición restante */
declaración n
puede describirse de la siguiente manera:
... de la siguiente manera / ... se aplica lo siguiente:
- Si condición 0, declaración 0
- De lo contrario, si la condición 1, declaración 1
- De lo contrario (observación informativa sobre la condición restante), declaración n
Cada declaración "Si... De lo contrario, si... De lo contrario, ..." en el texto se introduce con "... como sigue" o "... se aplica lo siguiente" seguido inmediatamente por "Si..." . La última condición del "Si... En caso contrario, si... En caso contrario,..." es siempre un "En caso contrario,...". Las declaraciones intercaladas "Si... De lo contrario, si... De lo contrario, ..." se pueden identificar haciendo coincidir "... de la siguiente manera" o "... se aplica lo siguiente" con la terminación "De lo contrario, ..." .
En el texto, una declaración de operaciones lógicas como se describiría matemáticamente de la siguiente forma: if( condición 0a && condición 0b )
declaración 0
else if( condición 1a II condición 1b )
declaración 1
else
declaración n
puede describirse en de la siguiente manera:
... de la siguiente manera / ... se aplica lo siguiente:
- Si todas las siguientes condiciones son verdaderas, declaración 0:
- condición 0a
- condición 0b
- De lo contrario, si una o más de las siguientes condiciones son verdaderas, afirmación 1:
- condición 1a
- condición 1b
- De lo contrario, declaración n
En el texto, una declaración de operaciones lógicas como se describiría matemáticamente de la siguiente forma: if( condición 0 )
declaración 0
if ( condición 1 )
declaración 1
puede describirse de la siguiente manera:
Cuando condición 0, declaración 0
Cuando la condición 1, declaración 1
Aunque las realizaciones de la invención se han descrito principalmente en función de la codificación de vídeo, cabe señalar que las realizaciones del sistema 10 de codificación, el codificador 20 y el decodificador 30 (y, en consecuencia, el sistema 10) y las otras realizaciones descritas en la presente memoria también pueden configurarse
para procesamiento o codificación de imágenes, es decir, el procesamiento o codificación de una imagen individual independiente de cualquier imagen anterior o consecutiva como en la codificación de vídeo. En general, es posible que solo las unidades 244 de interpredicción media (codificador) y 344 (decodificador) no estén disponibles en caso de que la codificación del procesamiento de imágenes se limite a una sola imagen 17. Todas las demás funcionalidades (también denominadas herramientas o tecnologías) del codificador 20 de vídeo y el decodificador 30 de vídeo pueden usarse igualmente para el procesamiento de imágenes fijas, por ejemplo, cálculo 204/304 residual, transformada 206, cuantificación 208, cuantificación 210/310 inversa, transformada (inversa) 212/312, partición 262/362, intrapredicción 254/354 y/o filtrado 220, 320 de bucle y codificación 270 de entropía y decodificación 304 de entropía.
Algunas realizaciones, por ejemplo, del codificador 20 y el decodificador 30, y las funciones descritas en este documento, por ejemplo, con referencia al codificador 20 y el decodificador 30, puede implementarse en hardware, software, firmware o cualquier combinación de los mismos. Si se implementan en software, las funciones pueden almacenarse en un medio legible por ordenador o transmitirse a través de medios de comunicación como una o más instrucciones o código y ser ejecutadas por una unidad de procesamiento basada en hardware. Los medios legibles por ordenador pueden incluir medios de almacenamiento legibles por ordenador, que corresponden a un medio tangible como medios de almacenamiento de datos o medios de comunicación que incluyen cualquier medio que facilite la transferencia de un programa de ordenador de un lugar a otro, por ejemplo, según un protocolo de comunicación. De esta manera, los medios legibles por ordenador generalmente pueden corresponder a (1) un medio de almacenamiento tangible legible por ordenador que no es transitorio o (2) un medio de comunicación tal como una señal o una onda portadora. Los medios de almacenamiento de datos pueden ser cualquier medio disponible al que puedan acceder uno o más ordenadores o uno o más procesadores para recuperar instrucciones, códigos y/o estructuras de datos para la implementación de las técnicas descritas en esta descripción. Un producto de programa informático puede incluir un medio legible por ordenador.
A modo de ejemplo, y sin limitación, dichos medios de almacenamiento legibles por ordenador pueden comprender RAM, ROM, EEPROM, CD-ROM u otro almacenamiento en disco óptico, almacenamiento en disco magnético u otros dispositivos de almacenamiento magnético, memoria flash o cualquier otro medio que se puede usar para almacenar el código de programa deseado en forma de instrucciones o estructuras de datos y se puede acceder a él mediante un ordenador. Además, cualquier conexión se denomina correctamente un medio legible por ordenador. Por ejemplo, si las instrucciones se transmiten desde un sitio web, servidor u otra fuente remota mediante un cable coaxial, cable de fibra óptica, par trenzado, línea de suscriptor digital (DSL) o tecnologías inalámbricas como infrarrojos, radio y microondas, entonces el cable coaxial, el cable de fibra óptica, el par trenzado, el DSL o las tecnologías inalámbricas como infrarrojos, radio y microondas se incluyen en la definición de medio. Debe entenderse, sin embargo, que los medios de almacenamiento legibles por ordenador y los medios de almacenamiento de datos no incluyen conexiones, ondas portadoras, señales u otros medios transitorios, sino que están dirigidos a medios de almacenamiento tangibles no transitorios. Disco y unidad de disco, como se usa en la presente memoria, incluye disco compacto (CD), disco láser, disco óptico, disco versátil digital (DVD), disquete y disco Blu-ray, donde los discos generalmente reproducen datos magnéticamente, mientras que las unidades de discos reproducen datos ópticamente con láser. Las combinaciones de lo anterior también deben incluirse dentro del alcance de los medios legibles por ordenador.
Las instrucciones pueden ser ejecutadas por uno o más procesadores, como uno o más procesadores de señales digitales (DSP), microprocesadores de uso general, circuitos integrados específicos de aplicación (ASIC), matrices lógicas programables en campo (FPGA) u otros circuitos lógicos integrados o discretos equivalentes. En consecuencia, el término "procesador", como se usa en la presente memoria, puede referirse a cualquiera de las estructuras anteriores o a cualquier otra estructura adecuada para la implementación de las técnicas descritas en la presente memoria. Además, en algunos aspectos, la funcionalidad descrita en la presente memoria puede proporcionarse dentro de módulos de software y/o hardware dedicados configurados para codificar y decodificar, o incorporarse en un códec combinado. Además, las técnicas podrían implementarse completamente en uno o más circuitos o elementos lógicos.
Las técnicas de esta descripción pueden implementarse en una amplia variedad de dispositivos o aparatos, incluidos un teléfono inalámbrico, un circuito integrado (IC) o un conjunto de IC (por ejemplo, un conjunto de chips). En esta descripción se describen varios componentes, módulos o unidades para enfatizar los aspectos funcionales de los dispositivos configurados para realizar las técnicas descritas, pero no necesariamente requieren la realización por diferentes unidades de hardware. Más bien, como se describe anteriormente, varias unidades pueden combinarse en una unidad de hardware de códec o proporcionarse mediante una colección de unidades de hardware interoperativas, que incluyen uno o más procesadores como se describe anteriormente, junto con software y/o firmware adecuados.
Claims (8)
1. Un método de codificación de predicción de un bloque actual implementado por un dispositivo decodificador o un dispositivo codificador, que comprende:
obtener (1001) un modo de intrapredicción de un bloque vecino izquierdo del bloque actual;
obtener (1002) un modo de intrapredicción de un bloque vecino superior del bloque actual;
construir (1003) un lista de modos de intrapredicción de modos más probables, MPM, para el bloque actual, caracterizado en que la lista MPM consta de 6 entradas de modos de intrapredicción de la siguiente manera: {MPM[0]=planar,
MPM[1]=ang,
MPM[2]=2 (( ang 61) % 64 ),
MPM[3]=2 (( ang - 1 ) % 64 ),
MPM[4]=2 ((ang 60 ) % 64 ),
MPM[5]=2 ((ang) % 64 )} cuando se cumple al menos una primera condición, en donde la primera condición incluye que el modo de intrapredicción del bloque vecino izquierdo y el modo de intrapredicción del bloque vecino superior son el mismo modo angular, y en donde ang representa el modo de intrapredicción del bloque vecino izquierdo o el modo de intrapredicción del bloque vecino superior; donde MPM[j] representa la entrada (j+1)a, en la lista de MPM.
2. El método de la reivindicación 1, en donde la lista MPM consta de 6 entradas de modos de intrapredicción cuando se cumplen la primera condición y una segunda condición, en donde la segunda condición incluye que el bloque actual esté codificado con la Subpartición de Intramodo, ISP.
3. El método según una de las reivindicaciones 1 a 2, que comprende además codificar el modo de intrapredicción del bloque actual en función de la lista de MPM generada.
4. El método según una de las reivindicaciones 1 a 3, que comprende además determinar el modo de intrapredicción del bloque actual y, cuando el modo de intrapredicción determinado del bloque actual aparece en la lista MPM, codificar el modo de intrapredicción determinado del bloque actual por el índice correspondiente de la lista MPM.
5. Un codificador (20) que comprende circuitos de procesamiento para llevar a cabo el método según una cualquiera de las reivindicaciones 1 a 4.
6. Un decodificador (30) que comprende circuitos de procesamiento para llevar a cabo el método según una cualquiera de las reivindicaciones 1 a 4.
7. Un producto de programa informático que comprende un código de programa para realizar el método según una cualquiera de las reivindicaciones 1 a 4.
8. Un flujo de bits que comprende datos de imagen codificados e información para decodificar los datos de imagen codificados, la información para decodificar los datos de imagen codificados comprende el índice de lista MPM, caracterizado en que la lista MPM consta de 6 entradas de modos de intrapredicción de la siguiente manera: {MPM[0]=planar,
MPM[1]=ang,
MPM[2]=2 ((ang 61) % 64),
MPM[3]=2 ((ang - 1) % 64),
MPM[4]=2 ((ang 60 ) % 64),
MPM[5]=2 ((ang) % 64)} cuando se cumple al menos una primera condición, en donde la primera condición incluye que un modo de intrapredicción de un bloque vecino izquierdo de un bloque actual y un modo de intrapredicción de un bloque vecino superior del bloque actual son del mismo modo angular, y en donde ang representa el modo de intrapredicción del bloque vecino izquierdo o el modo de intrapredicción del bloque vecino superior; en donde MPM[j] representa la (j+1) ésima entrada en la lista MPM.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201962810323P | 2019-02-25 | 2019-02-25 | |
PCT/CN2020/076193 WO2020173399A1 (en) | 2019-02-25 | 2020-02-21 | An encoder, a decoder and corresponding methods using intra mode coding for intra prediction |
Publications (1)
Publication Number | Publication Date |
---|---|
ES2946058T3 true ES2946058T3 (es) | 2023-07-12 |
Family
ID=72239080
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
ES20762968T Active ES2946058T3 (es) | 2019-02-25 | 2020-02-21 | Un codificador, un decodificador y los métodos correspondientes que usan la codificación intramodo para la intrapredicción |
Country Status (12)
Country | Link |
---|---|
US (1) | US20210392373A1 (es) |
EP (2) | EP4203471A1 (es) |
JP (2) | JP7267444B2 (es) |
KR (1) | KR20210113399A (es) |
CN (5) | CN116320486A (es) |
AU (2) | AU2020227859B2 (es) |
CA (1) | CA3128913A1 (es) |
ES (1) | ES2946058T3 (es) |
HU (1) | HUE061648T2 (es) |
MX (1) | MX2021009888A (es) |
PL (1) | PL3912342T3 (es) |
WO (1) | WO2020173399A1 (es) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109889827B (zh) * | 2019-04-11 | 2021-01-29 | 腾讯科技(深圳)有限公司 | 帧内预测编码方法、装置、电子设备及计算机存储介质 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10148953B2 (en) * | 2014-11-10 | 2018-12-04 | Samsung Electronics Co., Ltd. | System and method for intra prediction in video coding |
US10448011B2 (en) * | 2016-03-18 | 2019-10-15 | Mediatek Inc. | Method and apparatus of intra prediction in image and video processing |
KR20180014675A (ko) * | 2016-08-01 | 2018-02-09 | 한국전자통신연구원 | 영상 부호화/복호화 방법, 장치 및 비트스트림을 저장한 기록 매체 |
US10638161B2 (en) | 2018-07-13 | 2020-04-28 | Tencent America LLC | Methods and apparatus for most probable mode derivation |
CN112673629A (zh) * | 2018-09-03 | 2021-04-16 | 韩国电子通信研究院 | 视频编码/解码方法和装置以及用于存储比特流的记录介质 |
CN111418206B (zh) * | 2018-10-05 | 2023-12-01 | Lg电子株式会社 | 使用mpm列表的基于帧内预测的视频编码方法及其装置 |
CN117880501A (zh) * | 2018-10-07 | 2024-04-12 | 三星电子株式会社 | 用于编码或解码视频信号的视频信号处理方法和设备 |
US11178396B2 (en) * | 2018-11-14 | 2021-11-16 | Tencent America LLC | Constrained intra prediction and unified most probable mode list generation |
JP7399973B2 (ja) | 2019-02-19 | 2023-12-18 | ヒューマックス・カンパニー・リミテッド | イントラ予測ベースのビデオ信号処理方法及び装置 |
-
2020
- 2020-02-21 ES ES20762968T patent/ES2946058T3/es active Active
- 2020-02-21 CN CN202310208229.3A patent/CN116320486A/zh active Pending
- 2020-02-21 MX MX2021009888A patent/MX2021009888A/es unknown
- 2020-02-21 EP EP23156741.3A patent/EP4203471A1/en active Pending
- 2020-02-21 WO PCT/CN2020/076193 patent/WO2020173399A1/en active Application Filing
- 2020-02-21 CN CN202310200619.6A patent/CN116647700A/zh active Pending
- 2020-02-21 CN CN202110877584.0A patent/CN114007068B/zh active Active
- 2020-02-21 CN CN202080011328.7A patent/CN113574870B/zh active Active
- 2020-02-21 AU AU2020227859A patent/AU2020227859B2/en active Active
- 2020-02-21 PL PL20762968.4T patent/PL3912342T3/pl unknown
- 2020-02-21 KR KR1020217027121A patent/KR20210113399A/ko not_active Application Discontinuation
- 2020-02-21 HU HUE20762968A patent/HUE061648T2/hu unknown
- 2020-02-21 JP JP2021549857A patent/JP7267444B2/ja active Active
- 2020-02-21 CA CA3128913A patent/CA3128913A1/en active Pending
- 2020-02-21 EP EP20762968.4A patent/EP3912342B1/en active Active
- 2020-02-21 CN CN202310200928.3A patent/CN116634174A/zh active Pending
-
2021
- 2021-08-20 US US17/407,517 patent/US20210392373A1/en active Pending
-
2023
- 2023-04-19 JP JP2023068786A patent/JP7521050B2/ja active Active
-
2024
- 2024-02-22 AU AU2024201152A patent/AU2024201152A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
EP3912342B1 (en) | 2023-04-26 |
CN116634174A (zh) | 2023-08-22 |
CN116647700A (zh) | 2023-08-25 |
KR20210113399A (ko) | 2021-09-15 |
AU2020227859B2 (en) | 2023-11-30 |
AU2020227859A1 (en) | 2021-08-26 |
JP2022521980A (ja) | 2022-04-13 |
MX2021009888A (es) | 2021-09-14 |
EP3912342A4 (en) | 2022-08-03 |
CN114007068A (zh) | 2022-02-01 |
CN116320486A (zh) | 2023-06-23 |
CN113574870B (zh) | 2023-02-10 |
EP3912342A1 (en) | 2021-11-24 |
CN114007068B (zh) | 2022-12-13 |
AU2024201152A1 (en) | 2024-03-14 |
JP2023100701A (ja) | 2023-07-19 |
JP7521050B2 (ja) | 2024-07-23 |
EP4203471A1 (en) | 2023-06-28 |
US20210392373A1 (en) | 2021-12-16 |
PL3912342T3 (pl) | 2023-07-17 |
CA3128913A1 (en) | 2020-09-03 |
WO2020173399A1 (en) | 2020-09-03 |
JP7267444B2 (ja) | 2023-05-01 |
CN113574870A (zh) | 2021-10-29 |
HUE061648T2 (hu) | 2023-07-28 |
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 | |
CN113039798B (zh) | 解码设备实现的译码方法及解码器 | |
ES2974160T3 (es) | Decodificador de video y métodos | |
ES2972326T3 (es) | Un codificador, un decodificador y métodos correspondientes para el modo de fusión | |
JP7205038B2 (ja) | 任意のctuサイズのためのibc検索範囲最適化を用いるエンコーダ、デコーダおよび対応する方法 | |
CN113748677A (zh) | 编码器、解码器及对应的帧内预测方法 | |
CN114026864B (zh) | 用于几何分割模式的色度样本权重推导 | |
US20210289222A1 (en) | Encoder, decoder and corresponding methods of most probable mode list construction for blocks with multi-hypothesis prediction | |
CN113597761A (zh) | 帧内预测方法和装置 | |
CN111416981B (zh) | 视频图像解码、编码方法及装置 | |
CN111416977B (zh) | 视频编码器、视频解码器及相应方法 | |
CN114830665B (zh) | 仿射运动模型限制 | |
ES2946058T3 (es) | Un codificador, un decodificador y los métodos correspondientes que usan la codificación intramodo para la intrapredicción | |
ES2967903T3 (es) | Codificador, decodificador y métodos correspondientes utilizando filtrado por interpolación | |
WO2021045655A9 (en) | Method and apparatus for intra prediction | |
CN113875251A (zh) | 用于几何分割模式的自适应滤波器强度指示 | |
CN113316939A (zh) | 一种标志位的上下文建模方法及装置 | |
ES2946487T3 (es) | Un codificador, un decodificador y métodos correspondientes de reducción de complejidad en intra predicción para el modo planar | |
ES2967663T3 (es) | Método y aparato para el almacenamiento de información de movimiento | |
WO2021034231A2 (en) | Method and apparatus of position dependent prediction combination for oblique directional intra prediction |