ES2732013T3 - Predicción de vector de movimiento temporal basada en subunidad de predicción (PU) en la HEVC y diseño de sub-PU en la 3d-hevc - Google Patents

Predicción de vector de movimiento temporal basada en subunidad de predicción (PU) en la HEVC y diseño de sub-PU en la 3d-hevc Download PDF

Info

Publication number
ES2732013T3
ES2732013T3 ES14782054T ES14782054T ES2732013T3 ES 2732013 T3 ES2732013 T3 ES 2732013T3 ES 14782054 T ES14782054 T ES 14782054T ES 14782054 T ES14782054 T ES 14782054T ES 2732013 T3 ES2732013 T3 ES 2732013T3
Authority
ES
Spain
Prior art keywords
sub
current
video
block
pus
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
ES14782054T
Other languages
English (en)
Inventor
Ying Chen
Li Zhang
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Qualcomm Inc filed Critical Qualcomm Inc
Application granted granted Critical
Publication of ES2732013T3 publication Critical patent/ES2732013T3/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/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/53Multi-resolution motion estimation; Hierarchical motion estimation
    • 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/189Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding
    • H04N19/196Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding being specially adapted for the computation of encoding parameters, e.g. by averaging previously computed encoding parameters
    • H04N19/197Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding being specially adapted for the computation of encoding parameters, e.g. by averaging previously computed encoding parameters including determination of the initial value of an encoding parameter
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/513Processing of motion vectors
    • H04N19/517Processing of motion vectors by encoding
    • H04N19/52Processing of motion vectors by encoding by predictive encoding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/56Motion estimation with initialisation of the vector search, e.g. estimating a good candidate to initiate a search
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/597Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding specially adapted for multi-view video sequence encoding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/96Tree coding, e.g. quad-tree coding

Landscapes

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

Abstract

Un procedimiento para procesar datos de vídeo en una modalidad avanzada de predicción de vectores de movimiento temporal (TMVP), comprendiendo el procedimiento de la modalidad de TMVP avanzada: como una primera etapa de la modalidad de TMVP avanzada, determinar un vector de movimiento de primera etapa para una unidad de predicción (PU) actual (173) de una unidad de codificación (CU) de los datos de vídeo, obteniendo el vector de movimiento de primera etapa a partir de bloques adyacentes espaciales y/o bloques vecinos temporales de la PU actual (160), en donde el vector de movimiento de la primera etapa identifica un bloque (174) de una imagen de referencia, en donde el bloque corresponde a la PU actual y tiene el mismo tamaño que la PU actual y en donde una CU puede contener una o más PU; dividir la PU actual en dos o más sub-PU, en donde las sub-PU de la PU actual tienen sub-PU correspondientes en el bloque correspondiente de la imagen de referencia (162), y en donde al menos algunas de las sub-PU del correspondiente bloque tienen, cada una, un conjunto asociado de información de movimiento; como una segunda etapa de la modalidad de TMVP avanzada, extraer la información de movimiento de las sub-PU del bloque de la imagen de referencia y asignar cada conjunto de información de movimiento, como información de movimiento de la segunda etapa, a la correspondiente sub-PU de la PU actual (164), en donde la información de movimiento de la segunda etapa para cada una de las sub-PU incluye al menos un vector de movimiento y un índice de referencia asociado; y realizar la compensación de movimiento para cada una de las sub-PU por separado, basándose en la información de movimiento de la segunda etapa para cada una de las sub-PU (166).

Description

