ES2775068T3 - Codificación de vídeo usando transformadas mayores que 4x4 y 8x8 - Google Patents

Codificación de vídeo usando transformadas mayores que 4x4 y 8x8 Download PDF

Info

Publication number
ES2775068T3
ES2775068T3 ES09793175T ES09793175T ES2775068T3 ES 2775068 T3 ES2775068 T3 ES 2775068T3 ES 09793175 T ES09793175 T ES 09793175T ES 09793175 T ES09793175 T ES 09793175T ES 2775068 T3 ES2775068 T3 ES 2775068T3
Authority
ES
Spain
Prior art keywords
block
transform
size
prediction
video
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
ES09793175T
Other languages
English (en)
Inventor
Yan Ye
Peisong Chen
Marta Karczewicz
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.)
Qualcomm Inc
Original Assignee
Qualcomm 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 Qualcomm Inc filed Critical Qualcomm Inc
Priority claimed from PCT/US2009/059014 external-priority patent/WO2010039822A2/en
Application granted granted Critical
Publication of ES2775068T3 publication Critical patent/ES2775068T3/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/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/61Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/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/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/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • Discrete Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

Un procedimiento de codificación de datos de vídeo, el procedimiento comprendiendo: aplicar predicción espacial o compensación de movimiento a un bloque de vídeo original dentro de una trama de vídeo para generar un bloque de vídeo de predicción de un tamaño de bloque de predicción basándose en un modo de predicción, en el que el tamaño del bloque de predicción es uno entre 4x4, 4x8, 8x4, 8x8, 8x16, 16x8, 16x16, 16x32, 32x16 y 32x32; restar el bloque de vídeo de predicción del bloque de vídeo original dentro de la trama de vídeo para formar un bloque residual; seleccionar una transformada que tenga un tamaño de transformada para aplicar al bloque residual, en el que el tamaño de la transformada es uno entre 4x4, 8x8, 8x16, 16x8, 16x16, 16x32, 32x16 y 32x32, y el tamaño de la transformada es igual al tamaño del bloque de predicción o más pequeño que el tamaño del bloque de predicción y cuadrado; generar datos de encabezado indicativos de la transformada seleccionada, los datos de encabezado comprendiendo un primer elemento sintáctico que tiene un valor y un segundo elemento sintáctico, el segundo elemento sintáctico siendo indicativo de un tamaño de bloque de predicción del bloque de vídeo de predicción, en el que si el tamaño del bloque de predicción es de 8x8 o más pequeño, el primer elemento sintáctico es cero o un bit de longitud y se genera para indicar el tamaño de la transformada sin referencia al segundo elemento sintáctico, y en el que si el bloque de predicción es mayor que 8x8, el primer elemento sintáctico es uno o dos bits de longitud y se genera para indicar el tamaño de la transformada en combinación con el segundo elemento sintáctico, en el que el primer elemento sintáctico se establece en un primer valor para indicar que el tamaño de la transformada es igual al tamaño del bloque de predicción; aplicar la transformada seleccionada al bloque residual para generar coeficientes de transformada residual; y generar una señal de vídeo basada en los datos del encabezado y los coeficientes de transformada residuales.

Description

