ES2669399T3 - Vector de movimiento predicho entre visualizaciones para vídeo 3D - Google Patents

Vector de movimiento predicho entre visualizaciones para vídeo 3D Download PDF

Info

Publication number
ES2669399T3
ES2669399T3 ES13753249.5T ES13753249T ES2669399T3 ES 2669399 T3 ES2669399 T3 ES 2669399T3 ES 13753249 T ES13753249 T ES 13753249T ES 2669399 T3 ES2669399 T3 ES 2669399T3
Authority
ES
Spain
Prior art keywords
list
motion vector
reference image
poc
reference images
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
ES13753249.5T
Other languages
English (en)
Inventor
Ying Chen
Li Zhang
Marta Karczewicz
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Qualcomm Inc filed Critical Qualcomm Inc
Application granted granted Critical
Publication of ES2669399T3 publication Critical patent/ES2669399T3/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/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
    • H04N13/00Stereoscopic video systems; Multi-view video systems; Details thereof
    • H04N13/10Processing, recording or transmission of stereoscopic or multi-view image signals
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N13/00Stereoscopic video systems; Multi-view video systems; Details thereof
    • H04N13/10Processing, recording or transmission of stereoscopic or multi-view image signals
    • H04N13/106Processing image signals
    • H04N13/161Encoding, multiplexing or demultiplexing different image signal components
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/105Selection of the reference unit for prediction within a chosen coding or prediction mode, e.g. adaptive choice of position and number of pixels used for prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/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
    • 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

Landscapes

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

Abstract

Un procedimiento de descodificación de datos de vídeo de múltiples visualizaciones, comprendiendo el procedimiento: determinar (190), para un bloque actual (140) en una visualización actual (V1), un bloque correspondiente (142) en una visualización de referencia (V0) usando un vector de disparidad para el bloque actual; determinar (191) una primera dirección, X, para un vector de movimiento actual del bloque actual, en el que la primera dirección corresponde a una de una primera lista de imágenes de referencia (Lista 0) o una segunda lista de imágenes de referencia (Lista 1); determinar (192) un primer valor de recuento de orden de imágenes, POC, de una primera imagen de referencia referenciada por un índice de referencia asociado con un primer vector de movimiento del bloque correspondiente que apunta en la primera dirección, mvLX,; determinar (193) si una primera lista de imágenes de referencia, ListX, para el bloque actual incluye una imagen de referencia que tiene el primer valor de POC en el que la primera lista de imágenes de referencia corresponde a la primera dirección; en respuesta a la primera lista de imágenes de referencia que incluye la imagen de referencia que tiene el primer valor de POC, añadir un candidato de fusión de un vector X de movimiento predicho entre visualizaciones a una lista de candidatos de fusión, con el candidato de fusión de vector X de movimiento predicho entre visualizaciones que comprende un índice de imagen de referencia correspondiente a la imagen de referencia en la primera lista de imágenes de referencia, ListX, que tiene el primer valor de POC y que comprende el primer vector de movimiento, mvLX; en respuesta a la primera lista de imágenes de referencia, ListX, no incluir la imagen de referencia que tiene el primer valor de POC: determinar (194) un segundo valor de POC de una segunda imagen de referencia referenciada por un índice de referencia asociado con un segundo vector de movimiento del bloque correspondiente que apunta en una segunda dirección, mvLY, en el que la segunda dirección, Y, es diferente de la primera dirección, X, en el que la segunda dirección corresponde a la otra, ListaY, de la primera lista de imágenes de referencia y la segunda lista de imágenes de referencia; determinar (196) si la primera lista de imágenes de referencia, ListX, para el bloque actual incluye una imagen de referencia que tiene el segundo valor de POC; y en respuesta a la primera lista de imágenes de referencia que incluye la imagen de referencia que tiene el segundo valor de POC, añadir un candidato de fusión de vector X de movimiento predicho entre visualizaciones a la lista de candidatos de fusión, con el candidato de fusión de vector X de movimiento predicho entre visualizaciones que comprende un índice de imagen de referencia correspondiente a la imagen de referencia en la primera lista de imágenes de referencia, ListX, que tiene el segundo valor de POC y que comprende el segundo vector de movimiento, mvLY; y descodificar un valor de índice, en el que el valor de índice corresponde al candidato de fusión; y predecir el bloque actual usando el candidato de fusión correspondiente al índice.

Description