DESCRIPCIÓN
Predicción de vector de movimiento temporal basada en subunidad de predicción (PU) en la HEVC y diseño de sub-PU en la 3d-hevc
[0001] Esta solicitud reivindica el beneficio de la solicitud provisional de la patente estadounidense N.° 61/883.111, presentada el 26 de septiembre de 2013.
CAMPO TÉCNICO
[0002] Esta divulgación se refiere a la codificación de vídeo.
ANTECEDENTES
[0003] Las capacidades de vídeo digital pueden incorporarse a una amplia gama de dispositivos, que incluye televisores digitales, sistemas de radiodifusión digital directa, 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 celulares o de radio por satélite, los denominados «teléfonos inteligentes», dispositivos de videoconferencia, dispositivos de transmisión de vídeo en tiempo real y similares. Los dispositivos de vídeo digital implementan técnicas de compresión de vídeo, tales como las descritas en las normas definidas por MPEG-2, MPEG-4, ITU-T H.263, ITU-T TH.264/MPEG-4, Parte 10, Codificación de Vídeo Avanzada (AVC), la norma de Codificación de Vídeo de Alta Eficacia (HEVC) y las extensiones de tales normas. Los dispositivos de vídeo pueden transmitir, recibir, codificar, decodificar y/o almacenar información de vídeo digital con más eficacia implementando dichas técnicas de compresión de vídeo.
[0004] Las técnicas de compresión de vídeo realizan predicción espacial (intra-imagen) y/o predicción temporal (entre imágenes) 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 (por ejemplo, una trama de vídeo o una parte de una trama de vídeo) puede dividirse en bloques de vídeo, que también pueden denominarse bloques arbolados, 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 la predicción espacial con respecto a muestras de referencia en bloques vecinos en la misma imagen o la predicción temporal con respecto a muestras de referencia en otras imágenes de referencia. Las imágenes pueden denominarse tramas y las imágenes de referencia pueden denominarse tramas de referencia.
[0005] La predicción espacial o temporal da como resultado un bloque predictivo para un bloque a codificar. Los datos residuales representan diferencias de píxeles entre el bloque original a codificar y el bloque predictivo. Un bloque intercodificado se codifica de acuerdo a un vector de movimiento que apunta a un bloque de muestras de referencia que forman el bloque predictivo, y los datos residuales que indican la diferencia entre el bloque codificado y el bloque predictivo. Un bloque intracodificado se codifica de acuerdo a una modalidad de intracodificación y a los datos residuales. Para una mayor compresión, los datos residuales pueden transformarse desde el dominio del píxel a un dominio de transformación, dando como resultado coeficientes de transformación residuales, que a continuación se pueden cuantizar. Los coeficientes de transformación cuantizados, dispuestos inicialmente en una formación bidimensional, pueden explorarse con el fin de generar un vector unidimensional de coeficientes de transformación, y puede aplicarse codificación por entropía para lograr aún más compresión. El documento US 2006/002474 describe un procedimiento para la estimación de movimiento de múltiples bloques. Solo se seleccionan unos pocos tamaños de bloque representativos para la estimación de movimiento cuando ocurren ciertas condiciones favorables.
SUMARIO
[0006] En general, esta divulgación describe técnicas para la predicción de movimiento basada en la subunidad de predicción (PU), para la codificación de vídeo en la norma de codificación de vídeo de alta eficacia (HEVC) y en la extensión tridimensional de la norma HEVC. En un ejemplo, esta divulgación describe técnicas para realizar una modalidad avanzada de predicción de vectores de movimiento temporal (TMVP) para predecir las sub-PU de una PU en la codificación de una sola capa para la cual se puede admitir el refinamiento del vector de movimiento. Convencionalmente, el diseño de sub-PU solo se habilita para la predicción de movimiento entre capas o entre vistas, utilizando una modalidad de interpredicción de fusión que no admite un refinamiento adicional de los vectores de movimiento predichos. La modalidad de TMVP avanzada incluye la determinación de vectores de movimiento para la PU en al menos dos etapas para obtener información de movimiento para la PU que incluye diferentes vectores de movimiento e índices de referencia para cada una de las sub-PU de la PU.
[0007] La extensión de la norma 3D-HEVC presta soporte a la codificación de vídeo de múltiples vistas más el formato de profundidad. En un ejemplo, en una modalidad de predicción de síntesis de retrovisión (BVSP) de sub-PU, la información de movimiento para una PU actual se predice a partir de un vector de movimiento de disparidad y una imagen asociada de referencia entre vistas, y el vector de movimiento de disparidad se refina en función de información de movimiento de sub-PU, asociada a bloques de profundidad de la imagen de referencia entre vistas. En la modalidad BVSP de sub-PU, la compensación de movimiento se realiza para predecir cada una de las sub-PU de la PU en función de la información independiente de movimiento de sub-PU. Convencionalmente, después de realizar la compensación de movimiento para predecir cada una de las sub-PU, solo se almacena el vector de movimiento de disparidad para la PU actual. De acuerdo a las técnicas de esta divulgación, para cada PU predicha utilizando la modalidad BVSP de sub-PU, un dispositivo de codificación de vídeo almacena la información de movimiento independiente, obtenida para cada una de las sub-PU de la PU actual, incluso después de que se realiza la compensación de movimiento. La información de movimiento adicional, almacenada para la PU actual, se puede usar luego para predecir las PU posteriores, para las cuales la PU actual es un bloque vecino.
[0008] Además, esta divulgación describe técnicas para aplicar un filtro de desbloqueo a cada unidad de codificación (CU) de un bloque de vídeo, para filtrar las fronteras de la unidad de transformación (TU) y las fronteras de la PU, incluidos las fronteras de sub-PU dentro de la CU, creando fronteras de PU artificiales o fronteras de TU artificiales en las fronteras de sub-PU.
[0009] En un ejemplo, esta divulgación está dirigida a un procedimiento de procesamiento de datos de vídeo en una modalidad avanzada de predicción de vectores de movimiento temporal (TMVP). El procedimiento de la modalidad de TMVP avanzada comprende, como una primera etapa de la modalidad de TMVP avanzada, determinar un vector de movimiento de primera etapa para una unidad de predicción actual (PU) de una unidad de codificación (CU) de los datos de vídeo, obteniendo el vector de movimiento de la primera etapa a partir de bloques contiguos espaciales y/o bloques contiguos temporales de la PU actual. El vector de movimiento de la primera etapa identifica un bloque de una imagen de referencia, el bloque tiene el mismo tamaño que la PU actual y comprende dos o más sub-PU, al menos algunas de las sub-PU del bloque, cada una con un conjunto asociado de información de movimiento, y una CU puede contener una o más PU correspondientes a la PU. El procedimiento comprende además la partición de la PU actual en dos o más sub-PU, de manera que cada sub-PU de la PU actual tenga una sub-PU correspondiente en el bloque de la imagen de referencia. Como una segunda etapa de la modalidad de TMVP avanzada, el procedimiento comprende extraer la información de movimiento asociada a las sub-PU del bloque de la imagen de referencia, y asignar cada conjunto de información de movimiento, como información de movimiento de la segunda etapa, a las sub-PU correspondientes de la PU actual. La información de movimiento de la segunda etapa para cada una de las sub-PU incluye al menos un vector de movimiento y un índice de referencia asociado. El procedimiento comprende además realizar la compensación de movimiento para cada una de las sub-PU por separado, basándose en la información de movimiento de la segunda etapa para cada una de las sub-PU.
[0010] En otro ejemplo, esta divulgación se dirige a un dispositivo de procesamiento de vídeo para procesar datos de vídeo en una modalidad de predicción de vectores de movimiento temporal (TMVP) avanzada. El dispositivo comprende una memoria configurada para almacenar datos de vídeo y uno o más procesadores en comunicación con la memoria. Los procesadores están configurados, como una primera etapa de la modalidad de TMVP avanzada, para determinar un vector de movimiento de primera etapa para una unidad de predicción (PU) actual de una unidad de codificación (CU) de los datos de vídeo, al obtener el vector de movimiento de primera etapa a partir de bloques vecinos espaciales y/o bloques vecinos temporales de la PU actual. El vector de movimiento de la primera etapa identifica un bloque de una imagen de referencia, el bloque tiene el mismo tamaño que la PU actual y comprende dos o más sub-PU, al menos algunas de las sub-PU del bloque, cada una con un conjunto asociado de información de movimiento, y una CU puede contener una o más PU correspondientes a la PU. Los uno o más procesadores están configurados adicionalmente para dividir la PU actual en dos o más sub-PU, de modo que cada sub-PU de la PU actual tenga una sub-PU correspondiente en el bloque de la imagen de referencia y, como segunda etapa de la modalidad de TMVP avanzada, para extraer la información de movimiento asociada a las sub-PU del bloque de la imagen de referencia y asignar cada conjunto de información de movimiento, como información de movimiento de segunda etapa, a la sub-PU correspondiente de la PU actual. La información de movimiento de la segunda etapa para cada una de las sub-PU incluye al menos un vector de movimiento y un índice de referencia asociado. Los uno o más procesadores están configurados además para realizar la compensación de movimiento para cada una de las sub-PU por separado, en función de la información de movimiento de la segunda etapa para cada una de las sub-PU.
[0011] En otro ejemplo, esta divulgación se orienta a un medio de almacenamiento legible por ordenador que almacena instrucciones para procesar datos de vídeo que, cuando se ejecutan, causan que uno o más procesadores realicen 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, objetos y ventajas resultarán evidentes a partir de la divulgación y de los dibujos, y a partir de las reivindicaciones.
BREVE DESCRIPCIÓN DE LOS DIBUJOS
[0013]
La figura 1 es un diagrama de bloques que ilustra un sistema ejemplar de codificación y decodificación de vídeo que puede utilizar las técnicas de la presente divulgación.
La figura 2 es un diagrama conceptual que ilustra ocho modalidades de partición para definir unidades de predicción (PU) de una unidad de codificación (CU).
La figura 3 es un diagrama conceptual que ilustra una estructura de árbol de transformación dentro de una CU. Las figuras 4A y 4B son diagramas conceptuales que ilustran, respectivamente, candidatos adyacentes espaciales para la modalidad de fusión y la modalidad de predicción de vectores de movimiento (AMVP) avanzada.
La figura 5A es un diagrama conceptual que ilustra los candidatos de predicción de vectores de movimiento temporal (TMVP).
La figura 5B es un diagrama conceptual que ilustra el ajuste a escala del vector de movimiento (MV) para la TMVP. La figura 6 es un diagrama de flujo que ilustra un flujo de procesamiento ejemplar de un proceso de filtro de desbloqueo.
La figura 7 es un diagrama de flujo que ilustra una operación ejemplar de un cálculo de resistencia de frontera (Bs) para un proceso de filtro de desbloqueo.
La figura 8 es un diagrama conceptual que ilustra información reutilizada o referida para un cálculo de Bs en una frontera de unidad de árbol de codificación (CTU) para un proceso de filtro de desbloqueo.
La figura 9 es un diagrama conceptual que ilustra los píxeles implicados en una decisión de filtro de encendido/apagado y una selección de filtro fuerte/débil para un proceso de filtro de desbloqueo.
La figura 10 es un diagrama conceptual que ilustra una estructura de predicción de múltiples vistas para casos de 3 vistas, donde V3 indica la vista base y una imagen en una vista no base (es decir, V1 o V5) puede predecirse a partir de imágenes en la vista base de la misma instancia temporal.
La figura 11 es un diagrama conceptual que ilustra los bloques vecinos espaciales a los que se accede para la obtención del vector de disparidad basado en bloques vecinos (NBDV), donde los bloques vecinos espaciales para la obtención del NBDV son los mismos a los que se accede para la modalidad de fusión y la modalidad de AMVP. La figura 12 es un diagrama conceptual que ilustra una modalidad de predicción de síntesis de retrovisión (BVSP) que asigna diferentes vectores de movimiento para diferentes sub-PU de una PU.
La figura 13 es un diagrama conceptual que ilustra la predicción de movimiento entre vistas al nivel de sub-PU. Las figuras 14A y 14B son diagramas conceptuales que ilustran una modalidad de TMVP avanzada para predecir las sub-PU en una PU en codificación de capa única.
La figura 15 es un diagrama de bloques que ilustra un ejemplo de codificador de vídeo que puede implementar las técnicas de esta divulgación.
La figura 16 es un diagrama de bloques que ilustra un ejemplo de un decodificador de vídeo que puede implementar las técnicas de esta divulgación.
La figura 17 es un diagrama de flujo que ilustra una operación ejemplar de predicción de una PU actual utilizando una modalidad de BVSP de sub-PU, y de almacenamiento de la información de movimiento de sub-PU determinada.
La figura 18 es un diagrama de flujo que ilustra una operación ejemplar de aplicación de un filtro de desbloqueo a cada CU de un bloque de vídeo para filtrar las fronteras de TU y las fronteras de PU, incluidas las fronteras de sub-PU dentro de la CU.
La figura 19 es un diagrama de flujo que ilustra una operación ejemplar de una modalidad de TMVP avanzada para predecir las sub-PU de una PU en codificación de capa única.
DESCRIPCIÓN DETALLADA
[0014] Esta divulgación describe técnicas para la predicción de movimiento a nivel de subunidad de predicción (PU), para la codificación de vídeo usando la extensión tridimensional a la norma de codificación de vídeo de alta eficacia (HEVC). La extensión de la norma 3D-HEVC presta soporte a la codificación de vídeo de múltiples vistas más el formato de profundidad. En la codificación de vídeo de múltiples vistas, una imagen de vídeo actual se puede predecir, tanto con imágenes de referencia temporales en una misma vista, como con imágenes de referencia entre vistas en una vista de referencia.
[0015] En un ejemplo, la predicción de síntesis de vista en la norma 3D-HEVC se puede realizar utilizando una modalidad de predicción de síntesis de retrovisión (BVSP) de sub-PU. En la modalidad de BVSP de sub-PU, la información de movimiento para una PU actual se predice a partir de un vector de movimiento de disparidad y un índice asociado de vista de referencia, que identifica una imagen de referencia entre vistas. En la modalidad de BVSP de sub-PU, la PU actual se divide en dos o más sub-PU, y el vector de movimiento de disparidad se refina en función de la información de movimiento de sub-PU obtenida para cada una de las sub-PU en función de un correspondiente bloque de profundidad de la imagen de referencia entre vistas. La compensación de movimiento se realiza para predecir cada una de las sub-PU de la PU en función de la información de movimiento de sub-PU independiente. Convencionalmente, después de realizar la compensación de movimiento para predecir cada una de las sub-PU, solo se almacena el vector de movimiento de disparidad para la PU actual.
[0016] De acuerdo a las técnicas de esta divulgación, para cada PU predicha utilizando la modalidad BVSP de sub-PU, un dispositivo de codificación de vídeo almacena la información de movimiento independiente, obtenida para cada una de las sub-PU de la PU actual, incluso después de que se realiza la compensación de movimiento. La información de movimiento adicional, almacenada para la PU actual, se puede usar luego para predecir las PU posteriores, para las cuales la PU actual es un bloque vecino.
[0017] Como otro ejemplo, esta divulgación describe técnicas para realizar una modalidad avanzado de predicción de vectores de movimiento temporal (TMVP), para predecir las sub-PU de una PU en la codificación de una sola capa, para la cual se pueda admitir el refinamiento del vector de movimiento. Convencionalmente, el diseño de sub-PU solo se habilita para la predicción de movimiento entre capas o entre vistas, utilizando una modalidad de interpredicción de fusión que no admite un refinamiento adicional de los vectores de movimiento predichos. La modalidad de TMVP avanzada incluye la determinación de vectores de movimiento para la PU en al menos dos etapas para obtener información de movimiento para la PU que incluye diferentes vectores de movimiento e índices de referencia para cada una de las sub-PU de la PU. Una sub-PU dentro de una PU puede ser de tamaño NxN o NxM, en donde N y M pueden ser números enteros cualesquiera. Los tamaños típicos de sub-PU pueden ser 4x4, 8x8, 4x8 u 8x4.
[0018] De acuerdo a las técnicas de esta divulgación, se determina un vector de movimiento de primera etapa para una PU actual a partir de bloques vecinos de la PU, donde el vector de movimiento de primera etapa identifica un bloque de una imagen de referencia correspondiente a la PU actual. De manera similar a la predicción de movimiento de sub-PU en la norma 3D-HEVC, el tamaño del área correspondiente (por ejemplo, el bloque) de la imagen de referencia que incluye las sub-PU más pequeñas es el mismo que el tamaño de la PU actual. De esta manera, las sub-PU de la PU actual tienen las sub-PU correspondientes en el área correspondiente de la imagen de referencia identificada con un vector de movimiento único. El vector de movimiento de la primera etapa puede identificarse basándose en vecinos espaciales y/o temporales. Alternativamente, el vector de movimiento de la primera etapa se puede configurar para que sea constante, por ejemplo, 0 u otro valor predefinido, y se relaciona con el tamaño de la PU actual. En otra alternativa, cada una de las sub-PU de la PU puede identificar su bloque correspondiente de la imagen de referencia con un vector de movimiento diferente.
[0019] Como se ha descrito anteriormente, la PU actual se divide en dos o más sub-PU, y la información de movimiento de la segunda etapa se determina para cada una de las sub-PU desde el área correspondiente, por ejemplo, el bloque, de la imagen de referencia identificada por el vector de movimiento de la primera etapa, donde la información de movimiento de la segunda etapa, para cada una de las sub-PU, incluye al menos un vector de movimiento y un índice de referencia asociado. La compensación de movimiento se realiza para predecir cada una de las sub-PU en función de la información de movimiento de la segunda etapa para cada una de las sub-PU. Este proceso avanzado de TMVP se puede lograr activando un candidato de fusión entre todos los demás candidatos de fusión, lo que significa que se crea un candidato de fusión específico para indicar que dicho proceso debe realizarse para la PU actual. En algunos ejemplos, en lugar de operar únicamente en la modalidad de fusión, se puede determinar una diferencia de vectores de movimiento para refinar el al menos un vector de movimiento de la información de movimiento de la segunda etapa para cada una de las sub-PU.
[0020] Como un ejemplo adicional, esta divulgación describe técnicas relacionadas con los procesos de filtro de desbloqueo, aplicados a unidades de codificación (CU) de un bloque de vídeo que incluyen al menos una PU con múltiples sub-PU. Los filtros de desbloqueo para la norma HEVC no están diseñados para filtrar dentro de una PU, es decir, a lo largo de fronteras de sub-PU entre sub-PU adyacentes de la PU, porque para los bloques de la HEVC se supone que la compensación de movimiento es la misma para toda la PU. Las técnicas de esta divulgación permiten que las fronteras de sub-PU se desbloqueen convirtiendo las sub-PU en una estructura favorecedora del desbloqueo, de modo que los filtros de desbloqueo de la HEVC puedan seguir utilizándose para los bloques de la norma 3D-HEVC. Las técnicas de desbloqueo propuestas pueden ser aplicables a códecs de múltiples capas, incluyendo la 3D-HEVC.
[0021] De acuerdo a las técnicas de esta divulgación, antes de aplicar un filtro de desbloqueo a una CU del bloque de vídeo que incluye la PU con las sub-PU, la CU se convierte para crear fronteras de PU artificiales o fronteras de TU artificiales en las fronteras de sub-PU. En un ejemplo, un árbol de transformación de la CU se convierte para asociar la PU con una jerarquía de árbol de transformación y asociar cada una de las sub-PU a una TU de modo que las fronteras de sub-PU se conviertan en fronteras de TU artificiales. En otro ejemplo, la CU se convierte en un árbol de codificación para asociar la PU con una CU y asociar cada una de las sub-PU a una PU de tal manera que las fronteras de sub-PU se conviertan en fronteras de PU artificiales. El filtro de desbloqueo se puede aplicar luego a las fronteras de PU entre dos PU adyacentes de la CU y/o las fronteras de TU entre dos TU adyacentes de la CU, incluidas las fronteras de PU artificiales y las fronteras de TU artificiales.
[0022] Entre las normas de codificación de vídeo se incluyen ITU-T H.261, MPEG-1 Visual de la ISO/IEC, ITU-T H.262 o MPEG-2 Visual de la ISO/IEC, ITU-T TH.263, MPEG-4 Visual de la ISO/IEC e ITU-T H.264 (también conocida como AVC del MPEG-4 de la ISO/IEC), incluyendo sus ampliaciones de codificación de vídeo ajustable a escala (SVC) y de codificación de vídeo de múltiples vistas (MVC). El más reciente borrador conjunto de la MVC se describe en UIT-TH.264, Serie H: Sistemas audiovisuales y de multimedios, Infraestructura de servicios audiovisuales - Codificación de vídeo en movimiento, Codificación de vídeo avanzada para servicios audiovisuales genéricos, Sector de normalización de las telecomunicaciones de la Unión Internacional de Telecomunicaciones (ITU), marzo de 2010.
[0023] Además, el diseño de una nueva norma de codificación de vídeo, concretamente la Codificación de Vídeo de Alta Eficacia (HEVC), ha sido finalizado 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 la ITU-T y del Grupo de Expertos en Imágenes en Movimiento (MPEG) de la ISO/IEC. Un borrador de la norma HEVC denominado "Borrador de trabajo 10 de la HEVC" o "WD10", descrito en el artículo de Bross et al., "High Efficiency vídeo Coding (HEVC) Text Specification Draft 10 (for FDIS & Last Call)" ["Memoria descriptiva textual de la Codificación de Vídeo de Alta Eficacia (HEVC), Borrador 10 (para FDIS y Última Llamada)"], 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 conferencia: Ginebra, CH, 14 a 23 de enero de 2013, JCTVC-L1003v34, está disponible en http://phenix.int-evry.fr/jct/doc_end_user/documents/12_Geneva/wg11JCTVC-L1003-v34.zip.
[0024] El documento estándar finalizado se publica como ITU-T H.265, Serie H: Sistemas audiovisuales y de multimedios, Infraestructura de servicios audiovisuales - Codificación de vídeo en movimiento, Codificación de vídeo de alta eficacia, Sector de normalización de las telecomunicaciones de la Unión Internacional de Telecomunicaciones (ITU), abril de 2013. Una reciente descripción del codificador de la HEVC, descrita en Il-Koo Kim et al., "Descripción del Codificador del Modelo de Prueba 10 (HM10) de la Codificación de vídeo de alta eficacia (HEVC), Equipo de colaboración conjunta sobre codificación de vídeo (JCT-VC) del UIT-T SG16 WP3 e ISO/IEC JTC1/SC29/w G11, 12a Conferencia: Ginebra, CH, 14 a 23 de enero de 2013, está disponible en: http://phenix.intevry.fr/jct/doc_end_user/documents/12_Geneva/wg11JCTVC-L1002-v3.zip.
[0025] Dos extensiones de la HEVC con soporte de servicios tridimensionales han estado en desarrollo por parte del Equipo Conjunto de Colaboración en Codificación de Vídeo Tridimensional (JCT-3V) del Grupo de Expertos en Codificación de Vídeo (VCEG) del ITU-T y el Grupo de Expertos en Imágenes en Movimiento (MPEG) de la ISO/IEC. Las dos extensiones son la extensión de múltiples vistas para la HEVC (MV-HEVC) y la extensión tridimensional para la HEVC (3D-HEVC).
[0026] La MV-HEVC presta soporte a la codificación de múltiples vistas de textura sin cambiar el diseño a nivel de bloque de la HEVC. Un borrador de memoria descriptiva de la MV-HEVC, denominado Borrador de Trabajo 5 (WD5) de la MV-HEVC y descrito en el artículo de Tech et al., "Texto en borrador 5 de la MV-HEVC", Equipo de colaboración conjunta sobre desarrollo de extensión de codificación de vídeo tridimensional (JCT-3V) del ITU-T SG16 WP3 e ISO/IEC JTC1/SC29/WG11, 5a Conferencia: Viena, AT, 27 de julio a 2 de agosto de 2013, JCT3V-E1004v6, está disponible en http://phenix.it-sudparis.eu/jct2/doc_end_user/documents/5_Vienna/wg11JCT3V-E1004-v6.zip.
[0027] La norma 3D-HEVC presta soporte a la codificación de vídeo de múltiples vistas más el formato de profundidad e incluye nuevas herramientas de codificación integradas además de los módulos de codificación de la HEVC. Las herramientas de codificación recién introducidas son aplicables tanto para la codificación de texturas como para la codificación de profundidad. Un borrador de especificación de la norma 3D-HEVC, denominado Borrador de Trabajo 1 (WD1) de la norma 3D-HEVC y descrito en el artículo de Tech et al., "3D-HEVC Draft Text 1 [Texto en borrador 1 de 3D-HEVC]", Equipo de colaboración conjunta sobre desarrollo de extensión de codificación de vídeo tridimensional (JCT-3V) del ITU-T SG 16 WP 3 e ISO/IEC JTC 1/SC 29/WG 11, 5a Conferencia: Viena, AT, 27 de julio a 2 de agosto de 2013, JCT3V-E1001v3, está disponible en http://phenix.itsudparis.eu/jct2/doc_end_user/documents/5_Vienna/wg11JCT3V-E1001-v3.zip.
[0028] La figura 1 es un diagrama de bloques que ilustra un sistema ejemplar de codificación y decodificación de vídeo 10 que puede utilizar técnicas de esta divulgación. Como se muestra en la figura 1, el sistema 10 incluye un dispositivo de origen 12 que proporciona datos de vídeo codificados, a decodificar más adelante por parte de un dispositivo de destino 14. En particular, el dispositivo de origen 12 proporciona los datos de vídeo al dispositivo de destino 14 mediante un medio legible por ordenador 16. El dispositivo de origen 12 y el dispositivo de destino 14 pueden comprender cualquiera entre una amplia gama de dispositivos, incluidos ordenadores de escritorio, ordenadores plegables (es decir, portátiles), ordenadores de tableta, decodificadores, equipos manuales telefónicos tales como los denominados teléfonos «inteligentes», los denominados paneles «inteligentes», televisores, cámaras, dispositivos de visualización, reproductores de medios digitales, consolas de videojuegos, dispositivos de transmisión de vídeo en tiempo real 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.
[0029] El dispositivo de destino 14 puede recibir los datos de vídeo codificados, a decodificar mediante el medio legible por ordenador 16. El medio legible por ordenador 16 puede comprender cualquier tipo de medio o dispositivo capaz de desplazar los datos de vídeo codificados desde el dispositivo de origen 12 al dispositivo de destino 14. En un ejemplo, el medio legible por ordenador 16 puede comprender un medio de comunicación que habilita el dispositivo de origen 12 para transmitir datos de vídeo codificados directamente al dispositivo de destino 14 en tiempo real. Los datos de vídeo codificados se pueden modular de acuerdo a 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ámbrico o cableado, 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 hasta el dispositivo de destino 14.
[0030] En algunos ejemplos, pueden emitirse datos codificados desde la interfaz de salida 22 hasta un dispositivo de almacenamiento. De forma similar, se puede acceder a los datos codificados desde el dispositivo de almacenamiento mediante una interfaz de entrada. El dispositivo de almacenamiento puede incluir cualquiera entre varios medios de almacenamiento de datos, distribuidos o de acceso local, tales como un disco duro, discos Blu-ray, DVD, CD-ROM, memoria flash, 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 puede corresponder a un servidor de ficheros o a otro dispositivo de almacenamiento intermedio que pueda almacenar el vídeo codificado generado por el dispositivo de origen 12. El dispositivo de destino 14 puede acceder a datos de vídeo almacenados desde el dispositivo de almacenamiento, mediante transmisión continua o descarga. El servidor de archivos puede ser cualquier tipo de servidor capaz de almacenar datos de vídeo codificados y transmitir esos datos de vídeo codificados al dispositivo de destino 14. Los servidores ejemplares de ficheros incluyen un servidor de la Red (por ejemplo, para una sede de la Red), un servidor del 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, incluida una conexión a Internet. Esto puede incluir un canal inalámbrico (por ejemplo, una conexión de Wi-Fi), una conexión cableada (por ejemplo, DSL, módem de cable, etc.) o una combinación de ambos que sea adecuada para acceder a datos de vídeo codificados almacenados en un servidor de ficheros. La transmisión de datos de vídeo codificados desde el dispositivo de almacenamiento puede ser una transmisión continua, una transmisión de descarga o una combinación de ambas.
[0031] Las técnicas de esta 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 como soporte de cualquiera entre varias aplicaciones de multimedios, tales como difusiones de televisión por el aire, transmisiones de televisión por cable, transmisiones de televisión por satélite, transmisiones continuas de vídeo por Internet, tales como la transmisión continua adaptativa dinámica por HTTP (DASH), el vídeo digital que se codifica en un medio de almacenamiento de datos, la decodificación de vídeo digital almacenado en un medio de almacenamiento de datos, u otras aplicaciones. En algunos ejemplos, el sistema 10 puede estar configurado para prestar soporte a una transmisión de vídeo unidireccional o bidireccional, a fin de prestar soporte a aplicaciones tales como la transmisión de vídeo en tiempo real, la reproducción de vídeo, la difusión de vídeo y/o la videotelefonía.
[0032] En el ejemplo de la figura 1, el dispositivo de origen 12 incluye un origen de vídeo 18, una unidad de estimación de profundidad 19, un codificador de vídeo 20 y una interfaz de salida 22. El dispositivo de destino 14 incluye la interfaz de entrada 28, el decodificador de vídeo 30, la unidad de representación basada en la imagen de profundidad (DIBR) 31 y el dispositivo de visualización 32. En otros ejemplos, un dispositivo de origen y un dispositivo de destino pueden incluir otros componentes o disposiciones. Por ejemplo, el dispositivo de origen 12 puede recibir datos de vídeo desde un origen de vídeo externo 18, tal como una cámara externa. Del mismo modo, el dispositivo de destino 14 puede interactuar con un dispositivo de visualización externo, en lugar de incluir un dispositivo de visualización integrado.
[0033] El sistema ilustrado 10 de la figura 1 es simplemente un ejemplo. Las técnicas de esta divulgación pueden realizarse mediante cualquier dispositivo de codificación y/o decodificación de vídeo digital. Aunque, en general, las técnicas de la presente divulgación son llevadas a cabo por un dispositivo de codificación de vídeo, las técnicas también pueden ser llevadas a cabo por un codificador/decodificador de vídeo, denominado habitualmente "CÓDEC". Además, las técnicas de la presente divulgación también pueden ser llevadas a cabo por un preprocesador de vídeo. El dispositivo de origen 12 y el dispositivo de destino 14 son simplemente ejemplos de dichos dispositivos de codificación en los que el dispositivo de origen 12 genera datos de vídeo codificados para su transmisión al dispositivo de destino 14. En algunos ejemplos, los dispositivos 12, 14 pueden funcionar de manera esencialmente simétrica, de modo que cada uno de los dispositivos 12, 14 incluya componentes de codificación y decodificación de vídeo. De ahí que el sistema 10 pueda prestar soporte a la transmisión de vídeo unidireccional o bidireccional entre los dispositivos de vídeo 12, 14, por ejemplo, para la transmisión continua de vídeo, la reproducción de vídeo, la difusión de vídeo o la videotelefonía.
[0034] El origen de vídeo 18 del dispositivo de origen 12 puede incluir un dispositivo de captura de vídeo, tal como una cámara de vídeo, un archivo de vídeo que contiene vídeo capturado previamente y/o una interfaz de alimentación de vídeo para recibir vídeo desde un proveedor de contenidos de vídeo. Como una alternativa adicional, el origen de vídeo 18 puede generar datos basados en gráficos por ordenador como el vídeo de origen, o una combinación de vídeo en directo, vídeo archivado y vídeo generado por ordenador. En algunos casos, si el origen de vídeo 18 es una videocámara, el dispositivo de origen 12 y el dispositivo de destino 14 pueden formar los llamados teléfonos con cámara o videoteléfonos. Sin embargo, como se ha mencionado anteriormente, 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 cableadas. En cada caso, el codificador de vídeo 20 puede codificar el vídeo capturado, precapturado o generado por ordenador. La información de vídeo codificada puede ser emitida, a continuación, por la interfaz de salida 22 hacia un medio legible por ordenador 16.
[0035] El origen de vídeo 18 puede proporcionar múltiples vistas de datos de vídeo al codificador de vídeo 20. Por ejemplo, el origen de vídeo 18 puede corresponder a una formación de cámaras, teniendo cada una una posición horizontal única con respecto a una escena particular que se está filmando. De forma alternativa, el origen de vídeo 18 puede generar datos de vídeo desde perspectivas dispares de cámara horizontal, por ejemplo, usando gráficos por ordenador. La unidad de estimación de profundidad 19 puede configurarse para determinar valores para píxeles de profundidad correspondientes a píxeles en una imagen de textura. Por ejemplo, la unidad de estimación de profundidad 19 puede representar una unidad de Navegación y Medición por Sonido (SONAR), una unidad de Detección y Medición de Luz (LIDAR) u otra unidad capaz de determinar directamente los valores de profundidad de forma esencialmente simultánea a la grabación de datos de vídeo de una escena.
[0036] De forma adicional o alternativa, la unidad de estimación de profundidad 19 puede configurarse para calcular valores de profundidad de manera indirecta mediante la comparación de dos o más imágenes que se capturaron esencialmente al mismo tiempo desde diferentes perspectivas de cámara horizontal. Calculando la disparidad horizontal entre valores de píxeles esencialmente similares en las imágenes, la unidad de estimación de profundidad 19 puede aproximarse a la profundidad de varios objetos en la escena. La unidad de estimación de profundidad 19 puede estar integrada funcionalmente con el origen de vídeo 18, en algunos ejemplos. Por ejemplo, cuando el origen de vídeo 18 genera imágenes de gráficos por ordenador, la unidad de estimación de profundidad 19 puede proporcionar mapas de profundidad reales para objetos gráficos, por ejemplo, usando coordenadas z de píxeles y objetos usados para representar imágenes de textura.
[0037] El medio legible por ordenador 16 puede incluir medios transitorios, tales como una difusión inalámbrica o una transmisión de red cableada, o medios de almacenamiento (es decir, medios de almacenamiento no transitorio), tales como un disco duro, una unidad de memoria flash, un disco compacto, un disco de vídeo digital, un disco Bluray u otros medios legibles por ordenador. En algunos ejemplos, un servidor de red (no mostrado) puede recibir datos de vídeo codificados desde el dispositivo de origen 12 y proporcionar los datos de vídeo codificados al dispositivo de destino 14, por ejemplo, mediante transmisión por red. De forma similar, un dispositivo informático de una utilidad de producción de un medio, tal como una utilidad de grabación de discos, puede recibir datos de vídeo codificados desde el dispositivo de origen 12 y producir un disco que contiene los datos de vídeo codificados. Por lo tanto, se puede entender que el medio legible por ordenador 16 incluye uno o más medios legibles por ordenador de diversas formas, en diversos ejemplos.
[0038] La interfaz de entrada 28 del dispositivo de destino 14 recibe información desde el medio legible por ordenador 16. La información del medio legible por ordenador 16 puede incluir información sintáctica definida por el codificador de vídeo 20, que también usa el decodificador de vídeo 30, que incluye elementos sintácticos que describen características y/o procesamiento de bloques y otras unidades codificadas, por ejemplo, los GOP. El dispositivo de visualización 32 muestra los datos de vídeo decodificados a un usuario, y puede comprender cualquiera entre varios dispositivos de visualización, tales como un tubo de rayos catódicos (CRT), una pantalla de cristal líquido (LCD), una pantalla de plasma, una pantalla de diodos orgánicos emisores de luz (OLED) u otro tipo de dispositivo de visualización. En algunos ejemplos, el dispositivo de visualización 32 puede comprender un dispositivo capaz de mostrar dos o más vistas de forma simultánea o esencialmente simultánea, por ejemplo, para producir un efecto visual tridimensional para un espectador.
[0039] La unidad de DIBR 31 del dispositivo de destino 14 puede representar vistas sintetizadas usando información de textura y profundidad de vistas decodificadas, recibidas desde el decodificador de vídeo 30. Por ejemplo, la unidad de DIBR 31 puede determinar la disparidad horizontal para datos de píxeles de imágenes de textura como una función de los valores de píxeles en mapas de profundidad correspondientes. La unidad de DIBR 31 puede generar entonces una imagen sintetizada mediante el desplazamiento de píxeles en una imagen de textura, a la izquierda o a la derecha, en la disparidad horizontal determinada. De esta manera, el dispositivo de visualización 32 puede mostrar una o más vistas, que pueden corresponder a vistas decodificadas y/o vistas sintetizadas, en cualquier combinación. El decodificador de vídeo 30 puede proporcionar valores de precisión para los rangos de profundidad y parámetros de cámara a la unidad de DIBR 31, que puede usar los rangos de profundidad y los parámetros de la cámara para sintetizar adecuadamente las vistas.
[0040] Aunque no se muestra en la figura 1, en algunos aspectos, tanto el codificador de vídeo 20 como el decodificador de vídeo 30 pueden estar integrados con un codificador y decodificador de audio, y pueden incluir unidades MUX-DEMUX adecuadas, u otro tipo de hardware y software, para ocuparse de la codificación tanto de audio como de vídeo en un flujo de datos común o en flujos de datos separados. Si procede, las unidades MUX-DEMUX se pueden ajustar al protocolo multiplexador H.223 de la ITU o a otros protocolos tales como el protocolo de datagramas de usuario (UDP).
[0041] El codificador de vídeo 20 y el decodificador de vídeo 30 pueden funcionar de acuerdo a 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 la HEVC (HM). De forma alternativa, el codificador de vídeo 20 y el decodificador de vídeo 30 pueden funcionar de acuerdo a otras normas privadas o industriales, tales como la norma ITU-T H.264, alternativamente denominada MPEG-4, Parte 10, codificación de vídeo avanzada (AVC), o ampliaciones de dichas normas, como la ampliación MVC de ITU-T H.264/AVC.
[0042] Tanto el codificador de vídeo 20 como el decodificador de vídeo 30 pueden implementarse como cualquiera entre varios 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), formaciones de compuertas programables in situ (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 esta divulgación. Cada uno entre el codificador de vídeo 20 y el decodificador de vídeo 30 se puede incluir en uno o más codificadores o decodificadores, cualquiera de los cuales se puede integrar como parte de un codificador/decodificador (CÓDEC) combinado en un dispositivo respectivo. Un dispositivo que incluye el codificador de vídeo 20 y/o el decodificador de vídeo 30 puede comprender un circuito integrado, un microprocesador y/o un dispositivo de comunicación inalámbrica, tal como un teléfono celular.
[0043] Inicialmente, se analizarán las técnicas ejemplares de codificación de la HEVC. El WD10 de la HEVC, mencionado anteriormente, supone varias capacidades adicionales de los dispositivos de codificación de vídeo respecto a los dispositivos existentes, de acuerdo, por ejemplo, a la norma ITU-T H.264/AVC. Por ejemplo, mientras que la norma H.264 proporciona nueve modalidades de codificación de intrapredicción, e1HM puede proporcionar hasta treinta y tres modalidades de codificación de intrapredicción angulares, más modalidades DC y planares.
[0044] En el borrador WD10 de la norma HEVC y en otras normas de codificación de vídeo, una secuencia de vídeo incluye típicamente una serie de imágenes. Las imágenes también pueden denominarse "tramas". Una imagen puede incluir tres formaciones de muestras, denotadas Sl, Sob y Sor, Sl es una formación bidimensional (es decir, un bloque) de muestras de luma. SCb es una formación bidimensional de muestras de crominancia Cb. SCr es una formación bidimensional de muestras de crominancia Cr. Las muestras de crominancia también se pueden denominar en el presente documento muestras de "croma". En otros casos, una imagen puede ser monocromática y puede solo incluir una formación de muestras de luma.
[0045] El documento WD10 de la HEVC describe que una trama o imagen de vídeo puede dividirse en una secuencia de unidades arboladas de codificación (CTU) o unidades máximas de codificación (LCU), que incluyen muestras tanto de luma como de croma. Una CTU tiene un fin similar al de un macrobloque de la norma H.264. Un fragmento incluye un cierto número de CTU consecutivas en orden de codificación. Una trama o imagen de vídeo puede dividirse en uno o más fragmentos. Cada CTU puede dividirse en unidades de codificación (CU) de acuerdo a un árbol cuádruple. Por ejemplo, una CTU, como un nodo raíz del árbol cuádruple, puede dividirse en cuatro nodos hijos, y cada nodo hijo puede, a su vez, ser un nodo padre y dividirse en otros cuatro nodos hijos. Un nodo hijo final, no dividido, como un nodo hoja del árbol cuádruple, comprende un nodo de codificación, es decir, un bloque de vídeo codificado. Los datos sintácticos asociados a un flujo de bits codificado pueden definir un número máximo de veces en que puede dividirse una CTU, y también pueden definir un tamaño mínimo de los nodos de codificación.
[0046] Una CU incluye un nodo de codificación y unidades de predicción (PU) y unidades de transformación (TU) asociadas al nodo de codificación. Un tamaño de la CU corresponde a un tamaño del nodo de codificación y debe ser de forma cuadrada. El tamaño de la CU puede variar desde 8x8 píxeles hasta el tamaño del bloque arbolado, con un máximo de 64x64 píxeles o más. Cada CU puede contener una o más PU y una o más TU. Los datos sintácticos asociados a una CU pueden describir, por ejemplo, la división de la CU en una o más PU. Las modalidades de división pueden diferir entre si la CU está codificada en modalidad de salto o directa, codificada en modalidad de intrapredicción o codificada en modalidad de interpredicción. Las PU pueden dividirse para tener forma no cuadrada. Los datos sintácticos asociados a una CU también pueden describir, por ejemplo, la división de la CU en una o más TU de acuerdo con un árbol cuádruple. Una TU puede tener forma cuadrada o no cuadrada.
[0047] El borrador WD10 de la norma HEVC admite transformaciones de acuerdo a las TU, que pueden ser diferentes para diferentes CU. El tamaño de las TU se basa habitualmente en el tamaño de las PU dentro de una CU definida dada para una CTU o LCU dividida, aunque puede que no sea siempre el caso. Las TU son habitualmente del mismo tamaño o de un tamaño más pequeño que las PU. En algunos ejemplos, las muestras residuales correspondientes a una CU pueden subdividirse en unidades más pequeñas utilizando una estructura de árbol cuádruple conocida como «árbol cuádruple residual» (RQT). Los nodos hoja del RQT pueden denominarse TU. Los valores de diferencias de píxeles asociados a las TU pueden transformarse para generar coeficientes de transformación, que pueden cuantizarse.
[0048] En general, una PU incluye datos relacionados con el proceso de predicción. Por ejemplo, cuando la PU se codifica en intramodalidad, la PU puede incluir datos que describen una modalidad de intrapredicción para la PU. En otro ejemplo, cuando la PU se codifica en intermodalidad, la PU puede incluir datos que definen un vector de movimiento para la PU. Los datos que definen el vector de movimiento para una PU pueden describir, por ejemplo, un componente horizontal del vector de movimiento, un componente vertical del vector de movimiento, una resolución para el vector de movimiento (por ejemplo, precisión de un cuarto de píxel o precisión de un octavo de píxel), una imagen de referencia a la que apunta el vector de movimiento y/o una lista de imágenes de referencia (por ejemplo, la Lista 0 o la Lista 1) para el vector de movimiento.
[0049] En general, se usa una TU para los procesos de transformación y cuantización. Una CU dada que tiene una o más PU también puede incluir una o más TU. Tras la predicción, el codificador de vídeo 20 puede calcular valores residuales correspondientes a la PU. Los valores residuales comprenden valores de diferencias de píxeles que pueden ser transformados en coeficientes de transformación, cuantizados y explorados usando las TU, para generar coeficientes de transformación en serie para la codificación por entropía. Esta divulgación usa habitualmente el término «bloque de vídeo» para referirse a un nodo de codificación de una CU. En algunos casos específicos, esta divulgación también puede usar el término «bloque de vídeo» para referirse a una CTU, también mencionada como una LCU, o una CU, que incluye un nodo de codificación y unas PU y TU.
[0050] Una secuencia de vídeo incluye habitualmente 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 una modalidad de codificación para el fragmento respectivo. El codificador de vídeo 20 actúa habitualmente sobre bloques de vídeo dentro de fragmentos de vídeo individuales con el fin de codificar los datos de vídeo. Un bloque de vídeo puede corresponder a un nodo de codificación dentro de una CU. Los bloques de vídeo pueden tener tamaños fijos o variables y pueden diferir en tamaño de acuerdo a una norma de codificación especificada.
[0051] En un ejemplo, el borrador WD10 de la HEVC presta soporte a la predicción en diversos tamaños de PU. Si se supone que el tamaño de una CU particular es 2Nx2N, el borrador WD10 de la norma HEVC presta soporte a la intrapredicción en tamaños de PU de 2Nx2N o NxN, y a la interpredicción en tamaños de PU simétricas de 2Nx2N, 2NxN, Nx2N o NxN. El borrador WD10 de la norma HEVC también presta soporte a 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 en un 25 % y un 75 %. La parte de la CU correspondiente a la división del 25 % está indicada por una «n» seguida por 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.
[0052] En la presente divulgación, «NxN» y «N por N» pueden usarse indistintamente 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.
[0053] Tras la codificación intrapredictiva o interpredictiva usando las PU de una CU, el codificador de vídeo 20 puede calcular datos residuales para las TU de la CU. Las PU pueden comprender datos de píxeles en el dominio espacial (también denominado dominio del píxel) y las TU pueden comprender coeficientes en el dominio de la transformación tras la aplicación de una transformación, por ejemplo, una transformación discreta de coseno (DCT), una transformación de enteros, una transformación de ondículas o una transformación conceptualmente similar a los datos de vídeo residuales. Los datos residuales pueden corresponder a diferencias de píxeles entre píxeles de la imagen no codificada y valores de predicción correspondientes a las PU. El codificador de vídeo 20 puede formar las TU incluyendo los datos residuales para la CU y, a continuación, transformar las TU para generar coeficientes de transformación para la CU.
[0054] Tras cualquier transformación para generar coeficientes de transformación, el codificador de vídeo 20 puede realizar una cuantización de los coeficientes de transformación. La cuantización se refiere, en general, a un proceso en el que los coeficientes de transformación se cuantizan para reducir posiblemente la cantidad de datos usados para representar los coeficientes, proporcionando compresión adicional. El proceso de cuantización puede reducir la profundidad de bits asociada a algunos, o a la totalidad, de los coeficientes. Por ejemplo, un valor de n bits puede redondearse hacia abajo hasta un valor de m bits durante la cuantización, donde n es mayor que m.
[0055] En algunos ejemplos, el codificador de vídeo 20 puede utilizar un orden de exploración predefinido para explorar los coeficientes de transformación cuantizados, para producir un vector en serie que se pueda someter a la codificación por entropía. En otros ejemplos, el codificador de vídeo 20 puede realizar una exploración adaptativa. Después de explorar los coeficientes de transformación cuantizados para formar un vector unidimensional, el codificador de vídeo 20 puede realizar la codificación por entropía del vector unidimensional, por ejemplo, de acuerdo a la codificación de longitud variable adaptativa al contexto (CAVLC), la codificación aritmética binaria adaptativa al contexto (CABAC), la codificación aritmética binaria adaptativa al contexto basada en la sintaxis (SBAC), la codificación por entropía de división de intervalos de probabilidad (PIPE) u otra metodología de codificación por entropía. El codificador de vídeo 20 también puede realizar la codificación por entropía de los elementos sintácticos asociados a los datos de vídeo codificados, para su uso por el decodificador de vídeo 30 en la decodificación de los datos de vídeo.
[0056] Para realizar la codificación CABAC, el codificador de vídeo 20 puede asignar un contexto dentro de un modelo de contexto a un símbolo a transmitir. El contexto puede relacionarse, por ejemplo, con si los valores vecinos del símbolo son distintos de cero o no. Para realizar la CAVLC, el codificador de vídeo 20 puede seleccionar un código de longitud variable para un símbolo 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 a transmitir. La determinación de la probabilidad se puede basar en un contexto asignado al símbolo.
[0057] El codificador de vídeo 20 puede emitir un flujo de bits que incluye una secuencia de bits que forma una representación de imágenes codificadas y datos asociados. El flujo de bits puede comprender una secuencia de unidades de capas de abstracción de red (NAL). Cada una de las unidades de NAL incluye un encabezado de unidad de NAL y encapsula una carga útil de secuencias de octetos sin procesar (RBSP). La cabecera de la unidad de NAL puede incluir un elemento sintáctico que indique un código de tipo de unidad de NAL. El código de tipo de unidad de NAL especificado por la cabecera de unidad de NAL de una unidad de NAL indica el tipo de la unidad de NAL. Una RBSP puede ser una estructura sintáctica que contenga un número entero de octetos que se encapsule dentro de una unidad de NAL. En algunos casos, una RBSP incluye cero bits.
[0058] Diferentes tipos de unidades de NAL pueden encapsular diferentes tipos de RBSP. Por ejemplo, un primer tipo de unidad de NAL puede encapsular una RBSP para un conjunto de parámetros de imagen (PPS), un segundo tipo de unidad de NAL puede encapsular una RBSP para un fragmento codificado, un tercer tipo de unidad de NAL puede encapsular una RBSP para información de mejora suplementaria (SEI), y así sucesivamente. Un PPS es una estructura sintáctica que puede contener elementos sintácticos que se aplican a cero o más imágenes codificadas completas. Las unidades de NAL que encapsulan las RBSP para datos de codificación de vídeo (a diferencia de las RBSP para conjuntos de parámetros y mensajes de SEI) pueden denominarse unidades de NAL de la capa de codificación de vídeo (VCL). Una unidad de NAL que encapsula un fragmento codificado se puede mencionar aquí como una unidad de NAL de fragmento codificado. Una RBSP para un fragmento codificado puede incluir un encabezado de fragmento y datos de fragmento.
[0059] El decodificador de vídeo 30 puede recibir un flujo de bits. Además, el decodificador de vídeo 30 puede analizar sintácticamente el flujo de bits para decodificar elementos sintácticos del flujo de bits. El decodificador de vídeo 30 puede reconstruir las imágenes de los datos de vídeo basándose, al menos en parte, en los elementos sintácticos decodificados a partir del flujo de bits. El proceso para reconstruir los datos de vídeo puede ser, en general, recíproco al proceso realizado por el codificador de vídeo 20. Por ejemplo, el decodificador de vídeo 30 puede usar vectores de movimiento de las PU para determinar bloques predictivos para las PU de una CU actual. El decodificador de vídeo 30 puede usar un vector de movimiento o vectores de movimiento de las PU para generar bloques predictivos para las PU.
[0060] Además, el decodificador de vídeo 30 puede cuantizar inversamente bloques de coeficientes asociados a las Tu de la CU actual. El decodificador de vídeo 30 puede realizar transformaciones inversas en los bloques de coeficientes para reconstruir los bloques de transformación asociados a las TU de la CU actual. El decodificador de vídeo 30 puede reconstruir los bloques de codificación de la CU actual añadiendo las muestras predictivas de los bloques predictivos para las PU de la CU actual a las correspondientes muestras residuales de los bloques de transformación de las TU de la CU actual. Mediante la reconstrucción de los bloques de codificación para cada CU de una imagen, el decodificador de vídeo 30 puede reconstruir la imagen. El decodificador de vídeo 30 puede almacenar imágenes decodificadas en un almacén temporal de imágenes decodificadas, para su salida y/o para su uso en la decodificación de otras imágenes.
[0061] En las normas MV-HEVC y 3D-HEVC, un codificador de vídeo puede generar un flujo de bits de múltiples capas que comprenda una serie de unidades de la capa de abstracción de red (NAL). Diferentes unidades de NAL del flujo de bits pueden estar asociadas a diferentes capas del flujo de bits. Una capa se puede definir como un conjunto de unidades de NAL de capa de codificación de vídeo (VCL) y unidades asociadas de NAL no de VCL que tengan el mismo identificador de capa. Una capa puede ser equivalente a una vista en la codificación de vídeo de múltiples vistas. En la codificación de vídeo de múltiples vistas, una capa puede contener todos los componentes de vista de la misma capa con diferentes instancias temporales. Cada componente de vista puede ser una imagen codificada de la escena de vídeo que pertenece a una vista específica en un instante de tiempo específico. En la norma 3D-HEVC, una capa puede contener todas las imágenes de profundidad codificadas de una vista específica o imágenes de texturas codificadas de una vista específica. De forma similar, en el contexto de la codificación de vídeo ajustable a escala, una capa corresponde habitualmente a imágenes codificadas que tienen características de vídeo diferentes a las de imágenes codificadas en otras capas. Dichas características de vídeo habitualmente incluyen la resolución espacial y el nivel de calidad (razón entre señal y ruido). En la norma HEVC y en sus ampliaciones, la ajustabilidad temporal a escala se puede lograr dentro de una capa definiendo un grupo de imágenes con un nivel temporal particular como una subcapa.
[0062] Para cada capa respectiva del flujo de bits, los datos en una capa inferior pueden decodificarse sin referencia a unos datos en cualquier capa superior. En la codificación de vídeo ajustable a escala, por ejemplo, los datos en una capa base pueden decodificarse sin referencia a datos en una capa de mejora. Las unidades de NAL solo encapsulan datos de una única capa. Una vista puede denominarse "capa base" si el decodificador de vídeo 30 puede decodificar imágenes en la vista sin referencia a datos de cualquier otra capa. La capa base puede ajustarse a la especificación básica de la HEVC. Por tanto, las unidades de NAL que encapsulan datos de la capa restante más alta del flujo de bits pueden eliminarse del flujo de bits sin afectar a la decodificabilidad de los datos en las capas restantes del flujo de bits. En las normas MV-HEVC y 3D-HEVC, las capas superiores pueden incluir componentes de vista adicionales.
[0063] Algunas características generales de la codificación de vídeo serán expuestas a continuación con más detalle. Inicialmente, se expondrá la información de movimiento. Para cada bloque, un conjunto de información de movimiento puede estar disponible. Un conjunto de información de movimiento incluye información de movimiento para las direcciones de predicción hacia adelante y hacia atrás. Aquí, las direcciones de predicción hacia adelante y hacia atrás son dos direcciones de predicción de una modalidad de predicción bidireccional y los términos "hacia adelante" y "hacia atrás" no tienen necesariamente un significado geométrico; en cambio, corresponden a la lista de imágenes de referencia 0 (ListaImgRef0) y a la lista de imágenes de referencia 1 (ListaImgRef1) de una imagen actual. Cuando solo se dispone de una lista de imágenes de referencia para una imagen o fragmento, solo puede estar disponible la ListaImgRef0 y la información de movimiento de cada bloque de un fragmento siempre es hacia delante.
[0064] Para cada dirección de predicción, la información de movimiento incluye un índice de referencia y un vector de movimiento. En algunos casos, por simplicidad, se puede hacer referencia a un vector de movimiento por sí mismo, de manera que se suponga que tiene un índice de referencia asociado. Se utiliza un índice de referencia para identificar una imagen de referencia en la lista actual de imágenes de referencia (ListaImgRef0 o ListaImgRefl). Un vector de movimiento tiene un componente horizontal y otro vertical.
[0065] El recuento de orden de imagen (POC) se usa ampliamente en las normas de codificación de vídeo para identificar el orden de visualización de una imagen. Aunque hay casos en los que dos imágenes dentro de una secuencia de vídeo codificado pueden tener el mismo valor de POC, por lo general no ocurre dentro de una secuencia de vídeo codificado. Cuando están presentes múltiples secuencias de vídeo codificadas en un flujo de bits, las imágenes con un mismo valor de POC pueden estar más cercanas entre sí en términos de orden de decodificación. Los valores de POC de las imágenes se utilizan normalmente para la construcción de la lista de imágenes de referencia, la obtención de un conjunto de imágenes de referencia como en la HEVC y el ajuste a escala del vector de movimiento.
[0066] Algunas técnicas específicas en la norma H.264/AVC serán expuestas a continuación. Inicialmente, se expondrá la estructura de macrobloques en la AVC. En la norma H.264/AVC, cada inter-macrobloque (MB) se puede dividir en cuatro formas diferentes: una partición de MB de tamaño 16x16, dos particiones de MB de tamaño 16x8, dos particiones de MB de tamaño 8x16 o cuatro particiones de MB de tamaño 8x8. Las diferentes particiones de MB en un MB pueden tener diferentes valores del índice de referencia para cada dirección (es decir, ListaImgRef0 o ListaImgRef1). Cuando un MB no está dividido en cuatro particiones de MB de tamaño 8x8, el MB tiene sólo un vector de movimiento para toda la partición de MB en cada dirección. Cuando un MB se divide en cuatro particiones de MB de tamaño 8x8, cada partición de MB de tamaño 8x8 puede dividirse además en subbloques, cada uno de los cuales puede tener un vector de movimiento diferente en cada dirección.
[0067] Existen cuatro formas diferentes de obtener subbloques a partir de una partición de MB de tamaño 8x8: un subbloque de tamaño 8x8, dos subbloques de tamaño 8x4, dos subbloques de tamaño 4x8 o cuatro subbloques de tamaño 4x4. Cada subbloque puede tener un vector de movimiento diferente en cada dirección. Los vectores de movimiento, por lo tanto, están presentes en un nivel igual o superior al nivel de subbloque.
[0068] Se expondrá a continuación la modalidad directa temporal en la AVC. En la AVC, la modalidad directa temporal puede habilitarse en el nivel de MB o bien en el nivel de partición de MB para las modalidades de salto o directa en los fragmentos B. Para cada partición de MB, los vectores de movimiento del bloque cosituados con la partición de MB actual en la ListaImgRef1[0] del bloque actual se utilizan para obtener los vectores de movimiento. Cada vector de movimiento en el bloque cosituado se ajusta a escala en función de las distancias de POC.
[0069] Algunas técnicas específicas en la HEVC se expondrán a continuación. En la HEVC, la unidad de codificación (CU) más grande en un fragmento se denomina bloque arbolado de codificación (CTB). Un CTB incluye un árbol cuádruple, y los nodos del árbol cuádruple son las CU. El tamaño de un CTB puede variar de 16x16 a 64x64 en el perfil principal de la HEVC, aunque, técnicamente, se puede prestar soporte a CTB de tamaños de 8x8. El tamaño de una CU puede variar desde uno tan grande como el mismo tamaño que el CTB hasta uno tan pequeño como 8x8. Cada CU está codificada con una modalidad. Cuando una CU está intercodificada, la CU puede dividirse adicionalmente en dos o cuatro unidades de predicción (PU) o convertirse en una única PU cuando no se aplican particiones adicionales. Cuando la CU está intercodificada, está presente un conjunto de información de movimiento para cada PU de la CU. Además, cada PU de la CU se codifica con una modalidad única de interpredicción para obtener el conjunto asociado de información de movimiento.
[0070] La figura 2 es un diagrama conceptual que ilustra ocho modalidades de partición 33A a 33H ("modalidades de partición 33") para definir las PU de una CU. Una PU es una región en la que se aplica la predicción que se define mediante la partición de la CU. Como se muestra en la figura 2, una PU no se limita a ser de forma cuadrada, para facilitar la partición de la CU para que coincida con las fronteras de los objetos reales en la imagen. Cada CU incluye una, dos o cuatro PU en función de la modalidad de partición. En algunos ejemplos, cuando dos PU están presentes en una CU, las PU pueden ser rectángulos de medio tamaño, como en las modalidades de partición PART_2NxN 33B y PART_Nx2N 33C. En otros ejemplos, cuando dos PU están presentes en una CU, las PU pueden ser dos rectángulos con tamaños de un cuarto o tres cuartos del tamaño de la CU, como en las modalidades de partición PART_2NxnU 33E, PART_2NxnD 33F, PART_nLx2N 33G y PART_nRx2N 33H. Las modalidades de partición PART_2Nx2N 33A y PART_NxN 33D se utilizan para una CU intracodificada. La modalidad de partición PART_NxN 33D solo se permite cuando el tamaño de CU correspondiente es igual al tamaño mínimo de CU.
[0071] La figura 3 es un diagrama conceptual que ilustra una estructura de árbol de transformación 34 dentro de una Cu. Cada CU corresponde a un árbol de transformación, que es un árbol cuádruple, cuya hoja es una unidad de transformación (TU). Cada una de las TU en la estructura del árbol de transformación 34 es una región cuadrada, en la que se aplican los procesos de transformación y cuantización, que está definida por la partición de árbol cuádruple de la CU. Como se muestra en la figura 3, una TU es siempre de forma cuadrada. Un TU puede ser tan grande como de 32x32 muestras, hasta 4x4 muestras. Una profundidad máxima de árbol cuadrático, es decir, hasta cuánto se puede dividir la estructura de árbol de transformación 34 para formar nodos de hoja, es ajustable y se especifica en la sintaxis del encabezado de fragmento. Para una inter-CU, una TU puede ser más grande que una PU, es decir, la TU puede contener fronteras de PU. Sin embargo, para una intra-CU, una TU no puede cruzar las fronteras de PU.
[0072] Un elemento sintáctico rqt_raíz_cbf igual a 1 especifica que una estructura sintáctica árbol_transformación está presente para una CU actual. El elemento sintáctico rqt_raíz_cbf igual a 0 especifica que la estructura sintáctica de árbol de transformación no está presente para la CU actual. Cuando el elemento sintáctico rqt_raíz_cbf no está presente, se deduce que su valor es igual a 1. Cuando el elemento sintáctico rqt_raíz_cbf es igual a 0, el árbol de transformación solo contiene un nodo, lo que significa que no se divide adicionalmente y que un indicador de transformación dividida es igual a 0. Para un nodo dentro del árbol de transformación, si tiene un indicador de transformación dividida igual a 1, se divide adicionalmente en cuatro nodos, y una hoja del árbol de transformación tiene un indicador_transformación_dividida igual a 0.
[0073] Por simplicidad, si una TU o un árbol de transformación corresponde a un bloque que no tiene una transformación, todavía se considera que es una TU o una unidad de transformación porque la jerarquía de la propia transformación todavía existe, incluso aunque la transformación no se aplique. Habitualmente, un bloque salteado de transformación corresponde a una unidad de transformación.
[0074] Un indicador de bloque codificado (cbf) de una TU igual a 1 especifica que la TU contiene uno o más niveles de coeficientes de transformación distintos a cero, es decir, no iguales a 0. Un CBF de una TU igual a 0 especifica que todos los niveles de coeficientes de transformación de la TU son iguales a 0. Se fija un CBF para cada componente de la TU, es decir, se fija un CBF para cada uno de los componentes de luminancia (Y) y crominancia (Cb y Cr).
[0075] En la norma HEVC, hay dos modalidades de interpredicción, denominadas modalidades de fusión y de predicción avanzada de vector de movimiento (AMVP), para predecir el movimiento para una unidad de predicción (PU) actual. Una modalidad de omisión se considera un caso especial de la modalidad de fusión. Tanto en la modalidad de AMVP como en la modalidad de fusión, se mantiene una lista de candidatos de vectores de movimiento (MV) que incluye múltiples predictores de vectores de movimiento. Los vectores de movimiento, así como los índices de referencia asociados en la modalidad de fusión, se generan para la PU actual seleccionando uno de los candidatos de la lista de candidatos de MV.
[0076] En la modalidad de fusión, la lista de candidatos de MV incluye hasta cinco candidatos. Un candidato de fusión puede contener un conjunto de información de movimiento, por ejemplo, vectores de movimiento correspondientes a ambas listas de imágenes de referencia (lista 0 y lista 1) y los índices de referencia asociados. Si se identifica un candidato de fusión mediante un índice de fusión para la PU actual, los vectores de movimiento y las imágenes de referencia asociadas se utilizan para la predicción de la PU actual.
[0077] En la modalidad de AMVP, la lista de candidatos de MV incluye solo dos candidatos. Un candidato a AMVP contiene vectores de movimiento correspondientes a ambas listas de imágenes de referencia (lista 0 y lista 1). Si un candidato de AMVP se identifica con un índice de AMVP para la PU actual, un índice de referencia debe ser señalado explícitamente para cada posible dirección de predicción de la lista 0 o la lista 1, junto con el índice de AMVP, ya que el candidato de AMVP incluye solo un vector de movimiento. En la modalidad de AMVP, los vectores de movimiento predichos se pueden refinar aún más mediante la señalización de una diferencia de vectores de movimiento y realizando un ajuste a escala del vector de movimiento.
[0078] Como se ha descrito anteriormente, un candidato de fusión corresponde a un conjunto completo de información de movimiento, mientras que un candidato de AMVP contiene solo un vector de movimiento para una dirección de predicción específica y un índice de referencia explícitamente señalizado. Los candidatos para ambas modalidades se obtienen de manera similar a partir de los mismos bloques vecinos espaciales y temporales de la PU actual.
[0079] Las figuras 4A y 4B son diagramas conceptuales que ilustran candidatos adyacentes espaciales para la modalidad de fusión y la modalidad de AMVP, respectivamente. Los candidatos de MV espaciales se obtienen de los bloques vecinos que se muestran en las figuras 4A y 4B, para una PU actual (PU0), aunque los procedimientos para generar los candidatos a partir de los bloques difieren para las modalidades de fusión y de AMVP.
[0080] En la modalidad de fusión, se pueden obtener hasta cuatro candidatos de MV espaciales de los bloques vecinos de la PU090 en el orden numerado que se muestra en la figura 4A. En el ejemplo ilustrado de la figura 4A, el orden es el siguiente: bloque izquierdo (0), bloque superior (1), bloque superior derecho (2), bloque inferior izquierdo (3) y bloque superior izquierdo (4).
[0081] En la modalidad de AMVP, se pueden obtener hasta dos candidatos de MV espaciales de los bloques vecinos de la PU092 en el orden numerado que se muestra en la figura 4B. Los bloques vecinos de la PU092 se dividen en dos grupos: un grupo izquierdo que incluye el bloque inferior izquierdo (0) y el bloque izquierdo (1), y un grupo superior que incluye el bloque derecho superior (2), el bloque superior (3) y el bloque izquierdo superior (4), como se muestra en la figura 4B. Para cada grupo, un vector de movimiento para un bloque vecino que se refiere a la misma imagen de referencia que el índice de referencia señalizado explícitamente para la PU0 92 tiene la máxima prioridad para ser elegido para formar un candidato de MV final del grupo. En algunos ejemplos, es posible que ninguno de los bloques vecinos tenga un vector de movimiento que apunte a la imagen de referencia explícitamente señalizada. Si no se puede encontrar un candidato de MV de ese tipo, el primer vector de movimiento disponible se ajustará a escala para formar el candidato de MV final del grupo. En este caso, cualquier diferencia de distancia temporal será compensada.
[0082] La figura 5A es un diagrama conceptual que ilustra los candidatos de predicción de vectores de movimiento temporal (TMVP) para una PU actual (PU0) 94. Un candidato de TMVP, si está habilitado y disponible, se agrega a la lista de candidatos de MV después de los candidatos de MV espacial. El proceso de obtención de vectores de movimiento para un candidato de TMVP es el mismo tanto para la modalidad de fusión como para las modalidades de AMVP. Sin embargo, en la modalidad de fusión, el índice de referencia de destino para el candidato de TMVP siempre se fija en 0.
[0083] La ubicación del bloque primario para la obtención de candidatos de TMVP es el bloque inferior derecho fuera de una PU (PU1) cosituada 96 de la PU0 94, como se muestra en la figura 5A como bloque T 97. El bloque inferior derecho T 97 se selecciona para compensar el sesgo de los bloques superiores e izquierdos utilizados para generar los candidatos espaciales adyacentes. Sin embargo, si el bloque T inferior derecho está ubicado fuera de la LCU 98 actual de la PU0 94 (es decir, en la posición 99) o la información de movimiento para el bloque inferior derecho T 97 no está disponible, el bloque utilizado para la obtención de candidatos de TMVP es sustituido por un bloque central T95 de la PU094.
[0084] La figura 5B es un diagrama conceptual que ilustra el ajuste a escala de los MV para la modalidad de TMVP para una PU actual 100 en la imagen actual 102. Un vector de movimiento para un candidato de TMVP se obtiene de una PU 104 de ubicación conjunta de la imagen 106 de ubicación conjunta, indicado en el nivel de fragmento. De manera similar a la modalidad directa temporal en la norma AVC, descrita anteriormente, se puede generar un vector de movimiento del candidato de TMVP para la PU 100 actual usando el ajuste a escala, que se realiza para compensar las diferencias entre la distancia temporal co-localizada (es decir, la distancia entre la imagen co-localizada 106 y la imagen de referencia co-localizada 107) y la diferencia temporal actual (es decir, entre la imagen actual 102 y la imagen de referencia actual 103), como se muestra en la figura 5B.
[0085] A continuación se expondrán otros aspectos de la predicción de vectores de movimiento en la HEVC. En el ajuste a escala de vectores de movimiento, se supone que el valor de los vectores de movimiento es proporcional a la distancia de las imágenes en el tiempo de presentación. Un vector de movimiento asocia dos imágenes: la imagen de referencia y la imagen que contiene el vector de movimiento (es decir, la imagen contenedora). Cuando se utiliza un vector de movimiento para predecir otro vector de movimiento, la distancia de la imagen contenedora y la imagen de referencia se calcula en función de los valores del recuento de orden de imágenes (POC) de las imágenes. Para que un vector de movimiento sea predicho, tanto su imagen contenedora como la imagen de referencia asociada pueden ser diferentes. En este caso, se calcula una nueva distancia (basada en el POC). El vector de movimiento se ajusta a escala en función de estas dos distancias de POC. Para un candidato vecino espacial, las imágenes contenedoras para los dos vectores de movimiento son las mismas, mientras que las imágenes de referencia son diferentes. En la HEVC, el ajuste a escala del vector de movimiento se aplica tanto a la TMVP como a la AMVP para candidatos vecinos espaciales y temporales.
[0086] En la generación de candidatos de vectores de movimiento artificial, si una lista de candidatos de vectores de movimiento no está completa (es decir, se dispone de menos del número prescrito de candidatos), se puede generar e insertar candidatos de vectores de movimiento artificiales al final de la lista, hasta que la lista incluya el número prescrito de candidatos. En la modalidad de fusión, hay dos tipos de candidatos de VM artificiales: un candidato combinado obtenido solo para fragmentos B y cero candidatos utilizados solo para la AMVP si el primer tipo no proporciona suficientes candidatos artificiales. Para cada par de candidatos que ya están en la lista de candidatos y tienen la información de movimiento necesaria, los candidatos de vectores de movimiento combinados bidireccionales se obtienen basándose en una combinación de un vector de movimiento de un primer candidato que se refiere a una imagen en la lista 0 y un vector de movimiento de un segundo candidato que se refiere a una imagen en la lista 1.
[0087] En el proceso de poda para la inserción de candidatos, puede ocurrir que los candidatos de diferentes bloques sean los mismos, lo que disminuye la eficacia de una lista de candidatos de fusión/AMVP. Se puede aplicar un proceso de poda para abordar este problema. El proceso de poda compara a un candidato con los otros en la lista de candidatos actuales para evitar la inserción de un candidato idéntico en ciertas circunstancias. Para reducir la complejidad, solo se puede aplicar un número limitado de procesos de poda, en lugar de comparar cada candidato potencial con todos los otros candidatos existentes.
[0088] Ahora se describirá un proceso de filtro de desbloqueo en la HEVC. El proceso de filtro de desbloqueo se realiza para cada CU de un bloque de vídeo en el mismo orden que el proceso de decodificación. Primero, se filtran los bordes verticales (es decir, el filtrado horizontal) y luego se filtran los bordes horizontales (es decir, el filtrado vertical). El filtrado de desbloqueo se aplica a las fronteras de bloque dentro de la CU que se determinan para ser filtrados, tanto para componentes de luma como de croma. En algunos ejemplos, las fronteras de bloque de tamaño 8x8 se filtran mientras que las fronteras de bloque de tamaño 4x4 no se procesan, para reducir la complejidad. Dos tipos de fronteras están implicados en el proceso de filtro de desbloqueo: Fronteras de TU y fronteras de PU. Las fronteras de CU también se consideran, ya que las fronteras de CU son necesariamente también fronteras de TU y PU.
[0089] La figura 6 es un diagrama de flujo que ilustra un flujo de procesamiento ejemplar 108 de un proceso de filtro de desbloqueo. Una frontera puede tener tres valores de estado de filtrado: sin filtrado, filtrado débil y filtrado fuerte. Cada decisión de filtrado se basa en la resistencia de frontera, Bs, y en valores de umbral, p y t c.
[0090] La figura 7 es un diagrama de flujo que ilustra una operación ejemplar de un cálculo de resistencia de frontera (Bs) 110 para un proceso de filtro de desbloqueo. La resistencia de frontera (Bs) refleja cuán potente puede necesitar ser un proceso de filtrado para la frontera. Por ejemplo, un valor de Bs de 2 indica un filtrado potente, un valor de Bs de 1 indica un filtrado débil y un valor de Bs de 0 indica que no hay filtrado de desbloqueo.
[0091] Sean P y Q definidos como bloques que están implicados en el filtrado, donde P representa el bloque ubicado a la izquierda (en el caso del borde vertical) o encima (en el caso del borde horizontal) de la frontera a desbloquear, y Q representa el bloque situado a la derecha (en el caso del borde vertical) o encima (en el caso del borde horizontal) de la frontera a desbloquear. La operación ilustrada en la figura 7 indica cómo se calcula el valor de Bs en función de la modalidad de intracodificación, la existencia de coeficientes de transformación distintos a cero, las imágenes de referencia, el número de vectores de movimiento y las diferencias de vectores de movimiento.
[0092] La figura 8 es un diagrama conceptual que ilustra información reutilizada o referida para un cálculo de Bs entre píxeles en una cuadrícula 112 en una frontera de unidad de árbol de codificación (CTU) 113 para un proceso de filtro de desbloqueo. La Bs se calcula sobre una base de bloques de tamaño 4x4, pero se vuelve a correlacionar con una cuadrícula de tamaño 8x8. El máximo de los dos valores de Bs que corresponden a 8 píxeles, que consisten en una línea en la cuadrícula de tamaño 4x4, se selecciona como la Bs para fronteras en la cuadrícula de tamaño 8x8. En el frontera de CTU 113, la información de cada segundo bloque (en una cuadrícula de tamaño 4x4) a la izquierda o encima se reutiliza como se ilustra en la figura 8, con el fin de reducir el requisito de memoria de almacén temporal de líneas.
[0093] Los valores de umbral p' y te' están implicados en la decisión de activación / desactivación del filtro, la selección de filtro potente y débil y el proceso de filtrado débil. Los valores de umbral se obtienen del valor del parámetro de cuantización de luma, Q, como se muestra en la Tabla 1 a continuación.
Tabla 1 - Obtención de variables de umbral a partir de la entrada Q
Figure imgf000016_0002
La variable p se obtiene de p' de la siguiente manera:
p = p' * (1 << (ProfundidadBitsy - 8))
La variable te se obtiene de te' de la siguiente manera:
te = te' * (1 << (ProfundidadBitsy - 8))
[0094] La figura 9 es un diagrama conceptual que ilustra los píxeles en el bloque P 116 y el bloque Q 117 implicados en una decisión de filtro de activación/desactivación y una selección de filtro potente/débil para un proceso de filtro de desbloqueo en la frontera 114. La decisión de activación/desactivación del filtro se realiza utilizando cuatro líneas de píxeles que cruzan la frontera 114, que se agrupan, cada una, como una unidad (que se muestra en la Figura 9 utilizando cuadros trazados en negro) para reducir la complejidad de cálculo. Los seis píxeles incluidos en cada uno de los dos cuadros en un primer conjunto de cuatro líneas 118 se utilizan para determinar si el filtro está activado o desactivado para el primer conjunto de cuatro líneas 118. Los seis píxeles incluidos en cada uno de los dos cuadros en el segundo conjunto de cuatro líneas 119 se utilizan para determinar si el filtro está activado o desactivado para el segundo conjunto de cuatro líneas 119.
[0095] Las siguientes variables se definen para la decisión del filtro de activación / desactivación:
Figure imgf000016_0001
dp3 ^ ; p2.? - 2 *p u po„
dqO = ! q2.o-2*qi.o qo.o j
dq3 = ! -2*q j.3 qo; j
Si dp0 dq0 dp3 dq3 < p, se activa el filtrado para el primer conjunto de cuatro líneas 118, y se aplica el proceso de selección de filtro potente/débil. Si esta condición no se satisface, no se realiza ningún filtrado para el primer conjunto de cuatro líneas 118.
[0096] Además, si se satisface la condición, las variables dE, dEp1 y dEp2 se fijan de la siguiente manera:
dE se fija igual a 1
Si dp0 dp3 < (p (p >> 1)) >> 3, la variable dEpl se fija igual a 1
Si dq0 dq3 < (p (p >> 1)) >> 3, la variable dEq1 se fija igual a 1
Una decisión de activación/desactivación del filtro se toma de una manera similar a la descrita anteriormente para el segundo conjunto de cuatro líneas 119.
[0097] Si el filtrado está activado, se toma una decisión entre el filtrado potente y el débil. Los píxeles implicados son los mismos que los utilizados para la decisión de activación/desactivación del filtro, como se ilustra en la figura 9. Si se cumplen los siguientes dos conjuntos de condiciones, se utiliza un filtro potente para filtrar el primer conjunto de cuatro líneas 118. De lo contrario, se utiliza un filtro débil.
¡.u 2í (dp04dqíi) < f » 2 ), | p3n - püo | | qOo - q3o | < f f> » 3 ) | pOo - qOo ¡ ^ (5* le 1) » 1
(2) 2^(dp3+dq3) < ( p » 2 ), | p3;¡ - píU ! j q(h - q3j ¡ < ( p » 3 } y | p(h - qO¿ | < ( 5 * fe 1 ) » 1 La decisión de seleccionar un filtrado potente o débil para el segundo conjunto de cuatro líneas 119 se toma de manera similar.
[0098] Para un filtrado potente, los valores de píxeles filtrados se obtienen mediante las siguientes ecuaciones. Téngase en cuenta que tres píxeles se modifican utilizando cuatro píxeles como entrada para cada uno entre el bloque P 116 y bloque Q 117.
po' :::: í p2 2*pj 2*p0 2*qo qi 4 ) » 3
qo’ ^(.pi 2í;pc 2*qo 2*q¡ i- cp 4 ) » 3
pi’ = íp 2 + pi+po qo 2 } » 2
qi’ = ( po qo qi q?+ 2 ) » 2
Figure imgf000017_0001
3
[0099] Para un filtrado débil, los valores de los píxeles filtrados se obtienen mediante las siguientes ecuaciones. Téngase en cuenta que dos píxeles se modifican utilizando tres píxeles como entrada para cada uno entre el bloque P 116 y bloque Q 117.
[0100] Delta (A) se define de la siguiente manera.
A = (9 * ( qo - po ) - 3 * ( q¡ - p ;) 8 ) » 4
[0101] Cuando abs (A) es menor que tC *10,
A = Clip3 (-tC, tC, A)
p0' = Clip1 Y(p0 A)
q0' = Clip1 Y(q0 - A)
[0102] Si dEp1 es igual a 1,
í
Ap = Clip3V( - í <C •> 1), tr » I , ( ( ( p2 4‘ pO 1 ) » 1 ) - pj 4- A ) » t )
p1 = Clip1Y(p1 Ap)
[0103] Si dEq1 es igual a 1,
Figure imgf000017_0002
q1' = Clip1Y(q1 Aq)
[0104] Las decisiones de desbloqueo descritas anteriormente son para filtrar componentes de luma. La resistencia de frontera Bs para el filtrado de croma se hereda de luma. Si Bs > 1, se realiza el filtrado de croma. No se realiza ningún proceso de selección de filtro para el croma, ya que solo se puede aplicar un filtro. Los valores de muestra filtrados p0' y q0' se obtienen de la siguiente manera.
Figure imgf000017_0003
p0' = Clip1C(p0 A)
q0' = Clip1c(q0 - A)
[0105] Algunas técnicas específicas en la norma 3D-HEVC serán expuestas a continuación. La extensión de vídeo tridimensional de la norma HEVC (3D-HEVC) está siendo desarrollada por JCT-3V. La extensión de la norma 3D-HEVC presta soporte a la codificación de vídeo de múltiples vistas más el formato de profundidad.
[0106] La figura 10 es un diagrama conceptual que ilustra una estructura de predicción de múltiples vistas 120 para casos de 3 vistas, donde V3 indica la vista base y una imagen en una vista no base (es decir, V1 o V5) puede predecirse a partir de imágenes en la vista base de la misma instancia temporal. La predicción de muestras entre vistas, que utiliza la estructura de predicción de múltiples vistas 120, ilustrada en la figura 10, tiene soporte de la extensión de múltiples vistas de la HeVC (MV-HEVC). Tanto la MV-HEVC como la 3D-HEVC son compatibles con la HEVC de manera que la vista de base o de textura (es decir, V3) se pueda decodificar mediante un decodificador de la HEVC.
[0107] En la MV-HEVC, una imagen actual en una vista no base (es decir, V1 o V5) puede ser predicha, tanto por imágenes en la misma vista como por imágenes en una vista de referencia de la misma instancia temporal, incluyendo todas estas imágenes en listas de imágenes de referencia para la imagen actual. Una lista de imágenes de referencia de la imagen actual, por lo tanto, contiene tanto imágenes de referencia temporal como imágenes de referencia entre vistas. Un vector de movimiento asociado a un índice de referencia correspondiente a una imagen de referencia temporal se indica como un vector de movimiento temporal. Un vector de movimiento asociado a un índice de referencia correspondiente a una imagen de referencia entre vistas se indica como un vector de movimiento de disparidad.
[0108] La extensión 3D-HEVC presta soporte a todas las características de la norma MV-HEVC, por lo que la 3D-HEVC también presta soporte a la predicción de muestras entre vistas. Además, la extensión 3D-HEVC presta soporte a herramientas más avanzadas de codificación de solo textura y a herramientas de codificación relacionadas con, o dependientes de, la profundidad, que no tienen soporte por parte de la extensión MV-HEVC. Las herramientas de codificación de solo textura pueden requerir la identificación de los bloques correspondientes entre vistas que pertenecen al mismo objeto. La obtención de vectores de disparidad, por lo tanto, es una tecnología básica en la 3d -HEVC.
[0109] Un aspecto clave de la tecnología de codificación de múltiples vistas es identificar los bloques correspondientes de diferentes vistas mediante una obtención precisa y eficaz de los vectores de disparidad. En la norma 3D-HEVC, la obtención del vector de disparidad basado en bloques vecinos (NBDV) está diseñada de manera similar a las modalidades de AMVP y de fusión en la HEVC. Los vectores de disparidad, sin embargo, se obtienen estrictamente de bloques vecinos, por lo que no se necesitan bits adicionales para un mayor refinamiento o ajuste a escala de los vectores de disparidad. Cuando se habilita la predicción de muestras entre vistas, los vectores de movimiento correspondientes a las imágenes de referencia entre vistas, a saber, los vectores de movimiento de disparidad, ya están presentes junto con los vectores de movimiento normales, a saber, los vectores de movimiento temporales, en el campo de movimiento para un bloque actual. La idea básica de la obtención de los NBDV es hacer uso de los vectores de movimiento de disparidad en el campo de movimiento, verificando solo los bloques vecinos espaciales y temporales.
[0110] La figura 11 es un diagrama conceptual que ilustra los bloques vecinos espaciales a los que se accede para la obtención de los NBDV para un bloque actual 122, donde los bloques vecinos espaciales para la obtención de los NBDV son los mismos a los que se accede para la modalidad de fusión y la modalidad de AMVP. Los bloques adyacentes espaciales, A0, A1, B0, B1 y B2, a los que se accede para los NBDV, son los mismos a los que se accede para las modalidades de AMVP y de fusión, como se muestra en las figuras 4A y 4B y la figura 11.
[0111] Sin embargo, es sumamente posible que no haya ningún bloque espacial adyacente al bloque actual 122 que tenga algunos vectores de movimiento de disparidad asociados. En este caso, también se verifican los bloques vecinos temporales. Los bloques vecinos temporales del bloque actual 122 son los bloques en la imagen de ubicación conjunta, como se usa en la modalidad de TMVP y, además, otra imagen que pueda tener una mejor oportunidad de usar la compensación de movimiento de disparidad, por ejemplo, una imagen de acceso aleatorio o una imagen que tenga un Identificador temporal mínimo. Para cada imagen temporal, de manera similar a la modalidad de TMVP ilustrada en la figura 5A, se comprueban los bloques centrales y los de abajo a la derecha. Todos los bloques vecinos espaciales y temporales del bloque actual 122 se verifican en orden. Una vez que se identifica un vector de movimiento de disparidad, se obtiene el vector de disparidad del bloque actual 122 para que sea el mismo que el vector de movimiento de disparidad identificado, y el proceso de obtención de los NBDV termina. El vector de disparidad del bloque actual 122 se usa para identificar el bloque de referencia entre vistas en la imagen de la vista de referencia, por ejemplo, como en la predicción de movimiento entre vistas y la predicción residual entre vistas.
[0112] En la norma 3D-HEVC, puede ser posible almacenar algunos vectores de disparidad obtenidos como resultados de la obtención de los NBDV, para su uso posterior por los bloques vecinos. Tales vectores de disparidad obtenidos se denominan vectores de disparidad implícita (IDV). Por ejemplo, si la obtención de los NBDV no identifica ningún vector de movimiento de disparidad de los bloques vecinos, los bloques vecinos espaciales se pueden verificar nuevamente para identificar IDV disponibles cualesquiera, de los bloques vecinos espaciales que se usarán para obtener el vector de disparidad final para el bloque actual 122. Recientemente, la 3D-HEVC también incluyó simplificaciones de los procedimientos de NBDV, verificando menos bloques vecinos espaciales y temporales.
[0113] La predicción de síntesis de vistas (VSP) en la 3D-HEVC se realiza mediante dos módulos técnicos principales: NBDV orientado en profundidad (Do-NBDV) y Predicción de síntesis de retrovisión (BVSP).
[0114] En la obtención de Do-NBDV, el vector de disparidad, generado a partir del esquema de los NBDV, podría refinarse aún más usando la información en el mapa de profundidad codificado. De esta manera, la precisión del vector de disparidad puede mejorarse aprovechando la información codificada en el mapa de profundidad de la vista base. Las etapas de refinamiento se describen de la siguiente manera.
1. Localizar un bloque de profundidad correspondiente basándose en el vector de disparidad obtenido por el esquema de NBDV para una PU actual en una imagen de vista de profundidad de referencia, previamente codificada (tal como en la vista base) de la misma unidad de acceso; el tamaño del bloque de profundidad correspondiente es el mismo que el de la PU actual.
2. Calcular un vector de disparidad para la PU actual a partir del bloque de profundidad correspondiente en función del valor máximo de los cuatro valores de profundidad de píxeles de esquina. El valor máximo se fija igual al componente horizontal del vector de disparidad calculado, mientras que el componente vertical del vector de disparidad se fija en 0.
[0115] El vector de disparidad procedente del esquema de NBDV luego es reemplazado por este vector de disparidad recién obtenido a partir del esquema de Do-NBDV, y el vector de disparidad refinado (de Do-NBDV) se usa para la predicción de movimiento entre vistas para la PU actual. Sin embargo, el vector de disparidad no refinado (a partir de los NBDV) se puede usar para la predicción residual entre vistas para la PU actual. Además, el vector de disparidad refinado puede almacenarse como el vector de movimiento de la PU actual si se codifica en la modalidad de BVSP.
[0116] La modalidad de BVSP se realiza como un candidato de modalidad de fusión especial que tiene su vector de movimiento de inicio configurado para ser un vector de movimiento de disparidad. Dicho candidato se llama un candidato de BVSP. Cuando un bloque vecino espacial de una PU actual se codifica en una modalidad de BVSP, el vector de disparidad asociado y el índice de vista de referencia del bloque vecino se utilizan para definir un candidato de BVSP adicional para la PU actual. El candidato de modalidad de fusión espacial obtenido de un bloque vecino espacial de este tipo se etiqueta con un indicador de BVSP igual a 1.
[0117] La figura 12 es un diagrama conceptual que ilustra una modalidad de BVSP 124 que asigna diferentes vectores de movimiento para diferentes sub-PU de una PU actual 126 en una imagen actual 125. En esta divulgación, la modalidad de BVSP actual en la norma 3D-HEVC puede denominarse modalidad de BVSP de sub-PU. En la modalidad de BVSP, la primera información de movimiento se determina para la PU actual 126 a partir de los bloques vecinos espaciales o temporales de la PU actual 126. Como se ha descrito anteriormente, la primera información de movimiento se puede seleccionar como un candidato de BVSP en una lista de candidatos en modalidad de fusión. La primera información de movimiento incluye un vector de movimiento de disparidad y un índice de vista de referencia asociado que identifica una imagen de referencia entre vistas 128. Esta primera etapa de la modalidad de BVSP puede ser esencialmente similar a la obtención de los NBDV descrita anteriormente.
[0118] La PU actual 126 se divide luego adicionalmente en subregiones o sub-PU. Por ejemplo, una PU con su tamaño indicado por NxM se puede dividir adicionalmente en varias subregiones o sub-PU con tamaños iguales a KxL (donde K y L pueden ser 8 o 4, pero no ambos 4). Para cada subregión o sub-PU, se determina la segunda información de movimiento, que incluye un vector distinto de movimiento de disparidad, obtenido accediendo a un bloque correspondiente entre los bloques de profundidad 130 en una imagen de vista de profundidad de referencia 129, asociada a la imagen de referencia entre vistas 128, identificada por el Índice de vista de referencia asociado al primer vector de disparidad. Más específicamente, para cada sub-PU de la PU actual 126, se selecciona un valor máximo de los cuatro píxeles de esquina del correspondiente bloque entre los bloques de profundidad 130 y se convierte en un componente horizontal del vector de movimiento de disparidad para la sub-PU; el vector de movimiento de disparidad tiene un componente vertical igual a cero. Esta segunda etapa de la modalidad de BVSP puede ser esencialmente similar a la obtención de Do-NBDV, descrita anteriormente.
[0119] Después de que cada subregión o sub-PU de la PU actual 126 tenga predicha su información de movimiento, el motor de compensación de movimiento de la HEVC se puede usar para predecir cada subregión o sub-PU de la PU actual 126 a partir de la imagen de referencia entre vistas 128, basándose en la segunda información de movimiento para cada sub-PU. En la modalidad de BVSP, después de realizar la compensación de movimiento para predecir cada sub-PU de la PU actual 126, solo el primer vector de movimiento de disparidad incluido en la primera información de movimiento, seleccionada para la PU actual 126, se almacena para la PU actual 126, y los distintos vectores de disparidad incluidos en la segunda información de movimiento para las sub-PU se descartan.
[0120] Con la modalidad de BVSP, cada PU puede tener más de un conjunto de información de movimiento, lo que significa que las sub-PU dentro de una PU pueden tener diferentes vectores de movimiento. Esto es diferente de la HEVC, donde cada PU solo tiene un conjunto de información de movimiento. Habitualmente, en la modalidad de BVSP, aunque las sub-PU dentro de una Pu pueden tener diferentes vectores de movimiento, los valores de índices de referencia para las sub-PU son los mismos. El aumento de la complejidad de la modalidad de BVSP se basa principalmente en un acrecentado consumo de energía, y la complejidad del caso más desfavorable es similar a la compensación de movimiento de la HEVC, siempre que el tamaño, así como el estado de predicción doble, de las sub-PU nunca sea menor que el tamaño del bloque de compensación de movimiento habilitado en la HEVC.
[0121] En la norma 3D-HEVC, una vista de profundidad se codifica después de la vista de textura asociada. Cuando se codifica una PU en la vista de profundidad, la información de movimiento de la vista de textura dentro de la región cosituada de la PU puede crear un candidato de fusión para la PU actual. En este caso, se puede hacer referencia al candidato de fusión como el candidato de herencia de parámetros de movimiento (MPI), que contiene un conjunto completo de información de movimiento.
[0122] En el documento JCT3V-E0184, Jicheng An et al., relacionado con la norma 3D-CE3.h: Sub-PU level inter­ view motion prediction [Predicción de movimiento entre vistas en el nivel de sub-PU], Equipo de Colaboración Conjunta sobre extensiones de codificación de vídeo tridimensional de la ITU-T SG 16 WP 3 e iSo /IEC JTC 1/SC 29/WG 11, 5a Conferencia: Viena, AT, 27 de julio a 2 de agosto de 2013, se describe el uso de un procedimiento de predicción de movimiento entre vistas en el nivel de sub-PU para el candidato de fusión entre vistas, es decir, el candidato obtenido a partir de un bloque de referencia en una imagen de referencia entre vistas.
[0123] La figura 13 es un diagrama conceptual que ilustra la predicción de movimiento 131 entre vistas en el nivel de sub-PU para una PU actual 134 en una vista actual (V1) 132. Cuando se habilita la modalidad de predicción de movimiento entre vistas, una PU actual 134 puede corresponder a un área de referencia con el mismo tamaño que la PU actual identificada por el vector de disparidad en una vista de referencia (V0) 136. En algunos casos, el área de referencia puede tener información de movimiento más rica que la necesaria para la generación de solo un conjunto de información de movimiento para la PU actual 134. Por lo tanto, se propone un procedimiento de predicción de movimiento entre vistas en el nivel de sub-PU (SPIVMP) en el que la actual PU 134 se divide en múltiples sub-PU, y el vector de disparidad (DV) se usa para identificar los bloques de referencia 138 en la vista de referencia (V0) 136 para cada una de las sub-PU de la PU actual 134. En la modalidad de SPIVMP, cada una de las sub-PU de la PU actual 134 tiene un conjunto completo de información de movimiento copiada de los bloques de referencia 138, de modo que la PU actual 134 pueda contener múltiples conjuntos de información de movimiento. La modalidad de SPIVMP también puede ser señalizada como una candidata especial de modalidad de fusión, de manera similar a la modalidad de BVSp de sub-PU descrita anteriormente.
[0124] En la solicitud provisional estadounidense N.° 61/858.089, presentada el 24 de julio de 2013, titulada "PREDICCIÓN DE MOVIMIENTO AVANZADA PARA LA CODIFICACIÓN DE VÍDEO TRIDIMENSIONAL", para Ying Chen y Li Zhang, se propone que el candidato a la MPI también se pueda extender de una manera similar a la predicción de movimiento entre vistas en el nivel de sub-PU. Por ejemplo, si la PU de profundidad actual tiene una región cosituada que contiene múltiples PU, la PU de profundidad actual se puede separar en sub-PU, cada una de las cuales puede tener un conjunto diferente de información de movimiento. Este procedimiento puede denominarse MPI de sub-PU.
[0125] Los diseños de sub-PU en la norma 3D-HEVC, incluyendo la BVSP de sub-PU, la predicción de movimiento entre vistas de sub-PU y la MPI de sub-PU, descritas anteriormente, pueden experimentar algunos problemas.
[0126] Primero, como se ha descrito anteriormente, en la modalidad de BVSP de sub-PU, la compensación de movimiento se realiza para predecir cada una de las sub-PU de una PU actual basándose en información independiente de movimiento de sub-PU obtenida, basándose en los correspondientes bloques de profundidad de una imagen de referencia entre vistas, identificada por un vector de movimiento de disparidad seleccionado para la PU actual. Sin embargo, después de realizar la compensación de movimiento para predecir cada una de las sub-PU, solo se almacena el vector de disparidad de movimiento correspondiente a cada lista de imágenes de referencia, para la PU actual. En este caso, cuando se usa la PU actual para predecir una PU posterior, se considera que las sub-PU de la PU actual tienen los mismos vectores de movimiento, de modo que la modalidad de BVSP de sub-PU tenga poco impacto en la mejora de la precisión de la predicción del vector de movimiento.
[0127] Segundo, el diseño actual de sub-PU solo se habilita cuando la predicción entre capas está habilitada. Sin embargo, el diseño de sub-PU puede ser aplicable para mejorar la precisión del uso de la compensación de movimiento en la predicción de capa única. Además, el diseño actual de sub-PU solo es aplicable a la modalidad de interpredicción de fusión, en el que no se permite ningún refinamiento adicional de los vectores de movimiento candidatos. El diseño actual de sub-PU, por lo tanto, no se puede habilitar para las modalidades de predicción de movimiento donde se permite el refinamiento de movimiento, por ejemplo, la modalidad de AMVP para códecs basados en la HEVC.
[0128] En tercer lugar, los filtros de desbloqueo utilizados en la HEVC habitualmente se mantienen sin cambios en las extensiones de la HEVC, incluyendo la 3D-HEVC. Sin embargo, es posible que el diseño actual del filtro de desbloqueo en la HEVC no filtre las fronteras de las sub-PU, ya que se supone en la HEVC que los bloques en la misma TU dentro de una PU se compensan en movimiento, como un bloque completo de una sola imagen. En este caso, no se espera que haya distorsiones de pixelado presentes o eliminadas desde dentro de una PU. Para desbloquear las fronteras de sub-PU sin cambiar el diseño del filtro de desbloqueo en la extensión 3D-HEVC, esta divulgación describe la conversión de una sub-PU en una estructura favorecedora del desbloqueo antes de que se aplique un proceso de filtro de desbloqueo. Por ejemplo, antes del proceso de filtrado de desbloqueo, cada PU que utiliza el diseño de sub-PU puede convertirse en uno o más árboles de codificación, donde cada sub-PU puede convertirse en una PU en una CU que es un nodo del respectivo árbol de codificación. En este ejemplo, la estructura del árbol de codificación es compatible con el diseño sintáctico de la HEVC.
[0129] Sin embargo, algunos problemas adicionales pueden ocurrir con la solución anterior. Como primer ejemplo, si una unidad de predicción A (PU A) se ha codificado con interpredicción normal, y otra unidad de predicción (PU B) dentro de la misma CU que la PU A se codifica con sub-PU, será necesario que las PU se conviertan en dos CU y el filtrado puede ocurrir dentro de la PU A, que no está subdividida. Como segundo ejemplo, cuando una TU vale para una CU completa, que incluye al menos una PU con sub-PU, la CU puede convertirse en múltiples CU, la HEVC no da soporte a múltiples CU con la misma TU.
[0130] Esta divulgación describe varias técnicas para abordar los problemas descritos anteriormente.
[0131] Con respecto al primer problema descrito anteriormente, en la modalidad de BVSP de sub-PU en la norma 3D-HEVC, después de realizar la compensación de movimiento para predecir cada una de las sub-PU de la PU actual en función de información distinta de movimiento de sub-PU, obtenida basándose en correspondiente bloques de profundidad de una imagen de referencia entre vistas, identificada por un vector de movimiento de disparidad seleccionado para la PU actual, solo el vector de movimiento de disparidad correspondiente a cada lista de imágenes de referencia se almacena para la PU actual. El único vector de movimiento de disparidad se almacena para cada lista de imágenes de referencia, incluso aunque la compensación de movimiento de la PU se basa en múltiples vectores de movimiento incluidos en la información de movimiento distinta, obtenida para las múltiples sub-PU de la PU actual.
[0132] Según las técnicas de esta divulgación, para cada PU predicha utilizando la modalidad de BVSP de sub-PU, un dispositivo de codificación de vídeo, es decir, el codificador de vídeo 20 y/o el decodificador de vídeo 30, preserva, por ejemplo, almacena o mantiene, la información de movimiento distinta obtenida para cada una de las sub-PU de la PU actual incluso después de que se realiza la compensación de movimiento. Como ejemplo, el codificador de vídeo 20 y/o el decodificador de vídeo 30 pueden almacenar el vector de movimiento de disparidad obtenido para cada una de las sub-PU en una memoria, tal como un almacén temporal de imágenes decodificadas, con una lista de imágenes de referencia que incluye la imagen de referencia entre vistas, identificada por un índice de vista de referencia asociado al vector de movimiento de disparidad para la PU actual.
[0133] La información de movimiento adicional, más rica, almacenada para la PU actual se puede usar entonces para predecir las PU posteriores para las cuales la PU actual es un bloque vecino. Por ejemplo, el codificador de vídeo 20 y/o el decodificador de vídeo 30 pueden generar una lista de candidatas, en modalidad de fusión, de información de movimiento, para predecir una PU posterior que incluye la información de movimiento almacenada para al menos una de las sub-PU de la PU actual, como una candidata de BVSP de sub-PU en la lista de candidatas en modalidad de fusión. En un ejemplo, si la PU posterior se codifica en la modalidad de BVSP de sub-PU, el codificador de vídeo 20 y/o el decodificador de vídeo 30 pueden no necesitar obtener la información de movimiento distinta para cada una de las sub-PU de la PU posterior. En cambio, el codificador de vídeo 20 y/o el decodificador de vídeo 30 pueden, en cambio, seleccionar la información de movimiento distinta como la candidata de BVSP de sub-PU de la lista de candidatas, en modalidad de fusión, de información de movimiento para predecir las sub-PU de la PU posterior. La operación de predecir una PU en la modalidad de BVSP de sub-PU y almacenar la información de movimiento obtenida para cada una de las sub-PU de la PU se describe con más detalle a continuación con respecto a la figura 17.
[0134] Con respecto al segundo problema descrito anteriormente, esta divulgación describe técnicas para realizar una modalidad de TMVP avanzada para predecir las sub-PU de una PU en la codificación de una sola capa para la cual se puede permitir el refinamiento del vector de movimiento. El codificador de vídeo 20 y/o el decodificador de vídeo 30 pueden configurarse para realizar la modalidad de TMVP avanzada, que incluye la determinación de vectores de movimiento para la PU en al menos dos etapas, para obtener información de movimiento para la PU que incluye diferentes vectores de movimiento e índices de referencia para cada una de las sub-PU de la PU.
[0135] Las figuras 14A y 14B son diagramas conceptuales que ilustran la modalidad de TMVP avanzada para predecir las sub-PU en una PU en codificación de capa única. Como se ilustra en la figura 14A, la primera etapa 170 de la modalidad de TMVP avanzada determina un vector de movimiento que identifica un correspondiente bloque 174 en una imagen de referencia para la PU actual 173 en la imagen actual, y la segunda etapa 172 de la modalidad de TMVP avanzada extrae múltiples conjuntos de información de movimiento desde las sub-PU del correspondiente bloque 174 en la imagen de referencia y asigna cada uno de los conjuntos de información de movimiento a una de las sub-PU de la PU actual 173 en la imagen actual. Cada sub-PU de la PU actual 173, por lo tanto, se compensa en movimiento por separado. El vector de movimiento en la primera etapa 170 puede obtenerse de bloques vecinos espaciales y temporales de la PU actual 173. En un ejemplo, el vector de movimiento de la primera etapa puede seleccionarse como candidato de modalidad de fusión entre todos los demás candidatos de modalidad de fusión, que puede incluir o no un candidato similar al candidato de TMVP en la HEVC. En otro ejemplo, el vector de movimiento de la primera etapa se puede seleccionar como candidato de la modalidad de AMVP entre todos los demás candidatos de la modalidad de AMVP y se puede refinar. En este ejemplo, cuando una sub-PU encuentra un vector de movimiento no disponible para cada dirección de predicción, se puede usar un vector de movimiento representativo.
[0136] Aplicable a la codificación de una sola capa y a la TMVP de sub-PU, el codificador de vídeo 20 o el decodificador de vídeo 30 pueden determinar datos de refinamiento de movimiento, por ejemplo, una diferencia de vectores de movimiento, para una PU o CU que se señaliza con los índices de predictor de movimiento para las listas de candidatos de MV. En un ejemplo, para cada dirección de predicción, se puede determinar una única diferencia de vectores de movimiento, y es aplicable a todos los vectores de movimiento de las sub-PU o PU. En otro ejemplo, para cada dirección de predicción, se pueden determinar diferencias distintas de vectores de movimiento para cada una de las sub-PU o PU. Además, para cada componente horizontal o vertical, los valores de diferencias de vectores de movimiento pueden transformarse, y los coeficientes transformados resultantes pueden cuantizarse o truncarse adicionalmente y codificarse de manera similar a los residuos de píxeles en los códecs de vídeo.
[0137] En otro ejemplo, similar a la HEVC, los datos de refinamiento de movimiento para los vectores de movimiento de sub-PU pueden transmitirse desde el codificador de vídeo 20 al decodificador de vídeo 30 cuando un candidato de MV de sub-PU se agrega a una lista de candidatos en modalidad de AMVP y no se agrega a una lista de candidatos en modalidad de fusión. En un ejemplo alternativo, un candidato de MV de sub-PU puede valer solo si los valores de índices de referencia asociados a todos los vectores de movimiento de las sub-PU o PU son los mismos. En otro ejemplo alternativo, un candidato de MV de sub-PU puede valer siempre y los valores de índices de referencia asociados a todos los vectores de movimiento de las sub-PU se transmiten explícitamente. Además, si se aplica la cuantización o la transformación de los valores de diferencias de vectores de movimiento, los vectores de movimiento pueden ajustarse a escala hacia una imagen de referencia fija. Una vez que se recopilan las diferencias de vectores de movimiento, las diferencias se agregan a los vectores de movimiento ajustados a escala. Posteriormente, los nuevos vectores de movimiento se reducen a escala hacia sus respectivas imágenes de referencia diferentes, identificadas por los diferentes valores de índices de referencia de las sub-PU o las PU.
[0138] La siguiente sección proporciona detalles ejemplares de implementación con respecto a la modalidad de TMVP avanzada, descrita anteriormente, para casos donde los valores de índices de referencia asociados a los vectores de movimiento de las sub-PU o las PU son diferentes. La identificación del vector de movimiento de la primera etapa será expuesta primero. El vector de movimiento de la primera etapa se convierte a partir de los bloques adyacentes espaciales de la PU actual, que contienen vectores de movimiento temporal. Los bloques adyacentes espaciales pertenecen a los utilizados para la predicción típica de vectores de movimiento, por ejemplo, los bloques utilizados en la AMVP y la fusión para la HEVC.
[0139] Cuando los bloques adyacentes espaciales tienen vectores de movimiento candidatos que están asociados a diferentes valores de índices de referencia, se aplica uno de los siguientes procesos de decisión para decidir qué índice de referencia se usa para identificar la imagen de referencia a partir de la cual se determina la información de movimiento a nivel de sub-PU.
1. Se eligen los bloques con el valor de índice de referencia más pequeño. Entre ellos, aquel al que se accede anteriormente se elige para devolver el vector de movimiento temporal que sea el "vector de la primera etapa". Se supone que se accede a los bloques en un orden determinado en función de las ubicaciones espaciales relativas de los bloques.
2. Se eligen los bloques con el valor de índice de referencia más pequeño. Los vectores de movimiento de estos bloques se promedian (si son más de uno) para ser el "vector de la primera etapa"; alternativamente, se puede usar una operación de media.
3. Se elige el índice de referencia con una frecuencia máxima entre los índices de referencia de los bloques vecinos. Entre los bloques que tienen ese índice de referencia, se elige el vector de movimiento al que se accede primero, o se usa el promedio (por ejemplo, la media) de los vectores de movimiento para ser el "vector de la primera etapa". Alternativamente, se pueden aplicar otras funciones matemáticas para obtener el vector de movimiento de la primera etapa.
4. Se elige el índice de referencia con la distancia de POC más cercana a la imagen actual. Entre los bloques que tienen ese índice de referencia, se elige el vector de movimiento al que se accede primero, o se usa un promedio (por ejemplo, la media u otra función matemática) de los vectores de movimiento para ser el "vector de la primera etapa".
5. Un índice de referencia primario se señaliza en el encabezado de fragmento y se eligen bloques con un índice de referencia igual al índice de referencia primaria para producir el "vector de la primera etapa", con procedimientos similares a los descritos anteriormente. Cuando ningún bloque tiene un índice de referencia igual al índice de referencia primaria, se pueden usar los procedimientos descritos anteriormente para elegir el índice de referencia.
6. Dado que la imagen utilizada para la TMVP suele ser fija para cada fragmento, como en la AVC y la HEVC, el índice de referencia primaria puede ser el mismo que el índice de referencia que indica la TMVP.
7. El índice de referencia anterior podría ser un índice para la ListaImgRef0 o la ListaImgRefl. Alternativamente, una unión de listas de imágenes de referencia (UListasImgRef) puede ser generada por la ListaImgRef0 y la ListaImgRef1, y el índice de referencia puede ser el índice para la UListasImgRef. Téngase en cuenta que cualquier imagen identificada por la UListasImgRef pertenece a ListaImgRef0 o a ListaImgRef1, o a ambas, y no hay ninguna imagen que pertenezca a la UListasImgRef pero que no esté en la ListaImgRef0 o la ListaImgRef1. La UListasImgRef no tiene dos imágenes idénticas. Alternativamente, y además, la UListasImgRef solo puede contener imágenes de referencia temporales dentro de la misma capa, o marcadas como imágenes a corto plazo.
8. Alternativamente, el índice de referencia y el "vector de la primera etapa" se pueden seleccionar entre los candidatos en modalidad de fusión.
a. En un ejemplo, el índice de referencia y el "vector de la primera etapa" se seleccionan a partir de un candidato espacial en modalidad de fusión, obtenido de una posición de bloque relativa, por ejemplo, bloque vecino izquierdo.
b. Alternativamente, el índice de referencia y el "vector de la primera etapa" pueden seleccionarse del primer candidato disponible en la lista de candidatos en modalidad de fusión.
c. Además, cuando el candidato de fusión seleccionado utiliza la predicción doble, el vector de movimiento y el índice de referencia pueden seleccionarse a partir de uno de los conjuntos fusionados de información de movimiento.
[0140] Cuando se identifican un índice de referencia y el "vector de la primera etapa", se identifica la imagen de referencia que se utiliza para determinar la información de movimiento de sub-PU, así como la región en la imagen de referencia correspondiente a la PU actual. En un caso, un índice de referencia puede indicar una imagen de referencia que es diferente a la imagen a utilizar para la TMVP debido, por ejemplo, a que el índice de referencia se obtiene y la imagen utilizada para la TMVP se señaliza explícitamente. En este caso, el índice de referencia se puede cambiar para identificar la imagen utilizada para la TMVP, y el vector de movimiento se puede ajustar a escala hacia la imagen utilizada para la TMVP en función de las distancias de POC.
[0141] En la descripción anterior, la identificación del "vector de la primera etapa" solo utiliza bloques adyacentes espaciales. Alternativamente, los bloques vecinos temporales se pueden usar para identificar el "vector de la primera etapa", donde las posiciones de los bloques vecinos temporales son similares a los bloques usados en los NBDV. Dichas posiciones incluyen una posición central de la PU actual o una posición inferior derecha de la PU actual, cada una de las cuales se encuentra en una imagen de referencia identificada.
[0142] Ahora se expondrá la generación de movimiento de sub-PU para la TMVP. Cada sub-PU de una PU actual puede ubicar una sub-PU correspondiente dentro del bloque correspondiente de la imagen de referencia identificada por el "vector de primera etapa". Se genera un conjunto de información de movimiento obtenida a partir de la información de movimiento dentro de la sub-PU correspondiente de la imagen de referencia, para cada una de las sub-PU en la PU actual, de manera similar a la predicción de movimiento entre vistas en el nivel de sub-PU, descrita anteriormente. Si la información de movimiento de las sub-PU correspondientes no está disponible, el "vector de la primera etapa" se puede usar para las sub-PU de la PU actual como sustituto. Dado que cada sub-PU puede tener un índice de referencia diferente para cada dirección de predicción, se proponen varias técnicas para ajustar a escala los vectores de movimiento hasta una imagen de referencia de destino, para cada lista de imágenes de referencia.
[0143] Como se ilustra en la figura 14B, la imagen de referencia 183 identificada por el vector de movimiento 186 dentro de la correspondiente sub-PU 185 de la imagen de referencia del origen de movimiento 182 es ImgOri, la imagen de referencia (es decir, la imagen del origen del movimiento) 182 que contiene la correspondiente sub-PU 185 es ImgT, la imagen actual 180 es ImgAct y la imagen de referencia de destino 184 es ImgDest. Se supone, para los fines de la exposición, que el vector de movimiento 186 es MV, y el vector de movimiento ajustado a escala es MV' (es decir, el predictor de vector de movimiento 188 para predecir una sub-PU de la PU 181 en la imagen actual 180). Téngase en cuenta que cuando un vector de movimiento temporal 187, identificado en la primera etapa de la modalidad de TMVP avanzada, se asocia a una imagen de referencia que no es la imagen a partir de la cual se obtiene la información de movimiento de sub-PU, el ajuste a escala de los vectores de movimiento en función de la distancia de POC puede ser también posible.
1. Ajustar a escala el vector de movimiento hacia un índice de referencia fijo de la imagen actual: MV '= MV * (POC (ImgDest) - POC (ImgAct))/(POC (ImgOri) - POC (ImgT)), donde la función POC () devuelve el valor de POC de una imagen dada. Téngase en cuenta que las operaciones anteriores de multiplicación y división se pueden simplificar de una manera similar a la de la TMVP de la HEVC.
a. El índice de referencia fijo puede ser el mismo para todo el fragmento, por ejemplo, puede fijarse igual a 0 como en la HEVC.
b. El índice de referencia fijo puede obtenerse de los bloques adyacentes espaciales.
2. Ajustar a escala el vector de movimiento siempre hacia la imagen de referencia de la sub-PU correspondiente, que es ImgOri: MV' = MV * (POC (ImgOri) - POC (ImgAct))/(POC (ImgOri) - POC (ImgT)).
3. Ajustar a escala el vector de movimiento siempre hacia la imagen de ubicación conjunta, que es ImgT: MV' = MV * (POC (ImgT) - POC (ImgAct))/(POC (ImgOri) - POC (ImgT)).
[0144] Como se ha indicado anteriormente, la imagen de referencia de destino de cada lista de imágenes de referencia se fija en la imagen de referencia que tiene un índice de referencia igual a 0 en la lista de imágenes de referencia. En otro ejemplo, la imagen de referencia de destino de cada lista de imágenes de referencia se fija en la misma imagen de referencia identificada junto con el "vector de la primera etapa", como se ha descrito anteriormente. El funcionamiento de la TMVP avanzada para la predicción del vector de movimiento de nivel sub-PU se describe con más detalle a continuación con respecto a la figura 19.
[0145] Con respecto al tercer problema descrito anteriormente, esta divulgación describe técnicas relacionadas con los procesos de filtro de desbloqueo aplicados a las CU de un bloque de vídeo que incluyen al menos una PU con múltiples sub-PU. Las técnicas de esta divulgación permiten que las fronteras de sub-PU se desbloqueen convirtiendo las sub-PU en una estructura favorecedora del desbloqueo, de modo que los filtros de desbloqueo de la HEVC puedan seguir utilizándose para los bloques de la norma 3D-HEVC. De esta manera, la entrada al filtro de desbloqueo puede cambiar para permitir el filtrado de las distorsiones en bloques a lo largo de las fronteras de las sub-PU, mientras se mantiene el filtro de desbloqueo sin cambios. En esta divulgación, una CU que está al menos parcialmente codificada con las sub-PU se menciona como una CU avanzada, y una PU codificada con las sub-PU dentro de una CU avanzada codificada se refiere a una PU avanzada. Otras PU en la CU avanzada, si las hay, se denominan PU normales.
[0146] En esta divulgación se describen varias técnicas para introducir los bordes de las sub-PU al filtro de desbloqueo, para eliminar las distorsiones a lo largo de las fronteras de sub-PU. Un proceso de conversión de sub-PU, como se describe en esta divulgación, puede introducirse en la 3D-HEVC justo antes de un proceso de filtrado de desbloqueo, es decir, después de reconstruir un bloque de vídeo para almacenarlo como una imagen de referencia pero antes de almacenar realmente el bloque de vídeo reconstruido en un almacén temporal de imágenes decodificadas del codificador de vídeo 20 y/o del decodificador de vídeo 30.
[0147] En un primer ejemplo, justo antes de aplicar un filtro de desbloqueo a la CU que incluye las PU con las sub-PU, el codificador de vídeo 20 y/o el decodificador de vídeo 30 pueden configurarse para convertir cada PU que utiliza el diseño de sub-PU en uno o más árboles de codificación, de modo que cada una de las sub-PU pueda convertirse en una PU en las unidades de codificación que son los nodos de los árboles de codificación. En este ejemplo, las fronteras de sub-PU se convierten en fronteras de PU artificiales para los fines del filtro de desbloqueo. La estructura del árbol de codificación es preferentemente compatible con el diseño sintáctico de la HEVC.
[0148] En otros ejemplos, antes de aplicar un filtro de desbloqueo a una CU del bloque de vídeo que incluye la PU con las sub-PU, el codificador de vídeo 20 y/o el decodificador de vídeo 30 pueden configurarse, en cambio, para convertir la CU a fin de crear fronteras artificiales de PU o fronteras artificiales de TU en las fronteras de sub-PU. En un ejemplo, el codificador de vídeo 20 y/o el decodificador de vídeo 30 pueden configurarse para convertir un árbol de transformación de la CU a fin de asociar la PU con una jerarquía de árbol de transformación y asociar cada una de las sub-PU a una TU. En este ejemplo, las fronteras de sub-PU se convierten en fronteras de TU artificiales para los fines del filtro de desbloqueo. En otro ejemplo, el codificador de vídeo 20 y/o el decodificador de vídeo 30 pueden configurarse para convertir la CU en un árbol de codificación a fin de asociar la PU a una CU y asociar cada una de las sub-PU a una PU. En este ejemplo, las fronteras de sub-PU se convierten en fronteras de PU artificiales para los fines del filtro de desbloqueo. La estructura del árbol de codificación es preferentemente compatible con el diseño sintáctico de la HEVC.
[0149] En cualquiera de los ejemplos anteriores, después de convertir las sub-PU en estructuras favorecedoras del desbloqueo, el filtro de desbloqueo puede aplicarse a las fronteras de la PU entre dos PU adyacentes de la CU y/o a las fronteras de la TU entre dos TU adyacentes de la CU, incluidas las fronteras de PU artificiales y las fronteras de TU artificiales.
[0150] Para el ejemplo descrito anteriormente en el que el árbol de transformación de la CU se convierte a fin de asociar la PU a una jerarquía de árbol de transformación y asociar cada una de las sub-PU a una TU, de modo que las fronteras de la sub-PU se conviertan en fronteras de TU artificiales, se pueden aplicar uno o más de los siguientes procesos de decisión.
1. Cuando el árbol de transformación tiene una raíz con el indicador_transformación_dividida igual a 1, los nodos correspondientes a la PU normal (si acaso) de la CU avanzada no se cambian.
2. Cuando el árbol de transformación tiene una raíz con un indicador de transformación dividida igual a 1, se cambia un nodo en una PU avanzada para introducir una jerarquía de árbol de transformación, de la siguiente manera:
a. Para el nodo actual, si el indicador de transformación dividida es 0, y el tamaño de TU es mayor que el tamaño de la sub-PU, fijar el indicador de transformación dividida en 1 y, para cada uno de los cuatro nodos secundarios, se aplica lo siguiente:
i. Fijar cbf_luma, cbf_cb y cbf_cr del nodo para que sean iguales a los del nodo principal y el indicador_transformación_dividida igual a 0;
ii. Fijar el nodo actual en el nodo secundario e ir a la etapa a.
b. Para el nodo actual, si el indicador de transformación dividida es 1, para cada uno de los cuatro nodos secundarios, se aplica lo siguiente: fijar el nodo actual en el nodo secundario e ir a la etapa a.
3. Alternativamente, cuando se introduce una jerarquía de árbol de transformación para una PU y cbf_luma, cbf_cb y cbf_cr se fijan en un nodo recién dividido, los cbf_luma, cbf_cb y cbf_cr del nodo se fijan en 0.
4. Alternativamente, cuando se introduce una jerarquía de árbol de transformación para una PU y cbf_luma (o cbf_cb, o cbf_cr) se fijan en un nodo recién dividido, cbf_luma (o cbf_cb, o cbf_cr) del nodo se fija en cualquier valor entero positivo no nulo (por ejemplo, 1) si cbf_luma (o cbf_cb, o cbf_cr) no es igual a 0, o 0 en caso contrario.
5. Cuando el árbol de transformación tiene una raíz con un indicador de transformación dividida igual a 0, una PU normal (si la hubiera) se divide en unidades de transformación, con las siguientes etapas en orden.
a. El indicador_transformación_dividida de la CU se fija primero en 1.
b. Si la partición de la CU es de tamaño NxN, la PU normal corresponde a un nodo. Si la partición de la CU es de tamaño 2NxN o Nx2N, la PU normal corresponde a dos nodos.
c. Cada uno de los nodos anteriores dentro de una PU normal está configurado para tener el indicador_transformación_dividida fijado en 0 y cbf_luma, cbf_cb y cbf_cr fijados iguales a cbf_luma, cbf_cb y cbf_cr de la unidad de transformación original que abarca toda la CU avanzada.
d. Para cada una de las PU avanzadas de la CU, primero se generan 1 o 2 nodos que abarcan la región cuadrada de la PU y, para cada nodo, la jerarquía del árbol de transformación se introduce de manera similar a la de la etapa 2, 3 o 4 anterior.
6. Como alternativa a la etapa 5 anterior, para cada uno de los nodos anteriores dentro de una PU normal, cbf_luma, cbf_cb y cbf_cr se fijan iguales a 0.
7. Como alternativa a la etapa 4 anterior, para cada uno de los nodos anteriores dentro de una PU normal, su cbf_luma (o cbf_cb o cbf_cr) se fija igual a cualquier valor entero positivo no nulo (por ejemplo, 1) si cbf_luma (o cbf_cb o cbf_cb) no es igual a 0, o 0 de lo contrario.
[0151] Para el ejemplo descrito anteriormente en el que la CU se convierte en un árbol de codificación para asociar la PU a una CU y asociar cada una de las sub-PU a una PU de tal manera que las fronteras de sub-PU se conviertan en fronteras de Pu artificiales, uno o más de los siguientes procesos de decisiones pueden ser aplicados.
1. Después de la conversión, la CU actual avanzada se convertirá en la raíz del árbol de codificación, en concreto, la raíz convertida, que es un árbol cuádruple que contiene al menos cuatro unidades de codificación.
2. Para cualquier PU normal en una CU avanzada, se fija en una o más unidades de codificación.
3. Además, el valor de CBF de cada componente de las unidades de codificación convertidas, convertidas a partir de las PU normales en una CU avanzada, se fija además en 0. De esta manera, se evita el filtrado dentro de una PU de interpredicción normal, incluso si la PU se ha convertido en dos CU.
a. Para cualquier PU avanzada, el valor de CBF del árbol de codificación o de la unidad de codificación convertidos, que está un nivel por debajo de la raíz convertida, se fija como no nulo si el valor de CBF de la CU avanzada actual es no nulo.
b. Además, para cualquier CU o PU o árbol de codificación convertidos, dentro de una PU avanzada, si originalmente no tiene un valor de CBF señalizado, se establece que sea el mismo que el valor de CBF de su nodo padre en el árbol cuádruple, o el mismo estado nulo o no nulo que el valor de CBF de su nodo padre en el árbol cuádruple.
4. Alternativamente, para una CU avanzada, no se puede aplicar una unidad de transformación única para la CU completa, lo que significa que si una PU normal está dentro de la CU avanzada, debe contener una unidad de transformación que no sea compartida por otra PU de la CU.
a. Alternativamente, o además, para cada PU avanzada, los nodos de hoja del árbol de transformación se distribuyen un nivel más alto que la sub-PU o más profundo, lo que significa que cada uno de las cuatro sub-PU dentro de una CU convertida tiene señalizada una unidad de transformación única.
5. Más específicamente, si una CU con un tamaño de 2Lx2L contiene una PU que utiliza el diseño de sub-PU, entonces se realiza la siguiente conversión para todas las PU en la CU. Se fija un indicador de división igual a 1 para la CU avanzada actual y se aplica lo siguiente y el nodo actual se configura para que sea la CU:
a. Para cada una de las áreas cuadradas de un cuarto del nodo actual en el orden de exploración ráster, se aplica lo siguiente:
i. Establecer este área de un cuarto como nodo secundario.
ii. Si el nodo secundario no está codificado con las sub-PU, se fija que sea una unidad de codificación (con el indicador de división igual a 0) con partición de tamaño 2Nx2N.
1. Alternativamente, o además, el valor de CBF de cada componente del nodo secundario se fija en 0.
2. Como alternativa, o además, el indicador de división de TU de la unidad de codificación se fija en 0. iii. De lo contrario, si el nodo secundario está codificado con las sub-PU y contiene más de 1 sub-PU, un indicador de división se fija en 1 para el nodo secundario (considerado por tanto como un árbol de codificación) y se aplica lo siguiente:
1. Como alternativa, además, si el valor de CBF no está presente para el nodo secundario, se establece que sea igual al valor de CBF del nodo actual del nivel superior (el nodo padre de este nodo secundario).
2. Establecer el nodo secundario como el nodo actual e ir a la etapa a.
iv. De lo contrario, si el nodo secundario solo contiene 1 sub-PU, se establece que el nodo secundario sea la hoja del árbol de codificación, por tanto, una unidad de codificación (con el indicador de división igual a 0).
1. Se establece que la modalidad de partición del nodo secundario sea la modalidad de partición de la sub-PU
a. Si la modalidad de partición de la sub-PU es de tamaño 2Nx2N, la sub-PU contiene un bloque de tamaño 2Nx2N y se establece que la modalidad de partición de la unidad de codificación sea de tamaño 2Nx2N.
b. Si la modalidad de partición de la sub-PU es de tamaño Nx2N, la sub-PU contiene dos bloques de tamaño Nx2N y se establece que la modalidad de partición de la unidad de codificación sea de tamaño Nx2N.
c. Si la modalidad de partición de la sub-PU es de tamaño 2NxN, la sub-PU contiene dos bloques de tamaño 2NxN y se establece que la modalidad de partición de la unidad de codificación sea de tamaño 2NxN.
2. Alternativamente, o además, si el valor de CBF no está presente para el nodo secundario, se establece que sea igual al valor de CBF del nodo actual de nivel más alto (el nodo padre de este nodo secundario).
3. Como alternativa, o además, el indicador de división de TU de la unidad de codificación se fija en 0.
[0152] Como otra alternativa para el ejemplo descrito anteriormente en el que el árbol de transformación de la CU se convierte a fin de asociar la Pu a una jerarquía de árbol de transformación y asociar cada una de las sub-PU a una TU de tal manera que las fronteras de sub-PU se conviertan en fronteras de TU artificiales, se pueden aplicar uno o más de los siguientes procesos de decisión para parte de cada sub-PU.
1. Cuando el árbol de transformación tiene una raíz con el indicador_transformación_dividida igual a 1, los nodos normales que contienen solo las PU normales (o parte de las PU normales) de la CU avanzada no se cambian.
2. Cuando el árbol de transformación tiene una raíz con el ¡nd¡cador_transformac¡ón_div¡d¡da igual a 1, un nodo avanzado que contiene cualquier sub-PU (o parte de sub-PU) se cambia para introducir la jerarquía del árbol de transformación de la siguiente manera:
a. Para el nodo actual, si contiene cualquier sub-PU (o parte de sub-PU), y el ind¡cador_transformac¡ón_d¡vid¡da es 0, y el tamaño de TU es mayor que el tamaño de sub-PU, fijar el ¡ndicador_transformac¡ón_d¡v¡d¡da en 1, y para cada uno de los cuatro nodos secundarios, se aplica lo siguiente:
i. Establecer cbf luma, cbf_cb y cbf_cr del nodo para que sean ¡guales a los del nodo padre y el ind¡cador_transformac¡ón_d¡vid¡da igual a 0;
¡i. Fijar el nodo actual en el nodo secundario e ir a la etapa a.
b. Para el nodo actual, si ¡ndicador_transformac¡ón_d¡v¡d¡da es 1, para cada uno de los cuatro nodos secundarios, se aplica lo siguiente: fijar el nodo actual en el nodo secundario e ir a la etapa a.
3. Alternativamente, cuando se introduce una jerarquía de árbol de transformación para un nodo y cbf_luma, cbf_cb y cbf_cr se establecen en un nodo recién dividido, cbf_luma, cbf_cb y cbf_cr del nodo recién dividido se fijan en 0.
4. Alternativamente, cuando se introduce la jerarquía de árbol de transformación para un nodo y cbf_luma, cbf_cb y cbf_cr se establecen en un nodo recién dividido, cbf_luma (o cbf_cb, o cbf_cr) del nodo recién dividido se fija en cualquier valor entero positivo no nulo (por ejemplo, 1) si cbf_luma (o cbf_cb, o cbf_cr) no es igual a 0, o 0 de lo contrario.
5. Cuando el árbol de transformación tiene una raíz con ¡ndicador_transformac¡ón_d¡v¡d¡da igual a 0, un nodo normal que contiene solo las PU normales (o parte de las PU normales) debe dividirse en unidades de transformación, con las siguientes etapas en orden.
a. El ¡ndicador_transformac¡ón_d¡v¡d¡da de la CU se fija primero en 1.
b. Si la partición de la CU es de tamaño NxN, la PU normal corresponde a un nodo normal. Si la partición de la CU es de tamaño 2NxN o Nx2N, la PU normal corresponde a dos nodos normales. Si la partición de la CU es de tamaño 2NxnU, 2NxnD, nLx2N o nRx2N, la PU normal corresponde a 0 o 2 nodos normales.
c. Cada uno de los nodos normales anteriores se establece para que tenga el ¡ndicador_transformac¡ón_d¡v¡d¡da fijado en 0 y cbf_luma, cbf_cb, y cbf_cr fijados ¡guales a cbf_luma, cbf_cb, y cbf_cr de la unidad de transformación original que abarca la totalidad de la CU avanzada.
d. Para cada uno de los nodos avanzados que contiene cualquier sub-PU (o parte de sub-PU) de la CU, la jerarquía del árbol de transformación se introduce de manera similar a como se indica en las etapas 2, 3 o 4 anteriores.
6. Como alternativa al paso 5 anterior, para cada uno de los nodos normales anteriores, cbf_luma, cbf_cb y cbf_cr se fijan iguales a 0.
7. Alternativamente a la etapa 4 anterior, para cada uno de los nodos normales anteriores, su cbf_luma (o cbf_cb o cbf_cr) se establece igual a cualquier valor entero positivo no nulo (por ejemplo, 1) si cbf_luma (o cbf_cb o cbf_cb) no es igual a 0, o 0 en caso contrario.
[0153] Algunos ejemplos de detalles de implementación se proporcionan a continuación. El texto a continuación indica las modificaciones propuestas al borrador WD1 de la norma 3D-HEVC, para la implementación de algunas de las técnicas descritas en esta divulgación.
PROCESO DE DECODIFICACIÓN
H.8.1 Proceso de decodificación general
[0154] 3. Los procesos en las subcláusulas 8,4; 8,5; 8,6; 8,7 y 8,8 especifican procesos de decodificación utilizando elementos sintácticos en todas las capas de estructura sintáctica. Es un requisito de conformidad del flujo de bits que los fragmentos codificados de la imagen contengan datos de segmentos de fragmentos para cada unidad de árbol de codificación de la imagen, de modo que la división de la imagen en fragmentos, la división de los fragmentos en segmentos de fragmentos y la división de los segmentos de fragmentos en unidades de árbol de codificación formen, cada una, una partición de la imagen.
H.8.5.3.3.2 Proceso de selección de imágenes de referencia
[0155] La entrada a este proceso es un índice de referencia idxrefLX.
[0156] El resultado de este proceso es una imagen de referencia que consiste en una formación bidimensional de muestras de luma imgRefLXL y dos formaciones bidimensionales de muestras de croma imgRefLXCb y imgRefLXCr.
[0157] La imagen de referencia de salida ListaImgRefX [idxrefLX] consta de una formación, de tamaño ancho de imagen en muestras de luma por altura de imagen en muestras de luma, de muestras de luma imgRefLXL y dos formaciones, de tamaño AnchoImgEnMuestrasC por AlturaImgEnMuestrasC, de muestras de croma imgRefLXCb y imgRefLXCr.
[0158] Las formaciones de muestras de imágenes de referencia imgRefLXL, imgRefLXCb e imgRefLXCr corresponden a las formaciones de muestras decodificadas Sl, SCb y Sc obtenidas por la subcláusula 8.7 y la subcláusula 8.8 para una imagen decodificada previamente.
H.8.7 Proceso de modificación del árbol de transformación
H.8.7.1 General
[0159] Las entradas a este proceso son: formación de indicadores de división del árbol de codificación indicador_cu_dividida, formación de modalidades de partición de la unidad de codificación ModalidadPart, indicador de división del árbol de transformación indicador_transformación_dividida, formación de indicadores de subunidad de predicción de la unidad de codificación indicadorSubPu, tamaño de la subunidad de predicción tamañoSubPu. El resultado de este proceso es la formación modificada de indicadores de división del árbol de transformación indicador_transformación_dividida.
[0160] Para cada unidad de codificación, si se codifica en la modalidad de interpredicción y contiene una unidad de predicción que utiliza un diseño de subunidad de predicción, el indicador de división del árbol de transformación se modifica para hacer que la frontera de subunidad de predicción secundaria sea frontera de unidad de transformación: - El proceso de modificación del árbol de transformación especificado en la subcláusula 8.7.2 se invoca con la ubicación de luma (xCb, yCb), la ubicación de luma (xB0, yB0) fijada igual a (0, 0), el tamaño del bloque de codificación de luma nCbS fijado igual a (1 << Log2MaxTamañoCb), la profundidad del árbol de codificación profundidadCu igual a 0, la formación de indicadores de división del árbol de codificación indicador_cu_dividida, la formación de modalidades de partición de la unidad de codificación ModalidadPart, la formación de indicadores de división del árbol de transformación indicador_transformación_dividida, la formación de indicadores de subunidad de predicción indicadorSubPu y el tamaño de la subunidad de predicción tamañoSubPu como entradas, y la formación modificada de indicadores de división del árbol de transformación indicador_transformación_dividida como salida.
H.8.7.2 Proceso de modificación del árbol de transformación de la unidad de codificación que contiene la subunidad de predicción
[0161] Las entradas para este proceso son:
- una ubicación de luma (xCb, yCb) que especifique la muestra superior izquierda del bloque de codificación de luma actual en relación con la muestra de luma superior izquierda de la imagen actual,
- una ubicación de luma (xB0, yB0) para especificar la muestra superior izquierda del bloque de luma actual en relación con la muestra superior izquierda del bloque de codificación de luma actual,
- tamaño de bloque de codificación de luma nCbS,
- una variable que especifica la profundidad del árbol de codificación profundidadCu,
- formación de indicadores de división del árbol de codificación indicador_cu_dividida,
- formación de indicadores de división del árbol de transformación indicador_transformación_dividida,
- la formación de indicadores de subunidad de predicción indicadorSubPu,
- el tamaño de subunidad de predicción tamañoSubPu,
[0162] La salida de este proceso es la modificada:
- la formación de indicadores de división del árbol de transformación indicador_transformación_dividida,
[0163] Según el valor de ¡nd¡cador_cu_d¡v¡dida[xCb xB0] [yCb yB0] [profundidadCu], vale lo siguiente:
- Si ¡nd¡cador_cu_d¡v¡d¡da [xCb xB0] [yCb yB0] [profundidadCu] es igual a 1, se aplican las siguientes etapas ordenadas:
1. Las variables xB1 e yB1 se obtienen de la siguiente manera:
- La variable xB1 se fija igual a xB0 (nCbS >> 1).
- La variable yB1 se fija igual a yB0 (nCbS >> 1).
2. El proceso de modificación del árbol de transformación, según lo especificado en esta subcláusula, se invoca con la ubicación de luma (xCb, yCb), la ubicación de luma (xB0, yB0), el tamaño del bloque de codificación de luma nCbS se fija igual a (nCbS >> 1), la profundidad del árbol de codificación profundidadCu se fija igual a profundidadCu 1, la formación de indicadores de división del árbol de codificación ¡nd¡cador_cu_d¡v¡d¡da, la formación de modalidades de partición de la unidad de codificación ModalidadPart, la formación de indicadores de división del árbol de transformación ¡nd¡cador_transformac¡ón_d¡v¡d¡da, la formación de indicadores de subunidad de predicción indicadorSubPu y el tamaño de la subunidad de predicción tamañoSubPu, como entradas y la formación modificada de indicadores de división del árbol de transformación ¡nd¡cador_transformac¡ón_d¡v¡d¡da como salida.
3. El proceso de modificación del árbol de transformación, según lo especificado en esta subcláusula, se invoca con la ubicación de luma (xCb, yCb), la ubicación de luma (xB1, yB0), el tamaño del bloque de codificación de luma nCbS fijado igual a (nCbS >> 1), la profundidad del árbol de codificación profundidadCu fijada igual a profundidadCu 1, la formación de indicadores de división del árbol de codificación ¡nd¡cador_cu_d¡v¡d¡da, la formación de modalidades de partición de la unidad de codificación ModalidadPart, la formación de indicadores de división del árbol de transformación indicador_transformación_dividida, la formación de indicadores de subunidad de predicción indicadorSubPu y el tamaño de la subunidad de predicción tamañoSubPu, como entradas y la formación modificada de indicadores de división del árbol de transformación indicador_transformación_dividida como salida.
4. El proceso de modificación del árbol de transformación, según lo especificado en esta subcláusula, se invoca con la ubicación de luma (xCb, yCb), la ubicación de luma (xB0, yB1), el tamaño del bloque de codificación de luma nCbS fijado igual a (nCbS >> 1), la profundidad del árbol de codificación profundidadCu fijada igual a profundidadCu 1, la formación indicadores de división del árbol de codificación ¡nd¡cador_cu_d¡v¡d¡da, la formación de modalidades de partición de la unidad de codificación ModalidadPart, la formación de indicadores de división del árbol de transformación indicador_transformación_dividida, la formación de indicadores de subunidad de predicción indicadorSubPu y el tamaño de la subunidad de predicción tamañoSubPu, como entradas y la formación modificada de indicadores de división del árbol de transformación indicador_transformación_dividida como salida.
5. El proceso de modificación del árbol de transformación, según lo especificado en esta subcláusula, se invoca con la ubicación de luma (xCb, yCb), la ubicación de luma (xB1, yB1), el tamaño del bloque de codificación de luma nCbS fijado igual a (nCbS >> 1), la profundidad del árbol de codificación profundidadCu fijada igual a profundidadCu 1, la formación de indicadores de división del árbol de codificación ¡nd¡cador_cu_d¡v¡d¡da, la formación de modalidades de división de la unidad de codificación ModalidadPart, la formación de indicadores de división de árbol de transformación indicador_transformación_dividida, la formación de indicadores de subunidad de predicción indicadorSubPu y el tamaño de la subunidad de predicción tamañoSubPu, como entradas y la formación modificada de indicadores de división del árbol de transformación indicador_transformación_dividida como salida.
- De lo contrario (¡nd¡cador_cu_d¡v¡d¡da[xCb xB0][yCb yB0][profundidadCu] es igual a 0), si nCbS es mayor que tamañoSubPu, se aplican las siguientes etapas ordenadas:
1. Las variables xB1 e yB1 se obtienen de la siguiente manera:
- La variable xB1 se fija igual a xB0 (nCbS >> 1).
- La variable yB1 se fija igual a yB0 (nCbS >> 1).
2. Obtener la variable indicadorDesbloqueoSubPu siguiendo las siguientes etapas ordenadas:
- El indicadorDesbloqueoSubPu se fija igual a 0.
- Si indicadorSubPu [xCb xB0] [yCb yB0] es igual a 1, el indicadorDesbloqueoSubPu se fija igual a 1.
- Si indicadorSubPu [xCb xB1] [yCb yB0] es igual a 1, el indicadorDesbloqueoSubPu se fija igual a 1. - Si indicadorSubPu [xCb xB0] [yCb yB1] es igual a 1, el indicadorDesbloqueoSubPu se fija igual a 1. - Si indicadorSubPu [xCb xB1] [yCb yB1] es igual a 1, el indicadorDesbloqueoSubPu se fija igual a 1. - Si ModalidadPart [xCb xB0] [yCb yB0] es igual a PART_nLx2N, o ModalidadPart [xCb xB0] [yCb yB0] es igual a PART_nRx2N, o ModalidadPart [xCb xB0] [yCb yB0] es igual a PART2XXXXX, o ModalidadPart [xCb xB0] [yCb yB0] es igual a PART_2NxnD, el indicadorDesbloqueoSubPu se fija igual a 0.
3. Cuando el indicadorDesbloqueoSubPu es igual a 1, se aplican las siguientes etapas ordenadas:
- si indicador_transformación_dividida[xCb xB0][yCb yB0][profundidadCu] es igual a 0, fijar indicador_transformación_dividida[xCb xB0][yCb yB0][profundidadCu] para que sea igual a 1.
- El proceso de modificación del árbol de transformación especificado en la subcláusula 8.7.3 se invoca con la ubicación de luma (xCb, yCb), la ubicación de luma (xB0, yB0), la profundidad del árbol de codificación profundidadCu, el tamaño de bloque nCbS, la formación de indicadores de división del árbol de transformación indicador_transformación_dividida, la formación de indicadores de subunidad de predicción de la unidad de predicción indicadorSubPu y la formación de tamaños de subunidad de predicción de la unidad de predicción tamañoSubPu como entradas, y la formación modificada de indicadores de división del árbol de codificación indicador_transformación_dividida como salida.
H.8.7.3 Proceso de modificación del árbol de transformación del bloque de codificación de luma
[0164] Las entradas para este proceso son:
- una ubicación de luma (xCb, yCb) que especifica la muestra superior izquierda del bloque actual de predicción de luma en relación con la muestra de luma superior izquierda de la imagen actual,
- una ubicación de luma (xB0, yB0) que especifica la muestra superior izquierda del bloque actual de luma en relación con la muestra superior izquierda del bloque actual de codificación de luma,
- variables que especifican el tamaño del bloque nCbS,
- una variable que especifica la profundidad del árbol de transformación profundidadTrafo,
- la formación de indicadores de división del árbol de transformación indicador_transformación_dividida,
- la formación de indicadores de subunidad de predicción indicadorSubPu,
- el tamaño de subunidad de predicción tamañoSubPu,
[0165] La salida de este proceso es la modificada:
- formación de indicadores de división del árbol de transformación indicador_transformación_dividida,
[0166] Si nCbS es más grande que tamañoSubPu, se aplican las siguientes etapas ordenadas.
- Las variables xB1 e yB1 se obtienen de la siguiente manera:
- La variable xB1 se fija igual a xB0 (nCbS >> 1).
- La variable yB1 se fija igual a yB0 (nCbS >> 1).
- Para x en xB0, xB1
- Para y en yB0, yB1
- si indicadorSubPu[xCb x][yCb y] es igual a 1
- si indicador_transformación_dividida[xCb x][yCb y][profundidadTrafo 1] es igual a 0
- fijar indicador_transformación_dividida[xCb x][yCb y][profundidadTrafo 1] para que sea igual a 1.
- el proceso de modificación del árbol de transformación especificado en esta subcláusula se invoca con la ubicación de luma (xCb, yCb), la ubicación de luma (xCb x, yCb y), la profundidad del árbol de transformación profundidadTrafo se fija igual a profundidadTrafo 1, el tamaño del bloque nCbS se fija igual a (nCbS >> 1), la formación de indicadores de división del árbol de transformación indicador_transformación_dividida, la formación de indicadores de subunidad de predicción indicadorSubPu y el tamaño de subunidad de predicción tamañoSubPu como entradas, y la formación modificada de indicadores de división del árbol de codificación indicador_transformación_dividida como salida.
- de lo contrario (si indicador_transformación_dividida[xCb x][yCb y][profundidadTrafo 1] es igual a 1),
- el proceso de modificación del árbol de transformación especificado en esta subcláusula se invoca con la ubicación de luma (xCb, yCb), la ubicación de luma (xCb x, yCb y), la profundidad del árbol de transformación profundidadTrafo se fija igual a profundidadTrafo 1, el tamaño del bloque nCbS se fija igual a (nCbS >> 1), la formación de indicadores de división del árbol de transformación indicador_transformación_dividida, la formación de indicadores de subunidad de predicción indicadorSubPu y el tamaño de subunidad de predicción tamañoSubPu como entradas, y la formación modificada de indicadores de división del árbol de codificación indicador_transformación_dividida como salida.
H.8.8 Proceso de filtro en bucle
[0167] La figura 15 es un diagrama de bloques que ilustra un ejemplo del codificador de vídeo 20 que puede configurarse para implementar las técnicas de esta divulgación. El codificador de vídeo 20 puede realizar intracodificación e intercodificación (incluida la codificación entre vistas) de bloques de vídeo dentro de fragmentos de vídeo, por ejemplo, fragmentos tanto de imágenes de textura como de mapas de profundidad. La información de textura generalmente incluye información de luminancia (brillo o intensidad) y crominancia (color, por ejemplo, tonos rojos y tonos azules). En algunos ejemplos, el codificador de vídeo 20 puede determinar las modalidades de codificación en relación con los fragmentos de luminancia, y reutilizar la información de predicción, a partir de la codificación de la información de luminancia para codificar la información de crominancia (por ejemplo, reutilizando la información de partición, las selecciones de modalidad de intrapredicción, los vectores de movimiento o similares). La intracodificación se basa en la predicción espacial para reducir o eliminar la redundancia espacial en el vídeo dentro de una trama o imagen de vídeo dada. La intercodificación se basa en la predicción temporal para reducir o eliminar la redundancia temporal en el vídeo dentro de tramas o imágenes adyacentes de una secuencia de vídeo. La intramodalidad (modalidad I) puede referirse a cualquiera entre varias modalidades de codificación de base espacial. Las intermodalidades, tales como la predicción unidireccional (modalidad P) o la bipredicción (modalidad B), pueden referirse a cualquiera entre varias modalidades de codificación de base temporal.
[0168] Como se muestra en la figura 15, el codificador de vídeo 20 recibe un bloque de vídeo actual (es decir, un bloque de datos de vídeo, tal como un bloque de luminancia, un bloque de crominancia o un bloque de profundidad) dentro de una trama de vídeo (por ejemplo, una imagen de textura o un mapa de profundidad) a codificar. En el ejemplo de la figura 15, el codificador de vídeo 20 incluye una unidad de selección de modalidad 40, una memoria de datos de vídeo 41, un almacén temporal de imágenes decodificadas 64, un sumador 50, una unidad de procesamiento de transformación 52, una unidad de cuantización 54, una unidad de filtro 63 y una unidad de codificación por entropía 56. La unidad de filtro 63 puede aplicar un proceso de filtro de desbloqueo según se describe en esta divulgación. A su vez, la unidad de selección de modalidad 40 incluye una unidad de compensación de movimiento 44, una unidad de estimación de movimiento 42, una unidad de procesamiento de intrapredicción 46 y una unidad de partición 48. Para la reconstrucción de bloques de vídeo, el codificador de vídeo 20 incluye también una unidad de cuantización inversa 58, una unidad de procesamiento de transformación inversa 60 y un sumador 62. La unidad de filtro 63 puede incluir un filtro de desbloqueo y / o un filtro SAO para filtrar los fronteras del bloque, para eliminar distorsiones de pixelado del vídeo reconstruido. También pueden usarse filtros adicionales (en bucle o pos-bucle), además del filtro de eliminación de bloques. Dichos filtros no se muestran por razones de brevedad pero, si se desea, pueden filtrar la salida del sumador 50 (como un filtro en bucle).
[0169] La memoria de datos de vídeo 41 puede almacenar datos de vídeo a codificar por parte de los componentes del codificador de vídeo 20. Los datos de vídeo almacenados en la memoria de datos de vídeo 41 se pueden obtener, por ejemplo, a partir del origen de vídeo 18. El almacén temporal de imágenes decodificadas 64 puede ser una memoria de imágenes de referencia que almacene datos de vídeo de referencia para su uso en la codificación de datos de vídeo mediante el codificador de vídeo 20, por ejemplo, en modalidades de intracodificación o de intercodificación. La memoria de datos de vídeo 41 y el almacén temporal de imágenes decodificadas 64 pueden estar formados por cualquiera entre varios dispositivos de memoria, tales como memoria dinámica de acceso aleatorio (DRAM), incluyendo DRAM síncrona (Sd Ra M), RAM magnetorresistiva (MRAM), RAM resistiva (RRAM) u otros tipos de dispositivos de memoria. La memoria de datos de vídeo 41 y el almacén temporal de imágenes decodificadas 64 pueden ser proporcionados por el mismo dispositivo de memoria o dispositivos de memoria independientes. En diversos ejemplos, la memoria de datos de vídeo 41 puede estar en un chip con otros componentes del codificador de vídeo 20, o fuera de chip con respecto a esos componentes.
[0170] Durante el proceso de codificación, el codificador 20 de vídeo recibe una trama o un fragmento de vídeo a codificar. La trama o el fragmento pueden dividirse en múltiples bloques de vídeo. La unidad 42 de estimación de movimiento y la unidad 44 de compensación de movimiento llevan a cabo la codificación de predicción intra del bloque de vídeo recibido con respecto a uno o más bloques en una o más tramas de referencia, para proporcionar la predicción temporal. La unidad de procesamiento de intrapredicción 46, de forma alternativa, puede realizar la codificación intrapredictiva del bloque de vídeo recibido, con respecto a uno o más bloques contiguos en la misma trama o fragmento que el bloque a codificar, para proporcionar predicción espacial. El codificador de vídeo 20 puede llevar a cabo múltiples pases de codificación, por ejemplo, para seleccionar una modalidad de codificación adecuada para cada bloque de datos de vídeo.
[0171] Además, la unidad de división 48 puede dividir bloques de datos de vídeo en subbloques, basándose en la evaluación de los anteriores esquemas de división en las anteriores pases de codificación. Por ejemplo, la unidad de partición 48 puede dividir inicialmente una trama o un fragmento en varias LCU, y dividir cada una de las LCU en varias subCU, basándose en un análisis de velocidad-distorsión (por ejemplo, una optimización de velocidad-distorsión). La unidad de selección de modalidad 40 puede producir además una estructura de datos de árbol cuádruple, indicativa de la división de una LCU en las sub-CU. Las CU de nodos hoja del árbol cuádruple pueden incluir una o más PU y una o más TU.
[0172] La unidad de selección de modalidad 40 puede seleccionar una de las modalidades de codificación, intra o inter, por ejemplo, basándose en los resultados de errores, y proporciona el bloque intracodificado o intercodificado resultante al sumador 50 para generar datos de bloques residuales, y al sumador 62 para reconstruir el bloque codificado para su uso como una trama de referencia. La unidad de selección de modalidad 40 proporciona también elementos sintácticos, tales como vectores de movimiento, indicadores de intramodalidad, información de división y otra información sintáctica de este tipo, a la unidad de codificación por entropía 56.
[0173] La unidad de estimación de movimiento 42 y la unidad de compensación de movimiento 44 pueden estar sumamente integradas, pero se ilustran por separado con fines conceptuales. La estimación del 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 el desplazamiento de una PU de un bloque de vídeo dentro de una trama o imagen de vídeo actual, con respecto a un bloque predictivo dentro de una trama de referencia (u otra unidad codificada), con respecto al bloque actual que se está codificando dentro de la trama actual (u otra unidad codificada).
[0174] Un bloque predictivo es un bloque que se revela como estrechamente coincidente con el bloque a codificar, en lo que respecta a la diferencia de píxeles, lo cual puede determinarse mediante la suma de diferencias absolutas (SAD), suma de las diferencias al cuadrado (SSD) u otras métricas de diferencia. En algunos ejemplos, el codificador de vídeo 20 puede calcular valores para posiciones de píxeles fraccionarias de imágenes de referencia almacenadas en el almacén temporal 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 completas y las posiciones de píxel fraccionarias, y facilitar un vector de movimiento con una precisión de píxel fraccionaria.
[0175] 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 puede seleccionarse a partir de una primera lista de imágenes de referencia (lista 0) o una segunda lista de imágenes de referencia (lista 1), cada una de las cuales identifica una o más imágenes de referencia almacenadas en el almacén temporal de imágenes decodificadas 64. Las listas de imágenes de referencia pueden construirse utilizando las técnicas de esta divulgación. 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.
[0176] La compensación de movimiento, llevada a cabo por la unidad de compensación de movimiento 44, puede implicar capturar o generar el bloque predictivo basándose en el vector de movimiento determinado por la unidad de estimación de movimiento 42. De nuevo, la unidad de estimación de movimiento 42 y la unidad de compensación de movimiento 44 pueden integrarse funcionalmente, en algunos ejemplos. 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 sumador 50 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, generando valores de diferencias de píxel, como se expone más adelante. En general, la unidad de estimación de movimiento 42 lleva a cabo la estimación de movimiento con respecto a los componentes de luma, y la unidad de compensación de movimiento 44 utiliza los vectores de movimiento calculados basándose en los componentes de luma, tanto para los componentes de croma como para los componentes de luma. De esta manera, la unidad de compensación de movimiento 44 puede reutilizar la información de movimiento determinada para los componentes de luma para codificar componentes de croma, de modo que la unidad de estimación de movimiento 42 no necesita realizar una búsqueda de movimiento para los componentes de croma. La unidad de selección de modalidad 40 también puede generar elementos sintácticos asociados a los bloques de vídeo y al 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.
[0177] La unidad de procesamiento de intrapredicción 46 puede intrapredecir un bloque actual, como alternativa a la interpredicción realizada por la unidad de estimación de movimiento 42 y la unidad de compensación de movimiento 44, como se ha descrito anteriormente. En particular, la unidad de procesamiento de intrapredicción 46 puede determinar una modalidad de intrapredicción a usar para codificar un bloque actual. En algunos ejemplos, la unidad de procesamiento de intrapredicción 46 puede codificar un bloque actual usando diversas modalidades de intrapredicción, por ejemplo, durante pases de codificación independientes, y la unidad de procesamiento de intrapredicción 46 (o la unidad de selección de modalidad 40, en algunos ejemplos) puede seleccionar una modalidad de intrapredicción adecuada para su uso a partir de las modalidades probadas.
[0178] Por ejemplo, la unidad de procesamiento de intrapredicción 46 puede calcular valores de velocidad-distorsión usando un análisis de velocidad-distorsión para las diversas modalidades de intrapredicción probadas, y seleccionar la modalidad de intrapredicción que tenga las mejores características de velocidad-distorsión entre las modalidades probadas. El análisis de velocidad-distorsión determina, en general, una magnitud de distorsión (o error) entre un bloque codificado y un bloque original no codificado que fue codificado para generar el bloque codificado, así como una velocidad de bits (es decir, un número de bits) usada para generar el bloque codificado. La unidad de procesamiento de intrapredicción 46 puede calcular razones a partir de las distorsiones y velocidades para los diversos bloques codificados, para determinar qué modalidad de intrapredicción presenta el mejor valor de velocidaddistorsión para el bloque.
[0179] Después de seleccionar una modalidad de intrapredicción para un bloque, la unidad de procesamiento de intrapredicción 46 puede proporcionar información, indicativa de la modalidad de intrapredicción seleccionada 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 la modalidad de intrapredicción seleccionada. 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 de modalidades de intrapredicción y una pluralidad de tablas modificadas de índices de modalidades de intrapredicción (también denominadas tablas de correlación de palabras de código), definiciones de contextos de codificación para diversos bloques e indicaciones de una modalidad de intrapredicción más probable, una tabla de índices de modalidades de intrapredicción y una tabla modificada de índices de modalidades de intrapredicción, a usar para cada uno de los contextos.
[0180] El codificador de vídeo 20 forma un bloque de vídeo residual restando los datos de predicción, de la unidad de selección de modalidad 40, del bloque de vídeo original que se está codificando. El sumador 50 representa el componente o los componentes que realizan esta operación de resta. La unidad de procesamiento de transformación 52 aplica una transformación, tal como una transformación discreta de coseno (DCT) o una transformación conceptualmente similar, al bloque residual, produciendo un bloque de vídeo que comprende valores residuales de coeficientes de transformación. La unidad de procesamiento de transformación 52 puede llevar a cabo otras transformaciones que son conceptualmente similares a la DCT. También se podrían usar transformaciones de ondículas, transformaciones de enteros, transformaciones de subbandas u otros tipos de transformaciones. En cualquier caso, la unidad de procesamiento de transformación 52 aplica la transformación al bloque residual, produciendo un bloque de coeficientes de transformación residuales.
[0181] La transformación puede convertir la información residual desde un dominio de valores de píxel a un dominio de transformación, tal como un dominio de frecuencia. La unidad de procesamiento de transformación 52 puede enviar los coeficientes de transformación resultantes a la unidad de cuantización 54. La unidad de cuantización 54 cuantiza los coeficientes de transformación para reducir más la velocidad de bits. El proceso de cuantización puede reducir la profundidad de bits asociada a algunos, o a la totalidad, de los coeficientes. El grado de cuantización se puede modificar ajustando un parámetro de cuantización. En algunos ejemplos, la unidad de cuantización 54 puede realizar, a continuación, una exploración de la formación que incluye los coeficientes de transformación cuantizados. De forma alternativa, la unidad de codificación por entropía 56 puede realizar la exploración.
[0182] Tras la cuantización, la unidad de codificación por entropía 56 codifica por entropía los coeficientes de transformación cuantizados. Por ejemplo, la unidad de codificación por entropía 56 puede llevar a cabo la codificación de longitud variable adaptativa según el contexto (CAVLC), la codificación aritmética binaria adaptativa según el contexto (CABAC), la codificación aritmética binaria adaptativa según el contexto y basada en sintaxis (SBAC), la codificación por entropía mediante la división en intervalos de probabilidades (PIPE) u otra técnica de codificación por entropía. En el caso de la codificación por entropía basada en el contexto, el contexto se puede basar en bloques contiguos. 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 otro dispositivo (por ejemplo, el decodificador de vídeo 30) o archivar para su posterior transmisión o recuperación.
[0183] La unidad de cuantización inversa 58 y la unidad de procesamiento de transformación inversa 60 aplican la cuantización inversa y la transformación inversa, respectivamente, para reconstruir el bloque residual en el dominio del píxel, por ejemplo, para su posterior uso como bloque de referencia. La unidad de compensación de movimiento 44 puede calcular un bloque de referencia añadiendo el bloque residual a un bloque predictivo de una de las imágenes de referencia almacenadas en el almacén temporal de imágenes decodificadas 64. 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íxel 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, producido por la unidad de compensación de movimiento 44, para generar un bloque de vídeo reconstruido para su almacenamiento en el almacén temporal de imágenes decodificadas 64. El bloque de vídeo reconstruido puede ser utilizado por la unidad de estimación de movimiento 42 y la unidad de compensación de movimiento 44, como bloque de referencia para intercodificar un bloque en una trama de vídeo posterior.
[0184] El codificador de vídeo 20 puede codificar mapas de profundidad de una manera que se asemeja esencialmente a las técnicas de codificación para codificar componentes de luminancia, si bien sin los correspondientes componentes de crominancia. Por ejemplo, la unidad de procesamiento de intrapredicción 46 puede intrapredecir bloques de mapas de profundidad, mientras que la unidad de estimación de movimiento 42 y la unidad de compensación de movimiento 44 pueden interpredecir bloques de mapas de profundidad. Sin embargo, como se ha expuesto anteriormente, durante la interpredicción de mapas de profundidad, la unidad de compensación de movimiento 44 puede escalar (es decir, ajustar a escala) los valores de los mapas de profundidad de referencia basándose en las diferencias en los rangos de profundidad y los valores de precisión para los rangos de profundidad. Por ejemplo, si diferentes valores de profundidad máxima en el mapa de profundidad actual y un mapa de profundidad de referencia corresponden a la misma profundidad del mundo real, el codificador de vídeo 20 puede ajustar a escala el valor de profundidad máxima del mapa de profundidad de referencia para que sea igual al valor de profundidad máxima en el mapa de profundidad actual, a efectos de predicción. Adicional o alternativamente, el codificador de vídeo 20 puede usar los valores actualizados del rango de profundidad y los valores de precisión para generar una imagen de síntesis de vista para la predicción de síntesis de vista, por ejemplo, utilizando técnicas esencialmente similares a la predicción entre vistas.
[0185] El codificador de vídeo 20 representa un ejemplo de un codificador de vídeo que puede configurarse para realizar cualquiera de las técnicas descritas en esta divulgación, solas o en cualquier combinación. Por ejemplo, el codificador de vídeo 20 puede configurarse para realizar técnicas para la predicción de movimiento a nivel de sub-PU para la codificación de vídeo en la norma 3D-HEVC.
[0186] En un ejemplo, el codificador de vídeo 20 puede configurarse para realizar una modalidad de BVSP de sub-PU para predecir una PU que incluye dos o más sub-PU. En la modalidad de BVSP de sub-PU, la unidad de compensación de movimiento 44 del codificador de vídeo 20 determina la primera información de movimiento para una PU actual que incluye al menos un vector de movimiento de disparidad y un índice de vista de referencia asociado, que identifica una imagen de referencia entre vistas. La unidad de compensación de movimiento 44 luego divide la PU actual en dos o más sub-PU, y determina la segunda información de movimiento para cada una de las sub-PU que incluye al menos un vector de movimiento de disparidad asociado a un bloque de profundidad de la imagen de referencia entre vistas, correspondiente. a cada una de las sub-PU. La unidad de compensación de movimiento 44 realiza la compensación de movimiento para predecir cada una de las sub-PU de la Pu en función de la segunda información de movimiento para cada una de las sub-PU. De acuerdo a las técnicas de esta divulgación, para cada PU predicha utilizando la modalidad de BVSP de sub-PU, el codificador de vídeo 20 almacena la segunda información de movimiento obtenida para cada una de las sub-PU de la PU actual, incluso después de que se realiza la compensación de movimiento. La segunda información de movimiento puede almacenarse en el almacén temporal de imágenes decodificadas 64. La información de movimiento adicional, almacenada para la PU actual, se puede usar luego para predecir las PU posteriores, para las cuales la PU actual es un bloque vecino.
[0187] En otro ejemplo, el codificador de vídeo 20 puede configurarse para realizar una modalidad de TMVP avanzada para predecir las sub-PU de una PU en la codificación de capa única, para la cual se puede permitir el refinamiento del vector de movimiento. En la modalidad de TMVP avanzada, la unidad de compensación de movimiento 44 del codificador de vídeo 20 determina un vector de movimiento de primera etapa para una PU actual que identifica un bloque de una imagen de referencia correspondiente a la PU actual. La unidad de compensación de movimiento 44 luego divide la PU actual en dos o más sub-PU, y determina la información de movimiento de la segunda etapa para cada una de las sub-PU a partir del bloque de la imagen de referencia identificada por el vector de movimiento de la primera etapa, donde la información de movimiento de la segunda etapa para cada una de las sub-PU incluye al menos un vector de movimiento y un índice de referencia asociado. La unidad de compensación de movimiento 44 realiza la compensación de movimiento para predecir cada una de las sub-PU por separado, basándose en la información de movimiento de la segunda etapa para cada una de las sub-PU. En algunos ejemplos, la unidad de compensación de movimiento 44 puede determinar una diferencia de vectores de movimiento para refinar el al menos un vector de movimiento de la información de movimiento de la segunda etapa para cada una de las sub-PU.
[0188] En otro ejemplo, el codificador de vídeo 20 puede configurarse para realizar técnicas relacionadas con los procesos de filtro de desbloqueo aplicados a las CU de un bloque de vídeo que incluyen al menos una PU con múltiples sub-PU. De acuerdo a las técnicas de esta divulgación, antes de aplicar un filtro de desbloqueo a una CU del bloque de vídeo que incluye la PU con las sub-PU, la unidad de filtro 63 del codificador de vídeo 20 convierte la CU para crear fronteras de PU artificiales o fronteras de TU artificiales en las fronteras de sub-PU. En un ejemplo, la unidad de filtro 63 convierte un árbol de transformación de la CU a fin de asociar la PU a una jerarquía de árbol de transformación y asociar cada una de las sub-PU a una TU de modo que las fronteras de sub-PU se conviertan en fronteras de TU artificiales. En otro ejemplo, la unidad de filtro 63 convierte la CU en un árbol de codificación para asociar la PU a una CU y asociar cada una de las sub-PU a una PU de tal manera que los fronteras de la sub-PU se conviertan en fronteras de Pu artificiales. La unidad de filtro 63 luego aplica el filtro de desbloqueo a los fronteras de PU entre dos PU adyacentes de la CU y/o las fronteras de TU entre dos TU adyacentes de la CU, incluidas las fronteras de PU artificiales y las fronteras de TU artificiales.
[0189] La figura 16 es un diagrama de bloques que ilustra un ejemplo de decodificador de vídeo 30 que puede implementar las técnicas de esta divulgación. En el ejemplo de la figura 16, el decodificador de vídeo 30 incluye una unidad de decodificación por entropía 70, una memoria de datos de vídeo 71, una unidad de compensación de movimiento 72, una unidad de procesamiento de intrapredicción 74, una unidad de cuantización inversa 76, una unidad de transformación inversa 78, un almacén temporal de imágenes decodificadas 82 y un sumador 80. 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 (figura 15). La unidad de compensación de movimiento 72 puede generar datos de predicción basándose en vectores de movimiento recibidos desde la unidad de decodificación por entropía 70, mientras que la unidad de procesamiento de intrapredicción 74 puede generar datos de predicción basados en indicadores de modalidad de intrapredicción recibidos desde la unidad de decodificación por entropía 70.
[0190] La memoria de datos de vídeo 71 puede almacenar datos de vídeo, tales como un flujo de bits de vídeo codificado, a decodificar por parte de los componentes del decodificador de vídeo 30. Los datos de vídeo almacenados en la memoria de datos de vídeo 71 pueden obtenerse, por ejemplo, a partir del medio legible por ordenador 16, por ejemplo, desde un origen de vídeo local, tal como una cámara, mediante comunicación de datos de vídeo por red cableada o inalámbrica, o accediendo a medios de almacenamiento físico de datos. La memoria de datos de vídeo 71 puede formar un almacén temporal de imágenes codificadas (CPB) que almacene datos de vídeo codificados a partir de un flujo de bits de vídeo codificado. El almacén temporal de imágenes decodificadas 82 puede ser una memoria de imágenes de referencia que almacene datos de vídeo de referencia para su uso en la decodificación de datos de vídeo mediante el decodificador de vídeo 30, por ejemplo, en modalidades de intracodificación o de intercodificación. La memoria de datos de vídeo 71 y el almacén temporal de imágenes decodificadas 82 pueden estar formados por cualquiera entre varios dispositivos de memoria, tales como memoria dinámica de acceso aleatorio (DRAM), incluyendo DRAM síncrona (SDRAM), RAM magnetorresistiva (MRAM), RAM resistiva (RRAM) u otros tipos de dispositivos de memoria. La memoria de datos de vídeo 71 y el almacén temporal de imágenes decodificadas 82 pueden proporcionarse mediante el mismo dispositivo de memoria o dispositivos de memoria independientes. En diversos ejemplos, la memoria de datos de vídeo 71 puede estar en un chip con otros componentes del decodificador de vídeo 30, o fuera de chip con respecto a esos componentes.
[0191] 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, desde el codificador de vídeo 20. La unidad de decodificación por entropía 70 del decodificador de vídeo 30 decodifica por entropía el flujo de bits para generar coeficientes cuantizados, vectores de movimiento o indicadores de modalidad de intrapredicción y otros elementos sintácticos. La unidad de decodificación por entropía 70 remite los vectores de movimiento y otros elementos sintácticos a la unidad de compensación de movimiento 72. El decodificador de vídeo 30 puede recibir los elementos sintácticos en el nivel de fragmento de vídeo y/o el nivel de bloque de vídeo.
[0192] Cuando el fragmento de vídeo se codifica como un fragmento intracodificado (I), la unidad de procesamiento de intrapredicción 74 puede generar datos de predicción para un bloque de vídeo del fragmento de vídeo actual, basándose en una modalidad de intrapredicción señalizada y en 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 72 genera bloques predictivos para un bloque de vídeo del fragmento de vídeo actual basándose en los vectores de movimiento y en otros elementos sintácticos recibidos desde la unidad de decodificación por entropía 70. Los bloques predictivos se pueden generar 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 imágenes de referencia, la Lista 0 y la Lista 1, usando técnicas de esta divulgación, basándose en las imágenes de referencia almacenadas en el almacén temporal de imágenes decodificadas 82. La unidad de compensación de movimiento 72 determina la información de predicción para un bloque de vídeo del fragmento de vídeo actual, analizando sintácticamente los vectores de movimiento y otros elementos sintácticos, y usa la información de predicción para generar los bloques predictivos para el bloque de vídeo actual que se está decodificando. Por ejemplo, la unidad de compensación de movimiento 72 usa algunos de los elementos sintácticos recibidos para determinar una modalidad de predicción (por ejemplo, intrapredicción o interpredicción), usada 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 del 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.
[0193] La unidad de compensación de movimiento 72 también puede realizar la interpolación basándose en filtros de interpolación. La unidad de compensación de movimiento 72 puede usar filtros de interpolación como los usados por el codificador de vídeo 20 durante la codificación de los bloques de vídeo, para calcular valores interpolados para píxeles fraccionarios de bloques de referencia. En este caso, la unidad 72 de compensación de movimiento 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 generar bloques predictivos.
[0194] La unidad de cuantización inversa 76 cuantiza inversamente, es decir, decuantiza, los coeficientes de transformación cuantizados proporcionados en el flujo de bits y decodificados por la unidad de decodificación por entropía 70. El proceso de cuantización inversa puede incluir el uso de un parámetro de cuantización QPY, calculado por el decodificador de vídeo 30 para cada bloque de vídeo en el fragmento de vídeo, para determinar un grado de cuantización y, asimismo, un grado de cuantización inversa que debería aplicarse. La unidad de procesamiento de transformación inversa 78 aplica una transformación inversa, por ejemplo una DCT inversa, una transformación inversa de enteros o un proceso de transformación inversa conceptualmente similar, a los coeficientes de transformación, con el fin de generar bloques residuales en el dominio del píxel.
[0195] Una vez que la unidad de compensación de movimiento 72 ha generado el bloque predictivo para el bloque de vídeo actual basándose en los vectores de movimiento y en otros elementos sintácticos, el decodificador de vídeo 30 forma un bloque de vídeo decodificado sumando los bloques residuales procedentes de la unidad de procesamiento de transformación inversa 78 a los correspondientes bloques predictivos generados por la unidad de compensación de movimiento 72. El sumador 90 representa el componente o los componentes que realizan esta operación de suma. La unidad de filtro 63 puede aplicar un proceso de filtro de desbloqueo. La unidad de filtro 63 puede incluir un filtro de desbloqueo y / o un filtro SAO para filtrar los fronteras del bloque, para eliminar distorsiones de pixelado del vídeo reconstruido. También pueden usarse filtros adicionales (en bucle o pos-bucle), además del filtro de eliminación de bloques. Dichos filtros no se muestran por razones de brevedad pero, si se desea, pueden filtrar la salida del sumador 80 (como un filtro en bucle). Los bloques de vídeo decodificados en una trama o imagen determinada se almacenan a continuación en el almacén temporal de imágenes decodificadas 82, que almacena imágenes de referencia usadas para una posterior compensación de movimiento. El almacén temporal de imágenes decodificadas 82 almacena también vídeo decodificado para su presentación posterior en un dispositivo de visualización, tal como el dispositivo de visualización 32 de la figura 1.
[0196] El decodificador de vídeo 30 puede decodificar mapas de profundidad de una manera que se asemeja esencialmente a las técnicas de decodificación para decodificar componentes de luminancia, aunque sin los componentes de crominancia correspondientes. Por ejemplo, la unidad de procesamiento de intrapredicción 74 puede intrapredecir bloques de mapas de profundidad, mientras que la unidad de compensación de movimiento 72 puede interpredecir bloques de mapas de profundidad. Sin embargo, como se ha expuesto anteriormente, durante la interpredicción de mapas de profundidad, la unidad de compensación de movimiento 72 puede escalar (es decir, ajustar a escala) los valores de los mapas de profundidad de referencia basándose en las diferencias en los rangos de profundidad y los valores de precisión para los rangos de profundidad. Por ejemplo, si diferentes valores de profundidad máxima en el mapa de profundidad actual y un mapa de profundidad de referencia corresponden a la misma profundidad del mundo real, el decodificador de vídeo 30 puede ajustar a escala el valor de profundidad máxima del mapa de profundidad de referencia para que sea igual al valor de profundidad máxima en el mapa de profundidad actual, a efectos de predicción. Adicional o alternativamente, el decodificador de vídeo 30 puede usar los valores actualizados del rango de profundidad y los valores de precisión para generar una imagen de síntesis de vista para la predicción de síntesis de vista, por ejemplo, utilizando técnicas esencialmente similares a la predicción entre vistas.
[0197] El codificador de vídeo 30 representa un ejemplo de un decodificador de vídeo que puede configurarse para realizar cualquiera de las técnicas descritas en esta divulgación, solas o en cualquier combinación. Por ejemplo, el decodificador de vídeo 30 puede configurarse para realizar técnicas para la predicción de movimiento a nivel de sub-PU para la codificación de vídeo en 3D-HEVC.
[0198] En un ejemplo, el decodificador de vídeo 30 se puede configurar para realizar una modalidad BVSP de sub-PU para predecir una PU que incluya dos o más sub-PU. En la modalidad BVSP de sub-PU, la unidad de compensación de movimiento 72 del decodificador de vídeo 30 determina la primera información de movimiento para una PU actual que incluye al menos un vector de movimiento de disparidad y un índice de vista de referencia asociado que identifica una imagen de referencia entre vistas. La unidad de compensación de movimiento 72 luego divide la PU actual en dos o más sub-PU, y determina la segunda información de movimiento para cada una de las sub-PU, que incluye al menos un vector de movimiento de disparidad asociado a un bloque de profundidad de la imagen de referencia entre vistas correspondiente a cada una de las sub-PU. La unidad de compensación de movimiento 72 realiza la compensación de movimiento para predecir cada una de las sub-PU de la PU basándose en la segunda información de movimiento para cada una de las sub-PU. De acuerdo a las técnicas de esta divulgación, para cada PU predicha utilizando la modalidad de BVSP de sub-PU, el decodificador de vídeo 30 almacena la segunda información de movimiento obtenida para cada una de las sub-PU de la PU actual, incluso después de que se realiza la compensación de movimiento. La segunda información de movimiento puede almacenarse en el almacén temporal de imágenes decodificadas 82. La información de movimiento adicional, almacenada para la PU actual, se puede usar luego para predecir las PU posteriores, para las cuales la PU actual es un bloque vecino.
[0199] En otro ejemplo, el decodificador de vídeo 30 puede configurarse para realizar una modalidad de TMVP avanzada para predecir las sub-PU de una PU en una codificación de capa única, para la cual se puede permitir el refinamiento del vector de movimiento. En la modalidad de TMVP avanzada, la unidad de compensación de movimiento 72 del decodificador de vídeo 30 determina un vector de movimiento de primera etapa para una PU actual que identifica un bloque de una imagen de referencia correspondiente a la PU actual. La unidad de compensación de movimiento 72 luego divide la PU actual en dos o más sub-PU, y determina la información de movimiento de la segunda etapa para cada una de las sub-PU a partir del bloque de la imagen de referencia identificada por el vector de movimiento de la primera etapa, donde la información de movimiento de la segunda etapa para cada una de las sub-PU incluye al menos un vector de movimiento y un índice de referencia asociado. La unidad de compensación de movimiento 72 realiza la compensación de movimiento para predecir cada una de las sub-PU por separado, en función de la información de movimiento de la segunda etapa para cada una de las sub-PU. En algunos ejemplos, la unidad de compensación de movimiento 72 puede determinar una diferencia de vectores de movimiento para refinar el al menos un vector de movimiento de la información de movimiento de la segunda etapa para cada una de las sub-PU.
[0200] En otro ejemplo, el decodificador de vídeo 30 puede configurarse para realizar técnicas relacionadas con los procesos de filtro de desbloqueo aplicados a las CU de un bloque de vídeo que incluyen al menos una PU con múltiples sub-PU. De acuerdo a las técnicas de esta divulgación, antes de aplicar un filtro de desbloqueo a una CU del bloque de vídeo que incluye la PU con las sub-PU, la unidad de filtro 83 del decodificador de vídeo 30 convierte la CU para crear fronteras de PU artificiales o fronteras de TU artificiales en los fronteras de sub-PU. En un ejemplo, la unidad de filtro 83 convierte un árbol de transformación de la CU a fin de asociar la PU a una jerarquía de árbol de transformación y asociar cada una de las sub-PU a una TU de modo que las fronteras de sub-PU se conviertan en fronteras de TU artificiales. En otro ejemplo, la unidad de filtro 83 convierte la CU en un árbol de codificación a fin de asociar la PU a una CU y asociar cada una de las sub-PU a una PU de tal manera que las fronteras de sub-PU se conviertan en fronteras de PU artificiales. La unidad de filtro 83 luego aplica el filtro de desbloqueo a las fronteras de PU entre dos PU adyacentes de la CU y/o las fronteras de TU entre dos TU adyacentes de la CU, incluidas las fronteras de PU artificiales y las fronteras de TU artificiales.
[0201] La figura 17 es un diagrama de flujo que ilustra una operación ejemplar de predicción de una PU actual utilizando una modalidad de BVSP de sub-PU, y de almacenamiento de la información de movimiento de sub-PU determinada. La operación ilustrada se describe en esta divulgación con respecto al decodificador de vídeo 30 de la figura 16. En otros ejemplos, la operación ilustrada puede ser realizada por el codificador de vídeo 20 de la figura 15, o cualquier otro dispositivo de codificación o decodificación que funcione de acuerdo a la norma 3D-HEVC.
[0202] 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. La unidad de decodificación por entropía 70 del decodificador de vídeo 30 decodifica el flujo de bits para generar coeficientes de transformación cuantizados, información de movimiento e indicadores de modalidad de predicción y otros elementos sintácticos. La unidad de decodificación por entropía 70 envía el coeficiente de transformación cuantizado decodificado a la unidad de cuantización inversa 76 y a la unidad de procesamiento de transformación inversa 78 para reconstruir los bloques residuales de los bloques de vídeo a decodificar. La unidad de decodificación 70 envía la información de movimiento decodificada y los indicadores de modalidad de interpredicción a la unidad de compensación de movimiento 72.
[0203] La unidad de compensación de movimiento 72 predice cada PU de cada CU de los bloques de vídeo a decodifica, de acuerdo a la modalidad indicada, entre las modalidades de interpredicción de fusión o de AMVP. Por ejemplo, en la modalidad de fusión, la unidad de compensación de movimiento 72 puede generar una lista de candidatas, en modalidad de fusión, de información de movimiento, que incluye información de movimiento, es decir, vectores de movimiento e índices de referencia asociados, de bloques vecinos espaciales y temporales de la PU actual. En este caso, la información de movimiento decodificada puede incluir un índice de fusión que indica uno de los conjuntos de información de movimiento en la lista de candidatas en la modalidad de fusión, para predecir la PU actual. En la modalidad de BVSP, la lista de candidatos de la modalidad de fusión incluye un candidato especial de BVSP que tiene información de movimiento que incluye un vector de movimiento de disparidad y un índice de vista de referencia asociado, y la información de profundidad se usa para refinar la información de movimiento.
[0204] De acuerdo a las técnicas de esta divulgación, la unidad de compensación de movimiento 72 determina la primera información de movimiento para una PU actual a partir de bloques vecinos de la PU según la modalidad de BVSP en la que la primera información de movimiento incluye al menos un vector de movimiento de disparidad y un índice de vista de referencia asociado que identifica una imagen de referencia entre vistas (140). Como se ha descrito anteriormente, la unidad de compensación de movimiento 72 puede seleccionar la primera información de movimiento para la PU actual como candidata de BVSP a partir de la lista de candidatos de modalidad de fusión. En algunos casos, la primera información de movimiento para la PU actual puede incluir un vector de movimiento de disparidad correspondiente a cada una de las listas primera y segunda de imágenes de referencia.
[0205] La unidad de compensación de movimiento 72 luego divide la PU actual en dos o más sub-PU (142). La unidad de compensación de movimiento 72 determina la segunda información de movimiento para cada una de las sub-PU en las que la segunda información de movimiento incluye al menos un vector de movimiento de disparidad asociado a un bloque de profundidad de la imagen de referencia entre vistas, correspondiente a cada una de las sub-PU (144). Por ejemplo, la unidad de compensación de movimiento 72 puede seleccionar un valor máximo de los cuatro píxeles de esquina para el bloque de profundidad de la imagen de referencia entre vistas, correspondiente a cada una de las sub-PU, y convertir el valor máximo en un componente horizontal del vector de movimiento de disparidad para cada una de las sub-PU. El componente vertical del vector de movimiento de disparidad para cada una de las sub-PU es igual a cero. En algunos casos, la segunda información de movimiento para cada una de las sub-PU puede incluir un vector de movimiento de disparidad correspondiente a cada una de las listas primera y segunda de imágenes de referencia.
[0206] La unidad de compensación de movimiento 72 realiza la compensación de movimiento para predecir cada una de las sub-PU de la PU actual a partir de la imagen de referencia entre vistas, basándose en la segunda información de movimiento (146). Después de realizar la compensación de movimiento, el decodificador de vídeo 30 almacena la segunda información de movimiento para cada una de las sub-PU de la PU actual en una memoria, por ejemplo, el almacén temporal de imágenes decodificadas 82 del decodificador de vídeo 30, para ser usada para predecir las PU posteriores (148). Por ejemplo, el decodificador de vídeo 30 puede almacenar el vector de movimiento de disparidad, obtenido para cada una de las sub-PU en el almacén temporal de imágenes decodificadas 82, asociado a una lista de imágenes de referencia que incluye la imagen de referencia entre vistas, identificada por el índice de vista de referencia de la primera información de movimiento para la PU. Después de generar un bloque predictivo para cada una de las sub-PU de la PU durante la compensación de movimiento, el decodificador de vídeo 30 genera una versión reconstruida del bloque de vídeo basándose en una versión reconstruida de un bloque residual correspondiente y el bloque predictivo para cada una de las sub-PU.
[0207] Convencionalmente, en la modalidad de BVSP de la norma 3D-HEVC, después de realizar la compensación de movimiento para predecir cada una de las sub-PU, solo se almacena un único vector de movimiento de disparidad, correspondiente a cada lista de imágenes de referencia, para la PU actual. El único vector de movimiento de disparidad se almacena para cada lista de imágenes de referencia, incluso aunque la compensación de movimiento de la PU se basa en múltiples vectores de movimiento para las múltiples sub-PU de la PU. En este caso, cuando se usa la PU actual para predecir una PU posterior, se considera que las sub-PU de la PU actual tienen los mismos vectores de movimiento, de modo que la modalidad de BVSP de sub-PU tenga poco impacto en la mejora de la precisión de la predicción del vector de movimiento.
[0208] De acuerdo a las técnicas de esta divulgación, para cada PU codificada en la modalidad de BVSP de sub-PU, el decodificador de vídeo 30 almacena la segunda información de movimiento obtenida para cada una de las sub-PU de la PU actual, incluso después de que se realiza la compensación de movimiento. La información de movimiento adicional, almacenada para la Pu actual, se puede usar luego para predecir las PU posteriores, para las cuales la PU actual es un bloque vecino. Por ejemplo, la unidad de compensación de movimiento 72 puede generar una lista de candidatos, en modalidad de fusión, de información de movimiento para predecir una Pu posterior que incluye la segunda información de movimiento para al menos una de las sub-PU de la Pu almacenada en el almacén temporal de imágenes decodificadas 82 como una candidata de BVSP de sub-PU en la lista de candidatas en modalidad de fusión. En un ejemplo, si la siguiente PU se codifica en la modalidad de BVSP de sub-PU, la unidad de compensación de movimiento 72 puede no necesitar obtener la segunda información de movimiento para cada una de las sub-PU de la PU posterior. En cambio, la unidad de compensación de movimiento 72 puede, en cambio, seleccionar la segunda información de movimiento como candidata de BVSP de sub-PU de la lista de candidatas, en modalidad de fusión, de información de movimiento para predecir las sub-PU de la PU subsiguiente.
[0209] La figura 18 es un diagrama de flujo que ilustra una operación ejemplar de aplicación de un filtro de desbloqueo a cada CU de un bloque de vídeo para filtrar las fronteras de TU y las fronteras de PU, incluidas las fronteras de sub-PU dentro de la CU. El filtro de desbloqueo se aplica después de reconstruir el bloque de vídeo y antes de almacenar el bloque de vídeo en un almacén temporal de imágenes decodificadas como un bloque de una imagen de referencia. La operación ilustrada se describe en esta divulgación con respecto al decodificador de vídeo 30 de la figura 16. En otros ejemplos, la operación ilustrada se puede realizar en el bucle de reconstrucción de bloques de vídeo del codificador de vídeo 20 de la figura 15, o cualquier otro dispositivo de codificación o decodificación que utilice un diseño de sub-PU y filtros de desbloqueo.
[0210] El decodificador de vídeo 30 genera una versión reconstruida de un bloque de vídeo basándose en una versión reconstruida de un bloque residual correspondiente y un bloque predictivo (150). El bloque de vídeo incluye al menos una CU, y la CU puede incluir al menos una PU que se divide en dos o más sub-PU. Como se ha descrito anteriormente con respecto a la figura 17, la unidad de compensación de movimiento 72 del decodificador de vídeo 30 puede generar un bloque predictivo durante la compresión de vídeo para cada una de las sub-PU de la PU. Los filtros de desbloqueo para la norma HEVC no están diseñados para filtrar dentro de una PU, es decir, a lo largo de los fronteras de sub-PU, porque para los bloques de la HEVC se supone que la compensación de movimiento es la misma para toda la PU. Esta divulgación describe técnicas para convertir una PU con sub-PU en una estructura favorecedora del desbloqueo, de modo que los filtros de desbloqueo de la HEVC puedan seguir utilizándose para los bloques de la 3D-HEVC.
[0211] Antes de aplicar un filtro de desbloqueo a la CU del bloque de vídeo que incluye la PU con las dos o más sub-PU, la unidad de filtro 83 del decodificador de vídeo 30 convierte la CU para crear fronteras de PU artificiales o fronteras de TU artificiales en las fronteras de sub-PU entre dos sub-PU adyacentes de la PU (152). En un ejemplo, la unidad de filtro 83 convierte un árbol de transformación de la CU a fin de asociar la PU a una jerarquía de árbol de transformación y asociar cada una de las sub-PU a una TU de modo que las fronteras de sub-PU se conviertan en fronteras de TU artificiales. En otro ejemplo, la unidad de filtro 83 convierte la CU en un árbol de codificación a fin de asociar la PU a una CU y asociar cada una de las sub-PU a una PU de tal manera que las fronteras de sub-PU se conviertan en fronteras de Pu artificiales.
[0212] La unidad de filtro 83 luego aplica el filtro de desbloqueo a las fronteras de PU entre dos PU adyacentes de la CU y/o las fronteras de TU entre dos TU adyacentes de la CU, incluidas los fronteras de PU artificiales y las fronteras de TU artificiales (154). Después de filtrar cada una de las CU de la versión reconstruida del bloque de vídeo, la unidad de filtro 83 almacena el bloque de vídeo en el almacén temporal de imágenes decodificadas 82 como un bloque de una imagen de referencia (156).
[0213] La figura 19 es un diagrama de flujo que ilustra una operación ejemplar de una modalidad de TMVP avanzada para predecir las sub-PU de una PU en codificación de capa única. La operación ilustrada se describe en esta divulgación con respecto al decodificador de vídeo 30 de la figura 16. En otros ejemplos, la operación ilustrada puede realizarse mediante el codificador de vídeo 20 de la Figura 15, o cualquier otro dispositivo de codificación o decodificación que use un diseño de sub-PU.
[0214] 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. La unidad de decodificación por entropía 70 del decodificador de vídeo 30 decodifica el flujo de bits para generar coeficientes de transformación cuantizados, información de movimiento e indicadores de modalidad de predicción y otros elementos sintácticos. La unidad de decodificación por entropía 70 envía el coeficiente de transformación cuantizado decodificado a la unidad de cuantización inversa 76 y a la unidad de procesamiento de transformación inversa 78 para reconstruir los bloques residuales de los bloques de vídeo a decodificar. La unidad de decodificación 70 envía la información de movimiento decodificada y los indicadores de modalidad de interpredicción a la unidad de compensación de movimiento 72.
[0215] La unidad de compensación de movimiento 72 predice cada PU de cada CU de los bloques de vídeo a decodifica, de acuerdo a la modalidad indicada, entre las modalidades de interpredicción de fusión o de AMVP. Por ejemplo, en la modalidad de fusión, la unidad de compensación de movimiento 72 puede generar una lista de candidatas, en modalidad de fusión, de información de movimiento, que incluye información de movimiento, es decir, vectores de movimiento e índices de referencia asociados, de bloques vecinos espaciales y temporales de la PU actual. En este caso, la información de movimiento decodificada puede incluir un índice de fusión que indica uno de los conjuntos de información de movimiento en la lista de candidatas en la modalidad de fusión, para predecir la PU actual. En otro ejemplo, en la modalidad de AMVP, la unidad de compensación de movimiento 72 puede generar una lista de candidatos de la modalidad de AMVP que solo incluye vectores de movimiento de los bloques vecinos espaciales y temporales de la PU actual. En este caso, la información de movimiento decodificada puede incluir un índice de AMVP que indica uno de los vectores de movimiento en la lista de candidatos de la modalidad de AMVP, y también incluir un índice de referencia explícitamente señalizado y cualquier diferencia de vectores de movimiento para refinar el vector de movimiento seleccionado para predecir la Pu actual.
[0216] Convencionalmente, el diseño de sub-PU solo está habilitado para la predicción entre capas o entre vistas utilizando la modalidad de interpredicción de fusión. Esta divulgación describe una modalidad de TMVp avanzada para predecir las sub-PU de una PU en la codificación de una sola capa para la cual se puede admitir el refinamiento del vector de movimiento. En un ejemplo, para indicar el rendimiento de la modalidad de TMVP avanzada para predecir la PU actual, la unidad de compensación de movimiento 72 puede generar un candidato de TMVP avanzado en la lista de candidatos en la modalidad de fusión para la PU, donde la selección del candidato de TMVP avanzado indica el rendimiento de la modalidad de TMVP avanzado para predecir la PU.
[0217] De acuerdo a las técnicas de esta divulgación, la unidad de compensación de movimiento 72 determina un vector de movimiento de primera etapa para una PU actual a partir de bloques vecinos de la PU, que identifica un bloque de una imagen de referencia correspondiente a la PU actual (160). Como ejemplo, la unidad de compensación de movimiento 72 puede obtener el vector de movimiento de la primera etapa de los bloques adyacentes espaciales y/o los bloques vecinos temporales de la PU actual. Como otro ejemplo, la unidad de compensación de movimiento 72 puede seleccionar el vector de movimiento de la primera etapa a partir de una lista de candidatos en modalidad de fusión para la PU actual. En otros ejemplos, el vector de movimiento de la primera etapa se puede configurar para que sea un valor constante o predefinido.
[0218] La unidad de compensación de movimiento 72 luego divide la PU actual en dos o más sub-PU (162). La unidad de compensación de movimiento 72 determina la información de movimiento de la segunda etapa para cada una de las sub-PU a partir del bloque de la imagen de referencia identificada por el vector de movimiento de la primera etapa, donde la información de movimiento de la segunda etapa, para cada una de las sub-PU, incluye al menos un vector de movimiento y un índice de referencia asociado (164). En algunos casos, la información de movimiento de la segunda etapa para cada una de las sub-PU puede incluir un vector de movimiento correspondiente a cada una de las listas primera y segunda de imágenes de referencia. En el caso de que al menos uno de los vectores de movimiento de la información de movimiento de la segunda etapa para una de las sub-PU no esté disponible, la unidad de compensación de movimiento 72 puede usar un vector de movimiento representativo, tal como el vector de movimiento de la primera etapa, para el vector de las sub-PU.
[0219] En algunos ejemplos, en lugar de operar únicamente en la modalidad de fusión, se puede habilitar el refinamiento del vector de movimiento, similar a la modalidad de AMVP. Por ejemplo, la unidad de compensación de movimiento 72 puede determinar los datos de refinamiento de movimiento para la PU actual predicha utilizando la modalidad de TMVP avanzada. En un caso, la unidad de compensación de movimiento 72 puede determinar una diferencia de vectores de movimiento aplicable a la información de movimiento de la segunda etapa para una o más de las sub-PU. Como se ha descrito anteriormente, la diferencia de vectores de movimiento se puede señalizar en la información de movimiento incluida en el flujo de bits de vídeo codificado. En este ejemplo, para indicar el rendimiento de la modalidad de TMVP avanzada utilizando los datos de refinamiento de movimiento para predecir la PU actual, la unidad de compensación de movimiento 72 puede generar un candidato de TMVP avanzada en la lista de candidatos en modalidad de AMVP para la PU, donde la selección del candidato de TMVP avanzada indica el rendimiento de la modalidad de TMVP avanzada utilizando los datos de refinamiento de movimiento para predecir la PU.
[0220] La unidad de compensación de movimiento 72 realiza la compensación de movimiento para predecir cada una de las sub-PU por separado, basándose en la información de movimiento de la segunda etapa para cada una de las sub-PU (166). Después de generar un bloque predictivo para cada una de las sub-PU de la PU durante la compensación de movimiento, el decodificador de vídeo 30 genera una versión reconstruida del bloque de vídeo basándose en una versión reconstruida de un bloque residual correspondiente y el bloque predictivo para cada una de las sub-PU.
[0221] En uno o más ejemplos, las funciones descritas pueden implementarse en hardware, software, firmware o cualquier combinación de los mismos. Si se implementan en software, las funciones se pueden almacenar en, o transmitir por, un medio legible por ordenador, como una o más instrucciones o código, y ejecutarse mediante una unidad de procesamiento basada en hardware. Los medios legibles por ordenador pueden incluir medios de almacenamiento legibles por ordenador, que correspondan a un medio tangible tal como medios de almacenamiento de datos o medios de comunicación que incluyan cualquier medio que facilite la transferencia de un programa informático desde un lugar a otro, por ejemplo, de acuerdo a 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 (2) un medio de comunicación tal como una señal o una onda portadora. Los medios de almacenamiento de datos pueden ser medios disponibles cualesquiera a los que se pueda acceder desde uno o más ordenadores o uno o más procesadores para recuperar instrucciones, código y/o estructuras de datos para la implementación de las técnicas descritas en esta divulgación. Un producto de programa informático puede incluir un medio legible por ordenador.
[0222] A modo de ejemplo, y no de manera limitativa, tales medios de almacenamiento legibles por ordenador pueden comprender RAM, ROM, EEPROM, CD-ROM u otro almacenamiento de disco óptico, almacenamiento de disco magnético u otros dispositivos de almacenamiento magnético, memoria flash o cualquier otro medio que pueda usarse para almacenar código de programa deseado en forma de instrucciones o estructuras de datos y al que pueda accederse mediante un ordenador. Además, cualquier conexión recibe debidamente la denominación de medio legible por ordenador. Por ejemplo, si las instrucciones se transmiten desde una sede de la Red, un servidor u otro origen remoto usando un cable coaxial, un cable de fibra óptica, un par trenzado, una línea de abonado digital (DSL) o tecnologías inalámbricas tales como infrarrojos, radio y microondas, entonces el cable coaxial, el cable de fibra óptica, el par trenzado, la DSL o las tecnologías inalámbricas tales como infrarrojos, radio y microondas se incluyen en la definición de medio. Sin embargo, debería entenderse que los medios de almacenamiento legibles por ordenador y los medios de almacenamiento de datos no incluyen conexiones, ondas portadoras, señales u otros medios transitorios, sino que, en cambio, se orientan a medios de almacenamiento tangibles no transitorios. El término disco, como se usa en el presente documento, incluye un disco compacto (CD), un disco láser, un disco óptico, un disco versátil digital (DVD), un disco flexible y un disco Blu-ray, donde algunos discos normalmente emiten datos magnéticamente, mientras que otros discos emiten datos ópticamente con láseres. Las combinaciones de los anteriores también deberían incluirse dentro del alcance de los medios legibles por ordenador.
[0223] Las instrucciones pueden ser ejecutadas por uno o más procesadores, tales como uno o más procesadores de señales digitales (DSP), microprocesadores de propósito general, circuitos integrados específicos de la aplicación (ASIC), formaciones de compuertas programables in situ (FPGA) u otros circuitos lógicos, integrados o discretos, equivalentes. En consecuencia, el término "procesador", como se usa en el presente documento, se puede referir a cualquiera de las estructuras anteriores o a cualquier otra estructura adecuada para la implementación de las técnicas descritas en el presente documento. Además, en algunos aspectos, la funcionalidad descrita en el presente documento se puede proporcionar dentro de módulos de hardware y/o software dedicados, configurados para la codificación y la decodificación, o incorporados en un códec combinado. Además, las técnicas se podrían implementar totalmente en uno o más circuitos o elementos lógicos.
[0224] Las técnicas de la presente divulgación se pueden implementar en una amplia variedad de dispositivos o aparatos, incluidos un equipo manual inalámbrico, un circuito integrado (CI) o un conjunto de CI (por ejemplo, un conjunto de chips). Diversos componentes, módulos o unidades se describen en esta divulgación para enfatizar aspectos funcionales de dispositivos configurados para realizar las técnicas divulgadas, pero no requieren necesariamente su realización mediante diferentes unidades de hardware. En cambio, como se ha descrito anteriormente, diversas unidades se pueden combinar en una unidad de hardware de códec, o ser proporcionadas por un grupo de unidades de hardware interoperativas, incluyendo uno o más procesadores, como se ha descrito anteriormente, conjuntamente con software y/o firmware adecuados.
[0225] Se han descrito diversos ejemplos. Estos y otros ejemplos están dentro del alcance de las siguientes reivindicaciones.

