ES2810253T3 - Reposicionamiento de bloques residuales de predicción en codificación de vídeo - Google Patents

Reposicionamiento de bloques residuales de predicción en codificación de vídeo Download PDF

Info

Publication number
ES2810253T3
ES2810253T3 ES14727301T ES14727301T ES2810253T3 ES 2810253 T3 ES2810253 T3 ES 2810253T3 ES 14727301 T ES14727301 T ES 14727301T ES 14727301 T ES14727301 T ES 14727301T ES 2810253 T3 ES2810253 T3 ES 2810253T3
Authority
ES
Spain
Prior art keywords
residual
block
residual block
mode
data
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
ES14727301T
Other languages
English (en)
Inventor
Rajan Laxman Joshi
Marta Karczewicz
Rojals Joel Sole
Chao Pang
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
Priority claimed from US14/259,046 external-priority patent/US9549182B2/en
Application filed by Qualcomm Inc filed Critical Qualcomm Inc
Application granted granted Critical
Publication of ES2810253T3 publication Critical patent/ES2810253T3/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/85Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression
    • H04N19/88Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression involving rearrangement of data among different coding units, e.g. shuffling, interleaving, scrambling or permutation of pixel data or permutation of transform coefficient data among different blocks
    • 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/129Scanning of coding units, e.g. zig-zag scan of transform coefficients or flexible macroblock ordering [FMO]
    • 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
    • H04N19/159Prediction type, e.g. intra-frame, inter-frame or bidirectional frame prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/46Embedding additional information in the video signal during the compression process

Landscapes

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

Abstract

Un procedimiento para decodificar datos de vídeo, comprendiendo el procedimiento: decodificar al menos un bloque residual de datos de vídeo, usando el modo de omisión de transformación en un modo de codificación con pérdidas, en el que, en el modo de codificación con pérdidas usando el modo de omisión de transformación, la transformación no se aplica para bloques residuales que tienen un tamaño de bloque hasta un tamaño de bloque máximo; y decodificar al menos un bloque residual de datos de vídeo en un modo de codificación sin pérdidas, en el que, en el modo de codificación sin pérdidas, la transformación y la cuantificación no se aplican al bloque residual; y para el al menos un bloque residual decodificado usando el modo de omisión de transformación en el modo de codificación con pérdidas, y para el al menos un bloque residual decodificado en el modo de codificación sin pérdidas, antes de reconstruir un bloque de vídeo a partir de los datos residuales del bloque residual, determinar (220, 228) si se deben reposicionar los datos residuales del bloque residual basándose en un modo de predicción del bloque residual y basándose en el tamaño del bloque residual, en el que reposicionar los datos residuales comprende uno de rotar o voltear los datos residuales del bloque residual, en el que se hace una determinación de reposicionar los datos residuales del bloque residual cuando el modo de predicción del bloque residual es un modo intra y el tamaño del bloque residual es menor o igual a un tamaño umbral que es menor o igual que el tamaño de bloque máximo para el cual la transformación no se aplica en el modo de codificación con pérdidas, y en el que el tamaño de bloque máximo para el cual la transformación no se aplica en el modo de codificación con pérdidas se indica en uno de un conjunto de parámetros de secuencia (SPS) o un conjunto de parámetros de imagen (PPS) asociados con los datos de vídeo.

Description