5
10
15
20
25
30
35
40
45
50
55
60
65
DESCRIPCION
Vector de movimiento predicho entre visualizaciones para vídeo 3D CAMPO TÉCNICO
[1] Esta divulgación se refiere a la codificación de vídeo.
ANTECEDENTES
[2] Las capacidades del vídeo digital pueden incorporarse en una amplia gama de dispositivos, incluyendo televisores digitales, sistemas de radiodifusión directa digital, sistemas de radiodifusión inalámbrica, asistentes digitales personales (PDA), ordenadores portátiles o de escritorio, ordenadores de tableta, lectores de libros electrónicos, cámaras digitales, dispositivos de grabación digital, reproductores de medios digitales, dispositivos de videojuegos, consolas de videojuegos, teléfonos celulares o de radio por satélite, los denominados “teléfonos inteligentes", dispositivos de videoconferencia, dispositivos de transmisión por flujo de vídeo y similares. Los dispositivos de vídeo digitales implementan técnicas de compresión de vídeo, tales como las descritas en las normas definidas por MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264/MPEG-4, Parte 10, Codificación Avanzada de Vídeo (AVC), la norma de Codificación de Vídeo de Alta Eficiencia (HEVC) actualmente en desarrollo y las ampliaciones de dichas normas. Los dispositivos de vídeo pueden transmitir, recibir, codificar, descodificar y/o almacenar información de vídeo digital más eficientemente, implementando dichas técnicas de compresión de vídeo.
[3] Las técnicas de compresión de vídeo realizan la predicción espacial (entre imágenes) y/o la predicción temporal (entre imágenes) para reducir o eliminar la redundancia intrínseca en 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 de árbol, unidades de codificación (CU) y/o nodos de codificación. Los bloques de vídeo en un fragmento intra-codificado (I) de una imagen se codifican mediante la predicción espacial con respecto a las muestras de referencia en bloques contiguos en la misma imagen. Los bloques de vídeo en un fragmento inter-codificado (P o B) de una imagen pueden usar la predicción espacial con respecto a las muestras de referencia en bloques contiguos en la misma imagen, o la predicción temporal con respecto a las 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.
[4] 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 inter-codificado se codifica de acuerdo con 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 intra-codificado se codifica de acuerdo con un modo de intra- codificación y a los datos residuales. Para una mayor compresión, los datos residuales pueden transformarse desde el dominio de los píxeles al dominio de las transformaciones, dando como resultado unos coeficientes de transformación residuales, que posteriormente se pueden cuantificar. Los coeficientes de transformación cuantificados, dispuestos inicialmente en una formación bidimensional, pueden escanearse con el fin de generar un vector unidimensional de coeficientes de transformación, y puede aplicarse la codificación por entropía para lograr aún más compresión.
[5] El documento "Test Model under Consideration for HEVC based 3D video coding” ["Modelo de prueba bajo consideración para codificación de vídeo 3D basada en HEVC”], 99. REUNIÓN DE MPEG; 6-2-2012 - 10-22012; SAN JOSÁ CR; (GRUPO DE EXPERTOS DE IMÁGENES EN MOVIMIENTO O ISO/IEC JTC1/SC29/WG11), n.° N12559, 11 de febrero de 2012 () divulga la predicción del vector de movimiento adaptativo entre visualizaciones.
SUMARIO
[6] En general, esta divulgación describe técnicas para mejorar la eficiencia de codificación de la predicción de movimiento en codificación de vídeo 3D y de múltiples visualizaciones.
[7] En un ejemplo, esta divulgación describe un procedimiento de descodificación de datos de vídeo de múltiples visualizaciones que incluye determinar, para un bloque actual en una visualización actual, un bloque correspondiente en una visualización de referencia que usa un vector de disparidad para el bloque actual; determinar una primera dirección para un vector de movimiento actual del bloque actual, en el que la primera dirección corresponde a una de una primera lista de imágenes de referencia o una segunda lista de imágenes de referencia; determinar un primer valor de recuento de orden de imagen (POC) de una primera imagen de referencia referenciada por un índice de referencia asociado con un primer vector de movimiento del bloque correspondiente que apunta en la primera dirección; determinar si una primera lista de imágenes de referencia
5
10
15
20
25
30
35
40
45
50
55
60
65
para el bloque actual incluye una imagen de referencia que tiene el primer valor de POC, en el que la primera lista de imágenes de referencia corresponde a la primera dirección como un predictor de movimiento direccional; en respuesta a la primera lista de imágenes de referencia que incluye la imagen de referencia que tiene el primer valor de POC, descodificar el vector de movimiento actual usando el primer vector de movimiento del bloque correspondiente; y, en respuesta a la primera lista de imágenes de referencia que no incluye la imagen de referencia que tiene el primer valor de POC: determinar un segundo valor de POC de una segunda imagen de referencia referenciada por un índice de referencia asociado con un segundo vector de movimiento del bloque correspondiente que apunta en una segunda dirección, en el que la segunda dirección es diferente de la primera dirección, en el que la segunda dirección corresponde a la otra de la primera lista de imágenes de referencia y la segunda lista de imágenes de referencia, determinar si la primera lista de imágenes de referencia para el bloque actual incluye una imagen de referencia que tiene el segundo valor de POC; y en respuesta a la primera lista de imágenes de referencia que incluye la imagen de referencia que tiene el segundo valor de POC, descodificar el vector de movimiento actual usando el segundo vector de movimiento del bloque correspondiente como el predictor de movimiento direccional.
[8] En otro ejemplo, un dispositivo para codificación de vídeo incluye un codificador de vídeo configurado para determinar, para un bloque actual en una visualización actual, un bloque correspondiente en una visualización de referencia que usa un vector de disparidad para el bloque actual; determinar una primera dirección para un vector de movimiento actual del bloque actual, en el que la primera dirección corresponde a una de una primera lista de imágenes de referencia o una segunda lista de imágenes de referencia; determinar un primer valor de recuento de orden de imagen (POC) de una primera imagen de referencia referenciada por un índice de referencia asociado con un primer vector de movimiento del bloque correspondiente que apunta en la primera dirección; determinar si una primera lista de imágenes de referencia para el bloque actual incluye una imagen de referencia que tiene el primer valor de POC, en el que la primera lista de imágenes de referencia corresponde a la primera dirección; en respuesta a la primera lista de imágenes de referencia que incluye la imagen de referencia que tiene el primer valor de POC, descodificar el vector de movimiento actual usando el primer vector de movimiento del bloque correspondiente como un predictor de movimiento direccional; en respuesta a la primera lista de imágenes de referencia que no incluye la imagen de referencia que tiene el primer valor de POC: determinar un segundo valor de POC de una segunda imagen de referencia referenciada por un índice de referencia asociado con un segundo vector de movimiento del bloque correspondiente que apunta en una segunda dirección, en el que la segunda dirección es diferente de la primera dirección, en la que la segunda dirección corresponde a la otra de la primera lista de imágenes de referencia y la segunda lista de imágenes de referencia; determinar si la primera lista de imágenes de referencia para el bloque actual incluye una imagen de referencia que tiene el segundo valor de POC; y en respuesta a la primera lista de imágenes de referencia que incluye la imagen de referencia que tiene el segundo valor de POC, descodificar el vector de movimiento actual utilizando el segundo vector de movimiento del bloque correspondiente como el predictor de movimiento direccional.
[9] En otro ejemplo, un dispositivo para codificación de vídeo incluye un codificador de vídeo configurado para determinar, para un bloque actual en una visualización actual, un bloque correspondiente en una visualización de referencia que usa un vector de disparidad para el bloque actual; determinar una primera dirección para un vector de movimiento actual del bloque actual, en el que la primera dirección corresponde a una de una primera lista de imágenes de referencia o una segunda lista de imágenes de referencia; determinar un primer valor de recuento de orden de imagen (POC) de una primera imagen de referencia referenciada por un índice de referencia asociado con un primer vector de movimiento del bloque correspondiente que apunta en la primera dirección; determinar si una primera lista de imágenes de referencia para el bloque actual incluye una imagen de referencia que tiene el primer valor de POC, en el que la primera lista de imágenes de referencia corresponde a la primera dirección; en respuesta a la primera lista de imágenes de referencia que incluye la imagen de referencia que tiene el primer valor de POC, codificar el vector de movimiento actual usando el primer vector de movimiento del bloque correspondiente como un predictor de movimiento direccional; en respuesta a la primera lista de imágenes de referencia que no incluye la imagen de referencia que tiene el primer valor de POC: determinar un segundo valor de POC de una segunda imagen de referencia referenciada por un índice de referencia asociado con un segundo vector de movimiento del bloque correspondiente que apunta en una segunda dirección, en el que la segunda dirección es diferente de la primera dirección, en la que la segunda dirección corresponde a la otra de la primera lista de imágenes de referencia y la segunda lista de imágenes de referencia; determinar si la primera lista de imágenes de referencia para el bloque actual incluye una imagen de referencia que tiene el segundo valor de POC; y en respuesta a la primera lista de imágenes de referencia que incluye la imagen de referencia que tiene el segundo valor de POC, codificar el vector de movimiento actual utilizando el segundo vector de movimiento del bloque correspondiente como el predictor de movimiento direccional.
[10] En otro ejemplo, un aparato para codificar datos de vídeo incluye medios para determinar, para un bloque actual en una visualización actual, un bloque correspondiente en una visualización de referencia que usa un vector de disparidad para el bloque actual; medios para determinar una primera dirección para un vector de movimiento actual del bloque actual, en el que la primera dirección corresponde a una de una primera lista de imágenes de referencia o una segunda lista de imágenes de referencia; medios para determinar un primer valor
5
10
15
20
25
30
35
40
45
50
55
60
65
de recuento de orden de imagen (POC) de una primera imagen de referencia referenciada por un índice de referencia asociado con un primer vector de movimiento del bloque correspondiente que apunta en la primera dirección; medios para determinar si una primera lista de imágenes de referencia para el bloque actual incluye una imagen de referencia que tiene el primer valor de POC, en el que la primera lista de imágenes de referencia corresponde a la primera dirección; medios para codificar el vector de movimiento actual usando el primer vector de movimiento del bloque correspondiente como un predictor de movimiento direccional en respuesta a la primera lista de imágenes de referencia que incluye la imagen de referencia que tiene el primer valor de POC; medios para determinar un segundo valor de POC de una segunda imagen de referencia referenciada por un índice de referencia asociado con un segundo vector de movimiento del bloque correspondiente que apunta en una segunda dirección en respuesta a la primera lista de imágenes de referencia que no incluye la imagen de referencia que tiene el primer POC valor, en el que la segunda dirección es diferente de la primera dirección, en el que la segunda dirección corresponde a la otra de la primera lista de imágenes de referencia y la segunda lista de imágenes de referencia; medios para determinar si la primera lista de imágenes de referencia para el bloque actual incluye una imagen de referencia que tiene el segundo valor de POC; y medios para codificar el vector de movimiento actual usando el segundo vector de movimiento del bloque correspondiente como el predictor de movimiento direccional en respuesta a la primera lista de imágenes de referencia que incluye la imagen de referencia que tiene el segundo valor de POC.
[11] En otro ejemplo, un medio de almacenamiento legible por ordenador almacena instrucciones que cuando son ejecutadas por uno o más procesadores hacen que el uno o más procesadores determinen, para un bloque actual en una visualización actual, un bloque correspondiente en una visualización de referencia usando un vector de disparidad para el bloque actual; determinar una primera dirección para un vector de movimiento actual del bloque actual, en el que la primera dirección corresponde a una de una primera lista de imágenes de referencia o una segunda lista de imágenes de referencia; determinar un primer valor de recuento de orden de imagen (POC) de una primera imagen de referencia referenciada por un índice de referencia asociado con un primer vector de movimiento del bloque correspondiente que apunta en la primera dirección; determinar si una primera lista de imágenes de referencia para el bloque actual incluye una imagen de referencia que tiene el primer valor de POC, en el que la primera lista de imágenes de referencia corresponde a la primera dirección; codificar el vector de movimiento actual usando el primer vector de movimiento del bloque correspondiente como un predictor de movimiento direccional en respuesta a la primera lista de imágenes de referencia que incluye la imagen de referencia que tiene el primer valor de POC; y en respuesta a la primera lista de imágenes de referencia que no incluye la imagen de referencia que tiene el primer valor de POC: determinar un segundo valor de POC de una segunda imagen de referencia referenciada por un índice de referencia asociado con un segundo vector de movimiento del bloque correspondiente que apunta en una segunda dirección, en el que la segunda dirección es diferente de la primera dirección, en el que la segunda dirección corresponde a la otra de la primera lista de imágenes de referencia y la segunda lista de imágenes de referencia; determinar si la primera lista de imágenes de referencia para el bloque actual incluye una imagen de referencia que tiene el segundo valor de POC; y codificar el vector de movimiento actual usando el segundo vector de movimiento del bloque correspondiente como el predictor de movimiento direccional en respuesta a la primera lista de imágenes de referencia que incluye la imagen de referencia que tiene el segundo valor de POC.
[12] 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 descripción y los dibujos, y a partir de las reivindicaciones.
BREVE DESCRIPCIÓN DE LOS DIBUJOS
[13]
La FIG. 1 es un diagrama de bloques que ilustra un ejemplo de sistema de codificación y descodificación de vídeo que puede utilizar las técnicas de inter-predicción descritas en esta divulgación.
La FIG. 2 es un diagrama conceptual que ilustra un ejemplo de orden de descodificación para vídeo de múltiples visualizaciones.
La FIG. 3 es un diagrama conceptual que ilustra un ejemplo de estructura de predicción para vídeo de múltiples visualizaciones.
La FIG. 4 muestra un conjunto de ejemplo de bloques candidatos que se pueden usar tanto en modo de fusión como en modo AMVP.
La FIG. 5 es un diagrama conceptual que ilustra un proceso de obtención de ejemplo de un candidato de vector de movimiento predicho entre visualizaciones.
La FIG. 6 es un diagrama de bloques que ilustra un ejemplo de un codificador de vídeo que puede implementar las técnicas de inter-predicción de esta divulgación.
5
10
15
20
25
30
35
40
45
50
55
60
65
La FIG. 7 es un diagrama de bloques que ilustra un ejemplo de descodificador de vídeo que puede
implementar las técnicas de inter-predicción de esta divulgación.
La FIG. 8 es un diagrama de flujo que muestra un proceso de codificación a modo de ejemplo de acuerdo con
las técnicas de la divulgación.
La FIG. 9 es un diagrama de flujo que muestra un proceso de descodificación a modo de ejemplo de acuerdo
con las técnicas de la divulgación.
DESCRIPCIÓN DETALLADA
[14] Esta divulgación describe técnicas relacionadas con la señalización de parámetros de movimiento en la codificación de vídeo de múltiples visualizaciones, incluso en la nueva norma tridimensional de codificación de vídeo de alta eficiencia, comúnmente denominado HEVC 3D. Las técnicas de compresión de vídeo pueden incluir la predicción de un bloque actual de datos de vídeo basado en un bloque de datos de vídeo ya codificado. En esta divulgación, el término bloque actual se refiere en general a un bloque de datos de vídeo que se codifican actualmente (por ejemplo, codifican o descodifican), en oposición a los bloques de vídeo que ya están codificados o los bloques de vídeo que aún deben codificarse. En un modo de intra-predicción, el bloque actual se predice basándose en uno o más bloques previamente codificados en la misma imagen que el bloque actual, mientras que en un modo de inter-predicción se predice el bloque actual basándose en un bloque ya codificado en una imagen diferente. La imagen diferente puede ser una imagen de una instancia de tiempo diferente de la misma visualización que el bloque actual o puede ser una imagen de la misma instancia de tiempo pero de una visualización diferente.
[15] Cuando un descodificador de vídeo debe realizar una inter-predicción para un bloque de vídeo dado, los parámetros de movimiento se señalan en un flujo de bits de vídeo codificado. Los parámetros de movimiento definen, por ejemplo, un vector de movimiento, un índice de imagen de referencia y una dirección de predicción para que el descodificador de vídeo pueda determinar qué bloque en qué imagen usar como bloque predictivo para el bloque actual. Un codificador de vídeo puede usar varios modos para señalar parámetros de movimiento en un flujo de bits codificado. Con el fin de reducir el número de bits necesarios para implementar la codificación inter-predictiva, algunos de esos modos pueden utilizar la predicción de los parámetros de movimiento en lugar de la señalización explícita de los parámetros de movimiento. En el desarrollo de la norma HEVC, existen varios modos para la predicción de parámetros de movimiento, uno de los cuales se conoce como modo de fusión. En el modo de fusión, un codificador de vídeo construye una lista de candidatos de parámetros de movimiento (por ejemplo, imágenes de referencia y vectores de movimiento) utilizando como candidatos parámetros de movimiento de bloques contiguos, incluidos bloques contiguos espaciales y bloques contiguos temporales, y en el caso de 3D-HEVC también incluyendo bloques contiguos entre visualizaciones. Los parámetros de movimiento seleccionados se señalan desde un codificador de vídeo a un descodificador de vídeo transmitiendo un índice del candidato seleccionado de la lista de candidatos. En el descodificador de vídeo, una vez que el índice es descodificado, todos los parámetros de movimiento del bloque correspondiente del candidato seleccionado son heredados. Un codificador de vídeo y un descodificador de vídeo están configurados para construir las mismas listas basándose en bloques ya codificados. Por lo tanto, basándose en el índice, el descodificador de vídeo puede identificar los parámetros de movimiento del candidato seleccionado por el codificador de vídeo.
[16] Otro modo para predecir los parámetros de movimiento es el modo de omisión. El modo de omisión en general funciona de la misma manera descrita anteriormente para el modo de fusión, pero en el modo de omisión, no se agregan datos residuales al bloque predicho, mientras que en el modo de fusión, los datos residuales se agregan al bloque predicho. La construcción de una lista y la transmisión de un índice para identificar a un candidato en la lista descrita anteriormente con referencia al modo de fusión en general también se realiza en modo de omisión.
[17] Otro modo para predecir los parámetros de movimiento es el modo avanzado de predicción de vector de movimiento (AMVP). En el modo AMVP, se obtiene una lista de candidatos de predictores de vector de movimiento para cada hipótesis de movimiento basándose en el índice de referencia codificado. Esta lista incluye vectores de movimiento de bloques contiguos que están asociados con el mismo índice de referencia, así como un predictor de vector de movimiento temporal que se obtiene basándose en los parámetros de movimiento del bloque contiguo del bloque que se encuentra en el mismo lugar en una imagen de referencia temporal. Los vectores de movimiento elegidos se señalan transmitiendo un índice a la lista de candidatos. Además, también se señalan los valores del índice de referencia y las diferencias del vector de movimiento. En esta divulgación, el término predictor de vector de movimiento se usa en general para referirse a cualquier vector de movimiento a partir del cual se predicen uno o más vectores de movimiento. En algunos casos, el predictor de vector de movimiento y el vector de movimiento predicho pueden ser idénticos, mientras que en otros casos el predictor de vector de movimiento y el vector de movimiento predicho pueden ser diferentes. En el modo AMVP, por ejemplo, el vector de movimiento predicho corresponde al predictor del vector de movimiento más los valores de diferencia del vector de movimiento. Esta divulgación también se refiere al término predictor de movimiento direccional, que
5
10
15
20
25
30
35
40
45
50
55
60
65
en general se refiere a un predictor de vector de movimiento asociado con una dirección particular (es decir, una lista de imágenes de referencia particular). En el caso de la bi-predicción, un predictor de vector de movimiento puede incluir dos predictores de movimiento direccional.
[18] Un vector de disparidad se usa en general para identificar la ubicación de un bloque en una imagen de referencia entre visualizaciones que corresponde a un bloque actual de una visualización actual. Para obtener un vector de disparidad (DV) para un bloque actual, se utiliza una técnica denominada obtención de vector de disparidad basada en bloques contiguos (NBDV) en algunas versiones actuales del modelo de prueba 3D-HEVC (3D-HTM). NBDV utiliza vectores de movimiento de disparidad de bloques contiguos espaciales y temporales del bloque actual. En NBDV, los vectores de movimiento de disparidad de los bloques contiguos espaciales o temporales se controlan en un orden fijo. Una vez que se identifica un vector de movimiento de disparidad (es decir, un vector de movimiento que apunta a una imagen de referencia entre visualizaciones), el proceso de comprobación finaliza y el vector de movimiento de disparidad identificado se convierte a DV para el bloque actual. El DV se puede utilizar en predicción de movimiento entre visualizaciones y/o predicción de residuos entre visualizaciones. Si no se encuentra un vector de movimiento de disparidad después de comprobar todos los bloques contiguos predefinidos, se puede utilizar un DV cero para la predicción de movimiento entre visualizaciones mientras que la predicción residual entre visualizaciones puede estar deshabilitada para la unidad de predicción (PU) correspondiente.
[19] Basándose en el DV, se puede agregar un nuevo vector de movimiento candidato, denominado vector de movimiento predicho entre visualizaciones, si está disponible, a las listas de candidatos para los modos AMVP y de omisión / fusión. El vector de movimiento predicho entre visualizaciones, si está disponible, es un vector de movimiento temporal.
[20] Durante el modo de omisión / fusión o AMVP, puede haber hasta dos vectores de movimiento predichos entre visualizaciones, correspondientes a RefPicList0 y RefPicList1, respectivamente. Estos dos vectores de movimiento se designan como el vector 0 de movimiento predicho entre visualizaciones y el vector 1 de movimiento predicho entre visualizaciones, respectivamente.
[21] El diseño actual del proceso de obtención del vector de movimiento predicho entre visualizaciones en la codificación de múltiples visualizaciones / 3DV basada en HEVC, resumido anteriormente, tiene algunas deficiencias potenciales. Como ejemplo, en el diseño actual del modo de fusión / omisión en 3D-HTM, cuando la imagen de referencia del bloque correspondiente en una lista de imágenes de referencia X (con X es 0 o 1) es una imagen de referencia temporal y su valor de recuento de orden de imagen (POC) no es igual al de cualquier entrada en RefPicListLX pero es igual al de una entrada en RefPicListLY de PU/CU actual, el vector de movimiento correspondiente también se considera no disponible para RefPicListLY, especialmente cuando el indicador de utilización de predicción de RefPicListLY es igual a 0. Como otro ejemplo, cuando el POC de la imagen de referencia del bloque correspondiente es diferente del de cualquier entrada de la lista de imágenes de referencia de la CU/PU actual, el vector de movimiento predicho entre visualizaciones se considera como no disponible. Como otro ejemplo más, en el diseño actual del modo AMVP en 3D-HTM, siempre se comprueba primero la información de movimiento de la lista de imágenes de referencia 0 del bloque correspondiente, independientemente de si la lista de imágenes de referencia objetivo es 0 o 1.
[22] Esta divulgación propone diversas técnicas que pueden mejorar la eficiencia de codificación de un vector de movimiento predicho entre visualizaciones en la codificación de múltiples visualizaciones o 3DV basada en HEVC. De acuerdo con una técnica, en el modo de omisión / fusión, si el bloque correspondiente (ubicado por un vector de disparidad) tiene un vector de movimiento mvLX (con X siendo 0 o 1) que hace referencia a una imagen de referencia temporal, se usa para predecir no solo el vector X de movimiento predicho entre visualizaciones, sino también el vector Y de movimiento predicho entre visualizaciones (siendo Y igual a 1-X). En otras palabras, si el bloque correspondiente tiene el vector de movimiento mvL1, típicamente (es decir, usando un codificador de vídeo implementado de acuerdo con 3D-HTM convencional), mvL1 solo se usa para predecir el vector 1 de movimiento predicho entre visualizaciones, y si el vector 1 de movimiento predicho entre visualizaciones no está disponible, entonces no se agrega ningún candidato de movimiento predicho entre visualizaciones a la lista de candidatos del modo de omisión / fusión. De manera similar, si el bloque correspondiente tiene el vector de movimiento mvL0, entonces (de nuevo de acuerdo con el 3D-HTM convencional), mvL0 solo se usa para predecir el vector 0 de movimiento predicho entre visualizaciones, y si el vector 0 de movimiento predicho entre visualizaciones no está disponible, entonces no se agrega ningún candidato de movimiento predicho entre visualizaciones a la lista de candidatos de modo de omisión / fusión. Sin embargo, de acuerdo con las técnicas de esta divulgación, si el bloque correspondiente tiene el vector de movimiento mvL1 y si el vector 1 de movimiento predicho entre visualizaciones no está disponible, entonces se puede comprobar la disponibilidad de otro candidato (vector 0 de movimiento inter-predicho) y, si está disponible, agregarse a la lista de candidatos. De manera similar, si el bloque correspondiente tiene el vector de movimiento mv0 y si el vector 0 de movimiento predicho entre visualizaciones no está disponible, se puede comprobar la disponibilidad de otro candidato (vector 1 de movimiento inter-predicho) y, si está disponible, agregarse a la lista de candidatos.
5
10
15
20
25
30
35
40
45
50
55
60
65
[23] Si mvLX se refiere a una imagen de referencia que tiene el mismo valor de POC que cualquier imagen en RefPicListX del fragmento actual, mvLX está configurado para inter-visualizar el vector de movimiento X predicho, y el índice de referencia objetivo se establece en la primera imagen en RefPicListX que tiene el mismo POC al que se refiere la imagen de referencia mvLX. De lo contrario, si mvLY (donde, de nuevo, Y = 1 - X) se refiere a una imagen de referencia que tiene el mismo valor de POC que cualquier imagen en RefPicListX en el fragmento actual, mvLY está configurado para inter-visualizar el vector de movimiento predicho X, y el índice de referencia objetivo se establece en la primera imagen en RefPicListX que tiene el mismo POC que la imagen de referencia a la que se refiere mvLY.
[24] De acuerdo con otra técnica, en el modo AMVP, para un índice de referencia objetivo dado refIdxLX, en lugar de comparar primero el valor de POC de la imagen referida por mvL0 y luego referida por el mvL1 del bloque correspondiente con el POC de RefPicListX[refIdxLX] (del fragmento actual), se propone comparar primero el valor de POC de la imagen referida por mvLX y luego la referida por mvLY (con Y igual a 1 -X). Una vez que se encuentra el vector de movimiento predicho entre visualizaciones, finaliza el proceso de comparación. Cuando la comparación indica que el valor de POC de RefPicListX[refIdxLX] es igual al valor de pOc de la imagen referida por mvL0 o mvL1, el vector de movimiento predicho entre visualizaciones se establece como disponible y se establece en mvL0 o mvL1.
[25] La FIG. 1 es un diagrama de bloques que ilustra un sistema de codificación y descodificación de vídeo 10 de ejemplo que puede utilizar técnicas de esta divulgación. Como se muestra en la FIG. 1, el sistema 10 incluye un dispositivo de origen 12 que proporciona datos de vídeo codificados, a descodificar en un momento posterior mediante 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, incluyendo ordenadores de sobremesa, ordenadores plegables (es decir, portátiles), ordenadores de tableta, descodificadores, equipos 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, un dispositivo de transmisión de flujo de vídeo o similares. En algunos casos, el dispositivo de origen 12 y el dispositivo de destino 14 pueden estar equipados para la comunicación inalámbrica.
[26] El dispositivo de destino 14 puede recibir los datos de vídeo codificados a descodificar, 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 al 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 pueden modularse de acuerdo con una norma de comunicación, tal como un protocolo de comunicación inalámbrica, y transmitirse 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 de transmisión física. 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 extensa o una red global tal como Internet. El medio de comunicación puede incluir routers, conmutadores, estaciones base o cualquier otro equipo que pueda ser útil para facilitar la comunicación desde el dispositivo de origen 12 al dispositivo de destino 14.
[27] 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 del dispositivo de almacenamiento mediante una interfaz de entrada. El dispositivo de almacenamiento puede incluir cualquiera entre una diversidad de medios de almacenamiento de datos, de acceso distribuido o local, tales como una unidad de disco rígido, discos Blu-ray, discos DVD, discos CD-ROM, memoria flash, memoria volátil o no volátil u otros medios adecuados cualesquiera de almacenamiento digital, para almacenar datos de vídeo codificados. En un ejemplo adicional, el dispositivo de almacenamiento puede corresponder a un servidor de ficheros o a otro dispositivo de almacenamiento intermedio que pueda almacenar los datos de vídeo codificados, generados por el dispositivo de origen 12. El dispositivo de destino 14 puede acceder a datos de vídeo almacenados del dispositivo de almacenamiento, mediante flujo 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 ejemplos de servidores de archivos incluyen un servidor de la Red (por ejemplo, para una página de la Red), un servidor de FTP, dispositivos de almacenamiento anexos a la red (NAS) o una unidad de disco local. El dispositivo de destino 14 puede acceder a los datos de vídeo codificados mediante cualquier conexión de datos estándar, incluyendo una conexión a Internet. Esto puede incluir un canal inalámbrico (por ejemplo, una conexión 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 archivos. La transmisión de datos de vídeo codificados desde el dispositivo de almacenamiento puede ser una transmisión por flujo, una transmisión de descarga o una combinación de ambas.
[28] Las técnicas de esta divulgación no están limitadas necesariamente a aplicaciones o configuraciones inalámbricas. Las técnicas pueden aplicarse a la codificación de vídeo, en soporte de cualquiera entre una
5
10
15
20
25
30
35
40
45
50
55
60
65
diversidad de 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 de vídeo por flujo de Internet, tales como el flujo adaptativo dinámico sobre HTTP (DASH), el vídeo digital que se codifica en un medio de almacenamiento de datos, la descodificación de vídeo digital almacenado en un medio de almacenamiento de datos, u otras aplicaciones. En algunos ejemplos, el sistema 10 puede configurarse para prestar soporte a la transmisión de vídeo unidireccional o bidireccional a fin de prestar soporte a aplicaciones tales como la transmisión continua de vídeo, la reproducción de vídeo, la difusión de vídeo y/o la videotelefonía.
[29] En el ejemplo de la FIG. 1, el dispositivo de origen 12 incluye una fuente 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 descodificador de vídeo 30, la unidad de renderizació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 una fuente de vídeo externa 18, tal como una cámara externa. Asimismo, el dispositivo de destino 14 puede mantener interfaces con un dispositivo de visualización externo, en lugar de incluir un dispositivo de visualización integrado. Muchas de las técnicas descritas en esta divulgación pueden realizarse tanto por el codificador de vídeo 20 como por el descodificador de vídeo 30. Por lo tanto, para facilitar la explicación, el codificador de vídeo 20 y el descodificador de vídeo 30 a veces pueden denominarse conjuntamente codificador de vídeo 20/30. Las técnicas descritas con relación al codificador de vídeo 20/30 pueden realizarse ya sea mediante el codificador de vídeo 20 o el descodificador de vídeo 30.
[30] El sistema 10 ilustrado de la FIG. 1 es simplemente un ejemplo. Las técnicas de esta divulgación pueden realizarse mediante cualquier dispositivo de codificación y/o descodificación de vídeo digital. Aunque, en general, las técnicas de esta divulgación se llevan a cabo mediante un dispositivo de codificación de vídeo, las técnicas también pueden llevarse a cabo mediante un codificador / descodificador de vídeo, denominado típicamente "CÓDEC". Además, las técnicas de esta divulgación también pueden llevarse a cabo mediante un pre-procesador 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 de descodificación de vídeo. Por lo tanto, el sistema 10 puede soportar una transmisión de vídeo unidireccional o bidireccional entre los dispositivos de vídeo 12, 14, por ejemplo, para la transmisión de vídeo, la reproducción de vídeo, la difusión de vídeo o la videotelefonía.
[31] La fuente de vídeo 18 del dispositivo de origen 12 puede incluir un dispositivo de captura de vídeo, como una cámara de vídeo, un archivo de vídeo que contiene vídeo grabado previamente y/o una interfaz de alimentación de vídeo para recibir vídeo de un proveedor de contenidos de vídeo. De forma alternativa adicional, la fuente 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 la fuente de vídeo 18 es una videocámara, el dispositivo de origen 12 y el dispositivo de destino 14 pueden formar los denominados teléfonos con cámara o videoteléfonos. Sin embargo, como se ha mencionado anteriormente, las técnicas descritas en esta divulgación pueden ser aplicables a la codificación de vídeo en general, y pueden aplicarse a aplicaciones inalámbricas y/o cableadas. En cada caso, el vídeo capturado, pre-capturado o generado por ordenador puede ser codificado por el codificador de vídeo 20. La información de vídeo codificada puede ser entonces emitida por la interfaz de salida 22 hacia un medio legible por ordenador 16.
[32] La fuente de vídeo 18 puede proporcionar múltiples visualizaciones de datos de vídeo al codificador de vídeo 20. Por ejemplo, la fuente de vídeo 18 puede corresponder a una matriz de cámaras, teniendo cada una posición horizontal única con respecto a una escena particular que se está filmando. De forma alternativa, la fuente 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 sustancialmente simultánea al grabar datos de vídeo de una escena.
[33] 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 sustancialmente al mismo tiempo desde diferentes perspectivas de cámara horizontal. Calculando la disparidad horizontal entre valores de píxeles sustancialmente 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 integrarse funcionalmente con la fuente de vídeo 18, en algunos ejemplos. Por ejemplo, cuando la fuente 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 renderizar imágenes de textura.
5
10
15
20
25
30
35
40
45
50
55
60
65
[34] El medio legible por ordenador 16 puede incluir medios transitorios, tales como una emisió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 Blu-ray 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 manera similar, un dispositivo informático de una instalación de producción de un medio, tal como una instalación 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, puede entenderse que el medio legible por ordenador 16 incluye uno o más medios legibles por ordenador de varias formas, en varios ejemplos.
[35] 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 es usada por el descodificador de vídeo 30, que incluye elementos sintácticos que describen características y/o el procesamiento de bloques y otras unidades codificadas, por ejemplo, grupos de imágenes (GOP). El dispositivo de visualización 32 muestra los datos de vídeo descodificados a un usuario y puede comprender cualquiera entre una variedad de dispositivos de visualización, tales como un tubo de rayos catódicos (CRT), una pantalla de cristal líquido (LCD), una pantalla de plasma, una pantalla de diodos 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 visualizaciones de forma simultánea o sustancialmente simultánea, por ejemplo, para producir un efecto visual 3D para un espectador.
[36] La unidad DIBR 31 del dispositivo de destino 14 puede renderizar visualizaciones sintetizadas usando información de textura y profundidad de visualizaciones descodificadas recibidas desde el descodificador de vídeo 30. Por ejemplo, la unidad 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 DIBR 31 puede generar entonces una imagen sintetizada mediante la compensación de píxeles en una imagen de textura a la izquierda o a la derecha mediante la disparidad horizontal determinada. De esta manera, el dispositivo de visualización 32 puede mostrar una o más visualizaciones, que pueden corresponder a visualizaciones descodificadas y/o visualizaciones sintetizadas, en cualquier combinación. De acuerdo con las técnicas de esta divulgación, el descodificador de vídeo 30 puede proporcionar valores de precisión originales y actualizados para los rangos de profundidad y parámetros de la cámara a la unidad DIBR 31, que puede usar los rangos de profundidad y los parámetros de la cámara para sintetizar adecuadamente las visualizaciones.
[37] Aunque no se muestra en la FIG. 1, en algunos aspectos, el codificador de vídeo 20 y el descodificador de vídeo 30 pueden estar integrados cada uno de ellos con un codificador y un descodificador de audio, y pueden incluir unidades MUX-DEMUX apropiadas, u otro tipo de hardware y software, para manejar 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 pueden ajustarse al protocolo de multiplexación ITU H.223 o a otros protocolos, tales como el protocolo de datagramas de usuario (UDP).
[38] El codificador de vídeo 20 y el descodificador de vídeo 30 pueden funcionar de acuerdo con una norma de codificación de vídeo, tal como la norma de codificación de vídeo de alta eficiencia (HEVC), actualmente en fase de desarrollo, y pueden ajustarse al modelo de prueba de la HEVC (HM).
[39] Un borrador reciente de la próxima norma HEVC se describe en el documento HCTVC-J1003, de Bross, et al., titulado "High Efficiency Video Coding (HEVC) Text Specification Draft 8" [“Memoria descriptiva textual de la Codificación de Vídeo de Alta Eficiencia (HEVC), Borrador 8”] Equipo de Colaboración Conjunta en Codificación de Vídeo (JCT-VC) de ITU-T SG16 WP3 e ISO/IEC JTC1/SC29/WG11, 10.a reunión: Estocolmo, Suecia, del 11 de julio de 2012 al 12 de julio de 2012, que, desde el 15 de agosto de 2013, se puede descargar desde
http://phenix.intevry.fr/jct/doc_end_user/documents/10_Stockholm/wg11JCTVC-J1003-v8.zip. Otro borrador reciente de la norma HEVC, denominado “Borrador 10 de trabajo de la HEVC” o “WD10”, se describe en el documento JCTVC-L1003v34, de Bross et al., titulado "High Efficiency Video Coding (HEVC) Text Specification Draft 10 (for FDIS & Last Call)" [“Memoria descriptiva textual de la Codificación de Vídeo de Alta Eficiencia (HEVC), Borrador 10 (para Norma Internacional de Borrador Final 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, 12.a reunión: Ginebra, Suiza, 14 al 23 de enero de 2013, que, a partir del 15 de agosto de 2013, puede descargarse desde
http://phenix.intevry.fr/jct/doc_end_user/documents/12_Geneva/wg11JCTVC-L1003-v34.zip. Otro borrador más de la norma HEVC, se denomina en el presente documento "revisiones de WD10", descrito en el artículo de Bross et al., "Editors' proposed corrections to HEVC version 1" ["Correcciones propuestas de los editores para la HEVC, versión 1"], Equipo de Colaboración Conjunta en Codificación de Vídeo (jCt-VC) de ITU-T SG16 WP3 e ISO/IEC JTC1/SC29/WG11, 13.a reunión, Incheon, Corea, abril de 2013, que, a 15 de agosto de 2013, está disponible en:
http://phenix.intevry.fr/jct/doc_end_user/documents/13_Incheon/wg11JCTVC-M0432-v3.zip.
5
10
15
20
25
30
35
40
45
50
55
60
65
[40] Con fines de ilustración, las técnicas de esta divulgación se describen principalmente con respecto a la ampliación 3DV de HEVC. Sin embargo, debe entenderse que estas técnicas pueden aplicarse a otras normas para codificar datos de vídeo utilizados para producir también un efecto tridimensional.
[41] Un Equipo de Colaboración Conjunta en Codificación de Vídeo 3D (JCT-3C) de VCEG y MPEG está elaborando una norma 3DV basada en HEVC, para la cual una parte de los trabajos de normalización incluye la normalización del códec de vídeo de múltiples visualizaciones basado en HEVC (MV-HEVC) y otra parte, la codificación de vídeo 3D basada en HEVC (3D-HEVC). Para MV-HEVC, en general se desea que haya solo cambios sintácticos de alto nivel (HLS) en relación con HEVC, de modo que ningún módulo en el nivel CU/PU en HEVC necesite ser rediseñado y pueda reutilizarse completamente para MV-HEVC. Para 3D-HEVC, se pueden incluir y soportar nuevas herramientas de codificación, incluyendo aquellas en la codificación a nivel de unidad / unidad de predicción, tanto para las visualizaciones de textura como de profundidad. El último software 3D-HTM para 3D-HEVC se puede descargar, desde el 15 de agosto de 2013, desde el siguiente enlace:
https://hevc.hhi.fraunhofer.de/svn/svn_HEVCSoftware/trunk/.
[42] De forma alternativa, el codificador de vídeo 20 y el descodificador de vídeo 30 pueden funcionar de acuerdo con otras normas privadas o industriales, tales como la norma ITU-T H.264, de forma alternativa 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. En particular, las técnicas de esta divulgación se relacionan con la codificación de vídeo de múltiples visualizaciones y/o 3D basada en códecs avanzados. En general, las técnicas de esta divulgación se pueden aplicar a cualquiera de una variedad de normas de codificación de vídeo diferentes. Por ejemplo, estas técnicas se pueden aplicar a la ampliación de codificación de vídeo de múltiples visualizaciones (MVC) de ITU-T H.264/AVC (codificación avanzada de vídeo), a una ampliación de vídeo 3D (3DV) de la próxima norma HEVC (por ejemplo, 3D-HEVC) u otra norma de codificación.
[43] La norma ITU-T H.264/MPEG-4 (AVC) se formuló por el Grupo de Expertos en Codificación de Vídeo de ITU-T (VCEG) junto al Grupo de Expertos en Imágenes en Movimiento de ISO/IEC (MPEG), como el producto de una asociación colectiva conocida como Equipo Mixto de Vídeo (JVT, por sus siglas en inglés). En algunos aspectos, las técnicas descritas en esta divulgación pueden aplicarse a dispositivos que se ajusten en general a la norma H.264. La norma H.264 se describe en la Recomendación ITU-T H.264, Codificación de Vídeo Avanzada para los servicios audiovisuales genéricos, por el Grupo de Estudio de la ITU-T, y con fecha de marzo de 2005, y que puede denominarse en el presente documento norma H.264 o memoria descriptiva H.264, o norma o memoria descriptiva H.264/AVC. El Equipo Mixto de Vídeo (JVT) continúa trabajando en ampliaciones a H.264/MPEG-4 AVC.
[44] El codificador de vídeo 20 y el descodificador de vídeo 30 pueden implementarse como cualquiera entre una variedad de circuitos de codificadores adecuados, tales como uno o más microprocesadores, procesadores de señales digitales (DSP), circuitos integrados específicos de la aplicación (ASIC), matrices de puertas programables 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 mediante uno o más procesadores para realizar las técnicas de esta divulgación. Tanto el codificador de vídeo 20 como el descodificador de vídeo 30 pueden estar incluidos en uno o más codificadores o descodificadores, cualquiera de los cuales puede estar integrado como parte de un codificador/descodificador (CÓDEC) combinado en un dispositivo respectivo. Un dispositivo que incluye el codificador de vídeo 20 y/o el descodificador 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.
[45] Inicialmente, se analizarán las técnicas de codificación de ejemplo de HEVC. El equipo JCT-VC está trabajando en el desarrollo de la norma HEVC. Los esfuerzos de normalización de la HEVC se basan en un modelo en evolución de un dispositivo de codificación de vídeo denominado modelo de prueba de la HEVC (HM). El HM supone varias capacidades adicionales de los dispositivos de codificación de vídeo respecto a dispositivos existentes de acuerdo, por ejemplo, a la norma ITU-T H.264/AVC. Por ejemplo, mientras que la norma H.264 proporciona nueve modos de codificación de intra-predicción, el HM puede proporcionar hasta treinta y tres modos de codificación de intra-predicción angulares más modos DC y planares.
[46] En general, el modelo de funcionamiento del HM describe que una trama o imagen de vídeo puede dividirse en una secuencia de bloques arbolados o unidades de codificación de máximo tamaño (LCU), que incluyen muestras tanto de luma como de croma. Los datos sintácticos dentro de un flujo de bits pueden definir un tamaño para la LCU, que es la máxima unidad de codificación en lo que respecta al número de píxeles. Un fragmento incluye un cierto número de bloques arbolados consecutivos en orden de codificación. Una trama o imagen de vídeo puede dividirse en uno o más fragmentos. Cada bloque arbolado puede dividirse en unidades de codificación (CU) de acuerdo con un árbol cuádruple. En general, una estructura de datos de árbol cuádruple incluye un nodo por CU, con un nodo raíz correspondiente al bloque arbolado. Si una CU se divide en cuatro sub-CU, el nodo correspondiente a la CU incluye cuatro nodos hoja, cada uno de los cuales corresponde a una de las sub-CU.
5
10
15
20
25
30
35
40
45
50
55
60
65
[47] Cada nodo de la estructura de datos de árbol cuádruple puede proporcionar datos sintácticos para la CU correspondiente. Por ejemplo, un nodo en el árbol cuádruple puede incluir un indicador de división, que indica si la CU correspondiente al nodo está dividida o no en varias sub-CU. Los elementos sintácticos para una CU pueden definirse de manera recursiva y pueden depender de si la CU está dividida o no en varias sub-CU. Si una CU no está dividida adicionalmente, se denomina CU hoja. En esta divulgación, cuatro sub-CU de una CU hoja también se denominarán CU hojas incluso aunque no haya una división explícita de la CU hoja original. Por ejemplo, si una CU con un tamaño de 16x16 no se divide adicionalmente, las cuatro sub-CU de tamaño 8x8 también se denominarán CU hojas aunque la CU de tamaño 16x16 no se haya dividido nunca.
[48] Una CU tiene un propósito similar a un macrobloque de la norma H.264, excepto que una CU no tiene una distinción de tamaño. Por ejemplo, un bloque arbolado puede dividirse en cuatro nodos secundarios (también denominados sub-CU) y cada nodo secundario puede a su vez ser un nodo principal y dividirse en otros cuatro nodos secundarios. Un nodo secundario final, no dividido, denominado un nodo hoja del árbol cuádruple, comprende un nodo de codificación, también denominado CU hoja. Los datos sintácticos asociados a un flujo de bits codificado pueden definir un número máximo de veces que puede dividirse un bloque arbolado, denominado profundidad de CU máxima, y también pueden definir un tamaño mínimo de los nodos de codificación. Por consiguiente, un flujo de bits también puede definir una unidad de codificación mínima (SCU). Esta divulgación utiliza el término "bloque" para referirse a cualquiera entre una CU, PU o TU, en el contexto de la HEVC, o a estructuras de datos similares en el contexto de otras normas (por ejemplo, macrobloques y subbloques de los mismos en la norma H.264/AVC).
[49] 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. Los modos de división pueden diferir en función de si la CU está codificada en modo de omisión o fusión, codificada en modo de intra-predicción o codificada en modo de inter-predicció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 (por ejemplo, rectangular).
[50] La norma HEVC admite transformaciones de acuerdo con las TU, que pueden ser diferentes para diferentes CU. El tamaño de las TU típicamente se basa en el tamaño de las PU de una CU dada, definida para una LCU dividida, aunque puede que no siempre sea así. Las TU son típicamente del mismo tamaño o de un tamaño más pequeño que las PU. En algunos ejemplos, las muestras residuales correspondientes a una CU pueden subdividirse en unidades más pequeñas mediante una estructura de árbol cuádruple conocida como "árbol cuádruple residual" (RQT). Los nodos hoja del RQT pueden denominarse unidades de transformación (TU). Los valores de diferencias de píxeles, asociados a las TU, pueden transformarse para generar coeficientes de transformación, que pueden cuantificarse.
[51] Una CU hoja puede incluir una o más unidades de predicción (PU). En general, una PU representa una zona espacial correspondiente a la totalidad, o a una parte, de la CU correspondiente, y puede incluir datos para recuperar una muestra de referencia para la PU. Además, una PU incluye datos relacionados con la predicción. Por ejemplo, cuando la PU está codificada en modo de intra, pueden incluirse datos para la PU en un árbol cuádruple residual (RQT), que pueden incluir datos que describen un modo de intra-predicción para una TU correspondiente a la PU. Como otro ejemplo, cuando la PU está codificada en modo de inter, la PU puede incluir datos que definen uno o más vectores 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, la Lista 1 o la Lista C) para el vector de movimiento.
[52] Una CU hoja que tiene una o más PU también puede incluir una o más unidades de transformación (TU). Las unidades de transformación pueden especificarse usando un RQT (también denominado estructura de árbol cuádruple de TU), como se ha expuesto anteriormente. Por ejemplo, un indicador de división puede indicar si una CU hoja está dividida en cuatro unidades de transformación. A continuación, cada unidad de transformación puede dividirse adicionalmente en más sub-TU. Cuando una TU no se divide adicionalmente, puede denominarse una TU hoja. En general, en lo que respecta a la intra-codificación, todas las TU hoja que pertenecen a una CU hoja comparten el mismo modo de intra-predicción. Es decir, el mismo modo de intra- predicción se aplica en general para calcular valores predichos para todas las TU de una CU hoja. En lo que respecta a la intra-codificación, un codificador de vídeo puede calcular un valor residual para cada TU hoja usando el modo de intra-predicción, como una diferencia entre la parte de la CU correspondiente a la TU y el bloque original. Una TU no está necesariamente limitada al tamaño de una PU. De este modo, las TU pueden ser
5
10
15
20
25
30
35
40
45
50
55
60
65
mayores o menores que una PU. En lo que respecta a la ¡ntra-codificación, una PU puede estar co-ubicada con una TU hoja correspondiente para la misma CU. En algunos ejemplos, el tamaño máximo de una TU hoja puede corresponder al tamaño de la CU hoja correspondiente.
[53] Además, las TU de las CU hojas también pueden asociarse a las respectivas estructuras de datos de árbol cuaternario, denominadas árboles cuaternarios residuales (RQT). Es decir, una CU hoja puede incluir un árbol cuádruple que indica cómo la CU hoja está dividida en varias TU. El nodo raíz de un árbol cuádruple de TU corresponde en general a una CU hoja, mientras que el nodo raíz de un árbol cuádruple de CU corresponde en general a un bloque arbolado (o LCU). Las TU del RQT que no están divididas se denominan TU hojas. En general, esta divulgación usa los términos CU y TU para hacer referencia a una CU hoja y a una TU hoja, respectivamente, a no ser que se indique lo contrario.
[54] Una secuencia de vídeo incluye típicamente una serie de tramas o imágenes de vídeo. Un grupo de imágenes (GOP) comprende, en general, una serie de una o más de las imágenes de vídeo. Un GOP puede incluir datos sintácticos en una cabecera del GOP, en una cabecera de una o más de las imágenes o en otras ubicaciones, que describen un cierto número de imágenes incluidas en el GOP. Cada fragmento de una imagen puede incluir datos sintácticos de fragmento que describen un modo de codificación para el fragmento respectivo. Un codificador de vídeo 20 actúa típicamente 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 presentar tamaños fijos o variables y pueden diferir en tamaño de acuerdo con una norma de codificación especificada.
[55] En un ejemplo, el HM da soporte a la predicción en diversos tamaños de PU. Suponiendo que el tamaño de una CU particular sea 2Nx2N, el HM admite la intra-predicción en tamaños de PU de 2Nx2N o NxN y la interpredicción en tamaños de PU simétricos de 2Nx2N, 2NxN, Nx2N o NxN. El HM también presta soporte a la división asimétrica para la inter-predicció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 el 25 % y el 75 %. La parte de la CU correspondiente a la división del 25 % está indicada por una “n” seguida de una indicación de “arriba”, “abajo”, “izquierda” o “derecha”. Así, 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.
[56] En esta 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 tamaño 16x16 tendrá 16 píxeles en la dirección vertical (y = 16) y 16 píxeles en la dirección horizontal (x = 16). Asimismo, un bloque de tamaño NxN presenta, 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 en un bloque pueden estar ordenados en filas y columnas. Además, no es necesario que los bloques presenten necesariamente el mismo número de píxeles en la dirección horizontal y en la dirección vertical. Por ejemplo, los bloques pueden comprender NxM píxeles, donde M no es necesariamente igual a N.
[57] Tras la codificación de intra-predicción o inter-predicción mediante 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 sintácticos que describen un procedimiento o modo de generación de datos de píxeles predictivos en el dominio espacial (también denominado el dominio de píxeles) y las TU pueden comprender coeficientes en el dominio de transformación, tras la aplicación de una transformación, por ejemplo, una transformación de coseno discreta (DCT), una transformación entera, 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 los valores de predicción correspondientes a las PU. El codificador de vídeo 20 puede formar las TU incluyendo los datos residuales para la CU, y a continuación transformar las TU para generar coeficientes de transformación para la CU.
[58] Tras cualquier transformación para generar coeficientes de transformación, el codificador de vídeo 20 puede realizar la cuantificación de los coeficientes de transformación. La cuantificación se refiere, en general, a un proceso en el que los coeficientes de transformación se cuantifican para reducir posiblemente la cantidad de datos usados para representar los coeficientes, proporcionando compresión adicional. El proceso de cuantificación puede reducir la profundidad de bits asociada a algunos o con la totalidad de los coeficientes. Por ejemplo, un valor de n bits puede redondearse a la baja hasta un valor de m bits durante la cuantificación, donde n es mayor que m.
[59] Después de la cuantificación, el codificador de vídeo puede escanear los coeficientes de transformación, produciendo un vector unidimensional a partir de la matriz bidimensional que incluye los coeficientes de transformación cuantificados. El recorrido puede estar diseñado para colocar los coeficientes de energía más alta (y por lo tanto de menor frecuencia) en la parte frontal de la matriz y para colocar los coeficientes de energía más bajos (y por lo tanto de mayor frecuencia) en la parte posterior de la matriz. En algunos ejemplos, el codificador
5
10
15
20
25
30
35
40
45
50
55
60
65
de vídeo 20 puede usar un orden de recorrido predefinido para recorrer los coeficientes de transformación cuantificados, para producir un vector en serie que pueda ser codificado por entropía. En otros ejemplos, el codificador de vídeo 20 puede realizar un escaneado adaptativo. Después de recorrer los coeficientes de transformación cuantificados 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 con la codificación de longitud variable adaptativa de acuerdo con el contexto (CAVLC), la codificación aritmética binaria adaptativa de acuerdo con el contexto (CABAC), la codificación aritmética binaria adaptativa de acuerdo con el contexto basada en la sintaxis (SBAC), la codificación por entropía por división de intervalos de probabilidad (PIPE) u otros procedimientos 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 descodificador de vídeo 30 en la descodificación de los datos de vídeo.
[60] Para realizar la CABAC, el codificador de vídeo 20 puede asignar un contexto dentro de un modelo contextual a un símbolo que se va a transmitir. El contexto puede referirse, por ejemplo, a si los valores contiguos del símbolo son distintos de cero o no. Para realizar la CAVLC, el codificador de vídeo 20 puede seleccionar un código de longitud variable para un símbolo que se va a transmitir. Las palabras de código en la VLC pueden construirse de forma 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 manera, el uso de la VLC puede lograr un ahorro en bits con respecto, por ejemplo, al uso de palabras de código de igual longitud para cada símbolo que se va a transmitir. La determinación de la probabilidad puede basarse en un contexto asignado al símbolo.
[61] En esta sección, se analizarán las técnicas de codificación de profundidad de múltiples visualizaciones y de múltiples visualizaciones plus. Inicialmente, se analizarán las técnicas de MVC. Como se ha indicado anteriormente, MVC es una ampliación de la norma ITU-T H.264/AVC. En MVC, los datos para una pluralidad de visualizaciones se codifican en orden de primer tiempo, y por consiguiente, la disposición de orden de descodificación se denomina codificación de primer tiempo. En particular, se pueden codificar componentes de visualización (es decir, imágenes) para cada una de la pluralidad de visualizaciones en una instancia de tiempo común, y a continuación se puede codificar otro conjunto de componentes de visualización para una instancia de tiempo diferente, y así sucesivamente. Una unidad de acceso puede incluir imágenes codificadas de todas las visualizaciones para una instancia de tiempo de salida. Debe comprenderse que el orden de descodificación de las unidades de acceso no es necesariamente idéntico al orden de salida (o de visualización).
[62] La FIG. 2 muestra un orden de descodificación (es decir, orden de flujo de bits) de MVC típico. La disposición de orden de descodificación se denomina codificación de tiempo primero. Debe tenerse en cuenta que el orden de descodificación de las unidades de acceso puede no ser idéntico al orden de salida o de visualización. En la FIG. 2, S0-S7 se refieren a diferentes visualizaciones del vídeo de múltiples visualizaciones. Cada T0-T8 representa una instancia de tiempo de salida. Una unidad de acceso puede incluir las imágenes codificadas de todas las visualizaciones para una instancia de tiempo de salida. Por ejemplo, una primera unidad de acceso puede incluir todas las visualizaciones S0-S7 para la instancia de tiempo T0, una segunda unidad de acceso puede incluir todas las visualizaciones S0-S7 para la instancia de tiempo T1, etcétera.
[63] En aras de la brevedad, la divulgación puede utilizar las siguientes definiciones:
componente de visualización: Una representación codificada de una visualización en una única unidad de acceso. Cuando una visualización incluye tanto representaciones de textura como de profundidad codificadas, un componente de visualización se compone de un componente de visualización de textura y un componente de visualización de profundidad.
componente de visualización de textura: Una representación codificada de la textura de una visualización en una única unidad de acceso.
componente de visualización de profundidad: Una representación codificada de la profundidad de una visualización en una única unidad de acceso.
[64] En la FIG. 2, cada una de las visualizaciones incluye conjuntos de imágenes. Por ejemplo, la visualización S0 incluye un conjunto de imágenes 0, 8, 16, 24, 32, 40, 48, 56 y 64, la visualización S1 incluye el conjunto de imágenes 1, 9, 17, 25, 33, 41, 49, 57 y 65, etc. Cada conjunto incluye dos imágenes: una imagen se denomina componente de visualización de textura, y la otra imagen se denomina componente de visualización de profundidad. La componente de visualización de textura y la componente de visualización de profundidad de un conjunto de imágenes de una visualización pueden considerarse como correspondientes entre sí. Por ejemplo, la componente de visualización de textura de un conjunto de imágenes de una visualización se considera correspondiente al componente de visualización de profundidad del conjunto de las imágenes de la visualización, y viceversa (es decir, la componente de visualización de profundidad corresponde a su componente de visualización de textura en el conjunto, y viceversa). Como se usa en esta divulgación, una componente de visualización de textura que corresponde a una componente de visualización de profundidad
5
10
15
20
25
30
35
40
45
50
55
60
65
puede considerarse como la componente de visualización de textura y la componente de visualización de profundidad que son parte de una misma visualización de una única unidad de acceso.
[65] La componente de visualización de textura incluye el contenido de imagen real que se muestra. Por ejemplo, la componente de visualización de textura puede incluir las componentes de luma (Y) y croma (Cb y Cr). El componente de visualización de profundidad puede indicar profundidades relativas de los píxeles en su componente de visualización de textura correspondiente. Como un ejemplo, la componente de visualización de profundidad es una imagen en escala de grises que incluye únicamente valores de luma. En otras palabras, la componente de visualización de profundidad tal vez no transmita ningún contenido de imagen, pero en lugar de eso proporcione una medida de las profundidades relativas de los píxeles en la componente de visualización de textura.
[66] Por ejemplo, un píxel blanco puro en la componente de visualización de profundidad indica que su correspondiente píxel o píxeles de la componente de visualización de textura correspondiente está más cerca de la perspectiva del observador, y un píxel negro puro en la componente de visualización de profundidad indica que su correspondiente píxel o píxeles de la componente de visualización de textura correspondiente está más alejado de la perspectiva del observador. Los diversos tonos de gris entre negro y blanco indican diferentes niveles de profundidad. Por ejemplo, un píxel muy gris en el componente de visualización de profundidad indica que su píxel correspondiente en el componente de visualización de textura está más alejado que un píxel ligeramente gris en el componente de visualización de profundidad. Dado que únicamente es necesaria la escala de grises para identificar la profundidad de los píxeles, la componente de visualización de profundidad no necesita incluir componentes de croma, ya que los valores de color para la componente de visualización de profundidad pueden no servir para ningún fin.
[67] La componente de visualización de profundidad que utiliza solo valores de luma (por ejemplo, valores de intensidad) para identificar la profundidad se proporciona con fines ilustrativos y no debe considerarse limitativa. En otros ejemplos, puede utilizarse cualquier técnica para indicar las profundidades relativas de los píxeles en la componente de visualización de textura.
[68] La FIG. 3 muestra una estructura de predicción MVC típica (que incluye tanto la predicción entre imágenes dentro de cada visualización como la predicción entre visualizaciones) para la codificación de vídeo de múltiples visualizaciones. Las direcciones de predicción en la FIG. 3 se indican mediante flechas, donde el objeto al que se apunta utiliza el objeto desde el que se apunta como referencia de predicción. En MVC, la predicción entre visualizaciones se soporta mediante la compensación de movimiento de disparidad, que utiliza la sintaxis de la compensación de movimiento H.264/AVC, pero permite utilizar una imagen de una visualización diferente como imagen de referencia.
[69] En el ejemplo de la FIG. 3, se ilustran seis visualizaciones (con Identificadores de visualización "S0" a "S5") y se ilustran doce ubicaciones temporales ("T0" a "T11") para cada visualización. Es decir, cada fila en la FIG. 3 corresponde a una visualización, mientras que cada columna indica una ubicación temporal.
[70] Aunque la MVC tiene una denominada visualización de base que es descodificable mediante los descodificadores de la H.264/AVC y los pares de visualizaciones estéreo podrían soportarse también por MVC, la ventaja de la MVC es que podría soportar un ejemplo que usa más de dos visualizaciones como una entrada de vídeo 3D y descodifica este vídeo 3d representado por las múltiples visualizaciones. Un renderizador de un cliente que tiene un descodificador de MVC puede esperar contenido de vídeo tridimensional con múltiples visualizaciones.
[71] Las imágenes en la FIG. 3 se indican en la intersección de cada fila y cada columna. La norma H.264/AVC puede usar el término trama para representar una parte del vídeo. Esta divulgación puede utilizar los términos imagen y trama de forma intercambiable.
[72] Las imágenes en FIG. 3 se ilustran usando un bloque que incluye una letra, con la letra que designa si la imagen correspondiente está intra-codificada (es decir, una imagen I), o inter-codificada en una dirección (es decir, como una imagen P) o en múltiples direcciones (es decir, como una imagen B). En general, las predicciones se indican mediante flechas, donde las imágenes a las que se apunta utilizan la imagen desde la que se apunta como referencia de predicción. Por ejemplo, la imagen P de la visualización S2 en la ubicación temporal T0 se predice a partir de la imagen I de la visualización S0 en la ubicación temporal T0.
[73] Al igual que con la codificación de vídeo de visualización única, las imágenes de una secuencia de vídeo de codificación de vídeo de múltiples visualizaciones pueden codificarse predictivamente con respecto a las imágenes en diferentes ubicaciones temporales. Por ejemplo, la imagen b de la visualización S0 en la ubicación temporal T1 tiene una flecha apuntando a la misma desde la imagen I de la visualización S0 en la ubicación temporal T0, lo cual indica que la imagen b se predice a partir de la imagen I. Adicionalmente, sin embargo, en el contexto de la codificación de vídeo de múltiples visualizaciones, las imágenes pueden ser predichas entre visualizaciones. Es decir, un componente de visualización puede utilizar los componentes de
5
10
15
20
25
30
35
40
45
50
55
60
65
visualización en otras visualizaciones como referencia. En la MVC, por ejemplo, la predicción entre visualizaciones se realiza como si el componente de visualización en otra visualización es una referencia de inter-predicción. Las posibles referencias entre visualizaciones se señalan en la ampliación de la norma MVC del conjunto de parámetros de secuencia (SPS) y pueden ser modificadas por el proceso de construcción de la lista de imágenes de referencia, que habilita el ordenamiento flexible de las referencias de inter-predicción o predicho entre visualizaciones. La predicción entre visualizaciones también es una característica de la ampliación propuesta de múltiples visualizaciones de HEVC, incluyendo 3D-HEVC (múltiples visualizaciones más profundidad).
[74] La FIG. 3 proporciona varios ejemplos de predicción entre visualizaciones. Las imágenes de la visualización S1, en el ejemplo de la FIG. 3, se ilustran como predichas a partir de imágenes en diferentes ubicaciones temporales de la visualización S1, así como predicho entre visualizaciones a partir de imágenes de visualizaciones S0 y S2 en las mismas ubicaciones temporales. Por ejemplo, la imagen b de la visualización S1 en la ubicación temporal T1 se predice a partir de cada una de las imágenes B de la visualización S1 en las ubicaciones temporales T0 y T2, así como las imágenes b de las visualizaciones S0 y S2 en la ubicación temporal T1.
[75] En algunos ejemplos, la FIG. 3 puede visualizarse como ilustrando los componentes de visualización de textura. Por ejemplo, las imágenes I, P, B y b ilustradas en la figura 2 pueden considerarse como componentes de visualización de textura para cada una de las visualizaciones. De acuerdo con las técnicas descritas en esta divulgación, para cada uno de los componentes de visualización de textura ilustrados en la FIG. 3, hay un componente de visualización de profundidad correspondiente. En algunos ejemplos, los componentes de visualización de profundidad pueden predecirse de una manera similar a la ilustrada en la FIG. 3 para los componentes de visualización de textura correspondientes.
[76] La codificación de dos visualizaciones también podría soportarse con MVC. Una de las ventajas de la MVC es que un codificador de MVC podría tomar más de dos visualizaciones como una entrada de vídeo tridimensional y un descodificador de MVC puede descodificar tal representación de múltiples visualizaciones. Por lo tanto, cualquier renderizador con un descodificador MVC puede esperar contenidos de vídeo 3D con más de dos visualizaciones.
[77] En MVC, se permite la predicción entre visualizaciones entre imágenes en la misma unidad de acceso (es decir, con la misma instancia de tiempo). Cuando se codifica una imagen de una de las visualizaciones no básicas, se puede añadir una imagen a una lista de imágenes de referencia si está en una visualización diferente pero presenta una misma instancia de tiempo. Una imagen de referencia entre visualizaciones puede disponerse en cualquier posición de una lista de imágenes de referencia, tal como cualquier imagen de referencia de interpredicción. Como se muestra en la FIG. 3, un componente de visualización puede utilizar los componentes de visualización en otras visualizaciones como referencia. En MVC, la predicción entre visualizaciones se realiza como si el componente de visualización en otra visualización fuera una referencia de inter-predicción.
[78] A continuación se describen algunas técnicas de HEVC relevantes relacionadas con la inter-predicción que se pueden usar con la codificación de múltiples visualizaciones y/o la codificación de múltiples visualizaciones (MV-HEVC) con profundidad (3D-HEVC). La primera técnica para el análisis es la construcción de la lista de imágenes de referencia para la inter-predicción.
[79] La codificación de una PU usando inter-predicción implica calcular un vector de movimiento entre un bloque actual (por ejemplo, PU) y un bloque en una trama de referencia. Los vectores de movimiento se calculan a través de un proceso llamado estimación de movimiento (o búsqueda de movimiento). Un vector de movimiento, por ejemplo, puede indicar el desplazamiento de una unidad de predicción en una trama actual, con respecto a una muestra de referencia de una trama de referencia. Una muestra de referencia puede ser un bloque del que se descubra que se corresponde estrechamente con la parte de la CU que incluye la PU codificada, en términos de diferencia de píxeles, que puede determinarse mediante la suma de una diferencia absoluta (SAD), una suma de diferencias al cuadrado (SSD) u otras métricas de diferencia. La muestra de referencia puede ocurrir en cualquier lugar dentro de una trama de referencia o fragmento de referencia. En algunos ejemplos, la muestra de referencia puede ocurrir en una posición de píxel fraccionaria. Al encontrar una parte de la trama de referencia que mejor se adapta a la parte actual, el codificador determina el vector de movimiento actual para el bloque actual como la diferencia en la ubicación del bloque actual a la parte correspondiente en la trama de referencia (por ejemplo, desde el centro del bloque actual al centro de la parte correspondiente).
[80] En algunos ejemplos, un codificador puede señalar el vector de movimiento para cada bloque en el flujo de bits de vídeo codificado. El vector de movimiento señalado es utilizado por el descodificador para realizar una compensación de movimiento para descodificar los datos de vídeo. Sin embargo, la señalización del vector de movimiento original directamente puede dar como resultado una codificación menos eficiente, ya que típicamente se necesita una gran cantidad de bits para transmitir la información.
5
10
15
20
25
30
35
40
45
50
55
60
65
[81] En algunos casos, en lugar de señalar directamente el vector de movimiento original, el codificador puede predecir un vector de movimiento para cada división, es decir, para cada PU. Al realizar esta predicción de vector de movimiento, el codificador puede seleccionar un conjunto de candidatos de vector de movimiento determinados a partir de bloques contiguos espacialmente en la misma trama que el bloque actual o un candidato de vector de movimiento temporal determinado a partir de un bloque que se encuentra en un mismo lugar en una trama de referencia (es decir, una trama que no sea la trama actual). El codificador de vídeo 20 puede realizar la predicción del vector de movimiento, y si es necesario, señalar un índice a una imagen de referencia para predecir el vector de movimiento, en lugar de señalar un vector de movimiento original, para reducir la velocidad de bits en la señalización. Los candidatos del vector de movimiento de los bloques contiguos espacialmente se pueden denominar candidatos MVP espaciales, mientras que los candidatos del vector de movimiento de bloques que se encuentran en el mismo lugar en otra trama de referencia se pueden denominar candidatos temporales MVP.
[82] Se proponen dos modos o tipos de predicción de vector de movimiento diferentes en la norma HEVC. Un modo se denomina modo de "fusión". El otro modo se denomina predicción adaptativa de vectores de movimiento (AMVP).
[83] En el modo de fusión, el codificador de vídeo 20 ordena al descodificador de vídeo 30 a través de la señalización de flujo de bits de sintaxis de predicción, copiar un vector de movimiento, un índice de referencia (identificando una trama de referencia, en una lista de imágenes de referencia dada, hacia la cual apunta el vector de movimiento) y la dirección de predicción de movimiento (que identifica la lista de imágenes de referencia (Lista 0 o Lista 1), es decir, en términos de si la trama de referencia precede o sigue temporalmente a la trama actual) de un vector de movimiento seleccionado candidato para un bloque actual de la trama. Esto se lleva a cabo señalando en el flujo de bits un índice en una lista candidata del vector de movimiento que identifica el candidato de vector de movimiento seleccionado (es decir, el candidato de MVP espacial particular o candidato de MVP temporal).
[84] Por lo tanto, para el modo de fusión, la sintaxis de predicción puede incluir un indicador que identifica el modo (en este caso, el modo de "fusión") y un índice que identifica el candidato de vector de movimiento seleccionado. En algunos casos, el candidato de vector de movimiento estará en un bloque causal en referencia al bloque actual. Es decir, el candidato de vector de movimiento ya habrá sido descodificado por el descodificador de vídeo 30. Como tal, el descodificador de vídeo 30 ya ha recibido y/o determinado el vector de movimiento, el índice de referencia y la dirección de predicción de movimiento para el bloque causal. En consecuencia, el descodificador 30 de vídeo puede recuperar simplemente el vector de movimiento, el índice de referencia y la dirección de predicción de movimiento asociados con el bloque causal de la memoria y copiar estos valores como la información de movimiento para el bloque actual. Para reconstruir un bloque en modo de fusión, el descodificador 30 de vídeo obtiene el bloque predictivo usando la información de movimiento obtenida para el bloque actual, y agrega los datos residuales al bloque predictivo para reconstruir el bloque codificado.
[85] Tenga en cuenta que, para el modo de omisión, se genera la misma lista de candidatos de fusión pero no se señala ningún residuo. Para simplificar, dado que el modo de omisión tiene el mismo proceso de obtención de vectores de movimiento que el modo de fusión, todas las técnicas descritas en este documento se aplican tanto a los modos de fusión como de omisión.
[86] En AMVP, el codificador de vídeo 20 ordena al descodificador de vídeo 30, a través de señalización de flujo de bits, copiar solo el vector de movimiento del bloque candidato y usar el vector copiado como predictor para el vector de movimiento del bloque actual, y señala la diferencia del vector de movimiento (MVD). La trama de referencia y la dirección de predicción asociados con el vector de movimiento del bloque actual se señalan por separado. Un MVD es la diferencia entre el vector de movimiento actual para el bloque actual y un predictor de vector de movimiento obtenido de un bloque candidato. En este caso, el codificador de vídeo 20, usando la estimación de movimiento, determina un vector de movimiento real para el bloque a codificar, y luego determina la diferencia entre el vector de movimiento real y el predictor de vector de movimiento como el valor de MVD. De esta forma, el descodificador de vídeo 30 no usa una copia exacta del vector de movimiento candidato como el vector de movimiento actual, como en el modo de fusión, sino que puede usar un candidato de vector de movimiento que puede estar "cerca" en valor al vector de movimiento actual determinado a partir de la estimación de movimiento y agregar el MVD para reproducir el vector de movimiento actual. Para reconstruir un bloque en modo AMVP, el descodificador agrega los datos residuales correspondientes para reconstruir el bloque codificado.
[87] En la mayoría de las circunstancias, el MVD requiere menos bits para señalar que todo el vector de movimiento actual. Como tal, AMVP permite una señalización más precisa del vector de movimiento actual mientras se mantiene la eficiencia de codificación antes que el envío del vector de movimiento completo. Por el contrario, el modo de fusión no permite la especificación de un MVD, y como tal, el modo de fusión sacrifica la precisión de la señalización del vector de movimiento para una mayor eficiencia de señalización (es decir, menos bits). La sintaxis de predicción para AMVP puede incluir un indicador para el modo (en este caso, el indicador
5
10
15
20
25
30
35
40
45
50
55
60
65
AMVP), el índice para el bloque candidato, el MVD entre el vector de movimiento actual y el vector de movimiento predictivo del bloque candidato, el índice de referencia y la dirección de predicción de movimiento
[88] La FIG. 4 muestra un conjunto de ejemplos de bloques candidatos 120 que se pueden usar tanto en modo de fusión como en modo AMVp. En este ejemplo, los bloques candidatos se encuentran en las posiciones espaciales de la parte inferior izquierda (A0) 121, izquierda (A1) 122, izquierda arriba (B2) 125, arriba (B1) 124 y derecha arriba (B0) 123, y en la posición (posiciones) temporal(es) (T) 126. En este ejemplo, el bloque candidato izquierdo 122 está adyacente al borde izquierdo del bloque actual 127. El borde inferior del bloque izquierdo 122 está alineado con el borde inferior del bloque actual 127. El bloque anterior 124 está adyacente al borde superior del bloque actual 127. El borde derecho del bloque anterior 124 está alineado con el borde derecho del bloque actual 127.
[89] Los bloques A0, A1, B0, B1 y B2 se denominan comúnmente bloques contiguos espacialmente o PU contiguos espacialmente. El codificador de vídeo 20/30 puede determinar las ubicaciones de los bloques contiguos espacialmente al determinar primero la ubicación de la muestra de luma superior izquierda de la PU actual (por ejemplo, el bloque 127 en la FIG. 4) relativo a la muestra superior izquierda de la imagen actual. Esta ubicación de luma se denominará ubicación (xP, yP). El codificador de vídeo 20/30 también puede determinar el ancho de la PU de luma (abreviado nPSW) y la altura de la PU de luma (abreviado nPSH). Basándose en la ubicación de la muestra de luma superior izquierda de la PU actual y la altura y el ancho de la PU actual, la ubicación de una muestra de luma de los bloques contiguos espaciales se puede determinar de la siguiente manera:
el bloque A0 incluye la muestra de luma en la ubicación (xP - 1, yP + nPSH);
el bloque A1 incluye la muestra de luma en la ubicación (xP - 1, yP + nPSH - 1);
el bloque B0 incluye la muestra de luma en la ubicación (xP + nPSW, yP - 1);
el bloque B1 incluye la muestra de luma en la ubicación (xP + nPSW - 1, yP - 1);
el bloque B2 incluye la muestra de luma en la ubicación (xP - 1, yP - 1).
Los bloques contiguos espaciales pueden ser del mismo tamaño o pueden tener diferentes tamaños que la PU actual.
[90] Una lista de candidatos para su uso en el modo de fusión se puede obtener usando los bloques contiguos espaciales analizados anteriormente. Los vectores de movimiento y los índices de referencia para ambas listas de referencia se pueden obtener tal como se especifica en los siguientes pasos ordenados, que son un ejemplo de un proceso de obtención para candidatos de fusión espacial. Como parte del proceso de obtención, el codificador de vídeo 20 y el descodificador de vídeo 20 comprueban la información de movimiento de las PU contiguas espaciales en el siguiente orden: A1, B1, B0, A0, o B2. El codificador de vídeo 20 y el descodificador de vídeo 30 pueden realizar un recorte restringido para reducir o eliminar que los candidatos duplicados se agreguen a la lista de candidatos. El codificador de vídeo 20/30 puede obtener los candidatos espaciales que se incluirán en la lista de candidatos del modo de fusión de la siguiente manera:
- El codificador de vídeo 20/30 inserta A1 en la lista de candidatos si A1 está disponible.
- Si B1 y A1 tienen los mismos vectores de movimiento y los mismos índices de referencia, entonces el codificador de vídeo 20/30 no inserta B1 en la lista de candidatos. Si B1 y A1 no tienen los mismos vectores de movimiento y los mismos índices de referencia, entonces el codificador de vídeo 20/30 inserta B1 en la lista de candidatos, si B1 está disponible.
- Si B0 y B1 tienen los mismos vectores de movimiento y los mismos índices de referencia, entonces el codificador de vídeo 20/30 no inserta B0 en la lista de candidatos. Si B0 y B1 no tienen los mismos vectores de movimiento y los mismos índices de referencia, entonces el codificador de vídeo 20/30 inserta B0 en la lista de candidatos, si B0 está disponible.
- Si A0 y A1 tienen los mismos vectores de movimiento y los mismos índices de referencia, entonces el codificador de vídeo 20/30 no inserta A0 en la lista de candidatos. Si A0 y A1 no tienen los mismos vectores de movimiento y los mismos índices de referencia, entonces el codificador de vídeo 20/30 inserta A0 en la lista de candidatos, si A0 está disponible.
- El codificador de vídeo 20/30 inserta B2 en la lista de candidatos cuando no se cumplen las dos condiciones siguientes:
- B2 y B1 o B2 y A1 tienen los mismos vectores de movimiento y los mismos índices de referencia.
5
10
15
20
25
30
35
40
45
50
55
60
- Los cuatro candidatos de fusión espacial obtenidos de Ai, Bi, B0, A0 se incluyen en la lista de candidatos
[91] El codificador de vídeo 20/30 puede obtener el candidato temporal que se debe incluir en la lista de candidatos del modo de fusión de la siguiente manera:
- Para obtener el candidato de fusión temporal, el codificador de vídeo 20/30 primero identifica una imagen que se encuentra en el mismo lugar. Si la imagen actual es un fragmento B, se señala un elemento sintáctico "collocated_from_l0_flag" en la cabecera del fragmento para indicar si la imagen que se encuentra en el mismo lugar es de RefPicList0 o RefPicListl.
- Después de que el codificador de vídeo 20/30 identifica una lista de imágenes de referencia, el codificador de vídeo 20/30 usa el elemento sintáctico collocated_ref_idx, señalado en la cabecera de fragmento, para identificar la imagen en la imagen en la lista.
- El codificador de vídeo 20/30 luego identifica una PU que se encuentra en el mismo lugar al comprobar la imagen que se encuentra en el mismo lugar. El codificador de vídeo 20/30 utiliza el movimiento de la PU inferior derecha de la CU que contiene esta PU, o el movimiento de la PU inferior derecha dentro de las PU centrales de la CU que contiene esta PU como el candidato temporal.
- Cuando los vectores de movimiento identificados por el proceso anterior se utilizan para generar un candidato de movimiento para el modo de fusión, el codificador de vídeo 20/30 puede necesitar escalar los vectores de movimiento basándose en si la ubicación temporal (reflejada por el recuento de orden de la imagen, es decir, POC).
- En HEVC, el PPS incluye un flag enable_temporal_mvp_flag. Cuando una imagen particular con temporal_id igual a 0 se refiere a un PPS que tiene enable_temporal_mvp_flag igual a 0, el codificador de vídeo 20/30 puede marcar todas las imágenes de referencia en el DPB "sin usar para la predicción del vector de movimiento temporal" y ningún vector de movimiento de las imágenes anteriores a esa imagen particular en orden de descodificación se usaría como un predictor de vector de movimiento temporal en la descodificación de la imagen particular o una imagen después de la imagen particular en orden de descodificación.
[92] Si el fragmento actual es un fragmento B y el número total de candidatos obtenidos de los procesos de obtención de candidatos espaciales y temporales descritos anteriormente es menor que el número máximo de candidatos y mayor que 1, entonces el codificador de vídeo 20/30 puede invocar un proceso para generar candidatos bi-predictivos. El codificador de vídeo 20/30 puede obtener los candidatos bi-predictivos que se incluirán en la lista de candidatos del modo de fusión de la siguiente manera:
- Basándose en la Tabla 1 siguiente, generar un candidato bi-predictivo combinado con índice combIdx, la información de movimiento RefList0 (MotList0) de la lista de candidatos con entrada igual a l0CandIdx si está disponible y la información de movimiento RefListl (MotListl) de la lista de candidatos con entrada igual a liCandIdx, si está disponible y no es idéntica a MotList0, puede ser reutilizada por el codificador de vídeo 20/30 como la información de movimiento RefList0 y RefListl del candidato bi-predictivo combinado.
Tabla 1 - Especificación de lOCandIdx y liCandIdx en HEVC
combIdx
0 1 2 3 4 5 6 7 8 9 10 11
lOCandIdx
0 1 0 2 1 2 0 3 1 3 2 3
liCandIdx
1 0 2 0 2 1 3 0 3 1 3 2
[93] El codificador de vídeo 20/30 puede obtener los candidatos de vector de movimiento cero que se incluirán en la lista de candidatos de modo de fusión si el número total de candidatos obtenidos de los tres procesos anteriores descritos anteriormente para determinar candidatos espaciales, temporales y bi-predictivos produce menos que el número máximo de candidatos. En tal caso, el codificador de vídeo 20/30 puede insertar unos vectores de movimiento cero para cada imagen de referencia en la lista de candidatos.
[94] En HEVC WD 10, el número total de candidatos en la lista de MRG es de hasta 5 y five_minus_max_num_merge_cand se indica para especificar el número máximo de candidatos de MRG restados de 5 en la cabecera de fragmento.
5
10
15
20
25
30
35
40
45
50
55
60
65
[95] Para mejorar aún más la eficiencia de codificación para codificar vídeo 3D, se han introducido dos nuevas tecnologías, a saber, "predicción de movimiento entre visualizaciones" y "predicción residual entre visualizaciones" en 3D-HEVC. Para habilitar estas dos herramientas de codificación, el codificador de vídeo 20/30 está configurado para obtener vectores de disparidad para un bloque actual.
[96] El codificador de vídeo 20/30 se puede configurar para obtener un vector de disparidad, usando la técnica denominada vector de disparidad basado en bloques contiguos (NBDV), que utiliza vectores de movimiento de disparidad de bloques contiguos espaciales y temporales para determinar un vector de disparidad para un bloque actual. En NBDV, el codificador de vídeo 20/30 comprueba los vectores de movimiento de bloques contiguos espaciales o temporales en una orden de comprobación fija, y una vez que se identifica un vector de movimiento de disparidad, es decir, el vector de movimiento apunta a una imagen de referencia entre visualizaciones, el codificador de vídeo 20/30 finaliza el proceso de comprobación. El codificador de vídeo 20/30 devuelve el vector de movimiento de disparidad identificado y lo convierte en el vector de disparidad que se puede usar en la predicción de movimiento entre visualizaciones y la predicción residual entre visualizaciones. Si no se encuentra un vector de disparidad después de comprobar todos los bloques contiguos predefinidos, el codificador de vídeo 20/30 puede usar un vector de disparidad cero para la predicción de movimiento entre visualizaciones mientras que la predicción residual entre visualizaciones puede desactivarse para la unidad de predicción correspondiente (PU).
[97] Los bloques utilizados por el codificador de vídeo 20/30 para NBDV incluyen bloques contiguos espaciales y bloques contiguos temporales. El codificador de vídeo 20/30 analiza hasta cinco bloques contiguos espaciales como parte de la obtención del vector de disparidad. Los cinco bloques contiguos en el espacio incluyen los bloques inferior izquierdo, izquierdo, superior derecho, superior y superior izquierdo de una PU actual, designados por A0, A1, B0, B1 y B2. A este respecto, los bloques contiguos espaciales analizados como parte de NBDV pueden corresponder a los mismos bloques contiguos espaciales analizados anteriormente con respecto al modo de fusión en la FIG. 4, aunque los bloques contiguos espaciales utilizados para NBDV y la construcción de lista de candidatos para AMVP y modos de fusión no necesariamente tienen que ser los mismos.
[98] El codificador de vídeo 20/30 también determina bloques contiguos temporales. El codificador de vídeo 20/30 puede tratar todas las imágenes de referencia de la visualización actual como imágenes candidatas, o en algunas implementaciones, el número de imágenes candidatas puede restringirse aún más, por ejemplo, a cuatro imágenes candidatas. El codificador de vídeo 20/30 primero comprueba una imagen de referencia que se encuentra en el mismo lugar y comprueba el resto de las imágenes candidatas, por ejemplo, en el orden ascendente del índice de referencia (refIdx). Cuando tanto RefPicList0[refIdx] como RefPicList1[refIdx] están disponibles, RefPicListX[refIdx] precede a la otra imagen, en el que X es igual a collocated_from_l0_flag.
[99] Para cada imagen candidata, el codificador de vídeo 20/30 determina tres regiones candidatas para obtener los bloques contiguos temporales. Cuando una región cubre más de un bloque de 16x16, el codificador de vídeo 20/30 puede comprobar todos los bloques de 16x16 en dicha región, por ejemplo, en el orden de escaneo de trama. Las tres regiones candidatas se definen de la forma siguiente: (1) CPU- La región que se encuentra en el mismo lugar que la PU actual o CU actual, (2) CLCU La unidad de codificación más grande (LCU) que cubre la región que se encuentra en el mismo lugar que la PU actual, y (3) BR - Bloque 4x4 inferior derecho de CPU.
[100] El codificador de vídeo 20/30 se puede configurar para comprobar los bloques en un orden específico, es decir, una orden de comprobación. El codificador de vídeo 20/30 puede primero comprobar los bloques contiguos espaciales, seguidos de bloques contiguos temporales. El orden de comprobación de los cinco bloques contiguos espaciales puede, por ejemplo, definirse como A1, B1, B0, A0 y B2, o cualquier otro orden similar. Para cada imagen candidata, el codificador de vídeo 20/30 puede comprobar las tres regiones candidatas en la imagen candidata en una orden de comprobación. El orden de comprobación de las tres regiones puede, por ejemplo, definirse como CPU, CLCU y BR para la primera visualización no básica, BR, CPU y CLU para la segunda visualización no básica, o cualquier otro orden similar.
[101] Como se presentó anteriormente, el codificador de vídeo 20/30 se puede configurar para realizar una obtención de candidatos entre visualizaciones. Basándose en el vector de disparidad (DV), el codificador de vídeo 20/30 puede determinar un nuevo vector de movimiento candidato o vector de movimiento predicho entre visualizaciones, si está disponible, y el nuevo vector de movimiento candidato o vector de movimiento predicho entre visualizaciones para una lista de candidatos para usar en modos AMVP y de omisión / fusión. El vector de movimiento predicho entre visualizaciones, si está disponible, es un vector de movimiento temporal.
[102] La FIG. 5 muestra un ejemplo del proceso de obtención del candidato de vector de movimiento predicho entre visualizaciones. Se calcula un vector de disparidad encontrando el bloque correspondiente 142 en una visualización diferente (por ejemplo, visualización 0 o V0) a la PU 140 actual en la visualización actualmente codificada (visualización 1 o V1). Si el bloque correspondiente 142 no está intra-codificado y no predicho entre visualizaciones, y su imagen de referencia tiene un valor de POC que está en la lista de imágenes de referencia de la PU 140 actual (por ejemplo, Ref0, Lista 0; Ref0, Lista1; Ref1, Lista 1, como se muestra en la FIG. 5),
5
10
15
20
25
30
35
40
45
50
55
60
65
entonces la información de movimiento para el bloque correspondiente 142 se usa como un vector de movimiento predicho entre visualizaciones. Como se indicó anteriormente, el índice de referencia se puede escalar basándose en el POC.
[103] Si el vector de movimiento predicho entre visualizaciones no está disponible, es decir, ambos indicadores de utilización de predicción de todas las listas de imágenes de referencia disponibles son iguales a 0, el vector de disparidad se convierte en un vector de movimiento de disparidad entre visualizaciones, que se agrega a la lista de candidatos de fusión o AMVP, en la misma posición, como vector de movimiento predicho entre visualizaciones cuando esté disponible.
[104] Durante el modo de omisión / fusión o AMVP, puede haber hasta dos vectores de movimiento predichos entre visualizaciones, correspondientes a RefPicList0 y RefPicList1, respectivamente. Estos dos vectores de movimiento se designan como el vector 0 de movimiento predicho entre visualizaciones y el vector 1 de movimiento predicho entre visualizaciones, respectivamente.
[105] Para un ejemplo de técnica de modo de fusión / omisión, el codificador de vídeo 20/30 puede obtener el vector de movimiento predicho entre visualizaciones de la siguiente manera:
- El codificador de vídeo 20/30 localiza, por el vector de disparidad, un bloque correspondiente de PU/CU actual en una visualización de referencia de la misma unidad de acceso.
- Si el bloque correspondiente no está intra-codificado, para cada lista de imágenes de referencia (es decir, RefPicListLX, con X es 0 o 1) de PU/CU actual, entonces el codificador de vídeo 20/30 puede:
- Si el bloque correspondiente tiene un vector de movimiento (mvLX) que hace referencia a una imagen de referencia temporal y la imagen de referencia temporal tiene un valor de POC igual al de una entrada en RefPicListLX, entonces el codificador de vídeo 20/30 puede configurar mvLX para inter-visualizar el vector movimiento predicho X y establecer el índice de referencia objetivo en la primera imagen en RefPicListX, que tiene el mismo POC que la imagen de referencia a la que se refiere mvLX. El codificador de vídeo 20/30 puede establecer adicionalmente el indicador de utilización de predicción de RefPicListLX, indicado por predFlagLXInterView, en 1, lo que indica que el predictor de mvLX está actualmente disponible. De lo contrario, el codificador de vídeo 20/30 establece predFlagLXInterView en 0, lo que indica que el predictor de mvLX no está disponible actualmente. Si un predictor de mvLX no está disponible, no se genera el candidato de AMVP basado en mvLX. Si un predictor para mvLX y mvLY (siendo Y igual a 1-X) no están disponibles, el candidato de fusión basado en ellos no se genera. Si solo está disponible uno de los
predictores para mvLX, se puede generar un candidato de fusión basado en el candidato
disponible como un candidato de predicción unidireccional.
[106] En la técnica descrita anteriormente, cuando la imagen de referencia del bloque correspondiente en una
lista de imágenes de referencia X (siendo X 0 o 1) es una imagen de referencia temporal y su valor de POC es desigual al de cualquier entrada en RefPicListLX pero igual al de una entrada en RefPicListLY de PU/CU actual, el vector de movimiento correspondiente también se considera como no disponible para RefPicListLY, incluso cuando el indicador de utilización de predicción de RefPicListLY es igual a 0. Sin embargo, de acuerdo con las técnicas de esta divulgación, para el modo de omisión / fusión, si el bloque correspondiente (ubicado por un
vector de disparidad) tiene un vector de movimiento mvLX (con X es 0 o 1) que hace referencia a una imagen de
referencia temporal, el codificador de vídeo 20 / 30 puede estar configurado para usar mvLX para predecir no solo el vector X de movimiento predicho entre visualizaciones sino también el vector Y de movimiento predicho entre visualizaciones (siendo Y igual a 1-X).
[107] En consecuencia, si mvLX se refiere a una imagen de referencia que tiene el mismo valor de POC que cualquier imagen en RefPicListX del fragmento actual, entonces el codificador de vídeo 20/30 puede establecer mvLX para inter-visualizar el vector de movimiento X predicho y establecer el índice de referencia objetivo a la primera imagen en RefPicListX que tiene el mismo pOc que la imagen de referencia a la que se refiere mvLX. De lo contrario, si mvLY se refiere a una imagen de referencia que tiene el mismo valor de POC que cualquier imagen en RefPicListX en el fragmento actual, el codificador de vídeo 20/30 puede configurar mvLY para intervisualizar el vector de movimiento X predicho y establecer el índice de referencia objetivo en el primera imagen en RefPicListX que tiene el mismo POC que la imagen de referencia a la que mvLY se refiere. Ejemplos más detallados de cómo el codificador de vídeo 20/30 puede usar mvLX para predecir no solo el vector X de movimiento predicho entre visualizaciones sino también el vector Y de movimiento predicho entre visualizaciones se proporcionarán a continuación.
[108] Para un ejemplo de técnica de modo AMVP, si el índice de referencia objetivo corresponde a un vector de movimiento temporal, el codificador de vídeo 20/30 puede obtener el vector de movimiento predicho entre visualizaciones de la siguiente manera:
5
10
15
20
25
30
35
40
45
50
55
60
65
- El codificador de vídeo 20/30 localiza, por el vector de disparidad, un bloque correspondiente de PU/CU actual en una visualización de referencia de la misma unidad de acceso.
- Dada una lista de imágenes de referencia objetivo (RefPicListLX, con X reemplazado por 0 o 1) y un índice de imagen de referencia objetivo Idx, entonces el codificador de vídeo 20/30 obtiene el vector X de movimiento predicho entre visualizaciones de la siguiente manera:
a. El codificador de vídeo 20/30 establece el indicador disponible (availableFlagLXInterView) del vector de movimiento predicho entre visualizaciones para RefPicListLX en 0.
b. Si el bloque correspondiente tiene un vector de movimiento mvL0 que hace referencia a una imagen de referencia temporal y la imagen de referencia tiene un valor de POC igual al de RefPicListLX [Idx] de la PU/CU actual, el codificador de vídeo 20/30 obtiene el vector de movimiento como el vector de movimiento predicho entre visualizaciones para RefPicListLX y establece availableFlagLXInterView en 1.
c. Si availableFlagLXInterView es igual a 0 y la imagen de referencia a la que apunta mvL1 del bloque correspondiente está disponible y no es una imagen de referencia entre visualizaciones y tiene un valor de POC igual al de RefPicListLX[Idx] de la PU/CU actual, entonces el codificador de vídeo 20/30 obtiene el vector de movimiento como el vector de movimiento predicho entre visualizaciones para RefPicListLX y establece availableFlagLXInterView en 1.
[109] En el modo AMVP, si el índice de referencia objetivo corresponde a un vector de movimiento de disparidad, el vector de movimiento predicho entre visualizaciones no puede obtenerse y el vector de disparidad se convierte en un vector de movimiento de disparidad entre visualizaciones.
[110] En el ejemplo de la técnica de modo AMVP descrita anteriormente, la información de movimiento de la lista de imágenes de referencia 0 del bloque correspondiente siempre se comprueba primero, sin importar si la lista de imágenes de referencia objetivo es 0 o 1. De acuerdo con las técnicas de esta divulgación, en el modo AMVP, para un índice de referencia objetivo refIdxLX, en lugar de comparar primero el valor de POC de la imagen referida por mvL0 y luego la referida por mvL1 del bloque correspondiente, con el POC de RefPicListX[refIdxLX] (del fragmento actual), el codificador de vídeo 20/30 puede primero comparar el valor de POC de la imagen referida por mvLX y luego la referida por mvLY (con Y igual a 1-X). Una vez que se encuentra el vector de movimiento predicho entre visualizaciones, el codificador de vídeo 20/30 puede finalizar el proceso de comparación. Cuando la comparación concluye que el valor de POC de RefPicListX[refIdxLX] es igual al valor de POC de la imagen referida por mvL0 o mvL1 durante la comparación, el vector de movimiento predicho entre visualizaciones está disponible y puede establecerse, pero el codificador de vídeo 20/30, a mvL0 o mvL1.
[111] Tanto para la técnica de modo de fusión / omisión de ejemplo como para la técnica de ejemplo de modo AMVP analizada anteriormente, cuando el POC de la imagen de referencia del bloque correspondiente es diferente al de cualquier entrada de la lista de imágenes de referencia de CU/PU actual, el vector de movimiento predicho entre visualizaciones se considera como no disponible. Sin embargo, de acuerdo con las técnicas de esta divulgación, cuando ni mvL0 ni mvL1 se refiere a una imagen de referencia temporal que tiene el mismo POC que la de cualquier imagen de referencia en RefPicList0 o RefPicList1 del fragmento actual, el codificador de vídeo 20/30 puede obtener el vector de movimiento predicho entre visualizaciones 0 escalando el primer mvL0 y mvL1 disponibles a la primera imagen de referencia temporal en RefPicList0 basándose en las distancias POC.
[112] Hasta ahora, esta divulgación ha analizado varias deficiencias de las técnicas conocidas de 3D-HEVC AMVP y de modo de fusión y ha introducido técnicas que pueden abordar algunas de estas deficiencias. Las técnicas introducidas en esta divulgación pueden mejorar adicionalmente la eficiencia de codificación del vector de movimiento predicho entre visualizaciones en la codificación de múltiples visualizaciones o 3DV basada en HEVC. Se proporcionarán ejemplos más detallados de las técnicas presentadas anteriormente.
[113] Como se ha presentado anteriormente, el codificador de vídeo 20/30 se puede configurar para realizar un proceso de obtención de vector de movimiento predicho entre visualizaciones para el modo de fusión / omisión. Se analizará ahora un ejemplo de cómo se puede realizar dicho proceso de obtención de acuerdo con las técnicas de esta divulgación. Para el modo de fusión / omisión, el codificador de vídeo 20/30 puede obtener el vector de movimiento predicho entre visualizaciones X (siendo X igual a 0 o 1) de la siguiente manera:
- El codificador de vídeo 20/30 puede localizar, mediante el vector de disparidad, un bloque correspondiente de PU/CU actual en una visualización de referencia de la misma unidad de acceso. Los dos vectores de movimiento del bloque correspondiente, si están disponibles, se pueden denotar como mvLX y mvLY (con Y igual a 1-X) y las imágenes de referencia correspondientes se pueden denotar como corRefPicX y corRefPYY.
5
10
15
20
25
30
35
40
45
50
55
60
- El codificador de vídeo 20/30 puede establecer inicialmente predFlagLXInterView en 0, lo que indica que RefPicListLX no se usa para la predicción con mvLX.
- Si corRefPicX está disponible y es una imagen de referencia temporal, entonces el codificador de vídeo 20/30 puede realizar lo siguiente:
Para cada i de 0 a num_ref_idx_lX_active_minus1, inclusive, si el POC de RefPicListX[i] (del fragmento actual) es igual al POC de corRefPicX, entonces el codificador de vídeo 20/30 puede establecer que el vector de movimiento predicho entre visualizaciones X sea igual a mvLX, establecer el índice de referencia objetivo en i, y establecer predFlagLXInterView en 1. En otras palabras, se analiza un conjunto de imágenes de referencia en RefPicListX para determinar si tienen un POC igual al POC de corRefPicX. Si una imagen de referencia en RefPicListX, tiene un POC igual al POC de corRefPicX, entonces la referencia objetivo se establece para identificar esa imagen de referencia. Además, el codificador de vídeo 20/30 establece predFlagLXInterView en 1 para indicar que RefPicListLX se usa para la predicción con mvLX. El conjunto de imágenes en RefPicListLX incluye imágenes con índices de 0 a num_ref_idx_lX_active_minus1.
- Si predFlagLXInterView es igual a 0, significa que en el codificador de vídeo del paso anterior 20/30 no encontró una imagen de referencia en RefPicListX que tenga un POC igual al pOc de corRefPicX, y si corRefPicY está disponible y es una imagen de referencia temporal, entonces el vídeo el codificador 20/30 puede realizar lo siguiente:
Para cada i de 0 a num_ref_idx_lX_active_minus1, inclusive, si el POC de RefPicListX[i] es igual al POC de corRefPicY, entonces el codificador de vídeo 20/30 establece el vector de movimiento predicho entre visualizaciones X igual a mvLY, establece el índice de referencia objetivo en i, y establece predFlagLXInterView en 1. En otras palabras, se analiza un conjunto de imágenes de referencia en RefPicListX para determinar si tienen un POC igual al POC de corRefPicY. Si una imagen de referencia en RefPicListX tiene un POC igual al POC de corRefPicY, entonces la referencia objetivo se establece para identificar esa imagen de referencia. Además, el codificador de vídeo 20/30 establece predFlagLXInterView en 1 para indicar que RefPicListLX se usa para la predicción con mvLY. El conjunto de imágenes en RefPicListLX incluye imágenes con índices de 0 a num_ref_idx_lX_active_minus1.
[114] En una implementación, cuando tanto el vector 0 de movimiento predicho entre visualizaciones como el vector 1 de movimiento predicho entre visualizaciones están disponibles y se refieren a la misma imagen de referencia, y tienen los mismos vectores de movimiento (componentes horizontales y verticales), entonces el codificador de vídeo 20 / 30 establece uno de los dos vectores de movimiento predichos entre visualizaciones como no disponible. En una alternativa, el codificador de vídeo 20/30 establece el vector 1 de movimiento predicho entre visualizaciones como no disponible, mientras que en otra alternativa, el codificador de vídeo 20/30 establece el vector 0 predicho entre visualizaciones como no disponible.
[115] En otra implementación de acuerdo con las técnicas de esta divulgación, para el modo de fusión / omisión, el codificador de vídeo 20/30 puede obtener el vector de movimiento predicho entre visualizaciones de la siguiente manera:
- El codificador de vídeo 20/30 localiza, mediante el vector de disparidad, un bloque correspondiente de una PU/CU actual en una visualización de referencia de la misma unidad de acceso. Los dos vectores de movimiento del bloque correspondiente, si están disponibles, se pueden denotar como mvLX y mvLY (con Y igual a 1-X) y las imágenes de referencia correspondientes se pueden denotar como corRefPicX y corRefPYY.
- Para cada X de 0 a 1, se aplica lo siguiente:
El codificador de vídeo 20/30 puede establecer predFlagLXInterView en 0.
Si corRefPicX está disponible y es una imagen de referencia temporal, se aplica lo siguiente hasta que predFlagLXInterView sea igual a 1:
Para cada i de 0 a num_ref_idx_lX_active_minus1, inclusive, si el POC de RefPicListX[i] (del fragmento actual) es igual al POC de corRefPicX, el vector X de movimiento predicho entre visualizaciones se establece igual a mvLX, y el índice de referencia objetivo se establece en i, predFlagLXInterView se establece en 1.
5
10
15
20
25
30
35
40
45
- Si tanto el vector X de movimiento predicho entre visualizaciones como el vector Y de movimiento predicho entre visualizaciones no están disponibles, es decir, predFlagL0InterView y predFlagL1InterView son iguales a 1, para cada X de 0 a 1, se aplica lo siguiente:
Si corRefPicY (con Y es igual a 1-X) está disponible y es una imagen de referencia temporal, se aplica lo siguiente hasta que predFlagLXInterView sea igual a 1:
Para cada i de 0 a num_ref_idx_lX_active_minus1, inclusive, si el POC de RefPicListX[i] es igual al POC de corRefPicY, el vector de movimiento predicho entre visualizaciones X se establece igual a mvLY, y el índice de referencia objetivo se establece en i, predFlagLXInterView se establece en 1.
[116] Como se ha presentado anteriormente, el codificador de vídeo 20/30 puede configurarse para realizar la obtención del vector de movimiento predicho entre visualizaciones con escalado, un ejemplo de lo cual se analizará ahora. Cuando tanto el vector 0 de movimiento predicho entre visualizaciones como el vector 1 de movimiento predicho entre visualizaciones no están disponibles cuando se obtienen mediante las técnicas descritas anteriormente, el codificador 20 de vídeo puede obtener el vector 0 de movimiento predicho entre visualizaciones de la siguiente manera:
- El codificador de vídeo 20/30 puede localizar un bloque correspondiente, mediante el vector de disparidad, de PU/CU actual en una visualización de referencia de la misma unidad de acceso. Los dos vectores de movimiento del bloque correspondiente, si están disponibles, se pueden denotar como mvLX y mvLY (con Y igual a 1-X), y las imágenes de referencia correspondientes se pueden denotar como corRefPicX y corRefPYY.
- El codificador de vídeo 20/30 puede establecer predFlagL0InterView en 0.
- Para cada X de 0 a 1, el codificador de vídeo 20/30 puede realizar lo siguiente hasta que predFlagL0InterView se establezca igual a 1.
Si mvLX está disponible y corRefPicX es una imagen de referencia temporal, entonces el codificador de vídeo 20/30:
Para cada i de 0 a num_ref_idx_l0_active_minus1, inclusive, si RefPicList0[i] es una imagen de referencia temporal, el codificador de vídeo 20/30 obtiene el vector de movimiento predicho entre visualizaciones 0 como una versión a escala del vector de movimiento especificado por las
ecuaciones 1-5 a continuación:

tx = ( 16384 + (Abs( td )»1)) / td (1)

distScaleFactor = Clip3( -4096,4095, (tb * tx + 32 )» 6 ) (2)
vector de movimiento predicho entre visualizaciones 0 =

Clip3( 32768, 32767, Sign2( distScaleFactor * mvLX ) * ( {Absí distScuLeFactor * mv LX) l 127 )» 8 ) ) (3)
donde PicOrderCntVal es el POC de la imagen actual, td y tb se obtienen como

td = Clip3( -128, 127, PicOrderCntVal - PicOrdcrCnt(corRefPicX)) (4)

tb = Clip3( -128,127, PicOrderCntVal - PicOrderCnt( RcfPicListX [ i ] )) (5)
y el índice de referencia objetivo para el vector de movimiento predicho entre visualizaciones 0 se establece en i, y predFlagL0InterView se establece en 1.
5
10
15
20
25
30
35
40
[117] En una implementación, después de aplicar las técnicas del procedimiento anterior, si un vector de movimiento predicho entre visualizaciones todavía no está disponible, entonces el codificador de vídeo 20/20 puede realizar lo siguiente:
- Para cada X de 0 a 1, se aplica lo siguiente hasta que predFlagL1 InterView sea igual a 1.
Si mvLX está disponible y corRefPicX es una imagen de referencia temporal, se aplica lo siguiente:
Para cada i de 0 a num_ref_idx_l1_active_minus1, inclusive, si RefPicList1[i] es una imagen de referencia temporal, el codificador de vídeo 20/30 puede obtener el vector de movimiento predicho entre visualizaciones 1 como una versión a escala del vector de movimiento como se especifica en las ecuaciones 6-10 a continuación:

tx = ( 16384 + (Abs( td) »1 )) / Id (6)

distScaleFactor = CUp3( -4096,4095, (tb * tx + 32 )» 6) (7)
vector de movimiento predicho entre visualizaciones 1 =
Clip3( -32768, 32767, Sign2( distScaleFactor * mvLX ) *

((Abs( distScaleFactor * mvLX) + 127 )» 8 ) ) (8)
donde PicOrderCntVal es el POC de la imagen actual, td y tb se obtienen como

td = Clip3( -128, 127, PicOrderCntVal - PieOrderCnt(cürRcíPícX)) (9)

tb = Clip3( -128,127, PicOrdetCnlVal - PieOrdcrCnt( ReíPicLislX [ i ])) (10)
[118] Cuando el vector 0 de movimiento predicho entre visualizaciones y el vector 1 de movimiento predicho entre visualizaciones no están disponibles para obtenerse mediante las técnicas descritas anteriormente o cualquier otro procedimiento, el codificador 20/30 puede obtener el vector X de movimiento predicho entre visualizaciones (con X siendo reemplazado por 0 o 1) para el modo de omisión / fusión de la siguiente manera:
- El codificador de vídeo 20/30 localiza, utilizando un vector de disparidad, un bloque correspondiente de PU/CU actual en una visualización de referencia de la misma unidad de acceso. Los dos vectores de movimiento del bloque correspondiente, si están disponibles, se pueden denotar como mvLX y mvLY (con Y igual a 1-X), y las imágenes de referencia correspondientes se pueden denotar como corRefPicX y corRefPYY.
- El codificador de vídeo 20/30 puede establecer predFlagLXInterView en 0.
- Si mvLX está disponible y corRefPicX es una imagen de referencia temporal, entonces el codificador de vídeo 20/30 puede:
Para cada i de 0 a num_ref_idx_lX_active_minus1, inclusive, si RefPicListX[i] es una imagen de referencia temporal, el codificador de vídeo 20/30 puede obtener el vector de movimiento predicho entre visualizaciones X como una versión a escala del vector de movimiento como se especifica en las ecuaciones 11-15 a continuación:
5
10
15
20
25
30
35