DESCRIPCIÓN
Codificación de vídeo usando transformadas mayores que 4x4 y 8x8
Reivindicación de prioridad
[0001] Esta solicitud reivindica el beneficio de la solicitud provisional de Estados Unidos n.° 61/102.783, presentada el 3 de octubre de 2008, y de la solicitud provisional de Estados Unidos n.° 61/179.228, presentada el 18 de mayo de 2009.
ANTECEDENTES
Campo de la invención
[0002] La presente invención se refiere a la codificación y descodificación de datos de vídeo utilizando tamaños de transformada mayores que 8x8.
Antecedentes
[0003] Las capacidades de vídeo digital pueden incorporarse a una amplia gama de dispositivos, incluidos televisores digitales, sistemas de radiodifusión directa digital, dispositivos de comunicación inalámbrica, tales como radioteléfonos, sistemas de radiodifusión inalámbrica, asistentes personales digitales (PDA), ordenadores portátiles o de escritorio, cámaras digitales, dispositivos de grabación digital, dispositivos de videojuegos, consolas de videojuegos y similares. Los dispositivos de vídeo digital implementan técnicas de compresión de vídeo, tales como las de las normas MPEG-2, MPEG-4 o H.264/MPEG-4, parte 10, codificación avanzada de vídeo (AVC), para transmitir y recibir información de vídeo digital más eficazmente. Las técnicas de compresión de vídeo llevan a cabo una predicción espacial y temporal para reducir o eliminar la redundancia inherente a las secuencias de vídeo.
[0004] La compresión de vídeo en general incluye predicción espacial y/o predicción temporal. En particular, la intracodificación se basa en la predicción espacial para reducir o eliminar la redundancia espacial entre bloques de vídeo dentro de una unidad codificada dada, que puede comprender una trama de vídeo, un fragmento de una trama de vídeo o similar. Por el contrario, la intercodificación se basa en la predicción temporal para reducir o eliminar la redundancia temporal entre bloques de vídeo de unidades codificadas sucesivas de una secuencia de vídeo. Para la intracodificación, un codificador de vídeo realiza una predicción espacial para comprimir datos basándose en otros datos dentro de la misma unidad codificada. Para la intercodificación, un codificador de vídeo realiza la estimación del movimiento y la compensación del movimiento para seguir el movimiento de los bloques de vídeo correspondientes de dos o más unidades codificadas adyacentes.
[0005] Después de la predicción espacial o temporal, se genera un bloque residual restando un bloque de vídeo de predicción generado durante el proceso de predicción del bloque de vídeo original que se está codificando. El bloque residual es, por lo tanto, indicativo de las diferencias entre el bloque predictivo y el bloque actual que se codifica. El codificador de vídeo puede aplicar procesos de transformada, cuantificación y codificación por entropía para reducir aún más la velocidad de transmisión de bits asociada con la comunicación del bloque residual. Las técnicas de transformada pueden cambiar un conjunto de valores de píxeles en coeficientes de transformada, que representan la energía de los valores de píxeles en el dominio de la frecuencia. La cuantificación se aplica a los coeficientes de transformada, y en general implica un proceso que limita el número de bits asociados con cualquier coeficiente dado. Antes de la codificación por entropía, el codificador de vídeo explora el bloque de coeficientes cuantificado en un vector de coeficientes unidimensional. El codificador de vídeo codifica por entropía el vector de coeficientes de transformada cuantificados para comprimir aún más los datos residuales.
[0006] Un descodificador de vídeo puede realizar operaciones de descodificación por entropía para recuperar los coeficientes. La exploración inversa también se puede realizar en el descodificador para formar bloques bidimensionales a partir de los vectores de coeficientes unidimensionales recibidos. El descodificador de vídeo luego cuantifica y transforma inversamente los coeficientes para obtener el bloque residual reconstruido. El descodificador de vídeo luego descodifica un bloque de vídeo de predicción basándose en la información de predicción que incluye la información del movimiento. Luego, el descodificador de vídeo añade el bloque de vídeo de predicción al bloque residual reconstruido correspondiente a fin de generar el bloque de vídeo reconstruido y generar una secuencia descodificada de información de vídeo.
[0007] El documento US 2005/249291 A1 (GORDON STEPHEN [US] ET AL.) 10 de noviembre de 2005 (10-11­ 2005) divulga el uso de tamaños de bloques de transformada de 4x4 y 8x8 para extensiones del alcance de fidelidad H.264. El tamaño del bloque de predicción, indicado por el elemento sintáctico Tipo de macrobloque, se asigna al tamaño de transformada de luma que utiliza uno o dos elementos sintácticos de tamaño de bloque de transformada.
SUMARIO
[0008] Los sistemas, procedimientos y dispositivos de la aplicación tienen cada uno varios aspectos, ninguno de los cuales es el único responsable de sus atributos deseables. Sin limitar el alcance de esta aplicación según se expresa en las reivindicaciones a continuación, se analizarán ahora brevemente sus características más importantes. Después de considerar este análisis y, en particular, después de leer la sección titulada "Descripción detallada", se entenderá cómo las características de muestra de esta aplicación pueden proporcionan algunas mejoras que incluyen, entre otras, por ejemplo, una eficacia mejorada en la codificación de vídeo.
[0009] En un modo de realización, hay un procedimiento de codificación de datos de vídeo de acuerdo con la reivindicación 1 adjunta.
[0010] En otro modo de realización, hay un procedimiento de descodificación de datos de vídeo de acuerdo con la reivindicación 3 adjunta.
[0011] En otro modo de realización, hay un aparato de codificación de datos de vídeo de acuerdo con la reivindicación 6 adjunta.
[0012] En otro modo de realización, hay un aparato de descodificación de datos de vídeo de acuerdo con la reivindicación 7 adjunta.
BREVE DESCRIPCIÓN DE LOS DIBUJOS
[0013]
La FIG. 1 es un diagrama de bloques que ilustra un dispositivo de origen y un dispositivo de destino para codificar y descodificar una señal de vídeo.
La FIG. 2 es un diagrama de bloques de un modo de realización del codificador de vídeo de la Figura 1.
La FIG. 3 es un diagrama de flujo de un modo de realización de un proceso de establecimiento del valor del indicador para señalizar al descodificador de la Figura 1 el tipo de transformada utilizada por el codificador de la Figura 1.
La FIG. 4 es un diagrama de flujo de otro modo de realización de un proceso de establecimiento del valor del indicador para señalizar al descodificador de la Figura 1 el tipo de transformada utilizada por el codificador de la Figura 1.
La FIG. 5 es un diagrama de flujo de un modo de realización de un proceso de selección de la transformada inversa correcta para descodificar datos de vídeo codificados de acuerdo con el proceso de la Figura 3.
La FIG. 6 es un diagrama de flujo de otro modo de realización de un proceso de selección de la transformada inversa correcta para descodificar datos de vídeo codificados de acuerdo con el proceso de la Figura 4.
La FIG. 7 es un diagrama de bloques de un modo de realización del descodificador de vídeo de la Figura 1.
DESCRIPCIÓN DETALLADA
[0014] La siguiente descripción detallada está dirigida a ciertos modos de realización específicos. Sin embargo, las enseñanzas en el presente documento pueden aplicarse de múltiples maneras diferentes. En esta descripción, se hace referencia a los dibujos en los que partes similares se designan con números similares en todo el documento.
[0015] La invención se define en las reivindicaciones adjuntas. Cualquier ejemplo y modo de realización de la descripción que no esté dentro del alcance de las reivindicaciones no forma parte de la invención y solamente se proporciona con propósitos ilustrativos.
[0016] Un modo de realización está dirigido a un elemento sintáctico del tamaño de transformada para la codificación y descodificación de vídeo. Al implementar un conjunto de reglas y pautas simplificadas de selección de transformada en el proceso de codificación y descodificación de señales de vídeo e imagen, fue posible crear una sintaxis con una baja tasa de bits. Como se describe, una sintaxis del tamaño de transformada es una forma de indicar tanto un tamaño de transformada particular en un codificador, así como una forma de interpretar el tamaño de transformada en un descodificador. Se puede usar un elemento sintáctico del tamaño de transformada para indicar el tamaño de la transformada que se utilizará y puede incluir un valor de indicador que comprenda un número de bits. Obsérvese que la siguiente descripción detallada en general puede usar los términos "vídeo", "imagen" y "foto" indistintamente. Por consiguiente, el alcance de diversos aspectos de la presente invención no debe estar limitado por las nociones de la diferencia entre los términos.
[0017] La FIG. 1 es un diagrama de bloques que ilustra un sistema de codificación y descodificación de vídeo 10 que realiza las técnicas de codificación como se describen en esta divulgación. Como se muestra en la FIG. 1, el sistema 10 incluye un dispositivo de origen 12 que transmite los datos de vídeo codificado a un dispositivo de destino 14 a través de un canal de comunicación 16. El dispositivo de origen 12 puede incluir una fuente de vídeo 18, un codificador de vídeo 20 y un transmisor 22. La fuente de vídeo 18 del dispositivo de origen 12 puede incluir un dispositivo de captura de vídeo, tal como una cámara de vídeo, un archivo de vídeo que contenga vídeo capturado previamente o un alimentador de vídeo de un proveedor de contenido de vídeo. Como otra alternativa, la fuente de vídeo 18 puede generar datos basados en gráficos de ordenador como la fuente de vídeo, o una combinación de vídeo en directo y vídeo generado por ordenador. En algunos casos, el dispositivo de origen 12 puede ser un teléfono inalámbrico o un videoteléfono, en cuyo caso la fuente de vídeo 18 puede ser una cámara de vídeo en el teléfono. En cada caso, el vídeo capturado, precapturado o generado por ordenador puede ser codificado por el codificador de vídeo 20 para su transmisión desde el dispositivo de origen 12 al dispositivo de destino 14 a través del transmisor 22 y el canal de comunicación 16.
[0018] El codificador de vídeo 20 recibe datos de vídeo de la fuente de vídeo 18. Los datos de vídeo recibidos de la fuente de vídeo 18 pueden ser una serie de tramas de vídeo. El codificador de vídeo 20 divide la serie de tramas en unidades de codificación y procesa las unidades de codificación para codificar la serie de tramas de vídeo. Las unidades de codificación pueden, por ejemplo, ser tramas enteras o porciones de las tramas (es decir, fragmentos). Por lo tanto, en algunos casos, las tramas pueden dividirse en fragmentos. El codificador de vídeo 20 divide cada unidad de codificación en bloques de píxeles (denominados en el presente documento bloques o bloques de vídeo) y opera en los bloques de vídeo dentro de unidades de codificación individuales a fin de codificar los datos de vídeo. Como tal, una unidad de codificación (por ejemplo, una trama o fragmento) puede contener múltiples bloques de vídeo. En otras palabras, una secuencia de vídeo puede incluir múltiples tramas, una trama puede incluir múltiples fragmentos, y un segmento puede incluir múltiples bloques de vídeo.
[0019] Los bloques de vídeo pueden tener tamaños fijos o variables y pueden diferir en tamaño de acuerdo con una norma de codificación especificada. Como ejemplo, el Sector de Normalización de la Unión Internacional de Telecomunicaciones (UIT-T) H.264/MPEG-4, Parte 10, codificación avanzada de vídeo (AVC) (en lo sucesivo, la norma "H.264/MPEG-4 Parte 10 AVC") admite intrapredicción en diversos tamaños de bloque, tales como 16x16, 8x8 o 4x4 píxeles para componentes de luma y 8x8 píxeles para componentes de croma. La interpredicción se puede realizar en diversos tamaños de bloque, tales como 16x16, 16x8, 8x16, 8x8, 8x4, 4x8 y 4x4 píxeles para componentes de luma y los tamaños escalados correspondientes para componentes de croma. En H.264, por ejemplo, cada bloque de vídeo de 16 por 16 píxeles, a menudo denominado un macrobloque (MB), puede subdividirse en subbloques de tamaños más pequeños e intrapredecirse o interpredecirse en subbloques. En general, los MB y los diversos subbloques pueden considerarse que son bloques de vídeo. Por lo tanto, los MB pueden considerarse que son bloques de vídeo, y si están divididos o subdivididos, los propios MB se puede considerar que definen conjuntos de bloques de vídeo.
[0020] Para cada uno de los bloques de vídeo, el codificador de vídeo 20 selecciona un tipo de bloque para el bloque. El tipo de bloque puede indicar si el bloque se predice usando interpredicción o intrapredicción, así como un tamaño de bloque de predicción del bloque. Por ejemplo, la norma H.264/MPEG-4 Parte 10 AVC admite un número de tipos de bloques de interpredicción e intrapredicción, que incluyen Inter 16x16, Inter 16x8, Inter 8x16, Inter 8x8, Inter 8x4, Inter 4x8, Inter 4x4, Intra 16x16, Intra 8x8 e Intra 4x4. Como se describe en detalle a continuación, el codificador de vídeo 20 puede seleccionar uno de los tipos de bloque para cada uno de los bloques de vídeo a codificar.
[0021] El codificador de vídeo 20 también selecciona un modo de predicción para cada uno de los bloques de vídeo. En el caso de un bloque de vídeo intracodificado, el modo de predicción puede determinar la manera de predecir el bloque de vídeo actual utilizando uno o más bloques de vídeo codificados previamente. En la norma H.264/MPEG-4 Parte 10 AVC, por ejemplo, el codificador de vídeo 20 puede seleccionar uno de los nueve modos de predicción unidireccionales posibles para cada bloque Intra 4x4; un modo de predicción vertical, modo de predicción horizontal, modo de predicción DC, modo de predicción diagonal abajo-izquierda, modo de predicción diagonal abajo-derecha, modo de predicción vertical-derecha, modo de predicción horizontal-abajo, modo de predicción vertical-izquierda y modo de predicción horizontal-arriba. Se utilizan modos de predicción similares para predecir cada bloque Intra 8x8. Para un bloque Intra 16x16, el codificador de vídeo 20 puede seleccionar uno de los cuatro modos unidireccionales posibles; un modo de predicción vertical, un modo de predicción horizontal, un modo de predicción DC y un modo de predicción plano. En algunos casos, el codificador de vídeo 20 puede seleccionar el modo de predicción de un conjunto de modos de predicción que incluye no solamente modos de predicción unidireccionales, sino también uno o más modos de predicción multidireccionales que definen combinaciones de los modos unidireccionales. Por ejemplo, los uno o más modos de predicción multidireccionales pueden ser modos de predicción bidireccionales que combinan dos modos de predicción unidireccionales.
[0022] Después de seleccionar el modo de predicción para el bloque de vídeo, el codificador de vídeo 20 genera un bloque de vídeo de predicción que utiliza el modo de predicción seleccionado. El bloque de vídeo de predicción se resta del bloque de vídeo original para formar un bloque residual. El bloque residual incluye un conjunto de valores de diferencia de píxeles que cuantifican las diferencias entre los valores de píxeles del bloque de vídeo original y los valores de píxeles del bloque de predicción generado. En algunos ejemplos, el bloque residual puede representarse en un formato de bloque bidimensional (por ejemplo, una matriz bidimensional o una matriz de valores de diferencias de píxeles).
[0023] Después de la generación del bloque residual, el codificador de vídeo 20 puede realizar un número de otras operaciones en el bloque residual antes de codificar el bloque. El codificador de vídeo 20 puede aplicar una transformada, tal como una transformada entera, una transformada DCT, una transformada direccional o una transformada de ondículas al bloque residual de valores de píxeles para producir un bloque de coeficientes de transformada. Los coeficientes de transformada pueden ser una representación en el dominio de la frecuencia del bloque residual. Por lo tanto, el codificador de vídeo 20 convierte los valores de píxeles residuales en coeficientes de transformada (también denominados coeficientes de transformada residuales). Los coeficientes de transformada residuales pueden denominarse un bloque de transformada o bloque de coeficientes. Los coeficientes de transformada residual pueden ser una representación unidimensional de los coeficientes cuando se aplican transformadas no separables o una representación bidimensional de los coeficientes cuando se aplican transformadas separables. Las transformadas no separables pueden incluir transformadas direccionales no separables. Las transformadas separables pueden incluir transformadas direccionales separables, transformadas DCT, transformadas enteras y transformadas de ondículas.
[0024] Después de la transformada, el codificador de vídeo 20 realiza la cuantificación para generar coeficientes de transformada cuantificados (también denominados coeficientes cuantificados o coeficientes residuales cuantificados). Nuevamente, los coeficientes cuantificados pueden representarse en formato vectorial unidimensional o en formato de bloque bidimensional. La cuantificación se refiere en general a un proceso en el que los coeficientes se cuantifican para reducir posiblemente la cantidad de datos usados para representar los coeficientes. El proceso de cuantificación puede reducir la profundidad de bits asociada con algunos, o la totalidad, de los coeficientes. Como se usa en el presente documento, el término "coeficientes" puede representar coeficientes de transformada, coeficientes cuantificados u otro tipo de coeficientes. Las técnicas de esta divulgación pueden, en algunos casos, aplicarse a valores de píxeles residuales, valores de píxeles residuales cuantificados, así como coeficientes de transformada y coeficientes de transformada cuantificados.
[0025] Cuando se usan transformadas separables y los bloques de coeficientes se representan en un formato de bloque bidimensional, el codificador de vídeo 20 explora los coeficientes a partir del formato bidimensional en un formato unidimensional. En otras palabras, el codificador de vídeo 20 puede explorar los coeficientes del bloque bidimensional para serializar los coeficientes en un vector de coeficientes unidimensional. De acuerdo con uno de los aspectos de esta divulgación, el codificador de vídeo 20 puede ajustar el orden de exploración utilizado para convertir el bloque de coeficientes en una dimensión basándose en las estadísticas recopiladas. Las estadísticas pueden comprender una indicación de la probabilidad de que un valor de coeficiente dado en cada posición del bloque bidimensional sea cero o diferente de cero y puede, por ejemplo, comprender un recuento, una probabilidad u otra métrica estadística asociada con cada una de las posiciones de los coeficientes del bloque bidimensional. En algunos casos, las estadísticas solamente se pueden recopilar para un subconjunto de las posiciones de los coeficientes del bloque. Cuando se evalúa el orden de exploración, por ejemplo, después de un número de bloques particular, el orden de exploración puede cambiarse de manera que las posiciones de los coeficientes dentro del bloque, que se determina que tienen una mayor probabilidad de tener coeficientes diferentes de cero, se exploran antes que las posiciones de los coeficientes dentro del bloque que se determina que tienen una probabilidad menor de tener coeficientes diferentes de cero. De esta manera, un orden de exploración inicial puede adaptarse para agrupar más eficazmente los coeficientes diferentes de cero al comienzo del vector de coeficientes unidimensional y los coeficientes de valor cero al final del vector de coeficientes unidimensional. Esto a su vez puede reducir el número de bits dedicados a la codificación por entropía dado que hay ejecuciones más cortas de ceros entre coeficientes diferentes de cero al comienzo del vector de coeficientes unidimensional y una ejecución más larga de ceros al final del vector de coeficientes unidimensional.
[0026] Después de la exploración de los coeficientes, el codificador de vídeo 20 codifica cada uno de los bloques de vídeo de la unidad de codificación utilizando cualquiera de una variedad de metodologías de codificación por entropía, tales como codificación de longitud variable adaptativa al contexto (CAVLC), codificación aritmética binaria adaptativa al contexto (CABAC), codificación de longitud de ejecución o similar. El dispositivo de origen 12 transmite los datos de vídeo codificados a un dispositivo de destino 14 a través de un transmisor 22 y un canal 16. El canal de comunicación 16 puede comprender cualquier medio de comunicación inalámbrica o cableada, tal como un espectro de radiofrecuencia (RF) o una o más líneas de transmisión física, o cualquier combinación de medios inalámbricos y cableados. El canal de comunicación 16 puede formar parte de una red basada en paquetes, tal como una red de área local, una red de área amplia o una red global tal como Internet. El canal de comunicación 16 representa en general cualquier medio de comunicación adecuado o una colección de diferentes medios de comunicación, para transmitir datos de vídeo desde el dispositivo de origen 12 hasta el dispositivo de destino 14.
[0027] El dispositivo de destino 14 puede incluir un receptor 24, un descodificador de vídeo 26 y un dispositivo de visualización 28. El receptor 24, que es un medio para recibir una señal de vídeo, recibe el flujo de bits de vídeo codificado desde el dispositivo de origen 12 a través del canal 16. El descodificador de vídeo 26 aplica la descodificación por entropía para descodificar el flujo de bits de vídeo codificado para obtener información de encabezado, vectores de movimiento y coeficientes residuales cuantificados de los bloques de vídeo codificados de la unidad codificada. Como se describe anteriormente, los coeficientes residuales cuantificados codificados por el dispositivo de origen 12 se codifican como un vector unidimensional. Por lo tanto, el descodificador de vídeo 26 explora los coeficientes residuales cuantificados de los bloques de vídeo codificados para convertir el vector de coeficientes unidimensional en un bloque bidimensional de coeficientes residuales cuantificados. Al igual que el codificador de vídeo 20, el descodificador de vídeo 26 puede recopilar estadísticas que indican la probabilidad de que una posición de coeficiente dada en el bloque de vídeo sea cero o diferente de cero y, por lo tanto, ajuste el orden de exploración de la misma manera que se usó en el proceso de codificación. Por consiguiente, el descodificador de vídeo 26 puede aplicar órdenes de exploración adaptativa recíproca a fin de convertir la representación vectorial unidimensional de los coeficientes de transformada cuantificados serializados de nuevo en bloques bidimensionales de coeficientes de transformada cuantificados.
[0028] El descodificador de vídeo 26 reconstruye cada uno de los bloques de la unidad de codificación que utiliza la información de encabezado descodificada y la información residual descodificada. En particular, el descodificador de vídeo 26 puede generar un bloque de vídeo de predicción para el bloque de vídeo actual que utiliza la información de predicción y movimiento incluida como parte de la información del encabezado y combinar el bloque de predicción con un bloque de vídeo residual correspondiente para reconstruir cada uno de los bloques de vídeo. El dispositivo de destino 14 puede visualizar los bloques de vídeo reconstruidos a un usuario a través del dispositivo de visualización 28. El dispositivo de visualización 28 puede comprender cualquiera entre una variedad de dispositivos de visualización, tales como un tubo de rayos catódicos (CRT), una pantalla de cristal líquido (LCD), una pantalla de plasma, una pantalla de diodos emisores de luz (LED), pantalla de LED orgánicos u otro tipo de unidad de visualización.
[0029] En algunos casos, el dispositivo de origen 12 y el dispositivo de destino 14 pueden funcionar de una manera sustancialmente simétrica. Por ejemplo, el dispositivo de origen 12 y el dispositivo de destino 14 pueden incluir cada uno componentes de codificación y descodificación de vídeo. Por tanto, el sistema 10 puede admitir una transmisión de vídeo unidireccional o bidireccional entre los dispositivos de vídeo 12, 14, por ejemplo para la emisión de vídeo en continuo, la radiodifusión de vídeo o la videotelefonía. Un dispositivo que incluye componentes de codificación y descodificación de vídeo también puede formar parte de un dispositivo común de codificación, archivo y reproducción, como una grabadora de vídeo digital (DVR).
[0030] El codificador de vídeo 20 y el descodificador de vídeo 26 pueden funcionar de acuerdo con cualquiera de una variedad de normas de compresión de vídeo, como las definidas por el Grupo de Expertos en Imágenes en Movimiento (MPEG) en MPEG-1, MPEG-2 y MPeG-4, la norma UIT-T H.263, las normas AH.264/MPEG4 Parte 10 AVC, la norma CÓDEC de vídeo 421M de la Sociedad de Ingenieros de Cine y Televisión (SMPTE) (comúnmente denominado "VC-1"), la norma definida por el Grupo de trabajo de la norma de codificación de audio y vídeo de China (comúnmente denominado como "AVS"), así como cualquier otra norma de codificación de vídeo definida por un organismo de normalización o desarrollado por una organización como una norma de propiedad. Aunque no se muestra en la FIG. 1, en algunos aspectos, tanto el codificador de vídeo 20 como el descodificador de vídeo 26 pueden estar integrados con un codificador y descodificador de audio respectivamente, y pueden incluir unidades MUX-DEMUX apropiadas, u otro tipo de hardware y software, para gestionar la codificación tanto de audio como de vídeo en un flujo de datos común o en flujos de datos separados. De esta manera, el dispositivo de origen 12 y el dispositivo de destino 14 pueden funcionar con datos multimedia. Si procede, las unidades MUX-DEMUX pueden ajustarse al protocolo multiplexor UIT H.223 u otros protocolos, tales como el protocolo de datagramas de usuario (UDP).
[0031] En algunos aspectos, para la radiodifusión de vídeo, las técnicas descritas en esta divulgación pueden aplicarse a la codificación de vídeo H.264 mejorada para suministrar servicios de vídeo en tiempo real en sistemas móviles terrestres de multidifusión de multimedia (TM3) que utilizan la memoria descriptiva de la interfaz aérea de solo enlace directo (FLO), "Forward Link Only Air Interface Specification for Terrestrial Mobile Multimedia Multicast", publicada en julio de 2007 como la norma técnica TIA-1099 (la "memoria descriptiva FLO"). Es decir, el canal de comunicación 16 puede comprender un canal de información inalámbrico utilizado para emitir información de vídeo inalámbrico de acuerdo con la memoria descriptiva FLO, o similar. La memoria descriptiva FLO incluye ejemplos que definen la sintaxis y la semántica del flujo de bits y los procesos de descodificación adecuados para la interfaz aérea FLO.
[0032] De forma alternativa, el vídeo puede emitirse de acuerdo con otras normas tales como DVB-H (radiodifusión de vídeo digital-manualmente), ISDB-T (radiodifusión digital de servicios integrados-terrestre) o DMB (radiodifusión de medios digitales). Por lo tanto, el dispositivo de origen 12 puede ser un terminal inalámbrico móvil, un servidor de emisión de vídeo en continuo o un servidor de radiodifusión de vídeo. Sin embargo, las técnicas descritas en esta divulgación no se limitan a ningún tipo particular de radiodifusión, multidifusión o sistema punto a punto. En el caso de la radiodifusión, el dispositivo de origen 12 puede emitir varios canales de datos de vídeo a múltiples dispositivos de destino, cada uno de los cuales puede ser similar al dispositivo de destino 14 de la FIG. 1. Por lo tanto, aunque se muestra un único dispositivo de destino 14 en la FIG. 1, para aplicaciones de radiodifusión de vídeo, el dispositivo de origen 12 típicamente emitirá el contenido de vídeo simultáneamente a muchos dispositivos de destino.
[0033] En otros ejemplos, el transmisor 22, el canal de comunicación 16 y el receptor 24 pueden configurarse para la comunicación de acuerdo con cualquier sistema de comunicación por cable o inalámbrico, incluyendo uno o más de un Ethernet, teléfono (por ejemplo, POTS), cable, línea de potencia y sistemas de fibra óptica, y/o un sistema inalámbrico que comprende uno o más de un sistema de comunicación de acceso múltiple por división de código (CDMA o CDMA2000), un sistema de acceso múltiple por división de frecuencia (FDMA), un sistema de acceso múltiple por división de frecuencia ortogonal (OFDM), un sistema de acceso múltiple por división de tiempo (TDMA) como GSM (Sistema global para comunicaciones móviles), GPRS (Servicio general de radio por paquetes) o EDGE (entorno de datos mejorados para GSM), un sistema de teléfono móvil TETRA (Radio terrestre troncalizada), un sistema de acceso múltiple por división de código de banda ancha (WCDMA), una alta velocidad de datos 1xEV-DO (solamente datos de evolución de primera generación) o sistema multidifusión 1xEV-DO Gold, un sistema IEEE 802.18, un sistema MediaFLO.TM., un sistema DMB, un sistema DVB-H u otro esquema para la comunicación de datos entre dos o más dispositivos.
[0034] El codificador de vídeo 20 y el descodificador de vídeo 26 pueden cada uno implementarse como uno o más microprocesadores, procesadores de señales digitales (DSP), circuitos integrados específicos de la aplicación (ASIC), matrices de puertas programables in situ (FPGA), lógica discreta, software, hardware, firmware o cualquier combinación de los mismos. Cada uno del codificador de vídeo 20 y del descodificador de vídeo 26 se pueden incluir en uno o más codificadores o descodificadores, pudiendo cualquiera de los mismos estar integrado como parte de un codificador/descodificador combinado (CÓDEC) en un dispositivo móvil respectivo, dispositivo de abonado, dispositivo de radiodifusión, servidor o similares. Además, el dispositivo de origen 12 y el dispositivo de destino 14 pueden incluir componentes de modulación, demodulación, conversión de frecuencia, filtrado y amplificador apropiados para la transmisión y recepción de vídeo codificado, según corresponda, incluidos componentes inalámbricos de radiofrecuencia (RF) y antenas suficientes para admitir la comunicación inalámbrica. Sin embargo, por facilidad de ilustración, dichos componentes se resumen como transmisor 22 del dispositivo de origen 12 y receptor 24 del dispositivo de destino 14 en la FIG. 1.
[0035] La FIG. 2 es un diagrama de bloques que ilustra un ejemplo de un codificador de vídeo 20. El descodificador de vídeo 26 puede incluir componentes similares al codificador de vídeo 20. El codificador de vídeo 20 puede realizar la intracodificación y la intercodificación de bloques de vídeo dentro de tramas de vídeo. La intracodificación se basa en la predicción espacial para reducir o eliminar la redundancia espacial en el vídeo dentro de una trama de vídeo dada. La intercodificación se basa en la predicción temporal para reducir o eliminar la redundancia temporal de un vídeo dentro de tramas adyacentes. Para la intercodificación, el codificador de vídeo 20 realiza una estimación del movimiento para seguir el movimiento de bloques de los vídeo coincidentes entre dos o más tramas adyacentes.
[0036] Como se muestra en la FIG. 2, el codificador de vídeo 20 recibe un bloque de vídeo actual 21 dentro de una trama de vídeo que se va a codificar. En el ejemplo de la FIG. 2, el codificador de vídeo 20 incluye la unidad de predicción de movimiento 23, el almacén de tramas de referencia 25, la unidad de transformada de bloque 29, la unidad de cuantificación 31, la unidad de cuantificación inversa 33, la unidad de transformada inversa 35, la unidad de codificación por entropía 37, la unidad de decisión de modo 43, la unidad de predicción espacial 47 y el filtro de desbloqueo 49. El codificador de vídeo 20 también incluye el sumador 39, el sumador 41 y el conmutador 51. El codificador de vídeo 20 también puede incluir una unidad de exploración, que no se muestra, para explorar los coeficientes cuantificados. La FIG. 2 ilustra los componentes de predicción temporal del codificador de vídeo 20 para la intercodificación de los bloques de vídeo y los componentes de predicción espacial para la intracodificación de los bloques de vídeo. El conmutador 51 puede controlarse mediante la unidad de decisión de modo 43 y puede usarse para elegir entre el bloque de vídeo de predicción espacial o el bloque de vídeo de predicción temporal como el bloque de vídeo de predicción para el bloque de vídeo de entrada.
[0037] Para evaluar la intercodificación, la unidad de predicción de movimiento 23 compara el bloque de vídeo 21 con los bloques en una o más tramas de vídeo adyacentes para generar uno o más vectores de movimiento. La trama o tramas adyacentes pueden recuperarse del almacén de tramas de referencia 25. La estimación del movimiento se puede realizar para bloques de tamaños variables, por ejemplo, 16x16, 16x8, 8x16, 8x8 o tamaños de bloque más pequeños. La unidad de predicción de movimiento 23 identifica un bloque en una trama adyacente que coincide lo más estrechamente con el bloque de vídeo actual 21, por ejemplo, basándose en un modelo de distorsión de la velocidad, y determina un desplazamiento entre los bloques. Sobre esta base, la unidad de predicción de movimiento 23 produce un vector de movimiento que indica la magnitud y la trayectoria del desplazamiento.
[0038] Los vectores de movimiento pueden tener una precisión de medio o cuarto de píxel, o incluso una precisión más fina, lo que permite que el codificador de vídeo 20 siga el movimiento con mayor precisión que las ubicaciones de píxeles enteros y obtenga un mejor bloque de predicción. Cuando se usan vectores de movimiento con valores de píxeles fraccionarios, las operaciones de interpolación se pueden llevar a cabo en la unidad de predicción de movimiento 23. Por ejemplo, en la norma AVC/H.264, para obtener una señal de luma en posiciones de medio píxel, se puede utilizar el filtro de Wiener de 6 tomas con coeficientes (1, -5, 20, 20, -5, 1 )/32. Para obtener señales de luma en ubicaciones de un cuarto de píxel, se puede utilizar el filtrado bilineal en los valores de ubicaciones de píxeles enteros y los valores interpolados en ubicaciones de medio píxel. El filtro bilineal también se puede utilizar en la interpolación de píxeles fraccionarios para los componentes de croma, que pueden tener una precisión de hasta 1/8 de píxel. Después de identificar el mejor vector de movimiento para un bloque de vídeo que utiliza un modelo de velocidad-distorsión, la unidad de predicción de movimiento 23 genera un bloque de vídeo de predicción por compensación de movimiento.
[0039] Como alternativa, para evaluar la intracodificación, la unidad de predicción espacial 47 se usa para formar un bloque de vídeo de predicción que utiliza los bloques ya codificados en la misma unidad de codificación (por ejemplo, la misma trama). Por ejemplo, el bloque de vídeo 21 puede compararse con otros bloques ya codificados en la misma trama que el bloque de vídeo 21. En algunos modos de realización, los bloques ya codificados pueden recuperarse del almacén de tramas de referencia 25. En algunos modos de realización, se pueden usar diversos procedimientos de predicción espacial. Por ejemplo, en H.264/MPEG-4 AVC, la predicción espacial direccional se puede realizar en bloques de vídeo de tamaños 4x4, 8x8 y/o 16x16. Además, se pueden usar un total de 9 direcciones de predicción para bloques de luminancia de 4x4 y 8x8. Se pueden usar un total de 4 direcciones de predicción para los bloques de luminancia y los bloques de crominancia de 16x16. Se pueden realizar otros tipos de predicción espacial dentro de la misma unidad de codificación. Por ejemplo, un bloque de vídeo coincidente para el bloque de vídeo actual puede identificarse en la porción ya codificada de la unidad de codificación actual utilizando un proceso similar a la estimación del movimiento. Además, la cantidad de desplazamiento entre el bloque de vídeo coincidente y el bloque de vídeo actual se puede determinar y luego señalizarse como parte de los datos de encabezado del vídeo codificado para el bloque de vídeo actual. La unidad de decisión de modo 43 puede seleccionar el modo de predicción espacial óptimo (por ejemplo, tamaño del bloque de predicción, dirección de predicción o desplazamiento del bloque de vídeo de predicción, etc.) basándose en criterios predefinidos, tales como un modelo de distorsión de la velocidad lagrangiana.
[0040] El codificador de vídeo 20 forma un bloque de vídeo residual restando el bloque de vídeo de predicción producido por la unidad de predicción de movimiento 23 o por la unidad de predicción espacial 47 del bloque de vídeo original actual 21 en el sumador 39, que es un medio para restar el bloque de predicción del bloque original. La unidad de transformada de bloque 29, que es un medio para aplicar una transformada, aplica una transformada al bloque residual. El tamaño y el tipo de transformada que serán utilizados pueden indicarse a la unidad de transformada de bloque 29 mediante la unidad de decisión de modo 43. La unidad de cuantificación 31 cuantifica los coeficientes de transformada para reducir más la velocidad de transferencia de bits. La unidad de codificación por entropía 37, que es un medio para generar una señal de vídeo, codifica los coeficientes cuantificados para reducir aún más la velocidad de transferencia de bits. El descodificador de vídeo 26 realiza operaciones inversas para reconstruir el vídeo codificado.
[0041] La unidad de cuantificación inversa 33 y la unidad de transformada inversa 35 aplican la cuantificación inversa y la transformación inversa, respectivamente, para reconstruir el bloque residual. El sumador 41 añade el bloque residual reconstruido al bloque de predicción para producir un bloque de vídeo reconstruido para su almacenamiento en el almacén de tramas de referencia 25. El bloque de vídeo reconstruido es utilizado por la unidad de predicción de movimiento 23 o la unidad de predicción espacial 47, para codificar los bloques de vídeo posteriores en la trama de vídeo actual o una trama de vídeo posterior.
[0042] Cuando se realiza la compensación de movimiento para un bloque dado en la trama de vídeo actual 21, la unidad de predicción de movimiento 23 puede usar un conjunto fijo de filtros para interpolar un bloque de referencia desde una trama de referencia. Se necesita un bloque de referencia si el bloque actual se predice unidireccionalmente o se necesitan dos bloques de referencia si el bloque actual se predice bidireccionalmente. En H.264, se pueden usar múltiples tramas de referencia en direcciones hacia delante y hacia atrás en algunos casos. Los filtros reales usados en la unidad de predicción de movimiento 23 dependen de la parte fraccionaria del vector de movimiento. Por ejemplo, si el vector de movimiento apunta a una ubicación de medio píxel en la trama de referencia en una dimensión dada, para obtener el valor de la ubicación de medio píxel, un filtro de 6 tomas tal como (1, -5, 20, 20, -5, 1 )/32 se usa en esa dimensión con un vector de movimiento de medio píxel. Si ambos componentes del vector de movimiento apuntan a ubicaciones de número entero, los valores de píxeles de la trama de referencia en el almacén de tramas de referencia 25 pueden usarse directamente sin realizar ninguna operación de filtrado de interpolación.
[0043] La Figura 7 es un diagrama de bloques que ilustra un ejemplo de un descodificador de vídeo 26. El flujo de bits codificado se suministra al sistema 700. Algunas porciones del flujo de bits pueden corresponder a diferentes bloques de vídeo. Además, varios de esos bloques de vídeo pueden constituir una única trama de vídeo. Una porción del flujo de bits correspondiente a un bloque de vídeo dado se descodifica por entropía en la unidad de descodificación por entropía 702 para formar el bloque residual que comprende coeficientes de transformada residuales cuantificados. El bloque residual se puede explorar inversamente en una unidad de exploración inversa, que no se muestra. El bloque residual también puede cuantificarse inversamente en la unidad de cuantificación inversa 706 y transformarse inversamente en la unidad de transformada inversa 708 para formar el bloque residual descodificado. La unidad de descodificación por entropía 702 puede determinar el tipo y/o el tamaño de la transformada inversa a realizar basándose en los datos de encabezado recibidos como se analiza a continuación. Se genera un bloque de vídeo de predicción y se añade al bloque residual descodificado en la unidad de adición 710.
[0044] El bloque de vídeo de predicción puede formarse utilizando uno de los dos tipos de procedimientos de predicción: Intra e Inter. La unidad de predicción espacial 716 usa los bloques ya codificados en la misma trama de vídeo (o en el mismo fragmento de vídeo si se usa un segmento de vídeo como unidad de codificación) para generar el bloque de intrapredicción. La unidad de predicción de movimiento 718 usa las tramas anteriores y/o futuras almacenadas en el almacén de tramas de referencia 720 para generar el bloque de interpredicción. Dependiendo de los datos de encabezado recibidos indicativos del modo de codificación utilizado para codificar el bloque de vídeo, el conmutador 722 puede conmutarse para invocar la unidad de predicción espacial 716 o la unidad de predicción de movimiento 718 para generar un bloque predictor intra o inter. El bloque predictor se añade luego al bloque residual descodificado en la unidad de adición 710 para generar el bloque de vídeo descodificado.
[0045] El bloque de vídeo reconstruido resultante se envía luego a la unidad del filtro de desbloqueo 712 donde se puede filtrar en los bordes del bloque para impedir artefactos en el bloque que pueden ser visualmente poco atractivos. La salida generada es el bloque de vídeo descodificado final. El bloque de vídeo descodificado final puede almacenarse en el almacén de tramas de referencia 720 para la reconstrucción de otros bloques de vídeo en el mismo u otras tramas de vídeo.
[0046] A fin de descodificar correctamente un flujo de vídeo codificado, el descodificador debe saber qué tipo de transformada se usó para codificar los datos de vídeo. El descodificador puede entonces aplicar la transformada inversa apropiada que corresponde a la transformada directa utilizada en el codificador. Por consiguiente, los datos indicativos del tipo de transformada utilizada para codificar el bloque de vídeo deben enviarse al descodificador como parte del flujo de bits de vídeo para descodificar apropiadamente el bloque de vídeo.
[0047] Como se describe con respecto a la Figura 2, la unidad de transformada de bloque 29 aplica una transformada a un bloque de vídeo residual. La aplicación de transformadas en los bloques residuales proporciona la compactación de energía deseada que, cuando se combina con la cuantificación y la codificación por entropía, permite una alta eficacia en la compresión. Los ejemplos de transformadas utilizadas en sistemas populares de codificación de vídeo basados en bloques como MPEG2 y H.264/AVC incluyen la transformada DCT de 8x8 y las transformadas enteras de 4x4 y 8x8.
[0048] La norma H.264/AVC es la última norma de codificación de vídeo que proporciona una alta eficacia en la codificación. La norma H.264/AVC usa diversos tipos de transformadas de bloque. Para los bloques predictivos intra (predicción espacial) e inter (predicción temporal), la norma H.264/AVC usa una transformada entera de 4x4 que se basa en una transformada DCT de 4x4 o una transformada entera de 8x8 que se basa en una transformada DCT de 8x8.
[0049] Para la señal de crominancia de la señal de vídeo, se aplica un nivel adicional de transformada Hadamard de 2x2 en los componentes DC de 2x2 en cada bloque.
[0050] Para la señal de luminancia de la señal de vídeo, las transformadas se seleccionan de la siguiente manera. Primero se determina si el bloque es intrapredictivo o interpredictivo. Si el bloque es interpredictivo, a continuación se determina si el tamaño del bloque es menor que 8x8. Si el bloque es más pequeño que 8x8, se usa una transformada entera de 4x4. Si el bloque no es más pequeño que 8x8, se usa una transformada entera de 4x4 u 8x8.
[0051] Si el bloque es intrapredictivo, se determina si el bloque se predice usando el modo INTRA_16x16. Si el bloque se predice usando el modo INTRA_16x16, se aplica una transformada entera de 4x4 al bloque y se aplica un nivel adicional de transformada Hadamard de 4x4 en los componentes DC de 4x4 en cada bloque. Si el bloque no se predice usando el modo INTRA_16x16, se usa una transformada entera de 4x4 si el bloque se predice usando el modo INTRA_4x4 y una transformada entera de 8x8 si el bloque se predice usando el modo INTRA_8x8.
[0052] En los casos en que se puede usar una transformada de 4x4 u 8x8 en el bloque, la elección de la transformada depende del perfil H.264/AVC que se use. En cualquier perfil H.264 que no sea el perfil alto (por ejemplo, perfil de línea de base, perfil de línea de base extendido, perfil principal) solamente se utiliza una transformada entera de 4x4. En el perfil alto H.264/AVC (es decir, extensión del alcance de fidelidad), una transformada entera de 8x8 basada en una transformada DCT de 8x8 también se puede utilizar en la señal de luminancia. La elección de la transformada entera de 4x4 u 8x8 se señaliza mediante un elemento sintáctico adicional, transform_size_8x8_flag. En los casos en que se puede usar una transformada de 4x4 u 8x8 (por ejemplo, un bloque intercodificado con un tamaño no menor que 8x8), se envía el transform_size_8x8_flag junto con los datos de vídeo codificados al descodificador. Si el transform_size_8x8_flag se establece en 1, entonces la transformada entera de 8x8 se aplica a los bloques residuales; de lo contrario (si el transform_size_8x8_flag se establece en 0), la transformada entera de 4x4 se aplica a los bloques residuales.
[0053] En H.264/AVC, la predicción de movimiento se puede realizar en diversos tamaños de bloque (es decir, particiones de movimiento), como 16x16, 16x8, 8x16, 8x8, 8x4, 4x8 y 4x4. Mientras que las particiones de movimiento más pequeñas normalmente se usan alrededor de los bordes de objetos y áreas con muchos detalles, las particiones de movimiento más grandes normalmente se eligen alrededor de áreas más suaves. Como resultado, los bloques residuales después de la predicción de movimiento normalmente son más suaves, es decir, tienden a contener más componentes de baja frecuencia. Para dichas señales, la aplicación de transformadas más grandes puede proporcionar una mejor compactación de la energía. Los procedimientos y codificadores para elegir una partición de movimiento y un tamaño de transformada se describen en la patente de los EE. UU. n.° 5.107.345; la patente de los EE. UU. n.° 6.996.283; y la patente de los EE. UU. n.° 6.600.836. Como se describe anteriormente, H.264/AVC usa solamente transformadas enteras de 4x4 y 8x8 para bloques de vídeo que están intercodificados. Las transformadas enteras de 4x4 y 8x8 se indican mediante el valor del transform_size_8x8_flag, que actualmente está limitado a un tamaño de 1 bit. Por consiguiente, no hay forma de indicar tamaños de transformada adicionales con la sintaxis actual utilizada en H.264 porque el transform_size_8x8_flag de 1 bit solamente puede señalizar dos tipos de transformadas. Las sintaxis y los elementos sintácticos que se describen a continuación permiten la indicación de tamaños de transformada adicionales utilizados por el codificador y el descodificador. En algunos modos de realización, el elemento sintáctico comprende un valor del indicador de 2 bits para indicar el tamaño de la transformada. El valor del indicador puede incluirse como parte de la información del encabezado enviada al descodificador.
[0054] En los siguientes modos de realización, se puede usar un bloque de vídeo interpredictivo o un bloque de vídeo intrapredictivo junto con los procedimientos descritos. Es decir, el bloque de predicción del bloque de vídeo puede estar formado por compensación de movimiento o predicción espacial. En los modos de realización donde se usa la compensación de movimiento, el tamaño del bloque de predicción es igual al tamaño de la partición de movimiento; por lo tanto, los términos "bloque de predicción" y "partición de movimiento" pueden usarse indistintamente. Además, en los modos de realización donde se usa la predicción espacial, el tamaño del bloque de predicción es igual al tamaño del bloque de predicción espacial usado. Por lo tanto, los términos "bloque de predicción" y "bloque de intrapredicción" o "bloque de predicción espacial" pueden usarse indistintamente. Por ejemplo, se pueden usar múltiples opciones de transformada para bloques de vídeo codificados que utilizan la predicción INTRA_16x16 e INTRA_8x8. Además de la transformada de 4x4, se pueden aplicar transformadas de 16x16, 16x8, 8x16 u 8x8 a los bloques de vídeo predictivos INTRA_16x16; y la transformada de 8x8 puede aplicarse a los bloques de vídeo predictivos INTRA_8x8. Para los bloques intrapredictivos, la señalización del tamaño de la transformada se puede realizar de manera similar a los bloques de vídeo interpredictivos. Los elementos sintácticos del indicador de tamaño de transformada se pueden combinar con los elementos sintácticos del tamaño de bloque de predicción; y se puede usar la codificación de longitud variable de los elementos sintácticos del indicador de tamaño de transformada.
[0055] Las sintaxis que se describen a continuación utilizan tanto el valor del indicador como el tamaño del bloque de predicción de un bloque determinado para indicar el tamaño de la transformada. La combinación del tamaño de bloque de predicción del bloque y el valor del indicador permite indicar más tamaños de transformada que cuando se usa una correspondencia de 1 a 1 entre un valor del indicador y el tamaño de la transformada. Por ejemplo, en una correspondencia de 1 a 1 entre el tamaño de la transformada y el valor del indicador, un indicador de 2 bits solamente indicaría 4 tamaños de transformada diferentes, donde cada valor del indicador indica un único tamaño de transformada. Sin embargo, al utilizar aún más el tamaño de bloque de predicción del bloque, se pueden indicar tamaños de transformada adicionales usando el mismo número de bits para el indicador. Por ejemplo, si el valor del indicador 00 indica que el tamaño de la transformada debe ser igual al tamaño de bloque de predicción del bloque, y el tamaño de bloque de predicción puede ser de N tamaños de bloque diferentes, el valor del indicador único 00 puede indicar N tamaños de transformada diferentes. Por consiguiente, en un modo de realización, uno o más de los valores del indicador pueden indicar que el tamaño de la transformada que se usa es igual al tamaño de bloque de predicción e del bloque. En otro modo de realización, la codificación de longitud variable puede usarse para codificar el valor del indicador.
[0056] La Figura 3 es un modo de realización a modo de ejemplo de un proceso 300 de establecimiento de un valor de indicador en un codificador que señaliza el tamaño de transformada utilizado por el codificador 20 para un bloque de vídeo dado. El tamaño de bloque de predicción de cada bloque de vídeo puede determinarse en la unidad de decisión de modo 43, y la transformada puede realizarse en la unidad de transformada de bloque 29 (véase la Figura 2). La elección del tamaño de bloque de predicción y la elección del tamaño de la transformada utilizada en un bloque puede hacerse mediante la unidad de decisión de modo 43. En una primera etapa 302 del proceso 300, se determina si el tamaño del bloque de predicción para el bloque dado es mayor que 8x8. Si el tamaño del bloque de predicción no es mayor que 8x8, el proceso continúa en la etapa 306. De forma alternativa, si el tamaño del bloque de predicción es mayor que 8x8, el proceso continúa con la etapa 338.
[0057] En la etapa 306, se determina si el tamaño del bloque de predicción es inferior a 8x8. Si el tamaño del bloque de predicción es inferior a 8x8, el proceso 300 continúa en la etapa 310, en el que se aplica una transformada de 4x4 al bloque. El proceso 300 continúa luego a una etapa 314 donde no se establece ningún valor del indicador que se enviará al descodificador. De forma alternativa, si se determina que el tamaño del bloque de predicción no es menor que 8x8 en la etapa 306, el proceso continúa en la etapa 318, en el que se determina si el tamaño de la transformada que se utilizará en el bloque es 8x8. Si se determina que no se utilizará un tamaño de transformada de 8x8, el proceso 300 continúa en la etapa 322 donde se aplica una transformada de 4x4 al bloque, y luego a la etapa 326 donde se establece un indicador de 1 bit con un valor de 0 que se enviará al descodificador. Como alternativa, en la etapa 318 se determina que se utilizará una transformada de 8x8, el proceso continúa en la etapa 330 en el que se aplica una transformada de 8x8 al bloque, y luego a la etapa 334 donde se establece un indicador de 1 bit con un valor de 1 que se enviará al descodificador.
[0058] Si en la etapa 302, se determina que el tamaño del bloque de predicción es mayor que 8x8, el proceso continúa en la etapa 338. En la etapa 338 se determina en el codificador, ya sea automática o manualmente, si se utilizará un tamaño de transformada mayor que 8x8 en el bloque dado. Si no se utilizará un tamaño de transformada mayor que 8x8, el proceso 300 continúa en la etapa 342, donde se determina si el tamaño de transformada que se utilizará en el bloque dado es de 8x8. Si el tamaño de la transformada que se utilizará no es de 8x8, el proceso 300 continúa en la etapa 346, donde se aplica una transformada de 4x4 al bloque, y luego en la etapa 350, donde un valor del indicador de 1 bit se establece en 0 que se enviará al descodificador. Como alternativa, si el tamaño de la transformada que se utilizará es de 8x8, el proceso 300 continúa en la etapa 354 donde se aplica una transformada de 8x8 al bloque, y luego en la etapa 358 donde un valor del indicador de 2 bits se establece en 10 que se enviará al descodificador.
[0059] Si en la etapa 338 se determina que el tamaño de la transformada que se utilizará es mayor que 8x8, el proceso 300 continúa en la etapa 362. En la etapa 362 se determina si el tamaño de bloque de predicción del bloque dado es de 16x16. Si se determina que el tamaño del bloque de predicción es de 16x16, el proceso 300 continúa en la etapa 366 donde se aplica una transformada de 16x16 al bloque, y luego en la etapa 382. De forma alternativa, si en la etapa 362 se determina que el tamaño del bloque de predicción no es de 16x16, el proceso 300 continúa en la etapa 370 donde se determina si el tamaño del bloque de predicción es de 8x16. Si se determina que el tamaño del bloque de predicción es de 8x16, el proceso 300 continúa en la siguiente etapa 374, donde se aplica una transformada de 8x16 al bloque, y luego en la etapa 382. De forma alternativa, si se determina que el tamaño del bloque de predicción no es de 8x16, el proceso 300 continúa en la siguiente etapa 374 donde se aplica una transformada de 16x8 al bloque, y luego en la etapa 382. En la etapa 382, se establece un valor del indicador de 2 bits de 11 que se enviará al descodificador.
[0060] De acuerdo con el proceso 300, los valores del indicador corresponden a los tipos de transformada siguientes:
Tabla 1
Figure imgf000011_0001
[0061] Una persona con experiencia ordinaria en la técnica reconocerá que algunas de las etapas del proceso 300 pueden omitirse o pueden añadirse nuevas etapas para lograr el mismo resultado. Además, algunas de las etapas pueden realizarse en un orden diferente. Obsérvese también que los valores del indicador pueden reorganizarse (por ejemplo, 0 es una transformada de 8x8 y 10 es una transformada de 4x4).
[0062] La Figura 4 es un modo de realización a modo de ejemplo de otro proceso 400 de establecimiento de un valor de indicador en un codificador que señaliza el tamaño de transformada utilizado por el codificador 20 para un bloque de vídeo dado. El tamaño del bloque de predicción puede determinarse en la unidad de decisión de modo 43, y la transformada puede realizarse en la unidad de transformada de bloque 29. La elección del tamaño de bloque de predicción y la elección del tamaño de la transformada utilizada en un bloque se realizan mediante la unidad de decisión de modo 43. En una primera etapa 402 del proceso 400, se determina si el tamaño del bloque de predicción para el bloque dado es mayor que 8x8. Si el tamaño del bloque de predicción no es mayor que 8x8, el proceso continúa en la etapa 406. De forma alternativa, si el tamaño del bloque de predicción es mayor que 8x8, el proceso continúa con la etapa 438.
[0063] En la etapa 406, se determina si el tamaño del bloque de predicción es inferior a 8x8. Si el tamaño del bloque de predicción es inferior a 8x8, el proceso 400 continúa en la etapa 410, en el que se aplica una transformada de 4x4 al bloque. El proceso 400 continúa luego a una etapa 414 donde no se establece ningún valor del indicador que se enviará al descodificador. De forma alternativa, si se determina que el tamaño del bloque de predicción no es menor que 8x8 en la etapa 406, el proceso continúa en la etapa 418, en el que se determina si el tamaño de la transformada que se utilizará en el bloque es 8x8. Si se determina que no se utilizará un tamaño de transformada de 8x8, el proceso 400 continúa en la etapa 422 donde se aplica una transformada de 4x4 al bloque, y luego a la etapa 426 donde se establece un indicador de 1 bit con un valor de 0 que se enviará al descodificador. Como alternativa, en la etapa 418 se determina que se utilizará una transformada de 8x8, el proceso continúa en la etapa 430 en el que se aplica una transformada de 8x8 al bloque, y luego a la etapa 434 donde se establece un indicador de 1 bit con un valor de 1 que se enviará al descodificador.
[0064] Si en la etapa 402, se determina que el tamaño del bloque de predicción es mayor que 8x8, el proceso continúa en la etapa 438. En la etapa 438 se determina si el tamaño del bloque de predicción es de 16x16. Si el tamaño del bloque de predicción es de 16x16, el proceso 400 continúa en la etapa 442, donde se determina si el tamaño de la transformada que se aplicará al bloque es de 8x8. Si se determina que el tamaño de la transformada que se utilizará es de 8x8, el proceso 400 continúa en la etapa 446, donde se aplica una transformada de 8x8 al bloque dado, y luego a la etapa 450, donde se establece un indicador de dos bits con un valor de 00 que se enviará al descodificador. De forma alternativa, si en la etapa 442 se determina que el tamaño de la transformada a aplicar no es 8x8, el proceso 442 continúa en la etapa 454, donde se determina si se aplicará una transformada de 16x16 al bloque. Si se aplica una transformada de 16x16, el proceso 400 continúa en la etapa 458, donde se aplica una transformada de 16x16 al bloque dado, y luego en la etapa 462, donde se establece un indicador de dos bits con un valor de 01 que se enviará al descodificador. Si, en cambio, en la etapa 454 se determina que el tamaño de la transformada a aplicar no es de 16x16, el proceso 400 continúa en la etapa 466, donde se determina si el tamaño de la transformada a aplicar al bloque dado es de 16x8. Si el tamaño de la transformada a aplicar es de 16x8, el proceso 400 continúa en la etapa 470 donde se aplica una transformada de 16x8 al bloque dado, y luego a la etapa 474 donde se establece un indicador de dos bits con un valor de 10 que se enviará al descodificador. Como alternativa, si en la etapa 466 se determina que el tamaño de la transformada que se aplicará al bloque no es de 16x8, el proceso 400 continúa en la etapa 478, donde se aplica una transformada de 8x16 al bloque dado, y luego en la etapa 482, donde se establece un indicador de dos bits con un valor de 11 que se enviará al descodificador.
[0065] Si en la etapa 438 se determina que el tamaño del bloque de predicción no es de 16x16, el proceso 400 continúa en la etapa 484 donde se determina si el tamaño de la transformada que se aplicará al bloque dado es de 8x8. Si la transformada a aplicar es de 8x8, el proceso 400 continúa en la etapa 492 donde se aplica una transformada de 8x8 al bloque y luego en la etapa 426 donde se establece un valor del indicador de 1 bit de 0 que se enviará al descodificador. Como alternativa, si en la etapa 484 se determina que el tamaño de la transformada a aplicar al bloque no es de 8x8, el proceso continúa en la etapa 486, donde se determina si el tamaño del bloque de predicción es de 16x8. Si el tamaño del bloque de predicción es de 16x8, el proceso 400 continúa en la etapa 488, donde se realiza una transformada de 16x8 en el bloque, y luego en la etapa 434. Como alternativa, si en la etapa 486 se determina que el tamaño del bloque de predicción no es de 16x8, el proceso 400 continúa en la etapa 490, donde se realiza una transformada de 8x16 en el bloque, y luego en la etapa 434. En la etapa 434, se establece un indicador de un bit con un valor de 1 que se enviará al descodificador.
[0066] De acuerdo con el proceso 400, los valores del indicador corresponden a los tipos de transformada siguientes:
Tabla 2
Figure imgf000012_0001
[0067] Una persona con experiencia ordinaria en la técnica reconocerá que algunas de las etapas del proceso 400 pueden omitirse o pueden añadirse nuevas etapas para lograr el mismo resultado. Además, algunas de las etapas pueden realizarse en un orden diferente. Obsérvese también que los valores del indicador pueden reorganizarse (por ejemplo, 00 es una transformada de 16x16 y 01 es una transformada de 8x8).
[0068] La Figura 5 es un modo de realización a modo de ejemplo de un proceso 500 para realizar una transformada inversa en un descodificador 26 en un bloque codificado por un codificador 20 usando el proceso 300. El descodificador 26, que puede incluir, entre otros componentes, una unidad de descodificación por entropía, una unidad de predicción espacial, una unidad de compensación de movimiento, una unidad de cuantificación inversa, una unidad de transformada inversa, una unidad de descodificación por entropía y un sumador, es un medio para realizar las etapas del proceso 500. Además, los diversos componentes del descodificador 26 pueden usarse para realizar diferentes etapas del proceso 500. En la etapa 502 se determina si el tamaño del bloque de predicción es mayor que 8x8. Si el tamaño del bloque de predicción es mayor que 8x8, el proceso continúa en la etapa 518 donde el descodificador busca un valor del indicador de 1 o 2 bits y realiza una transformada inversa basándose en el valor del indicador y el tamaño del bloque de predicción. El tipo de transformada inversa que se utilizará se muestra en la Tabla 1. De forma alternativa, si en la etapa 502 se determina que el tamaño del bloque de predicción no es mayor que 8x8, el proceso 500 continúa en la etapa 506, donde se determina si el tamaño del bloque de predicción es menor que 8x8. Si el tamaño del bloque de predicción es menor que 8x8, el proceso 500 continúa en la siguiente etapa 510 donde se realiza una transformada inversa de 4x4. Si, en cambio, en la etapa 506 se determina que el tamaño del bloque de predicción no es menor que 8x8, el proceso continúa en la etapa 514 donde el descodificador busca un valor del indicador de 1 bit y realiza una transformada inversa basándose en el valor del indicador. El tipo de transformada inversa que se utilizará se muestra en la Tabla 1.
[0069] La Figura 6 es un modo de realización a modo de ejemplo de un proceso 600 para realizar una transformada inversa en un descodificador 26 en un bloque codificado por un codificador 20 usando el proceso 400. El descodificador 26, que puede ser un procesador, es un medio para realizar las etapas del proceso 600. En la etapa 602 se determina si el tamaño del bloque de predicción es mayor que 8x8. Si el tamaño del bloque de predicción es mayor que 8x8, el proceso continúa en la etapa 618 donde se determina si el tamaño del bloque de predicción es de 16x16. Si el tamaño del bloque de predicción es de 16x16, el proceso 600 continúa en la etapa 622, donde el descodificador busca un valor del indicador de 2 bits y se realiza una transformada inversa en el bloque de acuerdo con el valor del indicador. El tipo de transformada inversa que se utilizará se muestra en la Tabla 2. De forma alternativa, si en la etapa 618 se determina que el tamaño del bloque de predicción no es de 16x16, el proceso 600 continúa en la etapa 626 donde el descodificador busca un valor del indicador de 1 bit y se realiza una transformada inversa basándose en el valor de 1 bit y el tamaño de la partición de movimiento. El tipo de transformada inversa que se utilizará se muestra en la Tabla 2.
[0070] Si en la etapa 602 se determina que el tamaño del bloque de predicción no es mayor que 8x8, el proceso 600 continúa en la etapa 606, donde se determina si el tamaño del bloque de predicción es menor que 8x8. Si el tamaño del bloque de predicción es menor que 8x8, el proceso 600 continúa en la siguiente etapa 610 donde se realiza una transformada inversa de 4x4. Si, en cambio, en la etapa 606 se determina que el tamaño del bloque de predicción no es menor que 8x8, el proceso continúa en la etapa 614 donde el descodificador busca un valor del indicador de 1 bit y realiza una transformada inversa basándose en el valor del indicador. El tipo de transformada inversa que se utilizará se muestra en la Tabla 2.
[0071] Los procesos 300, 400, 500 y 600 describen una sintaxis particular para determinar el tamaño de la transformada a usar en un bloque de vídeo. Una persona con experiencia ordinaria en la técnica reconocerá que los procesos son procesos meramente a modo de ejemplo para codificar y descodificar bloques y establecer valores de indicador. Cabe destacar que otros procesos con etapas adicionales, menos etapas o con las etapas reorganizadas pueden usarse para lograr la misma sintaxis como se muestra en la Tabla 1 o la Tabla 2. Además, una persona con experiencia ordinaria en la técnica reconocerá que el valor particular del indicador asignado a cada indicación de transformada se puede cambiar. Además, se pueden formar sintaxis similares a las que se encuentran en la Tabla 1 y la Tabla 2.
[0072] Obsérvese también que los tamaños de transformada adicionales (por ejemplo, 32x32) y el tamaño del bloque de predicción (por ejemplo, 32x32) se pueden usar para codificar y descodificar bloques y establecer valores de indicador. Por ejemplo, si bien todavía se utilizan solamente 2 bits para el valor del indicador como se describe anteriormente, el indicador puede indicar un tamaño de transformada de 32x32. Por ejemplo, en el proceso 300, la etapa 362 podría determinar si el tamaño del bloque de predicción es igual a 32x32, y la etapa 370 podría determinar si el tamaño del bloque de predicción es igual a 16x32. Las etapas 366, 374 y 378 podrían modificarse de manera que en cada etapa, respectivamente, se realice una transformada de 32x32, 16x32 o 32x16 en el bloque. El valor del indicador que se establece en la etapa 358, por lo tanto, indicará una transformada de 32x32, 16x32 o 32x16 en lugar de una transformada de 16x16, 8x16 o 16x8. Se pueden hacer modificaciones adicionales para indicar tamaños de transformada adicionales utilizando la combinación de valores del indicador y el tamaño del bloque de predicción.
[0073] Los bits del valor del indicador se envían como parte de los datos de vídeo codificados en el canal de comunicaciones 16. Dependiendo del esquema de codificación, la ubicación de los bits del valor del indicador puede diferir a lo largo del flujo de bits enviado. El valor del indicador puede formar parte del encabezado enviado al descodificador. El encabezado puede contener elementos sintácticos de encabezado adicionales que pueden identificar características particulares del bloque de vídeo actual, como un tipo de bloque, un modo de predicción, un patrón de bloque codificado (CBP) para luma y croma, un tamaño de bloque de predicción y uno o más vectores de movimiento. Estos elementos sintácticos de encabezado pueden generarse, por ejemplo, en la unidad de codificación por entropía 37, dentro del codificador de vídeo 20.
[0074] En un modo de realización, el encabezado incluye un bit para indicar si hay coeficientes diferentes de cero en el bloque codificado. Si existen coeficientes diferentes de cero, los bits que indican el tamaño de la transformada también se incluyen en el encabezado. Si no existen coeficientes diferentes de cero, no se envían los bits del tamaño de transformada. En otro modo de realización, el elemento del tamaño de transformada se envía en cada encabezado independientemente de si existen coeficientes diferentes de cero.
[0075] Las técnicas descritas en esta divulgación pueden implementarse en hardware, software, firmware o en cualquier combinación de los mismos. Cualquier característica descrita como unidades o componentes puede implementarse conjuntamente en un dispositivo lógico integrado o por separado como dispositivos lógicos distintos pero interoperables. Si se implementan en software, las técnicas pueden realizarse al menos parcialmente mediante un medio legible por ordenador que comprende instrucciones que, al ejecutarse en un procesador, realizan uno o más de los procedimientos descritos anteriormente. Un medio legible por ordenador puede formar parte de un producto de programa informático, que puede incluir materiales de embalaje. El medio legible por ordenador puede comprender memoria de acceso aleatorio (RAM) tal como memoria de acceso aleatorio síncrona y dinámica (SDRAM), memoria de solo lectura (ROM), memoria de acceso aleatorio no volátil (NVRAM), memoria de solo lectura programable y borrable eléctricamente (EEPROM), memoria flash, medios de almacenamiento de datos magnéticos u ópticos, y similares. Las técnicas se pueden realizar adicionalmente, o de forma alternativa, al menos en parte por un medio de comunicación legible por ordenador que lleve o comunique un código en forma de instrucciones o estructuras de datos y al que se pueda acceder, y que se pueda leer y/o ejecutar por un ordenador.
[0076] El código se puede ejecutar por uno o más procesadores, tales como uno o más procesadores de señales digitales (DSP), microprocesadores de propósito general, circuitos integrados específicos de la aplicación (ASIC), matrices lógicas programables in situ (FPGA) u otros circuitos lógicos, integrados o discretos equivalentes. Por consiguiente, el término "procesador", como se usa en el presente documento, se puede referir a cualquiera de las estructuras anteriores o a cualquier otra estructura adecuada para la implementación de las técnicas descritas en el presente documento. Además, en algunos aspectos, la funcionalidad descrita en el presente documento se puede proporcionar dentro de unidades de software o unidades de hardware dedicados configuradas para codificar y descodificar, o incorporadas en un codificador-descodificador de vídeo combinado (CÓDEC). La representación de diferentes características como unidades está destinada a resaltar diferentes aspectos funcionales de los dispositivos y no implica necesariamente que dichas unidades deban realizarse mediante componentes de software o hardware separados. Más bien, la funcionalidad asociada con una o más unidades puede integrarse dentro de componentes de hardware o software comunes o separados.
[0077] Se han descrito diversos modos de realización de esta divulgación. La invención se define en las reivindicaciones adjuntas.

