ES2812150T3 - Procedimiento, aparato y programa para codificar datos de imágenes en un flujo de bits - Google Patents

Procedimiento, aparato y programa para codificar datos de imágenes en un flujo de bits Download PDF

Info

Publication number
ES2812150T3
ES2812150T3 ES17190957T ES17190957T ES2812150T3 ES 2812150 T3 ES2812150 T3 ES 2812150T3 ES 17190957 T ES17190957 T ES 17190957T ES 17190957 T ES17190957 T ES 17190957T ES 2812150 T3 ES2812150 T3 ES 2812150T3
Authority
ES
Spain
Prior art keywords
unit
bit stream
prediction
encoding
mode
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
ES17190957T
Other languages
English (en)
Inventor
Christopher James Rosewarne
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Canon Inc
Original Assignee
Canon Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Canon Inc filed Critical Canon Inc
Application granted granted Critical
Publication of ES2812150T3 publication Critical patent/ES2812150T3/es
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/12Selection from among a plurality of transforms or standards, e.g. selection between discrete cosine transform [DCT] and sub-band transform or selection between H.263 and H.264
    • H04N19/122Selection of transform size, e.g. 8x8 or 2x4x8 DCT; Selection of sub-band transforms of varying structure or type
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/105Selection of the reference unit for prediction within a chosen coding or prediction mode, e.g. adaptive choice of position and number of pixels used for prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/11Selection of coding mode or of prediction mode among a plurality of spatial predictive coding modes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/13Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/46Embedding additional information in the video signal during the compression process
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/593Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial prediction techniques
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/91Entropy coding, e.g. variable length coding [VLC] or arithmetic coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/96Tree coding, e.g. quad-tree coding

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)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Time-Division Multiplex Systems (AREA)

Abstract

Procedimiento para codificar datos de imagen en un flujo de bits, comprendiendo el procedimiento: codificar, en el flujo de bits, un indicador de división, para indicar si una zona de una unidad de codificación más grande está dividida en zonas, y datos, para indicar un valor de modo de predicción (808) que indica si se utiliza una interpredicción o una intrapredicción para una unidad de codificación de destino, y para indicar un modo de partición que indica si la unidad de codificación de destino contiene una unidad de predicción o está dividida en más de una unidad de predicción (1101, 1103); y cuando la unidad de codificación de destino no está dividida en zonas más pequeñas, se utiliza la intrapredicción para la unidad de codificación de destino, y la unidad de codificación de destino está dividida en una serie de unidades de predicción: codificar aritméticamente indicadores, cada uno de los cuales es para una unidad diferente de la serie de unidades de predicción en la unidad de codificación de destino, para formar un bloque (801) de datos codificados de manera adyacente en el flujo de bits, indicando el indicador (809) si se utiliza un modo más probable o un modo restante para una intrapredicción de una unidad de predicción (1104, 1201); derivar información de codificación, siendo cada fragmento de la misma para una diferente de la serie de unidades de predicción en la unidad de codificación de destino, para formar otro bloque (802) de datos codificados de manera adyacente en el flujo de bits, indicando cada fragmento de la información un valor de índice de modo más probable o un valor de modo restante utilizado para codificar la unidad de predicción (1106, 1202); y codificar la unidad de codificación de destino en el flujo de bits utilizando los modos de intrapredicción de la serie de unidades de predicción tal como indican los indicadores y la información (1204), en el que, en el flujo de bits, el otro bloque (802) de información codificada por derivación está situado posterior al bloque (801) de indicadores codificados aritméticamente.

Description

