ES2633150T3 - Predicción de vectores de movimiento en codificación de vídeo - Google Patents

Predicción de vectores de movimiento en codificación de vídeo Download PDF

Info

Publication number
ES2633150T3
ES2633150T3 ES12718013.1T ES12718013T ES2633150T3 ES 2633150 T3 ES2633150 T3 ES 2633150T3 ES 12718013 T ES12718013 T ES 12718013T ES 2633150 T3 ES2633150 T3 ES 2633150T3
Authority
ES
Spain
Prior art keywords
motion vector
block
view
video
image
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
ES12718013.1T
Other languages
English (en)
Inventor
Ying Chen
Peisong Chen
Marta Karczewicz
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Qualcomm Inc filed Critical Qualcomm Inc
Application granted granted Critical
Publication of ES2633150T3 publication Critical patent/ES2633150T3/es
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/597Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding specially adapted for multi-view video sequence encoding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/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/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/146Data rate or code amount at the encoder output
    • H04N19/147Data rate or code amount at the encoder output according to rate distortion criteria
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/46Embedding additional information in the video signal during the compression process
    • 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 codificación de datos de vídeo, comprendiendo el procedimiento: identificar (202) un primer bloque de datos de vídeo en una primera posición temporal de una primera vista, en el que el primer bloque de datos de vídeo está asociado con un primer vector de movimiento temporal; determinar (206) un predictor de vector de movimiento para un segundo vector de movimiento asociado con un segundo bloque de datos de vídeo, en el que el segundo vector de movimiento es un vector de movimiento temporal y el segundo bloque es de una segunda vista que es diferente de la primera vista, en el que determinar el predictor del vector de movimiento comprende: usar el primer vector de movimiento como el predictor de vector de movimiento, cuando un valor de recuento de orden de imágenes (POC) de una imagen de referencia del segundo vector de movimiento es igual a un valor de POC de una imagen de referencia del primer vector de movimiento y un valor de POC de una imagen objetivo del segundo vector de movimiento es igual a un valor de POC de una imagen objetivo del primer vector de movimiento; y codificar (208) datos de predicción para el segundo bloque mediante el predictor de vector de movimiento, estando el procedimiento caracterizado por que cuando un valor de POC de una imagen de referencia del vector de movimiento para el segundo bloque es diferente de un valor de POC de una imagen de referencia del primer vector de movimiento, escalar el primer vector de movimiento basándose en una diferencia en una distancia temporal entre el primer vector de movimiento temporal y el segundo vector de movimiento temporal, comprendiendo dicha distancia temporal una distancia de POC entre una imagen de referencia y una imagen objetivo del vector de movimiento temporal respectivo.

Description