Claims (14)

  1. REIVINDICACIONES
    i . Un procedimiento para procesar datos de vídeo en una modalidad avanzada de predicción de vectores de movimiento temporal (TMVP), comprendiendo el procedimiento de la modalidad de TMVP avanzada:
    como una primera etapa de la modalidad de TMVP avanzada, determinar un vector de movimiento de primera etapa para una unidad de predicción (PU) actual (173) de una unidad de codificación (CU) de los datos de vídeo, obteniendo el vector de movimiento de primera etapa a partir de bloques adyacentes espaciales y/o bloques vecinos temporales de la PU actual (160), en donde el vector de movimiento de la primera etapa identifica un bloque (174) de una imagen de referencia, en donde el bloque corresponde a la PU actual y tiene el mismo tamaño que la PU actual y en donde una CU puede contener una o más PU;
    dividir la PU actual en dos o más sub-PU, en donde las sub-PU de la PU actual tienen sub-PU correspondientes en el bloque correspondiente de la imagen de referencia (162), y en donde al menos algunas de las sub-PU del correspondiente bloque tienen, cada una, un conjunto asociado de información de movimiento;
    como una segunda etapa de la modalidad de TMVP avanzada, extraer la información de movimiento de las sub-PU del bloque de la imagen de referencia y asignar cada conjunto de información de movimiento, como información de movimiento de la segunda etapa, a la correspondiente sub-PU de la PU actual (164), en donde la información de movimiento de la segunda etapa para cada una de las sub-PU incluye al menos un vector de movimiento y un índice de referencia asociado; y
    realizar la compensación de movimiento para cada una de las sub-PU por separado, basándose en la información de movimiento de la segunda etapa para cada una de las sub-PU (166).
  2. 2. El procedimiento de la reivindicación 1, en el que determinar el vector de movimiento de la primera etapa para la PU actual comprende seleccionar el vector de movimiento de la primera etapa de una lista de candidatos en modalidad de fusión para la PU actual.
  3. 3. El procedimiento de la reivindicación 1, en el que el procedimiento comprende además la generación de un candidato de TMVP avanzada en una lista de candidatos en modalidad de fusión para la PU actual, en donde la selección del candidato de TMVP avanzada indica el rendimiento de la modalidad de TMVP avanzada para predecir la PU actual.
  4. 4. El procedimiento de la reivindicación 1, que comprende además, basándose en no estar disponible el al menos un vector de movimiento de la información de movimiento de la segunda etapa para una de las sub-PU correspondientes, usar un vector de movimiento representativo para la respectiva sub-PU de la PU actual, en donde el vector de movimiento representativo comprende el vector de movimiento de la primera etapa.
  5. 5. El procedimiento de la reivindicación 1, que comprende además determinar datos de refinamiento de movimiento para la PU actual.
  6. 6. El procedimiento de la reivindicación 5, en el que determinar los datos de refinamiento de movimiento comprende determinar una única diferencia de vectores de movimiento para la PU actual, para refinar la información de movimiento de la segunda etapa para cada una de las sub-PU de la PU actual.
  7. 7. El procedimiento de la reivindicación 5, en el que determinar los datos de refinamiento de movimiento comprende determinar una diferencia de vectores de movimiento diferente para la información de movimiento de la segunda etapa, para cada una de las sub-PU de la PU actual.
  8. 8. El procedimiento de la reivindicación 5, que además comprende generar un candidato de TMVP avanzada en una lista de candidatos en modalidad de predicción avanzada de vectores de movimiento (AMVP) para la PU actual, en donde la selección del candidato de TMVP avanzada indica que la modalidad de TMVP avanzada se realiza usando los datos de refinamiento de movimiento para predecir la PU actual.
  9. 9. El procedimiento de la reivindicación 1, que comprende además:
    generar un bloque predictivo para cada una de las sub-PU de la PU actual basándose en la segunda información de movimiento;
    generar un bloque residual basándose en el bloque de vídeo y el bloque predictivo para cada una de las sub-PU de la PU actual; y
    codificar el bloque residual y un indicador de al menos el vector de movimiento de la primera etapa de movimiento para la PU actual en un flujo de bits de vídeo.
  10. 10. El procedimiento de la reivindicación 1, que comprende además:
    decodificar un bloque residual y un indicador de al menos el vector de movimiento de la primera etapa para la PU actual a partir de un flujo de bits de vídeo recibido;
    generar un bloque predictivo para cada una de las sub-PU de la PU actual basándose en la segunda información de movimiento; y
    generar una versión reconstruida del bloque de vídeo basándose en el bloque residual y el bloque predictivo para cada una de las sub-PU de la PU actual.
  11. 11. Un dispositivo de procesamiento de vídeo (20, 30) para procesar datos de vídeo en una modalidad avanzada de predicción de vectores de movimiento temporal (TMVP), comprendiendo el dispositivo:
    una memoria (41, 71) configurada para almacenar datos de vídeo; y
    uno o más procesadores en comunicación con la memoria, y configurados para:
    como primera etapa de la modalidad de TMVP avanzada, determinar un vector de movimiento de primera etapa para una unidad de predicción actual (PU) (173) de una unidad de codificación (CU) de los datos de vídeo, obteniendo el vector de movimiento de primera etapa de bloques adyacentes espaciales y/o bloques vecinos temporales de la PU actual, en donde el vector de movimiento de la primera etapa identifica un bloque (174) de una imagen de referencia, en donde el bloque corresponde a la PU actual, y tiene el mismo tamaño que la PU actual, y en donde una CU puede contener una o más PU,
    dividir (162) la PU actual en dos o más sub-PU, de modo que cada sub-PU de la PU actual tenga sub-PU correspondientes en el bloque correspondiente de la imagen de referencia, y en donde al menos algunas de las sub-PU del bloque correspondiente tienen, cada una, un conjunto asociado de información de movimiento,
    como segunda etapa de la modalidad de TMVP avanzada, extraer la información de movimiento de las sub-PU del bloque de la imagen de referencia y asignar cada conjunto de información de movimiento, como información de movimiento de la segunda etapa, a la correspondiente sub-PU de la PU actual (173), en donde la información de movimiento de la segunda etapa para cada una de las sub-PU incluye al menos un vector de movimiento y un índice de referencia asociado, y
    realizar la compensación de movimiento para cada una de las sub-PU por separado, basándose en la información de movimiento de la segunda etapa para cada una de las sub-PU.
  12. 12. El aparato de la reivindicación 11, en el que el dispositivo de procesamiento de vídeo comprende un dispositivo codificador de vídeo, y en el que los uno o más procesadores están configurados para:
    generar un bloque predictivo para cada una de las sub-PU de la PU actual basándose en la segunda información de movimiento;
    generar un bloque residual basándose en el bloque de vídeo y el bloque predictivo para cada una de las sub-PU de la PU actual; y
    codificar el bloque residual y un indicador de al menos el vector de movimiento de la primera etapa de movimiento para la PU actual en un flujo de bits de vídeo.
  13. 13. El aparato de la reivindicación 11, en el que el dispositivo de procesamiento de vídeo comprende un dispositivo decodificador de vídeo, y en el que los uno o más procesadores están configurados para:
    decodificar un bloque residual y un indicador de al menos el vector de movimiento de la primera etapa para la PU actual a partir de un flujo de bits de vídeo recibido;
    generar un bloque predictivo para cada una de las sub-PU de la PU actual basándose en la segunda información de movimiento; y
    generar una versión reconstruida del bloque de vídeo basándose en el bloque residual y el bloque predictivo para cada una de las sub-PU de la PU actual.
  14. 14. Un medio de almacenamiento legible por ordenador que almacena instrucciones para procesar datos de vídeo que, cuando son ejecutadas, hacen que uno o más procesadores realicen el procedimiento de cualquiera de las reivindicaciones 1 a 10.