Claims (7)

REIVINDICACIONES
1. Un procedimiento de codificación de datos de vídeo, el procedimiento comprendiendo:
aplicar predicción espacial o compensación de movimiento a un bloque de vídeo original dentro de una trama de vídeo para generar un bloque de vídeo de predicción de un tamaño de bloque de predicción basándose en un modo de predicción, en el que el tamaño del bloque de predicción es uno entre 4x4, 4x8, 8x4, 8x8, 8x16, 16x8, 16x16, 16x32, 32x16 y 32x32;
restar el bloque de vídeo de predicción del bloque de vídeo original dentro de la trama de vídeo para formar un bloque residual;
seleccionar una transformada que tenga un tamaño de transformada para aplicar al bloque residual, en el que el tamaño de la transformada es uno entre 4x4, 8x8, 8x16, 16x8, 16x16, 16x32, 32x16 y 32x32, y el tamaño de la transformada es igual al tamaño del bloque de predicción o más pequeño que el tamaño del bloque de predicción y cuadrado;
generar datos de encabezado indicativos de la transformada seleccionada, los datos de encabezado comprendiendo un primer elemento sintáctico que tiene un valor y un segundo elemento sintáctico, el segundo elemento sintáctico siendo indicativo de un tamaño de bloque de predicción del bloque de vídeo de predicción, en el que si el tamaño del bloque de predicción es de 8x8 o más pequeño, el primer elemento sintáctico es cero o un bit de longitud y se genera para indicar el tamaño de la transformada sin referencia al segundo elemento sintáctico, y en el que si el bloque de predicción es mayor que 8x8, el primer elemento sintáctico es uno o dos bits de longitud y se genera para indicar el tamaño de la transformada en combinación con el segundo elemento sintáctico, en el que el primer elemento sintáctico se establece en un primer valor para indicar que el tamaño de la transformada es igual al tamaño del bloque de predicción;
aplicar la transformada seleccionada al bloque residual para generar coeficientes de transformada residual; y
generar una señal de vídeo basada en los datos del encabezado y los coeficientes de transformada residuales.
2. El procedimiento de la reivindicación 1, en el que la transformada seleccionada es una entre una transformada entera, una transformada discreta del coseno y una transformada direccional.
3. Un procedimiento de descodificación de datos de vídeo, el procedimiento comprendiendo:
recibir una señal de vídeo indicativa de al menos un bloque dentro de una trama de vídeo, la señal de vídeo comprendiendo datos de encabezado para al menos un bloque y coeficientes de transformada residuales para al menos un bloque, los datos de encabezado comprendiendo un primer elemento sintáctico que tiene un valor y un segundo elemento sintáctico indicativo de un tamaño de bloque de predicción de al menos un bloque, en el que el bloque de predicción tiene un tamaño de bloque de predicción de 4x4, 4x8, 8x4, 8x8, 8x16, 16x8, 16x16, 16x32, 32x16 y 32x32, y en el que la transformada tiene un tamaño de transformada de 4x4, 8x8, 8x16, 16x8, 16x16, 16x32, 32x16 y 32x32, y en el que el tamaño de la transformada es igual al tamaño del bloque de predicción o menor que el tamaño del bloque de predicción y cuadrado, en el que si el tamaño del bloque de predicción es 8x8 o menor, el primer elemento sintáctico es cero o un bit de longitud e indica el tamaño de la transformada sin referencia al segundo elemento sintáctico, y en el que si el bloque de predicción es mayor que 8x8, el primer elemento sintáctico es uno o dos bits de longitud y se utiliza con el segundo elemento sintáctico conjuntamente para definir el tamaño de transformada de la transformada utilizada para codificar al menos un bloque, en el que el primer elemento sintáctico se establece en un primer valor para indicar que el tamaño de la transformada es igual al tamaño del bloque de predicción;
aplicar predicción espacial o compensación de movimiento al al menos un bloque para generar un bloque de vídeo de predicción del tamaño del bloque de predicción del al menos un bloque;
determinar el tamaño de transformada de la transformada utilizada para codificar el al menos un bloque del primer elemento sintáctico y del segundo elemento sintáctico;
aplicar una transformada inversa del primer tamaño de transformada determinado en los coeficientes de transformada residuales para obtener un bloque residual descodificado; y
añadir el bloque residual descodificado al bloque de vídeo de predicción para obtener un bloque de vídeo descodificado.
4. El procedimiento de la reivindicación 3, en el que la transformada inversa es una entre una transformada entera, una transformada discreta del coseno y una transformada direccional.
5. Un medio de almacenamiento legible por ordenador que comprende instrucciones que, cuando se ejecutan por un ordenador, hacen que el ordenador realice un procedimiento de acuerdo con cualquiera de las reivindicaciones precedentes.
6. Un aparato para codificar datos de vídeo, el aparato comprendiendo:
medios para aplicar predicción espacial o compensación de movimiento a un bloque de vídeo original dentro de una trama de vídeo para generar un bloque de vídeo de predicción de un tamaño de bloque de predicción basándose en un modo de predicción, en el que el tamaño del bloque de predicción es uno entre 4x4, 4x8, 8x4, 8x8, 8x16, 16x8, 16x16, 16x32, 32x16 y 32x32;
medios para restar el bloque de vídeo de predicción del bloque de vídeo original dentro de la trama de vídeo para formar un bloque residual;
medios para seleccionar una transformada que tenga un tamaño de transformada para aplicar al bloque residual, en el que el tamaño de la transformada es uno entre 4x4, 8x8, 8x16, 16x8, 16x16, 16x32, 32x16 y 32x32, y el tamaño de la transformada es igual al tamaño del bloque de predicción o más pequeño que el tamaño del bloque de predicción y cuadrado;
medios para generar datos de encabezado indicativos de la transformada seleccionada, los datos de encabezado comprendiendo un primer elemento sintáctico que tiene un valor y un segundo elemento sintáctico, el segundo elemento sintáctico indicativo de un tamaño de bloque de predicción del bloque de vídeo de predicción, en el que si el tamaño del bloque de predicción es de 8x8 o más pequeño, el primer elemento sintáctico es cero o un bit de longitud y se genera para indicar el tamaño de la transformada sin referencia al segundo elemento sintáctico, y en el que si el bloque de predicción es mayor que 8x8, el primer elemento sintáctico es uno o dos bits de longitud y se genera para indicar el tamaño de la transformada en combinación con el segundo elemento sintáctico, en el que el primer elemento sintáctico se establece en un primer valor para indicar que el tamaño de la transformada es igual al tamaño del bloque de predicción;
medios para aplicar la transformada seleccionada al bloque residual para generar coeficientes de transformada residual; y
medios para generar una señal de vídeo basada en los datos del encabezado y los coeficientes de transformada residuales.
7. Un aparato para descodificar datos de vídeo, el aparato comprendiendo:
medios para recibir una señal de vídeo indicativa de al menos un bloque dentro de una trama de vídeo, la señal de vídeo comprendiendo datos de encabezado para al menos un bloque y coeficientes de transformada residuales para al menos un bloque, los datos de encabezado comprendiendo un primer elemento sintáctico que tiene un valor y un segundo elemento sintáctico indicativo de un tamaño de la partición de movimiento de al menos un bloque, en el que el bloque de predicción tiene un tamaño de bloque de predicción de 4x4, 4x8, 8x4, 8x8, 8x16, 16x8, 16x16, 16x32, 32x16 y 32x32, y en el que la transformada tiene un tamaño de transformada de 4x4, 8x8, 8x16, 16x8, 16x16, 16x32, 32x16 y 32x32, y en el que el tamaño de la transformada es igual al tamaño del bloque de predicción o menor que el tamaño del bloque de predicción y cuadrado, en el que si el tamaño del bloque de predicción es 8x8 o menor, el primer elemento sintáctico es cero o un bit de longitud e indica el tamaño de la transformada sin referencia al segundo elemento sintáctico, y en el que si el bloque de predicción es mayor que 8x8, el primer elemento sintáctico uno o dos bits de longitud y se utiliza con el segundo elemento sintáctico conjuntamente para definir el tamaño de transformada de la transformada utilizada para codificar al menos un bloque, en el que el primer elemento sintáctico se establece en un primer valor para indicar que el tamaño de la transformada es igual al tamaño del bloque de predicción;
medios para aplicar predicción espacial o compensación de movimiento al al menos un bloque para generar un bloque de vídeo de predicción del tamaño del bloque de predicción del al menos un bloque;
medios para determinar el tamaño de transformada de la transformada utilizada para codificar el al menos un bloque del primer elemento sintáctico y del segundo elemento sintáctico;
medios para aplicar una transformada inversa del primer tamaño de transformada determinado en los coeficientes de transformada residuales para obtener un bloque residual descodificado; y
medios para añadir el bloque residual descodificado al bloque de vídeo de predicción para obtener un bloque de vídeo descodificado.
ES09793175T 2008-10-03 2009-09-30 Codificación de vídeo usando transformadas mayores que 4x4 y 8x8 Active ES2775068T3 (es)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US10278308P 2008-10-03 2008-10-03
US17922809P 2009-05-18 2009-05-18
US12/508,434 US8483285B2 (en) 2008-10-03 2009-07-23 Video coding using transforms bigger than 4×4 and 8×8
PCT/US2009/059014 WO2010039822A2 (en) 2008-10-03 2009-09-30 VIDEO CODING USING TRANSFORMS BIGGER THAN 4x4 AND 8x8