DESCRIPCIÓN
Procedimiento, aparato y programa para codificar datos de imágenes en un flujo de bits
SECTOR TÉCNICO
La presente invención se refiere, en general, al procesamiento de señales de video digitales y, en concreto, a un procedimiento, aparato y sistema para codificar y descodificar los coeficientes residuales de una unidad de transformación (TU, Transform Unit), en los que la unidad de transformación (TU) puede tener una forma cuadrada o una forma no cuadrada.
ESTADO DE LA TÉCNICA ANTERIOR
Actualmente existen muchas aplicaciones para la codificación de video, que incluyen aplicaciones para la transmisión y el almacenamiento de datos de video. Se han desarrollado también muchos estándares de codificación de video, y otros están actualmente en desarrollo. Los recientes desarrollos en la estandarización de la codificación de video han llevado a la formación de un grupo llamado “Equipo de colaboración conjunta sobre codificación de video” (JCT-VC, Joint Collaborative Team on Video Coding). El Equipo de colaboración conjunta sobre codificación de video (JCT-VC) incluye miembros del Grupo de estudio 16, Cuestión 6 (SG16/Q6, Study Group 16, Question 6) del Sector de estandarización de las Telecomunicaciones (ITU-T) de la Unión internacional de las Telecomunicaciones (ITU, International Telecommunications Union), conocido como el Grupo de Expertos en Codificación de video (VCEG, Video Coding Experts Group), y miembros del Grupo de trabajo 11, Subcomité 29, Comité técnico conjunto 1 de las Organizaciones internacionales para la estandarización/Comisión electrotécnica internacional (ISO/IEC JTC1/SC29/WG11, International Organisations for Standardisation/International Electrotechnical Commission Joint Technical Committee 1/Subcommittee 29/Working Group 11), conocido también como el Grupo de expertos en imágenes en movimiento (MPEG, Moving Picture Experts Group).
El equipo de colaboración conjunta en codificación de video (JCT-VC) tiene el objetivo de generar un nuevo estándar de codificación de video para mejorar significativamente un estándar de codificación de video actualmente existente, conocido como “H.264/MPEG-4 AVC”. El estándar H.264/MPEG-4 AVC es en sí mismo una gran mejora con respecto a los estándares de codificación de video anteriores, tales como el MPEG-4 y e1H.263 de la ITU-T. El nuevo estándar de codificación de video en desarrollo ha sido denominado “codificación de video de alta eficiencia (HEVC, High Efficiency Video Coding)”. El equipo de colaboración conjunta sobre codificación de video, JCT-VC, está considerando también las dificultades de implementación que surgen de la tecnología propuesta para la codificación de video de alta eficiencia (HEVC), que crea dificultades al escalar implementaciones de la norma para funcionar a altas resoluciones o altas velocidades de fotogramas.
Un área del estándar de codificación de video H.264/MPEG-4 AVC que presenta dificultades para lograr una alta eficiencia de compresión es la codificación de los coeficientes residuales utilizados para representar los datos de video. Los datos de video están formados por una secuencia de fotogramas, y cada fotograma tiene una matriz bidimensional de muestras. Habitualmente, los fotogramas incluyen un canal de luminancia y dos canales de crominancia. Cada fotograma se descompone en uno o varios fragmentos. Cada fragmento contiene una o varias unidades de codificación más grandes (LCU, Largest Coding Units). Las unidades de codificación más grandes (LCU) tienen un tamaño fijo, siendo las dimensiones entre bordes una potencia de dos, y tienen la misma anchura y altura, tal como 64 muestras de luma. Una característica del estándar de codificación de video de alta eficiencia (HEVC) en desarrollo es “fragmentos de granularidad fina”. Cuando la función de fragmentos de granularidad fina está habilitada, los límites de los fragmentos no están limitados a los límites de la unidad de codificación más grande (LCU). Los fragmentos de granularidad fina pueden estar habilitados al nivel del flujo de bits.
Un árbol de codificación permite la subdivisión de cada unidad de codificación más grande (LCU) en cuatro zonas del mismo tamaño, teniendo cada una la mitad de la anchura y la altura de la unidad de codificación más grande (LCU) padre. Cada una de las zonas puede ser subdividida en cuatro zonas del mismo tamaño. Cuando una zona no se subdivide más, existe una unidad de codificación, que ocupa la totalidad de la zona. Dicho proceso de subdivisión se puede aplicar de manera recursiva hasta que el tamaño de una zona sea la unidad de codificación más pequeña (SCU, Smallest Coding Unit), y se deduzca una unidad de codificación (CU, Codification Unit) del tamaño de la unidad de codificación más pequeña (SCU). La subdivisión recursiva de una unidad de codificación más grande en una jerarquía de unidades de codificación tiene una estructura de árbol cuaternario y se conoce como árbol de codificación. Las unidades de codificación (CU) o zonas tienen una propiedad conocida como su “profundidad”, que hace referencia a su posición en el árbol de codificación en términos del nivel en la jerarquía de subdivisiones. Este proceso de subdivisión se codifica en el flujo de bits como una secuencia de indicadores codificados aritméticamente. Cuando se habilitan fragmentos de granularidad fina, se especifica un umbral que determina el tamaño más pequeño de la unidad de codificación en la que puede existir un límite de fragmento.
Existen un conjunto de unidades de codificación en el árbol de codificación que no se subdividen más, siendo esas unidades de codificación las que ocupan los nodos hoja del árbol de codificación. Existen árboles de transformación en estas unidades de codificación. Un árbol de transformación puede descomponer aún más una unidad de codificación utilizando una estructura de árbol cuaternario tal como se utiliza para el árbol de codificación. En los nodos hoja del árbol de transformación, los datos residuales se codifican utilizando unidades de transformación (TU). A diferencia del árbol de codificación, el árbol de transformación puede subdividir las unidades de codificación en unidades de transformación que tienen una forma no cuadrada. Además, la estructura del árbol de transformación no requiere que las unidades de transformación (TU) ocupen toda el área proporcionada por la unidad de codificación padre.
Cada unidad de codificación en los nodos hoja de los árboles de codificación está subdividida en una o varias matrices de muestras de datos predichas, cada una conocida como unidad de predicción (PU, Prediction Unit). Cada unidad de predicción (PU) contiene una predicción de una porción de los datos del fotograma de entrada, obtenidos a partir de la aplicación de un proceso de intrapredicción o un proceso de interpredicción. Se pueden utilizar varios procedimientos para codificar unidades de predicción (PU) dentro de una unidad de codificación (CU). Una sola unidad de predicción (PU) puede ocupar un área completa de la unidad de codificación (CU), o la unidad de codificación (CU) puede estar dividida en dos unidades de predicción (PU) rectangulares del mismo tamaño, ya sea horizontal o verticalmente. Además, las unidades de codificación (CU) pueden estar divididas en cuatro unidades de predicción (PU) cuadradas del mismo tamaño.
Un codificador de video comprime los datos de video en un flujo de bits mediante la conversión de los datos de video en una secuencia de elementos de sintaxis. Un esquema de codificación aritmética binaria adaptable al contexto (CABAC, Context Adaptive Binary Arithmetic Coding) está definido en el estándar de codificación de video de alta eficiencia (HEVC), en desarrollo, utilizando un esquema de codificación aritmética idéntico al definido en el estándar de compresión de video MPEG4-AVC/H.264. En el estándar de codificación de video de alta eficiencia (HEVC) en desarrollo, cuando se utiliza la codificación aritmética binaria adaptable al contexto (CABAC), cada elemento de sintaxis se expresa como una secuencia de bins, en la que los bins se seleccionan de un conjunto de bins disponibles. El conjunto de bins disponibles se obtiene de un modelo de contexto, con un contexto por bin. Cada contexto contiene un valor probable de bin (el ‘vaIMPS’) y un estado de probabilidad para la operación de codificación aritmética o la operación de descodificación aritmética. Cabe destacar que los bins pueden ser codificados asimismo por derivación, donde no existe asociación con un contexto. Los bins codificados por derivación consumen un bit en el flujo de bits y, por lo tanto, son adecuados para los bins con la misma probabilidad de ser de un valor uno o de un valor cero. La creación de dicha secuencia de bins a partir de un elemento de sintaxis se conoce como “binarizar” los elementos de sintaxis.
En un codificador de video o descodificador de video, puesto que existe información de contexto independiente para cada bin, la selección de contexto para los bins proporciona un medio para mejorar la eficiencia de la codificación. En concreto, la eficiencia de la codificación se puede mejorar seleccionando un bin particular, de tal manera que las propiedades estadísticas de los casos anteriores del bin, donde se utilizó la información de contexto asociada, se correlacionen con las propiedades estadísticas de un caso actual del bin. Dicha selección de contexto utiliza con frecuencia información espacialmente local para determinar el contexto óptimo.
En el estándar de codificación de video de alta eficiencia (HEVC) en desarrollo y en el estándar H.264/MPEG-4 AVC, se obtiene una predicción para un bloque actual, en base a datos de muestra de referencia de otros fotogramas o de zonas vecinas dentro del bloque actual que han sido descodificadas previamente. La diferencia entre la predicción y los datos de muestra deseados se conoce como residuo. Una representación del residuo en el dominio de la frecuencia es una matriz bidimensional de coeficientes residuales. Por convención, la esquina superior izquierda de la matriz bidimensional contiene coeficientes residuales que representan información de baja frecuencia.
Un aspecto del rendimiento del estándar de codificación de video de alta eficiencia (HEVC) en desarrollo hace referencia a la capacidad de codificar o descodificar datos de video a altas velocidades de transferencia de bits. El esquema de codificación aritmética binaria adaptable al contexto (CABAC) empleado en el estándar de codificación de video de alta eficiencia (HEVC) en desarrollo es compatible con un modo de operación de “igual probabilidad” denominado “codificación por derivación”. En este modo, el bin no está asociado con un contexto del modelo de contexto y, por lo tanto, no existe ninguna etapa de actualización del modelo de contexto. En este modo, es posible leer múltiples bins adyacentes del flujo de bits en paralelo, siempre que cada bin esté codificado por derivación, lo que aumenta el rendimiento. Por ejemplo, las implementaciones de hardware pueden escribir/leer grupos de datos codificados por derivación adyacentes en paralelo para aumentar el rendimiento de la codificación/descodificación del flujo de bits.
Un documento de V. Seregin y otros, “Utilisation of CABAC equal probability mode for intra modes coding”, 6a reunión del JCT-VC, reunión del MPEG, 14-7-2011 al 22-7-2011, Turín, Equipo de colaboración conjunta sobre codificación de video (JCT-VC) del ITU-T SG16 WP3 e ISO/IEC JTC1/SC29/WG11, el documento XP030009399, da a conocer la utilización del módulo de codificación CABAC de igual probabilidad (derivación) además de la modelización por contexto actual para la intracodificación de luma y croma. En el procedimiento propuesto, la mayoría de los bins de modo intra se codifican con modo de derivación, sin modelización de contexto, con la excepción del primer bin de modo intra de croma, y el modo intra de luma para las unidades de predicción 8x8, 16x16 y 32x32.
Un documento de C. Yeo y otros, “Non-CE6: On intra-prediction mode coding”, 7a reunión de JCT-VC, 21-11-2011 al 30-11-2011, Ginebra, Equipo de colaboración conjunta sobre codificación de video (JCT-VC) de ITU-T SG16 WP3 e ISO/IEC JTC1/SC29/WG11, el documento XP030110137, da a conocer una propuesta de dos modificaciones a la codificación actual del modo de intrapredicción en HM. La primera modificación propuesta es eliminar el contexto para codificar el índice de modo más probable cuando CABAC es el codificador por entropía. La segunda es una modificación de la codificación de modo restante.
Un documento de K. Misra y otros, “Using CABAC bypass mode for coding intra-prediction mode”, 7a reunión del JCT-VC, 21-11-2011 al 30-11-2011, Ginebra, Equipo de colaboración conjunto sobre codificación de video (JCT-VC) del ITU-T SG16 WP3 e ISO/IEC JTC1/SC29/w G11, el documento XP030110691, da a conocer una propuesta para la utilización del modo CABAC de derivación para codificar los elementos de sintaxis del modo de intrapredicción mpm_idx y rem_intra_luma_pred_mode.
Un documento de H. Sasai y otros, “Fixed probability coding for Intra mode”, 6a reunión del JCT-VC, 14-7-2011 al 22-7-2011, Turín, Equipo de colaboración conjunta sobre codificación de video (JCT-VC) de ITU-T SG16 WP3 e ISO/IEC JTC1/SC29/WG11, el documento XP030009449, da a conocer una técnica para la reducción de la complejidad para el proceso de análisis de los parámetros de modo intra.
Un documento de B. Bross y otros, “High Efficiency Video Coding (HEVC) text specification Working Draft 5”, 7a reunión del JCT-VC, 21-11-2011 al 30-11-2011, Ginebra, Equipo de colaboración conjunta sobre Codificación de video (JCT-VC) de ITU-T SG16 WP3 e ISO/IEC JTC1/SC29/WG11, el documento XP030111032, da a conocer el borrador de trabajo 5 de la codificación de video de alta eficiencia.
Un documento de V. Sze y otros, “Parallel Context Processing of Coefficient Level”, 6a reunión del JCT-VC, 14-7-2011 al 22-7-2011, Turín, Equipo de colaboración conjunta sobre Codificación de video (JCT-VC) de ISO/IEC JTC1/SC29/WG11 e ITU-T SG16, XP030009153, analiza la agrupación de bins de derivación en elementos de sintaxis de nivel de coeficiente.
Un documento de H. Sasai y otros, “Modified MVD coding for CABAC”, 97a Reunión del MPEG; 18-7-2011 al 22-7-2011, Turín, Grupo de expertos de imágenes en movimiento o ISO/IEC JTC1/SC29/WG11, XP030049414, analiza una técnica para la reducción de la complejidad en el proceso de análisis de parámetros de diferencia de vector de movimiento.
CARACTERÍSTICAS
Un objetivo de la presente invención es superar o, como mínimo, mejorar, sustancialmente uno o varios inconvenientes de las disposiciones existentes.
Según un aspecto de la presente invención, se da a conocer un procedimiento tal como el expuesto en las reivindicaciones 1 a 6. Según otro aspecto, se da a conocer un aparato o un programa tal como el expuesto en las reivindicaciones 7 u 8, respectivamente. Según otro aspecto más se da a conocer un procedimiento tal como el expuesto en la reivindicación 9. Según otro aspecto, se da a conocer un aparato o un programa tal como el expuesto en las reivindicaciones 10 u 11, respectivamente.
Asimismo, se dan a conocer otros aspectos.
BREVE DESCRIPCIÓN DE LOS DIBUJOS
Como mínimo, una realización de la presente invención se describirá a continuación haciendo referencia a los siguientes dibujos, en los que:
la figura 1 es un diagrama de bloques esquemático que muestra módulos funcionales de un codificador de video; la figura 2 es un diagrama de bloques esquemático que muestra módulos funcionales de un descodificador de video; las figuras 3A y 3B forman un diagrama de bloques esquemático de un sistema informático de propósito general sobre el que el codificador y el descodificador de las figuras 1 y 2, respectivamente, se pueden poner en práctica; la figura 4 es un diagrama de bloques esquemático que muestra módulos funcionales de un codificador por entropía; la figura 5 es un diagrama de bloques esquemático que muestra módulos funcionales de un descodificador por entropía;
la figura 6 es un diagrama de bloques esquemático que muestra una unidad de codificación más grande (LCU) a modo de ejemplo;
la figura 7 es un diagrama de bloques esquemático que muestra un flujo de bits convencional que representa la unidad de codificación más grande (LCU) a modo de ejemplo;
la figura 8 es un diagrama de bloques esquemático que muestra un flujo de bits, según la presente invención que representa la unidad de codificación más grande (LCU) a modo de ejemplo;
la figura 9 es un diagrama de flujo esquemático que muestra un procedimiento, según la presente invención para descodificar los elementos de sintaxis de una unidad de codificación más grande (LCU) de un flujo de bits similar a la de la figura 8;
la figura 10 es un diagrama de flujo esquemático que muestra un procedimiento resumido, según la presente invención para descodificar los elementos de sintaxis de una unidad de codificación más grande (LCU) de un flujo de bits;
la figura 11 es un diagrama de flujo esquemático que muestra un procedimiento, según la presente invención para codificar los elementos de sintaxis de una unidad de codificación más grande (LCU);
la figura 12 es un diagrama de flujo esquemático que muestra un procedimiento resumido, según la presente invención para codificar los elementos de sintaxis de una unidad de codificación más grande (LCU) de un flujo de bits;
la figura 13 es un diagrama de bloques esquemático que muestra un flujo de bits que representa la unidad de codificación más grande (LCU) a modo de ejemplo generada por el procedimiento alternativo, según la presente invención para su análisis sintáctico;
la figura 14 es un diagrama de flujo esquemático que muestra un procedimiento alternativo, según la presente invención para descodificar los elementos de sintaxis de una unidad de codificación más grande (LCU);
la figura 15 es un diagrama de bloques esquemático que muestra una unidad de codificación más grande (LCU) a modo de ejemplo con un límite de fragmento dentro de la unidad de codificación más grande (LCU);
la figura 16 es un diagrama de bloques esquemático que muestra un flujo de bits que representa la unidad de codificación más grande (LCU) a modo de ejemplo generada mediante el procedimiento para análisis sintáctico con fragmentos de granularidad fina (FGS, Fine Granularity Slices) habilitado; y
la figura 17 es un diagrama de flujo esquemático que muestra otro procedimiento alternativo, según la presente invención para descodificar los elementos de sintaxis de una unidad de codificación más grande (LCU).
DESCRIPCIÓN DETALLADA INCLUYENDO EL MEJOR MODO
Cuando se hace referencia en uno o varios de los dibujos adjuntos a etapas y/o características que tienen los mismos números de referencia, esas etapas y/o características tienen, para los propósitos de esta descripción, la misma función o funciones u operación u operaciones, a menos que aparezca la intención contraria.
La figura 1 es un diagrama de bloques esquemático que muestra módulos funcionales de un codificador de video 100. La figura 2 es un diagrama de bloques esquemático que muestra los módulos funcionales de un descodificador de video 200 correspondiente. El codificador de video 100 y el descodificador de video 200 pueden ser implementados utilizando un sistema informático de propósito general 300, tal como el mostrado en las figuras 3A y 3B, en el que los diversos módulos funcionales pueden ser implementados mediante hardware exclusivo dentro del sistema informático 300, mediante software ejecutable en el sistema informático 300 o, de manera alternativa, mediante una combinación de hardware y software exclusivo, ejecutables en el sistema informático 300.
Tal como se ve en la figura 3A, el sistema informático 300 incluye: un módulo 301 de ordenador; dispositivos de entrada tales como un teclado 302, un dispositivo 303 para señalar del tipo de ratón, un escáner 326, una cámara 327 y un micrófono 380; y dispositivos de salida que incluyen una impresora 315, un dispositivo de visualización 314 y altavoces 317. Un dispositivo transceptor modulador-demodulador externo (módem) 316 puede ser utilizado por el módulo 301 de ordenador para comunicarse hacia y desde una red 320 de comunicaciones a través de una conexión 321. La red 320 de comunicaciones puede ser una red de área extensa (WAN, Wide Area Network), tal como Internet, una red de telecomunicaciones celulares, o una WAN privada. Cuando la conexión 321 es una línea telefónica, el módem 316 puede ser un módem tradicional de “marcación”. Alternativamente, cuando la conexión 321 es una conexión de alta capacidad (por ejemplo, un cable), el módem 316 puede ser un módem de banda ancha. Asimismo, se puede utilizar un módem inalámbrico para la conexión inalámbrica a la red 320 de comunicaciones.
El módulo 301 de ordenador incluye habitualmente, como mínimo, una unidad 305 de procesador, y una unidad 306 de memoria. Por ejemplo, la unidad 306 de memoria puede tener una memoria de acceso aleatorio (RAM, Random Access Memory) de semiconductores y una memoria de solo lectura (ROM, Read Only Memory) de semiconductores. El módulo 301 de ordenador incluye asimismo varias interfaces de entrada/salida (I/O, Input/Output) que incluyen: una interfaz de audio y video 307 que se acopla al elemento de visualización de video 314, altavoces 317 y un micrófono 380; una interfaz I/O 313 que se acopla al teclado 302, un ratón 303, un escáner 326, una cámara 327 y, opcionalmente, un mando de palanca u otro dispositivo de interfaz humana (no ilustrado); y una interfaz 308 para el módem externo 316 y la impresora 315. En algunas implementaciones, el módem 316 puede estar incorporado dentro del módulo 301 de ordenador, por ejemplo, dentro de la interfaz 308. El módulo 301 de ordenador tiene asimismo una interfaz 311 de red local, que permite el acoplamiento del sistema informático 300 a través de una conexión 323 a una red de comunicaciones de área local 322, conocida como Red de área local (LAN, Local Area Network). Tal como se ilustra en la figura 3A, la red 322 de comunicaciones local puede ser acoplada asimismo a la red extensa 320 a través de una conexión 324, que, habitualmente, incluiría un dispositivo llamado “cortafuegos” o un dispositivo de funcionalidad similar. La interfaz 311 de red local puede comprender una tarjeta de circuito Ethernet™, una dispositivo inalámbrico Bluetooth™ o un dispositivo inalámbrico IEEE 802.11; sin embargo, se pueden poner en práctica muchos otros tipos de interfaces para la interfaz 311.
Las interfaces I/O 308 y 313 pueden proporcionar conectividad en serie y en paralelo, o ambas, la primera, habitualmente se está implementando, según los estándares del bus de serie universal (USB, Universal Serial Bus) y tiene conectores USB correspondientes (no ilustrados). Se proporcionan dispositivos de almacenamiento 309, e incluyen habitualmente una unidad de disco duro (HDD, Hard Disk Drive) 310. Asimismo, se pueden utilizar otros dispositivos de almacenamiento, tales como una unidad de disco flexible y una unidad de cinta magnética (no ilustrados). Una unidad 312 de disco óptica está proporcionada habitualmente para actuar como una fuente de datos no volátil. Los dispositivos de memoria portátiles, tales como discos ópticos (por ejemplo, CD-ROM, DVD, Blu-ray Disc™), USB-RAM, discos duros externos portátiles y discos flexibles, por ejemplo, se pueden utilizar como fuentes de datos apropiadas para el sistema 300. Habitualmente, cualquiera de las unidades h Dd 310, la unidad óptica 312, las redes 320 y 322 o la cámara 327 pueden formar una fuente para codificar datos de video o, con el elemento de visualización 314, un destino para que los datos de video descodificados sean almacenados o reproducidos.
Los componentes 305 a 313 del módulo 301 de ordenador se comunican habitualmente a través de un bus 304 interconectado y de una manera que resulta en un modo de operación convencional del sistema informático 300 conocido por los expertos en la técnica. Por ejemplo, el procesador 305 se acopla al bus del sistema 304 mediante una conexión 318. Del mismo modo, la memoria 306 y la unidad 312 de disco óptico se acoplan al bus del sistema 304 mediante conexiones 319. Entre los ejemplos de ordenadores en los que se pueden poner en práctica las disposiciones descritas se incluyen PC comercializados por la firma IBM y compatibles, Sparcstations comercializados por la firma Sun, Mac™ comercializados por la firma Apple o sistemas informáticos similares.
Cuando sea apropiado o deseado, el codificador 100 y el descodificador 200, así como los procedimientos descritos a continuación, pueden ser implementados utilizando el sistema informático 300 en el que el codificador 100, el descodificador 200 y los procesos de las figuras 10 y 11, que se describirán, pueden ser implementados como uno o varios programas de aplicación de software 333 ejecutables en el sistema informático 300. En concreto, el codificador 100, el descodificador 200 y las etapas de los procedimientos descritos son realizados mediante instrucciones 331 (véase la figura 3B) en el software 333 que se llevan a cabo dentro del sistema informático 300. Las instrucciones 331 del software pueden estar formadas como uno o varios módulos de código, cada uno para realizar una o varias tareas. El software se puede dividir asimismo en dos partes independientes, en las que una primera parte y los módulos de código correspondientes realizan los procedimientos descritos, y una segunda parte y los módulos de código correspondientes administran una interfaz de usuario entre la primera parte y el usuario.
El software puede estar almacenado en un medio legible por ordenador, incluidos los dispositivos de almacenamiento que se describen a continuación, por ejemplo. El software es cargado en el sistema informático 300 desde el medio legible por ordenador, y, a continuación, ejecutado por el sistema informático 300. Un medio legible por ordenador que tiene dicho software o programa informático grabado en el medio legible por ordenador es un producto de programa informático. La utilización del producto de programa informático en el sistema informático 300 efectúa preferentemente un aparato ventajoso para implementar el codificador 100, el descodificador 200 y los procedimientos descritos.
El software 333 normalmente se almacena en el HDD 310 o la memoria 306. El software se carga en el sistema informático 300 desde un medio legible por ordenador, y es ejecutado por el sistema informático 300. De este modo, por ejemplo, el software 333 puede ser almacenado en un medio de almacenamiento de disco legible de manera óptica (por ejemplo, un CD-ROM) 325 que se lee mediante la unidad 312 de disco óptico.
En algunos casos, los programas de aplicación 333 pueden ser suministrados al usuario codificados en uno o varios CD-ROM 325 y ser leídos a través de la unidad correspondiente 312, o, alternativamente, pueden ser leídos por el usuario desde las redes 320 o 322. Aún más, el software puede ser cargado también en el sistema informático 300 desde otros medios legibles por ordenador. Los medios de almacenamiento legibles por ordenador se refieren a cualquier medio de almacenamiento tangible no transitorio que proporciona instrucciones y/o datos grabados al sistema informático 300 para su ejecución y/o procesamiento. Entre los ejemplos de dichos medios de almacenamiento se incluyen discos flexibles, una cinta magnética, un CD-ROM, un DVD, un disco Blu-ray, una unidad de disco duro, una ROM o un circuito integrado, una memoria USB, un disco magnetoóptico o una tarjeta legible por ordenador, tal como una tarjeta PCMCIA y similares, tanto si dichos dispositivos son internos como externos al módulo 301 de ordenador. Entre los ejemplos de medios de transmisión legibles por ordenador transitorios o no tangibles que pueden participar también en la provisión del software, programas de aplicación, instrucciones y/o datos de video o datos de video codificados al módulo 301 de ordenador se incluyen canales de transmisión por radio o infrarrojos, así como una conexión de red a otro ordenador o dispositivo en la red, e Internet o Intranets, incluidas las transmisiones de correo electrónico e información registrada en sitios web y similares.
La segunda parte de los programas de aplicación 333 y los módulos de código correspondientes mencionados anteriormente puede ser ejecutada para implementar una o varias interfaces gráficas de usuario (GUI, Graphical User Interfaces) que serán renderizadas o representadas de otra manera en el elemento de visualización 314. Mediante la manipulación, habitualmente, del teclado 302 y el ratón 303, un usuario del sistema informático 300 y la aplicación puede manipular la interfaz de una manera funcionalmente adaptable para proporcionar comandos de control y/o entrada a las aplicaciones asociadas con la GUI o las GUI. Asimismo, se pueden implementar otras formas de interfaces de usuario funcionalmente adaptables, tales como una interfaz de audio que utiliza la salida de indicaciones de voz a través de los altavoces 317 y la entrada de comandos de voz del usuario a través del micrófono 380.
La figura 3B es un diagrama de bloques esquemático detallado del procesador 305 y una “memoria” 334. La memoria 334 representa una agregación lógica de todos los módulos de memoria (incluidos e1HDD 309 y la memoria 306 de semiconductores) a los que puede acceder el módulo 301 de ordenador en la figura 3A.
Cuando el módulo 301 de ordenador es encendido inicialmente, se ejecuta un programa 350 de autocomprobación de encendido (POST, Power-On Self-Test). El programa POST 350 se almacena habitualmente en una ROM 349 de la memoria de semiconductores 306 de la figura 3A. Un dispositivo de hardware tal como el software de almacenamiento ROM 349 a veces se denomina firmware. El programa POST 350 examina el hardware dentro del módulo 301 de ordenador para garantizar un funcionamiento adecuado y, habitualmente, comprueba el procesador 305, la memoria 334 (309, 306) y un módulo de software básico de los sistemas de entrada-salida (BIOS, Basic Input-Output Software) 351, asimismo, habitualmente almacenado en la ROM 349, para comprobar su correcto funcionamiento. Una vez que el programa POST 350 ha sido ejecutado con éxito, el BIOS 351 activa la unidad de disco duro 310 de la figura 3A. La activación de la unidad de disco duro 310 hace que se ejecute un programa de cargador de rutina de arranque 352 que reside en la unidad de disco duro 310 a través del procesador 305. Esto carga un sistema operativo 353 en la memoria RAM 306, tras lo cual el sistema operativo 353 comienza a funcionar. El sistema operativo 353 es una aplicación al nivel del sistema, ejecutable por el procesador 305, para cumplir con varias funciones de alto nivel, incluida la gestión del procesador, la gestión de la memoria, la gestión de dispositivos, la gestión del almacenamiento, la interfaz de aplicación de software y la interfaz de usuario genérica.
El sistema operativo 353 gestiona la memoria 334 (309, 306) para garantizar que cada proceso o aplicación que se ejecuta en el módulo 301 de ordenador tenga suficiente memoria para ejecutar sin chocar con la memoria asignada a otro proceso. Además, los diferentes tipos de memoria disponibles en el sistema 300 de la figura 3A deben ser utilizados correctamente para que cada proceso pueda ser ejecutado de manera efectiva. Por consiguiente, la memoria 334 agregada no pretende ilustrar cómo se asignan fragmentos particulares de memoria (a menos que se indique lo contrario), sino más bien proporcionar una vista general de la memoria accesible por el sistema informático 300 y cómo se utiliza.
Tal como se muestra en la figura 3B, el procesador 305 incluye una serie de módulos funcionales que incluyen una unidad de control 339, una unidad lógica aritmética (ALU, Arithmetic Logic Unit) 340 y una memoria local o interna 348, a veces llamada memoria caché. La memoria caché 348 incluye habitualmente una serie de registros de almacenamiento 344 a 346 en una sección de registro. Uno o varios buses internos 341 interconectan funcionalmente estos módulos funcionales. El procesador 305 tiene asimismo habitualmente una o varias interfaces 342 para comunicarse con dispositivos externos a través del bus del sistema 304, utilizando una conexión 318. La memoria 334 está acoplada al bus 304 utilizando una conexión 319.
El programa de aplicación 333 incluye una secuencia de instrucciones 331 que puede incluir instrucciones condicionales de rama y bucle. El programa 333 puede incluir asimismo datos 332 que se utilizan en la ejecución del programa 333. Las instrucciones 331 y los datos 332 se almacenan en las ubicaciones de memoria 328, 329, 330 y 335, 336, 337, respectivamente. Dependiendo del tamaño relativo de las instrucciones 331 y las ubicaciones de memoria 328 a 330, una instrucción particular puede ser almacenada en una única ubicación de memoria, tal como se muestra en la instrucción mostrada en la ubicación de memoria 330. Alternativamente, una instrucción puede estar segmentada en una cantidad de partes, cada una de las cuales se almacena en una ubicación de memoria separada, tal como se muestra en los fragmentos de instrucciones que se muestran en las ubicaciones de memoria 328 y 329.
En general, al procesador 305 se le dan un conjunto de instrucciones que se ejecutan en el mismo. El procesador 305 espera una entrada posterior, a la que reacciona el procesador 305 ejecutando otro conjunto de instrucciones. Cada entrada puede ser proporcionada desde una o varias de diversas fuentes, incluidos los datos generados por uno o varios de los dispositivos de entrada 302, 303, datos recibidos de una fuente externa a través de una de las redes 320, 302, datos recuperados de uno de los dispositivos de almacenamiento 306, 309 o datos recuperados de un medio de almacenamiento 325 introducidos en el lector correspondiente 312, todos representados en la figura 3A. La ejecución de un conjunto de instrucciones puede resultar, en algunos casos, en la emisión de datos. La ejecución puede implicar asimismo almacenar datos o variables en la memoria 334.
El codificador 100, el descodificador 200 y los procedimientos descritos utilizan variables de entrada 354, que se almacenan en la memoria 334 en las ubicaciones de memoria correspondientes 355, 356, 357. El codificador 100, el descodificador 200 y los procedimientos descritos generan variables de salida 361, que se almacenan en la memoria 334 en las ubicaciones de memoria 362, 363, 364 correspondientes. Las variables temporales 358 pueden ser almacenadas en las ubicaciones de memoria 359, 360, 366 y 367.
Con referencia al procesador 305 de la figura 3B, los registros 344, 345, 346, la unidad lógica aritmética (ALU) 340 y la unidad de control 339 trabajan juntos para realizar secuencias de microoperaciones necesarias para realizar la “recuperación, descodificación y ejecución” de ciclos para cada instrucción en el conjunto de instrucciones que conforman el programa 333. Cada ciclo de recuperación, descodificación y ejecución comprende:
(a) una operación de recuperación, que recupera o lee una instrucción 331 desde una ubicación de memoria 328, 329, 330;
(b) una operación de descodificación, en la que la unidad de control 339 determina qué instrucción se ha recuperado; y
(c) una operación de ejecución, en la que la unidad de control 339 y/o la ALU 340 ejecutan la instrucción.
A partir de entonces, se puede ejecutar un ciclo adicional de recuperación, descodificación y ejecución para la siguiente instrucción. De manera similar, se puede realizar un ciclo de almacenamiento mediante el cual la unidad de control 339 almacena o escribe un valor en una ubicación de memoria 332.
Cada etapa o subproceso en los procesos de las figuras 1 a 17 que se describirá está asociado con uno o varios fragmentos del programa 333 y es realizado habitualmente por la sección de registro 344, 345, 347, la ALU 340 y la unidad de control 339 en el procesador 305 trabajando juntos para realizar la recuperación, descodificación y ejecución de ciclos para cada instrucción del conjunto de instrucciones para los fragmentos anotados del programa 333.
El codificador 100, el descodificador 200 y los procedimientos descritos pueden ser implementados alternativamente mediante hardware exclusivo, tal como uno o varios circuitos integrados que realizan las funciones o subfunciones de los procedimientos descritos. Dicho hardware exclusivo puede incluir procesadores gráficos, procesadores de señales digitales, circuitos integrados específicos para aplicaciones (ASIC, Application Specific Integrated Circuits), matrices de puertas programables in situ (FPGA, Field Programmable Gate Array) o uno o varios microprocesadores y memorias asociadas. El efecto neto de los sistemas descritos es un aparato computarizado configurado para procesar unidades de codificación asociadas con un flujo de bits de datos de video.
Tal como se describió anteriormente, el codificador de video 100 puede ser implementado como uno o varios módulos de código de software del programa 333 de aplicación de software que reside en la unidad de disco duro 305 y que está controlado en su ejecución por el procesador 305. En concreto, el codificador de video 100 comprende los módulos 102 a 112, 114 y 115, que pueden ser implementados cada uno como uno o varios módulos de código de software del programa 333 de aplicación de software.
Aunque el codificador de video 100 de la figura 1 es un ejemplo de un canal de descodificación de video de alta eficiencia de codificación de video (HEVC), las etapas de procesamiento realizadas por los módulos 102 a 112, 114 y 115 son comunes a otros códecs de video tales como VC-1 o H.264/MPEG-4 a Vc . El codificador de video 100 recibe datos 101 de fotogramas no codificados como una serie de fotogramas que incluyen muestras de luminancia y crominancia. El codificador de video 100 divide cada fotograma de los datos 101 de fotograma en conjuntos jerárquicos de unidades de codificación (CU), que se pueden representar, por ejemplo, como un árbol de unidades de codificación (CU).
El codificador de video 100 funciona emitiendo, desde un módulo de multiplexación 110, una serie de muestras de datos predichas conocida como unidad de predicción (PU) 120. Un módulo de diferencia 115 genera la diferencia entre la unidad de predicción (PU) 120 y una matriz correspondiente de muestras de datos recibidas de los datos 101 de fotograma, conociéndose la diferencia como muestras 122 de datos residuales.
Las muestras 122 de datos residuales del módulo de diferencia 115 son recibidas por un módulo de transformación 102, que convierte la diferencia de una representación espacial en una representación del dominio de la frecuencia para crear los coeficientes de transformación 124 para cada unidad de transformación (TU) en el árbol de transformación. Para el estándar de codificación de video de alta eficiencia (HEVC) en desarrollo, la conversión a la representación en el dominio de la frecuencia se implementa utilizando una transformada del coseno discreta modificada (DCT, Discrete Cosine Transform), en la cual se modifica una DCT tradicional para ser implementada utilizando desplazamientos y adiciones. Los coeficientes de transformación 124 son introducidos a continuación en un módulo de escala y cuantificación 103, y son escalados y cuantificados para generar los coeficientes residuales 126. El proceso de escala y cuantificación produce una pérdida de precisión. Los coeficientes residuales 126 se toman como entrada a un módulo de escalado inverso 105 que invierte la escala realizada por el módulo de escalado y cuantificación 103 para generar coeficientes de transformación nuevamente escalados 128, que son versiones nuevamente escaladas de los coeficientes residuales 126. Asimismo, se toman los coeficientes residuales 126 como entrada a un módulo de codificación por entropía 104, que codifica los coeficientes residuales en un flujo 113 de bits codificado. Debido a la pérdida de precisión resultante del módulo de escalado y cuantificación 103, los coeficientes de transformación 128 nuevamente escalados no son idénticos a los coeficientes de transformación 124 originales. Los coeficientes de transformación 128 nuevamente escalados del módulo 105 de escalado inverso se emiten a continuación a un módulo 106 de transformación inversa. El módulo 106 de transformación inversa realiza una transformación inversa del dominio de frecuencia al dominio espacial para generar una representación en el dominio del espacio 130 de los coeficientes de transformación 128 nuevamente escalados idéntica a una representación en el dominio del espacio que es generada en un descodificador.
Un módulo de estimación de movimiento 107 genera vectores de movimiento 132 comparando los datos 101 de fotograma con los datos de fotograma anteriores almacenados en un módulo 112 de memoria temporal de fotogramas configurado dentro de la memoria 306. Los vectores de movimiento 132 son introducidos a continuación en un módulo de compensación de movimiento 108, que genera muestras de referencia interpredichas 134 filtrando muestras almacenadas en el módulo 112 de memoria temporal de fotogramas, teniendo en cuenta un desplazamiento espacial obtenido de los vectores de movimiento 132. No ilustrados en la figura 1, los vectores de movimiento 132 son pasados también como elementos de sintaxis al módulo de codificación por entropía 104 para codificación en el flujo 113 de bits codificado. Un módulo de intrapredicción 109 de fotogramas genera muestras de referencia intrapredichas 136 utilizando muestras 138 obtenidas de un módulo de suma 114, que suma la salida 120 del módulo de multiplexación 110 y la salida 130 del módulo de transformación inversa 106.
Las unidades de predicción (PU) pueden ser codificadas utilizando procedimientos de intrapredicción o interpredicción. La decisión sobre si utilizar intrapredicción o interpredicción se toma, según un compromiso entre la velocidad de transferencia y la distorsión entre la velocidad de transferencia de bits deseada del flujo 113 de bits codificado resultante y la magnitud de la distorsión de la calidad de la imagen introducida por cualquiera de los procedimientos de intrapredicción o interpredicción. Si se utiliza la intrapredicción, se selecciona un modo de intrapredicción de entre un conjunto de modos posibles, también, según un compromiso entre la velocidad de transferencia y la distorsión. Se selecciona un modo de intrapredicción para cada unidad de predicción. El modelo 5.0 de prueba de codificación de video de alta eficiencia (HEVC) (HM-5.0) soporta 35 modos de intrapredicción, sin embargo, no todos los modos de intrapredicción pueden ser utilizados para todos los tamaños de unidades de predicción. Por ejemplo, una unidad de predicción de 8x8 puede tener 35 modos de intrapredicción disponibles para su selección, y una unidad de predicción de 4x4 puede tener 18 modos de intrapredicción disponibles para su selección en algunas implementaciones y 19 modos disponibles para su selección en otras implementaciones. El módulo de multiplexación 110 selecciona cualquiera de las muestras de referencia intrapredichas 136 del módulo de intrapredicción 109 de fotogramas o las muestras de referencia interpredichas 134 del bloque de compensación de movimiento 108, dependiendo del modo de predicción 142 actual, determinado por la lógica de control no ilustrada pero bien conocida en la técnica. El modo de predicción 142 es proporcionado asimismo al codificador por entropía 104 y, por lo tanto, se utiliza para determinar o establecer de otro modo el orden de escaneo de las unidades de transformación, tal como se describirá. La interpredicción de fotogramas utiliza solo un orden de escaneo diagonal, mientras que la intrapredicción de fotogramas puede utilizar un orden de escaneo diagonal, escaneo horizontal o escaneo vertical.
El módulo de suma 114 genera una suma 138 que es introducida en un módulo de filtro de desbloqueo 111. El módulo de filtro de desbloqueo 111 realiza el filtrado a lo largo de los límites del bloque, generando muestras desbloqueadas 140 que son escritas en el módulo 112 de memoria temporal de fotogramas configurado dentro de la memoria 306. El módulo 112 de memoria temporal de fotogramas es una memoria temporal con capacidad suficiente para almacenar datos de varios fotogramas anteriores para referencia en el futuro.
En el codificador de video 100, las muestras 122 de datos residuales dentro de una unidad de transformación (TU) son determinadas descubriendo la diferencia entre las muestras de datos de los datos 101 de fotograma de entrada y la predicción 120 de las muestras de datos de los datos 101 de fotograma de entrada. La diferencia proporciona una representación espacial de los coeficientes residuales de la unidad de transformación (TU).
Los coeficientes residuales de una unidad de transformación (TU) son convertidos al mapa de relevancia bidimensional.
El mapa de relevancia de los coeficientes residuales en la unidad de transformación (TU) se escanea a continuación en un orden concreto, conocido como orden de escaneo, para formar una lista unidimensional de valores de indicador, llamada lista de indicadores de coeficiente significativo. El orden de escaneo puede ser descrito o especificado de otra manera mediante un patrón de escaneo, tal como el recibido con el modo de predicción 142 desde el módulo de intrapredicción 109. El patrón de escaneo puede ser horizontal, vertical, diagonal o en zigzag. La versión 5 del modelo de prueba de codificación de video de alta eficiencia (HEVC) realiza el escaneo hacia atrás, sin embargo, el escaneo hacia adelante es posible también. Para unidades de transformación (TU) de 16x16, 32x32, 4x16, 16x4, 8x32 y 32x8, se define un escaneo de dos niveles, en el que la unidad de transformación (TU) se divide en un conjunto de bloques secundarios, teniendo cada bloque secundario una forma cuadrada. En un nivel superior, el escaneo se realiza escaneando cada nivel inferior utilizando un escaneo tal como el escaneo diagonal hacia abajo, hacia la izquierda y hacia atrás. En el nivel inferior, conocido también como nivel de bloque secundario, el escaneo se realiza también utilizando un escaneo, tal como el escaneo diagonal hacia abajo, hacia la izquierda y hacia atrás. En la versión 5.0 del modelo de referencia HEVC, la operación de escaneo inicia un coeficiente residual después de un último coeficiente significativo (donde ‘después’ corresponde a la dirección de un escaneo hacia atrás de los coeficientes residuales) y avanza hasta que se alcanza una ubicación superior izquierda del mapa de relevancia. Las operaciones de escaneo que tienen esta propiedad y que cumplen con la versión 5.0 del modelo de referencia de HEVC se conocen como ‘escaneados hacia atrás’. En el software de referencia de la versión 5.0 de HEVC, la ubicación del último coeficiente significativo se señala mediante la codificación de las coordenadas del coeficiente en la unidad de transformación (TU). Resultará evidente para las personas que estén familiarizadas con la técnica que la utilización del adjetivo “último” en este contexto depende del orden concreto de escaneo. El que puede ser el “último” coeficiente residual distinto de cero o el correspondiente indicador de coeficiente significativo de valor uno según un patrón de escaneo puede no ser el “último”, según otro patrón de escaneo. La lista de indicadores de coeficientes significativos, que indica la relevancia de cada coeficiente residual antes del último coeficiente significativo, es codificada en el flujo de bits. No es necesario que el valor del indicador del último coeficiente significativo esté codificado explícitamente en el flujo de bits, porque la codificación anterior de la ubicación del indicador del último coeficiente significativo indicó implícitamente que este coeficiente residual era significativo.
La agrupación de coeficientes residuales de mayor valor hacia la parte superior izquierda de la unidad de transformación (TU) tiene como resultado que la mayoría de los indicadores de relevancia que aparecen al principio de la lista sean significativos, mientras que los indicadores de menor relevancia se encuentran más adelante en la lista.
Tal como se describió anteriormente, el codificador de video 100 comprende asimismo un módulo de codificación por entropía 104 que implementa un procedimiento de codificación por entropía. El módulo de codificación por entropía 104 genera elementos de sintaxis a partir de los datos del coeficiente residual (o coeficientes residuales) 126 de entrada recibidos del módulo de escalado y cuantificación 103. El módulo de codificación por entropía 104 emite el flujo 113 de bits codificado y se describirá con más detalle a continuación. Para el estándar de codificación de video de alta eficiencia (HEVC) en desarrollo, el flujo 113 de bits codificado es delineado en unidades de capa de abstracción de la red (NAL, Network Abstraction Layer). Cada fragmento de un fotograma está contenido en una unidad NAL.
Existen varias alternativas para el procedimiento de codificación por entropía implementado en el módulo de codificación por entropía 104. El estándar de codificación de video de alta eficiencia (HEVC) en desarrollo es compatible con la codificación aritmética binaria adaptable al contexto (CABAC), una variante de la codificación aritmética binaria adaptativa al contexto (CABAC) que se encuentra en H.264/MPEG-4 AVC. Un esquema alternativo de codificación por entropía es el codificador por entropía en particiones de intervalos de probabilidad (PIPE, Probability Interval Partitioning Entropy), que es bien conocido en la técnica.
Para un codificador de video 100 que soporta múltiples procedimientos de codificación de video, uno de los procedimientos de codificación por entropía soportados se selecciona, según la configuración del codificador 100. Además, en la codificación de las unidades de codificación de cada fotograma, el módulo de codificación por entropía 104 escribe el flujo 113 de bits codificado, de tal manera que cada fotograma tiene uno o varios fragmentos por fotograma, y cada fragmento contiene datos de imagen para parte del fotograma. Generar un fragmento por fotograma reduce la sobrecarga asociada con la delimitación de cada límite de fragmento. Sin embargo, es posible también dividir el fotograma en varios fragmentos.
El descodificador de video 200 de la figura 2 puede ser implementado como uno o varios módulos de código de software del programa 333 de aplicación de software que se encuentran en la unidad de disco duro 305 y que están controlados en su ejecución por el procesador 305. En concreto, el descodificador de video 200 comprende los módulos 202 a 208 y 210 que pueden ser implementados, cada uno, como uno o varios módulos de código de software del programa 333 de aplicación de software. Aunque el descodificador de video 200 se describe con referencia a un canal de descodificación de video de codificación de video de alta eficiencia (HEVC), las etapas del procesamiento realizadas por los módulos 202 a 208 y 209 son comunes a otros códecs de video que emplean codificación por entropía, tales como H.264/MPEG-4 AVC, MPEG-2 y VC-1.
El descodificador de video 200 recibe un flujo de bits codificado, tal como el flujo 113 de bits codificado. El flujo 113 de bits codificado se puede leer desde la memoria 306, la unidad de disco duro 310, un CD-ROM, un disco Blu-ray™ u otro medio de almacenamiento legible por ordenador. Alternativamente, el flujo 113 de bits codificado puede ser recibido desde una fuente externa tal como un servidor conectado a la red 320 de comunicaciones o un receptor de radiofrecuencia. El flujo 113 de bits codificado contiene elementos de sintaxis codificados que representan datos de fotograma para ser descodificados.
El flujo 113 de bits codificado es introducido en un módulo de descodificación por entropía 202 que extrae los elementos de sintaxis del flujo 113 de bits codificado y pasa los valores de los elementos de sintaxis a otros bloques en el descodificador de video 200. Se pueden implementar múltiples procedimientos de descodificación por entropía en el módulo de descodificación por entropía 202, tales como los descritos con referencia al módulo de codificación por entropía 104. Los datos del elemento de sintaxis 220 que representan los datos del coeficiente residual son pasados a un módulo de escalado inverso y transformación 203 y los datos 222 del elemento de sintaxis, que representan información del vector de movimiento, son pasados a un módulo de compensación de movimiento 204. El módulo de escalado inverso y transformación 203 realiza un escalado inverso sobre los datos del coeficiente residual para crear coeficientes de transformación reconstruidos. A continuación, el módulo 203 realiza una transformación inversa para convertir los coeficientes de transformación reconstruidos de una representación en el dominio de la frecuencia a una representación en el dominio del espacio, generando muestras residuales 224, tal como la transformada inversa descrita con referencia al módulo de transformación inversa 106.
El módulo de compensación de movimiento 204 utiliza los datos 222 del vector de movimiento del módulo de descodificación por entropía 202, combinados con los datos 226 de fotogramas anteriores de un bloque 208 de memoria temporal de fotogramas, configurado en la memoria 306, para generar muestras de referencia interpredichas 228 para una unidad de predicción (PU), que es una predicción de datos de fotograma descodificados de salida. Cuando un elemento de sintaxis indica que la unidad de codificación actual fue codificada utilizando intrapredicción, el módulo 205 de intrapredicción de fotogramas genera muestras 230 de referencia intrapredichas para la unidad de predicción (PU) utilizando muestras espacialmente próximas a la unidad de predicción (PU). Las muestras espacialmente próximas se obtienen a partir de una suma 232 emitida por un módulo de suma 210. El módulo de multiplexación 206 selecciona muestras de referencia intrapredichas o muestras de referencia interpredichas para la unidad de predicción (PU) en función del modo de predicción actual, lo que se indica mediante un elemento de sintaxis en el flujo 113 de bits codificado. La matriz de muestras 234 emitida por el módulo de multiplexación 206 es sumada a las muestras residuales 224 del módulo de escalado inverso y transformación 203 mediante el módulo de suma 210 para generar la suma 232 que, a continuación, es introducida en cada uno del módulo 207 de filtro de desbloqueo y el módulo 205 de intrapredicción de fotogramas. En contraste con el codificador 100, el módulo 205 de intrapredicción de fotogramas recibe un modo de predicción 236 desde el descodificador por entropía 202. El multiplexador 206 recibe una señal de selección de intrapredicción de fotogramas/interpredicción de fotogramas desde el descodificador por entropía 202. El módulo 207 de filtro de desbloqueo realiza el filtrado a lo largo de los límites del bloque de datos, para suavizar los artefactos visibles a lo largo de los límites del bloque de datos. La salida del módulo 207 de filtro de desbloqueo se escribe en el módulo 208 de memoria temporal de fotogramas configurado en la memoria 306. El módulo 208 de memoria temporal de fotogramas proporciona almacenamiento suficiente para contener múltiples fotogramas descodificados para futuras referencias. Los fotogramas descodificados 209 se envían también desde el módulo 208 de memoria temporal de fotogramas.
El codificador por entropía 104 se describirá con referencia a la figura 4. Los elementos de sintaxis, tales como los coeficientes residuales 401, son introducidos en un módulo de binarización 404. El tamaño 402 de una unidad de transformación (TU) es introducido en el módulo de binarización 404. El tamaño de la unidad de transformación (TU) indica el tamaño de la unidad de transformación (TU) a codificar. Un patrón de escaneo 403 es introducido en el módulo de binarización 404. El módulo de binarización 404 binariza cada elemento de sintaxis en una secuencia de bins. Cada bin comprende un valor 406 de bin y un índice 405 de contexto. Un modelo de contexto 407 recibe el valor 406 de bin y el índice 405 de contexto, lo que genera un contexto 408, seleccionado, según el índice 405 de contexto. El contexto 408 es actualizado, según el valor 405 de bin. El procedimiento para actualizar el contexto 408 concuerda con el utilizado por la codificación aritmética binaria adaptable al contexto (CABAC) en H.264/MPEG-4 AVC. Un codificador aritmético binario 409 utiliza el contexto 408 y el valor 406 de bin para codificar el bin en el flujo 113 de bits codificado.
El descodificador por entropía 202 se describirá con referencia a la figura 5. Un módulo de binarización inversa 503 recibe el tamaño 502 de la unidad de transformación (TU) y un patrón de escaneo 501. El módulo de binarización inversa 503 emite los coeficientes residuales 509 realizando la operación inversa del módulo de binarización 404. Un índice 504 de contexto es emitido desde el módulo de binarización inversa 503 para cada bin a ser descodificado. Un modelo 505 de contexto genera un contexto 506 seleccionado por el índice 504 de contexto. Un descodificador aritmético binario 507 descodifica un valor 508 de bin del flujo 113 de bits codificado utilizando el contexto 506. El modelo 505 de contexto recibe el valor 508 de bin y lo utiliza para actualizar el contexto 506. El módulo de binarización inversa 503 recibe también el valor 508 de bin.
Una unidad de codificación más grande (LCU) 600 a modo de ejemplo se describirá con referencia a la figura 6A. La unidad de codificación más grande (LCU) 600 tiene una forma cuadrada de 64x64 muestras de luma. La unidad de codificación más grande 600 se subdivide recursivamente en una unidad de codificación 1 601 a la unidad de codificación 10 608. La división de la unidad de codificación más grande (LCU) 600 hace utilización de niveles jerárquicos, lo que permite la división recursiva de una zona que contiene la unidad de codificación más grande (LCU) en cuatro zonas del mismo tamaño, de forma cuadrada, que no se superponen, cada una de ellas con la mitad de las dimensiones vertical y horizontal de la zona de partida, y que ocupan conjuntamente toda el área de la zona de partida. Una vez que una zona ya no se subdivide en zonas más pequeñas, existe una unidad de codificación que ocupa completamente la zona. En un nivel concreto de subdivisión, el tamaño de la zona resulta igual a un tamaño conocido como unidad de codificación más pequeña (SCU), momento en el que ya no es posible una subdivisión adicional o puede estar impedida de otra manera, por convención o por razones prácticas. Para el estándar de codificación de video de alta eficiencia (HEVC) en desarrollo, el tamaño de la unidad de codificación más pequeña (SCU) está configurado como muestras de luma de 8x8. Cada unidad de codificación tiene uno de varios tamaños posibles, tal como la unidad de codificación 1601, que tiene un tamaño de 32x32, una unidad de codificación 2 602, que tiene un tamaño de 16x16 y una unidad de codificación 4603, que tiene un tamaño de 8x8. Son también posibles otros tamaños de unidad de codificación, dependiendo del tamaño de la unidad de codificación más grande (LCU) seleccionada y del tamaño de la unidad de codificación más pequeña (SCU) utilizada en el estándar de codificación de video de alta eficiencia (HEVC) en desarrollo.
La subdivisión de la unidad de codificación más grande (LCU) 600 se describirá más detalladamente con referencia a la figura 6B. En este caso, en una zona de la unidad de codificación más grande (LCU) 604, se produce una división, que divide la zona de la unidad de codificación más grande (LCU) en cuatro zonas del mismo tamaño, tal como una zona 605. Se utiliza una nueva división para obtener otras cuatro zonas más pequeñas, tales como la zona 607. Una vez que el tamaño de la zona alcanza las dimensiones de la unidad de codificación más pequeña (SCU), tal como una zona 606, no es posible realizar ninguna otra división. En cada zona en la que no se produce ninguna división adicional, una unidad de codificación ocupa por completo la zona.
La unidad de codificación más grande (LCU) 604 de la figura 6B se puede representar asimismo como un árbol de codificación 630 jerárquico tal como el mostrado en la figura 6C. Cuando se utiliza un árbol jerárquico para representar la unidad de codificación más grande (LCU), cada una de las unidades de codificación formará nodos hoja, mientras que las zonas que contienen zonas subdivididas adicionales formarán nodos que no son de hoja. El nodo raíz 632 del árbol 630 se basa en la zona 604 de la figura 6B y está en un nivel que representa muestras de 64x64. Por debajo del nodo raíz está dispuesta una segunda capa que representa zonas de muestras de 32x32, tal como la zona 605. La unidad de codificación 1 de la figura 6A está representada como el nodo hoja 634, mientras que la zona que contiene las unidades de codificación 2 a 8 está representada por el nodo que no es de hoja 640. Las zonas de tamaño 16x16 se muestran en un tercer nivel del árbol 630, representando el nodo hoja 636 la unidad de codificación 2, y la zona 607 de la figura 6B se representa como un nodo que no es de hoja 642. Las cuarta y última capa del árbol 630 representa zonas de tamaño 8x8, tal como la zona 606, que contiene la unidad de codificación 4 603, que está representada por el nodo hoja 638. Resulta claro a partir de lo anterior, que el tamaño de las unidades de codificación en el árbol disminuye a medida que aumenta la profundidad del árbol.
Tal como se describirá más detalladamente a continuación, se utiliza un indicador de división para indicar que una zona es un nodo hoja en la unidad de codificación más grande (LCU). El árbol de codificación 630 se puede considerar como una forma de representar una estructura de codificación de la unidad de codificación más grande (LCU).
Con referencia a las figuras 6 y 7, se describirá un flujo 700 de bits que codifica la unidad de codificación más grande (LCU) 600 de manera convencional. Como un fotograma de una imagen de video puede tener muchas unidades de codificación más grandes (LCU) por fragmento, un flujo de bits codificado, tal como el flujo 113 de bits codificado, puede comprender muchos casos del flujo 700 de bits que se muestra en la figura 7. La figura 7 adopta una convención para representar elementos de sintaxis binarizados codificados de tal manera que los fragmentos marcados con “S” contienen un indicador de división codificado aritméticamente, los fragmentos marcados con ‘A’ contienen uno o varios elementos de sintaxis binarizados codificados aritméticamente o una porción o porciones de los mismos, los fragmentos marcados con ‘B’ contienen uno o varios elementos de sintaxis binarizados codificados por derivación o una porción o porciones de los mismos, y los fragmentos marcados con ‘A, B’ contienen uno o varios elementos de sintaxis binarizados codificados utilizando una mezcla de codificación aritmética y codificación por derivación. El flujo 700 de bits representa una porción del flujo 113 de bits codificado, ya que los fragmentos consisten habitualmente en múltiples unidades de codificación más grandes (LCU) concatenadas entre sí. Para los tamaños de fotograma que no son múltiplos enteros de las dimensiones de la LCU, la inferencia de los indicadores de división evita que el límite del fotograma pase a través de una unidad de codificación. Las unidades de codificación que quedarían fuera del límite del fotograma no están codificadas en un flujo de bits. La unidad de codificación 1601 está codificada en el flujo 700 de bits en una componente 1 701 de flujo de bits. La unidad de codificación 2 a la unidad de codificación 10 están codificadas asimismo en el flujo 700 de bits en una componente 2 de flujo de bits a un componente 10 de flujo de bits.
Se utiliza un indicador de división para indicar que una zona está dividida, indicando un valor de indicador de 1 que la zona está dividida, mientras que un valor de indicador de 0 indica que la zona no está dividida. Las zonas que están divididas se subdividen en cuatro zonas más pequeñas superpuestas de igual tamaño, que, conjuntamente, ocupan la totalidad de la zona padre. Cualquier zona que tenga el mismo tamaño que la unidad de codificación más pequeña (SCU) predeterminada tendrá un valor 0 inferido para el indicador de división, para indicar que la zona no está subdividida. Cualquier zona que sea más grande que el tamaño de las unidades de codificación más pequeñas requiere la codificación de un indicador de división.
Un indicador de división 709 indica que la zona 604 de la unidad de codificación más grande (LCU) 600 está dividida en cuatro zonas de 32x32, tal como la zona 605. Un indicador de división 710 indica que la zona 605 no se divide más. La unidad de codificación 4 603 es una unidad de codificación más pequeña (SCU), por lo que no es posible realizar más divisiones. Por lo tanto, los indicadores de división no están codificados para cada una de las unidades de codificación 4 a 7. Sin embargo, existe un indicador de división de valor uno para indicar que una zona 607 está subdividida. El indicador de división 711 para la zona 607 está situado antes de la unidad de codificación 4603.
El componente 1 701 de flujo de bits contiene elementos de sintaxis binarizados que utilizan una mezcla de codificación aritmética y codificación por derivación. Un modo de predicción codificado aritméticamente 703 determina si la unidad de codificación 1 601 utiliza interpredicción o intrapredicción. Si la unidad de codificación utiliza intrapredicción, un indicador 704 de modo más probable codificado aritméticamente codifica si se utiliza el modo más probable para la intrapredicción o si se utiliza un esquema alternativo para codificar el modo de intrapredicción. Si se está utilizando un modo más probable, un código 705 de modo de intrapredicción por derivación codifica un índice de modo más probable con una longitud de un bit. El índice de modo más probable determina cuál de los dos modos predeterminados más probables de intrapredicción se utiliza para la unidad de codificación. Si no se utiliza un modo más probable, el código 705 de modo de intrapredicción codifica un modo restante que especifica un modo de intrapredicción para la unidad de codificación. El código 705 de modo de intrapredicción puede tener una longitud de 5 bits o 6 bits para el modo restante. Un bloque de datos 706 utiliza la codificación aritmética y por derivación para una o varias unidades de transformación dentro de la unidad de codificación 601. El componente 1 701 de flujo de bits contiene todos los elementos de sintaxis necesarios para descodificar la unidad de codificación 1. De manera similar, los componentes del flujo de bits 2 a 10 contienen los elementos de sintaxis necesarios para descodificar las unidades de codificación 2 a 10 respectivamente.
Un flujo 800 de bits, según la presente invención que codifica la unidad de codificación más grande (LCU) 600 se describirá con referencia a las figuras 6 y 8. La figura 8 adopta la convención de la figura 7 para representar elementos de sintaxis binarizados codificados. El flujo 800 de bits representa una porción del flujo 113 de bits codificado que codifica la unidad de codificación más grande (LCU) 600. El flujo 800 de bits tiene tres porciones que se pueden véase en un primer nivel de detalle 820 que son un primer bloque 801 de datos codificado aritméticamente que, agrupa información sobre la estructura de la unidad de codificación de las unidades de codificación 1 a 10, un segundo bloque 802 de datos codificado por derivación, que agrupa información sobre los modos de intrapredicción para las unidades de codificación 1 a 10, y un tercer bloque 803 de datos, que contiene datos codificados de manera aritmética y por derivación y grupos de información para datos residuales para las unidades de codificación 1 a 10. A diferencia del flujo 700 de bits, cada una de las tres porciones del flujo 800 de bits puede contener información acerca de las unidades de codificación 1 a 10.
El primer bloque de datos codificado aritméticamente se utiliza preferentemente para almacenar indicadores de división, modo de predicción, y cuando se está utilizando la interpredicción, la información de modo más probable para las unidades de codificación 1 a 10, según sea necesario. El primer bloque de datos se ilustra con más detalle en un segundo nivel de detalle 830 del flujo 800 de bits en la figura 8. Tal como se muestra en el segundo nivel de detalle 830, un primer indicador de división 813 tiene un valor de 1, para indicar que la zona 604 de la unidad de codificación más grande (LCU) 600 está dividida en cuatro zonas de 32x32, tal como la zona 605. Un indicador de división 807 tiene un valor de 0, para indicar que la zona 605 no tiene más divisiones. Un modo de predicción 808 codifica un valor para indicar si la unidad de codificación 1 utiliza la interpredicción o la intrapredicción. Cuando la unidad de codificación 1 utiliza la intrapredicción, el indicador 809 de modo más probable indica si se utilizó el modo más probable o el modo restante para la intrapredicción de la unidad de codificación. Otros casos de indicadores de división, valores del modo de predicción e indicadores de modo más probable se codifican en una porción del flujo 804 de bits para representar las unidades de codificación 2 a 10 de la unidad de codificación más grande (LCU) 600. En primer lugar, el indicador de división 813, el indicador de división 807, el modo de predicción 808, el indicador 809 de modo más probable y la porción del flujo 804 de bits forman todos parte de la porción del flujo de bits 801, que puede consistir exclusivamente en elementos de sintaxis codificados aritméticamente.
El segundo bloque 802 de datos contiene datos de derivación 810 que están presentes en el flujo 800 de bits cuando la unidad de codificación 1601 utiliza la intrapredicción. Cuando se está utilizando la intrapredicción y el indicador 809 de modo más probable indica que se está utilizando el modo más probable, los datos de derivación 810 son un índice que codifica la utilización de uno de los dos modos más probables. El índice ocupa una longitud fija de un bit. Alternativamente, cuando se utiliza la intrapredicción y el indicador 809 de modo más probable indica que se está utilizando el modo restante, los datos de derivación 810 son un índice que codifica la utilización de uno de los 33 modos restantes de intrapredicción (de los 35 modos posibles de intrapredicción, se excluyen los dos modos más probables, quedando 33 modos restantes). En este caso, los datos de derivación 810 tienen una longitud de 5 bits o 6 bits, dependiendo del modo de intrapredicción codificado. La longitud o el tamaño de los datos de derivación 810 pueden ser determinados a partir de los primeros 5 bits de los datos de derivación 810, establecidos por la estructura de la unidad de codificación. Es posible determinar si el sexto bit del flujo de bits es necesario, después de inspeccionar los primeros 5 bits. Cuando se utiliza la interpredicción para la unidad de codificación 1 601, se omiten los datos de derivación 810 del flujo 800 de bits. Existen otros casos de datos de derivación 810 para las unidades de codificación 2 a 10 en un bloque 805 de datos de derivación si, como mínimo, una de las unidades de codificación 2 a 10 utiliza la intrapredicción. Un bloque 802 de datos de derivación codifica los datos de derivación 810 y el bloque 805 de datos de derivación cuando sea necesario.
El tercer bloque 803 de datos se muestra con más detalle como bloque 811 de datos codificados aritméticamente y por derivación. El bloque 811 de datos codifica una o varias unidades de transformación dentro de la unidad de codificación 1 601 que contiene coeficientes residuales para las unidades de transformación que pueden ser utilizados, con la información del modo de predicción para generar datos de video. Un indicador 812 de final de fragmento codificado aritméticamente está presente en las mismas condiciones que se describen con referencia a la figura 7.
Un procedimiento 900 para descodificar el flujo 800 de bits se describirá con referencia a las figuras 6, 8 y 9. El procedimiento 900 recibe el flujo 800 de bits y procesa los tres bloques de datos para permitir la descodificación de las unidades de codificación en el flujo 800 de bits. El procedimiento 900 comienza con una etapa 901 de determinación del valor del indicador de división, en la que se determina el valor de un indicador de división, tal como el indicador de división 807. Cuando la unidad de codificación es más grande que la unidad de codificación más pequeña (SCU), el valor del indicador de división se determina mediante la descodificación de un indicador de división del flujo 800 de bits. Cuando la unidad de codificación tiene el mismo tamaño que la unidad de codificación más pequeña (SCU), tal como la unidad de codificación 4606, entonces se infiere que el valor del indicador de división es cero.
El valor del indicador de división se utiliza a continuación para determinar si la estructura de la unidad de codificación está actualmente en un nodo hoja. Si el valor del indicador de división es cero, una etapa 902 de prueba del nodo hoja pasa el control a la etapa 903 del modo de predicción de la unidad de codificación. De lo contrario, la etapa 902 de prueba del nodo hoja pasa el control de nuevo a la etapa 901 de determinación del valor del indicador de división, aumentado la profundidad del árbol de codificación para indicar una zona en un nivel por debajo del nivel actual en el árbol de codificación, como el árbol 630 descrito anteriormente en relación con la figura 6B. Las zonas son procesadas en un orden de escaneo de ráster procesando el árbol de codificación en una manera de primero la profundidad. La utilización del orden de escaneo de ráster garantiza que las unidades de codificación 1 a 10 en la figura 6A son procesadas en orden.
La etapa 903 de modo de predicción de la unidad de codificación determina un valor del modo de predicción. El valor del modo de predicción se determina mediante la descodificación de un modo de predicción, tal como el modo de predicción 808. El modo de predicción especifica tanto el modo de predicción utilizado para la unidad de codificación como el modo de partición utilizado para dividir la unidad de codificación en una o varias unidades de predicción. Los modos de partición posibles son NxN o 2Nx2N. Si el modo de partición es NxN, entonces la unidad de codificación se divide en 4 unidades de predicción, cada una con un modo de predicción. Si el modo de partición es 2Nx2N, entonces la unidad de codificación solo contiene una unidad de predicción. Los modos de partición NxN y 2Nx2N dan como resultado unidades de predicción que tienen una forma cuadrada. Son también posibles otros modos de partición, por ejemplo, 2NxN y Nx2N, dando como resultado unidades de predicción de forma rectangular. Cabe destacar que la intrapredicción o la interpredicción se especifican al nivel de la unidad de codificación, por lo que para NxN, las cuatro unidades de predicción serán de intrapredicción; sin embargo, cada unidad de predicción puede tener un modo de intrapredicción diferente, por lo que cada unidad de predicción tiene indicadores de modo más probable (MPM, Most Probable Mode) y modo de predicción independientes. Aunque el procedimiento 900 se describe, en general, en relación con cada unidad de codificación que tiene una sola unidad de predicción, el procedimiento 900 puede ser extendido para abarcar las unidades de codificación que contienen múltiples unidades de predicción.
Cuando el valor del indicador de división es cero y el valor del modo de predicción para la unidad de codificación especifica la intrapredicción, una etapa 904 de indicador de MPM determina el valor del indicador de modo más probable. El valor del indicador de modo más probable se determina mediante la descodificación de un indicador de modo más probable, tal como el indicador 804 de modo más probable de la figura 8. Una etapa 905 de prueba de si existen más nodos determina si se ha encontrado la última unidad de codificación en la unidad de codificación más grande (LCU). Si es así, el control pasa a una etapa 906 de determinación del modo de intrapredicción. En caso contrario, el control vuelve a la etapa 901 de determinar el valor del indicador de división.
Para una unidad de codificación de intrapredicción de 32x32, tal como la unidad de codificación 1601 de la figura 6, la unidad de codificación puede contener una, dos o cuatro unidades de predicción, dependiendo del modo de partición de la unidad de codificación. Las etapas 906 y 907 son iteradas sobre la estructura de la unidad de codificación que fue determinada en las etapas 901 a 905. La etapa 906 de determinar el modo de intrapredicción determina como sigue el modo de intrapredicción para una unidad de predicción. Si el valor de indicador de modo más probable para una unidad de predicción indica que se ha utilizado un modo más probable, entonces se descodifica un valor del índice de modo más probable de un bit del flujo 800 de bits utilizando la descodificación por derivación. Un valor de índice de modo más probable de un bit indica cuál de los dos modos más probables posibles se está utilizando. De lo contrario, el valor del indicador de modo más probable indica la utilización de un modo restante y un valor del modo restante es descodificado del flujo 800 de bits utilizando la descodificación por derivación. El número de valores válidos del modo de intrapredicción y el intervalo del código de longitud variable dependen del tamaño de la unidad de predicción. De los modos de intrapredicción disponibles para un tamaño de unidad de predicción determinado, el número de modos restantes es igual al número de modos más probables restados del número de modos disponibles. Cuando el número de modos restantes es una potencia de dos, el modo restante puede utilizar un código de longitud fija, de lo contrario, se utiliza un código de longitud variable. Por ejemplo, una unidad de predicción de 4x4 intrapredicha con 18 modos de intrapredicción disponibles y dos modos más probables tiene 16 modos restantes y, por lo tanto, puede utilizar un código de cuatro bits para codificar el modo restante. Alternativamente, una unidad de predicción de 4x4 intrapredicha con 19 modos de intrapredicción disponibles y dos modos más probables tiene 17 modos restantes y, por lo tanto, puede utilizar un código de cuatro bits o cinco bits para codificar el modo restante. Una unidad de predicción de 8x8 intrapredicha con dos modos más probables tiene 33 modos restantes y, por lo tanto, puede utilizar un código de longitud variable de cinco o seis bits. En una implementación, el código de longitud variable es descodificado leyendo, como mínimo, un número suficiente de bins para determinar la longitud del código de longitud variable utilizado para el modo restante. Para dichas unidades de predicción, es posible descodificar cinco bits para determinar si se debe descodificar un sexto bit. Como resultado, se puede realizar una segunda lectura para descodificar la porción siguiente del modo restante en base a los bits suficientes descodificados. Una implementación alternativa introduce un indicador de modo restante codificado aritméticamente, codificado después del indicador de modo más probable, lo que indica que la unidad de predicción utiliza un modo restante predeterminado. Si el modo restante predeterminado, por ejemplo, la ‘intrapredicción plana’ no se está utilizando, uno de los otros modos restantes es codificado utilizando el elemento de sintaxis de modo restante codificado por derivación. Por ejemplo, si una unidad de predicción de 4x4 intrapredicha tiene 19 modos disponibles, con dos modos más probables y uno restante predeterminado, existen otros 16 modos restantes, que pueden ser codificados utilizando un elemento de sintaxis de modo restante de longitud fija de cuatro bits. Además, si una unidad de predicción de 8x8 intrapredicha tiene 35 modos disponibles, con dos modos más probables y un modo restante predeterminado, existen otros 32 modos restantes, que pueden ser codificados utilizando un elemento de sintaxis de modo restante de longitud fija de cinco bits. Cuando el número de modos restantes u otros modos restantes es una potencia de dos, un código de longitud fija es suficiente para codificar el modo restante u otro modo restante utilizado. El modo de intrapredicción para la unidad de predicción se determina por lo tanto utilizando el valor del indicador de modo más probable y uno del valor del índice de modo más probable o del valor de modo restante. Alternativamente, el indicador de modo restante predeterminado y, opcionalmente, el otro modo restante, se utilizan para determinar el modo de intrapredicción para la unidad de predicción. Cuando múltiples códigos de longitud variable están concatenados, es posible realizar una lectura de la longitud mínima de los códigos combinados para determinar si son necesarias lecturas adicionales para completar la descodificación de los códigos. El flujo 800 de bits puede codificar cada una de las porciones de longitud mínima de los modos restantes de longitud variable adyacentes en el segundo bloque 802 de datos y, a continuación, codificar los datos restantes de los modos restantes de longitud variable en el segundo bloque 802 de datos. Utilizando esta codificación, es posible que las implementaciones lean todas las porciones de longitud mínima en una lectura y determinen la longitud de los datos restantes para completar la lectura de los modos restantes de longitud variable.
Una etapa 907 de prueba de si existen más nodos determina si existen más nodos del árbol de codificación que necesitan que su modo de intrapredicción sea determinado. El resultado de ejecutar la etapa 907 es que la etapa 906 de determinar el modo de intrapredicción es iterada sobre todos los nodos de la unidad de codificación más grande (LCU).
Una etapa 908 de descodificar datos residuales descodifica el tercer bloque 803 de datos. La etapa 908 de descodificar datos residuales descodifica cada una de las unidades de transformación para las unidades de codificación 1 a 10 en la unidad de codificación más grande (LCU) 600. A medida que se descodifica cada unidad de transformación, el módulo de escalado inverso y transformación 203 convierte los datos residuales del dominio de la frecuencia al dominio del espacio, para generar las muestras residuales 224. Utilizando el modo intrapredicción, el módulo 205 de intrapredicción de fotogramas determina la predicción 234 para cada unidad de predicción. Otras etapas para descodificar la unidad de codificación más grande (LCU) 600 se corresponden con la operación descrita en la figura 2.
Se describirá un procedimiento 1000 para descodificar el flujo 800 de bits con referencia a la figura 10. El procedimiento 1000 comienza con una etapa 1001 de determinar la estructura de la unidad de codificación que construye una estructura de la unidad de codificación para representar la división de una unidad de codificación más grande (LCU) en múltiples unidades de codificación en base a la información del indicador de división en el primer bloque 801 de datos codificado aritméticamente. Otra información acerca de las unidades de codificación se determina asimismo a partir del primer bloque 801 de datos. La información incluye un valor del modo de predicción para la unidad de codificación e indicadores de MPM para cualquier unidad de predicción de la unidad de codificación. Más detalles de cómo se hace esto se han descrito anteriormente en la figura 9 en la etapa 901 de determinar el valor del indicador de división, la etapa 902 de nodo hoja, la etapa 903 de determinar el valor del modo de predicción de la unidad de codificación, la etapa 905 de determinar el valor del indicador de MPM de la unidad de predicción, y la etapa 906 de si existen más nodos.
A continuación, una etapa 1002 de descodificar datos codificados por derivación descodifica el segundo bloque 802 de datos codificado por derivación. El segundo bloque 802 de datos codificado por derivación proporciona información acerca de los modos de intrapredicción utilizados para cada una de las unidades de codificación intrapredichas de la mayor unidad de codificación (LCU). La etapa 1002 de descodificar los datos codificados por derivación se describe con más detalle en la etapa 906 de determinar el modo de intrapredicción y la etapa 907 de si existen más nodos de la figura 9, descrita anteriormente.
A continuación, el procedimiento 1000 continúa hacia una etapa 1003 de descodificar datos residuales, en la que los datos residuales son descodificados del tercer bloque 803 de datos. Tal como se describió anteriormente, el tercer bloque 803 de datos contiene datos codificados aritméticamente y por derivación. La etapa 1003 de descodificar datos residuales se describe con más detalle en la etapa 908 de descodificar datos residuales de la figura 9 anterior.
Finalmente, una etapa 1004 de formar unidades de codificación combina el modo de intrapredicción de la etapa 1002 de descodificar datos codificados por derivación y los datos residuales de la etapa 1003 de descodificar los datos residuales para formar unidades de codificación descodificadas, tal como se describe en relación con la figura 2. Una vez que una unidad de codificación descodificada ha sido formada, el modo de intrapredicción y los datos residuales pueden ser combinados para formar parte de un fotograma de video descodificado.
Aunque el procedimiento 1000 se ha descrito en relación con el procedimiento 900 de la figura 9, el procedimiento puede abarcar también otros procedimientos, tales como el procedimiento 1400 de la figura 14 y el procedimiento 1700 de la figura 17, que se describirán a continuación.
Un procedimiento 1100 para codificar el flujo 800 de bits se describirá ahora con referencia a la figura 11. El procedimiento 1100 codifica el flujo 800 de bits y genera los tres bloques de datos para habilitar la descodificación de las unidades de codificación en el flujo 800 de bits. El procedimiento 1100 se inicia con una etapa 1101 de codificar el valor del indicador de división, en la que el valor de un indicador de división, tal como el indicador de división 807, es codificado. Las reglas que rigen la ubicación de los indicadores de división han sido explicadas con más detalle anteriormente, en relación con las figuras 6A y 6B. Cuando una unidad de codificación es más grande que la unidad de codificación más pequeña (SCU), un indicador de división codifica el valor del indicador de división apropiado en el flujo 800 de bits. Sin embargo, el indicador de división no se codifica cuando la unidad de codificación tiene el mismo tamaño que la unidad de codificación más pequeña (SCU), tal como la unidad de codificación 4606 de la figura 6B.
Si el valor del indicador de división es cero, una etapa 1102 de prueba de nodo hoja pasa el control a una etapa 1103 de codificar el valor del modo de predicción de la unidad de codificación, ya que el cero del indicador de división indica que la unidad de codificación actual es un nodo hoja del árbol de codificación. Si el nodo actual del árbol de codificación es un nodo que no es de hoja, la etapa 1102 de prueba del nodo hoja devuelve el control a la etapa 1101 de codificar el valor del indicador de división, incrementándose la profundidad del árbol de codificación hasta una zona un nivel por debajo del nivel actual en el árbol de codificación, tal como el árbol 630 descrito anteriormente en relación con la figura 6C. Al igual que con el procedimiento 900 de la figura 9, las zonas son procesadas en un orden de escaneo de ráster, procesando el árbol de codificación de una manera de primero la profundidad. La utilización del orden de escaneo de ráster garantiza que las unidades de codificación 1 a 10 en la figura 6A son procesadas en orden.
Una etapa 1103 de codificar el modo de predicción de la unidad codifica un valor del modo de predicción. Para fragmentos que contienen tanto unidades de predicción interpredichas como unidades de intrapredicción predichas, el modo de predicción especifica el tipo de predicción utilizado. Para los fragmentos que contienen solo unidades de intrapredicción predichas, el modo de predicción no está codificado en el flujo 113 de bits codificado. De manera similar al procedimiento 900 de la figura 9, el modo de predicción especifica tanto el modo de predicción utilizado para la unidad de codificación como el modo de partición. Mientras que el procedimiento 1100 se describe en relación con una unidad de codificación con una sola unidad de predicción, el procedimiento puede ser extendido para abarcar unidades de codificación que contienen múltiples unidades de predicción.
Cuando el valor del indicador de división es cero y el valor del modo de predicción para la unidad de codificación especifica intrapredicción, una etapa 1104 de codificar el indicador de Mp M codifica un valor del indicador de modo más probable. El módulo de intrapredicción 109 de fotogramas de la figura 1 determina el modo de intrapredicción para una unidad de predicción. El módulo de intrapredicción 109 de fotogramas determina asimismo los dos modos más probables para la intrapredicción. Si el modo de intrapredicción determinado es igual a uno de los modos más probables, el valor del indicador de modo más probable se establece en 1, lo que indica la utilización del modo más probable. De lo contrario, el valor del indicador de modo más probable se establece en 0, lo que indica la utilización de un modo restante. Un indicador de modo más probable, tal como el indicador 804 de modo más probable de la figura 8, es codificado como el valor del indicador de modo más probable. Una etapa 1105 de prueba de si existen más nodos determina si se ha encontrado la última unidad de codificación en la unidad de codificación más grande (LCU). Si es así, el control pasa a una etapa 1106 de codificar datos de derivación. Si no, el control vuelve a ejecutar la etapa 1101 de codificar el valor del indicador de división.
Para una unidad de codificación de intra-predicción de 32x32, tal como la unidad de codificación 1601 de la figura 6, la unidad de codificación puede contener una, dos o cuatro unidades de predicción, dependiendo del modo de partición de la unidad de codificación. La etapa 1106 de codificar datos de derivación codifica el modo de intrapredicción para una unidad de predicción de la siguiente manera. Si el valor del indicador de modo más probable para una unidad de predicción indica que se ha utilizado un modo más probable, entonces un valor del índice de modo más probable de un bit, que indica cuál de los dos modos más probables disponibles fue seleccionado, es codificado en el flujo 800 de bits utilizando descodificación por derivación. De lo contrario, el valor del indicador de modo más probable indica la utilización de un modo restante, y un valor de modo restante es codificado en el flujo 800 de bits utilizando codificación por derivación. Cuando se concatenan varios valores de índice de modo más probable o valores de modo restante, es posible realizar una escritura de los códigos combinados en una sola operación, en lugar de escribir el código para cada unidad de predicción de manera separada.
Una etapa 1107 de prueba de si existen más nodos determina si existen más nodos del árbol de codificación que necesitan que su modo de intrapredicción sea determinado. El resultado es que se ejecuta la etapa 1106 de codificar datos de derivación para iterar sobre todos los nodos de la unidad de codificación más grande (LCU). La iteración sobre la etapa 1106 de codificar datos de derivación y la etapa 1107 de si existen más nodos pueden tener lugar antes de escribir los datos de derivación en el flujo 113 de bits codificado para predeterminar la longitud de los datos que se escribirán.
Una etapa 1108 de codificar los datos residuales codifica el tercer bloque 803 de datos. La etapa 1108 de codificar los datos residuales codifica cada una de las unidades de transformación para las unidades de codificación 1 a 10 en la unidad de codificación más grande (LCU) 600 en el flujo 113 de bits codificado. Para codificar cada unidad de transformación, las muestras residuales 122 son transformadas mediante el bloque de transformación 102 en los coeficientes de transformación 124. El bloque de escalado y cuantificación 103 convierte a continuación los coeficientes de transformación 124 en coeficientes residuales 126. Los coeficientes residuales 126 son codificados mediante el codificador por entropía 104 al flujo 113 de bits codificado. Otras etapas para codificar la unidad de codificación más grande (LCU) 600 se corresponden con la operación descrita en el codificador de video 100 de la figura 1.
Se describirá un procedimiento 1200 para codificar el flujo 800 de bits con referencia a la figura 12. El procedimiento 1200 se inicia con una etapa 1201 de codificar la estructura de la unidad de codificación, que codifica una estructura de la unidad de codificación para representar la división de una unidad de codificación más grande (LCU) en múltiples unidades de codificación mediante la codificación de la información del indicador de división en el primer bloque 801 de datos codificado aritméticamente. Otra información acerca de las unidades de codificación es codificada asimismo en el primer bloque 801 de datos. La información incluye un valor del modo de predicción para la unidad de codificación y los indicadores MPM para cualquier unidad de predicción de la unidad de codificación. El detalle de cómo se hace esto se ha descrito anteriormente en la figura 11 en la etapa 1101 de codificar el valor del indicador de división, la etapa 1102 de nodo hoja, la etapa 1103 de codificar el valor del modo de predicción de la unidad de codificación, la etapa 1105 de codificar el valor del indicador de MPM de la unidad de predicción y la etapa 1106 de si existen más nodos.
A continuación, una etapa 1202 de codificar datos codificados por derivación codifica el segundo bloque 802 de datos codificados por derivación. El segundo bloque 802 de datos codificados por derivación codifica información acerca de los modos de intrapredicción utilizados para cada una de las unidades de codificación intrapredichas de la unidad de codificación más grande (LCU). La etapa 1202 de codificar datos codificados por derivación se describe con más detalle en la etapa 1106 de codificar datos de derivación y la etapa 1107 de si existen más nodos de la figura 11, descritas anteriormente.
El procedimiento 1200 continúa después hacia una etapa 1203 de codificar datos residuales, en la que los datos residuales son codificados en el tercer bloque 803 de datos. Tal como se describió anteriormente, el tercer bloque 803 de datos contiene datos que están codificados aritméticamente y por derivación. La etapa 1203 de codificar datos residuales se describe con más detalle en la etapa 1108 de codificar datos residuales de la figura 11 anterior.
Una etapa 1204 de almacenar bloques de datos almacena datos codificados aritméticamente en el bloque 801 de datos, datos codificados por derivación en el bloque 802 de datos y una mezcla de datos codificados aritméticamente y codificados por derivación en el bloque 803 de datos en el flujo 113 de bits codificado. La etapa 1204 de almacenar bloques de datos puede ser implementada como una sola etapa para almacenar los bloques de datos, o como almacenamiento temporal de datos codificados a medida que los bloques de datos son generados mediante sus respectivas etapas en el procedimiento 1200.
Aunque el procedimiento 1200 se ha descrito en relación con el procedimiento 1100 de la figura 11, el procedimiento puede abarcar también otros procedimientos de codificación relacionados con la descodificación, tal como el procedimiento 1400 de la figura 14 y el procedimiento 1700 de la figura 17 que se describirán a continuación.
Un flujo 1300 de bits alternativo para codificar la unidad de codificación más grande (LCU) 600 se describirá con referencia a la figura 13. La figura 13 adopta la convención de la figura 7 para representar elementos de sintaxis binarizados codificados. El flujo 1300 de bits representa una porción del flujo 113 de bits codificado que codifica la unidad de codificación más grande (LCU) 600. Un primer bloque 1301 de datos tiene una estructura similar al primer bloque 801 de datos, y codifica elementos de sintaxis utilizando exclusivamente codificación aritmética. El primer bloque 1301 de datos es similar al primer bloque 801 de datos, ya que el primer bloque 1301 de datos codifica aritméticamente un valor del modo de predicción para una unidad de codificación utilizando un modo de predicción, tal como el modo de predicción 1308. A diferencia del primer bloque 801 de datos, el primer bloque 1301 de datos no codifica un indicador de modo más probable, tal como el indicador 809 de modo más probable del primer bloque 801 de datos. Por el contrario, el indicador de modo más probable 1309 es codificado en un segundo bloque de datos 1302 utilizando codificación por derivación. El segundo bloque de datos 1302 utiliza codificación por derivación exclusivamente para codificar elementos de sintaxis, tal como se ha descrito para el segundo bloque 802 de datos. La codificación del indicador de modo más probable con codificación por derivación puede permitir la descodificación con un mayor rendimiento, al leer grupos más grandes de bins de derivación en una sola operación de lectura. De manera similar a los datos de derivación 810, cuando un modo de predicción 1308 indica la utilización de la intrapredicción, el flujo 1300 de bits incluye los datos de derivación 1310 que representan un índice de modo más probable o un modo restante.
A continuación, se describirá una implementación alternativa en relación con el procedimiento 1400 de la figura 14, para descodificar el flujo de bits alternativo 1300. Una etapa 1401 de determinar el valor del indicador de división, una etapa 1402 de nodo hoja, una etapa 1403 de determinar el valor del modo de predicción de la unidad de codificación y una etapa 1404 de si existen más nodos operan de manera similar a la etapa 901 de determinar el valor del indicador de división, la etapa 902 de nodo hoja, la etapa 903 de determinar el valor del modo de predicción de la unidad de codificación, y la etapa 905 de si existen más nodos de la figura 9. En contraste con el procedimiento 900, una etapa correspondiente a la etapa 904 de determinar el valor del indicador de MPM de la unidad de predicción de la figura 9 no se incluye en el conjunto anterior de etapas de la figura 14. Por el contrario, la etapa correspondiente, que es la etapa 1405, tiene lugar más adelante en el procedimiento 1400. La etapa 1405 de determinar el valor del indicador de MPM de la unidad de predicción determina el valor del indicador de MPM de la unidad de predicción de manera similar a la correspondiente etapa 904 de la figura 9, excepto porque un indicador 1309 de modo más probable codificado por derivación es descodificado a partir del flujo 1300 de bits. Una etapa 1406 de determinar el modo de intrapredicción, una etapa 1407 de si existen más nodos y una etapa 1408 de descodificar los datos residuales funcionan tal como se ha descrito con referencia a la etapa 906 de determinar el modo de intrapredicción, la etapa 907 de si existen más nodos y la etapa 908 de descodificar los datos residuales de la figura 9.
A continuación, se describirá una unidad de codificación más grande (LCU) 1500 a modo de ejemplo, de la figura 15. La unidad de codificación más grande (LCU) 1500 tiene una composición idéntica de las unidades de codificación 1 a 10 como la unidad de codificación más grande (LCU) 600 de la figura 6. Sin embargo, a diferencia de la unidad de codificación más grande (LCU) 600, la unidad de codificación más grande (LCU) 1500 incluye un límite de fragmento entre una unidad de codificación 9 1503 y una unidad de codificación 10 1505, ya que se han habilitado fragmentos de granularidad fina. Por consiguiente, las unidades de codificación 1 a 9 de la figura 15 están situadas en un primer fragmento, mientras que la unidad de codificación 10 1505 está situada en un segundo fragmento.
A continuación, se describirá un flujo 1600 de bits, que se muestra en la figura 16, que codifica la unidad de codificación más grande (LCU) 1500. El flujo 1600 de bits está codificado con fragmentos de granularidad fina habilitados y el umbral del fragmento de granularidad fina configurado para limitar los límites del fragmento a los límites de la unidad de codificación de 32x32. Cuando se habilitan fragmentos de granularidad fina, la unidad de codificación más grande (LCU) 1500 se puede dividir en fragmentos independientes en cualquier zona de un tamaño igual o superior al umbral del fragmento de granularidad fina. Un elemento de sintaxis de final de fragmento indica la terminación de un fragmento. El elemento de sintaxis de final de fragmento es codificado después de la última unidad de codificación en cada zona cuyo tamaño es igual al umbral del fragmento de granularidad fina. En la figura 16 existen cuatro elementos de sintaxis de final de fragmento, puesto que la unidad de codificación más grande (LCU) de 64x64 tiene un tamaño límite de 32x32. El elemento de indicador de sintaxis de final de fragmento estará situado después de las unidades de codificación 1, 8, 9 y 10. Es un requisito que los elementos de sintaxis en un fragmento describan completamente las unidades de codificación en ese fragmento. Cuando se habilitan fragmentos de granularidad fina, la decisión de dividir la unidad de codificación más grande (LCU) 1500 en dos fragmentos se puede tomar durante el procedimiento de codificación del flujo 1600 de bits. Por consiguiente, cuando la información procedente de una serie de unidades de codificación es agrupada en un primero, segundo y tercer bloques de datos, las unidades de codificación del grupo pueden no extenderse más allá de un indicador de final. Un componente 1601 del flujo de bits comprende elementos de sintaxis para la unidad de codificación 1. Un componente 1602 del flujo de bits comprende un primer bloque 1615 de datos, un segundo bloque 1616 de datos y un tercer bloque 1607 de datos, que codifica las unidades de codificación 2 a 8 de la figura 15 contenidas en la zona 607. El primer bloque 1615 de datos, el segundo bloque 1616 de datos y el tercer bloque 1607 de datos que codifican las unidades de codificación 2 a 8 de la figura 15 son similares al primer bloque 801 de datos, al segundo bloque 802 de datos y el tercer bloque 803 de datos de la figura 8. En contraste con el flujo 800 de bits, la agrupación de elementos de sintaxis en el primer, segundo y tercer bloque de datos en el flujo 1600 de bits está limitada al umbral de fragmento de granularidad fina. Dado que el umbral de fragmento de granularidad fina se establece en 32x32, las unidades de codificación 1, 9 y 10 no se agrupan con otras unidades de codificación, mientras que las unidades de codificación 2 a 8 están agrupadas. Un indicador 1614 de final de fragmento indica que el primer fragmento termina después de la unidad de codificación 9 1503, y el segundo fragmento comienza en la unidad de codificación 101505 de la figura 15.
En una implementación, el flujo 1600 de bits codifica un indicador de habilitación de fragmentos de granularidad fina al inicio de cada unidad de codificación más grande (LCU), tal como la unidad de codificación más grande (LCU) 1500. Cuando los fragmentos de granularidad fina no están habilitados para una unidad de codificación más grande (LCU), el procedimiento 900 se aplica a la unidad de codificación más grande (LCU). Cuando los fragmentos de granularidad fina están habilitados para una unidad de codificación más grande (LCU), el procedimiento 900 se aplica a cada unidad de codificación subdividida de igual tamaño que el umbral del fragmento de granularidad fina.
A continuación, se describirá otra implementación alternativa en relación con el procedimiento 1700 de la figura 17, para descodificar el flujo 800 de bits. Una etapa 1701 de determinar el valor del indicador de división, una etapa 1702 de nodo hoja, una etapa 1703 de determinar el valor del modo de predicción de la unidad de codificación, una etapa 1704 de determinar el valor del indicador de MPM de la unidad de predicción y una etapa 1705 de si existen más nodos funcionan de manera similar a las etapas correspondientes de la figura 9, que son la etapa 901 de determinar el valor del indicador de división, la etapa 902 de nodo hoja, la etapa 903 de determinar el valor del modo de predicción de la unidad de codificación, la etapa 904 de determinar el valor del indicador de MPM de la unidad de predicción, y la etapa 905 de si existen más nodos. La estructura de la unidad de codificación resultante y la información de modo más probable son utilizadas por una etapa 1706 de leer datos de derivación para leer el bloque 802 de datos de derivación. La longitud del bloque 802 de datos de derivación está determinada por la estructura de la unidad de codificación y la información del modo más probable mediante la suma de las longitudes de los índices de modo más probable y de los modos restantes. La etapa 1706 de leer datos de derivación puede leer el bloque 802 de datos de derivación en una sola operación, o en múltiples operaciones, pero no está limitada a leer información para una unidad de predicción a la vez. La cantidad de datos a leer es la longitud del bloque 802 de datos de derivación que ya se ha determinado.
A continuación, una etapa 1707 de asignar modos de intrapredicción a la unidad de predicción divide los datos de derivación de la etapa 1706 de leer los datos de derivación y determina el modo de intrapredicción para cada unidad de predicción. Una etapa 1708 de descodificar los datos residuales funciona tal como se describe con referencia a la etapa 908 de descodificar los datos residuales de la figura 9.
Cuando el modo restante es codificado utilizando un código de longitud variable, tal como el código de cinco o seis bits descrito con referencia a la figura 9, la longitud de los datos codificados por derivación 802 no se puede determinar antes de la etapa 1706 de leer los datos de derivación. Por el contrario, se puede calcular una longitud mínima en base al conocimiento de la estructura de la unidad de codificación y de los valores de indicador de modo más probable y de los tamaños de la unidad de predicción. La longitud mínima puede ser leída del flujo 113 de bits codificado y analizada para determinar el modo de intrapredicción, como mínimo, de una de las unidades de predicción. El análisis sintáctico puede ser aplicado repetidamente hasta conocer la longitud de los datos de derivación. Se pueden realizar una o varias lecturas de datos de derivación consecutivas para leer la totalidad de los datos codificados por derivación 802 del flujo 113 de bits codificado. Aunque el código de longitud variable para la técnica de datos de derivación de la implementación alternativa descrita anteriormente se describe en relación con el procedimiento 1700 de la figura 17, la técnica se puede aplicar durante otros procedimientos de descodificación descritos anteriormente, tal como el procedimiento 900 de la figura 9.
Cuando el indicador de modo más probable está codificado por derivación, una variación del procedimiento 1700 puede funcionar para eliminar la etapa 1704 de determinar el valor del indicador de MPM de la unidad de predicción e incorpora la funcionalidad de la etapa 1704 de determinar el valor del indicador de MPM de la unidad de predicción en la etapa 1706 de leer los datos de derivación.
Una implementación alternativa para consumir datos codificados por derivación de longitud desconocida, funciona para acceder al flujo 113 de bits codificado para determinar un segmento de datos, que contiene, como mínimo, algunos datos codificados por derivación. Sin embargo, a diferencia de los planteamientos descritos anteriormente, los datos no son consumidos del flujo de bits. Los índices de modo más probable y de modos restantes son descodificados del segmento de datos y se mantiene un total acumulado para una longitud de los datos descodificados. Una vez que todos los datos codificados por derivación son descodificados del segmento de datos, la longitud total acumulada es consumida a continuación del flujo de bits. El resultado es que el segmento de datos accede a los datos del flujo de bits más allá del segundo bloque 802 de datos codificado por derivación, pero los datos no se consumen y, por lo tanto, el tercer bloque 803 de datos aritmético y de derivación está disponible para la descodificación mediante la etapa de descodificar los datos residuales. Aunque la técnica de descodificación de código de longitud variable de la implementación alternativa descrita anteriormente se ha descrito en relación con el procedimiento 1700 de la figura 17, la técnica se puede aplicar durante otros procedimientos de descodificación descritos anteriormente, tales como el procedimiento 900 de la figura 9.
Los procedimientos 900, 1000, 1400 y 1700, cuando son aplicados al descodificador de video 200, permiten que las implementaciones realicen un aumento en el rendimiento del análisis de un flujo de bits codificado, tal como el flujo 113 de bits codificado. Esto ocurre cuando se leen mayores cantidades de datos codificados por derivación en una sola operación, debido a la concatenación de datos codificados por derivación. El mayor rendimiento es más notable para las implementaciones de hardware en las que la lectura o la escritura de datos codificados por derivación se puede realizar en paralelo para aumentar el rendimiento del sistema. Se obtiene un beneficio similar para el codificador de video 100 cuando los procedimientos 1100, 1200 y los procedimientos 1400 y 1700, variados en consecuencia para realizar la codificación, son aplicados para generar un flujo de bits codificado.
El Apéndice A que sigue a esta descripción detallada representa modificaciones que se pueden hacer al modelo 5.0 de prueba de codificación de video de alta eficiencia (HEVC) (HM-5.0) para especificar el flujo 800 de bits de la figura 8 que puede ser descodificado por el procedimiento 900 de la figura 9 descrito anteriormente.
APLICABILIDAD INDUSTRIAL
Las disposiciones descritas son aplicables a las industrias de procesamiento de datos e informática y, en concreto, al procesamiento de señales digitales para la codificación y la descodificación de señales tales como señales de video.
APÉNDICE A
A continuación, se representan modificaciones que pueden ser realizadas al modelo 5.0 de prueba de codificación de video de alta eficiencia (HEVC) (HM-5.0) para especificar el flujo 800 de bits de la figura 8, que puede ser descodificado mediante el procedimiento 900 de la figura 9 descrito anteriormente.
SINTAXIS DEL ÁRBOL DE CODIFICACIÓN
Figure imgf000020_0001
Figure imgf000021_0001
Figure imgf000022_0001
Sintaxis del árbol de codificación para indicadores de división y de MPM
Figure imgf000023_0001
Sintaxis del árbol de codificación para el modo intra luma
Figure imgf000024_0001
SINTAXIS DE LA UNIDAD DE CODIFICACIÓN
Figure imgf000025_0001
Figure imgf000026_0001
Sintaxis de la unidad de codificación para el modo de partición e indicador de MPM
Figure imgf000027_0001
Sintaxis de la unidad de codificación para el modo intra luma
Figure imgf000028_0001
SINTAXIS DE LA UNIDAD DE PREDICCIÓN
Figure imgf000029_0001
Figure imgf000030_0001
Figure imgf000031_0001
Sintaxis de la unidad de predicción para el indicador de MPM
Figure imgf000032_0001
Sintaxis de la unidad de predicción para el modo intra luma
Figure imgf000032_0002
La siguiente sintaxis del árbol de codificación muestra la asignación de elementos sintácticos a bloques de datos, según tres categorías etiquetadas con 1, 2 y 3.
SINTAXIS DEL ÁRBOL DE CODIFICACIÓN
Figure imgf000033_0001
Figure imgf000034_0001
SINTAXIS DE LA UNIDAD DE CODIFICACIÓN
Figure imgf000035_0001
Figure imgf000036_0001
SINTAXIS DE LA UNIDAD DE PREDICCIÓN
Figure imgf000037_0001
Figure imgf000038_0001
Figure imgf000039_0001
(fin del Apéndice A)