ES14782054T 2013-09-26 2014-09-26 Predicción de vector de movimiento temporal basada en subunidad de predicción (PU) en la HEVC y diseño de sub-PU en la 3d-hevc Active ES2732013T3 (es)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201361883111P 2013-09-26 2013-09-26
US14/497,128 US9762927B2 (en) 2013-09-26 2014-09-25 Sub-prediction unit (PU) based temporal motion vector prediction in HEVC and sub-PU design in 3D-HEVC
PCT/US2014/057739 WO2015048459A1 (en) 2013-09-26 2014-09-26 Sub-prediction unit (pu) based temporal motion vector prediction in hevc and sub-pu design in 3d-hevc

Publications (1)

Publication Number Publication Date
ES2732013T3 true ES2732013T3 (es) 2019-11-20

Family

ID=52690922

Family Applications (1)

Application Number Title Priority Date Filing Date
ES14782054T Active ES2732013T3 (es) 2013-09-26 2014-09-26 Predicción de vector de movimiento temporal basada en subunidad de predicción (PU) en la HEVC y diseño de sub-PU en la 3d-hevc

Country Status (10)

Country Link
US (1) US9762927B2 (es)
EP (1) EP3050296B1 (es)
JP (1) JP6545667B2 (es)
KR (1) KR101967967B1 (es)
CN (1) CN105580364B (es)
BR (1) BR112016006574B8 (es)
CA (1) CA2922410C (es)
ES (1) ES2732013T3 (es)
HU (1) HUE043882T2 (es)
WO (1) WO2015048459A1 (es)

