ES2715838T3 - Matrices de cuantización de señalización para la codificación de vídeo - Google Patents

Matrices de cuantización de señalización para la codificación de vídeo Download PDF

Info

Publication number
ES2715838T3
ES2715838T3 ES12788057T ES12788057T ES2715838T3 ES 2715838 T3 ES2715838 T3 ES 2715838T3 ES 12788057 T ES12788057 T ES 12788057T ES 12788057 T ES12788057 T ES 12788057T ES 2715838 T3 ES2715838 T3 ES 2715838T3
Authority
ES
Spain
Prior art keywords
values
quantization matrix
video
last
quantization
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
ES12788057T
Other languages
English (en)
Inventor
Rajan Laxman Joshi
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
Application granted granted Critical
Publication of ES2715838T3 publication Critical patent/ES2715838T3/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/46Embedding additional information in the video signal during the compression process
    • H04N19/463Embedding additional information in the video signal during the compression process by compressing encoding parameters before transmission
    • 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/124Quantisation
    • H04N19/126Details of normalisation or weighting functions, e.g. normalisation matrices or variable uniform quantisers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/157Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
    • 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/18Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a set of transform coefficients

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Magnetic Ceramics (AREA)

Abstract

Un procedimiento para decodificación de datos de vídeo que comprende: determinar una matriz de cuantización que incluya una pluralidad de valores, la pluralidad de valores que comprende un primer conjunto de valores y un segundo conjunto de valores, en el que el primer conjunto de valores en la matriz de cuantización cubre las entradas de la matriz de cuantización en el rectángulo desde la posición (0, 0) a (last_row, last_col), y en el que el segundo conjunto de valores en la matriz de cuantización cubre las entradas restantes de la matriz de cuantización fuera del rectángulo desde la posición (0,0) hasta (last_row, last_col), y en el que last_row es igual a last_col; submuestrear el primer conjunto de valores en la matriz de cuantización mediante un primer factor de submuestreo para generar un primer conjunto de valores submuestreados, en el que el primer factor de submuestreo es 1; submuestrear el segundo conjunto de valores en la matriz de cuantización mediante un segundo factor de submuestreo para generar un segundo conjunto de valores submuestreados; y generar un flujo de bits codificado que incluya el primer conjunto de valores submuestreados y el segundo conjunto de valores submuestreados, caracterizado por que el segundo factor de submuestreo es mayor que el primer factor de submuestreo.

Description