Publications (1)

Publication Number Publication Date
ES2775068T3 true ES2775068T3 (es) 2020-07-23

Family

ID=42075798

Family Applications (1)

Application Number Title Priority Date Filing Date
ES09793175T Active ES2775068T3 (es) 2008-10-03 2009-09-30 Codificación de vídeo usando transformadas mayores que 4x4 y 8x8

Country Status (7)

Country Link
US (1) US8483285B2 (es)
EP (1) EP2345253B1 (es)
CN (1) CN102204251B (es)
DK (1) DK2345253T3 (es)
ES (1) ES2775068T3 (es)
HU (1) HUE047978T2 (es)
TW (1) TWI445408B (es)

Families Citing this family (56)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7289674B2 (en) * 2002-06-11 2007-10-30 Nokia Corporation Spatial prediction based intra coding
NO326065B1 (no) * 2007-01-11 2008-09-08 Tandberg Telecom As Atte pixlers heltallstransform
US8634456B2 (en) * 2008-10-03 2014-01-21 Qualcomm Incorporated Video coding with large macroblocks
US8503527B2 (en) 2008-10-03 2013-08-06 Qualcomm Incorporated Video coding with large macroblocks
US8619856B2 (en) * 2008-10-03 2013-12-31 Qualcomm Incorporated Video coding with large macroblocks
US9635368B2 (en) * 2009-06-07 2017-04-25 Lg Electronics Inc. Method and apparatus for decoding a video signal
CN104796717B (zh) 2009-07-01 2018-11-06 汤姆森特许公司 用于视频编码器和解码器的方法和装置
US8995527B2 (en) * 2010-02-19 2015-03-31 Qualcomm Incorporated Block type signalling in video coding
US8942282B2 (en) 2010-04-12 2015-01-27 Qualcomm Incorporated Variable length coding of coded block pattern (CBP) in video compression
KR101791078B1 (ko) 2010-04-16 2017-10-30 에스케이텔레콤 주식회사 영상 부호화/복호화 장치 및 방법
US8855188B2 (en) * 2010-07-15 2014-10-07 Sharp Laboratories Of America, Inc. Method of parallel video coding based on mapping
US8837577B2 (en) * 2010-07-15 2014-09-16 Sharp Laboratories Of America, Inc. Method of parallel video coding based upon prediction type
JP2012028858A (ja) * 2010-07-20 2012-02-09 Sony Corp 画像処理装置及び画像処理方法
SG10201506682SA (en) * 2010-09-30 2015-10-29 Mitsubishi Electric Corp Moving image encoding device, moving image decoding device, moving image coding method, and moving image decoding method
US20120082225A1 (en) * 2010-10-01 2012-04-05 Qualcomm Incorporated Selective indication of transform sizes
CN103262542A (zh) * 2010-10-26 2013-08-21 数码士有限公司 自适应帧内预测编码和解码方法
US9210442B2 (en) 2011-01-12 2015-12-08 Google Technology Holdings LLC Efficient transform unit representation
US9380319B2 (en) * 2011-02-04 2016-06-28 Google Technology Holdings LLC Implicit transform unit representation
US9788019B2 (en) * 2011-03-09 2017-10-10 Hfi Innovation Inc. Method and apparatus of transform unit partition with reduced complexity
CN108337522B (zh) * 2011-06-15 2022-04-19 韩国电子通信研究院 可伸缩解码方法/设备、可伸缩编码方法/设备和介质
US20120320972A1 (en) * 2011-06-16 2012-12-20 Samsung Electronics Co., Ltd. Apparatus and method for low-complexity optimal transform selection
CN102857755B (zh) * 2011-07-01 2016-12-14 华为技术有限公司 确定变换块尺寸的方法和设备
US9807426B2 (en) * 2011-07-01 2017-10-31 Qualcomm Incorporated Applying non-square transforms to video data
US9787982B2 (en) * 2011-09-12 2017-10-10 Qualcomm Incorporated Non-square transform units and prediction units in video coding
US9699457B2 (en) 2011-10-11 2017-07-04 Qualcomm Incorporated Most probable transform for intra prediction coding
US9247254B2 (en) * 2011-10-27 2016-01-26 Qualcomm Incorporated Non-square transforms in intra-prediction video coding
JP5871628B2 (ja) * 2011-11-07 2016-03-01 キヤノン株式会社 画像符号化装置、画像符号化方法及びプログラム、画像復号装置、画像復号方法及びプログラム
KR20130050149A (ko) * 2011-11-07 2013-05-15 오수미 인터 모드에서의 예측 블록 생성 방법
JP2013102297A (ja) 2011-11-07 2013-05-23 Canon Inc 画像符号化方法、画像符号化装置及びプログラム、画像復号方法、画像復号装置及びプログラム
TWI559747B (zh) * 2011-12-28 2016-11-21 Jvc Kenwood Corp A dynamic image coding apparatus, a motion picture coding method and a motion picture coding program, and a motion picture decoding apparatus, a motion picture decoding method, and a motion picture decoding program
US20130265305A1 (en) * 2012-04-04 2013-10-10 Jon N. Hasselgren Compressed Depth Cache
GB2501535A (en) * 2012-04-26 2013-10-30 Sony Corp Chrominance Processing in High Efficiency Video Codecs
FI2869557T3 (fi) 2012-06-29 2023-11-02 Electronics & Telecommunications Res Inst Menetelmä ja laite kuvien koodaamiseksi/dekoodaamiseksi
US10333547B2 (en) * 2012-08-13 2019-06-25 Gurologic Microsystems Oy Encoder and method for encoding input data using a plurality of different transformations or combinations of transformations
AU2012232992A1 (en) * 2012-09-28 2014-04-17 Canon Kabushiki Kaisha Method, apparatus and system for encoding and decoding the transform units of a coding unit
US9544597B1 (en) 2013-02-11 2017-01-10 Google Inc. Hybrid transform in video encoding and decoding
US9967559B1 (en) * 2013-02-11 2018-05-08 Google Llc Motion vector dependent spatial transformation in video coding
US9674530B1 (en) 2013-04-30 2017-06-06 Google Inc. Hybrid transforms in video coding
US20150055697A1 (en) * 2013-08-20 2015-02-26 Media Tek Inc. Method and Apparatus of Transform Process for Video Coding
US9591313B2 (en) * 2014-03-04 2017-03-07 Vixs Systems, Inc. Video encoder with transform size preprocessing and methods for use therewith
TWI594211B (zh) * 2014-10-31 2017-08-01 鴻海精密工業股份有限公司 監控設備及動態物件監控方法
US9565451B1 (en) 2014-10-31 2017-02-07 Google Inc. Prediction dependent transform coding
US9769499B2 (en) 2015-08-11 2017-09-19 Google Inc. Super-transform video coding
US10277905B2 (en) 2015-09-14 2019-04-30 Google Llc Transform selection for non-baseband signal coding
US9807423B1 (en) 2015-11-24 2017-10-31 Google Inc. Hybrid transform scheme for video coding
US10708164B2 (en) * 2016-05-03 2020-07-07 Qualcomm Incorporated Binarizing secondary transform index
CN114339228B (zh) * 2016-05-04 2024-04-12 夏普株式会社 用于对变换数据进行编码的系统和方法
US10652575B2 (en) * 2016-09-15 2020-05-12 Qualcomm Incorporated Linear model chroma intra prediction for video coding
CN116074508A (zh) 2018-09-05 2023-05-05 Lg电子株式会社 对图像信号进行编码/解码的设备及发送图像信号的设备
US11218694B2 (en) * 2018-09-24 2022-01-04 Qualcomm Incorporated Adaptive multiple transform coding
EP3874746A1 (en) * 2018-11-01 2021-09-08 InterDigital VC Holdings, Inc. Video encoding and decoding using multiple transform selection
US11122297B2 (en) 2019-05-03 2021-09-14 Google Llc Using border-aligned block functions for image compression
US11252410B2 (en) * 2019-06-11 2022-02-15 Tencent America LLC Method and apparatus for video coding
US11375220B2 (en) * 2019-11-27 2022-06-28 Tencent America LLC Method and apparatus for video decoding using a nominal directional mode and an angular offset
EP4088453A4 (en) 2020-02-14 2023-05-10 Beijing Bytedance Network Technology Co., Ltd. COLOCATED IMAGE INDICATION IN VIDEO BITSTREAMS
US20230107012A1 (en) * 2021-10-05 2023-04-06 Mellanox Technologies, Ltd. Hardware accelerated video encoding

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6633611B2 (en) 1997-04-24 2003-10-14 Mitsubishi Denki Kabushiki Kaisha Method and apparatus for region-based moving image encoding and decoding
DE10022331A1 (de) 2000-05-10 2001-11-15 Bosch Gmbh Robert Verfahren zur Transformationscodierung von Bewegtbildsequenzen
JP4163618B2 (ja) 2001-08-28 2008-10-08 株式会社エヌ・ティ・ティ・ドコモ 動画像符号化伝送システム、動画像符号化伝送方法、これらに用いて好適な符号化装置、復号化装置、符号化方法、復号化方法及びプログラム
JP2005519543A (ja) 2002-03-05 2005-06-30 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ レイヤ映像符合化のための方法及びシステム
JP2006517364A (ja) 2003-01-07 2006-07-20 トムソン ライセンシング マクロブロック・パーティションのインター/イントラ混在ビデオ符号化
US9210441B2 (en) 2003-06-25 2015-12-08 Thomson Licensing Fast mode-decision encoding for interframes
US7830963B2 (en) 2003-07-18 2010-11-09 Microsoft Corporation Decoding jointly coded transform type and subblock pattern information
US8064520B2 (en) 2003-09-07 2011-11-22 Microsoft Corporation Advanced bi-directional predictive coding of interlaced video
US8116374B2 (en) * 2004-05-07 2012-02-14 Broadcom Corporation Method and system for generating a transform size syntax element for video decoding
WO2006028088A1 (ja) 2004-09-08 2006-03-16 Matsushita Electric Industrial Co., Ltd. 動画像符号化方法および動画像復号化方法
DE102004056446A1 (de) 2004-11-23 2006-06-29 Siemens Ag Verfahren zur Transcodierung sowie Transcodiervorrichtung
US7830960B2 (en) * 2005-01-13 2010-11-09 Qualcomm Incorporated Mode selection techniques for intra-prediction video encoding
EP2720466A1 (en) 2005-09-26 2014-04-16 Mitsubishi Electric Corporation Moving image coding method
JP2007243427A (ja) 2006-03-07 2007-09-20 Nippon Hoso Kyokai <Nhk> 符号化装置及び復号化装置
BRPI0715770B1 (pt) 2006-08-25 2020-03-10 Interdigital Vc Holdings, Inc. Método, aparelho e mídia de armazenamento para particionamento com menor resolução
CN101888555B (zh) 2006-11-17 2013-04-03 Lg电子株式会社 用于解码/编码视频信号的方法及装置
US8335261B2 (en) 2007-01-08 2012-12-18 Qualcomm Incorporated Variable length coding techniques for coded block patterns
JP4901772B2 (ja) 2007-02-09 2012-03-21 パナソニック株式会社 動画像符号化方法及び動画像符号化装置
US8428133B2 (en) 2007-06-15 2013-04-23 Qualcomm Incorporated Adaptive coding of video block prediction mode
JP5509564B2 (ja) * 2008-09-30 2014-06-04 富士通株式会社 メッセージ送信方法及びプログラム
US8250413B2 (en) * 2008-09-30 2012-08-21 Hewlett-Packard Development Company, L.P. Connection broker assignment status reporting
US8619856B2 (en) 2008-10-03 2013-12-31 Qualcomm Incorporated Video coding with large macroblocks
US8634456B2 (en) 2008-10-03 2014-01-21 Qualcomm Incorporated Video coding with large macroblocks
US8503527B2 (en) 2008-10-03 2013-08-06 Qualcomm Incorporated Video coding with large macroblocks
US20100086031A1 (en) 2008-10-03 2010-04-08 Qualcomm Incorporated Video coding with large macroblocks