Families Citing this family (76)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9667996B2 (en) 2013-09-26 2017-05-30 Qualcomm Incorporated Sub-prediction unit (PU) based temporal motion vector prediction in HEVC and sub-PU design in 3D-HEVC
US10038919B2 (en) * 2014-05-29 2018-07-31 Apple Inc. In loop chroma deblocking filter
JP2017520994A (ja) * 2014-06-20 2017-07-27 寰發股▲ふん▼有限公司HFI Innovation Inc. 3dおよびマルチビュービデオコーディングのサブpu構文シグナリングおよび照明補償方法
US10455231B2 (en) * 2014-09-30 2019-10-22 Hfi Innovation Inc. Method of adaptive motion vector resolution for video coding
US11477477B2 (en) * 2015-01-26 2022-10-18 Qualcomm Incorporated Sub-prediction unit based advanced temporal motion vector prediction
WO2016124711A1 (en) * 2015-02-05 2016-08-11 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. 3d-video codec supporting inter-component prediction
US11330284B2 (en) * 2015-03-27 2022-05-10 Qualcomm Incorporated Deriving motion information for sub-blocks in video coding
KR20180006411A (ko) * 2015-06-07 2018-01-17 엘지전자 주식회사 디블록킹 필터링을 수행하는 방법 및 장치
US10271064B2 (en) * 2015-06-11 2019-04-23 Qualcomm Incorporated Sub-prediction unit motion vector prediction using spatial and/or temporal motion information
WO2017205700A1 (en) * 2016-05-25 2017-11-30 Arris Enterprises Llc Binary, ternary and quad tree partitioning for jvet coding of video data
US10721489B2 (en) 2016-09-06 2020-07-21 Qualcomm Incorporated Geometry-based priority for the construction of candidate lists
US10477238B2 (en) 2016-09-07 2019-11-12 Qualcomm Incorporated Sub-PU based bi-directional motion compensation in video coding
CN109891892A (zh) * 2016-10-11 2019-06-14 Lg 电子株式会社 依赖于图像编译系统中的帧内预测的图像解码方法和装置
CN109983773A (zh) * 2016-11-29 2019-07-05 联发科技股份有限公司 用于合并模式推导的视频编解码方法和装置
JP6565885B2 (ja) * 2016-12-06 2019-08-28 株式会社Jvcケンウッド 画像符号化装置、画像符号化方法及び画像符号化プログラム、並びに画像復号化装置、画像復号化方法及び画像復号化プログラム
US20200084441A1 (en) * 2017-03-22 2020-03-12 Electronics And Telecommunications Research Institute Prediction method and device using reference block
US10582209B2 (en) 2017-03-30 2020-03-03 Mediatek Inc. Sub-prediction unit temporal motion vector prediction (sub-PU TMVP) for video coding
US10523934B2 (en) * 2017-05-31 2019-12-31 Mediatek Inc. Split based motion vector operation reduction
EP3451665A1 (en) * 2017-09-01 2019-03-06 Thomson Licensing Refinement of internal sub-blocks of a coding unit
JP2021010046A (ja) * 2017-10-06 2021-01-28 シャープ株式会社 画像符号化装置及び画像復号装置
EP3682635A1 (en) * 2017-10-09 2020-07-22 Huawei Technologies Co., Ltd. Memory access window for sub prediction block motion vector derivation
WO2019089933A1 (en) * 2017-11-01 2019-05-09 Vid Scale, Inc. Sub-block motion derivation and decoder-side motion vector refinement for merge mode
US11750832B2 (en) * 2017-11-02 2023-09-05 Hfi Innovation Inc. Method and apparatus for video coding
US10623746B2 (en) * 2017-12-07 2020-04-14 Tencent America LLC Method and apparatus for video coding
WO2019146718A1 (ja) * 2018-01-29 2019-08-01 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ 符号化装置、復号装置、符号化方法及び復号方法
CN117041593A (zh) * 2018-03-14 2023-11-10 Lx 半导体科技有限公司 图像编码/解码方法、存储介质和发送方法
CN112204966A (zh) * 2018-03-27 2021-01-08 株式会社Kt 视频信号处理方法和装置
CN118042167A (zh) * 2018-03-29 2024-05-14 艾锐势有限责任公司 用于对hdr内容进行去方块的系统和方法
EP3764643B1 (en) 2018-04-01 2023-05-31 LG Electronics, Inc. Image processing method based on inter prediction mode, and device therefor
CN117294837A (zh) * 2018-04-02 2023-12-26 深圳市大疆创新科技有限公司 用于图像处理的方法和图像处理装置
EP3791581A1 (en) * 2018-05-07 2021-03-17 InterDigital VC Holdings, Inc. Data dependency in encoding/decoding
WO2019234600A1 (en) 2018-06-05 2019-12-12 Beijing Bytedance Network Technology Co., Ltd. Interaction between pairwise average merging candidates and intra-block copy (ibc)
WO2019234674A1 (en) * 2018-06-07 2019-12-12 Beijing Bytedance Network Technology Co., Ltd. Integer motion compensation
CN113115046A (zh) 2018-06-21 2021-07-13 北京字节跳动网络技术有限公司 分量相关的子块分割
WO2019244117A1 (en) 2018-06-21 2019-12-26 Beijing Bytedance Network Technology Co., Ltd. Unified constrains for the merge affine mode and the non-merge affine mode
TWI719519B (zh) 2018-07-02 2021-02-21 大陸商北京字節跳動網絡技術有限公司 對於dmvr的塊尺寸限制
CN117956139A (zh) * 2018-08-17 2024-04-30 寰发股份有限公司 视频编解码的帧间预测方法及装置
KR102162998B1 (ko) * 2018-08-28 2020-10-07 인하대학교 산학협력단 Hevc 인코더에서 움직임 예측의 병렬처리 이후 발생하는 표준 amvp 생성 시간 단축 방법 및 장치
KR102359877B1 (ko) * 2018-08-29 2022-02-08 베이징 다지아 인터넷 인포메이션 테크놀로지 컴퍼니 리미티드 서브블록 기반 시간적 모션 벡터 예측을 사용한 비디오 코딩의 방법 및 장치
EP3849196A4 (en) * 2018-09-05 2021-10-27 Panasonic Intellectual Property Corporation of America ENCODING DEVICE, DECODING DEVICE, ENCODING METHOD, AND DECODING METHOD
US11665365B2 (en) * 2018-09-14 2023-05-30 Google Llc Motion prediction coding with coframe motion vectors
TWI818086B (zh) 2018-09-24 2023-10-11 大陸商北京字節跳動網絡技術有限公司 擴展Merge預測
WO2020084475A1 (en) 2018-10-22 2020-04-30 Beijing Bytedance Network Technology Co., Ltd. Utilization of refined motion vector
CN111083484A (zh) 2018-10-22 2020-04-28 北京字节跳动网络技术有限公司 基于子块的预测
CN112970262B (zh) 2018-11-10 2024-02-20 北京字节跳动网络技术有限公司 三角预测模式中的取整
CN111436227B (zh) 2018-11-12 2024-03-29 北京字节跳动网络技术有限公司 在视频处理中使用组合帧间-帧内预测
CN113170171B (zh) 2018-11-20 2024-04-12 北京字节跳动网络技术有限公司 组合帧间帧内预测模式的预测细化
WO2020103852A1 (en) 2018-11-20 2020-05-28 Beijing Bytedance Network Technology Co., Ltd. Difference calculation based on patial position
WO2020108650A1 (en) 2018-11-29 2020-06-04 Beijing Bytedance Network Technology Co., Ltd. Flag indication method in intra block copy mode
CN113261294A (zh) * 2019-01-02 2021-08-13 Lg 电子株式会社 基于sbtmvp的帧间预测方法和设备
US10869050B2 (en) * 2019-02-09 2020-12-15 Tencent America LLC Method and apparatus for video coding
WO2020164577A1 (en) 2019-02-14 2020-08-20 Beijing Bytedance Network Technology Co., Ltd. Selective application of decoder side refining tools
CN113545085A (zh) 2019-03-03 2021-10-22 北京字节跳动网络技术有限公司 基于图片头中的信息启用dmvr
KR102635518B1 (ko) 2019-03-06 2024-02-07 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 변환된 단예측 후보의 사용
WO2020190655A1 (en) * 2019-03-15 2020-09-24 Interdigital Vc Holdings, Inc. Method and device for image encoding and decoding
CN118075479A (zh) 2019-03-21 2024-05-24 Sk电信有限公司 编解码视频数据的当前块的设备及发送视频数据的设备
CN113647099B (zh) 2019-04-02 2022-10-04 北京字节跳动网络技术有限公司 解码器侧运动矢量推导
US20220014775A1 (en) * 2019-05-02 2022-01-13 Xris Corporation Method for encoding/decoding video signal and device therefor
JP7431253B2 (ja) 2019-05-16 2024-02-14 北京字節跳動網絡技術有限公司 動き情報精緻化のサブ領域に基づいた決定
CN113966616B (zh) 2019-06-04 2023-11-14 北京字节跳动网络技术有限公司 使用临近块信息的运动候选列表构建
JP7425808B2 (ja) 2019-06-04 2024-01-31 北京字節跳動網絡技術有限公司 動き候補リスト構築プロセスの条件付き実行
US20220232219A1 (en) * 2019-06-11 2022-07-21 Lg Electronics Inc. Image or video coding based on temporal motion information in units of subblocks
WO2020251319A1 (ko) * 2019-06-13 2020-12-17 엘지전자 주식회사 Sbtmvp를 이용한 인터 예측 기반 영상 또는 비디오 코딩
KR102630798B1 (ko) * 2019-06-13 2024-01-29 엘지전자 주식회사 Sbtmvp 기반 영상 또는 비디오 코딩
MX2021015276A (es) 2019-06-13 2022-02-21 Lg Electronics Inc Codificacion de imagenes o video a base de candidatos a vector de movimiento temporales de unidades de subbloque.
CN114175636B (zh) * 2019-07-14 2024-01-12 北京字节跳动网络技术有限公司 自适应参数集中的自适应环路滤波的指示
CN117499625A (zh) 2019-09-01 2024-02-02 北京字节跳动网络技术有限公司 视频编解码中预测权重的对准
CN114503568A (zh) * 2019-09-24 2022-05-13 华为技术有限公司 子图像的去块效应滤波标志
WO2021057771A1 (en) * 2019-09-24 2021-04-01 Mediatek Inc. Method and apparatus of separated coding tree coding with constraints on minimum cu size
CN117596389A (zh) 2019-09-28 2024-02-23 北京字节跳动网络技术有限公司 视频编解码中的几何分割模式
CN114788274A (zh) * 2019-10-10 2022-07-22 北京达佳互联信息技术有限公司 利用三角分区的视频编解码方法和装置
WO2021068921A1 (en) * 2019-10-10 2021-04-15 Beijing Bytedance Network Technology Co., Ltd. Motion vector handling in geometry partition mode
CN114556918A (zh) 2019-10-12 2022-05-27 北京字节跳动网络技术有限公司 细化视频编解码工具的使用和信令
CN116233470B (zh) * 2020-02-04 2024-01-09 华为技术有限公司 指示高级语法的编码器、解码器以及对应方法
WO2021196231A1 (zh) * 2020-04-03 2021-10-07 Oppo广东移动通信有限公司 变换方法、编码器、解码器以及存储介质
EP3972278A1 (en) 2020-09-17 2022-03-23 Lemon Inc. Subpicture tracks in coded video

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030235250A1 (en) 2002-06-24 2003-12-25 Ankur Varma Video deblocking
US20060002474A1 (en) 2004-06-26 2006-01-05 Oscar Chi-Lim Au Efficient multi-block motion estimation for video compression
US7720154B2 (en) * 2004-11-12 2010-05-18 Industrial Technology Research Institute System and method for fast variable-size motion estimation
JP4999859B2 (ja) * 2006-10-30 2012-08-15 日本電信電話株式会社 予測参照情報生成方法、動画像符号化及び復号方法、それらの装置、及びそれらのプログラム並びにプログラムを記録した記憶媒体
JP4977094B2 (ja) * 2008-06-25 2012-07-18 株式会社東芝 画像符号化方法
US20120113326A1 (en) 2010-11-04 2012-05-10 Stmicroelectronics, Inc. System and method for detecting motion vectors in a recursive hierarchical motion estimation system using a non-rasterized scan
WO2012096614A2 (en) 2011-01-14 2012-07-19 Telefonaktiebolaget L M Ericsson (Publ) A method for filter control and a filtering control device
CN103416064A (zh) * 2011-03-18 2013-11-27 索尼公司 图像处理设备、图像处理方法和程序
US9247266B2 (en) * 2011-04-18 2016-01-26 Texas Instruments Incorporated Temporal motion data candidate derivation in video coding
US9736489B2 (en) * 2011-09-17 2017-08-15 Qualcomm Incorporated Motion vector determination for video coding
US20140241434A1 (en) 2011-10-11 2014-08-28 Mediatek Inc Method and apparatus of motion and disparity vector derivation for 3d video coding and hevc
EP2769549A1 (en) * 2011-10-21 2014-08-27 Dolby Laboratories Licensing Corporation Hierarchical motion estimation for video compression and motion analysis
US20130114717A1 (en) * 2011-11-07 2013-05-09 Qualcomm Incorporated Generating additional merge candidates
US20130188715A1 (en) * 2012-01-09 2013-07-25 Qualcomm Incorporated Device and methods for merge list reordering in video coding
CN102984521B (zh) * 2012-12-12 2015-04-08 四川大学 基于时域相关性的高性能视频编码帧间模式判决方法
WO2014166068A1 (en) * 2013-04-09 2014-10-16 Mediatek Inc. Refinement of view synthesis prediction for 3-d video coding
US9948915B2 (en) 2013-07-24 2018-04-17 Qualcomm Incorporated Sub-PU motion prediction for texture and depth coding
US9667996B2 (en) 2013-09-26 2017-05-30 Qualcomm Incorporated Sub-prediction unit (PU) based temporal motion vector prediction in HEVC and sub-PU design in 3D-HEVC