5
10
15
20
25
30
35
40
45
50
55
60
65
DESCRIPCION
Prediccion de vectores de movimiento en codificacion de video Descripcion
Esta divulgacion reivindica el beneficio de prioridad de la solicitud provisional de Estados Unidos n.° 61/477.561, presentada el 20 de abril de 2011, y de la solicitud de Estados Unidos n.° 61/512.765, presentada el 28 de julio de 2011.
CAMPO TECNICO
Esta divulgacion se refiere a la codificacion de video.
ANTECEDENTES
Las capacidades de video digital pueden incorporarse en una amplia gama de dispositivos, que incluye televisores digitales, sistemas de difusion directa digital, sistemas de difusion inalambrica, asistentes digitales personales (PDA), ordenadores portatiles o de escritorio, ordenadores de tableta, lectores de libros electronicos, camaras digitales, dispositivos de grabacion digital, reproductores de medios digitales, dispositivos de videojuegos, consolas de videojuegos, telefonos celulares o de radio por satelite, los denominados "telefonos inteligentes", dispositivos de videoconferencia, dispositivos de transmision de video en continuo y similares. Los dispositivos de video digital implementan tecnicas de compresion de video, 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, Codificacion avanzada de video (AVC), la norma de Codificacion de video de alta eficacia (HEVC) actualmente en elaboracion y las ampliaciones de dichas normas. Los dispositivos de video pueden transmitir, recibir, codificar, decodificar y/o almacenar informacion de video digital mas eficazmente, implementando dichas tecnicas de compresion de video.
Las tecnicas de compresion de video llevan a cabo la prediccion espacial (intraimagen) y/o la prediccion temporal (interimagen) para reducir o eliminar la redundancia intrfnseca en las secuencias de video. Para la codificacion de video basada en bloques, un fragmento de video (por ejemplo, una imagen o una parte de una imagen) puede dividirse en bloques de video, que tambien pueden denominarse bloques en arbol, unidades de codificacion (CU) y/o nodos de codificacion. Los bloques de video en un segmento sometido a codificacion intra (I) de una imagen se codifican mediante prediccion espacial, con respecto a unas muestras de referencia de unos bloques contiguos de la misma imagen. Los bloques de video de un segmento sometido a codificacion inter (P o B) de una imagen pueden usar la prediccion espacial con respecto a unas muestras de referencia de bloques contiguos de la misma imagen, o la prediccion temporal con respecto a unas muestras de referencia de otras imagenes de referencia.
La prediccion espacial o temporal da como resultado un bloque predictivo para un bloque por codificar. Los datos residuales representan diferencias de pfxeles entre el bloque original por codificar y el bloque predictivo. Un bloque sometido a codificacion inter 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 sometido a codificacion intra se codifica de acuerdo con una modalidad de codificacion intra y los datos residuales. Para una mayor compresion, los datos residuales pueden transformarse del dominio del pixel a un dominio de transformada, dando como resultado unos coeficientes de transformada residuales, los cuales pueden cuantificarse posteriormente. Los coeficientes de transformada cuantificados, inicialmente dispuestos en una matriz bidimensional, pueden explorarse con el fin de producir un vector unidimensional de coeficientes de transformada, y puede aplicarse codificacion de entropfa para lograr aun mas compresion.
El documento WO 2008/007913 A1 divulga un procedimiento para predecir un vector de movimiento de direccion temporal para una unidad actual que usa un vector de movimiento de direccion de vista asociado con la unidad actual para identificar una unidad de referencia en una vista diferente.
El documento EP 1 377 067 A1 divulga un procedimiento en el que los vectores de movimiento se obtienen como vectores predictivos escalando los vectores de referencia de acuerdo con las distancias intratrama.
SUMARIO
En general, esta divulgacion describe tecnicas para codificacion de datos de video. Esta divulgacion describe tecnicas para realizar la prediccion de vectores de movimiento, la estimacion de movimiento y la compensacion de movimiento cuando se realiza la codificacion intermodalidad (es decir, se codifica un bloque actual en relacion con bloques de otras imagenes) en la codificacion de video multivista (MVC). En general, la MVC es una norma de codificacion de video para encapsular multiples vistas de datos de video. Cada vista puede corresponder a una perspectiva, o angulo, diferente, donde se captaron los datos de video correspondientes de una escena comun. Las tecnicas de esta divulgacion incluyen en general la prediccion de datos de prediccion de movimiento en el contexto
5
10
15
20
25
30
35
40
45
50
55
60
65
de la codificacion de video multivista. Es decir, por ejemplo, de acuerdo con las tecnicas de esta divulgacion, un vector de movimiento de disparidad, de un bloque de una vista igual o diferente a la de un bloque que se esta codificando actualmente, puede usarse para predecir el vector de movimiento del bloque actual. En otro ejemplo, de acuerdo con las tecnicas de esta divulgacion, un vector de movimiento temporal de un bloque de una vista igual o diferente a la de un bloque codificado actualmente puede usarse para predecir el vector de movimiento del bloque actual.
En un ejemplo, unos aspectos de esta divulgacion se refieren a un procedimiento de codificacion de datos de video de acuerdo con la reivindicacion independiente 1.
En otro ejemplo, unos aspectos de esta divulgacion se refieren a un aparato para codificar datos de video de acuerdo con la reivindicacion independiente 7.
En otro ejemplo, unos aspectos de esta divulgacion se refieren a un medio de almacenamiento legible por ordenador de acuerdo con la reivindicacion independiente 9.
Los detalles de uno o mas aspectos de la divulgacion se exponen en los dibujos adjuntos y la descripcion siguiente. Otras caracterfsticas, objetos y ventajas de las tecnicas descritas en esta divulgacion seran evidentes a partir de la descripcion y los dibujos, y a partir de las reivindicaciones.
BREVE DESCRIPCION DE LOS DIBUJOS
La FIG. 1 es un diagrama de bloques que ilustra un ejemplo de sistema de codificacion y decodificacion de video que puede usar las tecnicas descritas en esta divulgacion.
La FIG. 2 es un diagrama de bloques que ilustra un ejemplo de codificador de video que puede implementar las tecnicas descritas en esta divulgacion.
La FIG. 3 es un diagrama de bloques que ilustra un ejemplo de decodificador de video que puede implementar las tecnicas descritas en esta divulgacion.
La FIG. 4 es un diagrama conceptual que ilustra un ejemplo de patron de prediccion de codificacion de video multivista (MVC).
La FIG. 5 es un diagrama de bloques que ilustra ejemplos de localizaciones para predictores de vector de movimiento candidatos.
La FIG. 6 es un diagrama conceptual que ilustra la generacion y el escalado de un predictor de vector de movimiento, de acuerdo con unos aspectos de esta divulgacion.
La FIG. 7 es otro diagrama conceptual que ilustra la generacion y el escalado de un predictor de vector de movimiento, de acuerdo con unos aspectos de esta divulgacion.
La FIG. 8 es otro diagrama conceptual que ilustra la generacion y el escalado de un predictor de vector de movimiento, de acuerdo con unos aspectos de esta divulgacion.
La FIG. 9 es un diagrama de flujo que ilustra un ejemplo de procedimiento de codificacion de informacion de prediccion para un bloque de datos de video.
La FIG. 10 es un diagrama conceptual que ilustra la generacion de un predictor de vector de movimiento a partir de un bloque en una vista diferente a la de un bloque actual.
La FIG. 11 es un diagrama de flujo que ilustra un ejemplo de procedimiento de generacion de un predictor de vector de movimiento a partir de un bloque en una vista diferente a la de un bloque actual.
DESCRIPCION DETALLADA
De acuerdo con ciertos sistemas de codificacion de video, la estimacion de movimiento y la compensacion de movimiento se pueden usar para reducir la redundancia temporal en una secuencia de video, con el fin de lograr la compresion de datos. En este caso, puede generarse un vector de movimiento que identifica un bloque predictivo de datos de video, por ejemplo, un bloque de otra imagen o segmento de video, que se puede usar para predecir los valores del bloque de video actual que se esta codificando. Los valores del bloque de video predictivo se restan de los valores del bloque de video actual para producir un bloque de datos residuales. La informacion de movimiento (por ejemplo, un vector de movimiento, indices de vectores de movimiento, direcciones de prediccion u otra informacion) se comunica desde un codificador de video a un decodificador de video, junto con los datos residuales. El decodificador puede localizar el mismo bloque predictivo (basandose en el vector de movimiento) y reconstruir el
5
10
15
20
25
30
35
40
45
50
55
60
65
bloque de video codificado combinando los datos residuales con los datos del bloque predictivo.
En algunos casos, la codificacion predictiva de vectores de movimiento tambien se aplica para reducir aun mas la cantidad de datos necesarios para comunicar el vector de movimiento. El establecimiento de un vector de movimiento se realiza desde una imagen objetivo hasta una imagen de referencia. Un vector de movimiento puede predecirse espacialmente o temporalmente. Un vector de movimiento predicho espacialmente esta asociado con bloques espaciales disponibles (un bloque del mismo instante de tiempo). Un vector de movimiento predicho temporalmente esta asociado con bloques temporales disponibles (un bloque de un instante de tiempo diferente). En el caso de la prediccion del vector de movimiento, en lugar de codificar y comunicar el propio vector de movimiento, el codificador codifica y comunica una diferencia de vector de movimiento (MVD) con respecto a un vector de movimiento conocido (o conocible). En la norma H.264/AVC, el vector de movimiento conocido, que puede usarse con la MVD para definir el vector de movimiento actual, puede definirse mediante uno de los denominados predictores de vector de movimiento (MVP). Para ser un MVP valido, el vector de movimiento debe apuntar a la misma imagen que el vector de movimiento que se esta codificando actualmente mediante el MVP y la MVD.
Un codificador de video puede construir una lista de posibles predictores de vector de movimiento que incluye varios bloques vecinos en direcciones espaciales y temporales como MVP candidatos. En este caso, un codificador de video puede seleccionar el predictor mas preciso del conjunto candidato basandose en el analisis de la velocidad de codificacion y la distorsion (por ejemplo, mediante un analisis velocidad-coste de distorsion u otro tipo de analisis de eficiencia de codificacion). Se puede transmitir un indice de predictor de vector de movimiento (mvp_idx) a un decodificador de video para informar al decodificador donde localizar el MVP. El MVD tambien se transmite. El decodificador puede combinar la MVD con el MVP (definido por el indice del predictor del vector de movimiento) para reconstruir el vector de movimiento.
Tambien puede estar disponible una denominada "modalidad de fusion", en la que se hereda informacion de movimiento (tal como vectores de movimiento, indices de imagenes de referencia, direcciones de prediccion u otra informacion) de un bloque de video vecino para un bloque de video actual que se esta codificando. Se puede usar un valor de indice para identificar el vecino del cual el bloque de video actual hereda su informacion de movimiento.
La codificacion de video multivista (MVC) es una norma de codificacion de video para encapsular multiples vistas de datos de video. En general, cada vista se corresponde con una perspectiva, o angulo, diferente, donde se captaron (o generaron) los datos de video correspondientes de una escena comun. La MVC proporciona un conjunto de metadatos, es decir, datos descriptivos para las vistas, de forma conjunta o individual.
Las vistas codificadas se pueden usar para la visualizacion tridimensional (3D) de datos de video. Por ejemplo, dos vistas (por ejemplo, las vistas de los ojos izquierdo y derecho de un observador humano) pueden visualizarse simultaneamente, o casi simultaneamente, mediante diferentes polarizaciones de luz, y un espectador puede usar gafas polarizadas pasivas de tal manera que cada uno de los ojos del espectador reciba una respectiva de las vistas. De forma alternativa, el espectador puede llevar gafas activas que obturan cada ojo de forma independiente, y una pantalla puede alternar rapidamente entre las imagenes de cada ojo de forma sincronizada con las gafas.
En la MVC, una imagen particular de una vista particular se conoce como "componente de vista". Es decir, un componente de vista de una vista corresponde a un instante de tiempo particular de la vista. Tfpicamente, los objetos iguales o correspondientes de dos vistas no estan coubicados. El termino "vector de disparidad" puede usarse para referirse a un vector que indica el desplazamiento de un objeto en una imagen de una vista relativa al objeto correspondiente de una vista diferente. Dicho vector tambien se puede denominar "vector de desplazamiento". Un vector de disparidad tambien puede ser aplicable a un pixel o un bloque de datos de video de una imagen. Por ejemplo, un pixel de una imagen de una primera vista puede estar desplazado con respecto a un pixel correspondiente de una imagen de una segunda vista por una disparidad particular relacionada con diferentes posiciones de la camara desde las cuales se captan la primera vista y la segunda vista. En algunos ejemplos, la disparidad puede usarse para predecir un vector de movimiento de una vista a otra.
En el contexto de la MVC, las imagenes de una vista se pueden predecir a partir de las imagenes de otra vista. Por ejemplo, un bloque de datos de video puede predecirse con relacion a un bloque de datos de video de una imagen de referencia del mismo instante de tiempo, pero de una vista diferente. En un ejemplo, un bloque que se esta codificando actualmente puede denominarse "bloque actual". Un vector de movimiento que predice el bloque actual a partir de un bloque de una vista diferente pero del mismo instante de tiempo se denomina "vector de movimiento de disparidad". Un vector de movimiento de disparidad es tfpicamente aplicable en el contexto de la codificacion de video multivista, donde pueden estar disponibles mas de una vista. De acuerdo con esta divulgacion, una "distancia de vista" para un vector de movimiento de disparidad puede referirse a una diferencia de traslacion entre la vista de la imagen de referencia y la vista de la imagen objetivo. Es decir, una distancia de vista puede representarse como una diferencia de identificador de vista entre un identificador de vista de la imagen de referencia y un identificador de vista de la imagen objetivo.
Otro tipo de vector de movimiento es un "vector de movimiento temporal". En el contexto de la codificacion de video multivista, un vector de movimiento temporal se refiere a un vector de movimiento que predice un bloque actual a
5
10
15
20
25
30
35
40
45
50
55
60
65
partir de un bloque de un instante de tiempo diferente, pero dentro de la misma vista. De acuerdo con esta divulgacion, una "distancia temporal" de un vector de movimiento temporal puede referirse a una distancia de recuento de orden de imagenes (POC) desde la imagen de referencia a la imagen objetivo.
Ciertas tecnicas de esta divulgacion estan dirigidas al uso de informacion de movimiento (por ejemplo, un vector de movimiento, unos indices de movimiento vectorial, unas direcciones de prediccion u otra informacion) asociada con un bloque de datos de video en una configuracion multivista para predecir informacion de movimiento de un bloque que se esta codificando actualmente. Por ejemplo, de acuerdo con unos aspectos de esta divulgacion, se puede anadir un vector de movimiento predicho a partir de una vista diferente, como candidato para una o mas listas de vectores de movimiento usadas para la prediccion del vector de movimiento del bloque actual. En algunos ejemplos, un codificador de video puede usar un vector de movimiento de disparidad asociado con un bloque de una vista diferente a la de un bloque que se codifica actualmente para predecir un vector de movimiento para el bloque actual y puede anadir el vector de movimiento de disparidad predicho a una lista de vectores de movimiento candidatos. En otros ejemplos, un codificador de video puede usar un vector de movimiento temporal asociado con un bloque de una vista diferente a la de un bloque que se codifica actualmente para predecir un vector de movimiento para el bloque actual, y puede anadir el vector de movimiento temporal predicho a una lista de vectores de movimiento candidatos.
De acuerdo con unos aspectos de esta divulgacion, un vector de movimiento de disparidad puede escalarse antes de ser usado como predictor de vector de movimiento para un bloque que se codifica actualmente. Por ejemplo, si un vector de movimiento de disparidad identifica una imagen de referencia que tiene el mismo identificador de vista que un vector de movimiento actual que se predice, y el vector de movimiento de disparidad tiene una imagen objetivo con el mismo identificador de vista que el vector de movimiento actual que se predice, el vector de movimiento tal vez no se escale antes de ser usado para predecir el vector de movimiento para el bloque actual. En otros casos, el vector de movimiento de disparidad puede escalarse antes de ser usado para predecir el vector de movimiento para el bloque actual.
En otro ejemplo, un vector de movimiento de disparidad puede predecirse a partir de un vector de movimiento de disparidad asociado con un bloque contiguo en el espacio. En este ejemplo, si el identificador de vista de la imagen de referencia del vector de movimiento de disparidad es el mismo que el de la imagen de referencia del vector de movimiento que se va a predecir (por ejemplo, el vector de movimiento asociado con el bloque que se predice actualmente), tal vez no se precise escalado. De lo contrario, el vector de movimiento de disparidad se puede escalar basandose en la ubicacion de camara de una camara usada para captar los datos de video. Es decir, por ejemplo, el vector de movimiento de disparidad que se usada para la prediccion puede escalarse de acuerdo con una diferencia entre el identificador de vista de la imagen de referencia del vector de movimiento de disparidad y el identificador de vista de la imagen objetivo del vector de movimiento. En algunos ejemplos, el escalado del vector de movimiento de disparidad puede realizarse basandose en las traslaciones de las vistas.
En otro ejemplo, un vector de movimiento de disparidad puede predecirse a partir de un vector de movimiento de disparidad asociado con un bloque contiguo en el tiempo. En este ejemplo, si el identificador de vista de la imagen de referencia del vector de movimiento de disparidad es el mismo que el de la imagen de referencia del vector de movimiento que se va a predecir, y el identificador de vista de la imagen objetivo del vector de movimiento de disparidad es el mismo que el de la imagen de referencia del vector de movimiento que se va a predecir, no se precisara escalado. De lo contrario, el vector de movimiento de disparidad se puede escalar basandose en una diferencia en el identificador de vista, como se describe con respecto al ejemplo anterior.
Con respecto a la prediccion de vector de movimiento temporal, de acuerdo con unos aspectos de esta divulgacion, un vector de movimiento temporal que tiene una imagen objetivo en una primera vista puede usarse para predecir un vector de movimiento temporal que tiene una imagen objetivo en una segunda vista diferente. En algunos ejemplos, el bloque de la imagen objetivo del vector de movimiento temporal que se usada para la prediccion puede estar coubicado con el bloque que actualmente se predice en una vista diferente. En otros ejemplos, el bloque de la imagen objetivo del vector de movimiento temporal que se usada para la prediccion puede estar desplazado respecto del bloque actual, debido a una disparidad entre las dos vistas.
En algunos ejemplos, cuando un vector de movimiento que se predice a partir de una vista diferente es un vector de movimiento temporal, el vector de movimiento puede escalarse basandose en una diferencia en las distancias de recuento de orden de imagenes (POC). Por ejemplo, de acuerdo con unos aspectos de esta divulgacion, si una imagen de referencia del vector de movimiento temporal que se usada para la prediccion tiene el mismo valor de POC que la imagen de referencia del vector de movimiento actual que se predice, y la imagen objetivo del vector de movimiento temporal usado para la prediccion tiene el mismo valor de pOc que la imagen de referencia del vector de movimiento actual que se esta prediciendo, el vector de movimiento que se esta usando para la prediccion tal vez no se escale. De lo contrario, sin embargo, el vector de movimiento que se usada para la prediccion puede escalarse basandose en una diferencia en el valor de POC entre la imagen de referencia del vector de movimiento que se usada para la prediccion y la imagen de referencia del vector de movimiento que se esta prediciendo actualmente.
De acuerdo con algunos aspectos de esta divulgacion, se pueden usar vectores de movimiento temporal y/o de
5
10
15
20
25
30
35
40
45
50
55
60
65
disparidad desde vistas diferentes como MVP candidatos. Por ejemplo, los vectores de movimiento temporal y/o de disparidad pueden usarse para calcular un MVD para un bloque actual. De acuerdo con otros aspectos de esta divulgacion, se pueden usar vectores de movimiento temporal y/o disparidad de diferentes vistas como candidatos de fusion. Por ejemplo, los vectores de movimiento temporal y/o de disparidad pueden heredarse para un bloque actual. En dichos ejemplos, se puede usar un valor de indice para identificar al bloque contiguo del que el bloque de video actual hereda su informacion de movimiento. En cualquier caso, se puede escalar un vector de movimiento de disparidad y/o temporal de una vista diferente de la que se usada como MVP o candidato de fusion antes de usarlo como MVP o candidato de fusion.
La FIG. 1 es un diagrama de bloques que ilustra un ejemplo de sistema de codificacion y decodificacion de video 10 que puede usar las tecnicas para la prediccion del vector de prediccion en la codificacion multivista. Como se muestra en la FIG. 1, el sistema 10 incluye un dispositivo de origen 12 que proporciona datos de video codificados que se van a decodificar en un momento posterior mediante un dispositivo de destino 14. En particular, el dispositivo de origen 12 proporciona los datos de video al dispositivo de destino 14 a traves de un medio legible por ordenador 16. El dispositivo de origen 12 y el dispositivo de destino 14 pueden comprender cualquiera de entre una amplia gama de dispositivos, que incluye ordenadores de sobremesa, ordenadores plegables (es decir, portatiles), ordenadores de tableta, decodificadores, equipos telefonicos de mano tales como los denominados telefonos "inteligentes", los denominados paneles “inteligentes”, televisores, camaras, dispositivos de visualizacion, reproductores de medios digitales, consolas de videojuegos, un dispositivo de transmision de video en continuo o similares. En algunos casos, el dispositivo de origen 12 y el dispositivo de destino 14 pueden estar equipados para la comunicacion inalambrica.
El dispositivo de destino 14 puede recibir los datos de video codificados que se van a decodificar, a traves del 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 video 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 comunicacion para permitir al dispositivo de origen 12 transmitir datos de video codificados directamente al dispositivo de destino 14 en tiempo real.
Los datos de video codificados pueden modularse de acuerdo con una norma de comunicacion, tal como un protocolo de comunicacion inalambrica, y transmitirse al dispositivo de destino 14. El medio de comunicacion puede comprender cualquier medio de comunicacion inalambrico o cableado, tal como un espectro de radiofrecuencia (RF) o una o mas lfneas de transmision ffsica. El medio de comunicacion puede formar parte de una red basada en paquetes, tal como una red de area local, una red de area extensa o una red global tal como Internet. El medio de comunicacion puede incluir encaminadores, conmutadores, estaciones base o cualquier otro equipo que pueda ser util para facilitar la comunicacion desde el dispositivo de origen 12 al dispositivo de destino 14.
En algunos ejemplos, pueden transmitirse 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 de entre una diversidad de medios de almacenamiento de datos, de acceso distribuido o local, tales como una unidad de disco fijo, discos Blu-ray, DVD, CD-ROM, memoria flash, memoria volatil o no volatil u o cualquier otro medio adecuado de almacenamiento digital, para almacenar datos de video codificados. En un ejemplo adicional, el dispositivo de almacenamiento puede corresponder a un servidor de archivos o a otro dispositivo de almacenamiento intermedio que pueda almacenar el video codificado generado por el dispositivo de origen 12.
El dispositivo de destino 14 puede acceder a los datos de video almacenados del dispositivo de almacenamiento a traves de transmision en continuo o descarga. El servidor de ficheros puede ser cualquier tipo de servidor capaz de almacenar datos de video codificados y transmitir esos datos de video codificados al dispositivo de destino 14. Los ejemplos de servidores de archivos incluyen un servidor web (por ejemplo, para un sitio web), un servidor FTP, unos dispositivos de almacenamiento conectados en red (NAS) o una unidad de disco local. El dispositivo de destino 14 puede acceder a los datos de video codificados a traves de cualquier conexion de datos estandar, incluida una conexion a Internet. Esto puede incluir un canal inalambrico (por ejemplo, una conexion wifi), una conexion por cable (por ejemplo, DSL, modem de cable, etc.) o una combinacion de ambos que sea adecuada para acceder a datos de video codificados, almacenados en un servidor de archivos. La transmision de datos de video codificados desde el dispositivo de almacenamiento puede ser una transmision en continuo, una transmision de descarga o una combinacion de ambas.
Las tecnicas de esta divulgacion no estan limitadas necesariamente a aplicaciones o configuraciones inalambricas. Las tecnicas pueden aplicarse a la codificacion de video, como apoyo de cualquiera de entre una diversidad de aplicaciones multimedia, tales como radiodifusiones de television, transmisiones de television por cable, transmisiones de television por satelite, transmisiones de video en continuo de Internet, tales como la transmision en continuo adaptativa y dinamica a traves de HTTP (DASH), video digital que se codifica en un medio de almacenamiento de datos, decodificacion de video digital almacenado en un medio de almacenamiento de datos u otras aplicaciones. En algunos ejemplos, el sistema 10 puede configurarse para dar soporte a la transmision de video unidireccional o bidireccional, y ofrecer aplicaciones tales como la transmision de video en continuo, la
5
10
15
20
25
30
35
40
45
50
55
60
65
reproduccion de video, la difusion de video y/o la videotelefonfa.
En el ejemplo de la FIG. 1, el dispositivo de origen 12 incluye una fuente de video 18, un codificador de video 20 y una interfaz de salida 22. El dispositivo de destino 14 incluye una interfaz de entrada 28, un decodificador de video 30 y un dispositivo de visualizacion 32. De acuerdo con esta divulgacion, el codificador de video 20 del dispositivo de origen 12 puede estar configurado para aplicar las tecnicas para la prediccion del vector de movimiento en la codificacion multivista. 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 video desde una fuente de video externa 18, tal como una camara externa. Asimismo, el dispositivo de destino 14 puede interactuar con un dispositivo de visualizacion externo, en lugar de incluir un dispositivo de visualizacion integrado.
El sistema ilustrado 10 de la figura 1 es simplemente un ejemplo. Las tecnicas para la prediccion del vector de movimiento en la codificacion multivista pueden ser realizadas por cualquier dispositivo de codificacion y/o decodificacion de video digital. Aunque, en general, las tecnicas de esta divulgacion se llevan a cabo mediante un dispositivo de codificacion de video, las tecnicas tambien pueden llevarse a cabo mediante un codificador/decodificador de video, denominado tfpicamente "CODEC". Ademas, las tecnicas de esta divulgacion tambien pueden llevarse a cabo mediante un preprocesador de video. El dispositivo de origen 12 y el dispositivo de destino 14 son simplemente ejemplos de dichos dispositivos de codificacion, donde el dispositivo de origen 12 genera datos de video codificados para su transmision al dispositivo de destino 14. En algunos ejemplos, los dispositivos 12, 14 pueden funcionar de manera esencialmente simetrica, de modo que cada uno de los dispositivos 12, 14 incluya componentes de codificacion y de decodificacion de video. Por lo tanto, el sistema 10 puede dar soporte a una transmision de video unidireccional o bidireccional entre los dispositivos de video 12, 14, por ejemplo, para transmision de video en continuo, reproduccion de video, difusion de video o videotelefonfa.
La fuente de video 18 del dispositivo de origen 12 puede incluir un dispositivo de captacion de video, tal como una camara de video, un archivo de video que contiene video captado previamente y/o una interfaz de alimentacion de video para recibir video de un proveedor de contenido de video. Como alternativa adicional, la fuente de video 18 puede generar datos basados en graficos de ordenador como video de origen, o una combinacion de video en directo, video archivado y video generado por ordenador. En algunos casos, si la fuente de video 18 es una videocamara, el dispositivo de origen 12 y el dispositivo de destino 14 pueden formar los denominados telefonos con camara o videotelefonos. Sin embargo, como se ha mencionado anteriormente, las tecnicas descritas en esta divulgacion pueden ser aplicables a la codificacion de video en general, y pueden aplicarse a aplicaciones inalambricas y/o cableadas. En cada caso, el video captado, precaptado o generado por ordenador puede ser codificado por el codificador de video 20. La interfaz de salida 22 puede entonces transmitir la informacion de video codificada a un medio legible por ordenador 16.
El medio legible por ordenador 16 puede incluir medios transitorios, tales como una difusion inalambrica o una transmision de red cableada, o medios de almacenamiento (es decir, medios de almacenamiento no transitorios), tales como un disco duro, una unidad de memoria flash, un disco compacto, un disco de video digital, un disco Blu- ray u otro tipo de medios legibles por ordenador. En algunos ejemplos, un servidor de red (no mostrado) puede recibir datos de video codificados desde el dispositivo de origen 12 y proporcionar los datos de video codificados al dispositivo de destino 14, por ejemplo, mediante transmision por red. De manera similar, un dispositivo informatico de una instalacion de produccion de un medio, tal como una instalacion de estampado de discos, puede recibir datos de video codificados desde el dispositivo de origen 12 y producir un disco que contiene los datos de video codificados. Por lo tanto, puede considerarse que el medio legible por ordenador 16 incluye uno o mas medios legibles por ordenador de varias formas, en varios ejemplos.
La interfaz de entrada 28 del dispositivo de destino 14 recibe informacion desde el medio legible por ordenador 16. La informacion del medio legible por ordenador 16 puede incluir informacion sintactica definida por el codificador de video 20, que tambien es usada por el decodificador de video 30, que incluye elementos sintacticos que describen caracterfsticas y/o el procesamiento de bloques y otras unidades codificadas, por ejemplo, GOP. El dispositivo de visualizacion 32 muestra los datos de video decodificados a un usuario y puede comprender cualquiera de entre una variedad de dispositivos de visualizacion, tales como un tubo de rayos catodicos (CRT), una pantalla de cristal lfquido (LCD), una pantalla de plasma, una pantalla de diodos organicos emisores de luz (OLEd) u otro tipo de dispositivo de visualizacion.
El codificador de video 20 y el decodificador de video 30 pueden funcionar de acuerdo con una norma de codificacion de video, tal como la norma de codificacion de video de alta eficacia (HEVC), actualmente en fase de elaboracion, y pueden ajustarse al modelo de prueba HEVC (HM). De forma alternativa, el codificador de video 20 y el decodificador de video 30 pueden funcionar de acuerdo con otras normas privadas o industriales, tales como la norma ITU-T H.264, tambien denominada MPEG-4, Parte 10, codificacion de video avanzada (AVC), o ampliaciones de dichas normas. Sin embargo, las tecnicas de esta divulgacion no estan limitadas a ninguna norma de codificacion particular. Otros ejemplos de normas de codificacion de video incluyen las normas MPEG-2 e ITU-T H.263. Aunque no se representa en la FIG. 1, en algunos aspectos, tanto el codificador de video 20 como el decodificador de video 30 pueden estar integrados en un codificador y decodificador de audio, y pueden incluir unidades MUX-DEMUX adecuadas, u otro tipo de hardware y software, para gestionar la codificacion tanto de audio como de video en un
5
10
15
20
25
30
35
40
45
50
55
60
65
flujo de datos comun o en flujos de datos diferentes. Si procede, las unidades MUX-DEMUX pueden ajustarse al protocolo de multiplexado ITU H.223 o a otros protocolos, tales como el protocolo de datagramas de usuario (UDP).
La norma ITU-T H.264/MPEG-4 (AVC) fue formulada por el Grupo de expertos en codificacion de video de la UIT-T (VCEG), junto con el Grupo de expertos en pelfculas de ISO/IEC (MPEG), como el producto de una asociacion colectiva conocida como Equipo mixto de video (JVT). En algunos aspectos, las tecnicas descritas en esta divulgacion pueden aplicarse a dispositivos que se ajustan en general a la norma H.264. La norma H.264 se describe en la Recomendacion ITU-T H.264, Codificacion de video avanzada para servicios audiovisuales genericos, del Grupo de estudio de la ITU-T, con fecha de marzo de 2005, que se puede denominar en el presente documento norma H.264 o especificacion H.264 o norma o especificacion H.264/AVC. El Equipo mixto de video (JVT) continua trabajando en las ampliaciones de las normas H.264/MPEG-4 AVC.
El equipo JCT-VC esta trabajando en la elaboracion de la norma HEVC. Las actividades de normalizacion de la HEVC se basan en un modelo en evolucion de un dispositivo de codificacion de video denominado modelo de prueba HEVC (HM). El HM supone varias capacidades adicionales de los dispositivos de codificacion de video respecto a dispositivos existentes de acuerdo, por ejemplo, con la ITU-T H.264/AVC. Por ejemplo, mientras que la norma H.264 proporciona nueve modos de codificacion de prediccion intra, el HM puede proporcionar hasta treinta y tres modos de codificacion de prediccion intra.
En general, el modelo de funcionamiento del HM indica que una imagen de video (o "trama") puede dividirse en una secuencia de bloques en arbol o unidades de codificacion mas grandes (LCU), que incluyen muestras tanto de luma como de croma. Los datos sintacticos de un flujo de bits pueden definir un tamano para la LCU, que es la unidad de codificacion mas grande en lo que respecta al numero de pfxeles. Un segmento incluye un cierto numero de bloques en arbol consecutivos por orden de codificacion. Una imagen puede dividirse en uno o mas segmentos. Cada bloque en arbol puede dividirse en unidades de codificacion (CU) de acuerdo con un arbol cuaternario. En general, una estructura de datos en arbol cuaternario incluye un nodo por cada CU, donde un nodo rafz corresponde al bloque en arbol. 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.
Cada nodo de la estructura de datos en arbol cuaternario puede proporcionar datos sintacticos para la CU correspondiente. Por ejemplo, un nodo del arbol cuaternario puede incluir un indicador de division, que indica si la CU correspondiente al nodo esta dividida o no en varias sub-CU. Los elementos sintacticos de una CU pueden definirse de manera recursiva y pueden depender de si la CU esta dividida o no en varias sub-CU. Si una CU no se divide mas, se denomina CU hoja. En esta divulgacion, cuatro sub-CU de una CU hoja tambien se denominaran CU hoja, aunque no haya una division explfcita de la CU hoja original. Por ejemplo, si una CU con un tamano de 16x16 no se divide mas, las cuatro sub-CU de tamano 8x8 tambien se denominaran CU hojas aunque la CU de tamano 16x16 no se haya dividido nunca.
Una CU tiene un proposito similar a un macrobloque de la norma H.264, excepto porque una CU no dispone de una distincion de tamano. Por ejemplo, un bloque en arbol puede dividirse en cuatro nodos hijo (tambien denominados sub-CU), y cada nodo hijo puede a su vez ser un nodo padre y dividirse en otros cuatro nodos hijo. Un nodo hijo final, no dividido, denominado nodo hoja del arbol cuaternario, comprende un nodo de codificacion, es decir, un nodo denominado tambien CU hoja. Los datos sintacticos asociados a un flujo de bits codificado pueden definir un numero maximo de veces en que puede dividirse un bloque en arbol, denominado profundidad maxima de CU, y tambien pueden definir un tamano mfnimo de los nodos de codificacion. Por consiguiente, un flujo de bits tambien puede definir una unidad que es la unidad de codificacion mas pequena (SCU). Esta divulgacion usada el termino "bloque" para referirse a cualquiera de una CU, PU o TU, en el contexto de la HEVC, o a unas estructuras de datos similares en el contexto de otras normas (por ejemplo, macrobloques y subbloques de los estos en la norma H.264/AVC).
Una CU incluye un nodo de codificacion y unas unidades de prediccion (PU) y unas unidades de transformada (TU) asociadas al nodo de codificacion. Un tamano de la CU corresponde a un tamano del nodo de codificacion, y debe ser de forma cuadrada. El tamano de la CU puede variar desde 8x8 pfxeles hasta el tamano del bloque de arbol, con un maximo de 64x64 pfxeles o mas. Cada CU puede contener una o mas PU y una o mas TU. Los datos sintacticos asociados a una CU pueden describir, por ejemplo, la division de la CU en una o mas PU. Los modos de division pueden diferir dependiendo de si la CU esta codificada en modo de salto o directo, codificada en modo de prediccion intra o codificada en modo de prediccion inter. Las PU pueden dividirse para no tener forma cuadrada. Los datos sintacticos asociados a una CU tambien pueden describir, por ejemplo, la division de la CU en una o mas TU de acuerdo con un arbol cuaternario. Una TU puede tener forma cuadrada o no cuadrada (por ejemplo, rectangular).
La norma HEVC admite transformaciones de acuerdo con las TU, que pueden ser diferentes para diferentes CU. El tamano de las TU tfpicamente se basa en el tamano de las PU de una CU determinada definida para una LCU dividida, aunque esto puede no ser siempre asf. Las TU presentan tfpicamente el mismo tamano o un tamano mas pequeno que las PU. En algunos ejemplos, las muestras residuales correspondientes a una CU pueden subdividirse en unidades mas pequenas mediante una estructura en arbol cuaternario conocida como "arbol cuaternario residual" (RQT). Los nodos hoja del RQT pueden denominarse unidades de transformada (TU). Los valores de diferencias de pfxeles asociados a las TU pueden transformarse para generar coeficientes de transformada, que pueden
5
10
15
20
25
30
35
40
45
50
55
60
65
cuantificarse.
Una CU hoja puede incluir una o mas unidades de prediccion (PU). En general, una PU representa una zona espacial correspondiente la totalidad o una parte de la Cu correspondiente, y puede incluir datos para recuperar una muestra de referencia para la PU. En general, una PU incluye datos relacionados con la prediccion. Por ejemplo, cuando la PU esta codificada en modo intra, pueden incluirse datos para la PU en un arbol cuaternario residual (RQT), que pueden incluir datos que describen un modo de prediccion intra para una TU correspondiente a la PU. En otro ejemplo, cuando la PU esta codificada en modo inter, la PU puede incluir datos que definen uno o mas vectores de movimiento para la PU. Los datos que definen el vector de movimiento para una PU pueden indicar, por ejemplo, un componente horizontal del vector de movimiento, un componente vertical del vector de movimiento, una resolucion para el vector de movimiento (por ejemplo, con una precision de pixel de un cuarto o una precision de pixel de un octavo), una imagen de referencia a la que apunta el vector de movimiento y/o una lista de imagenes de referencia (por ejemplo, Lista 0, Lista 1 o Lista C) para el vector de movimiento.
Una CU hoja que tiene una o mas PU tambien puede incluir una o mas unidades de transformada (TU). Las unidades de transformada pueden especificarse mediante un RQT (tambien denominado estructura en arbol cuaternario de TU), como la descrita anteriormente. Por ejemplo, un indicador de division puede indicar si una CU hoja esta dividida en cuatro unidades de transformada. A continuacion, cada unidad de transformada puede dividirse en otras sub-TU. Cuando una TU no se divide mas, puede denominarse TU hoja. En general, para la codificacion intra, todas las TU hoja que pertenecen a una CU hoja comparten el mismo modo de prediccion intra. Es decir, el mismo modo de prediccion intra se aplica en general para calcular valores predichos para todas las TU de una CU hoja. Para la codificacion intra, un codificador de video 20 puede calcular un valor residual para cada TU hoja mediante la modalidad de prediccion intra, como una diferencia entre la parte de la CU correspondiente a la TU y el bloque original. Una TU no esta necesariamente limitada al tamano de una PU. De este modo, las TU pueden ser mas grandes o pequenas que una PU. Para la codificacion intra, una PU puede estar coubicada con una TU hoja correspondiente para la misma CU. En algunos ejemplos, el tamano maximo de una TU hoja puede corresponder con el tamano de la CU hoja correspondiente.
Ademas, las TU de las CU hoja tambien pueden asociarse a unas respectivas estructuras de datos en arbol cuaternario, denominadas arboles cuaternarios residuales (RQT). Es decir, una CU hoja puede incluir un arbol cuaternario que indica como la CU hoja esta dividida en varias TU. El nodo rafz de un arbol cuaternario de TU corresponde en general a una CU hoja, mientras que el nodo rafz de un arbol cuaternario de CU corresponde en general a un bloque en arbol (o LCU). Las TU del rQt que no estan divididas se denominan TU hoja. En general, en esta divulgacion se usan los terminos CU y TU para hacer referencia a una CU hoja y a una TU hoja, respectivamente, a no ser que se indique lo contrario.
Una secuencia de video incluye tfpicamente una serie de imagenes. Tal como se describe en el presente documento, "imagen" y "trama" pueden usarse indistintamente. Es decir, una imagen que contiene datos de video se puede denominar trama de video o simplemente "trama". Un grupo de imagenes (GOP) comprende en general una serie de una o mas de las imagenes de video. Un GOP puede incluir datos sintacticos en una cabecera del GOP, una cabecera de una o mas de las imagenes o en otras ubicaciones, que indican un numero de imagenes incluidas en el GOP. Cada segmento de una imagen puede incluir datos sintacticos de segmento que describen un modo de codificacion para el segmento respectivo. Un codificador de video 20 actua tfpicamente sobre bloques de video de segmentos de video individuales, con el fin de codificar los datos de video. Un bloque de video puede corresponder a un nodo de codificacion de una CU. Los bloques de video pueden presentar tamanos fijos o variables y pueden diferir en tamano de acuerdo con una norma de codificacion especificada.
En un ejemplo, el HM admite la prediccion en diversos tamanos de PU. Suponiendo que el tamano de una CU particular sea 2Nx2N, el HM admite la prediccion intra en tamanos de PU de 2Nx2N o NxN, y la prediccion inter en tamanos de PU simetricos de 2Nx2N, 2NxN, Nx2N o NxN. El HM tambien admite la division asimetrica para la prediccion inter en tamanos de PU de 2NxnU, 2NxnD, nLx2N y nRx2N. En la division asimetrica, una direccion de una CU no esta dividida, mientras que la otra direccion esta dividida en dos partes de 25 % y 75 %. La parte de la CU correspondiente a la division de 25 % esta indicada por una "n" seguida de una indicacion "arriba", "abajo", "izquierda" o "derecha". Asf, por ejemplo, "2NxnU" se refiere a una CU 2Nx2N que esta dividida horizontalmente con una PU 2Nx0,5N encima y una pU 2Nx1,5N debajo.
En esta divulgacion, "NxN" y "N por N" pueden usarse indistintamente para hacer referencia a las dimensiones de pfxeles de un bloque video en terminos de dimensiones verticales y horizontales, por ejemplo, 16x16 pfxeles o 16 por 16 pfxeles. En general, un bloque de 16x16 tendra 16 pfxeles en una direccion vertical (y = 16) y 16 pfxeles en una direccion horizontal (x = 16). Asimismo, un bloque de NxN presenta en general N pfxeles en una direccion vertical y N pfxeles en una direccion horizontal, donde N representa un valor entero no negativo. Los pfxeles de un bloque pueden estar dispuestos en filas y columnas. Ademas, los bloques no deben tener necesariamente el mismo numero de pfxeles en la direccion horizontal y la direccion vertical. Por ejemplo, los bloques pueden comprender NxM pfxeles, donde M no es necesariamente igual a N.
Tras la codificacion de prediccion intra o prediccion inter mediante las PU de una CU, el codificador de video 20
5
10
15
20
25
30
35
40
45
50
55
60
65
puede calcular datos residuales para las TU de la CU. Las PU pueden comprender datos sintacticos que describen un procedimiento o modo de generacion de datos de pfxeles predictivos en el dominio espacial (tambien denominado como el dominio del pixel) y las TU pueden comprender coeficientes en el dominio de la transformada, tras la aplicacion de una transformada, por ejemplo, una transformada discreta de coseno (DCT), una transformada entera, una transformada de ondfcula o una transformada conceptualmente similar, a los datos de video residuales. Los datos residuales pueden corresponder a diferencias de pfxeles entre pfxeles de la imagen no codificada y valores de prediccion correspondientes a las PU. El codificador de video 20 puede formar las TU que incluyen los datos residuales para la CU, y a continuacion transformar las TU para generar coeficientes de transformada para la CU.
Tras cualquier transformada para generar coeficientes de transformada, el codificador de video 20 puede realizar la cuantificacion de los coeficientes de transformada. La cuantificacion se refiere en general a un proceso en el que los coeficientes de transformada se cuantifican para reducir posiblemente la cantidad de datos usados para representar los coeficientes, proporcionando una compresion adicional. El proceso de cuantificacion puede reducir la profundidad de bits asociada a algunos o 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 cuantificacion, donde n es mayor que m.
Despues de la cuantificacion, el codificador de video puede explorar los coeficientes de transformada, generando un vector unidimensional a partir de la matriz bidimensional que incluye los coeficientes de transformada cuantificados. La exploracion puede disenarse para colocar coeficientes de energfa mas alta (y por lo tanto de menor frecuencia) en la parte delantera de la matriz y para colocar coeficientes de energfa mas baja (y por lo tanto de mayor frecuencia) en la parte trasera de la matriz. En algunos ejemplos, el codificador de video 20 puede usar un orden de exploracion predefinido para explorar los coeficientes de transformada cuantificados y generar un vector en serie que pueda someterse a codificacion de entropfa. En otros ejemplos, el codificador de video 20 puede realizar una exploracion adaptativa. Despues de explorar los coeficientes de transformada cuantificados para formar un vector unidimensional, el codificador de video 20 puede realizar la codificacion de entropfa del vector unidimensional, por ejemplo, de acuerdo con la codificacion de longitud variable adaptativa segun el contexto (CAVLC), la codificacion aritmetica binaria adaptativa segun el contexto (CABAC), la codificacion aritmetica binaria adaptativa segun el contexto basada en la sintaxis (SBAC), la codificacion de entropfa por division de intervalos de probabilidad (PIPE) u otros procedimientos de codificacion de entropfa. El codificador de video 20 tambien puede realizar la codificacion de entropfa de elementos sintacticos asociados a los datos de video codificados para su uso por el decodificador de video 30 en la decodificacion de los datos de video.
Para realizar la CABAC, el codificador de video 20 puede asignar un contexto de un modelo contextual a un sfmbolo que se va a transmitir. El contexto puede referirse, por ejemplo, a si los valores contiguos del sfmbolo son distintos de cero o no. Para realizar la CAVLC, el codificador de video 20 puede seleccionar un codigo de longitud variable para un sfmbolo que se va a transmitir. Las palabras de codigo en la VLC pueden construirse de forma que los codigos relativamente mas cortos correspondan a sfmbolos mas probables, mientras que los codigos mas largos correspondan a sfmbolos menos probables. De esta manera, el uso de la VLC puede permitir un ahorro en bits con respecto, por ejemplo, al uso de palabras de codigo de igual longitud para cada sfmbolo que se va a transmitir. La determinacion de la probabilidad puede basarse en un contexto asignado al sfmbolo.
Ademas, el codificador de video 20 puede enviar datos sintacticos, tales como datos sintacticos basados en bloques, datos sintacticos basados en imagenes y datos sintacticos basados en GOP, al decodificador de video 30, por ejemplo, en una cabecera de imagen, una cabecera de bloque, una cabecera de segmento o una cabecera de gOp. Los datos sintacticos de GOP pueden indicar un cierto numero de imagenes del GOP respectivo, y los datos sintacticos de imagen pueden indicar una modalidad de codificacion/prediccion usada para codificar la imagen correspondiente.
El codificador de video 20 y el decodificador de video 30 pueden implementarse, cada uno, como cualquiera de entre una diversidad de circuitos codificadores o decodificadores adecuados, segun corresponda, tales como uno o mas microprocesadores, procesadores de senales digitales (DSP), circuitos integrados de aplicacion especffica (ASIC), matrices de compuertas programables in situ (FPGA), circuitos de logica discreta, software, hardware, firmware o cualquier combinacion de estos. El codificador de video 20 y el decodificador de video 30 pueden estar incluidos cada uno en uno o mas codificadores o decodificadores, cada uno de los cuales puede estar integrado como parte de un codificador/decodificador (CODEC) de video combinado. Un dispositivo que incluye el codificador de video 20 y/o el decodificador de video 30 puede comprender un circuito integrado, un microprocesador y/o un dispositivo de comunicacion inalambrica, tal como un telefono celular.
La FIG. 2 es un diagrama de bloques que ilustra un ejemplo de codificador de video 20 que puede implementar las tecnicas descritas en esta divulgacion, para predecir vectores de movimiento en la codificacion multivista. El codificador de video 20 puede realizar una codificacion intra e inter de bloques de video dentro de segmentos de video. La codificacion intra se basa en la prediccion espacial para reducir o eliminar la redundancia espacial en el video dentro de una imagen determinada. La codificacion inter se basa en la prediccion temporal para reducir o eliminar la redundancia temporal en el video de imagenes adyacentes o de imagenes de una secuencia de video. El modo intra (modo I) puede referirse a cualquiera de varios modos de compresion espacial. Las modalidades inter,
5
10
15
20
25
30
35
40
45
50
55
60
65
tales como la prediccion unidireccional (modalidad P) o la prediccion bidireccional (modalidad B), pueden referirse a cualquiera de varias modalidades de compresion basadas en el tiempo.
Como se muestra en la FIG. 2, el codificador de video 20 recibe datos de video por codificar. En el ejemplo de la FIG. 2, el codificador de video 20 incluye una unidad de seleccion de modalidad 40, un sumador 50, una unidad de transformada 52, una unidad de cuantificacion 54, una unidad de codificacion de entropfa 56 y una memoria de imagenes de referencia 64. A su vez, la unidad de seleccion de modalidad 40 incluye una unidad de estimacion de movimiento 42, una unidad de compensacion de movimiento 44, una unidad de prediccion intra 46 y una unidad de division 48. Para la reconstruccion de bloques de video, el codificador de video 20 incluye ademas una unidad de cuantificacion inversa 58, una unidad de transformada inversa 60 y un sumador 62. Tambien puede incluirse un filtro de desbloqueo (no mostrado en la FIG. 2) para filtrar lfmites de bloque y eliminar distorsiones de efecto pixelado del video reconstruido. Si se desea, el filtro de desbloqueo filtrara tfpicamente la salida del sumador 62. Tambien pueden usarse filtros de bucle adicionales (de bucle o posbucle), ademas del filtro de desbloqueo. Dichos filtros no se muestran por razones de brevedad pero, si se desea, pueden filtrar la salida del sumador 50 (como en un filtro de bucle).
Durante el proceso de codificacion, el codificador de video 20 recibe una imagen o un segmento que va a codificarse. La imagen o el segmento pueden estar divididos en varios bloques de video. La unidad de estimacion de movimiento 42 y la unidad de compensacion de movimiento 44 llevan a cabo una codificacion de prediccion inter del bloque de video recibido con respecto a uno o mas bloques de una o mas imagenes de referencia para proporcionar compresion temporal. La unidad de prediccion intra 46, de forma alternativa, puede llevar a cabo la codificacion de prediccion intra del bloque de video recibido, con respecto a uno o mas bloques contiguos de la misma imagen o segmento que el bloque que va a codificarse, para proporcionar compresion espacial. El codificador de video 20 puede llevar a cabo varias pasadas de codificacion, por ejemplo, para seleccionar un modo de codificacion adecuada para cada bloque de datos de video.
Ademas, la unidad de division 48 puede dividir bloques de datos de video en subbloques, basandose en la evaluacion de sistemas de division anteriores de pasadas de codificacion anteriores. Por ejemplo, la unidad de division 48 puede dividir inicialmente una imagen o un segmento en varias LCU, y dividir cada una de las LCU en varias sub-Cu, basandose en un analisis de distorsion de velocidad (por ejemplo, un analisis velocidad-optimizacion de distorsion). La unidad de seleccion de modalidad 40 puede generar ademas una estructura de datos en arbol cuaternario que indica la division de una LCU en varias sub-CU. Las CU de nodos hoja del arbol cuaternario pueden incluir una o mas PU y una o mas TU.
La unidad de seleccion de modalidad 40 puede seleccionar una de las modalidades de codificacion, intra o inter, por ejemplo, en funcion de los resultados de error, y proporciona el bloque sometido a codificacion intra o inter resultante al sumador 50 para generar datos de bloque residuales, y al sumador 62 para reconstruir el bloque codificado para su uso como imagen de referencia. La unidad de seleccion de modalidad 40 proporciona ademas elementos sintacticos, tales como vectores de movimiento, indicadores de modalidad intra, informacion de division y otro tipo de informacion sintactica, a la unidad de codificacion de entropfa 56.
La unidad de estimacion de movimiento 42, la unidad de prediccion de vector de movimiento 43 y la unidad de compensacion de movimiento 44 pueden estar sumamente integradas, pero se ilustran por separado con fines conceptuales. La estimacion de movimiento, realizada por la unidad de estimacion de movimiento 42, es el proceso de generar vectores de movimiento, que estiman el movimiento para los bloques de video. Un vector de movimiento, por ejemplo, puede indicar el desplazamiento de una PU de un bloque de video situado dentro de una imagen actual, con respecto a un bloque predictivo situado dentro de una imagen de referencia (u otra unidad codificada), con respecto al bloque actual que se esta codificando dentro de la imagen actual (u otra unidad codificada).
Un bloque predictivo es un bloque que se considera que guarda una estrecha coincidencia con el bloque por codificar, en lo que respecta a la diferencia de pfxeles, que puede determinarse mediante una suma de diferencia absoluta (SAD), una suma de diferencia de cuadrados (SSD) u otro tipo de metrica de diferencia. En algunos ejemplos, el codificador de video 20 puede calcular valores para posiciones de pixel de subentero de imagenes de referencia almacenadas en la memoria de imagenes de referencia 64, que tambien puede denominarse memoria tampon de imagenes de referencia. Por ejemplo, el codificador de video 20 puede interpolar valores de posiciones de un cuarto de pixel, posiciones de un octavo de pixel u otras posiciones de pixel fraccionarias de la imagen de referencia. Por tanto, la unidad de estimacion de movimiento 42 puede realizar una busqueda de movimiento con respecto a las posiciones de pixel completo y a las posiciones de pixel fraccionario, y generar un vector de movimiento con una precision de pixel fraccionario.
La unidad de estimacion de movimiento 42 calcula un vector de movimiento para una PU de un bloque de video de un segmento sometido a codificacion inter, comparando la posicion de la PU con la posicion de un bloque predictivo de una imagen de referencia. En general, los datos para un vector de movimiento pueden incluir una lista de imagenes de referencia, un fndice en la lista de imagenes de referencia (ref_idx), un componente horizontal y un componente vertical. La imagen de referencia puede seleccionarse entre una primera lista de imagenes de referencia (Lista 0), una segunda lista de imagenes de referencia (Lista 1) o una lista de imagenes de referencia
5
10
15
20
25
30
35
40
45
50
55
60
65
combinadas (Lista c), cada una de las cuales identifica una o mas imageries de referencia almacenadas en la memoria de imagenes de referencia 64.
La unidad de estimacion de movimiento 42 puede generar y enviar un vector de movimiento que identifica el bloque predictivo de la imagen de referencia a la unidad de codificacion de entropfa 56 y a la unidad de compensacion de movimiento 44. Es decir, la unidad de estimacion de movimiento 42 puede generar y enviar datos de vectores de movimiento que identifican la lista de imagenes de referencia que contiene el bloque predictivo, un fndice en la lista de imagenes de referencia que identifica la imagen del bloque predictivo y un componente horizontal y vertical para localizar el bloque predictivo dentro de la imagen identificada.
En algunos ejemplos, en lugar de enviar el vector de movimiento real para una PU actual, la unidad de prediccion de vector de movimiento 43 puede predecir el vector de movimiento para reducir aun mas la cantidad de datos necesarios para transmitir el vector de movimiento. En este caso, en lugar de codificar y transmitir el propio vector de movimiento, la unidad de prediccion de vector de movimiento 43 puede generar una diferencia de vector de movimiento (MVD) con respecto a un vector de movimiento conocido (o conocible). El vector de movimiento conocido, que puede usarse con la MVD para definir el vector de movimiento actual, puede definirse mediante un denominado predictor de vector de movimiento (MVP). En general, para ser un MVP valido, el vector de movimiento que se usada para la prediccion debe apuntar a la misma imagen de referencia que el vector de movimiento que se esta codificando actualmente.
En algunos ejemplos, como los descritos con respecto a la FIG. 5 a continuacion, la unidad de prediccion de vector de movimiento 43 puede construir una lista de predictores de vector de movimiento candidatos que incluye varios bloques vecinos en direcciones espaciales y/o temporales como candidatos para MVP. De acuerdo con unos aspectos de esta divulgacion, descritos con mayor detalle a continuacion, los predictores de vectores de movimiento candidatos tambien pueden identificarse en imagenes de vistas diferentes (por ejemplo, en la codificacion multivista). Cuando se dispone de varios predictores de vector de movimiento candidatos (de varios bloques candidatos), la unidad de prediccion de vector de movimiento 43 puede determinar un predictor de vector de movimiento para un bloque actual de acuerdo con unos criterios de seleccion predeterminados. Por ejemplo, la unidad de prediccion de vector de movimiento 43 puede seleccionar el predictor mas preciso del conjunto de candidatos basandose en el analisis de la velocidad de codificacion y la distorsion (por ejemplo, mediante un analisis velocidad-coste de distorsion u otro analisis de eficiencia de codificacion). En otros ejemplos, la unidad de prediccion de vector de movimiento 43 puede generar un promedio de los predictores de vector de movimiento candidatos. Tambien son posibles otros procedimientos para seleccionar un predictor de vector de movimiento.
Al seleccionar un predictor de vector de movimiento, la unidad de prediccion de vector de movimiento 43 puede determinar un fndice de predictor de vector de movimiento (mvp_flag), que puede usarse para indicar a un decodificador de video (por ejemplo, como el decodificador de video 30) donde puede localizar el MVP en una lista de imagenes de referencia que contiene bloques de MVP candidatos. La unidad de prediccion de vector de movimiento 43 puede determinar tambien la MVD entre el bloque actual y el MVP seleccionado. El fndice MVP y la MVD pueden usarse para reconstruir el vector de movimiento.
En algunos ejemplos, la unidad de prediccion de vector de movimiento 43 puede, en su lugar, implementar una denominada "modalidad de fusion", en la que la unidad de prediccion de vector de movimiento 43 puede "fusionar" informacion de movimiento (tal como vectores de movimiento, indices de imagenes de referencia, direcciones de prediccion u otra informacion) de un bloque de video predictivo con un bloque de video actual. Por consiguiente, con respecto a la modalidad de fusion, un bloque de video actual hereda la informacion de movimiento de otro bloque de video conocido (o conocible). La unidad de prediccion de vector de movimiento 43 puede construir una lista de candidatos de modalidades de fusion que incluye varios bloques vecinos en direcciones espaciales y/o temporales como candidatos para la modalidad de fusion. La unidad de prediccion de vector de movimiento 43 puede determinar un valor de fndice (por ejemplo, merge_idx), que puede usarse para indicar a un decodificador de video (por ejemplo, como el decodificador de video 30) donde puede localizar el bloque de video de fusion en una lista de imagenes de referencia que contiene bloques de fusion candidatos.
De acuerdo con unos aspectos de esta divulgacion, la unidad de prediccion de vector de movimiento 43 puede identificar un predictor de vector de movimiento, por ejemplo, para generar una MVD o para realizar una fusion, en la codificacion multivista. Por ejemplo, la unidad de prediccion de vector de movimiento 43 puede identificar un vector de movimiento de disparidad a partir de un bloque de un componente de vista diferente al de un bloque actual para predecir el vector de movimiento para el bloque actual. En otros ejemplos, la unidad de prediccion de vector de movimiento 43 puede identificar un vector de movimiento temporal a partir de un bloque de un componente de vista diferente al de un bloque actual para predecir el vector de movimiento para el bloque actual.
Con respecto a la prediccion de vector de movimiento de disparidad, la unidad de prediccion de vector de movimiento 43 puede identificar un vector de movimiento de disparidad candidato de un bloque candidato para predecir un vector de movimiento para un bloque de video que se codifica actualmente (denominado "bloque actual"). El bloque actual puede estar situado en la misma imagen que el bloque candidato (por ejemplo, ser espacialmente contiguo al bloque candidato), o puede estar situado en otra imagen de la misma vista que el bloque
5
10
15
20
25
30
35
40
45
50
55
60
65
candidato. En algunos ejemplos, la unidad de prediccion de vector de movimiento 43 puede identificar un predictor de vector de movimiento que se refiere a una imagen de referencia en una vista diferente a la de un vector de movimiento para el bloque actual. En dichos casos, de acuerdo con las tecnicas de esta divulgacion, la unidad de prediccion de vector de movimiento 43 puede escalar el predictor de vector de movimiento basandose en una diferencia entre las posiciones de camara de las dos vistas (por ejemplo, la vista a la que se refiere el predictor de vector de movimiento y la vista a la que se refiere el vector de movimiento actual). Por ejemplo, la unidad de prediccion de vector de movimiento 43 puede escalar el predictor de vector de movimiento de disparidad de acuerdo con una diferencia entre las dos vistas. En algunos ejemplos, la diferencia entre las dos vistas puede estar representada por una diferencia entre los identificadores de vista (view_id) asociados con las vistas.
Con respecto a la prediccion de vector de movimiento temporal, la unidad de prediccion de vector de movimiento 43 puede identificar un vector de movimiento temporal candidato de un bloque candidato en una vista diferente a la de un bloque actual para predecir un vector de movimiento para el bloque actual. Por ejemplo, la unidad de prediccion de vector de movimiento 43 puede identificar un predictor de vector de movimiento temporal candidato en una primera vista que hace referencia a un bloque de una imagen en otra posicion temporal de la primera vista. De acuerdo con unos aspectos de esta divulgacion, la unidad de prediccion de vector de movimiento 43 puede usar el predictor de vector de movimiento temporal candidato identificado para predecir un vector de movimiento asociado con un bloque actual en una segunda vista diferente. El bloque candidato (que incluye el predictor de vector de movimiento candidato) y el bloque actual pueden estar coubicados. Sin embargo, la posicion relativa del bloque candidato puede estar desplazada del bloque actual, debido a una disparidad entre las dos vistas.
De acuerdo con unos aspectos de esta divulgacion, la unidad de prediccion de vector de movimiento 43 puede generar un indice de MVP (mvp_flag) y una MVD, o puede generar un indice de fusion (merge_idx). Por ejemplo, la unidad de prediccion de vector de movimiento 43 puede generar una lista de MVP o candidatos de fusion. De acuerdo con unos aspectos de esta divulgacion, los MVP y/o candidatos de fusion incluyen uno o mas bloques de video situados en una vista diferente a la de un bloque de video que se esta decodificando actualmente.
La compensacion de movimiento, llevada a cabo por la unidad de compensacion de movimiento 44, puede implicar obtener o generar el bloque predictivo basandose en el vector de movimiento determinado por la unidad de estimacion de movimiento 42 y/o la informacion de la unidad de prediccion de vector de movimiento 43. De nuevo, la unidad de estimacion de movimiento 42, la unidad de prediccion de vector de movimiento 43 y la unidad de compensacion de movimiento 44 pueden integrarse funcionalmente en algunos ejemplos. Tras recibir el vector de movimiento para la PU del bloque de video actual, la unidad de compensacion de movimiento 44 puede localizar el bloque predictivo al que apunta el vector de movimiento en una de las listas de imagenes de referencia.
El sumador 50 forma un bloque de video residual restando unos valores de pixel del bloque predictivo a los valores de pixel del bloque de video actual que se esta codificando, y generando valores de diferencia de pixel, como se analiza posteriormente. En general, la unidad de estimacion de movimiento 42 lleva a cabo la estimacion de movimiento con respecto a los componentes de luma, y la unidad de compensacion de movimiento 44 usa vectores de movimiento calculados basandose en los componentes de luma tanto para los componentes de croma como para los componentes de luma. La unidad de seleccion de modalidad 40 tambien puede generar elementos sintacticos asociados a los bloques de video y al segmento de video, para su uso por el decodificador de video 30 durante la decodificacion de los bloques de video del segmento de video.
La unidad de prediccion intra 46 puede realizar la prediccion intra de un bloque actual, como alternativa a la prediccion inter llevada a cabo por la unidad de estimacion de movimiento 42 y la unidad de compensacion de movimiento 44, como se ha descrito anteriormente. En particular, la unidad de prediccion intra 46 puede determinar una modalidad de prediccion intra para usar en la codificacion de un bloque actual. En algunos ejemplos, la unidad de prediccion intra 46 puede codificar un bloque actual mediante varias modalidades de prediccion intra, por ejemplo, durante diferentes pasadas de codificacion, y la unidad de prediccion intra 46 (o la unidad de seleccion de modalidad 40, en algunos ejemplos) puede seleccionar una modalidad adecuada de prediccion intra para usar, entre las modalidades probadas.
Por ejemplo, la unidad de prediccion intra 46 puede calcular valores de velocidad-distorsion mediante un analisis de velocidad-distorsion para las diversas modalidades de prediccion intra probadas, y seleccionar la modalidad de prediccion intra que tenga las mejores caracterfsticas de velocidad-distorsion entre las modalidades probadas. El analisis de velocidad-distorsion determina en general una cantidad de distorsion (o de error) entre un bloque codificado y un bloque original, no codificado, que se codifico para generar el bloque codificado, asf como una velocidad binaria (es decir, un numero de bits) usada para generar el bloque codificado. La unidad de prediccion intra 46 puede calcular proporciones a partir de las distorsiones y velocidades para los diversos bloques codificados, a fin de determinar que modalidad de prediccion intra presenta el mejor valor de velocidad-distorsion para el bloque.
Despues de seleccionar una modalidad de prediccion intra para un bloque, la unidad de prediccion intra 46 puede proporcionar informacion, que indica la modalidad de prediccion intra seleccionada para el bloque, a la unidad de codificacion de entropfa 56. La unidad de codificacion de entropfa 56 puede codificar la informacion que indica la modalidad de prediccion intra seleccionada. El codificador de video 20 puede incluir datos de configuracion en el
5
10
15
20
25
30
35
40
45
50
55
60
65
flujo de bits transmitido, que pueden incluir una pluralidad de tablas de indices de modalidades de prediccion intra y una pluralidad de tablas de indices de modalidades de prediccion intra modificadas (tambien denominadas tablas de correlacion de palabras de codigo), definiciones de contextos de codificacion para varios bloques e indicaciones de la modalidad de prediccion intra mas probable, una tabla de indices de modalidades de prediccion intra y una tabla modificada de indices de modalidades de prediccion intra para usar en cada uno de los contextos.
El codificador de video 20 forma un bloque de video residual restando los datos de prediccion de la unidad de seleccion de modalidad 40 del bloque de video original que se esta codificando. El sumador 50 representa el componente o los componentes que realizan esta operacion de resta. La unidad de procesamiento de transformada 52 aplica una transformada, tal como una transformada discreta de coseno (DCT) o una transformada conceptualmente similar, al bloque residual, generando un bloque de video que comprende valores residuales de coeficientes de transformada. La unidad de procesamiento de transformada 52 puede llevar a cabo otras transformadas que son conceptualmente similares a la DCT. Tambien podrfan usarse transformadas de ondfcula, transformaciones enteras, transformadas de subbanda u otros tipos de transformadas. En cualquier caso, la unidad de procesamiento de transformada 52 aplica la transformada al bloque residual, generando un bloque de coeficientes de transformada residuales. La transformada puede convertir la informacion residual, desde un dominio de valor de pixel a un dominio de transformada, tal como un dominio de frecuencia.
La unidad de procesamiento de transformada 52 puede enviar los coeficientes de transformada resultantes a la unidad de cuantificacion 54. La unidad de cuantificacion 54 cuantifica los coeficientes de transformada para reducir mas la velocidad de bits. El proceso de cuantificacion puede reducir la profundidad de bits asociada a algunos o la totalidad de los coeficientes. El grado de cuantificacion puede modificarse ajustando un parametro de cuantificacion. En algunos ejemplos, la unidad de cuantificacion 54 puede realizar a continuacion una exploracion de la matriz que incluye los coeficientes de transformada cuantificados. De forma alternativa, la unidad de codificacion de entropfa 56 puede realizar la exploracion.
Tras la cuantificacion, la unidad de codificacion de entropfa 56 realiza la codificacion de entropfa de los coeficientes de transformada cuantificados. Por ejemplo, la unidad de codificacion de entropfa 56 puede llevar a cabo la codificacion de longitud variable adaptativa al contexto (CAVLC), la codificacion aritmetica binaria adaptativa al contexto (CABAC), la codificacion aritmetica binaria adaptativa al contexto y basada en sintaxis (SBAC), la codificacion de entropfa por division de intervalos de probabilidad (PIPE) u otra tecnica de codificacion de entropfa. En el caso de la codificacion de entropfa basada en el contexto, el contexto puede basarse en bloques contiguos. Tras la codificacion de entropfa realizada por la unidad de codificacion de entropfa 56, el flujo de bits codificado puede transmitirse a otro dispositivo (por ejemplo, el decodificador de video 30) o archivarse para su posterior transmision o recuperacion.
La unidad de cuantificacion inversa 58 y la unidad de transformada inversa 60 aplican la cuantificacion inversa y la transformada inversa, respectivamente, para reconstruir el bloque residual en el dominio del pixel, por ejemplo, para su uso posterior como bloque de referencia. La unidad de compensacion de movimiento 44 puede calcular un bloque de referencia sumando el bloque residual a un bloque predictivo de una de las imagenes de la memoria de imagenes de referencia 64. La unidad de compensacion de movimiento 44 tambien puede aplicar uno o mas filtros de interpolacion al bloque residual reconstruido para calcular valores de pixel de subentero para su uso en la estimacion de movimiento. El sumador 62 suma el bloque residual reconstruido al bloque de prediccion de movimiento compensado, generado por la unidad de compensacion de movimiento 44, para generar un bloque de video reconstruido para su almacenamiento en la memoria de imagenes de referencia 64. El bloque de video reconstruido puede ser usado por la unidad de estimacion de movimiento 42 y la unidad de compensacion de movimiento 44 como bloque de referencia para realizar la codificacion inter de un bloque en una imagen posterior.
La FIG. 3 es un diagrama de bloques que ilustra un ejemplo de decodificador de video 30 que puede implementar las tecnicas descritas en esta divulgacion para predecir vectores de movimiento en la codificacion multivista. En el ejemplo de la FIG. 3, el decodificador de video 30 incluye una unidad de decodificacion de entropfa 80, una unidad de prediccion 81, una unidad de cuantificacion inversa 86, una unidad de transformada inversa 88, un sumador 90 y una memoria de imagenes de referencia 92. La unidad de prediccion 81 incluye la unidad de compensacion de movimiento 82 y la unidad de prediccion intra 84.
Durante el proceso de decodificacion, el decodificador de video 30 recibe un flujo de bits de video codificado que representa bloques de video de un segmento de video codificado y elementos sintacticos asociados, desde el codificador de video 20. La unidad de decodificacion de entropfa 80 del decodificador de video 30 realiza la decodificacion de entropfa del flujo de bits para generar coeficientes cuantificados, vectores de movimiento y otros elementos sintacticos. La unidad de decodificacion de entropfa 80 envfa los vectores de movimiento y otros elementos sintacticos a la unidad de prediccion 81. El decodificador de video 30 puede recibir los elementos sintacticos en el nivel del segmento de video y/o el nivel del bloque de video.
Por ejemplo, a modo de antecedente, el decodificador de video 30 puede recibir datos de video comprimidos que se han comprimido para su transmision a traves de una red como las llamadas "unidades de capa de abstraccion de red" o unidades NAL. Cada unidad NAL puede incluir una cabecera que identifica un tipo de datos almacenados en
5
10
15
20
25
30
35
40
45
50
55
60
65
la unidad NAL. Hay dos tipos de datos que comunmente se almacenan en unidades NAL. El primer tipo de datos almacenados en una unidad NAL son datos de capa de codificacion de video (VCL), que incluyen los datos de video comprimidos. El segundo tipo de datos almacenados en una unidad NAL se denomina datos no VCL, que incluyen informacion adicional como conjuntos de parametros que definen datos de cabecera comunes a un gran numero de unidades NAL e informacion de mejora complementaria (SEI).
Por ejemplo, los conjuntos de parametros pueden contener la informacion de cabecera de nivel de secuencia (por ejemplo, en conjuntos de parametros de secuencia (SPS)) e informacion de cabecera de nivel de imagen, que cambia con poca frecuencia (por ejemplo, en conjuntos de parametros de imagen (PPS)). La informacion que cambia con poca frecuencia contenida en los conjuntos de parametros no necesita repetirse para cada secuencia o imagen, mejorando asf la eficiencia de codificacion. Ademas, el uso de conjuntos de parametros permite la transmision fuera de banda de la informacion de cabecera, evitando de ese modo la necesidad de transmisiones redundantes para recuperarse de los errores.
Cuando el segmento de video se codifica como un segmento de codificacion intra (I), la unidad de prediccion intra 84 de la unidad de prediccion 81 puede generar datos de prediccion para un bloque de video del segmento de video actual, basandose en una modalidad de prediccion intra indicado y unos datos de bloques previamente decodificados de la imagen actual. Cuando la imagen de video esta codificada como un segmento de codificacion inter (por ejemplo, B, P o GPB), la unidad de compensacion de movimiento 82 de la unidad de prediccion 81 genera bloques predictivos para un bloque de video del segmento de video actual, basandose en los vectores de movimiento y otros elementos sintacticos recibidos desde la unidad de decodificacion de entropfa 80. Los bloques predictivos pueden generarse a partir de una de las imagenes de referencia de una de las listas de imagenes de referencia. El decodificador de video 30 puede construir las listas de imagenes de referencia, Lista 0 y Lista 1, mediante tecnicas de construccion predeterminadas, basandose en las imagenes de referencia almacenadas en la memoria de imagenes de referencia 92.
La unidad de compensacion de movimiento 82 determina la informacion de prediccion para un bloque de video del segmento de video actual, analizando los vectores de movimiento y otros elementos sintacticos, y usa la informacion de prediccion para generar los bloques predictivos para el bloque de video actual que se esta decodificando. Por ejemplo, la unidad de compensacion de movimiento 82 usa algunos de los elementos sintacticos recibidos para determinar una modalidad de prediccion (por ejemplo, prediccion intra o prediccion inter), usada para codificar los bloques de video del segmento de video, un tipo de segmento de prediccion inter (por ejemplo, segmento B, segmento P o segmento GPB), informacion de construccion para una o mas de las listas de imagenes de referencia para el segmento, vectores de movimiento para cada bloque de video sometido a codificacion inter del segmento, el estado de prediccion inter para cada bloque de video sometido a codificacion inter del segmento y otra informacion, para decodificar los bloques de video en el segmento de video actual. En algunos ejemplos, la unidad de compensacion de movimiento 82 puede recibir cierta informacion de movimiento desde la unidad de prediccion de vector de movimiento 83.
De acuerdo con unos aspectos de esta divulgacion, la unidad de prediccion de vector de movimiento 83 puede recibir datos de prediccion que indican donde puede recuperar informacion de movimiento para un bloque actual. Por ejemplo, la unidad de prediccion de vector de movimiento 83 puede recibir informacion de prediccion de vector de movimiento, tal como un indice de MVP (mvp_flag), una MVD, un indicador de fusion (merge_flag) y/o un indice de fusion (merge_idx) y usar dicha informacion para identificar informacion de movimiento usada para predecir un bloque actual. Es decir, como se ha indicado anteriormente con respecto al codificador de video 20, de acuerdo con unos aspectos de esta divulgacion, la unidad de prediccion de vector de movimiento 83 puede recibir un indice de MVP (mvp_flag) y una MVD y usar dicha informacion para determinar un vector de movimiento usado para predecir un bloque actual. La unidad de prediccion de vector de movimiento 83 puede generar una lista de MVP o candidatos de fusion. De acuerdo con unos aspectos de esta divulgacion, los MVP y/o candidatos de fusion pueden incluir uno o mas bloques de video situados en una vista diferente a la de un bloque de video que se esta decodificando actualmente.
La unidad de prediccion de vector de movimiento 83 puede usar un MVP o un indice de fusion para identificar la informacion de movimiento usada para predecir el vector de movimiento de un bloque actual. Es decir, por ejemplo, la unidad de prediccion de vector de movimiento 83 puede identificar un MVP de una lista de imagenes de referencia mediante el indice de MVP (mvp_flag). La unidad de prediccion de vector de movimiento 83 puede combinar el MVP identificado con una MVD recibida para determinar el vector de movimiento para el bloque actual. En otros ejemplos, la unidad de prediccion de vector de movimiento 83 puede identificar un candidato de fusion a partir de una lista de imagenes de referencia mediante un indice de fusion (merge_idx) para determinar la informacion de movimiento para el bloque actual. En cualquier caso, despues de determinar la informacion de movimiento para el bloque actual, la unidad de prediccion de vector de movimiento 83 puede generar el bloque predictivo para el bloque actual.
De acuerdo con unos aspectos de esta divulgacion, la unidad de prediccion de vector de movimiento 83 puede determinar un predictor de vector de movimiento en la codificacion multivista. Por ejemplo, la unidad de prediccion de vector de movimiento 83 puede recibir informacion que especifica un vector de movimiento de disparidad de un bloque en un componente de vista diferente al de un bloque actual que se usa para predecir el vector de movimiento
5
10
15
20
25
30
35
40
45
50
55
60
65
para el bloque actual. En otros ejemplos, la unidad de prediccion de vector de movimiento 83 puede recibir informacion que identifica un vector de movimiento temporal de un bloque en un componente de vista diferente al de un bloque actual que se usa para predecir el vector de movimiento para el bloque actual.
Con respecto a la prediccion del vector de movimiento de disparidad, la unidad de prediccion de vector de movimiento 83 puede predecir un vector de movimiento de disparidad para el bloque actual a partir de un bloque candidato. El bloque candidato puede estar situado en la misma imagen que el bloque actual (por ejemplo, espacialmente contiguo al bloque candidato), o puede estar situado en otra imagen de la misma vista que el bloque actual. El bloque candidato tambien puede estar situado en una imagen de una vista diferente, pero en el mismo instante de tiempo que el bloque actual.
Por ejemplo, con respecto al MVP o a la modalidad de fusion, se conocen (se han determinado previamente) la imagen objetivo y la imagen de referencia para un vector de movimiento de disparidad "A" del bloque actual que se va a predecir. Por motivos descriptivos, se va a suponer que el vector de movimiento de un bloque candidato es "B". De acuerdo con los aspectos de esta divulgacion, si el vector de movimiento B no es un vector de movimiento de disparidad, la unidad de prediccion del vector de movimiento 83 puede considerar que el bloque candidato no esta disponible (por ejemplo, no esta disponible para predecir el vector de movimiento A). Es decir, la unidad de prediccion de vector de movimiento 83 puede inhabilitar la capacidad de usar el bloque candidato para propositos de prediccion del vector de movimiento.
Si el vector de movimiento B es un vector de movimiento de disparidad y la imagen de referencia del vector de movimiento B pertenece a la misma vista que la de la imagen de referencia del vector de movimiento de disparidad A, y la imagen objetivo del vector de movimiento B pertenece a la misma vista que la imagen objetivo del vector de movimiento de disparidad A, la unidad de prediccion de vector de movimiento 83 puede usar el vector de movimiento B directamente como un predictor candidato del vector de movimiento A. De lo contrario, la unidad de prediccion de vector de movimiento 83 puede escalar el vector de movimiento de disparidad B antes de que pueda usarse como predictor candidato del vector de movimiento A. En dichos casos, de acuerdo con las tecnicas de esta divulgacion, la unidad de prediccion de vector de movimiento 83 puede escalar el vector de movimiento de disparidad basandose en una distancia de vista del vector de movimiento A y una distancia de vista del vector de movimiento B. Por ejemplo, la unidad de prediccion de vector de movimiento 83 puede escalar el vector de movimiento de disparidad B mediante un factor de escala que es igual a la distancia de vista del vector de movimiento A dividida por la distancia de vista del vector de movimiento B. En algunos ejemplos, la unidad de prediccion de vector de movimiento 83 puede realizar dicho escalado mediante los identificadores de vistas de las imagenes de referencia y las imagenes objetivo.
Con respecto a la prediccion del vector de movimiento temporal, la unidad de prediccion de vector de movimiento 83 puede predecir un vector de movimiento temporal para el bloque actual a partir de un bloque candidato en una vista diferente a la del bloque actual. Por ejemplo, la unidad de prediccion de vector de movimiento 83 puede identificar un predictor de vector de movimiento temporal candidato que tiene una imagen objetivo en una primera vista y se refiere a un bloque de una imagen de referencia situada en otra posicion temporal de la primera vista. De acuerdo con unos aspectos de esta divulgacion, la unidad de prediccion de vectores de movimiento 83 puede usar el predictor de vector de movimiento temporal candidato identificado para predecir un vector de movimiento asociado con el bloque actual en una segunda vista diferente.
Por ejemplo, con respecto a la modalidad de MVP o de fusion, se conoce (se ha determinado previamente) la imagen objetivo y la imagen de referencia para un vector de movimiento temporal "A" del bloque actual que se va a predecir. Con fines descriptivos, se va a suponer que el vector de movimiento de un bloque candidato es "B". De acuerdo con unos aspectos de esta divulgacion, si el vector de movimiento B del bloque candidato no es un vector de movimiento temporal, la unidad de prediccion de vector de movimiento 83 puede considerar que el bloque candidato no esta disponible (por ejemplo, no esta disponible para predecir el vector de movimiento A). Es decir, en algunos ejemplos, la unidad de prediccion de vector de movimiento 83 puede desactivar la capacidad de usar el bloque candidato para propositos de prediccion de vector de movimiento.
Si el vector de movimiento B es un vector de movimiento temporal y el POC de la imagen de referencia del vector de movimiento B es el mismo que la imagen de referencia del vector de movimiento A y el POC de la imagen objetivo del vector de movimiento B es el mismo que la imagen objetivo del vector de movimiento B, la unidad de prediccion de vector de movimiento 83 puede usar el vector de movimiento B directamente como predictor candidato del vector de movimiento A. De lo contrario, la unidad de prediccion de vector de movimiento 83 puede escalar el vector de movimiento temporal B basandose en la distancia temporal. El bloque candidato (que incluye el predictor de vector de movimiento candidato) y el bloque actual pueden estar coubicados en una vista diferente. Sin embargo, la posicion relativa del bloque candidato puede estar desplazada del bloque actual, debido a una disparidad entre las dos vistas.
La unidad de cuantificacion inversa 86 realiza la cuantificacion inversa, es decir, descuantifica, los coeficientes de transformada cuantificados, proporcionados en el flujo de bits y decodificados por la unidad de decodificacion de entropfa 80. El proceso de cuantificacion inversa puede incluir el uso de un parametro de cuantificacion calculado
5
10
15
20
25
30
35
40
45
50
55
60
65
por el codificador de video 20 para cada bloque de video del segmento de video, a fin de determinar un grado de cuantificacion y, asimismo, un grado de cuantificacion inversa que deberfa aplicarse.
La unidad de transformada inversa 88 aplica una transformada inversa, por ejemplo, una DCT inversa, una transformada inversa entera o un proceso de transformada inversa conceptualmente similar, a los coeficientes de transformada con el fin de generar bloques residuales en el dominio del pixel. De acuerdo con los aspectos de esta divulgacion, la unidad de transformada inversa 88 puede determinar la manera en la que las transformadas se aplicaron a los datos residuales. Es decir, por ejemplo, la unidad de transformada inversa 88 puede determinar un RQT que represente la manera en la que las transformadas (por ejemplo DCT, transformada entera, transformada de ondfcula o una o mas de otras transformadas) se aplicaron a las muestras de luma residuales y las muestras de chroma residuales asociadas con un bloque de datos de video recibidos.
Despues de que la unidad de compensacion de movimiento 82 genere el bloque predictivo para el bloque de video actual, basandose en los vectores de movimiento y a otros elementos sintacticos, el decodificador de video 30 forma un bloque de video decodificado sumando los bloques residuales procedentes de la unidad de transformada inversa 88 a los correspondientes bloques predictivos generados por la unidad de compensacion de movimiento 82. El sumador 90 representa el componente o los componentes que llevan a cabo esta operacion de suma. Si se desea, tambien puede aplicarse un filtro de desbloqueo para filtrar los bloques decodificados, con el fin de eliminar distorsiones de efecto pixelado. Otros filtros de bucle (ya sea en el bucle de codificacion o despues del bucle de codificacion) tambien pueden usarse para allanar las transiciones de pfxeles o mejorar de otro modo la calidad del video. Los bloques de video decodificados de una imagen dada se almacenan a continuacion en la memoria de imagenes de referencia 92, que almacena imagenes de referencia usadas para la posterior compensacion de movimiento. La memoria de imagenes de referencia 92 almacena tambien video decodificado para su presentacion posterior en un dispositivo de visualizacion, tal como el dispositivo de visualizacion 32 de la FIG. 1.
La FIG. 4 es un diagrama conceptual que ilustra un patron de prediccion de MVC. En el ejemplo de la FIG. 4, se ilustran ocho vistas y se ilustran doce ubicaciones temporales para cada vista. En general, cada fila de la FIG. 4 corresponde a una vista, mientras que cada columna indica una ubicacion temporal. Cada una de las vistas se puede identificar mediante un identificador de vista ("view_id"), que puede usarse para indicar una ubicacion relativa de la camara con respecto a las otras vistas. En el ejemplo mostrado en la FIG. 4, los ID de vista indicados son los ID "S0" a "S7", aunque tambien se pueden usar ID de vista numericos. Ademas, cada una de las ubicaciones temporales se puede identificar mediante un valor de recuento de orden de imagenes (POC), que indica un orden de visualizacion de las imagenes. En el ejemplo mostrado en la FIG. 4, los valores de POC indicados son los valores "T0" a "T11".
Aunque la MVC tiene una denominada vista base que es decodificable por los decodificadores H.264/AVC y la MVC admite los pares de vistas estereo, la MVC puede admitir mas de dos vistas como entrada de video 3D. Por consiguiente, un renderizador de un cliente que tiene un decodificador de MVC puede esperar un contenido de video 3D con varias vistas.
Las imagenes en la FIG. 4 se indican mediante un bloque sombreado que incluye una letra, que indica si la imagen correspondiente se ha sometido a codificacion intra (es decir, es una trama I), o a codificacion inter en una direccion (es decir, es una trama P) o en varias direcciones (es decir, es una trama B). En general, las predicciones se indican mediante flechas, donde la imagen a la que se apunta usa el objeto desde el que se apunta como referencia de prediccion. Por ejemplo, la trama P de la vista S2 en la ubicacion temporal T0 se predice a partir de la trama I de la vista S0 en la ubicacion temporal T0.
Al igual que con la codificacion de video de vista unica, las imagenes de una secuencia de video multivista pueden codificarse predictivamente con respecto a las imagenes de diferentes ubicaciones temporales. Por ejemplo, la trama b de la vista S0 en la ubicacion temporal T1 tiene una flecha que la esta apuntando desde la trama I de la vista S0 en la ubicacion temporal T0, lo cual indica que la trama b se predice a partir de la trama I. Ademas, sin embargo, en el contexto de la codificacion de video multivista, las imagenes pueden someterse a prediccion entre vistas. Es decir, un componente de vista puede usar los componentes de vista de otras vistas como referencia. En la MVC, por ejemplo, la prediccion entre vistas se realiza como si el componente de vista de otra vista fuera una referencia de prediccion intra. Las referencias potenciales entre vistas pueden indicarse en la extension Conjunto de parametros de secuencia (SPS) de la MVC y pueden modificarse mediante el proceso de creacion de una lista de imagenes de referencia, lo cual permite ordenar con flexibilidad las referencias de prediccion inter o de prediccion entre vistas.
La FIG. 4 proporciona varios ejemplos de la prediccion entre vistas. Las imagenes de la vista S1, en el ejemplo de la FIG. 4, ilustradas se han predicho a partir de imagenes de diferentes ubicaciones temporales de la vista S1, y tambien se han sometido a prediccion entre vistas a partir de imagenes de imagenes de las vistas S0 y S2 en las mismas ubicaciones temporales. Por ejemplo, la trama b de la vista S1 en la ubicacion temporal T1 se predice a partir de cada una de las tramas B de la vista S1 en las ubicaciones temporales T0 y T2, asf como las tramas b de las vistas S0 y S2 en la ubicacion temporal T1.
5
10
15
20
25
30
35
40
45
50
55
60
65
En el ejemplo de la FIG. 4, la letra "B" mayuscula y la "b" minuscula pretenden indicar diferentes relaciones jerarquicas entre las imagenes, en lugar de diferentes procedimientos de codificacion. En general, las tramas con "B" mayuscula ocupan una posicion relativamente mas alta en la jerarqufa de prediccion que las tramas con "b" minuscula. La FlG. 4 tambien ilustra las variaciones en la jerarqufa de prediccion mediante diferentes niveles de sombreado, donde las imagenes con un mayor grado de sombreado (es decir, relativamente mas oscuras) ocupan una posicion mas alta en la jerarqufa de prediccion que las imagenes que tienen menos sombreado (es decir, son relativamente mas claras). Por ejemplo, todas las tramas I de la FIG. 4 se ilustran con sombreado completo, mientras que las tramas P tienen un sombreado algo mas claro y las tramas B (y las tramas con b minuscula) tienen diversos niveles de sombreado unas en relacion con otras, pero que siempre es mas claro que el sombreado de las tramas P y las tramas I.
En general, la jerarqufa de prediccion se relaciona con indices de orden de vistas, de conformidad con lo cual las imagenes que ocupan posiciones relativamente mas altas en la jerarqufa de prediccion deberfan decodificarse antes que las imagenes que ocupan posiciones relativamente mas bajas en la jerarqufa, de tal modo que esas imagenes que ocupan posiciones relativamente mas altas en la jerarqufa se puedan usar como imagenes de referencia durante la decodificacion de las imagenes que ocupan posiciones relativamente mas bajas en la jerarqufa. Un fndice de orden de vistas es un fndice que indica el orden de decodificacion de los componentes de vista en una unidad de acceso. Los indices de orden de vistas pueden estar implfcitos en un conjunto de parametros, tal como un SPS.
De esta manera, las imagenes usadas como imagenes de referencia pueden decodificarse antes que las imagenes que se codifican con referencia a las imagenes de referencia. Un fndice de orden de vistas es un fndice que indica el orden de decodificacion de los componentes de vista en una unidad de acceso. Para cada fndice de orden de vistas i, se senala el correspondiente view_id. La decodificacion de los componentes de vista sigue el orden ascendente de los indices de orden de vistas. Si se presentan todas las vistas, entonces el conjunto de indices de orden de vistas comprende un conjunto ordenado de manera consecutiva de cero a uno inferior al numero total de vistas.
En la MVC, puede extraerse un subconjunto de un flujo de bits completo para formar un subflujo de bits que sigue siendo compatible con la MVC. Hay muchos posibles subflujos de bits que las aplicaciones especfficas pueden requerir, en funcion de, por ejemplo, un servicio proporcionado por un servidor, la capacidad, los servicios de apoyo y las capacidades de los decodificadores de uno o mas clientes y/o la preferencia de uno o varios clientes. Por ejemplo, un cliente podrfa requerir solo tres vistas, y podrfa haber dos escenarios. En un ejemplo, un cliente puede requerir una experiencia de visualizacion sin problemas y podrfa preferir vistas con los valores de view_id S0, S1 y S2, mientras que otro cliente puede requerir la escalabilidad de las vistas y preferir vistas con los valores de view_id S0, S2 y S4. Debe observarse que ambos subflujos de bits se pueden decodificar como flujos de bits independientes de MVC y pueden admitirse de forma simultanea.
La FIG. 5 es un diagrama de bloques que ilustra potenciales predictores de vector de movimiento candidatos cuando se realiza la prediccion del vector de movimiento (que incluye la modalidad de fusion). Es decir, para el bloque 100 que se esta codificando actualmente, la informacion de movimiento (por ejemplo, un vector de movimiento que comprende un componente horizontal y un componente vertical, indices del vector de movimiento, direcciones de prediccion u otra informacion) de los bloques vecinos A0, A1, B0, B1 y B2 puede usarse para predecir la informacion de movimiento para el bloque 100. Ademas, la informacion de movimiento asociada con el bloque coubicado COL tambien puede usarse para predecir la informacion de movimiento para el bloque 100. Los bloques vecinos A0, A1, B0, B1 y B2 y el bloque coubicado COL, en el contexto de la prediccion del vector de movimiento, pueden denominarse en general y en lo sucesivo predictores de vector de movimiento candidatos.
En algunos ejemplos, los predictores de vector de movimiento candidatos mostrados en la FIG. 5 pueden identificarse al realizar la prediccion del vector de movimiento (por ejemplo, ya sea al generar una MVD o al ejecutar una modalidad de fusion). En otros ejemplos, pueden identificarse diferentes candidatos al realizar la modalidad de fusion y la prediccion del vector de movimiento. Es decir, un codificador de video puede identificar un conjunto de candidatos de predictor de vector de movimiento para realizar la modalidad de fusion, que es diferente al usado para realizar la prediccion del vector de movimiento.
Para realizar la modalidad de fusion, en un ejemplo, un codificador de video (tal como el codificador de video 20) puede determinar inicialmente que vectores de movimiento de los predictores de vector de movimiento candidatos estan disponibles para fusionarse con el bloque 100. Es decir, en algunos casos, la informacion de movimiento de uno o mas de los predictores de vector de movimiento candidatos pueden no estar disponibles debido, por ejemplo, a que el predictor de vector de movimiento candidato se ha sometido a codificacion intra, no esta codificado o no existe (por ejemplo, uno o mas de los predictores de vector de movimiento candidatos se encuentran en otra imagen o segmento). El codificador de video 20 puede crear una lista de predictores de vector de movimiento candidatos que incluye cada uno de los bloques de predictores de vector de movimiento candidatos disponibles.
Despues de construir la lista de candidatos, el codificador de video 20 puede seleccionar un vector de movimiento de la lista de candidatos para usarlo como vector de movimiento para el bloque actual 100. En algunos ejemplos, el codificador de video 20 puede seleccionar el vector de movimiento de la lista de candidatos que mejor coincida con el vector de movimiento para el bloque 100. Es decir, el codificador de video 20 puede seleccionar el vector de
5
10
15
20
25
30
35
40
45
50
55
60
65
movimiento de la lista de candidatos de acuerdo con un analisis velocidad-distorsion.
El codificador de video 20 puede proporcionar una indicacion de que el bloque 100 esta codificado mediante la modalidad de fusion. Por ejemplo, el codificador de video 20 puede establecer un indicador u otro elemento sintactico que indica que el vector de movimiento para el bloque 100 se predice mediante la modalidad de fusion. En un ejemplo, el codificador de video 20 puede indicar que los parametros de prediccion inter para el bloque 100 se infieren de un predictor de vector de movimiento candidato estableciendo merge_flag [x0][y0]. En este ejemplo, los indices de matriz x0, y0 pueden especificar la ubicacion (x0, y0) de la muestra de luma superior izquierda del bloque de prediccion con respecto a la muestra de luma superior izquierda de la imagen (o segmento).
Ademas, en algunos ejemplos, el codificador de video 20 puede proporcionar un indice que identifique el candidato de fusion del cual el bloque 100 hereda su vector de movimiento. Por ejemplo, merge_idx [x0][y0] puede especificar el indice el candidato de fusion, que identifica una imagen de la lista de candidatos de fusion y donde x0, y0 especifica la ubicacion (x0, y0) de la muestra de luma superior izquierda del bloque de prediccion relativo a la muestra de luma superior izquierda de la imagen (o segmento).
Un decodificador de video (tal como el decodificador de video 30) puede realizar etapas similares para identificar el candidato de fusion apropiado cuando decodifica el bloque 100. Por ejemplo, el decodificador de video 30 puede recibir una indicacion de que el bloque 100 se predice mediante la modalidad de fusion. En un ejemplo, el decodificador de video 30 puede recibir merge_flag [x0][y0], donde (x0, y0) especifica la ubicacion de la muestra de luma superior izquierda del bloque de prediccion con respecto a la muestra de luma superior izquierda de la imagen (o segmento).
Ademas, el decodificador de video 30 puede crear una lista de candidatos de fusion. Por ejemplo, el decodificador de video 30 puede recibir uno o mas elementos sintacticos (por ejemplo, indicadores) que indican bloques de video que estan disponibles para la prediccion de vector de movimiento. El decodificador de video 30 puede crear una lista de candidatos de fusion basada en los indicadores recibidos. De acuerdo con algunos ejemplos, el decodificador de video 30 puede crear la lista de candidatos de fusion (por ejemplo, mergeCandList) de acuerdo con la siguiente secuencia:
1. A1, si availableFlagA1 es igual a 1
2. B1, si availableFlagB1 es igual a 1
3. B0, si availableFlagB0 es igual a 1
4. A0, si availableFlagA0 es igual a 1
5. B2, si availableFlagB2 es igual a 1
6. Col, si availableFlagCol es igual a 1
Si varios candidatos de fusion tienen los mismos vectores de movimiento y los mismos indices de referencia, los candidatos de fusion pueden eliminarse de la lista.
El decodificador de video 30 puede identificar el candidato de fusion apropiado de acuerdo con un indice recibido. Por ejemplo, el decodificador de video 30 puede recibir un indice que identifica el candidato de fusion del cual el bloque 100 hereda su vector de movimiento. En un ejemplo, merge_idx [x0][y0] puede especificar el indice de candidato de fusion, que identifica una imagen de la lista de candidatos de fusion y donde x0, y0 especifica la ubicacion (x0, y0) de la muestra de luma superior izquierda del bloque de prediccion relativa a la muestra de luma superior izquierda de la imagen (o segmento).
En algunos ejemplos, el decodificador de video 30 puede escalar el predictor del vector de movimiento antes de fusionar la informacion de movimiento del bloque candidato con el bloque 100. Por ejemplo, con respecto a un predictor de vector de movimiento temporal, si el predictor de vector de movimiento se refiere a un bloque predictivo de una imagen de referencia que esta situada en una ubicacion temporal diferente que el bloque predictivo al que se refiere el bloque 100 (por ejemplo, el vector de movimiento concreto para el bloque 100), el decodificador de video 30 puede escalar el predictor de vector de movimiento. Por ejemplo, el decodificador de video 30 puede escalar el predictor de vector de movimiento de modo que se refiera a la misma imagen de referencia que la imagen de referencia para el bloque 100. En algunos ejemplos, el decodificador de video 30 puede escalar el predictor de vector de movimiento de acuerdo con una diferencia en los valores de recuento de orden de imagenes (POC). Es decir, el decodificador de video 30 puede escalar el predictor de vector de movimiento basandose en una diferencia entre una distancia de POC entre el bloque candidato y el bloque predictivo al que se refiere el predictor de vector de movimiento y una distancia de POC entre el bloque 100 y la imagen de referencia actual (por ejemplo, a la que se refiere el vector de movimiento concreto para el bloque 100). Despues de seleccionar el predictor de vector de movimiento apropiado, el decodificador de video 30 puede fusionar la informacion de movimiento asociada con el predictor de vector de movimiento con la informacion de movimiento para el bloque 100.
El codificador de video 20 y el decodificador de video 30 pueden implementar un proceso similar para realizar la prediccion del vector de movimiento para un bloque actual de datos de video. Por ejemplo, el codificador de video 20 puede determinar inicialmente que vectores de movimiento de los predictores de vector de movimiento candidatos
5
10
15
20
25
30
35
40
45
50
55
60
65
estan disponibles para ser usados como MVP. La informacion de movimiento de uno o mas de los predictores de vector de movimiento candidatos puede no estar disponible debido, por ejemplo, a que el predictor del vector de movimiento candidato se ha sometido a codificacion intra, todavfa no se ha codificado o no existe.
Para determinar cuales de los predictores de vector de movimiento candidatos estan disponibles, el codificador de video 20 puede analizar cada uno de los predictores de vector de movimiento candidatos de uno en uno de acuerdo con un sistema basado en prioridades predeterminado. Por ejemplo, para cada predictor de vector de movimiento candidato, el codificador de video 20 puede determinar si el predictor de vector de movimiento se refiere a la misma imagen de referencia que el vector de movimiento concreto para el bloque 100. Si el predictor de vector de movimiento se refiere a la misma imagen de referencia, el codificador de video 20 puede anadir el predictor de vector de movimiento candidato a una lista de candidatos de MVP. Si el predictor de vector de movimiento no se refiere a la misma imagen de referencia, el predictor de vector de movimiento puede escalarse (por ejemplo, con escalado basado en las distancias de POC, tal como se ha analizado anteriormente) antes de ser anadido a la lista de candidatos de MVP.
Con respecto al bloque coubicado COL, si el bloque coubicado incluye mas de un predictor de vector de movimiento (por ejemplo, COL se predice como trama B), el codificador de video 20 puede seleccionar uno de los predictores vectoriales de movimiento temporal de acuerdo con la lista actual y la imagen de referencia actual (para el bloque 100). El codificador de video 20 puede entonces anadir el predictor de vector de movimiento temporal seleccionado a la lista de predictores de vector de movimiento candidatos.
El codificador de video 20 puede indicar que uno o mas predictores de vector de movimiento estan disponibles estableciendo enable_temporal_mvp_flag. Despues de crear la lista de candidatos, el codificador de video 20 puede seleccionar un vector de movimiento de los candidatos para usarlo como predictor de vector de movimiento para el bloque 100. En algunos ejemplos, el codificador de video 20 puede seleccionar el vector de movimiento candidato de acuerdo con un analisis velocidad-distorsion.
El codificador de video 20 puede indicar el predictor de vector de movimiento seleccionado mediante un indice de MVP (mvp_flag) que identifica el MVP en la lista de candidatos. Por ejemplo, el codificador de video 20 puede establecer mvp_10_flag [x0][y0] para especificar el indice de predictor de vector de movimiento de la lista 0, donde x0, y0 especifican la ubicacion (x0, y0) de la muestra de luma superior izquierda del bloque candidato con referencia a la muestra de luma superior izquierda de la imagen. En otro ejemplo, el codificador de video 20 puede establecer mvp_11_flag [x0][y0] para especificar el indice de predictor de vector de movimiento de la lista 1, donde x0, y0 especifican la ubicacion (x0, y0) de la muestra de luma superior izquierda del bloque candidato con referencia a la muestra de luma superior izquierda de la imagen. En otro ejemplo mas, el codificador de video 20 puede establecer mvp_1c_flag [x0][y0] para especificar el indice de predictor de vector de movimiento de la lista c, donde x0, y0 especifican la ubicacion (x0, y0) de la muestra de luma superior izquierda del bloque candidato Bloque con referencia a la muestra de luma superior izquierda de la imagen.
El codificador de video 20 tambien puede generar un valor de diferencia de vector de movimiento (MVD). La MVD puede constituir la diferencia entre el predictor de vector de movimiento seleccionado y el vector de movimiento concreto para el bloque 100. El codificador de video 20 puede indicar la MVD con el indice de MVP.
El decodificador de video 30 puede realizar operaciones similares para determinar un vector de movimiento para un bloque actual mediante un predictor de vector de movimiento. Por ejemplo, el decodificador de video 30 puede recibir una indicacion en un conjunto de parametros (por ejemplo, un conjunto de parametros de imagen (PPS)) que indica que la prediccion de vector de movimiento esta habilitada para una o mas imagenes. Es decir, en un ejemplo, el decodificador de video 30 puede recibir enable_temporal_mvp_flag en un PPS. Cuando una imagen concreta hace referencia a un PPS en el que enable_temporal_mvp_flag es igual a cero, las imagenes de referencia de la memoria de imagenes de referencia pueden marcarse como "no usadas para la prediccion de vector de movimiento temporal".
Si se implementa la prediccion de vector de movimiento, al recibir el bloque 100, el decodificador de video 30 puede crear una lista de candidatos de MVP. El decodificador de video 30 puede usar el mismo sistema analizado anteriormente con respecto al codificador de video 20 para crear la lista de candidatos de MVP. En algunos casos, el decodificador de video 30 en general puede realizar un escalado de vector de movimiento similar al descrito anteriormente con respecto al codificador de video 20. Por ejemplo, si un predictor de vector de movimiento no se refiere a la misma imagen de referencia que el bloque 100, el predictor de vector de movimiento puede escalarse (por ejemplo, mediante escalado basado en las distancias de POC, tal como se ha analizado anteriormente) antes de anadirse a la lista de candidatos de MVP. El decodificador de video 30 puede identificar el predictor de vector de movimiento apropiado para el bloque 100 mediante un indice de MVP recibido (mvp_flag) que identifica el MVP en la lista de candidatos. El decodificador de video 30 puede entonces generar el vector de movimiento para el bloque 100 mediante el MVP y una MVD recibida.
La FIG. 5 ilustra en general la modalidad de fusion y la prediccion de vector de movimiento en una vista unica. Debe entenderse que los bloques de predictores de vector de movimiento candidatos mostrados en la FIG. 5 se
5
10
15
20
25
30
35
40
45
50
55
60
proporcionan con fines ejemplificativos solamente, y que se pueden usar mas, menos o diferentes bloques con el proposito de predecir informacion de movimiento. De acuerdo con unos aspectos de esta divulgacion, descritos a continuacion, la modalidad de fusion y la prediccion de vector de movimiento tambien se pueden aplicar cuando se codifica mas de una vista (como en la MVC). En dichos casos, los predictores de vector de movimiento y los bloques predictivos pueden estar localizados en vistas diferentes a las del bloque 100.
La FIG. 6 es un diagrama conceptual que ilustra la generacion y el escalado de un predictor de vector de movimiento en la codificacion multivista. Por ejemplo, de acuerdo con unos aspectos de esta divulgacion, un codificador de video (tal como el codificador de video 20 o el decodificador de video 30) puede escalar un vector de movimiento de disparidad 120 (mv) a partir de un bloque de predictores de vector de movimiento de disparidad candidatos 122 ("bloque candidato") para generar un predictor de vector de movimiento 124 (mv') para el bloque actual 126. Aunque la FIG. 6 se describe con respecto al decodificador de video 30, debe entenderse que las tecnicas de esta divulgacion pueden llevarse a cabo mediante una variedad de codificadores de video diferentes, incluidos otros procesadores, unidades de procesamiento, unidades de codificacion basadas en hardware, tales como codificadores/decodificadores (CODEC), y similares.
En el ejemplo de la FIG. 6, el bloque candidato 122 es espacialmente contiguo al bloque actual 126 en el componente de vista dos (view_id 2). El bloque candidato 122 se ha sometido a prediccion inter e incluye el vector de movimiento 120 que hace referencia (o "apunta") a un bloque predictivo del componente de vista cero (view_id 0). Por ejemplo, el vector de movimiento 120 tiene una imagen objetivo en la vista dos (view_id 2) y una imagen de referencia en la vista cero (view_id 0). El bloque actual 126 tambien se ha sometido a prediccion inter e incluye un vector de movimiento concreto (no mostrado) que se refiere a un bloque predictivo del componente de vista uno (view_id 1). Es decir, por ejemplo, el vector de movimiento concreto para el bloque actual 126 tiene una imagen objetivo en la vista dos (view_id 2) y un bloque de referencia en la vista uno (view_id 1).
De acuerdo con unos aspectos de esta divulgacion, el decodificador de video 30 puede generar un predictor de vector de movimiento 124 para el bloque actual 126 mediante una version escalada del vector de movimiento 120. Por ejemplo, el decodificador de video 30 puede escalar el vector de movimiento 120 basandose en una diferencia entre las distancias de vista del vector de movimiento 120 y el vector de movimiento concreto para el bloque actual 126. Es decir, el decodificador de video 30 puede escalar el vector de movimiento 120 basandose en una diferencia entre la posicion de camara de una camara usada para captar el bloque predictivo (en la imagen de referencia) para el bloque candidato 122 y el bloque predictivo (en la imagen de referencia) para el bloque actual 126. En consecuencia, el decodificador de video 30 puede escalar el vector de movimiento de disparidad 120 (por ejemplo, el vector de movimiento que se usa para la prediccion) de acuerdo con una diferencia entre el componente de vista al que se refiere el vector de movimiento 120 para el bloque candidato 122 y el componente de vista al que se refiere el vector de movimiento concreto para el bloque actual 126.
En un ejemplo, el decodificador de video 30 puede generar un predictor de vector de movimiento escalado para un bloque actual de acuerdo con la ecuacion (1) mostrada a continuacion:
mv' = mv
ViewDistance(mv')\ . View Distance {mv) )
(1)
donde ViewDistance (mv) es igual a una diferencia entre un ID de vista de una imagen de referencia del vector de movimiento 120 (por ejemplo, ViewId(RefPic(mv)) y un ID de vista de una imagen objetivo del vector de movimiento 120 (por ejemplo, ViewId(TargetPic(mv)) y ViewDistance(mv) es igual a una diferencia entre un ID de vista de una imagen de referencia del predictor de vector de movimiento 124 (por ejemplo, ViewId(RefPic(mv')) y un ID de vista de una imagen objetivo de un predictor de vector de movimiento 124 (por ejemplo, ViewId(TargetPic(mv')). Por consiguiente, en este ejemplo, la imagen de referencia del predictor de vector de movimiento 124, RefPic(mv'), pertenece a la nueva vista objetivo y la imagen objetivo del predictor de vector de movimiento 124, TargetPic(mv'), pertenece a la vista actual. De forma similar, la imagen de referencia del vector de movimiento 120, RefPic(mv), pertenece a la vista a la que apunta el vector de movimiento candidato, y la imagen objetivo del vector de movimiento 120, TargetPic(mv), pertenece a la vista actual. Por consiguiente, el decodificador de video 30 puede generar un predictor de vector de movimiento escalado de acuerdo con la ecuacion (2) siguiente:
mv' = mv
/ViewID(NewTarget)-ViewID(Current)\ V ViewID(Candidate)-ViewId(Current) J
(2)
donde mv' representa el predictor de vector de movimiento escalado para el bloque actual, mv representa el vector de movimiento para el bloque candidato, ViewID(NewTarget) es el componente de vista al que se refiere el vector de movimiento concreto para el bloque actual, ViewID(Current) es el componente de vista del bloque actual y ViewID(Candidate) es el componente de vista del bloque candidato.
Aplicando la ecuacion (2) al ejemplo de la FIG. 6, mv' representa el predictor de vector de movimiento escalado para el bloque actual 126, mv representa el vector de movimiento 120, ViewID(NewTarget) es el componente de vista al
5
10
15
20
25
30
35
40
45
50
55
60
65
cual se refiere el vector de movimiento 124, ViewID(Current) es el componente de vista del bloque actual 126 y ViewID(Candidate) es el componente de vista del bloque candidato 122. En consecuencia, en el ejemplo mostrado en la FIG. 4, el predictor de vector de movimiento 124 es el vector de movimiento 120
escalado por un factor de la mitad (por ejemplo, m v' = mv
imagen1
). Es decir, el decodificador de video 30 puede
escalar tanto el componente de desplazamiento horizontal como el componente de desplazamiento vertical del vector de movimiento 120 por un factor de una mitad para generar el predictor de vector de movimiento 124 para el bloque actual 126.
El escalado del vector de movimiento descrito con respecto a la FIG. 6 puede realizarse tanto para la fusion como para la prediccion del vector de movimiento. Es decir, por ejemplo, el decodificador de video 30 puede escalar el vector de movimiento 120 antes de fusionar el vector de movimiento 120 con la informacion de movimiento para el bloque actual 126. En otro ejemplo, el decodificador de video 30 puede escalar el vector de movimiento 120 antes de calcular un valor de diferencia de vector de movimiento (MVD) de acuerdo con una diferencia entre el predictor de vector de movimiento 124 y el vector de movimiento concreto para el bloque actual 126.
Como se ilustra en el ejemplo de la FIG. 6, el bloque candidato 122 y el bloque actual 126 pueden estar situados en el mismo componente de vista. Sin embargo, en otros ejemplos, como se describe con mayor detalle respecto a las FIGS. 7 y 8, el bloque candidato puede estar situado en un componente de vista diferente que el bloque actual.
La FIG. 7 es otro diagrama conceptual que ilustra la generacion y el escalado de un predictor de vector de movimiento. Por ejemplo, de acuerdo con unos aspectos de esta divulgacion, un codificador de video (tal como el codificador de video 20 o el decodificador de video 30) puede escalar un vector de movimiento de disparidad 130 (mv) a partir de un bloque de predictor de vector de movimiento de disparidad candidato 132 (x', y'), para generar el predictor de vector de movimiento 134 (mv') para un bloque actual 136 (x, y), en el que el bloque candidato 132 pertenece a un componente de vista diferente al del bloque actual 136. En consecuencia, el proceso mostrado y descrito con respecto a la FIG. 7 puede denominarse en general proceso de prediccion de vector de movimiento de disparidad entre vistas. Aunque la FIG. 7 se describe con respecto al decodificador de video 30, debe entenderse que las tecnicas de esta divulgacion pueden llevarse a cabo mediante una diversidad de codificadores de video diferentes, incluidos otros procesadores, unidades de procesamiento, unidades de codificacion basadas en hardware, tales como codificadores/decodificadores (CODEC), y similares.
En el ejemplo mostrado en la FIG. 7, el bloque candidato 132 esta situado en el componente de vista uno (view_id 1). El bloque candidato 132 se ha sometido a prediccion inter e incluye el vector de movimiento 130 (mv) que se refiere a un bloque predictivo en el componente de vista cero (view_id 0). Por ejemplo, el vector de movimiento 130 tiene una imagen objetivo en la vista uno (view_id 1) y una imagen de referencia en la vista cero (view_id 0). El bloque actual 136 esta coubicado con el bloque candidato 132 y situado en el componente de vista dos (view_id 2). Como se describe con mas detalle a continuacion, en algunos ejemplos, el bloque actual 136 puede incluir un vector de movimiento concreto (no mostrado) que identifica un bloque en una primera vista de referencia (view_id 1). Es decir, por ejemplo, el vector de movimiento concreto para el bloque actual 136 tiene una imagen objetivo en la vista dos (view_id 2) y puede tener un bloque de referencia en la vista uno (view_id 1). En otros ejemplos, el bloque actual puede incluir un vector de movimiento concreto que identifica un bloque en la segunda vista de referencia (view_id 0). Es decir, por ejemplo, el vector de movimiento concreto para el bloque actual 136 tiene una imagen objetivo en la vista dos (view_id 2) y puede tener un bloque de referencia en la vista cero (view_id 0). Por consiguiente, el predictor de vector de movimiento 134 (mv') puede referirse a un bloque de una primera vista de referencia (view_id 1). En otro ejemplo, un segundo predictor de vector de movimiento 138 (mv") puede referirse a un bloque de una segunda vista de referencia (view_id 0).
En algunos ejemplos, el segundo predictor de vector de movimiento 138 puede no estar disponible para fines de prediccion de vector de movimiento. Por ejemplo, el segundo predictor 138 de vector de movimiento solo puede generarse si esta disponible un bloque predictivo en la segunda vista de referencia para la prediccion directa entre vistas. La disponibilidad de un bloque predictivo en la segunda vista de referencia puede especificarse, por ejemplo, en un conjunto de parametros (tal como un conjunto de parametros de secuencia (SPS) o un conjunto de parametros de imagen (PPS)) o una cabecera de segmento asociada con el bloque actual 136.
De acuerdo con los aspectos de esta divulgacion, el decodificador de video puede realizar una prediccion de vector de movimiento de disparidad entre vistas mediante la modalidad de fusion o mediante la prediccion de vector de movimiento. Con respecto a la modalidad de fusion, el decodificador de video 30 puede seleccionar inicialmente una "vista objetivo" para el bloque 136 actual. En general, la vista objetivo incluye el bloque predictivo para el bloque actual 136. En algunos ejemplos, la vista objetivo puede ser la primera vista de referencia (mostrada en la FIG. 7 como view_id 1). En otros ejemplos, la vista objetivo puede ser la segunda vista de referencia (mostrada en la FIG. 7 como view_id 0). Sin embargo, como se ha indicado anteriormente, en algunos ejemplos la segunda vista de referencia solo puede usarse como vista objetivo si un bloque predictivo de la segunda vista de referencia esta disponible para ser usado con fines de prediccion entre vistas.
En algunos ejemplos, el decodificador de video 30 puede seleccionar la primera vista de referencia como vista
5
10
15
20
25
30
35
40
45
50
55
60
objetivo. En otros ejemplos, el decodificador de video 30 puede seleccionar, cuando esta disponible, la segunda vista de referencia como vista objetivo. La seleccion de la vista objetivo se puede determinar, por ejemplo, basandose en la disponibilidad de un bloque predictivo y/o un algoritmo de seleccion predeterminado. El indice de referencia (ref_idx) del bloque actual 136 corresponde al indice de la imagen que contiene el bloque predictivo de la vista objetivo, que se anade a la lista de imagenes de referencia del bloque actual 136.
Despues de seleccionar la vista objetivo, el decodificador de video 30 puede localizar el bloque candidato 132. En un ejemplo con fines ilustrativos, supongamos que la muestra de luma superior izquierda del bloque actual 136 esta situada en una imagen (o segmento) en las coordenadas (x, y). El decodificador de video 30 puede determinar coordenadas coubicadas en el componente de vista uno para el bloque candidato 132. Ademas, en algunos ejemplos, el decodificador de video 30 puede ajustar las coordenadas basandose en una disparidad entre el componente de vista del bloque actual 136 (componente de vista dos) y el componente de vista del bloque candidato (componente de vista uno) 132. En consecuencia, el decodificador de video 30 puede determinar las coordenadas para el bloque candidato 132 como (x', y'), donde (x', y') = (x, y) + disparidad. En algunos ejemplos, la disparidad puede incluirse y/o calcularse en un SPS, PPS, cabecera de segmento, sintaxis de CU y/o sintaxis de PU.
Despues de localizar el bloque candidato 132, el decodificador de video 30 puede escalar el vector de movimiento 130 para el bloque candidato 132 basandose en una diferencia entre las distancias de vista del vector de movimiento 130 y el vector de movimiento concreto para el bloque actual 136. Es decir, el decodificador de video 30 puede escalar el vector de movimiento 130 basandose en una diferencia en la posicion de camara de una camara usada para captar el bloque predictivo para el bloque candidato 132 y el bloque predictivo para el bloque actual 136 (por ejemplo, el bloque predictivo de la vista objetivo). Es decir, el decodificador de video 30 puede escalar el vector de movimiento de disparidad 130 (por ejemplo, el vector de movimiento que se usa para la prediccion) de acuerdo con una diferencia entre el componente de vista al que se refiere el vector de movimiento 130 para el bloque candidato 132 y el componente de vista de la vista objetivo.
En un ejemplo, el decodificador de video 30 puede generar un predictor de vector de movimiento escalado para un bloque actual de acuerdo con la ecuacion (3) mostrada a continuacion:
mv' = mv (
View ID (Tar get)-View ID (Current)
\ViewID(SecondReference)-ViewId(Reference))
(3)
Donde mv' representa el predictor de vector de movimiento escalado para el bloque actual, mv representa el vector de movimiento para el bloque candidato, ViewID(Target) es el componente de vista de la vista objetivo seleccionada, ViewID(Current) es el componente de vista del bloque actual, ViewID(SecondReference) es el componente de vista de la segunda vista de referencia (si esta disponible) y ViewID(Reference) es el componente de vista de la primera vista de referencia. En algunos ejemplos, ViewID(Target) menos ViewID(Current) puede denominarse distancia de vista de predictor de vector de movimiento 134, mientras que ViewID(SecondReference) menos ViewID(Reference) puede denominarse distancia de vista de vector de movimiento 130. Es decir, la distancia de vista del predictor de vector de movimiento 134 es la diferencia entre la imagen objetivo (view_id 1) y la imagen de referencia (view_id 2) del predictor de vector de movimiento 134, mientras que la distancia de vista del vector de movimiento 130 es la diferencia entre la imagen objetivo (view_id 0) y la imagen de referencia (view_id 1) del vector de movimiento 130.
Aplicando la ecuacion (3) al ejemplo de la FIG. 7, mv' representa el predictor de vector de movimiento escalado 134 o el predictor de vector de movimiento escalado 138, dependiendo de que componente de vista se selecciona para la vista objetivo. Por ejemplo, si se selecciona la primera vista de referencia (view_id 1) como vista objetivo, mv' representa el predictor de vector de movimiento escalado 134, mv representa el vector de movimiento 130, ViewID(Target) es el componente de vista al que se refiere el predictor de vector de movimiento 134, ViewID(Current) es el componente de vista del bloque actual 136, ViewID(SecondReference) es el componente de vista de la segunda vista de referencia (view_id 0) y ViewID(Reference) es el componente de vista de la primera vista de referencia (view_id 1). En consecuencia, en el ejemplo mostrado en la FIG. 7, el predictor de vector de
movimiento 134 es el vector de movimiento 130 escalado por un factor de uno (por ejemplo, mv' = mv
imagen2
).
Es decir, el componente de desplazamiento horizontal y el componente de desplazamiento vertical del vector de movimiento 130 pueden ser iguales al componente de desplazamiento horizontal y el componente de desplazamiento vertical del predictor de vector de movimiento 134.
De forma alternativa, si se selecciona la segunda vista de referencia (view_id 0) para la vista de destino, mv' representa el predictor de vector de movimiento escalado 138, mv representa el vector de movimiento 130, ViewID(Target) es el componente de vista al que hace referencia el predictor de vector de movimiento 138, ViewID(Current) es el componente de vista del bloque actual 136, ViewID(SecondReference) es el componente de vista de la segunda vista de referencia (view_id 0) y ViewID(Reference) es el componente de vista de la primera vista de referencia (view_id 1). En consecuencia, en el ejemplo mostrado en la FIG. 7, el predictor de vector de
movimiento 138 es el vector de movimiento 130 escalado por un factor de dos (por ejemplo, mv ' = mv
imagen3
).
5
10
15
20
25
30
35
40
45
50
55
60
65
Es decir, el decodificador de video 30 puede escalar tanto el componente de desplazamiento horizontal como el componente de desplazamiento vertical del vector de movimiento 130 por un factor de dos para generar el predictor de vector de movimiento 138 para el bloque actual 136.
De acuerdo con los aspectos de esta divulgacion, el decodificador de video 30 puede emprender etapas similares al realizar la prediccion del vector de movimiento (por ejemplo, generar un MVP). Por ejemplo, el decodificador de video 30 puede seleccionar una vista objetivo, que puede ser la primera vista de referencia (view_id 1) o la segunda vista de referencia (view_id 0). Sin embargo, si una imagen de referencia del componente de vista que contiene un bloque predictivo para el bloque actual no esta disponible para fines de prediccion entre vistas, el predictor correspondiente no se puede usar. Por consiguiente, la seleccion de la vista objetivo puede determinarse, por ejemplo, basandose en la disponibilidad de un bloque predictivo y/o un algoritmo de seleccion predeterminado.
Si no hay ningun bloque predictivo para el bloque actual 136 disponible para su uso en la prediccion directa entre vistas en la primera vista de referencia (view_id 1) o la segunda vista de referencia (view_id 0), el decodificador de video 30 no puede realizar la prediccion del vector de movimiento. Si hay al menos un bloque predictivo disponible, el decodificador de video 30 puede seleccionar la vista de referencia que incluye el bloque predictivo asociado con el vector de movimiento concreto para el bloque 136 actual.
Despues de seleccionar una vista objetivo, el decodificador de video 30 puede repetir las etapas descritas anteriormente con respecto a la modalidad de fusion. Por ejemplo, el decodificador de video 30 puede localizar el bloque candidato 132. Es decir, el decodificador de video 30 puede determinar coordenadas coubicadas en el componente de vista uno para el bloque candidato 132. Ademas, en algunos ejemplos, el decodificador de video 30 puede ajustar las coordenadas basandose en una disparidad entre el componente de vista del bloque actual 136 (componente de vista dos) y el componente de vista del bloque candidato (componente de vista uno) 132.
Ademas, despues de localizar el bloque candidato 132, el decodificador de video 30 puede escalar el vector de movimiento 130 para el bloque candidato 132 basandose en una diferencia en la posicion de camara de una camara usada para captar el bloque predictivo para el bloque candidato 132 y el bloque predictivo para el bloque actual 136 (por ejemplo, el bloque predictivo de la vista objetivo). Es decir, el decodificador de video 30 puede escalar el vector de movimiento de disparidad 130 (por ejemplo, el vector de movimiento que se usa para la prediccion) de acuerdo con una diferencia entre el componente de vista al que se refiere el vector de movimiento 130 para el bloque candidato 132 y el componente de vista de la vista objetivo. En algunos ejemplos, el decodificador de video 30 puede realizar el escalado del predictor del vector de movimiento mediante la ecuacion (2) anterior. En algunos aspectos, descritos anteriormente con respecto a la FIG. 8 siguiente, el escalado del predictor del vector de movimiento puede extenderse a otras vistas.
El decodificador de video 30 puede anadir el bloque candidato 132 a una lista candidata cuando se realiza la modalidad de fusion y/o la prediccion del vector de movimiento (descritos, por ejemplo, con respecto a la FIG. 5 anterior). De acuerdo con aspectos de esta divulgacion, el bloque candidato puede anadirse a la lista de predictores de vector de movimiento candidatos (por ejemplo, para la modalidad de fusion o la prediccion del vector de movimiento con un MVP) de una diversidad de maneras. Por ejemplo, el decodificador de video 30 puede crear la lista de candidatos mediante la localizacion de candidatos de modalidad de fusion de acuerdo con el sistema siguiente:
1. A1, si availableFlagA1 es igual a 1
2. V, si availableFlagVes igual a 1
3. B1, si availableFlagB1 es igual a 1
4. B0, si availableFlagB0 es igual a 1
5. A0, si availableFlagA0 es igual a 1
6. B2, si availableFlagB2 es igual a 1
7. Col, si availableFlagCol es igual a 1
donde V representa el bloque candidato 132. En otros ejemplos, el bloque candidato 132 se puede localizar y anadir a la lista de candidatos en cualquier otra posicion de la lista de candidatos.
La FIG. 8 es otro diagrama conceptual que ilustra la generacion y el escalado de un predictor de vector de movimiento, de acuerdo con unos aspectos de esta divulgacion. Por ejemplo, de acuerdo con unos aspectos de esta divulgacion, un codificador de video (tal como el codificador de video 20 o el decodificador de video 30) puede escalar un vector de movimiento de disparidad 140 (mv) a partir de un bloque de predictores de vector de movimiento de disparidad candidatos 142 para generar un predictor de vector de movimiento 144 (mv') para un bloque actual 146, en el que el bloque candidato 142 pertenece a un componente de vista diferente al del bloque actual 146. Aunque la figura 8 se describe con respecto al decodificador de video 30, debe entenderse que las tecnicas de esta divulgacion pueden llevarse a cabo mediante una variedad de codificadores de video diferentes, incluidos otros procesadores, unidades de procesamiento, unidades de codificacion basadas en hardware, tales como codificadores/decodificadores CODEC), y similares.
5
10
15
20
25
30
35
40
45
50
55
60
El ejemplo mostrado en la FIG. 8 extiende la prediccion de vector de movimiento mostrada y descrita con respecto a la FIG. 7 a un entorno que incluya mas de tres vistas. Por ejemplo, como se muestra en la FIG. 8, el bloque candidato 142 esta situado en el componente de vista dos (view_id 2). El bloque candidato 142 se ha sometido a prediccion inter e incluye el vector de movimiento 140 (mv) que se refiere a un bloque predictivo del componente de vista uno (view_id 1). Por ejemplo, el vector de movimiento 140 tiene una imagen objetivo en la vista dos (view_id 2) y una imagen de referencia en la vista uno (view_id 1). El bloque actual 146 esta coubicado con el bloque candidato 142 y situado en el componente de vista tres (view_id 3).
De acuerdo con unos aspectos de esta divulgacion, el decodificador de video 30 puede seleccionar una vista objetivo para el bloque actual 146 como componente de vista cero (view_id 0). Por ejemplo, la vista objetivo incluye en general el bloque predictivo para el bloque actual. Si la imagen que contiene el bloque predictivo es una imagen de referencia entre vistas y el bloque predictivo para el bloque actual 146 esta situado en una tercera vista de referencia (view_id 0), el decodificador de video 30 puede seleccionar la tercera vista de referencia como vista objetivo.
Despues de seleccionar la vista objetivo, el decodificador de video 30 puede localizar el bloque candidato 142. Por ejemplo, suponiendo que la muestra de luma superior izquierda del bloque actual 146 esta situada en una imagen (o segmento) de coordenadas (x, y) en el componente de vista tres, el decodificador de video 30 puede determinar unas coordenadas coubicadas en el componente de vista dos para el bloque candidato 142. Ademas, como se ha indicado anteriormente, el decodificador de video 30 puede ajustar las coordenadas basandose en una disparidad entre el componente de vista del bloque actual 146 (componente de vista tres) y el componente de vista del bloque candidato (componente de vista dos) 142.
Despues de localizar el bloque candidato 142, el decodificador de video 30 puede escalar el vector de movimiento 140 para el bloque candidato 142 basandose en una diferencia entre las distancias de vista del vector de movimiento 140 y el vector de movimiento concreto para el bloque actual 146. Es decir, el decodificador de video 30 puede escalar el vector de movimiento 130 basandose en una diferencia en la posicion de camara de una camara usada para captar el bloque predictivo para el bloque candidato 142 y el bloque predictivo para el bloque actual 146 (por ejemplo, el bloque predictivo de la vista objetivo). Es decir, el decodificador de video 30 puede escalar el vector de movimiento de disparidad 140 (por ejemplo, el vector de movimiento que se usa para la prediccion) de acuerdo con una diferencia entre el componente de vista al cual se refiere el vector de movimiento 140 para el bloque candidato 142 y el componente de vista de la vista objetivo (view_id 0).
En un ejemplo, el decodificador de video 30 puede generar un predictor de vector de movimiento escalado para un bloque actual de acuerdo con la ecuacion (4) mostrada a continuacion:
mv
mv
ViewID(Third)-ViewID(Current)
\ViewID(SecondReference)-ViewId(Ref erence))
(4)
donde mv' representa el predictor de vector de movimiento escalado para el bloque actual, mv representa el vector de movimiento para el bloque candidato, ViewID(Third) es el componente de vista de la tercera vista de referencia, ViewID(Current) es el componente de vista del bloque actual, ViewID(SecondReference) es el componente de vista de la segunda vista de referencia (si esta disponible) y ViewID(Reference) es el componente de vista de la primera vista de referencia. En algunos ejemplos, ViewID(Third) menos ViewID(Current) puede denominarse distancia de vista del predictor de vector de movimiento 144, mientras que ViewID(SecondReference) menos ViewID(Reference) puede denominarse distancia de vista del vector de movimiento 140. Es decir, la distancia de vista del predictor de vector de movimiento 144 es la diferencia entre la imagen objetivo (view_id 0) y la imagen de referencia (view_id 3) del predictor de vector de movimiento 144, mientras que la distancia de vista del vector de movimiento 140 es la diferencia entre la imagen objetivo (view_id 1) y la imagen de referencia (view_id 2) del vector de movimiento 140.
Aplicando la ecuacion (3) al ejemplo de la FIG. 8, mv' representa el predictor de vector de movimiento escalado 144. Por ejemplo, ViewID(Third) es la tercera vista de referencia (view_id 0), mv' representa el predictor de vector de movimiento escalado 144, mv representa el vector de movimiento 140, ViewlD(Current) es el componente de vista del bloque actual 146, ViewlD(SecondReference) es el componente de vista de la segunda vista de referencia (view_id 1), y ViewlD(Reference) es el componente de vista de la primera vista de referencia (view_id 2). En consecuencia, en el ejemplo mostrado en la FIG. 8, el predictor de vector de movimiento 144 es el vector de
movimiento 140 escalado por un factor de tres (por ejemplo, mv' = mv
imagen4
Es decir, el decodificador de
video 30 puede escalar el componente de desplazamiento horizontal y el componente de desplazamiento vertical del vector de movimiento 140 por tres para formar el predictor de vector de movimiento 144.
Mientras que las FIGS. 7 a 8 proporcionan ejemplos para la prediccion de vector de movimiento de disparidad entre vistas, debe entenderse que dichos ejemplos se proporcionan meramente con fines ilustrativos. Es decir, las tecnicas para la prediccion de vector de movimiento de disparidad pueden aplicarse a mas o menos vistas que las mostradas. De forma adicional o alternativa, las tecnicas para la prediccion de vector de movimiento de disparidad
5
10
15
20
25
30
35
40
45
50
55
60
65
pueden aplicarse en circunstancias en las que las vistas tienen diferentes identificadores de vistas.
La FIG. 9 es un diagrama de flujo que ilustra un ejemplo de procedimiento de codificacion de informacion de prediccion para un bloque de datos de video. El ejemplo mostrado en la FIG. 9 se describe en general como si estuviera realizado por un codificador de video. Debe entenderse que, en algunos ejemplos, el procedimiento de la FIG. 9 puede llevarse a cabo mediante el codificador de video 20 (FIGS. 1 y 2) o un decodificador de video 30 (FIGS.1 y 3), descritos anteriormente. En otros ejemplos, el procedimiento de la FIG. 9 puede realizarse mediante una diversidad de diferentes procesadores, unidades de procesamiento, unidades de codificacion basadas en hardware, tales como codificadores/decodificadores (CODEC), y similares.
De acuerdo con el ejemplo de procedimiento mostrado en la FIG. 9, un codificador de video puede identificar un primer bloque de datos de video en una primera vista, donde el primer bloque de datos de video esta asociado con un primer vector de movimiento de disparidad (160). Por ejemplo, el vector de movimiento para el primer bloque de datos de video puede ser un vector de movimiento de disparidad que identifica un bloque de referencia en otro componente de vista. El codificador de video puede entonces determinar si un segundo vector de movimiento asociado con un segundo bloque de datos de video es un vector de movimiento de disparidad (162).
Si el segundo vector de movimiento no es un vector de movimiento de disparidad (la rama NO de la etapa 162), el codificador de video puede identificar un predictor de vector de movimiento candidato diferente (164). Es decir, de acuerdo con algunos aspectos de esta divulgacion, la capacidad de usar un vector de movimiento de disparidad (por ejemplo, el primer vector de movimiento) para predecir un vector de movimiento temporal (por ejemplo, el segundo vector de movimiento, cuando el segundo vector de movimiento es un vector de movimiento temporal) puede estar inhabilitado. En dichos casos, el codificador de video puede identificar el primer vector de movimiento como no disponible para su uso con fines de prediccion del vector de movimiento.
Si el segundo vector de movimiento es un vector de movimiento de disparidad (la rama SI de la etapa 162), el codificador de video puede escalar el primer vector de movimiento para generar un predictor de vector de movimiento para el segundo vector de movimiento (166). Por ejemplo, de acuerdo con aspectos de esta divulgacion, el codificador de video puede escalar el primer vector de movimiento para generar el predictor de vector de movimiento de disparidad basandose en diferencias en las distancias de vista asociadas con el primer vector de movimiento de disparidad y el segundo vector de movimiento. Es decir, en algunos ejemplos, el codificador de video puede escalar el predictor del vector de movimiento para el segundo bloque basandose en las localizaciones de la camara. Por ejemplo, el codificador de video puede escalar el segundo vector de movimiento de acuerdo con una diferencia en los identificadores de vista como se muestra y describe con respecto a las FIGS. 6-8.
El codificador de video puede entonces codificar datos de prediccion para el segundo bloque mediante el predictor de vector de movimiento escalado (168). Por ejemplo, el codificador de video puede codificar los datos de prediccion para el segundo bloque mediante la modalidad de fusion o mediante la prediccion del vector de movimiento. Para la modalidad de fusion, el codificador de video puede codificar directamente los datos de prediccion para el segundo bloque mediante el segundo predictor de vector de movimiento escalado. Para la prediccion del vector de movimiento, el codificador de video puede codificar los datos de prediccion para el segundo bloque generando una MVD. La MVD puede incluir la diferencia entre el primer vector de movimiento y el segundo vector de movimiento escalado.
Tambien debe entenderse que las etapas mostradas y descritas con respecto a la FIG. 9 se proporcionan como un simple ejemplo. Es decir, las etapas del procedimiento de la FIG. 9 no tienen necesariamente que realizarse en el orden mostrado en la FIG. 9, pudiendose realizar un numero inferior de etapas adicionales o alternativas.
La FIG. 10 es un diagrama conceptual que ilustra la generacion de un predictor de vector de movimiento a partir de un bloque en una vista diferente a la de un bloque actual. Por ejemplo, de acuerdo con unos aspectos de esta divulgacion, un codificador de video (tal como el codificador de video 20 o el decodificador de video 30) puede usar un vector de movimiento temporal 180 (mv) de un bloque de predictor de vector de movimiento temporal candidato 182 para generar el predictor de vector de movimiento 184 (mv') para un bloque actual 186, donde el bloque candidato 182 pertenece a un componente de vista diferente al del bloque actual 186. Aunque la figura 10 se describe con respecto al decodificador de video 30, debe entenderse que las tecnicas de esta divulgacion pueden llevarse a cabo mediante una diversidad de codificadores de video diferentes, incluidos otros procesadores, unidades de procesamiento, unidades de codificacion basadas en hardware, tales como codificadores/decodificadores CODEC), y similares.
Como se muestra en la FIG. 10, el bloque actual 186 esta situado en el componente de vista uno (view_id 1). El bloque candidato 182 esta situado en el componente de vista cero (view_id 0). El bloque candidato 182 se predice temporalmente e incluye el vector de movimiento 180 (mv) que se refiere a un bloque predictivo en una localizacion temporal diferente del mismo componente de vista. En el ejemplo mostrado en la FIG. 10, el vector de movimiento 180 identifica un bloque predictivo en una imagen que tiene un indice de referencia igual a la variable i (ref_idx = i).
Supongamos que la muestra de luma superior izquierda del bloque actual 186 esta situada en una imagen (o
5
10
15
20
25
30
35
40
45
50
55
60
65
segmento) de coordenadas (x, y). El decodificador de video 30 puede localizar el bloque candidato 182 determinando unas coordenadas coubicadas en el componente de vista cero para el bloque candidato 182. En algunos ejemplos, el decodificador de video 30 puede ajustar las coordenadas del bloque candidato 182 basandose en una disparidad entre el componente de vista del bloque actual 186 (view_id 1) y el componente de vista del bloque candidato 182 (view_id 0). En consecuencia, el decodificador de video 30 puede determinar las coordenadas para el bloque candidato 182 como (x', y'), donde (x', y') = (x, y) + disparidad. En algunos ejemplos, la disparidad puede incluirse y/o calcularse en un SPS, PPS, cabecera de segmento, sintaxis de CU y/o sintaxis de PU.
De acuerdo con unos aspectos de esta divulgacion, el decodificador de video 30 puede volver a correlacionar el indice de referencia del vector de movimiento 180 que se usa con fines de prediccion. En general, como se ha indicado anteriormente, los datos para un vector de movimiento incluyen una lista de imagenes de referencia, un indice en la lista de imagenes de referencia (ref_idx), un componente horizontal y un componente vertical. En la HEVC, puede haber dos listas de imagenes de referencia normales (por ejemplo, lista 0 y lista 1) y una lista de imagenes de referencia combinadas (por ejemplo, lista c). Sin perdida de generalidad, se va a suponer que la lista de imagenes de referencia actual es la lista t (que puede corresponder a cualquiera de entre la lista 0, la lista 1 o la lista c). De acuerdo con el ejemplo mostrado en la FIG. 10, el vector de movimiento 180 para el bloque candidato 182 puede identificar un bloque predictivo en una imagen situada en el componente de vista cero (view_id 0) que tiene un valor de POC de dos y un ref_idx igual a i. De acuerdo con unos aspectos de esta divulgacion, el decodificador de video 30 puede identificar un bloque predictivo coubicado para el bloque actual 186 en el mismo instante de tiempo que el bloque actual 186. Es decir, el bloque predictivo para el bloque candidato 182 y el bloque predictivo para el bloque actual 186 tienen la misma ubicacion temporal, pero se encuentran en imagenes de dos vistas diferentes.
En un ejemplo, si el bloque predictivo identificado para el bloque actual 186 corresponde a la j-esima imagen de referencia en la lista de imagenes de referencia t para la imagen actual, el decodificador de video 30 puede predecir que el indice de referencia (ref_idx) para el bloque actual 186 es j, y el decodificador de video 30 puede establecer el predictor de vector de movimiento 184 en el mismo valor que el vector de movimiento 180. En consecuencia, el decodificador de video 30 vuelve a correlacionar con eficacia el indice de referencia para el bloque actual 186 a partir de los indices ref_idx i a ref_idx j. Es decir, el decodificador de video 30 determina que el predictor de vector de movimiento 184 para el bloque actual 186 tiene la misma lista de imagenes de referencia, componente horizontal y componente vertical que el bloque candidato 182, sin embargo, el predictor de vector de movimiento 184 se refiere a la j-esima imagen de referencia de la lista de imagenes de referencia, en lugar de la i-esima imagen de referencia de la lista de imagenes de referencia.
De acuerdo con unos aspectos de esta divulgacion, en algunos ejemplos, el decodificador de video puede tambien escalar el predictor del vector de movimiento 184. Por ejemplo, si la imagen que contiene el bloque predictivo identificado para el bloque actual 186 no esta incluida en la lista de imagenes de referencia t, el decodificador de video 30 puede identificar una segunda imagen que ocupa la posicion mas cercana en la lista de imagenes de referencia t. En algunos ejemplos, si dos imagenes tienen distancias identicas a la imagen que contiene el bloque predictivo identificado para el bloque actual 186, el decodificador de video 30 puede seleccionar la imagen que esta mas proxima a la imagen que contiene el bloque actual 186 como segunda imagen. Supongamos con fines de explicacion que la imagen identificada tiene un indice de referencia k. En este ejemplo, el decodificador de video 30 puede entonces predecir que el indice de referencia del predictor de vector de movimiento 184 es k, y el decodificador de video 30 puede escalar el predictor de vector de movimiento 184 basandose en una diferencia en el recuento de orden de imagenes (POC). Es decir, el decodificador de video 30 puede escalar el predictor de vector de movimiento 184 basandose en una diferencia entre la distancia entre el bloque actual 186 y la imagen en el indice de referencia j, y el bloque actual 186 y la imagen en el indice de referencia k.
De acuerdo con algunos ejemplos, el decodificador de video 30 puede realizar el mismo proceso cuando se realiza la prediccion del vector de movimiento. Sin embargo, despues de determinar el predictor de vector de movimiento 184, el decodificador de video 30 puede generar el vector de movimiento para el bloque actual 186 mediante una MVD. La prediccion del vector de movimiento puede usar el mismo proceso. En otro ejemplo, con respecto a la prediccion del vector de movimiento, si no puede localizarse un bloque predictivo para el bloque actual 186 (identificado como localizado en el indice de referencia j anterior), el decodificador de video 30 no puede realizar la modalidad de fusion o la prediccion de vector de movimiento para el bloque actual 186. Es decir, en lugar de escalar el predictor de vector de movimiento 184, el decodificador de video 30 puede considerar que el predictor de vector de movimiento 184 no esta disponible.
El decodificador de video 30 puede anadir el bloque candidato 182 a una lista candidata para realizar la modalidad de fusion y/o la prediccion del vector de movimiento (descritos, por ejemplo, con respecto a la FIG. 5 anterior). De acuerdo con unos aspectos de esta divulgacion, el bloque candidato 182 se puede anadir a la lista de predictores de vector de movimiento candidatos (por ejemplo, para la modalidad de fusion o la prediccion del vector de movimiento con un MVP) de una variedad de formas. Por ejemplo, el decodificador de video 30 puede crear la lista de candidatos localizando candidatos de acuerdo con el siguiente sistema:
5
10
15
20
25
30
35
40
45
50
55
60
65
1. Ai, si availableFlagAi es igual a 1
2. V, si availableFlagVes igual a 1
3. B1, si availableFlagB1 es igual a 1
4. B0, si availableFlagB0 es igual a 1
5. A0, si availableFlagA0 es igual a 1
6. B2, si availableFlagB2 es igual a 1
7. Col, si availableFlagCol es igual a 1
donde V representa el bloque candidato 182. En otros ejemplos, el bloque candidato 132 se puede localizar y anadir a la lista de candidatos en cualquier otra posicion de la lista de candidatos.
La FIG. 11 es un diagrama de flujo que ilustra un ejemplo de procedimiento para generar un predictor de vector de movimiento. El ejemplo mostrado en la FIG. 11 se describe en general como si fuera realizado por un codificador de video. Debe entenderse que, en algunos ejemplos, el procedimiento de la FIG. 11 puede llevarse a cabo mediante el codificador de video 20 (FlGS. 1 y 2) o el decodificador de video 30 (FIGS. 1 y 3), descritos anteriormente. En otros ejemplos, el procedimiento de la FIG. 11 puede realizarse mediante una variedad de diferentes procesadores, unidades de procesamiento, unidades de codificacion basadas en hardware, tales como codificadores/decodificadores (CODEC), y similares.
De acuerdo con el ejemplo mostrado en la FIG. 11, el codificador de video puede identificar un primer bloque de datos de video en una primera posicion temporal de una primera vista, donde el primer bloque esta asociado con un primer vector de movimiento temporal (202). De acuerdo con unos aspectos de esta divulgacion, cuando un segundo vector de movimiento asociado con un segundo bloque de datos de video es un vector de movimiento temporal y el segundo bloque es de una segunda vista diferente a la del primer bloque (la rama SI de la etapa 204), el codificador de video puede determinar un predictor de vector de movimiento basandose en el primer vector de movimiento (206). Es decir, por ejemplo, el codificador de video puede determinar un predictor de vector de movimiento para predecir el segundo vector de movimiento a partir del primer vector de movimiento. El codificador de video tambien puede codificar datos de prediccion para el segundo bloque mediante el predictor de vector de movimiento (208). Por ejemplo, el codificador de video puede usar el predictor de vector de movimiento en una modalidad de fusion o para generar un valor de MVD.
Si el segundo vector de movimiento no es un vector de movimiento temporal y/o el segundo bloque de datos de video no es de una vista diferente a la del primer bloque de datos de video (la rama NO de la etapa 204), el codificador de video puede determinar si el segundo vector de movimiento es un vector de movimiento de disparidad (210). De acuerdo con unos aspectos de esta divulgacion, si el segundo vector de movimiento no es un vector de movimiento de disparidad (la rama NO de la etapa 210), el codificador de video puede identificar un predictor de vector de movimiento candidato diferente (212). Es decir, el codificador de video puede, en algunos ejemplos, no usar el primer vector de movimiento para predecir el segundo vector de movimiento.
Si el segundo vector de movimiento es un vector de movimiento de disparidad (la rama SI de la etapa 210), el codificador de video puede determinar si la prediccion del vector de movimiento de disparidad esta inhabilitada (214). Es decir, de acuerdo con algunos aspectos de esta divulgacion, la capacidad de usar un vector de movimiento temporal (por ejemplo, el primer vector de movimiento) para predecir un vector de movimiento de disparidad (por ejemplo, el segundo vector de movimiento, cuando el segundo vector de movimiento es un vector de movimiento de disparidad) puede estar inhabilitada. En dichos casos, el codificador de video puede identificar un predictor de vector de movimiento candidato diferente (212) (la rama NO de la etapa 214).
Si el codificador de video determina que la prediccion de vector de movimiento de disparidad esta habilitada (por ejemplo, o que la capacidad para habilitar/inhabilitar dicha funcion no esta presente), el codificador de video puede determinar un predictor de vector de movimiento para el segundo vector de movimiento, basandose en el primer vector de movimiento 206) (la rama SI de la etapa 214). Ademas, el codificador de video tambien puede codificar datos de prediccion para el segundo bloque mediante el predictor de vector de movimiento (208). Por ejemplo, el codificador de video puede usar el predictor de vector de movimiento en una modalidad de fusion o para generar un valor de MVD.
Tambien debe entenderse que las etapas mostradas y descritas con respecto a la FIG. 11 se proporcionan como un simple ejemplo. Es decir, las etapas del procedimiento de la FIG. 11 no tienen necesariamente que realizarse en el orden mostrado en la FIG. 11, pudiendose llevar a cabo un numero inferior de etapas adicionales o alternativas.
Debera entenderse que, segun el ejemplo, ciertos actos o sucesos de cualquiera de los procedimientos descritos en el presente documento pueden realizarse en una secuencia distinta, pueden anadirse, fusionarse u omitirse por completo (por ejemplo, no todos los actos o sucesos descritos son necesarios para la puesta en practica del procedimiento). Ademas, en ciertos ejemplos, los actos o sucesos pueden realizarse simultaneamente, por ejemplo, mediante el procesamiento multicolor, el procesamiento de interrupciones o multiples procesadores, en lugar de secuencial mente. Ademas, aunque ciertos aspectos de esta divulgacion se describen como si fueran realizados por un unico modulo o unidad con fines de claridad, deberfa entenderse que las tecnicas de esta divulgacion pueden
5
10
15
20
25
30
35
40
45
50
55
realizarse mediante una combinacion de unidades o modulos asociados con un codificador de video.
En uno o mas ejemplos, las funciones descritas pueden implementarse en hardware, software, firmware o cualquier combinacion de estos. Si se implementan en software, las funciones pueden almacenarse en un medio legible por ordenador y transmitirse como una o mas instrucciones o codigo, 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 comunicacion que incluyen cualquier medio que facilite la transferencia de un programa informatico de un lugar a otro, por ejemplo, de acuerdo con un protocolo de comunicacion.
De esta manera, los medios legibles por ordenador pueden corresponder en general a (1) unos medios de almacenamiento tangibles y legibles por ordenador que sean no transitorios o (2) un medio de comunicacion tal como una senal o una onda portadora. Los medios de almacenamiento de datos pueden ser cualquier medio disponible a los que se puede acceder desde uno o mas ordenadores o uno o mas procesadores para recuperar instrucciones, codigo y/o estructuras de datos para implementar las tecnicas descritas en esta divulgacion. Un producto de programa informatico puede incluir un medio legible por ordenador.
A modo de ejemplo, y no de manera limitativa, dichos medios de almacenamiento legibles por ordenador pueden comprender RAM, ROM, EEPROM, CD-ROM u otro almacenamiento de disco optico, almacenamiento de disco magnetico u otros dispositivos de almacenamiento magnetico, memoria flash o cualquier otro medio que pueda usarse para almacenar codigo de programa deseado en forma de instrucciones o estructuras de datos y al que pueda accederse mediante un ordenador. Ademas, cualquier conexion puede denominarse adecuadamente medio legible por ordenador. Por ejemplo, si las instrucciones se transmiten desde un sitio web, un servidor u otra fuente remota mediante un cable coaxial, un cable de fibra optica, un par trenzado, una linea de abonado digital (DSL) o tecnologias inalambricas tales como infrarrojos, radio y microondas, entonces el cable coaxial, el cable de fibra optica, el par trenzado, la DSL o las tecnologias inalambricas tales como infrarrojos, radio y microondas se incluyen en la definicion de medio.
Sin embargo, deberfa entenderse que los medios de almacenamiento legibles por ordenador y los medios de almacenamiento de datos no incluyen conexiones, ondas portadoras, senales u otros medios transitorios, sino que, en cambio, se refieren a medios de almacenamiento tangibles no transitorios. El termino disco en el presente documento incluye el disco compacto (CD), el disco de laser, el disco optico, el disco versatil digital (DVD), el disco flexible y el disco Blu-ray, de los cuales el disco flexible normalmente reproduce datos magnetica mente, mientras que el resto reproducen datos opticamente mediante laser. Las combinaciones de los anteriores tambien deberfan incluirse dentro del alcance de los medios legibles por ordenador.
Las instrucciones pueden ejecutarse mediante uno o mas procesadores, tales como uno o mas procesadores de senales digitales (DSP), microprocesadores para usos generales, circuitos integrados de aplicacion especffica (ASIC), formaciones logicas programables en el terreno (FPGA) u otros circuitos logicos integrados o discretos equivalentes. Por consiguiente, el termino "procesador" puede referirse en el presente documento a cualquiera de las estructuras anteriores o a cualquier otra estructura adecuada para la implementacion de las tecnicas descritas en el presente documento. Ademas, en algunos aspectos, las funciones descritas en el presente documento pueden proporcionarse dentro de hardware dedicado y/o modulos de software configurados para la codificacion y la decodificacion, o incorporarse en un codec combinado. Asimismo, las tecnicas podrfan implementarse por completo en uno o mas circuitos o elementos logicos.
Las tecnicas de la presente divulgacion se pueden implementar en una amplia variedad de dispositivos o aparatos, incluido un telefono inalambrico, un circuito integrado (CI) o un conjunto de CI (por ejemplo, un conjunto de chips). En la presente divulgacion se describen varios componentes, modulos o unidades para destacar aspectos funcionales de dispositivos configurados para realizar las tecnicas divulgadas, aunque estos no requieren necesariamente la realizacion mediante diferentes unidades de hardware. Mas bien, como se ha descrito anteriormente, pueden combinarse diversas unidades en una unidad de hardware de codec, o proporcionarse mediante un grupo de unidades de hardware interoperativas, que incluyen uno o mas procesadores como se ha descrito anteriormente, conjuntamente con software y/o firmware adecuado.
Se han descrito diversos aspectos de la divulgacion. Estos y otros aspectos estan dentro del alcance de las siguientes reivindicaciones.

Claims (6)

1.
5
10
15
20
25
2.
30
3.
35
4.
40
5.
45
6.
50 7.
55
60
REIVINDICACIONES
Un procedimiento de codificacion de datos de video, comprendiendo el procedimiento:
identificar (202) un primer bloque de datos de video en una primera posicion temporal de una primera vista, en el que el primer bloque de datos de video esta asociado con un primer vector de movimiento temporal; determinar (206) un predictor de vector de movimiento para un segundo vector de movimiento asociado con un segundo bloque de datos de video, en el que el segundo vector de movimiento es un vector de movimiento temporal y el segundo bloque es de una segunda vista que es diferente de la primera vista, en el que determinar el predictor del vector de movimiento comprende:
usar el primer vector de movimiento como el predictor de vector de movimiento, cuando un valor de recuento de orden de imagenes (POC) de una imagen de referencia del segundo vector de movimiento es igual a un valor de POC de una imagen de referencia del primer vector de movimiento y un valor de POC de una imagen objetivo del segundo vector de movimiento es igual a un valor de POC de una imagen objetivo del primer vector de movimiento; y
codificar (208) datos de prediccion para el segundo bloque mediante el predictor de vector de movimiento,
estando el procedimiento caracterizado por que
cuando un valor de POC de una imagen de referencia del vector de movimiento para el segundo bloque es diferente de un valor de POC de una imagen de referencia del primer vector de movimiento, escalar el primer vector de movimiento basandose en una diferencia en una distancia temporal entre el primer vector de movimiento temporal y el segundo vector de movimiento temporal, comprendiendo dicha distancia temporal una distancia de POC entre una imagen de referencia y una imagen objetivo del vector de movimiento temporal respectivo.
El procedimiento de la reivindicacion 1, en el que, cuando el segundo vector de movimiento no es un vector de movimiento temporal, inhabilitar una capacidad de determinar un predictor de vector de movimiento a partir del primer vector de movimiento.
El procedimiento de la reivindicacion 1, que comprende ademas ubicar el primer bloque identificando una ubicacion en una primera imagen que esta coubicada con una ubicacion del segundo bloque y que se ajusta de acuerdo con una disparidad entre el primer bloque de la primera vista y el segundo de la segunda vista.
El procedimiento de la reivindicacion 1, que comprende ademas crear una lista de candidatos que contiene datos que identifican una imagen que incluye el segundo bloque de datos de video y uno o mas bloques diferentes de datos de video.
El procedimiento de la reivindicacion 4,
en el que codificar los datos de prediccion comprende decodificar los datos de prediccion,
en el que decodificar los datos de prediccion comprende identificar, a partir de la lista de candidatos, la
imagen que incluye el segundo bloque de datos de video, mediante un indice para la lista de candidatos.
El procedimiento de la reivindicacion 1, en el que el segundo bloque esta en la misma ubicacion temporal que el primer bloque.
Un aparato para codificar datos de video, que comprende:
medios para identificar un primer bloque de datos de video en una primera ubicacion temporal de una primera vista, en el que el primer bloque de datos de video esta asociado con un primer vector de movimiento temporal;
medios para determinar un predictor de vector de movimiento para un segundo vector de movimiento asociado con un segundo bloque de datos de video, en el que el segundo vector de movimiento es un vector de movimiento temporal y el segundo bloque es de una segunda vista que es diferente de la primera vista, en el que los medios para determinar el predictor de vector de movimiento comprenden medios para usar el primer vector de movimiento como el predictor de vector de movimiento, cuando un valor de recuento de orden de imagenes (POC) de una imagen de referencia del segundo vector de movimiento es igual a un valor de POC de una imagen de referencia del primer vector de movimiento y un valor de POC de una imagen objetivo del segundo vector de movimiento es igual a un valor de POC de una imagen objetivo del primer vector de movimiento; y
medios para codificar datos de prediccion para el segundo bloque mediante el predictor de vector de
5
10 8
15 9
movimiento, estando el aparato caracterizado por que comprende
medios para escalar el primer vector de movimiento basandose en una diferencia en una distancia temporal entre el primer vector de movimiento temporal y el segundo vector de movimiento temporal, cuando un valor de POC de una imagen de referencia del vector de movimiento para el segundo bloque es diferente de un valor de POC de una imagen de referencia del primer vector de movimiento, comprendiendo dicha distancia temporal una distancia de POC entre una imagen de referencia y una imagen objetivo del vector de movimiento temporal respectivo.
El aparato de la reivindicacion 6, que comprende ademas medios para ubicar el primer bloque identificando una ubicacion en una primera imagen que esta coubicada con una ubicacion del bloque para el cual los datos de prediccion van a codificarse y que se ajusta de acuerdo con una disparidad entre el primer bloque de la primera vista y el bloque para el cual los datos de prediccion de la segunda vista van a codificarse.
Un medio de almacenamiento legible por ordenador que tiene instrucciones almacenadas en el mismo que, al ejecutarse, hacen que uno o mas procesadores realicen el procedimiento de acuerdo con cualquiera de las reivindicaciones 1 a 6.
ES12718013.1T 2011-04-20 2012-04-20 Predicción de vectores de movimiento en codificación de vídeo Active ES2633150T3 (es)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US201161477561P 2011-04-20 2011-04-20
US201161477561P 2011-04-20
US201161512765P 2011-07-28 2011-07-28
US201161512765P 2011-07-28
US201213451204 2012-04-19
US13/451,204 US9247249B2 (en) 2011-04-20 2012-04-19 Motion vector prediction in video coding
PCT/US2012/034516 WO2012145670A1 (en) 2011-04-20 2012-04-20 Motion vector prediction in video coding

Publications (1)

Publication Number Publication Date
ES2633150T3 true ES2633150T3 (es) 2017-09-19

Family

ID=47021330

Family Applications (1)

Application Number Title Priority Date Filing Date
ES12718013.1T Active ES2633150T3 (es) 2011-04-20 2012-04-20 Predicción de vectores de movimiento en codificación de vídeo

Country Status (15)

Country Link
US (3) US9485517B2 (es)
EP (2) EP2700227A1 (es)
JP (3) JP5805850B2 (es)
KR (2) KR101600154B1 (es)
CN (2) CN103650505B (es)
AU (1) AU2012245299B2 (es)
BR (1) BR112013026961A2 (es)
CA (1) CA2833302C (es)
ES (1) ES2633150T3 (es)
HU (1) HUE034333T2 (es)
IL (1) IL228804A (es)
MY (1) MY185037A (es)
SG (2) SG194058A1 (es)
TW (2) TWI543591B (es)
WO (2) WO2012145663A1 (es)

Families Citing this family (89)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8107535B2 (en) * 2003-06-10 2012-01-31 Rensselaer Polytechnic Institute (Rpi) Method and apparatus for scalable motion vector coding
EP3139611A1 (en) * 2011-03-14 2017-03-08 HFI Innovation Inc. Method and apparatus for deriving temporal motion vector prediction
JP5664762B2 (ja) * 2011-03-17 2015-02-04 富士通株式会社 動画像復号方法、動画像符号化方法、動画像復号装置及び動画像復号プログラム
US9485517B2 (en) 2011-04-20 2016-11-01 Qualcomm Incorporated Motion vector prediction with motion vectors from multiple views in multi-view video coding
BR112013031215B8 (pt) * 2011-06-10 2022-07-19 Mediatek Inc Método e aparelho de codificação escalável de vídeo
WO2012177052A2 (ko) 2011-06-21 2012-12-27 한국전자통신연구원 인터 예측 방법 및 그 장치
KR20120140592A (ko) 2011-06-21 2012-12-31 한국전자통신연구원 움직임 보상의 계산 복잡도 감소 및 부호화 효율을 증가시키는 방법 및 장치
KR102490375B1 (ko) 2011-06-28 2023-01-19 엘지전자 주식회사 움직임 벡터 리스트 설정 방법 및 이러한 방법을 사용하는 장치
WO2013001749A1 (ja) * 2011-06-29 2013-01-03 パナソニック株式会社 画像符号化方法、画像復号方法、画像符号化装置、画像復号装置および画像符号化復号装置
US11245912B2 (en) 2011-07-12 2022-02-08 Texas Instruments Incorporated Fast motion estimation for hierarchical coding structures
US9819963B2 (en) 2011-07-12 2017-11-14 Electronics And Telecommunications Research Institute Inter prediction method and apparatus for same
CN103650496B (zh) * 2011-07-12 2018-09-21 华为技术有限公司 用于在hevc中编码的基于像素的帧内预测
CN103765886B (zh) * 2011-08-29 2017-06-13 苗太平洋控股有限公司 以amvp模式产生预测区块的方法
US10165267B2 (en) * 2011-08-30 2018-12-25 Intel Corporation Multiview video coding schemes
KR20130030181A (ko) * 2011-09-16 2013-03-26 한국전자통신연구원 움직임 벡터 예측기를 이용한 움직임 벡터 부호화/복호화 방법 및 장치
WO2013055148A2 (ko) * 2011-10-12 2013-04-18 엘지전자 주식회사 영상 인코딩 방법 및 디코딩 방법
JP5768662B2 (ja) * 2011-10-31 2015-08-26 富士通株式会社 動画像復号装置、動画像符号化装置、動画像復号方法、動画像符号化方法、動画像復号プログラム及び動画像符号化プログラム
US9571833B2 (en) * 2011-11-04 2017-02-14 Nokia Technologies Oy Method for coding and an apparatus
EP3657796A1 (en) * 2011-11-11 2020-05-27 GE Video Compression, LLC Efficient multi-view coding using depth-map estimate for a dependent view
KR101662918B1 (ko) 2011-11-11 2016-10-05 지이 비디오 컴프레션, 엘엘씨 깊이-맵 추정 및 업데이트를 사용한 효율적인 멀티-뷰 코딩
EP2781091B1 (en) 2011-11-18 2020-04-08 GE Video Compression, LLC Multi-view coding with efficient residual handling
RU2628226C2 (ru) 2011-12-16 2017-08-15 Сан Пэтент Траст Способ кодирования видеоизображений, устройство кодирования видеоизображений, способ декодирования видеоизображений, устройство декодирования видеоизображений и устройство кодирования/декодирования видеоизображений
BR122020017172B1 (pt) * 2012-01-19 2022-11-29 Electronics And Telecommunications Research Institute Aparelho de decodificação de imagem
US9729873B2 (en) 2012-01-24 2017-08-08 Qualcomm Incorporated Video coding using parallel motion estimation
US9525861B2 (en) 2012-03-14 2016-12-20 Qualcomm Incorporated Disparity vector prediction in video coding
US9445076B2 (en) 2012-03-14 2016-09-13 Qualcomm Incorporated Disparity vector construction method for 3D-HEVC
US10200709B2 (en) 2012-03-16 2019-02-05 Qualcomm Incorporated High-level syntax extensions for high efficiency video coding
US9503720B2 (en) 2012-03-16 2016-11-22 Qualcomm Incorporated Motion vector coding and bi-prediction in HEVC and its extensions
US9549180B2 (en) 2012-04-20 2017-01-17 Qualcomm Incorporated Disparity vector generation for inter-view prediction for video coding
JP6361847B2 (ja) * 2012-05-02 2018-07-25 サン パテント トラスト 画像符号化方法、画像復号方法、画像符号化装置および画像復号装置
WO2013176485A1 (ko) * 2012-05-22 2013-11-28 엘지전자 주식회사 비디오 신호 처리 방법 및 장치
CN104429074B (zh) * 2012-06-28 2018-11-30 寰发股份有限公司 3d视频编码中视差矢量导出的方法和装置
US9325990B2 (en) 2012-07-09 2016-04-26 Qualcomm Incorporated Temporal motion vector prediction in video coding extensions
PL400344A1 (pl) * 2012-08-13 2014-02-17 Politechnika Poznanska Sposób wyznaczania predyktora wektora ruchu
US20140071235A1 (en) * 2012-09-13 2014-03-13 Qualcomm Incorporated Inter-view motion prediction for 3d video
WO2014047351A2 (en) 2012-09-19 2014-03-27 Qualcomm Incorporated Selection of pictures for disparity vector derivation
MY186413A (en) * 2012-09-28 2021-07-22 Sony Corp Image processing device and method
US9264691B2 (en) * 2012-09-28 2016-02-16 Mitsubishi Electric Research Laboratories, Inc. Method and system for backward 3D-view synthesis prediction using neighboring blocks
US9253486B2 (en) * 2012-09-28 2016-02-02 Mitsubishi Electric Research Laboratories, Inc. Method and system for motion field backward warping using neighboring blocks in videos
US10075728B2 (en) * 2012-10-01 2018-09-11 Inria Institut National De Recherche En Informatique Et En Automatique Method and device for motion information prediction refinement
KR102379609B1 (ko) 2012-10-01 2022-03-28 지이 비디오 컴프레션, 엘엘씨 향상 레이어 모션 파라미터들에 대한 베이스-레이어 힌트들을 이용한 스케일러블 비디오 코딩
KR101706318B1 (ko) * 2012-10-03 2017-02-15 에이치에프아이 이노베이션 인크. 3차원 비디오 코딩을 위한 모션 데이터 버퍼 감소 방법 및 장치
CN102883163B (zh) 2012-10-08 2014-05-28 华为技术有限公司 用于运动矢量预测的运动矢量列表建立的方法、装置
EP2907311A4 (en) * 2012-10-09 2016-08-24 Mediatek Inc METHOD AND DEVICE FOR PREDICTING AND ASSUMING MOTION DATA IN VIDEO CODING
KR101721345B1 (ko) * 2012-11-06 2017-03-29 닛본 덴끼 가부시끼가이샤 영상 부호화 방법, 영상 부호화 장치 및 영상 부호화 프로그램
US9819965B2 (en) * 2012-11-13 2017-11-14 Intel Corporation Content adaptive transform coding for next generation video
US10334259B2 (en) 2012-12-07 2019-06-25 Qualcomm Incorporated Advanced residual prediction in scalable and multi-view video coding
US9544566B2 (en) * 2012-12-14 2017-01-10 Qualcomm Incorporated Disparity vector derivation
US9674542B2 (en) * 2013-01-02 2017-06-06 Qualcomm Incorporated Motion vector prediction for video coding
CN104737542B (zh) 2013-01-30 2018-09-25 英特尔公司 用于下一代视频的内容自适应熵编码
US10616607B2 (en) * 2013-02-25 2020-04-07 Lg Electronics Inc. Method for encoding video of multi-layer structure supporting scalability and method for decoding same and apparatus therefor
US9800857B2 (en) * 2013-03-08 2017-10-24 Qualcomm Incorporated Inter-view residual prediction in multi-view or 3-dimensional video coding
US9609347B2 (en) * 2013-04-04 2017-03-28 Qualcomm Incorporated Advanced merge mode for three-dimensional (3D) video coding
US9930363B2 (en) 2013-04-12 2018-03-27 Nokia Technologies Oy Harmonized inter-view and view synthesis prediction for 3D video coding
US9800895B2 (en) * 2013-06-27 2017-10-24 Qualcomm Incorporated Depth oriented inter-view motion vector prediction
WO2015006922A1 (en) * 2013-07-16 2015-01-22 Mediatek Singapore Pte. Ltd. Methods for residual prediction
US10129560B2 (en) 2013-07-18 2018-11-13 Lg Electronics Inc. Method and apparatus for processing video signal
US9426465B2 (en) * 2013-08-20 2016-08-23 Qualcomm Incorporated Sub-PU level advanced residual prediction
US9832479B2 (en) * 2013-10-04 2017-11-28 Ati Technologies Ulc Motion estimation apparatus and method for multiview video
US10110895B2 (en) * 2013-12-13 2018-10-23 Qualcomm Incorporated Signaling of simplified depth coding (SDC) for depth intra- and inter-prediction modes in 3D video coding
US9967592B2 (en) * 2014-01-11 2018-05-08 Qualcomm Incorporated Block-based advanced residual prediction for 3D video coding
EP3122050A4 (en) * 2014-03-20 2017-12-13 LG Electronics Inc. 3d video encoding/decoding method and device
US9894370B2 (en) 2014-03-24 2018-02-13 Qualcomm Incorporated Generic use of HEVC SEI messages for multi-layer codecs
CN105208396B (zh) * 2014-06-20 2019-01-15 联想(北京)有限公司 一种视频帧的编码及解码方法和装置
KR101936663B1 (ko) * 2014-06-26 2019-01-09 후아웨이 테크놀러지 컴퍼니 리미티드 고효율 비디오 코딩 중 계산 부하의 경감 방법 및 장치
US9924191B2 (en) * 2014-06-26 2018-03-20 Qualcomm Incorporated Filters for advanced residual prediction in video coding
CN107005708A (zh) * 2014-09-26 2017-08-01 Vid拓展公司 使用时间块向量预测的块内复制译码
US10455231B2 (en) * 2014-09-30 2019-10-22 Hfi Innovation Inc. Method of adaptive motion vector resolution for video coding
US9992512B2 (en) * 2014-10-06 2018-06-05 Mediatek Inc. Method and apparatus for motion vector predictor derivation
KR102466902B1 (ko) * 2014-10-31 2022-11-14 삼성전자주식회사 움직임 벡터 부복호화 방법 및 장치
US10602176B2 (en) * 2016-04-15 2020-03-24 Google Llc Coding interpolation filter type
CN116708783A (zh) * 2016-07-12 2023-09-05 韩国电子通信研究院 图像编码/解码方法以及用于该方法的记录介质
US11496747B2 (en) * 2017-03-22 2022-11-08 Qualcomm Incorporated Intra-prediction mode propagation
CN109089119B (zh) * 2017-06-13 2021-08-13 浙江大学 一种运动矢量预测的方法及设备
US10687077B2 (en) * 2017-06-26 2020-06-16 Qualcomm Incorporated Motion information propagation in video coding
US11082702B2 (en) 2017-07-03 2021-08-03 Lg Electronics Inc. Inter prediction mode-based image processing method and device therefor
WO2019054736A1 (ko) * 2017-09-12 2019-03-21 삼성전자주식회사 움직임 정보의 부호화 및 복호화 방법, 및 움직임 정보의 부호화 및 복호화 장치
KR20230135157A (ko) * 2017-09-19 2023-09-22 삼성전자주식회사 움직임 정보의 부호화 및 복호화 방법, 및 움직임 정보의 부호화 및 복호화 장치
US10856003B2 (en) * 2017-10-03 2020-12-01 Qualcomm Incorporated Coding affine prediction motion information for video coding
CN117294837A (zh) 2018-04-02 2023-12-26 深圳市大疆创新科技有限公司 用于图像处理的方法和图像处理装置
WO2019195829A1 (en) * 2018-04-06 2019-10-10 Arris Enterprises Llc Reducing motion vector information transmission in bi-directional temporal prediction
US10587885B2 (en) * 2018-06-04 2020-03-10 Tencent America LLC Method and apparatus for merge mode with additional middle candidates in video coding
US10638145B2 (en) * 2018-06-19 2020-04-28 Novatek Microelectronics Corp. Video encoding apparatus and operating method thereof
CN111107354A (zh) 2018-10-29 2020-05-05 华为技术有限公司 一种视频图像预测方法及装置
WO2020125754A1 (en) * 2018-12-21 2020-06-25 Beijing Bytedance Network Technology Co., Ltd. Motion vector derivation using higher bit-depth precision
JP7343097B2 (ja) 2018-12-29 2023-09-12 エスゼット ディージェイアイ テクノロジー カンパニー リミテッド 動画処理方法、装置、およびコンピュータプログラム
CA3152728A1 (en) * 2019-10-03 2021-04-08 Han GAO Coding process for geometric partition mode
AU2021201606A1 (en) * 2020-01-14 2022-08-11 Huawei Technologies Co., Ltd. Method and apparatus of signaling the number of candidates for merge mode
WO2021203039A1 (en) * 2020-04-03 2021-10-07 Beijing Dajia Internet Information Technology Co., Ltd. Methods and devices for high-level syntax in video coding

Family Cites Families (47)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE4344924A1 (de) 1993-12-30 1995-08-10 Thomson Brandt Gmbh Verfahren und Vorrichtung zur Bewegungsschätzung
JP2004023458A (ja) 2002-06-17 2004-01-22 Toshiba Corp 動画像符号化/復号化方法及び装置
KR100584603B1 (ko) 2004-08-03 2006-05-30 학교법인 대양학원 다시점 영상의 다이렉트 모드 움직임 예측 방법 및 장치
US20070014346A1 (en) 2005-07-13 2007-01-18 Nokia Corporation Coding dependency indication in scalable video coding
CN101253774B (zh) 2005-07-18 2011-04-06 韩国电子通信研究院 使用视角时间参考图像缓冲器的预测编码/解码装置及使用其的方法
US8644386B2 (en) 2005-09-22 2014-02-04 Samsung Electronics Co., Ltd. Method of estimating disparity vector, and method and apparatus for encoding and decoding multi-view moving picture using the disparity vector estimation method
KR101276720B1 (ko) 2005-09-29 2013-06-19 삼성전자주식회사 카메라 파라미터를 이용하여 시차 벡터를 예측하는 방법,그 방법을 이용하여 다시점 영상을 부호화 및 복호화하는장치 및 이를 수행하기 위한 프로그램이 기록된 기록 매체
WO2007037645A1 (en) * 2005-09-29 2007-04-05 Samsung Electronics Co., Ltd. Method of estimating disparity vector using camera parameters, apparatus for encoding and decoding multi-view picture using the disparity vectors estimation method, and computer-redadable recording medium storing a program for executing the method
ZA200805337B (en) 2006-01-09 2009-11-25 Thomson Licensing Method and apparatus for providing reduced resolution update mode for multiview video coding
WO2007081176A1 (en) 2006-01-12 2007-07-19 Lg Electronics Inc. Processing multiview video
CN101895744B (zh) 2006-01-12 2013-03-20 Lg电子株式会社 处理多视图视频
EP2005752A4 (en) 2006-03-30 2010-06-09 Lg Electronics Inc METHOD AND APPARATUS FOR DECODING / ENCODING A VIDEO SIGNAL
WO2008005575A2 (en) 2006-07-06 2008-01-10 Thomson Licensing Method and apparatus for decoupling frame number and/or picture order count (poc) for multi-view video encoding and decoding
TWI344792B (en) 2006-07-12 2011-07-01 Lg Electronics Inc A method and apparatus for processing a signal
US8179969B2 (en) 2006-08-18 2012-05-15 Gwangju Institute Of Science And Technology Method and apparatus for encoding or decoding frames of different views in multiview video using global disparity
KR101031624B1 (ko) 2006-09-20 2011-04-27 니폰덴신뎅와 가부시키가이샤 화상 부호화 방법 및 복호 방법, 그 장치 및 그 프로그램을 기록한 기억매체
CN101653000B (zh) 2006-10-13 2013-01-02 汤姆逊许可公司 用于包含多视点视频编码的参考图像管理的方法
CA2858458C (en) 2006-10-16 2019-04-16 Nokia Corporation System and method for implementing efficient decoded buffer management in multi-view video coding
AU2007309634A1 (en) 2006-10-24 2008-05-02 Thomson Licensing Picture management for multi-view video coding
JP4999859B2 (ja) 2006-10-30 2012-08-15 日本電信電話株式会社 予測参照情報生成方法、動画像符号化及び復号方法、それらの装置、及びそれらのプログラム並びにプログラムを記録した記憶媒体
JP4999860B2 (ja) 2006-10-30 2012-08-15 日本電信電話株式会社 動画像符号化方法及び復号方法、それらの装置、及びそれらのプログラム並びにプログラムを記録した記憶媒体
JP5023739B2 (ja) 2007-02-28 2012-09-12 ソニー株式会社 画像情報符号化装置及び符号化方法
JP2010520697A (ja) 2007-03-02 2010-06-10 エルジー エレクトロニクス インコーポレイティド ビデオ信号のデコーディング/エンコーディング方法及び装置
JP5303556B2 (ja) * 2007-08-06 2013-10-02 トムソン ライセンシング 複数のインタービュー参照ピクチャを用いたモーションスキップモードのための方法及び装置
JP5646994B2 (ja) * 2007-08-15 2014-12-24 トムソン ライセンシングThomson Licensing 多視点符号化ビデオにおける領域視差ベクトルを使用したモーションスキップモードのための方法及び装置
WO2009051419A2 (en) 2007-10-16 2009-04-23 Lg Electronics Inc. A method and an apparatus for processing a video signal
KR101385884B1 (ko) * 2008-01-30 2014-04-16 고려대학교 산학협력단 다시점 동영상의 부호화 및 복호화 방법 및 장치
EP2266318B1 (en) 2008-03-19 2020-04-22 Nokia Technologies Oy Combined motion vector and reference index prediction for video coding
JP5346076B2 (ja) * 2008-04-25 2013-11-20 トムソン ライセンシング 奥行きを用いた視点間スキップモード
US20100086063A1 (en) 2008-10-02 2010-04-08 Apple Inc. Quality metrics for coded video using just noticeable difference models
WO2010043773A1 (en) 2008-10-17 2010-04-22 Nokia Corporation Sharing of motion vector in 3d video coding
WO2010086500A1 (en) 2009-01-28 2010-08-05 Nokia Corporation Method and apparatus for video coding and decoding
US20100246683A1 (en) 2009-03-27 2010-09-30 Jennifer Lois Harmon Webb Error Resilience in Video Decoding
JP5429034B2 (ja) * 2009-06-29 2014-02-26 ソニー株式会社 立体画像データ送信装置、立体画像データ送信方法、立体画像データ受信装置および立体画像データ受信方法
US9060176B2 (en) 2009-10-01 2015-06-16 Ntt Docomo, Inc. Motion vector prediction in video coding
KR101768207B1 (ko) 2010-01-19 2017-08-16 삼성전자주식회사 축소된 예측 움직임 벡터의 후보들에 기초해 움직임 벡터를 부호화, 복호화하는 방법 및 장치
US9300943B2 (en) 2011-01-12 2016-03-29 Panasonic Intellectual Property Corporation Of America Image coding method, image decoding method, image coding apparatus, and image decoding apparatus
US20120189060A1 (en) * 2011-01-20 2012-07-26 Industry-Academic Cooperation Foundation, Yonsei University Apparatus and method for encoding and decoding motion information and disparity information
US9749657B2 (en) 2011-01-21 2017-08-29 Sharp Kabushiki Kaisha Buffer compression for motion vector competition
KR20120095610A (ko) 2011-02-21 2012-08-29 삼성전자주식회사 다시점 비디오의 부호화 방법 및 장치, 그 복호화 방법 및 장치
JP5664762B2 (ja) 2011-03-17 2015-02-04 富士通株式会社 動画像復号方法、動画像符号化方法、動画像復号装置及び動画像復号プログラム
KR20120118780A (ko) 2011-04-19 2012-10-29 삼성전자주식회사 다시점 비디오의 움직임 벡터 부호화 방법 및 장치, 그 복호화 방법 및 장치
US9485517B2 (en) 2011-04-20 2016-11-01 Qualcomm Incorporated Motion vector prediction with motion vectors from multiple views in multi-view video coding
US9736472B2 (en) 2011-08-19 2017-08-15 Telefonaktiebolaget Lm Ericsson (Publ) Motion vector processing
KR20170005464A (ko) 2011-08-30 2017-01-13 노키아 테크놀로지스 오와이 비디오 코딩 및 디코딩을 위한 장치, 방법 및 컴퓨터 프로그램
US10200709B2 (en) 2012-03-16 2019-02-05 Qualcomm Incorporated High-level syntax extensions for high efficiency video coding
US9503720B2 (en) 2012-03-16 2016-11-22 Qualcomm Incorporated Motion vector coding and bi-prediction in HEVC and its extensions

Also Published As

Publication number Publication date
KR20140018967A (ko) 2014-02-13
CN103650505A (zh) 2014-03-19
CN103503460A (zh) 2014-01-08
RU2013151612A (ru) 2015-05-27
EP2700228B1 (en) 2017-04-12
KR101600154B1 (ko) 2016-03-14
JP2014514862A (ja) 2014-06-19
WO2012145670A1 (en) 2012-10-26
SG194058A1 (en) 2013-11-29
US20130272408A1 (en) 2013-10-17
CA2833302A1 (en) 2012-10-26
EP2700227A1 (en) 2014-02-26
IL228804A (en) 2016-11-30
MY185037A (en) 2021-04-30
JP2014514861A (ja) 2014-06-19
TW201249215A (en) 2012-12-01
EP2700228A1 (en) 2014-02-26
AU2012245299B2 (en) 2015-12-24
TWI526055B (zh) 2016-03-11
JP2016026435A (ja) 2016-02-12
JP5805849B2 (ja) 2015-11-10
US20120269270A1 (en) 2012-10-25
JP6552923B2 (ja) 2019-07-31
KR101658694B1 (ko) 2016-09-21
BR112013026961A2 (pt) 2017-01-10
US9485517B2 (en) 2016-11-01
IL228804A0 (en) 2013-12-31
US9247249B2 (en) 2016-01-26
HUE034333T2 (en) 2018-02-28
SG10201602588RA (en) 2016-05-30
WO2012145663A1 (en) 2012-10-26
KR20140018968A (ko) 2014-02-13
US9584823B2 (en) 2017-02-28
TW201249214A (en) 2012-12-01
US20120269271A1 (en) 2012-10-25
TWI543591B (zh) 2016-07-21
CN103503460B (zh) 2017-08-25
CA2833302C (en) 2018-07-03
CN103650505B (zh) 2018-01-23
AU2012245299A1 (en) 2013-10-24
JP5805850B2 (ja) 2015-11-10

Similar Documents

Publication Publication Date Title
ES2633150T3 (es) Predicción de vectores de movimiento en codificación de vídeo
ES2755573T3 (es) Predicción de vector de movimiento temporal avanzada basada en unidades de subpredicción
ES2841312T3 (es) Predicción de vectores de movimiento para modelos de movimiento afines en codificación de vídeo
ES2736280T3 (es) Simplificaciones en la obtención de vectores de disparidad y la predicción de vectores de movimiento en codificación de vídeo 3D
ES2742026T3 (es) Determinación de vector de movimiento para codificación de vídeo
ES2900029T3 (es) Derivación de vector de movimiento en codificación de vídeo
ES2875418T3 (es) Acceso aleatorio regional en vídeo de 360 grados
ES2620432T3 (es) Compensación de luminancia adaptativa en la codificación de vídeo tridimensional
ES2638416T3 (es) Predicción residual avanzada (ARP) más precisa para la codificación de texturas
ES2753958T3 (es) Predicción de vector de movimiento temporal basada en subunidad de predicción (PU) en la HEVC y diseño de sub-PU en la 3D-HEVC
ES2900751T3 (es) Extensiones de sintaxis de alto nivel para codificación de vídeo de alta eficacia
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
ES2841986T3 (es) Identificación de bloques usando vector de disparidad en la codificación de vídeo
ES2732013T3 (es) Predicción de vector de movimiento temporal basada en subunidad de predicción (PU) en la HEVC y diseño de sub-PU en la 3d-hevc
ES2895270T3 (es) Codificación de mensajes SEI de MCTS-EIS de una unidad de acceso
ES2869854T3 (es) Unificar copia intrabloque e interpredicción
ES2625821T3 (es) Simplificación de decisión de modo para predicción intra
ES2892479T3 (es) Modo de predicción ponderada para codificación de video escalable
ES2704885T3 (es) Derivación del vector de disparidad de bloque vecino en codificación de vídeo 3D
ES2799323T3 (es) Técnicas de codificación de vídeo usando particionamiento de movimiento asimétrica
ES2750957T3 (es) Señalización de predictores de paleta con código de longitud de ejecución para codificación de vídeo
ES2842109T3 (es) Predicción residual avanzada basada en bloques para la codificación de vídeo 3D
ES2613136T3 (es) Señalización condicional de información de temporización de recuento del orden de imágenes para la temporización de vídeo en la codificación de vídeo
ES2874848T3 (es) Restricción de unidades de predicción en segmentos b a interpredicción unidireccional