tx = < 16384 + ( Abs( td )»1 )) / Ld (11)

distScaleFactor = Clip3( -4096,4095, (tb * tx + 32 )» 6) (12)
vector de movimiento predicho entre visualizaciones X =
Clip3( 32768, 32767, Sign2( distScaleFactor * mvLX ) *

((Abs( distScaleFactor * mvLX) f 127 )» 8 ) ) (13)
donde PicOrderCntVal es el POC de la imagen actual, td y tb se obtienen como

td = Clip3( -128, 127, PicOrderCntVal - PicOrderCnt(corRefPicX)) (14)

tb = Clip3( -128, 127, PicOrderCntVal - PicOrdetCnt( RefPicListX [ í ])) (15)
y el índice de referencia objetivo se establece en i, predFlagLXInterView se establece en 1.
[119] En una implementación para el modo de fusión, el codificador de vídeo 20/30 puede obtener un índice de referencia objetivo refIdxLX por cualquier otro medio, incluso mediante señalización, por ejemplo, en la cabecera de fragmento cuando predFlagL0InterView y/o predFlagL1InterView no están disponibles. En este caso, se conoce el índice de referencia objetivo, y el codificador de vídeo 20/30 pueden realizar directamente el escalado, eliminando así la necesidad de una búsqueda adicional del índice de referencia objetivo. De acuerdo con tal técnica, el codificador de vídeo 20/30 puede determinar un vector de movimiento predicho entre visualizaciones de la siguiente manera:
- El codificador de vídeo 20/30 localiza un bloque correspondiente de PU/CU actual, usando un vector de disparidad, en una visualización de referencia de la misma unidad de acceso. Los dos vectores de movimiento del bloque correspondiente, si están disponibles, se pueden denotar como mvLX y mvLY (con Y igual a 1-X), y las imágenes de referencia correspondientes se pueden denotar como corRefPicX y corRefPYY.
- El codificador de vídeo 20/30 establece predFlagLXInterView en 0.
- Si mvLX está disponible y corRefPicX es una imagen de referencia temporal, entonces el codificador de vídeo 20/30 puede:
si RefPicListX[refIdxLX] es una imagen de referencia temporal, el codificador de vídeo 20/30 puede obtener el vector de movimiento predicho entre visualizaciones como una versión a escala del vector de movimiento como se especifica mediante las ecuaciones 16-20 a continuación:

tx = ( 16384 + (Abs( td)»1 )) / td (16)

distScaleFactor Clíp3( -40%, 4095, (tb * tx + 32 )» 6) (17)
vector de movimiento predicho entre visualizaciones X =
Clip3( -32768, 32767. Sign2( distScaleFactor * mvLX ) *

((Abs( distScaleFactor * mvLX) + 127 )» 8 ) ) (18)
donde PicOrderCntVal es el POC de la imagen actual, td y tb se obtienen como
5
10
15
20
25
30
35
40
45
td = Clip3( -128.127, PicOrderCntVal - PicOrdcrCnt( corRefPicX)) (19)
tb = Clip3( -128. 127, PicOrderCntVal - PicOrdcrCnt( ReíPicListX [ refldxLX ]) )(20)
y predFlagLXInterView se establece en 1.
[120] En otra implementación, el codificador de vídeo 20/30 puede escalar potencialmente mvLY para obtener el vector X de movimiento predicho entre visualizaciones si aún no está disponible. De acuerdo con tal técnica, si mvLY está disponible y corRefPicY es una imagen de referencia temporal, y si RefPicListX[refIdxLX] es una imagen de referencia temporal, entonces el codificador de vídeo 20/30 puede obtener un vector de movimiento predicho entre visualizaciones como una versión a escala del vector de movimiento como se especifica en las ecuaciones 21-25 a continuación:
tx = ( 16384 + (Abs( td )»1 )) / td (21)
distScaleFactor Clip3( -4096,4095, (tb * tx + 32 )» 6) (22
vector de movimiento predicho entre visualizaciones X = Clip3(-32768, 32767,
Sign2( distScaleFactor * mvLY ) * ((Abs( distScaleFactor * mvLY) + 127 ) » 8))
(23)
donde PicOrderCntVal es el POC de la imagen actual, td y tb se obtienen como
td = Clip3( -128,127, PicOrderCntVal - PicOrderCnt(corRefPicY)) (24)
tb = Clip3( -128, 127, PicOrderCntVal - PicOrdcrCnt( ReíPicListX [ refldxLY ]) )(25)
y predFlagLXInterView se establece en 1.
[121] Como se ha presentado anteriormente, el codificador de vídeo 20/30 puede realizar un proceso de obtención del vector de movimiento predicho entre visualizaciones para el modo AMVP. En el modo AMVP, si el índice de referencia del objetivo corresponde a un vector de movimiento temporal, el codificador de vídeo 20/30 puede obtener el vector X de movimiento predicho entre visualizaciones de la siguiente manera:
- El índice de imagen de referencia del objetivo dado para PU/CU actual se denota mediante refIdxLX. El codificador de vídeo 20/30 localiza un bloque correspondiente de PU/CU actual, usando un vector de disparidad, en una visualización de referencia de la misma unidad de acceso. Los dos vectores de movimiento del bloque correspondiente, si están disponibles, se denotan como mvLX y mvLY (con Y igual a 1-X) y las imágenes de referencia correspondientes se denotan como corRefPicX y corRefPYY.
- El codificador de vídeo 20/30 establece predFlagLXInterView en 0.
- Si corRefPicX está disponible y es una imagen de referencia temporal, entonces el codificador de vídeo 20/30 puede realizar lo siguiente:
Si el POC de RefPicListX[refIdxLX] (del fragmento actual) es igual al POC del corRefPicX, el codificador de vídeo 20/30 establece el vector de movimiento predicho entre visualizaciones X igual a mvLX y establece predFlagLXInterView en 1.
- De lo contrario, el codificador de vídeo 20/30 establece predFlagLXInterView igual a 0, y si corRefPicY está disponible y es una imagen de referencia temporal, el codificador de vídeo 20/30 realiza lo siguiente:
5
10
15
20
25
30
35
40
45
50
55
60
65
Si el POC de RefPicListX[refIdxLX] es igual al POC de corRefPicY, el codificador de vídeo 20/30 establece el vector de movimiento predicho entre visualizaciones X igual a mvLY y establece predFlagLXInterView igual a 1.
[122] De forma alternativa, además, si predFlagLXInterView es todavía igual a 0 y RefPicListX[refIdxLX] es una trama de referencia temporal, el codificador de vídeo 20/30 puede realizar lo siguiente:
- Si corRefPicX está disponible y es una imagen de referencia temporal, el codificador de vídeo 20/30 puede obtener el vector de movimiento predicho entre visualizaciones escalando mvLX, basándose en la distancia POC y estableciendo predFlagLXInterView en 1.
- Si predFlagLXInterView es 0 y corRefPicY está disponible y es una imagen de referencia temporal, el codificador de vídeo 20/30 puede obtener el vector de movimiento predicho entre visualizaciones escalando mvLY, basado en la distancia POC y estableciendo predFlagLXInterView igual a 1.
[123] La FIG. 6 es un diagrama de bloques que ilustra un ejemplo codificador de vídeo 20 que puede implementar las técnicas descritas en esta divulgación, incluyendo las técnicas predicho entre visualizaciones descritas anteriormente, El codificador de vídeo 20 puede realizar la intra-codificación y la inter-codificación de bloques de vídeo dentro de fragmentos de vídeo. La intra-codificación se basa en la predicción espacial para reducir o eliminar la redundancia espacial en el vídeo dentro de una trama o imagen de vídeo dada. La intercodificación se basa en la predicción temporal para reducir o eliminar la redundancia temporal en el vídeo dentro de tramas o imágenes adyacentes de una secuencia de vídeo. El modo intra (modo I) puede referirse a cualquiera de varios modos de compresión espacial. Los modos inter, tales como la predicción unidireccional (modo P) o la bi-predicción (modo B), pueden referirse a cualquiera de varios modos de compresión de base temporal.
[124] En el ejemplo de la FIG. 6, el codificador de vídeo 20 incluye una unidad de división 35, una unidad de procesamiento de predicción 41, una unidad de filtro 63, una memoria de imágenes de referencia 64, un sumador 50, una unidad de transformación 52, una unidad de cuantificación 54 y una unidad de codificación por entropía 56. La unidad de procesamiento de predicción 41 incluye la unidad de estimación de movimiento y disparidad 42, la unidad de compensación de movimiento y disparidad 44 y la unidad de procesamiento de intra-predicción 46. Para la reconstrucción de bloques de vídeo, el codificador de vídeo 20 incluye también una unidad de cuantificación inversa 58, una unidad de procesamiento de transformación inversa 60 y un sumador 62. La unidad de filtro 63 está destinada a representar uno o más filtros de bucle tales como un filtro de desbloqueo, un filtro de bucle adaptativo (ALF) y un filtro de desplazamiento de muestras adaptativo (SAO). Aunque la unidad de filtro 63 se muestra en la FIG. 6 como un filtro de bucle de entrada, en otras configuraciones, la unidad de filtro 63 puede implementarse como un filtro de bucle posterior.
[125] Como se muestra en la FIG. 6, el codificador de vídeo 20 recibe datos de vídeo y la unidad de división 35 divide los datos en bloques de vídeo. Esta división también puede incluir la división en fragmentos, elementos u otras unidades mayores, así como la división de bloques de vídeo, por ejemplo, de acuerdo con una estructura de árbol cuaternario de unas LCU y CU. El codificador de vídeo 20 ilustra, en general, los componentes que codifican bloques de vídeo de un fragmento de vídeo que se va a codificar. El fragmento puede dividirse en varios bloques de vídeo (y, posiblemente, en conjuntos de bloques de vídeo denominados elementos). La unidad de procesamiento de predicción 41 puede seleccionar una entre una pluralidad de posibles modos de codificación, tal como una entre una pluralidad de modos de codificación intra, o una de una pluralidad de modos de inter-codificación, para el bloque de vídeo actual, basándose en resultados de errores (por ejemplo, la velocidad de codificación y el nivel de distorsión). La unidad de procesamiento de predicción 41 puede proporcionar el bloque intra-codificado o inter-codificado resultante al sumador 50 para generar datos de bloques residuales, y al sumador 62 para reconstruir el bloque codificado para su uso como una imagen de referencia.
[126] La unidad de procesamiento de intra-predicción 46, dentro de la unidad de procesamiento de predicción 41, puede realizar la codificación intra-predictiva del bloque de vídeo actual con respecto a uno o más bloques contiguos en la misma trama o fragmento que el bloque que va a codificarse, para proporcionar compresión espacial. La unidad de estimación de movimiento y disparidad 42 y la unidad de compensación de movimiento y disparidad 44 de la unidad de procesamiento de predicción 41 realizan la codificación de inter-predicción y/o la codificación entre visualizaciones del bloque de vídeo actual en relación con uno o más bloques predictivos de una o más imágenes de referencia y/o visualizaciones de referencia, para proporcionar compresión temporal o de visualizaciones.
[127] La unidad de estimación de movimiento y disparidad 42 puede estar configurada para determinar el modo de inter-predicción y/o el modo de predicción entre visualizaciones para un fragmento de vídeo de acuerdo con un patrón predeterminado para una secuencia de vídeo. El patrón predeterminado puede designar fragmentos de vídeo de la secuencia como fragmentos P o fragmentos B. La unidad de estimación de movimiento y disparidad 42 y la unidad de compensación de movimiento y disparidad 44 pueden estar estrechamente integradas, pero se ilustran por separado con fines conceptuales. La estimación de movimiento y
5
10
15
20
25
30
35
40
45
50
55
60
65
disparidad, llevada a cabo por la unidad de estimación de movimiento y disparidad 42, es el proceso de generar 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 de una trama o imagen de vídeo actual con respecto a un bloque predictivo de una imagen de referencia. La estimación de disparidad, realizada por la unidad de estimación de movimiento y disparidad 42, es el proceso de generación de vectores de movimiento de disparidad, que puede usarse para predecir un bloque codificado actualmente a partir de un bloque de una visualización diferente.
[128] Un bloque predictivo es un bloque del que se descubre que se corresponde estrechamente con la PU del bloque de vídeo que se va a codificar en términos de diferencia de píxeles, que puede determinarse mediante la suma de una diferencia absoluta (SAD), suma de diferencia al cuadrado (SSD) u otras métricas de diferencia. En algunos ejemplos, el codificador de vídeo 20 puede calcular valores para posiciones fraccionarias de píxeles de imágenes de referencia almacenadas en la memoria de imágenes de referencia 64. Por ejemplo, el codificador de vídeo 20 puede interpolar valores de posiciones de un cuarto de píxel, posiciones de un octavo de píxel u otras posiciones de píxel fraccionarias de la imagen de referencia. Por lo tanto, la unidad de estimación de movimiento y disparidad 42 puede realizar una búsqueda de movimiento en relación con las posiciones de píxeles completas y las posiciones de píxeles fraccionarias, y emitir un vector de movimiento con una precisión de píxel fraccionaria.
[129] La unidad de estimación de movimiento y disparidad 42 calcula un vector de movimiento (para predicción con compensación de movimiento) y/o un vector de movimiento de disparidad (para predicción con compensación de disparidad) para una PU de un bloque de vídeo en un fragmento sometido a inter-codificación o predicción entre visualizaciones, 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 entre una primera lista de imágenes de referencia (RefPicList0) o una segunda lista de imágenes de referencia (RefPicList1), cada una de las cuales identifica una o más imágenes de referencia almacenadas en la memoria de imágenes de referencia 64. La unidad de estimación de movimiento y disparidad 42 envía el vector de movimiento y/o el vector de disparidad calculados a la unidad de codificación por entropía 56 y la unidad de compensación de movimiento 44.
[130] La compensación de movimiento y/o la compensación de disparidad, realizadas por la unidad de compensación de movimiento y disparidad 44, pueden implicar obtener o generar el bloque predictivo basándose en el vector de movimiento determinado mediante estimación de movimiento y/o estimación de paridad, realizando posiblemente interpolaciones hasta la precisión de subpíxel. Tras recibir el vector de movimiento y/o la disparidad para la PU del bloque de vídeo actual, la unidad de compensación de movimiento y disparidad 44 puede localizar el bloque predictivo al que apunta el vector de movimiento y/o el vector de disparidad en una de las listas de imágenes de referencia. El codificador de vídeo 20 forma un bloque de vídeo residual restando los valores de píxeles del bloque predictivo a los valores de píxeles del bloque de vídeo actual que se está codificando, generando valores de diferencia de píxel. Los valores de diferencia de píxel forman datos residuales para el bloque, y pueden incluir componentes de diferencia de luminancia y croma. El sumador 50 representa el componente o los componentes que realizan esta operación de resta. La unidad de compensación de movimiento y disparidad 44 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 descodificador de vídeo 30 en la descodificación de los bloques de vídeo del fragmento de vídeo.
[131] La unidad de procesamiento de intra-predicción 46 puede intra-predecir un bloque actual, de forma alternativa a la inter-predicción llevada a cabo por la unidad de estimación de movimiento y disparidad 42 y la unidad de compensación de movimiento y disparidad 44, como se ha descrito anteriormente. En particular, la unidad de procesamiento de intra-predicción 46 puede determinar un modo de intra-predicción a usar para codificar un bloque actual. En algunos ejemplos, la unidad de procesamiento de intra-predicción 46 puede codificar un bloque actual usando varios modos de intra-predicción, por ejemplo, durante diferentes pases de codificación, y la unidad de procesamiento de intra-predicción 46 (o la unidad de selección de modo 40, en algunos ejemplos) puede seleccionar un modo adecuado de intra-predicción para utilizar a partir de los modos probados. Por ejemplo, la unidad de procesamiento de intra-predicción 46 puede calcular valores de velocidad- distorsión usando un análisis de velocidad-distorsión para los diversos modos de intra-predicción probadas, y seleccionar el modo de intra-predicción que tenga las mejores características de velocidad-distorsión entre los modos probados. El análisis de velocidad-distorsión determina, en general, una magnitud de distorsión (o error) entre un bloque codificado y un bloque original no codificado que se codificó para generar el bloque codificado, así como una velocidad de bits (es decir, un número de bits) utilizada para generar el bloque codificado. La unidad de procesamiento de intra-predicción 46 puede calcular razones a partir de las distorsiones y velocidades para los diversos bloques codificados, para determinar qué modo de intra-predicción presenta el mejor valor de velocidad-distorsión para el bloque.
[132] En cualquier caso, tras seleccionar un modo de intra-predicción para un bloque, la unidad de procesamiento de intra-predicción 46 puede proporcionar información que indica el modo de intra-predicción seleccionado para el bloque, a la unidad de codificación por entropía 56. La unidad de codificación por entropía 56 puede codificar la información que indica el modo de intra-predicción seleccionado de acuerdo con las
5
10
15
20
25
30
35
40
45
50
55
60
65
técnicas de esta divulgación. El codificador de vídeo 20 puede incluir datos de configuración en el flujo de bits transmitido, que pueden incluir una pluralidad de tablas de índices de modos de intra-predicción y una pluralidad de tablas de índices de modos de intra-predicción modificadas (también denominadas tablas de correlación de palabras de código), definiciones de contextos de codificación para varios bloques e indicaciones del modo de intra-predicción más probable, una tabla de índices de modos de intra-predicción y una tabla de índices de modos de intra-predicción modificadas a utilizar para cada uno de los contextos.
[133] Después de que la unidad de procesamiento de predicción 41 genere el bloque predictivo para el bloque de vídeo actual, ya sea mediante la inter-predicción o la intra-predicción, el codificador de vídeo 20 forma un bloque de vídeo residual restando el bloque predictivo del bloque de vídeo actual. Los datos de vídeo residuales en el bloque residual pueden ser incluidos en una o más TU y aplicados a la unidad de transformación 52. La unidad de transformación 52 transforma los datos de vídeo residuales en coeficientes de transformación residual, usando una transformación, tal como una transformación de coseno discreta (DCT) o una transformación conceptualmente similar. La unidad de transformación 52 puede convertir los datos de vídeo residuales de un dominio de píxeles a un dominio de las transformaciones, tal como un dominio de frecuencia.
[134] La unidad de transformación 52 puede enviar los coeficientes de transformación resultantes a la unidad de cuantificación 54. La unidad de cuantificación 54 cuantifica los coeficientes de transformación para reducir adicionalmente la velocidad de bits. El proceso de cuantificación puede reducir la profundidad de bits asociada a algunos o con la totalidad de los coeficientes. El grado de cuantificación puede modificarse ajustando un parámetro de cuantificación. En algunos ejemplos, la unidad de cuantificación 54 puede realizar, a continuación, un recorrido de la matriz que incluye los coeficientes de transformación cuantificados. De forma alternativa, la unidad de codificación por entropía 56 puede llevar a cabo el escaneado.
[135] Tras la cuantificación, la unidad de codificación por entropía 56 codifica por entropía los coeficientes de transformación cuantificados. Por ejemplo, la unidad de codificación por entropía 56 puede realizar una codificación de longitud variable adaptativa según el contexto (CAVLC), una codificación aritmética binaria adaptativa según el contexto (CABAC), una codificación aritmética binaria adaptativa según el contexto basándose en la sintaxis (SBAC), una codificación por entropía por división de intervalos de probabilidad (PIPE) u otros procedimientos o técnicas de codificación por entropía. Tras la codificación por entropía realizada por la unidad de codificación por entropía 56, el flujo de bits codificado puede transmitirse al descodificador de vídeo 30, o archivarse para su posterior transmisión o recuperación por el descodificador de vídeo 30. La unidad de codificación por entropía 56 también puede realizar la codificación por entropía de los vectores de movimiento y los otros elementos sintácticos para el fragmento de vídeo actual que se está codificando.
[136] La unidad de cuantificación inversa 58 y la unidad de procesamiento de transformación inversa 60 aplican una cuantificación inversa y una transformación inversa, respectivamente, para reconstruir el bloque residual en el dominio de píxel, para su posterior uso como un bloque de referencia de una imagen de referencia. La unidad de compensación de movimiento y disparidad 44 puede calcular un bloque de referencia sumando el bloque residual a un bloque predictivo de una de las imágenes de referencia de una de las listas de imágenes de referencia. La unidad de compensación de movimiento y disparidad 44 también puede aplicar uno o más filtros de interpolación al bloque residual reconstruido para calcular valores de píxeles fraccionarios y usarlos en la estimación de movimiento. El sumador 62 añade el bloque residual reconstruido al bloque predictivo con compensación de movimiento generado por la unidad de compensación de movimiento y disparidad 44 para generar un bloque de referencia para su almacenamiento en la memoria de imágenes de referencia 64. La unidad de estimación de movimiento y disparidad 42 y la unidad de compensación de movimiento y disparidad 44 pueden usar el bloque de referencia como un bloque de referencia para realizar la inter-predicción de un bloque en una imagen o trama de vídeo subsiguiente.
[137] La FIG. 7 es un diagrama de bloques que ilustra un descodificador de vídeo de ejemplo 30 que puede implementar las técnicas descritas en esta divulgación, incluidas la técnicas predicho entre visualizaciones descritas anteriormente. En el ejemplo de la FIG. 7, el descodificador de vídeo 30 incluye una unidad de descodificación por entropía 80, una unidad de procesamiento de predicción 81, una unidad de cuantificación inversa 86, una unidad de procesamiento de transformación inversa 88, un sumador 90, una unidad de filtro 91 y una memoria de imágenes de referencia 92. La unidad de procesamiento de predicción 81 incluye la unidad de compensación de movimiento y disparidad 82 y la unidad de procesamiento de intra-predicción 84. En algunos ejemplos, el descodificador de vídeo 30 puede realizar un pase de descodificación en general recíproca al pase de codificación descrito con respecto al codificador de vídeo 20 de la FIG. 6.
[138] Durante el proceso de descodificación, el descodificador 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 descodificación por entropía 80 del descodificador de vídeo 30 realiza la descodificación por entropía del flujo de bits para generar coeficientes cuantificados, vectores de movimiento y otros elementos sintácticos. La unidad de descodificación por entropía 80 remite los vectores de movimiento y otros elementos sintácticos a la unidad de procesamiento de predicción 81. El descodificador de
5
10
15
20
25
30
35
40
45
50
55
60
65
vídeo 30 puede recibir los elementos sintácticos en el nivel del fragmento de vídeo y/o el nivel del bloque de vídeo.
[139] Cuando el fragmento de vídeo se codifica como un fragmento intra-codificado (I), la unidad de procesamiento de intra-predicción 84 de la unidad de procesamiento de predicción 81 puede generar datos de predicción para un bloque de vídeo del fragmento de vídeo actual, basándose en un modo de intra-predicción señalado, y datos de bloques previamente descodificados de la trama o imagen actual. Cuando la trama de vídeo se codifica como una trama inter-codificada (es decir, B, P o GPB), la unidad de compensación de movimiento y disparidad 82 de la unidad de procesamiento de predicción 81 genera bloques predictivos para un bloque de vídeo del fragmento de vídeo actual, basándose en los vectores de movimiento y otros elementos sintácticos recibidos desde la unidad de descodificación por entropía 80. Los bloques predictivos pueden ser generados a partir de una de las imágenes de referencia dentro de una de las listas de imágenes de referencia. El descodificador de vídeo 30 puede construir las listas de tramas de referencia, la Lista 0 y la Lista 1, usando técnicas de construcción por omisión, basándose en las imágenes de referencia almacenadas en la memoria de imágenes de referencia 92.
[140] La unidad de compensación de movimiento y disparidad 82 determina la información de predicción para un bloque de vídeo del fragmento de vídeo actual, analizando los vectores de movimiento y otros elementos sintácticos, y usa la información de predicción para generar los bloques predictivos del bloque de vídeo actual que está siendo descodificado. Por ejemplo, la unidad de compensación de movimiento y disparidad 82 utiliza algunos de los elementos sintácticos recibidos para determinar un modo de predicción (por ejemplo, intra- predicción o inter-predicción) utilizado para codificar los bloques de vídeo del fragmento de vídeo, un tipo de fragmento de inter-predicción o predicción entre visualizaciones (por ejemplo, fragmento B o fragmento P), información de construcción para una o más de las listas de imágenes de referencia para el fragmento, vectores de movimiento y/o vectores de disparidad para cada bloque de vídeo inter-codificado del fragmento, estado de inter-predicción para cada bloque de vídeo inter-codificado del fragmento y otra información para descodificar los bloques de vídeo del fragmento de vídeo actual.
[141] En algunos ejemplos, la unidad de compensación de movimiento y disparidad 82 puede determinar los elementos sintácticos señalados que indican vectores de movimiento usando un proceso de predicción de vector de movimiento. Los procesos de predicción del vector de movimiento pueden incluir un modo AMVP y un modo de fusión. La unidad de compensación de movimiento y disparidad 82 también puede realizar la interpolación basándose en filtros de interpolación. La unidad de compensación de movimiento y disparidad 82 puede usar filtros de interpolación como los usados por el codificador de vídeo 20 durante la codificación de los bloques de vídeo, para calcular valores interpolados para píxeles fraccionarios de bloques de referencia. En este caso, la unidad de compensación de movimiento y disparidad 82 puede determinar los filtros de interpolación utilizados por el codificador de vídeo 20 a partir de los elementos sintácticos recibidos, y utilizar los filtros de interpolación para generar bloques predictivos.
[142] La unidad de cuantificación inversa 86 cuantifica de manera inversa, es decir, descuantifica, los coeficientes de transformación cuantificados, proporcionados en el flujo de bits y descodificados por la unidad de descodificación por entropía 80. El proceso de cuantificación inversa puede incluir el uso de un parámetro de cuantificación calculado por el codificador de vídeo 20 para cada bloque de vídeo en el fragmento de vídeo, para determinar un grado de cuantificación y, asimismo, un grado de cuantificación inversa que debería aplicarse. La unidad de procesamiento de transformación inversa 88 aplica una transformación inversa, por ejemplo una DCT inversa, una transformación inversa entera 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 de píxeles.
[143] Después de que la unidad de compensación de movimiento y disparidad 82 genera el bloque predictivo para el bloque de vídeo actual, basándose en los vectores de movimiento y otros elementos sintácticos, el descodificador de vídeo 30 forma un bloque de vídeo descodificado sumando los bloques residuales procedentes de la unidad de procesamiento de transformación inversa 88 a los correspondientes bloques predictivos generados por la unidad de compensación de movimiento y disparidad 82. El sumador 90 representa el componente o los componentes que llevan a cabo esta operación de suma. Si se desea, también pueden utilizarse filtros de bucle (ya sea en el bucle de codificación o después del bucle de codificación) para suavizar las transiciones de píxeles o mejorar de otro modo la calidad del vídeo. La unidad de filtro 91 está destinada a representar uno o más filtros de bucle tales como un filtro de desbloqueo, un filtro de bucle adaptativo (ALF) y un filtro de desplazamiento de muestras adaptativo (SAO). Aunque la unidad de filtro 91 se muestra en la FIG. 7 como un filtro de bucle de entrada, en otras configuraciones, la unidad de filtro 91 puede implementarse como un filtro de bucle posterior. Los bloques de vídeo descodificados en una trama o imagen dada son a continuación almacenados en la memoria de imágenes de referencia 92, que almacena imágenes de referencia usadas para la posterior compensación de movimiento. La memoria de imágenes de referencia 92 almacena también vídeo descodificado para su presentación posterior en un dispositivo de visualización, tal como el dispositivo de visualización 32 de la FIG. 1.
5
10
15
20
25
30
35
40
45
50
55
60
65
[144] La FIG. 8 es un diagrama de flujo que muestra un proceso de codificación a modo de ejemplo de acuerdo con las técnicas de la divulgación. Las técnicas de la FIG. 8 se describirán con respecto al codificador de vídeo 20, pero pueden ser realizadas por otros tipos de codificadores de vídeo. El codificador de vídeo 20 determina, para un bloque actual en una visualización actual, un bloque correspondiente en una visualización de referencia que usa un vector de disparidad para el bloque actual (180). El vector de disparidad puede, por ejemplo, determinarse mediante el codificador de vídeo 20 usando una o más de las técnicas de NBDV descritas anteriormente. El codificador de vídeo 20 determina una primera dirección para un vector de movimiento actual del bloque actual (181). El codificador 20 de vídeo determina un primer valor de POC de una primera imagen de referencia referenciada por un primer vector de movimiento del bloque correspondiente que apunta en la primera dirección (182). El codificador de vídeo 20 determina si una primera lista de imágenes de referencia para el bloque actual incluye una imagen de referencia que tiene el primer valor de POC (183). La primera lista de imágenes de referencia corresponde a la primera dirección. En respuesta a la primera lista de imágenes de referencia que incluye la imagen de referencia que tiene el primer valor de POC (183, sí), el codificador de vídeo 20 codifica el vector de movimiento actual utilizando el primer vector de movimiento del bloque correspondiente (184). El codificador de vídeo 20 puede, por ejemplo, codificar el vector de movimiento actual al agregar el primer vector de movimiento a una lista de candidatos de AMVP o de modo de fusión como se describió anteriormente.
[145] En respuesta a la primera lista de imágenes de referencia que no incluye la imagen de referencia que tiene el primer valor de POC (183, no), el codificador de vídeo 20 determina un segundo valor de POC de una segunda imagen de referencia referenciada por un segundo vector de movimiento del bloque correspondiente que apunta en una segunda dirección (185). La segunda dirección es diferente a la primera dirección. El codificador de vídeo 20 determina si la primera lista de imágenes de referencia para el bloque actual incluye una imagen de referencia que tiene el segundo valor de POC (186). En respuesta a la primera lista de imágenes de referencia que incluye la imagen de referencia que tiene el segundo valor de POC (186, sí), el codificador de vídeo 20 codifica el vector de movimiento actual usando el segundo vector de movimiento del bloque correspondiente (187). El codificador 20 de vídeo puede, por ejemplo, codificar el vector de movimiento actual añadiendo el segundo vector de movimiento a una lista de candidatos AMVP o de modo de fusión como se describió anteriormente. En respuesta a la primera lista de imágenes de referencia que no incluye la imagen de referencia que tiene el segundo valor de POC (186, no), el codificador de vídeo 20 codifica el vector de movimiento actual usando otra técnica (187). Entre los ejemplos de técnicas se incluyen, por ejemplo, el uso de una versión a escala del primer o segundo vector de movimiento, usando un vector cero u otras técnicas similares.
[146] La FIG. 9 es un diagrama de flujo que muestra un proceso de descodificación a modo de ejemplo de acuerdo con las técnicas de la divulgación. Las técnicas de la FIG. 9 se describirán con respecto al descodificador de vídeo 30 pero puede ser realizado por otros tipos de descodificador de vídeo. El descodificador 30 de vídeo determina, para un bloque actual en una visualización actual, un bloque correspondiente en una visualización de referencia que usa un vector de disparidad para el bloque actual (190). El vector de disparidad puede, por ejemplo, determinarse mediante el descodificador de vídeo 30 usando una o más de las técnicas de NBDV descritas anteriormente. El descodificador de vídeo 30 determina una primera dirección para un vector de movimiento actual del bloque actual (191). El descodificador de vídeo determina un primer valor de POC de una primera imagen de referencia referenciada por un primer vector de movimiento del bloque correspondiente que apunta en la primera dirección (192). El descodificador de vídeo 30 determina si una primera lista de imágenes de referencia para el bloque actual incluye una imagen de referencia que tiene el primer valor de POC (193). La primera lista de imágenes de referencia corresponde a la primera dirección. En respuesta a la primera lista de imágenes de referencia que incluye la imagen de referencia que tiene el primer valor de pOc (193, sí), el descodificador de vídeo 30 descodifica el vector de movimiento actual usando el primer vector de movimiento del bloque correspondiente (194). El descodificador de vídeo 30 puede, por ejemplo, descodificar el vector de movimiento actual agregando el primer vector de movimiento a una lista de candidatos de AMVP o de modo de fusión como se describió anteriormente.
[147] En respuesta a la primera lista de imágenes de referencia que no incluye la imagen de referencia que tiene el primer valor de POC (193, no), el descodificador de vídeo 30 determina un segundo valor de POC de una segunda imagen de referencia referenciada por un segundo vector de movimiento del bloque correspondiente que apunta en una segunda dirección (195). La segunda dirección es diferente a la primera dirección. El descodificador 30 de vídeo determina si la primera lista de imágenes de referencia para el bloque actual incluye una imagen de referencia que tiene el segundo valor de POC (196). En respuesta a la primera lista de imágenes de referencia que incluye la imagen de referencia que tiene el segundo valor de POC (196, sí), el descodificador de vídeo 30 descodifica el vector de movimiento actual utilizando el segundo vector de movimiento del bloque correspondiente (197). El descodificador de vídeo 30 puede, por ejemplo, descodificar el vector de movimiento actual añadiendo el segundo vector de movimiento a una lista de candidatos de AMVP o de modo de fusión como se describió anteriormente. En respuesta a la primera lista de imágenes de referencia que no incluye la imagen de referencia que tiene el segundo valor de POC (196, no), el descodificador de vídeo 30 descodifica el vector de movimiento actual usando otra técnica (197). Entre los ejemplos de técnicas se incluyen, por ejemplo, el uso de una versión a escala del primer o segundo vector de movimiento, usando un vector cero u otras técnicas similares.
5
10
15
20
25
30
35
40
45
50
55
[148] En uno o más ejemplos, las funciones descritas pueden implementarse en hardware, software, firmware o cualquier combinación de estos. Si se implementan en software, las funciones pueden almacenarse, como una o más instrucciones o código, en un medio legible por ordenador o transmitirse a través de este, y ejecutarse mediante una unidad de procesamiento basada en hardware. Los medios legibles por ordenador pueden incluir medios de almacenamiento legibles por ordenador, que corresponden a un medio tangible tal como unos medios de almacenamiento de datos o unos medios de comunicación que incluyen cualquier medio que facilite la transferencia de un programa informático desde un lugar a otro, por ejemplo, de acuerdo con un protocolo de comunicación. De esta manera, los medios legibles por ordenador pueden corresponder en general a (1) unos medios de almacenamiento tangibles legibles por ordenador que son 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 puede 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.
[149] 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 adecuadamente 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, tal como se utiliza 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 habitualmente reproducen datos magnéticamente, mientras que otros discos reproducen datos ópticamente con láseres. Las combinaciones de lo anterior deberían incluirse también dentro del alcance de los medios legibles por ordenador.
[150] 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), matrices lógicas programables sobre el terreno (FPGA) u otros circuitos lógicos integrados o discretos equivalentes. Por consiguiente, el término "procesador", como se usa en el presente documento, puede referirse 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 puede proporcionarse dentro de módulos de hardware y/o software dedicados configurados para la codificación y la descodificación, o incorporarse en un códec combinado. Además, las técnicas podrían implementarse completamente en uno o más circuitos o elementos lógicos.
[151] Las técnicas de la presente divulgación se pueden implementar en una amplia variedad de dispositivos o aparatos, que incluyen un teléfono inalámbrico, un circuito integrado (IC) o un conjunto de IC (por ejemplo, un conjunto de chips). Diversos componentes, módulos o unidades se describen en esta divulgación para enfatizar aspectos funcionales de dispositivos configurados para realizar las técnicas divulgadas, pero no requieren necesariamente su realización mediante diferentes unidades de hardware. En cambio, como se ha descrito anteriormente, diversas unidades pueden combinarse en una unidad de hardware de códec o proporcionarse por medio de un grupo de unidades de hardware interoperativas, que incluyen uno o más procesadores como los descritos anteriormente, conjuntamente con software y/o firmware adecuados.
[152] Se han descrito diversos ejemplos. Estos y otros ejemplos están dentro del alcance de las siguientes reivindicaciones.