Claims (11)

REIVINDICACIONES
1. Procedimiento para codificar datos de imagen en un flujo de bits, comprendiendo el procedimiento:
codificar, en el flujo de bits, un indicador de división, para indicar si una zona de una unidad de codificación más grande está dividida en zonas, y datos, para indicar un valor de modo de predicción (808) que indica si se utiliza una interpredicción o una intrapredicción para una unidad de codificación de destino, y para indicar un modo de partición que indica si la unidad de codificación de destino contiene una unidad de predicción o está dividida en más de una unidad de predicción (1101, 1103); y
cuando la unidad de codificación de destino no está dividida en zonas más pequeñas, se utiliza la intrapredicción para la unidad de codificación de destino, y la unidad de codificación de destino está dividida en una serie de unidades de predicción:
codificar aritméticamente indicadores, cada uno de los cuales es para una unidad diferente de la serie de unidades de predicción en la unidad de codificación de destino, para formar un bloque (801) de datos codificados de manera adyacente en el flujo de bits, indicando el indicador (809) si se utiliza un modo más probable o un modo restante para una intrapredicción de una unidad de predicción (1104, 1201);
derivar información de codificación, siendo cada fragmento de la misma para una diferente de la serie de unidades de predicción en la unidad de codificación de destino, para formar otro bloque (802) de datos codificados de manera adyacente en el flujo de bits, indicando cada fragmento de la información un valor de índice de modo más probable o un valor de modo restante utilizado para codificar la unidad de predicción (1106, 1202); y
codificar la unidad de codificación de destino en el flujo de bits utilizando los modos de intrapredicción de la serie de unidades de predicción tal como indican los indicadores y la información (1204),
en el que, en el flujo de bits, el otro bloque (802) de información codificada por derivación está situado posterior al bloque (801) de indicadores codificados aritméticamente.
2. Procedimiento, según la reivindicación 1, en el que el valor de modo restante es para designar uno de los modos restantes de intrapredicción.
3. Procedimiento, según la reivindicación 2, en el que los modos restantes de intrapredicción son modos de intrapredicción distintos de los modos más probables.
4. Procedimiento, según cualquiera de las reivindicaciones anteriores, en el que el valor de índice de modo más probable designa uno de una serie de los modos más probables.
5. Procedimiento, según la reivindicación 1, en el que los indicadores están codificados de manera consecutiva en el flujo de bits.
6. Procedimiento, según la reivindicación 1, en el que la información está codificada de manera consecutiva en el flujo de bits.
7. Aparato, configurado para codificar datos de imagen en un flujo de bits, según el procedimiento de cualquiera de las reivindicaciones 1 a 6.
8. Programa, que, cuando es ejecutado en un ordenador hace que el ordenador realice el procedimiento de cualquiera de las reivindicaciones 1 a 6.
9. Procedimiento de descodificación de datos de imagen de un flujo de bits, comprendiendo el procedimiento:
descodificar, a partir del flujo de bits, un indicador de división (813), para indicar si una zona de una unidad de codificación más grande está dividida en zonas más pequeñas (901, 1001); y
determinar, mediante la descodificación de datos del flujo de bits, un valor de modo de predicción (808), para indicar si se utiliza una interpredicción o una intrapredicción para una unidad de codificación de destino y un modo de partición para indicar si la unidad de codificación de destino contiene una unidad de predicción o está dividida en más de una unidad de predicción, y
cuando la unidad de codificación de destino no está dividida en zonas más pequeñas, se utiliza la intrapredicción para la unidad de codificación de destino, y la unidad de codificación de destino está dividida en una serie de unidades de predicción:
descodificar aritméticamente indicadores codificados, cada uno de los cuales es para una unidad diferente de la serie de unidades de predicción en la unidad de codificación de destino, para formar un bloque (801) de datos codificados de manera adyacente en el flujo de bits, indicando el indicador (809) si se utiliza un modo más probable o un modo restante para una intrapredicción de una unidad de predicción (904, 1001);
descodificar la información codificada por derivación, siendo cada fragmento de la misma para una diferente de la serie de unidades de predicción en la unidad de codificación de destino, a partir de otro bloque (802) de datos codificados de manera adyacente en el flujo de bits, indicando cada fragmento de la información un valor de índice de modo más probable o un valor de modo restante utilizado para codificar la unidad de predicción (906, 907, 1002); y
descodificar la unidad de codificación de destino utilizando los modos de intrapredicción de la serie de unidades de predicción tal como indican los indicadores y la información (1003, 1004),
en el que, en el flujo de bits, el bloque (802) de información codificada por derivación está situado posterior al bloque (801) de indicadores codificados aritméticamente.
10. Aparato, configurado para descodificar datos de imagen de un flujo de bits, según el procedimiento de la reivindicación 9.
11. Programa, que, cuando es ejecutado en un ordenador hace que el ordenador realice el procedimiento de la reivindicación 9.
ES17190957T 2012-01-20 2013-01-18 Procedimiento, aparato y programa para codificar datos de imágenes en un flujo de bits Active ES2812150T3 (es)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
AU2012200345A AU2012200345B2 (en) 2012-01-20 2012-01-20 Method, apparatus and system for encoding and decoding the significance map residual coefficients of a transform unit