DESCRIPCIÓN
Matrices de cuantización de señalización para la codificación de vídeo
CAMPO TÉCNICO
[0001] Esta divulgación se refiere a la codificación de datos y, más particularmente, a técnicas para codificar datos de vídeo.
ANTECEDENTES
[0002] Las capacidades de vídeo digital pueden incorporarse a una amplia gama de dispositivos, incluidos televisores digitales, sistemas de difusión directa digital, sistemas de difusión inalámbrica, asistentes digitales personales (PDA), ordenadores portátiles o de escritorio, cámaras digitales, dispositivos de grabación digitales, reproductores de medios digitales, dispositivos de videojuegos, consolas de videojuegos, teléfonos móviles o de radio por satélite, dispositivos de videoconferencia y similares. Los dispositivos de vídeo digital implementan técnicas de compresión de vídeo, tales como las descritas en las normas definidas por MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264/MPEG-4, Parte 10, Codificación Avanzada de Vídeo (AVC), la norma de Codificación de Vídeo de Alta eficiencia (HEVC) actualmente en proceso de elaboración, y las ampliaciones de dichas normas, para transmitir, recibir y almacenar información de vídeo digital de forma más eficaz.
[0003] Las técnicas de compresión de vídeo incluyen la predicción espacial y/o la predicción temporal para reducir o eliminar la redundancia inherente en las secuencias de vídeo. Para la codificación de vídeo basada en bloques, una trama o un segmento de vídeo puede particionarse en bloques. Cada bloque se puede particionar adicionalmente. Los bloques en una trama o segmento intracodificado (I) se codifican usando la predicción espacial con respecto a muestras de referencia en bloques vecinos en la misma trama o segmento. Los bloques en una trama o segmento intercodificado (P o B) pueden usar la predicción espacial con respecto a muestras de referencia en bloques vecinos en la misma trama o segmento, o la predicción temporal con respecto a muestras de referencia en otras tramas de referencia. La predicción espacial o temporal da como resultado un bloque predictivo para un bloque que se vaya a codificar. Los datos residuales representan diferencias de píxeles entre el bloque original que se vaya a codificar y el bloque predictivo.
[0004] Un bloque intercodificado se codifica de acuerdo con un vector de movimiento que apunta a un bloque de muestras de referencia que forman el bloque predictivo, e indicando los datos residuales la diferencia entre el bloque codificado y el bloque predictivo. Un bloque intracodificado se codifica de acuerdo con un modo de intracodificación y con los datos residuales. Para una mayor compresión, los datos residuales pueden transformarse desde el dominio de píxeles en un dominio de transformada, dando como resultado coeficientes de transformada residuales, que entonces se pueden cuantizar. Los coeficientes de transformada cuantizados, inicialmente dispuestos en una matriz bidimensional, pueden escanearse en un orden particular con el fin de producir un vector unidimensional de coeficientes de transformada para la codificación por entropía.
[0005] Zhou M et al, "Compact representation of quantization matrices for HEVC [Representación compacta de matrices de cuantización para la HEVC]", 4. Reunión JCT-VC; reunión MPEG 95; 20-1 -2011, propone un algoritmo de compresión para compactar la representación de matrices de cuantización para la HEVC. La propuesta requiere el submuestreo inicial de la matriz de cuantización para reducir su resolución. El submuestreo [downsampling] se realiza de tal manera que la primera fila y la primera columna de la matriz de cuantización siempre se mantienen en la matriz. Tanaka J et a, "Enhancement of quantization matrix coding for HEVC (Mejora de la codificación de la matriz de cuantización para la HEVC)", 6. Reunión JCT-VC; reunión MPEG 97; 14-7-2011 analiza la codificación de los coeficientes de matriz, tal como los de las matrices de cuantización, usando procedimientos de predicción.
SUMARIO
[0006] En general, esta divulgación describe los valores de señalización de una matriz de cuantización. Por ejemplo, un codificador de vídeo puede dividir los valores de una matriz de cuantización en al menos un primer subconjunto de valores y un segundo subconjunto de valores. El codificador de vídeo puede codificar y señalar los valores del primer subconjunto como elementos sintácticos. El decodificador de vídeo puede recibir los elementos sintácticos para los valores del primer subconjunto y decodificar los elementos sintácticos para generar los valores del primer subconjunto. Sin recibir los valores del segundo subconjunto, el decodificador de vídeo puede predecir los valores del segundo subconjunto a partir de los valores del primer subconjunto.
[0007] En un ejemplo de la divulgación, un procedimiento para codificar datos de vídeo comprende generar una matriz de cuantización que incluya una pluralidad de valores, comprendiendo la pluralidad de valores un primer conjunto de valores y un segundo conjunto de valores. El primer conjunto de valores en la matriz de cuantización cubre las entradas de la matriz de cuantización en el rectángulo desde la posición (0,0) hasta (last_row, last_col), en el que last_row es igual a last_col. El segundo conjunto de valores en la matriz de cuantización cubre las entradas restantes de la matriz de cuantización fuera del rectángulo desde la posición (0,0) hasta (last_row, last_col). El primer conjunto de valores en la matriz de cuantización se submuestrea mediante un primer factor de submuestreo de 1 para generar un primer conjunto de valores de submuestreo. El segundo conjunto de valores en la matriz de cuantización se submuestrea por un segundo factor de submuestreo que es más alto que el primer factor de submuestreo para generar un segundo conjunto de valores de submuestreo, y que genera un flujo de bits codificado que incluye el primer conjunto de valores submuestreados y el segundo conjunto de valores submuestreados.
[0008] En otro ejemplo de la divulgación, un procedimiento para decodificar datos de vídeo comprende recibir una matriz de cuantización codificada con valores submuestreados en un flujo de bits codificado. Un primer conjunto de valores submuestreados en la matriz de cuantización se sobremuestrea [upmix] con un primer factor de sobremuestreo [upsampling] de 1 para generar un primer conjunto de valores, en el que el primer conjunto de valores en la matriz de cuantización cubre las entradas de la matriz de cuantización en el rectángulo desde la posición (0,0 ) a (last_row, last_col), y en el que last_row es igual a last_col. Un segundo conjunto de valores submuestreados en la matriz de cuantización se sobremuestrea mediante un segundo factor de sobremuestreo más alto que el primer factor de sobremuestreo para generar un segundo conjunto de valores, en el que el segundo conjunto de valores en la matriz de cuantización cubre las entradas restantes de la matriz de cuantización fuera del rectángulo de la posición (0,0) a (last_row, last_col). Un bloque de coeficientes de transformada se cuantiza de manera inversa con los primer y segundo conjunto de valores.
[0009] Los detalles de uno o más ejemplos se exponen en los dibujos adjuntos y en la siguiente descripción. Otras características, objetivos y ventajas resultarán evidentes a partir de la descripción y de los dibujos, y a partir de las reivindicaciones.
BREVE DESCRIPCIÓN DE LOS DIBUJOS
[0010]
La FIG. 1 es un diagrama de bloques que ilustra un sistema de codificación y decodificación de vídeo de ejemplo que puede utilizar las técnicas descritas en esta divulgación.
La FIG. 2 es un diagrama de bloques que ilustra un codificador de vídeo de ejemplo que puede implementar las técnicas descritas en esta divulgación.
La FIG. 3 es un diagrama de bloques que ilustra un decodificador de vídeo de ejemplo que puede implementar las técnicas descritas en esta divulgación.
La FIG. 4 es un diagrama conceptual que ilustra una matriz de cuantización de ejemplo.
La FIG. 5 es un diagrama conceptual que ilustra una matriz de cuantización con valores de ejemplo.
La FIG. 6 es un diagrama conceptual que ilustra una matriz de cuantización reconstruida que utiliza una o más técnicas de ejemplo de esta divulgación.
La FIG. 7 es un diagrama conceptual que ilustra factores de submuestreo para diferentes porciones en un ejemplo de una matriz de cuantización.
La FIG. 8 es un diagrama conceptual que ilustra factores de submuestreo para diferentes porciones en otro ejemplo de una matriz de cuantización.
La FIG. 9 es un diagrama conceptual que ilustra factores de submuestreo para diferentes porciones en otro ejemplo de una matriz de cuantización.
La FIG. 10 es un diagrama de flujo que ilustra un procedimiento de codificación de vídeo de acuerdo con las técnicas de esta divulgación.
La FIG. 11 es un diagrama de flujo que ilustra un procedimiento de decodificación de vídeo de acuerdo con las técnicas de esta divulgación.
DESCRIPCIÓN DETALLADA
[0011] Esta divulgación describe técnicas para señalar los valores de una matriz de cuantización en la codificación de vídeo. Una matriz de cuantización puede ser una matriz bidimensional que incluye una pluralidad de valores. Como ilustración, se puede usar una matriz de cuantización para escalar un tamaño de paso de cuantización usado para cuantizar los coeficientes de transformada residuales asociados con una unidad de transformada para la codificación de vídeo. Un parámetro de cuantización (QP) puede asignarse a un bloque de coeficientes de transformada, tal como una unidad de transformada, para especificar un tamaño de paso de cuantización. Cada valor en la matriz de cuantización corresponde a un coeficiente en el bloque que se vaya a cuantizar, y se usa para determinar el grado de cuantización que se aplicará al coeficiente, dado el valor QP.
[0012] En particular, esta divulgación propone técnicas para submuestrear una matriz de cuantización para que sea necesario transmitir y/o almacenar menos valores de cuantización en un flujo de bits de vídeo codificado. La transmisión o el almacenamiento de matrices de cuantización completas asociadas con bloques de datos de vídeo puede requerir un gran número de bits, reduciendo por tanto la eficiencia del ancho de banda del flujo de bits de vídeo codificado. También, un decodificador de vídeo puede almacenar toda la matriz de cuantización en la memoria para un proceso de cuantización inversa. Al submuestrear una matriz de cuantización con las técnicas de esta divulgación, los bits se pueden guardar sin reducir sustancialmente la calidad del vídeo codificado.
[0013] En esta divulgación, la codificación de vídeo se describirá con fines ilustrativos. Las técnicas de codificación descritas en esta divulgación también pueden ser aplicables a otros tipos de codificación de datos. Los dispositivos de vídeo digital implementan técnicas de compresión de vídeo para codificar y decodificar información de vídeo digital de manera más eficiente. La compresión de vídeo puede aplicar técnicas de predicción espacial (intratramas) y/o de predicción temporal (intertramas) para reducir o eliminar la redundancia inherente en las secuencias de vídeo.
[0014] Debería entenderse que el término "trama" se puede usar indistintamente con el término "imagen". En otras palabras, los términos "trama" e "imagen" se refieren a una porción de un vídeo, y la visualización secuencial de la trama o la imagen da como resultado una reproducción suave. Por consiguiente, en los casos en que la divulgación usa el término "trama", las técnicas de esta divulgación no deberían interpretarse como limitadas a las técnicas o normas de codificación de vídeo que utilizan el término "trama", y las técnicas pueden ampliarse a otras normas, tales como normas elaboradas, normas en proceso de elaboración, o normas futuras, u otras técnicas de codificación de vídeo que utilizan el término "imagen".
[0015] Un codificador de vídeo típico particiona cada trama de la secuencia de vídeo original en regiones rectangulares contiguas llamadas "bloques" o "unidades de codificación". Estos bloques se codifican en el "intramodo" (modo I) o en el "intermodo" (modo P o modo B).
[0016] Para el modo P o B, el codificador busca primero un bloque similar al que se está codificando en una "trama de referencia", indicada con Fref . Las búsquedas se limitan en general a no ser más que un cierto desplazamiento espacial del bloque que se vaya a codificar. Cuando se identifica la mejor coincidencia, es decir, el bloque predictivo o "predicción", se expresa en forma de un vector de movimiento bidimensional (2D) (úx, Ay), donde Ax es el desplazamiento horizontal y Ay es el vertical de la posición de los píxeles en el bloque predictivo en la trama de referencia en relación con la posición de los píxeles en el bloque que se vaya a codificar.
[0017] Los vectores de movimiento junto con la trama de referencia se usan para construir el bloque predicho Fpred como sigue:
Figure imgf000004_0001
La ubicación de un píxel dentro de la trama se indica con (x, y).
[0018] Para los bloques codificados en el modo I, el bloque predicho se forma usando la predicción espacial a partir de bloques contiguos previamente codificados dentro de la misma trama. Tanto para el modo I como para el modo P o B, el error de predicción, es decir, la diferencia residual entre los valores de píxeles en el bloque que se está codificando y el bloque predicho, se representa como un conjunto de funciones de base ponderada de alguna transformada discreta, tal como una transformada de coseno discreta (DCT). Las transformada pueden realizarse basándose en diferentes tamaños de bloques, tales como 4x4, 8x8 o 16x16 y mayores. La forma del bloque de transformada no siempre es cuadrada. También se pueden usar bloques de transformada de forma rectangular, por ejemplo, con un tamaño de bloque de transformada de 16x4, 32x8, etc.
[0019] Las ponderaciones (es decir, los coeficientes de transformada) se cuantizan posteriormente. La cuantización introduce una pérdida de información y, como tal, los coeficientes cuantizados tienen una precisión menor que los coeficientes de transformada originales. Los coeficientes de transformada cuantizados y los vectores de movimiento son ejemplos de "elementos sintácticos". Estos elementos sintácticos, además de cierta información de control, forman una representación codificada de la secuencia de vídeo. Los elementos sintácticos también pueden codificarse por entropía, reduciendo además de este modo el número de bits necesarios para su representación. La codificación por entropía es una operación sin pérdidas destinada a minimizar el número de bits requerido para representar los símbolos transmitidos o almacenados (en nuestro caso, los elementos sintácticos) mediante la utilización de propiedades de su distribución (algunos símbolos aparecen con más frecuencia que otros).
[0020] La relación de compresión, es decir, la relación del número de bits usados para representar la secuencia original y la comprimida, puede controlarse ajustando uno o ambos del valor del parámetro de cuantización (QP) y de los valores en una matriz de cuantización, ambos de los cuales se pueden usar para cuantizar los valores del coeficiente de transformada. La relación de compresión también puede depender del procedimiento de codificación por entropía empleado. Las matrices de cuantización se diseñan típicamente de manera que los valores de cuantización en la matriz en general, pero no necesariamente sin excepción, aumentan tanto en la fila (de izquierda a derecha) como en las columnas (de arriba a abajo). Por ejemplo, como un bloque de coeficientes de transformada se extiende desde una posición DC en la esquina superior izquierda (0, 0) a coeficientes de frecuencia más altos hacia la esquina inferior derecha (n, n) del bloque de coeficientes de transformada, los valores correspondientes en la matriz de cuantización aumentan en general. La razón de un diseño de este tipo es que la función de sensibilidad al contraste (CSF) del sistema visual humano (HVS) disminuye a medida que aumenta la frecuencia, tanto en dirección horizontal como vertical.
[0021] En el decodificador, el bloque en la trama actual se obtiene construyendo primero su predicción de la misma manera que en el codificador, y añadiendo a la predicción el error de predicción comprimido. El error de predicción comprimido se encuentra al ponderar las funciones de base de transformada usando los coeficientes cuantizados. La diferencia entre la trama reconstruida y la trama original se llama error de reconstrucción.
[0022] La FIG. 1 es un diagrama de bloques que ilustra un sistema de codificación y decodificación de vídeo 10 de ejemplo que puede utilizar las técnicas descritas en esta divulgación. Como se muestra en la FIG. 1, el sistema 10 incluye un dispositivo de origen 12 que transmite el vídeo codificado a un dispositivo de destino 14 a través del canal de comunicación 16. Los datos de vídeo codificados también se pueden almacenar en un medio de almacenamiento 34 o en un servidor de archivos 36, y se puede acceder a los mismos mediante el dispositivo de destino 14, según se desee. Cuando se almacene en un medio de almacenamiento o en un servidor de archivos, el codificador de vídeo 20 puede proporcionar datos de vídeo codificados a otro dispositivo, tal como una interfaz de red, una grabadora de discos compactos (CD), discos Blu-ray o discos de vídeo digital (DVD) u otros dispositivos de instalación de estampado, para almacenar los datos de vídeo codificados en el medio de almacenamiento. Asimismo, un dispositivo separado del decodificador de vídeo 30, tal como una interfaz de red, un lector de CD o DVD, o similares, puede recuperar los datos de vídeo codificados desde un medio de almacenamiento y proporcionar los datos recuperados al decodificador de vídeo 30.
[0023] El dispositivo de origen 12 y el dispositivo de destino 14 pueden comprender cualquiera de entre una amplia gama de dispositivos, incluyendo ordenadores de escritorio, ordenadores plegables (es decir, portátiles), ordenadores de tablet, decodificadores, dispositivos telefónicos tales como los denominados teléfonos inteligentes, televisores, cámaras, dispositivos de visualización, reproductores de medios digitales, consolas de videojuegos o similares. En muchos casos, dichos dispositivos pueden estar equipados para la comunicación inalámbrica. Por lo tanto, el canal de comunicación 16 puede comprender un canal inalámbrico, un canal alámbrico, o una combinación de canales inalámbricos y alámbricos, adecuados para la transmisión de datos de vídeo codificado. De manera similar, puede accederse al servidor de archivos 36 mediante el dispositivo de destino 14 a través de cualquier conexión de datos estándar, incluyendo una conexión a Internet. Esto puede incluir un canal inalámbrico (por ejemplo, una conexión WiFi), una conexión alámbrica (por ejemplo, DSL, módem de cable, etc.) o una combinación de ambos que sea adecuada para acceder a datos de vídeo codificados almacenados en un servidor de archivos.
[0024] Las técnicas para la codificación de coeficientes de transformada, de acuerdo con los ejemplos de esta divulgación, pueden aplicarse a la codificación de vídeo en soporte de cualquiera de entre una diversidad de aplicaciones multimedia, tales como difusiones de televisión por aire, transmisiones de televisión por cable, transmisiones de televisión por satélite, transmisiones de vídeo por flujo, por ejemplo, mediante Internet, codificación de vídeo digital para su almacenamiento en un medio de almacenamiento de datos, decodificación de vídeo digital almacenado en un medio de almacenamiento de datos, u otras aplicaciones. En algunos ejemplos, el sistema 10 se puede configurar para soportar la transmisión de vídeo unidireccional o bidireccional para soportar aplicaciones tales como la transmisión de vídeo en continuo, la reproducción de vídeo, la radiodifusión de vídeo y/o la videotelefonía.
[0025] En el ejemplo de la FIG. 1, el dispositivo fuente 12 incluye la fuente de vídeo 18, el codificador de vídeo 20, el modulador/demodulador 22 y el transmisor 24. En el dispositivo de origen 12, la fuente de vídeo 18 puede incluir una fuente tal como un dispositivo de captura de vídeo, tal como una videocámara, un archivo de vídeo que contenga vídeo previamente capturado, una interfaz de alimentación de vídeo para recibir vídeo desde un proveedor de contenido de vídeo y/o un sistema de gráficos de ordenador para generar datos de gráficos de ordenador como el vídeo de origen, o una combinación de dichas fuentes. En un ejemplo, si la fuente de vídeo 18 es una videocámara, el dispositivo de origen 12 y el dispositivo de destino 14 pueden formar los denominados teléfonos con cámara o videoteléfonos. Sin embargo, las técnicas descritas en esta divulgación pueden aplicarse a la codificación de vídeo en general y pueden aplicarse a aplicaciones inalámbricas y/o alámbricas o a aplicaciones en las que los datos de vídeo codificados se almacenen en un disco local.
[0026] El codificador de vídeo 20 puede codificar el vídeo captado, capturado previamente o generado por ordenador. La información de vídeo codificada puede modularse mediante un módem 22 de acuerdo con una norma de comunicación, tal como un protocolo de comunicación inalámbrica, y transmitirse al dispositivo de destino 14 a través del transmisor 24. El módem 22 puede incluir diversos mezcladores, filtros, amplificadores u otros componentes diseñados para la modulación de señales. El transmisor 24 puede incluir circuitos diseñados para transmitir datos, incluidos amplificadores, filtros y una o más antenas.
[0027] El vídeo capturado, capturado previamente o generado por ordenador que se codifica mediante el codificador de vídeo 20 también puede almacenarse en un medio de almacenamiento de 34 o en un servidor de archivos 36 para un consumo posterior. El medio de almacenamiento 34 puede incluir discos Blu-ray, DVD, CD-ROM, memoria flash, o cualquier otro medio de almacenamiento digital adecuado para almacenar el vídeo codificado. Entonces, se puede acceder al vídeo codificado almacenado en el medio de almacenamiento 34 mediante el dispositivo de destino 14 para la decodificación y la reproducción. Aunque no se muestra en la FIG. 1, en algunos ejemplos, el medio de almacenamiento 34 y/o el servidor de archivos 36 pueden almacenar la salida del transmisor 24.
[0028] El servidor de archivos 36 puede ser cualquier tipo de servidor capaz de almacenar un vídeo codificado y transmitir ese vídeo codificado al dispositivo de destino 14. Los ejemplos de servidores de archivos incluyen un servidor web (por ejemplo, para una página web), un servidor FTP, dispositivos de almacenamiento conectado a la red (NAS), una unidad de disco local o cualquier otro tipo de dispositivo capaz de almacenar datos de vídeo codificados y transmitirlos a un dispositivo de destino. La transmisión de datos de vídeo codificados desde el servidor de archivos 36 puede ser una transmisión de difusión, una transmisión de descarga o una combinación de ambas. Puede accederse al servidor de archivos 36 mediante el dispositivo de destino 14 a través de cualquier conexión de datos estándar, incluyendo una conexión a Internet. Esto puede incluir un canal inalámbrico (por ejemplo, una conexión WiFi), una conexión alámbrica (por ejemplo, DSL, módem por cable, Ethernet, USB, etc.), o una combinación de ambos que sea adecuada para acceder a datos de vídeo codificados almacenados en un servidor de archivos.
[0029] El dispositivo de destino 14, en el ejemplo de la FIG. 1, incluye el receptor 26, el módem 28, el decodificador de vídeo 30 y el dispositivo de visualización 32. El receptor 26 del dispositivo de destino 14 recibe información a través del canal 16, y el módem 28 demodula la información para producir un flujo de bits demodulado para el decodificador de vídeo 30. La información comunicada por el canal 16 puede incluir una variedad de información sintáctica generada por el codificador de vídeo 20 para su uso por el decodificador de vídeo 30 en la decodificación de los datos de vídeo. Dicha sintaxis también puede incluirse con los datos de vídeo codificados, almacenados en los medios de almacenamiento 34 o en el servidor de archivos 36. Cada uno del codificador de vídeo 20 y del decodificador de vídeo 30 puede formar parte de un respectivo codificador-decodificador (CÓDEC) que sea capaz de codificar o decodificar datos de vídeo.
[0030] El dispositivo de visualización 32 puede estar integrado en, o ser externo a, el dispositivo de destino 14. En algunos ejemplos, el dispositivo de destino 14 puede incluir un dispositivo de visualización integrado y también estar configurado para interconectarse con un dispositivo de visualización externo. En otros ejemplos, el dispositivo de destino 14 puede ser un dispositivo de visualización. En general, el dispositivo de visualización 32 visualiza los datos de vídeo decodificados ante un usuario y puede comprender cualquiera de entre una variedad de dispositivos de visualización, tales como una pantalla de cristal líquido (LCD), una pantalla de plasma, una pantalla de diodos orgánicos emisores de luz (OLED) u otro tipo de dispositivo de visualización.
[0031] En el ejemplo de la FIG. 1, el canal de comunicación 16 puede comprender cualquier medio de comunicación inalámbrica o alámbrica, tal como un espectro de radiofrecuencia (RF) o una o más líneas de transmisión físicas, o cualquier combinación de medios inalámbricos y por cable. 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 extensa o una red global tal como Internet. El canal de comunicación 16 representa en general cualquier medio de comunicación adecuado, o un conjunto de medios de comunicación diferentes, para transmitir datos de vídeo desde el dispositivo de origen 12 hasta el dispositivo de destino 14, incluyendo cualquier combinación adecuada de medios alámbricos o inalámbricos. El canal de comunicación 16 puede incluir enrutadores, conmutadores, estaciones base o cualquier otro equipo que pueda ser útil para facilitar la comunicación desde el dispositivo de origen 12 hasta el dispositivo de destino 14.
[0032] El codificador de vídeo 20 y el decodificador de vídeo 30 pueden funcionar de acuerdo con una norma de compresión de vídeo, tal como la norma de codificación de vídeo de alta eficiencia (HEVC), actualmente en proceso de elaboración, y pueden conformarse al modelo de prueba de HEVC (HM). De manera alternativa, el codificador de vídeo 20 y el decodificador de vídeo 30 pueden funcionar de acuerdo con otras normas de propiedad o industriales, tales como la norma ITU-T H.264, de manera alternativa llamada MPEG-4, Parte 10, Codificación Avanzada de Vídeo (AVC), o ampliaciones de dichas normas. Sin embargo, las técnicas de esta divulgación no están limitadas a ninguna norma de codificación particular. Otros ejemplos de normas de compresión de vídeo incluyen MPEG-2 e ITU-T H.263.
[0033] Aunque no se muestra en la FIG. 1, en algunos aspectos, tanto el codificador de vídeo 20 como el decodificador de vídeo 30 pueden estar integrados en un codificador y en un decodificador de audio, y pueden incluir unidades MUX-DEMUX adecuadas, u otro tipo de hardware y software, para ocuparse de la codificación tanto de audio como de vídeo en un flujo de datos común o en flujos de datos separados. Si procede, en algunos ejemplos, las unidades MUX-DEMUX pueden conformarse al protocolo de multiplexador ITU H.223 o a otros protocolos, tales como el protocolo de datagramas de usuario (UDP).
[0034] El codificador de vídeo 20 y el decodificador de vídeo 30 pueden implementarse cada uno como cualquiera de entre una variedad de circuitos codificadores adecuados, tales 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 por campo (FPGA), lógica discreta, software, hardware, firmware o cualquier combinación de estos. Cuando las técnicas se implementan parcialmente en software, un dispositivo puede almacenar instrucciones para el software en un medio adecuado no transitorio legible por ordenador, y ejecutar las instrucciones en hardware usando uno o más procesadores para realizar las técnicas de esta divulgación. Cada uno de entre el codificador de vídeo 20 y el decodificador de vídeo 30 se puede incluir en uno o más codificadores o decodificadores, cualquiera de los cuales se puede integrar como parte de un codificador/decodificador (CÓDEC) combinado en un dispositivo respectivo.
[0035] Para la codificación de vídeo de acuerdo con la nueva norma de HEVC actualmente en fase de elaboración por el Equipo Cooperativo Conjunto sobre Codificación de Video (JCT-VC), como ejemplo, una trama de vídeo se puede particionar en unidades de codificación. Una unidad de codificación (CU) se refiere en general a una región de imagen que sirve de unidad básica a la que se aplican diversas herramientas de codificación para la compresión de vídeo. Una CU tiene usualmente un componente de luminancia, indicado como Y, y dos componentes de crominancia, indicados como U y V. En función del formato de muestreo de vídeo, el tamaño de los componentes U y V, en términos del número de muestras, puede ser el mismo o diferente al tamaño del componente Y. Una CU es típicamente cuadrada, y puede considerarse similar a un llamado macrobloque, por ejemplo, en virtud de otras normas de codificación de vídeo, tales como la ITU-T H.264. La codificación de acuerdo con algunos de los aspectos propuestos actualmente de la norma HEVC en proceso de elaboración se describirá en esta solicitud con fines ilustrativos. Sin embargo, las técnicas descritas en esta divulgación pueden ser útiles para otros procesos de codificación de vídeo, tales como los que se definen de acuerdo con la H.264 u otros procesos de codificación de vídeo estándar o patentados.
[0036] Los esfuerzos de normalización de la HEVC se basan en un modelo de un dispositivo de codificación de vídeo denominado Modelo de Prueba de HEVC (HM). El HM supone varias capacidades de los dispositivos de codificación de vídeo respecto a los dispositivos de acuerdo con, por ejemplo, la norma ITU-T H.264/AVC. Por ejemplo, mientras que la norma H.264 proporciona nueve modos de codificación de intrapredicción, el HM proporciona hasta treinta y cinco modos de codificación de intrapredicción. Un reciente Borrador de Trabajo (WD) más reciente de HEVC, y denominado en adelante WD7 HEVC, está disponible en http://phenix.intevry.fr/jct/doc_end_user/documents/9_Geneva/wg11/JCTVC-I1003-v6.zip a partir del 30 de octubre de 2012.
[0037] En general, el modelo de trabajo del HM describe que una trama o imagen de vídeo puede dividirse en una secuencia de bloques de árbol o unidades de codificación de máximo tamaño (LCU), que incluyen muestras tanto de luma como de croma. Un bloque de árbol tiene un fin similar al de un macrobloque de la norma H.264. Un segmento incluye un número de bloques de árbol consecutivos en orden de codificación. Una trama o imagen de vídeo puede particionarse en uno o más segmentos. Cada bloque de árbol puede dividirse en unidades de codificación (CU) de acuerdo con un árbol cuaternario. Por ejemplo, un bloque de árbol, como un nodo raíz del árbol cuaternario, puede dividirse en cuatro nodos hijo, y cada nodo hijo puede, a su vez, ser un nodo padre y dividirse en otros cuatro nodos hijo. Un nodo hijo final no dividido, como un nodo hoja del árbol cuaternario, comprende un nodo de codificación, es decir, un bloque de vídeo codificado. Los datos sintácticos asociados a un flujo de bits codificado pueden definir un número máximo de veces que puede dividirse un bloque de árbol, y también pueden definir un tamaño mínimo de los nodos de codificación.
[0038] Una CU incluye un nodo de codificación y unidades de predicción (PU) y unidades de transformada (TU) asociadas al nodo de codificación. Un tamaño de la CU corresponde a un tamaño del nodo de codificación y debe ser de forma cuadrada. El tamaño de la CU puede variar desde 8x8 píxeles hasta el tamaño del bloque de árbol, con un máximo de 64x64 píxeles o más. Cada CU puede contener una o más PU y una o más TU. Los datos sintácticos asociados con una CU pueden describir, por ejemplo, la partición de la CU en una o más PU. Los modos de partición pueden diferir dependiendo de si la CU está codificada en modo de salto o directo, codificada en modo de intrapredicción o codificada en modo de interpredicción. Las PU pueden particionarse para tener forma no cuadrada. Los datos sintácticos asociados a una CU también pueden describir, por ejemplo, la partición de la CU en una o más TU de acuerdo con un árbol cuaternario. Una TU puede tener forma cuadrada o no cuadrada.
[0039] La norma HEVC admite transformaciones de acuerdo con las TU, que pueden ser diferentes para diferentes CU. El tamaño de las TU se basa típicamente en el tamaño de las PU dentro de una CU definida dada para una LCU particionada, aunque puede que no sea siempre así. Las TU son típicamente del mismo tamaño o de un tamaño más pequeño que las PU. En algunos ejemplos, las muestras residuales correspondientes a una CU pueden subdividirse en unidades más pequeñas mediante una estructura de árbol cuaternario conocida como «árbol cuaternario residual» (RQT). Los nodos hoja del RQT pueden denominarse unidades de transformada (TU). Los valores de diferencia de píxeles asociados a las TU pueden transformarse para generar coeficientes de transformada, que pueden cuantizarse.
[0040] En general, una PU incluye datos relacionados con el proceso de predicción. Por ejemplo, cuando la PU se codifica en el intramodo, la PU puede incluir datos que describan un modo de intrapredicción para la PU. En otro ejemplo, cuando la PU se codifica en el intermodo, la PU puede incluir datos que definan un vector de movimiento para la PU. Los datos que definen el vector de movimiento para una PU pueden describir, por ejemplo, un componente horizontal del vector de movimiento, un componente vertical del vector de movimiento, una resolución para el vector de movimiento (por ejemplo, precisión de un cuarto de píxel o precisión de un octavo de píxel), una imagen de referencia a la que apunte el vector de movimiento y/o una lista de imágenes de referencia (por ejemplo, Lista 0, Lista 1 o Lista C) para el vector de movimiento.
[0041] En general, se usa una TU para los procesos de transformada y cuantización. Una CU determinada que tenga una o más PU también puede incluir una o más unidades de transformada (TU). Tras la predicción, el codificador de vídeo 20 puede calcular valores residuales correspondientes a la PU. Los valores residuales comprenden valores de diferencia de píxeles que se pueden transformar en coeficientes de transformada, cuantizar y escanear mediante las TU para producir coeficientes de transformada en serie para la codificación por entropía. Esta divulgación usa típicamente el término «bloque de vídeo» para referirse a un nodo de codificación de una CU. En algunos casos específicos, la presente divulgación también puede usar el término «bloque de vídeo» para referirse a un bloque de árbol, es decir, una LCU o una CU, que incluya un nodo de codificación y unas PU y TU.
[0042] Una secuencia de vídeo incluye típicamente una serie de tramas o imágenes de vídeo. Un grupo de imágenes (GOP) comprende en general una serie de una o más de las imágenes de vídeo. Un GOP puede incluir datos sintácticos en una cabecera del GOP, en una cabecera de una o más de las imágenes, o en otras ubicaciones, que describan un número de imágenes incluidas en el GOP. Cada segmento de una imagen puede incluir datos sintácticos de segmento que describan un modo de codificación para el segmento respectivo. El codificador de vídeo 20 funciona típicamente sobre bloques de vídeo dentro de segmentos de vídeo individuales con el fin de codificar los datos de vídeo. Un bloque de vídeo puede corresponder a un nodo de codificación en una CU. Los bloques de vídeo pueden tener tamaños fijos o variables y pueden diferir de tamaño de acuerdo con una norma de codificación especificada.
[0043] Como ejemplo, el HM soporta la predicción en diversos tamaños de PU. Al suponer que el tamaño de una CU particular es de 2Nx2N, el HM soporta la intrapredicción en tamaños de PU de 2Nx2N o NxN y la interpredicción en tamaños de PU simétricas de 2Nx2N, 2NxN, Nx2N o NxN. El HM también soporta la partición asimétrica para la interpredicción en tamaños de PU de 2NxnU, 2NxnD, nLx2N y nRx2N. En la partición asimétrica, una dirección de una CU no está particionada, mientras que la otra dirección está particionada en un 25 % y en un 75 %. La porción de la CU correspondiente a la partición del 25 % está indicada por una «n» seguida por una indicación de «arriba», «abajo», «izquierda» o «derecha». Por tanto, por ejemplo, «2NxnU» se refiere a una CU 2Nx2N que está particionada horizontalmente con una PU 2Nx0,5N encima y una PU 2Nx1,5N debajo.
[0044] En esta divulgación, «NxN» y «N por N» pueden usarse indistintamente para referirse a las dimensiones de píxeles de un bloque de vídeo en términos de dimensiones verticales y horizontales, por ejemplo, 16x16 píxeles o 16 por 16 píxeles. En general, un bloque 16x16 tendrá 16 píxeles en una dirección vertical (y = 16) y 16 píxeles en una dirección horizontal (x = 16). Asimismo, un bloque NxN tiene en general N píxeles en una dirección vertical y N píxeles en una dirección horizontal, donde N representa un valor entero no negativo. Los píxeles de un bloque se pueden disponer en filas y columnas. Además, no es necesario que los bloques tengan necesariamente el mismo número de píxeles en la dirección horizontal y en la dirección vertical. Por ejemplo, los bloques pueden comprender NxM píxeles, donde M no es necesariamente igual a N.
[0045] Tras la codificación intrapredictiva o interpredictiva mediante el uso de las PU de una CU, el codificador de vídeo 20 puede calcular datos residuales para las TU de la CU. Las PU pueden comprender datos de píxeles en el dominio espacial (también denominado dominio de píxeles) y las TU pueden comprender coeficientes en el dominio de la transformada tras la aplicación de una transformada, por ejemplo, una transformada discreta de coseno (DCT), una transformada de enteros, una transformada de ondículas o una transformada conceptualmente similar a los datos de vídeo residuales. Los datos residuales pueden corresponder a diferencias de píxeles entre los píxeles de la imagen no codificada y los valores de predicción correspondientes a las PU. El codificador de vídeo 20 puede formar las TU incluyendo los datos residuales para la CU y entonces transformar las TU para producir coeficientes de transformada para la CU.
[0046] Tras cualquier transformada para producir coeficientes de transformada, el codificador de vídeo 20 puede realizar la cuantización de los coeficientes de transformada. La cuantización se refiere en general a un proceso en el que los coeficientes de transformada se cuantizan para reducir posiblemente la cantidad de datos usados para representar los coeficientes, proporcionando una compresión adicional. El proceso de cuantización puede reducir la profundidad de bits asociada con algunos o con todos los coeficientes. Por ejemplo, un valor de n bits puede redondearse hacia abajo hasta un valor de m bits durante la cuantización, donde n es mayor que m.
[0047] En algunos ejemplos, el codificador de vídeo 20 puede utilizar un orden de escaneo predefinido para escanear los coeficientes de transformada cuantizados para producir un vector en serie que se pueda codificar por entropía. En otros ejemplos, el codificador de vídeo 20 puede realizar un escaneo adaptativo. Después de escanear los coeficientes de transformada cuantizados para formar un vector unidimensional, el codificador de vídeo 20 puede codificar por entropía el vector unidimensional, por ejemplo, de acuerdo con la codificación de longitud variable adaptativa al contexto (CAVLC), la codificación aritmética binaria adaptativa al contexto (CABAC), la codificación aritmética binaria adaptativa al contexto basada en la sintaxis (SBAC), la codificación por entropía por partición de intervalo de probabilidad (PIPE) u otra metodología de codificación por entropía. El codificador de vídeo 20 también puede codificar por entropía los elementos sintácticos asociados a los datos de vídeo codificados, para su uso por el decodificador de vídeo 30 en la decodificación de los datos de vídeo.
[0048] Para realizar la CABAC, el codificador de vídeo 20 puede asignar un contexto dentro de un modelo de contexto a un símbolo que se vaya a transmitir. El contexto se puede referir, por ejemplo, a si los valores contiguos del símbolo son distintos de cero o no. Para realizar la CAVLC, el codificador de vídeo 20 puede seleccionar un código de longitud variable para un símbolo que se vaya a transmitir. Las palabras de código en la VLC se pueden construir de manera que los códigos relativamente más cortos correspondan a símbolos más probables, mientras que los códigos más largos correspondan a símbolos menos probables. De esta forma, el uso de la VLC puede lograr un ahorro de bits con respecto, por ejemplo, al uso de palabras de código de igual longitud para cada símbolo que se vaya a transmitir. La determinación de la probabilidad se puede basar en un contexto asignado al símbolo.
[0049] El codificador de vídeo 20 puede implementar cualquiera o todas las técnicas de esta divulgación para submuestrear y señalar matrices de cuantización en un proceso de codificación de vídeo. Asimismo, el decodificador de vídeo 30 puede implementar cualquiera o todas estas técnicas para sobremuestrear matrices de cuantización en un proceso de codificación de vídeo. Un codificador de vídeo, como se describe en esta divulgación, puede referirse a un codificador de vídeo o a un decodificador de vídeo. De manera similar, una unidad de codificación de vídeo puede referirse a un codificador de vídeo o a un decodificador de vídeo. Asimismo, la codificación de vídeo puede referirse a la codificación de vídeo o a la decodificación de vídeo.
[0050] En un ejemplo de la divulgación, el codificador de vídeo 20 puede configurarse para generar una matriz de cuantización que incluya una pluralidad de valores, submuestrear un primer conjunto de valores en la matriz de cuantización mediante un primer factor de submuestreo para generar un primer conjunto de valores de submuestreo, submuestrear un segundo conjunto de valores en la matriz de cuantización mediante un segundo factor de submuestreo para generar un segundo conjunto de valores submuestreados, y generar un flujo de bits codificado que incluya el primer conjunto de valores submuestreados y el segundo conjunto de valores submuestreados. En algunos ejemplos, el factor de submuestreo puede ser uno, en cuyo caso, los valores se codifiquen directamente sin submuestrear.
[0051] En otro ejemplo de la divulgación, el decodificador de vídeo 30 puede configurarse para recibir una matriz de cuantización codificada con valores submuestreados en un flujo de bits codificado, sobremuestrear un primer conjunto de valores submuestreados en la matriz de cuantización mediante un primer factor de sobremuestreo para generar un primer conjunto de valores, sobremuestrear un segundo conjunto de valores submuestreados en la matriz de cuantización mediante un segundo factor de sobremuestreo para generar un segundo conjunto de valores, y cuantizar de manera inversa un bloque de coeficientes de transformada con los primer y segundo conjunto de valores. En algunos ejemplos, el factor de sobremuestreo puede ser uno, en cuyo caso, los valores se codifiquen directamente sin sobremuestrear.
[0052] La FIG. 2 es un diagrama de bloques que ilustra un codificador de vídeo 20 de ejemplo que puede implementar las técnicas descritas en esta divulgación. El codificador de vídeo 20 puede realizar la intracodificación y la intercodificación de bloques de vídeo dentro de segmentos 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 o imagen de vídeo dada. La intercodificación se basa en la predicción temporal para reducir o eliminar la redundancia temporal en el vídeo dentro de tramas o imágenes adyacentes de una secuencia de vídeo. El intramodo (modo I) puede referirse a cualquiera de varios modos de compresión espacial. Los intermodos, tales como la predicción unidireccional (modo P) o la predicción bidireccional (modo B), pueden referirse a cualquiera de varios modos de compresión temporal.
[0053] En el ejemplo de la FIG. 2, el codificador de vídeo 20 incluye una unidad de partición 35, una unidad de procesamiento de predicción 41, una memoria de imágenes de referencia 64, un sumador 50, una unidad de procesamiento de transformada 52, una unidad de cuantización 54 y una unidad de codificación por entropía 56. La unidad de procesamiento de predicción 41 incluye la unidad de estimación de movimiento 42, la unidad de compensación de movimiento 44 y la unidad de procesamiento de intrapredicción 46. Para la reconstrucción de bloques de vídeo, el codificador de vídeo 20 incluye también una unidad de cuantización inversa 58, una unidad de procesamiento de transformada inversa 60 y un sumador 62. También se puede incluir un filtro de desbloqueo (no mostrado en la FIG. 2) para filtrar límites de bloques y eliminar distorsiones de bloqueo del vídeo reconstruido. Si se desea, el filtro de desbloqueo filtraría típicamente la salida del sumador 62. También se pueden usar filtros de bucle adicionales (en el bucle o tras el bucle), además del filtro de desbloqueo.
[0054] Como se muestra en la FIG. 2, el codificador de vídeo 20 recibe datos de vídeo, y la unidad de partición 35 particiona los datos en bloques de vídeo. Esta partición también puede incluir la partición en segmentos, mosaicos u otras unidades mayores, así como la partición de bloques de vídeo, por ejemplo, de acuerdo con una estructura de árbol cuaternario de LCU y CU. El codificador de vídeo 20 ilustra en general los componentes que codifican bloques de vídeo dentro de un segmento de vídeo que se vaya a codificar. El segmento se puede dividir en múltiples bloques de vídeo (y, posiblemente, en conjuntos de bloques de vídeo denominados mosaicos). La unidad de procesamiento de predicción 41 puede seleccionar uno de entre una pluralidad de posibles modos de codificación, tal como uno de entre una pluralidad de modos de intracodificación, o uno de entre una pluralidad de modos de intercodificación, para el bloque de vídeo actual basado en resultados de errores (por ejemplo, la velocidad de codificación y el nivel de distorsión). La unidad de procesamiento de predicción 41 puede proporcionar el bloque intra o intercodificado resultante al sumador 50 para generar datos de bloques residuales y al sumador 62 para reconstruir el bloque codificado para su uso como una imagen de referencia.
[0055] La unidad de procesamiento de intrapredicción 46, dentro de la unidad de procesamiento de predicción 41, puede realizar la codificación mediante la intrapredicción del bloque de vídeo actual con respecto a uno o más bloques contiguos en la misma trama o segmento que el bloque que vaya a codificarse, para proporcionar la compresión espacial. La unidad de estimación de movimiento 42 y la unidad de compensación de movimiento 44 dentro de la unidad de procesamiento de predicción 41 realizan la codificación interpredictiva del bloque de vídeo actual relativo a uno o más bloques predictivos de una o más imágenes de referencia para proporcionar la compresión temporal.
[0056] La unidad de estimación de movimiento 42 puede estar configurada para determinar el modo de interpredicción para un segmento de vídeo de acuerdo con un patrón predeterminado para una secuencia de vídeo. El patrón predeterminado puede designar segmentos de vídeo de la secuencia como segmentos P, segmentos B o segmentos GPB. La unidad de estimación de movimiento 42 y la unidad de compensación de movimiento 44 pueden estar sumamente integradas, pero se ilustran por separado con fines conceptuales. La estimación de movimiento, realizada por la unidad de estimación de movimiento 42, es el proceso de generación de vectores de movimiento, que estiman el movimiento de los bloques de vídeo. Un vector de movimiento, por ejemplo, puede indicar el desplazamiento de una PU de un bloque de vídeo de una trama o imagen de vídeo actual relativa a un bloque predictivo de una imagen de referencia.
[0057] Un bloque predictivo es un bloque que se encuentra que coincide estrechamente con la PU del bloque de vídeo que se vaya a codificar en términos de diferencia de píxel, que puede determinarse mediante una suma de una diferencia absoluta (SAD), una suma de diferencia al cuadrado (SSD) u otras mediciones de diferencia. En algunos ejemplos, el codificador de vídeo 20 puede calcular los valores para las posiciones de píxeles de subenteros de imágenes de referencia almacenadas en la memoria de imágenes de referencia 64. Por ejemplo, el codificador de vídeo 20 puede interpolar valores de posiciones de un cuarto de píxel, posiciones de un octavo de píxel u otras posiciones de píxeles de subenteros de la imagen de referencia. Por lo tanto, la unidad de estimación de movimiento 42 puede realizar una búsqueda de movimiento relativa a las posiciones de píxeles completas y a las posiciones de píxeles fraccionarias y emitir un vector de movimiento con una precisión de píxel fraccionaria.
[0058] La unidad de estimación de movimiento 42 calcula un vector de movimiento para una PU de un bloque de vídeo en un segmento intracodificado comparando la posición de la PU con la posición de un bloque predictivo de una imagen de referencia. La imagen de referencia puede seleccionarse a partir de una primera lista de imágenes de referencia (Lista 0) o de una segunda lista de imágenes de referencia (Lista 1), cada una de las cuales identifica una o más imágenes de referencia almacenadas en una memoria de imágenes de referencia 64. La unidad de estimación de movimiento 42 envía el vector de movimiento calculado a la unidad de codificación por entropía 56 y a la unidad de compensación de movimiento 44.
[0059] La compensación de movimiento, realizada por la unidad de compensación de movimiento 44, puede implicar buscar o generar el bloque predictivo basándose en el vector de movimiento determinado mediante la estimación de movimiento, realizando posiblemente interpolaciones hasta una precisión de subpíxeles. Tras recibir el vector de movimiento para la PU del bloque de vídeo actual, la unidad de compensación de movimiento 44 puede ubicar el bloque predictivo al que apunta el vector de movimiento en una de las listas de imágenes de referencia. El codificador de vídeo 20 forma un bloque de vídeo residual restando los valores de píxeles del bloque predictivo a los valores de píxeles del bloque de vídeo actual que se esté codificando, formando valores de diferencia de píxeles. Los valores de diferencia de píxel forman datos residuales para el bloque, y pueden incluir componentes de diferencia tanto de luma como de croma. El sumador 50 representa el componente o los componentes que realizan esta operación de resta. La unidad de compensación de movimiento 44 también puede generar elementos sintácticos asociados con los bloques de vídeo y con el segmento de vídeo para su uso por el decodificador de vídeo 30 en la decodificación de los bloques de vídeo del segmento de vídeo.
[0060] La unidad de intrapredicción 46 puede intrapredecir un bloque actual, como alternativa a la interpredicción realizada por la unidad de estimación de movimiento 42 y la unidad de compensación de movimiento 44, como se ha descrito anteriormente. En particular, la unidad de procesamiento de intrapredicción 46 puede determinar un modo de intrapredicción que se vaya a usar para codificar un bloque actual. En algunos ejemplos, la unidad de procesamiento de intrapredicción 46 puede codificar un bloque actual usando diversos modos de intrapredicción, por ejemplo, durante pases de codificación separados, y la unidad de procesamiento de intrapredicción 46 (o la unidad de selección de modo 40, en algunos ejemplos) puede seleccionar un modo adecuado de intrapredicción para su uso a partir de los modos probados. Por ejemplo, la unidad de procesamiento de intrapredicción 46 puede calcular valores de velocidaddistorsión usando un análisis de velocidad-distorsión para los diversos modos de intrapredicción probados, y seleccionar el modo de intrapredicción que tenga las mejores características de velocidad-distorsión entre los modos probados. El análisis de velocidad-distorsión determina en general una cantidad de distorsión (o error) entre un bloque codificado y un bloque original no codificado que se codificó para generar el bloque codificado, así como una velocidad de bits (es decir, un número de bits) usada para generar el bloque codificado. La unidad de procesamiento de intrapredicción 46 puede calcular relaciones a partir de las distorsiones y velocidades para los diversos bloques codificados, para determinar qué modo de intrapredicción presenta el mejor valor de distorsión de velocidad para el bloque.
[0061] En cualquier caso, después de seleccionar un modo de intrapredicción para un bloque, la unidad de procesamiento de intrapredicción 46 puede proporcionar información indicativa del modo de intrapredicción seleccionado para el bloque a la unidad de codificación por entropía 56. La unidad de codificación por entropía 56 puede codificar la información que indique el modo de intrapredicción seleccionado de acuerdo con las técnicas de esta divulgación. El codificador de vídeo 20 puede incluir datos de configuración en el flujo de bits transmitido, que pueden incluir una pluralidad de tablas de índices de modos de intrapredicción y una pluralidad de tablas de índices de modos de intrapredicción modificadas (también denominadas tablas de mapeo de palabras de código), definiciones de contextos de codificación para diversos bloques e indicaciones de un modo de intrapredicción más probable, una tabla de índices de modos de intrapredicción y una tabla de índices de modos de intrapredicción modificadas para su uso para cada uno de los contextos.
[0062] Después de que la unidad de procesamiento de predicción 41 genera el bloque predictivo para el bloque de vídeo actual, ya sea mediante la interpredicción o la intrapredicción, el codificador de vídeo 20 forma un bloque de vídeo residual restando el bloque predictivo del bloque de vídeo actual. Los datos de vídeo residuales en el bloque residual pueden incluirse en una o más TU y aplicarse a la unidad de procesamiento de transformada 52. La unidad de procesamiento de transformada 52 transforma los datos de vídeo residuales en coeficientes de transformada residuales usando una transformada, tal como una transformada de coseno discreta (DCT) o una transformada conceptualmente similar. La unidad de procesamiento de transformada 52 puede convertir los datos de vídeo residuales de un dominio de píxeles en un dominio de transformada, tal como un dominio de frecuencia.
[0063] La unidad de procesamiento de transformada 52 puede enviar los coeficientes de transformada resultantes a la unidad de cuantización 54. La unidad de cuantización 54 cuantiza los coeficientes de transformada para reducir más la velocidad de bits. El proceso de cuantización puede reducir la profundidad de bits asociada con algunos o con todos los coeficientes. El grado de cuantización puede modificarse ajustando un parámetro de cuantización o modificando valores en una matriz de cuantización. En algunos ejemplos, la unidad de cuantización 54 puede realizar entonces un escaneo de la matriz que incluya los coeficientes de transformada cuantizados. De manera alternativa, la unidad de codificación por entropía 56 puede realizar el escaneo.
[0064] En algunos casos, la unidad de cuantización 54 puede realizar una operación de escalado posterior a la transformada, además de la operación de cuantización. La operación de escalado posterior a la transformada se puede usar junto con una operación de transformada de núcleo realizada por la unidad de transformada 52 para realizar de manera efectiva una operación de transformada de espacio-frecuencia completa o una aproximación de la misma con respecto a un bloque de datos residuales. En algunos ejemplos, la operación de escalado posterior a la transformada se puede integrar con la operación de cuantización de manera que la operación posterior a la transformada y la operación de cuantización se realicen como parte del mismo conjunto de operaciones con respecto a uno o más coeficientes de transformada que vayan a cuantizarse.
[0065] En algunos ejemplos, la unidad de cuantización 54 puede cuantizar los coeficientes de transformada basándose una matriz de cuantización. La matriz de cuantización puede incluir una pluralidad de valores, cada uno de los cuales corresponde a uno respectivo de una pluralidad de coeficientes de transformada en un bloque de coeficientes de transformada que se vaya a cuantizar. Los valores en la matriz de cuantización se pueden usar para determinar una cantidad de cuantización que se vaya a aplicar por la unidad de cuantización 54 a los coeficientes de transformada correspondientes en el bloque de coeficientes de transformada. Por ejemplo, para cada uno de los coeficientes de transformada que se vaya a cuantizar, la unidad de cuantización 54 puede cuantizar el coeficiente de transformada respectivo de acuerdo con una cantidad de cuantización que se determine al menos en parte por uno respectivo de los valores en la matriz de cuantización que corresponda al coeficiente de transformada que se vaya a cuantizar.
[0066] En ejemplos adicionales, la unidad de cuantización 54 puede cuantizar los coeficientes de transformada basándose en un parámetro de cuantización y en una matriz de cuantización. El parámetro de cuantización puede ser un parámetro de nivel de bloque (es decir, un parámetro asignado a todo el bloque de coeficientes de transformada) que se puede usar para determinar una cantidad de cuantización que se aplicará a un bloque de coeficientes de transformada. En dichos ejemplos, los valores en la matriz de cuantización y el parámetro de cuantización se pueden usar juntos para determinar una cantidad de cuantización que se aplicará a los coeficientes de transformada correspondientes en el bloque de coeficientes de transformada. En otras palabras, la matriz de cuantización puede especificar valores que, con un parámetro de cuantización, pueden usarse para determinar una cantidad de cuantización que se aplicará a los coeficientes de transformada correspondientes. Por ejemplo, para cada uno de los coeficientes de transformada que se vaya a cuantizar en un bloque de coeficientes de transformada, la unidad de cuantización 54 puede cuantizar el coeficiente de transformada respectivo de acuerdo con una cantidad de cuantización que se determine al menos en parte por un parámetro de cuantización de nivel de bloque (QP) para el bloque de coeficientes de transformada y uno respectivo de una pluralidad de valores específicos de coeficiente en la matriz de cuantización que corresponda al coeficiente de transformada que se vaya a cuantizar. Por lo tanto, la matriz de cuantización proporciona un valor correspondiente para cada coeficiente de transformada y aplica el valor al QP para determinar la cantidad de cuantización para el valor de coeficiente de transformada.
[0067] En algunos ejemplos, el proceso de cuantización puede incluir un proceso similar a uno o más de los procesos propuestos para la HEVC y/o definidos por la norma de decodificación H.264. Por ejemplo, con el fin de cuantizar el valor (es decir, el nivel) de un coeficiente de transformada, la unidad de cuantización 54 puede escalar el coeficiente de transformada por un valor correspondiente en la matriz de cuantización y por un valor de escalado posterior a la transformada. La unidad de cuantización 54 puede entonces desplazar el coeficiente de transformada escalado una cantidad que se base en el parámetro de cuantización. En algunos casos, el valor de escalado posterior a la transformada se puede seleccionar basándose en el parámetro de cuantización. También se pueden usar otras técnicas de cuantización.
[0068] La unidad de cuantización 54 puede, en algunos ejemplos, causar que los datos indicativos de una matriz de cuantización usada por la unidad de cuantización 54 para cuantizar los coeficientes de transformada se incluyan en un flujo de bits codificado. Por ejemplo, la unidad de cuantización 54 puede proporcionar datos indicativos de una matriz de cuantización a la unidad de codificación por entropía 56 para codificar por entropía los datos y su posterior colocación en un flujo de bits codificado.
[0069] Los datos de la matriz de cuantización incluidos en el flujo de bits codificado pueden usarse por el decodificador de vídeo 30 para decodificar el flujo de bits (por ejemplo, para realizar una operación de cuantización inversa). En algunos ejemplos, los datos pueden ser un valor de índice que identifique una matriz de cuantización predeterminada de un conjunto de matrices de cuantización, o puede identificar una función para generar una matriz de cuantización. En ejemplos adicionales, los datos pueden incluir los valores reales contenidos en la matriz de cuantización. En ejemplos adicionales, los datos pueden incluir una versión codificada de los valores reales contenidos en la matriz de cuantización. Por ejemplo, la versión codificada de la matriz de cuantización puede incluir valores submuestreados para ciertas ubicaciones en la matriz de cuantización. En otro ejemplo, la versión codificada se puede generar basándose en un predictor como se describe con más detalle más adelante en esta divulgación. En algunos ejemplos, los datos pueden tomar la forma de uno o más elementos sintácticos que especifiquen una matriz de cuantización usada por la unidad de cuantización 54 para cuantizar un bloque de coeficientes de transformada correspondiente a un bloque de vídeo que se vaya a codificar, y la unidad de cuantización 54 puede causar que el uno o más elementos sintácticos se incluyan en la cabecera del bloque de vídeo codificado.
[0070] En normas anteriores, tales como MPEG-2 y AVC/H.264, se usaron matrices de cuantización, como se describió anteriormente, para mejorar la calidad subjetiva. Las matrices de cuantización también se incluyen como parte de la norma de HEVC.
[0071] En HM5.1, son posibles los tamaños de transformada de 4x4, 8x8, 16x16 y 32x32. La transformada 32x32 se puede usar para luma, y posiblemente solo para luma (es decir, posiblemente no para componentes de croma). Puede ser apropiado permitir un total de 20 matrices de cuantización (es decir, una matriz de cuantización separada para bloques intra e interpredichos 4x4, 8x8, 16x16 para los componentes Y, U y V, así como 32x32 para bloques intra e interpredichos para el componente Y). Por tanto, puede ser posible que un codificador señale 4064 valores de matriz de cuantización para señalar todas las posibles permutaciones. En algunos ejemplos, el escaneo en zigzag de las entradas de la matriz de cuantización, seguido de la predicción de primer orden (por ejemplo, la codificación diferencial) y la codificación de Golomb exponencial (con parámetro = 0) se puede usar para comprimir sin pérdida las matrices de cuantización. Sin embargo, mejores procedimientos de compresión pueden ser deseables en la HEVC debido al gran número de coeficientes de la matriz de cuantización.
[0072] Las matrices de cuantización están diseñadas típicamente para aprovechar el sistema visual humano (HVS). El sistema visual humano es típicamente menos sensible a los errores de cuantización en frecuencias más altas. Una razón para esto es que la función de sensibilidad al contraste (CSF) del sistema visual humano disminuye a medida que aumenta la frecuencia, tanto en dirección horizontal como vertical. Por lo tanto, para matrices de cuantización bien diseñadas, las entradas de la matriz aumentan tanto en la fila (de izquierda a derecha) como en la columna (de arriba a abajo). En particular, cuando un bloque de coeficientes de transformada se extiende desde la posición de DC en la esquina superior izquierda (0, 0) hasta coeficientes de frecuencia más altos hacia la esquina inferior derecha (n, n), los valores correspondientes en la matriz de cuantización en general aumentan, o al menos no disminuyen.
[0073] En técnicas anteriores para señalar matrices de cuantización, se señalaron todos los valores (es decir, los coeficientes) para toda la matriz de cuantización. Sin embargo, la señalización de toda la matriz de cuantización puede no ser necesaria porque algunos coeficientes, como los que se encuentran en la esquina inferior derecha de la matriz de cuantización, pueden no contribuir sustancialmente a la calidad del vídeo.
[0074] Como ejemplo, los tamaños de bloque más altos, tales como 32x32, se usan típicamente cuando el bloque residual es suave, donde el bloque residual es la diferencia entre el bloque real de datos de vídeo y un bloque predicho de los datos de vídeo. Un bloque residual liso exhibe poca desviación en valores dentro del bloque residual. En este caso, después de la cuantización, puede ser poco probable que haya muchos coeficientes distintos de cero en las frecuencias más altas (es decir, hacia la esquina inferior derecha) del bloque transformado.
[0075] Las estadísticas de secuencias de vídeo codificadas apoyan esta suposición. Por ejemplo, el uso de una técnica de transformada de frecuencia parcial (por ejemplo, la codificación de los coeficientes 16x16 más pequeños a partir de un bloque 32x32) muestra una pérdida muy pequeña en la eficiencia de la codificación. Se puede considerar que esto es equivalente a elegir un valor muy alto para las entradas de la matriz de cuantización para frecuencias fuera de la región 16x16 (por ejemplo, valores altos para los coeficientes de la matriz de cuantización para las frecuencias fuera de la región 16x16). En este ejemplo, debido a que puede haber una pérdida muy pequeña en la eficiencia de la codificación, puede ser innecesario señalar todos los valores de la matriz de cuantización 32x32, que son 1024 valores, en el flujo de bits de vídeo codificado.
[0076] A continuación se describen ejemplos de señalización y codificación para las matrices de cuantización. Por ejemplo, para la señalización, el codificador de vídeo 20 puede señalar un indicador de un bit para indicar si la matriz de cuantización completa o solo un subconjunto de la matriz de cuantización está codificada. Si el indicador indica que toda la matriz de cuantización está codificada, se puede usar cualquier procedimiento de codificación, tal como el de HM5.1, AVC/H.264, JCTVC-F085, JCTVC-E073 o las técnicas descritas en la Solicitud de Patente de EE. UU. No.
61/547,647, que se incorpora por referencia en su totalidad, y se analiza con más detalle a continuación.
[0077] Si el indicador indica que solo se está codificando un subconjunto de la matriz de cuantización (por ejemplo, el primer subconjunto), entonces el tamaño del subconjunto puede codificarse como un par de valores (last_row, last_col). En este ejemplo, se supone que el subconjunto es rectangular y cubre las entradas de la matriz de cuantización desde la posición (0,0) hasta la posición (last_row, last_col). Sin embargo, puede ser posible usar otras formas. También puede ser posible limitar la forma para que sea un cuadrado en cuyo caso solo será necesario codificar un último valor porque los valores last_row y last_col serán los mismos. Los últimos valores (last_row, last_col) se pueden codificar con un número fijo de bits que puede depender del tamaño de la matriz de cuantización. Por ejemplo, para una matriz de cuantización 32x32, los últimos valores pueden codificarse usando 5+5=10 bits. Puede ser posible usar códigos de longitud variable, tales como los códigos exponenciales de Golomb o Golomb, para codificar los últimos valores.
[0078] Después de codificar los últimos valores (last_row, last_col), las entradas de la matriz de cuantización que pertenezcan a un subconjunto pueden codificarse (por ejemplo, los valores del primer subconjunto). Se puede usar el procedimiento HM5.1 o cualquier otro procedimiento (tal como AVC/H.264, JCTVC-F085, JCTVC-E073 o las técnicas descritas en la Solicitud de Patente de EE. UU. No. 13/649,836, presentada el 11 de octubre de 2012) para codificar las entradas de la matriz de cuantización pertenecientes al subconjunto. La codificación puede ser con o sin pérdida.
[0079] De acuerdo con las técnicas de la Solicitud de Patente de EE. UU. No. 13/649,836, el codificador de vídeo 20 y el decodificador de vídeo 30 pueden realizar un escaneo ráster y una técnica de predicción no lineal para codificar errores de predicción para valores de un primer subconjunto de la matriz de cuantización. De acuerdo con una técnica de ejemplo, el predictor es el máximo del valor a la izquierda y del valor superior en el primer subconjunto de la matriz de cuantización con respecto a la posición de escaneo actual en la matriz de cuantización. En otras palabras, a medida que la matriz de cuantización se escanea en orden de ráster, se predice un valor actual en la matriz de cuantización basándose en el máximo del valor a la izquierda del valor actual y del valor por encima del valor actual. El orden de ráster puede referirse en general a un orden en el que los valores en la matriz de cuantización se escaneen en filas de arriba a abajo y dentro de cada fila de izquierda a derecha. En general, los valores en la matriz de cuantización corresponderán a los coeficientes de transformada respectivos en un bloque de coeficientes de transformada, donde los coeficientes hacia la parte superior izquierda son de baja frecuencia y los coeficientes que se aproximan al aumento inferior derecho de la frecuencia.
[0080] Después de que se completa la codificación de las entradas de la matriz de cuantización que pertenecen a un subconjunto, el resto de las entradas de la matriz de cuantización (por ejemplo, los valores de los coeficientes del segundo subconjunto) pueden predecirse a partir de las entradas de la matriz de cuantización que pertenecen al subconjunto. Este proceso puede seguirse tanto por el codificador como por el decodificador. Por ejemplo, si las entradas de la matriz de cuantización que pertenecen a un subconjunto se codificaron de manera con pérdida, se reconstruyen. Entonces, las entradas de la matriz de cuantización fuera del subconjunto (por ejemplo, los valores del coeficiente del segundo subconjunto) se escanean en un orden de escaneo ráster, como ejemplo, para predecir los valores del coeficiente del segundo subconjunto.
[0081] En ejemplos de esta divulgación, el codificador de vídeo 20 puede configurarse para señalar valores de la matriz de cuantización para un subconjunto de la matriz de cuantización. Por ejemplo, el codificador de vídeo puede dividir la matriz de cuantización en al menos un primer subconjunto y un segundo subconjunto de los valores de la matriz de cuantización. El codificador de vídeo puede codificar los valores de coeficiente del primer subconjunto, y señalar estos valores codificados al decodificador de vídeo como elementos sintácticos. El decodificador de vídeo puede decodificar los valores de coeficiente del primer subconjunto de los elementos sintácticos recibidos.
[0082] En algunos ejemplos de la divulgación, el decodificador de vídeo 30 puede predecir los valores del segundo subconjunto. Por ejemplo, en algunos ejemplos, el codificador de vídeo 20 puede no necesitar señalar los elementos sintácticos que se usen para derivar los valores de coeficiente de la matriz de cuantización del segundo subconjunto para que el decodificador de vídeo pueda predecir los valores del segundo subconjunto. Más bien, el decodificador de vídeo 30 puede utilizar técnicas de esta divulgación para predecir los valores del segundo subconjunto sin utilizar dichos elementos sintácticos. De esta forma, se puede reducir la cantidad de datos que se deben señalar para una matriz de cuantización.
[0083] Como ejemplo, el decodificador de vídeo 20 puede predecir los valores de coeficiente para el segundo subconjunto de valores de la matriz de cuantización basándose en los valores de coeficiente decodificados del primer subconjunto de los valores de la matriz de cuantización, como se analiza con mayor detalle a continuación. Como otro ejemplo, para predecir los valores para el segundo subconjunto de valores de la matriz de cuantización, el decodificador de vídeo 30 puede asignar a cada coeficiente en el segundo subconjunto un valor constante, donde el valor constante puede ser un valor máximo de la matriz de cuantización permisible, como un ejemplo de valor no limitativo. En algunos ejemplos, el codificador de vídeo 20 puede señalar el valor constante al decodificador de vídeo o, de manera alternativa, el codificador de vídeo 20 y el decodificador de vídeo 30 pueden programarse previamente con el valor constante.
[0084] La FIG. 4 es un diagrama gráfico que ilustra una matriz de cuantización de ejemplo. La FIG. 4 ilustra la matriz de cuantización 94 que es una matriz de cuantización 32x32 usada para cuantizar un bloque 32x32 de coeficientes de transformada residuales. Aunque las técnicas relativas a la FIG. 4 se describen en el contexto de una matriz de cuantización 32x32, los aspectos de esta divulgación no están tan limitados y pueden extenderse a matrices de cuantización de otros tamaños, incluidas las matrices de cuantización no cuadradas. La matriz de cuantización 94 incluye el primer subconjunto 96 que incluye un subconjunto de valores de las entradas de la matriz de cuantización 94. En este ejemplo, el primer subconjunto 96 es una matriz 8x8 (incluidos los valores de matriz de cuantización A001 en la esquina superior izquierda y A232 en la esquina inferior derecha), aunque son posibles otros tamaños, incluidos los tamaños no cuadrados. En este ejemplo, los valores de coeficiente en las entradas del primer subconjunto 96 pueden codificarse y señalarse mediante el codificador de vídeo 20. El tamaño del primer subconjunto 96 también puede codificarse y señalarse. El tamaño puede ser la última fila y la última columna del primer subconjunto 96, que es (7, 7), suponiendo que la variable A001 se encuentra en (0, 0) en la matriz de cuantización 94. Debido a que este subconjunto es un cuadrado, solo una variable puede ser necesaria para señalarse (por ejemplo, 7). Para los subconjuntos que no son cuadrados, la última fila y los valores de la última columna se pueden codificar y señalar.
[0085] En algunos ejemplos, los valores de las entradas del segundo subconjunto 98 pueden no utilizarse para predecir los valores de las entradas del segundo subconjunto 98. El segundo subconjunto incluye los valores de la matriz de cuantización A009, A257 y A1024, entre otros, y está delimitado por la línea de puntos. Los elipses representan valores adicionales de la matriz de cuantización y se usan para reducir el tamaño del dibujo. En otras palabras, los valores de las entradas del segundo subconjunto 98 pueden predecirse sin utilizar elementos sintácticos que se calculen a partir de los valores de coeficiente de las entradas del segundo subconjunto. En algunos otros ejemplos, los valores de las entradas del segundo subconjunto 98 pueden determinarse a partir de los valores recibidos del segundo subconjunto del codificador de vídeo, como se analizará con más detalle a continuación.
[0086] En algunos ejemplos, los valores de las entradas del segundo subconjunto 98 pueden ser el máximo del valor de la matriz de cuantización por encima de un valor particular o el máximo del valor de la matriz de cuantización a la izquierda del valor particular. Si no existe un valor izquierdo o superior, se supone que el valor izquierdo o superior es cero. Por ejemplo, para predecir los valores de coeficiente del segundo subconjunto de la matriz de cuantización, el codificador de vídeo 20 o el decodificador de vídeo 30 pueden establecer un valor de coeficiente para una entrada actual del segundo subconjunto en la posición de coordenadas [x, y] para que sea el mayor del valor del coeficiente de una entrada en la matriz de cuantización que está a la izquierda en la posición de coordenadas [x-1, y] y el valor del coeficiente de una entrada en la matriz de cuantización que está arriba en la posición de coordenadas [x, y-1], (suponiendo que la esquina superior izquierda es [0, 0] y la esquina inferior derecha es [n, n] en una matriz de cuantización n por n).
[0087] En algunos ejemplos, los valores de las entradas del primer subconjunto 96 se pueden predecir en un orden de escaneo ráster; sin embargo, se puede usar otro orden de escaneo. En este ejemplo, en lugar de señalar el valor de la matriz de cuantización en sí, se señala la diferencia entre el valor actual de la matriz de cuantización y el valor de la matriz de cuantización previa a lo largo del orden de escaneo ráster. Dado que los valores de la matriz de cuantización aumentan en general en las direcciones horizontal y vertical, los errores de predicción (es decir, la diferencia entre el valor de la matriz de cuantización actual y la anterior a lo largo del orden de escaneo) para el predictor propuesto (es decir, los valores de la matriz de cuantización superior e izquierdo) casi siempre son no negativos. Cabe destacar que este sistema de predicción propuesto funciona bien cuando se usan matrices de cuantización asimétrica, mientras que un escaneo basado en zigzag no sería tan efectivo.
[0088] En algunos ejemplos, el error de predicción se codifica usando códigos Golomb. El codificador puede incluir el parámetro del código Golomb en el flujo de bits de vídeo codificado (usando un código fijo o de longitud variable) o tanto el codificador como el decodificador pueden conocerlo. Es posible usar otros procedimientos, tales como la codificación exponencial de Golomb, para codificar el error de predicción. Debido a la naturaleza ligeramente extendida del error de predicción, un código Golomb puede ser deseable. Para poder codificar valores negativos ocasionales, se puede emplear un procedimiento de remapeo.
[0089] En algunos ejemplos, uno o más de los valores de coeficientes predichos del segundo subconjunto pueden predecirse a partir de otros valores de coeficientes predichos del segundo subconjunto. Por ejemplo, un valor de coeficiente de una entrada en la matriz de cuantización que también forma parte del segundo subconjunto puede estar por encima de una entrada actual en el segundo subconjunto, y un valor de coeficiente de una entrada en la matriz de cuantización que también forma parte del segundo subconjunto puede estar a la izquierda de la entrada actual en el segundo subconjunto. En este ejemplo, los valores de coeficiente para las entradas que pueden usarse para predecir el valor de coeficiente de la entrada actual pueden ser valores predichos en sí mismos porque estas entradas también forman parte del segundo subconjunto, y los valores de coeficiente para las entradas en el segundo subconjunto pueden predecirse todos. El codificador de vídeo 20 y el decodificador de vídeo 30 pueden usar este proceso para derivar todas las entradas de cuantización que estén fuera del subconjunto (por ejemplo, en el segundo subconjunto). Los diagramas gráficos que ilustran una matriz de cuantización y una matriz de cuantización reconstruida se ilustran en las FIGS. 5 y 6, y se describen con más detalle a continuación.
[0090] Volviendo a la FIG. 4, como ejemplo, se predice que el valor del coeficiente A009 del segundo subconjunto 98 es igual al coeficiente A008 del primer subconjunto 96 porque no hay disponible ningún valor superior a A009. Se predice que el valor del coeficiente A257 del segundo subconjunto 98 es igual al coeficiente A225 del primer subconjunto 96 porque no hay disponible ningún valor a la izquierda de A257. Se predice que el valor del coeficiente A042 del segundo subconjunto 98 será el mayor del valor del coeficiente A010 y del coeficiente A041, ambos del segundo subconjunto 98. En este ejemplo, el valor de los coeficientes A010 y A041 son valores predichos porque ambos coeficientes están en el segundo subconjunto 98.
[0091] La FIG. 5 es un diagrama gráfico que ilustra una matriz de cuantización con valores de ejemplo que pueden señalarse usando la predicción de acuerdo con las técnicas descritas anteriormente. La FIG. 6 es un diagrama gráfico que ilustra una matriz de cuantización reconstruida utilizando una o más técnicas de ejemplo de esta divulgación. Por ejemplo, con fines ilustrativos, la FIG. 5 ilustra una matriz de cuantización 100, que es una matriz 8x8. En este ejemplo, el codificador de vídeo 20 puede señalar los valores de las primeras entradas 5x5 en la matriz de cuantización 100 (mostrada con líneas en negrita). Por ejemplo, en este ejemplo, el primer subconjunto 101 de la matriz de cuantización 100 son los primeros valores 5x5, lo que significa que, en este ejemplo, los valores last_row y last_col son cada uno 4, suponiendo índices basados en cero. Debido a que el primer subconjunto 101 es un cuadrado, el codificador de vídeo 20 sólo puede señalar el valor 5 (por ejemplo, dado que los valores last_row y last_col son los mismos). Los valores restantes en la matriz de cuantización 100 (es decir, aquellos que están fuera del primer subconjunto 101) se consideran que están en el segundo subconjunto.
[0092] La FIG. 6 ilustra una matriz de cuantización reconstruida 102. En este ejemplo, el decodificador de vídeo 30 (o el codificador de vídeo 20 en un circuito de reconstrucción), puede utilizar una de las técnicas de ejemplo para generar la matriz de cuantización reconstruida 102. Por ejemplo, el decodificador de vídeo 30 y el codificador de vídeo 20 pueden utilizar la técnica para determinar los valores de un segundo subconjunto de valores de matriz de cuantización usando el máximo entre el coeficiente izquierdo y el coeficiente superior relativo al coeficiente de corriente.
[0093] La matriz de cuantización reconstruida 102 ilustra los resultados de esta técnica. Por ejemplo, las primeras entradas 5x5 en el primer subconjunto 103 son las mismas que las primeras entradas 5x5 en el primer subconjunto 101 en la matriz de cuantización 100, ya que estos valores se señalaron explícitamente. Los valores restantes (por ejemplo, los valores del segundo subconjunto fuera del primer subconjunto 103) se derivan de la determinación del máximo de los coeficientes superior e izquierdo relativo a un coeficiente actual.
[0094] En algún ejemplo, en lugar de la predicción y del escaneo ráster descritos anteriormente, se pueden usar otros escaneos y/o predicción. De manera alternativa, las entradas de la matriz de cuantización fuera del subconjunto (por ejemplo, los valores de coeficiente del segundo subconjunto) se pueden establecer en un valor constante, tal como el valor máximo de la matriz de cuantización permisible. Dicho valor constante se puede señalar en el flujo de bits desde el codificador de vídeo al decodificador de vídeo, o el codificador de vídeo y el decodificador de vídeo pueden programarse previamente con el valor constante.
[0095] En algunos ejemplos, el codificador de vídeo 20 puede predecir de manera similar los valores en el segundo subconjunto como lo realiza el decodificador de vídeo 30. Por ejemplo, el codificador de vídeo 20 puede predecir los valores del segundo subconjunto y reemplazar los valores del segundo subconjunto con los valores predichos del segundo subconjunto. De esta forma, la matriz de cuantización usada en el lado del codificador de vídeo y en el lado del decodificador de vídeo puede ser la misma.
[0096] En algunos ejemplos de codificación de vídeo, puede que no sea suficiente usar un valor constante para los valores de la matriz de cuantización o la predicción de un primer subconjunto para determinar las entradas de la matriz de cuantización que no estén explícitamente señaladas, (es decir, aquellas entradas fuera del rectángulo (0, 0) a ((last_row, last_col), valores del segundo subconjunto). A continuación se describen otros ejemplos de señalización de valores de matriz de cuantización, tal como el uso de valores para una matriz diferente y el uso de valores submuestreados para determinar los valores del segundo subconjunto.
[0097] Como ejemplo, las entradas que no se señalan explícitamente (por ejemplo, los valores del segundo subconjunto) se derivan de una matriz diferente (por ejemplo, una matriz de cuantización de menor tamaño). Esta matriz de cuantización de menor tamaño puede haberse codificado ya en el flujo de bits que el codificador de vídeo señala, como ejemplo. En algunos ejemplos, la matriz diferente puede ser una matriz de cuantización. El codificador de vídeo 20 puede haber señalado previamente esta matriz diferente.
[0098] Por ejemplo, el codificador de vídeo puede señalar los valores para diferentes matrices de cuantización, tales como matrices de cuantización con tamaños que incluyen 4x4, 8x8, 16x16 o 32x32. En este ejemplo, el decodificador de vídeo 30 puede utilizar valores de coeficientes de cualquiera de las matrices de cuantización que se codificaron previamente en el flujo de bits para reconstruir la matriz de cuantización actual. Por ejemplo, supongamos que la matriz de cuantización que se va a reconstruir es una matriz de cuantización 32x32. En este ejemplo, el codificador de vídeo 20 puede señalar valores de coeficiente para un primer subconjunto de la matriz de cuantización 32x32. Suponiendo que el decodificador de vídeo ya haya recibido matrices de cuantización de tamaños 4x4, 8x8 o 16x16, el decodificador de vídeo puede utilizar la matriz de cuantización 4x4, 8x8, o 16x16 para determinar los valores para el segundo subconjunto para reconstruir la matriz de cuantización 32x32.
[0099] En algunos ejemplos, puede ser posible usar cualquiera de las matrices de cuantización 4x4, 8x8 o 16x16 con el fin de reconstruir la matriz de cuantización 32x32. Por ejemplo, para reconstruir la matriz de cuantización 32x32, el decodificador de vídeo 30 puede usar la matriz de cuantización 8x8, y la matriz de cuantización 8x8 puede ser una matriz de cuantización reconstruida que usó una matriz de cuantización 4x4 para su reconstrucción. Sin embargo, dicha reconstrucción en capas de matrices de cuantización puede no ser necesaria en todos los ejemplos. Por ejemplo, el codificador de vídeo 20 puede señalar la totalidad de una matriz de cuantización 8x8 que el decodificador de vídeo 30 usa para reconstruir la matriz de cuantización 32x32. Algunos de los valores de la matriz de cuantización 32x32 se pueden señalar, mientras que otros valores se pueden reconstruir a partir de una o más de las matrices más pequeñas.
[0100] Además, en algunos ejemplos, el codificador de vídeo puede señalar el tamaño de la matriz más pequeña (por ejemplo, el primer subconjunto). En otro ejemplo, el decodificador de vídeo 30 y el codificador de vídeo 20 pueden programarse previamente con el tamaño de la matriz más pequeña (por ejemplo, el tamaño de la matriz más pequeña puede conocerse a priori por el codificador de vídeo 20 y el decodificador de vídeo 30).
[0101] Como ejemplo específico, supongamos que la matriz de cuantización es 32x32, y last_row = 14, y last_col = 14. En este ejemplo, el codificador de vídeo 20 señala los valores para las entradas más bajas 15x15 en la matriz de cuantización 32x32. Supongamos que el decodificador de vídeo 30 está derivando el valor para una entrada de matriz con índice (r, c) donde r >= 15 o c >= 15. En este ejemplo, para derivar los valores de la matriz de cuantización, el decodificador de vídeo puede usar los valores de una matriz diferente (por ejemplo, una matriz 8x8) que puede ser una matriz de cuantización de menor tamaño.
[0102] El decodificador de vídeo 30 puede utilizar diferentes formas de usar la matriz de cuantización de tamaño inferior para determinar los valores para el segundo subconjunto. Por ejemplo, el decodificador de vídeo puede determinar una relación entre el tamaño de la matriz de cuantización y el tamaño de la matriz diferente de menor tamaño. El decodificador de vídeo 30 puede dividir la coordenada de ubicación para la entrada dentro de la matriz de cuantización cuyo valor se está determinando (por ejemplo, un valor para una entrada en el segundo subconjunto) con la relación, y usar las funciones de techo y suelo para determinar las ubicaciones correspondientes en la matriz diferente de menor tamaño. El decodificador de vídeo 30 puede usar entonces los valores en la matriz diferente de menor tamaño que correspondan a las ubicaciones identificadas dentro de la matriz diferente de menor tamaño para determinar los valores para el segundo subconjunto en la matriz de cuantización que se esté reconstruyendo.
[0103] Por ejemplo, supongamos que C>N*N(r> c) indica el valor de la matriz de cuantización reconstruida de tamaño N xN en la posición (r,c), donde r es el índice de la fila y c es el índice de la columna. Supongamos que n = suelo (r/4), rH = techo(r/4), cl = suelo(c/4), y ch = techo(c/4), donde el factor 4 se deriva como (32/8). Aquí suelo(x) indica el mayor entero menor o igual que x. De manera similar, techo(x) indica el entero más pequeño mayor o igual que x. Entonces C¡32x32(r,c) se puede establecer en Osx8(rL,cL) o se puede configurar en el promedio de Osx8(rL,cL), Osx8(rL,cH), Qsx8(rH,cL)y Ü8x8(rH,cH). Si toda la matriz de cuantización 8x8 se envió al decodificador, la matriz 8x8 reconstruida es la misma que la matriz de cuantización 8x8 original. Se pueden usar la interpolación bilineal u otras técnicas de interpolación más sofisticadas y/o filtros de interpolación más largos. El tamaño de la matriz a partir de la cual se derivarán los valores que falten se puede señalar en el flujo de bits o conocerse a priori por el codificador de vídeo y el decodificador de vídeo. Los valores de la matriz más pequeña (por ejemplo, el primer subconjunto) también pueden incluirse en el flujo de bits.
[0104] En AVC/H.264, se usa un escaneo en zigzag y una modulación por código de impulsos diferenciales (DPCM, es decir, la predicción del último valor en el orden de escaneo). Entonces, si un valor de la matriz de cuantización se codifica para ser cero, esto indica que no se codifican más valores de la matriz de cuantización y que se repite el último valor de la matriz de cuantización positiva codificada. En dicho caso, en lugar de repetir el último valor de la matriz de cuantización codificada, los valores de la matriz de cuantización restantes pueden derivarse de una matriz de cuantización de un tamaño más bajo, como se describió anteriormente.
[0105] Como se describió anteriormente, en algunos ejemplos, el decodificador de vídeo 30 puede determinar los valores del segundo subconjunto sin recibir ningún elemento sintáctico basado en los valores del segundo subconjunto. Sin embargo, evitar la señalización de los valores de la matriz de cuantización en un segundo subconjunto puede no ser beneficioso en todos los ejemplos. Es decir, la señalización de al menos algunos valores de matriz de cuantización para componentes de mayor frecuencia de una matriz de cuantización (por ejemplo, los de un segundo subconjunto de valores) puede proporcionar una mejor compensación entre la eficiencia de codificación y los errores en la matriz de cuantización reconstruida.
[0106] En otro ejemplo de la divulgación, como se describe con más detalle a continuación, el codificador de vídeo 20 puede submuestrear los valores de un subconjunto de valores de la matriz de cuantización y señalar los valores submuestreados. El decodificador de vídeo puede sobremuestrear los valores submuestreados para determinar los valores necesarios para reconstruir la matriz de cuantización en el lado del decodificador de vídeo. Puede haber una cantidad menor de datos en los valores submuestreados, en comparación con los valores originales, y puede reducirse la cantidad de datos que se señale para una matriz de cuantización al señalar los valores submuestreados.
[0107] En un ejemplo de submuestreo, los valores fuera de un subconjunto de la matriz de cuantización (por ejemplo, de (0, 0) a (last_row, last_col), es decir, los valores en el segundo subconjunto) se pueden reducir por un cierto factor (por ejemplo, 2) y los valores submuestreados se pueden codificar en el flujo de bits sin pérdidas. Cualquier procedimiento de codificación como los descritos en AVC/H.264, JCTVC-F085, JCTVC-E073 o las técnicas descritas en la Solicitud de Patente de EE. UU. No. 13/649.836 se pueden usar para codificar los valores submuestreados. El submuestreo se puede realizar usando promedios simples (por ejemplo, promediando los valores de la matriz de cuantización en una región NxN) o usando filtros y/o ecuaciones más sofisticados. Tanto el codificador de vídeo 20 como el decodificador de vídeo 30 pueden usar el sobremuestreo de los valores codificados para generar los valores fuera del primer subconjunto (por ejemplo, los valores para el segundo subconjunto). Las técnicas de sobremuestreo pueden usar la replicación de píxeles simple (es decir, usar el valor de submuestreo para todas las coordenadas dentro de las regiones submuestreadas o de las técnicas más sofisticadas). Por ejemplo, los valores submuestreados de la matriz de cuantización se pueden tratar de manera similar a una imagen submuestreada. Entonces, se pueden usar técnicas conocidas en la técnica para realizar un sobremuestreo de imágenes, tal como la interpolación bilineal, la interpolación bicúbica, etc., para sobremuestrear la matriz de cuantización de submuestreo.
[0108] Como se describió anteriormente, el codificador de vídeo 20 puede señalar explícitamente los valores de coeficiente para el primer subconjunto, y determinar los valores de coeficiente para el segundo subconjunto usando alguna forma de predicción. En el siguiente ejemplo, en lugar de los valores del coeficiente de señalización para el primer subconjunto y la determinación de los valores del segundo subconjunto con predicción, las siguientes técnicas pueden permitir que el codificador de vídeo genere un flujo de bits codificado que señale los valores de coeficiente de la matriz de cuantización con diferentes niveles de tosquedad. Por ejemplo, los valores de coeficiente que correspondan a componentes de frecuencia más baja de la matriz de cuantización pueden señalarse sin pérdida (es decir, explícitamente) y otros valores de coeficiente (por ejemplo, en segundos subconjuntos, terceros subconjuntos, etc.) pueden señalarse más y más toscamente (por ejemplo, mediante el uso de diferentes factores de submuestreo). Los valores de coeficiente que corresponden a las posiciones de frecuencia más bajas se ubican en general cerca del origen de la matriz de cuantización (por ejemplo, los índices de fila y de columna para el valor del coeficiente están cerca de (0, 0)). En general, las siguientes técnicas permiten que un codificador de vídeo aplique cantidades no uniformes de submuestreo a los valores de la matriz de cuantización en función de dónde se ubique el valor de la matriz de cuantización en la matriz de cuantización.
[0109] Las técnicas de este ejemplo pueden proporcionar un sistema mediante el cual los valores de los coeficientes que se ubican más alejados del origen de la matriz de cuantización se aproximan de manera más general que los valores de coeficiente que se ubican más próximos al origen de la matriz de cuantización. En este ejemplo, los valores de la matriz de cuantización aproximada (por ejemplo, en un segundo y/o un tercer subconjunto o más) pueden codificarse en el flujo de bits y señalarse.
[0110] Sin embargo, en algunos ejemplos alternativos, puede ser posible utilizar la siguiente técnica en los valores de coeficiente del primer subconjunto, donde el primer subconjunto es similar al descrito anteriormente. En estos ejemplos alternativos, las técnicas pueden determinar los valores de coeficiente para el segundo subconjunto usando cualquiera de las técnicas de ejemplo anteriores.
[0111] Por ejemplo, para los valores de la matriz de cuantización ubicados en una región cercana al origen de la matriz de cuantización (por ejemplo, en un primer subconjunto cercano a (0, 0)), el codificador de vídeo 20 no puede aplicar ningún submuestreo (es decir, aplicar el factor de submuestreo es 1) . En esta región, todos los valores de la matriz de cuantización se señalan. Si la ubicación del valor del coeficiente en la matriz de cuantización está más alejada del origen de la matriz de cuantización (por ejemplo, en un segundo subconjunto fuera del primer subconjunto), el codificador de vídeo 20 puede aplicar un nivel más alto de submuestreo (por ejemplo, aplicar un factor de submuestreo de 2, 3, 4, y así sucesivamente). Un factor de submuestreo mayor que 1 puede indicar el número de valores de coeficiente que estén representados por un valor. Como ejemplo, un factor de submuestreo de 2 puede significar que los valores de coeficiente 22 (es decir, 4) de la matriz de cuantización pueden representarse por cada valor codificado cuando se use la repetición de píxeles para su reconstrucción. De manera similar, un factor de submuestreo de 4 puede significar que 24 (es decir, 16) valores de coeficiente de la matriz de cuantización pueden representarse por cada valor codificado cuando se use la repetición de píxeles para su reconstrucción.
[0112] Como se analizó anteriormente, el valor calculado de acuerdo con el factor de submuestreo puede ser un promedio simple. Por ejemplo, en el lado del codificador, para un factor de submuestreo de 2, se promedian cuatro valores de matriz de cuantización en un cuadrado 2x2, y se señala el promedio de esos cuatro valores de matriz de cuantización. Asimismo, si el factor de submuestreo es 4, se promedian dieciséis valores de la matriz de cuantización que son un cuadrado 4x4, y se señala el promedio de esos dieciséis valores de la matriz de cuantización. Se pueden usar otras ecuaciones o técnicas de filtro más sofisticadas para calcular los valores de submuestreo.
[0113] En algunos ejemplos, el codificador de vídeo 20 puede establecer puntos de transición de submuestreo (por ejemplo, límites) dentro de la matriz de cuantización. Los valores de coeficiente que se ubican en la matriz de cuantización entre el primer punto de transición y el origen de la matriz de cuantización se submuestrean de acuerdo con un primer factor de submuestreo (que puede ser tan bajo como uno, lo que significa que no hay submuestreo), los valores de coeficiente que se ubican en la matriz de cuantización entre el primer punto de transición y un segundo punto de transición se puede minimizar en un segundo factor de submuestreo, los valores de coeficiente que se ubican en la matriz de cuantización entre el segundo punto de transición y un tercer punto de transición pueden submuestrearse en un tercer factor de submuestreo, y así sucesivamente. En algunos ejemplos, la cantidad en la que el factor de submuestreo cambia por punto de transición puede no ser uniforme; aunque los aspectos de esta divulgación no sean tan limitados.
[0114] Por ejemplo, en algunos ejemplos, el elemento sintáctico que indica la ubicación de los subconjuntos de los valores de la matriz de cuantización puede no estar incluido en el flujo de bits. En cambio, la ubicación de las regiones se conoce a priori tanto en el codificador como en el decodificador de vídeo. El uso de un factor de submuestreo de 1 puede ser equivalente a enviar todos los valores, como se hace para los valores de subconjunto de baja frecuencia en los ejemplos anteriores (por ejemplo, los valores del subconjunto de baja frecuencia se refieren a los valores que se encuentran cerca del origen de la matriz de cuantización). Adicionalmente, para otras áreas que usen un factor de submuestreo mayor que 1, se pueden incluir valores de matriz de cuantización adicionales en el flujo de bits. Un ejemplo de esto se muestra en la FIG. 7 para un bloque 16x16.
[0115] En el ejemplo de la FIG. 7, si los índices de fila y columna están en el rango 0 <= índice <= 3, se usa un factor de submuestreo de 1 en cada dirección (es decir, sin submuestreo). Si los índices de fila y columna están en el rango 0 <= índice <= 7, pero ambos no están en el rango 0 <= índice <= 3, se usa un factor de submuestreo de 2 en cada dirección (fila/columna). Para todos los valores restantes, se usa un factor de submuestreo de 4 en cada dirección. En la FIG. 7, se codifica un valor de la matriz de cuantización para cada uno de los cuadrados numerados. Este valor se puede derivar mediante un promedio simple de todos los valores de la matriz de cuantización a partir de la matriz de cuantización original 16x16 que pertenezcan al cuadrado correspondiente. Si bien en este ejemplo se usa un promedio simple, también puede ser posible utilizar filtros de submuestreo más sofisticados. Los cuadrados 0-15 corresponden directamente a un valor de la matriz de cuantización cada uno, ya que el factor de submuestreo es 1 en esta región. Los cuadrados 17-27 corresponden a bloques 2x2 de valores de la matriz de cuantización (es decir, 4 valores de la matriz de cuantización), ya que el factor de submuestreo es 2 en esta región. Los cuadrados 29-39 corresponden a bloques 4x4 de los valores de la matriz de cuantización (es decir, 16 valores de la matriz de cuantización), ya que el factor de submuestreo es 4 en esta región. Los números dentro de los cuadrados representan el orden de escaneo en zigzag en el que los valores se codifican en el flujo de bits.
[0116] Un valor de matriz de cuantización correspondiente a cada cuadrado puede incluirse en el flujo de bits. Esto se puede lograr usando un escaneo de zigzag separado en una región particular para cada factor de submuestreo. Por ejemplo, los primeros cuadrados 0-15, que corresponden a un factor de submuestreo de 1, se escanean en un orden en zigzag. A esto le sigue un escaneo en zigzag de los cuadrados 17-27, correspondiente a un factor de submuestreo de 2. A esto le sigue un escaneo en zigzag de los cuadrados 28-39, correspondiente a un factor de submuestreo de 4. Si un escaneo en zigzag para un factor de submuestreo mayor se desplaza sobre un área que se cubrió por otro escaneo en zigzag para un factor de submuestreo menor, no se codifica ningún valor (por ejemplo, cuando se va del cuadrado 16 al cuadrado 17). Sin embargo, si se usa la DPCM para codificar los valores submuestreados, el predictor para el siguiente valor en el escaneo en zigzag puede derivarse de los valores de matriz de cuantización correspondientes para un factor de submuestreo más bajo, que ya se ha codificado en el flujo de bits.
[0117] Por ejemplo, en la FIG. 7, tenga en cuenta un escaneo en zigzag correspondiente a un factor de submuestreo de 2. El escaneo en zigzag pasa sobre los cuadrados con los índices 16 y 17. Hay un área entre estos dos cuadrados que ya se ha cubierto por el escaneo en zigzag correspondiente al factor de submuestreo de 1 (cuadrados 11-15). Como tal, no se codifica ningún valor en el flujo de bits para esa región, ya que esta región ya se ha codificado. Sin embargo, cuando el valor de matriz de cuantización para el cuadrado con el índice 17 se está codificando mediante la DPCM, el valor de predicción se deriva de valores ya codificados para los cuadrados con los índices 11, 13, 14 y 15. Este valor de matriz de cuantización puede ser un promedio simple de los valores codificados redondeados al entero más cercano.
[0118] Tras recibir la matriz de cuantización submuestreada, el decodificador de vídeo 30 puede decodificar los valores de la matriz de cuantización para los valores de coeficientes en el mismo orden en que se incluyeron en el flujo de bits. El decodificador de vídeo 30 puede usar una replicación simple para realizar un sobremuestreo de los valores de matriz de cuantización. Es decir, todas las posiciones dentro de un cuadrado usan el mismo valor de la matriz de cuantización. Este es típicamente el valor codificado correspondiente a ese cuadrado. También se pueden usar filtros de sobremuestreo más sofisticados.
[0119] Como se describió anteriormente para otras técnicas, los valores de la matriz de cuantización submuestreados se pueden codificar usando la DPCM (predicción del valor anterior en el escaneo) seguida de una codificación de Golomb exponencial con signo. Cuando algún valor no está codificado porque esa área ya estaba cubierta por un escaneo en zigzag correspondiente a un factor de submuestreo más bajo, la predicción para el siguiente valor codificado se modifica como se describió anteriormente. También se puede usar cualquier otro procedimiento de predicción y codificación. En lugar de 3 factores de submuestreo, tal como se muestra en la FIG. 7, se pueden usar menos o más factores y regiones de submuestreo. La FIG. 8 muestra un ejemplo con 2 factores de submuestreo para un bloque de 8x8, donde los bloques 0-15 tienen un factor de submuestreo de 1 y los bloques 17­ 27 tienen un factor de submuestreo de 2.
[0120] También se debería tener en cuenta que se pueden usar otros tipos de escaneos, tal como la diagonal ascendente. También, el escaneo puede ser en el orden inverso. Por ejemplo, primero se pueden codificar los valores correspondientes al factor de submuestreo de 3. Esto puede ir seguido de valores correspondientes al factor de submuestreo de 2, y así sucesivamente.
[0121] En un ejemplo particular de la divulgación, el coeficiente DC de la matriz de cuantización (es decir, el valor de la matriz de cuantización en la posición (0,0), es el único valor en un primer subconjunto y se submuestrea con un factor de submuestreo de 1 (es decir, se señala de manera explícita). Todos los demás valores de la matriz de cuantización en la matriz de cuantización se consideran en un segundo subconjunto y se submuestrean en un factor de 2 o mayor. La FIG. 9 muestra una matriz de cuantización 16x16 codificada de acuerdo con este ejemplo. Como se muestra en la FIG. 9, el coeficiente DC en el cuadrado 0 se codifica explícitamente (es decir, con un factor de submuestreo de 1), y todos los demás valores de la matriz de cuantización en la matriz de cuantización se submuestrean con un factor de 2. Tenga en cuenta que el cuadrado 1, submuestreado con un factor de 2, incluye técnicamente el coeficiente DC. El valor usado para este bloque 2x2 en particular puede determinarse como un promedio de los tres valores restantes de la matriz de cuantización (es decir, aquellos distintos del coeficiente DC), como un promedio de los cuatro valores de la matriz de cuantización en la región (es decir, un promedio que incluye el coeficiente DC), o usando alguna otra técnica de filtrado.
[0122] En otro ejemplo de la divulgación, para un bloque 32x32, se pueden usar los siguientes puntos de transición de submuestreo. Si los índices de fila y columna están en el rango 0 <= índice <= 3, se usa un factor de submuestreo de 1 en cada dirección (es decir, sin submuestreo). Si los índices de fila y columna están en el rango 0 <= índice <= 15, pero ambos no están en el rango 0 <= índice <= 3, se puede usar un factor de submuestreo de 2 en cada dirección (fila/columna). Para todos los valores restantes, se puede usar un factor de submuestreo de 4 en cada dirección. Los puntos de transición donde el factor de submuestreo cambia los valores (por ejemplo, de 1 a 2 o de 2 a 4) y los factores de submuestreo reales pueden incluirse en el flujo de bits o pueden conocerse a priori tanto en el codificador de vídeo 20 como en el decodificador de vídeo 30.
[0123] En un ejemplo de la divulgación, si se usa un muestreo uniforme, solo se necesita codificar una matriz 8x8. Para el muestreo no uniforme, se codifican más valores de la matriz de cuantización, ya que se logra una aproximación más precisa a la matriz de cuantización completa (32x32 o 16x16).
[0124] Para el ejemplo de muestreo uniforme, en lugar de codificar una matriz de cuantización 16x16 o 32x32, se codifica una matriz de cuantización de menor tamaño (por ejemplo, 8x8) en el flujo de bits. Entonces, cuando se tenga que generar un valor de una entrada de la matriz de cuantización para la matriz más grande, se puede usar una interpolación. Si la entrada de la matriz de cuantización representa una frecuencia en un subconjunto de frecuencias más bajas, tales como las frecuencias más bajas 8x8, se usa la interpolación bilineal para calcular el valor de la entrada de la matriz de cuantización para la matriz de cuantización más grande. Para el resto del área, se usa la replicación de los valores correspondientes de la matriz de cuantización de menor tamaño. En lugar de usar las frecuencias más bajas 8x8, se puede usar cualquier otro subconjunto. Además, en lugar de la interpolación bilineal y de la replicación de píxeles, se pueden usar dos procedimientos de interpolación. Esta técnica puede generalizarse más a más de 2 regiones y a más de 2 procedimientos de interpolación.
[0125] Con respecto a las FIGS. 7, 8 y 9, y al ejemplo descrito anteriormente donde los valores de coeficiente se submuestrean, se usan diferentes factores de submuestreo en diferentes áreas (es decir, que representan diferentes subconjuntos de valores de la matriz de cuantización). Para cada subconjunto, se puede señalar un valor de la matriz de cuantización para cada bloque (por ejemplo, los cuadrados numerados en las FIGS. 7-9), donde el número de valores de la matriz de cuantización representados por cada bloque está determinado por el factor de submuestreo para la subestación en particular. El codificador de vídeo y el decodificador de vídeo pueden conocer la posición en la que se produzca una conmutación entre los factores de submuestreo o se puede señalar explícitamente.
[0126] En otras palabras, las técnicas de submuestreo analizadas anteriormente pueden permitir que el codificador de vídeo 20 señale los valores de la matriz de cuantización de frecuencia más baja sin pérdida (en un ejemplo en el coeficiente DC) y que se aproximen a otros valores de la matriz de cuantización de manera más o menos amplia. Esto puede evitar la necesidad de tener toda la matriz de cuantización en la memoria, lo que puede ser beneficioso para los tamaños de bloque 16X16 y 32X32 (aunque los beneficios también pueden aplicarse a bloques de diferentes tamaños).
[0127] De acuerdo con las técnicas descritas anteriormente, el codificador de vídeo 20 puede configurarse para determinar una matriz de cuantización que incluya una pluralidad de valores, submuestrear un primer conjunto de valores en la matriz de cuantización mediante un primer factor de submuestreo para generar un primer conjunto de valores submuestreados, submuestrear un segundo conjunto de valores en la matriz de cuantización mediante un segundo factor de submuestreo para generar un segundo conjunto de valores submuestreados, y generar un flujo de bits codificado que incluya el primer conjunto de valores submuestreados y el segundo conjunto de valores submuestreados.
[0128] Volviendo a la FIG. 2, tras la cuantización, la unidad de codificación por entropía 56 codifica por entropía los coeficientes de transformada cuantizados. Por ejemplo, la unidad de codificación por entropía 56 puede realizar una codificación de longitud variable adaptativa al contexto (CAVLC), una codificación aritmética binaria adaptativa al contexto (CABAC), una codificación aritmética binaria adaptativa al contexto basada en la sintaxis (SBAC), una codificación por entropía por partición de intervalos de probabilidad (PIPE) u otros procedimientos o técnicas de codificación por entropía. Tras la codificación por entropía por la unidad de codificación por entropía 56, el flujo de bits codificado se puede transmitir al decodificador de vídeo 30, o archivarse para su posterior transmisión o recuperación por el decodificador de vídeo 30. La unidad de codificación por entropía 56 también codificar por entropía los vectores de movimiento y los otros elementos sintácticos para el segmento de vídeo actual que se esté codificando.
[0129] En algunos ejemplos, la unidad de codificación por entropía 56 puede ser operable para realizar las técnicas de esta divulgación. Sin embargo, los aspectos de esta divulgación no se limitan a lo anterior. En ejemplos alternativos, alguna otra unidad del codificador de vídeo 20, tal como un procesador, o cualquier otra unidad del codificador de vídeo 20 puede encargarse de realizar las técnicas de esta divulgación. Como ejemplo, la unidad de codificación por entropía 56 puede ser operable para codificar un tamaño de un primer subconjunto de una matriz de cuantización, codificar los valores de coeficiente del primer subconjunto y predecir los valores de coeficiente de un segundo subconjunto de la matriz de cuantización. También, en algunos ejemplos, las técnicas de esta divulgación pueden dividirse entre una o más de las unidades del codificador de vídeo 20.
[0130] La unidad de cuantización inversa 58 y la unidad de procesamiento de transformada inversa 60 aplican una cuantización inversa y una transformada inversa, respectivamente, para reconstruir el bloque residual en el dominio de píxel, para su uso posterior como un bloque de referencia de una imagen de referencia. La unidad de compensación de movimiento 44 puede calcular un bloque de referencia añadiendo el bloque residual a un bloque predictivo de una de las imágenes de referencia de una de las listas de imágenes de referencia. La unidad de compensación de movimiento 44 también puede aplicar uno o más filtros de interpolación al bloque residual reconstruido para calcular valores de píxeles de subenteros para su uso en la estimación de movimiento. El sumador 62 añade el bloque residual reconstruido al bloque de predicción con compensación de movimiento generado por la unidad de compensación de movimiento 44 para generar un bloque de referencia para su almacenamiento en la memoria de imágenes de referencia 64. La unidad de estimación de movimiento 42 y la unidad de compensación de movimiento 44 pueden usar el bloque de referencia como un bloque de referencia para realizar la interpredicción de un bloque en una trama o en una imagen de vídeo posterior.
[0131] La FIG. 3 es un diagrama de bloques que ilustra un decodificador de vídeo 30 de ejemplo que puede implementar las técnicas descritas en esta divulgación. En el ejemplo de la FIG. 3, el decodificador de vídeo 30 incluye una unidad de decodificación por entropía 80, un módulo de procesamiento de predicción 81, una unidad de cuantización inversa 86, una unidad de transformada inversa 88, un sumador 90 y una memoria de imágenes de referencia 92. La unidad de procesamiento de predicción 81 incluye la unidad de compensación de movimiento 82 y la unidad de procesamiento de intrapredicción 84. En algunos ejemplos, el decodificador de vídeo 30 puede realizar una pasada de decodificación que en general es recíproca a la pasada de codificación descrita con respecto al codificador de vídeo 20 de la FIG. 2.
[0132] Durante el proceso de decodificación, el decodificador de vídeo 30 recibe un flujo de bits de vídeo codificado que representa bloques de vídeo de un segmento de vídeo codificado y elementos sintácticos asociados, desde el codificador de vídeo 20. La unidad de decodificación por entropía 80 del decodificador de vídeo 30 decodifica por entropía el flujo de bits para generar coeficientes cuantizados, vectores de movimiento y otros elementos sintácticos. La unidad de decodificación por entropía 80 envía los vectores de movimiento y otros elementos sintácticos a la unidad de procesamiento de predicción 81. El decodificador de vídeo 30 puede recibir los elementos sintácticos en el nivel de segmento de vídeo y/o en el nivel de bloque de vídeo.
[0133] En algunos ejemplos, la unidad de decodificación por entropía 80 puede ser operable para realizar las técnicas de esta divulgación. Sin embargo, los aspectos de esta divulgación no se limitan a lo anterior. En ejemplos alternativos, a alguna otra unidad del decodificador de vídeo 30, tal como un procesador, o a cualquier otra unidad del decodificador de vídeo 30 se le puede encargar la realización de las técnicas de esta divulgación. Como ejemplo, la unidad de decodificación por entropía 80 puede ser operable para decodificar un tamaño de un primer subconjunto de una matriz de cuantización, decodificar los valores de coeficiente del primer subconjunto y predecir los valores de coeficiente de un segundo subconjunto de la matriz de cuantización. También, en algunos ejemplos, las técnicas de esta divulgación pueden dividirse entre una o más de las unidades del decodificador de vídeo 30.
[0134] Cuando el segmento de vídeo se codifica como un segmento intracodificado (I), la unidad de procesamiento de intrapredicción 84 de la unidad de procesamiento de predicción 81 puede generar datos de predicción para un bloque de vídeo del segmento de vídeo actual basándose en un modo de intrapredicción señalado, y datos de bloques previamente decodificados de la trama o imagen actual. Cuando la trama de vídeo se codifica como un segmento intercodificado (es decir, B, P o GPB), la unidad de compensación de movimiento 82 de la unidad de procesamiento de predicción 81 produce bloques predictivos para un bloque de vídeo del segmento de vídeo actual basándose en los vectores de movimiento y en otros elementos sintácticos recibidos desde la unidad de decodificación por entropía 80. Los bloques predictivos se pueden producir a partir de una de las imágenes de referencia dentro de una de las listas de imágenes de referencia. El decodificador de vídeo 30 puede construir las listas de tramas de referencia, Lista 0 y Lista 1, mediante técnicas de construcción predeterminadas basadas en imágenes de referencia almacenadas en la memoria de imágenes de referencia 92.
[0135] La unidad de compensación de movimiento 82 determina la información de predicción para un bloque de vídeo del segmento de vídeo actual analizando los vectores de movimiento y otros elementos sintácticos, y usa la información de predicción para generar los bloques predictivos para el bloque de vídeo actual que se esté decodificando. Por ejemplo, la unidad de compensación de movimiento 82 usa algunos de los elementos sintácticos recibidos para determinar un modo de predicción (por ejemplo, intrapredicción o interpredicción) usado para codificar los bloques de vídeo del segmento de vídeo, un tipo de segmento de interpredicción (por ejemplo, el segmento B, el segmento P o el segmento GPB), información de construcción para una o más de las listas de imágenes de referencia para el segmento, vectores de movimiento para cada bloque de vídeo intercodificado del segmento, un estado de interpredicción para cada bloque de vídeo intercodificado del segmento y otro tipo de información para decodificar los bloques de vídeo en el segmento de vídeo actual.
[0136] La unidad de compensación de movimiento 82 también puede realizar la interpolación basándose en unos filtros de interpolación. La unidad de compensación de movimiento 82 puede usar filtros de interpolación como los usados por el codificador de vídeo 20 durante la codificación de los bloques de vídeo, para calcular valores interpolados para píxeles de subenteros de los bloques de referencia. En este caso, la unidad de compensación de movimiento 82 puede determinar los filtros de interpolación usados por el codificador de vídeo 20 a partir de los elementos sintácticos recibidos y usar los filtros de interpolación para producir bloques predictivos.
[0137] La unidad de cuantización inversa 86 cuantiza de manera inversa, es decir, descuantiza, los coeficientes de transformada cuantizados, proporcionados en el flujo de bits y decodificados por la unidad de decodificación por entropía 80. El proceso de cuantización inversa puede incluir el uso de un parámetro de cuantización y/o una matriz de cuantización calculada y señalada por el codificador de vídeo 20 para cada bloque de vídeo en el segmento de vídeo para determinar un grado de cuantización y, de igual manera, un grado de cuantización inversa que debería aplicarse. En particular, la unidad de cuantización inversa 86 puede configurarse para decodificar una matriz de cuantización recibida que se haya codificado de acuerdo con las técnicas descritas anteriormente. En particular, el decodificador de vídeo 30 puede configurarse para sobremuestrear una matriz de cuantización recibida que se haya submuestreado de acuerdo con las técnicas de esta divulgación.
[0138] En un ejemplo de la divulgación, el decodificador de vídeo 30 puede configurarse para recibir una matriz de cuantización codificada con valores submuestreados en un flujo de bits codificado, sobremuestrear un primer conjunto de valores reducidos en la matriz de cuantización mediante un primer factor de sobremuestreo para generar un primer conjunto de valores, sobremuestrear un segundo conjunto de valores reducidos en la matriz de cuantización mediante un segundo factor de sobremuestreo para generar un segundo conjunto de valores, y cuantizar de manera inversa un bloque de coeficientes de transformada con los primer y segundo conjunto de valores.
[0139] La unidad de procesamiento de transformada inversa 88 aplica una transformada inversa, por ejemplo, una DCT inversa, una transformada inversa de enteros o un proceso de transformada inversa conceptualmente similar, a los coeficientes de transformada con el fin de generar bloques residuales en el dominio de píxeles.
[0140] Después de que la unidad de compensación de movimiento 82 genera el bloque predictivo para el bloque de vídeo actual basándose en los vectores de movimiento y en otros elementos sintácticos, el decodificador de vídeo 30 forma un bloque de vídeo decodificado sumando los bloques residuales procedentes de la unidad de procesamiento de transformada inversa 88 a los bloques predictivos correspondientes generados por la unidad de compensación de movimiento 82. El sumador 90 representa el componente o los componentes que realizan esta operación de suma. Si se desea, también se puede aplicar un filtro de desbloqueo para filtrar los bloques decodificados con el fin de eliminar distorsiones de bloqueo. También se pueden usar otros filtros de bucle (en el bucle de codificación o bien después del bucle de codificación) para suavizar las transiciones de píxeles o mejorar de otro modo la calidad del vídeo. Los bloques de vídeo decodificados de una trama o imagen dada se almacenan a continuación en la memoria de imágenes de referencia 92, que almacena imágenes de referencia usadas para una posterior compensación de movimiento. La memoria de imágenes de referencia 92 almacena también el vídeo decodificado para su presentación posterior en un dispositivo de visualización, tal como el dispositivo de visualización 32 de la FIG. 1.
[0141] La FIG. 10 es un diagrama de flujo que ilustra un procedimiento de codificación de vídeo de acuerdo con las técnicas de esta divulgación. El procedimiento de la FIG. 10 puede realizarse por el codificador de vídeo 20. El codificador de vídeo 20 puede configurarse para determinar una matriz de cuantización que incluya una pluralidad de valores (920), submuestrear un primer conjunto de valores en la matriz de cuantización mediante un primer factor de submuestreo para generar un primer conjunto de valores submuestreados (922) y submuestrear un segundo conjunto de valores en la matriz de cuantización mediante un segundo factor de submuestreo para generar un segundo conjunto de valores de submuestreo (924).
[0142] En un ejemplo de la divulgación, el codificador de vídeo 20 puede determinar el primer factor de submuestreo basándose en una ubicación del primer conjunto de valores en la matriz de cuantización, y determinar el segundo factor de submuestreo basándose en una ubicación del segundo conjunto de valores en la matriz de cuantización. En un ejemplo específico, el primer conjunto de valores incluye sólo el valor en la ubicación (0,0) de la matriz de cuantización, en el que se determina que el primer factor de submuestreo es 1, y en el que se determina que el segundo factor de submuestreo es uno de 2 y 4.
[0143] El codificador de vídeo 20 se puede configurar para determinar los puntos de transición en la matriz de cuantización para determinar cómo se submuestrean los valores de la matriz de cuantización. En un ejemplo, el codificador de vídeo 20 puede configurarse para determinar un primer punto de transición en la matriz de cuantización, en el que los valores ubicados entre el primer punto de transición y el origen de la matriz de cuantización no se submuestrean, determinar un segundo punto de transición en la matriz de cuantización, en el que el primer conjunto de valores en la matriz de cuantización se ubica entre el primer punto de transición y el segundo punto de transición, y determinar un tercer punto de transición en la matriz de cuantización, en el que el segundo conjunto de valores en la matriz de cuantización se ubica entre el segundo punto de transición y el tercer punto de transición. El codificador de vídeo 20 puede configurarse para señalar los primer, segundo y tercer puntos de transición, y los primer y segundo factores de submuestreo en el flujo de bits codificado.
[0144] En un ejemplo de la divulgación, el codificador de vídeo 20 puede configurarse para señalar los valores submuestreados prediciendo uno de los valores submuestreados a lo largo de un orden de escaneo en los primer y segundo conjuntos de valores submuestreados a partir de un valor submuestreado anterior a lo largo del orden de escaneo en los primer y segundo conjuntos de valores submuestreados, en el que los valores submuestreados en el primer conjunto pueden usarse para predecir los valores submuestreados en el segundo conjunto.
[0145] En otro ejemplo de la divulgación, submuestrear el primer conjunto de valores en la matriz de cuantización comprende promediar un primer número de valores de la matriz de cuantización en el primer conjunto de valores para generar valores en el primer conjunto de valores submuestreados, en el que el primer número se determina a partir del primer factor de submuestreo, y en el que submuestrear el segundo conjunto de valores en la matriz de cuantización comprende promediar un segundo número de valores de matriz de cuantización en el segundo conjunto de valores para generar valores en el segundo conjunto de valores de submuestreo, en el que el segundo número se determina a partir del segundo factor de submuestreo.
[0146] El codificador de vídeo 20 puede configurarse además para cuantizar los valores del coeficiente de transformada en un bloque de coeficientes de transformada de acuerdo con la matriz de cuantización para formar los coeficientes de transformada cuantizados (926). El codificador de vídeo 20 puede configurarse además para generar un flujo de bits codificado que incluya el primer conjunto de valores submuestreados y el segundo conjunto de valores submuestreados (928).
[0147] La FIG. 11 es un diagrama de flujo que ilustra un procedimiento de decodificación de vídeo de acuerdo con las técnicas de esta divulgación. El procedimiento de la FIG. 11 puede realizarse por el decodificador de vídeo 30. El decodificador de vídeo 30 puede configurarse para recibir una matriz de cuantización codificada con valores submuestreados en un flujo de bits codificado (1020), sobremuestrear un primer conjunto de valores submuestreados en la matriz de cuantización mediante un primer factor de sobremuestreo para generar un primer conjunto de valores (1022), sobremuestrear un segundo conjunto de valores submuestreados en la matriz de cuantización mediante un segundo factor de submuestreo para generar un segundo conjunto de valores (1024), y cuantizar de manera inversa un bloque de coeficientes de transformada con los primer y segundo conjunto de valores (1026).
[0148] En un ejemplo de la divulgación, el decodificador de vídeo 30 puede configurarse para determinar el primer factor de sobremuestreo basándose en una ubicación del primer conjunto de valores submuestreados en la matriz de cuantización, y para determinar el segundo factor de sobremuestreo basándose en una ubicación del segundo conjunto de valores submuestreados en la matriz de cuantización. En un ejemplo específico, el primer conjunto de valores submuestreados incluye sólo el valor en la ubicación (0,0) de la matriz de cuantización, en el que se determina que el primer factor de sobremuestreo es 1, y en el que se determina que el segundo factor de sobremuestreo es uno de 2 y 4.
[0149] En otro ejemplo de la divulgación, el decodificador de vídeo 30 se puede configurar para determinar un primer punto de transición en la matriz de cuantización, en el que los valores de la matriz de cuantización ubicados entre el primer punto de transición y el origen de la matriz de cuantización no se submuestrean, determinar un segundo punto de transición en la matriz de cuantización, en el que el primer conjunto de valores submuestreados en la matriz de cuantización se ubica entre el primer punto de transición y el segundo punto de transición, y determinar un tercer punto de transición en la matriz de cuantización, en el que el segundo conjunto de valores submuestreados en la matriz de cuantización se encuentra entre el segundo punto de transición y el tercer punto de transición. En este ejemplo, los primer, segundo y tercer puntos de transición, y los primer y segundo factores de submuestreo, se reciben en el flujo de bits codificado.
[0150] En otro ejemplo de la divulgación, el decodificador de vídeo 30 está configurado para predecir cada uno de los valores sucesivos submuestreados a lo largo de un orden de escaneo en los primer y segundo conjuntos de valores submuestreados a partir de un valor submuestreado anterior a lo largo del orden de escaneo en los primer y segundo conjuntos de valores submuestreados, en el que los valores submuestreados en el primer conjunto pueden usarse para predecir los valores submuestreados en el segundo conjunto.
[0151] En otro ejemplo de la divulgación, sobremuestrear el primer conjunto de valores en la matriz de cuantización replicando un valor submuestreado en el primer conjunto de valores submuestreados para un primer número del primer conjunto de valores, en el que el primer número se determina a partir del primer factor de sobremuestreo, y sobremuestrear el segundo conjunto de valores en la matriz de cuantización comprende replicar un valor submuestreado en el segundo conjunto de valores submuestreados para un segundo número del segundo conjunto de valores, en el que el segundo número se determina a partir del segundo factor de sobremuestreo.
[0152] En un ejemplo de la divulgación, se utilizan diferentes técnicas de sobremuestreo para sobremuestrear los primer y segundo conjuntos de valores submuestreados. En un ejemplo específico, al menos los primer y segundo conjuntos de valores se sobremuestrea usando una interpolación bilineal.
[0153] El decodificador de vídeo 30 puede configurarse además para transformar de manera inversa el bloque cuantizado inverso de los coeficientes de transformada para formar un bloque residual de datos de vídeo, y para realizar un proceso de predicción sobre el bloque residual de datos de vídeo para formar un bloque decodificado de datos de vídeo.
[0154] En uno o más ejemplos, las funciones descritas pueden implementarse en hardware, software, firmware o en cualquier combinación de los mismos. Si se implementan en software, las funciones se pueden almacenar en, o transmitir a través de, un medio legible por ordenador como una o más instrucciones o código y ejecutarse mediante una unidad de procesamiento basada en hardware. Los medios legibles por ordenador pueden incluir medios de almacenamiento legibles por ordenador, que correspondan a un medio tangible tal como medios de almacenamiento de datos o medios de comunicación que incluyan cualquier medio que facilite la transferencia de un programa informático desde un lugar a otro, por ejemplo, de acuerdo con un protocolo de comunicación. De esta manera, los medios legibles por ordenador pueden corresponder en general a (1) medios de almacenamiento legibles por ordenador tangibles que sean no transitorios o (2) un medio de comunicación tal como una señal o una onda portadora. Los medios de almacenamiento de datos pueden ser cualquier medio disponible al que se pueda acceder desde uno o más ordenadores o uno o más procesadores para recuperar instrucciones, código y/o estructuras de datos para la implementación de las técnicas descritas en esta divulgación. Un producto de programa informático puede incluir un medio legible por ordenador.
[0155] A modo de ejemplo, y no de limitación, dichos medios de almacenamiento legibles por ordenador pueden comprender RAM, ROM, EEPROM, CD-ROM u otro almacenamiento de disco óptico, almacenamiento de disco magnético u otros dispositivos de almacenamiento magnético, memoria flash o cualquier otro medio que pueda usarse para almacenar un código de programa deseado en forma de instrucciones o estructuras de datos y al que pueda accederse mediante un ordenador. También, cualquier conexión recibe debidamente la denominación de medio legible por ordenador. Por ejemplo, si las instrucciones se transmiten desde una página web, un servidor u otra fuente remota usando un cable coaxial, un cable de fibra óptica, un par trenzado, una línea de abonado digital (DSL) o tecnologías inalámbricas tales como infrarrojos, radio y microondas, entonces el cable coaxial, el cable de fibra óptica, el par trenzado, la DSL o las tecnologías inalámbricas tales como infrarrojos, radio y microondas se incluyen en la definición de medio. Sin embargo, debería entenderse que los medios de almacenamiento legibles por ordenador y los medios de almacenamiento de datos no incluyen conexiones, ondas portadoras, señales u otros medios transitorios, sino que, en cambio, se dirigen a medios de almacenamiento tangibles no transitorios. El término disco, como se usa en el presente documento, incluye un disco compacto (CD), un disco láser, un disco óptico, un disco versátil digital (DVD), un disco flexible y un disco Blu-ray, donde algunos discos reproducen usualmente datos magnéticamente, mientras que otros discos reproducen datos ópticamente con láseres. Las combinaciones de lo anterior también deberían incluirse dentro del alcance de los medios legibles por ordenador.
[0156] Las instrucciones pueden ejecutarse por uno o más procesadores, tales como uno o más procesadores de señales digitales (DSP), microprocesadores de uso general, circuitos integrados específicos de la aplicación (ASIC), matrices de puertas programables por campo (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 módulos de hardware y/o software dedicados configurados para la codificación y la decodificación, o incorporados en un códec combinado. También, las técnicas se podrían implementar completamente en uno o más circuitos o elementos lógicos.
[0157] Las técnicas de la presente divulgación se pueden implementar en una amplia variedad de dispositivos o aparatos, incluidos un equipo manual inalámbrico, un circuito integrado (IC) o un conjunto de IC (por ejemplo, un conjunto de chips). Diversos componentes, módulos o unidades se describen en esta divulgación para enfatizar aspectos funcionales de dispositivos configurados para realizar las técnicas divulgadas, pero no requieren necesariamente su realización mediante diferentes unidades de hardware. En cambio, como se ha descrito anteriormente, diversas unidades se pueden combinar en una unidad de hardware de códec, o proporcionarse por un grupo de unidades de hardware interoperativas, incluidos uno o más procesadores, como se ha descrito anteriormente, conjuntamente con software y/o firmware adecuados.
[0158] Se han descrito diversos ejemplos. Estos y otros ejemplos están dentro del alcance de las siguientes reivindicaciones.

Claims (13)

  1. REIVINDICACIONES
    i . Un procedimiento para decodificación de datos de vídeo que comprende:
    determinar una matriz de cuantización que incluya una pluralidad de valores, la pluralidad de valores que comprende un primer conjunto de valores y un segundo conjunto de valores, en el que el primer conjunto de valores en la matriz de cuantización cubre las entradas de la matriz de cuantización en el rectángulo desde la posición (0, 0) a (last_row, last_col), y en el que el segundo conjunto de valores en la matriz de cuantización cubre las entradas restantes de la matriz de cuantización fuera del rectángulo desde la posición (0,0) hasta (last_row, last_col), y en el que last_row es igual a last_col;
    submuestrear el primer conjunto de valores en la matriz de cuantización mediante un primer factor de submuestreo para generar un primer conjunto de valores submuestreados, en el que el primer factor de submuestreo es 1;
    submuestrear el segundo conjunto de valores en la matriz de cuantización mediante un segundo factor de submuestreo para generar un segundo conjunto de valores submuestreados; y
    generar un flujo de bits codificado que incluya el primer conjunto de valores submuestreados y el segundo conjunto de valores submuestreados,
    caracterizado por que
    el segundo factor de submuestreo es mayor que el primer factor de submuestreo.
  2. 2. El procedimiento según la reivindicación 1, en el que el segundo factor de submuestreo es 2.
  3. 3. El procedimiento según la reivindicación 1,
    en el que la matriz de cuantización tiene un tamaño de 16x16 o 32x32.
  4. 4. El procedimiento según la reivindicación 1, que comprende además:
    predecir los valores de coeficiente del segundo conjunto de valores basados en los valores submuestreados del segundo subconjunto.
  5. 5. El procedimiento según la reivindicación 1, en el que el submuestreo comprende promediar un número de valores de la matriz de cuantización.
  6. 6. El procedimiento según la reivindicación 1, que comprende además:
    realizar un proceso de predicción en un bloque de datos de vídeo para formar un bloque de datos de vídeo residuales;
    transformar los datos de vídeo residuales para formar un bloque de coeficientes de transformada; cuantizar los valores de coeficientes de transformada en el bloque de coeficientes de transformada de acuerdo con la matriz de cuantización para formar coeficientes de transformada cuantizados; y codificar por entropía los coeficientes de transformada cuantizados en el flujo de bits codificado.
  7. 7. Un procedimiento para decodificación de datos de vídeo que comprende:
    recibir una matriz de cuantización codificada con valores submuestreados en un flujo de bits codificado; sobremuestrear un primer conjunto de valores submuestreados en la matriz de cuantización mediante un primer factor de sobremuestreo para generar un primer conjunto de valores, en el que el factor de sobremuestreo es 1, en el que el primer conjunto de valores en la matriz de cuantización cubre las entradas de la matriz de cuantización en el rectángulo desde la posición (0,0) a (last_row, last_col), y en el que last_row es igual a last_col;
    sobremuestrear un segundo conjunto de valores submuestreados en la matriz de cuantización mediante un segundo factor de sobremuestreo para generar un segundo conjunto de valores y en el que el segundo conjunto de valores en la matriz de cuantización cubre las entradas restantes de la matriz de cuantización fuera del rectángulo desde la posición (0,0) a (last_row, last_col); y
    cuantizar de manera inversa un bloque de coeficientes de transformada mediante los primer y segundo conjuntos de valores,
    caracterizado por que
    el segundo factor de sobremuestreo es más alto que el primer factor de sobremuestreo.
  8. 8. El procedimiento según la reivindicación 7, en el que el segundo factor de sobremuestreo es 2.
  9. 9. El procedimiento según la reivindicación 7,
    en el que la matriz de cuantización tiene un tamaño de 16x16 o 32x32.
  10. 10. El procedimiento según la reivindicación 7, que comprende además:
    transformar de manera inversa el bloque cuantizado inverso de los coeficientes de transformada para formar un bloque residual de datos de vídeo; y
    realizar un proceso de predicción en el bloque residual de datos de vídeo para formar un bloque decodificado de datos de vídeo.
  11. 11. Un aparato configurado para codificar datos de vídeo que comprende:
    medios para determinar una matriz de cuantización que incluye una pluralidad de valores, la pluralidad de valores que comprende un primer conjunto de valores y un segundo conjunto de valores, en el que el primer conjunto de valores en la matriz de cuantización cubre las entradas de la matriz de cuantización en el rectángulo desde la posición (0,0) a (last_row, last_col), y en el que el segundo conjunto de valores en la matriz de cuantización cubre las entradas restantes de la matriz de cuantización fuera del rectángulo desde la posición (0,0) hasta (last_row, last_col), y en el que last_row es igual a la última columna; medios para submuestrear el primer conjunto de valores en la matriz de cuantización mediante un primer factor de submuestreo para generar un primer conjunto de valores submuestreados, en el que el primer factor de submuestreo es 1;
    medios para submuestrear el segundo conjunto de valores en la matriz de cuantización mediante un segundo factor de submuestreo para generar un segundo conjunto de valores submuestreados; y medios para generar un flujo de bits codificado que incluya el primer conjunto de valores submuestreados y el segundo conjunto de valores submuestreados,
    caracterizado por que
    el segundo factor de submuestreo es mayor que el primer factor de submuestreo.
  12. 12. Un aparato configurado para decodificar datos de vídeo que comprende:
    medios para recibir una matriz de cuantización codificada con valores submuestreados en un flujo de bits codificado;
    medios para sobremuestrear un primer conjunto de valores submuestreados en la matriz de cuantización mediante un primer factor de submuestreo para generar un primer conjunto de valores, en el que el factor de submuestreo es 1, en el que el primer conjunto de valores en la matriz de cuantización cubre las entradas de la matriz de cuantización en el rectángulo desde la posición (0,0) hasta (last_row, last_col), y en el que last_row es igual a last_col;
    medios para sobremuestrear un segundo conjunto de valores submuestreados en la matriz de cuantización mediante un segundo factor de sobremuestreo para generar un segundo conjunto de valores y en el que el segundo conjunto de valores en la matriz de cuantización cubre las entradas restantes de la matriz de cuantización fuera del rectángulo desde la posición (0, 0) a (last_row, last_col); y
    medios para cuantizar de manera inversa un bloque de coeficientes de transformada con los primer y segundo conjunto de valores,
    caracterizado por que
    el segundo factor de sobremuestreo es más alto que el primer factor de sobremuestreo.
  13. 13. Un medio de almacenamiento legible por ordenador que almacena instrucciones que, cuando se ejecutan, hacen que uno o más procesadores de un dispositivo configurado codifiquen datos de vídeo de acuerdo con el procedimiento según cualquiera de las reivindicaciones 1 a 10.
ES12788057T 2011-11-07 2012-11-07 Matrices de cuantización de señalización para la codificación de vídeo Active ES2715838T3 (es)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
US201161556785P 2011-11-07 2011-11-07
US201261594885P 2012-02-03 2012-02-03
US201261597107P 2012-02-09 2012-02-09
US201261605654P 2012-03-01 2012-03-01
US13/670,011 US10277915B2 (en) 2011-11-07 2012-11-06 Signaling quantization matrices for video coding
PCT/US2012/063943 WO2013070766A1 (en) 2011-11-07 2012-11-07 Signaling quantization matrices for video coding

Publications (1)

Publication Number Publication Date
ES2715838T3 true ES2715838T3 (es) 2019-06-06

Family

ID=48223683

Family Applications (1)

Application Number Title Priority Date Filing Date
ES12788057T Active ES2715838T3 (es) 2011-11-07 2012-11-07 Matrices de cuantización de señalización para la codificación de vídeo

Country Status (19)

Country Link
US (1) US10277915B2 (es)
EP (1) EP2777263B1 (es)
JP (1) JP5902311B2 (es)
KR (1) KR101895652B1 (es)
CN (1) CN104137546B (es)
AU (1) AU2012335896B2 (es)
BR (1) BR112014011054B1 (es)
CA (1) CA2853835C (es)
ES (1) ES2715838T3 (es)
HK (1) HK1199995A1 (es)
HU (1) HUE043156T2 (es)
IL (1) IL232284A (es)
IN (1) IN2014CN03345A (es)
MY (1) MY174583A (es)
RU (1) RU2582579C2 (es)
SG (1) SG11201401566UA (es)
TW (1) TWI520585B (es)
WO (1) WO2013070766A1 (es)
ZA (1) ZA201404179B (es)

Families Citing this family (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8385404B2 (en) 2008-09-11 2013-02-26 Google Inc. System and method for video encoding using constructed reference frame
US9167252B2 (en) 2010-12-01 2015-10-20 Texas Instruments Incorporated Quantization matrix compression in video coding
JP5741076B2 (ja) 2010-12-09 2015-07-01 ソニー株式会社 画像処理装置及び画像処理方法
US8638854B1 (en) 2011-04-07 2014-01-28 Google Inc. Apparatus and method for creating an alternate reference frame for video compression using maximal differences
JP6312879B2 (ja) * 2011-11-07 2018-04-18 キヤノン株式会社 画像符号化装置、画像符号化方法及びプログラム、画像復号装置、画像復号方法及びプログラム
JP6120490B2 (ja) 2011-11-07 2017-04-26 キヤノン株式会社 画像符号化装置、画像符号化方法及びプログラム、画像復号装置、画像復号方法及びプログラム
CN107580230B (zh) * 2012-01-20 2021-08-20 韩国电子通信研究院 视频解码方法和视频编码方法
US9313497B2 (en) * 2012-01-25 2016-04-12 Intel Corporation Systems, methods, and computer program products for transform coefficient sub-sampling
AU2015258162B2 (en) * 2012-02-29 2017-01-12 Sony Corporation Image Processing Device and Method
TWI519133B (zh) 2012-02-29 2016-01-21 新力股份有限公司 影像處理裝置及方法
US20130272391A1 (en) * 2012-04-16 2013-10-17 Futurewei Technologies, Inc. Method and Apparatus of Quantization Matrix Coding
US9609341B1 (en) * 2012-04-23 2017-03-28 Google Inc. Video data encoding and decoding using reference picture lists
CN108632611A (zh) 2012-06-29 2018-10-09 韩国电子通信研究院 视频解码方法、视频编码方法和计算机可读介质
US9445124B2 (en) * 2013-03-15 2016-09-13 Samsung Electronics Co., Ltd. Electronic system with frequency mechanism and method of operation thereof
RU2624464C1 (ru) * 2013-07-24 2017-07-04 МАЙКРОСОФТ ТЕКНОЛОДЖИ ЛАЙСЕНСИНГ, ЭлЭлСи Порядки сканирования для кодирования без преобразования
US10516898B2 (en) 2013-10-10 2019-12-24 Intel Corporation Systems, methods, and computer program products for scalable video coding based on coefficient sampling
US9716884B2 (en) * 2014-03-20 2017-07-25 Hfi Innovation Inc. Method of signaling for mode selection in 3D and multi-view video coding
US10863188B2 (en) * 2014-09-19 2020-12-08 Futurewei Technologies, Inc. Method and apparatus for non-uniform mapping for quantization matrix coefficients between different sizes of quantization matrices in image/video coding
CN108141593B (zh) * 2015-07-31 2022-05-03 港大科桥有限公司 用于针对深度视频的高效帧内编码的基于深度不连续的方法
EP3449677B1 (en) * 2016-04-28 2021-12-29 Sony Group Corporation Transmit power of pilot signals
EP3716622A1 (en) * 2017-11-24 2020-09-30 Sony Corporation Image processing device and method
US10491897B2 (en) 2018-04-13 2019-11-26 Google Llc Spatially adaptive quantization-aware deblocking filter
GB2578633B (en) * 2018-11-02 2021-10-13 Advanced Risc Mach Ltd Encoding data arrays
JP2020098986A (ja) * 2018-12-17 2020-06-25 キヤノン株式会社 画像符号化装置及び画像復号装置及びそれらの制御方法及びプログラム
JP2020098983A (ja) * 2018-12-17 2020-06-25 キヤノン株式会社 画像符号化装置、画像符号化方法、画像復号装置、画像復号方法
JP2020098984A (ja) * 2018-12-17 2020-06-25 キヤノン株式会社 画像符号化装置及び画像復号装置及びそれらの制御方法及びプログラム
US11470329B2 (en) * 2018-12-26 2022-10-11 Tencent America LLC Method and apparatus for video coding
KR20200080187A (ko) * 2018-12-26 2020-07-06 한국전자통신연구원 양자화 행렬 부호화/복호화 방법, 장치 및 비트스트림을 저장한 기록 매체
CN114009043A (zh) * 2019-06-03 2022-02-01 Lg电子株式会社 基于矩阵的帧内预测装置和方法
US20220286692A1 (en) * 2019-08-27 2022-09-08 Hyundai Motor Company Video encoding and decoding using differential encoding
WO2021120122A1 (zh) * 2019-12-19 2021-06-24 Oppo广东移动通信有限公司 图像分量预测方法、编码器、解码器以及存储介质
CN111586411B (zh) * 2020-05-06 2022-07-12 深圳市梦网视讯有限公司 一种低对比度视频编码方法、系统及设备

Family Cites Families (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3202433B2 (ja) * 1993-09-17 2001-08-27 株式会社リコー 量子化装置、逆量子化装置及び画像処理装置並びに量子化方法、逆量子化方法及び画像処理方法
JPH07123269A (ja) * 1993-10-22 1995-05-12 Fuji Xerox Co Ltd 画像信号の符号化装置
US5489943A (en) * 1994-02-14 1996-02-06 Sony Corporation One-pass adaptive bit rate control
US5629780A (en) 1994-12-19 1997-05-13 The United States Of America As Represented By The Administrator Of The National Aeronautics And Space Administration Image data compression having minimum perceptual error
US5708732A (en) * 1996-03-06 1998-01-13 Hewlett-Packard Company Fast DCT domain downsampling and inverse motion compensation
EP0903042B1 (en) * 1997-02-08 2002-05-29 Matsushita Electric Industrial Co., Ltd. Quantization matrix for still and moving picture coding
US6487249B2 (en) 1998-10-09 2002-11-26 Matsushita Electric Industrial Co., Ltd. Efficient down conversion system for 2:1 decimation
US6647061B1 (en) 2000-06-09 2003-11-11 General Instrument Corporation Video size conversion and transcoding from MPEG-2 to MPEG-4
US6771703B1 (en) 2000-06-30 2004-08-03 Emc Corporation Efficient scaling of nonscalable MPEG-2 Video
EP1231794A1 (en) * 2001-02-09 2002-08-14 STMicroelectronics S.r.l. A process for changing the resolution of MPEG bitstreams, a system and a computer program product therefor
US20020196854A1 (en) * 2001-06-15 2002-12-26 Jongil Kim Fast video encoder using adaptive hierarchical video processing in a down-sampled domain
US7123655B2 (en) 2001-08-09 2006-10-17 Sharp Laboratories Of America, Inc. Method for reduced bit-depth quantization
US7412003B2 (en) * 2003-09-17 2008-08-12 Texas Instruments Incorporated Transcoders and methods
JP4705921B2 (ja) 2004-01-20 2011-06-22 パナソニック株式会社 量子化マトリクスおよび動画像の復号化方法、復号化装置、プログラムおよび記録媒体
US7365748B2 (en) * 2004-08-12 2008-04-29 Broadcom Corporation Unique method for performing horizontal and vertical video decimation within a wireless device
RU2378790C1 (ru) 2005-09-27 2010-01-10 Квэлкомм Инкорпорейтед Методики масштабируемости на основе информации содержимого
US8879856B2 (en) 2005-09-27 2014-11-04 Qualcomm Incorporated Content driven transcoder that orchestrates multimedia transcoding using content information
US7965896B2 (en) * 2006-10-12 2011-06-21 Kabushiki Kaisha Toshiba Method and apparatus for encoding image
KR100848816B1 (ko) * 2007-01-29 2008-07-28 경희대학교 산학협력단 정수 dct를 이용한 영상 이미지의 크기 변환 방법
WO2009046438A1 (en) * 2007-10-05 2009-04-09 Dolby Laboratories Licensing Corp. Media fingerprints that reliably correspond to media content
WO2009050897A1 (ja) * 2007-10-19 2009-04-23 Panasonic Corporation 符号化レート変換装置、符号化レート変換方法および集積回路
KR101426272B1 (ko) 2008-03-10 2014-08-07 삼성전자주식회사 영상 부호화장치 및 영상 복호화장치
US8964828B2 (en) 2008-08-19 2015-02-24 Qualcomm Incorporated Power and computational load management techniques in video processing
US8948270B2 (en) 2008-08-19 2015-02-03 Qualcomm Incorporated Power and computational load management techniques in video processing
IT1392673B1 (it) * 2009-01-13 2012-03-16 Saipem Spa Procedimento per l'ottenimento di 1-butene ad elevata purezza da miscele idrocarburiche c4
AU2010220454B2 (en) 2009-03-02 2015-02-05 Interdigital Vc Holdings, Inc. Method and device for displaying a sequence of pictures
US20110274162A1 (en) * 2010-05-04 2011-11-10 Minhua Zhou Coding Unit Quantization Parameters in Video Coding
US9167252B2 (en) * 2010-12-01 2015-10-20 Texas Instruments Incorporated Quantization matrix compression in video coding
CA2770799A1 (en) * 2011-03-11 2012-09-11 Research In Motion Limited Method and system using prediction and error correction for the compact representation of quantization matrices in video compression
CA2836161C (en) * 2011-08-23 2017-12-19 Mediatek Singapore Pte. Ltd. Method and system of transform block processing according to quantization matrix in video coding
KR20130049523A (ko) 2011-11-04 2013-05-14 오수미 인트라 예측 블록 생성 장치
KR20130049525A (ko) 2011-11-04 2013-05-14 오수미 잔차 블록 복원을 위한 역변환 방법
WO2013157825A1 (ko) 2012-04-16 2013-10-24 한국전자통신연구원 영상 부호화/복호화 방법 및 장치
US20130272391A1 (en) * 2012-04-16 2013-10-17 Futurewei Technologies, Inc. Method and Apparatus of Quantization Matrix Coding

Also Published As

Publication number Publication date
BR112014011054B1 (pt) 2022-06-07
CN104137546A (zh) 2014-11-05
KR20140089583A (ko) 2014-07-15
IN2014CN03345A (es) 2015-07-03
IL232284A (en) 2017-09-28
AU2012335896B2 (en) 2016-05-12
KR101895652B1 (ko) 2018-09-05
ZA201404179B (en) 2020-11-25
JP5902311B2 (ja) 2016-04-13
BR112014011054A2 (pt) 2017-05-02
TWI520585B (zh) 2016-02-01
US20130114695A1 (en) 2013-05-09
WO2013070766A1 (en) 2013-05-16
US10277915B2 (en) 2019-04-30
SG11201401566UA (en) 2014-09-26
CN104137546B (zh) 2018-01-26
IL232284A0 (en) 2014-06-30
RU2014123320A (ru) 2015-12-20
TW201334549A (zh) 2013-08-16
JP2014535250A (ja) 2014-12-25
HUE043156T2 (hu) 2019-08-28
EP2777263B1 (en) 2018-12-19
RU2582579C2 (ru) 2016-04-27
CA2853835A1 (en) 2013-05-16
EP2777263A1 (en) 2014-09-17
AU2012335896A1 (en) 2014-05-29
MY174583A (en) 2020-04-28
HK1199995A1 (en) 2015-07-24
CA2853835C (en) 2017-02-28

Similar Documents

Publication Publication Date Title
ES2715838T3 (es) Matrices de cuantización de señalización para la codificación de vídeo
KR102618393B1 (ko) 화면내 예측 모드 부호화/복호화 방법 및 장치
ES2611349T3 (es) Codificación de Indicador de bloque codificado (CBF) para el formato de muestra 4:2:2 en codificación de vídeo
TWI766844B (zh) 針對視訊寫碼使用與位置相關之預測組合之改良視訊幀內預測
ES2864623T3 (es) Codificación de parámetros de cuantificación (QP) en codificación de video
ES2608595T3 (es) Mejora del rendimiento para la codificación del nivel de coeficientes de la CABAC
EP3005698B1 (en) Residual differential pulse code modulation (dpcm) extensions and harmonization with transform skip, rotation, and scans
ES2633947T3 (es) Predicción de paletas en la codificación de vídeo basada en paleta
ES2637490T3 (es) Grupos de coeficientes y codificación de coeficientes para barridos de coeficientes
KR102227898B1 (ko) 비디오 코딩에서 부호 데이터 은닉의 디스에이블링
EP2751999B1 (en) Intra prediction mode coding with directional partitions
ES2810253T3 (es) Reposicionamiento de bloques residuales de predicción en codificación de vídeo
KR102660880B1 (ko) 인트라 예측 방법 및 그 장치
KR101929084B1 (ko) 변환 스킵 모드에서의 유의 계수 정보의 코딩
ES2677100T3 (es) Filtrado de bucle alrededor de los límites de segmento o de límites de mosaico en la codificación de video
ES2750124T3 (es) Elementos sintácticos de señalización para coeficientes de transformada para subconjuntos de una unidad de codificación a nivel de hoja
KR20140130466A (ko) B 슬라이스에서의 예측 유닛의 단방향성 인터 예측으로의 제한
KR20200007044A (ko) 인트라-프레임 예측 방법 및 장치
CN117378200A (zh) 视频译码中的推导的帧内预测模式和最可能模式