Claims (9)

  1. 5
    10
    15
    20
    25
    30
    35
    40
    45
    50
    55
    60
    65
    REIVINDICACIONES
    Un procedimiento de descodificación de datos de vídeo de múltiples visualizaciones, comprendiendo el procedimiento:
    determinar (190), para un bloque actual (140) en una visualización actual (V1), un bloque correspondiente (142) en una visualización de referencia (V0) usando un vector de disparidad para el bloque actual;
    determinar (191) una primera dirección, X, para un vector de movimiento actual del bloque actual, en el que la primera dirección corresponde a una de una primera lista de imágenes de referencia (Lista 0) o una segunda lista de imágenes de referencia (Lista 1);
    determinar (192) un primer valor de recuento de orden de imágenes, POC, de una primera imagen de referencia referenciada por un índice de referencia asociado con un primer vector de movimiento del bloque correspondiente que apunta en la primera dirección, mvLX,;
    determinar (193) si una primera lista de imágenes de referencia, ListX, para el bloque actual incluye una imagen de referencia que tiene el primer valor de POC en el que la primera lista de imágenes de referencia corresponde a la primera dirección;
    en respuesta a la primera lista de imágenes de referencia que incluye la imagen de referencia que tiene el primer valor de POC, añadir un candidato de fusión de un vector X de movimiento predicho entre visualizaciones a una lista de candidatos de fusión, con el candidato de fusión de vector X de movimiento predicho entre visualizaciones que comprende un índice de imagen de referencia correspondiente a la imagen de referencia en la primera lista de imágenes de referencia, ListX, que tiene el primer valor de POC y que comprende el primer vector de movimiento, mvLX;
    en respuesta a la primera lista de imágenes de referencia, ListX, no incluir la imagen de referencia que tiene el primer valor de POC:
    determinar (194) un segundo valor de POC de una segunda imagen de referencia referenciada por un índice de referencia asociado con un segundo vector de movimiento del bloque correspondiente que apunta en una segunda dirección, mvLY, en el que la segunda dirección, Y, es diferente de la primera dirección, X, en el que la segunda dirección corresponde a la otra, ListaY, de la primera lista de imágenes de referencia y la segunda lista de imágenes de referencia;
    determinar (196) si la primera lista de imágenes de referencia, ListX, para el bloque actual incluye una imagen de referencia que tiene el segundo valor de POC; y
    en respuesta a la primera lista de imágenes de referencia que incluye la imagen de referencia que tiene el segundo valor de POC, añadir un candidato de fusión de vector X de movimiento predicho entre visualizaciones a la lista de candidatos de fusión, con el candidato de fusión de vector X de movimiento predicho entre visualizaciones que comprende un índice de imagen de referencia correspondiente a la imagen de referencia en la primera lista de imágenes de referencia, ListX, que tiene el segundo valor de POC y que comprende el segundo vector de movimiento, mvLY; y
    descodificar un valor de índice, en el que el valor de índice corresponde al candidato de fusión; y
    predecir el bloque actual usando el candidato de fusión correspondiente al índice.
    Un procedimiento de codificación de datos de vídeo de múltiples visualizaciones, comprendiendo el procedimiento:
    determinar (180), para un bloque actual (140) en una visualización actual (V1), un bloque correspondiente (142) en una visualización de referencia (V0) usando un vector de disparidad para el bloque actual;
    determinar (181) una primera dirección, X, para un vector de movimiento actual del bloque actual, en el que la primera dirección corresponde a una de una primera lista de imágenes de referencia (Lista 0) o una segunda lista de imágenes de referencia (Lista 1);
    determinar (182) un primer valor de recuento de orden de imágenes, POC, de una primera imagen de referencia referenciada por un índice de referencia asociado con un primer vector de movimiento del bloque correspondiente que apunta en la primera dirección, mvLX;
    5
    10
    15
    20
    25
    30
    35
    40
    45
    50
    55
    60
    65
    determinar (183) si una primera lista de imágenes de referencia, ListX, para el bloque actual incluye una imagen de referencia que tiene el primer valor de POC, en el que la primera lista de imágenes de referencia corresponde a la primera dirección;
    en respuesta a la primera lista de imágenes de referencia que incluye la imagen de referencia que tiene el primer valor de POC, añadir un candidato de fusión de vector X de movimiento predicho entre visualizaciones a una lista de candidatos de fusión, con el candidato de fusión de vector de movimiento X predicho entre visualizaciones que comprende un índice de imagen de referencia correspondiente a la imagen de referencia en la primera lista de imágenes de referencia, ListX, que tiene el primer valor de POC y que comprende el primer vector de movimiento, mvLX;
    en respuesta a la primera lista de imágenes de referencia, ListX, no incluir la imagen de referencia que tiene el primer valor de POC:
    determinar (185) un segundo valor de POC de una segunda imagen de referencia referenciada por un índice de referencia asociado con un segundo vector de movimiento del bloque correspondiente que apunta en una segunda dirección, mvLY, en el que la segunda dirección, Y, es diferente de la primera dirección, X, en el que la segunda dirección corresponde a la otra, la Lista Y, de la primera lista de imágenes de referencia y la segunda lista de imágenes de referencia;
    determinar (186) si la primera lista de imágenes de referencia, ListX, para el bloque actual incluye una imagen de referencia que tiene el segundo valor de POC; y
    en respuesta a la primera lista de imágenes de referencia que incluye la imagen de referencia que tiene el segundo valor de POC, añadir un candidato de fusión de vector de movimiento X predicho entre visualizaciones a la lista de candidatos de fusión, con el candidato de fusión de vector de movimiento X predicho entre visualizaciones que comprende una imagen de índice de referencia correspondiente a la imagen de referencia en la primera lista de imágenes de referencia, ListX, que tiene el segundo valor de POC y que comprende el segundo vector de movimiento, mvLY.
    El procedimiento según la reivindicación 1 o 2, en el que cuando la primera lista de imágenes de referencia no incluye la imagen de referencia que tiene el primer valor de POC y cuando la segunda lista de imágenes de referencia no incluye la imagen de referencia que tiene el segundo valor de POC, el procedimiento comprende además:
    determinar si una primera diferencia de POC, que representa la diferencia entre el primer valor de POC y un primer valor de POC más cercano para una imagen de referencia en la primera lista de imágenes de referencia para el primer valor de POC, es mayor que una segunda diferencia de POC, representando la diferencia entre el segundo valor de POC y un segundo valor de POC más próximo para una imagen de referencia en la segunda lista de imágenes de referencia para el segundo valor de POC;
    cuando la primera diferencia de POC es mayor que la segunda diferencia de POC, escalar el primer vector de movimiento de acuerdo con la primera diferencia de POC y descodificar el vector de movimiento actual usando el primer vector de movimiento a escala; y
    cuando la primera diferencia de POC no es mayor que la segunda diferencia de POC, escalar el segundo vector de movimiento de acuerdo con la segunda diferencia de POC y descodificar el vector de movimiento actual usando el segundo vector de movimiento a escala.
    El procedimiento según la reivindicación 1 o 2, que comprende además:
    para un modo de predicción avanzada de vectores de movimiento (AMVP) para el bloque actual, descodificar un valor de diferencia de vector de movimiento;
    y en el que la predicción del bloque actual utiliza adicionalmente el valor de diferencia de vector de movimiento.
    El procedimiento según la reivindicación 1 o 2, en el que la imagen de referencia que tiene el primer valor de POC corresponde a una imagen de referencia temporal.
    El procedimiento según la reivindicación 1 o 2, en el que determinar si la primera lista de imágenes de referencia para el bloque actual incluye la imagen de referencia que tiene el primer valor de POC comprende analizar imágenes en la primera lista de imágenes de referencia en orden ascendente del índice de referencia.
    5
    10
    15
    20
    25
    30
    35
    40
    45
    50
    55
    60
  2. 7. El procedimiento según la reivindicación 6, en el que el conjunto se determina basándose en un elemento sintáctico que identifica un número de imágenes de referencia activas en la primera lista de imágenes de referencia.
  3. 8. El procedimiento según la reivindicación 1 o 2, que comprende además:
    en respuesta a los dos predictores de movimiento direccional que tienen la misma componente horizontal y la misma componente vertical y que tienen índices de referencia correspondientes a la misma imagen, establecer uno del primer vector de movimiento y el segundo vector de movimiento como no disponible.
  4. 9. Un aparato para descodificar datos de vídeo de múltiples visualizaciones, comprendiendo el aparato:
    medios para determinar, para un bloque actual en una visualización actual, un bloque correspondiente en una visualización de referencia que usa un vector de disparidad para el bloque actual;
    medios para determinar una primera dirección, X, para un vector de movimiento actual del bloque actual, en el que la primera dirección corresponde a una de una primera lista de imágenes de referencia (Lista 0) o una segunda lista de imágenes de referencia (Lista 1);
    medios para determinar un primer valor de recuento de orden de imágenes, POC, de una primera imagen de referencia referenciada por un índice de referencia asociado con un primer vector de movimiento del bloque correspondiente que apunta en la primera dirección, mvLX;
    medios para determinar si una primera lista de imágenes de referencia, ListX, para el bloque actual incluye una imagen de referencia que tiene el primer valor de POC, en el que la primera lista de imágenes de referencia corresponde a la primera dirección, X;
    medios, en respuesta a la primera lista de imágenes de referencia, ListX, que incluyen la imagen de referencia que tiene el primer valor de POC, para agregar un candidato de fusión de vector de movimiento X predicho entre visualizaciones a la lista de candidatos de fusión, con el candidato de fusión de vector de movimiento X predicho entre visualizaciones que comprende un índice de imagen de referencia correspondiente a la imagen de referencia en la primera lista de imágenes de referencia, ListX, que tiene el primer valor de POC y que comprende el primer vector de movimiento, mvLX;
    medios para determinar un segundo valor de POC de una segunda imagen de referencia referenciada por un índice de referencia asociado con un segundo vector de movimiento del bloque correspondiente que apunta en una segunda dirección, mvLY, en respuesta a la primera lista de imágenes de referencia, ListX, sin incluir el imagen de referencia que tiene el primer valor de POC, en el que la segunda dirección, Y, es diferente de la primera dirección, X, en el que la segunda dirección corresponde a la otra de la primera lista de imágenes de referencia y la segunda lista de imágenes de referencia;
    medios para determinar si la primera lista de imágenes de referencia, ListX, para el bloque actual incluye una imagen de referencia que tiene el segundo valor de POC; y
    medios, en respuesta a la primera lista de imágenes de referencia que incluyen la imagen de referencia que tiene el segundo valor de POC, para añadir un candidato de fusión de vector de movimiento X predicho entre visualizaciones a la lista de candidatos de fusión, con el candidato de fusión de vector de movimiento X predicho entre visualizaciones que comprende un el índice de imagen de referencia correspondiente a la imagen de referencia en la primera lista de imágenes de referencia, ListX, que tiene el segundo valor de POC y que comprende el segundo vector de movimiento, mvLY;.
    medios para descodificar un valor de índice, en el que el valor de índice corresponde al candidato de fusión; y
    medios para predecir el bloque actual usando el candidato de fusión correspondiente al índice.
  5. 10. Un aparato para codificar datos de vídeo de múltiples visualizaciones, comprendiendo el aparato:
    medios para determinar, para un bloque actual en una visualización actual, un bloque correspondiente en una visualización de referencia que usa un vector de disparidad para el bloque actual;
    5
    10
    15
    20
    25
    30
    35
    40
    45
    50
    55
    60
    65
    medios para determinar una primera dirección, X, para un vector de movimiento actual del bloque actual, en el que la primera dirección corresponde a una de una primera lista de imágenes de referencia (Lista 0) o una segunda lista de imágenes de referencia (Lista 1);
    medios para determinar un primer valor de recuento de orden de imágenes, POC, de una primera imagen de referencia referenciada por un índice de referencia asociado con un primer vector de movimiento del bloque correspondiente que apunta en la primera dirección, mvLX;
    medios para determinar si una primera lista de imágenes de referencia, ListX, para el bloque actual incluye una imagen de referencia que tiene el primer valor de POC, en el que la primera lista de imágenes de referencia corresponde a la primera dirección;
    en respuesta a la primera lista de imágenes de referencia que incluye la imagen de referencia que tiene el primer valor de POC, medios para añadir un candidato de fusión de vector de movimiento X entre visualizaciones a una lista de candidatos de fusión, con el candidato de fusión de vector de movimiento X predicho entre visualizaciones que comprende un índice de imagen de referencia correspondiente a la imagen de referencia en la primera lista de imágenes de referencia, ListX, que tiene el primer valor de POC y que comprende el primer vector de movimiento, mvLX;
    medios para determinar un segundo valor de POC de una segunda imagen de referencia referenciada por un índice de referencia asociado con un segundo vector de movimiento del bloque correspondiente que apunta en una segunda dirección, mvLY, en respuesta a la primera lista de imágenes de referencia que no incluye la imagen de referencia que tiene el primer valor de POC, en el que la segunda dirección, Y, es diferente de la primera dirección, X, en el que la segunda dirección corresponde a la otra (Lista Y) de la primera lista de imágenes de referencia y la segunda lista de imágenes de referencia;
    medios para determinar si la primera lista de imágenes de referencia, ListX, para el bloque actual incluye una imagen de referencia que tiene el segundo valor de POC; y
    medios, en respuesta a la primera lista de imágenes de referencia, ListX, que incluye la imagen de referencia que tiene el segundo valor de POC, para agregar un candidato de fusión de vector de movimiento X predicho entre visualizaciones a la lista de candidatos de fusión, con el candidato de fusión de vector de movimiento X predicho entre visualizaciones que comprende un índice de imagen de referencia correspondiente a la imagen de referencia en la primera lista de imágenes de referencia, ListX, que tiene el segundo valor de POC y que comprende el segundo vector de movimiento, mvLY;.
    medios para descodificar un valor de índice, en el que el valor de índice corresponde al candidato de fusión; y
    medios para predecir el bloque actual usando el candidato de fusión correspondiente al índice.
  6. 11. El aparato según la reivindicación 9 o 10, en el que cuando la primera lista de imágenes de referencia no incluye la imagen de referencia que tiene el primer valor de pOc y cuando la segunda lista de imágenes de referencia no incluye la imagen de referencia que tiene el segundo valor de POC, comprendiendo además el aparato:
    medios para determinar si una primera diferencia de POC, que representa la diferencia entre el primer valor de POC y un primer valor de POC más cercano para una imagen de referencia en la primera lista de imágenes de referencia para el primer valor de POC, es mayor que una segunda diferencia de POC, representando la diferencia entre el segundo valor de POC y un segundo valor de POC más próximo para una imagen de referencia en la segunda lista de imágenes de referencia para el segundo valor de POC;
    medios para escalar el primer vector de movimiento de acuerdo con la primera diferencia de POC y medios para descodificar el vector de movimiento actual usando el primer vector de movimiento a escala cuando la primera diferencia de POC es mayor que la segunda diferencia de POC; y
    medios para el segundo vector de movimiento de acuerdo con la segunda diferencia de POC y medios para descodificar el vector de movimiento actual usando el segundo vector de movimiento a escala cuando la primera diferencia de POC no es mayor que la segunda diferencia de POC.
  7. 12. El aparato de la reivindicación 9 o 10, en el que para un modo de predicción avanzada de vectores de movimiento, AMVP, para el bloque actual, el aparato comprende además
    medios para descodificar un valor de diferencia de vector de movimiento; y en el que los medios para predecir el bloque actual utilizan adicionalmente el valor de diferencia de vector de movimiento.
  8. 13. El aparato de la reivindicación 9 o 10, que comprende además:
    5
    medios para establecer uno del primer vector de movimiento y el segundo vector de movimiento como no disponible en respuesta al predictor de movimiento bidireccional que tiene la misma componente horizontal y la misma componente vertical y que tiene índices de referencia correspondientes a la misma imagen.
    10
  9. 14. Un medio de almacenamiento legible por ordenador que almacena instrucciones que, tras su ejecución por uno o más procesadores, hacen que el uno o más procesadores realicen el procedimiento de cualquiera de las reivindicaciones 1 a 8.
    DISPOSITIVO DE ORIGEN 12
    FUENTE DE VÍDEO 18
    ____I____
    UNIDAD DE ESTIMACIÓN DE PROFUNDIDAD 19
    _____í_____
    CODIFICADOR DE VÍDEO 20
    ___í___
    INTERFAZ DE SALIDA 22
    imagen1
    DISPOSITIVO DE DESTINO 14
    imagen2
    FIG. 1