Publications (1)

Publication Number Publication Date
ES2812150T3 true ES2812150T3 (es) 2021-03-16

Family

ID=48798427

Family Applications (5)

Application Number Title Priority Date Filing Date
ES20178126T Active ES2929597T3 (es) 2012-01-20 2013-01-18 Procedimiento, aparato y programa para codificar datos de imagen en un flujo de bits
ES20178125T Active ES2929596T3 (es) 2012-01-20 2013-01-18 Procedimiento, aparato y programa para codificar datos de imagen en un flujo de bits
ES17190957T Active ES2812150T3 (es) 2012-01-20 2013-01-18 Procedimiento, aparato y programa para codificar datos de imágenes en un flujo de bits
ES13738349T Active ES2724203T3 (es) 2012-01-20 2013-01-18 Procedimiento, aparato y sistema para codificar y descodificar modos de intrapredicción
ES20178124T Active ES2930257T3 (es) 2012-01-20 2013-01-18 Procedimiento, aparato y programa para codificar datos de imagen en un flujo de bits

Family Applications Before (2)

Application Number Title Priority Date Filing Date
ES20178126T Active ES2929597T3 (es) 2012-01-20 2013-01-18 Procedimiento, aparato y programa para codificar datos de imagen en un flujo de bits
ES20178125T Active ES2929596T3 (es) 2012-01-20 2013-01-18 Procedimiento, aparato y programa para codificar datos de imagen en un flujo de bits