Also Published As

Publication number Publication date
KR20160058824A (ko) 2016-05-25
BR112016006574B8 (pt) 2023-02-14
CN105580364A (zh) 2016-05-11
US9762927B2 (en) 2017-09-12
EP3050296A1 (en) 2016-08-03
HUE043882T2 (hu) 2019-09-30
BR112016006574A2 (pt) 2017-08-01
CA2922410A1 (en) 2015-04-02
US20150085929A1 (en) 2015-03-26
CA2922410C (en) 2019-09-17
JP6545667B2 (ja) 2019-07-17
WO2015048459A1 (en) 2015-04-02
EP3050296B1 (en) 2019-03-20
JP2016537839A (ja) 2016-12-01
BR112016006574B1 (pt) 2023-01-31
KR101967967B1 (ko) 2019-04-10
CN105580364B (zh) 2019-02-15

Similar Documents

Publication Publication Date Title
ES2732013T3 (es) Predicción de vector de movimiento temporal basada en subunidad de predicción (PU) en la HEVC y diseño de sub-PU en la 3d-hevc
ES2753958T3 (es) Predicción de vector de movimiento temporal basada en subunidad de predicción (PU) en la HEVC y diseño de sub-PU en la 3D-HEVC
ES2841312T3 (es) Predicción de vectores de movimiento para modelos de movimiento afines en codificación de vídeo
ES2755573T3 (es) Predicción de vector de movimiento temporal avanzada basada en unidades de subpredicción
ES2895270T3 (es) Codificación de mensajes SEI de MCTS-EIS de una unidad de acceso
ES2739690T3 (es) Codificación en modo paleta para codificación de vídeo
ES2702909T3 (es) Cuantización de los píxeles de escape de un bloque de vídeo en modo de codificación de paleta
ES2736280T3 (es) Simplificaciones en la obtención de vectores de disparidad y la predicción de vectores de movimiento en codificación de vídeo 3D
ES2686936T3 (es) Códec 3DVC basado en MVC que soporta el modo de predicción de movimiento de visualización interna (IVMP)
JP6535673B2 (ja) 非対称動き分割を使用するビデオコーディング技法
ES2742026T3 (es) Determinación de vector de movimiento para codificación de vídeo
ES2648312T3 (es) Relleno de píxeles de borde para intra-predicción en codificación de vídeo
ES2638416T3 (es) Predicción residual avanzada (ARP) más precisa para la codificación de texturas
ES2633150T3 (es) Predicción de vectores de movimiento en codificación de vídeo
ES2745282T3 (es) Extensión del patrón de minicuñas para la intracodificación de profundidad
ES2704885T3 (es) Derivación del vector de disparidad de bloque vecino en codificación de vídeo 3D
ES2700281T3 (es) Control de la herencia de parámetros de movimiento (MPI) de la subunidad de predicción (SUB-PU) en la HEVC tridimensional (3D) u otra codificación tridimensional
BR112015032150B1 (pt) Intra-predição a partir de bloco preditivo
ES2711954T3 (es) Dispositivo y procedimiento para codificación escalable de información de vídeo basándose en codificación de vídeo de alta eficiencia
BR112016000866B1 (pt) Processamento de compensação de iluminação para codificação de vídeo
TW201340724A (zh) 視訊寫碼中之像差向量預測
KR20150139953A (ko) 백워드 뷰 합성 예측
KR20150132505A (ko) 스킵 및 직접 모드들에 대한 3d 비디오 코딩에서의 디스패리티 벡터 유도
ES2703062T3 (es) Síntesis de visualización en vídeo 3D
BR112020025982A2 (pt) sinalização de preditor de vetor de movimento de unidade de subpredição