ES2975941T3 - Armonización de intrapredicción basada en matriz y selección de núcleo de transformada secundaria - Google Patents
Armonización de intrapredicción basada en matriz y selección de núcleo de transformada secundaria Download PDFInfo
- Publication number
- ES2975941T3 ES2975941T3 ES20790945T ES20790945T ES2975941T3 ES 2975941 T3 ES2975941 T3 ES 2975941T3 ES 20790945 T ES20790945 T ES 20790945T ES 20790945 T ES20790945 T ES 20790945T ES 2975941 T3 ES2975941 T3 ES 2975941T3
- Authority
- ES
- Spain
- Prior art keywords
- secondary transform
- current block
- separable secondary
- intra prediction
- block
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/103—Selection of coding mode or of prediction mode
- H04N19/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/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/12—Selection from among a plurality of transforms or standards, e.g. selection between discrete cosine transform [DCT] and sub-band transform or selection between H.263 and H.264
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/134—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
- H04N19/157—Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
- H04N19/159—Prediction type, e.g. intra-frame, inter-frame or bidirectional frame prediction
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
- H04N19/17—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
- H04N19/176—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/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/60—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
- H04N19/61—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/70—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- Discrete Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
- Cosmetics (AREA)
- Medicines That Contain Protein Lipid Enzymes And Other Medicines (AREA)
- Lubricants (AREA)
- Prostheses (AREA)
- Graft Or Block Polymers (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
Un método de codificación implementado por un dispositivo de decodificación o un dispositivo de codificación, que comprende: determinar un modo de intra predicción de un bloque actual (1601); y determinar la selección de una transformada secundaria del bloque actual basándose en el modo de intra predicción determinado para el bloque actual (1603). (Traducción automática con Google Translate, sin valor legal)
Description
DESCRIPCIÓN
Armonización de intrapredicción basada en matriz y selección de núcleo de transformada secundaria Referencia cruzada a las solicitudes relacionadas
Esta solicitud de patente reclama prioridad de Solicitud de Patente Provisional estadounidense No. US 62/835,487, presentada el 17 de abril de 2019
Campo de la invención
Las realizaciones de la presente solicitud (descripción), por lo general se relacionan con el campo del procesamiento de imágenes y más en particular para la intrapredicción.
Antecedentes
La codificación de video (codificación y decodificación de video) se utiliza en una amplia gama de aplicaciones de video digital, por ejemplo, transmisión de TV digital, transmisión de video a través de internet y redes móviles, aplicaciones de conversación en tiempo real como video chat, videoconferencia, DVD y discos Blu-ray, sistemas de edición y adquisición de contenido de video y videocámaras de aplicaciones de seguridad.
La cantidad de datos de video necesarios para representar incluso un video relativamente corto puede ser sustancial, lo que puede resultar en dificultades cuando los datos deben transmitirse o comunicarse a través de una red de comunicaciones con capacidad de ancho de banda limitada. Por lo tanto, los datos de video generalmente se comprimen antes de comunicarse a través de las redes de telecomunicaciones de hoy en día. El tamaño de un video también podría ser un problema cuando el video se almacena en un dispositivo de almacenamiento porque los recursos de memoria pueden ser limitados. Los dispositivos de compresión de video a menudo usan software y/o hardware en la fuente para codificar los datos de video antes de su transmisión o almacenamiento, disminuyendo así la cantidad de datos necesarios para representar imágenes de video digitales. Los datos comprimidos son luego recibidos en el destino por un dispositivo de descompresión de video que decodifica los datos de video. Con recursos de red limitados y demandas cada vez mayores de mayor calidad de video, son deseables técnicas mejoradas de compresión y descompresión que mejoren la relación de compresión con poco o ningún sacrificio en la calidad de la imagen.
El documento de CHEN J et al: "Algorithm Description of Joint Exploration Test Model 5", 5. Reunión JVET; 20170112-20170120; Ginebra; (grupo conjunto colaborativo sobre codificación de video de ISO/IEC JTC1/SC29/WG11 e ITU-T SG.16),<j>V<e>T-E1001-<v>211, febrero de 2017, introduce mapeo desde un modo de intrapredicción angular para índice de conjunto de transformada.
El documento de PFAFF J et al: "CE3: Affine linear weighted intra prediction (CE3-4.1, CE3-4.2)", 14. Reunión JVET; 20190319-20190327; Ginebra; (grupo conjunto colaborativo sobre codificación de video de ISO/IEC JTC1/SC29/WG11 e ITU-T SG. 16), JVET-N0217, 19/25 de marzo de 2019, introduce intrapredicción ponderada lineal afín.
El documento de ANG H et al: "Adaptive NSST Kernel Size Selection", 5. Reunión JVET; 20170112 20170120; Ginebra; (grupo conjunto colaborativo sobre codificación de video de ISO/IEC JTC1/SC29/WG11 e ITU-T SG.16), JVET-E0047-v3, 13 de febrero 2017, propone transformada secundaria 4x4 u 8x8 para más de 8x8 bloques.
El documento de ZHAO X et al: "TU-level non-separable secondary transform", 2. Reunión JVET; 20160220 20160226; San Diego; (grupo conjunto colaborativo sobre codificación de video de ISO/IEC JTC1/SC29/WG11 e ITU-T s G.16), jVeT-B0059, 21 de febrero 2016, propone acelerar el codificador reduciendo el número de verificaciones de distorsión de velocidad utilizando estimación de distorsión del dominio de transformada.
El documento de KOO M et al: "CE6: Reduced Secondary Transform (RST) (CE6-3.1)", 14. Reunión JVET; 20190319-20190327; Ginebra; (grupo conjunto colaborativo sobre codificación de video de ISO/IEC JTC1/SC29/WG11 e ITU-T SG.16), JVET-N0193, 27 de marzo de 2019, introduce un método de transformadas secundarias.
El documento de ZHAO X et al: "Mode-dependent non-separable secondary transform; C1044"; borrador ITU-T; periodo de estudio 2013 a 2016, UNIÓN INTERNACIONAL DE TELECOMUNICACIONES; GINEBRA ; CH, volumen 6/16, 30 de septiembre 2015, páginas 1 a 5, propone un método de transformadas secundarias no separables.
Sumario
La presente descripción intenta mitigar o resolver el problema antes mencionado.
Las realizaciones de la presente solicitud dan a conocer aparatos y métodos para la codificación y decodificación de las reivindicaciones independientes. En lo que sigue, las partes de la descripción y los dibujos que se refieren a realizaciones anteriores que no necesariamente comprenden todas las características para implementar realizaciones de la invención reivindicada no se representan como realizaciones de la invención sino como ejemplos útiles para comprender las realizaciones de la invención. La presente descripción da a conocer un método de codificación implementado por un dispositivo de decodificación o un dispositivo de codificación, que comprende: determinar un modo de intrapredicción de un bloque actual; y determinar la selección de una transformada secundaria del bloque actual basándose en el modo de intrapredicción determinado para el bloque actual.
El método de la presente descripción determina por tanto el modo de intrapredicción del bloque actual y determina si, y cómo, realizar una transformada secundaria del bloque actual en base a el modo de intrapredicciones determinado.
En el método descrito anteriormente, que determina que la selección de un núcleo de transformada secundaria para una transformada secundaria del bloque actual puede basarse en un índice de modo de intrapredicción del bloque actual.
En el método descrito anteriormente, en caso de que el bloque actual no se predice usando un modo MIP, Intrapredicción basada en matriz, el núcleo de la transformada secundaria puede seleccionarse para la transformada secundaria del bloque actual.
Por lo tanto, en caso de que se prediga en un bloque intrapredicho usando un modo MIP, por ejemplo, se puede usar un valor del indicador MIP para indicar si un bloque se predice usando un modo MIP o no, la transformada secundaria se deshabilita para este bloque intrapredicho, en otras palabras, el valor de un índice de transformada secundaria se ajusta a 0, o no es necesario decodificar el índice de transformada secundaria a partir de un flujo de bits. Por lo tanto, se logra una armonización de la herramienta MIP y la herramienta RST en el sentido de selección de núcleo de transformada secundaria.
El método descrito anteriormente puede comprender, además: deshabilitar una transformada secundaria del bloque actual cuando el bloque actual se predice usando un modo MIP.
En el método descrito anteriormente, la deshabilitación de una transformada secundaria del bloque actual puede comprender: establecer un valor de una información de indicación de transformada secundaria para el bloque actual a un valor predeterminado.
En el método descrito anteriormente, que el bloque actual se prediga o no usando un modo MIP puede indicarse de acuerdo con un valor de una información de indicación MIP.
En el método descrito anteriormente, en caso de que el bloque actual no se prediga usando un modo MIP, la transformada secundaria puede seleccionarse de acuerdo con la siguiente tabla
en donde:
sps_lfnst_enabled_flagigual a 1 especifica que lfnst_idx puede estar presente en la sintaxis de la unidad de intracodificación; en donde sps_lfnst_enabled_flag igual a 0 especifica que lfnst_idx no está presente en la sintaxis de la unidad de intracodificación;
intra_mip_flag[x0] [y0] igual a 1 especifica que el tipo de intrapredicción para muestras de luma es intrapredicción basada en matriz. intra_mip_flag [x0] [y0] igual a 0 especifica que el tipo de intrapredicción para muestras de luma no es intrapredicción basada en matriz; en donde cuando intra_mip_flag [x0] [y0] no está presente, se infiere que es igual a 0;
lfnst_idxespecifica si se utiliza uno de los dos núcleos, y cuál, de transformada no separables de baja frecuencia en un conjunto de transformaciones seleccionado. lfnst_idx igual a 0 especifica que la transformada no separable de baja frecuencia no se utiliza en la unidad de codificación actual; en donde cuando lfnst_idx no está presente, se infiere que es igual a 0;
transform_skip_flag[x0] [y0] [cIdx] especifica si una transformada se aplica al bloque de transformada asociado o no.
El método descrito anteriormente puede comprender, además: obtener un índice de modo de intrapredicción de un bloque actual de acuerdo con una intrapredicción basada en matriz, MIP, índice de modo del bloque actual y un tamaño del bloque actual; seleccionar un núcleo de transformada secundaria para una transformada secundaria del bloque actual basándose en el índice del modo de intrapredicción del bloque actual.
Por tanto, durante un proceso de selección del núcleo de transformada de la transformada secundaria, cuando se predice un bloque utilizando un modo MIP, se considera que uno de los conjuntos de núcleo de transformada secundaria se utiliza para este bloque.
En el método descrito anteriormente, el índice del modo de intrapredicción del bloque actual puede obtenerse de acuerdo con una relación de mapeo entre el índice de modo MIP, el tamaño del bloque actual, la relación de mapeo puede indicarse de acuerdo con una tabla predefinida.
El método como se describe anteriormente puede comprender además el uso de un núcleo de transformada secundaria para una transformada secundaria de un bloque actual, cuando el bloque actual se predice usando un modo de intrapredicción basada en matriz, MIP.
En el método descrito anteriormente, el núcleo de la transformada secundaria puede ser uno de los núcleos de transformada secundaria que se utilizan para los modos no MIP.
En el método descrito anteriormente, el núcleo de la transformada secundaria puede ser diferente de cualquiera de los núcleos de transformada secundaria que se utilizan para los modos no MIP.
En el método descrito anteriormente, en el caso de que se prediga un bloque actual usando un modo MIP, se puede usar una tabla de búsqueda para mapear el índice del modo MIP en un índice modo intra regular, y el conjunto de núcleo de transformada secundaria se puede seleccionar en base a este índice modo intra regular.
En el método descrito anteriormente, el índice del modo MIP puede mapearse a un índice modo intra regular basado en la siguiente tabla:
en donde la selección del conjunto de transformada secundaria puede realizarse de acuerdo con la siguiente tabla:
El método descrito anteriormente puede comprender además: proporcionar cuatro conjuntos de núcleo de transformada, que tienen un índice de conjunto de núcleo de transformada 0, 1, 2, 3, respectivamente, en donde cada conjunto de núcleo de transformada de los cuatro conjuntos de núcleo de transformada puede comprender dos transformadas; seleccionar una matriz de transformada secundaria reducida RST determinando el conjunto de núcleo de transformada de los cuatro conjuntos de núcleo de transformada que se aplicarán al bloque actual de acuerdo con el modo de intrapredicción del bloque actual, de la siguiente manera: si el bloque intra actual se predice al utilizar el modo del modelo lineal de componentes cruzados CCLM, o utilizando el modo MIP, seleccionar el conjunto de núcleo de transformada que tiene un índice de conjunto de núcleo de transformada 0; de lo contrario, seleccionar el conjunto de núcleo de transformada utilizando el valor del índice del modo de intrapredicción del bloque actual y la siguiente tabla:
El método tal como se describe puede comprender además: proporcionar cuatro conjuntos de núcleo de transformada, que tienen un índice de conjunto de núcleo de transformada 0, 1, 2, 3, respectivamente, en donde cada conjunto de núcleo de transformada de los cuatro conjuntos de núcleo de transformada puede comprender dos transformadas; proporcionar un quinto conjunto de núcleo de transformada, que tiene un índice de conjunto de núcleo de transformada 4, en donde el quinto conjunto de núcleo de transformada tiene las mismas dimensiones que los conjuntos de núcleo de transformada que tienen un índice de conjunto de núcleo de transformada 0-3; en donde el conjunto básico de la quinta transformada se entrena de nuevo en función del mismo método de aprendizaje automático y el mismo conjunto de entrenamiento de entrada para el modo MIP, seleccionar una matriz de transformada secundaria reducida RST determinando el conjunto de núcleo de transformada de los cinco conjuntos de núcleo de transformada que se aplicarán al bloque actual de acuerdo con el modo de intrapredicción del bloque actual, de la siguiente manera: si el bloque intra actual se predice al utilizar el modo del modelo lineal de componentes cruzados CCLM, seleccionar el conjunto de núcleo de transformada que tiene un índice de conjunto de núcleo de transformada 0; si el bloque intra actual se predice utilizando el modo MIP, seleccionar el conjunto de núcleo de transformada que tiene el índice 4 del conjunto de núcleo de transformada; de lo contrario, seleccionar el conjunto de núcleo de transformada utilizando el valor del índice del modo de intrapredicción del bloque actual y la siguiente tabla:
Por tanto, durante un proceso de selección del núcleo de transformada de la transformada secundaria, cuando se predice un bloque utilizando un modo MIP, se considera que un conjunto de núcleo de transformada secundaria entrenado se utiliza para este bloque. El conjunto de núcleo de transformada secundaria entrenado puede ser diferente del conjunto de núcleo de transformada en los ejemplos anteriores. La presente descripción da a conocer además un codificador que comprende circuitos de procesamiento para llevar a cabo el método descrito anteriormente cuando se implementa mediante un dispositivo de codificación.
La presente descripción da a conocer además un decodificador que comprende circuitos de procesamiento para llevar a cabo el método descrito anteriormente cuando se implementa mediante un dispositivo de decodificación.
La presente descripción da a conocer además un producto de programa informático que comprende un código de programa para realizar el método descrito anteriormente.
La presente descripción da a conocer además un decodificador, que comprende: uno o más procesadores; y un medio de almacenamiento no transitorio legible por ordenador acoplado a los procesadores y que almacena la programación para su ejecución por los procesadores, en donde la programación, cuando es ejecutada por los procesadores, configura el decodificador para llevar a cabo el método como se describe anteriormente cuando se implementa por medio de un dispositivo de decodificación.
La presente descripción además da a conocer un codificador que comprende: uno o más procesadores; y un medio de almacenamiento no transitorio legible por ordenador acoplado a los procesadores y que almacena la programación para su ejecución por los procesadores, en donde la programación, cuando es ejecutada por los procesadores, configura el codificador para llevar a cabo el método como se describe anteriormente cuando se implementa mediante un dispositivo de codificación.
La presente descripción da a conocer además un decodificador que comprende: una unidad de determinación configurada para determinar un modo de intrapredicción de un bloque actual; y una unidad de selección configurada para determinar la selección de una transformada secundaria del bloque actual basándose en el modo de intrapredicción determinado para el bloque actual.
La presente descripción da a conocer además un codificador que comprende: una unidad de determinación configurada para determinar un modo de intrapredicción de un bloque actual; y una unidad de selección configurada para determinar la selección de una transformada secundaria del bloque actual basándose en el modo de intrapredicción determinado para el bloque actual.
El objetivo anterior y otros se logran mediante el tema en cuestión de las reivindicaciones independientes. Otras formas de implementación son evidentes a partir de las reivindicaciones dependientes, la descripción y las figuras.
El método de acuerdo con el primer aspecto de la invención puede ser realizado por el aparato de acuerdo con el tercer aspecto de la invención. Otras características y formas de implementación del método de acuerdo con el tercer aspecto de la invención corresponden a las características y formas de implementación del aparato de acuerdo con el primer aspecto de la invención.
El método de acuerdo con el segundo aspecto de la invención puede ser realizado por el aparato de acuerdo con el cuarto aspecto de la invención. Otras características y formas de implementación del método de acuerdo con el cuarto aspecto de la invención corresponden a las características y formas de implementación del aparato de acuerdo con el segundo aspecto de la invención.
De acuerdo con un quinto aspecto, la invención se refiere a un aparato para decodificar un flujo de video que incluye un procesador y una memoria. La memoria almacena instrucciones que hacen que el procesador realice el método de acuerdo con el primer aspecto.
De acuerdo con un sexto aspecto, la invención se refiere a un aparato para codificar un flujo de video que incluye un procesador y una memoria. La memoria almacena instrucciones que hacen que el procesador realice el método de acuerdo con el segundo aspecto.
De acuerdo con un séptimo aspecto, se propone un medio de almacenamiento legible por ordenador que tiene almacenadas en el mismo instrucciones que cuando se ejecutan provocan que uno o más procesadores configurados codifiquen datos de vídeo. Las instrucciones hacen que uno o más procesadores realicen un método de acuerdo con el primer o segundo aspecto o cualquier posible realización del primer o segundo aspecto.
De acuerdo con un octavo aspecto, la invención se refiere a un programa informático que comprende un código de programa para realizar el método de acuerdo con el primer o segundo aspecto o cualquier posible realización del primer o segundo aspecto cuando se ejecuta en un ordenador.
Los detalles de una o más realizaciones se establecen en los dibujos adjuntos y la descripción a continuación. Otras características, objetos y ventajas resultará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 haciendo referencia a las figuras y dibujos adjuntos, en los que:
La figura 1A es un diagrama de bloques que muestra un ejemplo de un sistema de codificación de video configurado para implementar realizaciones de la invención.
La figura 1B es un diagrama de bloques que muestra otro ejemplo de un sistema de codificación de video configurado para implementar realizaciones de la invención.
La figura 2 es un diagrama de bloques que muestra un ejemplo de un codificador de video configurado para implementar realizaciones de la invención.
La figura 3 es un diagrama de bloques que muestra una estructura de ejemplo de un decodificador de video configurado para implementar realizaciones de la invención.
La figura 4 es un diagrama de bloques que ilustra un ejemplo de un aparato de codificación o un aparato de decodificación.
La figura 5 es un diagrama de bloques que ilustra otro ejemplo de un aparato de codificación o un aparato de decodificación.
La figura 6 es un diagrama de bloques que ilustra un ejemplo de una multiplicación de matriz de modo MIP para el bloque 4x4.
La figura 7 es un diagrama de bloques que ilustra un ejemplo de una multiplicación de matriz de modo MIP para el bloque 8x8.
La figura 8 es un diagrama de bloques que ilustra un ejemplo de una multiplicación de matriz de modo MIP para el bloque 8x4.
La figura 9 es un diagrama de bloques que ilustra un ejemplo de una multiplicación de matriz de modo MIP para el bloque 16x16.
La figura 10 es un diagrama de bloques que ilustra un proceso de transformada secundaria a modo de ejemplo.
La figura 11 es un diagrama de bloques que ilustra un proceso de multiplicación de núcleo de transformada secundaria a modo de ejemplo de un aparato de codificación y decodificación.
La figura 12 es un diagrama de bloques que ilustra una reducción de la dimensión de núcleo de transformada secundaria a modo de ejemplo de 16x64 a 16x48.
La figura 13 es un diagrama de bloques que ilustra una reconstrucción MIP MPM a modo de ejemplo basado en la ubicación de bloques vecinos.
La figura 14 es un diagrama de bloques que ilustra otra reconstrucción MIP MPM a modo de ejemplo basado en la ubicación de bloques vecinos..
La figura 15 ilustra un método de implementación mediante un dispositivo de decodificación o un dispositivo de codificación, el método de acuerdo con la presente descripción.
La figura 16 ilustra un codificador de acuerdo con la presente descripción.
La figura 17 ilustra un decodificador de acuerdo con la presente descripción.
La figura 18 es un diagrama de bloques que muestra una estructura a modo de ejemplo de un sistema de suministro de contenido 3100 que lleva a cabo un servicio de entrega de contenido.
La figura 19 es un diagrama de bloques que muestra una 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 especifican de manera explícita de algún otro modo.
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 en las que se muestran, a modo de ilustración, aspectos específicos de las realizaciones de la invención o aspectos específicos en los que se pueden usar realizaciones de la presente invención. Se entiende que las realizaciones de la invención pueden utilizarse 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 se define por las reivindicaciones adjuntas.
Por ejemplo, se entiende que una descripción en relación con un método descrito también puede ser válida para un dispositivo o sistema correspondiente configurado para realizar el método y viceversa. Por ejemplo, si se describen una o una pluralidad de etapas específicas del método, un dispositivo correspondiente puede incluir una o una pluralidad de unidades, por ejemplo, unidades funcionales, para realizar la una o la pluralidad de etapas del método descritas (por ejemplo, una unidad que realiza la una o la pluralidad de etapas, o una pluralidad de unidades, cada una de las cuales realiza una o más de la pluralidad de etapas), incluso si dichas una o más unidades no se describen o ilustran explícitamente en las figuras. Por otro lado, por ejemplo, si un aparato específico se describe en base a 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 una pluralidad de unidades (por ejemplo, una etapa que realiza la funcionalidad de una o una pluralidad de unidades, o una pluralidad de etapas, cada uno de los cuales realiza la funcionalidad de una o más de la pluralidad de unidades), incluso si dicho uno 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 y/o aspectos de ejemplo descritos en este documento pueden combinarse entre sí, a menos que se indique específicamente lo contrario.
La codificación de video generalmente se refiere al procesamiento de una secuencia de imágenes, que forman el video o la secuencia de video. En lugar del término "imagen", el término "cuadro" o "imagen" se puede utilizar como sinónimos en el campo de la codificación de vídeo. La codificación de video (o codificación en general) comprende dos partes codificación de video y decodificación de video La codificación de video se realiza en el lado de la fuente, y típicamente comprende procesar (por ejemplo, mediante compresión) las imágenes de video originales para reducir la cantidad de datos requeridos para representar las imágenes de video (para un almacenamiento y/o transmisión más eficientes). La decodificación de video se realiza en el lado de destino y típicamente comprende el procesamiento inverso en comparación con el codificador para reconstruir las imágenes de video. Se entenderá que las realizaciones que se refieren a la "codificación" de imágenes de vídeo (o imágenes en general) se refieren a la "codificación" o la "decodificación" de imágenes de video o secuencias de video 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 caso de codificación de video sin pérdida, las imágenes de video originales se pueden reconstruir, es decir, las imágenes de video reconstruidas tienen la misma calidad que las imágenes de video originales (asumiendo que no hay pérdida de transmisión u otra pérdida de datos durante el almacenamiento o la transmisión). En caso de codificación de video con pérdida, compresión adicional, por ejemplo, mediante cuantificación, se lleva a cabo para reducir la cantidad de datos que representan las imágenes de vídeo, que no se pueden reconstruir 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 video pertenecen al grupo de "códecs de video híbridos con pérdida" (es decir, combinan predicción espacial y temporal en el dominio de muestra y codificación de transformada 2D para aplicar cuantificación en el dominio de transformada). Cada imagen de una secuencia de vídeo normalmente se divide en un conjunto de bloques que no se superponen y la codificación se realiza normalmente a nivel de bloque. En otras palabras, en el codificador, el video se procesa típicamente, es decir, se codifica, en un nivel de bloque (bloque de video), por ejemplo, mediante el uso de la predicción espacial (intraimagen) y/o la predicción temporal (interimagen) para generar un bloque de predicción, restando el bloque de predicción del bloque actual (bloque actualmente procesado/a procesar) para obtener un bloque residual, transformando el bloque residual y cuantificando el bloque residual en el dominio de transformada para reducir la cantidad de datos a transmitir (compresión), mientras que en el decodificador el procesamiento inverso en comparación con el codificador se aplica 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 manera que ambos generarán predicciones idénticas (por ejemplo, predicciones intra e inter) y/o reconstrucciones para procesar, es decir, codificar los bloques subsiguientes. En las siguientes realizaciones de un sistema codificador de video 10, un codificador 20 y un decodificador de video 30 se describen en base a las figuras 1 a 3.
La figura 1A es un diagrama de bloques esquemático que ilustra un ejemplo de sistema de codificación 10, por ejemplo, un sistema de codificación de video 10 (o sistema de codificación corto 10) que puede utilizar técnicas de esta presente solicitud. El codificador de video 20 (o codificador corto 20) y el decodificador de video 30 (o decodificador corto 30) del sistema de codificación de vídeo 10 representan ejemplos de dispositivos que pueden configurarse para realizar técnicas de acuerdo con varios ejemplos descritos en la presente solicitud.
Como se muestra en la figura 1A, el sistema de codificación 10 comprende un dispositivo fuente 12 configurado para proporcionar datos de imagen codificada 21, por ejemplo, a un dispositivo de destino 14 para decodificar los datos de imagen codificados 13.
El dispositivo fuente 12 comprende un codificador 20, y adicionalmente, es decir, opcionalmente, puede comprender una fuente de imagen 16, un preprocesador (o unidad de preprocesamiento) 18, por ejemplo, un preprocesador de imágenes 18 y una interfaz de comunicación o unidad de comunicación 22.
La fuente de imágenes 16 puede comprender o ser cualquier tipo de dispositivo de captura de imágenes, por ejemplo una cámara para capturar una imagen del mundo real, y/o cualquier tipo de dispositivo generador de imagen, 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 imágenes puede ser cualquier tipo de memoria o almacenamiento que almacene cualquiera de las imágenes mencionadas anteriormente.
A diferencia del preprocesador 18 y el procesamiento realizado por la unidad de preprocesamiento 18, la imagen o los datos de imagen 17 también pueden denominarse imagen en bruto o datos de imagen en bruto 17.
El preprocesador 18 está configurado para recibir los datos de imagen (sin procesar) 17 y para realizar el preprocesamiento de los datos de imagen 17 para obtener una imagen preprocesada 19 o datos de imagen preprocesados 19. El preprocesamiento realizado por el preprocesador 18 puede comprender, por ejemplo, recorte, conversión de formato de color (por ejemplo, de RGB a YCbCr), corrección de color o eliminación de ruido. Se puede entender que la unidad de preprocesamiento 18 puede ser un componente opcional.
El codificador de video 20 está configurado para recibir los datos de imagen preprocesados 19 y proporcionar datos de imagen codificados 21 (se describirán más detalles a continuación, por ejemplo, en base a la figura 2). La interfaz de comunicaciones 22 del dispositivo fuente 12 puede configurarse para recibir los datos de imagen codificados 21 y para transmitir los datos de imagen codificados 21 (o cualquier otra versión procesada de los mismos) por un canal de comunicación 13 a otro dispositivo, por ejemplo el dispositivo de destino 14 o cualquier otro dispositivo, para almacenamiento o reconstrucción directa.
El dispositivo de destino 14 comprende un decodificador 30 (por ejemplo, un decodificador de vídeo 30) y puede comprender adicionalmente, es decir, opcionalmente, una interfaz de comunicación o unidad de comunicación 28, un postprocesador 32 (o una unidad de postprocesamiento 32) y un dispositivo de visualización 34.
La interfaz de comunicación 28 del dispositivo de destino 14 está configurada para recibir los datos de imagen codificados 21 (o cualquier otra versión procesada de los mismos), por ejemplo, directamente desde el dispositivo fuente 12 o desde cualquier otra fuente, por ejemplo, un dispositivo de almacenamiento, por ejemplo, un dispositivo de almacenamiento de datos de imágenes codificadas, y proporcionadas a los datos de imagen codificados 21 al decodificador 30.
La interfaz de comunicación 22 y la interfaz de comunicación 28 pueden configurarse para transmitir o recibir los datos de imagen codificados 21 o los datos codificados 13 a través de un enlace de comunicación directo entre el dispositivo de origen 12 y el dispositivo de destino 14, por ejemplo, una conexión directa por cable o inalámbrica, o mediante cualquier tipo de red, por ejemplo una red cableada o inalámbrica o cualquier combinación de las mismas, o cualquier tipo de red pública y privada, o cualquier tipo de combinación de las mismas.
La interfaz de comunicación 22 puede configurarse, por ejemplo, para empaquetar los datos de imagen codificados 21 en un formato apropiado, por ejemplo, paquetes, y/o procesar los datos de imágenes codificadas utilizando cualquier tipo de codificación o procesamiento de transmisión para su transmisión a través de un enlace de comunicación o una red de comunicación.
La interfaz de comunicaciones 28, que forma la contraparte de la interfaz de comunicaciones 22, puede estar, por ejemplo, configurada para recibir los datos transmitidos y procesar los datos de transmisión utilizando cualquier tipo de decodificación o procesamiento y/o desempaquetado de transmisión correspondiente, para obtener los datos de imagen codificados 21.
Tanto la interfaz de comunicación 22 como la interfaz de comunicación 28 pueden configurarse como interfaces de comunicación unidireccionales como indica la flecha para el canal de comunicaciones 13 en la figura 1A que apunta desde el dispositivo fuente 12 al dispositivo de destino 14, o interfaces de comunicación bidireccionales, y pueden configurarse, por ejemplo, para enviar y recibir mensajes, por ejemplo, para establecer una conexión, para reconocer e intercambiar cualquier otra información relacionada con el enlace de comunicación y/o transmisión de datos, por ejemplo, transmisión de datos de imágenes codificadas. El decodificador 30 está configurado para recibir los datos de imagen codificados 21 y proporcionar datos de imagen decodificados 31 o una imagen decodificada 31 (se describirán más detalles a continuación, por ejemplo, en base a la figura 3 o la figura 5).
El postprocesador 32 del dispositivo de destino 14 está configurado para postprocesar los datos de imagen decodificados 31 (también llamados datos de imagen reconstruidos), por ejemplo, la imagen decodificada 31, para obtener datos de imagen procesados posteriormente 33, por ejemplo, una imagen postprocesada 33. El postprocesamiento realizado por la unidad de postprocesamiento 32 puede comprender, por ejemplo, conversión de formato de color (por ejemplo, de YCbCr a RGB), corrección de color, recorte o remuestreo, o cualquier otro procesamiento, por ejemplo, para preparar los datos 31 de imagen decodificados para su visualización, por ejemplo, por dispositivo de visualización 34.
El dispositivo de visualización 34 del dispositivo de destino 14 está configurado para recibir los datos 33 de imagen postprocesados para visualizar la imagen, por ejemplo, a un usuario o espectador. El dispositivo de visualización 34 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 emisores de luz orgánicos (OLED), pantallas de plasma, proyectores, pantallas micro LED, cristal líquido sobre silicio (LCoS), procesador de luz digital (DLP) o cualquier otro tipo de pantalla.
Aunque la figura 1A representa el dispositivo de origen 12 y el dispositivo de destino 14 como dispositivos separados, las realizaciones de los dispositivos también pueden comprender ambos, o ambas funcionalidades, el dispositivo de origen 12 o la funcionalidad correspondiente y el dispositivo de destino 14 o la funcionalidad correspondiente. En dichas realizaciones, el dispositivo de origen 12 o la funcionalidad correspondiente y el dispositivo de destino 14 o la funcionalidad correspondiente pueden implementarse utilizando el mismo hardware y/o software o mediante hardware y/o software separados, o cualquier combinación de los mismos.
Como resultará evidente para el experto en base a la descripción, la existencia y división (exacta) de funcionalidades de las diferentes unidades o funcionalidades dentro del dispositivo fuente 12 y/o el dispositivo de destino 14 que se muestran en la figura 1A puede variar dependiendo de la dispositivo y aplicación reales. El codificador20(por ejemplo, un codificador de video 20) o el decodificador30(por ejemplo, un decodificador de video 30) o tanto el codificador 20 como el decodificador 30 pueden implementarse mediante procesamiento de circuitos como se muestra en la figura 1B, tal como uno o más microprocesadores, procesadores de señal digital (DSP), circuitos integrados de aplicación específica (ASIC), matrices de puertas programables en campo (FPGA), lógica discreta, hardware, codificación de video dedicado o cualquier combinación de los mismos. El codificador 20 puede implementarse mediante circuitos de procesamiento 46 para incorporar los diversos módulos como se describe con respecto al codificador 20 de la figura 2 y/o cualquier otro sistema o subsistema codificador descrito en el presente documento. El decodificador 30 puede implementarse a través de los circuitos de procesamiento 46 para incorporar los diversos módulos como se describe con respecto al decodificador 30 de la figura 3 y/o cualquier otro sistema o subsistema decodificador descrito en la presente memoria. Los circuitos de procesamiento pueden configurarse para realizar las diversas operaciones que se describen más adelante. Como se muestra en la figura 5, si las técnicas se implementan parcialmente en software, un dispositivo puede almacenar instrucciones para el software en un medio de almacenamiento adecuado, no transitorio, legible por ordenador y puede ejecutar las instrucciones en hardware usando uno o más procesadores para realizar las técnicas de esta descripción. Cualquiera del codificador de video20y el decodificador de video30puede integrarse como parte de un codificador/decodificador combinado (CODEC) en un solo dispositivo, por ejemplo, como se muestra en la figura 1B.
El dispositivo de origen 12 y el dispositivo de destino 14 pueden comprender cualquiera de una amplia gama de dispositivos, incluyendo cualquier tipo de dispositivo de mano o estacionario, por ejemplo, ordenadores portátiles, teléfonos móviles, teléfonos inteligentes, tabletas u ordenadores de tableta, cámaras, ordenadores de escritorio, decodificadores, televisores, dispositivos de visualización, reproductores de medios digitales, consolas de videojuegos, dispositivos de transmisión de video (como servidores de servicios de contenido o contenido servidores de entrega), dispositivo receptor de transmisión, dispositivo transmisor de transmisión, o similares y pueden no usar ningún tipo de sistema operativo. En algunos casos, el dispositivo de origen 12 y el dispositivo de destino 14 pueden estar equipados para comunicación inalámbrica. Por tanto, el dispositivo de origen 12 y el dispositivo de destino 14 pueden ser dispositivos de comunicación inalámbrica.
En algunos casos, el sistema de codificación de video10ilustrado en la figura 1A es simplemente un ejemplo, y las técnicas en la presente solicitud pueden aplicar a configuraciones de codificación de video (por ejemplo, codificación de video o decodificación de video) que no necesariamente incluyen ninguna comunicación de datos entre el dispositivo de codificación y el de decodificación. En otros ejemplos, los datos se recuperan de una memoria local, se transmiten en una red o similares. Un dispositivo de codificación de video puede codificar y almacenar datos en la memoria y/o un dispositivo de decodificación de video puede recuperar y decodificar datos de la memoria. En algunos ejemplos, la codificación y decodificación se realiza mediante dispositivos que no se comunican entre sí, sino que simplemente codifican datos en la memoria y/o recuperan y decodifican datos de la memoria.
Por conveniencia de la descripción, las realizaciones de la invención se describen aquí, por ejemplo, haciendo referencia a la codificación de video de alta eficiencia (HEVC) o al software de referencia de codificación de video versátil (VVC), el estándar de codificación de video de siguiente generación desarrollado por el equipo de colaboración conjunta sobre codificación de video (JCT-VC) del Grupo de Expertos en Codificación de Video ITU-T (VCE<g>) y el Grupo de Expertos en Cinematografía ISO/IEC (MPEG). 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 figura 2 muestra un diagrama de bloques esquemático de un codificador de vídeo 20 de ejemplo que está configurado para implementar las técnicas de la presente solicitud. En el ejemplo de la figura 2, el codificador de vídeo 20 comprende una entrada 201 (o interfaz de entrada 201), una unidad de cálculo residual 204, una unidad de procesamiento de transformada 206, una unidad de cuantificación 208, una unidad de cuantificación inversa 210 y una unidad de procesamiento de transformada inversa 212, una unidad de reconstrucción 214, una unidad de filtro de bucle 220, un búfer de imágenes decodificadas (DPB) 230, una unidad de selección de modo 260, una unidad de codificación entrópica 270 y una salida 272 (o interfaz de salida 272). La unidad de selección de modo 260 puede incluir una unidad de interpredicción 244, una unidad de intrapredicción 254 y una unidad de partición 262. La unidad de interpredicción 244 puede incluir una unidad de estimación de movimiento y una unidad de compensación de movimiento (no mostrada). Un codificador de vídeo 20 como se muestra en la figura 2 también puede denominarse codificador de vídeo híbrido o codificador de vídeo de acuerdo con un códec de vídeo híbrido.
La unidad de cálculo residual 204, la unidad de procesamiento de transformada 206, la unidad de cuantificación 208, la unidad de selección de modo 260 pueden mencionarse formando de una ruta de señal directa del codificador 20, mientras que la unidad de cuantificación inversa 210, la unidad de procesamiento de transformada inversa 212, la unidad de reconstrucción 214, búfer 216, el filtro de bucle 220, el búfer de imagen decodificada (DPB) 230, la unidad de interpredicción 244 y la unidad de intrapredicción 254 puede mencionarse como una ruta de señal hacia atrás del codificador de video 20, en donde la ruta de señal hacia atrás del codificador de video 20 corresponde a la ruta de la señal del decodificador (ver decodificador de video 30 en la figura 3). La unidad de cuantificación inversa 210, la unidad de procesamiento de transformada inversa 212, la unidad de reconstrucción 214, el filtro de bucle 220, el búfer de imagen codificada (DPB) 230, la unidad de interpredicción 244 y la unidad de intrapredicción 254 se pueden mencionar asimismo formado el “decodificador incorporado” del codificador de video 20.
Imágenes y Partición de imágenes (Imágenes y Bloques)
El codificador 20 puede estar configurado para recibir, por ejemplo, mediante la entrada 201, una imagen 17 (o datos de imagen 17), por ejemplo, imagen de una secuencia de imágenes que forman una secuencia de video o video. 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 como imagen actual o imagen a codificar (en particular en la codificación de video para distinguir la imagen actual de otras imágenes, por ejemplo, codificadas previamente y/o imágenes decodificadas de la misma secuencia de video, es decir, la secuencia de video que también comprende la imagen actual).
Una imagen (digital) es o puede considerarse como una matriz bidimensional o matriz 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 resolución de la imagen. Para la representación del color, normalmente se emplean tres componentes de color, es decir, la imagen se puede representar o incluir tres matrices de muestra. En formato RBG o espacio de color, una imagen comprende una matriz de muestra roja, verde y azul correspondiente. Sin embargo, en la codificación de video, cada píxel se representa típicamente en un formato de luminancia y crominancia o espacio de color, por ejemplo, YCbCr, que comprende un componente de luminancia indicado por Y (a veces también se usa L en su lugar) y dos componentes de crominancia indicados por Cb y Cr. El componente de luminancia (o luma 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 crominancia corta) Cb y Cr representan los componentes de información cromática o de color. Por consiguiente, 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 a 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. Por consiguiente, una imagen puede ser, por ejemplo, una matriz de muestras de luminancia en formato monocromático o una matriz de muestras de luminancia y dos matrices correspondientes de muestras de crominancia en 4:2:0, 4:2:2 y 4:4:4 formato de color.
Las realizaciones del codificador de vídeo 20 pueden comprender una unidad de partición de imágenes (no representada en la figura 2) configurada para dividir la imagen 17 en una pluralidad de bloques de imágenes (normalmente no superpuestos) 203. Estos bloques también pueden denominarse bloques raíz, macrobloques (H.264/Av C) 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 imagen puede configurarse para usar el mismo tamaño de bloque para todas las imágenes de una secuencia de video 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 el correspondiente bloques.
En realizaciones adicionales, el codificador de video 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 de imagen 203 también puede denominarse bloque de imagen actual o bloque de imagen a codificar.
Como la imagen 17, el bloque de imagen 203 es nuevamente, o puede ser, considerado como una matriz bidimensional o matriz de muestras con valores de intensidad (valores de muestra), aunque de menor dimensión que la imagen 17. En otras palabras, el bloque 203 puede comprender, por ejemplo, una matriz de muestra (por ejemplo, una matriz de luma en el caso de una imagen monocromática 17, o una matriz luma o croma en caso de una imagen de color) o tres matrices de muestra (por ejemplo, una matriz de luma y dos de croma en el caso de una imagen en color 17) o cualquier otro número y/o tipo de matrices dependiendo del formato de color aplicado. El número de muestras en dirección horizontal y vertical (o eje) del bloque 203 define el tamaño del bloque 203. Por consiguiente, un bloque puede ser, por ejemplo, una matriz MxN (columna M por fila N) de muestras, o una matriz MxN de los coeficientes de transformada.
Las realizaciones del codificador de video 20 como se muestra en la figura 2 puede estar configurado para codificar la imagen 17 bloque por bloque, por ejemplo, la codificación y predicción se realiza por bloque 203. Las realizaciones del codificador de video 20 como se muestra en la figura 2 pueden configurarse adicionalmente para dividir y/o codificar la imagen usando segmentos (también denominados segmentos de video), en donde una imagen puede dividirse o codificarse usando uno o más segmentos (por lo regular, no superpuestos), y cada segmento puede comprender uno o más bloques (por ejemplo, CTU). Las realizaciones del codificador de video 20 como se muestra en la figura 2 pueden configurarse además para dividir y/o codificar la imagen utilizando grupos de teselas (también denominados grupos de teselas de video) y/o teselas (también denominadas teselas de video), en donde una imagen puede dividirse o codificarse utilizando uno o más grupos de teselas (normalmente no superpuestos), y cada grupo de teselas puede comprender, por ejemplo, uno o más bloques (por ejemplo, CTU) o una o más teselas, en donde cada tesela, por ejemplo, puede ser de forma rectangular y puede comprender uno o más bloques (por ejemplo, CTU), por ejemplo, bloques completos o fraccionarios.
Cálculo Residual
La unidad de cálculo residual 204 puede estar configurada para calcular un bloque residual 205 (también conocido como residuo 205) basándose en el bloque de imagen 203 y un bloque de predicción 265 (más adelante se proporcionan más detalles sobre el bloque de predicción 265), por ejemplo restando valores de muestra del bloque de predicción 265 de los valores de muestra del bloque de imagen 203, muestra por muestra (píxel por píxel) para obtener el bloque residual 205 en el dominio de muestra.
Transformada
La unidad de procesamiento de transformada 206 puede estar configurada para aplicar una transformada, por ejemplo, una transformada de coseno discreta (DCT) o transformada de seno discreta (DST), en los valores de muestra del bloque residual 205 para obtener los coeficientes de transformada 207 en un dominio de transformada. Los coeficientes de transformada 207 también pueden denominarse coeficientes residuales de transformada y representan el bloque residual 205 en el dominio de transformada.
La unidad de procesamiento de transformada 206 puede configurarse para aplicar aproximaciones enteras de DCT/DST, tales como las transformadas especificadas para H.265/HEVC. En comparación con una transformada DCT ortogonal, estas aproximaciones de números enteros se escalan típicamente por un cierto 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 transformada. Los factores de escala se eligen típicamente en función de ciertas restricciones, como que los factores de escala sean una potencia de dos para las operaciones de desplazamiento, la profundidad de bits de los coeficientes de transformada, el compromiso entre la precisión y los costos de implementación, etc. Los factores de escala específicos se especifican, por ejemplo, para la inversa. transformar, por ejemplo, mediante la unidad de procesamiento de transformada inversa 212 (y la correspondiente transformada inversa, por ejemplo, mediante la unidad de procesamiento de transformada inversa 312 en el decodificador de video 30) y los factores de escala correspondientes para la transformada directa, por ejemplo, mediante la unidad de procesamiento de transformada 206, en un codificador 20 se puede especificar correspondientemente. Las realizaciones del codificador de video 20 (respectivamente unidad de procesamiento de transformada 206) puede configurarse para producir parámetros de transformada, por ejemplo, un tipo de transformada o transformadas, por ejemplo, directamente o codificado o comprimido por medio de la unidad de codificación entrópica 270, de manera que, por ejemplo, el decodificador de video 30 puede recibir y usar los parámetros de transformada para la decodificación.
Cuantificación
La unidad de cuantificación 208 puede estar configurada para cuantificar los coeficientes de transformada 207 para obtener coeficientes cuantificados 209, por ejemplo, aplicando cuantificación escalar o cuantificación vectorial. Los coeficientes descuantificados 209 también pueden denominarse coeficientes de transformada cuantificados 209 o coeficientes residuales cuantificados 209.
El proceso de cuantificación puede reducir la profundidad de bits asociada con algunos o todos los coeficientes de transformada 207. Por ejemplo, un coeficiente de transformada de n bits puede redondearse a un coeficiente de transformada de m bits durante la cuantificación, donde n es mayor que m. El grado de cuantificación se puede modificar ajustando un parámetro de cuantificación (QP). Por ejemplo, para la cuantificación escalar, se pueden aplicar diferentes escalas para lograr una cuantificación más fina o más gruesa. Los tamaños de paso de cuantificación más pequeños corresponden a una cuantificación más fina, mientras que los tamaños de paso de cuantificación más grandes corresponden a una cuantificación más gruesa. El tamaño del paso 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 para un conjunto predefinido de tamaños de paso de cuantificación aplicables. Por ejemplo, los parámetros de cuantificación pequeños pueden corresponder a una cuantificación fina (tamaños de paso de cuantificación pequeños) y los parámetros de cuantificación grandes pueden corresponder a una cuantificación gruesa (tamaños de paso de cuantificación grandes) o viceversa. La cuantificación puede incluir la división por un tamaño de paso de cuantificación y una descuantificación correspondiente y/o inversa, por ejemplo, por unidad de cuantificación inversa 210, puede incluir la multiplicación por el tamaño del paso de cuantificación. Las realizaciones de acuerdo con algunas normas, por ejemplo, HEVC, puede configurarse para usar un parámetro de cuantificación para determinar el tamaño del paso de cuantificación. Generalmente, el tamaño del paso de cuantificación puede calcularse basándose en un parámetro de cuantificación usando una aproximación de punto fijo de una ecuación que incluye la división. Se pueden introducir factores de escala adicionales para la cuantificación y descuantificación para restaurar la norma del bloque residual, que podría modificarse debido a la escala utilizada en la aproximación de punto fijo de la ecuación para el tamaño del paso de cuantificación y el parámetro de cuantificación. En una implementación de ejemplo, el escalado de la transformada inversa y la descuantificación podrían combinarse. Alternativamente, pueden usarse tablas de cuantificación personalizadas y señalizarse desde un codificador a un decodificador, por ejemplo, en un flujo de bits. La cuantificación es una operación con pérdidas, en la que la pérdida aumenta al aumentar los tamaños de las etapas de cuantificación. Las realizaciones del codificador de video 20 (respectivamente unidad de cuantificación 208) puede configurarse para producir parámetros de cuantificación (QP), por ejemplo, directamente o codificado por medio de la unidad de codificación entrópica 270, de manera que, por ejemplo, el decodificador de video 30 puede recibir y aplicar los parámetros de cuantificación para la decodificación. Cuantificación inversa
La unidad de cuantificación inversa 210 está configurada para aplicar la cuantificación inversa de la unidad de cuantificación 208 en los coeficientes cuantificados para obtener coeficientes descuantificados 211, por ejemplo, aplicando la inversa del esquema de cuantificación aplicado por la unidad de cuantificación 208 basándose en o usando el mismo tamaño de paso de cuantificación que la unidad de cuantificación 208. Los coeficientes descuantificados 211 también pueden denominarse coeficientes residuales descuantificados 211 y corresponden, aunque normalmente no son idénticos a los coeficientes de transformada debido a la pérdida por cuantificación, a los coeficientes de transformada 207.
Transformada inversa
La unidad de procesamiento de transformada inversa 212 está configurada para aplicar la transformada inversa de la transformada aplicada por la unidad de procesamiento de transformada 206, por ejemplo, una transformada de coseno discreta inversa (DCT) o una transformada discreta inversa del seno (DST) u otras transformadas inversas, para obtener un bloque residual reconstruido 213 (o coeficientes de descuantificación correspondientes 213) en el dominio de muestra. El bloque residual reconstruido 213 también puede denominarse bloque transformado 213.
Reconstrucción
La unidad de reconstrucción 214 (por ejemplo, agregador o sumador 214) está configurada para agregar el bloque de transformada 213 (es decir, el bloque residual reconstruido 213) al bloque de predicción 265 para obtener un bloque reconstruido 215 en el dominio de la muestra, por ejemplo, sumando, muestra por muestra, los valores de muestra del bloque residual reconstruido 213 y los valores de muestra del bloque de predicción 265.
Filtrado
La unidad de filtro de bucle 220 (o abreviado “filtro de bucle” 220) está configurada para filtrar el bloque 215 reconstruido para obtener un bloque filtrado 221, o en general, para filtrar las muestras reconstruidas filtradas para obtener muestras filtradas. La unidad de filtro de bucle, por ejemplo, se configura para suavizar las transiciones de píxel, o mejorar de otra manera la calidad de video. La unidad de filtro de bucle 220 puede comprender uno o más filtros de bucle tales como un filtro de desbloqueo, un filtro de compensación adaptativa de muestra (SAO) o uno o más filtros, por ejemplo, un filtro bilateral, un filtro de bucle adaptativo (ALF), un refinado, un filtro de suavizado o filtros colaborativos, o cualquier combinación de los anteriores. Aunque la unidad de filtro de bucle 220 se muestra en la figura 2 como un filtro en bucle, en otras configuraciones, la unidad de filtro de bucle 220 puede implementarse como un filtro de bucle posterior. El bloque filtrado 221 también puede denominarse bloque reconstruido filtrado 221.
Las realizaciones del codificador de video 20 (respectivamente la unidad de filtro de bucle 220) pueden configurarse para emitir parámetros de filtro de bucle (tales como información de desfase adaptativo de muestra), por ejemplo, directamente o codificados mediante la unidad de codificación entrópica 270, de modo que, por ejemplo, un decodificador 30 pueda recibir y aplicar los mismos parámetros de filtro de bucle o filtros de bucle respectivos para decodificar.
Búfer de imagen decodificada
El búfer 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 codificación de datos de vídeo mediante el codificador de video 20. El DPB 230 puede estar formado por cualquiera de una variedad de dispositivos de memoria, como la memoria dinámica de acceso aleatorio (DRAM), incluida la DRAM síncrona (SDRAM), la RAM magneto resistiva (MRAM), la RAM resistiva (RRAM) u otros tipos de dispositivos de memoria. El búfer de imagen decodificada (DPB) 230 puede configurarse para almacenar uno o más bloques filtrados 221. El búfer 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. El búfer 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 reconstruido 215 no es filtrado por la unidad de filtro de bucle 220, o cualquier otra versión procesada adicional de los bloques o muestras reconstruidos.
Selección de modo (partición y predicción)
La unidad de selección de modo 260 comprende la unidad de división 262, la unidad de interpredicción 244 y la unidad de intrapredicción 254, y está configurada para recibir u obtener datos de imágenes originales, por ejemplo, un bloque original 203 (bloque actual 203 de la imagen actual 17), 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 decodificadas previamente, por ejemplo, desde el búfer de imagen decodificada 230 u otros búferes (por ejemplo, búfer de línea, no mostrado). Los datos de la imagen reconstruida se utilizan como datos de imagen de referencia para la predicción, por ejemplo, interpredicción o intrapredicción, para obtener un bloque de predicción 265 o predictor 265.
La unidad de selección de modo 260 puede configurarse para determinar o seleccionar una partición para un modo de predicción de bloque actual (que incluye sin particiones) y un modo de predicción (por ejemplo, un modo de intra o interpredicción) y generar un bloque de predicción 265 correspondiente, que se utiliza para el cálculo del bloque residual 205 y para la reconstrucción del bloque reconstruido 215.
Las realizaciones de la unidad de selección de modo 260 pueden configurarse para seleccionar la partición y el modo de predicción (por ejemplo, de los que admite o disponibles para la unidad de selección de modo 260), que proporciona la mejor coincidencia o, en otras palabras, el residuo mínimo (residuo mínimo significa mejor compresión para transmisión o almacenamiento), o una sobrecarga de señalización mínima (la sobrecarga de señalización mínima significa una mejor compresión para la transmisión o el almacenamiento), o que considera o equilibra ambos. La unidad de selección de modo 260 puede configurarse para determinar el modo de predicción basado en la optimización de distorsión de velocidad (RDO), es decir, seleccionar el modo de predicción que proporciona una distorsión de velocidad mínima. Términos como "mejor", "mínimo", "óptimo", etc. en este contexto no se refieren necesariamente a un "mejor", "mínimo", "óptimo" general, etc., sino que también pueden referirse al cumplimiento de un criterio de rescisión o selección como un valor que excede o cae por debajo de un umbral u otras restricciones que conducen potencialmente a una “selección subóptima” pero reducen la complejidad y el tiempo de procesamiento.
En otras palabras, la unidad de partición 262 puede configurarse para dividir el bloque 203 en particiones o subbloques de bloques más pequeños (que forman de nuevo bloques), por ejemplo, utilizando iterativamente partición de árbol cuaternario (QT), partición binaria (BT) o la partición de árbol ternario (TT) o cualquier combinación de las mismas, y realizar, por ejemplo la predicción para cada una de las particiones de bloque o subbloques, en la que la selección de modo comprende la selección de la estructura de árbol del bloque particionado 203 y los modos de predicción se aplican a cada una de las particiones de bloque o subbloques.
Se explicará con más detalle en lo que sigue el procesamiento de partición (por ejemplo, por la unidad de partición 260) y de predicción (mediante la unidad de interpredicción 244 y la unidad de intrapredicción 254) realizado por un codificador de video 20 de ejemplo.
Partición
La unidad de partición 262 puede particionar (o dividir) un bloque actual 203 en particiones más pequeñas, por ejemplo, bloques más pequeños o de tamaño rectangular. Estos bloques más pequeños (que también pueden denominarse subbloques) pueden dividirse más en particiones aún más pequeñas. Esto también se refiere a la partición de árboles o la partición jerárquica de árboles, en donde un bloque raíz, por ejemplo en el nivel de árbol raíz 0 (nivel de jerarquía 0, profundidad 0), puede dividirse de forma recursiva, por ejemplo particionado en dos o más bloques de un siguiente nivel de árbol más bajo, por ejemplo nodos en el nivel de árbol 1 (nivel de jerarquía 1, profundidad 1), en los que estos bloques pueden volver a dividirse en dos o más bloques de un nivel inferior siguiente, por ejemplo nivel de árbol 2 (nivel de jerarquía 2, profundidad 2), etc., hasta que finalice la partición, por ejemplo porque se cumple un criterio de terminación, por ejemplo se alcanza una profundidad máxima de árbol o un tamaño mínimo de bloque. Los bloques que no se dividen más también se denominan bloques de hoja o nodos de hoja del árbol. Un árbol que utiliza la partición en dos particiones se denomina árbol binario (BT), un árbol que utiliza la partición en tres particiones se denomina árbol ternario (TT) y un árbol que utiliza la partición en cuatro particiones se denomina árbol cuaternario (QT). Como se mencionó anteriormente, el término "bloque" como se usa en este documento puede ser una parte, en particular una parte cuadrada o rectangular, de una imagen. Haciendo referencia, por ejemplo, a h Ev C 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 transformada (TU) y/o bloques correspondientes, por ejemplo, un bloque de árbol de codificación (CTB), un bloque de codificación (CB), un bloque de transformada (TB) o un bloque de predicción (PB).
Por ejemplo, una unidad de árbol de codificación (CTU) puede ser o comprender un CTB de muestras de luma, dos CTB correspondientes de muestras de croma de una imagen que tiene tres matrices de muestras, o un CTB de muestras de una imagen monocromática o una imagen que está codificada utilizando tres planos de color separados y estructuras de sintaxis utilizadas para codificar las muestras. Por consiguiente, un bloque de árbol de codificación (CTB) puede ser un bloque NxN de muestras para algún valor de N, de manera que la división de un componente en CTB es una partición. Una unidad de árbol de codificación (CU) puede ser o comprender un bloque de codificación de muestras de luma, dos bloques de codificación correspondientes de muestras de croma de una imagen que tiene tres matrices de muestras, o un bloque de codificación de muestras de una imagen monocromática o una imagen que está codificada utilizando tres planos de color separados y estructuras de sintaxis utilizadas para codificar las muestras. Por consiguiente, un bloque de codificación (CB) puede ser un bloque MxN de muestras para algunos valores de M y de N, de manera que la división de un cTb en bloques de codificación es una partición.
En unas realizaciones, por ejemplo, de acuerdo con HEVC, una unidad de árbol de codificación (CTU) puede dividirse en CU utilizando una estructura de cuatro árboles denominada árbol de codificación. La decisión de codificar un área de imagen usando predicción entre imágenes (temporal) o intraimagen (espacial) se toma en el nivel de CU. Cada CU se puede dividir en una, dos o cuatro PU de acuerdo con 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 por PU. Después de obtener el bloque residual aplicando el proceso de predicción basado en el tipo de división de PU, una CU puede dividirse en unidades de transformada (TU) de acuerdo con otra estructura de cuatro árboles similar al árbol de codificación de la CU.
En unas realizaciones, por ejemplo, de acuerdo con el último estándar de codificación de video actualmente en desarrollo, que se denomina Codificación de Video Versátil (VVC), una partición de árbol cuaternario y binario (QTBT) combinado se utiliza, por ejemplo, para la partición de 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 en una estructura de cuatro árboles. Los nodos de hoja de cuatro árboles se dividen aún más mediante una estructura de árbol binario o ternario (o triple). Los nodos de hoja del árbol de partición se denominan unidades de codificación (CU) y esa segmentación se utiliza para la predicción y el procesamiento de transformada sin más particiones. Esto significa que CU, PU y TU tienen el mismo tamaño de bloque en la estructura del bloque de codificación QTBT. En paralelo, la partición múltiple, por ejemplo, la partición de árbol triple puede usarse junto con la estructura de bloques QTBT.
En un ejemplo, la unidad de selección de modo 260 del codificador de video 20 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 de video 20 está configurado para determinar o seleccionar el mejor o un modo de predicción ó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 interpredicción.
Intrapredicción
El conjunto de modos de intrapredicción puede comprender 35 modos de intrapredicción diferentes, por ejemplo, modos no direccionales como modo DC (o medio) y modo plano, o modos direccionales, por ejemplo, como se define en HEVC, o puede comprender 67 modos de intrapredicción diferentes, por ejemplo modos no direccionales como modo De (o medio) y modo plano, o modos direccionales, por ejemplo, como se define para VVC.
La unidad de intrapredicción 254 está configurada para usar muestras reconstruidas de bloques vecinos de la misma imagen actual para generar un bloque de intrapredicción 265 de acuerdo con un modo de intrapredicción del conjunto de modos de intrapredicción.
La unidad de intrapredicción 254 (o en general la unidad de selección de modo 260) está configurada además para enviar parámetros de intrapredicción (o en general información indicativa del modo de intrapredicción seleccionado para el bloque) a la unidad de codificación entrópica 270 en forma elementos de sintaxis 266 para su inclusión en los datos de imagen codificados 21, de modo que, por ejemplo, el decodificador de vídeo 30 pueda recibir y utilizar los parámetros de predicción para la decodificación.
Interpredicción
El conjunto de (o posibles) modos de interpredicción depende de las imágenes de referencia disponibles (es decir, imágenes previas al menos parcialmente decodificadas, por ejemplo, almacenadas en DBP 230) y de otros parámetros de interpredicción, por ejemplo, si se utiliza la imagen de referencia completa o solo una parte, por ejemplo un área de la ventana de búsqueda alrededor del área del bloque actual, de la imagen de referencia para buscar un bloque de referencia que coincida mejor y/o, por ejemplo, si se aplica la interpolación de píxeles, por ejemplo interpolación de medio/semi-pel y/o cuarto de pel, o no.
Además de los modos de predicción anteriores, se puede aplicar el modo de salto y/o el modo directo. La unidad de interpredicción 244 puede incluir una unidad de estimación de movimiento (ME) y una unidad de compensación de movimiento (MC) (ambas no mostradas en la figura 2). La unidad de estimación de movimiento puede estar configurada para recibir u obtener el bloque de imagen 203 (bloque de imagen actual 203 de la imagen actual 17) y una imagen decodificada 231, 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 previamente decodificadas 231, para la estimación del movimiento. Por ejemplo, una secuencia de video puede comprender la imagen actual y las imágenes previamente decodificadas 231, o, en otras palabras, la imagen actual y las imágenes previamente decodificadas 231 pueden ser parte de, o formar una secuencia de imágenes que forman una secuencia de video.
El codificador 20 puede, por ejemplo, estar configurado para seleccionar un bloque de referencia de una pluralidad de bloques de referencia de la misma 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 realizar una interpredicción basándose en o usando el parámetro de interpredicción para obtener un bloque de interpredicción 265. La compensación de movimiento, realizada por la unidad de compensación de movimiento, puede implicar buscar o generar el bloque de predicción basado en el vector de movimiento/bloque determinado por la estimación de movimiento, posiblemente realizando interpolaciones con precisión de subpíxeles. 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 ubicar el bloque de predicción al que apunta el vector de movimiento en una de las listas de imágenes de referencia.
La unidad de compensación de movimiento puede generar además un elemento de sintaxis asociado con bloques y un segmento de video para su uso por el decodificador de video 30 al decodificar los bloques de imagen del segmento de video. Además, o como una alternativa a los segmentos y elementos de sintaxis respectivos, pueden generarse o utilizarse grupos de teselas y/o teselas y elementos de sintaxis respectivos. Codificación entrópica
La unidad de codificación entrópica 270 está configurada para aplicar, por ejemplo, un algoritmo o esquema de codificación entrópica (por ejemplo, un esquema de codificación de longitud variable (VLC), un esquema de VLC adaptable al contexto (CAVLC), una binarización, un esquema de codificación aritmética, una codificación aritmética binaria adaptable al contexto (CABAC), codificación aritmética binaria adaptativa al contexto basada en sintaxis (SBAC), codificación entrópica de partición de intervalo de probabilidad (PIPE) u otra metodología o técnica de codificación entrópica) o derivación (sin compresión) en los coeficientes cuantificados 209, parámetros de interpredicción, parámetro de intrapredicción, parámetros de filtro de bucle, y/o elementos de sintaxis para obtener datos de imagen codificados 21 que pueden ser emitidos por la salida 272, por ejemplo en forma de un flujo de bits codificado 21, de manera que, por ejemplo, el decodificador de video 30 puede recibir y utilizar los parámetros para decodificación. El flujo de bits codificado 21 puede transmitirse al decodificador de vídeo 30 o almacenarse en una memoria para su posterior transmisión o recuperación mediante el decodificador de vídeo 30. Pueden usarse otras variaciones estructurales del codificador de video 20 para codificar el flujo de video. Por ejemplo, un codificador 20 no basado en transformada puede cuantificar la señal residual directamente sin la unidad de procesamiento de transformada 206 para ciertos bloques o cuadros. En otra implementación, un codificador 20 puede tener la unidad de cuantificación 208 y la unidad de cuantificación inversa 210 combinadas en una sola unidad.
Decodificador y Método de decodificación
La figura 3, muestra un decodificador de video de ejemplo 30 que está configurado para implementar las técnicas de esta presente solicitud. El decodificador de video 30 está configurado para recibir datos de imagen codificados 21 (por ejemplo, flujo de bits codificado 21), por ejemplo, codificado por el codificador 20, para obtener una imagen decodificada 331. Los datos o flujos de bits de imagen codificada o comprenden información para decodificar los datos de imágenes codificadas, por ejemplo, datos que representan bloques de imágenes de un segmento de video codificado (y/o grupos de teselas o teselas) y elementos de sintaxis asociados.
En el ejemplo de la figura 3, el decodificador 30 comprende una unidad de decodificación entrópica 304, una unidad de cuantificación inversa 310, una unidad de procesamiento de transformada inversa 312, una unidad de reconstrucción 314 (por ejemplo, un sumador 314), un filtro de bucle 320, un búfer de imagen decodificada (DBP) 330, una unidad de aplicación de modo 360, una unidad de interpredicción 344 y una unidad de intrapredicción 354. La unidad de interpredicción 344 puede ser o incluir una unidad de compensación de movimiento. El decodificador de video 30 puede, en algunos ejemplos, realizar una pasada de decodificación generalmente recíproca a la pasada de codificación descrita con respecto al codificador de video 100 de la figura 2.
Como se explica con respecto al codificador 20, se dice asimismo que la unidad de cuantificación inversa 210, la unidad de procesamiento de transformada inversa 212, la unidad de reconstrucción 214, el filtro de bucle 220, el búfer de imagen codificada (DPB) 230, la unidad de interpredicción 344 y la unidad de intrapredicción 354 forman el “decodificador incorporado” del codificador de video 20. Por consiguiente, la unidad de cuantificación inversa 310 puede ser idéntica en función a la unidad de cuantificación inversa 110, la unidad de procesamiento de transformada inversa 312 puede ser idéntica en función a la unidad de procesamiento de transformada inversa 212, la unidad de reconstrucción 314 puede ser idéntica en función a la unidad de reconstrucción 214, el filtro de bucle 320 puede ser idéntico en función al filtro de bucle 220, y el búfer de imagen decodificada 330 puede ser idéntico en función al búfer de imagen decodificada 230. Por lo tanto, las explicaciones proporcionadas para las respectivas unidades y funciones del codificador de video 20 se aplican correspondientemente a las respectivas unidades y funciones del decodificador de video 30.
Decodificación entrópica
La unidad de decodificación entrópica 304 está configurada para analizar el flujo de bits 21 (o en general datos de imagen codificados 21) y realizar, por ejemplo, decodificación entrópica a los datos de imagen codificados 21 para obtener, por ejemplo, coeficientes cuantificados 309 y/o parámetros de codificación decodificados (no se muestran en la figura 3), por ejemplo, cualquiera o todos los parámetros de interpredicción (por ejemplo, índice de imagen de referencia y vector de movimiento), parámetro de intrapredicción (por ejemplo, índice o modo de intrapredicción), parámetros de transformada, parámetros de cuantificación, parámetros de filtro de bucle y/u otros elementos de sintaxis. La unidad de decodificación entrópica 304 puede configurarse para aplicar los algoritmos o esquemas de decodificación correspondientes a los esquemas de codificación descritos con respecto a la unidad de codificación entrópica 270 del codificador 20. La unidad de decodificación entrópica 304 puede configurarse además para proporcionar parámetros de interpredicción, parámetro de intrapredicción y/u otros elementos de sintaxis a la unidad de aplicación de modo 360 y otros parámetros a otras unidades del decodificador 30. El decodificador de video 30 puede recibir los elementos de sintaxis en el nivel de segmento de video y/o en el nivel de bloque de video. Además, o como una alternativa a los segmentos y elementos de sintaxis respectivo, pueden recibirse y/o utilizarse teselas y/o grupos de teselas grupos y elementos de sintaxis respectivos.
Cuantificación inversa
La unidad de cuantificación inversa 310 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 de imagen codificados 21 (por ejemplo, mediante análisis sintáctico y/o decodificación, por ejemplo, mediante la unidad de decodificación entrópica 304) y aplicar en base a los parámetros de cuantificación una cuantificación inversa sobre los coeficientes cuantificados decodificados 309 para obtener coeficientes descuantificados 311, que también pueden denominarse coeficientes de transformada 311. El proceso de cuantificación inversa puede incluir el uso de un parámetro de cuantificación determinado por el codificador de vídeo 20 para cada bloque de vídeo en el segmento de vídeo (o tesela o grupo de teselas) para determinar un grado de cuantificación e, igualmente, un grado de cuantificación inversa que debería aplicarse.
Transformada inversa
La unidad de procesamiento de transformada inversa 312 puede configurarse para recibir coeficientes descuantificados 311, también denominados coeficientes de transformada 311, y para aplicar una transformada a los coeficientes descuantificados 311 para obtener bloques residuales reconstruidos 213 en el dominio de muestra. Los bloques residuales reconstruidos 213 también pueden denominarse bloques transformados 313. La transformada puede ser una transformada inversa, por ejemplo, una DCT inversa, una DST inversa, una transformada de entero inverso o un proceso de transformada inversa conceptualmente similar. La unidad de procesamiento de transformada inversa 312 puede configurarse además para recibir parámetros de transformada o información correspondiente de los datos de imagen codificados 21 (por ejemplo, analizando y/o decodificando, por ejemplo, mediante la unidad de decodificación entrópica 304) para determinar la transformada que se aplicará a los coeficientes descuantificados. 311.
Reconstrucción
La unidad de reconstrucción 314 (por ejemplo, agregador o sumador 314) está configurada para agregar el bloque residual reconstruido 313, al bloque de predicción 365 para obtener un bloque reconstruido 315 en el dominio de la muestra, por ejemplo, mediante adición de los valores de muestra del bloque residual reconstruido 313 y los valores de muestra del bloque de predicción 365.
Filtrado
La unidad de filtro de bucle 320 (ya sea en el bucle de codificación o después del bucle de codificación) está configurada para filtrar el bloque 315 reconstruido para obtener un bloque 321 filtrado, por ejemplo, para suavizar las transiciones de píxeles o mejorar la calidad del video. La unidad de filtro de bucle 320 puede comprender uno o más filtros de bucle tales como un filtro de desbloqueo, un filtro de compensación adaptativa de muestra (SAO) o uno o más filtros, por ejemplo, un filtro bilateral, un filtro de bucle adaptativo (ALF), un refinado, un filtro de suavizado o filtros colaborativos, o cualquier combinación de los anteriores. Aunque la unidad de filtro de bucle 320 se muestra en la figura 3 como un filtro en bucle, en otras configuraciones, la unidad de filtro de bucle 320 puede implementarse como un filtro de bucle posterior. Búfer de imagen decodificada
Los bloques de vídeo decodificados 321 de una imagen se almacenan luego en la memoria intermedia de imágenes decodificadas 330, que almacena las imágenes decodificadas 331 como imágenes de referencia para la compensación de movimiento subsiguiente para otras imágenes y/o para la visualización de salida respectivamente.
El decodificador 30 está configurado para emitir la imagen decodificada 311, por ejemplo, a través de la salida 312, para presentación o visualización a un usuario.
Predicción
La unidad de interpredicción 344 puede ser idéntica a la unidad de interpredicción 244 (en particular a la unidad de compensación de movimiento) y la unidad de intrapredicción 354 puede ser idéntica a la unidad de interpredicción 254 en función, y realiza decisiones de división o partición y predicciones sobre los parámetros de partición y/o predicción o la información respectiva recibida de los datos de imagen codificados 21 (por ejemplo, mediante análisis sintáctico y/o decodificación, por ejemplo, mediante la unidad de decodificación entrópica 304). La unidad de aplicación de modo 360 puede configurarse para realizar la predicción (intra o interpredicción) por bloque basándose en imágenes reconstruidas, bloques o muestras respectivas (filtradas o sin filtrar) para obtener el bloque de predicción 365.
Cuando el segmento de video se codifica como un segmento intracodificado (I), la unidad de intrapredicción 354 de la unidad de aplicación de modo 360 está configurada para generar el bloque de predicción 365 para un bloque de imagen del segmento de video actual basado en un modo de intrapredicción señalizado 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 de interpredicción 344 (por ejemplo, la unidad de compensación de movimiento) de la unidad de aplicación de modo 360 se configura para producir bloques de predicción 365 para un bloque de vídeo del fragmento de vídeo actual basado en los vectores de movimiento y otros elementos de sintaxis recibidos de la unidad de decodificación entrópica 304. Para la interpredicción, los bloques de predicción pueden producirse a partir de una de las imágenes de referencia dentro de una de las listas de imágenes de referencia. El decodificador de vídeo 30 puede construir las listas de cuadros de referencia, Lista 0 y Lista 1, utilizando técnicas de construcción por defecto basadas en imágenes de referencia almacenadas en DPB 330. Lo mismo o similar puede aplicarse para o por realizaciones utilizando grupos de teselas (por ejemplo, grupos de teselas de video) y/o teselas (por ejemplo, teselas de video) además o alternativamente a segmentos (por ejemplo, segmentos de video), por ejemplo, un video puede codificarse utilizando grupos de teselas I, P o B y/o teselas.
La unidad de aplicación de modo 360 está configurada para determinar la información de predicción para un bloque de video del segmento de video actual analizando los vectores de movimiento o 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 video actual que se está decodificando. Por ejemplo, la unidad de aplicación de modo 360 usa algunos de los elementos de sintaxis recibidos para determinar un modo de predicción (por ejemplo, intra o interpredicción) usado para codificar los bloques de video del segmento de video, un tipo de segmento entre predicciones (por ejemplo, segmento B, P segmento, 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 video intercodificado del segmento, estado de interpredicción para cada bloque de video intercodificado del segmento, y otra información para decodificar los bloques de video en el segmento de video actual. Lo mismo o similar puede aplicarse para o por realizaciones utilizando grupos de teselas (por ejemplo, grupos de teselas de video) y/o teselas (por ejemplo, teselas de video) además o alternativamente a segmentos (por ejemplo, segmentos de video), por ejemplo, un video puede codificarse utilizando grupos de teselas I, P o B y/o teselas.
Las realizaciones del decodificador de video 30 como se muestra en la figura 3 pueden configurarse para dividir y/o decodificar la imagen usando segmentos (también denominados segmentos de video), en donde una imagen puede dividirse o decodificarse usando uno o más segmentos (por lo regular, no superpuestos), y cada segmento puede comprender uno o más bloques (por ejemplo, CTU).
Las realizaciones del decodificador de video 30 como se muestra en la figura 3 pueden configurarse para dividir y/o decodificar la imagen utilizando grupos de teselas (también denominados grupos de teselas de video) y/o teselas (también denominados teselas de video), en donde una imagen puede dividirse o decodificarse utilizando uno o más grupos de teselas (normalmente no superpuestos), y cada grupo de teselas puede comprender, por ejemplo, uno o más bloques (por ejemplo, CTU) o una o más teselas, en donde cada tesela, por ejemplo, puede ser de forma rectangular y puede comprender uno o más bloques (por ejemplo, CTU), por ejemplo, bloques completos o fraccionarios.
Pueden usarse otras variaciones del decodificador de video 30 para decodificar los datos de imagen codificados 21. Por ejemplo, el decodificador 30 puede producir el flujo de vídeo de salida sin la unidad de filtrado de bucle 320. Por ejemplo, un decodificador 30 no basado en transformada puede cuantificar inversamente la señal residual directamente sin la unidad 312 de procesamiento de transformada inversa para ciertos bloques o fotogramas. En otra implementación, el decodificador de video 30 puede tener la unidad de cuantificación inversa 310 y la unidad de procesamiento de transformada inversa 312 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, de la derivación del vector de movimiento o del 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 operaciones adicionales a los vectores de movimiento derivados del bloque actual (incluidos, entre otros, los vectores de movimiento puntuales del modo afín, los vectores de movimiento del subbloque en los modos afín, plano, ATMVP, vectores de movimiento temporal y similares). Por ejemplo, el valor del vector de movimiento está restringido a un rango predefinido de acuerdo con su bit de representación. Si el bit que representa el vector de movimiento es bitDepth, entonces el rango es -2A(bitDepth-1)~2A(bitDepth-1)-1, donde “A” significa exponenciación. Por ejemplo, si bitDepth se ajusta a 16, el rango es -32768—32767; si bitDepth se ajusta a 18, el rango es -131072—131071. Por ejemplo, el valor del vector de movimiento derivado (por ejemplo, los MV de cuatro subbloques 4x4 dentro de un bloque 8x8) está restringido de modo que la diferencia máxima entre las partes enteras de los cuatro MV del subbloque 4x4 no supere los N píxeles, como no más de 1 píxel. Aquí se dan a conocer dos métodos para restringir el vector de movimiento de acuerdo con el bitDepth.
Método 1: eliminar el MSB (bit más significativo) de desbordamiento mediante operaciones de flujo
ux= ( mvx+2t>i,DePtt1 j 2büDepth
(1 )
mvx = ( ux >=2bitDep1t1"1) ? (ux (2 )
u y = ( m v y 2 t>ilDePth } %■ 2 bilDePth(3 )
mvy = ( uy >=2bitDeP,h-1 ) ? (uy_ ^bitDepth ) ; u y(4 )
donde mvx es un componente horizontal de un vector de movimiento de un bloque de imagen o un subbloque, mvy es un 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 que el resultado aplicando la fórmula (1) y (2).
ux= ( mvpx mvdx 2t>i,Depth) % 2 bi,Depth (5)
mvx = ( ux >= 2bitDepm'1 ) ? (ux_ 2b¡tDe|XI"i ) ' (JX(6)
uy= ( mvpy mvdy 2t}i,DePthJ0/Q2bilDepth(2)
mvy = ( uy >= 2bitDepm-1 ) ? (uy_ 2bit0e|3th ) ; uy(S)
Las operaciones se pueden aplicar 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
vx = Clip3(-2brtDepth'1, 2brtDep,h’1 -1, vx)
vy = Clip3(-2bitDeplh_1, 2bilDep,h“1 -1 vy)
donde vx es un componente horizontal de un vector de movimiento de un bloque o subbloque de imagen, vy es un componente vertical de un vector de movimiento de un bloque o subbloque de imagen; 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:
z < x
z > y
de otra manera
La figura 4 es un diagrama esquemático de un dispositivo de codificación de video 400 de acuerdo con una realización de la descripción. El dispositivo de codificación de video 400 es adecuado para implementar las realizaciones descritas como se describe en este documento. En una realización, el dispositivo de codificación de video 400 puede ser un decodificador tal como el decodificador de video 30 de la figura 1A o un codificador tal como el codificador de vídeo 20 de la figura 1A.
El dispositivo de codificación de vídeo 400 comprende puertos de ingreso 410 (o puertos de entrada 410) 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 de egreso 450 (o puertos de salida 450) para transmitir los datos; y una memoria 460 para almacenar los datos. El dispositivo de codificación de video 400 también puede comprender componentes óptico a eléctrico (OE) y componentes eléctrico a óptico (EO) acoplados a los puertos de entrada 410, las unidades receptoras 420, las unidades transmisoras 440 y los puertos de salida 450, para la salida o entrada de señales ópticas o eléctricas.
El procesador 430 se implementa mediante hardware y software. El procesador 430 puede implementarse como uno o más chips de CPU, núcleos (por ejemplo, como un procesador de múltiples núcleos), FPGA, ASIC y DSP. El procesador 430 está en comunicación con los puertos de entrada 410, las unidades receptoras 420, las unidades transmisoras 440, los puertos de salida 450 y la memoria 460. El procesador 430 comprende un módulo de codificación 470. El módulo de codificación 470 implementa las realizaciones descritas anteriormente. Por ejemplo, el módulo de codificación 470 implementa, procesa, prepara o proporciona las diversas operaciones de codificación. Por tanto, la inclusión del módulo de codificación 470 proporciona una mejora sustancial a la funcionalidad del dispositivo de codificación de vídeo 400 y efectúa una transformación del dispositivo de codificación de vídeo 400 a un estado diferente. Alternativamente, el módulo de codificación 470 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 la 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), memoria de acceso aleatorio (RAM), memoria ternaria direccionable por contenido (TCAM) y/o memoria estática de acceso aleatorio (SRAM).
La figura 5 es un diagrama de bloques simplificado de un aparato 500 que puede usarse como uno o ambos del dispositivo de origen 12 y el dispositivo de destino 14 de la figura 1 de acuerdo con una realización a modo de ejemplo.
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 lo sucesivo. 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 sólo lectura (ROM) o un dispositivo de memoria de acceso aleatorio (RAM) en una implementación. Puede utilizarse como memoria 504 cualquier otro dispositivo de almacenamiento de un tipo apropiado. La memoria 504 puede incluir código y datos 506 a los que se accede mediante el procesador 502 a través de un bus 512. La memoria 504 puede incluir además un sistema operativo 508 y programas de aplicación 510, incluyendo los programas de aplicación 510 al menos un programa que permite al procesador 502 realizar los métodos descritos aquí. Por ejemplo, los programas de aplicación 510 pueden incluir aplicaciones 1 a N, que además incluyen una aplicación de codificación de video que realiza los métodos descritos aquí.
El aparato 500 puede incluir además uno o más dispositivos de salida, tales como una pantalla 518. La pantalla 518 puede ser, en un ejemplo, una pantalla sensible al tacto que combina una pantalla con un elemento sensible al tacto que puede funcionar para detectar entradas táctiles. La pantalla 518 puede acoplarse al procesador 502 mediante el bus 512.
Aunque se muestra aquí como un solo bus, el bus 512 del aparato 500 puede estar compuesto por múltiples buses. Además, el almacenamiento secundario 514 se puede acoplar directamente a los otros componentes del aparato 500 o puede ser accesible 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 tanto, el aparato 500 puede implementarse en una amplia variedad de configuraciones.
En la 14a reunión de JVET celebrada en Ginebra, la contribución de JVET-N0217: se adopta la intrapredicción ponderada lineal afín (ALWIP).
Se introducen tres nuevos conjuntos de modos intra en ALWIP. Son:
• 35 modos para bloques 4x4.
• 19 modos para bloques de 8x4, 4x8 y 8x8.
• 11 modos para otros casos en los que la anchura y la altura son menores o iguales a 64 muestras.
Por consiguiente, una variable sobre el tipo de tamaño de bloque (sizeId) se define en ALWIP de la siguiente manera:
• Si el tamaño de un bloque es 4x4, el tipo de tamaño de bloque sizeId es 0.
• De lo contrario, si el tamaño de un bloque es de 8x4, 4x8 u 8x8, el tipo de tamaño de bloque sizeId es 1. • De lo contrario, si el tamaño de un bloque no se menciona anteriormente y la anchura y la altura del bloque son menores que 64, el tipo de tamaño de bloque sizeId es 2.
Estos modos generan la señal de intrapredicción luma a partir de una línea de muestras de referencia a la izquierda y por encima de un bloque actual mediante una multiplicación vectorial de matrices y la adición de un desplazamiento. Por esta razón, la intrapredicción ponderada lineal afín también se denomina intrapredicción basada en matrices (MIP). Para el siguiente texto, los términos MIP y ALWIP son intercambiables y ambos describen la herramienta de JVET-N0217.
Para predecir las muestras de un bloque rectangular de anchura W y altura H, la intrapredicción ponderada lineal afín (ALWIP) toma una línea de H muestras de contorno vecinas reconstruidas a la izquierda del bloque y una línea de W muestras de contorno vecinas reconstruidas por encima del bloque como entrada. Si las muestras reconstruidas no están disponibles, se generan como se hace en la intrapredicción convencional. La generación de la señal de predicción se basa en las siguientes tres etapas:
1. De las muestras de contorno, se extraen mediante el promedio cuatro muestras en el caso de W = H = 4 y ocho muestras en todos los demás casos.
2. Se lleva a cabo una multiplicación vectorial de matrices, seguida de la adición de un desplazamiento, con las muestras promediadas como entrada. El resultado es una señal de predicción reducida en un conjunto de muestras submuestreado en el bloque original.
3. La señal de predicción en las posiciones restantes se genera a partir de la señal de predicción en el conjunto submuestreado por interpolación lineal que es una interpolación lineal de una sola etapa en cada dirección.
El proceso completo de promediado, multiplicación matriz vector e interpolación lineal se ilustra para diferentes formas en las figuras 6-9. Cabe señalar que las formas restantes se tratan como en uno de los casos representados.
La figura 6 ilustra el proceso para un bloque 4x4. Dado un bloque 4 x 4 , ALWIP toma dos promedios a lo largo de cada eje del límite. Las cuatro muestras de entrada resultantes entran en la multiplicación vectorial de matrices. Las matrices se toman del conjunto S0. Después de agregar un desplazamiento, esto produce las 16 muestras de predicción finales. La interpolación lineal no es necesaria para generar la señal de predicción. Por tanto, se realiza un total de (4 ■ 16)/(4 ■ 4) = 4 multiplicaciones por muestra.
La figura 7 ilustra el proceso para un bloque 8x8. Dado un bloque 8 x 8, ALWIP toma cuatro promedios a lo largo de cada eje del límite. Las ocho muestras de entrada resultantes entran en la multiplicación vectorial de matrices. Las matrices se toman del conjunto S1. Esto produce 16 muestras en las posiciones impares del bloque de predicción. Por lo tanto, se realizan un total de (8 ■ 16)/(8 ■ 8) = 2 multiplicaciones por muestra. Después de agregar un desplazamiento, estas muestras se interpolan verticalmente utilizando el límite superior reducido. La interpolación horizontal sigue utilizando el límite izquierdo original. Por lo tanto, se requiere un total de 2 multiplicaciones por muestra para calcular la predicción ALWIP.
La figura 8 ilustra el proceso para un bloque 8x4. Dado un bloque 8 x 4, ALWIP toma cuatro promedios a lo largo del eje horizontal del límite y los cuatro valores de límite originales en el límite izquierdo. Las ocho muestras de entrada resultantes entran en la multiplicación vectorial de matrices. Las matrices se toman del conjunto S1. Esto produce 16 muestras en las posiciones impares horizontal y cada vertical del bloque de predicción. Por lo tanto, se realizan un total de (8 ■ 16)/(8 ■ 4) = 4 multiplicaciones por muestra. Después de agregar un desplazamiento, estas muestras se interpolan horizontalmente utilizando el límite inferior original. Por lo tanto, se requiere un total de 4 multiplicaciones por muestra para calcular la predicción ALWIP.
El caso transpuesto se trata correspondientemente.
La figura 9 ilustra el proceso para un bloque 16x16. Dado un bloque 16 x 16, ALWIP toma cuatro promedios a lo largo de cada eje del límite. Las ocho muestras de entrada resultantes entran en la multiplicación vectorial de matrices. Las matrices se toman del conjunto S2. Esto produce 64 muestras en las posiciones impares del bloque de predicción. Por lo tanto, se realizan un total de (8 ■ 64)/(16 ■ 16) = 2 multiplicaciones por muestra. Después de agregar un desplazamiento, estas muestras se interpolan verticalmente utilizando ocho promedios del límite superior. La interpolación horizontal sigue utilizando el límite izquierdo original. Por lo tanto, se requieren totalmente dos multiplicaciones por muestra para calcular la predicción ALWIP.
Para formas más grandes, el procedimiento es esencialmente el mismo y es fácil comprobar que el número de multiplicaciones por muestra es inferior a cuatro.
Para los bloquesW* 8 conW> 8, solo es necesaria la interpolación horizontal, ya que las muestras se dan en las posiciones horizontales impares y en cada una de las posiciones verticales. En este caso, se realizan (8 ■ 64)/(W- 8) = 64/W multiplicaciones por muestra para calcular la predicción reducida. Para W > 16, el número de multiplicaciones adicionales por muestra requeridas para la interpolación lineal es menor que dos. Por tanto, el número total de multiplicaciones por muestra es menor o igual a cuatro.
Finalmente, para los bloquesW* 4 conW> 8, seaAkla matriz que surge al omitir cada fila que corresponda a una entrada impar a lo largo del eje horizontal del bloque muestreado. Por tanto, el tamaño de salida es 32 y, de nuevo, solo queda por realizar la interpolación horizontal. Para el cálculo de la predicción reducida, (se realizan (8 ■ 32)/(W- 4) =64/Wmultiplicaciones por muestra. ParaW= 16 no se requieren multiplicaciones adicionales, mientras que paraW> 16 se necesitan menos de 2 multiplicaciones por muestra para la interpolación lineal. Por tanto, el número total de multiplicaciones es menor o igual a cuatro.
Los casos transpuestos se tratan correspondientemente.
En la contribución de JVET-N0217, el enfoque que utiliza la lista del modo más probable (MPM) también se aplica para la codificación modo intra MIP. Hay dos listas de MPM que se utilizan para los bloques actuales: 1. Cuando el bloque actual usa el modo intra normal (es decir, no el modo intra MIP), se usa una lista de 6-MPM
2. Cuando el bloque actual usa el modo intra MIP, se usa una lista de 3-MPM
Las dos listas de MPM anteriores se crean en función de los modos de intrapredicción de sus bloques vecinos, por lo que pueden ocurrir los siguientes casos:
1. el bloque actual es normal intrapredicho, mientras que a uno o más de sus bloques vecinos se aplica intrapredicción MIP, o
2. al bloque actual se aplica intrapredicción MIP, mientras que a uno o más de sus bloques vecinos se aplica intrapredicción normal.
En dichas circunstancias, los modos de intrapredicción vecinos se derivan indirectamente utilizando tablas de búsqueda.
En un ejemplo, cuando el bloque actual es normal intrapredicho, mientras que su bloque anterior (A) como se muestra en la figura 13, se aplica con intrapredicción MIP,
Se utiliza la siguiente tabla de consulta 1. De acuerdo con los tipos de tamaño de bloque del bloque anterior y el modo de intrapredicción MIP de bloque anterior, se deriva un modo de intrapredicción normal. De manera similar, si el bloque Izquierdo (L) como se muestra en la figura 13 se aplica con intrapredicción MIP, de acuerdo con los tipos de tamaño de bloque del bloque izquierdo y el modo de intrapredicción MIP de bloque izquierdo, se deriva un modo de intrapredicción normal.
Tabla 1 - Especificación de mapeo entre la intrapredicción ponderada lineal afín y los modos de
intrapredicción
En un ejemplo, cuando el bloque actual se aplica con la intrapredicción MIP, y su bloque anterior (A) como se muestra en la figura 14 se predice utilizando el modo intra normal, se utiliza la siguiente tabla de consulta 2. De acuerdo con los tipos de tamaño de bloque del bloque anterior y el modo de intrapredicción normal de bloque anterior, se deriva un modo de intrapredicción MIP. De manera similar, si el bloque Izquierdo (L) como se muestra en la figura 14 se aplica con intrapredicción normal, de acuerdo con los tipos de tamaño de bloque del bloque izquierdo y el modo de intrapredicción normal de bloque izquierdo, se deriva un modo de intrapredicción MIP.
Tabla 2 - Especificación de mapeo entre los modos de intrapredicción e intrapredicción ponderada lineal afín
En JEM, la transformada secundaria se aplica entre la transformada primaria directa y la cuantificación (en el codificador) y entre la descuantificación y la transformada primaria inversa (en el lado del decodificador). Como se muestra en la figura 10, la transformada secundaria 4x4 (u 8x8) se realiza dependiendo el tamaño del bloque. Por ejemplo, la transformada secundaria 4x4 se aplica para bloques pequeños (es decir, min (anchura, altura) <8) y la transformada secundaria 8x8 se aplica para bloques más grandes (es decir, min (anchura, altura)> 4) por bloque 8x8.
La aplicación de una transformada no separable se describe a continuación utilizando la entrada como ejemplo. Para aplicar la transformada no separable, el bloque de entrada 4x4 X
se representa primero como un vector<X .>
La transformada no separable se calcula como donde indica el vector de coeficiente de transformada, y T es una matriz de transformada de 16x16. El vector de coeficiente de 16x1 se reorganiza posteriormente como un bloque 4x4 utilizando el orden de escaneo para ese bloque (horizontal, vertical o diagonal). Los coeficientes con índice más pequeño se colocarán con el índice de exploración más pequeño en el bloque de coeficientes 4x4. Hay un total de 35 conjuntos de transformadas y se utilizan 3 matrices de transformadas no separables (núcleos) por conjunto de transformadas. El mapeo del modo de intrapredicción al conjunto de transformada está predefinido. Para cada conjunto de transformada, el candidato de transformada secundaria no separable seleccionado se especifica además mediante el índice de transformada secundaria señalizado explícitamente. El índice se señaliza en un tren de bits una vez por CU Intra después de transformar los coeficientes.
En VVC 5.0 se adopta la transformada secundaria reducida (RST) con la propuesta JVET-N0193 como una nueva herramienta de codificación con las siguientes características.
La idea principal de una Transformada Reducida (RT) es mapear un vector N dimensional a un vector R dimensional en un espacio diferente, donde R/N (R < N) es el factor de reducción.
La matriz RT es una matriz R*N como sigue:
donde las R filas de la transformada son R bases del espacio N dimensional. La matriz de transformada inversa para RT es la transpuesta de su transformada directa. La RT directa e inversa se representan en la figura 11.
Se aplica RST8x8 con un factor de reducción de 4 (tamaño 1/4). Por lo tanto, en lugar de 64x64, que es un tamaño de matriz de transformada no separable convencional de 8x8, se usa una matriz directa de 16x64. En otras palabras, la matriz RST inversa de 64*16 se utiliza en el lado del decodificador para generar coeficientes de transformada de núcleo (primarios) en las regiones 8*8 superiores izquierdas. El RST8x8 directo usa matrices de 16*64 (u 8x64 para bloques de 8x8) de modo que produce coeficientes distintos de cero solo en la región 4*4 superior izquierda dentro de la región 8 * 8 dada. En otras palabras, si se aplica RST, la región de 8*8, excepto la región 4*4 superior izquierda, tendrá solo coeficientes cero. Para RST4x4, se aplica la multiplicación de matriz directa de 16x16 (u 8x16 para bloques de 4x4).
Una RST inversa se aplica condicionalmente cuando se cumplen las dos condiciones siguientes:
• El tamaño del bloque es mayor o igual al umbral dado (W>= 4 && H> = 4)
• El indicador del modo de salto de transformada es igual a cero
Si tanto la anchura (W) como la altura (H) de un bloque de coeficiente de transformada es mayor que 4, entonces RST8x8 se aplica a la región 8 * 8 superior izquierda del bloque de coeficiente de transformada. De lo contrario, RST4x4 se aplica en la región superior izquierda min (8, W) * min (8, H) del bloque de coeficientes de transformada.
Si el índice RST es igual a 0, no se aplica RST. De lo contrario, se aplica RST, cuyo núcleo se elige con el índice RST.
Además, RST se aplica para intra CU en segmentos intra e inter, y para luma y Croma. Si se habilita un árbol dual, los índices<r>S<t>para luma y Croma se señalizan por separado. Para segmentos inter (el árbol dual está deshabilitado), se señaliza un único índice RST y se usa tanto para luma como para Croma.
Subparticiones intra (ISP), como modo de intrapredicción en VVC 4.0. Cuando se selecciona el modo ISP, RST se deshabilita y el índice RST no se señaliza, porque la mejora del rendimiento fue marginal incluso si se aplica RST a todos los bloques de partición factibles. Además, la deshabilitación de RST para el residuo predicho por ISP podría reducir la complejidad de la codificación.
Una matriz RST se elige a partir de cuatro conjuntos de transformadas, cada conjunto de transformadas comprende dos transformadas. El conjunto de transformadas que se aplica se determina a partir del modo de intrapredicción, como sigue:
Si se indica uno de los tres modos CCLM (modelo lineal de componentes cruzados, en este modo, el componente croma se predice a partir del componente luma), se selecciona el conjunto de transformada 0.
De otro modo, la selección del conjunto de transformada se realiza de acuerdo con la siguiente tabla:
Tabla 3 tabla de selección de conjunto de transformación
El índice para acceder a la tabla 3, IntraPredMode, tiene un rango de [-14, 83], que es un índice de modo transformado utilizado para la intrapredicción gran angular.
Un ejemplo del conjunto de transformada se muestra a continuación.
- El índice de conjunto Tr. es igual a 0, el núcleo de transformada 16x16 se muestra a continuación secTransMatrix [ m ][ n ] =
{
{ 108 -40 25 -32 8 -25 8 2 -16 -9 -13 8 -2 4 2 0 },
{ -44 -97 -31 -39 -9 5 9 34 -27 -10 1 -7 13 9 -2 -2 },
{ -15 56 -1 -92 33 16 16 -5 -39 -34 4 -5 -6 11 8 0 },
{ 112 7 51 -8 -3 11 -109 4 -9 -15 -431 -16 -10 },
{ -44 -11100 -6 -16 -38 37 -76 -9 -30 7 -2 4 8 -1 },
{ 1929 -16 -16 -102 14 36 2410 -5 -17 -30 28 95 -7 },
{ 7 -12 -29 36 36 11 94 -25 16 -29 -3 -28 -13 16 28 -3 },
{ -1 -3 1 -8 23 -3 -38 -3 245 -64 -87 -14 19 -17 -35 },
{ -1118 -54 3 -4 -97 -7 8 3 -33 -35 31 -3 12 6 -1 },
{ 6 18 21 22 38 7 3 9919 -26 11 4 37 33 -7 -7 },
{ 2 -15 14 18 -27 26 -47 -28 10 -96 17 4 -15 32 18 -2 },
{ -1 -3 -4 -15 -5 1 11 -2924 33 19 33 -3 94 -45 -32 },
{ 0 -1 -7 4 5 55 -6 6 -4 14 -86 61 -2 12 40 -6 },
{ -1 -3 2 116 -10 -13 -43 -7 4 6 -5 107 0 36 -33 },
{ -1 2 4 -5 -8 -19 -17 21 -2 39 36 -17 -36 34 97 -16 },
{ 0 1 0 2 -6 3 10 11 -3 -14 14 22 -24 -45 -8 -112 },
}
- El índice de conjunto Tr. es igual a 1, el núcleo de transformada 16x16 se muestra a continuación: secTransMatrix [ m ][ n ] =
{
{ -111 -47 -35 13 -11 0 -17 4 5 -4 -2 5 -5 0 -1 -1 },
{ 39 -27 -23 93 -27 -35 -46 -10 -20 -1 -10 13 -7 4 2 0 },
{ 4 15 4 -27 1 32 -92 -2332 38 3518 -34 -2 7 -12 },
{ 3 -1 4 -4 2 -2 14 4 -5 -18 -19 34 -83 -60 -57 23 },
{ 44 -92 -17 -48 -47 26 716 8 -7 5 11 2 5 3 1 },
{ 11 43 -7213 -4 60 -1058 -3 -42 8 -4 -1 9 -7 -4 },
{ -12 20 32 -34 -36 -3 -39 -17 -46 -63 -44 18 -4 42 9 17 },
{ -1 -2 6 4 10 -17 29 26 -7 -6 14 18 -73 34 68 -53 },
{ 7 20 -59 -52 -2 -82 -1730 -433 -25 5 4 5 -9 -3 },
{ -16 39 18 11 -85 1 2721 2 34 25 58 20 -14 6 4 },
{ -5 -16 50 1 14 -30 -28 67 -15 -23 58 -3 15 9 -49 -21 },
{ 2 -5 -6 10 29 0 17 2 24 15 17 42 -12 80 -20 72 },
{ 3 10 03 -20 -37 1 -13 100 -65 7 -2 4 -56 -4 },
{ -1 -5 4016 -2 21 -15 5944 33 -84 -10 -3 13 -4 -8 },
{ 4 -13 0 -3 57 3 -13 130 -20 -16 85 44 -38 36 -3 },
{ 2 2 -13 1 4 12 17 -40 5 2 -18 38 12 37 -64 -83 },
}
- El índice de conjunto Tr. es igual a 2, el núcleo de transformada 16x16 se muestra a continuación: secTransMatrix [ m ][ n ] =
{
{ -112 29 -36 28 -12 18 5 -13 -4 15 -8 -2 -3 2 4 0 },
{ 47 -7 -87 -5 -24 53 -1 -32 -13 33 -24 -6 -7 6 8 1 },
{ -2 1 69 2 1569 218 -10 63 -27 -24 -16 10 21 4 },
{ 2 -1 -10 -2 -3 -74 0 -2 19 89 15 13 -21 -3 40 11 },
{ -34 -108 -17 -29 26 14 -26 1518 812 -1 10 -5 -4 -2 },
{ 13 40 -33 13 80 24 6 34 46 15 41 -8 24 -16 -11 -4 },
{ 2 2 26 -2 -61 28 0 -27 60 25 26 37 46 -31 -28 -13 },
{ 0 0 -2 0 9 -30 1 7 -4840 -29 -22 75 12 -57 -34 },
{ 15 -457 103 15 -6 45 -25 16 -4 -17 38 7 5 3 },
{ -713 14 -36 54 -7 -9 -80 33 -8 -50 1820 24 14 7 },
{ 1 4 -11 -4 -36 -11 -1 47 60 -15 -39 -5138 41 31 20 },
{ 0 -1 2 1 2 12 0 -1 -48 -8 2722 72 -16 70 47 },
{ 88 6 48 0 -5 -113 -16 1 -2 0 -231 -16 7 -6 },
{ -3 -5 8 -16 -4 -7 28 -50 0 -6 35 -952 -41 18 -19 },
{ -1 1 -7 -4 6 -6 8 28 5 -9 -67 17 1 -89 32 -42 },
{ 0 0 0 1 -2 8 -1 2 -2 -7 26 17 7 49 52 -101 },
}
- El índice de conjunto Tr. es igual a 3, el núcleo de transformada 16x16 se muestra a continuación: secTransMatrix [ m ][ n ] =
{
{ -114 -19 36 -27 -11 15 13 16 -8 -65 -5 1 -3 -2 -5 },
{ 37 -41 -25 -80 -21 47 25 11 -34 -30 9 -23 3 -2 -7 -12 },
{ 3 19 18 4437 10 79 -26 -26 -42 -6 -23 23 -21 -33 -18 },
{ 2 -2 -2 -3 -10 -6 -39 13 7 -12 42 3673 -52 -56 -12 },
{ -22 85 -42 -58 44 -16 -13 -13 -26 -3 -15 3 8 1 -4 8 },
{ -23 -60 -53 1 -4 -4410 -74 -19 5 -18 22 5 -10 -622 },
{ 14 -11 35 -29 47 4231 -20 29 57 -9 36 34 -17 21 38 },
{ 0 7 5 19 -12 10 -4 -1 -37 -52 26 40 46 44 63 36 },
{ 21 17 46 -41 -37 -80 49 5 1 -2 15 27 -12 -19 15 -5 },
{ -17 31 -60 18 -41 2545 -6 22 37 58 -4 2 -20 31 -15 },
{ -5 -34 -25 -12 58 -4012 29 46 -12 14 -16 35 30 32 -51 },
{ 2 2 19 -7 18 21 -8 -47 -9 6 43 56 -38 45 -22 -63 },
{ 5 -11 8 1210 -23 3 26 -81 74 23 -25 26 27 -10 -5 },
{ 2 19 21 -17 -46 -2 -1 -49 37 10 -10 -46 52 61 -26 0 },
{ -42 -33 7 -16 3 43 54 14 6 -37 56 2 49 -52 15 },
{ -1 -8 -1 -6 31 -14 7 2 20 -15 75 -24 -31 21 -38 73 },
}
- El índice de conjunto Tr. es igual a 0, el núcleo de transformada 16x48 se muestra a continuación: secTransMatrix [ m ][ n ] =
{
{-117 -29 -10 -15 32 -10 1 0 -13 6 -12 0 -1 6 6 -1 },
{28 -91 62 15 39 1 -33 6 -13 1 -2 -3 9 2 9 7 },
{18 47 -11 -10 92 50 -11 -6 -37 -14 -26 0 13 -3 -2 -2 },
{2 1 -8 -2 -44I -15i -14 21 -101 -36 -12 -4 5 2 35 9 },
{4 9 -2 1 4 2 7 -4 29 9 -9 -15 14 10 110 -11 },
{1 0 -2 0 -10 -3 -2 2 -11 -3 2 6 -2 -1 -22 5 },
{2 3 -1 1 1 1 2 0 8 2 -1 -3 2 2 11 -1},
{1 0 -1 0 -4 -1 0 0 -3 0 1 1 -1 0 -4 1 },
{32 -54 -95 10 26 -28 29 -20 -12 10 -3 -7 -8 8 -2 -7 },
{ -18 26 3 112 12 -15 -12 -24 -15 9 30 -15 3 3 0 2 },
{-2 -8 32 -20 -15 14 : 7 -104 -20 -18 4 -28 -4 -1 -3 -22 },
{0 3 0 -17' 13 6 -7 30 2 -1 34 -86 -62 -20 1 4 },
{-1 0 4 -4 -5 1 -4 5 -11 -3 -4 19 4 0 -18 -13 },
{0 1 0 -4 2 1 0 5 5 1 0 -5i 1 1 12 0 },
{0 0 2 -1 -2 1 -1 1 -2 0 -1 4 1 0 -3 -1 },
{0 0 0 -2 0 0 0 2 1 0 0 -1 0 0 2 0 },
{14 33 32 -20 29 -99 6 -7 -12 38 -30 -5i -12 -4 -5 0
{-1 5 -30 -26 -16 -4 -99 -46 10 26 3 -17 23 4 -4 28
{-3 -9 -4 31 -22 i3 3 10 26 -13 -92 -41 16 -16 -22 0
{0 -1 4 1 8 5 26 -14 12 -1 14I 42 -11 0 8 76 },
{-1 -2 -1 0 0 5 -1 7 -6 -5 19 -6 -17 -2 -25 4 },
{0 0 1 0 1 2 5 0 0 ■-1 0 2 0 0 3 -6 },
{0 -1 0 0 0 2 0 1 -1 -1 3 -1 -1 1 0 0 },
{0 0 0 0 1 1 2 0 0 0 0 1 0 0 0 -2 },
{2 -3 6 2 -20 44 14 9 -32 102 -11 -1 -11 34 -3 -13
{0 3 2 ■-16 6 -10 30 21 -2 3 34 -40 97 23 -21 5 },
{0 0 -5 -1 4 -11 -27 7 11 -14 21 37 -3 6 2 -76 },
{0 0 0 6 -3 1 -2 -6 3 -1 -33 13 -3 -7 -3 -4 },
{0 0 0 0 1 -2 1 -2 3 -5 1 -4 0 -4 9 33 },
{0 0 0 1 0 0 -1 -1 -1 -1 -2 2 -6 -2 -2 -1 },
{0 0 0 0 0 -1 0 0 1 -2 0 -1 0 -1 1 3 },
{0 0 0 0 0 0 -1 -1 0 0 -1 1 -2 0 0 0 },
{3 7 6 1 1 -5 -6 2 11 -29 -9 -10 -21 108 -7 9 },
{0 2 -3 -4 -4 4 6 2 -5 10 -4 13 -5 -5 1 18 },
{-1 -2 0 0 -3 -3 6 5 -1 10 18 -1 23i -30 3 -3 },
{0 0 0 0 2 0 -3 -2 6 0 3 -4 0 6 -5 -35 },
{1 -1 2 0 -4 8 1 0 -4 10 2 4 2 -27 3 -4 },
{0 1 0 -3 1 -1 3 3 2 -4 0 -4 -2 10 0 -1 },
{0 0 -1 0 0 -2 -3 4 1 -1 0 3 -1 7 -1 6 },
{0 0 0 1 0 0 0 -1 0 1 -2 4 6 -2 01 },
{1 2 2 0 1 -2 -1 0 3 -7 -1 -2 -3 11 0 1 },
{0 1 -1 -1 -1 1 1 0 -1 1 -1 2 -3 -3 1 2 },
{0 -1 0 0 -2 -1 1 1 1 2 3 -1 1 -1 0 0 },
{0 0 0 0 1 0 0 0 2 1 0 -1 0 1 -1 -3 },
{1 0 1 0 -2 4 0 0 -1 2 0 1 0 -4 1 -1 },
{0 0 0 -2 0 0 1 1 0 -1 0 -1 0 1 0 0 },
{ 0 0 0 0 0 -1 -1 2 0 0 0 1 0 0 0 2 },
{0 0 0 0 0 0 0 -1 0 0 -1 2 2 1 0 0 },
}
- El índice de conjunto Tr. es igual a 1, el núcleo de transformada 16x48 se muestra a continuación: secTransMatrix [ m ][ n ] =
{
{110 -43 -19 -35 9 -5 14 7 -13 -11 -4 -2 3 -4 5 -5 },
{-49 -19 17 -103 5 -5 17 35 -27' -13 -10 1 1 -8 -1 -6 },
{-3 17 -7 39 -6 -28 27 17 -101 -3 -24 131 5 -1 26 -27 },
{-4 -1 3 1 -1 9 -12 -4I 24 -10 -11 -17 -15 -50 102 -22 },
{-1 3 -2 7 -1 -3 1 -1 -8 3 3 3 1 6 -13 -12 }
{-1 0 1 0 0 2 -3 0 6 -1 -2 -5 -2 -4 12 0 },
{0 1 -1 2 -1 -1 1 0 -3 1 0 1 1 2 -4 -3 },
{-1 0 0 0 0 1 -1 0 2 0 -1 -2 -1 -2 4 0 },
{-38 -98 -32 38 42 -20 8 3 11 -19 -6 3 7 -1 -4 -5 },
{-1 46 -59 -13 4 78 19 8 43 -19 -37 0 4 5 -2 8 },
{10 14 29 25 21 22 -13 54 6 -37 -45 -55 -7 -22 -40 -20
{0 -1 3 -6 -11 16 4 -17 28 8 -17 : 2 29 20 -7 -83 },
{2 2 4 1 1 1 -2 1 -6 4 8 6 -1 6 -23 0 },
{0 0 0 -1 -3 3 1 -2 3 2 -2 1 2 1 3 0 },
{1 1 2 0 1 0 -1 1 -1 0 2 1 -1 0 -5 0 },
{0 0 0 0 -1 1 0 -1 1 1 -1 0 1 0 1 0 },
{-9 26 -72 -1 21 80 48 10 -3 -12 17 8 8 -16 -1 9 },
{13 26 43 7 70 -6 -1 14 14 -30 14 74 3 -15 5 7 },
{1 ■-15 34 6 -32 25 48 -11 21 3 -58 21 121 18 8 24 },
{-2 -3 -9 -7 -21 5 -15 -34 -12 -9 14 40 -14 -29 -23 -20 },
{0 -2 3 1 0 -4 -4 4 -7 5 15 -14 -9 -11 7 41 },
{0 -1 -2 -1 -4 -1 -2 -4 -2 0 0 0 -1 2 2 3 },
{0 -1 1 0 -1 -1 -1 1 -1 1 2 -2 -1 -2 1 6 },
{0 0 -1 0 -1 0 -1 -1 -1 0 0 0 0 1 1 1 },
{-4 11 13 -13 34 6 1 -80 -23 -56 -10 -36 4 40 10 15 },
{2 -7 36 14 -26 -24 60 -7 10 -9 34 -8 29 -45 -11 20 },
{-3 -9 -18 2 -57 7 -28 -6 --4 -47 -7 11 -15 -19 -13 12 },
{0 2 -10 -4 11 -9 -42 2 -12 8 28 -13 31 -22 -3 11 },
{0 0 0 2 4 0 5 15 3 21 4 -23 10 31 12 17 },
{0 0 -2 -1 2 0 -6 0 0 1 -1 1 4 2 -3 -9 },
{0 0 0 0 0 0 1 3 1 4 1 -3 1 4 2 1 },
{0 0 -1 0 1 0 -2 0 0 1 0 0 1 1 0 -2 },
{-2 9 3 -2 -4 -7 11 -16 2 -11 23 -36 61 -25 -9 -26 },
{2 -3 0 11 -32 3 -11 46 9 -30 34 6 22 41 23 -1 },
{0 -1 -12 -6 5 13 -51 1 -10 10 -31 16 55 0 4 18 },
{1 2 3 -2 24 -4 11 3 0 59 4 -14 14 12 9 -1 },
{ -1 3 6 -2 1 -3 -2 2 1 -2 10 2 13 9 14■ -12 },
{1 -3 1 4 -6 5 -10 7 -5 8 -22 19 3 7 9 32 },
{0 0 -3 -3 12 1 -2 -24 -4 41 -30 -4 -9 -42 -14 3 },
{0 0 2 0 4 -5 13 0 4 8 22 -12 -65 12 -4 -18 },
{-1 4 1 0 -3 -2 2 2 2 2 4 -1 1 -3 0 -5 },
{1 -1 -1 3 -2 3 -6 -2 -2 5 ■-15 0 -11 -14 -12 10 },
{0 0 -2 -2 4 1 -4 -5 2 6 9 -7 -21 2 -7 -25 },
{0 0 0 0 -2 -2 4 8 2 -7 20 -3 -7 28 6 -5 },
{-1 2 3 -1 0 -1 -2 1 0 -1 2 0 0 5 3 -2 },
{0 -1 1 1 -1 2 -3 -1 -2 3 -5 2 0 1 0 1 },
{0 0 -1 -1 0 -1 2 -2 1 5 9 -2 -1 6 6 -8 },
{0 0 1 0 0 -2 2 2 0 -2 4 -1 3 2 3 10 },
}
- El índice de conjunto Tr. es igual a 2, el núcleo de transformada 16x48 se muestra a continuación: secTransMatrix [ m ][ n ] =
{
{-121 0 -2C 32 -3 -4 7 --8 -15 -3 -1 -5 -2 -2 -2 4 },
{33 -2 19 108 0 -12 1 -31 -43 1 -6 -14 0l -10 -3 -4 },
{4 0 -5 -43 -1 -3 2 14■ -100 2 -■3 -48 2 -4 -25 28 },
{4 0 2 10 0 1 0 -4 23 0 2 2 0 0 -2 103 },
{1 0 -1 -9 0 -1 0 3 -12 0 -1 -5 0 0 -3 -42 },
{2 0 1 3 0 0 0 -1 6 0 0 1 0 0 0 24 },
{0 0 0 -3 0 0 0 1 -4 0 0 -2 0 0 -1 -9 },
{1 0 0 1 0 0 0 0 2 0 0 0 0 0 0 7 },
{-1 121 16 4 -29 ■9 4 9 -6 -6 -6 10 -2 3 -1 1 },
{-1 -23 3 19 11 105 3 43 -17 3 -35 24 0 11 -3 2 },
{1 -7 -2 -7 -2 -31 -2 0 -48 1 9 99 •1 -1 -1 4 },
{0 -3 0 1 1 7 0 1 10 0 0 -17 0 -1 4 0 },
{0 -2 0 -1 0 -6 0 -1 -5 0 2 10 0 0 -2 3 },
{0 -1 0 0 0 1 0 0 2 0 0 -4 0 0 2 -1 },
{0 -1 0 0 0 -2 0 0 -1 0 0 3 0 0 0 0 },
{0 0 0 0 0 0 0 0 1 0 0 -1 0 0 1 0 },
{24 17 -120 11 12 9 22 -13 1 0 1 4 -1 -6 -7 -1 },
{-5 1 14 -30 7 46 -8 -105 ■-5 3 -6 14 -1 -40 -8 0 },
{-1 -2 8 9 -1 -6 1 17 19 -2 11 32 1 -15 -97 -9 },
{-1 0 1 -2 0 0 -1 -2 -6 0 -2 0 -1 6 17 -42 },
{ 0 0 3 1 0 0 0 2 3 0 2 2 0 -2 -9 17 },
{0 0 1 -1 0 0 0 0 -1 0 0 0 0 1 3 -9 },
{0 0 1 0 0 0 0 0 1 0 1 1 0 0 -3 3 },
{0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 -2 },
{5 -27 -18 0 -117 8 -28 -8 2 -20 -9 -4 -1 5 -8 -1 },
{-1 4 -2 -8 12 -29 -9 -25 7 8 -100 0 -4 57 -26 1 },
{0 2 3 2 9 9 4 -3 15 -2 17 -39 2
{ 0 0 0 0 1 -3 0 0 -3 0 -1 6 0 2 -1 6 },
{0 0 1 0 3 1 1 0 1 0 1 -4 0 0 -3 -4 },
{ 0 0 0 0 0 0 0 0 -1 0 0 1 0 0 -1 2 },
{0 0 0 0 1 0 0 0 0 0 0 -1 0 0 -1 -1 },
{0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 },
{3 -12 17 -7 -32 -3 117 -7 4 30 -10 2 -8 1 2 -1 },
{-1 2 -3 -1 -3 -19 -10 13 -63 -3 -2 -95 10 -2 },
{0 1 -1 2 3 3 -8 -5 5 -3 1 -4 -1 18 24 -4 },
{0 0 0 0 0 0 0 1 -1 0 2 0 1 -6 -7 4 },
{2 -5 6 -3 12 -4 32 -1 0 -116 - 7 2 30 -10 5 0 },
{-1 1 -1 -1 -2 -6 1 4 3 6 3 -2 4 -34 9 3 },
{0 0 -1 1 -1 1 -4 0 1 10 -4 -2 -4 -2 19 1 },
{0 0 0 0 0 0 0 0 0 0 0 0 1 0 -1 -1 },
{2 -1 2 -2 7 0 3 2 -2 -35 -1 0 -102 -4
{ -1 0 0 -2 0 0 1 -1 1 -5 9 0 4 17 1 2 },
{0 0 0 1 0 0 -1 0 2 4 -1 -1 8 -2 4 0 },
{0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 -2 },
{1 -2 2 0 1 0 -3 1 -1 -3 3 0 -69 0 -2 2 },
{0 0 0 0 0 -1 1 0 1 -1 4 -1 -2 2 0 0 },
{0 0 0 0 0 0 0 -1 1 0 -1 -1 6 1 1 0 },
{0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 },
}
- El índice de conjunto Tr. es igual a 3, el núcleo de transformada 16x48 se muestra a continuación: secTransMatrix [ m ][ n ] =
{
{-115 15 29 -36 -6 4 -20 4 12 5 -3 -1 10 4 2 3 },
{37 51 -22 -98 18 15 -7 29 13 20 -4 -3 -4 6 9 -3 },
{9 ■-18 16 25 3 52 -43 1 10 90 -34 2 -6 14 13 12 },
{2 0 -6 5 -3 -13 4 26 2 -17 -12 19 12 53 37 84 },
{2 -3 3 4 -1 5 0 -5 -1 4 2 -2 5 -4 19 -12 },
{1 0 -2 1 0 -3 1 4 3 -3 -1 4 1 4 6 8 },
{1 -1 1 2 0 2 -1 -2 -1 2 -1 -1 1 0 2 -2 },
{0 0 -1 1 0 -1 1 1 1 -1 0 2 0 2 2 3 },
{10 -95 -4 -59 -50 -17 -7 -17 17' 6 5 9 11 0 -9 6 },
{-29 7 -80 11 -5 -45 35 -7 -2 66 25 3 -9 -1 -3 13 },
{8 34 12 -17 -38 ■6 0 -73 -46 8 11 -35 -12 -20 -9 50 },
{0 -3 15 1 12 24 12 6 12 28 43 22 -2 -13 -28 -1 },
{1 5 0 1 0 -2 -4 6 7 -7 -10 11 -7 3 -20 45 },
{0 -1 3 1 2 4 1 2 0 3 4 1 0 2 -41 },
{1 2 0 0 0 -1 -1 1 2 -1 -2 2 -1 -1 -3 7 },
{0 0 1 0 1 2 0 1 0 1 1 0 0 1 -1 0 },
{23 23 45 6 3 -87 -51 -5 16 29 23 -7 33 -3 1 -2 },
{-8 -47 7 -13 67 -8 -2 21 -45 5 20 -65 -10 1 18 18 },
{-8 1 ■-59 7 -7 -14 -57 ■-3 -9 -19 -40 -19 -4 -5 9 -22 },
{1 6 7 -3 -40 7 5 5 -53 12 12 -22 18 35 28 -37 },
{-1 0 -2 0 3 8 15 -1 6 9 21 11 18 -16 24 -13 },
{0 1 1 0 -6 1 0 -3 1 -1 -3 4 -4 -6 6 14 },
{0 0 -1 0 1 2 4 0 1 1 4 2 4 -1 2 0 },
{0 1 0 0 -3 0 0 -1 0 0 -1 1 -1 -2 2 3 },
{3 8 -15 14 -12 23 7 -11 70 -10 25 -75 28 46 -20 1 },
{3 5 41 -4 -13 -35 39 2 16 14 -28 -18 -72 29 -5 -12 },
{-2 -12 -3 -14 65 6 5 -52 8 -1 -10 3 1 13 ■-25 -3 },
{-1 0 ■-16 3 -3 -3 -55 -3 -4 -13 5 -11 -49 21 -33 2 },
{0 -1 2 -1 -10 1 1 27 -37 7 83 -10 15 37 -36 -15 },
{0 0 -3 0 0 1 -7 -2 1 0 6 2 2 -5 9 -8 },
{0 0 0 0 -1 0 1 5 -7 1 0 0 2 4 -2 1 },
{0 0 -1 0 0 0 -3 0 0 0 2 1 1 -1 2 -1 },
{4 3 1 2 9 2 1 0 -12 0 -4 2 56 -10 -13 19 },
{0 -3 0 8 -20 5 -10 27 29 ■-6 21 -35 -23 -53 42 14 },
{0 1 7 -3 -5 -17 41 8 3 13 -64 -27 22 -18 1 -4 },
{-1 -1 -2 -5 22 0 2 -58 21 -4 -8 4 -11 8 57 -12 },
{1 2 -3 2 -2 3 4 2 4 0 -5 1 4 9 -22 -4 },
{1 1 6 0 0 -1 -3 -5 0 -4 19 8 -1 12 -2 5 },
{0 -2 1 0 0 -1 -2 25 5 1 10 -17 -15 -41 -25 17 },
{0 0 -2 0 -1 -5 3 3 -1 5 -48 -19 26 -25 -28 8 },
{2 1 0 0 2 0 -1 0 -3 0 3 3 6 -2 5 2 },
{0 -1 0 3 -3 1 -2 3 4 -1 -1 0 4 2 6 -4 },
{0 0 1 0 -2 -4 7 0 1 -1 10 3 -10 13 19 -4 },
{ 0 0 0 -1 3 0 1 -5 4 1 -3 -6 0 -16 -12 4 },
{0 1 -1 1 -1 1 1 0 2 0 0 0 0 4 -5 -2 },
{0 1 2 0 0 0 -1 -2 0 -1 4 2 2 1 -3 2 },
{0 -1 0 0 1 0 -1 7 1 0 3 -1 -3 -5 -2 1 },
{0 0 -1 0 0 -2 0 0 0 0 -6 -2 2 1 4 0 },
}
En el caso RST8x8 o RST4x4, en términos de conteo de multiplicación puede ocurrir cuando todas las TU con tamaño de 4x4 TU o 8x8 TU. Por lo tanto, las matrices 8x64 y 8x16 superiores (en otras palabras, los primeros 8 vectores de base de transformada de la parte superior en cada matriz) se aplican a 8x8 TU y 4x4 TU, respectivamente.
En el caso de bloques más grande que 8x8 TU (tanto la anchura como la altura son mayores que 8), RST8x8 (es decir, matriz 16x64) se aplica a la región 8x8 superior izquierda. Para 8x4 TU o 4x8 TU, RST4x4 (es decir, matriz de 16x16) se aplica a la región 4x4 superior izquierda (en un ejemplo, RST 4x4 no se aplica a las otras regiones 4x4). En el caso de 4xN o Nx4 TU (N > 16), RST4x4 se aplica a dos bloques 4x4 adyacentes en la parte superior izquierda.
Con la simplificación antes mencionada, en algunos casos, el número de multiplicaciones es de 8 por muestra.
Para reducir el tamaño de las matrices de transformadas secundarias, se aplican matrices de 16 x 48 con la misma configuración de conjunto de transformadas, cada matriz de 16 x 48 toma 48 muestras de entrada de tres bloques 4x4 en un bloque 8x8 superior izquierdo (en un ejemplo, se excluyen los bloques 4x4 inferior derechos), como se muestra en la figura 12.
En VVC 5.0, se describen la herramienta MIP y la herramienta RST, y ambas herramientas se aplican para bloques intra. Sin embargo, ambas herramientas no están armonizadas en el sentido de selección de núcleo de transformada secundaria. En otras palabras, dado que MIP no es el modo intra regular, lo que significa que, si se predice un bloque intra utilizando el modo MIP, el método de selección del núcleo de transformada RST no se define con la propuesta adoptada JVET-N0217 y JVET-N0193. Las siguientes soluciones resuelven el problema mencionado.
La figura 15 ilustra un método de acuerdo con la presente descripción. En la figura 15, se ilustra un método de codificación implementado por un dispositivo de decodificación o un dispositivo de codificación. El dispositivo de decodificación puede ser un decodificador 30 como se describió anteriormente. Asimismo, el dispositivo de codificación puede ser un codificador 20 como se describe anteriormente. En la figura 15, en una etapa 1601, el método comprende determinar un modo de intrapredicción de un bloque actual. En una etapa siguiente 1603, el método comprende determinar la selección de una transformada secundaria del bloque actual basándose en el modo de intrapredicción determinado para el bloque actual. Esto se detalla más a continuación.
La figura 16 ilustra un codificador 20 de acuerdo con la presente descripción. En la figura 16 el codificador 20 comprende una unidad de determinación 2001 configurada para determinar un modo de intrapredicción de un bloque actual, el codificador 20 de la figura 17 muestra además una unidad de selección 2003 configurada para determinar la selección de una transformada secundaria del bloque actual basándose en el modo de intrapredicción determinado para el bloque actual.
La figura 17 ilustra un decodificador 30 de acuerdo con la presente descripción. En la figura 17 el decodificador 30 comprende una unidad de determinación 3001 configurada para determinar un modo de intrapredicción de un bloque actual, el decodificador 30 de la figura 17 y una unidad de selección 3003 configurada para determinar la selección de una transformada secundaria del bloque actual basándose en el modo de intrapredicción determinado para el bloque actual.
En lo que sigue, el método de codificación de la figura 15, implementado por un dispositivo de decodificación o un dispositivo de codificación de las figuras 17 y 16, respectivamente se detalla a profundidad.
Solución 1.
De acuerdo con la solución 1, una intrapredicción basada en matriz y la transformada secundaria reducida se excluyen para el mismo bloque intrapredicho.
En un ejemplo, cuando se predice un bloque intrapredicho usando un modo MIP, (en un ejemplo, se puede usar un valor del indicador MIP para indicar si un bloque se predice usando un modo MIP o no), la transformada secundaria se deshabilita para este bloque intrapredicho, en otras palabras, el valor de un índice de transformada secundaria se ajusta a 0, o no es necesario decodificar el índice de transformada secundaria a partir de un flujo de bits.
Cuando un bloque intrapredicho no se predice utilizando un modo MIP, el núcleo de transformada de la transformada secundaria se selecciona en base al método mencionado en JVET-N0193.
Los cambios de texto de la descripción comparada con JVET-N0193 se resaltan en gris.
7.4.3.1 Semántica RBSP de conjunto de parámetro de secuencias
sps_st_enabled_flag igual a 1 especifica que st_idx puede presentarse en la sintaxis de código residual para unidades de intracodificación. sps_st_enabled_flag igual a 0 especifica que st_idx no está presente en la sintaxis de codificación residual para unidades de intracodificación.
7.4.7.5 Semántica de unidad de codificación
st_idx[x0] [y0] especifica qué núcleo de transformada secundaria se aplica entre dos núcleos candidatos en un conjunto de transformada seleccionado. st_idx [x0] [y0] igual a 0 especifica que no se aplica la transformada secundaria. Los índices de matriz x0, y0 especifican la ubicación (x0, y0) de la muestra superior izquierda del bloque de transformada considerado en relación con la muestra superior izquierda de la imagen.
intra_mip_flag[x0] [y0] igual a 1 especifica que el tipo de intrapredicción para muestras de luma es intrapredicción ponderada lineal afín. intra_lwip_flag [x0] [y0] igual a 0 especifica que el tipo de intrapredicción para muestras luma no es intrapredicción ponderada lineal afín.
Solución 2
De acuerdo con la solución 2, durante un proceso de una selección del núcleo de transformada de la A transformada secundaria, cuando se predice un bloque utilizando un modo MIP, se considera que uno de los conjuntos de núcleo de transformada secundaria entrenado se utiliza para este bloque.
En una realización,
El conjunto de transformada 0 se utiliza como conjunto de núcleo de transformada secundaria seleccionado cuando el bloque actual se predice con un modo MIP.
Una matriz RST se elige a partir de cuatro conjuntos de transformadas, cada conjunto de transformadas comprende dos transformadas. Un conjunto de transformadas que se aplica al bloque se determina de acuerdo con el modo de intrapredicción como sigue:
Si el bloque intra actual se predice utilizando el modo CCLM, se selecciona el conjunto de transformada 0; De lo contrario, si el bloque intra actual se predice utilizando el modo MIP, se selecciona el conjunto de transformada 0;
De lo contrario (si el bloque intra actual no se predice utilizando el modo CCLM o MIP), la selección del conjunto de transformada se realiza de acuerdo con la siguiente tabla:
Tabla 4 tabla de selección de conjunto de transformación
El rango de índice para IntraPredMode está entre -14 y 83 (se incluyen -14 y 83), que es un índice de modo de transformada utilizado para la intrapredicción de gran angular.
En esta solución, se usa un conjunto de transformadas cuando el bloque actual se predice usando un modo MIP, el conjunto de transformadas 0 se usa en un ejemplo, otros conjuntos de transformadas también se pueden usar en esta solución.
Solución 3
De acuerdo con la solución 3, durante un proceso de selección del núcleo de transformada de la transformada secundaria, cuando se predice un bloque utilizando un modo MIP, se considera que un conjunto de núcleo de transformada secundaria entrenado se utiliza para este bloque. El conjunto de núcleo de transformada secundaria entrenado puede ser diferente del conjunto de núcleo de transformada en los ejemplos anteriores.
En una realización:
Un conjunto de transformada 4 (entrenada nueva) se utiliza como conjunto de núcleo de transformada secundaria seleccionado cuando el bloque actual se predice con un modo MIP.
El conjunto de transformada 4 tiene las mismas dimensiones del conjunto de transformada 0-3 (es decir, 16x16 y 16x48), que se entrenan de nuevo en función del mismo método de aprendizaje automático y el conjunto de entrenamiento de entrada para el modo MIP específicamente.
Una matriz RST se elige a partir de cuatro conjuntos de transformadas, cada conjunto de transformadas comprende dos transformadas. Un conjunto de transformadas que se aplica al bloque se determina de acuerdo con el modo de intrapredicción como sigue:
Si el bloque intra actual se predice utilizando los modos CCLM, se selecciona el conjunto de transformada 0; De lo contrario, si el bloque intra actual se predice utilizando el modo MIP, se selecciona el conjunto de transformada 4;
De lo contrario (si el bloque intra actual no se predice utilizando el modo CCLM o MIP) la selección del conjunto de transformada se realiza de acuerdo con la siguiente tabla:
Tabla 5 tabla de selección de conjunto de transformación
El rango de índice para IntraPredMode está entre -14 y 83 (se incluyen -14 y 83), que es un índice de modo de transformada utilizado para la intrapredicción de gran angular.
En esta solución, un conjunto de transformada entrenado nuevo (por ejemplo, conjunto de transformada 4) se utiliza cuando se predice el bloque actual mediante el uso de un modo MIP.
Solución 4
De acuerdo con la solución 4, durante un proceso de una selección de núcleo de transformada de la transformada secundaria cuando se predice un bloque usando un modo MIP, se usa una tabla de búsqueda para mapear el índice del modo MIP en un índice modo intra regular, luego el conjunto de núcleo de transformada secundaria se selecciona en base a este índice modo intra regular.
En una realización:
Si un bloque actual se predice mediante el uso de un modo MIP, el índice de modo MIP se mapea a un índice de modo intra regular basado en la tabla 6. En este ejemplo, la tabla 6 es la misma que la tabla de búsqueda MIP MPM.
Tabla 6 - Especificación de mapeo entre la intrapredicción ponderada lineal afín y los modos de intrapredicción
Entonces, la selección del conjunto de transformada secundaria se realiza de acuerdo con la siguiente tabla:
T l 7 l l i n n n r n f rm i n
Por ejemplo, si el bloque actual se predice mediante el uso de un índice de modo MIP 10, y un valor del tipo de tamaño de bloque sizeID para el bloque actual es 0, entonces el índice de modo intra regular mapeado es 18 en base a la tabla 6, y el conjunto de transformadas secundarias 2 se selecciona de acuerdo con la tabla 7.
En esta solución, se usa un método de mapeo del índice del modo MIP al índice modo intra regular, cuando se predice un bloque usando un modo MIP, la selección del núcleo de transformada secundaria se basa en el índice de modo intra regular mapeado.
La figura 18 es un diagrama de bloques que muestra un sistema de suministro de contenido 3100 para llevar a cabo el servicio de entrega de contenido. Este sistema de suministro de contenido 3100 incluye el dispositivo de captura 3102, el dispositivo terminal 3106 y opcionalmente incluye la pantalla 3126. El dispositivo de captura 3102 se comunica con el dispositivo terminal 3106 a través del enlace de comunicación 3104. El enlace de comunicación puede incluir el canal de comunicación 13 descrito anteriormente. El enlace de comunicación 3104 incluye, pero no se limita a, WIFI, Ethernet, Cable, inalámbrico (3G/4G/5G), USB o cualquier tipo de combinación de los mismos, o similares.
El dispositivo de captura 3102 genera datos y puede codificar los datos mediante el método de codificación como se muestra en las realizaciones anteriores. Alternativamente, el dispositivo de captura 3102 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 terminal 3106. El dispositivo de captura 3102 incluye, pero no se limita a, cámara, teléfono inteligente o tableta, ordenador o portátil, sistema de videoconferencia, PDA, dispositivo montado en un vehículo o una combinación de cualquiera de ellos, o similar. Por ejemplo, el dispositivo de captura 3102 puede incluir el dispositivo fuente 12 como se describió anteriormente. Cuando los datos incluyen video, el codificador de video 20 incluido en el dispositivo de captura 3102 puede, de hecho, realizar el procesamiento de codificación de video. Cuando los datos incluyen audio (es decir, voz), un codificador de audio incluido en el dispositivo de captura 3102 puede, de hecho, realizar el procesamiento de codificación de audio. Para algunos escenarios prácticos, el dispositivo de captura 3102 distribuye los datos de audio y vídeo codificados multiplexándolos entre sí. Para otros escenarios prácticos, por ejemplo, en el sistema de videoconferencia, los datos de audio codificados y los datos de video codificados no se multiplexan. El dispositivo de captura 3102 distribuye los datos de audio codificados y los datos de vídeo codificados al dispositivo terminal 3106 por separado.
En el sistema de suministro de contenido 3100, el dispositivo terminal 310 recibe y reproduce los datos codificados. El dispositivo terminal 3106 podría ser un dispositivo con capacidad de recepción y recuperación de datos, como un teléfono inteligente o tableta 3108, ordenador o portátil 3110, grabadora de video en red (NVR)/grabadora de video digital (DVR) 3112, TV 3114, decodificador (STB) 3116, sistema de videoconferencia 3118, sistema de videovigilancia 3120, asistente digital personal (PDA) 3122, dispositivo montado en un vehículo 3124, o una combinación de cualquiera de ellos, o similar, capaz de decodificar los datos codificados antes mencionados. Por ejemplo, el dispositivo terminal 3106 puede incluir el dispositivo de destino 14 como se describió anteriormente. Cuando los datos codificados incluyen video, el decodificador de video 30 incluido en el dispositivo terminal tiene prioridad para realizar la decodificación de video. 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 tableta 3108, ordenador u ordenador portátil 3110, grabadora de video en red (NVR)/grabadora de video digital (DVR) 3112, TV 3114, asistente personal digital (PDA) 3122 o vehículo dispositivo montado 3124, el dispositivo terminal puede alimentar los datos decodificados a su pantalla. Para un dispositivo terminal equipado sin pantalla, por ejemplo, STB 3116, sistema de videoconferencia 3118 o sistema de videovigilancia 3120, se contacta con una pantalla externa 3126 para recibir y mostrar los datos decodificados.
Cuando cada dispositivo de este sistema realiza la codificación o decodificación, se puede utilizar 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 figura 19 es un diagrama que muestra una estructura de un ejemplo del dispositivo terminal 3106. Después de que el dispositivo terminal 3106 recibe el flujo del dispositivo de captura 3102, la unidad de procedimiento de protocolo 3202 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 real (RTP), Protocolo de mensajería en tiempo real (RTMP), o cualquier tipo de combinación de estos, o similares.
Después de que la unidad de procedimiento de protocolo 3202 procesa el flujo, se genera el archivo de flujo. El archivo se envía a una unidad de demultiplexación 3204. La unidad de demultiplexación 3204 puede separar los datos multiplexados en los datos de audio codificados y los datos de vídeo codificados. Como se describió anteriormente, para algunos escenarios prácticos, por ejemplo, en el sistema de videoconferencia, los datos de audio codificados y los datos de video codificados no se multiplexan. En esta situación, los datos codificados se transmiten al decodificador de vídeo 3206 y al decodificador de audio 3208 sin la unidad de demultiplexación 3204.
A través del procesamiento de demultiplexación, se generan el flujo elemental de video (ES), el ES de audio y, opcionalmente, los subtítulos. El decodificador de video 3206, que incluye el decodificador de video 30 como se explica en las realizaciones mencionadas anteriormente, decodifica el ES de video mediante el método de decodificación como se muestra en las realizaciones mencionadas anteriormente, para generar un cuadro de video, y alimenta estos datos a la unidad síncrona 3212. El decodificador de audio 3208 decodifica el ES de audio para generar un cuadro de audio y alimenta estos datos a la unidad síncrona 3212. Alternativamente, el cuadro de video puede almacenarse en un búfer (no se muestra en la figura 19) antes de alimentarlo a la unidad síncrona 3212. De manera similar, el cuadro de audio puede almacenarse en un búfer (no se muestra en la figura 19) antes de alimentarlo a la unidad síncrona 3212.
La unidad síncrona 3212 sincroniza el cuadro de video y el cuadro de audio, y suministra el video/audio a una pantalla de video/audio 3214. Por ejemplo, la unidad síncrona 3212 sincroniza la presentación de la información de vídeo y audio. La información puede codificarse en la sintaxis utilizando marcas de tiempo relativas a la presentación de datos de audio y visuales codificados y marcas de tiempo relativas a la entrega del flujo de datos en sí.
Si se incluyen subtítulos en la secuencia, el decodificador de subtítulos 3210 decodifica el subtítulo y lo sincroniza con el cuadro de video y el cuadro de audio, y suministra el video/audio/subtítulo a una pantalla de video/audio/subtítulos 3216.
Operadores matemáticos
Los operadores matemáticos utilizados en esta solicitud son similares a los utilizados en el lenguaje de programación C. Sin embargo, los resultados de la división de enteros y las operaciones de desplazamiento aritmético se definen con mayor precisión y se definen operaciones adicionales, como la exponenciación y la división en valores reales. Las convenciones de numeración y conteo 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, incluyendo multiplicación matricial
xy Exponenciación. Especifica x elevado a y. En otros contextos, dicha notación se utiliza para superíndices no destinados a interpretarse como exponenciación.
/ División de enteros con truncamiento del resultado hacia cero. Por ejemplo, 7/4 y -7/-4 se truncan a 1 y -7/4 y 7/-4 se truncan a -1.
Utilizado para indicar división en ecuaciones matemáticas donde no se prevé truncamiento ni redondeo.
x
y Utilizado para indicar división en ecuaciones matemáticas donde no se prevé truncamiento ni redondeo.
if ( i )
Sumatorio de f(i) con i tomando todos los valores enteros desde x hasta y incluido.
Módulo El resto de x dividido entre y, definido solamente para enteros x e y con x>=0.
Operadores lógicos
Los siguientes operadores lógicos se definen de la siguiente manera:
x && y “Y” lógico booleano de x e y
x | | y “O” lógico booleano de x e y
! "No" lógico booleano
x ? y: z Si x es VERDADERO o no es igual a 0, evalúa el valor de y; de lo contrario, evalúa el valor de z. Operadores relacionales
Los siguientes operadores relacionales se definen de la siguiente manera:
> Mayor que
>= Mayor o igual que
< Menor que
<= Menor o igual que
= = Igual a
!= No igual a
Cuando se aplica un operador relacional a un elemento sintáctico o variable a la que se le ha asignado el valor "na" (no aplicable), el valor "na" se trata como un valor distinto para el elemento sintáctico o variable. Se considera que el valor "na" no es igual a ningún otro valor.
Operadores a nivel de bits
Los siguientes operadores a nivel de bits se definen como sigue:
& “Y” a nivel de bits. Cuando opera sobre argumentos enteros, opera sobre una representación en complemento a dos del valor entero. Cuando opera sobre un argumento binario que contiene menos bits que el otro argumento, el argumento más corto se amplía agregando más bits significativos iguales a 0.
| “O” a nivel de bits. Cuando opera sobre argumentos enteros, opera sobre una representación en complemento a dos del valor entero. Cuando opera sobre un argumento binario que contiene menos bits que el otro argumento, el argumento más corto se amplía agregando más bits significativos iguales a 0.
a “O exclusivo” a nivel de bits. Cuando opera sobre argumentos enteros, opera sobre una representación en complemento a dos del valor entero. Cuando opera sobre un argumento binario que contiene menos bits que el 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 de entero en complemento a dos de x por y dígitos binarios. Esta función está definida solo para valores enteros no negativos de y. Los bits desplazados a los bits más significativos (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 de entero en complemento a dos de x por y dígitos binarios. Esta función está definida solo para valores enteros no negativos de y. Los bits desplazados a los bits menos significativos (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, evalúa el valor de la variable antes de la operación de incremento.
- - Disminución, es decir, x- - es equivalente a x = x - 1; cuando se usa en un índice de matriz, evalúa 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).
- = Disminución por la cantidad especificada, es decir, x - = 3 es equivalente a x = x - 3, y x -= (-3) es equivalente a x = x - (-3).
Notación de rango
La siguiente notación se utiliza para especificar un rango de valores:
x = y..z x toma valores enteros comenzando desde y hasta z, inclusive, siendo x, y, z números enteros y siendo z mayor que y.
Funciones matemáticas
Las funciones matemáticas siguientes se definen:
Asin( x ) la función seno inverso trigonométrica, que opera en un argumento x que está en el rango de -1,0 a 1,0, incluso, con un valor de salida en el rango de -n -2 a n-2, incluidos, en unidades de radianes Atan( x ) la función tangente inversa trigonométrica, que opera en un argumento x con un valor de salida en el rango de -n -2 a n-2, incluso, en unidades de radianes
Techo( x ) es el entero más pequeño mayor o igual a x,
CliplY( x ) = Clip3( 0, ( 1 << BitDepthy ) - 1, x )
Clip1o( x ) = Clip3( 0, ( 1 << BitDepthC ) - 1, x )
z<y,
z>y
de otra manera
Cos(x) es la función coseno trigonométrica que opera en un argumento x en unidades de radianes.
Piso( x ) es el entero más grande menor o igual a x.
b - a >= d/ 2
a - b > d/2
de oti’a manera
Ln( x ) es el logaritmo natural de x (el logaritmo base e, donde e es la constante de logaritmo natural base 2,718281 828...).
Log2( x ) es el logaritmo base 2 de x.
Log10( x ) es el logaritmo base 10 de x.
Min( x, y ) :
r x ; x >= y
l y ; x < y
Max( x, y ) =
Redondear( x ) = Signo( x ) * Piso(Abs( x ) 0,5),
M ; x > 0
Slgno{ x > = í 0 ; x = = 0
(-1 ; x í 0
Sen(x) es la función seno trigonométrica que opera en un argumento x en unidades de radianes
Sqrt( x ) = v'*
Swap( x, y ) = ( y, x )
Tan(x) es 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 mediante el uso de paréntesis, aplican las siguientes reglas:
- Operaciones con una precedencia mayor se evalúan antes de cualquier operación de una precedencia menor.
- Operaciones de la misma precedencia se evalúan de manera secuencial 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 mayor.
Para aquellos operadores que también se utilizan en el lenguaje de programación C, el orden de precedencia utilizado en esta Descripción es el mismo que se utiliza en el lenguaje de programación C.
Tabla: precedencia de operaciones desde la mayor (en la parte superior de la tabla) a la menor (en la parte inferior de la tabla)
Descripción de texto de operaciones lógicas
En el texto, una declaración de operaciones lógicas como se describirá de manera matemática en la siguiente forma:
si ( condición 0 )
enunciado 0
sino si ( condición 1 )
enunciado 1
sino /* comentario informativo sobre la condición restante */
enunciado n
puede describirse en la siguiente manera:
aplica ... como sigue / ... lo siguiente:
- Si condición 0, enunciado 0
- De otra manera, si condición 1, enunciado 1
- De otra manera (comentario informativo sobre la condición restante), enunciado n
Cada enunciado “Si... De otra manera, si ... De otra manera, ... “ en el texto se introduce con “... como sigue” o “... aplica lo siguiente” seguido inmediatamente por “Si ... ". La última condición del “Si ... De otra manera, si ... De otra manera, ...” es siempre un “De otra manera, ...”. Los enunciados “Si... De otra manera, si ... De otra manera, ...” entrelazados pueden identificarse mediante su correspondencia con “... como sigue” o “... aplica lo siguiente” con el último “De otra manera, ...”.
En el texto, una declaración de operaciones lógicas que se describiera de manera matemática en la siguiente forma:
Si( condición 0a && condición 0b )
enunciado 0
sino si( condición 1a | | condición 1b )
enunciado 1
sino
enunciado n
puede describirse en la siguiente manera:
aplica ... como sigue / ... lo siguiente:
- Si todas las condiciones siguientes son verdaderas, enunciado 0:
- condición 0a
- condición 0b
- De otra manera, si una o más de las condiciones siguientes son verdaderas, enunciado 1:
- condición 1a
- condición 1b
- De otra manera, enunciado n
En el texto, una declaración de operaciones lógicas que se describiera de manera matemática en la siguiente forma:
si( condición 0 )
enunciado 0
si( condición 1 )
enunciado 1
puede describirse en la siguiente manera:
Cuando condición 0, enunciado 0
Cuando condición 1, enunciado 1.
Aunque las realizaciones de la invención se han descrito principalmente en base a la codificación de video, debe tenerse en cuenta que las realizaciones del sistema de codificación 10, el codificador 20 y el decodificador 30 (y correspondientemente el sistema 10) y las otras realizaciones descritas en este documento también pueden configurarse para procesamiento o codificación de imágenes, es decir, el procesamiento o codificación de una imagen individual independientemente de cualquier imagen anterior o consecutiva como en la codificación de video. En general, solo las unidades de interpredicción 244 (codificador) y 344 (decodificador) pueden no estar disponibles en caso de que la codificación de 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 de video 20 y del decodificador de video 30 pueden usarse igualmente para el procesamiento de imágenes fijas, por ejemplo, cálculo residual 204/304, transformada 206, cuantificación 208, cuantificación inversa 210/310, transformada (inversa) 212/312, partición 262/362, intrapredicción 254/354 y/o filtrado de bucle 220, 320 y codificación entrópica 270 y decodificación entrópica 304.
Las realizaciones, por ejemplo, del codificador 20 y el decodificador 30, y las funciones descritas en este documento, por ejemplo haciendo referencia al codificador 20 y al 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 ejecutarse mediante una unidad de procesamiento basada en hardware. El medio legible por ordenador puede incluir un medio de almacenamiento legible por ordenador, que corresponde a un medio tangible como un medio de almacenamiento de datos, o un medio de comunicación que incluye cualquier medio que facilite la transferencia de un programa de ordenador de un lugar a otro, por ejemplo, de acuerdo con un protocolo de comunicaciones. De esta manera, el medio legible por ordenador, por lo general, puede corresponder a (1) medio de almacenamiento legible por ordenador tangible que es no transitorio o (2) un medio de comunicación tal como una onda de señal o portadora. El medio de almacenamiento de datos puede ser cualquier medio disponible que sea accesible mediante uno o más ordenadores o uno o más procesadores para recuperar instrucciones, código y/o estructuras de datos para implementar las tecnologías descritas en esta descripción. Un producto de programa de ordenador puede incluir un medio legible por ordenador.
A modo de ejemplo, y no de limitación, dichos medios de almacenamiento legibles por ordenador pueden comprender RAM,<r>O<m>, EEPROM, CD-ROM u otro almacenamiento de disco óptico, almacenamiento de disco magnético u otros dispositivos de almacenamiento magnético, memoria flash, o cualquier otro medio que pueda usarse para almacenar el código de programa deseado en forma de instrucciones o estructura de datos y que sean accesibles por medio de un ordenador. Además, cualquier conexión se denomina apropiadamente un medio legible por ordenador. Por ejemplo, si las instrucciones se transmiten desde un sitio web, servidor u otra fuente remota a través de un cable coaxial, cable de fibra óptica, par trenzado, línea de suscripción digital (DSL) o tecnologías inalámbricas tales como infrarrojos, radio, y microondas, entonces el cable coaxial, cable de fibra óptica, par trenzado, DSL o tecnologías inalámbricas tales como infrarrojos, radio o microondas se incluyen en la definición de medio. Sin embargo, debe entenderse que el medio de almacenamiento legible por ordenador y el medio de almacenamiento de datos no incluyen conexiones, ondas portadoras, señales u otros medios transitorios, sino que en cambio se refieren a medios de almacenamiento tangibles no transitorios. Los discos usados en esta descripción incluyen un disco compacto (CD), un disco láser, un disco óptico, un disco versátil digital (DVD) y un disco Blu-ray, donde los discos suelen reproducir datos magnéticamente, mientras que otros discos reproducen datos ópticamente con láseres. Las combinaciones anteriores 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 propósito general, circuitos integrados específicos de la aplicación (ASIC), matrices lógicas programables en campo (FPGA) u otros circuitos integrados o lógicos discretos equivalente. Por consiguiente, el término “procesador”, como se utiliza en la presente memoria puede referirse a cualquiera de la estructura anterior o cualquier 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 hardware y/o software dedicados configurados para codificar y decodificar, o incorporarse en un códec combinado. Además, las técnicas pueden 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 aparatos o dispositivos, incluido 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 requieren necesariamente llevarse a cabo por diferentes unidades de hardware. Más bien, como se describió 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 describió anteriormente, junto con software y/o firmware adecuados.
Claims (13)
1. Un método de codificación implementado por un dispositivo de decodificación o un dispositivo de codificación, que comprende:
determinar (1601) un modo de intrapredicción de un bloque actual, en donde el tamaño del bloque actual es 16 x 48; y
determinar (1603) la selección de una transformada secundaria no separable, NSST, del bloque actual en base al modo de intrapredicción determinado para el bloque actual:
cuando el modo de intrapredicción es menor que 0, el conjunto de núcleo de transformada secundaria no separable se ajusta a 1;
cuando el modo de intrapredicción es 0 o 1, el conjunto de núcleo de transformada secundaria no separable se ajusta a 0;
cuando el modo de intrapredicción es mayor o igual que 2 y menor o igual que 12, el conjunto de núcleo de transformada secundaria no separable se ajusta a 1;
cuando el modo de intrapredicción es mayor o igual que 13 y menor o igual que 23, el conjunto de núcleo de transformada secundaria no separable se ajusta a 2;
cuando el modo de intrapredicción es mayor o igual que 24 y menor o igual que 44, el conjunto de núcleo de transformada secundaria no separable se ajusta a 3;
cuando el modo de intrapredicción es mayor o igual que 45 y menor o igual que 55, el conjunto de núcleo de transformada secundaria no separable se ajusta a 2; o
cuando el modo de intrapredicción es mayor o igual que 56, el conjunto de núcleo de transformada secundaria no separable se ajusta a 1;
en donde, cuando el conjunto de núcleo de transformada secundaria no separable es 0, el núcleo de transformada secundaria no separable es:
{ - 117 - 29 - 10 - 15 32 - 10 1 0 - 13 6 - 12 0 - 1 6 6 - 1 },
{ 28 - 91 62 1539 1 - 33 6 - 13 1 - 2 - 3 9 2 9 7 } ,
{ 18 47 - 11 - 10 92 50 - 11 - 6 - 37 - 14 - 26 0 13 - 3 - 2 - 2 },
{ 2 1 - 8 - 2 - 44 - 15 - 14 21 - 101 - 36 - 12 - 4 5 2 35 9 },
{ 4 9 - 2 1 4 27 - 4 29 9 - 9 - 15 14 10 110 - 11 },
{ 1 0 - 2 0 - 10 - 3 - 2 2 - 11 - 3 2 6 - 2 - 1 - 22 5 },
1 1 2O8 2 - 1 - 3 2 2 11 - 1 },
- 4 - 1 0 0 - 3 0 1 1 - 1 0 - 4 1 } ,
5 10 26 - 28 29 - 20 - 12 10 - 3 - 7 - 8 8 - 2 - 7 },
112 12 - 15 - 12 - 24 - 15 9 30 - 15 3 3 0 2 },
- 20 - 15 14 37 - 104 - 20 - 18 4 - 28 - 4 - 1 - 3 - 22 },
13 6 - 7 30 2 - 1 34 - 86 - 62 - 20 1 4 },
- 5 1 - 4 5 - 11 - 3 - 4 19 4O- 18 - 13 },
2 1 0 5 5 1 0 - 5 1 1 12O},
2 1 - 1 1 - 2 0 - 1 4 1 0 - 3 - 1 } ,
0 0 0 2 1 0 0 - 1 0 0 2 0 },
- 2029 - 99 6 - 7 - 12 38 - 30 - 5 - 12 - 4 - 5O},
- 26 - 16 - 4 - 99 - 46 01 26 3 - 17 23 4 4 - 28 },
31 - 22 9 3 10 26 - 13 - 92 - 41 16 - 16 - 22O},
8 5 26 - 14 12 - 1 14 42 - 11O8 76 },
0 0 5 - 1 7 - 6 - 5 19 - 6 - 17 - 2 - 25 4 },
2 5 0 0 - 1 0 2 0 0 3 - 6 },
0 2 0 1 - 1 - 1 3 - 1 - 1 1 0 0 } ,
1 2 0 0 0 0 1 0 0 0 - 2 } ,
- 20 44 14 9 - 32 102 - 11 - 1 - 11 34 - 3 - 13 },
6 - 10 30 21 - 2 3 34 - 40 97 23 - 21 5 },
4 - 11 - 27 7 11 - 14 21 37 - 3 6 2 - 76 },
3 1 -2 - 6 3 - 1 - 33 13 - 3 - 7 - 3 - 4 },
- 2 1 - 2 3 - 5 1 - 4O- 4 9 33 },
0 - 1 - 1 - 1 - 1 -2 2 - 6 -2 -2 - 1 },
- 1 0 0 1 - 2 0 - 1 0 - 1 1 3 },
0 - 1 - 1 0 0 - 1 1 -2 0 0 0 },
- 5 - 6 2 11 - 29 - 9 - 10 - 21 108 - 7 9 },
- 4 4 6 2 - 5 10 - 4 13 - 5 - 5 1 81 },
- 3 - 3 6 5 - 1 10 18 - 1 23 - 30 3 - 3 },
O- 3 - 2 6O3 - 4O6 - 5 - 35 },
- 4 8 1O4 - 10 2 4 2 - 27 3 - 4 },
1 - 1 3 3 2 - 4O- 4 - 2 10O- 1 },
0 - 2 - 3 4 1 - 1 0 3 - 1 7 - 1 6 } ,
0 0 - 1 0 1 - 2 4 6 - 2 0 1 },
- 2 - 1O3 - 7 - 1 - 2 - 3 11O1 },
- 1 1 1 0 - 1 1 - 1 2 - 3 - 3 1 2 },
-2 - 1 1 1 1 2 3 - 1 1 - 1 0 0 },
0 0 0 2 1 0 - 1 0 1 - 1 - 3 },
2 4 0 0 - 1 2 0 1 0 -4 1 - 1 },
0 0 1 1 0 - 1 0 - 1 0 1 0 0 } ,
- 1 - 1 2 0 0 0 1 0 0 0 2 } ,
0 0 0 0 - 1 0 0 - 1 2 2 1 0 0 } ;
cuando el conjunto de núcleo de transformada secundaria no separable es 1, el núcleo de transformada secundaria no separable es:
{ 110 - 43 - 19 - 35 9 - 5 14 7 - 13 - 11 - 4 - 2 3 - 4 5 - 5 >,
{ - 49 - 19 17 - 103 5 - 5 17 35 - 27 - 13 - 10 1 1 - 8 - 1 - 6 },
{ - 3 17 - 7 39 - 6 - 28 27 17 - 101 - 3 - 24 13 5 - 1 26 - 27 },
{ - 4 - 1 3 1 - 1 9 - 12 - 4 24 - 10 - 11 - 17 - 15 - 50 102 - 22 } ,
{ - 1 3 - 2 7 - 1 - 3 1 - 1 - 8 3 3 3 1 6 - 13 - 12 },
{ - 1 O 1 O O 2 - 3 O 6 - 1 - 2 - 5 - 2 - 4 12 O },
{ 0 1 - 1 2 - 1 - 1 1 0 - 3 1 0 1 1 2 - 4 - 3 >,
{ - 1 0 0 0 0 1 - 1 0 2 0 - 1 - 2 - 1 - 2 4 0 },
{ - 38 - 98 - 32 38 42 - 20 8 3 11 - 19 - 6 3 7 - 1 - 4 - 5 },
{ - 1 46 - 59 - 13 4 - 78 19 8 43 - 19 - 37 0 4 5 - 2 8 },
{ 10 14 29 25 21 22 - 13 54 6 - 37 - 45 - 55 - 7 - 22 - 40 - 20 },
{ 0 - 1 3 - 6 - 11 16 4 - 17 28 8 - 17 22 29 20 - 7 - 83 },
{ 2 2 4 1 1 1 - 2 1 - 6 4 8 6 - 1 6 - 23 O } ,
{ 0 0 0 - 1 - 3 3 1 - 2 3 2 - 2 1 2 1 3 0 } ,
{ 1 1 2 0 1 0 - 1 1 - 1 0 2 1 - 1 0 - 5 0 } ,
{ 0 0 0 0 - 1 1 0 - 1 1 1 - 1 0 1 0 1 0 } ,
{ - 9 26 - 72 - 1 21 80 48 10 - 3 - 12 17 8 8 - 16 - 1 9 } ,
{ 13 26 43 7 70 - 6 - 1 14 14 - 30 14 74 3 - 15 5 7 },
{ 1 - 15 34 6 - 32 25 48 - 11 21 3 - 58 21 1218 8 24 } ,
{ - 2 - 3 - 9 - 7 - 21 - 5 - 15 - 34 - 12 - 9 14 40 - 14 - 29 - 23 - 20 },
{ O - 2 3 1 O - 4 - 4 4 - 7 5 15 - 14 - 9 - 11 741 },
{ 0 - 1 - 2 - 1 - 4 - 1 - 2 - 4 - 2 0 0 0 - 1 2 2 3 } ,
{ 0 - 1 1 0 - 1 - 1 - 1 1 - 1 1 2 - 2 - 1 - 2 1 6} ,
{ 0 0 - 1 0 - 1 0 - 1 - 1 - 1 0 0 0 0 1 1 1 } ,
{ - 4 11 13 - 13 34 6 1 - 80 - 23 - 56 - 10 - 36 4 40 10 15 },
{ 2 - 7 36 14 - 26 - 24 60 - 7 10 - 9 34 - 8 29 - 45 - 11 20 },
{ - 3 - 9 - 18 2 - 57 7 - 28 - 6 - 4 - 47 - 7 11 - 15 - 19 - 13 12 },
{ O 2 - 10 - 4 11 - 9 - 42 2 - 12 8 28 - 13 31 - 22 - 3 11 },
{ 0 0 0 2 4 0 5 15 3 21 4 - 23 10 31 12 17 },
{ 0 0 - 2 - 1 2 0 - 6 0 0 1 - 1 1 4 2 - 3 - 9 } ,
{ 0 0 0 0 0 0 1 3 1 4 1 - 3 1 4 2 1 } ,
{ 0 0 - 1 0 1 0 - 2 0 0 1 0 0 1 1 0 - 2 },
{ - 2 9 3 - 2 - 4 - 7 11 - 16 2 - 11 23 - 36 61 - 25 - 9 - 26 },
{ 2 - 3 O 11 - 32 3 - 11 46 9 - 30 34 6 22 41 23 - 1 },
{ O - 1 - 12 - 6 5 13 - 51 1 - 10 10 - 31 16 55 O 4 18 },
{ 1 2 3 - 2 24 - 4 11 3 O 59 4 - 14 14 12 9 - 1 },
{ - 1 3 6 - 2 1 - 3 - 2 2 1 - 2 10 2 13 9 14 - 12 },
{ 1 - 3 1 4 - 6 5 - 10 7 - 5 8 - 22 19 3 7 9 32 },
{ O O - 3 - 3 12 1 - 2 - 24 - 441 - 30 - 4 - 9 - 42 - 14 3 } ,
{ O O 2 O 4 - 5 13 O 4 8 22 - 12 - 65 12 - 4 - 18 },
{ - 1 4 1 0 - 3 - 2 2 2 2 2 4 - 1 1 - 3 0 - 5 } ,
{ 1 - 1 - 1 3 - 2 3 - 6 - 2 - 2 5 - 15 O - 11 - 14 - 12 10 },
{ 0 0 - 2 - 2 4 1 - 4 - 5 2 6 9 - 7 - 21 2 - 7 - 25 },
{ O O O O - 2 - 2 4 8 2 - 7 20 - 3 - 7 28 6 - 5 },
{ - 1 2 3 - 1 0 - 1 - 2 1 0 - 1 2 0 0 5 3 - 2 } ,
{ 0 - 1 1 1 - 1 2 - 3 - 1 - 2 3 - 5 2 0 1 0 1 } ,
{ 0 0 - 1 - 1 0 - 1 2 - 2 1 5 9 - 2 - 1 6 6 - 8 } ,
{ O O 1 O O - 2 2 2 O - 2 4 - 1 3 2 3 10 };
cua nd o el co n ju n to de nú c le o de tra n s fo rm a d a s e cu n d a ria no s e p a ra b le es 2, el núc leo de tra n s fo rm a d a s e cu n d a ria no s e p a ra b le es:
{ - 121 O - 20 32 - 3 - 4 7 - 8 - 15 - 3 - 1 - 5 - 2 - 2 - 24 } ,
{ 33 - 2 19 108 O - 12 1 - 31 - 43 1 - 6 - 14 O - 10 - 3 - 4 } ,
{ 4 0 - 5 - 43 - 1 - 3 2 14 - 100 2 - 3 - 49 2 - 4 - 25 28 } ,
{ 4 0 2 10 0 1 0 - 4 23 0 2 2 0 0 - 2 103 },
{ 1 0 - 1 - 9 0 - 1 0 3 - 12 0 - 1 - 5 0 0 - 3 - 42 },
{ 2 0 1 3 0 0 0 - 1 6 0 0 1 0 0 0 24 ) ,
{ 0 0 0 - 3 0 0 0 1 - 4 0 0 - 2 0 0 - 1 - 9 },
{ 1 0 0 1 0 0 0 0 2 0 0 0 0 0 0 7 } ,
{ - 1 121 16 4 - 29 19 4 9 - 6 - 6 - 6 10 - 2 3 - 1 1 },
{ - 1 - 23 3 19 11 105 343 - 17 3 - 35 24 O 11 - 3 2 },
{ 1 - 7 - 2 - 7 - 2 - 31 - 2 O - 48 1 9 99 1 - 1 - 1 4 },
{ O - 3 0 1 1 7 0 1 10 00 - 17 0 - 1 4 0 } ,
{ O - 2 O - 1 O - 6 O - 1 - 5 O 2 10 O O - 2 3 },
{ 0 - 1 0 0 0 1 0 0 2 0 0 - 4 0 0 2 - 1 } ,
{ 0 - 1 0 0 0 - 2 0 0 - 1 0 0 3 0 0 0 0 } ,
{ 0 0 0 0 0 0 0 0 1 0 0 - 1 0 0 1 0 } ,
{ 24 17 - 120 11 12 9 22 - 13 1 0 1 4 - 1 - 6 - 7 - 1 } ,
{ - 5 1 14 - 30 7 46 - 8 - 105 - 5 3 - 6 14 - 1 - 40 - 8 O } ,
{ - 1 - 2 8 9 - 1 - 6 1 17 19 - 2 11 32 1 - 15 - 97 - 9 },
{ - 1 O 1 - 2 O O - 1 - 2 - 6 O - 2 O - 1 6 17 - 42 },
{ 0 0 3 1 0 0 0 2 3 0 2 2 0 - 2 - 9 17 },
{ 0 0 1 - 1 0 0 0 0 - 1 0 0 0 0 1 3 - 9 } ,
{ 0 0 1 0 0 0 0 0 1 0 1 1 0 0 - 3 3 } ,
{ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 - 2 },
{ 5 - 27 - 18 O - 117 8 - 28 - 8 2 - 20 - 9 - 4 - 1 5 - 8 - 1 },
{ - 1 4 - 2 - 8 12 - 29 - 9 - 25 7 8 - 100 O - 4 57 - 26 1 } ,
{ O 2 3 2 9 9 4 - 3 15 - 2 17 - 39 2 - 6 - 61 - 14 } ,
{ 0 0 0 0 1 - 3 0 0 - 3 0 - 1 6 0 2 - 1 6 } ,
{ 0 0 1 0 3 1 1 0 1 0 1 - 4 0 0 - 3 - 4 },
{ 0 0 0 0 0 0 0 0 - 1 0 0 1 0 0 - 1 2 } ,
{ 0 0 0 0 1 0 0 0 0 0 0 - 1 0 0 - 1 - 1 } ,
{ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 1 0 } ,
{ 3 - 12 17 - 7 - 32 - 3 117 - 7 4 30 - 10 2 - 8 1 2 - 1 } ,
{ - 1 2 - 3 - 1 - 3 - 19 - 10 32 10 13 - 63 - 3 - 2 - 95 10 - 2 },
{ O 1 - 1 2 3 3 - 8 - 5 5 - 3 1 - 4 - 1 18 24 - 4 },
{ 0 0 0 0 0 0 0 1 - 1 0 2 0 1 - 6 - 7 4 } ,
{ 2 - 5 6 - 3 12 - 4 32 - 1 O - 116 - 17 2 30 - 10 5 0 } ,
{ - 1 1 - 1 - 1 - 2 - 6 1 4 3 6 3 - 2 4 - 34 9 3 } ,
{ O O - 1 1 - 1 1 - 4 O 1 10 - 4 - 2 - 4 - 2 19 1 },
{ 0 0 0 0 0 0 0 0 0 0 0 0 1 0 - 1 - 1 },
{ 2 - 1 2 - 2 7 0 3 2 - 2 - 35 - 1 O - 102 - 4 0 0 } ,
{ - 1 O O - 2 O O 1 - 1 1 - 5 9 O 4 17 1 2 },
{ 0 0 0 1 0 0 - 1 0 2 4 - 1 - 1 8 - 2 4 0 } ,
{ 0 0 0 0 0 0 0 0 0 0 0 0 - 1 0 0 - 2 } ,
{ 1 - 2 2 0 1 0 - 3 1 - 1 - 3 3 0 - 69 0 - 2 2 } ,
{ 0 0 0 0 0 - 1 1 0 1 - 1 4 - 1 - 2 2 0 0 } ,
{ 0 0 0 0 0 0 0 - 1 1 0 - 1 - 1 6 1 1 0 } ,
{ 0 0 0 0 0 0 0 0 0 0 0 0 - 1 0 0 0 } ;
y cua nd o el co n ju n to de nú c le o de tra n s fo rm a d a se cu n d a ria no s e p a ra b le es 3, el núcleo de transformada s e cu n d a ria no s e p a ra b le es:
{ -115 15 29 -36 -6 4 -20 4 12 5 -3 -1 10 4 2 3 } ,
{ 37 51 -22 -98 18 15 -7 29 13 20 -4 - 3 - 4 6 9 - 3 } ,
{ 9 - 18 16 25 3 52 - 43 1 10 90 - 34 2 - 6 14 13 12 } ,
{ 2 0 - 6 5 - 3 - 13 4 26 2 - 17 - 12 19 12 53 37 84 } ,
{ 2 - 3 3 4 - 1 5 0 - 5 - 1 4 2 - 2 5 - 4 19 - 12 } ,
{ 1 0 - 2 1 0 - 3 1 4 3 - 3 - 1 4 1 4 6 8 } ,
{ 1 - 1 1 2 0 2 - 1 - 2 - 1 2 - 1 - 1 1 0 2 - 2 } ,
{ 0 0 - 1 1 0 - 1 1 1 1 - 1 0 2 0 2 2 3 } ,
{ 10 - 95 -4 - 59 - 50 - 17 - 7 - 17 17 6 5 9 11 0 - 9 6 } ,
{ - 29 7 - 80 11 - 5 - 45 35 - 7 - 2 66 25 3 - 9 - 1 -3 13 } ,
{ 8 34 12 - 17 - 38 16 0 - 73 - 46 8 11 - 35 - 12 - 20 - 9 50 } ,
{ 0 - 3 15 1 12 24 12 6 12 28 43 22 - 2 - 13 - 28 - 1 } ,
{ 1 5 0 1 0 - 2 - 4 6 7 - 7 - 10 11 - 7 3 - 20 45 } ,
{ 0 - 1 3 1 2 4 1 2 0 3 4 1 0 2 - 4 1 } ,
{ 1 2 0 0 0 - 1 - 1 1 2 - 1 - 2 2 - 1 - 1 - 3 7 } ,
{ 0 0 1 0 1 2 0 1 0 1 1 0 0 1 - 1 0 } ,
{ 23 23 45 63 - 87 - 51 - 5 16 29 23 - 7 33 - 3 1 - 2 } ,
{ - 8 - 47 7 - 13 67 - 8 - 2 21 - 45 5 20 - 65 - 10 1 18 18 } ,
{ - 8 1 - 59 7 - 7 - 14 - 57 - 3 - 9 - 19 - 40 - 19 - 4 -5 9 - 22 } ,
{ 1 6 7 - 3 - 40 7 5 5 - 53 12 12 - 22 18 35 28 - 37 } ,
{ - 1 0 - 2 0 3 8 15 - 1 6 9 21 11 18 - 16 24 - 13 } ,
{ 0 1 1 0 - 6 1 0 - 3 1 - 1 - 3 4 - 4 - 6 6 14 },
{ 0 0 - 1 0 1 2 4 0 1 1 4 2 4 - 1 2 0 } ,
{ 0 1 0 0 - 3 0 0 - 1 0 0 - 1 1 - 1 - 2 2 3 },
{ 3 8 - 15 14 - 12 23 7 - 11 70 - 10 25 - 75 28 46 - 20 1 } ,
{ 3 5 41 -4 - 13 - 35 39 2 1614 - 28 - 18 - 72 29 - 5 - 12 } ,
{ - 2 - 12 - 3 - 14 65 - 6 5 - 52 8 - 1 - 10 31 13 - 25 - 3 } ,
{ - 1 0 - 16 3 - 3 - 3 - 55 - 3 - 4 - 13 5 - 1 - 49 21 - 33 2 } ,
{ 0 - 1 2 - 1 - 10 1 1 27 - 37 7 8 - 10 15 37 - 36 - 15 } ,
{ 0 0 - 3 0 0 1 - 7 - 2 1 0 6 2 2 - 5 9 - 8 } ,
{ 0 0 0 0 - 1 0 1 5 - 7 1 0 0 2 4 - 2 1 } ,
{ 0 0 - 1 0 0 0 - 3 0 0 0 2 1 1 - 1 2 - 1 } ,
{ 4 3 1 2 9 2 1 0 - 12 0 - 4 2 56 - 10 - 13 19 } ,
{ 0 - 3 0 8 - 20 5 - 10 27 29 - 6 21 - 35 - 23 - 53 42 14 } ,
{ 0 1 7 - 3 - 5 - 17 41 8 3 13 - 64 - 27 22 - 18 1 -4 } ,
{ - 1 - 1 - 2 - 5 22 0 2 - 58 21 - 4 - 8 4 - 18 57 - 12 } ,
{ 1 2 - 3 2 - 2 3 4 2 4 0 - 5 1 4 9 - 22 - 4 } ,
{ 1 1 6 0 0 - 1 - 3 - 5 0 - 4 198 - 1 12 - 2 5 } ,
{ 0 - 2 1 0 0 - 1 - 2 25 5 1 10 - 17 - 15 - 41 - 25 17 } ,
{ 0 0 - 2 0 - 1 - 5 3 3 - 1 5 - 48 - 19 26 - 25 - 28 8 } ,
{ 2 1 0 0 2 0 - 1 0 - 3 0 3 3 6 - 2 52 } ,
{ 0 - 1 0 3 - 3 1 - 2 3 4 - 1 - 1 0 4 2 6 - 4 } ,
{0 0 1 0 - 2 - 4701- 1 10 3 - 10 13 19 - 4} ,
{ 0 0 0 - 1 3 0 1 - 5 4 1 - 3 - 6 0 - 16 - 12 4 },
{ 0 1 - 1 1 - 1 1 1 0 2 0 0 0 0 4 - 5 - 2 },
{ 0 1 2 0 0 0 - 1 - 2 0 - 1 4 2 2 1 - 3 2 },
{ 0 - 1 0 0 1 0 - 1 7 1 0 3 - 1 - 3 - 5 - 2 1 } ,
{ 0 0 - 1 0 0 - 2 0 0 0 0 - 6 - 2 2 1 4 0 }.
2. El método según la reivindicación 1, en donde en caso de que el bloque actual no se prediga utilizando un modo de MIP, intrapredicción basada en matriz, seleccionar el núcleo de transformada secundaria no separable para la transformada secundaria no separable del bloque actual, en donde el MIP incluye las etapas de promediado, multiplicación vectorial de matrices e interpolación lineal.
3. El método según las reivindicaciones 1 o 2, comprendiendo además el método:
deshabilitar una transformada secundaria no separable del bloque actual cuando el bloque actual se predice utilizando un modo MIP.
4. El método según la reivindicación 3, en donde deshabilitar una transformada secundaria no separable del bloque actual comprende:
ajustar un valor de una información de indicación de transformada secundaria no separable para el bloque actual a un valor predeterminado.
5. El método según cualquiera de las reivindicaciones 2 a 4, en donde, que el bloque actual se prediga o no usando un modo MIP, se indica de acuerdo con un valor de una información de indicación MIP.
6. El método según la reivindicación 1, que comprende:
obtener un índice de modo de intrapredicción de un bloque actual según un índice de modo de intrapredicción basada en matriz, MIP, del bloque actual y un tamaño del bloque actual;
seleccionar un núcleo de transformada secundaria no separable para una transformada secundaria no separable del bloque actual en base al índice de modo de intrapredicción del bloque actual.
7. El método según la reivindicación 6, en donde el índice de modo de intrapredicción del bloque actual se obtiene de acuerdo con una relación de mapeo entre el índice de modo MIP, el tamaño del bloque actual, la relación de mapeo se indica de acuerdo con una tabla predefinida.
8. Un producto de programa informático que comprende un código de programa para realizar el método según cualquiera de las reivindicaciones 1 a 7.
9. Un decodificador (30) que comprende:
una unidad de determinación configurada para determinar un modo de intrapredicción de un bloque actual, en donde el tamaño del bloque actual es 16 x 48; y
una unidad de selección configurada para determinar seleccionar una transformada secundaria no separable, NSST, del bloque actual en base al modo de intrapredicción determinado por el bloque actual:
cuando el modo de intrapredicción es menor que 0, el conjunto de núcleo de transformada secundaria no separable se ajusta a 1;
cuando el modo de intrapredicción es 0 o 1, el conjunto de núcleo de transformada secundaria no separable se ajusta a 0;
cuando el modo de intrapredicción es mayor o igual que 2 y menor o igual que 12, el conjunto de núcleo de transformada secundaria no separable se ajusta a 1;
cuando el modo de intrapredicción es mayor o igual que 13 y menor o igual que 23, , el conjunto de núcleo de transformada secundaria no separable se ajusta a 2;
cuando el modo de intrapredicción es mayor o igual que 24 y menor o igual que 44, , el conjunto de núcleo de transformada secundaria no separable se ajusta a 3;
cuando el modo de intrapredicción es mayor o igual que 45 y menor o igual que 55, , el conjunto de núcleo de transformada secundaria no separable se ajusta a 2; o
cuando el modo de intrapredicción es mayor o igual que 56, el conjunto de núcleo de transformada secundaria no separable se ajusta a 1;
en donde, cua nd o el co n ju n to de nú c leo de tra n s fo rm a d a s e cu n d a ria no s e p a ra b le es 0, el núc leo de tra n s fo rm a d a s e cu n d a ria no se p a ra b le es:
{ - 117 - 29 - 10 - 15 32 - 10 1 0 - 13 6 - 12 0 - 1 6 6 - 1 } , { 28 - 91 62 15 39 1 - 33 6 - 13 1 - 2 - 3 9 2 9 7 } ,
{ 18 47 - 11 - 10 92 50 - 11 - 6 - 37 -1 4 - 26 0 13 - 3 - 2 - 2 } , { 2 1 - 8 - 2 - 44 - 15 - 14 21 -1 0 1 - 36 - 12 - 4 5 2 35 9 } , { 4 9 - 2 1 4 2 7 - 4 29 9 - 9 - 15 14 10 110 - 11 } ,
{ 1 0 - 2 0 - 10 - 3 - 2 2 - 11 - 3 2 6 - 2 - 1 - 22 5 } ,
1 1 2 0 8 2 - 1 - 3 2 2 11 - 1 },
- 4 - 1 0 0 - 3 0 1 1 - 1 0 - 4 1 } ,
5 10 2 € - 28 29 - 20 - 12 10 - 3 - 7 - 8 8 - 2 - 7 },
112 12 - 15 - 12 - 24 - 15 9 30 - 15 3 3 0 2 },
- 20 - 15 14 37 - 104 - 20 - 18 4 - 28 - 4 - 1 - 3 - 22 },
13 6 - 7 30 2 - 1 34 - 86 - 62 - 20 1 4 },
- 5 1 - 4 5 - 11 - 3 - 4 19 4 0 - 18 - 13 },
2 1 0 5 5 1 0 - 5 1 1 12 0 },
-2 1 - 1 1 - 2 0 - 1 4 1 0 - 3 - 1 },
0 0 0 2 1 0 0 - 1 0 0 2 0 },
- 2029 - 99 6 - 7 - 12 38 - 30 - 5 - 12 - 4 - 5 0 },
- 26 - 16 - 4 - 99 - 46 10 26 3 - 17 23 4 - 4 28 },
31 - 22 9 3 10 26 - 13 - 92 - 41 16 - 16 - 22 0 },
8 5 26 - 14 12 - 1 14 42 - 11 0 8 76 },
0 0 5 - 1 7 - 6 - 5 19 - 6 - 17 - 2 - 25 4 },
2 5 0 0 - 1 0 2 0 0 3 - 6 },
0 2 0 1 - 1 - 1 3 - 1 - 1 1 0 0 },
1 2 0 0 0 0 1 0 0 0 - 2 },
- 20 44 14 9 - 32 102 - 11 - 1 - 11 34 - 3 - 13 },
6 - 10 30 21 - 2 3 34 - 40 97 23 - 21 5 },
4 - 11 - 27 7 11 - 14 21 37 - 3 6 2 - 76 },
3 1 - 2 - 6 3 - 1 - 33 13 - 3 - 7 - 3 - 4 },
- 2 1 - 2 3 - 5 1 - 4 0 - 4 9 33 },
0 - 1 - 1 - 1 - 1 - 2 2 - 6 - 2 - 2 - 1 } ,
- 1 0 0 1 - 2 0 - 1 0 - 1 1 3 },
0 - 1 - 1 0 0 - 1 1 -2 0 0 0 },
- 5 - 6 2 11 - 29 - 9 - 10 - 21 108 - 7 9 },
- 4 4 6 2 - 5 10 - 4 13 - 5 - 5 1 18 },
- 3 - 3 6 5 - 1 10 18 - 1 23 - 30 3 - 3 },
O- 3 - 2 6 0 3 - 4 0 6 - 5 - 35 },
- 4 8 1O4 - 10 2 4 2 - 27 3 - 4 },
- 1 3 3 2 - 4O- 4 - 2 10O- 1 },
0 - 2 - 3 4 1 - 1 0 3 - 1 7 - 1 6 } ,
0 0 - 1 0 1 -2 4 6 -2 0 1 },
- 2 - 1O3 - 7 - 1 - 2 - 3 11O1 },
- 1 1 1 0 - 1 1 - 1 2 - 3 - 3 1 2 },
- 2 - 1 1 1 1 2 3 - 1 1 - 1 0 0 } ,
0 0 0 2 1 0 - 1 0 1 - 1 - 3 },
2 4 0 0 - 1 2 0 1 0 - 4 1 - 1 },
0 0 1 1 0 - 1 0 - 1 0 1 0 0 },
- 1 - 1 2 0 0 0 1 0 0 0 2 },
0 0 0 0 - 1 0 0 - 1 2 2 1 0 0 } ;
cuando el conjunto de núcleo de transformada secundaria no separable es 1, el núcleo de transformada secundaria no separable es:
{ 110 - 43 - 19 - 359 - 5 14 7 1 - 3 - 11 - 4 - 2 3 - 4 5 - 5 },
{ - 49 - 19 17 -103 5 - 5 17 35 -27 - 13 - 10 1 1 - 8 - 1 6 - },
{ - 3 17 -7 39 - 6 - 28 27 17 - 101 - 3 - 24 13 5 - 1 26 - 27 },
{ - 4 - 1 3 1 - 1 9 - 12 - 4 24 - 10 - 11 - 17 - 15 - 50 102 - 22 },
{ - 1 3 - 2 7 - 1 - 31 - 1 - 8 3 3 3 1 6 - 13 - 12 },
{ - 1 0 1 0 0 2 - 3 0 6 - 1 - 2 - 5 - 2 - 4 12 0 >,
{ 0 1 - 1 2 - 1 - 1 1 0 - 3 1 0 1 1 2 - 4 - 3 },
{ - 1 0 0 0 0 1 - 1 0 2 0 - 1 - 2 - 1 - 2 4 0 } ,
{ - 38 - 98 - 32 38 42 - 20 8 3 11 - 19 - 6 3 7 - 1 - 4 - 5 },
{ - 1 46 - 59 - 13 4 - 78 19 8 43 - 19 - 37 0 4 5 - 2 8 },
{ 10 14 29 25 21 22 - 13 54 6 - 37 - 45 - 55 - 7 - 22 - 40 - 20 },
{ 0 - 1 3 - 6 - 11 16 4 - 17 28 8 - 17 22 29 20 - 7 - 83 },
{ 2 2 4 1 1 1 - 2 1 - 6 4 8 6 - 1 6 - 23 0 },
{ 0 0 0 - 1 - 3 31 - 2 3 2 - 2 1 2 1 3 0 },
{ 1 1 2 0 1 0 - 1 1 - 1 0 2 1 -1 0 - 5 0 },
{ 0 0 0 0 - 1 1 0 - 1 1 1 - 1 0 1 0 1 0 } ,
{ - 9 26 - 72 - 1 21 80 48 10 - 3 - 12 17 8 8 - 16 - 1 9 },
{ 13 26 43 7 70 - 6 - 1 14 14 - 30 14 74 3 - 15 5 7 },
{ 1 - 15 34 6 - 32 25 48 - 11 21 3 - 58 21 12 18 8 24 },
{ - 2 - 3 - 9 -7 - 21 - 5 - 15 - 34 - 12 - 9 14 40 - 14 - 29 - 23 - 20 },
{ 0 -2 3 1 0 -4 - 4 4 - 7 5 15 - 14 - 9 - 11 741 },
{ 0 - 1 - 2 - 1 - 4 - 1 - 2 - 4 - 2 0 0 0 - 1 2 2 3 } ,
{ 0 - 1 1 0 - 1 - 1 - 1 1 - 1 1 2 - 2 - 1 - 2 1 6} ,
{ 0 0 - 1 0 - 1 0 - 1 - 1 - 1 0 0 0 0 1 1 1 } ,
{ - 4 11 13 - 13 34 6 1 - 80 - 23 - 56 - 10 - 36 4 40 10 15 },
{ 2 - 7 36 14 - 26 - 24 60 - 7 10 - 9 34 - 8 29 - 45 - 11 20 },
{ - 3 - 9 - 18 2 - 57 7 - 28 - 6 - 4 - 47 -7 11 - 15 - 19 - 13 12 },
{ 0 2 - 10 - 4 11 - 9 - 42 2 - 12 8 28 - 13 31 - 22 - 3 11 },
{ 0 0 0 2 4 0 5 15 3 21 4 - 23 10 31 12 17 },
{ 0 0 - 2 - 1 2 0 - 6 0 0 1 - 1 1 4 2 - 3 - 9 } ,
{ 0 0 0 0 0 0 1 3 1 4 1 - 3 1 4 2 1 },
{ 0 0 - 1 0 1 0 - 2 0 0 1 0 0 1 1 0 - 2 } ,
{ - 2 9 3 -2 - 4 -7 11 - 16 2 - 11 23 - 36 61 -25 - 9 -26 },
{ 2 -3 0 11 -32 3 -11 46 9 - 30 34 6 22 41 23 -1 },
{ 0 -1 -12 -6 5 13 -51 1 -10 10 - 31 16 55 0 4 18 },
{ 1 2 3 -2 24 -4 11 3 0 59 4 -14 14 12 9 -1 },
{ - 1 3 6 - 2 1 -3 -2 2 1 - 2 10 2 13 9 14 -12 },
{ 1 -3 1 4 - 6 5 - 10 7 - 5 8 -22 19 3 7 9 32 },
{ 0 0 - 3 - 3 12 1 - 2 - 24 - 4 41 - 30 - 4 - 9 - 42 - 14 3 } ,
{ 0 0 2 0 4 - 5 13 0 4 8 22 - 12 - 65 12 - 4 - 18 } ,
{ - 1 4 1 0 - 3 - 2 2 2 2 2 4 - 1 1 - 3 0 - 5 } ,
{ 1 - 1 - 1 3 - 2 3 - 6 - 2 - 2 5 - 15 0 - 11 - 14 - 12 10 } ,
{ 0 0 - 2 - 2 4 1 - 4 - 5 2 6 9 - 7 - 21 2 - 7 - 25 } ,
{ 0 0 0 0 - 2 - 2 4 8 2 - 7 20 -3 -7 28 6 -5 },
{ - 1 2 3 - 1 0 -1 -2 1 0 - 1 2 0 0 5 3 -2 },
{ 0 - 1 1 1 - 1 2 - 3 - 1 - 2 3 - 5 2 0 1 0 1 } ,
{ 0 0 - 1 - 1 0 - 1 2 - 2 1 5 9 - 2 - 1 6 6 - 8 } ,
{ 0 0 1 0 0 - 2 2 2 0 - 2 4 -1 3 2 3 10 };
cuando el conjunto de núcleo de transformada secundaria no separable es 2, el núcleo de transformada secundaria no separable es:
{ -121 O -20 32 -3 -4 7 -8 -15 -3 -1 -5 -2 -2 -2 4 ) ,
{ 33 -2 19 108 O -12 1 -31 -43 1 -6 -14 O -10 -3 -4 >,
{ 40 - 5 -43 -1 -3 2 14 -100 2 -3 -48 2 -4 -25 28 ) ,
{ 4 0 2 10 0 10 -4 23 0 2 2 0 0 - 2 103 ),
{ 1 0 - 1 - 9 0 - 1 0 3 -12 0 - 1 - 5 0 0 - 3 -42 ) ,
{ 2 0 1 3 0 0 0 -1 6 0 0 1 0 0 0 24 ),
{ O O O -3 O O O 1 -4 O O -2 O O - 1 - 9 },
{ 1 0 0 1 0 0 0 0 2 0 0 0 0 0 0 7 },
{ -1 121 16 4 - 29 19 4 9 - 6 - 6 -6 10 -2 3 -1 1 },
{ - 1 - 23 3 19 11105 3 43 -17 3 - 35 24 O 11 - 3 2 },
{ 1 - 7 - 2 - 7 -2 -31 -2 O -48 1 9 99 1 - 1 -1 4 },
{ O -3 O 1 1 7 O 1 10 O O -17 O - 1 4 O },
{ O -2 O -1 O - 6 O -1 -5 O 2 10 O O -2 3 },
{ 0 - 1 0 0 0 1 0 0 2 0 0 - 4 0 0 2 - 1 ) ,
{ 0 - 1 0 0 0 - 2 0 0 - 1 0 0 3 0 0 0 0 ) ,
{ 0 0 0 0 0 0 0 0 1 0 0 -1 0 0 1 0),
{ 24 17 -120 11 12 9 22 -13 1 0 1 4 -1 -6 -7 -1 } ,
{ - 51 14 -30 7 46 -8 -105 -5 3 -6 14 -1 -40 -8 O ) ,
{ - 1 - 2 8 9 - 1 - 6 1 17 19 -2 11 32 1 - 15 -97 -9 },
{ - 1 O 1 -2 O O -1 -2 - 6 O -2 O - 1 6 17 -42 } ,
{ 0 0 3 1 0 0 0 2 3 0 2 2 0 - 2 -9 17 ),
{ 0 0 1 - 1 0 0 0 0 - 1 0 0 0 0 1 3 - 9 } ,
{ 0 0 1 0 0 0 0 0 1 0 1 1 0 0 - 3 3 } ,
{ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 - 2 } ,
{ 5 -27 -18 O -117 8 -28 -8 2 -20 -9 -4 - 15 - 8 - 1 },
{ - 14 - 2 -8 12 -29 -9 -25 7 8 -100 O -4 57 -26 1 } ,
{ O 2 3 2 9 9 4 -3 15 -2 17 -39 2 -6 -61 -14 } ,
{ 0 0 0 0 1 - 3 0 0 - 3 0 - 1 6 0 2 - 1 6 } ,
{ 0 0 1 0 3 1 1 0 1 0 1 - 4 0 0 - 3 - 4 } ,
{ 0 0 0 0 0 0 0 0 - 1 0 0 1 0 0 - 1 2 },
{ 0 0 0 0 1 0 0 0 0 0 0 - 1 0 0 - 1 - 1 } ,
{ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 1 0},
{ 3 -12 17 -7 -32 -3 117 -7 4 30 -10 2 - 8 1 2 - 1 } ,
{ - 12 - 3 - 1 -3 - 19 - 10 32 10 13 -63 -3 -2 -95 10 -2 },
{ O 1 -1 2 3 3 -8 -5 5 -3 1 -4 -1 1824 -4 },
{ 0 0 0 0 0 0 0 1 - 1 0 2 0 1 - 6 - 7 4 } ,
{ 2 -5 6 -3 12 -4 32 -1 O -116 -17 2 30 -10 50 } ,
{ - 1 1 - 1 - 1 - 2 - 6 1 4 3 6 3 - 2 4 -34 9 3 } ,
{ O O -1 1 -1 1 -4 O 1 10 -4 -2 -4 -2 19 1 } ,
{ 0 0 0 0 0 0 0 0 0 0 0 0 1 0 - 1 - 1 },
{ 2 -1 2 -2 7 O 3 2 -2 -35 -1 O -102 -4 00 } ,
{ -1 O O -2 O O 1 -1 1 -5 9 O 4 17 1 2 } ,
{ 0 0 0 1 0 0 - 1 0 2 4 - 1 - 1 8 - 2 4 0 } ,
{ 0 0 0 0 0 0 0 0 0 0 0 0 - 1 0 0 - 2 } ,
{ 1 - 2 2 0 1 0 - 3 1 - 1 - 3 3 0 - 69 0 - 2 2 } ,
{ 0 0 0 0 0 - 1 1 0 1 - 1 4 - 1 - 2 2 0 0 } ,
{ 0 0 0 0 0 0 0 - 1 1 0 - 1 - 1 6 1 1 0 } ,
{ 0 0 0 0 0 0 0 0 0 0 0 0 - 1 0 0 0 } ;
y cua nd o el co n ju n to de nú c le o de tra n s fo rm a d a se cu n d a ria no s e p a ra b le es 3, el núcleo de transformada s e cu n d a ria no s e p a ra b le es:
{ -115 15 29 -36 -6 4 -20 4 12 5 -3 -1 10 4 2 3 } ,
{ 37 51 -22 -98 18 15 -7 29 13 20 -4 - 3 - 4 6 9 - 3 } ,
{ 9 - 18 16 25 3 52 - 43 1 10 90 - 34 2 - 6 14 13 12 } ,
{ 2 0 - 6 5 - 3 - 13 4 26 2 - 17 - 12 19 12 53 37 84 } ,
{ 2 - 3 3 4 - 1 5 0 - 5 - 1 4 2 - 2 5 - 4 19 - 12 } ,
{ 1 0 - 2 1 0 - 3 1 4 3 - 3 - 1 4 1 4 6 8 } ,
{ 1 - 1 1 2 0 2 - 1 - 2 - 1 2 - 1 - 1 1 0 2 - 2 } ,
{ 0 0 - 1 1 0 - 1 1 1 1 - 1 0 2 0 2 2 3 } ,
{ 10 - 95 -4 - 59 - 50 - 17 - 7 - 17 17 6 5 9 11 0 - 9 6 } ,
{ - 29 7 - 80 11 - 5 - 45 35 - 7 - 2 66 25 3 - 9 - 1 - 3 13 } ,
{ 8 34 12 - 17 - 38 16 0 - 73 - 46 8 11 - 35 - 12 - 20 - 9 50 } ,
{ 0 - 3 15 1 12 24 12 6 12 28 43 22 - 2 - 13 - 28 - 1 } ,
{ 1 5 0 1 0 - 2 - 4 6 7 - 7 - 10 11 - 7 3 - 20 45 } ,
{ 0 - 1 3 1 2 4 1 2 0 3 4 1 0 2 - 4 1 } ,
{ 1 2 0 0 0 - 1 - 1 1 2 - 1 - 2 2 - 1 - 1 - 3 7 } ,
{ 0 0 1 0 1 2 0 1 0 1 1 0 0 1 - 1 0 } ,
{ 23 23 45 6 3 - 87 - 51 - 5 16 29 23 - 7 33 - 3 1 - 2 } ,
{ - 8 - 47 7 - 13 67 - 8 - 2 21 - 45 5 20 - 65 - 10 1 18 18 } ,
{ - 8 1 - 59 7 - 7 - 14 - 57 - 3 - 9 - 19 - 40 - 19 - 4 - 5 9 - 22 } ,
{ 1 6 7 - 3 - 40 7 5 5 - 53 12 12 - 22 18 35 28 - 37 } ,
{ - 1 0 - 2 0 3 8 15 - 1 6 9 21 11 18 - 16 24 - 13 } ,
{ 0 1 1 0 - 6 1 0 - 3 1 - 1 - 3 4 - 4 - 6 6 14 },
{ 0 0 - 1 0 1 2 4 0 1 1 4 2 4 - 1 2 0 } ,
{ 0 1 0 0 - 3 0 0 - 1 0 0 - 1 1 - 1 - 2 2 3 },
{ 3 8 - 15 14 - 12 23 7 - 11 70 - 10 25 - 75 28 46 - 20 1 } ,
{ 3 5 41 -4 - 13 - 35 39 2 16 14 - 28 - 18 - 72 29 - 5 - 12 } ,
{ - 2 - 12 - 3 - 14 65 - 6 5 - 52 8 - 1 - 10 3 1 13 - 25 - 3 } ,
{ - 1 0 - 16 3 - 3 - 3 - 55 - 3 - 4 - 13 5 - 1 - 49 21 - 33 2 } ,
{ 0 - 1 2 - 1 - 10 1 1 27 - 37 7 8 - 10 15 37 - 36 - 15 } ,
{ 0 0 - 3 0 0 1 - 7 - 2 1 0 6 2 2 - 5 9 - 8 },
{ 0 0 0 0 - 1 0 1 5 - 7 1 0 0 2 4 - 2 1 } ,
{ 0 0 - 1 0 0 0 - 3 0 0 0 2 1 1 - 1 2 - 1 } ,
{ 4 3 1 2 9 2 1 0 - 12 0 - 4 2 56 - 10 - 13 19 } ,
{ 0 - 3 08 - 20 5 - 10 27 29 - 6 21 - 35 - 23 - 53 42 14 } ,
{ 0 1 7 -3 - 5 - 17 41 8 3 13 - 64 - 27 22 - 18 1 -4 } ,
{ - 1 - 1 - 2 - 5 22 0 2 - 58 21 - 4 - 8 4 - 1 8 57 - 12 } ,
{ 1 2 - 3 2 - 2 3 4 2 4 0 - 5 1 4 9 - 22 - 4 },
{ 1 1 6 0 0 - 1 - 3 - 5 0 - 4 198 - 1 12 - 2 5 },
{ 0 - 2 1 0 0 - 1 - 2 25 5 1 10 - 17 - 15 - 41 - 25 17 },
{ 0 0 - 2 0 - 1 - 5 3 3 - 1 5 - 48 - 19 26 - 25 - 28 8 },
{ 2 1 0 0 2 0 - 1 0 - 3 0 3 3 6 - 2 5 2 } ,
{ 0 - 1 0 3 - 3 1 - 2 3 4 - 1 - 1 0 4 2 6 - 4 } ,
{ 0 0 1 0 - 2 - 4 7 0 1 - 1 10 3 - 10 13 19 - 4 } ,
{ 0 0 0 - 1 3 0 1 - 5 4 1 - 3 - 6 0 - 16 - 12 4 } ,
{ 0 1 - 1 1 - 1 1 1 0 2 0 0 0 0 4 - 5 - 2 } ,
{ 0 1 2 0 0 0 - 1 - 2 0 - 1 4 2 2 1 - 3 2 } ,
{ 0 - 1 0 0 1 0 - 1 7 1 0 3 - 1 - 3 - 5 - 2 1 } ,
{ 0 0 - 1 0 0 - 2 0 0 0 0 - 6 - 2 2 1 4 0 } .
10. El decodificador (30) según la reivindicación 9, en donde en caso de que el bloque actual no se prediga utilizando un modo de MIP, intrapredicción basada en matriz, seleccionar el núcleo de transformada secundaria no separable para la transformada secundaria no separable del bloque actual, en donde el MIP incluye las etapas de promediado, multiplicación vectorial de matrices e interpolación lineal.
11. El decodificador (30) según las reivindicaciones 9 o 10, comprendiendo además el decodificador (30): deshabilitar una transformada secundaria no separable del bloque actual cuando el bloque actual se predice utilizando un modo MIP.
12. El decodificador (30) según la reivindicación 11, en donde deshabilitar una transformada secundaria no separable del bloque actual comprende:
ajustar un valor de una información de indicación de transformada secundaria no separable para el bloque actual a un valor predeterminado.
13. El decodificador (30) según cualquiera de las reivindicaciones 10 a 12, en donde, que el bloque actual se prediga usando un modo MIP o no, se indica de acuerdo con un valor de una información de indicación MIP.
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US201962835487P | 2019-04-17 | 2019-04-17 | |
| PCT/CN2020/084864 WO2020211765A1 (en) | 2019-04-17 | 2020-04-15 | An encoder, a decoder and corresponding methods harmonzting matrix-based intra prediction and secoundary transform core selection |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| ES2975941T3 true ES2975941T3 (es) | 2024-07-18 |
Family
ID=72838040
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| ES20790945T Active ES2975941T3 (es) | 2019-04-17 | 2020-04-15 | Armonización de intrapredicción basada en matriz y selección de núcleo de transformada secundaria |
Country Status (13)
| Country | Link |
|---|---|
| US (2) | US12177434B2 (es) |
| EP (2) | EP3922034B1 (es) |
| JP (3) | JP7366149B2 (es) |
| KR (2) | KR20250152693A (es) |
| CN (1) | CN113632488A (es) |
| AU (1) | AU2020259542A1 (es) |
| BR (1) | BR112021019205A2 (es) |
| CA (1) | CA3132225A1 (es) |
| ES (1) | ES2975941T3 (es) |
| HU (1) | HUE065930T2 (es) |
| MX (2) | MX2021012405A (es) |
| PL (1) | PL3922034T3 (es) |
| WO (1) | WO2020211765A1 (es) |
Families Citing this family (11)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN118118665A (zh) * | 2019-04-16 | 2024-05-31 | Lg电子株式会社 | 解码设备、编码设备和发送设备 |
| JP7197727B2 (ja) * | 2019-04-16 | 2022-12-27 | エルジー エレクトロニクス インコーポレイティド | 映像コーディングにおけるマトリクスベースのイントラ予測のための変換 |
| WO2020213945A1 (ko) * | 2019-04-16 | 2020-10-22 | 엘지전자 주식회사 | 인트라 예측 기반 영상 코딩에서의 변환 |
| CN113785566B (zh) * | 2019-04-27 | 2024-09-20 | 数码士有限公司 | 基于帧内预测处理视频信号的方法和设备 |
| WO2020226424A1 (ko) * | 2019-05-08 | 2020-11-12 | 엘지전자 주식회사 | Mip 및 lfnst를 수행하는 영상 부호화/복호화 방법, 장치 및 비트스트림을 전송하는 방법 |
| WO2020246806A1 (ko) * | 2019-06-03 | 2020-12-10 | 엘지전자 주식회사 | 매트릭스 기반 인트라 예측 장치 및 방법 |
| WO2020260248A1 (en) * | 2019-06-25 | 2020-12-30 | Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. | Coding using matrix based intra-prediction and secondary transforms |
| US11917136B2 (en) | 2021-07-15 | 2024-02-27 | Tencent America LLC | Intra mode coding |
| KR20250034398A (ko) * | 2022-07-04 | 2025-03-11 | 광동 오포 모바일 텔레커뮤니케이션즈 코포레이션 리미티드 | 디코딩 방법, 인코딩 방법, 디코더 및 인코더 |
| WO2024080623A1 (ko) * | 2022-10-12 | 2024-04-18 | 삼성전자 주식회사 | Ai에 기반한 영상 부호화 장치 및 영상 복호화 장치, 및 이들에 의한 영상의 부호화 및 복호화 방법 |
| WO2025075438A1 (ko) * | 2023-10-05 | 2025-04-10 | 엘지전자 주식회사 | Mip 기반 영상 부호화/복호화 방법, 비트스트림을 전송하는 방법 및 비트스트림을 저장한 기록 매체 |
Family Cites Families (20)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN100413342C (zh) * | 2005-03-09 | 2008-08-20 | 浙江大学 | 用于视频或图像压缩的帧内预测模式编解码的方法和装置 |
| US20150016533A1 (en) * | 2013-07-12 | 2015-01-15 | Qualcomm Incorporated | Intra motion compensation extensions |
| US20160255371A1 (en) * | 2013-10-18 | 2016-09-01 | Lg Electronics Inc. | Method and apparatus for coding/decoding 3d video |
| US10271052B2 (en) * | 2014-03-14 | 2019-04-23 | Qualcomm Incorporated | Universal color-space inverse transform coding |
| CN106576178B (zh) | 2014-06-19 | 2020-03-13 | Vid拓展公司 | 采用块向量导出的帧内块复制编码的方法 |
| US9883184B2 (en) * | 2014-10-07 | 2018-01-30 | Qualcomm Incorporated | QP derivation and offset for adaptive color transform in video coding |
| US10638140B2 (en) * | 2015-05-29 | 2020-04-28 | Qualcomm Incorporated | Slice level intra block copy and other video coding improvements |
| EP3335422B1 (en) | 2015-12-23 | 2021-12-01 | Huawei Technologies Co., Ltd. | Method and apparatus for transform coding with block-level transform selection and implicit signaling within hierarchical partitioning |
| US10623774B2 (en) | 2016-03-22 | 2020-04-14 | Qualcomm Incorporated | Constrained block-level optimization and signaling for video coding tools |
| EP3453181B1 (en) * | 2016-05-04 | 2025-10-29 | Sharp Kabushiki Kaisha | Methods and apparatuses for coding transform data |
| WO2018026118A1 (ko) | 2016-08-01 | 2018-02-08 | 한국전자통신연구원 | 영상 부호화/복호화 방법 |
| US11095893B2 (en) | 2016-10-12 | 2021-08-17 | Qualcomm Incorporated | Primary transform and secondary transform in video coding |
| WO2018135885A1 (ko) * | 2017-01-19 | 2018-07-26 | 가온미디어 주식회사 | 변환 처리를 제공하는 영상 복호화 및 부호화 방법 |
| US11190794B2 (en) * | 2019-02-12 | 2021-11-30 | Tencent America LLC | Method and apparatus for video coding |
| MX2021012230A (es) * | 2019-04-12 | 2021-11-03 | Beijing Bytedance Network Tech Co Ltd | Construccion de lista de modos mas probables para intraprediccion basada en matriz. |
| CN118118665A (zh) * | 2019-04-16 | 2024-05-31 | Lg电子株式会社 | 解码设备、编码设备和发送设备 |
| WO2020213945A1 (ko) * | 2019-04-16 | 2020-10-22 | 엘지전자 주식회사 | 인트라 예측 기반 영상 코딩에서의 변환 |
| JP7197727B2 (ja) * | 2019-04-16 | 2022-12-27 | エルジー エレクトロニクス インコーポレイティド | 映像コーディングにおけるマトリクスベースのイントラ予測のための変換 |
| KR102744182B1 (ko) * | 2019-04-16 | 2024-12-19 | 두인 비전 컴퍼니 리미티드 | 인트라 코딩 모드에서의 행렬 도출 |
| MX2021012063A (es) * | 2019-04-16 | 2021-11-03 | Panasonic Ip Corp America | Codificador, decodificador, metodo de codificacion y metodo de decodificacion. |
-
2020
- 2020-04-15 CA CA3132225A patent/CA3132225A1/en active Pending
- 2020-04-15 BR BR112021019205A patent/BR112021019205A2/pt unknown
- 2020-04-15 MX MX2021012405A patent/MX2021012405A/es unknown
- 2020-04-15 AU AU2020259542A patent/AU2020259542A1/en active Pending
- 2020-04-15 KR KR1020257034754A patent/KR20250152693A/ko active Pending
- 2020-04-15 ES ES20790945T patent/ES2975941T3/es active Active
- 2020-04-15 JP JP2021561739A patent/JP7366149B2/ja active Active
- 2020-04-15 EP EP20790945.8A patent/EP3922034B1/en active Active
- 2020-04-15 EP EP24150191.5A patent/EP4322531A3/en active Pending
- 2020-04-15 KR KR1020217029931A patent/KR102874861B1/ko active Active
- 2020-04-15 PL PL20790945.8T patent/PL3922034T3/pl unknown
- 2020-04-15 HU HUE20790945A patent/HUE065930T2/hu unknown
- 2020-04-15 CN CN202080009796.0A patent/CN113632488A/zh active Pending
- 2020-04-15 WO PCT/CN2020/084864 patent/WO2020211765A1/en not_active Ceased
-
2021
- 2021-09-27 US US17/486,082 patent/US12177434B2/en active Active
- 2021-10-08 MX MX2025001545A patent/MX2025001545A/es unknown
-
2023
- 2023-08-17 JP JP2023133101A patent/JP7571227B2/ja active Active
-
2024
- 2024-10-09 JP JP2024177424A patent/JP2025010162A/ja active Pending
- 2024-11-13 US US18/946,139 patent/US20250088631A1/en active Pending
Also Published As
| Publication number | Publication date |
|---|---|
| MX2021012405A (es) | 2021-11-12 |
| KR20250152693A (ko) | 2025-10-23 |
| EP4322531A2 (en) | 2024-02-14 |
| US20250088631A1 (en) | 2025-03-13 |
| EP3922034A4 (en) | 2022-08-03 |
| HUE065930T2 (hu) | 2024-06-28 |
| JP2022529030A (ja) | 2022-06-16 |
| MX2025001545A (es) | 2025-04-02 |
| KR102874861B1 (ko) | 2025-10-21 |
| NZ779326A (en) | 2024-03-22 |
| JP7366149B2 (ja) | 2023-10-20 |
| JP2025010162A (ja) | 2025-01-20 |
| PL3922034T3 (pl) | 2024-05-20 |
| CA3132225A1 (en) | 2020-10-22 |
| AU2020259542A1 (en) | 2021-09-16 |
| BR112021019205A2 (pt) | 2021-11-30 |
| EP3922034B1 (en) | 2024-02-07 |
| EP3922034A1 (en) | 2021-12-15 |
| US12177434B2 (en) | 2024-12-24 |
| EP4322531A3 (en) | 2024-04-10 |
| US20220014742A1 (en) | 2022-01-13 |
| KR20210125088A (ko) | 2021-10-15 |
| WO2020211765A1 (en) | 2020-10-22 |
| JP7571227B2 (ja) | 2024-10-22 |
| CN113632488A (zh) | 2021-11-09 |
| JP2023157955A (ja) | 2023-10-26 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| ES2975941T3 (es) | Armonización de intrapredicción basada en matriz y selección de núcleo de transformada secundaria | |
| ES2989421T3 (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 | |
| JP7375125B2 (ja) | ルーマおよびクロマ成分についてibc専用バッファおよびデフォルト値リフレッシュを使用するエンコーダ、デコーダおよび対応する方法 | |
| ES2982884T3 (es) | Un codificador, un decodificador y métodos correspondientes para realizar el desbloqueo de croma para bloques que usan la codificación de croma conjunta | |
| ES2973667T3 (es) | Un codificador de video, un decodificador de video y métodos correspondientes | |
| ES3024974T3 (en) | An encoder, a decoder and corresponding methods for sub-block partitioning mode | |
| ES2974160T3 (es) | Decodificador de video y métodos | |
| ES2987742T3 (es) | Método y aparato para intrapredicción | |
| ES2993252T3 (en) | An encoder, a decoder and corresponding methods using ibc merge list | |
| ES2996341T3 (en) | Video processing method, video processing apparatus, encoder, decoder, medium and computer program | |
| ES2992657T3 (en) | Method and apparatus for affine based inter prediction of chroma subblocks | |
| ES3009580T3 (en) | Relation between partition constraint elements | |
| ES2972326T3 (es) | Un codificador, un decodificador y métodos correspondientes para el modo de fusión | |
| ES2998459T3 (en) | Apparatus and method for deblocking filter in video coding | |
| ES2994111T3 (en) | Method, computer program product and device for decoding cbf flags | |
| ES2985369T3 (es) | Un codificador, un decodificador y métodos correspondientes de derivación de croma de modo intra | |
| ES2984321T3 (es) | Método y aparato de restricciones a nivel de bloque dependientes de modo y tamaño | |
| ES2966509T3 (es) | Método y dispositivo de partición de imagen | |
| ES2988839T3 (es) | Método y aparato de modelización lineal de componentes cruzados para intrapredicción | |
| BR112021013644A2 (pt) | Codificador, decodificador e métodos correspondentes de adaptação de filtro de deblocagem | |
| BR122023021035A2 (pt) | Método de compactação do vetor de movimento, meio de armazenamento legível por computador não transitório, codificador, decodificador e meio de armazenamento | |
| ES2998460T3 (en) | Method and apparatus for intra prediction | |
| ES2983321T3 (es) | Método y aparato de filtrado de interpolación para la codificación predictiva | |
| ES3037274T3 (en) | A video encoder, a video decoder and corresponding methods |