Family Applications After (2)

Application Number Title Priority Date Filing Date
ES13738349T Active ES2724203T3 (es) 2012-01-20 2013-01-18 Procedimiento, aparato y sistema para codificar y descodificar modos de intrapredicción
ES20178124T Active ES2930257T3 (es) 2012-01-20 2013-01-18 Procedimiento, aparato y programa para codificar datos de imagen en un flujo de bits

Country Status (13)

Country Link
US (5) US9736495B2 (es)
EP (5) EP3288264B1 (es)
JP (1) JP2015507885A (es)
KR (5) KR101628793B1 (es)
CN (6) CN108810539B (es)
AU (1) AU2012200345B2 (es)
BR (5) BR112014012893B1 (es)
ES (5) ES2929597T3 (es)
HU (5) HUE043097T2 (es)
PL (5) PL3288264T3 (es)
RU (5) RU2577471C1 (es)
TR (1) TR201906188T4 (es)
WO (1) WO2013106888A1 (es)

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5850214B2 (ja) * 2011-01-11 2016-02-03 ソニー株式会社 画像処理装置および方法、プログラム、並びに記録媒体
CN105245894B (zh) * 2011-06-17 2017-08-08 Jvc建伍株式会社 图像解码装置、图像解码方法及接收装置、接收方法
US20160029022A1 (en) * 2014-07-25 2016-01-28 Mediatek Inc. Video processing apparatus with adaptive coding unit splitting/merging and related video processing method
US10390025B2 (en) 2014-10-01 2019-08-20 Lg Electronics Inc. Method and apparatus for encoding and decoding video signal using improved prediction filter
CN105992000B (zh) * 2015-03-06 2019-03-22 扬智科技股份有限公司 影像流的处理方法及其影像处理装置
KR102145439B1 (ko) * 2015-03-23 2020-08-18 엘지전자 주식회사 인트라 예측 모드 기반 영상 처리 방법 및 이를 위한 장치
US11233998B2 (en) 2015-05-29 2022-01-25 Qualcomm Incorporated Coding data using an enhanced context-adaptive binary arithmetic coding (CABAC) design
BR112018069135B1 (pt) * 2016-05-10 2023-12-26 Samsung Electronics Co., Ltd Método de decodificação de imagem para decodificar uma imagem, aparelho de decodificação de imagens para decodificar uma imagem, método de codificação de imagem para codificar uma imagem, e aparelho de codificação de imagens para codificar uma imagem
US10609367B2 (en) * 2016-12-21 2020-03-31 Qualcomm Incorporated Low-complexity sign prediction for video coding
CN106921859A (zh) * 2017-05-05 2017-07-04 郑州云海信息技术有限公司 一种基于fpga的cabac熵编码方法与装置
CN107153588A (zh) * 2017-05-12 2017-09-12 成都优孚达信息技术有限公司 数据编码存储方法
CN109151468B (zh) 2017-06-28 2020-12-08 华为技术有限公司 一种图像数据的编码、解码方法及装置
JP7187566B2 (ja) 2018-02-09 2022-12-12 フラウンホーファー-ゲゼルシャフト・ツール・フェルデルング・デル・アンゲヴァンテン・フォルシュング・アインゲトラーゲネル・フェライン パーティションベースのイントラ符号化概念
KR102523702B1 (ko) 2018-07-03 2023-04-19 주식회사 엘지에너지솔루션 배터리 모듈
TWI764015B (zh) 2018-07-13 2022-05-11 弗勞恩霍夫爾協會 分區框內寫碼技術
EP3849193A4 (en) 2018-09-07 2022-09-28 B1 Institute of Image Technology, Inc. IMAGE ENCODING/DECODING METHOD AND APPARATUS
US11516506B2 (en) 2018-10-05 2022-11-29 Lg Electronics Inc. Method and apparatus for processing image service
US11109023B2 (en) * 2018-11-27 2021-08-31 Tencent America LLC Intra mode selection in intra prediction
WO2020108571A1 (en) * 2018-11-28 2020-06-04 Beijing Bytedance Network Technology Co., Ltd. Extension method for motion reference in intra block copy mode
WO2020118222A1 (en) 2018-12-07 2020-06-11 Futurewei Technologies, Inc. Constrained prediction mode for video coding
WO2021194797A1 (en) * 2020-03-26 2021-09-30 Alibaba Group Holding Limited Method and apparatus for encoding or decoding video
CN114615507B (zh) * 2022-05-11 2022-09-13 哈尔滨工业大学(深圳)(哈尔滨工业大学深圳科技创新研究院) 一种图像编码方法、解码方法及相关装置