DESCRIPCIÓN
Reposicionamiento de bloques residuales de predicción en codificación de vídeo
CAMPO TÉCNICO
[0001] Esta divulgación se refiere a la codificación de vídeo (es decir, codificación de vídeo y decodificación de vídeo), y particularmente a la codificación de vídeo sin pérdidas.
ANTECEDENTES
[0002] Las capacidades de vídeo digital se pueden incorporar a una amplia gama de dispositivos, incluyendo televisiones digitales, sistemas de radiodifusión directa digital, sistemas de radiodifusión inalámbrica, asistentes digitales personales (PDA), ordenadores portátiles o de escritorio, ordenadores de tableta, lectores de libros electrónicos, cámaras digitales, dispositivos de grabación digital, reproductores de medios digitales, dispositivos de videojuegos, consolas de videojuegos, teléfonos móviles o de radio por satélite, los denominados "teléfonos inteligentes", dispositivos de videoconferencia, dispositivos de transmisión continua de vídeo y similares. Los dispositivos de vídeo digital implementan técnicas de compresión de vídeo, tales como las descritas en los estándares definidos por MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264/MPEG-4, parte 10, Codificación de vídeo avanzada (AVC), el estándar de codificación de vídeo de alta eficacia (HEVC) actualmente en desarrollo y las extensiones de dichos estándares. Los dispositivos de vídeo pueden transmitir, recibir, codificar, decodificar y/o almacenar información de vídeo digital más eficazmente implementando dichas técnicas de compresión de vídeo.
[0003] Las técnicas de compresión de vídeo realizan predicción espacial (intraimagen) y/o predicción temporal (interimagen) para reducir o eliminar la redundancia intrínseca a las secuencias de vídeo. Para la codificación de vídeo basada en bloques, un fragmento de vídeo (es decir, una trama de vídeo o una parte de una trama de vídeo) se puede dividir en bloques de vídeo, que también se pueden denominar bloques en árbol, unidades de codificación (CU) y/o nodos de codificación. Los bloques de vídeo en un fragmento intracodificado (I) de una imagen se codifican usando predicción espacial con respecto a muestras de referencia en bloques vecinos en la misma imagen. Los bloques de vídeo en un fragmento intercodificado (P o B) de una imagen pueden usar predicción espacial con respecto a muestras de referencia de bloques vecinos en la misma imagen o predicción temporal con respecto a muestras de referencia en otras imágenes de referencia. Las imágenes se pueden denominar tramas y las imágenes de referencia se pueden denominar tramas de referencia.
[0004] La predicción espacial o temporal da como resultado un bloque predictivo para un bloque que se va a codificar. Los datos residuales representan diferencias de píxeles entre el bloque original que se va a codificar y el bloque predictivo. Un bloque de interpredicción se codifica de acuerdo con un vector de movimiento que apunta a un bloque de muestras de referencia que forman el bloque predictivo dentro de una imagen de referencia decodificada previamente, y los datos residuales que indican la diferencia entre los píxeles del bloque codificado y el bloque predictivo. Un bloque intracodificado se codifica de acuerdo con un modo de intrapredicción y los datos residuales. Para una mayor compresión, los datos residuales se pueden transformar desde el dominio de píxel a un dominio de transformación, dando como resultado coeficientes de transformación residuales, que a continuación se pueden cuantificar. Los coeficientes de transformación cuantificados, dispuestos inicialmente en una matriz bidimensional, se pueden explorar con el fin de producir un vector unidimensional de coeficientes de transformación, y se puede aplicar la codificación por entropía para lograr aún más compresión.
[0005] Kim HY y otros: "Coefficient scan for transform skip mode", n.° JCTVC-J202, 2 de julio de 2012 propone procedimientos de exploración de coeficientes para transformar los residuos omitidos.
BREVE EXPLICACIÓN
[0006] En general, esta divulgación describe técnicas para codificar datos residuales de un bloque residual de predicción en un modo de codificación con pérdidas o en un modo de codificación sin pérdidas, en el que se omite o se evita una transformación. Cuando una transformación no se aplica a un bloque residual, por ejemplo, en un modo de codificación sin pérdidas o en un modo de codificación con pérdidas utilizando un modo de omisión de transformación, los datos residuales con mayor energía, es decir, los valores de diferencia de píxeles mayores que el promedio no se pueden colocar en una esquina superior izquierda del bloque residual, lo que se espera para la codificación por entropía. Las técnicas de esta divulgación incluyen determinar si se deben reposicionar, por ejemplo, rotar o voltear, los datos residuales de un bloque residual antes de codificar los datos residuales del bloque residual.
[0007] De acuerdo con un ejemplo de estándar de codificación de vídeo, como las Extensiones de Rango de Codificación de vídeo de Alta Eficiencia (HEVC), en el modo de codificación con pérdidas, se puede aplicar un modo de omisión de transformación a bloques residuales de cualquier tamaño, y en el modo de codificación sin pérdidas, los procedimientos de transformación y cuantificación se omiten para todos los bloques residuales. De acuerdo con las técnicas de esta divulgación, cuando una transformación no se aplica a un bloque residual en el modo de codificación con pérdidas o en el modo de codificación sin pérdidas, el reposicionamiento de los datos residuales del bloque residual puede estar restringido a ciertos modos de predicción y ciertos tamaños de bloque. Por ejemplo, un codificador de vídeo o un decodificador de vídeo puede determinar si se deben reposicionar los datos residuales del bloque residual basándose en el modo de predicción del bloque residual, por ejemplo, el modo de intrapredicción, el modo de interpredicción o el modo de predicción por copia dentro del bloque y el tamaño del bloque residual. En algunos ejemplos, las técnicas inhabilitan el reposicionamiento de los datos residuales para todos los bloques residuales en el modo de interpredicción y el modo de predicción por copia dentro del bloque. En otros ejemplos, las técnicas determinan reposicionar los bloques residuales en el modo de intrapredicción cuando los bloques residuales tienen tamaños de bloque que son menores o iguales que un tamaño umbral.
[0008] En otro ejemplo, esta divulgación se dirige a un procedimiento de decodificación de datos de vídeo según se define en la reivindicación 1.
[0009] En otro ejemplo, esta divulgación se dirige a un procedimiento de decodificación de datos de vídeo según se define en la reivindicación 2.
[0010] En otro ejemplo más, esta divulgación se dirige a un dispositivo de decodificación de vídeo para decodificar datos de vídeo según se define en la reivindicación 11. En otro ejemplo más, esta divulgación se dirige a un dispositivo de codificación de vídeo para codificar datos de vídeo según se define en la reivindicación 12.
[0011] En un ejemplo adicional, esta divulgación está dirigida a un medio legible por ordenador que comprende instrucciones para codificar datos de vídeo, las instrucciones, cuando se ejecutan, realizan el procedimiento de cualquiera de las reivindicaciones 1 a 10.
[0012] 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
[0013]
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 usar las técnicas descritas en la presente divulgación para codificar datos residuales con omisión de transformació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 para determinar si se debe rotar un bloque residual antes de codificar datos residuales del bloque residual.
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 para determinar si debe rotar un bloque residual antes de reconstruir un bloque de vídeo a partir de datos residuales del bloque residual.
La FIG. 4 es un diagrama de bloques que ilustra una unidad de codificación (CU) de un bloque residual dividido en una o más unidades de predicción (PU) de acuerdo con un modo de predicción de movimiento y múltiples unidades de transformación (TU) de acuerdo con una estructura de datos de árbol cuaternario.
La FIG. 5 es un diagrama de flujo que ilustra una operación a modo de ejemplo de un codificador de vídeo que determina si se debe rotar un bloque residual antes de codificar los datos residuales del bloque residual.
La FIG. 6 es un diagrama de flujo que ilustra una operación a modo de ejemplo de un decodificador de vídeo que determina si se debe rotar un bloque residual antes de reconstruir un bloque de vídeo a partir de datos residuales del bloque residual.
La FIG. 7 es un diagrama de flujo que ilustra una operación de ejemplo para determinar si se debe rotar un bloque residual un valor de rotación predeterminado basándose en un tipo de límite en los bordes del bloque residual.
La FIG. 8 es un diagrama de flujo que ilustra otra operación de ejemplo para determinar si se debe rotar un bloque residual que incluye la determinación de un valor de rotación para el bloque residual basándose en un tipo de límite en los bordes del bloque residual para cada uno de los dos o más posibles valores de rotación.
La FIG. 9 es un diagrama de flujo que ilustra una operación de ejemplo de restricción de tamaños de bloque de bloques residuales para los cuales se puede realizar la rotación cuando no se aplica una transformación a los bloques residuales.
La FIG. 10 es un diagrama de flujo que ilustra una operación de ejemplo de restricción de tamaños de bloque de bloques residuales para los que se puede realizar el volteo de valores de muestra de datos residuales a lo largo de una diagonal cuando no se aplica una transformación a los bloques residuales.
Las FIGS. 11A y 11B son diagramas conceptuales que ilustran bloques residuales codificados utilizando la Modulación de código de impulso diferencial residual (RDPCM).
La FIG. 12 es un diagrama conceptual que ilustra una imagen actual que incluye el bloque actual que se está prediciendo en base a un bloque previamente codificado en la misma imagen usando un modo de predicción por copia dentro del bloque.
La FIG. 13 es un diagrama de flujo que ilustra una operación de ejemplo para determinar si se deben reposicionar los datos residuales de un bloque residual para el que no se aplica una transformación basándose en un modo de predicción del bloque residual y un tamaño del bloque residual.
DESCRIPCIÓN DETALLADA
[0014] Esta divulgación describe técnicas para codificar datos residuales de un bloque residual de predicción con omisión de transformación. Los datos residuales del bloque residual comprenden valores de diferencia de píxeles entre píxeles de un bloque de vídeo a codificar y los píxeles correspondientes de un bloque de predicción generado para el bloque a codificar. Se puede omitir una transformación para un bloque residual cuando el bloque residual se codifica utilizando un modo de codificación sin pérdidas o un modo de codificación con pérdidas en un modo de omisión de transformación. Cuando una transformación no se aplica a un bloque residual, los datos residuales con mayor energía, es decir, valores de diferencia de píxeles mayores que el promedio no se pueden colocar en una esquina superior izquierda del bloque residual, lo que se espera para la codificación por entropía.
[0015] Cuando se omite la transformación para el bloque residual, la eficiencia de la codificación por entropía puede mejorarse rotando el bloque residual durante la codificación para posicionar los datos residuales con una energía superior al promedio en la esquina superior izquierda del bloque residual. Durante la decodificación, la rotación realizada durante la codificación debe revertirse para reconstruir el bloque de vídeo original a partir del bloque residual y un bloque de predicción.
[0016] En el modo de intrapredicción, cuando se omite una transformación para un bloque residual, los datos residuales con una energía más alta que el promedio típicamente se colocan en la esquina inferior derecha del bloque residual. En algunos casos, el bloque residual de intrapredicción puede rotarse automáticamente 180 grados antes de codificar el bloque residual para posicionar los datos residuales con una energía más alta que el promedio en la esquina superior izquierda del bloque residual. Sin embargo, en el modo de interpredicción, puede no ser siempre deseable rotar automáticamente el bloque residual 180 grados.
[0017] De acuerdo con las técnicas de esta divulgación, basándose en una transformación que se omite para un bloque residual, una unidad de reposicionamiento incluida en un codificador de vídeo o un decodificador de vídeo determina si se debe rotar el bloque residual antes de codificar los datos residuales del bloque residual. En algunos ejemplos, un valor de rotación puede señalizarse explícitamente entre el codificador de vídeo y el decodificador de vídeo. En otros ejemplos, el codificador de vídeo y el decodificador de vídeo pueden determinar independientemente si se debe rotar el bloque residual basándose en un tipo de límite en dos o más bordes del bloque residual.
[0018] En el modo de interpredicción, los datos residuales en un límite de unidad de transformación (TU) del bloque residual, es decir, un límite entre dos TU que pertenecen a la misma unidad de predicción (PU), típicamente tienen una energía menor que los datos residuales promedio en el bloque residual. Además, los datos residuales en un límite de PU del bloque residual, es decir, un límite entre dos TU que pertenecen a PU diferentes, típicamente tienen una energía más alta que los datos residuales promedio en el bloque residual. En base a esta observación, las técnicas de esta divulgación incluyen la rotación de un bloque residual de interpredicción con omisión de transformación basada en un tipo de límite en dos o más bordes del bloque residual. Por ejemplo, la unidad de reposicionamiento puede determinar un tipo de límite en dos o más bordes del bloque residual, y luego determinar si se debe rotar el bloque residual basándose en el tipo de límite en los bordes para reposicionar los datos residuales.
[0019] En algunos ejemplos, la unidad de reposicionamiento determina si rota el bloque residual un valor de rotación predeterminado, por ejemplo, 180 grados, o no rota el bloque residual. En otros ejemplos, la unidad de reposicionamiento determina un valor de rotación por el cual rotar el bloque residual de entre dos o más valores de rotación, por ejemplo, 0 grados o sin rotación, 180 grados, 90 grados o 270 grados.
[0020] En el lado de la codificación, la rotación posiciona los datos residuales con mayor energía que el promedio en una esquina superior izquierda del bloque residual rotado antes de codificar los datos residuales del bloque residual para mejorar la eficiencia de codificación por entropía. En el lado de la decodificación, la rotación revierte la rotación realizada durante la codificación y devuelve los datos residuales con una energía más alta que el promedio a su posición original en el bloque residual original para reconstruir un bloque de vídeo a partir del bloque residual utilizando un bloque predictivo.
[0021] Esta divulgación también describe técnicas para codificar datos residuales de un bloque residual de predicción en un modo de codificación con pérdidas o en un modo de codificación sin pérdidas, en el que se omite o se evita una transformación. Las técnicas de esta divulgación incluyen determinar si se deben reposicionar, por ejemplo, rotar o voltear, los datos residuales de un bloque residual antes de codificar los datos residuales del bloque residual. En algunos ejemplos, los datos residuales del bloque residual pueden rotarse como se describió anteriormente. En otros ejemplos, los datos residuales del bloque residual se pueden voltear a lo largo de una diagonal principal o de una antidiagonal del bloque residual, que incluye el intercambio de datos residuales en un primer lado de una diagonal del bloque residual con datos residuales en ubicaciones de imagen especular correspondientes en un segundo lado de la diagonal del bloque residual para voltear los datos residuales.
[0022] De acuerdo con un estándar de codificación de vídeo de ejemplo, las extensiones de rango de codificación de vídeo de alta eficiencia (HEVC), en el modo de codificación con pérdidas, se puede aplicar un modo de omisión de transformación a bloques residuales de cualquier tamaño, y en el modo de codificación sin pérdidas, los procedimientos de transformación y cuantificación se omiten para todos los bloques residuales. Tanto en el modo de codificación con pérdidas como en el modo de codificación sin pérdidas, por lo tanto, la transformación se puede omitir o evitar para todos los tamaños de bloque; así, la rotación se puede aplicar a todos los tamaños de bloque tanto en el modo de intrapredicción como en el modo de interpredicción. En algunos ejemplos, en el modo de codificación con pérdidas, el modo de omisión de transformación puede restringirse para aplicarse solo a bloques residuales que tengan tamaños de hasta un tamaño de bloque máximo de, por ejemplo, 4x4 u 8x8. El tamaño de bloque máximo para el que se permite omitir la transformación en el modo de codificación con pérdidas puede indicarse en uno de un conjunto de parámetros de secuencia (SPS) y un conjunto de parámetros de imagen (PPS) asociados con el bloque residual.
[0023] De acuerdo con las técnicas de esta divulgación, cuando una transformación no se aplica a un bloque residual en el modo de codificación con pérdidas o en el modo de codificación sin pérdidas, el reposicionamiento de los datos residuales del bloque residual puede estar restringido a ciertos modos de predicción y ciertos tamaños de bloque. Por ejemplo, un codificador de vídeo o un decodificador de vídeo puede determinar si se deben reposicionar los datos residuales del bloque residual basándose en el modo de predicción del bloque residual, por ejemplo, el modo de intrapredicción, el modo de interpredicción o el modo de predicción por copia dentro del bloque y el tamaño del bloque residual. En algunos ejemplos, las técnicas inhabilitan el reposicionamiento de los datos residuales para todos los bloques residuales en el modo de interpredicción y el modo de predicción por copia dentro del bloque. En otros ejemplos, las técnicas determinan reposicionar los bloques residuales en el modo de intrapredicción cuando los bloques residuales tienen tamaños de bloque que son menores o iguales que un tamaño umbral. En algunos casos, el tamaño umbral puede ser igual a 4x4 u 8x8. En otros casos, el tamaño umbral puede ser menor o igual que un tamaño de bloque máximo para el cual se permite la omisión de transformación en el modo de codificación con pérdidas. De esta manera, los tamaños de bloque para los que se puede aplicar la rotación a los bloques residuales del modo de intrapredicción son los mismos tanto en el modo de codificación sin pérdidas como en el modo de codificación con pérdidas utilizando el modo de omisión de transformación.
[0024] 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 la presente divulgación para codificar datos residuales con omisión de transformación. Como se muestra en la FIG. 1, el sistema 10 incluye un dispositivo de origen 12 que genera los datos de vídeo codificados que se van a decodificar, por ejemplo, en un momento posterior mediante un dispositivo de destino 14. El dispositivo de origen 12 y el dispositivo de destino 14 pueden comprender cualquiera de una amplia gama de dispositivos, incluyendo ordenadores de escritorio, ordenadores plegables (es decir, portátiles), ordenadores de tableta, decodificadores, equipos telefónicos tales como los denominados teléfonos "inteligentes", los denominados paneles "inteligentes", televisiones, cámaras, dispositivos de visualización, reproductores de medios digitales, consolas de videojuegos, dispositivos de transmisión continua de vídeo o similares. En algunos casos, el dispositivo de origen 12 y el dispositivo de destino 14 pueden estar equipados para la comunicación inalámbrica.
[0025] El dispositivo de destino 14 puede recibir los datos de vídeo codificados que se vayan a decodificar por medio de un enlace 16. El enlace 16 puede comprender cualquier tipo de medio o dispositivo que pueda mover los datos de vídeo codificados desde el dispositivo de origen 12 al dispositivo de destino 14. En un ejemplo, el enlace 16 puede comprender un medio de comunicación para permitir que el dispositivo de origen 12 transmita los datos de vídeo codificados directamente a un dispositivo de destino 14 en tiempo real. Los datos de vídeo codificados se pueden modular de acuerdo con una norma de comunicación, tal como un protocolo de comunicación inalámbrica, y transmitir al dispositivo de destino 14. El medio de comunicación puede comprender cualquier medio de comunicación inalámbrica o por cable, tal como un espectro de radiofrecuencia (RF) o una o más líneas físicas de transmisión. El medio de comunicación puede formar parte de una red basada en paquetes, tal como una red de área local, una red de área amplia o una red global, tal como Internet. El medio de comunicación puede incluir encaminadores, conmutadores, estaciones base o cualquier otro equipo que pueda ser útil para facilitar la comunicación desde el dispositivo de origen 12 al dispositivo de destino 14.
[0026] De forma alternativa, los datos codificados se pueden emitir desde la interfaz de salida 22 a un dispositivo de almacenamiento 34. De forma similar, una interfaz de entrada puede acceder a los datos codificados del dispositivo de almacenamiento 34. El dispositivo de almacenamiento 34 puede incluir cualquiera de una variedad de medios de almacenamiento de datos accedidos localmente o distribuidos, tales como una unidad de disco duro, discos Blu-ray, DVD, CD-ROM, una memoria flash, una memoria volátil o no volátil o cualquier otro medio de almacenamiento digital adecuado para almacenar datos de vídeo codificados. En otro ejemplo, el dispositivo de almacenamiento 34 puede corresponder a un servidor de archivos o a otro dispositivo de almacenamiento intermedio que puede contener el vídeo codificado generado por el dispositivo de origen 12. El dispositivo de destino 14 puede acceder a datos de vídeo almacenados en el dispositivo de almacenamiento 34 a través de transmisión continua o descarga. El servidor de archivos puede ser cualquier tipo de servidor que pueda almacenar datos de vídeo codificados y transmitir esos datos de vídeo codificados al dispositivo de destino 14. Servidores de archivos de ejemplo incluyen un servidor web (por ejemplo, para una página web), un servidor FTP, dispositivos de almacenamiento conectados en red (NAS) o una unidad de disco local. El dispositivo de destino 14 puede acceder a los datos de vídeo codificados 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 Wi-Fi), una conexión por cable (por ejemplo, DSL, módem de cable, etc.) o una combinación de ambas que sea adecuada para acceder a datos de vídeo codificados almacenados en un servidor de archivos. La transmisión de datos de vídeo codificados desde el dispositivo de almacenamiento 34 puede ser una transmisión continua, una transmisión de descarga o una combinación de ambas.
[0027] Las técnicas de la presente divulgación no están limitadas necesariamente a aplicaciones o configuraciones inalámbricas. Las técnicas se pueden aplicar a la codificación de vídeo en apoyo de cualquiera de una variedad de aplicaciones multimedia, tales como radiodifusiones de televisión por aire, transmisiones de televisión por cable, transmisiones de televisión por satélite, transmisiones continuas de vídeo, por ejemplo, a través de 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 admitir una transmisión de vídeo unidireccional o bidireccional para admitir aplicaciones tales como transmisión continua de vídeo, reproducción de vídeo, radiodifusión de vídeo y/o videotelefonía.
[0028] En el ejemplo de la FIG. 1, el dispositivo de origen 12 incluye una fuente de vídeo 18, un codificador de vídeo 20 y una interfaz de salida 22. En algunos casos, la interfaz de salida 22 puede incluir un modulador/demodulador (módem) y/o un transmisor. 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, por ejemplo, una videocámara, un archivo de vídeo que contenga un vídeo capturado previamente, una interfaz de alimentación de vídeo para recibir un vídeo desde un proveedor de contenido de vídeo y/o un sistema de gráficos por ordenador para generar datos de gráficos por ordenador como el vídeo de origen, o una combinación de dichas fuentes. Como 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 la presente divulgación pueden ser aplicables a la codificación de vídeo en general, y se pueden aplicar a aplicaciones inalámbricas y/o por cable.
[0029] El vídeo capturado, precapturado o generado por ordenador se puede codificar mediante el codificador de vídeo 12. Los datos de vídeo codificados se pueden transmitir directamente al dispositivo de destino 14 por medio de la interfaz de salida 22 del dispositivo de origen 20. Los datos de vídeo codificados se pueden almacenar también (o de forma alternativa) en el dispositivo de almacenamiento 34 para un acceso posterior por parte del dispositivo de destino 14 u otros dispositivos, para su decodificación y/o reproducción.
[0030] El dispositivo de destino 14 incluye una interfaz de entrada 28, un decodificador de vídeo 30 y un dispositivo de visualización 32. En algunos casos, la interfaz de entrada 28 puede incluir un receptor y/o un módem. La interfaz de entrada 28 del dispositivo de destino 14 recibe los datos de vídeo codificados a través del enlace 16. Los datos de vídeo codificados comunicados a través del enlace 16, o proporcionados en el dispositivo de almacenamiento 34, pueden incluir una variedad de elementos sintácticos generados por el codificador de vídeo 20 para su uso por un decodificador de vídeo, tal como el decodificador de vídeo 30, en la decodificación de los datos de vídeo. Dichos elementos sintácticos se pueden incluir con los datos de vídeo codificados transmitidos en un medio de comunicación, almacenados en un medio de almacenamiento o almacenados en un servidor de archivos.
[0031] El dispositivo de visualización 32 se puede integrar con, 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 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.
[0032] 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 (intratrama) y/o de predicción temporal (intertramas) para reducir o eliminar la redundancia inherente en las secuencias de vídeo. El codificador de vídeo 20 y el decodificador de vídeo 30 pueden funcionar de acuerdo con una norma de codificación de vídeo, tal como la norma de codificación de vídeo de alta eficacia (HEVC), actualmente en fase de desarrollo, y pueden ajustarse al modelo de prueba de HEVC (HM). De forma alternativa, el codificador de vídeo 20 y el decodificador de vídeo 30 pueden funcionar de acuerdo con otras normas de codificación de vídeo patentadas o industriales. Sin embargo, las técnicas de la presente divulgación no están limitadas a ninguna norma de codificación particular.
[0033] Las normas de codificación de vídeo incluyen ITU-T H.261, ISO/IEC MPEG-1 Visual, ITU-T H.262 o ISO/IEC MPEG-2 Visual, ITU-T H.263, ISO/IEC MPEG-4 Visual e ITU-T H.264 (también conocida como ISO/IEC MPEG-4 AVC), incluyendo sus extensiones de codificación de vídeo escalable (SVC) y de codificación de vídeo multivista (MVC). Además, existe una nueva norma de codificación de vídeo, concretamente la HEVC, que está siendo desarrollada por el Equipo de Colaboración Conjunta en Codificación de Vídeo (JCT-VC) del Grupo de Expertos en Codificación de Vídeo (VCEG) de ITU-T y el Grupo de Expertos en Imágenes en Movimiento (MPEG) de ISO/IEC.
[0034] El "Borrador 7 de trabajo" o "WD7" de la próxima norma HEVC se describe en el documento HCTVC-I1003, de Bross y otros, titulado "High Efficiency Video Coding (HEVC) Text Specification Draft 7", Equipo de Colaboración Conjunta en Codificación de Vídeo (JCT-VC) de ITU-T SG16 WP3 e ISO/IEC JTC1/SC29/WG11 ,9a reunión: Ginebra, Suiza, del 27 de abril de 2012 al 7 de mayo de 2012, que se puede descargar desde http://phenix.it-sudparis.eu/jct/doc end user/documents/9_Geneva/wg11/JCTVC-I1003 -v6. zip. Además, el "Borrador 8 de trabajo" o "WD8" de la norma HEVC se describe en el documento JCTVC-J1003_d7, de Bross y otros, titulado "High Efficiency Video Coding (HEVC) Text Specification Draft 8", Equipo de Colaboración Conjunta en Codificación de Vídeo (j Ct -VC) de ITU-T SG16 WP3 e ISO/IEC JTC1/SC29/WG11, 10a reunión: Estocolmo, Suecia, 11-20 de julio de 2012, que está disponible en http://phenix.intevry.fr/jct/doc_end_user/documents/10_Stockholm/wg11/JCTVC-J1003_v8.zip.
[0035] Un borrador de la próxima norma HEVC se describe en el documento JCTVC-L1003v34, de Bross y otros, "High efficiency video coding (HEVC) text specification draft 10", Equipo de Colaboración Conjunta en Codificación de Vídeo (JCT-VC) de ITU-T SG16 WP3 e ISO/IEC JTC1/SC29/WG11, 12a reunión: Ginebra, CH, 14-23 de enero de 2013, está disponible en http ://phenix.int-evry.fr/jct/doc_end_user/documents/12_Geneva/wg11/JCTVC-L1003-v34.zip. Las extensiones de rango del estándar HEVC se describen en el documento JCTVC-N1005, de Flynn y otros, "High Efficiency Video Coding (HEVC) Range Extensions text specification: Draft 4", Equipo de Colaboración Conjunta en Codificación de Vídeo (JCT-VC) de ITU-T SG16 WP3 e ISO/IEC JTC1/SC29/WG11, 14a reunión: Viena, Austria, 25 de julio - 2 de agosto de 2013, que está disponible en http://phenix.intevry.frjct/doc_end_user/documents/14_Vienna/wg11/JCTVC-N1005-v3.zip.
[0036] 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 cada uno con un codificador y un decodificador de audio, y pueden incluir unidades MUX-DEMUX adecuadas, u otro tipo de hardware y software, para gestionar la codificación tanto de audio como de vídeo en un flujo de datos común o en flujos de datos separados. Si procede, en algunos ejemplos, las unidades MUX-DEMUX se pueden ajustar al protocolo de multiplexor ITU H.223 o a otros protocolos, tales como el protocolo de datagramas de usuario (UDP).
[0037] Tanto el codificador de vídeo 20 como el decodificador de vídeo 30 se pueden implementar como cualquiera de 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 en campo (FPGA), lógica discreta, software, hardware, firmware o cualquier combinación de los mismos. 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 la presente divulgación. Tanto el codificador de vídeo 20 como el decodificador de vídeo 30 se pueden incluir en uno o más codificadores o decodificadores, de los que cualquiera se puede integrar como parte de un codificador/decodificador (CÓDEC) combinado en un dispositivo respectivo.
[0038] El JCT-VC está trabajando en el desarrollo de la norma HEVC. Los esfuerzos de normalización de la HEVC se basan en un modelo en evolución de un dispositivo de codificación de vídeo, denominado modelo de prueba de la HEVC (HM). El HM supone varias capacidades adicionales de los dispositivos de codificación de vídeo relativos a los dispositivos existentes de acuerdo con, por ejemplo, ITU-T H.264/AVC. Por ejemplo, mientras que H.264 proporciona nueve modos de codificación de intrapredicción, el HM puede proporcionar hasta treinta y cuatro modos de codificación de intrapredicción.
[0039] En general, el modelo de trabajo del HM describe que una trama o imagen de vídeo puede dividirse en uno o más fragmentos, que pueden dividirse adicionalmente en una secuencia de bloques de árbol o unidades de codificación más grandes (LCU), que pueden dividirse adicionalmente en unidades de codificación (CU). Una CU en general se refiere a una región de la imagen que sirve como una unidad básica sobre la cual se aplican diversas herramientas de codificación para la compresión de vídeo. Una CU tiene normalmente una componente de luminancia, indicada como Y, y dos componentes de crominancia, indicadas como U y V. En función del formato de muestreo de vídeo, el tamaño de las componentes U y V, en términos del número de muestras, puede ser el mismo o diferente al tamaño de la 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.
[0040] De acuerdo con el HM, una CU incluye un nodo de codificación y una o más unidades de predicción (PU) y/o una o más unidades de transformación (TU) asociadas al nodo de codificación. Los datos sintácticos dentro de un flujo de bits pueden definir un bloque de árbol o LCU, que es la CU más grande en términos del número de píxeles. En general, una CU tiene un propósito similar a un macrobloque de H.264, excepto en que una CU no tiene distinción de tamaño. Por tanto, una CU se puede dividir en sub-CU. En general, las referencias en esta divulgación a una CU se pueden referir a una unidad de codificación más grande de una imagen o a una sub-CU de una LCU. Una LCU se puede dividir en sub-CU y cada sub-CU se puede dividir además en sub-CU. Los datos sintácticos para un flujo de bits pueden definir un número máximo de veces que se puede dividir una LCU, lo que se denomina profundidad de CU. En consecuencia, un flujo de bits también puede definir una unidad de codificación más pequeña (SCU). Esta divulgación también usa el término "bloque" o "porción" para referirse a cualquiera de una CU, una PU o una TU. En general, "porción" puede referirse a cualquier subconjunto de una trama de vídeo.
[0041] Una LCU puede asociarse a una estructura de datos de árbol cuaternario. En general, una estructura de datos de árbol cuaternario incluye un nodo por CU, donde un nodo raíz corresponde a la LCU. Si una CU se divide en cuatro sub-CU, el nodo correspondiente a la CU incluye cuatro nodos hoja o nodos hijo, cada uno de los cuales corresponde a una de las sub-CU. Cada nodo de la estructura de datos de árbol cuaternario puede proporcionar datos sintácticos para la CU correspondiente. Por ejemplo, un nodo en el árbol cuaternario puede incluir un indicador de división, que indica si la CU correspondiente al nodo está dividida en varias sub-CU. Los elementos sintácticos para una CU se pueden definir de manera recursiva y pueden depender de si la CU está dividida en sub-CU. Cuando una CU no se divide adicionalmente, se puede denominar una CU hoja.
[0042] Además, las TU de las CU hojas también se pueden asociar con respectivas estructuras de datos de árbol cuaternario, tales como un árbol cuaternario residual (RQT). Es decir, una CU hoja puede incluir un árbol cuaternario que indica cómo se divide la CU hoja en las TU. Esta divulgación hace referencia al árbol cuaternario que indica cómo una LCU está dividida como un árbol cuaternario de CU y el árbol cuaternario indica cómo una Cu hoja está dividida en varias TU como un árbol cuaternario de TU. El nodo raíz de un árbol cuaternario de TU corresponde en general a una CU hoja, mientras que el nodo raíz de un árbol cuaternario de CU corresponde en general a una LCU. Las TU del árbol cuaternario de TU que no están divididas se denominan TU hoja. Una TU puede tener una conformación cuadrada o no cuadrada.
[0043] Una CU hoja puede incluir una o más PU. En general, una PU representa la totalidad o una parte de la CU correspondiente, y puede incluir datos para recuperar una muestra de referencia para la PU. Por ejemplo, cuando la PU se codifica en intramodo, la PU puede incluir datos que describen un modo de intrapredicción para la PU. Como otro ejemplo, cuando la PU se codifica en intermodo, la PU puede incluir datos que definen un vector de movimiento para la PU. Los datos que definen el vector de movimiento pueden describir, por ejemplo, una componente horizontal del vector de movimiento, una componente vertical del vector de movimiento, una resolución para el vector de movimiento (por ejemplo, una precisión de un cuarto de píxel o una precisión de un octavo de píxel), una trama de referencia a la que apunta el vector de movimiento y/o una lista de referencia (por ejemplo, lista 0 o lista 1) para el vector de movimiento. Los datos de la CU hoja que definen las PU también pueden describir, por ejemplo, una división de la CU en una o más PU. Las modalidades de división pueden diferir en función de si la CU está sin codificar, si está codificada en la modalidad de intrapredicción o si está codificada en la modalidad de interpredicción. Para la intracodificación, una PU puede tratarse de la misma forma que una TU hoja. Las PU pueden dividirse para que tengan forma cuadrada o no cuadrada.
[0044] En general, se usa una TU para los procesos de transformación y cuantificación. Después de la predicción, los valores de datos residuales se calculan para el bloque de vídeo identificado por el nodo de codificación utilizando un bloque predictivo. El nodo de codificación se actualiza luego para hacer referencia a los valores residuales, en lugar del bloque de vídeo original. Los valores residuales corresponden a valores de diferencias de píxeles que se pueden transformar en coeficientes de transformación, cuantificar y explorar para producir coeficientes de transformación en serie para la codificación por entropía. El nodo de codificación puede, una vez más, actualizarse para referirse a estos coeficientes de transformación en serie.
[0045] 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, una cabecera de una o más de las imágenes, o en otras ubicaciones, que describen una serie de imágenes incluidas en el GOP. Cada fragmento de una imagen puede incluir datos sintácticos de fragmento que describen un modo de codificación para el fragmento respectivo. Cada fragmento se divide adicionalmente en bloques de vídeo que se utilizan para codificar los datos de vídeo. Un bloque de vídeo puede corresponder a un nodo de codificación dentro de una CU. Los bloques de vídeo pueden tener tamaños fijos o variables y pueden diferir en tamaño de acuerdo con una norma de codificación especificada.
[0046] En un ejemplo, el HM admite la predicción en diversos tamaños de PU. Si se supone que el tamaño de una CU particular es 2Nx2N, el HM admite la intrapredicción en tamaños de PU de 2Nx2N o NxN, así como la interpredicción en tamaños de PU simétricas de 2Nx2N, 2NxN, Nx2N o NxN. E1HM también admite la división asimétrica para la interpredicción en tamaños de PU de 2NxnU, 2NxnD, nLx2N y nRx2N. En la división asimétrica, una dirección de una CU no está dividida, mientras que la otra dirección está dividida entre un 25 % y un 75 %. La parte de la CU correspondiente a la división del 25 % está indicada por una "n" seguida de una indicación de "arriba", "abajo", "izquierda" o "derecha". Así pues, por ejemplo, "2NxnU" se refiere a una CU de tamaño 2Nx2N que está dividida horizontalmente, con una PU de tamaño 2Nx0,5N encima y una PU de tamaño 2Nx1,5N debajo.
[0047] En la presente divulgación, "NxN" y "N por N" se pueden usar de manera intercambiable para hacer referencia 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 de 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 de tamaño 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 que en la dirección vertical. Por ejemplo, los bloques pueden comprender NxM píxeles, donde M no es necesariamente igual a N.
[0048] Para codificar un bloque (por ejemplo, una PU de datos de vídeo), se obtiene primero un predictor para el bloque. El predictor, también denominado bloque predictivo, puede obtenerse, ya sea mediante la intrapredicción (I) (es decir, predicción espacial) o la interpredicción (P o B) (es decir, predicción temporal). Por lo tanto, algunas unidades de predicción pueden intracodificarse (I) usando predicción espacial con respecto a las muestras de referencia en bloques de referencia contiguos en la misma trama (o fragmento), y otras unidades de predicción pueden intercodificarse unidireccionalmente (P) o intercodificarse bidireccionalmente (B) con respecto a bloques de muestras de referencia en otras tramas (o fragmentos) previamente codificadas. En cada caso, las muestras de referencia se pueden usar para formar un bloque predictivo para un bloque que vaya a codificarse.
[0049] T ras la identificación de un bloque predictivo, se determina la diferencia entre el bloque de datos de vídeo original y su bloque predictivo. Esta diferencia puede denominarse datos residuales de predicción, e indica las diferencias de píxeles entre los valores de píxel en el bloque que vaya a codificarse y los valores de muestra de píxel en el bloque predictivo seleccionado para representar al bloque codificado. Para lograr una mejor compresión, los datos residuales de predicción pueden transformarse, por ejemplo, usando una transformación de coseno discreta (DCT), una transformación entera, una transformación de Karhunen-Loeve (KL) u otra transformación.
[0050] Los datos residuales en un bloque de transformación, tales como una TU, pueden estar dispuestos en una matriz bidimensional (2D) de valores de diferencia de píxeles en el dominio espacial de píxeles. Una transformada convierte los valores de píxeles residuales en una matriz bidimensional de coeficientes de transformación en un dominio de transformación, tal como un dominio de frecuencia. Para una mayor compresión, los coeficientes de transformación pueden cuantificarse antes de la codificación por entropía. La cuantificación se refiere, en general, a un proceso en el que los coeficientes de transformación se cuantifican para reducir, posiblemente, la cantidad de datos usados para representar los coeficientes. El proceso de cuantificación puede reducir la profundidad de bits asociada con algunos, o con la totalidad, de los coeficientes. Por ejemplo, un valor de n bits puede redondearse a la baja hasta un valor de m bits durante la cuantificación, donde n es mayor que m.
[0051] Para codificar por entropía un bloque de coeficientes de transformación cuantificados, se realiza en general un proceso de exploración para que se reordene la matriz bidimensional (2D) de coeficientes de transformación cuantificados en un bloque, de acuerdo con un orden de exploración particular, en una matriz ordenada, unidimensional (1D), es decir, un vector, de coeficientes de transformación. En algunos ejemplos, se utiliza un orden de exploración predefinido para explorar los coeficientes de transformación cuantificados, para producir un vector en serie que se pueda someter a codificación por entropía. En otros ejemplos, se puede realizar una exploración adaptativa.
[0052] A continuación, se aplica la codificación por entropía al vector de coeficientes de transformación. La exploración de los coeficientes de transformación cuantificados en una unidad de transformación serializa la matriz bidimensional de coeficientes de transformación para el codificador por entropía. Puede generarse una correlación de significancia para indicar las posiciones de los coeficientes significativos (es decir, distintos de cero). La exploración se puede aplicar para explorar niveles de coeficientes significativos (es decir, distintos de cero), y/o para codificar los signos de los coeficientes significativos. Un codificador por entropía aplica entonces codificación por entropía, tal como la Codificación de Longitud Variable Adaptativa al Contexto (CAVLC), la Codificación Aritmética Binaria Adaptativa al Contexto (CABAC), la Codificación por Entropía de División de Intervalos de probabilidad (PIPE), o similares, al vector unidimensional de coeficientes de transformación cuantificados explorados.
[0053] Para realizar CABAC, se asigna un contexto dentro de un modelo de contexto a un símbolo a transmitir. El contexto se puede referir, por ejemplo, a si los valores vecinos del símbolo son distintos de cero o no. Para realizar CAVLC, se selecciona un código de longitud variable para un símbolo a transmitir. Las palabras de código en la VLC se pueden construir de modo 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 en bits con respecto, por ejemplo, al uso de palabras de código de igual longitud para cada símbolo que se va a transmitir. La determinación de la probabilidad se puede basar en un contexto asignado al símbolo.
[0054] En algunos casos, se puede omitir una transformación antes de codificar datos residuales de un bloque residual de predicción. En un ejemplo, el bloque residual puede codificarse usando el modo de codificación con pérdidas en un modo de omisión de transformación en el que la transformación no se aplica al bloque residual antes de codificar los datos residuales del bloque residual. En este caso, la cuantificación aún se puede realizar en los datos residuales del bloque residual. Por ejemplo, HEVC usa un elemento sintáctico para indicar el modo de omisión de transformación para una TU, es decir, el elemento sintáctico transform_skip_flag. En otro ejemplo, el bloque residual puede codificarse usando el modo de codificación sin pérdidas en el que se omiten tanto la transformación como la cuantificación para lograr la codificación sin pérdidas de los datos residuales en el bloque residual. Por ejemplo, HEVC usa un elemento sintáctico para indicar el modo de codificación sin pérdidas para una CU, es decir, el elemento sintáctico cu_transquant_bypass_flag.
[0055] En JCTVC-J0093 (He, D. y otros, ''Rotation of Residual Block for Transform Skipping", Equipo de Colaboración Conjunta en Codificación de Vídeo (JCT-VC) de ITU-T SG16 WP3 e ISO/IEC JTC1/SC29/WG1110a reunión: Estocolmo, Suecia, 11-20 de julio de 2012), se propone que cuando se omite una transformación para un bloque residual en el modo de intrapredicción, el bloque residual se rota automáticamente 180 grados antes de aplicar la codificación por entropía de los datos residuales. Se propone una idea similar en JCTVC-J0053 (An, J. y otros, "Residue Scan for Intra Transform Skip Mode", Equipo de Colaboración Conjunta en Codificación de Vídeo (JCT-VC) de ITU-T SG16 WP3 e ISO/IEC JTC1/SC29/WG11, 10a Reunión: Estocolmo, Suecia, 11-20 de julio de 2012) donde la dirección de la exploración de los datos residuales en el bloque residual de intrapredicción (es decir, los valores de diferencia de píxeles) para la codificación por entropía se cambia automáticamente para lograr el mismo propósito. De forma similar, en JCTVC-K0294 (de Weerakkody, R. y otros, "Mirroring of Coefficients for Transform Skipping", Equipo de Colaboración Conjunta en Codificación de Vídeo (JCT-VC) de ITU-T SG16 WP3 e ISO/IEC JTC1/SC29/WG11 11a reunión: Shanghai, China, del 10 al 19 de octubre de 2012), se propone que, según la exploración que se utilice, los datos residuales del bloque residual de intrapredicción se inviertan automáticamente a lo largo de la diagonal principal o la antidiagonal del bloque residual.
[0056] Además, en el modo de codificación sin pérdidas, una transformación siempre se omite para un bloque residual. JCTVC-J0093 propone extender la rotación automática del bloque residual de predicción 180 grados al modo de codificación sin pérdidas tanto para el modo de intrapredicción como para la interpredicción. Algunas de estas ideas también se analizan en JCTVC-J0468 (Tsukuba y otros, "Combination of JCTVC-J0069 and JCTVC-J0093", Equipo de Colaboración Conjunta en Codificación de Vídeo (JCT-VC) de ITU-T SG 16 WP 3 e ISO/IEC JTC 1/SC 29/WG 11, 10a Reunión, Estocolmo, Suecia, julio de 2012), y JCTVC-M0333 (Sole y otros, "AhG8: Residual rotation and significance map context for screen content coding", Equipo de Colaboración Conjunta en Codificación de Vídeo (JCT-VC) de ITU-T SG 16 WP 3 e ISO/IEC JTC 1/s C 29/Wg 11, 1 3 a reunión, Incheon, KR, abril de 2013). Los procedimientos propuestos en JCTVC-J0053 y JCTVC-K0294 también se pueden extender al modo de codificación sin pérdidas tanto para el modo de intrapredicción como para la interpredicción.
[0057] En la intracodificación, las muestras a partir de las cuales se realiza la predicción se colocan en el lado izquierdo o en el lado superior de un bloque de vídeo. A medida que aumenta la distancia de las muestras predichas desde el lado superior y el lado izquierdo, el error de predicción tiende a aumentar. Por esta razón, los valores de muestra de datos residuales en la esquina inferior derecha del bloque residual suelen tener magnitudes absolutas más altas en comparación con los de la esquina superior izquierda. La codificación de coeficientes de transformación, es decir, la codificación por entropía está diseñada suponiendo que los datos residuales de mayor energía se concentran en la esquina superior izquierda. Por lo tanto, para los bloques residuales de intrapredicción, la rotación automática de 180 grados del bloque de vídeo residual es efectiva para mejorar la eficiencia de codificación por entropía cuando se usa el modo de codificación con pérdidas en el modo de omisión de transformación.
[0058] Sin embargo, los bloques residuales codificados en el modo sin pérdidas pueden usar bloques residuales de intrapredicción o bloques residuales de interpredicción. Para los bloques residuales de interpredicción, los datos residuales no poseen la propiedad descrita anteriormente para los bloques residuales de intrapredicción. Puede que no siempre sea deseable realizar la rotación automática de 180 grados para los bloques residuales de interpredicción.
[0059] Las técnicas de esta divulgación incluyen, basándose en una transformación que se omite para un bloque residual, determinar si se debe rotar o no el bloque residual antes de codificar los datos residuales del bloque residual. En algunos ejemplos, un valor de rotación para el bloque residual puede señalizarse explícitamente en un flujo de bits entre el codificador de vídeo 20 y el decodificador de vídeo 30. En otros ejemplos, el codificador de vídeo 20 y el decodificador de vídeo 30 pueden determinar independientemente si se debe rotar el bloque residual en base a un tipo de límite en dos o más bordes del bloque residual.
[0060] En JCTVC-G281 (An, J. y otros, "Non-CE7: Boundary-Dependent Transform for Inter-Predicted Residue", Equipo de Colaboración Conjunta en Codificación de Vídeo (JCT-VC) de ITU-T SG16 WP3 e ISO/IEC JTC1/SC29/WG11, 7a reunión: Ginebra, Suiza, del 21 al 30 de noviembre de 2011), se realizó la siguiente observación con respecto a la energía de los datos residuales interpredichos. Para un bloque residual que comprende una TU, si un bloque vecino en un borde particular (superior, inferior, izquierdo o derecho) del bloque residual pertenece a la misma PU que el bloque residual, es decir, el bloque vecino es una TU perteneciente a la misma PU, el borde particular es un límite de TU y los datos residuales en el límite de TU típicamente tienen una energía más baja que los datos residuales promedio del bloque residual. Por otro lado, si un bloque vecino en un borde particular del bloque de vídeo residual pertenece a una PU diferente al bloque residual, es decir, el bloque vecino es una TU que pertenece a una PU diferente, el borde particular es un límite de PU y los datos residuales en el límite de TU típicamente tienen una energía más alta que los datos residuales promedio del bloque residual. En esta divulgación, un nivel de energía de datos residuales en un borde del bloque residual es proporcional al tamaño de los datos residuales, es decir, la magnitud absoluta de las diferencias de píxeles para los valores de muestra de datos residuales en el borde del bloque de vídeo residual.
[0061] En base a la observación anterior, las técnicas de esta divulgación incluyen la rotación de un bloque residual de interpredicción con omisión de transformación basado en un tipo de límite en dos o más bordes del bloque residual. De acuerdo con las técnicas, una unidad de reposicionamiento incluida en un codificador de vídeo o un decodificador de vídeo determina un tipo de límite en dos o más bordes del bloque residual, y luego determina, en función del tipo de límite en los bordes, si se debe rotar el bloque residual para posicionar los datos residuales en los límites de la PU del bloque residual original en una esquina superior izquierda del bloque residual rotado. Las técnicas pueden ser realizadas por un codificador de vídeo, tal como el codificador de vídeo 20 o el decodificador de vídeo 30.
[0062] En algunos ejemplos, la unidad de reposicionamiento determina si rota el bloque residual un valor de rotación predeterminado, por ejemplo, 180 grados, o no rota el bloque residual. En otros ejemplos, la unidad de reposicionamiento determina un valor de rotación por el cual rotar el bloque residual de entre dos o más valores de rotación, por ejemplo, 0 grados o sin rotación, 180 grados, 90 grados o 270 grados. En el lado de la codificación, la rotación se selecciona para posicionar los datos residuales con mayor energía que el promedio en una esquina superior izquierda del bloque residual rotado antes de codificar los datos residuales del bloque residual para mejorar la eficiencia de la codificación por entropía. En el lado de la decodificación, la rotación revierte la rotación realizada durante la codificación y devuelve los datos residuales con una energía más alta que el promedio a su posición original en el bloque residual original para reconstruir un bloque de vídeo a partir del bloque residual utilizando un bloque predictivo.
[0063] 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 para determinar si se debe rotar un bloque residual antes de codificar datos residuales del bloque residual. El codificador de vídeo 20 puede realizar la intracodificación y la intercodificación de los bloques de vídeo dentro de fragmentos de vídeo. La intracodificación se basa en la predicción espacial para reducir o eliminar la redundancia espacial de un 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 de un vídeo dentro de tramas o imágenes adyacentes de una secuencia de vídeo. El intramodo (modo I) se puede referir a cualquiera de varios modos de compresión de base espacial. Los intermodos, tales como la predicción unidireccional (modo P) o la bipredicción (modo B), se pueden referir a cualquiera de varios modos de compresión de base temporal.
[0064] En el ejemplo de la FIG. 2, el codificador de vídeo 20 incluye una unidad de divisió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 transformación 52, una unidad de cuantificación 54, una unidad de reposicionamiento 66 y una unidad de codificación por entropía 56. La unidad de procesamiento de predicción 41 incluye una unidad de estimación de movimiento 42, una unidad de compensación de movimiento 44 y una 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 cuantificación inversa 58, una unidad de procesamiento de transformación inversa 60 y un sumador 62.
También se puede incluir un filtro de eliminación de bloques (no se muestra en la FIG. 2) para filtrar los límites de bloque, para eliminar distorsiones de efecto pixelado del vídeo reconstruido. Si se desea, el filtro de eliminación de bloques filtrará 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 eliminación de bloques.
[0065] Como se muestra en la FIG. 2, el codificador de vídeo 20 recibe datos de vídeo, y la unidad de división 35 divide los datos en bloques de vídeo. Esta división también puede incluir la división en fragmentos, mosaicos u otras unidades mayores, así como la división en bloques de vídeo, por ejemplo, de acuerdo con una estructura en árbol cuaternario de LCU y CU. El codificador de vídeo 20 ilustra, en general, los componentes que codifican los bloques de vídeo dentro de un fragmento de vídeo que se va a codificar. El fragmento 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 una pluralidad de posibles modos de codificación, tal como uno de una pluralidad de modos de intracodificación, o uno de una pluralidad de modos de intercodificación, para el bloque de vídeo actual en base a resultados de error (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 bloque residuales y al sumador 62 para reconstruir el bloque codificado para su uso como imagen de referencia.
[0066] La unidad de procesamiento de intrapredicción 46, situada en la unidad de procesamiento de predicción 41, puede realizar la codificación intrapredictiva del bloque de vídeo actual con respecto a uno o más bloques vecinos en la misma trama o fragmento que el bloque actual que se va a codificar, para proporcionar 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 en relación con uno o más bloques predictivos en una o más imágenes de referencia, para proporcionar compresión temporal.
[0067] La unidad de estimación de movimiento 42 se puede configurar para determinar el modo de interpredicción para un fragmento de vídeo de acuerdo con un patrón predeterminado para una secuencia de vídeo. El patrón predeterminado puede designar fragmentos de vídeo en la secuencia como fragmentos P o fragmentos B. La unidad de estimación de movimiento 42 y la unidad de compensación de movimiento 44 pueden estar altamente integradas, pero se ilustran por separado para propósitos 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 para los bloques de vídeo. Un vector de movimiento, por ejemplo, puede indicar la desviación de una PU de un bloque de vídeo dentro de una trama o imagen de vídeo actual relativa a un bloque predictivo dentro de una imagen de referencia.
[0068] Un bloque predictivo es un bloque que se encuentra que coincide estrechamente con la PU del bloque de vídeo que se va a codificar en términos de diferencia de píxel, que se puede determinar mediante una suma de diferencia absoluta (SAD), una suma de diferencia al cuadrado (SSD) u otras métricas de diferencia. En algunos ejemplos, el codificador de vídeo 20 puede calcular valores para posiciones fraccionarias de píxeles 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 fraccionarias de píxel 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íxel completo y a las posiciones de píxel fraccionario, y emitir un vector de movimiento con una precisión de píxel fraccionario.
[0069] La unidad de estimación de movimiento 42 calcula un vector de movimiento para una PU de un bloque de vídeo en un fragmento intercodificado, comparando la posición de la PU con la posición de un bloque predictivo de una imagen de referencia. La imagen de referencia se puede seleccionar de una primera lista (lista 0) de imágenes de referencia o de una segunda lista (lista 1) de imágenes de referencia, de las que cada una 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.
[0070] La compensación de movimiento, realizada por la unidad de compensación de movimiento 44, puede implicar extraer o generar el bloque predictivo en base al vector de movimiento determinado mediante la estimación de movimiento, realizando posiblemente interpolaciones con una precisión de subpíxel. Tras recibir el vector de movimiento para la PU del bloque de vídeo actual, la unidad de compensación de movimiento 44 puede localizar 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íxel del bloque predictivo a los valores de píxel del bloque de vídeo actual que se esté codificando, formando valores de diferencia de píxel. 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 el fragmento de vídeo para su uso por el decodificador de vídeo 30 en la decodificación de los bloques de vídeo del fragmento de vídeo.
[0071] La unidad de procesamiento de intrapredicción 46 puede intrapredecir un bloque actual, como una 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 describe anteriormente. En particular, la unidad de procesamiento de intrapredicción 46 puede determinar un modo de intrapredicción para su uso 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 independientes, y la unidad de procesamiento de intrapredicción 46 puede seleccionar un modo de intrapredicción adecuado 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 modelos 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 producir el bloque codificado, así como una tasa de bits (es decir, un número de bits) usada para producir 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 velocidad-distorsión para el bloque.
[0072] 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 indica el modo de intrapredicción seleccionado de acuerdo con las técnicas de la presente divulgación. El codificador de vídeo 20 puede incluir, en el flujo de bits transmitido, datos de configuración, que pueden incluir una pluralidad de tablas de índices del modo de intrapredicción y una pluralidad de tablas de índices del modo de intrapredicción modificadas (también denominadas tablas de correlación 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 del modo de intrapredicción y una tabla de índices del modo de intrapredicción modificada para su uso para cada uno de los contextos.
[0073] Después de que la unidad de procesamiento de predicción 41 genere el bloque predictivo para el bloque de vídeo actual, ya sea mediante interpredicción o intrapredicción, el codificador de vídeo 20 forma bloques de vídeo residuales restando el bloque predictivo al bloque de vídeo actual. Los datos residuales en los bloques de vídeo residuales comprenden valores de diferencia de píxeles entre el bloque de vídeo actual a codificar y el bloque predictivo. Los bloques de vídeo residuales pueden comprender una o más TU que incluyen al menos una porción de los datos residuales para el bloque de vídeo. Cuando el bloque de vídeo se codifica utilizando el modo de codificación con pérdidas, cada uno de los bloques residuales se aplica a la unidad de procesamiento de transformación 52. La unidad de procesamiento de transformación 52 transforma los datos residuales en coeficientes de transformación residuales usando una transformada, tal como una transformada de coseno discreta (DCT) o una transformada conceptualmente similar. La unidad de procesamiento de transformación 52 puede convertir los datos de vídeo residuales de un dominio de píxel en un dominio de transformación, tal como un dominio de frecuencia.
[0074] La unidad de procesamiento de transformación 52 puede enviar los coeficientes de transformación resultantes a la unidad de cuantificación 54. La unidad de cuantificación 54 cuantifica los coeficientes de transformación para reducir aún más la tasa de bits. El proceso de cuantificación puede reducir la profundidad de bits asociada con algunos, o con la totalidad, de los coeficientes. El grado de cuantificación se puede modificar ajustando un parámetro de cuantificación. En algunos ejemplos, la unidad de cuantificación 54 puede realizar a continuación una exploración de la matriz que incluye los coeficientes de transformación cuantificados. De forma alternativa, la unidad de codificación por entropía 56 puede realizar la exploración.
[0075] Cuando el bloque de vídeo se codifica utilizando el modo de codificación con pérdidas en un modo de omisión de transformación, no se aplica una transformación a los bloques residuales. Además, cuando el bloque de vídeo se codifica utilizando el modo de codificación sin pérdidas, no se aplica ni una transformación ni cuantificación a los bloques residuales. De acuerdo con las técnicas de esta divulgación, cuando la transformación se omite para un bloque residual, el bloque residual se aplica a la unidad de reposicionamiento 66. En este caso, los datos residuales permanecen en el dominio de píxeles y comprenden valores de diferencia de píxeles en posiciones espaciales de píxeles. Esto se opone a convertir los datos residuales al dominio de transformación como coeficientes de transformación en posiciones correspondientes a componentes de frecuencia usando la unidad de procesamiento de transformación 52.
[0076] La unidad de reposicionamiento 66 determina si se debe rotar o no el bloque residual para posicionar datos residuales con mayor energía, es decir, valores de diferencia de píxeles mayores que el promedio en una esquina superior izquierda del bloque residual. El desplazamiento de los datos residuales de alta energía ocurre típicamente como resultado del proceso de transformación realizado por la unidad de procesamiento de transformación 52. Sin embargo, cuando se omite la transformación, puede ser conveniente rotar el bloque residual porque la unidad de codificación por entropía 56 se diseñó basándose en el supuesto de que los datos residuales de alta energía se concentrarían en la esquina superior izquierda de un bloque residual transformado.
[0077] En el caso de bloques residuales de intrapredicción, la unidad de reposicionamiento 66 puede rotar automáticamente los bloques residuales 180 grados para posicionar los datos residuales con una energía más alta que el promedio en la esquina superior izquierda del bloque residual. Cuando se omite una transformación para bloques residuales de intrapredicción, los datos residuales de alta energía típicamente se concentran en la esquina inferior derecha, de modo que la rotación de 180 grados mejorará la eficiencia de la codificación por entropía. En el caso de bloques residuales de interpredicción, los datos residuales de alta energía pueden concentrarse en cualquier posición dentro de los bloques residuales. En ese caso, la unidad de reposicionamiento 66 puede determinar primero si se debe rotar el bloque residual y luego, basándose en la determinación, rotar el bloque residual un valor de rotación determinado o no rotar el bloque residual. En algunos ejemplos, la unidad de reposicionamiento 66 puede aplicar el valor de rotación determinado al bloque residual en sentido antihorario. Las operaciones de ejemplo para determinar si se debe rotar un bloque residual de interpredicción se describen con más detalle a continuación con respecto a las FIGS. 5-8.
[0078] Para el modo de codificación con pérdidas en el modo de omisión de transformación, la unidad de reposicionamiento 66 envía el bloque residual rotado a la unidad de cuantificación 54 para una compresión adicional antes de la codificación por entropía por la unidad de codificación por entropía 56. En algunos casos, el bloque residual puede enviarse a la unidad de cuantificación 54 antes de determinar si se debe rotar el bloque residual con la unidad de reposicionamiento 66. Para el modo de codificación sin pérdidas, la unidad de reposicionamiento 66 envía el bloque residual rotado directamente a la unidad de codificación por entropía 56 para la codificación por entropía sin ninguna compresión adicional.
[0079] La unidad de codificación por entropía 56 codifica por entropía coeficientes residuales, por ejemplo, coeficientes de transformación cuantificados, coeficientes residuales cuantificados o coeficientes residuales sin comprimir. 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 división de intervalos de probabilidad (PIPE) u otra metodología o técnica 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 a un decodificador de vídeo, al decodificador de vídeo 30, o archivarse para su posterior transmisión o recuperación por el decodificador de vídeo. La unidad de codificación por entropía 56 también puede codificar por entropía los vectores de movimiento y los otros elementos sintácticos para el fragmento de vídeo actual que se esté codificando.
[0080] La unidad de cuantificación inversa 58 y la unidad de procesamiento de transformación inversa 60 aplican una cuantificación inversa y una transformación inversa, respectivamente, a los coeficientes de transformación cuantificados para reconstruir el bloque residual en el dominio de píxel para su uso posterior como bloque de referencia de una imagen de referencia. Para el modo de codificación con pérdidas en el modo de omisión de transformación, la unidad de cuantificación inversa 58 aplica la cuantificación inversa a los coeficientes residuales cuantificados y la unidad de reposicionamiento 66 realiza una rotación inversa para devolver los datos residuales de alta energía a su posición original para reconstruir el bloque residual. En algunos casos, los coeficientes residuales cuantificados pueden enviarse a la unidad de reposicionamiento 66 para realizar la rotación inversa antes de realizar la cuantificación inversa con la unidad de cuantificación inversa 58. Para el modo de codificación sin pérdidas, la unidad de reposicionamiento 66 realiza una rotación inversa de los coeficientes residuales para devolver los datos residuales de alta energía a su posición original para reconstruir el bloque residual.
[0081] La unidad de compensación de movimiento 44 puede calcular a continuación un bloque de referencia añadiendo el bloque residual reconstruido a un bloque predictivo de una de las imágenes de referencia dentro 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 fraccionarios, para su uso en la estimación de movimiento. El sumador 62 añade el bloque residual reconstruido al bloque de predicción compensado por movimiento, generado por la unidad de compensación de movimiento 44 para producir un bloque de referencia para su almacenamiento en la memoria de imágenes de referencia 64. El bloque de referencia puede ser usado por la unidad de estimación de movimiento 42 y la unidad de compensación de movimiento 44 como bloque de referencia para realizar una interpredicción de un bloque en una trama o imagen de vídeo subsiguiente.
[0082] El codificador de vídeo 20 puede configurarse para realizar las técnicas de esta divulgación, que incluyen omitir una transformación para un bloque residual y determinar si se debe rotar el bloque residual. La unidad de reposicionamiento 66 del codificador de vídeo 20 puede determinar si rotar o no el bloque residual. En algunos ejemplos, la unidad de reposicionamiento 66 determina si se debe rotar el bloque residual basándose en el número de bits necesarios para codificar por entropía el bloque residual. Por ejemplo, la unidad de reposicionamiento 66 puede determinar si se debe rotar el bloque residual basándose en el valor de rotación que da como resultado el menor número de bits para la codificación por entropía. En otros ejemplos, la unidad de reposicionamiento 66 puede determinar si se debe rotar el bloque residual basándose en un tipo de límite en dos o más bordes del bloque residual.
[0083] Cuando se rota el bloque residual, la unidad de reposicionamiento 66 del codificador de vídeo 20 puede determinar rotar el bloque residual un valor de rotación predeterminado, o puede determinar un valor de rotación mediante el cual rotar el bloque residual. En cualquier caso, el codificador de vídeo 20 rota a continuación el bloque residual el valor de rotación determinado antes de codificar los datos residuales del bloque residual con la unidad de codificación por entropía 56. Las operaciones de ejemplo para determinar si se debe rotar un bloque residual de interpredicción basándose en el tipo de límite en los bordes del bloque residual se describen con más detalle a continuación con respecto a las FIGS. 5-8.
[0084] En algunos ejemplos, el codificador de vídeo 20 puede señalizar solo si la omisión de transformación se usa para el bloque residual, es decir, si el bloque residual se codifica usando el modo de codificación sin pérdidas o usando el modo de codificación con pérdidas en el modo de omisión de transformación. En este caso, un decodificador de vídeo puede usar la misma operación para determinar el tipo de límite en los bordes del bloque residual para determinar si se debe rotar el bloque residual para revertir la rotación realizada durante la codificación para reconstruir el bloque de vídeo del bloque residual. En otros ejemplos, el codificador de vídeo 20 puede señalizar un valor de rotación de la rotación aplicada al bloque residual durante la codificación a un decodificador de vídeo. En este caso, el decodificador de vídeo puede rotar el bloque residual basándose en el valor de rotación señalizado para revertir la rotación realizada durante la codificación para reconstruir el bloque de vídeo a partir del bloque residual.
[0085] En algunos ejemplos adicionales, el codificador de vídeo 20 está configurado para realizar las técnicas de esta divulgación, que incluyen omitir una transformación para un bloque residual y rotar el bloque residual cuando un tamaño del bloque residual es menor o igual que un tamaño de bloque umbral. El tamaño de bloque umbral puede ser igual a un tamaño de bloque para el cual se permite la omisión de la transformación y la rotación en el modo de codificación con pérdidas. De esta manera, los tamaños de bloque para los que se puede realizar la rotación se alinean, es decir, lo mismo, para los bloques residuales codificados usando el modo de codificación sin pérdidas o el modo de codificación con pérdidas en el modo de omisión de transformación. Esta técnica puede ser aplicable tanto a bloques residuales de interpredicción como a bloques residuales de intrapredicción.
[0086] Además, el codificador de vídeo 20 puede configurarse para realizar las técnicas de esta divulgación, que incluyen omitir una transformación para un bloque residual y voltear valores de muestra de datos residuales a lo largo de una diagonal del bloque residual cuando un tamaño del bloque residual es menor o igual al tamaño del bloque umbral. Voltear los valores de muestra de datos residuales del bloque residual incluye intercambiar valores de muestra de datos residuales en un lado de una diagonal con valores de muestra de datos residuales en las ubicaciones de imágenes especulares correspondientes en el otro lado de la diagonal del bloque residual. Esta técnica también puede ser aplicable tanto a los bloques residuales de interpredicción como a los bloques residuales de intrapredicción.
[0087] En algunos ejemplos, en el caso del modo de codificación sin pérdidas, la rotación o el volteo se puede aplicar solo a bloques residuales de intrapredicción con tamaños menores o iguales al tamaño de bloque umbral. En otros ejemplos, la rotación o el volteo se pueden aplicar a todos los bloques residuales, es decir, bloques residuales de intrapredicción e interpredicción, con tamaños menores o iguales que el tamaño de bloque umbral. En ejemplos adicionales, en el caso del modo de codificación con pérdidas en el modo de omisión de transformación, la rotación o el volteo pueden aplicarse solo a bloques residuales de intrapredicción, o pueden aplicarse tanto a bloques residuales de intrapredicción como de interpredicción.
[0088] 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 para determinar si se debe rotar un bloque residual antes de reconstruir un bloque de vídeo a partir de datos residuales del bloque residual. En el ejemplo de la FIG. 3, el decodificador de vídeo 30 incluye una unidad de decodificación por entropía 80, una unidad de procesamiento de predicción 81, una unidad de cuantificación inversa 86, una unidad de transformación inversa 88, una unidad de reposicionamiento 94, un sumador 90 y una memoria de imágenes de referencia 92. La unidad de procesamiento de predicción 81 incluye una unidad de compensación de movimiento 82 y una unidad de procesamiento de intrapredicción 84. En algunos ejemplos, el decodificador de vídeo 30 puede realizar un pase de decodificación, en general, recíproco al pase de codificación descrito con respecto al codificador de vídeo 20 de la FIG. 2.
[0089] 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 fragmento de vídeo codificado y elementos sintácticos asociados de un codificador de vídeo, tal como 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 residuales, vectores de movimiento y otros elementos sintácticos. La unidad de decodificación por entropía 80 reenví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 a nivel de fragmento de vídeo y/o a nivel de bloque de vídeo.
[0090] Cuando el fragmento de vídeo se codifica como un fragmento 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 fragmento de vídeo actual basándose en un modo de intrapredicción señalizado, y datos de bloques previamente decodificados de la trama o imagen actual. Cuando la trama de vídeo se codifica como un fragmento intercodificado (es decir, B o P), 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 fragmento de vídeo actual, en base a los vectores de movimiento y 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, usando técnicas de construcción por defecto en base a imágenes de referencia almacenadas en la memoria de imágenes de referencia 92.
[0091] La unidad de compensación de movimiento 82 determina la información de predicción para un bloque de vídeo del fragmento de vídeo actual, analizando los vectores de movimiento y otros elementos sintácticos, y usa la información de predicción para producir 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 fragmento de vídeo, un tipo de fragmento de interpredicción (por ejemplo, fragmento B o fragmento P), información de construcción para una o más de las listas de imágenes de referencia para el fragmento, vectores de movimiento para cada bloque de vídeo intercodificado del fragmento, el estado de interpredicción para cada bloque de vídeo intercodificado del fragmento y otra información para decodificar los bloques de vídeo en el fragmento de vídeo actual.
[0092] La unidad de compensación de movimiento 82 también puede realizar la interpolación en base a 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 los valores interpolados para píxeles fraccionarios 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.
[0093] Como se describió anteriormente, la unidad de decodificación por entropía 80 decodifica por entropía el flujo de bits para generar coeficientes residuales, por ejemplo, coeficientes de transformación cuantificados, coeficientes residuales cuantificados o coeficientes residuales no comprimidos, de un bloque de vídeo. Cuando el bloque de vídeo se codifica utilizando el modo de codificación con pérdidas, la unidad de cuantificación inversa 86 cuantifica inversamente, es decir, descuantifica, los coeficientes de transformación cuantificados del bloque residual proporcionado en el flujo de bits. El proceso de cuantificación inversa puede incluir el uso de un parámetro de cuantificación calculado para cada bloque de vídeo del fragmento de vídeo para determinar un grado de cuantificación y, del mismo modo, un grado de cuantificación inversa que se debería aplicar. La unidad de procesamiento de transformación inversa 88 aplica una transformada inversa, por ejemplo, una DCT inversa, una transformada de entero inversa o un procedimiento de transformación inversa conceptualmente similar, a los coeficientes de transformación para reconstruir los bloques residuales en el dominio de píxel.
[0094] Cuando el bloque de vídeo se codifica utilizando el modo de codificación con pérdidas en un modo de omisión de transformación, no se aplica una transformación inversa a los bloques residuales. Además, cuando el bloque de vídeo se codifica utilizando el modo de codificación sin pérdidas, no se aplica una transformación inversa ni una cuantificación inversa a los bloques residuales. De acuerdo con las técnicas de esta divulgación, cuando la transformación inversa se omite para los coeficientes residuales de un bloque residual, el bloque residual se aplica a la unidad de reposicionamiento 94. En este caso, los datos residuales permanecen en el dominio de píxeles y comprenden valores de diferencia de píxeles en posiciones espaciales de píxeles. Esto se opone a convertir los datos residuales del dominio de transformación como coeficientes de transformación en posiciones correspondientes a componentes de frecuencia usando la unidad de procesamiento de transformación inversa 88.
[0095] La unidad de reposicionamiento 94 puede rotar el bloque residual para revertir la rotación realizada durante la codificación que colocó datos residuales con mayor energía, es decir, valores de diferencia de píxeles mayores que el promedio en una esquina superior izquierda del bloque residual. El desplazamiento de los datos residuales de alta energía de regreso a su posición original ocurre típicamente como resultado del proceso de transformación inversa realizado por la unidad de procesamiento de transformación inversa 88. Sin embargo, cuando se omite la transformación inversa, puede ser necesario rotar el bloque residual para reconstruir correctamente el bloque de vídeo utilizando un bloque predictivo.
[0096] Para el modo de codificación con pérdidas en el modo de omisión de transformación, la unidad de cuantificación inversa 86 aplica la cuantificación inversa a los coeficientes residuales cuantificados del bloque residual proporcionado en el flujo de bits para descompresión. La unidad de reposicionamiento 94 luego realiza una rotación para revertir la rotación realizada durante la codificación y devolver los datos residuales de alta energía a su posición original para reconstruir el bloque residual. En algunos casos, los coeficientes residuales cuantificados pueden enviarse a la unidad de reposicionamiento 94 para realizar la rotación inversa antes de realizar la cuantificación inversa con la unidad de cuantificación inversa 86. Para el modo de codificación sin pérdidas, la unidad de reposicionamiento 94 recibe directamente los coeficientes residuales del bloque residual proporcionado en el flujo de bits sin ninguna descompresión. La unidad de reposicionamiento 94 luego realiza una rotación para revertir la rotación realizada durante la codificación y devolver los datos residuales de alta energía a su posición original para reconstruir el bloque residual. De esta manera, los valores de diferencia de píxeles se vuelven a rotar a las posiciones espaciales originales de los píxeles correspondientes.
[0097] En el caso de bloques residuales de intrapredicción con omisión de transformación, los datos residuales de alta energía típicamente se concentran en la esquina inferior derecha de modo que una rotación de 180 grados durante la codificación mejorará la eficiencia de la codificación por entropía. En este caso, la unidad de reposicionamiento 94 puede rotar automáticamente los bloques residuales de intrapredicción 180 grados para devolver los datos residuales con una energía más alta que el promedio a su posición en la esquina inferior derecha del bloque residual original.
[0098] En el caso de bloques residuales de interpredicción, los datos residuales de alta energía pueden concentrarse en cualquier posición dentro de los bloques residuales. En este caso, la unidad de reposicionamiento 94 primero determina si se debe rotar el bloque residual y luego, en base a la determinación, si rotar el bloque residual un valor de rotación determinado o no rotar el bloque residual. Para revertir la rotación realizada en el bloque residual durante la codificación, la unidad de reposicionamiento 94 determina si se debe rotar el bloque residual, pero aplica el valor de rotación determinado en una dirección opuesta a la unidad de reposicionamiento 66 del codificador de vídeo 20 de la FIG. 2, por ejemplo, en el sentido horario en lugar de en el sentido contrario.
[0099] Después de que la unidad de compensación de movimiento 82 genere el bloque predictivo para el bloque de vídeo actual en base a los vectores de movimiento y otros elementos sintácticos, el decodificador de vídeo 30 forma un bloque de vídeo decodificado sumando los bloques residuales reconstruidos con los bloques predictivos correspondientes generados por la unidad de compensación de movimiento 82. Más específicamente, los valores de diferencia de píxeles del bloque residual se suman con los valores de píxeles predictivos correspondientes de los bloques predictivos correspondientes. Este proceso de suma se realiza para los bloques luma y croma para reconstruir todo el bloque de vídeo. 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 eliminación de bloques para filtrar los bloques decodificados a fin de eliminar distorsiones de efecto pixelado. También se pueden usar otros filtros de bucle (bien 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 en 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 compensación de movimiento subsiguiente. La memoria de imágenes de referencia 92 también almacena 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.
[0100] El decodificador de vídeo 30 puede configurarse para realizar las técnicas de esta divulgación, que incluyen omitir una transformación inversa para un bloque residual y determinar si se debe rotar el bloque residual. La unidad de reposicionamiento 94 del decodificador de vídeo 30 puede determinar si rotar o no el bloque residual. En algunos ejemplos, la unidad de reposicionamiento 94 determina si se debe rotar el bloque residual basándose en elementos sintácticos en el flujo de bits que indican un valor de rotación para el bloque residual usado en el codificador de vídeo 20. En otros ejemplos, la unidad de reposicionamiento 94 puede determinar si se debe rotar el bloque residual basándose en un tipo de límite en dos o más bordes del bloque residual.
[0101] Cuando se rota el bloque residual, la unidad de reposicionamiento 94 del decodificador de vídeo 30 puede determinar rotar el bloque residual un valor de rotación predeterminado, o puede determinar un valor de rotación mediante el cual rotar el bloque residual. En cualquier caso, el decodificador de vídeo 30 rota a continuación el bloque residual el valor de rotación determinado antes de reconstruir un bloque de vídeo a partir del bloque residual usando un bloque predictivo. Las operaciones de ejemplo para determinar si se debe rotar un bloque residual de interpredicción basándose en el tipo de límite en los bordes del bloque residual se describen con más detalle a continuación con respecto a las FIGS. 5-8.
[0102] En algunos ejemplos, el decodificador de vídeo 30 puede recibir elementos sintácticos que solo indican si la omisión de transformación se usa para el bloque residual, es decir, si el bloque residual se codifica usando el modo de codificación sin pérdidas o usando el modo de codificación con pérdidas en el modo de omisión de transformación. En este caso, la unidad de reposicionamiento 94 usa la misma operación que el codificador de vídeo 20 para determinar un tipo de límite en los bordes del bloque residual para determinar si se debe rotar el bloque residual para revertir la rotación realizada durante la codificación para reconstruir el bloque de vídeo a partir del bloque residual. En otros ejemplos, el decodificador de vídeo 30 puede recibir elementos sintácticos que indican un valor de rotación de la rotación, por ejemplo, 0, 90, 180 o 270 grados, aplicado al bloque residual durante la codificación. En este caso, la unidad de reposicionamiento 94 puede rotar el bloque residual basándose en el valor de rotación señalizado para revertir la rotación realizada durante la codificación, por ejemplo, rotando 0, 90, 180 o 270 grados en una dirección opuesta, para reconstruir el bloque de vídeo del bloque residual. Las operaciones de ejemplo para determinar si se debe rotar un bloque residual de interpredicción se describen con más detalle a continuación con respecto a las FIGS. 5-8.
[0103] En algunos ejemplos adicionales, el decodificador de vídeo 30 está configurado para realizar las técnicas de esta divulgación, que incluyen omitir una transformación para un bloque residual y rotar el bloque residual cuando un tamaño del bloque residual es menor o igual que un tamaño de bloque umbral. El tamaño de bloque umbral puede ser igual a un tamaño de bloque para el cual se permite la omisión de la transformación y la rotación en el modo de codificación con pérdidas. De esta manera, los tamaños de bloque para los que se puede realizar la rotación se alinean, es decir, lo mismo, para los bloques residuales codificados usando el modo de codificación sin pérdidas o el modo de codificación con pérdidas en el modo de omisión de transformación. Esta técnica puede ser aplicable tanto a bloques residuales de interpredicción como a bloques residuales de intrapredicción.
[0104] Además, el decodificador de vídeo 30 puede configurarse para realizar las técnicas de esta divulgación, que incluyen omitir una transformación para un bloque residual y voltear valores de muestra de datos residuales a lo largo de una diagonal del bloque residual cuando un tamaño del bloque residual es menor o igual a un tamaño de bloque umbral. Voltear los valores de muestra de datos residuales del bloque residual incluye intercambiar valores de muestra de datos residuales en un lado de una diagonal con valores de muestra de datos residuales en las ubicaciones de imágenes especulares correspondientes en el otro lado de la diagonal del bloque residual. Esta técnica puede ser aplicable tanto a bloques residuales de interpredicción como a bloques residuales de intrapredicción.
[0105] En algunos ejemplos, en el caso del modo de codificación sin pérdidas, la rotación o el volteo se puede aplicar solo a bloques residuales de intrapredicción con tamaños menores o iguales al tamaño de bloque umbral. En otros ejemplos, la rotación o el volteo se pueden aplicar a todos los bloques residuales, es decir, bloques residuales de intrapredicción e interpredicción, con tamaños menores o iguales que el tamaño de bloque umbral. En ejemplos adicionales, en el caso del modo de codificación con pérdidas en el modo de omisión de transformación, la rotación o el volteo pueden aplicarse solo a bloques residuales de intrapredicción, o pueden aplicarse tanto a bloques residuales de intrapredicción como de interpredicción.
[0106] La FIG. 4 es un diagrama de bloques que ilustra una CU 100 de un bloque residual dividido en una o más PU 102, 104 de acuerdo con un modo de predicción de movimiento y múltiples Tu 110, 112, 114, 116 de acuerdo con una estructura de datos de árbol cuaternario. En la FIG. 4, los límites de PU se ilustran como líneas continuas en negrita alrededor del borde de las PU 102 y 104. Un límite de la PU comprende un límite entre dos TU que pertenecen a PU diferentes, por ejemplo, el límite entre la TU 110 dentro de la PU 102 y la TU 114 dentro de la PU 104. En la FIG. 4, los límites de la TU se ilustran como líneas discontinuas en negrita entre la TU 110 y la TU 112 dentro de la PU 102, y entre la TU 114 y la TU 116 dentro de la PU 104. Un límite de TU comprende un límite entre dos TU que pertenecen a la misma PU, por ejemplo, el límite entre la TU 110 y la TU 112 dentro de la PU 102
[0107] En general, esta divulgación describe técnicas para codificar datos residuales de un bloque residual de predicción, por ejemplo, la TU 112, con omisión de transformación. Los datos residuales de la TU 112 comprenden valores de diferencia de píxeles entre una porción de un bloque de vídeo y un bloque de predicción asociado. Se puede omitir una transformación para la TU 112 cuando la TU 112 se codifica utilizando un modo de codificación sin pérdidas o un modo de codificación con pérdidas en un modo de omisión de transformación. Sin aplicar una transformación a la TU 112, los datos residuales con mayor energía, es decir, valores de diferencia de píxeles mayores que el promedio, no se pueden colocar en una esquina superior izquierda de la TU 112, lo que se espera para la codificación por entropía.
[0108] En el modo de intrapredicción, cuando se omite una transformación para un bloque residual, los datos residuales con una energía más alta que el promedio se colocan típicamente en la esquina inferior derecha del bloque residual de intrapredicción. En algunos casos, el bloque residual de intrapredicción puede rotarse automáticamente 180 grados antes de codificar el bloque residual para posicionar los datos residuales con una energía más alta que el promedio en la esquina superior izquierda del bloque residual. Sin embargo, en el modo de interpredicción, puede no ser siempre deseable rotar automáticamente el bloque residual 180 grados.
[0109] La siguiente observación se ha realizado con respecto a la energía de los datos residuales de un bloque residual de interpredicción. Los datos residuales en un límite de TU del bloque residual de interpredicción típicamente tienen una energía más baja que los datos residuales promedio en el bloque residual. Además, los datos residuales en un límite de la PU del bloque residual de interpredicción típicamente tienen una energía mayor que los datos residuales promedio en el bloque residual. En base a esta observación, las técnicas de esta divulgación incluyen la rotación de un bloque residual de interpredicción con omisión de transformación, por ejemplo, la TU 112, basándose en un tipo de límite en dos o más bordes de la TU 112.
[0110] De acuerdo con las técnicas de esta divulgación, cuando se omite una transformación para la TU 112, una unidad de reposicionamiento (por ejemplo, la unidad de reposicionamiento 66 del codificador de vídeo 20 de la FIG. 2 o la unidad de reposicionamiento 94 del decodificador de vídeo 30 de la FIG. 3) puede determinar un tipo de límite en dos o más bordes de la TU 112, y luego determinar si debe rotar la TU 112 para posicionar los datos residuales en los límites de la PU de la versión original de la TU 112 en una esquina superior izquierda de la versión rotada de la TU 112. En algunos casos, las técnicas solo pueden aplicarse a bloques residuales de interpredicción codificados usando el modo de codificación sin pérdidas o el modo de codificación con pérdidas en un modo de omisión de transformación. En ese caso, los bloques residuales intrapredichos codificados usando el modo de codificación sin pérdidas o el modo de codificación con pérdidas en el modo de omisión de transformación pueden rotarse automáticamente 180 grados antes de codificar los datos residuales en los bloques de vídeo residuales. En otros casos, las técnicas también se pueden aplicar a los bloques residuales tanto de interpredicción como de intrapredicción codificados usando el modo de codificación sin pérdidas o el modo de codificación con pérdidas en el modo de omisión de transformación.
[0111] En algunos ejemplos, las técnicas incluyen la determinación de rotar la TU 112 un valor de rotación predeterminado, por ejemplo, 180 grados, o no rotar la TU 112. En otros ejemplos, las técnicas incluyen determinar un valor de rotación mediante el cual rotar la TU 112 de entre dos o más valores de rotación, por ejemplo, 0 grados o sin rotación, 180 grados, 90 grados o 270 grados. En el lado de la codificación, la rotación se realiza para posicionar los datos residuales con mayor energía que el promedio en una esquina superior izquierda de la versión rotada de la TU 112 antes de codificar los datos residuales de la TU 112 para mejorar la eficiencia de la codificación por entropía. En algunos casos, las rotaciones pueden realizarse en el sentido antihorario en el lado de la codificación. En el lado de la decodificación, la rotación se realiza para revertir la rotación realizada durante la codificación y devolver los datos residuales con una energía más alta que el promedio a su posición original en la TU 112 para reconstruir un bloque de vídeo desde la TU 112 usando un bloque predictivo. En algunos casos, las rotaciones pueden realizarse en el sentido horario en el lado de la decodificación.
[0112] En un primer ejemplo de las técnicas de esta divulgación, un bloque residual de intrapredicción para el cual se omite una transformación se rota automáticamente 180 grados antes de codificar los datos residuales de los bloques residuales. Por el contrario, no se aplica rotación para bloques residuales de interpredicción, por ejemplo, la TU 112, independientemente de si se omite la transformación.
[0113] En un segundo ejemplo de las técnicas de esta divulgación, un bloque residual puede rotarse 180 grados o no rotarse, dependiendo de un tipo de límite en los bordes del bloque residual. Limitar la rotación a 0 o 180 grados puede ser deseable porque la rotación de 90 grados o 270 grados es difícil de implementar en hardware porque puede requerir una memoria intermedia de transposición. En general, si los bordes izquierdo y superior del bloque residual son límites de PU, por ejemplo, la TU 110, es probable que los datos residuales en la esquina superior izquierda tengan mayor energía que los datos residuales promedio en la TU 110. En ese caso, una rotación de la TU 110 de 180 grados puede no ser deseable porque los datos residuales de alta energía ya están concentrados en la esquina superior izquierda de la TU 110. Por lo tanto, un dispositivo de codificación de vídeo puede determinar no realizar la rotación de la TU 110. Sin embargo, si los bordes izquierdo y superior del bloque residual son límites de la TU y los bordes derecho e inferior del bloque de vídeo residual son límites de la PU, puede ser conveniente una rotación de 180 grados para posicionar los datos residuales de alta energía en la esquina superior izquierda de la versión rotada del bloque residual. Por lo tanto, un dispositivo de codificación de vídeo puede determinar rotar ese bloque residual 180 grados.
[0114] De acuerdo con las técnicas de esta divulgación, un reposicionamiento de un dispositivo de codificación de vídeo puede clasificar cada borde de un bloque residual como un límite de PU o un límite de TU. La unidad de reposicionamiento luego aplica una regla para determinar si se debe rotar el bloque residual 180 grados. Si el número de límites de la PU en los bordes derecho e inferior del bloque residual es mayor que el número de límites de la PU en los bordes izquierdo y superior del bloque residual, la unidad de reposicionamiento determina rotar el bloque residual 180 grados. La Tabla 1, a continuación, muestra las combinaciones de clasificaciones de bordes para las cuales se realizaría la rotación de 180 grados. Para las combinaciones restantes, la unidad de reposicionamiento del dispositivo de codificación de vídeo determina no realizar la rotación para el bloque residual. En el caso de que el número de límites de la PU para los bordes izquierdo y superior sea igual al número de límites de la PU en los bordes inferior y derecho del bloque residual, la unidad de reposicionamiento del dispositivo de codificación de vídeo puede determinar si rotar el bloque residual 180 grados o no rotar el bloque residual.
Tabla 1
Figure imgf000019_0001
[0115] Como ejemplo, la unidad de reposicionamiento del dispositivo de codificación de vídeo puede determinar si se debe rotar el bloque residual de la TU 112, por ejemplo, 180 grados basándose en el tipo de límite en cada borde de la TU 112. La unidad de reposicionamiento determina un primer número de límites de la PU en un borde izquierdo y un borde superior de la TU 112 para que sea igual a un límite de la PU, es decir, el borde superior. La unidad de reposicionamiento también determina un segundo número de límites de la PU en un borde derecho y un borde inferior de la TU 112 para que sean iguales a dos límites de la PU, es decir, tanto el borde derecho como el borde inferior. En este caso, el segundo número de límites de la PU es mayor que el primer número de límites de la PU, por lo que la unidad de reposicionamiento determina rotar 180 grados la Tu 112 antes de codificar los datos residuales de la TU 112.
[0116] En un tercer ejemplo de las técnicas de esta divulgación, una unidad de reposicionamiento de un dispositivo de codificación de vídeo puede considerar hasta cuatro valores de rotación posibles para cada bloque de vídeo residual, es decir, 0 grados o sin rotación, 180 grados, 90 grados y 270 grados. En algunos casos, la unidad de reposicionamiento solo puede considerar dos de los valores de rotación, por ejemplo, 0 grados y 180 grados, porque la rotación de 90 grados o 270 grados es difícil de implementar en hardware porque puede requerir una memoria intermedia de transposición. En este ejemplo, por lo tanto, solo se considera que no hay rotación o una rotación de 180 grados.
[0117] Después de aplicar cada uno de los valores de rotación (0, 180, 90 y 270 grados), la unidad de reposicionamiento calcula el número de límites de la PU en los bordes izquierdo y superior del bloque residual para el respectivo valor de rotación. Consideremos que estos números de límites de PU se denotan por n0 , n180 , ngü y n270. De manera similar, después de aplicar cada uno de los valores de rotación (0, 180, 90 y 270 grados), la unidad de reposicionamiento calcula el número de límites de la PU en los bordes derecho e inferior del bloque residual para el respectivo valor de rotación. Consideremos que estos números de límites de la PU se denotan por m0 , m180 , mg0 y m270. Las rotaciones pueden realizarse en sentido antihorario en el lado de codificación, y las rotaciones pueden realizarse en sentido horario en el lado de la decodificación.
[0118] De acuerdo con estas técnicas, la unidad de reposicionamiento del dispositivo de codificación de vídeo calcula los valores de diferencia entre el número de límites de la PU en los bordes izquierdo y superior del bloque residual y los bordes derecho e inferior del bloque residual para cada uno de los valores de rotación, es decir, d0 = (n0 - m0 ), dg0 = (ng0 - m®), d 180 = (n180 - m ^ ) y d270 = (n270 - m270). La unidad de reposicionamiento determina el valor de diferencia máximo a partir de los valores de diferencia d0 , dg0 , d 180 y d270 para todos los valores de rotación. La unidad de reposicionamiento del dispositivo de codificación de vídeo determina entonces rotar el bloque residual el valor de rotación correspondiente al valor de diferencia máximo.
[0119] Si dos o más de los valores de diferencia son iguales al valor de diferencia máximo, la unidad de reposicionamiento puede seleccionar el valor de rotación que se aplicará al bloque residual de acuerdo con un orden predeterminado. Un ejemplo del orden predeterminado es: sin rotación, rotación de 180 grados, rotación de 90 grados y rotación de 270 grados. En este ejemplo, si d0 , d90 y d 180 son todos iguales al valor de diferencia máximo, no se aplica rotación al bloque residual. Si d90 y d 180 son iguales al valor de diferencia máximo, el valor de rotación de 180 grados se aplica al bloque residual. En otros ejemplos, se pueden usar diferentes órdenes de selección de la rotación en el caso de un empate de valor máximo. La Tabla 2, a continuación, muestra dos combinaciones de tipos de límites para un bloque residual original y los valores de rotación resultantes para el bloque residual.
Tabla 2
Figure imgf000020_0001
[0120] Como ejemplo, una unidad de reposicionamiento de un codificador de vídeo puede determinar si se debe rotar el bloque de vídeo residual de la TU 112, por ejemplo, 0 grados, 180 grados, 90 grados en sentido antihorario o 270 grados en sentido antihorario, según el tipo de límite en cada borde de la TU 112. La unidad de reposicionamiento determina un primer número de límites de la PU en un borde izquierdo y un borde superior de la TU 112 para cada uno de los valores de rotación de manera que n0 = 1, n180 = 2, n90 = 2 y n270 = 1. La unidad de reposicionamiento luego determina un segundo número de límites de la PU en un borde derecho y un borde inferior de la TU 112 para cada uno de los valores de rotación, de modo que m0 = 2, n180 = 1, n90 = 1 y n270 = 2.
[0121] La unidad de reposicionamiento luego calcula un valor de diferencia entre el primer número de límites de la PU y el segundo número de límites de la PU para cada uno de los valores de rotación de modo que d0 = -1, d 180 = 1, d90 = 1 y d270 = -1. A continuación, la unidad de reposicionamiento determina un valor de diferencia máximo a partir de los valores de diferencia para todos los valores de rotación de la TU 112 que sean iguales a d180 y d90, que son ambos iguales a 1. En el caso de un empate, el valor de rotación de 180 grados se selecciona sobre 90 grados, de acuerdo con el orden predeterminado descrito anteriormente. La unidad de reposicionamiento del dispositivo de codificación de vídeo determina entonces rotar el bloque residual el valor de rotación con el valor de diferencia máximo, que es 180 grados en este caso, antes de codificar los datos residuales en el bloque de vídeo residual.
[0122] La FIG. 5 es un diagrama de flujo que ilustra una operación a modo de ejemplo de un codificador de vídeo que determina si se debe rotar un bloque residual antes de codificar los datos residuales del bloque residual. La operación se describe con respecto al codificador de vídeo 20 de la FIG. 2. El codificador de vídeo 20 calcula el bloque residual de un bloque de vídeo usando un bloque predictivo de la unidad de compensación de movimiento 44 en el modo de interpredicción (120). En algunos ejemplos, el bloque residual puede codificarse usando un modo de codificación sin pérdidas en el que tanto la transformación como la cuantificación siempre se omiten para el bloque residual. En otros ejemplos, el bloque residual puede codificarse usando un modo de codificación con pérdidas en un modo de omisión de transformación en el que solo se omite la transformación para el bloque residual.
[0123] En respuesta a la selección para codificar el bloque residual usando la omisión de transformación, el codificador de vídeo 20 omite realizar la transformación para el bloque residual en la unidad de procesamiento de transformación 52 (122). Como ejemplo, el codificador de vídeo 20 puede codificar un elemento sintáctico, es decir, cu_transquant_bypass_flag, que indica si el bloque residual se codifica usando un modo de codificación sin pérdidas en el que tanto la transformación como la cuantificación se omiten siempre para el bloque residual. En otro ejemplo, el codificador de vídeo 20 puede codificar un elemento sintáctico, es decir, transfbrm_skip_flag, que indica si se usa un modo de omisión de transformación, en el que solo se omite la transformación, durante la codificación del bloque residual usando un modo de codificación con pérdidas.
[0124] De acuerdo con las técnicas, cuando se omite la transformación para el bloque residual, la unidad de reposicionamiento 66 del codificador de vídeo 20 determina un tipo de límite en cada borde del bloque residual [124] . El tipo de límite en un borde particular del bloque residual indica un nivel de energía de los datos residuales que se encuentran típicamente en el borde particular del bloque residual. La unidad de reposicionamiento 66 luego determina si se debe rotar el bloque residual basándose en el tipo de límite en cada borde (126). La unidad de reposicionamiento 66 puede determinar rotar el bloque residual para posicionar los datos residuales con una energía más alta que el promedio en una esquina superior izquierda del bloque residual para mejorar la eficiencia de codificación por entropía.
[0125] Cuando la unidad de reposicionamiento 66 determina rotar el bloque residual (rama SÍ de 128), la unidad de reposicionamiento 66 rota el bloque residual un valor de rotación determinado (130). En algunos casos, descrito con más detalle con respecto a la FIG. 7, el valor de rotación determinado puede ser un valor de rotación estático predeterminado, por ejemplo, 180 grados. En otros casos, descritos con más detalle con respecto a la FIG. 8, la unidad de reposicionamiento 66 puede determinar el valor de rotación por el cual rotar el bloque residual de entre una pluralidad de valores de rotación. La pluralidad de valores de rotación puede incluir 180 grados, 90 grados en sentido antihorario o 270 grados en sentido antihorario.
[0126] Cuando la unidad de reposicionamiento 66 determina no rotar el bloque residual (rama NO de 128), la unidad de reposicionamiento 66 no rota el bloque residual. Independientemente de si la unidad de reposicionamiento 66 rota el bloque residual, la unidad de codificación por entropía 56 codifica los datos residuales del bloque residual (132). En algunos casos, por ejemplo, el modo de codificación con pérdidas en el modo de omisión de transformación, los datos residuales del bloque residual pueden cuantificarse usando la unidad de cuantificación 54 antes de la codificación por entropía por la unidad de codificación por entropía 56. También puede ser posible cuantificar los datos residuales del bloque residual utilizando la unidad de cuantificación 54 antes de determinar si se debe rotar el bloque residual con la unidad de reposicionamiento 66. En otros casos, por ejemplo, el modo de codificación sin pérdidas, se omiten tanto la transformación como la cuantificación y los datos residuales del bloque residual se codifican directamente por entropía mediante la unidad de codificación por entropía 56 sin ninguna compresión adicional.
[0127] De forma alternativa, en lugar de determinar el tipo de límite en cada uno de los bordes del bloque residual y determinar si se debe rotar basándose en el tipo de límite en los bordes, la unidad de reposicionamiento 66 puede determinar si se debe rotar el bloque residual basándose en el número de bits necesario para codificar por entropía el bloque residual. En este caso, la unidad de reposicionamiento 66 puede aplicar uno o más valores de rotación al bloque residual y determinar, para cada valor de rotación, el número de bits necesarios para codificar por entropía los coeficientes residuales cuantificados incluidos en el bloque residual rotado. La unidad de reposicionamiento 66 puede entonces determinar si se debe rotar el bloque residual basándose en el valor de rotación que da como resultado el menor número de bits para la codificación por entropía.
[0128] En este ejemplo alternativo, la unidad de codificación por entropía 56 puede codificar elementos sintácticos que indican si se debe rotar el bloque residual. El decodificador de vídeo no tiene acceso a información idéntica para determinar si se debe rotar el valor de rotación para el bloque residual. El valor de rotación, por lo tanto, debe señalizarse explícitamente en el flujo de bits. En el caso de que solo haya dos posibles valores de rotación, es decir, 0 grados o ninguna rotación y 180 grados, un bit es suficiente para señalizar el valor de rotación. La unidad de codificación por entropía 56 puede codificar por CABAC el bit usando un contexto o en modo de derivación. En el caso de cuatro posibles valores de rotación, es decir, 0 grados, 180 grados, 90 grados en sentido antihorario o 270 grados en sentido antihorario, se pueden usar dos bits para señalizar el valor de rotación. La unidad de codificación por entropía 56 puede codificar por CABAC los dos bits usando un contexto o en modo de derivación.
[0129] La FIG. 6 es un diagrama de flujo que ilustra una operación a modo de ejemplo de un decodificador de vídeo que determina si se debe rotar un bloque residual antes de reconstruir un bloque de vídeo a partir de datos residuales del bloque residual. La operación se describe con respecto al decodificador de vídeo 30 de la FIG. 3. La unidad de decodificación por entropía 80 del decodificador de vídeo 30 decodifica los datos residuales del bloque residual y elementos sintácticos asociados de un flujo de bits para un bloque de vídeo recibido desde un codificador de vídeo (140). Como un ejemplo, un elemento sintáctico, es decir, cu_transquant_bypass_flag, indica si el bloque residual se codifica usando un modo de codificación sin pérdidas en el que tanto la transformación como la cuantificación se omiten siempre para el bloque residual. En otro ejemplo, un elemento sintáctico, es decir, un indicador de omisión de transformación, indica si se usa un modo de omisión de transformación, en el que solo se omite la transformación, durante la codificación del bloque residual usando un modo de codificación con pérdidas.
[0130] En algunos casos, por ejemplo, el modo de codificación con pérdidas en el modo de omisión de transformación, los datos residuales del bloque residual se cuantifican inversamente usando la unidad de cuantificación inversa 86 antes de rotar el bloque residual y reconstruir el bloque de vídeo a partir de los datos residuales del bloque residual. También puede ser posible determinar si se debe rotar el bloque residual con la unidad de reposicionamiento 94 antes de cuantificar inversamente los datos residuales del bloque residual usando la unidad de cuantificación inversa 86. En otros casos, por ejemplo, el modo de codificación sin pérdidas, se omiten tanto la cuantificación inversa como la transformación inversa y los datos residuales del bloque residual se utilizan para reconstruir directamente el bloque de vídeo sin ninguna descompresión adicional.
[0131] El decodificador de vídeo 30 omite realizar la transformación inversa para el bloque residual en la unidad de procesamiento de transformación inversa 88 en base a la omisión de la transformación indicada por los elementos sintácticos asociados (142). De acuerdo con las técnicas, cuando se omite la transformación inversa para el bloque residual, la unidad de reposicionamiento 94 del decodificador de vídeo 30 determina un tipo de límite en cada borde del bloque residual (144). La unidad de reposicionamiento 94 luego determina si se debe rotar el bloque residual basándose en el tipo de límite en cada borde (146). La unidad de reposicionamiento 94 puede determinar rotar el bloque residual para revertir una rotación del bloque residual realizada durante la codificación que posicionó los datos residuales con una energía más alta que el promedio en una esquina superior izquierda del bloque residual para mejorar la eficiencia de codificación por entropía.
[0132] Cuando la unidad de reposicionamiento 94 determina rotar el bloque residual (rama SÍ de 148), la unidad de reposicionamiento 94 rota el bloque residual en un valor de rotación determinado (150). En algunos casos, descrito con más detalle con respecto a la FIG. 7, el valor de rotación determinado puede ser un valor de rotación estático predeterminado, por ejemplo, 180 grados. En otros casos, descritos con más detalle con respecto a la FIG. 8, la unidad de reposicionamiento 94 puede determinar el valor de rotación mediante el cual rotar el bloque residual a partir de una pluralidad de valores de rotación. La pluralidad de valores de rotación puede incluir 180 grados, 90 grados en sentido horario o 270 grados en sentido horario, por ejemplo, en el caso en que el codificador de vídeo realizó la rotación en sentido antihorario.
[0133] Cuando la unidad de reposicionamiento 94 determina no rotar el bloque residual (rama NO de 148), la unidad de reposicionamiento 94 no rota el bloque residual. Independientemente de si la unidad de reposicionamiento 94 rota el bloque residual, el decodificador de vídeo 30 reconstruye el bloque de vídeo a partir del bloque residual usando un bloque predictivo de la unidad de compensación de movimiento 82 en el modo de interpredicción (152).
[0134] De forma alternativa, en lugar de determinar el tipo de límite en cada uno de los bordes del bloque residual y determinar si se debe rotar basándose en el tipo de límite en los bordes, la unidad de reposicionamiento 94 puede determinar si se debe rotar el bloque residual basándose en los elementos sintácticos que indican si se debe rotar el bloque residual mediante un valor de rotación señalizado explícitamente. En este caso, el codificador de vídeo puede determinar si se debe rotar el bloque residual basándose en el número de bits necesarios para codificar por entropía el bloque residual. Por ejemplo, el codificador de vídeo puede determinar si debe rotar el bloque residual basándose en un valor de rotación que da como resultado el menor número de bits para la codificación por entropía, y señalizar explícitamente el valor de rotación al decodificador de vídeo 30.
[0135] En este ejemplo alternativo, la unidad de decodificación por entropía 80 puede decodificar elementos sintácticos que indican si se debe rotar el bloque residual. El decodificador de vídeo 30 no tiene acceso a información idéntica al codificador de vídeo para determinar si se debe rotar el valor de rotación para el bloque residual. El valor de rotación, por lo tanto, debe señalizarse explícitamente en el flujo de bits. En el caso de que solo haya dos posibles valores de rotación, es decir, 0 grados o ninguna rotación y 1 8 0 grados, un bit es suficiente para señalizar el valor de rotación. La unidad de decodificación por entropía 80 puede codificar por CABAC el bit usando un contexto o en modo de derivación. En el caso de cuatro posibles valores de rotación, es decir, 0 grados, 180 grados, 90 grados en sentido horario o 270 grados en sentido horario, se pueden usar dos bits para señalizar el valor de rotación. La unidad de decodificación por entropía 80 puede codificar por CABAC los dos bits usando un contexto o en modo de derivación.
[0136] La FIG. 7 es un diagrama de flujo que ilustra una operación de ejemplo para determinar si se debe rotar un bloque residual un valor de rotación predeterminado basándose en un tipo de límite en los bordes del bloque residual. La operación ilustrada es un ejemplo más detallado de la etapa 126 de la FIG. 5 y 146 de la FIG. 6 de determinar si se debe rotar el bloque residual basándose en el tipo de límite en los bordes.
[0137] Cuando se omite una transformación para el bloque residual, por ejemplo, un modo de codificación sin pérdidas o un modo de codificación con pérdidas en un modo de omisión de transformación, la eficiencia de la codificación por entropía puede mejorarse rotando el bloque residual durante la codificación para posicionar los datos residuales con mayor energía que el promedio en una esquina superior izquierda del bloque residual. Durante la decodificación, la rotación realizada durante la codificación debe revertirse para reconstruir correctamente el bloque de vídeo a partir del bloque residual usando un bloque predictivo en el modo de interpredicción.
[0138] En el modo de interpredicción, si un borde particular del bloque residual es un límite de TU entre dos TU dentro de la misma PU, los datos residuales en el límite de TU del bloque residual típicamente tienen una energía menor que los datos residuales promedio en el bloque residual. Además, si un borde particular del bloque residual es un límite de la PU entre dos TU en PU diferentes, los datos residuales en el límite de la PU del bloque residual típicamente tienen una energía más alta que los datos residuales promedio en el bloque residual. En base a esta observación, las técnicas ilustradas en la FIG. 7 usan el tipo de límite en los bordes del bloque residual para determinar si se debe rotar el bloque residual un valor de rotación predeterminado, por ejemplo, 180 grados, para posicionar los datos residuales en los límites de la PU del bloque residual original en la esquina superior izquierda del bloque residual rotado. En el lado de la codificación, esta rotación posiciona los datos residuales con mayor energía que el promedio en una esquina superior izquierda del bloque residual rotado para mejorar la eficiencia de la codificación por entropía. En el lado de la decodificación, esta rotación revierte la rotación realizada durante la codificación y devuelve los datos residuales con una energía más alta que el promedio a su posición original en el bloque residual original.
[0139] La operación ilustrada en la FIG. 7 se describirá con respecto a la unidad de reposicionamiento 66 del codificador de vídeo 20 de la FIG. 2. En otros ejemplos, la misma operación también puede realizarse mediante la unidad de reposicionamiento 94 del decodificador de vídeo 30 de la FIG. 3. En la operación ilustrada, la unidad de reposicionamiento 66 puede rotar el bloque residual el valor de rotación predeterminado, por ejemplo, 180 grados, o no rotar el bloque residual. Para determinar si se debe rotar el bloque residual, la unidad de reposicionamiento 66 determina un primer número de límites de la PU en un borde izquierdo y un borde superior del bloque residual (160). La unidad de reposicionamiento 66 también determina un segundo número de límites de la PU en un borde derecho y un borde inferior del bloque residual (162).
[0140] Si el segundo número de límites de la PU es mayor que el primer número de límites de la PU (rama SÍ de 164), los datos residuales con mayor energía que el promedio probablemente se concentren en la esquina inferior derecha del bloque residual. En este caso, la unidad de reposicionamiento 66 rota el bloque residual el valor de rotación predeterminado (168). Rotando el bloque residual 180 grados, por ejemplo, posicionará los datos residuales con una energía más alta que el promedio en una esquina superior izquierda del bloque residual rotado. Por otro lado, si el segundo número de límites de la PU es menor o igual que el primer número de límites de la PU (rama NO de 164), los datos residuales con una energía más alta que el promedio probablemente ya estén concentrados en la esquina superior izquierda del bloque residual. En ese caso, la unidad de reposicionamiento 66 no rota el bloque residual (166).
[0141] La FIG. 8 es un diagrama de flujo que ilustra otra operación de ejemplo para determinar si se debe rotar un bloque residual que incluye la determinación de un valor de rotación para el bloque residual basándose en un tipo de límite en los bordes del bloque residual para cada uno de los dos o más posibles valores de rotación. La operación ilustrada es otro ejemplo más detallado de la etapa 126 de la FIG. 5 y 146 de la FIG. 6 de determinar si se debe rotar el bloque residual basándose en el tipo de límite en los bordes.
[0142] Cuando se omite una transformación para el bloque residual, por ejemplo, un modo de codificación sin pérdidas o un modo de codificación con pérdidas en un modo de omisión de transformación, la eficiencia de la codificación por entropía puede mejorarse rotando el bloque residual durante la codificación para posicionar los datos residuales con mayor energía que el promedio en una esquina superior izquierda del bloque residual. Durante la decodificación, la rotación realizada durante la codificación debe revertirse para reconstruir correctamente el bloque de vídeo a partir del bloque residual usando un bloque predictivo en el modo de interpredicción.
[0143] En el modo de interpredicción, si un borde particular del bloque residual es un límite de TU entre dos TU dentro de la misma PU, los datos residuales en el límite de TU del bloque residual típicamente tienen una energía menor que los datos residuales promedio en el bloque residual. Además, si un borde particular del bloque residual es un límite de la PU entre dos TU en PU diferentes, los datos residuales en el límite de la PU del bloque residual típicamente tienen una energía más alta que los datos residuales promedio en el bloque residual. En base a esta observación, las técnicas ilustradas en la FIG. 8 usan el tipo de límite en los bordes del bloque residual para determinar un valor de rotación mediante el cual rotar el bloque residual, por ejemplo, 0, 180, 90 o 270 grados, para posicionar los datos residuales en los límites de la PU del bloque residual original en una esquina superior izquierda del bloque residual rotado. En el lado de la codificación, esta rotación posiciona los datos residuales con mayor energía que el promedio en una esquina superior izquierda del bloque residual rotado para mejorar la eficiencia de la codificación por entropía. En el lado de la decodificación, esta rotación revierte la rotación realizada durante la codificación y devuelve los datos residuales con una energía más alta que el promedio a su posición original en el bloque residual original.
[0144] La operación ilustrada en la FIG. 8 se describirá con respecto a la unidad de reposicionamiento 66 del codificador de vídeo 20 de la FIG. 2. En otros ejemplos, la misma operación también puede realizarse mediante la unidad de reposicionamiento 94 del decodificador de vídeo 30 de la FIG. 3. En la operación ilustrada, la unidad de reposicionamiento 66 puede rotar el bloque residual un valor de rotación seleccionado de entre una pluralidad de valores de rotación. En algunos casos, los valores de rotación pueden incluir 0 grados, es decir, sin rotación, y 180 grados. En otros casos, los valores de rotación pueden incluir 0 grados, 180 grados, 90 grados y 270 grados. Como ejemplo, en el lado de la codificación, los valores de rotación pueden ser en sentido antihorario y, en el lado de la decodificación, los valores de rotación pueden ser en sentido horario
[0145] Para determinar el valor de rotación por el cual rotar el bloque residual, la unidad de reposicionamiento 66 determina un primer número de límites de la PU en un borde izquierdo y un borde superior del bloque residual para cada uno de los valores de rotación (170). La unidad de reposicionamiento 66 también determina un segundo número de límites de la PU en un borde derecho y un borde inferior del bloque residual para cada uno de los valores de rotación (172). La unidad de reposicionamiento 66, por lo tanto, realiza cada una de las rotaciones posibles del bloque residual y determina la ubicación y el número de límites de la PU en cada una de las rotaciones.
[0146] La unidad de reposicionamiento 66 calcula un valor de diferencia entre el primer número y el segundo número para cada uno de los valores de rotación (174). De esta manera, la unidad de reposicionamiento 66 determina dónde los datos residuales con mayor energía que el promedio probablemente se concentran en el bloque residual después de realizar cada una de las rotaciones. La unidad de reposicionamiento 66 determina entonces un valor de diferencia máximo a partir de los valores de diferencia calculados para todos los valores de rotación (176). Para maximizar la concentración de datos residuales con una energía más alta que el promedio en una esquina superior izquierda del bloque residual, la unidad de rotación 66 selecciona uno de los valores de rotación asociados con el valor de diferencia máximo. La unidad de reposicionamiento 94 luego rota el bloque residual el valor de rotación con el valor de diferencia máximo (178).
[0147] La FIG. 9 es un diagrama de flujo que ilustra una operación de ejemplo de restricción de tamaños de bloque de bloques residuales para los cuales se puede realizar la rotación cuando no se aplica una transformación a los bloques residuales. La operación ilustrada en la FIG. 9 se describirá con respecto a la unidad de reposicionamiento 66 del codificador de vídeo 20 de la FIG. 2. En otros ejemplos, la misma operación también puede realizarse mediante la unidad de reposicionamiento 94 del decodificador de vídeo 30 de la FIG. 3. La operación ilustrada se puede aplicar tanto a los bloques residuales de intrapredicción como a los bloques residuales de interpredicción tanto en el modo de codificación con pérdidas como en el modo de codificación sin pérdidas.
[0148] Las técnicas descritas anteriormente incluyen la rotación de un bloque residual un valor de rotación determinado cuando se omite o evita una transformación para el bloque residual. Las técnicas anteriores describen la realización de la rotación tanto para los bloques residuales de interpredicción como para los bloques residuales de intrapredicción que se codifican usando el modo de codificación con pérdidas con el modo de omisión de transformación o el modo de codificación sin pérdidas en el que se evitan los procesos de transformación y cuantificación.
[0149] En el modo de codificación con pérdidas, se puede aplicar un modo de omisión de transformación a todos los tamaños de bloque residual. En el modo de codificación sin pérdidas, se evita una transformación para todos los tamaños de bloque residual. Por lo tanto, se puede realizar una rotación para todos los tamaños de bloque residual tanto en el modo de intrapredicción como en el modo de interpredicción. Sin embargo, realizar rotaciones para bloques residuales de gran tamaño, como bloques de 16x16 o 32x32, puede ser difícil para las implementaciones de hardware. De acuerdo con las técnicas de esta divulgación, la rotación de datos residuales de bloques residuales para los que no se aplica una transformación pueden estar restringidos a tamaños de bloque residual que sean menores o iguales que un tamaño umbral. Determinar si se debe rotar el bloque residual, por lo tanto, puede depender de cu_transquant_bypass_flag que indica el modo de codificación sin pérdidas, el indicador de omisión de transformación que indica el modo de omisión de transformación en el modo de codificación con pérdidas y un tamaño del bloque residual.
[0150] En la operación ilustrada en la FIG. 9, la unidad de reposicionamiento 66 recibe un bloque residual cuando no se aplica una transformación al bloque residual, es decir, el bloque residual se codifica usando el modo de codificación sin pérdidas o el modo de codificación con pérdidas en un modo de omisión de transformación. Las técnicas de esta divulgación incluyen restringir el tamaño de los bloques residuales para los cuales se puede realizar la rotación tanto en el modo de codificación con pérdidas como en el modo de codificación sin pérdidas.
[0151] En este caso, para determinar si se debe rotar el bloque residual, la unidad de reposicionamiento 66 determina un tamaño del bloque residual para el que no se aplica una transformación (180). Si el tamaño del bloque residual es menor o igual que un tamaño de bloque umbral (rama SÍ de 182), entonces la unidad de reposicionamiento 66 determina si se debe rotar el bloque residual un valor de rotación determinado (186). Si el tamaño del bloque residual es mayor que el tamaño umbral (rama NO de 182), la unidad de reposicionamiento 66 inhabilita la rotación y no rota el bloque residual (184). La determinación de la rotación puede realizarse mediante una de las operaciones descritas con más detalle anteriormente. En algunos ejemplos, si el bloque residual es un bloque residual de intrapredicción, la rotación siempre se aplicará cuando el tamaño del bloque residual satisfaga el criterio de tamaño umbral del bloque. En algunos casos, la rotación del bloque residual puede limitarse a 180 grados. En otros casos, se puede determinar que la rotación del bloque residual es uno de 0 grados, 90 grados, 180 grados o 270 grados de acuerdo con las técnicas descritas anteriormente. En otros ejemplos, si el bloque residual es un bloque residual de interpredicción o un bloque residual de predicción por copia dentro del bloque (BC), la rotación puede inhabilitarse.
[0152] En un ejemplo, el tamaño umbral para realizar la rotación de los bloques residuales tanto en el modo de codificación con pérdidas como en el modo de codificación sin pérdidas es 8x8. En otros ejemplos, el tamaño umbral puede ser igual a 4x4. En algunos casos, la rotación solo puede aplicarse a bloques residuales de intrapredicción, ya sea en el modo de codificación con pérdidas como en el modo de codificación sin pérdidas, que satisfagan el criterio de tamaño de bloque umbral, y la rotación puede inhabilitarse para los bloques residuales de interpredicción independientemente del tamaño del bloque. En algunos casos, la rotación también puede inhabilitarse para bloques residuales de predicción intra-BC independientemente del tamaño del bloque. En otros casos, la rotación puede aplicarse tanto a los bloques residuales de intrapredicción como de interpredicción, tanto en el modo de codificación con pérdidas como en el modo de codificación sin pérdidas, que satisfacen el criterio del tamaño de bloque umbral (es decir, el tamaño del bloque residual es menor o igual que el tamaño del bloque umbral). En otro caso, la rotación se puede aplicar solo a los bloques residuales de intrapredicción en el modo de codificación con pérdidas con omisión de transformación que satisfacen el criterio del tamaño de bloque umbral, y tanto a los bloques residuales de intrapredicción como de interpredicción en el modo de codificación sin pérdidas que satisfacen el criterio del tamaño de bloque umbral.
[0153] En otro ejemplo, el modo de omisión de transformación puede restringirse para aplicarse solo a bloques residuales en el modo de codificación con pérdidas que tienen tamaños de hasta un tamaño de bloque máximo de, por ejemplo, 4x4 u 8x8. El tamaño de bloque máximo para el cual se permite omitir la transformación en el modo de codificación con pérdidas puede indicarse en uno de un SPS y un PPS asociados con el bloque residual. En este caso, el tamaño umbral para realizar la rotación de los bloques residuales tanto en el modo de codificación con pérdidas como en el modo de codificación sin pérdidas es menor o igual que un tamaño de bloque máximo para el que se puede omitir una transformación en el modo de codificación con pérdidas, por ejemplo, 4x4 u 8x8. Al establecer que el tamaño de bloque umbral sea menor o igual que el tamaño de bloque máximo para el que se puede omitir una transformación en el modo de codificación con pérdidas se alinean los tamaños de bloque para los que se puede realizar la rotación tanto en el caso del modo de codificación con pérdidas como sin pérdidas.
[0154] En algunos casos, la rotación solo puede aplicarse a bloques residuales de intrapredicción, ya sea en el modo de codificación con pérdidas como en el modo de codificación sin pérdidas, que satisfagan el criterio de tamaño de bloque umbral, y la rotación puede inhabilitarse para los bloques residuales de interpredicción independientemente del tamaño del bloque. En algunos casos, la rotación también puede inhabilitarse para bloques residuales de predicción intra-BC independientemente del tamaño del bloque. En otros casos, la rotación puede aplicarse tanto a bloques residuales de intrapredicción como de interpredicción, en el modo de codificación con pérdidas o en el modo de codificación sin pérdidas, que satisfacen el criterio del tamaño de bloque umbral. En otro caso, la rotación se puede aplicar solo a los bloques residuales de intrapredicción en el modo de codificación con pérdidas con omisión de transformación que satisfacen el criterio del tamaño de bloque umbral, y tanto a los bloques residuales de intrapredicción como de interpredicción en el modo de codificación sin pérdidas que satisfacen el criterio del tamaño de bloque umbral.
[0155] La FIG. 10 es un diagrama de flujo que ilustra una operación de ejemplo de restricción de tamaños de bloque de bloques residuales para los que se puede realizar el volteo de valores de muestra de datos residuales a lo largo de una diagonal cuando no se aplica una transformación a los bloques residuales. La operación ilustrada en la FIG. 10 se describirá con respecto a la unidad de reposicionamiento 66 del codificador de vídeo 20 de la FIG.
2. En otros ejemplos, la misma operación también puede realizarse mediante la unidad de reposicionamiento 94 del decodificador de vídeo 30 de la FIG. 3. La operación ilustrada se puede aplicar tanto a los bloques residuales de intrapredicción como a los bloques residuales de interpredicción tanto en el modo de codificación con pérdidas como en el modo de codificación sin pérdidas.
[0156] Las técnicas descritas anteriormente que se aplican a la rotación de un bloque residual también pueden aplicarse al volteo de los valores de muestra de datos residuales del bloque residual. Como se analizó anteriormente, JCTVC-K0294 propuso que, dependiendo de la exploración que se use, los valores de muestra de un bloque residual de intrapredicción pueden voltearse a lo largo de la diagonal principal o de la antidiagonal del bloque residual cuando se omite una transformación para el bloque residual. El criterio de cuándo se puede realizar una rotación para un bloque residual, descrito anteriormente con respecto a la FIG. 9, también se puede aplicar para determinar cuándo se puede realizar el volteo de los valores residuales de predicción.
[0157] Cuando se voltean los valores de muestra de datos residuales de un bloque residual, los valores de muestra en un lado de una diagonal intercambian lugares con los valores de muestra en las ubicaciones de imagen especular correspondientes en el otro lado de la diagonal del bloque residual. En algunos ejemplos, voltear los valores de muestra del bloque residual puede incluir reflejar los valores de muestra a través de la diagonal principal del bloque residual, es decir, la línea diagonal desde la esquina superior izquierda a la esquina inferior derecha del bloque residual. En otros ejemplos, voltear el valor de muestra del bloque residual puede incluir reflejar los valores de muestra a través de la antidiagonal del bloque residual, es decir, la línea diagonal desde la esquina inferior izquierda a la esquina superior derecha del bloque residual. En algunos casos, los valores de muestra del bloque residual se voltearán alrededor de la diagonal principal cuando se seleccione un modo de exploración horizontal o vertical para el bloque residual en el que se ha omitido la transformación. En otros casos, los valores de muestra del bloque residual se voltearán alrededor de la antidiagonal cuando se seleccione un modo de exploración diagonal para el bloque residual en el que se ha omitido la transformación.
[0158] En el modo de codificación con pérdidas, se puede aplicar un modo de omisión de transformación a todos los tamaños de bloque residual. En el modo de codificación sin pérdidas, se evita una transformación para todos los tamaños de bloque residual. El volteo, por lo tanto, puede realizarse para todos los tamaños de bloque residual tanto en el modo de intrapredicción como en el modo de interpredicción. De acuerdo con las técnicas de esta divulgación, el volteo de datos residuales de bloques residuales para los que no se aplica una transformación puede restringirse a tamaños de bloque residual que son menores o iguales a un tamaño umbral. Determinar si se debe voltear el bloque residual, por lo tanto, puede depender de cu_transquant bypass_flag que indica el modo de codificación sin pérdidas, el indicador de omisión de la transformación que indica el modo de omisión de la transformación en el modo de codificación con pérdidas y un tamaño del bloque residual.
[0159] En la operación ilustrada en la FIG. 10, la unidad de reposicionamiento 66 recibe un bloque residual cuando se omite una transformación para el bloque residual, es decir, el bloque residual se codifica usando el modo de codificación sin pérdidas o el modo de codificación con pérdidas en un modo de omisión de la transformación. Las técnicas de esta divulgación incluyen restringir el tamaño de los bloques residuales para los cuales se puede realizar el volteo tanto en el modo de codificación con pérdidas como en el modo de codificación sin pérdidas.
[0160] En este caso, para determinar si se debe voltear el bloque residual, la unidad de reposicionamiento 66 determina un tamaño del bloque residual para el que no se aplica una transformación (190). Si el tamaño del bloque residual es menor o igual que un tamaño de bloque umbral (rama SÍ de 192), entonces la unidad de reposicionamiento 66 determina si se deben voltear los valores de muestra de datos residuales a lo largo de una diagonal del bloque residual (196). Si el tamaño del bloque residual es mayor que el tamaño umbral (rama NO de 192), la unidad de reposicionamiento 66 inhabilita el volteo y no voltea los valores de muestra de los datos residuales del bloque residual (194). Los valores de muestra de datos residuales se pueden voltear a lo largo de una diagonal principal, es decir, de arriba a la izquierda a la parte inferior derecha, o a lo largo de una antidiagonal, es decir, de abajo a la izquierda a la parte superior derecha del bloque residual.
[0161] En un ejemplo, el tamaño umbral para voltear los datos residuales de los bloques residuales tanto en el modo de codificación con pérdidas como en el modo de codificación sin pérdidas es 8x8. En otros ejemplos, el tamaño umbral puede ser igual a 4x4. En algunos casos, el volteo solo se puede aplicar a bloques residuales de intrapredicción, en el modo de codificación con pérdidas o en el modo de codificación sin pérdidas, que satisfacen el criterio del tamaño de bloque umbral, y la rotación puede inhabilitarse para los bloques residuales de interpredicción independientemente del tamaño del bloque. En algunos casos, el volteo también puede inhabilitarse para los bloques residuales de predicción intra-BC independientemente del tamaño del bloque. En otros casos, el volteo puede aplicarse tanto a los bloques residuales de intrapredicción como de interpredicción, en el modo de codificación con pérdidas o en el modo de codificación sin pérdidas, que satisfacen el criterio del tamaño de bloque umbral (es decir, el tamaño de bloque residual es menor o igual al tamaño del bloque umbral). En otro caso, el volteo se puede aplicar solo a los bloques residuales de intrapredicción en el modo de codificación con pérdidas con omisión de transformación que satisfacen el criterio del tamaño de bloque umbral, y a los bloques residuales de intrapredicción e interpredicción en el modo de codificación sin pérdidas que satisfacen el criterio del tamaño de bloque umbral.
[0162] En otro ejemplo, el modo de omisión de transformación puede restringirse para aplicarse solo a bloques residuales en el modo de codificación con pérdidas que tienen tamaños de hasta un tamaño de bloque máximo de, por ejemplo, 4x4 u 8x8. El tamaño de bloque máximo para el cual se permite omitir la transformación en el modo de codificación con pérdidas puede indicarse en uno de un SPS y un PPS asociados con el bloque residual. En este caso, el tamaño umbral para voltear los datos residuales de los bloques residuales tanto en el modo de codificación con pérdidas como en el modo de codificación sin pérdidas es menor o igual que un tamaño de bloque máximo para el que se puede omitir una transformación en el modo de codificación con pérdidas de, por ejemplo, 4x4 u 8x8. Al establecer que el tamaño del bloque umbral sea menor o igual que el tamaño de bloque máximo para el que se puede omitir una transformación en el modo de codificación con pérdidas, se alinean los tamaños de bloque para los que se pueden realizar el volteo tanto en el modo de codificación con pérdidas como sin pérdidas.
[0163] En algunos casos, el volteo solo se puede aplicar a bloques residuales de intrapredicción, en el modo de codificación con pérdidas o en el modo de codificación sin pérdidas, que satisfacen el criterio del tamaño de bloque umbral, y la rotación puede inhabilitarse para los bloques residuales de interpredicción independientemente del tamaño del bloque. En algunos casos, el volteo también puede inhabilitarse para los bloques residuales de predicción intra-BC independientemente del tamaño del bloque. En otros casos, el volteo puede aplicarse tanto a los bloques residuales de intrapredicción como de interpredicción en el modo de codificación con pérdidas o en el modo de codificación sin pérdidas que satisfacen el criterio del tamaño de bloque umbral. En otro caso, el volteo se puede aplicar solo a los bloques residuales de intrapredicción en el modo de codificación con pérdidas con omisión de transformación que satisfacen el criterio del tamaño de bloque umbral, y a los bloques residuales de intrapredicción e interpredicción en el modo de codificación sin pérdidas que satisfacen el criterio del tamaño de bloque umbral.
[0164] Las FIGS. 11A y 11B son diagramas conceptuales que ilustran los bloques residuales 200 y 202, respectivamente, codificados utilizando la Modulación de código de impulso diferencial residual (RDPCM). En un ejemplo, un estándar de codificación de vídeo puede admitir bloques de intrapredicción con omisión de transformación y bloques de interpredicción con omisión de transformación usando la Modulación de código de impulso diferencial residual (RDPCM) en la dirección horizontal o vertical. La idea básica detrás de la RDPCM es aplicar técnicas de DPCM para predecir datos residuales con un bloque residual usando un píxel de la fila superior para predecir un píxel actual en el modo vertical y usar el píxel de la columna izquierda para predecir el píxel actual en el modo horizontal. Cada uno de los bloques residuales 200 y 202 son de tamaño M (filas) x N (columnas) e incluyen píxeles de datos residuales n,j, donde 0 < i < (M-1) y 0 < j < (N-1).
[0165] Al decodificar bloques residuales en el modo de codificación con pérdidas usando RDPCM, se puede seguir el siguiente orden de operaciones en el decodificador de vídeo 30 de la FIG. 3: rotación o volteo realizada por la unidad de reposicionamiento 94, cuantificación inversa realizada por la unidad de cuantificación inversa 86, omisión de transformación inversa y RDPCM inversa. Cuando se codifican bloques residuales en el modo de codificación con pérdidas usando RDPCM, se puede seguir el siguiente orden de operaciones en el codificador de vídeo 20 de la FIG. 2: RDPCM, omisión de transformación, cuantificación realizada por la unidad de cuantificación 54 y rotación o volteo realizados por la unidad de reposicionamiento 66. Al decodificar bloques residuales en el modo de codificación sin pérdidas usando RDPCM, se puede seguir el siguiente orden de operaciones en el decodificador de vídeo 30 de la FIG. 3: rotación o volteo realizados por la unidad de reposicionamiento 94, cuantificación inversa y omisión de transformación inversa, y RDPCM inversa. Cuando se codifican bloques residuales en el modo de codificación sin pérdidas usando RDPCM, se puede seguir el siguiente orden de operaciones en el codificador de vídeo 20 de la FIG. 2: RDPCM, omisión de transformación y cuantificación, y rotación o volteo realizados por la unidad de reposicionamiento 66.
[0166] La FIG. 11A ilustra un modo inter-RDPCM vertical aplicado al bloque residual 200. En el modo inter-RDPCM vertical, los datos residuales en una primera fila 201 del bloque residual 200 no cambian (es decir, no se predicen de ninguna otra fila), mientras que las filas posteriores de los datos residuales del bloque residual 200 se predicen a partir de la fila anterior. Después de la inter-RDPCM vertical, los datos residuales de la primera fila 201 tienden a tener más o mayor energía en comparación con otras filas de los datos residuales en el bloque residual 200. Si se rota el bloque residual 200, por ejemplo, 180 grados, después de la inter-RDPCM vertical, la fila de más abajo de los datos residuales del bloque residual 200 tiende a tener más o mayor energía/magnitud que las otras filas de los datos residuales.
[0167] La FIG. 11B ilustra un modo inter-RDPCM horizontal aplicado al bloque residual 202. En el modo inter-RDPCM horizontal, los datos residuales en una columna situada más a la izquierda 203 del bloque residual 202 no cambian (es decir, no se predicen desde ninguna otra columna), mientras que las columnas posteriores de los datos residuales del bloque residual 202 se predicen a partir de la columna de la izquierda. Después de inter-RDPCM horizontal, los datos residuales en la columna situada más a la izquierda 203 tienden a tener más o más energía en comparación con otras columnas de los datos residuales en el bloque residual 202. Si se rota el bloque residual 202, por ejemplo, 180 grados, después de una inter-RDPCM horizontal, la fila situada más a la derecha de los datos residuales del bloque residual 202 tiende a tener más o mayor energía/magnitud que las otras filas de los datos residuales.
[0168] Para inter-RDPCM, la dirección de predicción (sin RDPCM, horizontal, vertical) puede señalizarse explícitamente al decodificador de vídeo 30. Por ejemplo, el codificador de vídeo 20 puede incluir uno o más elementos sintácticos en un flujo de bits codificado que indican el modo de RDPCM para un bloque (o bloques) particular de datos de vídeo. El decodificador de vídeo 30 puede recibir el uno o más elementos sintácticos y realizar la RDPCM de manera recíproca.
[0169] Como se describió anteriormente, en HEVC, la codificación por entropía está diseñada para la codificación de transformación. Los coeficientes de transformación de frecuencia más baja típicamente tienen una energía más alta. Los coeficientes de transformación son explorados y codificados por entropía desde la parte inferior derecha a la parte superior izquierda de un bloque de vídeo. Por lo tanto, el codificador de vídeo o decodificador de vídeo espera que los coeficientes iniciales en la exploración en la esquina inferior derecha del bloque de vídeo tengan una energía menor que los coeficientes posteriores en el orden de exploración. Sin embargo, después de rotar un bloque inter-RDPCM, los coeficientes iniciales en la exploración en la esquina inferior derecha del bloque de vídeo tienden a tener más o mayor energía que los coeficientes posteriores en el orden de exploración, lo que resulta en un peor rendimiento de codificación (es decir, se necesitan más bits para la codificación por entropía).
[0170] Las técnicas de esta divulgación incluyen inhabilitar selectivamente (es decir, no aplicar) el reposicionamiento de datos residuales para bloques residuales de inter-RDPCM. Más específicamente, para un bloque residual en el modo de interpredicción o en el modo de intrapredicción que usa RDPCM en la dirección horizontal o vertical, el bloque residual puede no rotarse antes de codificar los datos residuales del bloque residual. En algunos ejemplos, las técnicas de inhabilitación de la rotación, es decir, no rotar el bloque residual antes de codificar los datos residuales, para ciertos modos de predicción pueden aplicarse solo a la codificación con pérdidas con omisión de transformación, solo a la codificación sin pérdidas, o tanto a la codificación con pérdidas con omisión de transformación y a la codificación sin pérdidas.
[0171] La FIG. 12 es un diagrama conceptual que ilustra una imagen actual 210 que incluye un bloque actual 212 que se predice con base en un bloque codificado previamente 214 en la misma imagen 210 usando un modo de predicción por copia dentro del bloque (intra-BC). En un ejemplo, un estándar de codificación de vídeo puede incluir el modo de predicción intra-BC como uno de los modos de predicción. El contenido de vídeo en ciertas aplicaciones, como escritorio remoto, juegos remotos, pantallas inalámbricas, infoentretenimiento automotriz, computación en la nube y similares, típicamente incluye una combinación de contenido natural y contenido de pantalla, donde el contenido de la pantalla puede incluir, por ejemplo, texto y gráficos artificiales. En las regiones de contenido de pantalla, a menudo existen patrones repetidos (como caracteres, iconos, símbolos, etc.). El modo de predicción intra-BC es una técnica dedicada que elimina este tipo de redundancia y mejora la eficiencia de la codificación de intrapredicción para el contenido de la pantalla.
[0172] Como se ilustra en la FIG. 12, para un bloque de vídeo actual 212 que usa el modo de predicción intra-BC, las señales de predicción se obtienen a partir de un bloque de vídeo previamente codificado 214 en una región reconstruida 213 de la imagen actual 210. Un vector de desfase o desplazamiento (es decir, un vector de movimiento) 216 indica la posición de las señales de predicción en el bloque de vídeo previamente codificado 214 desplazado de la posición de la muestra a predecir en el bloque de vídeo actual 212. Como ejemplo, el codificador de vídeo 20 puede codificar el vector de movimiento 216 junto con las señales residuales como la diferencia entre el bloque de vídeo actual 212 y las señales de predicción del bloque de vídeo 214. El decodificador de vídeo 30 puede decodificar el bloque de vídeo actual 212 basándose en el vector de movimiento 216 y las señales residuales recibidas del codificador de vídeo 20.
[0173] En algunos ejemplos, inter-RDPCM puede aplicarse a bloques que se codifican utilizando el modo de predicción intra-BC. Como en el caso de inter-RDPCM, el codificador de vídeo 20 o el decodificador de vídeo 30 pueden predecir datos residuales a partir de los bloques de predicción intra-BC usando tres modos, incluyendo RDPCM-off, RDPCM-horizontal y RDPCM-vertical. Esta extensión puede aplicarse tanto en casos sin pérdidas como con pérdidas.
[0174] Las técnicas de esta divulgación incluyen inhabilitar selectivamente (es decir, no aplicar) el reposicionamiento de datos residuales de bloques residuales en el modo de predicción intra-BC. Además, para un bloque residual en cualquiera de los modos de interpredicción, el modo de intrapredicción o el modo de predicción intra-BC usando RDPCM en la dirección horizontal o vertical, el bloque residual no puede rotarse antes de codificar los datos residuales del bloque residual.
[0175] En algunos ejemplos, las técnicas de inhabilitar el reposicionamiento para ciertos modos de predicción pueden aplicarse solo a la codificación con pérdidas con omisión de transformación, solo a la codificación sin pérdidas, o tanto a la codificación con pérdidas con omisión de transformación y a la codificación sin pérdidas. En otro ejemplo, el reposicionamiento puede inhabilitarse (es decir, no aplicarse) para todos los bloques de modo de interpredicción y a todos los bloques de modo de predicción intra-BC. Este criterio puede combinarse con otros criterios de si la codificación es con pérdidas con omisión de transformación o sin pérdidas determinar si se puede aplicar el reposicionamiento.
[0176] Esta divulgación, en general, describe técnicas para codificar datos residuales de un bloque residual de predicción en un modo de codificación con pérdidas o en un modo de codificación sin pérdidas, en el que se omite o se evita una transformación. De acuerdo con las técnicas de esta divulgación, el codificador de vídeo 20 o el decodificador de vídeo 30 determinan si se deben reposicionar los datos residuales de un bloque residual basándose en un modo de predicción del bloque residual, por ejemplo, el modo de intrapredicción, la interpredicción o el modo de predicción por copia dentro del bloque y un tamaño del bloque residual. En algunos ejemplos, las técnicas inhabilitan el reposicionamiento de los datos residuales para todos los bloques residuales en el modo de interpredicción y el modo de predicción intra-BC. En otros ejemplos, las técnicas determinan reposicionar los bloques residuales en el modo de intrapredicción cuando los bloques residuales tienen tamaños de bloque que son menores o iguales a un tamaño umbral para el modo de codificación con pérdidas y el modo de codificación sin pérdidas, como se describió anteriormente.
[0177] La FIG. 13 es un diagrama de flujo que ilustra una operación de ejemplo para determinar si se deben reposicionar los datos residuales de un bloque residual para el que no se aplica una transformación basándose en un modo de predicción del bloque residual y un tamaño del bloque residual. La operación ilustrada en la FIG. 13 se describirá con respecto a la unidad de reposicionamiento 66 del codificador de vídeo 20 de la FIG. 2. En otros ejemplos, la misma operación también puede realizarse mediante la unidad de reposicionamiento 94 del decodificador de vídeo 30 de la FIG. 3. La operación ilustrada puede aplicarse a todos los bloques residuales tanto en el modo de codificación con pérdidas como en el modo de codificación sin pérdidas.
[0178] Las técnicas descritas anteriormente incluyen rotar un bloque residual un valor de rotación determinado o voltear los datos residuales a lo largo de una diagonal del bloque residual cuando no se aplica una transformación al bloque residual. Las técnicas anteriores describen el reposicionamiento de datos residuales tanto para bloques residuales de interpredicción como para bloques residuales de intrapredicción que se codifican usando el modo de codificación con pérdidas en el modo de omisión de transformación o el modo de codificación sin pérdidas en el que se evitan los procesos de transformación y cuantificación.
[0179] De acuerdo con un estándar de codificación de vídeo de ejemplo, como las Extensiones de rango de HEVC, en el modo de codificación con pérdidas, se puede aplicar un modo de omisión de transformación a bloques residuales de cualquier tamaño. En el modo de codificación sin pérdidas, se evitan los procedimientos de transformación y cuantificación para todos los bloques residuales. Tanto en el modo de codificación con pérdidas como en el modo de codificación sin pérdidas, por lo tanto, se puede omitir o evitar la transformación para todos los tamaños de bloque. El reposicionamiento, por ejemplo, rotar o voltear, por lo tanto, se puede realizar para todos los tamaños de bloque residual tanto en el modo de intrapredicción como en el modo de interpredicción. En algunos ejemplos, en el modo de codificación con pérdidas, el modo de omisión de transformación puede restringirse para aplicarse solo a bloques residuales que tengan tamaños de hasta un tamaño de bloque máximo de, por ejemplo, 4x4 u 8x8. El tamaño de bloque máximo para el cual se permite omitir la transformación en el modo de codificación con pérdidas puede indicarse en uno de un SPS y un PPS asociados con el bloque residual.
[0180] En la operación ilustrada en la FIG. 13, la unidad de reposicionamiento 66 recibe un bloque residual cuando no se aplica una transformación al bloque residual, es decir, el bloque residual se codifica usando el modo de codificación sin pérdidas o el modo de codificación con pérdidas en un modo de omisión de transformación. Las técnicas de esta divulgación incluyen restringir el tamaño de los bloques residuales para los cuales se puede realizar el reposicionamiento tanto en el modo de codificación con pérdidas como en el modo de codificación sin pérdidas.
[0181] En este caso, para determinar si se debe reposicionar el bloque residual, la unidad de reposicionamiento 66 determina un modo de predicción del bloque residual para el que no se aplica una transformación (220). Si el bloque residual está en el modo de interpredicción (rama SÍ de 222), la unidad de reposicionamiento 66 inhabilita el proceso de reposicionamiento y no rota ni voltea los datos residuales del bloque residual (232). Si el bloque residual no está en el modo de interpredicción (rama NO de 222) pero el bloque residual está en el modo de predicción intra-BC (rama SÍ de 224), la unidad de reposicionamiento 66 inhabilita el proceso de reposicionamiento y no rota ni voltea datos residuales del bloque residual (232).
[0182] Si el bloque residual no está en el modo de predicción intra-BC (rama NO de 224) pero el bloque residual está en el modo de intrapredicción (rama SÍ de 226), la unidad de reposicionamiento 66 determina un tamaño del bloque residual en el modo de codificación sin pérdidas (228). Si el tamaño del bloque residual es menor o igual que un tamaño de bloque umbral (rama SÍ de 230), entonces la unidad de reposicionamiento 66 determina si se debe reposicionar, es decir, rotar o voltear, el bloque residual (234). Si el tamaño del bloque residual es mayor que el tamaño umbral (rama NO de 230), la unidad de reposicionamiento 66 inhabilita el proceso de reposicionamiento y no rota ni voltea los datos residuales del bloque residual (232). Si el bloque residual no está en el modo de intrapredicción (rama NO de 226), la unidad de reposicionamiento 66 inhabilita el proceso de reposicionamiento y no rota ni voltea los datos residuales del bloque residual (232). En otros ejemplos, si el bloque residual en cualquiera de los modos de predicción usa RDPCM, la unidad de reposicionamiento 66 puede inhabilitar el proceso de reposicionamiento y no rotar ni voltear los datos residuales del bloque residual.
[0183] En un ejemplo, el tamaño umbral usado en la operación 230 para determinar si se debe realizar el reposicionamiento de los bloques residuales es 8x8. En otro ejemplo, el tamaño umbral es igual a 4x4. En otro ejemplo, el modo de omisión de transformación puede restringirse para aplicarse solo a bloques residuales en el modo de codificación con pérdidas que tienen tamaños de hasta un tamaño de bloque máximo de, por ejemplo, 4x4 u 8x8. El tamaño de bloque máximo para el cual se permite omitir la transformación en el modo de codificación con pérdidas puede indicarse en uno de un SPS y un PPS asociados con el bloque residual. En este caso, el tamaño umbral para determinar si se debe realizar el reposicionamiento de los bloques residuales tanto en el modo de codificación con pérdidas como en el modo de codificación sin pérdidas es menor o igual que un tamaño de bloque máximo para el que se puede omitir una transformación en el modo de codificación con pérdidas, por ejemplo, 4x4 u 8x8. Al establecer que el tamaño de bloque umbral sea menor o igual que el tamaño de bloque máximo para el que se puede omitir una transformación en el modo de codificación con pérdidas se alinean los tamaños de bloque para los que se puede realizar la rotación tanto en el caso del modo de codificación con pérdidas como sin pérdidas.
[0184] En el caso de un proceso de rotación, la determinación del reposicionamiento puede realizarse mediante una de las operaciones descritas con más detalle anteriormente con respecto a las FIGS. 5-8. En algunos ejemplos, cuando el bloque residual es un bloque residual de intrapredicción, la rotación siempre se aplicará cuando el tamaño del bloque residual satisfaga el criterio del tamaño umbral del bloque. En algunos casos, la rotación del bloque residual puede limitarse a 180 grados. En otros casos, cuando el bloque residual es un bloque residual de intrapredicción que satisface el criterio del tamaño de bloque umbral, la rotación del bloque residual puede determinarse como uno de 0 grados, 90 grados, 180 grados o 270 grados, de acuerdo con las técnicas descritas anteriormente.
[0185] En uno o más ejemplos, las funciones descritas se pueden implementar 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 por 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 incluyendo cualquier medio que facilite la transferencia de un programa informático de 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 tangibles legibles por ordenador que sean no transitorios o a (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 la presente divulgación. Un producto de programa informático puede incluir un medio legible por ordenador.
[0186] 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 en disco óptico, almacenamiento en disco magnético u otros dispositivos de almacenamiento magnético, memoria flash o cualquier otro medio que se pueda usar para almacenar el código de programa deseado en forma de instrucciones o estructuras de datos y al que se pueda acceder mediante un ordenador. Asimismo, cualquier conexión recibe apropiadamente 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 están incluidos en la definición de medio. Sin embargo, se debe entender que los medios de almacenamiento legibles por ordenador y los medios de almacenamiento de datos no incluyen conexiones, ondas portadoras, señales ni otros medios transitorios, sino que, en cambio, se refieren a medios de almacenamiento tangibles no transitorios. El término disco, como se usa en el presente documento, incluye disco compacto (CD), disco láser, disco óptico, disco versátil digital (DVD), disco flexible y disco Blu-ray, donde unos discos reproducen normalmente los datos magnéticamente, mientras que otros discos reproducen datos ópticamente con láseres. Las combinaciones de los anteriores también se deben incluir dentro del alcance de los medios legibles por ordenador.
[0187] Uno o más procesadores, tales como uno o más procesadores de señales digitales (DSP), microprocesadores de propósito general, circuitos integrados específicos de la aplicación (ASIC), matrices de puertas lógicas programable en campo (FPGA) u otros circuitos lógicos integrados o discretos equivalentes pueden ejecutar instrucciones. 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 de software dedicados configurados para codificar y decodificar, o incorporar en un códec combinado. Además, las técnicas se podrían implementar por completo en uno o más circuitos o elementos lógicos.
[0188] Las técnicas de la presente divulgación se pueden implementar en una amplia variedad de dispositivos o aparatos, incluyendo un teléfono inalámbrico, un circuito integrado (CI) o un conjunto de CI (por ejemplo, un conjunto de chips). En la presente divulgación se describen diversos componentes, módulos o unidades para destacar aspectos funcionales de dispositivos configurados para realizar las técnicas divulgadas, pero no se requiere necesariamente su realización mediante diferentes unidades de hardware. En su lugar, como se describe anteriormente, diversas unidades se pueden combinar en una unidad de hardware de códec o proporcionarse mediante un grupo de unidades de hardware interoperativas, que incluya uno o más procesadores como se describe anteriormente, junto con software y/o firmware adecuados.

Claims (13)

REIVINDICACIONES
1. Un procedimiento para decodificar datos de vídeo, comprendiendo el procedimiento: decodificar al menos un bloque residual de datos de vídeo, usando el modo de omisión de transformación en un modo de codificación con pérdidas, en el que, en el modo de codificación con pérdidas usando el modo de omisión de transformación, la transformación no se aplica para bloques residuales que tienen un tamaño de bloque hasta un tamaño de bloque máximo; y
decodificar al menos un bloque residual de datos de vídeo en un modo de codificación sin pérdidas, en el que, en el modo de codificación sin pérdidas, la transformación y la cuantificación no se aplican al bloque residual; y
para el al menos un bloque residual decodificado usando el modo de omisión de transformación en el modo de codificación con pérdidas, y para el al menos un bloque residual decodificado en el modo de codificación sin pérdidas, antes de reconstruir un bloque de vídeo a partir de los datos residuales del bloque residual, determinar (220, 228) si se deben reposicionar los datos residuales del bloque residual basándose en un modo de predicción del bloque residual y basándose en el tamaño del bloque residual,
en el que reposicionar los datos residuales comprende uno de rotar o voltear los datos residuales del bloque residual,
en el que se hace una determinación de reposicionar los datos residuales del bloque residual cuando el modo de predicción del bloque residual es un modo intra y el tamaño del bloque residual es menor o igual a un tamaño umbral que es menor o igual que el tamaño de bloque máximo para el cual la transformación no se aplica en el modo de codificación con pérdidas, y
en el que el tamaño de bloque máximo para el cual la transformación no se aplica en el modo de codificación con pérdidas se indica en uno de un conjunto de parámetros de secuencia (SPS) o un conjunto de parámetros de imagen (PPS) asociados con los datos de vídeo.
2. Un procedimiento de codificación de datos de vídeo, comprendiendo el procedimiento:
codificar al menos un bloque residual de datos de vídeo, usando el modo de omisión de transformación en un modo de codificación con pérdidas, en el que, en el modo de codificación con pérdidas, la transformación no se aplica a los bloques residuales que tienen un tamaño de bloque hasta un tamaño de bloque máximo; y
codificar al menos un bloque residual de datos de vídeo en un modo de codificación sin pérdidas, en el que, en el modo de codificación sin pérdidas, la transformación y la cuantificación no se aplican al bloque residual; y
para el al menos un bloque residual codificado usando el modo de omisión de transformación en el modo de codificación con pérdidas, y para el al menos un bloque residual codificado en el modo de codificación sin pérdidas, antes de codificar los datos residuales del bloque residual, determinar (220, 228) si se deben reposicionar los datos residuales del bloque residual basándose en un modo de predicción del bloque residual y basándose en el tamaño del bloque residual,
en el que reposicionar los datos residuales comprende uno de rotar o voltear los datos residuales del bloque residual,
en el que se hace una determinación de reposicionar los datos residuales del bloque residual cuando el modo de predicción del bloque residual es un modo intra y el tamaño del bloque residual es menor o igual a un tamaño umbral que es menor o igual que el tamaño de bloque máximo para el cual la transformación no se aplica en el modo de codificación con pérdidas, y
en el que el tamaño de bloque máximo para el cual la transformación no se aplica en el modo de codificación con pérdidas se indica en uno de un conjunto de parámetros de secuencia (SPS) o un conjunto de parámetros de imagen (PPS) asociados con los datos de vídeo.
3. El procedimiento según la reivindicación 1 o la reivindicación 2, en el que, cuando el modo de predicción del bloque residual es un modo de intrapredicción, determinar si se deben reposicionar los datos residuales del bloque residual comprende:
determinar el tamaño del bloque residual;
basándose en que el tamaño del bloque residual es menor o igual que el tamaño umbral, determinar reposicionar los datos residuales del bloque residual; y
basándose en que el tamaño del bloque residual es mayor que el tamaño umbral, inhabilitar el reposicionamiento de los datos residuales del bloque residual.
4. El procedimiento según la reivindicación 1 o la reivindicación 2, en el que el tamaño umbral es igual a uno de un bloque de 8x8 o un bloque de 4x4.
5. El procedimiento según la reivindicación 1 o la reivindicación 2, que comprende, además, cuando el modo de predicción del bloque residual es un modo de interpredicción y/o cuando el modo de predicción del bloque residual es el modo de predicción por copia dentro del bloque, inhabilitar el reposicionamiento de los datos residuales del bloque residual.
6. El procedimiento según la reivindicación 1 o la reivindicación 2, que comprende, además, cuando el modo de predicción del bloque residual es uno de un modo de interpredicción que usa DPCM residual o un modo de predicción por copia dentro del bloque que usa DPCM residual, inhabilitar el reposicionamiento de los datos residuales del bloque residual.
7. El procedimiento según la reivindicación 1, que comprende, además, basándose en una determinación de reposicionar los datos residuales del bloque residual, reposicionar los datos residuales del bloque residual para revertir uno de una rotación o un volteo realizados durante la codificación de los datos residuales del bloque residual que posicionó una porción de los datos residuales con una energía más alta que el promedio en una esquina superior izquierda del bloque residual.
8. El procedimiento según la reivindicación 2, que comprende, además, basándose en una determinación de reposicionar los datos residuales del bloque residual, uno de rotar o voltear los datos residuales del bloque residual para posicionar una porción de los datos residuales con una energía más alta que el promedio en una esquina superior izquierda del bloque residual.
9. El procedimiento según la reivindicación 1 o la reivindicación 2, en el que determinar si se deben reposicionar los datos residuales del bloque residual comprende determinar rotar el bloque residual, comprendiendo, además, el procedimiento rotar el bloque residual un valor de rotación predeterminado; o en el que determinar si se deben reposicionar los datos residuales del bloque residual comprende determinar un valor de rotación para el bloque residual, comprendiendo, además, el procedimiento rotar el bloque residual el valor de rotación determinado.
10. El procedimiento según la reivindicación 1 o la reivindicación 2, en el que determinar si se deben reposicionar los datos residuales del bloque residual comprende determinar voltear los datos residuales del bloque residual, comprendiendo, además, el procedimiento voltear los datos residuales del bloque residual a lo largo de uno de la diagonal principal o la antidiagonal del bloque residual.
11. Un dispositivo de decodificación de vídeo (30) para decodificar datos de vídeo, comprendiendo el dispositivo:
una memoria configurada para almacenar datos de vídeo; y
uno o más procesadores configurados para:
decodificar al menos un bloque residual de datos de vídeo, usando el modo de omisión de transformación en un modo de codificación con pérdidas usando el modo de omisión de transformación, en el que la transformación no se aplica para bloques residuales que tienen un tamaño de bloque de hasta un tamaño de bloque máximo; y
decodificar al menos un bloque residual de datos de vídeo en un modo de codificación sin pérdidas, en el que, en el modo de codificación sin pérdidas, no se aplican la transformación y la cuantificación al bloque residual; y
para el al menos un bloque residual decodificado usando el modo de omisión de transformación en el modo de codificación con pérdidas, y para el al menos un bloque residual decodificado en el modo de codificación sin pérdidas, antes de reconstruir un bloque de vídeo a partir de datos residuales del bloque residual, determinar si se deben reposicionar los datos residuales del bloque residual basándose en un modo de predicción del bloque residual y basándose en un tamaño del bloque residual,
en el que reposicionar los datos residuales comprende uno de rotar o voltear los datos residuales del bloque residual,
en el que se hace una determinación de reposicionar los datos residuales del bloque residual cuando el modo de predicción del bloque residual es un modo intra y el tamaño del bloque residual es menor o igual a un tamaño umbral que es menor o igual que el tamaño de bloque máximo para el cual la transformación no se aplica en el modo de codificación con pérdidas, y
en el que el tamaño de bloque máximo para el cual la transformación no se aplica en el modo de codificación con pérdidas se indica en uno de un conjunto de parámetros de secuencia (SPS) o un conjunto de parámetros de imagen (PPS) asociados con los datos de vídeo.
12. Un dispositivo de codificación de vídeo (20) para codificar datos de vídeo, comprendiendo el dispositivo: una memoria configurada para almacenar datos de vídeo; y
uno o más procesadores configurados para:
codificar al menos un bloque residual de datos de vídeo, usando el modo de omisión de transformación en un modo de codificación con pérdidas, en el que, en el modo de codificación con pérdidas, no se aplica la transformación a los bloques residuales que tienen un tamaño de bloque de hasta un tamaño de bloque máximo; y
codificar al menos un bloque residual de datos de vídeo en un modo de codificación sin pérdidas, en el que, en el modo de codificación sin pérdidas, la transformación y la cuantificación no se aplican al bloque residual; y
para el al menos un bloque residual codificado usando el modo de omisión de transformación en el modo de codificación con pérdidas, y para el al menos un bloque residual codificado en el modo de codificación sin pérdidas, antes de codificar los datos residuales del bloque residual, determinar si se deben reposicionar los datos residuales del bloque residual basándose en un modo de predicción del bloque residual y basándose en un tamaño del bloque residual,
en el que reposicionar los datos residuales comprende uno de rotar o voltear los datos residuales del bloque residual,
en el que se hace una determinación de reposicionar los datos residuales del bloque residual cuando el modo de predicción del bloque residual es un modo intra y el tamaño del bloque residual es menor o igual a un tamaño umbral que es menor o igual que el tamaño de bloque máximo para el cual la transformación no se aplica en el modo de codificación con pérdidas, y
en el que el tamaño de bloque máximo para el cual la transformación no se aplica en el modo de codificación con pérdidas se indica en uno de un conjunto de parámetros de secuencia (SPS) o un conjunto de parámetros de imagen (PPS) asociados con los datos de vídeo.
13. Un medio legible por ordenador que comprende instrucciones para codificar datos de vídeo, en el que las instrucciones, cuando se ejecutan, hacen que uno o más procesadores realicen el procedimiento de cualquiera de las reivindicaciones 1-10.
ES14727301T 2013-04-23 2014-04-23 Reposicionamiento de bloques residuales de predicción en codificación de vídeo Active ES2810253T3 (es)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201361815148P 2013-04-23 2013-04-23
US201361833781P 2013-06-11 2013-06-11
US201361890102P 2013-10-11 2013-10-11
US14/259,046 US9549182B2 (en) 2012-07-11 2014-04-22 Repositioning of prediction residual blocks in video coding
PCT/US2014/035185 WO2014176362A1 (en) 2013-04-23 2014-04-23 Repositioning of prediction residual blocks in video coding

Publications (1)

Publication Number Publication Date
ES2810253T3 true ES2810253T3 (es) 2021-03-08

Family

ID=50842346

Family Applications (1)

Application Number Title Priority Date Filing Date
ES14727301T Active ES2810253T3 (es) 2013-04-23 2014-04-23 Reposicionamiento de bloques residuales de predicción en codificación de vídeo

Country Status (8)

Country Link
EP (1) EP2989796B1 (es)
JP (1) JP6285014B2 (es)
KR (2) KR102013561B1 (es)
CN (1) CN105165012B (es)
BR (1) BR112015026899B1 (es)
ES (1) ES2810253T3 (es)
HU (1) HUE050421T2 (es)
WO (1) WO2014176362A1 (es)

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6480790B2 (ja) * 2015-04-13 2019-03-13 日本放送協会 画像判定装置、符号化装置、及びプログラム
US10306258B2 (en) 2016-01-29 2019-05-28 Google Llc Last frame motion vector partitioning
US10469841B2 (en) * 2016-01-29 2019-11-05 Google Llc Motion vector prediction using prior frame residual
CN112055204B (zh) * 2016-02-17 2024-05-28 日本放送协会 编码装置、解码装置以及程序
JP7166743B2 (ja) * 2016-02-17 2022-11-08 日本放送協会 符号化装置、復号装置及びプログラム
US10887626B2 (en) * 2016-05-13 2021-01-05 Sharp Kabushiki Kaisha Image decoding device and image encoding device
KR20180001485A (ko) * 2016-06-24 2018-01-04 한국전자통신연구원 변환 기반의 영상 부호화/복호화 방법 및 장치
KR102504877B1 (ko) * 2016-12-27 2023-02-28 삼성전자주식회사 부호화 방법 및 그 장치, 복호화 방법 및 그 장치
WO2018194189A1 (ko) * 2017-04-18 2018-10-25 삼성전자 주식회사 영상을 부호화/복호화 하는 방법 및 그 장치
WO2020009460A1 (ko) * 2018-07-04 2020-01-09 에스케이텔레콤 주식회사 잔차신호 재배열 방법 및 영상 복호화 장치
WO2020145381A1 (ja) * 2019-01-13 2020-07-16 ソニー株式会社 画像処理装置および方法
KR20240000610A (ko) 2019-01-15 2024-01-02 로즈데일 다이나믹스 엘엘씨 변환 스킵 플래그를 이용한 영상 코딩 방법 및 장치
KR20210134043A (ko) * 2019-04-17 2021-11-08 엘지전자 주식회사 Bdpcm을 이용한 영상 부호화/복호화 방법, 장치 및 비트스트림을 전송하는 방법
CN117221544A (zh) 2019-05-19 2023-12-12 字节跳动有限公司 数字视频中的变换旁路编解码残差块
WO2020235959A1 (ko) * 2019-05-22 2020-11-26 엘지전자 주식회사 영상 코딩 시스템에서 bdpcm을 사용하는 영상 디코딩 방법 및 그 장치
WO2020235960A1 (ko) * 2019-05-22 2020-11-26 엘지전자 주식회사 Bdpcm 에 대한 영상 디코딩 방법 및 그 장치
WO2020264529A1 (en) * 2019-06-28 2020-12-30 Beijing Dajia Internet Information Technology Co., Ltd. Lossless coding modes for video coding
US11350131B2 (en) * 2019-06-28 2022-05-31 Hfi Innovation Inc. Signaling coding of transform-skipped blocks
CN114375578A (zh) * 2019-07-10 2022-04-19 Lg电子株式会社 用于残差编码的图像解码方法及其设备
US11375238B2 (en) 2019-09-20 2022-06-28 Tencent America LLC Method for padding processing with sub-region partitions in video stream
WO2021118310A1 (ko) * 2019-12-13 2021-06-17 주식회사 케이티 비디오 신호 처리 방법 및 장치
US11722678B2 (en) * 2020-08-25 2023-08-08 Tencent America LLC Method and apparatus for transform skip coefficients coding
CN114513663A (zh) * 2020-11-17 2022-05-17 腾讯科技(深圳)有限公司 视频解码方法、装置及电子设备
WO2022191554A1 (ko) * 2021-03-08 2022-09-15 현대자동차주식회사 임의 블록 분할을 이용하는 비디오 코딩방법 및 장치

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4226172B2 (ja) * 1998-11-24 2009-02-18 株式会社ハイニックスセミコンダクター 適応的変換方法を用いる映像圧縮符号化装置および復号化装置ならびにその方法
US9661338B2 (en) * 2010-07-09 2017-05-23 Qualcomm Incorporated Coding syntax elements for adaptive scans of transform coefficients for video coding
US9106913B2 (en) * 2011-03-08 2015-08-11 Qualcomm Incorporated Coding of transform coefficients for video coding
US9344722B2 (en) * 2011-11-18 2016-05-17 Futurewei Technologies, Inc. Scanning of prediction residuals in high efficiency video coding

Also Published As

Publication number Publication date
JP6285014B2 (ja) 2018-02-28
BR112015026899A2 (pt) 2017-07-25
EP2989796B1 (en) 2020-05-06
HUE050421T2 (hu) 2020-12-28
KR20180041774A (ko) 2018-04-24
BR112015026899B1 (pt) 2023-03-28
WO2014176362A1 (en) 2014-10-30
KR20150143585A (ko) 2015-12-23
CN105165012B (zh) 2020-04-03
KR102013561B1 (ko) 2019-08-23
CN105165012A (zh) 2015-12-16
JP2016521070A (ja) 2016-07-14
EP2989796A1 (en) 2016-03-02

Similar Documents

Publication Publication Date Title
ES2810253T3 (es) Reposicionamiento de bloques residuales de predicción en codificación de vídeo
ES2777218T3 (es) Inhabilitación de ocultación de datos de signo en codificación de vídeo
ES2637490T3 (es) Grupos de coeficientes y codificación de coeficientes para barridos de coeficientes
ES2865389T3 (es) Actualización del parámetro de rice para la codificación de nivel de coeficiente en el procedimiento de codificación de vídeo
ES2779461T3 (es) Intrapredicción de vídeo mejorada que usa una combinación de predicción dependiente de la posición para codificación de vídeo
ES2633947T3 (es) Predicción de paletas en la codificación de vídeo basada en paleta
ES2869854T3 (es) Unificar copia intrabloque e interpredicción
ES2908241T3 (es) Selección de candidatos de modo de fusión unificado y modo de predicción de vector de movimiento adaptable
ES2611349T3 (es) Codificación de Indicador de bloque codificado (CBF) para el formato de muestra 4:2:2 en codificación de vídeo
ES2874848T3 (es) Restricción de unidades de predicción en segmentos b a interpredicción unidireccional
ES2751576T3 (es) Agrupación de períodos de derivación de paleta para codificación de vídeo
ES2715555T3 (es) Predicción residual de componentes cruzadas adaptativa
ES2763443T3 (es) Codificación de vídeo en modo intra
EP3005698B1 (en) Residual differential pulse code modulation (dpcm) extensions and harmonization with transform skip, rotation, and scans
US9549182B2 (en) Repositioning of prediction residual blocks in video coding
ES2715838T3 (es) Matrices de cuantización de señalización para la codificación de vídeo
ES2844549T3 (es) Inicialización del parámetro de Rice para la codificación de niveles de coeficiente en un proceso de codificación de vídeo
ES2698552T3 (es) Reducción del número de contextos para codificación aritmética binaria adaptativa al contexto
ES2677100T3 (es) Filtrado de bucle alrededor de los límites de segmento o de límites de mosaico en la codificación de video
ES2873548T3 (es) Codificación de píxeles de escape para codificación de paleta
ES2864623T3 (es) Codificación de parámetros de cuantificación (QP) en codificación de video
ES2856051T3 (es) Candidatos de fusión favorables a la paralelización para codificación de vídeo
ES2841424T3 (es) Diseño unificado para esquemas de división de imágenes
ES2973247T3 (es) Indicación de modo de intra-predicción mejorada para codificación de vídeo utilizando el modo contiguo
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