ES13753249.5T 2012-08-16 2013-08-16 Vector de movimiento predicho entre visualizaciones para vídeo 3D Active ES2669399T3 (es)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201261684100P 2012-08-16 2012-08-16
US201261684100P 2012-08-16
US13/968,362 US9357195B2 (en) 2012-08-16 2013-08-15 Inter-view predicted motion vector for 3D video
US201313968362 2013-08-15
PCT/US2013/055406 WO2014028870A1 (en) 2012-08-16 2013-08-16 Inter-view predicted motion vector for 3d video

Publications (1)

Publication Number Publication Date
ES2669399T3 true ES2669399T3 (es) 2018-05-25

Family

ID=50099786

Family Applications (1)

Application Number Title Priority Date Filing Date
ES13753249.5T Active ES2669399T3 (es) 2012-08-16 2013-08-16 Vector de movimiento predicho entre visualizaciones para vídeo 3D

Country Status (8)

Country Link
US (1) US9357195B2 (es)
EP (1) EP2885916B1 (es)
KR (1) KR101751145B1 (es)
CN (1) CN104584558B (es)
ES (1) ES2669399T3 (es)
HU (1) HUE036380T2 (es)
TW (1) TWI501611B (es)
WO (1) WO2014028870A1 (es)

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101532665B1 (ko) * 2011-03-14 2015-07-09 미디어텍 인크. 시간적 움직임 백터 예측을 도출하기 위한 방법 및 장치
KR102117085B1 (ko) 2011-03-21 2020-05-29 엘지전자 주식회사 움직임 벡터 예측자 선택 방법 및 이를 이용하는 장치
HUE067847T2 (hu) * 2011-05-31 2024-11-28 Jvckenwood Corp Mozgókép kódoló eszköz, mozgókép kódolási eljárás és mozgókép kódoló program, valamint mozgókép dekódoló eszköz, mozgókép dekódoló eljárás és mozgókép dekódoló program
WO2012177052A2 (ko) 2011-06-21 2012-12-27 한국전자통신연구원 인터 예측 방법 및 그 장치
KR20120140592A (ko) * 2011-06-21 2012-12-31 한국전자통신연구원 움직임 보상의 계산 복잡도 감소 및 부호화 효율을 증가시키는 방법 및 장치
WO2014077573A2 (ko) * 2012-11-13 2014-05-22 엘지전자 주식회사 비디오 신호 처리 방법 및 장치
US20160255368A1 (en) * 2013-10-18 2016-09-01 Lg Electronics Inc. Method and apparatus for coding/decoding video comprising multi-view
EP3958572B1 (en) * 2014-01-02 2024-02-07 Dolby Laboratories Licensing Corporation Method for encoding multi-view video, method for decoding multi-view video and recording medium therefore
US10567789B2 (en) * 2014-06-16 2020-02-18 Qualcomm Incorporated Simplified shifting merge candidate and merge list derivation in 3D-HEVC
WO2015196364A1 (en) * 2014-06-24 2015-12-30 Mediatek Singapore Pte. Ltd. Methods for inter-view advanced residual prediction
CN106358042B (zh) * 2015-07-17 2020-10-09 恩智浦美国有限公司 使用视频图像的帧间预测的并行解码器
US20180242004A1 (en) * 2015-08-23 2018-08-23 Lg Electronics Inc. Inter prediction mode-based image processing method and apparatus therefor
WO2018030206A1 (ja) * 2016-08-10 2018-02-15 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ カメラワーク生成方法及び映像処理装置
EP3349451A1 (en) * 2017-01-11 2018-07-18 Thomson Licensing Method and apparatus for selecting a coding mode used for encoding/decoding a residual block
CN116233416A (zh) * 2017-01-16 2023-06-06 世宗大学校产学协力团 影像编码/解码方法
CN109005412B (zh) * 2017-06-06 2022-06-07 北京三星通信技术研究有限公司 运动矢量获取的方法及设备
CN118632013A (zh) * 2017-09-19 2024-09-10 三星电子株式会社 对运动信息进行编码和解码的方法以及设备
US11477474B2 (en) * 2018-06-08 2022-10-18 Mediatek Inc. Methods and apparatus for multi-hypothesis mode reference and constraints
AU2019293670B2 (en) 2018-06-29 2023-06-08 Beijing Bytedance Network Technology Co., Ltd. Update of look up table: FIFO, constrained FIFO
MX392418B (es) * 2018-06-29 2025-03-24 Beijing Bytedance Network Tech Co Ltd Poda parcial/total cuando se añade un candidato a hmvp para fusión/amvp.
KR20240005239A (ko) 2018-06-29 2024-01-11 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 Lut와 amvp 사이의 상호작용
MX2021002488A (es) * 2018-09-04 2021-07-16 Huawei Tech Co Ltd Método de obtención de trama de referencia y aparato aplicado a la interpredicción bidireccional.
CN112889269B (zh) * 2018-10-23 2023-10-27 腾讯美国有限责任公司 视频解码方法及装置
WO2020143741A1 (en) 2019-01-10 2020-07-16 Beijing Bytedance Network Technology Co., Ltd. Invoke of lut updating
WO2020147773A1 (en) 2019-01-16 2020-07-23 Beijing Bytedance Network Technology Co., Ltd. Inserting order of motion candidates in lut
CN111479111B (zh) * 2019-01-23 2024-04-09 华为技术有限公司 图像显示顺序的确定方法、装置和视频编解码设备
CN113709474B (zh) 2019-03-11 2022-11-01 杭州海康威视数字技术股份有限公司 一种编解码方法、装置及其设备
CN113615193B (zh) 2019-03-22 2024-06-25 北京字节跳动网络技术有限公司 Merge列表构建和其他工具之间的交互
EP4020396B1 (en) * 2020-12-23 2026-03-04 Beijing Xiaomi Mobile Software Co., Ltd. Method and apparatus of entropy encoding/decoding point cloud geometry data captured by a spinning sensors head

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8879635B2 (en) * 2005-09-27 2014-11-04 Qualcomm Incorporated Methods and device for data alignment with time domain boundary
ZA200805337B (en) * 2006-01-09 2009-11-25 Thomson Licensing Method and apparatus for providing reduced resolution update mode for multiview video coding
WO2007148906A1 (en) 2006-06-19 2007-12-27 Lg Electronics, Inc. Method and apparatus for processing a vedeo signal
TWI344791B (en) * 2006-07-12 2011-07-01 Lg Electronics Inc A method and apparatus for processing a signal
CN101888555B (zh) 2006-11-17 2013-04-03 Lg电子株式会社 用于解码/编码视频信号的方法及装置
US8923399B2 (en) 2007-01-24 2014-12-30 Lg Electronics Inc. Method and an apparatus for processing a video signal
CN102160381A (zh) * 2008-09-24 2011-08-17 索尼公司 图像处理设备和方法
WO2010050728A2 (ko) * 2008-10-27 2010-05-06 엘지전자 주식회사 가상 뷰 이미지 합성 방법 및 장치
US8462849B2 (en) 2008-12-23 2013-06-11 General Instrument Corporation Reference picture selection for sub-pixel motion estimation
EP2424247B1 (en) 2009-04-21 2016-08-24 LG Electronics Inc. Method and apparatus for processing multi-view video signal
US9094689B2 (en) 2011-07-01 2015-07-28 Google Technology Holdings LLC Motion vector prediction design simplification
US9338474B2 (en) 2011-09-23 2016-05-10 Qualcomm Incorporated Reference picture list construction for video coding
US20130089152A1 (en) 2011-10-05 2013-04-11 Qualcomm Incorporated Signaling picture identification for video coding
EP2843946A4 (en) * 2012-04-25 2016-01-20 Samsung Electronics Co Ltd MULTILOSYVIEW VIDEO COORDINATION METHOD USING A REFERENCE FILMS FOR MULTILOOK VIEW VIEW AND DEVICE THEREFOR, AND MULTIPLE VIDEO VIDEO CODING METHODS USING A REFERENCE FILMS FOR MULTILOOK VIEWS AND METHOD THEREFOR

Also Published As

Publication number Publication date
KR20150043464A (ko) 2015-04-22
TW201419877A (zh) 2014-05-16
WO2014028870A1 (en) 2014-02-20
HUE036380T2 (hu) 2018-07-30
EP2885916A1 (en) 2015-06-24
CN104584558B (zh) 2018-01-19
KR101751145B1 (ko) 2017-06-26
TWI501611B (zh) 2015-09-21
CN104584558A (zh) 2015-04-29
US9357195B2 (en) 2016-05-31
US20140049605A1 (en) 2014-02-20
EP2885916B1 (en) 2018-02-21

Similar Documents

Publication Publication Date Title
ES2669399T3 (es) Vector de movimiento predicho entre visualizaciones para vídeo 3D
ES2734574T3 (es) Modo avanzado de fusión/salto y modo avanzado de predicción de vector de movimiento (AMVP) para vídeo 3D
ES2755573T3 (es) Predicción de vector de movimiento temporal avanzada basada en unidades de subpredicción
ES2900751T3 (es) Extensiones de sintaxis de alto nivel para codificación de vídeo de alta eficacia
ES2841986T3 (es) Identificación de bloques usando vector de disparidad en la codificación de vídeo
KR102331683B1 (ko) 3d 비디오 코딩을 위한 블록-기반 진보된 잔차 예측
ES2799323T3 (es) Técnicas de codificación de vídeo usando particionamiento de movimiento asimétrica
ES2869854T3 (es) Unificar copia intrabloque e interpredicción
CN104662909B (zh) 用于3d视频的视图间运动预测
ES2638416T3 (es) Predicción residual avanzada (ARP) más precisa para la codificación de texturas
KR101834611B1 (ko) 비디오 코딩에서 디스패리티 벡터 예측
US9699450B2 (en) Inter-view predicted motion vector for 3D video
KR102264104B1 (ko) 백워드 뷰 합성 예측
US9438926B2 (en) Constraints on neighboring block based disparity vector (NBDV) techniques for 3D video