Also Published As

Publication number Publication date
HUE047978T2 (hu) 2020-05-28
EP2345253B1 (en) 2019-12-04
DK2345253T3 (da) 2020-02-24
CN102204251A (zh) 2011-09-28
TWI445408B (zh) 2014-07-11
US8483285B2 (en) 2013-07-09
EP2345253A2 (en) 2011-07-20
CN102204251B (zh) 2017-06-30
TW201028011A (en) 2010-07-16
US20100086049A1 (en) 2010-04-08

Similar Documents

Publication Publication Date Title
ES2775068T3 (es) Codificación de vídeo usando transformadas mayores que 4x4 y 8x8
JP5259828B2 (ja) 4×4および8×8よりも大きい変換を使用するビデオ符号化
ES2757703T3 (es) Señalización de tipo de bloques en la codificación de vídeo
ES2592182T3 (es) Almacenamiento intermedio de vídeo de bajo retardo en codificación de vídeo
RU2452128C2 (ru) Адаптивное кодирование информации заголовка видеоблока
US9288501B2 (en) Motion vector predictors (MVPs) for bi-predictive inter mode in video coding
TWI501648B (zh) 層狀編碼位元流結構
ES2639030T3 (es) Señalización del tamaño de la imagen en la codificación de vídeo
KR101168843B1 (ko) 수평 및 수직 대칭에 기초한 필터 계수들의 비디오 코딩
US20120243609A1 (en) Bi-predictive merge mode based on uni-predictive neighbors in video coding
CA2702488C (en) Improved enhancement layer coding for scalable video coding
CN114424561B (zh) 不允许不必要的层包括在多层视频码流中
CN114424572B (zh) 用于多层视频码流的dpb参数的指示