Family Cites Families (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6795584B2 (en) 2002-10-03 2004-09-21 Nokia Corporation Context-based adaptive variable length coding for adaptive block transforms
US7286710B2 (en) * 2003-10-01 2007-10-23 Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung E.V. Coding of a syntax element contained in a pre-coded video signal
US7599435B2 (en) * 2004-01-30 2009-10-06 Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung E.V. Video frame encoding and decoding
US7586924B2 (en) * 2004-02-27 2009-09-08 Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung E.V. Apparatus and method for coding an information signal into a data stream, converting the data stream and decoding the data stream
KR100624432B1 (ko) * 2004-08-05 2006-09-19 삼성전자주식회사 내용 기반 적응적 이진 산술 복호화 방법 및 장치
US20060126744A1 (en) 2004-12-10 2006-06-15 Liang Peng Two pass architecture for H.264 CABAC decoding process
US7706442B2 (en) 2005-02-15 2010-04-27 Industrial Technology Research Institute Method for coding mode selection of intra prediction in video compression
EP1911290A4 (en) * 2005-07-08 2010-04-28 Lg Electronics Inc METHOD FOR MODELING A VIDEO SIGNAL CODE INFORMATION FOR COMPRESSING / DECOMPRIMING CODING INFORMATION
CN101218826A (zh) * 2005-07-08 2008-07-09 Lg电子株式会社 用于建模视频信号的编码信息来压缩/解压该信息的方法
KR100717052B1 (ko) * 2005-11-08 2007-05-10 삼성전자주식회사 Cabac 복호기에서 이진 산술 복호화와 이진 매칭을병렬 처리하는 원소 구문의 복호화 방법 및 이를 위한복호화 장치
JP5474546B2 (ja) 2006-08-25 2014-04-16 トムソン ライセンシング 低減された解像度の分割の方法及び装置
JP5045950B2 (ja) * 2006-12-14 2012-10-10 日本電気株式会社 映像符号化方法、映像符号化装置および映像符号化プログラム
US8488668B2 (en) 2007-06-15 2013-07-16 Qualcomm Incorporated Adaptive coefficient scanning for video coding
US7839311B2 (en) * 2007-08-31 2010-11-23 Qualcomm Incorporated Architecture for multi-stage decoding of a CABAC bitstream
KR101433169B1 (ko) 2008-01-03 2014-08-28 경희대학교 산학협력단 인트라 방향성에 따른 모드 예측 및 양자화 매트릭스와스캐닝 적용 방법 및 장치
CN101500160B (zh) * 2008-01-28 2015-04-29 华为技术有限公司 一种码流标识方法、装置及编解码系统
CN102187583B (zh) * 2008-08-19 2013-09-11 汤姆森特许公司 基于上下文的自适应二进制算术编码(cabac)的视频流兼容性
US8634456B2 (en) 2008-10-03 2014-01-21 Qualcomm Incorporated Video coding with large macroblocks
WO2010041858A2 (en) * 2008-10-06 2010-04-15 Lg Electronics Inc. A method and an apparatus for decoding a video signal
WO2011002914A1 (en) * 2009-06-30 2011-01-06 Massachusetts Institute Of Technology System and method for providing high throughput entropy coding using syntax element partitioning
KR101457894B1 (ko) 2009-10-28 2014-11-05 삼성전자주식회사 영상 부호화 방법 및 장치, 복호화 방법 및 장치
CN102098519B (zh) * 2009-12-09 2013-04-17 浙江大学 视频编码方法、解码方法、编码及解码装置
KR101682147B1 (ko) 2010-04-05 2016-12-05 삼성전자주식회사 변환 및 역변환에 기초한 보간 방법 및 장치
WO2011128268A1 (en) * 2010-04-13 2011-10-20 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Probability interval partioning encoder and decoder
KR101379188B1 (ko) 2010-05-17 2014-04-18 에스케이 텔레콤주식회사 인트라 블록 및 인터 블록이 혼합된 코딩블록을 이용하는 영상 부호화/복호화 장치 및 그 방법
DK2924996T3 (en) * 2010-07-09 2018-10-01 Samsung Electronics Co Ltd VIDEO ENCODER DEVICE, BY USING BLOCK COLLECTION
KR101484281B1 (ko) * 2010-07-09 2015-01-21 삼성전자주식회사 블록 병합을 이용한 비디오 부호화 방법 및 그 장치, 블록 병합을 이용한 비디오 복호화 방법 및 그 장치
US9591320B2 (en) * 2010-07-15 2017-03-07 Texas Instruments Incorporated Context and bypass encoding video
US20120014433A1 (en) * 2010-07-15 2012-01-19 Qualcomm Incorporated Entropy coding of bins across bin groups using variable length codewords
US8913662B2 (en) * 2011-01-06 2014-12-16 Qualcomm Incorporated Indicating intra-prediction mode selection for video coding using CABAC
US10123053B2 (en) * 2011-05-23 2018-11-06 Texas Instruments Incorporated Acceleration of bypass binary symbol processing in video coding
US9654785B2 (en) * 2011-06-09 2017-05-16 Qualcomm Incorporated Enhanced intra-prediction mode signaling for video coding using neighboring mode
WO2013003823A1 (en) * 2011-06-30 2013-01-03 Huawei Technologies, Co., Ltd. Lossless coding and associated signaling methods for compound video
SG187781A1 (en) * 2011-07-18 2013-03-28 Panasonic Corp Image coding method, image decoding method, image coding apparatus, image decoding apparatus, and image coding and decoding apparatus
EP2988511A1 (en) 2011-08-04 2016-02-24 MediaTek Inc. Method and apparatus for reordered binarization of syntax elements in cabac
US9787982B2 (en) * 2011-09-12 2017-10-10 Qualcomm Incorporated Non-square transform units and prediction units in video coding
US9871537B2 (en) * 2011-10-27 2018-01-16 Qualcomm Incorporated Mapping states in binary arithmetic coder for video coding
KR20130049524A (ko) 2011-11-04 2013-05-14 오수미 인트라 예측 블록 생성 방법
US9088796B2 (en) * 2011-11-07 2015-07-21 Sharp Kabushiki Kaisha Video decoder with enhanced CABAC decoding
CN108900839B (zh) 2011-12-28 2022-05-31 夏普株式会社 图像解码装置及方法、图像编码装置及方法

Also Published As

Publication number Publication date
CN108810541A (zh) 2018-11-13
AU2012200345B2 (en) 2014-05-01
ES2929597T3 (es) 2022-11-30
EP3737096B1 (en) 2022-10-12
US20170302963A1 (en) 2017-10-19
PL2805485T3 (pl) 2019-07-31
TR201906188T4 (tr) 2019-05-21
KR20160067201A (ko) 2016-06-13
KR101628793B1 (ko) 2016-06-09
PL3288264T3 (pl) 2020-11-16
JP2015507885A (ja) 2015-03-12
EP2805485B1 (en) 2019-03-13
KR102030952B1 (ko) 2019-10-10
KR101754547B1 (ko) 2017-07-05
CN108810539B (zh) 2022-10-21
US11405641B2 (en) 2022-08-02
ES2929596T3 (es) 2022-11-30
US11405640B2 (en) 2022-08-02
PL3737095T3 (pl) 2023-01-30
EP3737094B1 (en) 2022-10-12
EP3737096A1 (en) 2020-11-11
CN108989809A (zh) 2018-12-11
EP3288264A1 (en) 2018-02-28
CN108924559B (zh) 2020-07-21
HUE050208T2 (hu) 2020-11-30
US20210250612A1 (en) 2021-08-12
BR122020002118B1 (pt) 2023-03-28
KR101875352B1 (ko) 2018-07-05
KR20180077325A (ko) 2018-07-06
BR122020002118B8 (pt) 2023-05-09
US20210250611A1 (en) 2021-08-12
EP3737095B1 (en) 2022-10-12
BR122020002117B1 (pt) 2023-04-04
CN108989809B (zh) 2020-07-24
HUE043097T2 (hu) 2019-08-28
EP3737094A1 (en) 2020-11-11
KR20140088594A (ko) 2014-07-10
RU2691190C1 (ru) 2019-06-11
ES2724203T3 (es) 2019-09-09
KR101920607B1 (ko) 2018-11-20
BR122020002110B1 (pt) 2023-03-28
KR20170078874A (ko) 2017-07-07
US11025953B2 (en) 2021-06-01
BR122020002116B1 (pt) 2023-03-28
BR112014012893A2 (pt) 2017-06-13
US20210250610A1 (en) 2021-08-12
EP3737095A1 (en) 2020-11-11
BR112014012893B1 (pt) 2023-03-28
EP3288264B1 (en) 2020-07-15
US9736495B2 (en) 2017-08-15
US20140355679A1 (en) 2014-12-04
WO2013106888A1 (en) 2013-07-25
US11399200B2 (en) 2022-07-26
CN104067624B (zh) 2018-08-07
CN108810540A (zh) 2018-11-13
HUE060412T2 (hu) 2023-02-28
CN108810541B (zh) 2020-07-21
HUE060411T2 (hu) 2023-02-28
HUE060413T2 (hu) 2023-02-28
CN108924559A (zh) 2018-11-30
RU2690760C1 (ru) 2019-06-05
EP2805485A1 (en) 2014-11-26
EP2805485A4 (en) 2015-09-23
PL3737096T3 (pl) 2023-01-30
PL3737094T3 (pl) 2023-01-30
RU2577471C1 (ru) 2016-03-20
RU2666319C1 (ru) 2018-09-06
CN108810540B (zh) 2020-07-21
CN104067624A (zh) 2014-09-24
KR20180124159A (ko) 2018-11-20
RU2640737C1 (ru) 2018-01-11
ES2930257T3 (es) 2022-12-09
CN108810539A (zh) 2018-11-13

Similar Documents

Publication Publication Date Title
ES2812150T3 (es) Procedimiento, aparato y programa para codificar datos de imágenes en un flujo de bits
ES2746961T3 (es) Procedimiento, aparato y sistema para codificar y descodificar un subconjunto de unidades de transformación de datos de vídeo codificados
ES2943552T3 (es) Procedimiento, aparato y sistema para codificar y descodificar el mapa de significatividad para los coeficientes residuales de una unidad de transformada
US20130094589A1 (en) Method, apparatus and system for encoding and decoding the significance map for residual coefficients of a transform unit
ES2724233T3 (es) Aparato y proceso para proporcionar un portador de colágeno enrollado