ES2906238T3 - Predicción de movimiento avanzada simplificada para 3D-HEVC - Google Patents

Predicción de movimiento avanzada simplificada para 3D-HEVC Download PDF

Info

Publication number
ES2906238T3
ES2906238T3 ES13889840T ES13889840T ES2906238T3 ES 2906238 T3 ES2906238 T3 ES 2906238T3 ES 13889840 T ES13889840 T ES 13889840T ES 13889840 T ES13889840 T ES 13889840T ES 2906238 T3 ES2906238 T3 ES 2906238T3
Authority
ES
Spain
Prior art keywords
sub
current
motion
motion parameters
block
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
ES13889840T
Other languages
English (en)
Inventor
Li Zhang
Ying Chen
Vijayaraghavan Thirumalai
Hongbin Liu
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 ES2906238T3 publication Critical patent/ES2906238T3/es
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/597Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding specially adapted for multi-view video sequence encoding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/513Processing of motion vectors
    • H04N19/517Processing of motion vectors by encoding
    • H04N19/52Processing of motion vectors by encoding by predictive encoding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/96Tree coding, e.g. quad-tree coding

Landscapes

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

Abstract

Un método para decodificar datos de vídeo multivista, comprendiendo el método: dividir (348) una unidad de predicción actual, PU, en una pluralidad de sub-PU, en la que la PU actual está en una imagen actual; determinar (350) parámetros de movimiento predeterminados, en los que los parámetros de movimiento predeterminados incluyen un vector de movimiento predeterminado y un índice de referencia predeterminado, y en los que determinar los parámetros de movimiento predeterminados comprende: cuando un bloque de referencia intervista correspondiente a una sub-PU más próxima a un píxel central de un bloque de predicción de luminancia de la PU actual no tiene parámetros de movimiento disponibles, cuando una primera sub-PU de la PU actual en un orden de exploración de trama no tiene parámetros de movimiento disponibles y cuando un bloque de referencia intervista para una primera sub-PU de una fila de las sub-PU que incluye la sub-PU respectiva se codifica utilizando la predicción con compensación de movimiento para que tenga parámetros de movimiento disponibles, establecer los parámetros de movimiento predeterminados como los parámetros de movimiento disponibles de la primera sub-PU de la fila de las sub-PU que incluye la sub-PU respectiva; procesar las sub-PU de la pluralidad de sub-PU en un orden particular, en el que un bloque de referencia para al menos una de las sub-PU no se codifica utilizando la predicción con compensación de movimiento, y en el que procesar las sub-PU comprende, para cada sub-PU respectiva de la pluralidad de sub-PU: determinar (356) un bloque de referencia para la sub-PU respectiva, en el que una imagen de referencia incluye el bloque de referencia para la sub-PU respectiva; si el bloque de referencia para la sub-PU respectiva se codifica utilizando la predicción con compensación de movimiento, establecer (360) un candidato de parámetros de movimiento de la sub-PU respectiva basándose en parámetros de movimiento del bloque de referencia para la sub-PU respectiva; y si el bloque de referencia para la sub-PU respectiva no se codifica utilizando la predicción con compensación de movimiento, establecer (362) el candidato parámetros de movimiento de la sub-PU respectiva como los parámetros de movimiento predeterminados; incluir (366) los parámetros de movimiento establecidos para cada sub-PU de la pluralidad de las sub-PU como un candidato en una lista de candidatos de la PU actual; obtener, desde un flujo de bits, un elemento de sintaxis que indica un candidato seleccionado en la lista de candidatos; y utilizar parámetros de movimiento del candidato seleccionado para reconstruir un bloque predictivo para la PU actual.

Description

DESCRIPCIÓN
Predicción de movimiento avanzada simplificada para 3D-HEVC
CAMPO TÉCNICO
La presente invención se refiere la codificación y decodificación de vídeo.
ESTADO DE LA TÉCNICA ANTERIOR
Las capacidades de vídeo digital pueden incorporarse en una amplia diversidad de dispositivos, incluyendo televisores digitales, sistemas digitales de difusión directa, sistemas inalámbricos de difusión, asistentes personales digitales (PDA), ordenadores portátiles o de sobremesa, tabletas, lectores e-book, cámaras digitales, dispositivos digitales de grabación, reproductores digitales de medios, dispositivos de videojuegos, consolas de videojuegos, radioteléfonos celulares o por satélite, los llamados "teléfonos inteligentes", dispositivos de vídeo teleconferencia, dispositivos de streaming de vídeo, y similares. Los dispositivos digitales de vídeo implementan técnicas de compresión de vídeo, tales como las descritas en los estándares definidos por MPEG-2, MPe G-4, ITU-T H.263, ITU-T H.264/MPEG-4, Parte 10, Codificación Avanzada de Vídeo (AVC), el estándar de Codificación de Vídeo de Alta Eficiencia (HEVC) actualmente en desarrollo y extensiones de tales estándares. Los dispositivos de vídeo pueden transmitir, recibir, codificar, decodificar y/o almacenar información digital de vídeo con mayor eficiencia al implementar tales técnicas de compresión de vídeo.
Las técnicas de compresión de vídeo realizan una predicción espacial (intra-imagen) y/o una predicción temporal (inter-imagen) para reducir o eliminar la redundancia inherente en secuencias de vídeo. Para una codificación de vídeo basada en bloques, un segmento de vídeo (es decir, un cuadro de vídeo o una parte de un cuadro de vídeo) puede dividirse en bloques de vídeo. Los bloques de vídeo en un segmento intracodificado (I) de una imagen se codifican utilizando una predicción espacial con respecto a muestras de referencia en bloques contiguos en la misma imagen. Los bloques de vídeo en un segmento intercodificado (P o B) de una imagen pueden utilizar predicción espacial con respecto a muestras de referencia en bloques contiguos en la misma imagen o una predicción temporal con respecto a muestras de referencia en otras imágenes de referencia. Puede hacerse referencia a las imágenes como cuadros, y puede hacerse referencia a las imágenes de referencia como cuadros de referencia.
La predicción espacial o temporal da como resultado un bloque predictivo para un bloque que va a codificarse. Los datos residuales representan diferencias de píxeles entre el bloque original que va a codificarse y el bloque predictivo. Un bloque intercodificado se codifica de acuerdo con un vector de movimiento que apunta a un bloque de muestras de referencia que forman el bloque predictivo, y los datos residuales indican la diferencia entre el bloque codificado y el bloque predictivo. Un bloque intracodificado se codifica de acuerdo con un modo de intracodificación y los datos residuales. Para una compresión adicional, los datos residuales pueden transformarse desde el dominio de píxel a un dominio de transformación, dando como resultado coeficientes residuales, que después pueden cuantificarse. Los coeficientes cuantificados, dispuestos inicialmente en una matriz bidimensional, pueden escanearse a fin de producir un vector unidimensional de coeficientes y puede aplicarse la codificación de entropía para conseguir una compresión incluso mayor.
Puede generarse un flujo de bits de codificación multivista codificando vistas, por ejemplo, desde múltiples perspectivas. Se han desarrollado algunos estándares de vídeo tridimensional (3D) que hacen uso de aspectos de codificación multivista. Por ejemplo, vistas diferentes pueden transmitir vistas del ojo izquierdo y del derecho para admitir vídeo 3D. Como alternativa, algunos procesos de codificación de vídeo 3D pueden aplicar la denominada codificación multivista de más profundidad. En codificación multivista de más profundidad, un flujo de bits de vídeo 3D puede contener no solo componentes de vista de textura, sino también componentes de vista de profundidad. Por ejemplo, cada vista puede comprender un componente de vista de textura y un componente de vista de profundidad.
AN J et al, "3D-CE3.h related: Sub-PU level inter-view motion prediction (Relacionado con 3D-CE3.h: Predicción de movimiento intervista de nivel Sub-PU)", 5. Encuentro JCT-3V, del 27-7-13 al 2-8-13, Viena, da a conocer una modificación a una disposición para determinar un candidato de fusión temporal intervista para una unidad de predicción en la que la unidad de predicción está dividida en varias subunidades de predicción, se determina un bloque de referencia para cada una de las subunidades de predicción y se determinan candidatos de fusión temporal intervista para la unidad de predicción correspondientes a cualquier información de movimiento para cualquiera de los bloques de referencia asociados con las subunidades de predicción. Esta divulgación puede leerse en el contexto de Tech G et al, "3D-HEVC Test Model 4 ("Modelo de prueba 4 de 3D-HEVC)", 4, Encuentro JCT-3V, del 20-4-2013 al 26-4-2013, Incheon. T-D Chuang et al, "MVP and merge candidate initialization", 100. Encuentro MPEG, del 30-4-2012 al 4-5-2012, Ginebra, se refiere a HEVC que utiliza un número fijo (por ejemplo dos) de candidatos MVP y un número fijo (por ejemplo cinco) de candidatos de fusión. También se indica que, en algunos casos, pueden no utilizarse uno o más de los candidatos y que esto podría dar como resultado un error si se hace un intento de utilizar un candidato no existente. La propuesta en la publicación es fijar todos los candidatos a un valor inicial para que siempre haya el número correcto de candidatos.
SUMARIO
En general, esta divulgación se refiere a una codificación de vídeo tridimensional (3D) basada en códecs avanzados, incluyendo técnicas de codificación de profundidad. Por ejemplo, algunas de las técnicas de esta divulgación se refieren a una predicción avanzada de movimiento para codificación de vídeo tridimensional de alta eficiencia (3D-HEVC, del inglés 3-dimensional High Efficiency Video Coding). En algunos ejemplos, un codificador de vídeo determina un candidato para su inclusión en una lista de candidatos para una unidad de predicción actual (PU). El candidato se basa en parámetros de movimiento de una pluralidad de sub-PU de la PU actual. Cuando se genera el candidato, el codificador de vídeo puede procesar las sub-PU en un orden particular, tal como un orden de exploración de trama. Si un bloque de referencia correspondiente a una sub-PU no se codifica utilizando la predicción con compensación de movimiento, el codificador de vídeo establece los parámetros de movimiento de la sub-PU en los parámetros de movimiento predeterminados. Para cada sub-PU respectiva de la pluralidad de las sub-PU, si un bloque de referencia para la sub-PU respectiva no se codifica utilizando la predicción con compensación de movimiento, los parámetros de movimiento de la sub-PU respectiva no se establecen en respuesta a una determinación posterior de que un bloque de referencia para cualquier sub-PU posterior en el orden se codifica utilizando la predicción con compensación de movimiento.
La invención se define en las reivindicaciones independientes adjuntas. En las reivindicaciones dependientes se definen características adicionales.
Los detalles de uno o más ejemplos de la divulgación se exponen en los dibujos adjuntos y en la posterior descripción. Otras características, objetos y ventajas serán evidentes a partir de la descripción, los dibujos y las reivindicaciones.
BREVE DESCRIPCIÓN DE LAS FIGURAS
La figura 1 es un diagrama de bloques que ilustra un sistema de codificación de vídeo de ejemplo que puede utilizar las técnicas descritas en esta divulgación.
La figura 2 es un diagrama conceptual que ilustra ejemplos de modos de intrapredicción en codificación de vídeo de alta eficiencia (HEVC, del inglés High Efficiency Video Coding).
La figura 3 es un diagrama conceptual que ilustra ejemplos de bloques espacialmente contiguos en relación con un bloque actual.
La figura 4 es un diagrama conceptual que ilustra un ejemplo de orden de decodificación multivista.
La figura 5 es un diagrama conceptual que ilustra un ejemplo de estructura de predicción para codificación multivista. La figura 6 es un diagrama conceptual que ilustra un ejemplo de bloques temporales contiguos en la derivación del vector de disparidad basado en bloques contiguos (NBDv , del inglés Blocks Based Disparity Vector).
La figura 7 es un diagrama conceptual que ilustra una derivación de bloque de profundidad a partir de una vista de referencia para realizar predicción inversa de síntesis de vistas (BVSP).
La figura 8 es un diagrama conceptual que ilustra una derivación de ejemplo de un candidato predicho de vector de movimiento intervista para un modo de fusión/omisión.
La figura 9 es una tabla que indica un ejemplo de especificación de 10CandIdx y 11CandIdx en 3D-HEVC.
La figura 10 es un diagrama conceptual que ilustra una derivación de ejemplo de un candidato de herencia de vector de movimiento para codificación de profundidad.
La figura 11 ilustra un ejemplo de estructura de predicción de una predicción residual avanzada (ARP, del inglés advanced residual prediction) en codificación de vídeo multivista.
La figura 12 es un diagrama conceptual que ilustra una relación de ejemplo entre un bloque actual, un bloque de referencia y bloques de movimiento compensados.
La figura 13 es un diagrama conceptual que ilustra una predicción de movimiento intervista de la subunidad de predicción (PU).
La figura 14 es un diagrama de bloques que ilustra un codificador de vídeo de ejemplo que puede implementar las técnicas descritas en esta divulgación.
La figura 15 es un diagrama de bloques que ilustra un decodificador de vídeo de ejemplo que puede implementar las técnicas descritas en esta divulgación.
La figura 16A es un diagrama de flujo que ilustra una operación de ejemplo de un codificador de vídeo para codificar una unidad de codificación (CU) utilizando interpredicción, de acuerdo con un ejemplo de esta divulgación.
La figura 16B es un diagrama de flujo que ilustra una operación de ejemplo de un decodificador de vídeo para decodificar una CU utilizando interpredicción, de acuerdo con un ejemplo de esta divulgación.
La figura 17 es un diagrama de flujo que ilustra una operación de ejemplo de un codificador de vídeo para construir una lista de candidatos de fusión para una PU actual en un componente de vídeo actual, de acuerdo con un ejemplo de esta divulgación.
La figura 18 es un diagrama de flujo que ilustra una continuación de la operación de construcción de la lista de imágenes de referencia de la figura 17, de acuerdo con un ejemplo de esta divulgación.
La figura 19 es un diagrama de flujo que ilustra una operación de un codificador de vídeo para determinar un candidato de vector de movimiento de predicción intervista o un candidato de fusión de texturas, de acuerdo con un ejemplo de esta divulgación.
DESCRIPCIÓN DETALLADA
La codificación de vídeo de alta eficiencia (HEVC, del inglés High-Effídency Video Coding) es un estándar de codificación de vídeo recién desarrollado. El 3D-HEVC es una extensión de1 HEVC para datos de vídeo 3D. El 3D-HEVC proporciona múltiples vistas de la misma escena desde diferentes puntos de vista. Parte de los esfuerzos de estandarización para 3D-HEVC incluye la estandarización del códec de vídeo multivista basado en HEVC. En el 3D-HEVC, se habilita la predicción intervista basada en los componentes de vista reconstruidos a partir de diferentes vistas.
En 3D-HEVC, la predicción de movimiento intervista es similar a la compensación de movimiento utilizada en e1HEVC estándar y puede utilizar elementos de sintaxis iguales o similares. El modo de fusión, el modo de omisión y el modo de predicción del vector de movimiento avanzado (AMVP) son tipos de ejemplo de predicción de movimiento. Cuando un codificador de vídeo realiza la predicción de movimiento intervista en una unidad de predicción (PU), el codificador de vídeo puede utilizar, como fuente de información de movimiento, una imagen que está en la misma unidad de acceso que la PU, pero en una vista diferente. Por el contrario, otros enfoques para la compensación de movimiento pueden utilizar únicamente imágenes en diferentes unidades de acceso como imágenes de referencia. Por tanto, en 3D-HEVC, los parámetros de movimiento de un bloque en una vista dependiente pueden predecirse o inferirse basándose en parámetros de movimiento ya codificados en otras vistas de la misma unidad de acceso.
Cuando un codificador de vídeo realiza la predicción de movimiento, el codificador de vídeo puede generar una lista de candidatos (por ejemplo, una lista de candidatos de fusión o una lista de candidatos AMVP) cuando la información de movimiento de una PU actual se señala utilizando el modo de fusión, modo de omisión o modo AMVP. Para implementar la predicción de movimiento intervista en 3D-HEVC, el codificador de vídeo puede incluir candidatos de un vector de movimiento predicho intervista (IPMVC) en listas de candidatos de fusión y listas de candidatos AMVP. El codificador de vídeo puede utilizar un IPMVC de la misma manera que otros candidatos en una lista de candidatos. Un IPMVC puede especificar la información de movimiento de una PU (es decir, una PU de referencia) en una imagen de referencia intervista. La imagen de referencia intervista puede estar en la misma unidad de acceso que una PU actual, pero en una vista diferente que la PU actual.
En algunos ejemplos, un IPMVC puede especificar los parámetros de movimiento (por ejemplo, vectores de movimiento, índices de referencia, etc.) de una pluralidad de sub-PU de una PU actual. En general, cada sub-PU de una PU puede estar asociada con subbloque ecualizado diferente de un bloque de predicción de la PU. Por ejemplo, si un bloque de predicción de luminancia de una PU es de 32x32 y el tamaño de la sub-PU es de 4x4, el codificador de vídeo puede dividir la PU en 64 sub-PU asociadas con diferentes subbloques de 4x4 del bloque de predicción de luminancia de la PU. En este ejemplo, las sub-PU también pueden estar asociadas con los subbloques correspondientes de bloques de predicción de croma de la PU. Por tanto, el IPMVC puede especificar múltiples conjuntos de parámetros de movimiento. En tales ejemplos, si el IPMVC es el candidato seleccionado en una lista de candidatos, un codificador de vídeo puede determinar un bloque predictivo para la PU actual en base a los múltiples conjuntos de parámetros de movimiento especificados por el IPMVC.
Para determinar un IPMVC que especifica los parámetros de movimiento de las sub-PU de la PU actual, el codificador de vídeo puede procesar cada una de las sub-PU de acuerdo con un orden de exploración de trama. Cuando el codificador de vídeo procesa una sub-PU (es decir, la sub-PU actual), el codificador de vídeo puede determinar, en base a un vector de disparidad para la PU actual, un bloque de referencia que corresponde a la sub-PU. El bloque de referencia puede estar en el mismo caso de tiempo que la imagen actual, pero está en una vista diferente que la imagen actual. Si el bloque de referencia correspondiente a la sub-PU actual se codifica utilizando la predicción con compensación de movimiento (por ejemplo, el bloque de referencia tiene uno o más vectores de movimiento, índices de referencia, etc.), el codificador de vídeo puede establecer los parámetros de movimiento de la sub-PU actual a los parámetros de movimiento del bloque de referencia correspondientes a la sub-PU. Por otra parte, si el bloque de referencia correspondiente a la sub-PU actual no se codifica utilizando la predicción con compensación de movimiento (por ejemplo, el bloque de referencia se codifica utilizando intrapredicción), el codificador de vídeo puede identificar una sub-PU más cercana, en el orden de exploración de trama, cuyo bloque de referencia correspondiente se codifica utilizando la predicción con compensación de movimiento. El codificador de vídeo puede entonces establecer los parámetros de movimiento de la sub-PU actual a los parámetros de movimiento del bloque de referencia correspondientes a la sub-PU identificada.
En algunos casos, la sub-PU identificada sucede más tarde en el orden de exploración de trama de las sub-PU que la sub-PU actual. Por tanto, al determinar los parámetros de movimiento para la sub-PU actual, el codificador de vídeo puede explorar hacia adelante para encontrar una sub-PU cuyo bloque de referencia correspondiente se codifica utilizando la predicción con compensación de movimiento. Como alternativa, el codificador de vídeo puede retrasar la determinación de los parámetros de movimiento de la sub-PU actual hasta que el codificador de vídeo encuentra, durante el procesamiento de las sub-PU, una PU cuyo bloque de referencia correspondiente se codifica utilizando la predicción con compensación de movimiento. En cualquiera de estos casos, se añade más complejidad y un retraso de la codificación.
De acuerdo con una o más técnicas de esta divulgación, un codificador de vídeo puede dividir una PU actual en una pluralidad de sub-PU. Además, el codificador de vídeo puede determinar parámetros de movimiento predeterminados. Además, el codificador de vídeo puede procesar varias sub-PU de la pluralidad de las sub-PU en un orden particular. En algunos casos, el codificador de vídeo puede determinar los parámetros de movimiento predeterminados antes de procesar cualquier de las sub-PU. Para cada PU respectiva de la PU actual, el codificador de vídeo puede determinar un bloque de referencia para la sub-PU respectiva. Si el bloque de referencia para la sub-PU respectiva se codifica utilizando la predicción con compensación de movimiento, el codificador de vídeo puede establecer parámetros de movimiento de la sub-PU respectiva en base a parámetros de movimiento del bloque de referencia para la sub-PU respectiva. Sin embargo, si el bloque de referencia para la sub-PU respectiva no se codifica utilizando la predicción con compensación de movimiento, el codificador de vídeo puede establecer los parámetros de movimiento de la sub-PU respectiva a los parámetros de movimiento predeterminados.
De acuerdo con una o más técnicas de esta divulgación, si un bloque de referencia para una sub-PU respectiva no se codifica utilizando la predicción con compensación de movimiento, los parámetros de movimiento de la sub-PU respectiva no se establecen en respuesta a una determinación posterior de que un bloque de referencia para cualquier sub-PU posterior en el orden particular se codifica utilizando la predicción con compensación de movimiento. Por tanto, cuando el codificador de vídeo está procesando las sub-PU, puede que el codificador de vídeo no necesite explorar hacia adelante para encontrar una sub-PU cuyo bloque de referencia correspondiente se codifique utilizando la predicción con compensación de movimiento o se retrase determinando los parámetros de movimiento de la sub-PU respectiva hasta que el codificador de vídeo encuentre, durante el procesamiento de las sub-PU, una PU cuyo bloque de referencia correspondiente se codifique utilizando la predicción con compensación de movimiento. Ventajosamente, esto puede reducir la complejidad y el retraso de la codificación.
La figura 1 es un diagrama de bloques que ilustra un sistema de codificación de vídeo de ejemplo 10 que puede utilizar las técnicas de esta divulgación. Según se utiliza en el presente documento, la expresión "codificador de vídeo" se refiere genéricamente tanto a codificadores de vídeo como a decodificadores de vídeo. En esta divulgación, las expresiones "codificación de vídeo" o "codificación" pueden referirse genéricamente a codificación de vídeo o decodificación de vídeo.
Como se muestra en la figura 1, el sistema de codificación de vídeo 10 incluye un dispositivo fuente 12 y un dispositivo de destino 14. El dispositivo fuente 12 genera datos de vídeo codificados. En consecuencia, el dispositivo fuente 12 puede denominarse dispositivo de codificación de vídeo o aparato de codificación de vídeo. El dispositivo de destino 14 puede decodificar los datos de vídeo codificados generados por el dispositivo fuente 12. En consecuencia, el dispositivo de destino 14 puede denominarse dispositivo decodificador de vídeo o aparato decodificador de vídeo. El dispositivo fuente 12 y el dispositivo de destino 14 pueden ser ejemplos de dispositivos de codificación de vídeo o aparatos de codificación de vídeo.
El dispositivo fuente 12 y el dispositivo de destino 14 pueden comprender una amplia diversidad de dispositivos, incluyendo ordenadores de sobremesa, dispositivos informáticos móviles, ordenadores notebook (por ejemplo, portátiles), tabletas, set-top boxes (cajas decodificadoras), teléfonos móviles como los llamados teléfonos "inteligentes", televisores, cámaras, dispositivos de visualización, reproductores digitales de medios, consolas de videojuegos, ordenadores de coches, o similares.
El dispositivo de destino 14 puede recibir datos de vídeo codificados desde el dispositivo fuente 12 a través de un canal 16. El canal 16 puede comprender uno o más medios o dispositivos capaces de mover los datos de vídeo codificados desde el dispositivo fuente 12 al dispositivo de destino 14. En un ejemplo, el canal 16 puede comprender uno o más medios de comunicación que permiten que el dispositivo fuente 12 transmita datos de vídeo codificados directamente al dispositivo de destino 14 en tiempo real. En este ejemplo, el dispositivo fuente 12 puede modular los datos de vídeo codificados de acuerdo con un estándar de comunicaciones, tal como un protocolo de comunicaciones inalámbricas y puede transmitir los datos de vídeo modulados al dispositivo de destino 14. El uno o más medios de comunicación pueden incluir medios de comunicación inalámbricos y/o por cable, tal como un espectro de frecuencia de radio (RF) o una o más líneas físicas de transmisión. El uno o más medios de comunicación pueden formar parte de una red basada en paquetes, tal como una red de área local, una red de área amplia o una red global (por ejemplo, Internet). El uno o más medios de comunicación pueden incluir enrutadores, conmutadores, estaciones base u otro equipamiento que facilite la comunicación desde el dispositivo fuente 12 al dispositivo de destino 14.
En otro ejemplo, el canal 16 puede incluir un medio de almacenamiento que almacena datos de vídeo codificados generados por el dispositivo fuente 12. En este ejemplo, el dispositivo de destino 14 puede acceder al medio de almacenamiento, por ejemplo, a través de un acceso al disco o acceso a la tarjeta. El medio de almacenamiento puede incluir una diversidad de medios de almacenamiento de datos de acceso local, tales como discos Blu-ray, DVD, CD-ROM, memorias flash u otros medios de almacenamiento digitales adecuados para almacenar datos de vídeo codificados.
En un ejemplo adicional, el canal 16 puede incluir un servidor de archivos u otro dispositivo de almacenamiento intermedio que almacena datos de vídeo codificados generados por el dispositivo fuente 12. En este ejemplo, el dispositivo de destino 14 puede acceder a datos de vídeo codificados almacenados en el servidor de archivos u otro dispositivo de almacenamiento intermedio a través de streaming o descarga. El servidor de archivos puede ser un tipo de servidor capaz de almacenar datos de vídeo codificados y de transmitir los datos de vídeo codificados al dispositivo de destino 14. Los servidores de archivos de ejemplo incluyen servidores web (por ejemplo, para un sitio web), servidores de protocolo de transferencia de archivos (FTP), dispositivos de almacenamiento conectados a la red (NAS) y unidades de disco locales.
El dispositivo de destino 14 puede acceder a los datos de vídeo codificados a través de una conexión de datos estándar, tal como una conexión a Internet. Los tipos de conexiones de datos de ejemplo pueden incluir canales inalámbricos (por ejemplo, conexiones Wi-Fi), conexiones por cable (por ejemplo, una línea de abonado digital (DSL), módem de cable, etc.) o combinaciones de ambas que son adecuadas para acceder a datos de vídeo codificados almacenados en un servidor de archivos. La transmisión de datos de vídeo codificados desde el servidor de archivos puede ser una transmisión streaming, una transmisión de descarga o una combinación de ambas.
Las técnicas de esta divulgación no se limitan a ajustes u aplicaciones inalámbricas. Las técnicas pueden aplicarse a la codificación de vídeo en un soporte de una diversidad de aplicaciones multimedia, tales como difusión aérea de televisión, transmisiones de televisión por cable, transmisiones de televisión por satélite, transmisiones de vídeo en streaming, por ejemplo, a través de Internet, codificación de datos de vídeo para almacenamiento en un medio de almacenamiento de datos, decodificación de datos de vídeo almacenados en un medio de almacenamiento de datos u otras aplicaciones. En algunos ejemplos, el sistema de codificación de vídeo 10 puede estar configurado para soportar transmisión de vídeo unidireccional o bidireccional para soportar aplicaciones tales como streaming de vídeo, reproducción de vídeo, difusión de vídeo y/o vídeo telefonía.
La figura 1 es meramente un ejemplo y las técnicas de esta divulgación pueden aplicarse a ajustes de codificación de vídeo (por ejemplo, codificación de vídeo o decodificación de vídeo) que no incluyen necesariamente ninguna comunicación de datos entre los dispositivos de codificación y decodificación. En otros ejemplos, los datos se recuperan desde una memoria local, se retransmiten en vivo a través de una red o similares. Un dispositivo de codificación de vídeo puede codificar y almacenar datos en una memoria y/o un dispositivo decodificador de vídeo puede recuperar y decodificar datos desde la memoria. En muchos ejemplos, la codificación y la decodificación son realizadas por dispositivos que no se comunican entre sí, sino que simplemente codifican datos en la memoria y/o recuperan y decodifican datos desde la memoria.
En el ejemplo de la figura 1, el dispositivo fuente 12 incluye una fuente de vídeo 18, un codificador de vídeo 20 y una interfaz de salida 22. En algunos ejemplos, la interfaz de salida 22 puede incluir un modulador/demodulador (módem) y/o un transmisor. La fuente de vídeo 18 puede incluir un dispositivo de captura de vídeo, por ejemplo, una cámara de vídeo, un archivo de vídeo que contiene datos de vídeo capturados previamente, una interfaz de alimentación de vídeo para recibir datos de vídeo desde un proveedor de contenidos de vídeo y/o un sistema informático de gráficos para generar datos de vídeo o una combinación de tales fuentes de datos de vídeo.
El codificador de vídeo 20 puede codificar datos de vídeo desde la fuente de vídeo 18. En algunos ejemplos, el dispositivo fuente 12 transmite directamente los datos de vídeo codificados al dispositivo de destino 14 a través de la interfaz de salida 22. En otros ejemplos, los datos de vídeo codificados también pueden almacenarse en un medio de almacenamiento o un servidor de archivos para acceder posteriormente mediante el dispositivo de destino 14 para decodificar y/o reproducir.
En el ejemplo de la figura 1, el dispositivo de destino 14 incluye una interfaz de entrada 28, un decodificador de vídeo 30 y un dispositivo de visualización 32. En algunos ejemplos, la interfaz de entrada 28 incluye un receptor y/o un módem. La interfaz de entrada 28 puede recibir datos de vídeo codificados a través del canal 16. El decodificador de vídeo 30 puede decodificar datos de vídeo codificados. El dispositivo de visualización 32 puede mostrar los datos de vídeo decodificados. El dispositivo de visualización 32 puede estar integrado con o puede ser externo al dispositivo de destino 14. El dispositivo de visualización 32 puede comprender una diversidad de dispositivos de visualización, tales como una pantalla de cristal líquido (LCD), una pantalla de plasma, una pantalla de diodos orgánicos de emisión de luz (OLED) u otro tipo de dispositivo de visualización.
El codificador de vídeo 20 y el decodificador de vídeo 30 pueden implementarse cada uno como cualquiera de una diversidad de circuitería adecuada, tal como uno o más microprocesadores, procesadores de señales digitales (DSP), circuitos integrados de aplicación específica (ASIC), matrices de puertas programables en campo (FPG), lógica discreta, hardware o cualquier combinación de los mismos. Si las técnicas se implementan parcialmente en software, un dispositivo puede almacenar instrucciones para el software en un medio de almacenamiento no transitorio legible por ordenador adecuado y puede ejecutar las instrucciones en un hardware utilizando uno o más procesadores para realizar las técnicas de esta divulgación. Puede considerarse que cualquiera de los anteriores (incluyendo hardware, software, una combinación de hardware y software, etc.) son uno o más procesadores. Cada uno del codificador de vídeo 20 y el decodificador de vídeo 30 pueden estar incluidos en uno o más codificadores o decodificadores, cualquiera de los cuales puede estar integrado como parte de un codificador/decodificador combinado (CÓDEC) en un dispositivo respectivo.
Esta divulgación puede referirse en general a la "señalización" del codificador de vídeo 20 de cierta información a otro dispositivo, tal como el decodificador de vídeo 30. El término "señalización" puede referirse generalmente a la comunicación de elementos de sintaxis y/o otros datos utilizados para decodificar los datos de vídeo comprimidos. Tal comunicación puede suceder en tiempo real o casi en tiempo real. Como alternativa, dicha comunicación puede suceder a lo largo de un lapso de tiempo, como puede suceder cuando se almacenan elementos de sintaxis en un medio de almacenamiento legible por ordenador en un flujo de bits codificado en el momento de la codificación, que después pueden ser recuperados por un dispositivo de decodificación en cualquier momento después de haber sido almacenados en este medio.
En algunos ejemplos, el codificador de vídeo 20 y el decodificador de vídeo 30 operan de acuerdo con un estándar de compresión de vídeo, tal como ISO/IEC MPEG-4 Visual e ITU-T H.264 (también conocido como ISO/IEC MPEG-4 AVC), incluyendo su extensión de codificación de vídeo escalable (SVC, del inglés Scalable Video Coding), extensión de codificación de vídeo multivista (MVC, del inglés Multiview Video Coding) y extensión 3DV basada en MVC. En algunos casos, cualquier flujo de bits conforma a la extensión 3DV basada en MVC de H.264/AVC siempre contiene un subflujo de bits que cumple con la extensión MVC de H.264/AVC. Además, existe un esfuerzo continuo para generar una extensión de codificación de vídeo tridimensional (3DV) para H.264/AVC, en concreto 3DV basada en AVC. En otros ejemplos, el codificador de vídeo 20 y el decodificador de vídeo 30 pueden operar según ITU-T H.261, ISO/IEC MPEG-1 Visual, ITU-T H.262 o ISO/IEC MPEG-2 Visual e ITU-T H.264, ISO/IEC Visual.
En otros ejemplos, el codificador de vídeo 20 y el decodificador de vídeo 30 pueden operar según el estándar de codificación de vídeo de alta eficiencia (HEVC, del inglés High Efficiency Video Coding) desarrollado por el Equipo de Colaboración Conjunta sobre Codificación de Vídeo (JCT-VC, del inglés Joint Collaboration Team on Video Coding) del Grupo de Expertos en Codificación de Vídeo (VCEG, del inglés ITU-T Video Coding Experts Group) y el Grupo de Expertos en Imagen en Movimiento (MPEG, del inglés ISO/IEC Motion Picture Experts Group). Un borrador del estándar HEVC, denominado "Borrador de trabajo 10 de HEVC" se describe en Bross et al., "High Efficiency Video Coding (HEVC) text specification draft 10 (para FDIS & Consent)", Equipo de Colaboración Conjunta sobre Codificación de Vídeo (JCT-VC) de ITU-T SG16 WP3 e ISO/IEC JTC1/SC29/WG11, 12.a reunión, Ginebra, CH, enero de 2013 (en lo sucesivo en el presente documento, "Borrador de trabajo 10 de HEVC" o la "especificación base de HEVC"). Además, existen esfuerzos continuos para producir una extensión de codificación de vídeo escalable para HEVC. La extensión de codificación de vídeo escalable de HEVC puede denominarse SHEVC o SHVC.
Además, el Equipo de Colaboración Conjunta sobre Codificación de Vídeo 3D (JCT-3V) de VCEG y MPEG está desarrollando actualmente una extensión de codificación multivista de HEVC (es decir, MV-HEVC). Tech et al., "Borrador 4 del texto de MV-HEVC, "Equipo de colaboración conjunto sobre desarrollo de extensión de codificación de vídeo 3D de ITU-T SG 16 WP 3 e ISO/IEC JTC 1/SC 29/WG 11, 4° encuentro: Incheon, KR, abr. de 2013 (en lo sucesivo en el presente documento, "Modelo de prueba 4 de MV-HEVC") es un borrador del MV-HEVC. En MV-HEVC, solo puede haber cambios de sintaxis de alto nivel (HLS), por lo que no es necesario rediseñar ningún módulo a nivel de CU o PU en HEVC. Esto puede permitir reutilizar módulos configurados para HEVC para MV-HEVC. En otras palabras, MV-HEVC solo proporciona cambios de sintaxis de alto nivel y no cambios de sintaxis de bajo nivel, como los del nivel CU/PU.
Además, la JCT-3V de VCEG y MPEG está desarrollando un estándar de 3DV basado en HEVC, para lo cual una parte de los esfuerzos de estandarización incluye la estandarización del códec de vídeo multivista basado en HEVC (MV-HEVC) y otra parte la codificación de vídeo 3D basada en HEVC (3D-HEVC). Para 3D-HEVC, pueden incluirse y soportarse nuevas herramientas de codificación, incluyendo aquellas al nivel de CU y/o PU, tanto para vistas de texturas como de profundidad. A partir del 17 de diciembre de 2013, el software para 3D-HEVC (por ejemplo, 3D-HTM) puede descargarse desde el siguiente enlace: [3D-HTM versión 7.0]: https://hevc.hhi.fraun-hofer.de/svn/svn_3DVCSoftware/tags/HTM-7.0/
Una descripción del software de referencia, así como el borrador de trabajo de 3D-HEVC está disponible de la siguiente manera: Gerhard Tech et al., "Modelo de prueba 4 de 3D-HEVC", JCT3V-D1005_spec_v1, Equipo de colaboración conjunto sobre desarrollo de extensión de codificación de vídeo 3D de ITU-T SG 16 W p 3 e ISO/IEC JTC 1/SC 29/WG 11,4° encuentro: Incheon, KR, abr. de 2013 (en lo sucesivo en el presente documento, "Modelo de prueba 4 de 3D-HEVC"), que a partir del 17 de diciembre de 2013, es descargable desde el siguiente enlace: http://phenix.it-sudparis.eu/jct2/doc_end_user/documents/2_Shanghai/wg11/JCT3V-B1005-v1.zip. Tech et al., "Borrador 3 del texto de 3D-HEVC", Equipo de colaboración conjunto sobre desarrollo de extensión de codificación de vídeo 3D de ITU-T SG 16 WP 3 e ISO/Ie C JTC 1/SC 29/WG 11, 3er encuentro: Ginebra, CH, ene. de 2013, documento n.° JCT3V-C1005 (en lo sucesivo en el presente documento, "Modelo de prueba 3 de 3D-HEVC"), que a partir del 17 de diciembre de 2013 está disponible desde el enlace: http://phenix.it-sudpar-is.eu/jct2/doc_end_user/current_document.php?id=706, es otra versión de la descripción del software de referencia de 3D- HEVC. 3D-HEVC también se describe en Tech et al., "Borrador 2 del texto de 3D-HEVC", Equipo de colaboración conjunto sobre desarrollo de extensión de codificación de vídeo 3D de ITU-T SG 16 WP 3 e ISO/IEC JTC 1/SC 29/WG 11, 6° Encuentro: Ginebra, CH, del 25 de oct. al 1 de nov. de 2013, documento n.° JCT3V-F1001-v2 (en lo sucesivo en el presente documento, "Borrador 2 del texto de 3D-HEVC"). El codificador de vídeo 20 y el decodificador de vídeo 30 pueden operar según SHEVC, MV-HEVC y/o 3D-HEVC.
En HEVC y otras especificaciones de codificación de vídeo, una secuencia de vídeo incluye típicamente una serie de imágenes. Las imágenes también pueden denominarse "cuadros". Una imagen puede incluir tres matrices de muestras, indicadas como Sl, Scb y Ser. Sl es una matriz bidimensional (es decir, un bloque) de muestras de luminancia. SCb es una matriz bidimensional de muestras de crominancia Cb. Sor es una matriz bidimensional de muestras de crominancia Cr. En el presente documento, las muestras de crominancia también pueden denominarse muestras de "croma". En otros casos, una imagen puede ser monocromática y puede incluir únicamente una matriz de muestras de luminancia.
Para generar una representación codificada de una imagen, el codificador de vídeo 20 puede generar un conjunto de unidades de árbol de codificación (CTU, del inglés Coding Tree Unit). Cada una de las CTU puede comprender un bloque del árbol de codificación de muestras de luminancia, dos bloques correspondientes del árbol de codificación de muestras de croma, y estructuras de sintaxis utilizadas para codificar las muestras de los bloques del árbol de codificación. En imágenes monocromáticas o imágenes que tienen tres planos de color separados, una CTU puede comprender un solo bloque del árbol de codificación y estructuras de sintaxis utilizadas para codificar las muestras del bloque del árbol de codificación. Un bloque del árbol de codificación puede ser un bloque de NxN muestras. Una CTU también puede denominarse un "bloque del árbol" o una "unidad de codificación más grande" (LCU, del inglés largest coding unit). Las CTU de HEVC pueden ser análogas en gran medida a los macrobloques de otros estándares, tales como H.264/AVC. Sin embargo, una CTU no se limita necesariamente a un tamaño particular y puede incluir una o más unidades de codificación (CU). Un segmento puede incluir un número entero de CTU ordenadas consecutivamente en un orden de exploración de trama.
Esta divulgación puede utilizar la expresión "unidad de vídeo" o "bloque de vídeo" o "bloque" para referirse a uno o más bloques de muestra y estructuras de sintaxis utilizadas para codificar muestras del uno o más bloques de muestras. Los tipos de unidades de vídeo de ejemplo pueden incluir las CTU, CU, PU, unidades de transformación (TU), macrobloques, particiones de macrobloques, etcétera. En algunos contextos, la discusión de las PU puede intercambiarse con la discusión de macrobloques o particiones de macrobloques.
Para generar una CTU codificada, el codificador de vídeo 20 puede realizar de manera recurrente partición de árbol cuádruple sobre los bloques del árbol de codificación de una CTU para dividir los bloques del árbol de codificación en bloques de codificación, por ello el nombre de "unidades de árbol de codificación". Un bloque de codificación es un bloque de muestras de NxN. Una CU puede comprender un bloque de codificación de muestras de luminancia y dos bloques correspondientes de codificación de muestras de croma de una imagen que tiene una matriz de muestra de luminancia, una matriz de muestra de Cb y una matriz de muestra de Cr, y estructuras de sintaxis utilizadas para codificar las muestras de los bloques de codificación. En imágenes monocromáticas o imágenes que tienen tres planos de color separados, una CU puede comprender un solo bloque de codificación y estructuras de sintaxis utilizadas para codificar las muestras del bloque de codificación.
El codificador de vídeo 20 puede dividir un bloque de codificación de una CU en uno o más bloques de predicción. Un bloque de predicción es un bloque de muestras rectangular (es decir, cuadrado o no cuadrado) sobre el cual se aplica la misma predicción. Una unidad de predicción (PU) de una CU puede comprender un bloque de predicción de muestras de luminancia, dos bloques correspondientes de predicción de muestras de croma, y estructuras de sintaxis utilizadas para predecir los bloques de predicción. En imágenes monocromáticas o imágenes que tienen tres planos de color separados, una PU puede comprender un solo bloque de predicción y estructuras de sintaxis utilizadas para predecir el bloque de predicción. El codificador de vídeo 20 puede generar bloques predictivos de luminancia, Cb y Cr para los bloques de predicción de luminancia, Cb y Cr de cada PU de la CU.
El codificador de vídeo 20 puede utilizar intrapredicción o interpredicción para generar los bloques predictivos para una PU. Si el codificador de vídeo 20 utiliza intrapredicción para generar los bloques predictivos de una PU, el codificador de vídeo 20 puede generar los bloques predictivos de la PU basándose en muestras decodificadas de la imagen asociada con la PU. En algunas versiones de HEVC, para el componente de luminancia de cada PU, se utiliza un método de intrapredicción con 33 modos de predicción angular (indexados desde el 2 al 34), modo DC (indexado con 1) y modo Planar (indexado con 0), como se muestra en la figura 2. La figura 2 es un diagrama conceptual que ilustra ejemplos de modos de intrapredicción en HEVC.
Si el codificador de vídeo 20 utiliza interpredicción para generar los bloques predictivos de una PU, el codificador de vídeo 20 puede generar los bloques predictivos de la PU basándose en muestras decodificadas de una o más imágenes distintas a la imagen asociada con la PU. La interpredicción puede ser una interpredicción unidireccional (es decir, unipredicción) o una interpredicción bidireccional (es decir, bipredicción). Para realizar la interpredicción, el codificador de vídeo 20 puede generar una primera lista de imágenes de referencia (RefPicList0) para un segmento actual y puede, en algunos casos, generar también una segunda lista de imágenes de referencia (RefPicList1) para el segmento actual. Cada una de las listas de imágenes de referencia puede incluir una o más imágenes de referencia. Cuando se utiliza la unipredicción, el codificador de vídeo 20 puede buscar las imágenes de referencia tanto en la RefPicList0 como en la RefPicList1 o en ambas para determinar una ubicación de referencia dentro de una imagen de referencia. Además, cuando se utiliza la unipredicción, el codificador de vídeo 20 puede generar, basándose al menos en parte en muestras correspondientes a la ubicación de referencia, los bloques predictivos de muestras para la PU. Por otra parte, cuando se utiliza la unipredicción, el codificador de vídeo 20 puede generar un solo vector de movimiento que indica un desplazamiento espacial entre un bloque de predicción de la PU y la ubicación de referencia. Para indicar el desplazamiento espacial entre un bloque de predicción de la PU y la ubicación de referencia, un vector de movimiento puede incluir un componente horizontal que especifique un desplazamiento horizontal entre el bloque de predicción de la PU y la ubicación de referencia y puede incluir un componente vertical que especifique un desplazamiento vertical entre el bloque de predicción de la PU y la ubicación de referencia.
Cuando se utiliza la bipredicción para codificar una PU, el codificador de vídeo 20 puede determinar una primera ubicación de referencia en una imagen de referencia en la RefPicList0 y una segunda ubicación de referencia en una imagen de referencia en la RefPicList1. El codificador de vídeo 20 puede generar entonces, basándose al menos en parte en muestras correspondientes a la primera y segunda ubicaciones de referencia, los bloques predictivos para la PU. Por otra parte, cuando se utiliza la bipredicción para codificar la PU, el codificador de vídeo 20 puede generar un primer vector de movimiento que indica un desplazamiento espacial entre un bloque de muestra de la PU y la primera ubicación de referencia y un segundo vector de movimiento que indica un desplazamiento espacial entre el bloque de predicción de la PU y la segunda ubicación de referencia.
Típicamente, una construcción de lista de imágenes de referencia para la primera o la segunda lista de imágenes de referencia (por ejemplo, RefPicList0 o RefPicList1) de una imagen B incluye dos etapas: inicialización de la lista de imágenes de referencia y reordenamiento (modificación) de la lista de imágenes de referencia. La inicialización de la lista de imágenes de referencia es un mecanismo explícito que coloca las imágenes de referencia en la memoria de imágenes de referencia (también conocida como búfer de imágenes decodificadas (DPB, del inglés Decoded Picture Buffer)) en una lista basada en el orden de los valores del POC (recuento de orden del imágenes, del inglés Picture Order Count, alineada con el orden de visualización de una imagen). El mecanismo de reordenamiento de la lista de imágenes de referencia puede modificar la posición de una imagen que se colocó en la lista durante la inicialización de la lista de imágenes de referencia a cualquier nueva posición, o colocar cualquier imagen de referencia en la memoria de imágenes de referencia en cualquier posición incluso si la imagen no pertenece a la lista inicializada. Algunas imágenes tras el reordenamiento (modificación) de la lista de imágenes de referencia, pueden colocarse en una posición muy posterior en la lista. Sin embargo, si una posición de una imagen excede el número de imágenes de referencia activas de la lista, la imagen no es considerada como una entrada de la lista final de imágenes de referencia. El número de imágenes de referencia activas para cada lista puede señalarse en el encabezado de un segmento. Tras construirse las listas de imágenes de referencia (en concreto la RefPicList0 y la RefPicList1, si está disponible), puede utilizarse un índice de referencia a una lista de imágenes de referencia para identificar cualquier imagen de referencia incluida en la lista de imágenes de referencia.
Después de que el codificador de vídeo 20 genere los bloques predictivos (por ejemplo, los bloques de luminancia, Cb y Cr) para una o más PU de una CU, el codificador de vídeo 20 puede generar uno o más bloques residuales par ala CU. Por ejemplo, el codificador de vídeo 20 puede generar un bloque residual de luminancia para la CU. Cada muestra en el bloque residual de luminancia de la Cu indica una diferencia entre una muestra de luminancia en uno de los bloques predictivos de luminancia de la CU y una muestra correspondiente en el bloque de codificación de luminancia original de la CU. Además, el codificador de vídeo 20 puede generar un bloque residual de Cb para la CU. Cada muestra en el bloque residual de Cb de la CU puede indicar una diferencia entre una muestra de Cb en uno de los bloques predictivos de Cb de la CU y una muestra correspondiente en el bloque de codificación de Cb original de la CU. El codificador de vídeo 20 también puede generar un bloque residual de Cr para la CU. Cada muestra en el bloque residual de Cr de la CU puede indicar una diferencia entre una muestra de Cr en uno de los bloques predictivos de Cr de la CU y una muestra correspondiente en el bloque de codificación de Cr original de la CU.
Además, el codificador de vídeo 20 puede utilizar una partición de árbol cuádruple para descomponer los bloques residuales (por ejemplo, los bloques residuales de luminancia, Cb y Cr) de una Cu en uno o más bloques de transformación (por ejemplo, bloques de transformación de luminancia, Cb y Cr). Un bloque de transformación es un bloque de muestras rectangular (por ejemplo, cuadrado o no cuadrado) sobre el cual se aplica la misma transformación. Una unidad de transformación (TU) de una CU puede comprender un bloque de transformación de muestras de luminancia, dos bloques correspondientes de transformación de muestras de croma y estructuras de sintaxis utilizadas para transformar las muestras del bloque de transformación. Por tanto, cada TU de una CU puede asociarse con un bloque de transformación de luminancia, un bloque de transformación de Cb y un bloque de transformación de Cr. El bloque de transformación de luminancia asociado con la TU puede ser un subbloque del bloque residual de luminancia de la CU. El bloque de transformación de Cb puede ser un subbloque del bloque residual de Cb de la CU. El bloque de transformación de Cr puede ser un subbloque del bloque residual de Cr de la CU. En imágenes monocromáticas o imágenes que tienen tres planos de color separados, una TU puede comprender un solo bloque de transformación y estructuras de sintaxis utilizadas para transformar las muestras del bloque de transformación.
El codificador de vídeo 20 puede aplicar una o más transformaciones a un bloque de transformación de una TU para generar un bloque de coeficientes para la TU. Por ejemplo, el codificador de vídeo 20 puede aplicar una o más transformaciones a un bloque de transformación de luminancia de una TU para generar un bloque de coeficientes de luminancia para la TU. Un bloque de coeficientes puede ser una matriz bidimensional de coeficientes de transformación. Un coeficiente de transformación puede ser una cantidad escalar. El codificador de vídeo 20 puede aplicar una o más transformaciones a un bloque de transformación de Cb de una TU para generar un bloque de coeficientes de Cb para la TU. El codificador de vídeo 20 puede aplicar una o más transformaciones a un bloque de transformación de Cr de una TU para generar un bloque de coeficientes de Cr para la TU.
Después de generar un bloque de coeficientes (por ejemplo, un bloque de coeficientes de luminancia, un bloque de coeficientes de Cb o un bloque de coeficientes de Cr), el codificador de vídeo 20 puede cuantificar el bloque de coeficientes. La cuantificación se refiere generalmente a un proceso en el que se cuantifican coeficientes de transformación para reducir posiblemente la cantidad de datos utilizados para representar los coeficientes de transformación, lo que proporciona una compresión adicional. Después de que codificador de vídeo 20 cuantifique un bloque de coeficientes, el codificador de vídeo 20 puede cuantificar por entropía elementos de sintaxis que indican los coeficientes de transformación cuantificados. Por ejemplo, el codificador de vídeo 20 puede realizar una codificación aritmética binaria adaptable al contexto (CABAC, del inglés Context-Adaptive Binar/ Arithmetic Coding) sobre los elementos de sintaxis que indican los coeficientes de transformación cuantificados.
El codificador de vídeo 20 puede emitir un flujo de bits que incluye una secuencia de bits que forma una representación de imágenes codificadas y datos asociados. El flujo de bits puede comprender una secuencia de unidades de capa de abstracción de red (NAL, del inglés Network Abstraction La/er). Una unidad NAL es una estructura de sintaxis que contiene una indicación del tipo de datos en la unidad NAL y bytes que contienen esos datos en forma de una carga útil de secuencia de bytes sin procesar (RBSP) intercalados según sea necesario con bits de prevención de emulación. Cada una de las unidades NAL incluye un encabezado de unidad NAL y encapsula una RBSP. El encabezado de unidad NAL puede incluir un elemento de sintaxis que indica un tipo de código de unidad NAL. El código de tipo de unidad NAL especificado por el encabezado de unidad NAL de una unidad NAL indica el tipo de la unidad NAL. Una RBSP puede ser una estructura de sintaxis que contenga un número entero de bytes que está encapsulada dentro de una unidad NAL. En algunos casos, una RBSp incluye cero bits.
Tipos diferentes de unidades NAL pueden encapsular tipos diferentes de RBSP. Por ejemplo, diferentes tipos de unidad NAL pueden encapsular diferentes RBSP para conjuntos de parámetros de vídeo (VPS, del inglés video parameter sets), conjuntos de parámetros de secuencia (SPS, del inglés sequence parameter sets), conjuntos de parámetros de imagen (PPS), segmentos codificados, información de mejora complementaria (SEI, del inglés supplemental enhancement information), etcétera. Las unidades NAL que encapsulan las RBSP para datos de codificación de vídeo (al contrario que las RBSP para conjuntos de parámetros y los mensajes de SEI) pueden denominarse unidades NAL de capa de codificación de vídeo (VCL).
En HEVC, las SPS pueden contener información que se aplica a todos los segmentos de una secuencia de vídeo codificada (CVS). Una CVS puede comprender una secuencia de imágenes. En HEVC, una CVS puede comenzar desde una imagen de actualización de decodificación instantánea (IDR) o una imagen de acceso a vínculo roto (BLA), o una imagen de acceso aleatorio limpia (CRA) que es la primera imagen en el flujo de bits, incluyendo todas las imágenes posteriores que no sean una imagen de IDR o BLA. Es decir, en HEVC, una CVS puede comprender una secuencia de unidades de acceso que pueden consistir, en orden de decodificación, en unidad de acceso CRA que es la primera unidad de acceso en el flujo de bits, una unidad de acceso IDR o una unidad de acceso BLA, seguido de cero o más unidades de acceso distintas de IDR y distintas de BLA incluyendo todas las unidades de acceso posterior hasta, pero sin incluir, cualquier unidad de acceso IDR o BLA posterior. En HEVC, una unidad de acceso puede ser un conjunto de unidades nA l que son consecutivas en el orden de decodificación y contienen exactamente una imagen codificada. Además del segmento unidades NAL codificado de la imagen codificada, la unidad de acceso también puede contener otras unidades NAL que no contienen segmentos de la imagen codificada. En algunos ejemplos, la decodificación de una unidad de acceso siempre da como resultado una imagen codificada.
Una VPS es una estructura de sintaxis que comprende elementos de sintaxis que se aplican a cero o más CVS completas. Una SPS también es una estructura de sintaxis que comprende elementos de sintaxis que se aplican a cero o más CVS completas. Una SPS puede incluir un elemento de sintaxis que identifica una VPS que está activa cuando la SPS está activa. Por tanto, los elementos de sintaxis de una VPS pueden aplicarse de un modo más general que los elementos de sintaxis de una SPS. Una PPS es una estructura de sintaxis que comprende elementos de sintaxis que se aplican a cero o más imágenes codificadas. Una PPS puede incluir un elemento de sintaxis que identifica una SPS que está activa cuando la PPS está activa. Un encabezado del segmento de un segmento puede incluir un elemento de sintaxis que indica una PPS que está activa cuando el segmento está siendo codificado.
El decodificador de vídeo 30 puede recibir un flujo de bits generado por el codificador de vídeo 20. Además, el decodificador de vídeo 30 puede analizar el flujo de bits para obtener elementos de sintaxis desde el flujo de bits. El decodificador de vídeo 30 puede reconstruir las imágenes de los datos de vídeo basándose, al menos en parte, en los elementos de sintaxis obtenidos desde el flujo de bits. El proceso para reconstruir los datos de vídeo puede ser generalmente recíproco al proceso realizado por el codificador de vídeo 20. Por ejemplo, el decodificador de vídeo 30 puede utilizar vectores de movimiento de las PU para determinar bloques predictivos para las PU de una CU actual. Además, el decodificador de vídeo 30 puede invertir los bloques de coeficientes de cuantificación asociados con las TU de la CU actual. El decodificador de vídeo 30 puede realizar transformaciones inversas en los bloques de coeficientes para reconstruir bloques de transformación asociados con las TU de la CU actual. El decodificador de vídeo 30 puede reconstruir los bloques de codificación de la CU actual añadiendo las muestras de los bloques predictivos para las PU de la CU actual a las muestras correspondientes de los bloques de transformación de las TU de la CU actual. Reconstruyendo los bloques de codificación para cada CU de una imagen, el decodificador de vídeo 30 puede reconstruir la imagen.
En algunos ejemplos, el codificador de vídeo 20 puede señalar la información de movimiento de una PU utilizando el modo de fusión o el modo de predicción de vector de movimiento predicción avanzada (AMVP). Por ejemplo, en la HEVC, existen dos modos para la predicción de parámetros de movimiento, siendo uno el modo de fusión y siendo el otro el AMVP. La predicción de movimiento puede comprender la determinación de información de movimiento de un bloque (por ejemplo, una PU) basada en la información de movimiento de uno o más de otros bloques. La información de movimiento (también denominada en el presente documento como parámetros de movimiento) de una PU puede incluir uno o más vectores de movimiento de la PU y uno o más índices de referencia de la PU.
Cuando el codificador de vídeo 20 señala la información de movimiento de una PU actual utilizando el modo de fusión, el codificador de vídeo 20 genera una lista de candidatos de fusión. En otras palabras, el codificador de vídeo 20 puede realizar un proceso de construcción de la lista de predicción del vector de movimiento. La lista de candidatos de fusión incluye un conjunto de candidatos de fusión que indican la información de movimiento de las PU que son contiguas espacial o temporalmente a la PU actual. Es decir, en el modo de fusión, una lista de candidatos de parámetros de movimiento (por ejemplo, índices de referencia, vectores de movimiento, etc.) se construye donde un candidato puede ser de bloques espaciales y temporales contiguos.
Además, en el modo de fusión, el codificador de vídeo 20 puede seleccionar un candidato de fusión de la lista de candidatos de fusión y puede utilizar la información de movimiento indicada por el candidato de fusión seleccionado como la información de movimiento de la PU actual. El codificador de vídeo 20 puede señalar la posición en la lista de candidatos de fusión del candidato de fusión seleccionado. Por ejemplo, el codificador de vídeo 20 puede señalar los parámetros de vector de movimiento seleccionados transmitiendo un índice en la lista de candidatos. El decodificador de vídeo 30 puede obtener, desde el flujo de bits, el índice en la lista de candidatos (es decir, un índice de la lista de candidatos). Además, el decodificador de vídeo 30 puede generar la misma lista de candidatos de fusión y puede determinar, basándose en la indicación de la posición del candidato de fusión seleccionado, el candidato de fusión seleccionado. El decodificador de vídeo 30 puede entonces utilizar la información de movimiento del candidato de fusión seleccionado para generar bloques predictivos para la PU actual. Es decir, el decodificador de vídeo 30 puede determinar, basándose al menos en parte en el índice de la lista de candidatos, un candidato seleccionado en la lista de candidatos, en el que el candidato seleccionado especifica el vector de movimiento para la PU actual. De esta manera, en el lado del decodificador, una vez que se decodifica el índice, todos los parámetros de movimiento del bloque correspondiente donde el señala el índice pueden ser heredados por la PU actual.
El modo de omisión es similar al modo de fusión. En el modo de omisión, el codificador de vídeo 20 y el decodificador de vídeo 30 generan y utilizan una lista de candidatos de fusión de la misma manera que el codificador de vídeo 20 y el decodificador de vídeo 30 utilizan la lista de candidatos de fusión en el modo de fusión. Sin embargo, cuando el codificador de vídeo 20 señala la información de movimiento de una PU actual utilizando el modo de omisión, el codificador de vídeo 20 no señala ninguno de los datos residuales para la PU actual. En consecuencia, el decodificador de vídeo 30 puede determinar, sin la utilización de datos residuales, un bloque predictivo para la PU basada en un bloque de referencia indicado por la información de movimiento de un candidato seleccionado en la lista de candidatos de fusión.
El modo AMVP es similar al modo de fusión en que el codificador de vídeo 20 puede generar una lista de candidatos y puede seleccionar un candidato desde la lista de candidatos. Sin embargo, cuando el codificador de vídeo 20 señala la información de movimiento de la RefPicListX de una PU actual utilizando el modo AMVP, el codificador de vídeo 20 puede señalar una diferencia del vector de movimiento (MVD) de la RefPicListX para la PU actual y un índice de referencia de la RefPicListX para la PU actual además de señalar una marca de MVP de la RefPicListX para la PU actual. La marca de MVP de la RefPicListX para la PU actual puede indicar la posición de un candidato de AMVP seleccionado en la lista de candidatos de AMVP. La MVD de la RefPicListX para la PU actual puede indicar una diferencia entre un vector de movimiento de la RefPicListX de la PU actual y un vector de movimiento del candidato de AMVP seleccionado. De esta manera, el codificador de vídeo 20 puede señalar la información de movimiento de la RefPicListX de la PU actual señalando una marca de predicción de un vector de movimiento (MVP) de la RefPicListX, un valor del índice de referencia de la RefPicListX y una MVD de la RefPicListX. En otras palabras, los datos en el flujo de bits que representan el vector de movimiento para la PU actual pueden incluir datos que representan un índice de referencia, un índice para una lista de candidatos y una MVD.
Además, cuando la información de movimiento de una PU actual se señala utilizando el modo de AMVP, el decodificador de vídeo 30 puede obtener, desde el flujo de bits, una MVD para una PU actual y una marca de MVP. El decodificador de vídeo 30 puede generar la misma lista de candidatos de AMVP y puede determinar, basándose en la marca de MVP, el candidato de AMVP seleccionado. El decodificador de vídeo 30 puede recuperar un vector de movimiento de la PU actual añadiendo la MVD al vector de movimiento indicado por el candidato de AMVP seleccionado. Es decir, el decodificador de vídeo 30 puede determinar, basándose en un vector de movimiento indicado por el candidato de AMVP seleccionado y la m Vd , el vector de movimiento de la PU actual. El decodificador de vídeo 30 puede entonces utilizar el vector de movimiento recuperado o vectores de movimiento de la PU actual para generar bloques predictivos para la PU actual.
Cuando el decodificador de vídeo 30 genera una lista de candidatos AMVP para una PU actual, el decodificador de vídeo 30 puede derivar uno o más candidatos de AMVP basándose en la información de movimiento de las PU (es decir, las PU espacialmente contiguas) que cubren las ubicaciones que son espacialmente contiguas a la PU actual. La figura 3 es un diagrama conceptual que ilustra PU espacialmente contiguas de ejemplo en relación con un bloque actual 40. En el ejemplo de la figura 3, las PU espacialmente contiguas pueden ser PU que cubren las ubicaciones indicadas como A0 , A1, B0 , B1 y B2. Una PU puede cubrir una ubicación cuando un bloque de predicción de la PU incluye la ubicación.
Un candidato en una lista de candidatos de fusión o una lista de candidatos AMVP que se basa en la información de movimiento de una PU que es contigua temporalmente a una PU actual (es decir, una PU que se encuentra en una instancia de tiempo diferente a la PU actual) puede denominarse como un predictor del vector de movimiento temporal. La utilización de una predicción del vector de movimiento temporal puede denominarse como una predicción del vector de movimiento temporal (TMVP). La TMVP puede utilizarse para mejorar la eficiencia de codificación de HEVC y, diferente de otras herramientas de codificación, la TMVP puede necesitar acceder al vector de movimiento de un cuadro en un búfer de imágenes decodificadas, más específicamente en una lista de imágenes de referencia.
La TMVP puede habilitarse o deshabilitarse con una base de CVS por CVS, una base de segmento por segmento o en otra base. Un elemento de sintaxis (por ejemplo, sps_temporal_mvp_enable_flag) en una SPS puede indicar si la utilización de las TMVP está habilitada para una CVS. Además, cuando la TMVP está habilitada para una CVS, la TMVP puede habilitarse o deshabilitarse para segmentos particulares dentro de la CVS. Por ejemplo, un elemento de sintaxis (por ejemplo, slice_temporal_mvp_enable_flag) en el encabezado de un segmento puede indicar si la TMVP está habilitada para un segmento. Por tanto, en un segmento interpredicho, cuando la TMVP está habilitada para una CVS completa (por ejemplo, sps_temporal_mvp_enable_flag en una SPS se establece en 1), se señala una slice_temporal_mvp_enable_flag en el encabezado del segmento para indicar si la TMVP está habilitada para el segmento actual.
Para determinar un predictor del vector de movimiento temporal, un codificador de vídeo puede identificar en primer lugar una imagen de referencia que incluye una PU que está coubicada con la PU actual. En otras palabras, el codificador de vídeo puede identificar una llamada "imagen coubicada". Si el segmento actual de la imagen actual es un segmento B (es decir, un segmento que puede incluir PU interpredichas bidireccionalmente), el codificador de vídeo 20 puede señalar, en el encabezado de un segmento, un elemento de sintaxis (por ejemplo, collocated_from_10_flag) que indica si la imagen coubicada es de la RefPicList0 o de la RefPicList1. En otras palabras, cuando la TMVP está habilitada para un segmento actual, y el segmento actual es un segmento B (por ejemplo, un segmento que puede incluir PU interpredichas bidireccionalmente), el codificador de vídeo 20 puede señalar un elemento de sintaxis (por ejemplo, collocated_from_10_flag) en el encabezado de un segmento para indicar si la imagen coubicada está en la RefPicList0 o en la RefPicList1.
Un elemento de sintaxis (por ejemplo, collocated_ref_idx) en el encabezado de un segmento puede indicar una imagen coubicada en la lista de imágenes de referencia identificadas. Por tanto, después de que el decodificador de vídeo 30 identifique la lista de imágenes de referencia que incluye la imagen coubicada, el decodificador de vídeo 30 puede utilizar el collocated_ref_idx, que puede estar señalado en el encabezado de un segmento, para identificar la imagen coubicada en la lista de imágenes de referencia identificadas. El codificador de vídeo puede identificar una PU coubicada comprobando la imagen coubicada. El predictor del vector de movimiento temporal puede indicar si la información de movimiento de una PU inferior derecha, una PU coubicada o la información de movimiento de una PU central de la PU coubicada.
Cuando los vectores de movimiento identificados por el proceso anterior (es decir, los vectores de movimiento de un predictor del vector de movimiento temporal) se utilizan para generar un candidato de movimiento para el modo de fusión o el modo AMVP, el codificador de vídeo puede escalar los vectores de movimiento basándose en la ubicación temporal (reflejada por el valor de POC). Por ejemplo, un codificador de vídeo puede aumentar la magnitud de un vector de movimiento en cantidades mayores cuando una diferencia entre los valores de POC de una imagen actual y una imagen de referencia es mayor que cuando una diferencia entre los valores de POC de la imagen actual y la imagen de referencia es menor.
El índice de referencia objetivo de todas las listas de imágenes de referencia posibles para el candidato de fusión temporal derivado de un predictor del vector de movimiento temporal puede establecerse siempre a 0. Sin embargo, para AMVP, el índice de referencia objetivo de todas las imágenes de referencia posibles puede establecerse igual a un índice de referencia decodificado. En otras palabras, el índice de referencia objetivo de todas las listas de imágenes de referencia posibles para el candidato de fusión temporal derivado de la TMVP siempre se establece en 0, mientras que para la AMVP, el candidato de fusión temporal puede establecerse igual al índice de referencia decodificado. En la HEVC, una SPS puede incluir una marca (por ejemplo, sps_temporal_mvp_enable_flag) y el encabezado del segmento puede incluir una marca (por ejemplo, pic_temporal_mvp_enable_flag) cuando sps_temporal_mvp_enable_flag es igual a 1. Cuando la pic_temporal_mvp_enable_flag y una temporal_id son iguales a 0 para una imagen particular, ningún vector de movimiento de las imágenes antes de la imagen particular en el orden de decodificación se utiliza como un predictor del vector de movimiento temporal en la decodificación de la imagen particular o una imagen después de la imagen particular en el orden de decodificación.
Las técnicas de esta divulgación son potencialmente aplicables a estándares y especificaciones de codificación multivista y/o 3DV, incluyendo MV-HEVC y 3D-HEVC. En la codificación multivista, tal como la definida en la MV-HEVC y 3D-HEVC, puede haber múltiples vistas de la misma escena desde diferentes puntos de vista. En el contexto de la codificación multivista, la expresión "unidad de acceso" puede utilizarse para referirse al conjunto de imágenes que corresponden a la misma instancia de tiempo. En algunos casos, en el contexto de la codificación multivista, una unidad de acceso puede ser un conjunto de unidades NAL que están asociadas entre sí de acuerdo con una regla de clasificación especificada, son consecutivas en orden de decodificación y contienen las unidades NAL de VCL de todas las imágenes codificadas asociadas con el mismo tiempo de salida y sus unidades NAL no de VCL. Por tanto, los datos de vídeo pueden conceptualizarse como una serie de unidades de acceso que suceden con el tiempo.
En la codificación 3DV, tal como la definida en 3D-HEVC, un "componente de vista" puede ser una representación codificada de una vista en una sola unidad de acceso. Un componente de vista puede contener un componente de vista de profundidad y un componente de vista de textura. Un componente de vista de profundidad puede ser una representación codificada de la profundidad de una vista en una sola unidad de acceso. Un componente de vista de textura puede ser una representación codificada de la textura de una vista en una sola unidad de acceso. En esta divulgación, una "vista" puede referirse a una secuencia de componentes de vista asociados con el mismo identificador de vista.
El componente de vista de textura y el componente de vista de profundidad dentro de un conjunto de imágenes de una vista pueden considerarse como correspondientes entre sí. Por ejemplo, el componente de vista de textura dentro de un conjunto de imágenes de una vista se considera como correspondiente al componente de vista de profundidad dentro del conjunto de las imágenes de la vista y viceversa (es decir, el componente de vista de profundidad corresponde a su componente de vista de textura en el conjunto y viceversa). Como se utiliza en esta divulgación, un componente de vista de textura que corresponde a un componente de vista de profundidad puede considerarse como el componente de vista de textura y el componente de vista de profundidad que es parte de la misma vista de una sola unidad de acceso.
El componente de vista de textura incluye el contenido de imagen real que se muestra. Por ejemplo, el componente de vista de textura puede incluir componentes de luminancia (Y) y de croma (Cb y Cr). El componente de vista de profundidad puede indicar profundidades relativas de los píxeles en su componente de vista de textura correspondiente. Como un ejemplo, el componente de vista de profundidad es una imagen en escala de grises que incluye únicamente valores de luminancia. En otras palabras, puede que el componente de vista de profundidad no transmita ningún contenido de imagen, sino que proporcione una medida de las profundidades relativas de los píxeles en el componente de vista de textura.
Por ejemplo, un píxel puramente blanco en el componente de vista de profundidad indica que su píxel o píxeles correspondientes en el componente de vista de textura correspondiente está más cerca desde la perspectivas del observador, y un píxel puramente negro en el componente de vista de profundidad indica que su píxel o píxeles correspondientes en el componente de vista de textura correspondiente está más alejado de la perspectiva del observador. Las diversas sombras de gris entre el negro y el blanco indican diferentes niveles de profundidad. Por ejemplo, un píxel muy gris en el componente de vista de profundidad indica que su píxel correspondiente en el componente de vista de textura está más alejado que un píxel ligeramente gris en el componente de vista de profundidad. Debido a que únicamente es necesaria la escala de grises para identificar la profundidad de los píxeles, no es necesario que el componente de vista de profundidad incluya componentes de croma, puesto que los valores de color para el componente de vista de profundidad pueden no servir a ningún propósito.
El componente de vista de profundidad que utiliza únicamente valores de luminancia (por ejemplo, valores de intensidad) para identificar la profundidad se proporciona únicamente con propósitos de ilustración y no debe considerarse como limitante. En otros ejemplos, puede utilizarse cualquier técnica para indicar profundidades relativas de los píxeles en el componente de vista de textura.
En la codificación multivista, una vista puede denominarse "vista de base" si un decodificador de vídeo (por ejemplo, el decodificador de vídeo 30) puede decodificar imágenes en la vista sin referencia a imágenes en cualquier otra vista. Cuando se codifica una imagen en una de las vistas no de base, un codificador de vídeo (tal como el codificador de vídeo 20 o el decodificador de vídeo 30) puede añadir una imagen en una lista de imágenes de referencia (por ejemplo, la RefPicList0 o la RefPicList1) si la imagen está en una vista diferente pero dentro de la misma instancia de tiempo (es decir, la unidad de acceso) que la imagen que está codificando actualmente el codificador de vídeo. Como otras imágenes de referencia de interpredicción, el codificador de vídeo puede insertar una imagen de referencia de predicción intervista en cualquier posición de una lista de imágenes de referencia.
La codificación multivista soporta predicción intervista. La predicción intervista es similar a la interpredicción utilizada en H.264/AVC, HEVC u otras especificaciones de codificación de vídeo y puede utilizar los mismos elementos de sintaxis. Sin embargo, cuando un codificador de vídeo realiza la predicción intervista en un bloque actual (tal como un macrobloque, CU o PU), el codificador de vídeo 20 puede utilizar, como imagen de referencia, una imagen que esté en la misma unidad de acceso que el bloque actual, pero en una vista diferente. En otras palabras, en la codificación multivista, la predicción intervista se realiza entre las imágenes capturadas en las diferentes vistas de la misma unidad de acceso (es decir, dentro de la misma instancia de tiempo) para eliminar la correlación entre vistas. Por el contrario, la interpredicción convencional utiliza únicamente imágenes en diferentes unidades de acceso como imágenes de referencia.
La figura 4 es un diagrama conceptual que ilustra un ejemplo de orden de decodificación multivista. El orden de decodificación multivista puede ser un orden de flujo de bits. En el ejemplo de la figura 4, cada cuadrado corresponde a un componente de vista. Las columnas de los cuadrados corresponden a unidades de acceso. Puede definirse cada unidad de acceso para que contenga las imágenes codificadas de todas las vistas de una instancia de tiempo. Las filas de los cuadrados corresponden a vistas. En el ejemplo de la figura 4, las unidades de acceso están etiquetadas como T0...T8 y las vistas están etiquetadas como S0...S7. Debido a que cada componente de vista de una unidad de acceso se decodifica antes que cualquier componente de vista de la siguiente unidad de acceso, el orden de decodificación de la figura 4 puede denominarse codificación de tiempo primero. El orden de decodificación de las unidades de acceso puede no ser idéntico al orden de emisión o de visualización de las vistas.
La figura 5 es un diagrama conceptual que ilustra un ejemplo de estructura de predicción para codificación multivista. La estructura de predicción multivista de la figura 5 incluye predicción temporal e intervista. En el ejemplo de la figura 5, cada cuadrado corresponde a un componente de vista. En el ejemplo de la figura 5, las unidades de acceso están etiquetadas como T0...T11 y las vistas están etiquetadas como S0...S7. Los cuadrados etiquetados como "I" son componentes de vista intrapredichos. Los cuadrados etiquetados como "P" son componentes de vista interpredichos unidireccionalmente. Los cuadrados etiquetados como "B" y "b" son componentes de vista interpredichos bidireccionalmente. Los cuadrados etiquetados como "b" pueden utilizar cuadrados etiquetados como "B" como imágenes de referencia. Una flecha que apunta desde el primer cuadrado al segundo cuadrado indica que el primer cuadrado está disponible en la interpredicción como una imagen de referencia para el segundo cuadrado. Según se indica mediante las flechas verticales en la figura 5, los componentes de vista en diferentes vistas de la misma unidad de acceso pueden estar disponibles como imágenes de referencia. La utilización de un componente de vista de una unidad de acceso como una imagen de referencia para otro componente de vista de la misma unidad de acceso puede denominarse como predicción intervista.
En la codificación multivista, como la extensión MVC de H.264/AVC, la predicción intervista es compatible con la compensación de movimiento de disparidad, que utiliza la sintaxis de la compensación de movimiento de H.264/AVC, pero permite que se utilice una imagen en un vídeo diferente como imagen de referencia. La codificación de dos vistas también puede ser compatible con la extensión MVC de H.264/AVC. Una de las ventajas de la extensión MVC de H.264/AVC es que un codificador MVC puede tomar más de dos vistas como una entrada de vídeo 3D y un decodificador de MVC puede decodificar dicha representación multivista. En consecuencia, cualquier renderizador con un decodificador MVC puede esperar contenidos de vídeo 3D con más de dos vistas.
En el contexto de codificación multivista de vídeo, tal como la definida en MV-HEVC y 3D-HEVC, existen dos clases de vectores de movimiento. Una clase de vector de movimiento es un vector de movimiento normal que apunta a una imagen de referencia temporal. El tipo de interpredicción correspondiente a un vector de movimiento temporal normal puede denominarse "predicción con compensación de movimiento" o "MCP" (del inglés Motion-Compensated Prediction). Cuando se utiliza una imagen de referencia de predicción intervista para la compensación de movimiento, el vector de movimiento correspondiente se denomina "vector de movimiento de disparidad". En otras palabras, un vector de movimiento de disparidad apunta a una imagen en un vídeo diferente (es decir, una imagen de referencia intervista). El tipo de interpredicción correspondiente a un vector de movimiento de disparidad puede denominarse "predicción con compensación de disparidad" o "DCP" (del inglés Disparity-Compensated Prediction).
3D-HEVC puede mejorar la eficiencia de codificación utilizando la predicción de movimiento intervista y la predicción residual intervista. En otras palabras, para mejorar eficazmente la eficiencia de codificación, se han adoptado dos nuevas tecnologías, en concreto "predicción de movimiento intervista" y "predicción residual intervista", en el software de referencia. En la predicción de movimiento intervista, un codificador de vídeo puede determinar (es decir, predecir) la información de movimiento de una PU actual basándose en la información de movimiento de una PU en un vídeo diferente al de la PU actual. En la predicción residual intervista, un codificador de vídeo puede determinar bloques residuales de una CU actual basándose en datos residuales en un vídeo diferentes de la CU actual.
Para habilitar la predicción de movimiento intervista y la predicción residual intervista, un codificador de vídeo puede determinar vectores de disparidad para bloques (por ejemplo, las PU, las CU, etc.). En otras palabras, para habilitar estas dos herramientas de codificación, la primera etapa es derivar un vector de disparidad. En general, un vector de disparidad se utiliza como un estimador del desplazamiento entre dos vistas. Un codificador de vídeo puede utilizar un vector de disparidad para un bloque para ubicar un bloque de referencia en otra vista para predicción residual o de movimiento intervista, o el codificador de vídeo puede convertir el vector de disparidad en un vector de movimiento de disparidad para la predicción de movimiento intervista. Es decir, el vector de disparidad puede utilizarse tanto para localizar el bloque correspondiente en la otra vista para la predicción de movimiento/residual intervista o puede convertirse en un vector de movimiento de disparidad para la predicción de movimiento intervista.
En algunos ejemplos, el codificador de vídeo puede utilizar el método de derivación de vector de disparidad basado en bloques contiguos (NBDV) para derivar el vector de disparidad para una PU (es decir, la PU actual). Por ejemplo, para derivar un vector de disparidad para la PU actual, puede utilizarse un proceso llamado derivación NBDV en un modelo de prueba para 3D-HEVC (es decir, 3D-HTM).
El proceso de derivación NBDV utiliza vectores de movimiento de disparidad desde bloques espaciales y temporales contiguos para derivar el vector de disparidad para el bloque actual. Debido a que los bloques contiguos (por ejemplo, bloques que son contiguos espacialmente o temporalmente con un bloque actual) es probable que compartan casi la misma información de movimiento y de disparidad en la codificación de vídeo, el bloque actual puede utilizar la información de vector de movimiento en los bloques contiguos como un predictor del vector de disparidad del bloque actual. Por tanto, el proceso de derivación NBDV utiliza la información de disparidad contigua para estimar el vector de disparidad en diferentes vistas.
En el proceso de derivación NBDV, el codificador de vídeo puede comprobar, en un orden de comprobación fijo, vectores de movimiento de las PU colindantes espacialmente y colindantes temporalmente. Cuando el codificador de vídeo comprueba el vector o vectores de movimiento de una PU contigua espacialmente o contigua temporalmente, el codificador de vídeo puede determinar si el vector o vectores de movimiento son vectores de movimiento de disparidad. Un vector de movimiento de disparidad de una PU de una imagen es un vector de movimiento que apunta a una ubicación dentro de imagen de referencia intervista de la imagen. Una imagen de referencia intervista de una imagen puede ser una imagen que está en la misma unidad de acceso que la imagen, pero en una vista diferente. Cuando el codificador de vídeo identifica un vector de movimiento de disparidad o un vector de disparidad implícito (IDV), el codificador de vídeo puede terminar el proceso de comprobación. Un IDV puede ser un vector de disparidad de una PU colindante espacialmente o temporalmente que se codifica utilizando la predicción intervista. Un IDV puede generarse cuando una PU emplea predicción intervista del vector de movimiento, es decir, el candidato para los modos AMVP o de fusión se deriva de un bloque de referencia en la otra vista con la ayuda de un vector de disparidad. Un IDV puede almacenarse en la PU con el propósito de derivación del vector de disparidad. Además, cuando el codificador de vídeo identifica un vector de movimiento de disparidad o un IDV, el codificador de vídeo puede devolver el vector identificado de movimiento de disparidad o IDV.
Los IDV se incluyeron con una versión simplificada del proceso de derivación NBDV en Sung et al., "3D-CE5.h: Simplification of disparity vector derivation for HEVC-based 3D video coding, documento JCTV3-A0126". La utilización de los IDV en el proceso de derivación NBDV se simplificó adicionalmente en Kang et al., "3D-CE5.h related: improvements for disparity vector derivation", documento JCT3V-B0047, retirando los IDV almacenados en el búfer de imágenes decodificadas y también proporcionando una ganancia de codificación mejorada con una selección de imagen de punto de acceso aleatorio (RAP). El codificador de vídeo puede convertir el vector de movimiento de disparidad o IDV devuelto en un vector de disparidad y puede utilizar el vector de disparidad para la predicción de movimiento intervista y la predicción residual intervista.
En algunos diseños de 3D-HEVC, cuando el codificador de vídeo realiza el proceso de derivación NBDV, el codificador de vídeo comprueba los vectores de movimiento de disparidad en los bloques temporales contiguos, los vectores de movimiento de disparidad en los bloques espaciales contiguos y después los IDV en orden. Una vez que el codificador de vídeo encuentra un vector de movimiento de disparidad para el bloque actual, el codificador de vídeo puede terminar el proceso de derivación NBDV. Por tanto, una vez que se identifica un vector de movimiento de disparidad o un IDV, se termina el proceso de comprobación y el vector de movimiento de disparidad identificado se devuelve y se convierte en el vector de disparidad que se utilizará en la predicción de movimiento intervista y la predicción residual intervista. Cuando el codificador de vídeo es incapaz de determinar un vector de disparidad para el bloque actual realizando el proceso de derivación NBDV (es decir, cuando no se encuentra ningún vector de movimiento de disparidad o IDV durante el proceso de derivación NBDV), el codificador de vídeo puede marcar el NBDV como no disponible.
En algunos ejemplos, si el codificador de vídeo es incapaz de derivar un vector de disparidad para la PU actual (es decir, si no se encuentra ningún vector de disparidad) al realizar el proceso de derivación NBDV, el codificador de vídeo puede utilizar un vector de disparidad cero como el vector de disparidad para la PU actual. El vector de disparidad cero es un vector de disparidad que tiene los componentes tanto horizontales como verticales iguales a 0. Por tanto, incluso cuando el proceso de derivación NBDV devuelve un resultado no disponible, otros procesos de codificación del codificador de vídeo que requieren un vector de disparidad pueden utilizar un vector de disparidad cero para el bloque actual.
En algunos ejemplos, si el codificador de vídeo es incapaz de derivar un vector de disparidad para la PU actual al realizar el proceso de derivación NBDV, el codificador de vídeo puede deshabilitar la predicción residual intervista para la PU actual. Sin embargo, independientemente de si el codificador de vídeo es capaz de derivar un vector de disparidad para la PU actual al realizar el proceso de derivación NBDV, el codificador de vídeo puede utilizar la predicción de movimiento intervista para la PU actual. Es decir, si no se encuentra ningún vector de disparidad después de comprobar todos los bloques contiguos predefinidos, puede utilizarse un vector de disparidad para la predicción de movimiento intervista mientras que la predicción residual intervista puede deshabilitarse para la Pu correspondiente.
Como se ha mencionado anteriormente, el codificador de vídeo puede comprobar PU espacialmente contiguas como parte del proceso de determinar el vector de disparidad para la PU actual. En algunos ejemplos, el codificador de vídeo comprueba los siguientes bloques espacialmente colindantes: el bloque espacialmente colindantes de abajo a la izquierda, el bloque espacialmente contiguo de la izquierda, el bloque espacialmente colindante de arriba a la derecha, el bloque espacialmente contiguo de arriba y el bloque espacialmente colindante de arriba a la izquierda. Por ejemplo, en algunas versiones del proceso de derivación NBDV, se utilizan cinco bloques espaciales contiguos para la derivación del vector de disparidad. Los cinco bloques espacialmente colindantes pueden abarcar las ubicaciones A0 , A1, B0, B1 y B2 , respectivamente, según se indica en la figura 3. El codificador de vídeo puede comprobar los cinco bloques espacialmente colindantes en el orden de A1, B1, B0 , A0 y B2. Los mismos cinco bloques espacialmente contiguos pueden utilizarse en modos de fusión para HEVC. Por lo tanto, en algunos ejemplos, no se requiere ningún acceso adicional a la memoria. Si uno de los bloques espacialmente colindantes tiene un vector de movimiento de disparidad, el codificador de vídeo puede terminar el proceso de comprobación y el codificador de vídeo puede utilizar el vector de movimiento de disparidad como el vector de disparidad final para la PU actual. En otras palabras, si uno de ellos utiliza un vector de movimiento de disparidad, el proceso de comprobación se termina y el vector de movimiento de disparidad correspondiente se utilizará como el vector de disparidad final.
Además, como se ha mencionado anteriormente, el codificador de vídeo puede comprobar PU temporalmente colindantes como parte del proceso para determinar el vector de disparidad para la PU actual. Para comprobar bloques temporales contiguos (por ejemplo, las PU), puede realizarse en primer lugar un proceso de construcción de una lista de imágenes candidatas. En algunos ejemplos, el codificador de vídeo puede comprobar hasta dos imágenes de referencia desde la vista actual para vectores de movimiento de disparidad. La primera imagen de referencia puede ser la imagen coubicada. Por tanto, la imagen coubicada (es decir, la imagen de referencia coubicada) puede insertarse en primer lugar en la lista de imágenes candidatas. La segunda imagen de referencia puede ser una imagen de acceso aleatorio o una imagen de referencia con la diferencia de valor de POC más pequeña y el identificador temporal más pequeño. En otras palabras, hasta dos imágenes de referencia de la vista actual, la imagen coubicada y la imagen de acceso aleatorio o la imagen de referencia con la diferencia de POC más pequeña y la ID temporal más pequeña se consideran para comprobaciones del bloque temporal. El codificador de vídeo puede comprender en primer lugar la imagen de acceso aleatorio, seguido de la imagen coubicada.
Para cada imagen candidata (es decir, la imagen de acceso aleatorio y la imagen coubicada), el codificador de vídeo puede comprobar dos bloques. En particular, el codificador de vídeo puede comprobar un bloque central (CR) y un bloque de abajo a la derecha (BR). La figura 6 es un diagrama conceptual que ilustra bloques temporales contiguos de ejemplo en el proceso de derivación NBDV. El bloque central puede ser el bloque central de 4x4 de una región coubicada de la PU actual. El bloque de abajo a la derecha puede ser el bloque de abajo a la derecha de 4x4 de una región coubicada de la PU actual. Por tanto, para cada imagen candidata, los dos bloques se comprueban en orden, CR y BR para la primera vista no de base o Br , CR para la segunda vista no de base. Si una de las PU que cubren CR o BR tiene un vector de movimiento de disparidad, el codificador de vídeo puede terminar el proceso de comprobación y puede utilizar el vector de movimiento de disparidad como el vector de disparidad final para la PU actual. En este ejemplo, la decodificación de imágenes asociadas con la primera vista no de base puede depender de la decodificación de imágenes asociadas con una vista de base, pero no imágenes asociadas con otras vistas. Además, en este ejemplo, la decodificación de imágenes asociadas con la segunda vista no de base puede depender de la decodificación de imágenes asociadas con la vista de base y, en algunos casos, la primera vista no de base, pero no imágenes asociadas con otras vistas, si están presentes.
En el ejemplo de la figura 6, un bloque 42 indica una región coubicada para una PU actual. Además, en el ejemplo de la figura 6, el bloque etiquetado como "Pos. A" corresponde al bloque central. El bloque etiquetado como "Pos. B" corresponde al bloque de abajo a la derecha. Como se indica en el ejemplo de la figura 6, el bloque central puede estar ubicado inmediatamente por debajo y a la derecha del centro de un punto central de la región coubicada.
Cuando el codificador de vídeo comprueba una PU contigua (es decir, una PU contigua espacialmente o temporalmente), el codificador de vídeo puede comprobar primero si la PU contigua tiene un vector de movimiento de disparidad. Si ninguna de las PU contiguas tiene un vector de movimiento de disparidad, el codificador de vídeo puede determinar si cualquiera de las PU espacialmente contiguas tiene un IDV. En otras palabras, se comprueba en primer lugar si se utilizan los vectores de movimiento de disparidad para todos los bloques espaciales/temporales contiguos, seguido de los IDV. Se comprueban en primer lugar los bloques espaciales contiguos, seguido de bloques temporales contiguos. Cuando se comprueban los bloques contiguos para los IDV, el codificador de vídeo puede comprobar las PU espacialmente contiguas en el orden de A0 , A1, B0, B1 y B2. Si una de las PU espacialmente contiguas tiene un IDV y el IDV está codificado como un modo de fusión/omisión, el codificador de vídeo puede terminar el proceso de comprobación y puede utilizar el IDV como el vector de disparidad final para la PU actual. En otras palabras, se comprueban cinco bloques espaciales contiguos en el orden de A0, A1, B0 , B1 y B2. Si uno de ellos utiliza un IDV y puede codificarse como un como un modo de omisión/fusión, el proceso de comprobación se termina y el IDV correspondiente puede utilizarse como el vector de disparidad final.
Como se ha indicado anteriormente, el vector de disparidad para un bloque actual puede indicar una ubicación en una imagen de referencia (es decir, un componente de vista de referencia) en una vista de referencia. En algunos diseños de 3D-HEVC, se permite que el codificador de vídeo acceda a información de profundidad para la vista de referencia. En algunos de tales diseños de 3D-HEVC, cuando el codificador de vídeo utiliza el proceso de derivación NBDV para derivar el vector de disparidad para el bloque actual, el codificador de vídeo puede aplicar un proceso de refinamiento para refinar aún más el vector de disparidad para el bloque actual. El codificador de vídeo puede refinar el vector de disparidad para el bloque actual basándose en el mapa de profundidad de la imagen de referencia. En otras palabras, el vector de disparidad, generado a partir del esquema de NBDV podría refinarse adicionalmente utilizando la información en el mapa de profundidad codificado. Es decir, la precisión del vector de disparidad podría mejorarse aprovechando la información codificada en un mapa de profundidad de la vista de base. Este proceso de refinamiento puede denominarse en el presente documento como refinamiento de NBDV ("NBDV-R"), el proceso de refinamiento de NBDV o NBDV orientado a la profundidad (Do-NBDV).
Cuando el proceso de derivación NBDV devuelve un vector de disparidad disponible (por ejemplo, cuando el proceso de derivación NBDV devuelve una variable que indica que el proceso de derivación NBDV fue capaz de derivar un vector de disparidad para el bloque actual basándose en un vector de movimiento de disparidad o un IDV de un bloque contiguo), el codificador de vídeo puede refinar adicionalmente el vector de disparidad recuperando datos de profundidad desde el mapa de profundidad de la vista de referencia. En algunos ejemplos, el proceso de refinamiento incluye las siguientes etapas:
1. Utilizar el vector de disparidad del bloque actual para localizar un bloque en el mapa de profundidad de vista de referencia. En otras palabras, localizar un bloque de profundidad correspondiente mediante el vector de disparidad derivado en la vista de profundidad de referencia codificada previamente, tal como la vista de base. En este ejemplo, el tamaño del bloque correspondiente en la profundidad puede ser el mismo que el tamaño de la PU actual (es decir, un tamaño de un bloque de predicción de la PU actual).
2. Un vector de disparidad se calcula a partir del bloque de profundidad coubicado, a partir del valor máximo de los valores de profundidad de las cuatro esquinas. Este se establece igual al componente horizontal de un vector de disparidad, mientras que el componente vertical del vector de disparidad se establece en 0.
En algunos ejemplos, cuando el proceso de derivación NBDV no devuelve un vector de disparidad disponible (por ejemplo, cuando el proceso de derivación NBDV devuelve una variable que indica que el proceso de derivación NBDV no fue capaz de derivar un vector de disparidad para el bloque actual basándose en un vector de movimiento de disparidad o un IDV de un bloque contiguo), el codificador de vídeo no realiza el proceso de refinamiento de NBDV y el codificador de vídeo puede utilizar, como vector de disparidad para el bloque actual, el vector de disparidad cero. En otras palabras, cuando proceso de derivación NBDV no proporciona ningún vector de disparidad disponible, y por tanto el resultado del proceso de derivación NBDV no está disponible, el proceso de NBDV-R anterior se omite y se devuelve directamente un vector de disparidad cero.
En algunas propuestas para 3D-HEVC, el codificador de vídeo utiliza un vector de disparidad refinado para un bloque actual para la predicción de movimiento intervista mientras que el codificador de vídeo utiliza un vector de disparidad sin refinar para el bloque actual para la predicción residual intervista. Por ejemplo, el codificador de vídeo puede utilizar el proceso de derivación NBDV para derivar un vector de disparidad sin refinar para el bloque actual. El codificador de vídeo puede entonces aplicar el proceso de refinamiento de NBDV para derivar un vector de disparidad refinado para el bloque actual. El codificador de vídeo puede utilizar el vector de disparidad refinado para el bloque actual para determinar información de movimiento del bloque actual. Por otra parte, el codificador de vídeo puede utilizar el vector de disparidad sin refinar para el bloque actual para determinar un bloque residual del bloque actual.
De esta manera, este nuevo vector de disparidad se llama "bloque contiguo orientado en profundidad basado en vector de disparidad (DoNBDV)". El vector de disparidad del esquema de NBDV se reemplaza entonces por este vector de disparidad recién derivado desde el esquema de DoNBDV para una derivación de candidato intervista para los modos AMVP y de fusión. El codificador de vídeo puede utilizar el vector de disparidad sin refinar para la predicción residual intervista.
El codificador de vídeo puede utilizar un proceso de refinamiento similar para refinar un vector de movimiento de disparidad para la predicción inversa de síntesis de vistas (BVSP). De esta manera, la profundidad puede utilizarse para refinar el vector de disparidad o el vector de movimiento de disparidad para su uso para BVSP. El vector de disparidad refinado puede almacenarse como el vector de movimiento de una PU y el vector de disparidad refinado se codifica con el modo BVSP.
Un codificador de vídeo puede realizar la BVSP para sintetizar un componente de vista. Un enfoque de BVSP se propuso en Tian et al., "CE1.h: Backward View Synthesis Prediction Using Neighboring Blocks," documento JCT3V-C0152 (en lo sucesivo en el presente documento, "JCT3V-C0152") y se adoptó en el tercer encuentro de JCT-3V. La BVSP es conceptualmente similar a la VSP basada en bloques de 3D-AVC. En otras palabras, la idea básica de la VSP de deformación hacia atrás es la misma que la VSP basada en bloques en 3D-AVC. Tanto la BVSP como la VSP basada en bloques en 3D-AVC utilizan deformación hacia atrás y la VSP basada en bloques para evitar transmitir diferencias del vector de movimiento y para utilizar vectores de movimiento más precisos. Sin embargo, los detalles de implementación pueden ser diferentes debido a las diferentes plataformas.
En algunas versiones de 3D-HEVC, se aplica la primera codificación de textura. En la primera codificación de textura, un codificador de vídeo codifica (por ejemplo, codifica o decodifica) un componente de vista de textura antes de codificar el componente de vista de profundidad correspondiente (es decir, el componente de vista de profundidad que tiene el mismo valor de POC y el identificador de vista como el componente de vista de textura). Por lo tanto, una vista no de base componente de vista de profundidad no está disponible para su uso en la codificación de un correspondiente componente de vista de textura no de base. En otras palabras, cuando un codificador de vídeo codifica un componente de vista de textura no de base, el correspondiente componente de vista de profundidad no de base no está disponible. Por lo tanto, la información de profundidad puede estimarse y utilizarse para realizar la BVSP.
A fin de estimar la información de profundidad para un bloque, se propone derivar en primer lugar un vector de disparidad a partir de los bloques contiguos, y después utilizar el vector de disparidad derivado para obtener un bloque de profundidad a partir de una vista de referencia. En el Modelo de prueba 5.1 de 3D-HEVC (es decir, el modelo de prueba HTM 5.1), existe un proceso para derivar un predictor del vector de disparidad, conocido como el proceso de derivación NBDV. Indicando (dvx , dvy) el vector de disparidad identificado a partir del proceso de derivación NBDV, y la posición del bloque actual es (blockx, blocky). El codificador de vídeo puede obtener un bloque de profundidad en (blockx+dvx, blocky+dvy) en la imagen de profundidad de la vista de referencia. El bloque de profundidad obtenido puede tener el mismo tamaño que la PU actual. El codificador de vídeo puede entonces utilizar el bloque de profundidad obtenido para hacer deformación hacia atrás para la PU actual. La figura 7 es un diagrama conceptual que ilustra derivación de bloque de profundidad desde una vista de referencia para realizar la BVSP. La figura 7 ilumina tres etapas de cómo se ubica un bloque de profundidad a partir de la vista de referencia y después se utiliza para la predicción de BVSP.
Si se habilita la BVSP en la secuencia, el proceso de derivación NBDV para la predicción de movimiento intervista puede cambiarse y las diferencias se muestran en los siguientes párrafos:
• Para cada uno de los bloques temporales contiguos, si el bloque temporal contiguo utiliza un vector de movimiento de disparidad, el vector de movimiento de disparidad se devuelve como el vector de disparidad y se refina adicionalmente con el método descrito en cualquier parte de esta divulgación.
• Para cada uno de los bloques espaciales contiguos se aplica lo siguiente:
o Para cada lista de imágenes de referencia 0 o lista de imágenes de referencia 1, se aplica lo siguiente:
■ Si el bloque espacial contiguo utiliza un vector de movimiento de disparidad, el vector de movimiento de disparidad se devuelve como el vector de disparidad y se refina adicionalmente con el método descrito en otra parte de esta divulgación.
■ Por otra parte, si el bloque espacial contiguo utiliza el modo BVSP, el vector de movimiento asociado puede ser devuelto como el vector de disparidad. El vector de disparidad puede refinarse adicionalmente de una manera similar a la descrita en otra parte en esta divulgación. Sin embargo, el valor de profundidad máximo puede seleccionarse entre todos los píxeles del bloque de profundidad correspondiente en lugar de los píxeles de las cuatro esquinas.
Para cada uno de los bloques espaciales contiguos, si el bloque espacial contiguo utiliza un IDV, el IDV se devuelve como el vector de disparidad. El codificador de vídeo puede refinar adicionalmente el vector de disparidad utilizando uno o más de los métodos descritos en otra parte de esta divulgación.
El codificador de vídeo puede tratar el modo de BVSP descrito anteriormente como un modo intercodificado especial y el codificador de vídeo puede mantener una marca de indicación del uso del modo de BVSP para cada PU. En lugar de señalar la marca en el flujo de bits, el codificador de vídeo puede añadir un nuevo candidato de fusión (candidato de fusión de BVSP) a una lista de candidatos de fusión y la marca depende de si un índice de candidato de fusión decodificado corresponde a un candidato de fusión de BVSP. En algunos ejemplos, el candidato de fusión de BVSP se define de la siguiente manera:
• Índice de imagen de referencia para cada lista de imágenes de referencia: -1
• Vector de movimiento para cada lista de imágenes de referencia: el vector de disparidad refinado
En algunos ejemplos, la posición de inserción de un candidato de fusión de BVSP depende de los bloques espaciales contiguos. Por ejemplo, si cualquiera de los cinco bloques espaciales contiguos (Ao, Bo, B1 o B2) se codifica con el modo de BVSP, es decir, la marca mantenida del bloque contiguo es igual a 1, el codificador de vídeo puede tratar el candidato de fusión de BVSP como el candidato de fusión espacial correspondiente y puede insertar el candidato de fusión de BVSP en la lista de candidatos de fusión. El codificador de vídeo puede insertar únicamente el candidato de fusión de BVSP en la lista de candidatos de fusión una vez. Por otra parte, en este ejemplo, (por ejemplo, cuando ninguno de los cinco bloques espaciales contiguos está codificado con el modo de BVSP), el codificador de vídeo puede insertar el candidato de fusión de BVSP en la lista de candidatos de fusión inmediatamente antes de cualquiera de los candidatos de fusión temporales. Durante un proceso de derivación de candidato de fusión bipredictivo combinado, el codificador de vídeo puede comprobar condiciones adicionales para evitar incluir el candidato de fusión de BVSP.
Para cada PU codificada con BVSP, el codificador de vídeo puede dividir además la BVSP en varias subregiones con el tamaño igual a KxK (en el que K puede ser 4 o 2). El tamaño de la PU codificada con BVSP puede indicarse mediante NxM. Para cada subregión, el codificador de vídeo puede derivar un vector de movimiento de disparidad separado.
Además, el codificador de vídeo puede predecir cada subregión desde un bloque ubicado por el vector de movimiento de disparidad derivado en la imagen de referencia intervista. En otras palabras, el tamaño de la unidad de compensación de movimiento para PU codificadas con BVSP es establece en KxK. En algunas condiciones de prueba, K se establece en 4.
Con respecto a la BVSP, el codificador de vídeo puede realizar el siguiente proceso de derivación del vector de movimiento de disparidad. Para cada subregión (bloque de 4x4) dentro de una Pu codificada con el modo de BVSP, el codificador de vídeo puede ubicar en primer lugar un bloque de profundidad de 4x4 correspondiente en la vista de profundidad de referencia con el vector de disparidad refinado mencionado anteriormente. En segundo lugar, el codificador de vídeo puede seleccionar el valor máximo de los dieciséis píxeles de profundidad en el bloque de profundidad correspondiente. En tercer lugar, el codificador de vídeo puede convertir el valor máximo en el componente horizontal de un vector de movimiento de disparidad. El codificador de vídeo puede establecer el componente vertical del vector de movimiento de disparidad en 0.
Basándose en el vector de disparidad derivado de las técnicas de DoNBDV, el codificador de vídeo puede añadir un nuevo vector de movimiento candidato (es decir, un candidato de vector de movimiento predicho intervista (IPMVC)), si está disponible, a los modos AMVP y de omisión/fusión. El IPMVC, si está disponible, es un vector de movimiento temporal. Como el modo de omisión tiene el mismo proceso de derivación del vector de movimiento que el modo de fusión, las técnicas descritas en este documento pueden aplicarse a los modos de fusión y de omisión.
Para el modo de fusión/omisión, el IPMVC puede derivarse mediante las siguientes etapas. Primera, el codificador de vídeo puede ubicar, utilizando el vector de disparidad, un bloque correspondiente del bloque actual (por ejemplo, una PU, una CU, etc.) en una vista de referencia de la misma unidad de acceso. Segunda, si el bloque correspondiente no está intracodificado y no está predicho intervista y una imagen de referencia del bloque correspondiente tiene un valor de POC igual al de una entrada en la misma lista de imágenes de referencia del bloque actual, el codificador de vídeo puede convertir el índice de referencia del bloque correspondiente basado en valores de POC. Además, el codificador de vídeo puede derivar el IPMVC para especificar la dirección de predicción del bloque correspondiente, los vectores de movimiento del bloque correspondiente y los índices de referencia convertidos.
La sección H.8.5.2.1.10 del Modelo de prueba 4 de 3D-HEVC describe un proceso de derivación para un candidato de vector de movimiento temporal intervista. Un IPMVC puede denominarse como un candidato de vector de movimiento temporal intervista debido a que indica una ubicación en una imagen de referencia temporal. Como se describe en la sección H.8.5.2.1.10 del Modelo de prueba 4 de 3D-HEVC, una ubicación de luminancia de capa de referencia (xRef, yRef) se deriva mediante:
xRef = Clip3( 0, PicWidthlnSamplesL - 1, xP ( ( nPSW - 1 ) » 1 )
( ( mvDisp[ 0 ] 2 ) » 2 ) )(H-124)
yRef = Clip3( 0, PicHeightInSamplesL - 1, yP ( ( nPSH - 1 ) » 1 )
( ( mvDisp[ 1 ] 2 ) » 2 ) )(H-125)
En las ecuaciones H-124 y H-125 anteriores, (xP, yP) indican coordenadas de una muestra de luminancia de arriba a la izquierda de la PU actual con respecto a una muestra de luminancia de arriba a la izquierda de la imagen actual, nPSW y nPSH indican la anchura y la altura de la unidad de predicción actual, respectivamente, refViewldx indica un índice de orden de vista de referencia y mvDisp indica un vector de disparidad. El bloque correspondiente se establece en una PU que cubre la ubicación de luminancia (xRef, yRef) en un componente de vista con el Viewldx igual al refViewldx. En las ecuaciones H-124 y H-125 anteriores, y otras ecuaciones en esta divulgación, la función Clip3 puede definirse como:
Figure imgf000019_0001
La figura 8 es un diagrama conceptual que ilustra una derivación de ejemplo de un IPMVC para el modo de fusión/omisión. En otras palabras, la figura 8 muestra un ejemplo del proceso de derivación del candidato predicho de vector de movimiento intervista. En el ejemplo de la figura 8, una PU actual 50 sucede en la vista VI en una instancia de tiempo T1. Una PU de referencia 52 para la PU actual 50 sucede en un vídeo diferente que la PU actual 50 (es decir, la vista VO) y en la misma instancia de tiempo que la PU actual (es decir, la instancia de tiempo T1). En el ejemplo de la figura 8, la PU de referencia 52 se interpredice bidireccionalmente. Por tanto, la PU de referencia 52 tiene un primer vector de movimiento 54 y un segundo vector de movimiento 56. El vector de movimiento 54 indica una posición en una imagen de referencia 58. La imagen de referencia 58 sucede en la vista VO y en la instancia de tiempo TO. El vector de movimiento 56 indica una posición en la imagen de referencia 60. La imagen de referencia 60 sucede en la vista VO y en la instancia de tiempo T3.
El codificador de vídeo puede generar, basándose en la información de movimiento de la PU de referencia 52, un IPMVC para la inclusión en una lista de candidatos de fusión de la PU actual 50. El IPMVC puede tener un primer vector de movimiento 62 y un segundo vector de movimiento 64. El vector de movimiento 62 coincide con el vector de movimiento 54 y el vector de movimiento 64 coincide con el vector de movimiento 56. El codificador de vídeo genera el IPMVC de manera que un primer índice de referencia del IPMVC indica una posición en la RefPicList0 para la PU actual 50 de una imagen de referencia (es decir, la imagen de referencia 66) que sucede en la misma instancia de tiempo que la imagen de referencia 58 (es decir, la instancia de tiempo TO). En el ejemplo de la figura 8, la imagen de referencia 66 sucede en la primera posición (es decir, Ref0) en la RefPicList0 para la PU actual 50. Además, el codificador de vídeo genera el IPMVC de manera que un segundo índice de referencia del IPMVC indica una posición en la RefPicList1 para la PU actual 50 de una imagen de referencia (es decir, la imagen de referencia 68) que sucede en la misma instancia de tiempo que la imagen de referencia 60. Por tanto, en el ejemplo de la figura 8, el índice de referencia de la RefPicList0 del IPMVC puede ser igual a 0. En el ejemplo de la figura 8, una imagen de referencia 70 sucede en la primera posición (es decir, Ref0) en la RefPicList1 para la PU actual 50 y la imagen de referencia 68 sucede en la siguiente posición (es decir, Ref1) en la RefPicList1 para la PU actual 50. Por tanto, el índice de referencia RefPicList1 del IPMVC puede ser igual a 1.
Además de generar el IPMVC e incluir el IPMVC en la lista de candidatos de fusión, el codificador de vídeo puede convertir el vector de disparidad para la PU actual en un vector de movimiento de disparidad intervista (IDMVC) y puede incluir el IDMVC en una lista de candidatos de fusión para la PU actual. En otras palabras, el vector de disparidad puede convertirse en un IDMVC, que se añade en una lista de candidatos de fusión en una posición diferente de un IPMVC, o se añada en la lista de candidatos de AMVP en la misma posición que el IPMVC cuando el IDMVC está disponible. Tanto IPMVC como IDMVC se llaman "candidato intervista" en este contexto. En otras palabras, la expresión "candidato intervista" puede utilizarse para referirse tanto a un IPMVC como a un IDMVC. En algunos ejemplos, en el modo de fusión/omisión, el codificador de vídeo siempre inserta un IPMVC, si está disponible, en la lista de candidatos de fusión antes que todos los candidatos de fusión espaciales y temporales. Además, el codificador de vídeo puede insertar el IDMVC antes del candidato de fusión espacial derivado de A0.
Como se ha indicado anteriormente, un codificador de vídeo puede derivar un vector de disparidad con el método de DoNBDV. Con el vector de disparidad, el proceso de construcción de la lista de candidatos de fusión en 3D-HEVC puede definirse de la siguiente manera:
1. Inserción de IPMVC
Un IPMVC se deriva mediante el procedimiento descrito anteriormente. Si el IPMVC está disponible, el IPMVC se inserta en la lista de fusión.
2. Proceso de derivación para candidatos de fusión espaciales e inserción de IDMVC en 3D-HEVC
Comprobar la información de movimiento de las PU espaciales contiguas en el siguiente orden: A1, B1, B0 , A0 o B2. El recorte restringido se realiza mediante los siguientes procedimientos:
-S i A1 e IPMVC tienen los mismos vectores de movimiento y los mismos índices de referencia, A1 no se inserta en la lista de candidatos; de lo contrario, A1 se inserta en la lista.
-S i B1 y A1/IPMVC tienen los mismos vectores de movimiento y los mismos índices de referencia, B1 no se inserta en la lista de candidatos; de lo contrario, B1 se inserta en la lista.
- Si B0 está disponible, B0 se añade a la lista de candidatos. Un IDMVC se deriva mediante el procedimiento descrito anteriormente. Si el IDMVC está disponible y el IDMVC es diferente de los candidatos derivados de A1 y B1, el IDMVC se inserta en la lista de candidatos.
- Si BVSP está habilitada para toda la imagen o para el segmento actual, entonces el candidato de fusión de BVSP se inserta en la lista de candidatos de fusión.
- Si A0 está disponible, A0 se añade a la lista de candidatos.
- Si B2 está disponible, B2 se añade a la lista de candidatos.
3. Proceso de derivación para candidato de fusión temporal
De un modo similar al proceso de derivación del candidato de fusión temporal en e1 HEVC donde se utiliza la información de movimiento de la PU coubicada, sin embargo, el índice objetivo de la imagen de referencia del candidato de fusión temporal puede cambiarse en lugar de fijarse a 0. Cuando el índice de referencia objetivo igual 0 corresponde a una imagen de referencia temporal (en la misma vista) mientras el vector de movimiento de la PU coubicada apunta a una imagen de referencia intervista, el índice de referencia objetivo puede cambiarse a otro índice que corresponde a la primera entrada de la imagen de referencia intervista en la lista de imágenes de referencia. Por el contrario, cuando el índice de referencia objetivo igual a 0 corresponde a una imagen de referencia intervista mientras el vector de movimiento de la PU coubicada apunta a una imagen de referencia temporal, el índice de referencia objetivo puede cambiarse a otro índice que corresponde a la primera entrada de la imagen de referencia temporal en la lista de imágenes de referencia.
4. Proceso de derivación para candidatos de fusión predictivos combinados en 3D-HEVC
Si el número total de candidatos derivados de las dos etapas anteriores es inferior al número máximo de candidatos, se realiza el mismo proceso que se define en HEVC excepto la especificación de 10CandIdx y 11CandIdx. La figura 9 es una tabla que indica un ejemplo de especificación de 10CandIdx y 11CandIdx en 3D-HEVC. La relación entre combldx, 10CandIdx y 11CandIdx se define en la tabla de la figura 9. La sección 8.5.3.2.3 del Borrador de trabajo 10 de HEVC define un uso de ejemplo de 10CandIdx y 11CandIdx en la derivación de candidatos de fusión bipredictivos combinados.
5. Proceso de derivación para candidatos de fusión de vector de movimiento cero
- Se realiza el mismo procedimiento que se define en HEVC.
En alguna versión del software de referencia para 3D-HEVC, el número total de candidatos en la lista de fusión (por ejemplo, MRG) es hasta seis y se señala five_minus_max_num_merge_cand para especificar el número máximo de los candidatos de fusión restados de 6 en el encabezado del segmento. five_minus_max_num_merge_cand está en el intervalo de 0 a 5, ambos incluidos. El elemento de sintaxis five_minus_max_num_merge_cand puede especificar el número máximo de candidatos de MVP de fusión soportados en el segmento restado de 5. El número máximo de candidatos de predicción del vector de movimiento de fusión (MVP), MaxNumMergeCand puede calcularse como MaxNumMergeCand = 5 - five_minus_max_num_merge_cand iv_mv_pred_flag[ nuh_layer_id]. El valor de five_minus_max_num_merge_cand puede limitarse de tal modo que MaxNumMergeCand esté en el intervalo de 0 a (5 iv_mv_pred_flag[ nuh_layer_id ]), ambos incluidos.
Como se ha indicado anteriormente, la sección 8.5.3.2.3 del Borrador de trabajo 10 de HEVC define un uso de ejemplo de 10CandIdx y 11CandIdx en la derivación de candidatos de fusión bipredictivos combinados. La sección 8.5.3.2.3 del Borrador de trabajo 10 de HEVC se reproduce más adelante.
Proceso de derivación para candidatos de fusión bipredictivos combinados
Las entradas a este proceso son:
- una lista de candidatos de fusión mergeCandList,
- los índices de referencia refIdxL0N y refIdxL1N de cada candidato N en la mergeCandList,
- las marcas de utilización de la lista de predicción predFlagLON y predFlagLIN de cada candidato N en la mergeCandList,
- los vectores de movimiento mvLON y mvLIN de cada candidato N en la mergeCandList,
- el número de elementos numCurrMergeCand dentro de la mergeCandList,
- el número de elementos numOrigMergeCand dentro de la mergeCandList después del proceso de derivación de candidatos de fusión espaciales y temporales.
Las salidas de este proceso son:
- la lista de candidatos de fusión mergeCandList,
- el número de elementos numCurrMergeCand dentro de la mergeCandList,
- los índices de referencia refIdxL0combCandk y refIdxL1combCandk de cada nuevo candidato combCandk añadido en la mergeCandList durante la invocación de este proceso,
- las marcas de utilización de la lista de predicción predFlagL0combCandk y predFlagL1combCandk de cada nuevo candidato combCandk añadido en la mergeCandList durante la invocación de este proceso,
- los vectores de movimiento mvL0combCandk y mvL1combCandk de cada nuevo candidato combCandk añadido en la mergeCandList durante la invocación de este proceso.
Cuando numOrigMergeCand es mayor que 1 y menor que MaxNumMergeCand, la variable numInputMergeCand se establece igual a numCurrMergeCand, la variable combldx se establece igual a 0, la variable combStop se establece igual a FALSE, y las siguientes etapas se repiten hasta que combStop es igual a TRUE:
1. Las variables 10CandIdx y 11CandIdx se derivan utilizando el combldx según se especifica en la Tabla 8-6.
2. Se realizan las siguientes asignaciones, siendo 10Cand el candidato en la posición 10CandIdx y siendo 11Cand el candidato en la posición 11CandIdx en la lista de candidatos de fusión mergeCandList:
- 10Cand = mergeCandList[ 10CandIdx ]
- 11Cand = mergeCandList[ 11CandIdx ]
3. Cuando todas las siguientes condiciones son verdaderas:
- predFlagL010Cand = = 1
- predFlagL111Cand = = 1
-( DiffPicOrderCnt( RefPicList0[ refIdxL010Cand ], RefPicListl [ refIdxL11 ICand ]) != 0 ) ||
(mvL010Cand != mvL111Cand)
el candidato combCandk con k igual a
(numCurrMergeCand - numInputMergeCand) se añade al final de la mergeCandList, es decir mergeCandList[numCurrMergeCand ] se establece igual a combCandk, y los índices de referencia, las marcas de utilización de la lista de predicción y los vectores de movimiento de combCandk se derivan de la siguiente manera y numCurrMergeCand se incrementa en 1:
refIdxL0combCandk = refIdxL010Cand (8-113)
refIdxL1combCandk = refldxLlllCand (8-114)
predFlagL0combCandk = 1 (8-115)
predFlagL1combCandk = 1 (8-116)
mvL0combCandk[ 0 ] = mvL010Cand[ 0 ] (8-117)
mvL0combCandk[ 1 ] = mvL010Cand[ 1 ] (8-118)
mvL1combCandk[ 0 ] = mvL111Cand[ 0 ] (8-119)
mvL1combCandk[ 1 ] = mvL111Cand[ 1 ] (8-120)
numCurrMergeCand = numCurrMergeCand 1 (8-121)
4. El combldx de la variable se incrementa en 1.
5. Cuando combldx es igual a ( numOrigMergeCand * ( numOrigMergeCand - 1 )) o numCurrMergeCand es igual a MaxNumMergeCand, combStop se establece igual a TRUE.
La herencia de vector de movimiento (MVI) explota la similitud de las características de movimiento entre las imágenes de textura y sus imágenes de profundidad asociadas. En particular, un codificador de vídeo puede incluir un candidato de MVI en una lista de candidatos de fusión. Para una Pu dada en la imagen de profundidad, el candidato de MVI rechaza utilizar los vectores de movimiento y los índices de referencia del correspondiente bloque de textura ya codificado, si está disponible. La figura 10 es un diagrama conceptual que ilustra una derivación de ejemplo de un candidato de herencia de vector de movimiento para codificación de profundidad. La figura 10 muestra un ejemplo del proceso de derivación del candidato de MVI, donde el bloque de textura correspondiente se selecciona como el bloque de 4x4 ubicado abajo a la derecha del centro de la PU actual.
En algunos ejemplos, se utilizan vectores de movimiento con precisión de número entero en la codificación de profundidad mientras que la precisión de un cuarto de los vectores de movimiento se utiliza para la codificación de textura. Por lo tanto, el vector de movimiento del bloque de textura correspondiente puede escalarse antes su utilización como un candidato de MVI.
Con la generación del candidato de MVI, la lista de candidatos de fusión para las vistas de profundidad puede construirse de la siguiente manera:
1. Inserción de MVI
Un MVI se deriva mediante el procedimiento descrito anteriormente. Si el MVI está disponible, el codificador de vídeo puede insertar el MVI en la lista de fusión.
2. Proceso de derivación para candidatos de fusión espaciales e inserción de IDMVC en 3D-HEVC
Comprobar la información de movimiento de las PU espaciales contiguas en el siguiente orden: A1, B1, B0, A0 o B2. El codificador de vídeo puede realizar un recorte restringido mediante los siguientes procedimientos:
-S i A1 y MVI tienen los mismos vectores de movimiento y los mismos índices de referencia, el codificador de vídeo no inserta el A1 en la lista de candidatos.
-S i B1 y A1/MVI tienen los mismos vectores de movimiento y los mismos índices de referencia, el codificador de vídeo no inserta B1 en la lista de candidatos.
- Si B0 está disponible, el codificador de vídeo añade B0 a la lista de candidatos.
- Si A0 está disponible, el codificador de vídeo añade A0 a la lista de candidatos.
- Si B2 está disponible, el codificador de vídeo añade B2 a la lista de candidatos.
3. Proceso de derivación para candidato de fusión temporal
Similar to el proceso de derivación de candidato de fusión temporal en HEVC donde se utiliza la información de movimiento de la PU coubicada, sin embargo, el índice de imagen de referencia objetivo del candidato de fusión temporal puede cambiarse como se explica en otra parte en esta divulgación con respecto a la construcción de la lista de candidatos de fusión para la codificación de textura en 3D-HEVC, en lugar de fijar el índice de imagen de referencia objetivo para que sea 0.
4. Proceso de derivación para candidatos de fusión predictivos combinados en 3D-HEVC
Si el número total de candidatos derivados de las dos etapas anteriores es menor que el número máximo de candidatos, el codificador de vídeo puede realizar el mismo proceso que se define en HEVC excepto la especificación de 10CandIdx y 11CandIdx. La relación entre combldx, 10CandIdx y 11CandIdx se define en la tabla de la figura 9.
6. Proceso de derivación para candidatos de fusión de vector de movimiento cero
- Se realiza el mismo procedimiento que se define en HEVC.
Como se ha indicado anteriormente, 3D-HEVC proporciona una predicción residual intervista. La predicción residual avanzada (ARP) es una forma de predicción residual intervista. La aplicación de ARP a las CU con un modo de división igual a Part_2Nx2N se adoptó en el 4o encuentro de JCT3V, como se propuso en Zhang et al., "CE4: Advanced Residual Prediction for Multiview Coding", Equipo de colaboración conjunto sobre extensiones de codificación de vídeo 3D de ITU-T SG 16 WP 3 e ISO/IEC JTC 1/SC 29/WG 11,4o encuentro: Incheon, KR, 20-26 abr. de 2013, documento JCT3V-D0177, que a partir del 17 de diciembre de 2013, está disponible desde http://phenix.it-sudparis.eu/jct3v/doc_end_user/documents/4_Incheon/wg11/JCT3V-D0177-v2.zip (en lo sucesivo en el presente documento JCT3V-D0177).
La figura 11 ilustra un ejemplo de estructura de predicción de ARP en la codificación de vídeo multivista. Como se muestra en la figura 11, el codificador de vídeo puede invocar los siguientes bloques en la predicción de un bloque actual.
1. Bloque actual: Curr
2. Bloque de referencia en vista de referencia/base derivado mediante el vector de disparidad (DV): Base.
3. Un bloque en la misma vista que el bloque Curr derivado mediante el vector de movimiento (temporal) (indicado como TMV) del bloque actual: CurrTRef.
4. un bloque en la misma vista que el bloque Base derivado mediante el vector de movimiento temporal del bloque actual (TMV):
BaseTRef. Este bloque se identifica con un vector de TMV+DV comparado con el bloque actual.
El predictor residual se indica como BaseTRef-Base, en el que la operación de resta se aplica a cada píxel de las matrices de píxeles indicadas. El codificador de vídeo puede multiplicar un factor de ponderación w por el predictor residual. Por lo tanto, el predictor final del bloque actual puede indicarse como: CurrTRef+ w*(BaseTRef-Base).
La descripción anterior y la figura 11 se basan ambas en la premisa de que se aplica una predicción unidireccional. Cuando se extienden al caso de una predicción bidireccional, las etapas anteriores se aplican para cada lista de imágenes de referencia. Cuando el bloque actual utiliza una imagen de referencia intervista (en un vídeo diferente) para una lista de imágenes de referencia, se inhabilita el proceso de predicción residual.
Los procedimientos principales de la ARP propuesta en el lado del decodificador pueden describirse de la siguiente manera. Primero, el codificador de vídeo puede obtener un vector de disparidad según se especifica en el borrador de trabajo 4 de 3D-HEVC, lo que apunta a una vista de referencia objetivo. Después, en la imagen de la vista de referencia dentro de la misma unidad de acceso que la imagen actual, el codificador de vídeo puede utilizar el vector de disparidad para ubicar el bloque correspondiente. A continuación, el codificador de vídeo puede reutilizar la información de movimiento del bloque actual para derivar la información de movimiento para el bloque de referencia. El codificador de vídeo puede entonces aplicar una compensación de movimiento para el bloque correspondiente basada en el mismo vector de movimiento del bloque actual y la imagen de referencia derivada en la vista de referencia para el bloque de referencia, para derivar un bloque residual. La figura 12 muestra la relación entre el bloque actual, el bloque correspondiente y el bloque compensado de movimiento. En otras palabras, la figura 12 es un diagrama conceptual que ilustra una relación de ejemplo entre un bloque actual, un bloque de referencia y bloques de movimiento compensados. La imagen de referencia en la vista de referencia (V0), que tiene el mismo valor de POC (recuento de orden de imagen) que la imagen de referencia de la vista actual (Vm) se selecciona como la imagen de referencia del bloque correspondiente. A continuación, el codificador de vídeo puede aplicar el factor de ponderación al bloque residual para determinar un bloque residual ponderado. El codificador de vídeo puede añadir los valores del bloque residual ponderado a las muestras predichas.
Se utilizan tres factores de ponderación en la ARP, es decir, 0, 0,5 y 1. El codificador de vídeo 20 puede seleccionar el factor de ponderación que conduce a un coste mínimo de distorsión de velocidad para la CU actual como el factor de ponderación final. El codificador de vídeo 20 puede señalar el índice de factor de ponderación correspondiente (0, 1 y 2 que corresponden al factor de ponderación 0, 1 y 0,5, respectivamente) en el flujo de bits en el nivel de la CU. Todas las predicciones de PU en una CU pueden compartir del mismo factor de ponderación. Cuando el factor de ponderación es igual a 0, el codificador de vídeo no utiliza ARP para la CU actual.
En Zhang et al., "3D-CE4: Advanced Residual Prediction for Multiview Coding," Equipo de colaboración conjunto sobre desarrollo de extensión de codificación de vídeo 3D de ITU-T SG 16 WP 3 e iSo /IEC JTC 1/SC 29/Wg 11, 3er encuentro: Ginebra, CH, 17-23 ene. de 2013, documento JCT3V-C0049, que como el del 30 de agosto de 2013, está disponible a partir de http://phenix.int- evry.fr/jct3v/doc_end_user/documents/3_Geneva/wg11/JCT3V-C0049-v2.zip (en lo sucesivo en el presente documento, JCT3V-C0049), las imágenes de referencia de las PU codificadas con factores de ponderación distintos de cero pueden ser diferentes de un bloque a otro bloque. Por lo tanto, el codificador de vídeo puede necesitar acceder a diferentes imágenes de la vista de referencia para generar el bloque con movimiento compensado (es decir, BaseTRef en el ejemplo de la figura 11) del bloque correspondiente. El codificador de vídeo puede escalar los vectores de movimiento decodificados de la PU actual hacia una imagen fija antes de realizar la compensación de movimiento para el proceso de generación residual, cuando el factor de ponderación no es igual a 0. En JCT3V-D0177, la imagen fija se define como la primera imagen de referencia de cada lista de imágenes de referencia si se trata de la misma vista. Cuando el vector de movimiento decodificado no apunta a la imagen fija, el codificador de vídeo puede escalar en primer lugar el vector de movimiento decodificado y después utilizar el vector de movimiento escalado para identificar CurrTRef y BaseTRef. Dicha imagen de referencia utilizada para ARP puede denominarse como la imagen de referencia de ARP objetivo.
En JCT3V-C0049, el codificador de vídeo puede aplicar un filtro bilineal durante el proceso de interpolación del bloque correspondiente y un bloque de predicción del bloque correspondiente. Aunque para el bloque de predicción de la PU actual en las vistas no de base, el codificador de vídeo puede aplicar un filtro de derivación de 8/4 convencional. JCT3V-D0177 propone emplear siempre bilineal independientemente de si el bloque está en la vista de base o la vista no de base cuando se aplica la ARP.
En la ARP, el codificador de vídeo puede identificar la vista de referencia por el índice del orden de vista devuelto desde el proceso de derivación NBDv . En algunos diseños de ARP, cuando la imagen de referencia de una PU en una lista de imágenes de referencia es desde una vista diferente de la vista actual, la ARP se deshabilita para esta lista de imágenes de referencia.
En las Solicitudes de Patente Provisionales de Estados Unidos 61/840.400, presentada el 28 de junio de 2013 y 61/847.942, presentada el 18 de julio de 2013, todo el contenido de cada una de las mismas se incorpora por referencia, cuando se codifica una imagen de profundidad, un vector de disparidad se convierte mediante un valor de profundidad estimado de las muestras contiguas del bloque actual. Además, puede derivarse más candidatos de fusión, por ejemplo, accediendo al bloque de referencia de la vista de base identificada por un vector de disparidad.
En 3D-HEVC, un codificador de vídeo puede identificar un bloque de referencia de 4x4 mediante dos etapas. La primera etapa es para identificar un píxel con un vector de movimiento de disparidad. La segunda etapa es para obtener el bloque de 4x4 (con un conjunto único de información de movimiento correspondiente a la RefPicList0 o la RefPicList1, respectivamente) y utilizar la información de movimiento para crear un candidato de fusión.
El píxel (xRef, yRef) en la vista de referencia puede identificarse de la siguiente manera:
xRef = Clip3( 0, PicWidthInSamplesL - 1, xP (( nPSW - 1 ) » 1 )
(( mvDisp[ 0 ] 2 ) » 2 )) (H-124)
yRef = Clip3( 0, PicHeightInSamplesL - 1, yP ( ( nPSH - 1 ) » 1 )
(( mvDisp[ l ] 2 ) » 2 ) ) (H-125)
en las que (xP, yP) es la coordinación de la muestra de arriba a la izquierda de la PU actual, mvDisp es el vector de disparidad y nPSWxnPSH es el tamaño de la PU actual y PicWidthInSamplesL y PicHeightInSamplesL definen la resolución de la imagen en la vista de referencia (la misma que la vista actual).
An et al., "3D-CE3.h related: Sub-PU level inter-view motion prediction", Equipo de colaboración conjunto sobre codificación de vídeo de extensiones 3D de ITU-T SG 16 WP 3 e ISO/IEC JTC 1/SC 29/WG 11, 5o Encuentro: Viena, AT, del 27 de julio al 2 de ago. de 2013, documento JCT3V-E0184 (en lo sucesivo en el presente documento, "JCT3V-E0184"), que a partir del 17 de diciembre de 2013 está disponible desde http://phenix.it-sudparis.eu/jct2/doc_end_user/documents/5_Vienna/wg11/JCT3V-E0184-v2.zip propone una método de predicción de movimiento intervista a nivel de sub-PU para el candidato de fusión intervista temporal (es decir, el candidato derivado de un bloque de referencia en la vista de referencia). El concepto básico de la predicción de movimiento intervista se describe en otra parte en esta divulgación. El concepto básico de la predicción de movimiento intervista, solo se utiliza la información de movimiento del bloque de referencia para la PU actual en la vista dependiente. Sin embargo, la PU actual puede corresponder a un área de referencia (con el mismo tamaño que la PU actual identificada por el vector de disparidad de la PU actual) en la vista de referencia y el área de referencia puede tener una abundante información de movimiento. Por lo tanto, se propone un método de predicción de movimiento intervista a nivel de sub-PU (SPIVMP) como se muestra en la figura 13. En otras palabras, la figura 13 es un diagrama conceptual que ilustra un ejemplo de predicción de movimiento intervista de sub-PU.
El candidato de fusión intervista temporal puede derivarse de la siguiente manera. En el proceso de derivación para el candidato de fusión intervista temporal, el tamaño de la sub-PU asignada puede indicarse como NxN. Pueden aplicarse diferentes tamaños de bloque de sub-PU, por ejemplo, 4x4, 8x8 y 16x16.
En el proceso de derivación para el candidato de fusión intervista temporal, el codificador de vídeo puede dividir en primer lugar la PU actual en múltiples sub-PU, cada una de las cuales tiene un tamaño más pequeño que la PU actual. El tamaño de la PU actual puede indicarse mediante nPSW x nPSH. Los tamaños de las sub-PU pueden indicarse mediante nPSWsub x nPSHSub. nPSWsub y nPSHsub pueden relacionarse con nPSW y nSPH como se muestra en las siguientes ecuaciones.
nPSWsub = min(N, nPSW)
nPSHSub = min(N, nPSH)
Además, el codificador de vídeo puede establecer un vector de movimiento predeterminado tmvLX en (0, 0) y puede establecer un índice de referencia refLX en -1 (siendo X 0 o 1) para cada lista de imágenes de referencia.
Además, al determinar el candidato de fusión intervista temporal, el codificador de vídeo puede aplicar las siguientes acciones para cada sub-PU en el orden de exploración de trama. Primero, el codificador de vídeo puede añadir el vector de disparidad a una posición media de la sub-PU actual (cuya ubicación de muestra arriba a la izquierda es (xPSub, yPSub)) para obtener una ubicación de la muestra de referencia (xRefSub, yRefSub). El codificador de vídeo puede determinar (xRefSub, yRefSub) utilizando las siguientes ecuaciones:
xRefSub = Clip3( 0, PicWidthlnSamplesL - 1, xPSub nPSWsub/2
( ( mvDisp[ 0 ] 2 ) » 2 ) )
yRefSub = Clip3( 0, PicHeightlnSamplesL - 1, yPSub nPSHSub /2
( ( mvDisp[ l ] 2 ) » 2 ) )
El codificador de vídeo puede utilizar un bloque en la vista de referencia que cubre (xRefSub, yRefSub) como el bloque de referencia para la sub-PU actual.
Si el bloque de referencia identificado se codifica utilizando vectores de movimiento temporales y si refL0 y refL1 son iguales a -1 y la sub-PU actual no es la primera en el orden de exploración de trama, la información de movimiento del bloque de referencia es heredada por todas las sub-PU previas. Además, si el bloque de referencia identificado se codifica utilizando vectores de movimiento temporales, los parámetros de movimiento asociados pueden utilizarse como parámetros de movimiento para la sub-PU actual. Además, si el bloque de referencia identificado se codifica utilizando vectores de movimiento temporales, el codificador de vídeo puede actualizar tmvLX y refLX a la información de movimiento de la sub-PU actual. Por otra parte, si el bloque de referencia está intracodificado, el codificador de vídeo puede establecer la información de movimiento de la sub-PU actual en tmvLX y refLX.
El método de predicción del movimiento de sub-PU como se propone en JCT3V-E0184 tiene uno o más problemas. Por ejemplo, cuando el bloque correspondiente de una sub-PU en una vista de referencia está intracodificado (es decir, su información de movimiento no está disponible), la información de movimiento de la sub-PU más cercana en el orden de exploración de trama se copia en la sub-PU actual. Por lo tanto, si los bloques correspondientes de las primeras N sub-PU en el orden de exploración de trama están intracodificadas y el bloque correspondiente de la (N+1)-ésima sub-PU esta intercodificado, la información de movimiento relacionada establecida en la (N+1)-ésima sub-PU se copiará en las primeras N sub-PU, lo que provoca una complejidad adicional y un retraso en la codificación.
Uno o más ejemplos de esta divulgación están relacionados con la predicción de movimiento intervista. Por ejemplo, uno o más ejemplos de esta divulgación son aplicables en el contexto cuando el índice de fusión indica predicción de movimiento intervista.
Por ejemplo, en un ejemplo, cuando un codificador de vídeo utiliza predicción de movimiento intervista en una forma de sub-PU, si una sub-PU actual para la cual no está disponible la información de movimiento, un codificador de vídeo puede copiar la información de movimiento de los vectores de movimiento predeterminados y los índices de referencia. Por ejemplo, si la información de movimiento para la sub-PU actual no está disponible, un codificador de vídeo puede copiar la información de movimiento para la sub-PU actual de vectores de movimiento predeterminados e índices de referencia predeterminados. En este ejemplo, los parámetros de movimiento predeterminados son los mismos para cada sub-PU en la pluralidad de las sub-PU, independientemente de si hay sub-PU posteriores que tengan bloques de referencia que estén codificados utilizando la predicción con compensación de movimiento.
En algunos ejemplos, un codificador de vídeo (por ejemplo, el codificador de vídeo 20 o el decodificador de vídeo 30) pueden dividir una PU actual en una pluralidad de sub-PU. La PU actual está en una imagen actual. Además, el codificador de vídeo puede determinar parámetros de movimiento predeterminados. Los parámetros de movimiento predeterminados pueden incluir uno o más vectores de movimiento predeterminados y uno o más índices de referencia predeterminados. Además, el codificador de vídeo puede procesar varias sub-PU de la pluralidad de las sub-PU en un orden particular. Para cada sub-PU respectiva de la pluralidad de las sub-PU, el codificador de vídeo puede determinar un bloque de referencia para la sub-PU respectiva.
En algunos ejemplos, la imagen de referencia puede estar en un vídeo diferente de la imagen actual y el codificador de vídeo puede determinar, basándose en un vector de disparidad de la PU actual, una ubicación de la muestra de referencia en la imagen de referencia. En tales ejemplos, el bloque de referencia para la sub-PU respectiva puede cubrir la ubicación de la muestra de referencia. En otros ejemplos, la imagen actual es un componente de vista de profundidad y la imagen de referencia es un componente de vista de textura que está en la misma vista y unidad de acceso que la imagen actual. En tales ejemplos, el codificador de vídeo puede determinar que el bloque de referencia para la sub-PU respectiva es una PU de la imagen de referencia que está coubicada con la sub-PU respectiva.
Además, para cada sub-PU respectiva de la pluralidad de las sub-PU (o un subconjunto de la pluralidad de las sub-PU), si el bloque de referencia para la sub-PU respectiva se codifica utilizando la predicción con compensación de movimiento, el codificador de vídeo puede establecer parámetros de movimiento de la sub-PU respectiva en base a parámetros de movimiento del bloque de referencia para la sub-PU respectiva. Por otra parte, si el bloque de referencia para la sub-PU respectiva no se codifica utilizando la predicción con compensación de movimiento, el codificador de vídeo puede establecer los parámetros de movimiento de la sub-PU respectiva en los parámetros de movimiento predeterminados.
De acuerdo con uno o más ejemplos de esta divulgación, si un bloque de referencia para la sub-PU respectiva no se codifica utilizando la predicción con compensación de movimiento, los parámetros de movimiento de la sub-PU respectiva no se establecen en respuesta a una determinación posterior de que un bloque de referencia para cualquier sub-PU posterior en el orden se codifica utilizando la predicción con compensación de movimiento. Por tanto, en la situación donde un bloque de referencia para al menos una de las sub-PU no se codifica utilizando la predicción con compensación de movimiento, el codificador de vídeo puede no necesitar explorar hacia adelante para encontrar una sub-PU cuyo bloque de referencia correspondiente se codifica utilizando la predicción con compensación de movimiento. Del mismo modo, el codificador de vídeo puede no necesitar retrasar la determinación de los parámetros de movimiento de la sub-PU respectiva hasta que el codificador de vídeo encuentre, durante el procesamiento de las sub-PU, una PU cuyo bloque de referencia correspondiente se codifique utilizando la predicción con compensación de movimiento. Ventajosamente, esto puede reducir la complejidad y el retraso de la codificación.
El codificador de vídeo puede incluir un candidato en una lista de candidatos de la PU actual, en el que el candidato se basa en los parámetros de movimiento de la pluralidad de las sub-PU. En algunos ejemplos, la lista de candidatos es una lista de candidatos de fusión. Además, si el codificador de vídeo es un codificador de vídeo (por ejemplo, el codificador de vídeo 20), el codificador de vídeo puede señalar, en un flujo de bits, un elemento de sintaxis (por ejemplo, merge_idx) que indica un candidato seleccionado en la lista de candidatos. Si el codificador de vídeo es un decodificador de vídeo (por ejemplo, el decodificador de vídeo 30), el decodificador de vídeo puede obtener, desde un flujo de bits, un elemento de sintaxis (por ejemplo, merge_idx) que indica un candidato seleccionado en la lista de candidatos. El decodificador de vídeo puede utilizar parámetros de movimiento del candidato seleccionado para reconstruir un bloque predictivo para la Pu actual.
Al menos algunas de las técnicas descritas en esta divulgación pueden implementarse por separado o unas junto a otras.
La figura 14 es un diagrama de bloques que ilustra un codificador de vídeo de ejemplo 20 que puede implementar las técnicas de esta divulgación. La figura 14 se proporciona con propósitos de explicación y no debe considerarse limitante de las técnicas según se ilustran y describe ampliamente en esta divulgación. A efectos de explicación, esta divulgación describe el codificador de vídeo 20 en el contexto de codificación HEVC. Sin embargo, las técnicas de esta divulgación pueden ser aplicables a otros estándares o métodos de codificación.
En el ejemplo de la figura 14, el codificador de vídeo 20 incluye una unidad de procesamiento de predicción 100, una unidad de generación residual 102, una unidad de procesamiento de transformación 104, una unidad de cuantificación 106, una unidad de cuantificación inversa 108, una unidad de procesamiento de transformación inversa 110, una unidad de reconstrucción 112, una unidad de filtro 114, un búfer de imágenes decodificadas 116 y una unidad de codificación de entropía 118. La unidad de procesamiento de predicción 100 incluye una unidad de procesamiento de interpredicción 120 y una unidad de procesamiento de intrapredicción 126. La unidad de procesamiento de interpredicción 120 incluye una unidad de estimación del movimiento 122 y una unidad de compensación de movimiento 124. En otros ejemplos, el codificador de vídeo 20 puede incluir más, menos o diferentes componentes funcionales.
El codificador de vídeo 20 puede recibir datos de vídeo. El codificador de vídeo 20 puede codificar cada CTU en un segmento de una imagen de los datos de vídeo. Cada una de las CTU puede asociarse con bloques del árbol de codificación de luminancia del mismo tamaño (CTB) y los CTB correspondientes de la imagen. Como parte de la codificación de una CTU, la unidad de procesamiento de predicción 100 puede realizar una partición de árbol cuádruple para dividir los CTB de la CTU en bloques progresivamente más pequeños. Los bloques más pequeños pueden ser bloques de codificación de las CU. Por ejemplo, la unidad de procesamiento de predicción 100 puede dividir un CTB asociado con una CTU en cuatro subbloques de igual tamaño, dividir uno o más de los subbloques en cuatro sub-subbloques de igual tamaño, etcétera.
El codificador de vídeo 20 puede codificar las CU de una CTU para generar representaciones codificadas de las CU (es decir, CU codificadas). Como parte de la codificación de una CU, la unidad de procesamiento de predicción 100 puede dividir los bloques de codificación asociados con la CU entre una o más PU de la CU. Por tanto, cada PU puede asociarse con un bloque de predicción de luminancia y bloques de predicción de croma correspondientes. El codificador de vídeo 20 y el decodificador de vídeo 30 pueden soportar PU que tengan diversos tamaños. Como se ha indicado anteriormente, el tamaño de una CU puede referirse al tamaño del bloque de codificación de luminancia de la CU y el tamaño de una PU puede referirse al tamaño de un bloque de predicción de luminancia de la PU. Asumiendo que el tamaño de una CU particular es 2Nx2N, el codificador de vídeo 20 y el decodificador de vídeo 30 pueden soportar tamaños de PU de 2Nx2N o NxN para la intrapredicción, y tamaños de PU simétrica de 2Nx2N, 2NxN, Nx2N, NxN o similares para la interpredicción. El codificador de vídeo 20 y el decodificador de vídeo 30 también pueden soportar la partición asimétrica para tamaños de PU de 2NxnU, 2NxnD, nLx2N y nRx2N para interpredicción.
La unidad de procesamiento de interpredicción 120 puede generar datos predictivos para una PU realizando una interpredicción en cada PU de una CU. Los datos predictivos para la PU pueden incluir bloques predictivos de la PU e información de movimiento para la PU. La unidad de procesamiento de interpredicción 120 puede realizar diferentes operaciones para una PU de una CU dependiendo de si la PU está en un segmento I, un segmento P o un segmento B. En un segmento I, todas las PU se intrapredicen. Por lo tanto, si la PU está en un segmento I, la unidad de procesamiento de interpredicción 120 no realiza la interpredicción en la PU.
Si una PU está en un segmento P, la unidad de estimación del movimiento 122 puede buscar las imágenes de referencia en una lista de imágenes de referencia (por ejemplo, la "RefPicList0") para una región de referencia para la PU. La región de referencia para la PU puede ser una región, dentro de una imagen de referencia, que contiene muestras que se corresponden más estrechamente con los bloques de predicción de la PU. La unidad de estimación del movimiento 122 puede generar un índice de referencia que indica una posición en la RefPicList0 de la imagen de referencia que contiene la región de referencia para la PU. Además, la unidad de estimación del movimiento 122 puede generar un vector de movimiento que indica un desplazamiento espacial entre un bloque de codificación de la PU y una ubicación de referencia asociada con la región de referencia. Por ejemplo, el vector de movimiento puede ser un vector bidimensional que proporciona un desplazamiento desde las coordenadas en la imagen actual hasta las coordenadas en una imagen de referencia. La unidad de estimación del movimiento 122 puede generar el índice de referencia y el vector de movimiento como la información de movimiento de la PU. La unidad de compensación del movimiento 124 puede generar los bloques predictivos de la PU basándose en muestras reales o interpoladas en la ubicación de referencia indicada por el vector de movimiento de la PU.
Si una PU está en un segmento B, la unidad de estimación del movimiento 122 puede realizar una unipredicción o una bipredicción para la PU. Para realizar la unipredicción para la PU, la unidad de estimación del movimiento 122 puede buscar las imágenes de referencia de la RefPicList0 o una segunda lista de imágenes de referencia ("RefPicList1") para una región de referencia para la PU. La unidad de estimación del movimiento 122 puede generar, como la información de movimiento de la PU, un índice de referencia que indica una posición en la RefPicList0 o la RefPicList1 de la imagen de referencia que contiene la región de referencia, un vector de movimiento que indica un desplazamiento espacial entre un bloque de predicción de la PU y una ubicación de referencia asociada con la región de referencia, y uno o más indicadores de la dirección de predicción que indican si la imagen de referencia está en la RefPicList0 o en la RefPicList1. La unidad de compensación del movimiento 124 puede generar los bloques predictivos de la PU basándose, al menos en parte, en muestras reales o interpoladas en la ubicación de referencia indicada por el vector de movimiento de la PU.
Para realizar la interpredicción bidireccional para una PU, la unidad de estimación del movimiento 122 puede buscar las imágenes de referencia en la RefPicList0 para una región de referencia para la PU y también pude buscar las imágenes de referencia en la RefPicList1 para otra región de referencia para la PU. La unidad de estimación del movimiento 122 puede generar índices de referencia que indican posiciones en la RefPicList0 y la RefPicList1 de las imágenes de referencia que contienen las regiones de referencia. Además, la unidad de estimación del movimiento 122 puede generar vectores de movimiento que indican desplazamientos espaciales entre las ubicaciones de referencia asociadas con las regiones de referencia y un bloque de predicción de la PU. La información de movimiento de la PU puede incluir los índices de referencia y los vectores de movimiento de la PU. La unidad de compensación del movimiento 124 puede generar los bloques predictivos de la PU basándose, al menos en parte, en muestras reales o interpoladas en las ubicaciones de referencia indicadas por los vectores de movimiento de la PU.
En algunos ejemplos, la unidad de estimación del movimiento 122 puede generar una lista de candidatos de fusión para la PU. Como parte de la generación de la lista de candidatos de fusión, la unidad de estimación del movimiento 122 puede determinar un IPMVC y/o un candidato de fusión de texturas. Cuando se determina el IPMVC y/o el candidato de fusión de texturas, la unidad de estimación del movimiento 122 puede dividir la PU en varias sub-PU y procesa las sub-PU de acuerdo con un orden particular para determinar parámetros de movimiento para las sub-PU. De acuerdo con una o más técnicas de esta divulgación, si un bloque de referencia para una sub-PU respectiva no se codifica utilizando la predicción con compensación de movimiento, la unidad de estimación del movimiento 122 no establece los parámetros de movimiento de la sub-PU respectiva como respuesta a una determinación posterior de que un bloque de referencia para cualquier sub-PU posterior en el orden particular se codifique utilizando la predicción con compensación de movimiento. En vez de esto, si un bloque de referencia para una sub-PU respectiva no se codifica utilizando la predicción con compensación de movimiento, la unidad de estimación del movimiento 122 puede establecer los parámetros de movimiento de la sub-PU respectiva en los parámetros de movimiento predeterminados. Si el IPMVC o el candidato de fusión de texturas es el candidato de fusión seleccionado en la lista de candidatos de fusión, la unidad de compensación de movimiento 124 puede determinar un bloque predictivo para la PU respectiva basándose en parámetros de movimiento especificados por el IPMVC o el candidato de fusión de texturas.
La unidad de procesamiento de intrapredicción 126 puede generar datos predictivos para una PU realizando una intrapredicción en la PU. Los datos predictivos para la PU pueden incluir bloques predictivos para la PU y diversos elementos de sintaxis. La unidad de procesamiento de intrapredicción 126 puede realizar una intrapredicción en las PU en los segmentos I, segmentos P y los segmentos B.
Para realizar la intrapredicción en una PU, la unidad de procesamiento de intrapredicción 126 puede utilizar múltiples modos de intrapredicción para generar múltiples conjuntos de bloques predictivos para la PU. Cuando se realiza la intrapredicción utilizando un modo de intrapredicción particular, la unidad de procesamiento de intrapredicción 126 puede generar bloques predictivos para la PU utilizando un conjunto particular de muestras desde bloques contiguos. Los bloques contiguos pueden estar arriba, arriba a la derecha, arriba a la izquierda o a la izquierda de los bloques de predicción de la PU, suponiendo un orden de codificación de izquierda a derecha, de arriba a abajo para las PU, las CU y las CTU. La unidad de procesamiento de intrapredicción 126 puede utilizar varios números de modos de intrapredicción, por ejemplo, 33 modos de intrapredicción direccional. En algunos ejemplos, el número de modos de intrapredicción puede depender del tamaño de los bloques de predicción de la PU.
La unidad de procesamiento de predicción 100 puede seleccionar los datos predictivos para las PU de una CU de entre los datos predictivos generados por la unidad de procesamiento de interpredicción 120 para las PU o los datos predictivos generados por la unidad de procesamiento de intrapredicción 126 para las PU. En algunos ejemplos, la unidad de procesamiento de predicción 100 selecciona los datos predictivos para las PU de la CU basándose en métricas de velocidad/distorsión de los conjuntos de datos predictivos. Los bloques predictivos de los datos predictivos seleccionados pueden denominarse en el presente documento como los bloques predictivos seleccionados.
La unidad de generación residual 102 puede generar, basándose en el bloque de codificación de luminancia, Cb y Cr de una CU y los bloques predictivos seleccionados de luminancia, Cb y Cr de las PU de la CU, los bloque3s residuales de luminancia, Cb y Cr de la CU. Por ejemplo, la unidad de generación residual 102 puede generar los bloques residuales de la CU de modo que cada muestra en los bloques residuales tenga un valor igual a una diferencia entre una muestra en un bloque de codificación de la CU y una muestra correspondiente en un bloque predictivo seleccionado correspondiente de una PU de la CU.
La unidad de procesamiento de transformación 104 puede realizar una partición de árbol cuádruple para dividir los bloques residuales de una CU en bloques de transformación asociados con las TU de la CU. Por tanto, una TU puede asociarse con un bloque de transformación de luminancia y dos bloques de transformación de croma correspondientes. Los tamaños y posiciones de los bloques de transformación de luminancia y croma de las TU de una CU pueden estar basados o no en los tamaños y posiciones de los bloques de predicción de las PU de la CU.
La unidad de procesamiento de transformación 104 puede generar bloques de coeficientes de transformación para cada TU de una CU aplicando una o más transformaciones a los bloques de transformación de la TU. La unidad de procesamiento de transformación 104 puede aplicar diversas transformaciones a un bloque de transformación asociado con una TU. Por ejemplo, la unidad de procesamiento de transformación 104 puede aplicar una transformación de coseno discreta (DCT), una transformación direccional o una transformación conceptualmente similar a un bloque de transformación. En algunos ejemplos, la unidad de procesamiento de transformación 104 no aplica transformaciones a un bloque de transformación. En tales ejemplos, el bloque de transformación puede ser tratado como un bloque de coeficientes de transformación.
La unidad de cuantificación 106 puede cuantificar los coeficientes de transformación en un bloque de coeficientes. El proceso de cuantificación puede reducir la profundidad de bit asociada con algunos o todos los coeficientes de transformación. Por ejemplo, un coeficiente de transformación de n-bits puede redondearse hacia abajo a un coeficiente de transformación de m-bits durante la cuantificación, donde n es mayor que m. La unidad de cuantificación 106 puede cuantificar un bloque de coeficientes asociados con una TU de una CU basándose en un valor del parámetro de cuantificación (QP) asociado con la CU. El codificador de vídeo 20 puede ajustar el grado de cuantificación aplicado a los bloques de coeficientes asociados con una CU ajustando el valor de QP asociado con la CU. La cuantificación puede introducir pérdidas de información, por tanto los coeficientes de transformación cuantificados pueden tener una precisión menor que los originales.
La unidad de cuantificación inversa 108 y la unidad de procesamiento de transformación inversa 110 pueden aplicar una cuantificación inversa y transformaciones inversas a un bloque de coeficientes, respectivamente, para reconstruir un bloque residual del bloque de coeficientes. La unidad de reconstrucción 112 puede añadir el bloque residual reconstruido a muestras correspondientes de uno o más bloques predictivos generados mediante la unidad de procesamiento de predicción 100 para producir un bloque de transformación reconstruido asociado con una TU. Al reconstruir los bloques de transformación para cada TU de una CU de esta manera, el codificador de vídeo 20 puede reconstruir los bloques de codificación de la CU.
La unidad de filtro 114 puede realizar una o más operaciones de desbloqueo para reducir los artefactos de bloqueo en los bloques de codificación asociados con una Cu . El búfer de imágenes decodificadas 116 puede almacenar los bloques de codificación reconstruidos después de que la unidad de filtro 114 realiza la una o más operaciones de desbloqueo en los bloques de codificación reconstruidos. La unidad de procesamiento de interpredicción 120 puede utilizar una imagen de referencia que contiene los bloques de codificación reconstruidos para realizar la interpredicción en las PU de otras imágenes. Además, la unidad de procesamiento de intrapredicción 126 puede utilizar bloques de codificación reconstruidos en el búfer de imágenes decodificadas 116 para realizar la intrapredicción en otras PU en la misma imagen que la CU.
La unidad de codificación de entropía 118 puede recibir datos desde otros componentes funcionales del codificador de vídeo 20. Por ejemplo, la unidad de codificación de entropía 118 puede recibir bloques de coeficientes desde la unidad de cuantificación 106 y puede recibir elementos de sintaxis desde la unidad de procesamiento de predicción 100. La unidad de codificación de entropía 118 puede realizar una o más operaciones de codificación de entropía en los datos para generar datos codificados en entropía. Por ejemplo, la unidad de codificación de entropía 118 puede realizar una operación de codificación de longitud variables adaptable al contexto (CAVLC), una operación CABAC, una operación de codificación de longitud de variable a variable (V2V), una operación de codificación aritmética binaria adaptable al contexto basada en la sintaxis (SBAC), una operación de codificación de entropía de partición de intervalo de probabilidad (PIPE), una operación de codificación Exponencial-Golomb u otro tipo de operación de codificación de entropía en los datos. El codificador de vídeo 20 puede emitir un flujo de bits que incluye datos codificados en entropía generados por la unidad de codificación de entropía 118.
La figura 15 es un diagrama de bloques que ilustra un decodificador de vídeo de ejemplo 30 que puede implementar las técnicas de esta divulgación. La figura 15 se proporciona con propósitos de explicación y no es limitante de las técnicas que se ilustran y se describen ampliamente en esta divulgación. A efectos de explicación, esta divulgación describes el decodificador de vídeo 30 en el contexto de codificación HEVC. Sin embargo, las técnicas de esta divulgación pueden ser aplicables a otros estándares o métodos de codificación.
En el ejemplo de la figura 15, el decodificador de vídeo 30 incluye una unidad de decodificación de entropía 150, una unidad de procesamiento de predicción 152, una unidad de cuantificación inversa 154, una unidad de procesamiento de transformación inversa 156, una unidad de reconstrucción 158, una unidad de filtro 160 y un búfer de imágenes decodificadas 162. La unidad de procesamiento de predicción 152 incluye una unidad de compensación de movimiento 164 y una unidad de procesamiento de intrapredicción 166. En otros ejemplos, el decodificador de vídeo 30 puede incluir más, menos o diferentes componentes funcionales.
Un búfer de imágenes codificadas (CPB) 151 puede recibir y almacenar datos de vídeo codificados (por ejemplo, unidades NAL) de un flujo de bits. La unidad de decodificación de entropía 150 puede recibir unidades NAL del CPB 151 y analizar las unidades NAL para obtener elementos de sintaxis desde el flujo de bits. La unidad de decodificación de entropía 150 puede decodificar por entropía elementos de sintaxis codificados por entropía en las unidades NAL. La unidad de procesamiento de predicción 152, la unidad de cuantificación inversa 154, la unidad de procesamiento de transformación inversa 156, la unidad de reconstrucción 158 y la unidad de filtro 160 pueden generar datos de vídeo decodificados basándose en los elementos de sintaxis extraídos desde el flujo de bits.
Las unidades NAL del flujo de bits pueden incluir unidades NAL de segmento codificado. Como parte de la decodificación del flujo de bits, la unidad de decodificación de entropía 150 puede extraer y decodificar por entropía elementos de sintaxis de las unidades NAL de segmento codificado. Cada uno de los segmentos codificados puede incluir un encabezado del segmento y datos de segmento. El encabezado del segmento puede contener elementos de sintaxis pertenecientes a un segmento.
Además de obtener elementos de sintaxis desde el flujo de bits, el decodificador de vídeo 30 puede realizar una operación de decodificación en una CU. Al realizar la operación de decodificación en una CU, el decodificador de vídeo 30 puede reconstruir bloques de codificación de la CU.
Como parte de realizar una operación de decodificación en una CU, la unidad de cuantificación inversa 154 puede cuantificar inversamente, es decir, descuantificar, bloques de coeficientes asociados con las TU de la CU. La unidad de cuantificación inversa 154 puede utilizar un valor de QP asociado con la CU de la TU para determinar un grado de cuantificación y, del mismo modo, un grado de cuantificación inversa para aplicar la unidad de cuantificación inversa 154. Es decir, la relación de compresión, es decir, la relación del número de bits utilizados para representar la secuencia original y la comprimida, puede controlarse utilizando el valor del QP utilizando al cuantificar los coeficientes de transformación. La relación de compresión también pude depender del método de codificación de entropía empleado.
Después de que la unidad de cuantificación inversa 154 cuantifique inversamente un bloque de coeficientes, la unidad de procesamiento de transformación inversa 156 puede aplicar una o más transformaciones inversas al bloque de coeficientes a fin de generar un bloque residual asociado con la TU. Por ejemplo, la unidad de procesamiento de transformación inversa 156 puede aplicar una DCT inversa, una transformación de número entero inversa, una transformación de Karhunen-Loeve (KLT) inversa, una transformación rotacional inversa, una transformación direccional inversa u otra transformación inversa al bloque de coeficientes.
Si una PU se codifica utilizando intrapredicción, la unidad de procesamiento de intrapredicción 166 puede realizar una intrapredicción para generar bloques predictivos para la PU. La unidad de procesamiento de intrapredicción 166 puede utilizar un modo de intrapredicción para generar los bloques predictivos de luminancia, Cb y Cr para la PU basándose en los bloques de predicción de las PU espacialmente contiguas. La unidad de procesamiento de intrapredicción 166 puede determinar el modo de intrapredicción para la PU basándose en uno o más elementos de sintaxis decodificados desde el flujo de bits.
La unidad de procesamiento de predicción 152 puede construir una primera lista de imágenes de referencia (RefPicList0) y una segunda lista de imágenes de referencia (RefPicList1) basándose en elementos de sintaxis extraídos desde el flujo de bits. Además, si una PU se codifica utilizando interpredicción, la unidad de decodificación de entropía 150 puede obtener información de movimiento para la PU. La unidad de compensación del movimiento 164 puede determinar, basándose en la información de movimiento de la PU, una o más regiones de referencia para la PU. La unidad de compensación del movimiento 164 puede generar, basándose en muestras en uno o más de los bloques de referencia para la PU, bloques predictivos de luminancia, Cb y Cr para la PU.
En algunos ejemplos, la unidad de compensación de movimiento 164 puede generar una lista de candidatos de fusión para la PU. Como parte de la generación de la lista de candidatos de fusión, la unidad de compensación de movimiento 164 puede determinar un IPMVC y/o un candidato de fusión de texturas. Cuando se determina el IPMVC y/o el candidato de fusión de texturas, la unidad de compensación de movimiento 164 puede dividir la PU en varias sub-PU y procesar las sub-PU de acuerdo con un orden particular para determinar parámetros de movimiento para cada una de las sub-PU. De acuerdo con una o más técnicas de esta divulgación, si un bloque de referencia para una sub-PU respectiva no se codifica utilizando la predicción con compensación de movimiento, la unidad de compensación de movimiento 164 no establece los parámetros de movimiento de la sub-PU respectiva como respuesta a una determinación posterior de que un bloque de referencia para cualquier sub-PU posterior en el orden particular se codifique utilizando la predicción con compensación de movimiento. Más bien, si un bloque de referencia para una sub-PU respectiva no se codifica utilizando la predicción con compensación de movimiento, la unidad de compensación de movimiento 164 puede establecer los parámetros de movimiento de la sub-PU respectiva a los parámetros de movimiento predeterminados. Si el IPMVC o el candidato de fusión de texturas es el candidato de fusión seleccionado en la lista de candidatos de fusión, la unidad de compensación de movimiento 164 puede determinar un bloque predictivo para la PU respectiva basándose en parámetros de movimiento especificados por el IPMVC o el candidato de fusión de texturas.
La unidad de reconstrucción 158 puede utilizar los valores residuales de los bloques de transformación de luminancia, Cb y Cr asociados con las TU de una CU y los bloques predictivos de luminancia, Cb y Cr de las PU de la CU, es decir, tanto datos de intrapredicción como datos de interpredicción, según sea aplicable, para reconstruir los bloques de codificación de luminancia, Cb y Cr de la CU. Por ejemplo, la unidad de reconstrucción 158 puede añadir muestras de los bloques de transformación de luminancia, Cb y Cr a muestras correspondientes de los bloques predictivos de luminancia, Cb y Cr para reconstruir los bloques de codificación de luminancia, Cb y Cr de la CU.
La unidad de filtro 160 puede realizar una operación de desbloqueo para reducir los artefactos de bloqueo asociados con los bloques de codificación de luminancia, Cb y Cr de la CU. El decodificador de vídeo 30 puede almacenar los bloques de codificación de luminancia, Cb y Cr de la CU en el búfer de imágenes decodificadas 162. El búfer de imágenes decodificadas 162 puede proporcionar imágenes de referencia para una posterior compensación de movimiento, intrapredicción y presentación en un dispositivo de visualización, tal como el dispositivo de visualización 32 de la figura 1. Por ejemplo, el decodificador de vídeo 30 puede realizar, basándose en los bloques de luminancia, Cb y Cr en el búfer de imágenes decodificadas 162, las operaciones de intrapredicción o interpredicción en las PU de otras CU. De esta manera, el decodificador de vídeo 30 puede extraer, desde el flujo de bits, niveles de coeficientes de transformación del bloque significativo de coeficientes de luminancia, cuantificar inversamente los niveles de coeficientes de transformación, aplicar una transformación a los niveles de coeficientes de transformación para generar un bloque de transformación, generar, basándose al menos en parte en el bloque de transformación, un bloque de codificación, y generar el bloque de codificación para su visualización.
La siguiente sección proporciona un ejemplo de cambios en el proceso de decodificación de 3D-HEVC (que está disponible públicamente). En un proceso de derivación para un candidato de vector de movimiento temporal intervista de una sub-PU, un codificador de vídeo puede generar en primer lugar un candidato predicho de vector de movimiento intervista a nivel de la PU. Si la sub-PU de referencia del centro (es decir, la sub-PU central en el bloque de referencia intervista) se codifica con un modo de interpredicción y la imagen de referencia de la sub-PU de referencia central en la lista de imágenes de referencia X tiene un valor de POC idéntico al de una entrada en la lista de imágenes de referencia X del segmento actual, para X = 0 o 1, su vector de movimiento e imagen de referencia se utilizan como candidato de vector de movimiento predicho a nivel de la PU. Por otra parte, el codificador de vídeo puede utilizar movimiento cero con el índice de imagen de referencia igual a 0 para la lista de imágenes de referencia 0 y la lista de imágenes de referencia 1 (si el segmento actual es un segmento B) como el candidato de vector de movimiento predicho a nivel de la PU. El codificador de vídeo puede entonces utilizar el candidato de vector de movimiento predicho a nivel de la PU como movimiento de una sub-PU cuyo bloque de referencia correspondiente está codificado tanto con el modo de intrapredicción como codificado con el modo de interpredicción pero su imagen de referencia no está incluida en la lista de imágenes de referencia del segmento actual.
Los ejemplos de esta divulgación pueden cambiar el proceso de predicción de movimiento intervista a nivel de sub-PU (o proceso de derivación para un candidato de vector de movimiento de intervista temporal de subbloque de predicción) definido en el Borrador 2 del texto de 3D-HEVC (es decir, el documento JCT3V-F1001v2). De acuerdo con uno o más ejemplos de esta divulgación, el texto añadido al Borrador 2 del texto de 3D-HEVC está subrayado y el texto eliminado del Borrador 2 del texto de 3D-HEVC está en cursiva y entre corchetes dobles.
Proceso de decodificación
H.8.5.3.2.16 Proceso de derivación para un candidato de vector de movimiento temporal intervista de subbloque de predicción
Este proceso no se invoca cuando iv_mv_pred_flag[nuh_layer_id] es igual a 0.
Las entradas a este proceso son:
- una ubicación de luminancia (xPb, yPb) de la muestra de luminancia de arriba a la izquierda de la unidad actual de predicción relativa a la muestra de luminancia de arriba a la izquierda de la imagen actual,
- variables nPbW y nPbH que especifica la anchura y la altura, respectivamente, de la unidad de predicción actual, - un índice de vista de referencia refViewIdx.
- un vector de disparidad mvDisp,
Las salidas de este proceso son:
- las marcas availableFlagLXInterView, con X en el intervalo de 0 a 1, ambos inclusive, que especifica si el candidato de vector de movimiento intervista temporal está disponible,
- el candidato de vector de movimiento temporal intervista mvLXInterView, con X en el intervalo de 0 a 1, ambos inclusive.
- el índice de referencia refldxLXInterView, con X en el intervalo de 0 a 1, ambos inclusive, que especifica una imagen de referencia en la lista de imágenes de referencia RefPicListLX,
Para X en el intervalo de 0 a 1, ambos inclusive, se aplica lo siguiente:
- La marca availableFlagLXInterView se establece igual a 0.
- El vector de movimiento mvLXInterView se establece igual a (0, 0 ).
- El índice de referencia refldxLXInterView se establece igual a -1.
Las variables nSbW y nSbH se derivan como:
SubPbSize[ nuh_layer_id ]) nSbW = Min( nPbW, (H-173)
SubPbSize[ nuh_layer_id ]) nSbH = Min( nPbH, (H-174)
La variable ivRefPic se establece igual a la imagen con ViewIdx igual a refViewIdx en la unidad de acceso actual.
Lo siguiente se aplica para derivar la marca de variable centerPredFlagLX, el vector de movimiento centerMvLX y el índice de referencia centerRefldxLX.
- La variable centerAvailableFlag se establece igual a 0.
- Para X en el intervalo de 0 a 1, ambos inclusive, se aplica lo siguiente:
- La marca centerPredFlagLX se establece igual a 0.
- El vector de movimiento centerMvLX se establece igual a (0,0)
- El índice de referencia centerRefldxLX se establece igual a -1.
- La ubicación de luminancia de capa de referencia (xRef. yRef) se deriva mediante
xRef = Cl¡p3(0. PicWidthInSamplesL -1,
xPb (nPbW / nSbW / 2 ) * nSbW nSbW / 2 ((mvDisp[01+2) >>2)) (H-175)
yRef = Clip3(0, PicHeightInSamplesL -1,
yPb ( nPbH / nSbH /2) * nSbH nSbH / 2 ((mvDispr[11+2) >> 2)) (H-176)
- La variable ivRefPb especifica el bloque de predicción de luminancia que cubre la ubicación dada por ( xRef, yRef) dentro de la imagen de referencia intervista especificada por ivRefPic.
- La ubicación de luminancia (xIvRefPb, ylvRefPb) se establece igual a la muestra de arriba a la izquierda del bloque de predicción de luminancia de referencia intervista especificado por ivRefPb con respecto a muestra de luminancia de arriba a la izquierda de la imagen de referencia intervista especificada por ivRefPic.
- Cuando ivRefPb no se codifica en un modo de intrapredicción, se aplica lo siguiente para X en el intervalo de 0 a 1, ambos inclusive:
- Cuando X es igual a 0 o el segmento actual es un segmento B, se aplica lo siguiente para Y en el intervalo de X a (1 -X), ambos inclusive:
- Las variables refPicListLYIvRef, predFlagLYIvRef, mvLYIvRef y refldxLYIvRef se establecen iguales a RefPicListLY, PredFlagLY, MvLY y RefldxLY de la imagen ivRefPic, respectivamente,
- Cuando predFlagLYIvReftxIvRefPbir yIvRefPbl es igual a 1, se aplica lo siguiente para cada i de 0 a num ref idx IX active minus 1, ambos inclusive:
- Cuando
PicOrdeiCntírefPicListLYIvReft refldxLYIvRef[ xIvRefPb 1[ yIvRefPb 11) es igual a PicOrderCnt( RefPicListLXNl ) y centerPredFlagLX es igual a 0, se aplica lo siguiente.
centerMvLX = mvLYIvReff xIvRefPb 1[ yIvRefPb 1 (H-177)
centerRefldxLX = i(H-178)
centerPredFlagLX = 1 (H-179)
centerAvailableFlag = 1 (H-180)
- si centerAvailableFlag es igual a 0 y ivRefPic no es el segmento I, se aplica lo siguiente para X en el intervalo de 0 a 1, ambos inclusive:
centerMvLX = (0,0) (H-181)
centerRefldxLX = 0(H-182)
centerPredFlagLX = 1 (H-183)
Para X en el intervalo de 0 a 1, ambos inclusive, se aplica lo siguiente:
- La marca availableFlagLXInterView se establece igual a centerPredFlagLX.
- El vector de movimiento mvLXInterView se establece igual a centerMvLX.
- El índice de referencia refIdxLXInterView se establece igual a centerRefldxLX.
Para yBlk en el intervalo de 0 a (nPbH/nSbH -1 ), ambos inclusive, y para xBIk en el intervalo de 0 a ( nPbW/nSbW -1), ambos inclusive, se aplica lo siguiente:
- La variable curAvailableFlag se establece igual a 0.
- Para X en el intervalo de 0 a 1, ambos inclusive, se aplica lo siguiente:
- La marca spPredFlagL1[ xBlk1[ yBlk 1 se establece igual a 0.
- El vector de movimiento spMvLX se establece igual a (0,0).
- El índice de referencia spRefIdxLX[ xBlk1[ yBlk1 se establece igual a -1.
- La ubicación de luminancia de capa de referencia ( xRef, yRef) se deriva mediante
xRef = Clip3( 0, PicWidthInSamplesL -1,
xPb xBlk * nSbW nSbW / 2 ((mvDisp[01 2) >> 2))
(H-184[[175]])
yRef = Clip3( 0, PicHeightlnSamplesL -1,
yPb yBlk * nSbH nSbH / 2 (( mvDisp[1] 2) >> 2))
(H-185ff47W
- La variable ivRefPb especifica el bloque de predicción de luminancia que cubre la ubicación dada por ( xRef, yRef) dentro de la imagen de referencia intervista especificada por ivRefPic.
- La ubicación de luminancia ( xIvRefPb, ylvRefPb) se establece igual a la muestra de arriba a la izquierda del bloque de predicción de luminancia de referencia intervista especificado por ivRefPb con respecto a la muestra de luminancia de arriba a la izquierda de la imagen de referencia intervista especificada por ivRefPic.
- Cuando ivRefPb no se codifica en un modo de intrapredicción, se aplica lo siguiente para X en el intervalo de 0 a 1, ambos inclusive:
- Cuando X es igual a 0 o el segmento actual es un segmento B, se aplica lo siguiente para Y en el intervalo de X a (1 -X), ambos inclusive:
- Las variables refPicListLYIvRef, predFlagLYIvRef[x][y], mvLYIvRef[x][y], y refIdxLYIvRef[x][y] se establecen iguales a RefPicListLY, PredFlagLY[x][y], MvLY[x][y] y RefIdxLY[x][y] de la imagen ivRefPic, respectivamente.
- Cuando predFlagLYIvRef[ xIvRefPb][ylvRefPb] es igual a 1, se aplica lo siguiente para cada i desde 0 hasta num_ref_idx_lX_active_minus1, ambos inclusive:
- Cuando
PicOrderCnt(refPicListLYIvRef[refldxLYIvRef[xIvRefPb][ylvRefPb]]) es igual a PicOrderCnt(RefPicListLX[i]) y spPredFlagLX[xBlk][yBlk] es igual a 0, se aplica lo siguiente.
spMvLX[xBlk][yBlk] = mvLYIvRef[xIvRefPb][ylvRefPb] (H-186[[177]])
spRefIdxLX[xBlk][yBlk] = i (H-187[[178]])
spPredFlagLX[xBlk][yBlk ] = 1 (H-188[[179]])
curAvailableFlag = 1 (H-189[[180]])
- [[Dependiendo de curAvailableFlag, se aplica lo siguiente:
- Si curAvailableFlag es igual a 1, se aplican las siguientes etapas ordenadas:
1. Cuando lastAvailableFlag es igual a 0, se aplica lo siguiente:
- Para X en el intervalo de 0 a 1, ambos inclusive, se aplica lo siguiente:
mvLXInterView = spMvLX[xBlk][yBlk] (H-181)
refldxLXInterView = spRefldxLX[xBlk][yBlk] (H-182)
availableFlagLXInterView = spPredFlag[xBlk][yBlk] (H-183)
- Cuando curSubBlockldx es mayor que 0, se aplica lo siguiente para k en el intervalo de 0 a (curSubBlockldx - 1), ambos inclusive:
- Las variables i y k se derivan como se especifica a continuación:
i = k%( nPSW/nSbW) (H-184)
j = k/( nPSW/nSbW) (H-185)
- Para X en el intervalo de 0 a 1, ambos inclusive, se aplica lo siguiente:
spMvLX[i]j] = spMvLX[xBlk][yBlk] (H-186)
spRefldxLX[i]j] = spRefldxLX[xBlk][yBlk] (H-187)
spPredFlagLX[i]j] = spPredFlagLX[xBlk][yBlk] (H-188)
2. La variable lastAvailableFlag se establece igual a 1.
3. Las variables xLastAvail y yLastAvail se establecen iguales a xBlk e yBlk, respectivamente. ]]
- [[De otro modo (]] si curAvailableFlag es igual a 0[[), cuando lastAvailable Flag es igual a 1,]] se aplica lo siguiente para X en el intervalo de 0 a 1, ambos inclusive:
[[spMvLX[xBlk][yBlk] = spMvLX[xLastAvail][yLastAvail] (H-189)
spRefldxLX[xBlk][yBlk] = spRefldxLX[xLastAvail][yLastAvail] (H-190)
spPredFlagLX[xBlk][yBlk] = spPredFlagLX[xLastAvail][yLastAvail] (H-191)]]
spMvLXrxBlklívBIkl = centerMvLX (H-190)
spRefldxLXÍxBlklívBIkl = centerRefldxLX (H-191)
spPredFlagLX[ xBlk][yBlk] = centerPredFlagLX (H-192)
- [[La variable curSubBlockldx se establece igual a curSubBlockldx 1.]]
Para su uso en procesos de derivación de variables implicadas más adelante en el proceso de decodificación, se realizan las siguientes asignaciones para x = 0.. nPbW -1 e y = 0.. nPbH -1:
- Para X en el intervalo de 0 a 1, ambos inclusive, se aplica lo siguiente:
- Las variables SubPbPredFlagLX, SubPbMvLX y SubPbRefldxLX se derivan como se especifica a continuación:
SubPbPredFlagLX[xPb x ][yPb y] = spPredFlagLX[x / nSbW][y / nSbW] (H-193[[192]])
SubPbMvLX[xPb x][yPb y] = spMvLX[x / nSbW][y / nSbW] (H-194[[193]])
SubPbRefldxLX[xPb x][yPb y] = spRefldxLX[x / nSbW][y / nSbW] (H-195[[194]])
- El proceso de derivación para vectores de movimiento de croma en la subcláusula 8.5.3.2.9 se invoca con SubPbMvLX [xPb x][ yPb y] como entrada y la salida es SubPbMvCLX[xPb x][yPb y].
La figura 16A es un diagrama de flujo que ilustra una operación de ejemplo de codificador de vídeo 20 para codificar una CU utilizando interpredicción, de acuerdo con un ejemplo de esta divulgación. En el ejemplo de la figura 16A, el codificador de vídeo 20 puede generar una lista de candidatos de fusión para una PU actual de una CU actual (200). De acuerdo con uno o más ejemplos de esta divulgación, el codificador de vídeo 20 puede generar la lista de candidatos de fusión de modo que la lista de candidatos de fusión incluya un candidato de fusión intervista temporal basado en la información de movimiento para las sub-PU de la PU actual. En algunos ejemplos, la PU actual puede ser una PU de profundidad y el codificador de vídeo 20 puede generar la lista de candidatos de fusión de modo que la lista de candidatos de fusión incluya un candidato de fusión de texturas basado en la información de movimiento para las sub-PU de la PU de profundidad actual. Además, en algunos ejemplos, el codificador de vídeo 20 puede realizar la operación de la figura 17 para generar la lista de candidatos de fusión para la PU actual.
Después de generar la lista de candidatos de fusión para la PU actual, el codificador de vídeo 20 puede seleccionar un candidato de fusión de la lista de candidatos de fusión (202). En algunos ejemplos, el codificador de vídeo 20 puede seleccionar el candidato de fusión basándose en un análisis de velocidad/distorsión. Además, el codificador de vídeo 20 puede utilizar la información de movimiento (por ejemplo, los vectores de movimiento e índices de referencia) del candidato de fusión seleccionado para determinar bloques predictivos para la PU actual (204). El codificador de vídeo 20 puede señalar un índice de candidato de fusión que indica una posición dentro de la lista de candidatos de fusión del candidato de fusión seleccionado (206).
Si el candidato de fusión seleccionado es un candidato de IPMVC o de MVI (es decir, un candidato de fusión de texturas) construido utilizando unas sub-PU como se describe en los ejemplos de esta divulgación, el IPMVC o candidato de MVI puede especificar un conjunto separado de parámetros de movimiento (por ejemplo, un conjunto de uno o más vectores de movimiento y un conjunto de uno o más índices de referencia) para cada sub-PU de la PU actual. Cuando el codificador de vídeo 20 está determinando el bloque predictivo para la PU actual, el codificador de vídeo 20 puede utilizar los parámetros de movimiento de las sub-PU de la PU actual para determinar bloques predictivos para las sub-PU. El codificador de vídeo 20 puede determinar los bloques predictivos para la PU actual ensamblando los bloques predictivos para las sub-PU de la PU actual.
El codificador de vídeo 20 puede determinar si queda cualquier PU restante en la CU actual (208). Si hay una o más PU restantes en la CU actual ("SÍ" de 208), el codificador de vídeo 20 puede repetir las acciones 200-208 con otra PU de la CU actual como la PU actual. De esta manera, el codificador de vídeo 20 puede repetir las acciones 200-208 para cada PU de la CU actual.
Cuando ya no hay PU de la CU actual ("NO" de 208), el codificador de vídeo 20 puede determinar datos residuales para la CU actual (210). En algunos ejemplos, cada muestra de los datos residuales puede indicar una diferencia entre una muestra en un bloque de codificación de la CU actual y una muestra correspondiente en un bloque predictivo de una PU de la CU actual. En otros ejemplos, el codificador de vídeo 20 puede utilizar ARP para determinar los datos residuales para la CU actual. El codificador de vídeo 20 puede señalar los datos residuales en un flujo de bits (212). Por ejemplo, el codificador de vídeo 20 puede señalar los datos residuales en el flujo de bits aplicando una o más transformaciones a los datos residuales para generar bloques de coeficientes, cuantificar los coeficientes, cuantificar por entropía elementos de sintaxis que indican los coeficientes cuantificados e incluir los elementos de sintaxis codificados con entropía en el flujo de bits.
La figura 16B es un diagrama de flujo que ilustra una operación de ejemplo del decodificador de vídeo 30 para decodificar una CU utilizando interpredicción, de acuerdo con un ejemplo de esta divulgación. En el ejemplo de la figura 16B, el decodificador de vídeo 30 puede generar una lista de candidatos de fusión para una PU actual de una CU actual (220). De acuerdo con uno o más ejemplos de esta divulgación, el decodificador de vídeo 30 puede generar la lista de candidatos de fusión de modo que la lista de candidatos de fusión incluya un candidato de fusión intervista temporal basándose en información de movimiento para las sub-PU de la PU actual. En algunos ejemplos, la PU actual puede ser una PU de profundidad y el decodificador de vídeo 30 puede generar la lista de candidatos de fusión de modo que la lista de candidatos de fusión incluya un candidato de fusión de texturas basado en la información de movimiento para las sub-PU de la PU de profundidad actual. Además, en algunos ejemplos, el decodificador de vídeo 30 puede realizar la operación de la figura 17 para generar la lista de candidatos de fusión para la PU actual.
Después de generar la lista de candidatos de fusión para la PU actual, el decodificador de vídeo 30 puede determinar un candidato de fusión seleccionado de la lista de candidatos de fusión (222). En algunos ejemplos, el decodificador de vídeo 30 puede determinar el candidato de fusión seleccionado basándose en un índice de candidato de fusión señalado en el flujo de bits. Además, el decodificador de vídeo 30 puede utilizar los parámetros de movimiento (por ejemplo, los vectores de movimiento e índices de referencia) del candidato de fusión seleccionado para determinar bloques predictivos para la PU actual (224). Por ejemplo, el decodificador de vídeo 30 puede utilizar los parámetros de movimiento del candidato de fusión seleccionado para determinar un bloque predictivo de luminancia, un bloque predictivo de Cb y un bloque predictivo de Cr para la Pu actual.
Si el candidato de fusión seleccionado es un candidato de IPMVC o de MVI construido utilizando las sub-PU que se describen en los ejemplos de esta divulgación, el candidato de IPMVC o de MVI puede especificar un conjunto separado de parámetros de movimiento (por ejemplo, un conjunto de uno o más vectores de movimiento y un conjunto de uno o más índices de referencia) para cada sub-PU de la PU actual. Cuando el decodificador de vídeo 30 está determinando el bloque predictivo para la PU actual, el decodificador de vídeo 30 puede utilizar los parámetros de movimiento de las sub-PU de la PU actual para determinar bloques predictivos para las sub-PU. El decodificador de vídeo 30 puede determinar los bloques predictivos para la PU actual ensamblando los bloques predictivos para las sub-PU de la PU actual.
El decodificador de vídeo 30 puede entonces determinar si queda cualquier PU restante en la CU actual (226). Si hay una o más PU restantes en la CU actual ("SÍ" de 226), el decodificador de vídeo 30 puede repetir las acciones 220-226 con otra PU de la CU actual como la PU actual. De esta manera, el decodificador de vídeo 30 puede repetir las acciones 220-226 para cada PU de la CU actual.
Cuando ya no hay PU de la CU actual ("NO" de 226), el decodificador de vídeo 30 puede determinar datos residuales para la CU actual (228). En algunos ejemplos, el decodificador de vídeo 30 puede determinar los datos residuales en paralelo con la determinación de los parámetros de movimiento de las PU de la CU actual. En algunos ejemplos, el decodificador de vídeo 30 puede utilizar ARP para determinar los datos residuales para la CU actual. Además, el decodificador de vídeo 30 puede reconstruir los bloques de codificación de la CU actual basándose en los bloques predictivos para las PU de la CU actual y los datos residuales para la CU actual (230).
La figura 17 es un diagrama de flujo que ilustra una operación de ejemplo de un codificador de vídeo para construir una lista de candidatos de fusión para una PU actual en un componente de vídeo actual, de acuerdo con un ejemplo de esta divulgación. En el ejemplo de la figura 17, el codificador de vídeo (por ejemplo, el codificador de vídeo 20 o el decodificador de vídeo 30) puede determinar candidatos de fusión espacial (250). Los candidatos de fusión espacial pueden incluir candidatos de fusión que especifiquen los parámetros de movimiento de las PU que cubren las ubicaciones A0 , A1, B0 , B1 y B2 en la figura 3. En algunos ejemplos, el codificador de vídeo puede determinar los candidatos de fusión espacial realizando la operación descrita en la subcláusula G.8.5.2.1.2 del Modelo de prueba 4 de MV-HEVC. Además, en el ejemplo de la figura 17, el codificador de vídeo puede determinar un candidato de fusión temporal (252). El candidato de fusión temporal puede especificar los parámetros de movimiento de una PU de un componente de vista de referencia que está es una instancia de tiempo diferente del componente de vista actual. En algunos ejemplos, el codificador de vídeo puede determinar el candidato de fusión temporal realizando la operación descrita en la subcláusula H.8.5.2.1.7 del Modelo de prueba 4 de 3D-HEVC.
Además, el codificador de vídeo puede determinar un IPMVC y un IDMVC (254). De acuerdo con los ejemplos de esta divulgación, el codificador de vídeo puede generar el IPMVC utilizando una técnica de predicción de movimiento intervista a nivel de sub-PU. Por tanto, el IPMVC puede especificar parámetros de movimiento de cada sub-PU de la PU actual. En algunos ejemplos, el codificador de vídeo puede realizar la operación de la figura 19 para determinar el IPMVC. El IDMVC puede especificar el vector de disparidad para la PU actual. En algunos ejemplos, el codificador de vídeo solo determina el IPMVC y el IDMVC cuando una marca de predicción de movimiento intervista (por ejemplo, iv_mv_pred_flag) para una capa actual indica que la predicción de movimiento intervista está habilitada para la capa actual. La capa actual puede ser la capa a la que pertenece el componente de vista actual.
Además, en el ejemplo de la figura 17, el codificador de vídeo puede determinar un candidato de fusión VSP (256). En algunos ejemplos, el codificador de vídeo puede determinar el candidato de fusión VSP realizando la operación descrita en la subcláusula H.8.5.2.1.12 del Modelo de prueba 4 de 3D-HEVC. En algunos ejemplos, el codificador de vídeo solo determina el candidato de fusión VSP cuando una marca de predicción de síntesis de vista para la capa actual indica que la predicción de síntesis de vista está habilitada para la capa actual.
Además, el codificador de vídeo puede determinar si el componente de vista actual es un componente de vista de profundidad (258). En respuesta a la determinación de que el componente de vista actual es un componente de vista de profundidad ("SÍ" de 258), el codificador de vídeo puede determinar un candidato de fusión de texturas (260). El candidato de fusión de texturas puede especificar la información de movimiento de una o más PU en un componente de vista de textura que corresponde al componente de vista (profundidad) actual. De acuerdo con uno o más ejemplos de esta divulgación, el codificador de vídeo puede generar el candidato de fusión de texturas utilizando una técnica de predicción de movimiento a nivel de sub-PU. Por tanto, el candidato de fusión de texturas puede especificar parámetros de movimiento de cada sub-PU de la PU actual. En algunos ejemplos, el codificador de vídeo puede realizar la operación de la figura 19 para determinar el candidato de fusión de texturas. El codificador de vídeo puede entonces determinar si el componente de fusión de texturas está disponible (262). En respuesta a la determinación de que el componente de fusión de texturas está disponible ("SÍ" de 262), el codificador de vídeo puede insertar el candidato de fusión de texturas en la lista de candidatos de fusión (264).
En respuesta a la determinación de que la imagen actual no es una imagen de profundidad ("NO" de 258), en respuesta a la determinación de que el candidato de fusión de texturas no está disponible ("NO" de 262) o después de insertar el candidato de fusión de texturas en la lista de candidatos de fusión, el codificador de vídeo puede determinar si el IPMVC está disponible (266). El IPMVC puede no estar disponible cuando el codificador de vídeo no pudo determinar el IPMVC, tal como cuando la PU actual está en una vista de base. En respuesta a la determinación de que el IPMVC está disponible ("SÍ" de 268), el codificador de vídeo puede insertar el IPMVC en la lista de candidatos de fusión (268).
En respuesta a la determinación de que el IPMVC no está disponible ("NO" de 266) o después de insertar el IPMVC en la lista de candidatos de fusión, el codificador de vídeo puede determinar si el candidato de fusión espacial para la ubicación A1 (es decir, el candidato de fusión espacial A1) está disponible (270). Un candidato de fusión espacial, tal como el candidato de fusión espacial A1, puede no estar disponible cuando una PU que cubre una ubicación asociada con el candidato de fusión espacial (por ejemplo, la ubicación A0 , A1, B0 , B1 o B2) se codifica utilizando intrapredicción o está fuera de un segmento o límite de imagen actual. En respuesta a la determinación de que el candidato de fusión espacial A1 está disponible ("SÍ" DE 270), el codificador de vídeo puede determinar si los vectores de movimiento y los índices de referencia del candidato de fusión espacial A1 coinciden con los vectores de movimiento representativos y los índices de referencia representativos del IPMVC (270). En respuesta a la determinación de que los vectores de movimiento y los índices de referencia del candidato de fusión espacial A 1 no coinciden con los vectores de movimiento representativos ni los índices de referencia representativos del IPMVC ("NO" de 272), el codificador de vídeo puede insertar el candidato de fusión espacial A1 en la lista de candidatos de fusión (274).
Como se ha indicado anteriormente, el codificador de vídeo puede generar el IPMVC y/o candidato de fusión de texturas utilizando una técnica de predicción de movimiento a nivel de sub-PU. Por tanto, el IPMVC y/o candidato de fusión de texturas puede especificar múltiples vectores de movimiento y múltiples índices de referencia. En consecuencia, el codificador de vídeo puede determinar si los vectores de movimiento del candidato de fusión espacial A1 coinciden con vectores de movimiento representativos del IPMVC y/o el candidato de fusión de texturas y si los índices de referencia del candidato de fusión espacial A1 coinciden con índices de referencia representativos del IPMVC y/o candidato de fusión de texturas. Los vectores de movimiento representativos e índices de referencia representativos del IPMVC pueden denominarse en el presente documento como "IPMVC a nivel de PU". Los vectores de movimiento representativos y los índices de referencia representativos del candidato de fusión de texturas pueden denominarse en el presente documento como "candidato de herencia de parámetros de movimiento (MPI) a nivel de PU". El codificador de vídeo puede determinar el IPMVC a nivel de PU y el candidato de MPI a nivel de PU de diversas maneras. Los ejemplos de cómo el codificador de vídeo puede determinar el IPMVC a nivel de PU y el candidato de MPI a nivel de Pu se describen en otra parte en esta divulgación.
En respuesta a la determinación de que el candidato de fusión espacial A1 no está disponible ("NO" de 270), en respuesta a la determinación de que los vectores de movimiento y los índices de referencia del candidato de fusión espacial A1 coinciden con los vectores de movimiento representativos e índices de referencia representativos del IPMVC ("SÍ" de 272), o después de insertar el candidato de fusión espacial A1 en la lista de candidatos de fusión, el codificador de vídeo puede determinar si el candidato de fusión espacial para la ubicación B1 (es decir, el candidato de fusión espacial B1) está disponible (276). En respuesta a la determinación de que el candidato de fusión espacial B1 está disponible ("SÍ" de 276), el codificador de vídeo puede determinar si los vectores de movimiento e índices de referencia del candidato de fusión espacial B1 coinciden con los vectores de movimiento representativos y los índices de referencia representativos del IPMVC (278). En respuesta a la determinación de que los vectores de movimiento e índices de referencia del candidato de fusión espacial B1 no coinciden con los vectores de movimiento representativos y los índices de referencia representativos del IPMVC ("NO" de 278), el codificador de vídeo puede incluir el candidato de fusión espacial B1 en la lista de candidatos de fusión (280).
En respuesta a la determinación de que el vector de movimiento espacial de B1 no está disponible ("NO" de 276), en respuesta a la determinación de que los vectores de movimiento e índices de referencia del vector de movimiento espacial B1 coinciden con los vectores de movimiento representativos y los índices de referencia representativos del IPMVC ("SÍ" de 278), o después de insertar el candidato de fusión espacial B1 en la lista de candidatos de fusión, el codificador de vídeo puede determinar si el candidato de fusión espacial para la ubicación B0 (es decir, el candidato de fusión espacial B0) está disponible (282). En respuesta a la determinación de que el candidato de fusión espacial B0 está disponible ("SÍ" de 282), el codificador de vídeo puede insertar el candidato de fusión espacial B0 en la lista de candidatos de fusión (284).
Como se ha indicado anteriormente, el codificador de vídeo puede determinar los vectores de movimiento representativos y los índices de referencia representativos del IPMVC de diversas maneras. En un ejemplo, el codificador de vídeo puede determinar, de entre las sub-PU de la PU actual, una sub-PU central. En este ejemplo, la sub-PU central es la sub-PU más próxima a un píxel central de un bloque de predicción de luminancia de la Pu actual. Debido a que la altura y/o anchura de un bloque de predicción puede ser un número par de muestras, un píxel "central" de un bloque de predicción puede ser un píxel adyacente a un a un centro verdadero del bloque de predicción. Además, en este ejemplo, el codificador de vídeo puede determinar entonces un bloque de referencia intervista para la sub-PU central añadiendo el vector de disparidad para la PU actual a las coordenadas de un centro de un bloque de predicción de luminancia de la sub-PU central. Si el bloque de referencia intervista para la sub-PU central se codifica utilizando la predicción con compensación de movimiento (es decir, el bloque de referencia intervista para la sub-PU central tiene uno o más vectores de movimiento e índices de referencia), el codificador de vídeo puede establecer la información de movimiento del IPMVC a nivel de PU como la información de movimiento del bloque de referencia intervista para la sub-PU central. Por tanto, el IPMVC a nivel de PU, según se proporciona mediante la sub-PU central, puede utilizarse para recortar este candidato de sub-PU con otros candidatos, tales como los candidatos espaciales contiguos A1 y B1. Por ejemplo, si un candidato convencional (por ejemplo, el candidato de fusión espacial A1 o el candidato de fusión espacial B1) es igual al candidato producido por la sub-PU central, el otro candidato convencional no se añade en la lista de candidatos de fusión.
En respuesta a la determinación de que el candidato de fusión espacial B0 no está disponible ("NO" de 282) o después de insertar el candidato de fusión espacial B0 en la lista de candidatos de fusión, el codificador de vídeo puede determinar si el IDMVC está disponible y el vector de movimiento e índice de referencia del IDMVC son diferentes de los vectores de movimiento e índices de referencia del candidato de fusión espacial A1 y el candidato de fusión espacial B1 (286). En respuesta a la determinación de que el IDMVC está disponible y el vector de movimiento e índice de referencia del IDMVC son diferentes de los vectores de movimiento e índices de referencia del candidato de fusión espacial A1 y el candidato de fusión espacial B1 ("SÍ" de 286), el codificador de vídeo puede insertar el IDMVC en la lista de candidatos de fusión (288).
En respuesta a determinar que el IDMVC no está disponible o el vector de movimiento e índice de referencia del IDMVC no son distintos de los vectores de movimiento e índices de referencia del candidato de fusión espacial A1 o el candidato de fusión espacial B1 ("NO" de 286) o después de insertar el IDMVC en la lista de candidatos de fusión, el codificador de vídeo puede realizar la parte de la operación de construcción de la lista de imágenes de referencia mostrada en la figura 18 (indicada en la 17 como "A").
La figura 18 es un diagrama de flujo que ilustra una continuación de la operación de construcción de la lista de imágenes de referencia de la figura 17, de acuerdo con un ejemplo de esta divulgación. En el ejemplo de la figura 18, el codificador de vídeo puede determinar si el candidato de fusión VSP está disponible (300). En respuesta a la determinación de que el candidato de fusión VSP está disponible ("SÍ" de 300), el codificador de vídeo puede insertar el candidato de fusión VSP en la lista de candidatos de fusión (302).
En respuesta a la determinación de que el candidato de fusión VSP no está disponible ("NO" de 300) o después de insertar el candidato de fusión VSP en la lista de candidatos de fusión, el codificador de vídeo puede determinar si el candidato de fusión espacial para la ubicación A0 (es decir, el candidato de fusión espacial A0 ) está disponible (304). En respuesta a la determinación de que el candidato de fusión espacial A0 está disponible ("SÍ" de 304), el codificador de vídeo puede insertar el candidato de fusión espacial A0 en la lista de candidatos de fusión (306).
Además, en respuesta a la determinación de que el candidato de fusión espacial A0 no está disponible ("NO" de 306), o después de insertar el candidato de fusión espacial A0 en la lista de candidatos de fusión, el codificador de vídeo puede determinar si el candidato de fusión espacial para la ubicación B2 (es decir, el candidato de fusión espacial B2) está disponible (308). En respuesta a la determinación de que el candidato de fusión espacial B2 está disponible ("SÍ" de 308), el codificador de vídeo puede insertar el candidato de fusión espacial B2 en la lista de candidatos de fusión (310).
En respuesta a la determinación de que el candidato de fusión espacial B2 no está disponible ("NO" de 308) o después de insertar el candidato de fusión espacial B2 en la lista de candidatos de fusión, el codificador de vídeo puede determinar si el candidato de fusión temporal está disponible (312). En respuesta a la determinación de que el candidato de fusión temporal está disponible ("SÍ" de 3"2), el codificador de vídeo puede insertar el candidato de fusión temporal en la lista de candidatos de fusión (314).
Además, en respuesta a la determinación de que el candidato de fusión temporal no está disponible ("NO" de 312) o después de insertar el candidato de fusión temporal en la lista de candidatos de fusión, el codificador de vídeo puede determinar si el segmento actual es un segmento B (316). En respuesta a la determinación de que el segmento actual es un segmento B ("SÍ" de 316), el codificador de vídeo puede derivar candidatos de fusión bipredictivos combinados (318). En algunos ejemplos, el codificador de vídeo puede derivar los candidatos de fusión bipredictivos combinados realizando la operación descrita en la subcláusula H.8.5.2.13 del Modelo de prueba 4 de 3D-HEVC.
En respuesta a la determinación de que el segmento actual no es un segmento B ("NO" de 316) o después de derivar los candidatos de fusión bipredictivos combinados, el codificador de vídeo puede derivar candidatos de fusión de vector de movimiento cero (320). Los candidatos de fusión de vector de movimiento cero pueden especificar vectores de movimiento que tienen componentes horizontales y verticales iguales a 0. En algunos ejemplos, el codificador de vídeo puede derivar los candidatos de vector de movimiento cero realizando la operación descrita en la subcláusula 8.5.2.14 del Modelo de prueba 4 de 3D-HEVC.
La figura 19 es un diagrama de flujo que ilustra una operación de un codificador de vídeo para determinar un IPMVC o un candidato de fusión de texturas, de acuerdo con un ejemplo de esta divulgación. En el ejemplo de la figura 19, el codificador de vídeo (por ejemplo, el codificador de vídeo 20 o el decodificador de vídeo 30) pueden dividir una PU actual en una pluralidad de varias sub-PU (348). En diferentes ejemplos, el tamaño de bloque de cada una de las sub-PU puede ser 4x4, 8x8, 16x16, u otro tamaño.
Además, en el ejemplo de la figura 19, el codificador de vídeo puede establecer un vector de movimiento predeterminado y un índice de referencia predeterminado (350). En diferentes ejemplos, el codificador de vídeo puede establecer el vector de movimiento predeterminado y el índice de referencia predeterminado de diversas maneras. En algunos ejemplos, los parámetros de movimiento predeterminados (es decir, los vectores de movimiento predeterminados y los índices de referencia predeterminados) son iguales al candidato de vector de movimiento a nivel de PU. Además, en algunos ejemplos, el codificador de vídeo puede determinar la información de movimiento predefinida de un modo diferente dependiendo de si el codificador de vídeo está determinando un IPMVC o un candidato de fusión de texturas.
En algunos ejemplos donde el codificador de vídeo está determinando un IPMVC, el codificador de vídeo puede derivar un IPMVC a nivel de PU a partir de una posición central de la región correspondiente de la PU actual, según se define en el Modelo de prueba 4 de 3D-HEVC. Además, en este ejemplo, el codificador de vídeo puede establecer los vectores de movimiento e índices de referencia predeterminados iguales al IPMVC a nivel de PU. Por ejemplo, el codificador de vídeo puede establecer los vectores de movimiento predeterminados y los índices de referencia predeterminados a un IPMVC a nivel de PU. En este caso, el codificador de vídeo puede derivar el IPMVC a nivel de PU a partir de una posición central de una región correspondiente para la PU actual.
En otro ejemplo donde el codificador de vídeo está determinando un IPMVC, el codificador de vídeo puede establecer los parámetros de movimiento predeterminados en los parámetros de movimiento contenidos por un bloque de referencia intervista que cubre un píxel en las coordenadas (xRef, yRef) de una imagen de referencia en una vista de referencia. El codificador de vídeo puede determinar las coordenadas (xRef, yRef) de la siguiente manera:
xRef = Clip3( 0, PicWidthlnSamplesL - 1, xP (( nPSW [[- 1]] ) » 1)
(( mvDisp[ 0 ] 2 ) » 2 ))
yRef = Clip3( 0, PicHeightlnSamplesL - 1, yP ( ( nPSH [[- 1]] ) » 1)
(( mvDisp[ l ] 2 ) » 2 ) )
En las ecuaciones anteriores, (xP, yP) indica las coordenadas de la muestra de arriba a la izquierda de la PU actual, mvDisp es el vector de disparidad y nPSWxnPSH es el tamaño de la PU actual y PicWidthInSamplesL y PicHeightInSamplesL definen la resolución de la imagen en la vista de referencia (la misma que la vista actual). En las ecuaciones anteriores, el texto en cursiva entre corchetes dobles indica texto eliminado de las ecuaciones H-124 y H-125 en la sección H.8.5.2.1.10 del Modelo de prueba 4 de 3D-HEVC.
Como se ha discutido anteriormente, la sección H.8.5.2.1.10 del Modelo de prueba 4 de 3D-HEVC describe un proceso de derivación para un candidato de vector de movimiento temporal intervista. Además, como se ha discutido anteriormente, las ecuaciones H-124 y H-125 se utilizan en la sección H.8.5.2.1.10 del Modelo de prueba 4 de 3D-HEVC para determinar una ubicación de luminancia de un bloque de referencia en una imagen de referencia. A diferencia de las ecuaciones H-124 y H-125 en el Modelo de prueba 4 de 3D-HEVC, las ecuaciones de este ejemplo no restan 1 de nPSW ni de nPSH. Como resultado, xRef e yRef indican las coordenadas de un píxel inmediatamente por debajo y a la derecha del centro verdadero del bloque de predicción de la PU actual. Debido a que la anchura y la altura del bloque de predicción de la PU actual en los valores de muestra pueden ser número pares, puede no haber un valor de muestra en el centro verdadero del bloque de predicción de la PU actual. Puede resultar una ganancia de codificación cuando xRef e yRef indican las coordenadas de un píxel inmediatamente por debajo y a la derecha del centro verdadero del bloque de predicción de la PU actual con respecto a cuándo xRef e yRef indican las coordenadas de un píxel inmediatamente por encima y a la izquierda del centro verdadero del bloque de predicción de la PU actual. En otros ejemplos, el codificador de vídeo puede utilizar otros bloques que cubren diferentes píxeles (xRef, yRef) para derivar los vectores de movimiento e índices de referencia predeterminados.
En otro ejemplo de cómo el codificador de vídeo puede establecer los parámetros de movimiento predeterminados cuando el codificador de vídeo está determinando un IPMVC, antes de establecer los parámetros de movimiento de las sub-PU de la PU actual, el codificador de vídeo puede seleccionar de entre todas las sub-PU de la PU actual, una sub-PU que esté más cerca de un píxel central de un bloque de predicción de luminancia de la PU actual. El codificador de vídeo puede entonces determinar, para la sub-PU seleccionada, un bloque de referencia en un componente de vista de referencia. En otras palabras, el codificador de vídeo puede determinar un bloque de referencia intervista para la sub-PU seleccionada. Cuando el bloque de referencia intervista para la sub-PU seleccionada se codifica utilizando la predicción con compensación de movimiento, el codificador de vídeo puede utilizar el bloque de referencia intervista para la sub-PU seleccionada para derivar los vectores de movimiento e índices de referencia predeterminados. En otras palabras, el codificador de vídeo puede establecer los parámetros de movimiento predeterminados como los parámetros de movimiento de la sub-PU del bloque de referencia que esté más cerca de un píxel central de un bloque de predicción de luminancia de la PU actual.
De esta manera, el codificador de vídeo puede determinar un bloque de referencia en la imagen de referencia, teniendo el bloque de referencia el mismo tamaño que un bloque de predicción de la PU actual. Además, el codificador de vídeo puede determinar, de entre las sub-PU del bloque de referencia, una sub-PU que esté más cerca de un píxel central del bloque de referencia. El codificador de vídeo puede derivar los parámetros de movimiento predeterminados a partir de los parámetros de movimiento de la sub-PU determinada del bloque de referencia.
El codificador de vídeo puede determinar la sub-PU que está más cerca al píxel central del bloque de referencia de diversas maneras. Por ejemplo, asumiendo que el tamaño de la sub-PU es 2Ux2U, el codificador de vídeo puede seleccionar la sub-PU con las siguientes coordenadas relativas a la muestra de arriba a la izquierda del bloque de predicción de luminancia de la PU actual: (((nPSW>>(u+1))-1)« u, (((nPSH>>(u+1))-1)<< u). Indicado de otro modo, la sub-PU que está más cerca al píxel central del bloque de referencia incluye un píxel que tiene las siguientes coordenadas relativas a una muestra de arriba a la izquierda del bloque de referencia: (((nPSW>>(u+1))-1)<< u, (((nPSH>>(u+1))-1)<< u). Como alternativa, el codificador de vídeo puede seleccionar la sub-PU con las siguientes coordenadas, coordenadas relativas a la muestra de arriba a la izquierda del bloque de predicción de luminancia de la PU actual ((nPSW>>(u+1))<<u, (nPSH>>(u+1))<<u). Indicado de otro modo, la sub-PU que está más cerca al píxel central del bloque de referencia incluye un píxel que tiene las siguientes coordenadas relativas a una muestra de arriba a la izquierda del bloque de referencia: ((nPSW>>(u+1))<<u, (nPSH>>(u+1))<<u). En estas ecuaciones, nPSW y nPSH son la anchura y la altura del bloque de predicción de luminancia de la PU actual, respectivamente. Por tanto, en un ejemplo, un codificador de vídeo puede determinar, de entre la pluralidad de las sub-PU de la PU actual, una sub-PU que esté más cerca de un píxel central del bloque de predicción de luminancia de la PU actual. En este ejemplo, el codificador de vídeo puede derivar los parámetros de movimiento predeterminados desde un bloque de referencia intervista para la sub-PU determinada.
En otros ejemplos donde el codificador de vídeo está determinando un IPMVC, el vector de movimiento predeterminado es un vector de movimiento cero. Además, en algunos ejemplos, el índice de referencia predeterminado es igual a la primera imagen de referencia temporal disponible (es decir, una imagen de referencia en una instancia de tiempo diferente a la imagen actual) en una lista actual de imágenes de referencia o el índice de referencia predeterminado puede ser igual a 0. En otras palabras, los parámetros de movimiento predeterminados pueden incluir un vector de movimiento predeterminado y un índice de referencia predeterminado. El codificador de vídeo puede establecer un vector de movimiento predeterminado como un vector de movimiento cero y puede establecer el índice de referencia predeterminado como 0 o una primera imagen de referencia temporal disponible en una lista actual de imágenes de referencia.
Por ejemplo, si el segmento actual es un segmento P, el índice de referencia predeterminado puede indicar una primera imagen de referencia temporal disponible en la RefPicList0 de la imagen actual (es decir, una imagen de referencia temporal en la RefPicList0 de la imagen actual que tiene el índice de referencia más bajo). Además, si el segmento actual es un segmento B y la interpredicción de la RefPicList0 está habilitada, pero la interpredicción de la RefPicList1 de imagen actual no está habilitada, el índice de referencia predeterminado puede indicar una primera imagen de referencia temporal disponible en la RefPicList0 de la imagen actual. Si el segmento actual es un segmento B y la interpredicción de la RefPicList1 de imagen actual está habilitada, pero la interpredicción de la RefPicList0 de la imagen actual no está habilitada, el índice de referencia predeterminado puede indicar una primera imagen de referencia temporal disponible en la RefPicList1 de imagen actual (es decir, una imagen de referencia temporal en la RefPicList1 de imagen actual que tiene el índice de referencia más bajo). Si el segmento actual es un segmento B y la interpredicción de la RefPicList0 de la imagen actual y la RefPicList1 de imagen actual están habilitadas, un índice de referencia de la RefPicList0 predeterminado puede indicar una primera imagen de referencia temporal disponible en la RefPicList0 de la imagen actual y un índice de referencia de la RefPicList1 predeterminado puede indicar una primera imagen de referencia temporal disponible en la RefPicList1 de imagen actual.
Además, en algunos ejemplos proporcionados anteriormente para determinar los parámetros de movimiento predeterminados cuando el codificador de vídeo está determinando un IPMVC, el codificador de vídeo puede establecer los parámetros de movimiento predeterminados como los parámetros de movimiento de una sub-PU más próximos a un píxel central del bloque de predicción de luminancia de la PU actual. Sin embargo, en estos y otros ejemplos, los parámetros de movimiento predeterminados pueden no estar disponibles. Por ejemplo, si el bloque de referencia intervista correspondiente a la sub-PU más próxima a un píxel central del bloque de predicción de luminancia de la PU actual se intrapredice, los parámetros de movimiento predeterminados pueden seguir no disponibles. Por tanto, en algunos ejemplos, cuando los parámetros de movimiento predeterminados no están disponibles y un bloque de referencia intervista para una primera sub-PU se codifica utilizando la predicción con compensación de movimiento (es decir, el bloque de referencia intervista para la primera sub-PU tiene información de movimiento disponible), el codificador de vídeo puede establecer los parámetros de movimiento predeterminados como los parámetros de movimiento de la primera sub-PU. En este ejemplo, la primera sub-PU puede ser la primera sub-PU de la PU actual en un orden de exploración de trama de las sub-PU de la PU actual. Por tanto, al determinar los parámetros de movimiento predeterminados, el codificador de vídeo puede, como respuesta a la determinación de que la primera sub-PU en un orden de exploración de trama de la pluralidad de las sub-PU tiene parámetros de movimiento disponibles, establecer los parámetros de movimiento predeterminados como los parámetros de movimiento disponibles de la primera sub-PU en el orden de exploración de trama de la pluralidad de las sub-PU.
Por otra parte, cuando la información de movimiento predefinida no está disponible (por ejemplo, cuando los parámetros de movimiento del bloque de referencia intervista para la primera sub-PU no están disponibles), el codificador de vídeo puede establecer la información de movimiento predefinida como los parámetros de movimiento de la primera sub-PU de una fila de la sub-PU actual si la primera sub-PU de la fila de la sub-PU actual tiene parámetros de movimiento disponibles. Cuando los parámetros de movimiento predeterminados todavía no están disponibles (por ejemplo, cuando el bloque de referencia intervista para la primera sub-PU de la fila de la sub-PU actual no están disponibles), el codificador de vídeo puede establecer el vector de movimiento predeterminado como un vector de movimiento cero y puede establecer el índice de referencia predeterminado igual a la primera imagen de referencia temporal disponible en la lista actual de imágenes de referencia. De esta manera, cuando el codificador de vídeo está determinando los parámetros de movimiento predeterminados, el codificador de vídeo puede, como respuesta a la determinación de que la primera sub-PU de una fila de las sub-PU que incluye la sub-PU respectiva tiene parámetros de movimiento disponibles, establecer los parámetros de movimiento predeterminados como los parámetros de movimiento disponibles de la primera sub-PU de la fila de las sub-PU que incluye la sub-PU respectiva.
Además, como se ha descrito anteriormente con respecto al ejemplo de la figura 17, el codificador de vídeo puede determinar un candidato de fusión de texturas utilizando una técnica de predicción de movimiento a nivel de sub-PU. En tales ejemplos, la PU actual puede denominarse en el presente documento como la "PU de profundidad actual". El codificador de vídeo puede realizar la operación de la figura 19 para determinar el candidato de fusión de texturas. Por tanto, cuando el codificador de vídeo está determinando el candidato de fusión de texturas, el codificador de vídeo puede dividir la PU de profundidad actual en varias sub-PU y cada sub-PU utiliza la información de movimiento de un bloque de textura coubicado para la compensación de movimiento. Además, cuando el codificador de vídeo está determinando el candidato de fusión de texturas, el codificador de vídeo puede asignar los vectores de movimiento e índices de referencia predeterminados a una sub-PU si el bloque de textura correspondiente de la sub-PU está intracodificado o una imagen en la misma unidad de acceso que una imagen de referencia del bloque de textura correspondiente no está incluida en una lista de imágenes de referencia de la PU de profundidad actual. Por tanto, en general, el codificador de vídeo puede determinar que un bloque de textura coubicado tiene información de movimiento disponible cuando el bloque de textura coubicado no está intracodificado y una imagen de referencia utilizada por el bloque de textura coubicado está en una lista de imágenes de referencia de la imagen de profundidad actual. En cambio, los parámetros de movimiento de un bloque de textura coubicado pueden no estar disponibles cuando el bloque de textura coubicado está intracodificado o el bloque de textura coubicado utiliza una imagen de referencia que no está en una lista de imágenes de referencia de la imagen de profundidad actual.
Como se ha indicado anteriormente, el codificador de vídeo puede determinar la información de movimiento predefinida de un modo diferente dependiendo de si el codificador de vídeo está determinando un IPMVC o un candidato de fusión de texturas. Por ejemplo, cuando el codificador de vídeo está determinando un candidato de fusión de texturas, el codificador de vídeo puede determinar los vectores de movimiento predeterminados e índices de referencia predeterminados de acuerdo con uno de los siguientes ejemplos u otros ejemplos. En un ejemplo, un bloque de textura coubicado puede estar coubicado con la PU de profundidad actual y puede tener el mismo tamaño que la PU de profundidad actual. En este ejemplo, el codificador de vídeo establece los vectores de movimiento predeterminados e índices de referencia predeterminados como la información de movimiento de un bloque que cubre un píxel central del bloque de textura coubicado.
Por tanto, en algunos ejemplos donde la imagen actual es un componente de vista de profundidad y la imagen de referencia es un componente de vista de textura que está en la misma vista y unidad de acceso que la imagen actual, el codificador de vídeo puede establecer los parámetros de movimiento predeterminados como parámetros de movimiento asociados con un bloque que cubre un píxel de un bloque de referencia que está en la imagen de referencia, que está coubicada con la PU actual, y que tiene el mismo tamaño que la PU actual. En tales ejemplos, el píxel puede ser un píxel central del bloque de referencia u otro píxel del bloque de referencia.
En otro ejemplo donde el codificador de vídeo está determinando un candidato de fusión de texturas, un bloque de textura coubicado puede tener el mismo tamaño que la PU de profundidad actual. En este ejemplo, el codificador de vídeo puede establecer los vectores de movimiento predeterminados e índices de referencia predeterminados como la información de movimiento de un bloque (por ejemplo, una PU) que cubre cualquier píxel dado dentro del bloque de textura coubicado.
En otro ejemplo donde el codificador de vídeo está determinando un candidato de fusión de texturas, el codificador de vídeo puede seleccionar en primer lugar una sub-PU central de la PU de profundidad actual. Entre todas las sub-PU de la Pu de profundidad actual, la sub-PU central puede estar ubicada más cerca de (o puede incluir) un píxel central del bloque de predicción de la PU de profundidad actual. El codificador de vídeo puede entonces utilizar un bloque de textura coubicado con la sub-PU central para derivar los vectores de movimiento e índices de referencia predeterminados. Suponiendo que el tamaño de la sub-PU es 2Ux2U, el codificador de vídeo puede determinar que la sub-PU central es la sub-PU con las siguientes coordenadas relativas a una muestra de arriba a la izquierda del bloque de predicción de la PU de profundidad actual (y, por tanto, la muestra de arriba a la izquierda de un bloque de textura coubicado):
(((nPSW>>(u+1))-1)<< u, (((nPSH>>(u+1))-1)<< u). Como alternativa, el codificador de vídeo puede determinar que las coordenadas relativas de la sub-PU central son:
((nPSW>>(u+1))<<u, (nPSH>>(u+1))<<u). En estas ecuaciones, nPSW y nPSH son la anchura y la altura del bloque de predicción de la PU de profundidad actual, respectivamente.
Por tanto, en un ejemplo, un codificador de vídeo puede determinar, de entre la pluralidad de las sub-PU de la PU actual, una sub-PU que está más cerca de un centro de un bloque de predicción de la PU actual. En este ejemplo, el codificador de vídeo puede derivar los parámetros de movimiento predeterminados de un bloque de textura coubicado para la sub-PU determinada.
En algunos ejemplos donde el codificador de vídeo está determinando un candidato de fusión de texturas y la información de movimiento predefinida no está disponible (por ejemplo, cuando los parámetros de movimiento del bloque de textura coubicado para la sub-PU central no están disponibles), el codificador de vídeo puede determinar si un bloque de textura coubicado para una primera sub-PU de la PU de profundidad actual tiene información de movimiento disponible. La primera sub-PU de la PU de profundidad actual puede ser la primera sub-PU de la PU de profundidad actual en un orden de exploración de trama de las sub-PU de la PU de profundidad actual. Si los parámetros de movimiento del bloque de textura coubicado para la primera sub-PU de la PU de profundidad actual están disponibles, el codificador de vídeo puede establecer los parámetros de movimiento predeterminados como los parámetros de movimiento de la primera sub-PU de la PU de profundidad actual.
Además, en algunos ejemplos donde el codificador de vídeo está determinando un candidato de fusión de texturas, cuando la información de movimiento predefinida no está disponible (por ejemplo, cuando los parámetros de movimiento del bloque de textura coubicado para la primera sub-PU no están disponibles), el codificador de vídeo establece la información de movimiento predefinida como la información de movimiento de una primera sub-PU de una fila de la sub-PU actual si la primera sub-PU de la fila de la sub-PU actual tiene información de movimiento disponible. Además, cuando la información de movimiento predefinida no está disponible (por ejemplo, cuando la información de movimiento de la primera sub-PU de la fila de la sub-PU actual no está disponible), el vector de movimiento predeterminado es un vector de movimiento cero, y el índice de referencia predeterminado es igual a la primera imagen de referencia temporal disponible en una lista actual de imágenes de referencia o 0.
En algunos ejemplos donde el codificador de vídeo está determinando un candidato de fusión de texturas, el vector de movimiento predeterminado es un vector de movimiento cero, y el índice de referencia predeterminado es igual a la primera imagen de referencia temporal disponible en una lista actual de imágenes de referencia o 0.
Independientemente de si el codificador de vídeo está determinando un IPMVC o un candidato de fusión de texturas, el codificador de vídeo puede establecer la información de movimiento predefinida para toda la PU actual. Por lo tanto, el codificador de vídeo no necesita almacenar más vectores de movimiento en la PU actual para predecir bloques espaciales contiguos, bloques temporales contiguos (cuando la imagen que contiene esta PU se utiliza como imagen coubicada durante la TMVP) o desbloquear.
Además, el codificador de vídeo puede determinar un candidato de vector de movimiento a nivel de PU (352). Por ejemplo, el codificador de vídeo puede determinar un IPMVC a nivel de PU o un candidato de herencia de parámetros de movimiento (MPI) a nivel de PU (es decir, un candidato de fusión de texturas a nivel de PU), dependiendo de si el codificador de vídeo está determinando un IPMVC o un candidato de fusión de texturas. El codificador de vídeo puede determinar, basándose en el candidato de vector de movimiento a nivel de PU, si incluir uno más candidatos de fusión espacial en la lista de candidatos. En algunos ejemplos, el candidato de vector de movimiento a nivel de PU especifica los mismos parámetros de movimiento que los parámetros de movimiento predeterminados.
En algunos ejemplos donde el codificador de vídeo está determinando un IPMVC, el codificador de vídeo puede derivar un IPMVC a nivel de PU a partir de una posición central de la región correspondiente de la PU actual, según se define en el Modelo de prueba 4 de 3D-HEVC. Como se describe en el ejemplo de la figura 17, el codificador de vídeo puede utilizar vectores de movimiento representativos e índices de referencia representativos del IPMVC (es decir, el IPMVC a nivel de PU) para determinar si incluir el candidato de fusión espacial Ai y el candidato de fusión espacial Bi en la lista de candidatos de fusión.
En otro ejemplo donde el codificador de vídeo está determinando un IPMVC, el codificador de vídeo puede determinar, basándose en un vector de disparidad de la PU actual, un bloque de referencia en una imagen de referencia intervista. El codificador de vídeo puede entonces determinar una sub-PU que cubre un píxel central del bloque de referencia (es decir, una sub-PU que está más cerca al píxel central del bloque de referencia). En este ejemplo, el codificador de vídeo puede determinar que el IPMVC a nivel de PU especifica los parámetros de movimiento de la sub-PU determinada del bloque de referencia. Como se indica en otra parte en esta divulgación, el codificador de vídeo puede determinar la sub-PU que está más cerca al píxel central del bloque de referencia de diversas maneras. Por ejemplo, asumiendo que el tamaño de la sub-PU es 2Ux2U, la sub-PU que está más cerca al píxel central del bloque de referencia incluye un píxel que tiene las siguientes coordenadas relativas a una muestra de arriba a la izquierda del bloque de referencia: (((nPSW>>(u+1))-1)<< u, (((nPSH>>(u+1))- 1)<< u). Como alternativa, la sub-PU que está más cerca al píxel central del bloque de referencia incluye un píxel que tiene las siguientes coordenadas relativas a una muestra de arriba a la izquierda del bloque de referencia: ((nPSW>>(u+1))<<u, (nPSH>>(u+1))<<u). En estas ecuaciones, nPSW y nPSH son la anchura y la altura del bloque de predicción de luminancia de la PU actual, respectivamente. En este ejemplo, el codificador de vídeo puede utilizar los parámetros de movimiento de la sub-PU determinada como IPMVC a nivel de PU. El IPMVC a nivel de PU puede especificar los vectores de movimiento representativos e índices de referencia representativos del IPMVC. De esta manera, el codificador de vídeo puede utilizar los parámetros de movimiento de la sub-PU que está más cerca al píxel central del bloque de referencia para determinar el IPMVC a nivel de PU. En otras palabras, el codificador de vídeo puede derivar un IPMVC a nivel de PU a partir de una posición central de una región correspondiente de la PU actual y determinar, basándose en el IPMVC a nivel de PU, si incluir un candidato de fusión espacial en la lista de candidatos. Los parámetros de movimiento utilizados de la sub-PU pueden ser los mismos que los parámetros de movimiento que el codificador de vídeo utiliza para crear el IPMVC.
En algunos ejemplos donde el codificador de vídeo está determinando un candidato de fusión de texturas, la información de movimiento utilizada desde la sub-PU central para los parámetros de movimiento predeterminados puede ser la misma que la información de movimiento utilizada para crear el candidato de herencia de parámetros de movimiento (MPI) a nivel de PU. El codificador de vídeo puede determinar, basándose en el candidato MPI a nivel de PU, si incluir candidatos de fusión espacial particulares en la lista de candidatos de fusión. Por ejemplo, si el candidato de fusión espacial Ai y el candidato de m P i a nivel de PU tienen los mismos vectores de movimiento y los mismos índices de referencia, el codificador de vídeo no inserta el candidato de fusión espacial Ai en la lista de candidatos de fusión. De un modo similar, si el candidato de fusión espacial Bi y el candidato de fusión espacial Ai o el candidato de MPI a nivel de PU tienen los mismos vectores de movimiento y los mismos índices de referencia, el codificador de vídeo no inserta Bi en la lista de candidatos de fusión.
En el ejemplo de la figura i9 , el codificador de vídeo puede determinar, para una sub-PU actual de la PU actual, una ubicación de la muestra de referencia en una imagen de referencia (354). La imagen de referencia puede estar en un vídeo diferente que la imagen que contiene la PU actual (es decir, la imagen actual). En algunos ejemplos, el codificador de vídeo puede determinar la ubicación de referencia añadiendo un vector de disparidad para la PU actual a las coordenadas de un píxel central de la sub-PU actual. En otros ejemplos, tales como cuando la PU actual es una PU de profundidad, la ubicación de la muestra de referencia puede coubicarse con una muestra de un bloque de predicción de la PU de profundidad actual.
Además, el codificador de vídeo puede determinar un bloque de referencia para la sub-PU actual (356). El bloque de referencia puede ser una PU de la imagen de referencia y puede cubrir la ubicación de la muestra de referencia determinada. A continuación, el codificador de vídeo puede determinar si el bloque de referencia se codifica utilizando la predicción con compensación de movimiento (358). Por ejemplo, si el bloque de referencia se codifica utilizando intrapredicción, el codificador de vídeo puede determinar que el bloque de referencia no se codifica utilizando la predicción con compensación de movimiento. Si el bloque de referencia se codifica utilizando la predicción con compensación de movimiento, el bloque de referencia tiene uno o más vectores de movimiento.
En respuesta a la determinación de que el bloque de referencia se codifica utilizando la predicción con compensación de movimiento ("SÍ" de 358), el codificador de vídeo puede establecer parámetros de movimiento de la sub-PU actual basándose en los parámetros de movimiento del bloque de referencia (360). Por ejemplo, el codificador de vídeo puede establecer un vector de movimiento de la RefPicListO de la sub-PU actual como un vector de movimiento de la RefPicListO del bloque de referencia, puede establecer un índice de referencia de la RefPicListO de la sub-PU actual como un índice de referencia de la RefPicListO del bloque de referencia, puede establecer un vector de movimiento de la RefPicListi de la sub-PU actual como un vector de movimiento de la RefPicListi del bloque de referencia, y puede establecer un índice de referencia de la RefPicListi de la sub-PU actual como un índice de referencia de la RefPicListi del bloque de referencia.
Por otra parte, en respuesta a la determinación de que el bloque de referencia no se codifica utilizando la predicción con compensación de movimiento ("NO" de 358), el codificador de vídeo puede establecer los parámetros de movimiento de la sub-PU actual como los parámetros de movimiento predeterminados (362). Por tanto, en el ejemplo de la figura i9 , cuando el bloque de referencia para la sub-PU actual no se codifica utilizando la predicción con compensación de movimiento, el codificador de vídeo no establece los parámetros de movimiento de la sub-PU actual como los parámetros de movimiento de una sub-PU más próxima que tiene un bloque de referencia que se codifica utilizando la predicción con compensación de movimiento. Más bien, el codificador de vídeo puede establecer los parámetros de movimiento de la sub-PU actual directamente como los parámetros de movimiento predeterminados. Esto puede simplificar y acelerar el proceso del proceso de codificación.
Después de establecer los parámetros de movimiento de la sub-PU actual, el codificador de vídeo puede determinar si la PU actual tiene cualquiera de las sub-PU adicionales (364). En respuesta a la determinación de que la PU actual tiene una o más sub-PU adicionales ("SÍ" de 364), el codificador de vídeo puede realizar las acciones 354-364 con otra de las sub-PU de la PU actual como la sub-PU actual. De esta manera, el codificador de vídeo puede establecer los parámetros de movimiento de cada una de las sub-PU de la PU actual. Por otra parte, en respuesta a la determinación de que no hay sub-PU adicionales de la PU actual ("NO" de 366), el codificador de vídeo puede incluir un candidato (por ejemplo, un IPMVC) en la lista de candidatos de fusión para la PU actual (366). El candidato puede especificar los parámetros de movimiento de cada una de las sub-PU de la PU actual.
En uno o más ejemplos, las funciones descritas pueden implementarse en hardware, software, firmware o cualquier combinación de los mismos. Si se implementan en software, las funciones pueden ser almacenadas en o transmitidas, como una o más instrucciones o código, a través de un medio legible por ordenador y ser ejecutadas por 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 medios de almacenamiento de datos, o medios de comunicación que incluyen cualquier medio que facilita la transferencia de un programa informático de un lugar a otro, por ejemplo, de acuerdo con un protocolo de comunicaciones. De esta manera, el medio legible por ordenador puede correspondiente generalmente a (1) medios tangibles de almacenamiento legibles por ordenador que no son transitorios o (2) un medio de comunicación, tal como una señal u onda portadora. Los medios de almacenamiento de datos pueden ser cualquier medio disponible al que puedan acceder uno o más ordenadores o uno o más procesadores para recuperar instrucciones, códigos y/o estructuras de datos para la implementación de las técnicas descritas en esta divulgación. Un producto de programa informático puede incluir un medio legible por ordenador.
A modo de ejemplo, y no de limitación, tales medios de almacenamiento legibles por ordenador pueden comprender RAM, ROM, EEPROM, CD-ROM u otro almacenamiento en disco óptico, almacenamiento en disco magnético u otros dispositivos de almacenamiento magnético, memoria flash, o cualquier otro medio que pueda utilizarse para almacenar un código informático deseado en forma de instrucciones o estructuras de datos y al que pueda accederse mediante un ordenador. También, cualquier conexión se denomina adecuadamente un medio legible por ordenador. Por ejemplo, si se transmiten instrucciones desde un sitio web, servidor u otra fuente remota utilizando un cable coaxial, un cable de fibra óptica, par trenzado, línea de abonado digital (DSL) o tecnologías inalámbricas, tales como infrarrojos, radio y microondas, entonces el cable coaxial, el cable de fibra óptica, el par trenzado, la DSL, o las tecnologías inalámbricas, tales como infrarrojos, radio y microondas se incluyen en la definición de medio. Debe entenderse, sin embargo, que los medios de almacenamiento legibles por ordenador y los medios de almacenamiento de datos no incluyen conexiones, ondas portadoras, señales u otros medios transitorios, sino que están dirigidos a medios de almacenamiento tangibles no transitorios. Disquete y disco, según se utilizan en el presente documento, incluyen disco compacto (CD), disco láser, disco óptico, disco digital versátil (DVD), disquete extraíble y disco Blu-ray, donde los disquetes normalmente reproducen datos magnéticamente, mientras que los discos reproducen datos ópticamente con láseres. Las combinaciones de los anteriores también deben incluirse dentro del alcance de los medios legibles por ordenador.
Las instrucciones pueden ser ejecutadas por uno o más procesadores, tales como uno o más procesadores de señales digitales (DSP), microprocesadores de propósito general, circuitos integrados de aplicación específica (ASIC), matrices lógicas programables en campo (FP-GA) u otro circuito lógico integrado o discreto equivalente. En consecuencia, el térmico "procesador", según se utiliza en el presente documento, puede referirse a cualquier otra estructura anterior o cualquier otra estructura adecuada para la implementación de las técnicas descritas en el presente documento. Además, en algunos aspectos, la funcionalidad descrita en el presente documento puede proporcionarse dentro de módulos de hardware y/o software dedicados configurados para codificar y decodificar, o puede incorporarse en un códec combinado. También, las técnicas podrían implementarse por completo en uno o más circuitos o elementos lógicos.
Las técnicas de esta divulgación pueden implementarse en una amplia diversidad de dispositivos o aparatos, incluyendo un teléfono inalámbrico, un circuito integrado (IC) o un conjunto de IC (por ejemplo, un conjunto de chips). Diversos componentes, módulos o unidades se describen en esta divulgación para enfatizar aspectos funcionales de dispositivos configurados para realizar las técnicas desveladas, pero no requieren necesariamente su realización por medio de unidades de hardware diferentes. Más bien, como se ha descrito anteriormente, pueden combinarse diversas unidades en una unidad de hardware de códec o proporcionarse por medio de una colección de unidades de hardware intraoperativas, incluyendo uno o más procesadores como se han descrito anteriormente, junto con un software y/o firmware adecuados.

Claims (13)

REIVINDICACIONES
1. Un método para decodificar datos de vídeo multivista, comprendiendo el método:
dividir (348) una unidad de predicción actual, PU, en una pluralidad de sub-PU, en la que la PU actual está en una imagen actual;
determinar (350) parámetros de movimiento predeterminados, en los que los parámetros de movimiento predeterminados incluyen un vector de movimiento predeterminado y un índice de referencia predeterminado, y en los que determinar los parámetros de movimiento predeterminados comprende:
cuando un bloque de referencia intervista correspondiente a una sub-PU más próxima a un píxel central de un bloque de predicción de luminancia de la PU actual no tiene parámetros de movimiento disponibles, cuando una primera sub-PU de la PU actual en un orden de exploración de trama no tiene parámetros de movimiento disponibles y cuando un bloque de referencia intervista para una primera sub-PU de una fila de las sub-PU que incluye la sub-PU respectiva se codifica utilizando la predicción con compensación de movimiento para que tenga parámetros de movimiento disponibles, establecer los parámetros de movimiento predeterminados como los parámetros de movimiento disponibles de la primera sub-PU de la fila de las sub-PU que incluye la sub-PU respectiva;
procesar las sub-PU de la pluralidad de sub-PU en un orden particular, en el que un bloque de referencia para al menos una de las sub-PU no se codifica utilizando la predicción con compensación de movimiento, y en el que procesar las sub-PU comprende, para cada sub-PU respectiva de la pluralidad de sub-PU:
determinar (356) un bloque de referencia para la sub-PU respectiva, en el que una imagen de referencia incluye el bloque de referencia para la sub-PU respectiva;
si el bloque de referencia para la sub-PU respectiva se codifica utilizando la predicción con compensación de movimiento, establecer (360) un candidato de parámetros de movimiento de la sub-PU respectiva basándose en parámetros de movimiento del bloque de referencia para la sub-PU respectiva; y
si el bloque de referencia para la sub-PU respectiva no se codifica utilizando la predicción con compensación de movimiento, establecer (362) el candidato parámetros de movimiento de la sub-PU respectiva como los parámetros de movimiento predeterminados;
incluir (366) los parámetros de movimiento establecidos para cada sub-PU de la pluralidad de las sub-PU como un candidato en una lista de candidatos de la PU actual;
obtener, desde un flujo de bits, un elemento de sintaxis que indica un candidato seleccionado en la lista de candidatos; y
utilizar parámetros de movimiento del candidato seleccionado para reconstruir un bloque predictivo para la PU actual.
2. Un método de codificación de datos de vídeo, comprendiendo el método:
dividir (348) una unidad de predicción actual, PU, en una pluralidad de sub-PU, en la que la PU actual está en una imagen actual;
determinar (350) parámetros de movimiento predeterminados, en el que los parámetros de movimiento predeterminados incluyen un vector de movimiento predeterminado y un índice de referencia predeterminado, y en el que determinar los parámetros de movimiento predeterminados comprende, cuando un bloque de referencia intervista correspondiente a una sub-PU más próxima a un píxel central de un bloque de predicción de luminancia de la PU actual no tiene parámetros de movimiento disponibles, cuando una primera sub-PU de la PU actual en un orden de exploración de trama no tiene parámetros de movimiento disponibles y cuando un bloque de referencia intervista para una primera sub-PU de una fila de las sub-PU que incluye la sub-PU respectiva se codifica utilizando la predicción con compensación de movimiento para que tenga parámetros de movimiento disponibles, establecer los parámetros de movimiento predeterminados como los parámetros de movimiento disponibles de la primera sub-PU de la fila de las sub-PU que incluye la sub-PU respectiva;
procesar las sub-PU de la pluralidad de sub-PU en un orden particular, en el que un bloque de referencia para al menos una de las sub-PU no se codifica utilizando la predicción con compensación de movimiento, y en el que procesar las sub-PU comprende, para cada sub-PU respectiva de la pluralidad de sub-PU:
determinar (356) un bloque de referencia para la sub-PU respectiva, en el que una imagen de referencia incluye el bloque de referencia para la sub-PU respectiva;
si el bloque de referencia para la sub-PU respectiva se codifica utilizando la predicción con compensación de movimiento, establecer (360) un candidato de parámetros de movimiento de la sub-PU respectiva basándose en parámetros de movimiento del bloque de referencia para la sub-PU respectiva; y
si el bloque de referencia para la sub-PU respectiva no se codifica utilizando la predicción con compensación de movimiento, establecer (362) el candidato parámetros de movimiento de la sub-PU respectiva como los parámetros de movimiento predeterminados;
incluir (366) los parámetros de movimiento establecidos para cada sub-PU de la pluralidad de sub-PU como un candidato en una lista de candidatos de la PU actual; y
señalar, en un flujo de bits, un elemento de sintaxis que indica un candidato seleccionado en la lista de candidatos.
3. El método, según la reivindicación 1 o la reivindicación 2, en el que:
la imagen de referencia está en una vista diferente que la imagen actual; y
determinar (356) el bloque de referencia para la sub-PU respectiva comprende determinar, basándose en un vector de disparidad de la PU actual, una ubicación de la muestra de referencia en la imagen de referencia, en el que el bloque de referencia para la sub-PU respectiva cubre la ubicación de la muestra de referencia.
4. El método, según la reivindicación 1 o la reivindicación 2, en el que:
la imagen actual es un componente de vista de profundidad y la imagen de referencia es un componente de vista de textura que está en la misma vista y unidad de acceso que la imagen actual; y
determinar (356) el bloque de referencia para la sub-PU respectiva comprende determinar que el bloque de referencia para la sub-PU respectiva es una PU de la imagen de referencia que está coubicada con la sub-PU respectiva.
5. El método, según la reivindicación 1 o la reivindicación 2, que comprende además determinar, basándose en un candidato de vector de movimiento a nivel de PU, si incluir un candidato de fusión espacial en la lista de candidatos, en el que el candidato de vector de movimiento a nivel de PU especifica los mismos parámetros de movimiento que los parámetros de movimiento predeterminados.
6. El método, según la reivindicación 1 o la reivindicación 2, en el que, cuando un bloque de referencia intervista correspondiente a una sub-PU más próxima a un píxel central de un bloque de predicción de luminancia de la PU actual no tiene parámetros de movimiento disponibles, y cuando una primera sub-PU de la PU actual en un orden de exploración de trama se codifica utilizando la predicción con compensación de movimiento, para tener parámetros de movimiento disponibles, determinar (350) los parámetros de movimiento predeterminados comprende, establecer los parámetros de movimiento predeterminados como los parámetros de movimiento disponibles de la primera sub-PU en el orden de exploración de trama de la pluralidad de las sub-PU.
7. El método, según la reivindicación 1 o la reivindicación 2, en el que, cuando un bloque de referencia intervista correspondiente a una sub-PU más próxima a un píxel central de un bloque de predicción de luminancia de la PU actual no tiene parámetros de movimiento disponibles, cuando una primera sub-PU de la PU actual en un orden de exploración de trama no tiene parámetros de movimiento disponibles y cuando un bloque de referencia intervista para una primera sub-PU de una fila de las sub-PU que incluye la sub-PU respectiva no tiene parámetros de movimiento disponibles, determinar los parámetros de movimiento predeterminados comprende establecer el vector de movimiento predeterminado como un vector de movimiento cero, y establecer el índice de referencia predeterminado como 0 o una primera imagen de referencia temporal disponible en una lista actual de imágenes de referencia.
8. El método, según la reivindicación 1 o la reivindicación 2, en el que los parámetros de movimiento predeterminados son los mismos para cada sub-PU en la pluralidad de las sub-PU.
9. El método, según la reivindicación 1 o la reivindicación 2, en el que, cuando un bloque de referencia intervista correspondiente a una sub-PU más próxima a un píxel central de un bloque de predicción de luminancia de una PU actual se codifica utilizando la predicción con compensación de movimiento, para tener parámetros de movimiento disponibles, determinar (350) los parámetros de movimiento predeterminados comprende:
derivar los parámetros de movimiento predeterminados desde los parámetros de movimiento de la sub-PU más próxima a un píxel central de un bloque de predicción de luminancia de una PU actual.
10. El método, según la reivindicación 9, en el que un tamaño de cada una de las sub-PU del bloque de referencia es 2Ux2U, y la sub-PU que está más cerca al píxel central del bloque de referencia incluye un píxel que tiene las siguientes coordenadas relativas a una muestra de arriba a la izquierda del bloque de referencia:
(((nPSW>>(u+1))-1)<< u, (((nPSH>>(u+1))-1)<< u), donde nPSW indica una anchura del bloque de referencia en píxeles y nPSH indica una altura del bloque de referencia en píxeles; o
((nPSW>>(u+1))<<u, (nPSH>>(u+1))<<u), donde nPSW indica una anchura del bloque de referencia en píxeles y nPSH indica una altura del bloque de referencia en píxeles.
11. Un dispositivo para decodificar datos de vídeo, comprendiendo el dispositivo:
medios para dividir una unidad de predicción actual (PU) en una pluralidad de las sub-PU, en el que la PU actual está en una imagen actual;
medios para determinar parámetros de movimiento predeterminados, en el que los parámetros de movimiento predeterminados incluyen un vector de movimiento predeterminado y un índice de referencia predeterminado, y en el que determinar los parámetros de movimiento predeterminados comprende: cuando un bloque de referencia intervista correspondiente a una sub-PU más próxima a un píxel central de un bloque de predicción de luminancia de la PU actual no tiene parámetros de movimiento disponibles, cuando una primera sub-PU de la PU actual en un orden de exploración de trama no tiene parámetros de movimiento disponibles, y cuando un bloque de referencia intervista para una primera sub-PU de una fila de las sub-PU que incluye la sub-PU respectiva se codifica utilizando la predicción con compensación de movimiento para tener parámetros de movimiento disponibles, establecer los parámetros de movimiento predeterminados como los parámetros de movimiento disponibles de la primera sub-PU de la fila de las sub-PU que incluye la sub-PU respectiva;
medios para procesar las sub-PU de la pluralidad de las sub-PU en un orden particular, en el que un bloque de referencia para al menos una de las sub-PU no se codifica utilizando la predicción con compensación de movimiento, y en el que los medios para procesar las sub-PU comprenden, para cada sub-PU respectiva de la pluralidad de las sub-PU:
medios para determinar un bloque de referencia para la sub-PU respectiva,
en el que una imagen de referencia incluye el bloque de referencia para la sub-PU respectiva;
medios para establecer, si el bloque de referencia para la sub-PU respectiva se codifica utilizando la predicción con compensación de movimiento, candidatos de parámetros de movimiento de la sub-PU respectiva basándose en parámetros de movimiento del bloque de referencia para la sub-PU respectiva; y
medios para establecer, si el bloque de referencia para la sub-PU respectiva no se codifica utilizando la predicción con compensación de movimiento, el candidato parámetros de movimiento de la sub-PU respectiva como los parámetros de movimiento predeterminados;
medios para incluir los parámetros de movimiento establecidos para cada sub-PU de la pluralidad de las sub-PU como un candidato en una lista de candidatos de la PU actual;
medios para obtener, desde el flujo de bits, un elemento de sintaxis que indica un candidato seleccionado en la lista de candidatos; y
medos para utilizar parámetros de movimiento del candidato seleccionado para reconstruir un bloque predictivo para la PU actual.
12. Un dispositivo para codificar datos de vídeo, comprendiendo el dispositivo:
medios para dividir una unidad de predicción actual (PU) en una pluralidad de las sub-PU, en el que la PU actual está en una imagen actual;
medios para determinar parámetros de movimiento predeterminados, en el que los parámetros de movimiento predeterminados incluyen un vector de movimiento predeterminado y un índice de referencia predeterminado, y en el que determinar los parámetros de movimiento predeterminados comprende: cuando un bloque de referencia intervista correspondiente a una sub-PU más próxima a un píxel central de un bloque de predicción de luminancia de la PU actual no tiene parámetros de movimiento disponibles, cuando una primera sub-PU de la PU actual en un orden de exploración de trama no tiene parámetros de movimiento disponibles, y cuando un bloque de referencia intervista para una primera sub-PU de una fila de las sub-PU que incluye la sub-PU respectiva se codifica utilizando la predicción con compensación de movimiento para tener parámetros de movimiento disponibles, establecer los parámetros de movimiento predeterminados como los parámetros de movimiento disponibles de la primera sub-PU de la fila de las sub-PU que incluye la sub-PU respectiva;
medios para procesar las sub-PU de la pluralidad de las sub-PU en un orden particular, en el que un bloque de referencia para al menos una de las sub-PU no se codifica utilizando la predicción con compensación de movimiento, y en el que los medios para procesar las sub-PU comprenden, para cada sub-PU respectiva de la pluralidad de las sub-PU:
medios para determinar un bloque de referencia para la sub-PU respectiva,
en el que una imagen de referencia incluye el bloque de referencia para la sub-PU respectiva;
medios para establecer, si el bloque de referencia para la sub-PU respectiva se codifica utilizando la predicción con compensación de movimiento, candidatos de parámetros de movimiento de la sub-PU respectiva basándose en parámetros de movimiento del bloque de referencia para la sub-PU respectiva; y
medios para establecer, si el bloque de referencia para la sub-PU respectiva no se codifica utilizando la predicción con compensación de movimiento, el candidato parámetros de movimiento de la sub-PU respectiva como los parámetros de movimiento predeterminados;
medios para incluir los parámetros de movimiento establecidos para cada sub-PU de la pluralidad de las sub-PU como un candidato en una lista de candidatos de la PU actual; y
medios para señalar, en un flujo de bits, un elemento de sintaxis que indica un candidato seleccionado en la lista de candidatos.
13. Un medio de almacenamiento de datos legible por ordenador no transitorio que tiene instrucciones almacenadas en el mismo que, cuando se ejecutan, hacen que un dispositivo realice el método según una cualquiera de las reivindicaciones 1 a 10.
ES13889840T 2013-07-24 2013-12-24 Predicción de movimiento avanzada simplificada para 3D-HEVC Active ES2906238T3 (es)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201361858089P 2013-07-24 2013-07-24
US201361872540P 2013-08-30 2013-08-30
US201361913031P 2013-12-06 2013-12-06
PCT/CN2013/001639 WO2015010226A1 (en) 2013-07-24 2013-12-24 Simplified advanced motion prediction for 3d-hevc

Publications (1)

Publication Number Publication Date
ES2906238T3 true ES2906238T3 (es) 2022-04-13

Family

ID=52392552

Family Applications (1)

Application Number Title Priority Date Filing Date
ES13889840T Active ES2906238T3 (es) 2013-07-24 2013-12-24 Predicción de movimiento avanzada simplificada para 3D-HEVC

Country Status (9)

Country Link
US (1) US10158885B2 (es)
EP (2) EP3028466B1 (es)
JP (1) JP6434012B2 (es)
KR (1) KR102060857B1 (es)
CN (1) CN105393538B (es)
ES (1) ES2906238T3 (es)
HK (1) HK1216571A1 (es)
SG (2) SG10201800237QA (es)
WO (2) WO2015010226A1 (es)

Families Citing this family (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102883163B (zh) * 2012-10-08 2014-05-28 华为技术有限公司 用于运动矢量预测的运动矢量列表建立的方法、装置
WO2015006984A1 (en) * 2013-07-19 2015-01-22 Mediatek Singapore Pte. Ltd. Reference view selection for 3d video coding
US9948915B2 (en) 2013-07-24 2018-04-17 Qualcomm Incorporated Sub-PU motion prediction for texture and depth coding
KR102257269B1 (ko) 2013-10-14 2021-05-26 마이크로소프트 테크놀로지 라이센싱, 엘엘씨 비디오 및 이미지 코딩 및 디코딩을 위한 인트라 블록 카피 예측 모드의 피쳐
EP3058736B1 (en) 2013-10-14 2019-02-27 Microsoft Technology Licensing, LLC Encoder-side options for intra block copy prediction mode for video and image coding
WO2015062002A1 (en) * 2013-10-31 2015-05-07 Mediatek Singapore Pte. Ltd. Methods for sub-pu level prediction
EP3089452A4 (en) * 2013-12-26 2017-10-25 Samsung Electronics Co., Ltd. Inter-layer video decoding method for performing subblock-based prediction and apparatus therefor, and inter-layer video encoding method for performing subblock-based prediction and apparatus therefor
WO2015100731A1 (en) * 2014-01-03 2015-07-09 Mediatek Singapore Pte. Ltd. Methods for determining the prediction partitions
JP6355744B2 (ja) * 2014-01-03 2018-07-11 マイクロソフト テクノロジー ライセンシング,エルエルシー ビデオ及び画像符号化/デコーディングにおけるブロックベクトル予測
US10681369B2 (en) 2014-01-03 2020-06-09 University-Industry Cooperation Group Of Kyung Hee University Method and device for inducing motion information between temporal points of sub prediction unit
US10390034B2 (en) 2014-01-03 2019-08-20 Microsoft Technology Licensing, Llc Innovations in block vector prediction and estimation of reconstructed sample values within an overlap area
US11284103B2 (en) 2014-01-17 2022-03-22 Microsoft Technology Licensing, Llc Intra block copy prediction with asymmetric partitions and encoder-side search patterns, search ranges and approaches to partitioning
BR112016018814A8 (pt) 2014-03-04 2020-06-23 Microsoft Technology Licensing Llc dispositivo de computação, método em dispositivo de computação com decodificador de vídeo ou decodificador de imagem e meio legível por computador
WO2015131387A1 (en) 2014-03-07 2015-09-11 Qualcomm Incorporated Simplified sub-prediction unit (sub-pu) motion parameter inheritence (mpi)
EP3158734A4 (en) 2014-06-19 2017-04-26 Microsoft Technology Licensing, LLC Unified intra block copy and inter prediction modes
US10356403B2 (en) * 2014-08-28 2019-07-16 Nec Corporation Hierarchial video code block merging using depth-dependent threshold for block merger
CA2959682C (en) 2014-09-30 2022-12-06 Microsoft Technology Licensing, Llc Rules for intra-picture prediction modes when wavefront parallel processing is enabled
CN116708783A (zh) * 2016-07-12 2023-09-05 韩国电子通信研究院 图像编码/解码方法以及用于该方法的记录介质
CN117221575A (zh) * 2016-10-04 2023-12-12 英迪股份有限公司 图像解码方法、图像编码方法以及发送比特流的方法
CN109983773A (zh) * 2016-11-29 2019-07-05 联发科技股份有限公司 用于合并模式推导的视频编解码方法和装置
US10986349B2 (en) 2017-12-29 2021-04-20 Microsoft Technology Licensing, Llc Constraints on locations of reference blocks for intra block copy prediction
TWI728390B (zh) 2018-06-29 2021-05-21 大陸商北京字節跳動網絡技術有限公司 查找表尺寸
SG11202012293RA (en) 2018-06-29 2021-01-28 Beijing Bytedance Network Technology Co Ltd Update of look up table: fifo, constrained fifo
CN110662043B (zh) * 2018-06-29 2021-12-21 北京字节跳动网络技术有限公司 一种用于处理视频数据的方法、装置和计算机可读介质
CN110662052B (zh) 2018-06-29 2022-07-08 北京字节跳动网络技术有限公司 更新查找表(lut)的条件
EP3791586A1 (en) 2018-06-29 2021-03-17 Beijing Bytedance Network Technology Co. Ltd. Concept of using one or multiple look up tables to store motion information of previously coded in order and use them to code following blocks
WO2020125754A1 (en) 2018-12-21 2020-06-25 Beijing Bytedance Network Technology Co., Ltd. Motion vector derivation using higher bit-depth precision
WO2020145656A1 (ko) * 2019-01-09 2020-07-16 엘지전자 주식회사 Tmvp 후보의 가용 여부를 시그널링하는 방법 및 장치
WO2020143824A1 (en) 2019-01-13 2020-07-16 Beijing Bytedance Network Technology Co., Ltd. Interaction between lut and shared merge list
WO2020147772A1 (en) 2019-01-16 2020-07-23 Beijing Bytedance Network Technology Co., Ltd. Motion candidates derivation
US10904558B2 (en) * 2019-04-26 2021-01-26 Tencent America LLC Method and apparatus for motion compensation for 360 video coding
US11871143B2 (en) 2020-09-17 2024-01-09 Lemon Inc. Subpicture tracks in coded video

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3628810B2 (ja) 1996-06-28 2005-03-16 三菱電機株式会社 画像符号化装置
MX2008002391A (es) 2005-08-22 2008-03-18 Samsung Electronics Co Ltd Metodo y aparato para codificar video de vistas multiples.
CN101222627A (zh) 2007-01-09 2008-07-16 华为技术有限公司 一种多视点视频编解码***以及预测向量的方法和装置
KR20080066522A (ko) 2007-01-11 2008-07-16 삼성전자주식회사 다시점 영상의 부호화, 복호화 방법 및 장치
US8488678B2 (en) 2008-04-01 2013-07-16 Canon Kabushiki Kaisha Moving image encoding apparatus and moving image encoding method
EP2338281A4 (en) 2008-10-17 2012-08-15 Nokia Corp SHARING THE MOTION VECTOR IN 3D VIDEO CODING
KR101158491B1 (ko) 2008-12-08 2012-06-20 한국전자통신연구원 다시점 영상 부호화, 복호화 방법 및 그 장치.
WO2010086545A1 (fr) 2009-01-28 2010-08-05 France Telecom Procedes de codage et de decodage d'une sequence d'image mettant en oeuvre une compensation en mouvement, dispositifs de codage et de decodage, signal et programmes d'ordinateur correspondants
CN102422642B (zh) * 2009-05-11 2015-03-25 株式会社Ntt都科摩 动态图像编码装置、方法和程序以及动态图像解码装置、方法和程序
US9788019B2 (en) 2011-03-09 2017-10-10 Hfi Innovation Inc. Method and apparatus of transform unit partition with reduced complexity
KR20120118780A (ko) 2011-04-19 2012-10-29 삼성전자주식회사 다시점 비디오의 움직임 벡터 부호화 방법 및 장치, 그 복호화 방법 및 장치
JP5058362B1 (ja) * 2011-06-23 2012-10-24 株式会社東芝 動画像復号装置及び動画像復号方法
US20130188013A1 (en) * 2011-07-22 2013-07-25 Qualcomm Incorporated Mvc based 3dvc codec supporting inside view motion prediction (ivmp) mode
US20130114717A1 (en) * 2011-11-07 2013-05-09 Qualcomm Incorporated Generating additional merge candidates
KR20130050406A (ko) 2011-11-07 2013-05-16 오수미 머지 모드에서의 움직임 정보 생성 방법
CN103096060B (zh) * 2011-11-08 2017-03-29 乐金电子(中国)研究开发中心有限公司 帧内图像预测编解码的自适应环路滤波方法及装置
US20130343459A1 (en) * 2012-06-22 2013-12-26 Nokia Corporation Method and apparatus for video coding
US9544612B2 (en) 2012-10-04 2017-01-10 Intel Corporation Prediction parameter inheritance for 3D video coding
US9800895B2 (en) 2013-06-27 2017-10-24 Qualcomm Incorporated Depth oriented inter-view motion vector prediction
WO2015003383A1 (en) * 2013-07-12 2015-01-15 Mediatek Singapore Pte. Ltd. Methods for inter-view motion prediction
US9948915B2 (en) 2013-07-24 2018-04-17 Qualcomm Incorporated Sub-PU motion prediction for texture and depth coding
WO2015131387A1 (en) 2014-03-07 2015-09-11 Qualcomm Incorporated Simplified sub-prediction unit (sub-pu) motion parameter inheritence (mpi)

Also Published As

Publication number Publication date
SG11201510554RA (en) 2016-02-26
HK1216571A1 (zh) 2016-11-18
CN105393538B (zh) 2018-12-04
EP3028466A1 (en) 2016-06-08
EP3028466B1 (en) 2022-01-26
EP3025500B1 (en) 2018-08-22
WO2015010226A1 (en) 2015-01-29
CN105393538A (zh) 2016-03-09
JP6434012B2 (ja) 2018-12-05
EP3028466A4 (en) 2017-03-15
US20160165263A1 (en) 2016-06-09
JP2016530784A (ja) 2016-09-29
WO2015013511A1 (en) 2015-01-29
KR102060857B1 (ko) 2019-12-30
US10158885B2 (en) 2018-12-18
EP3025500A1 (en) 2016-06-01
KR20160034938A (ko) 2016-03-30
SG10201800237QA (en) 2018-02-27

Similar Documents

Publication Publication Date Title
ES2906238T3 (es) Predicción de movimiento avanzada simplificada para 3D-HEVC
US10567799B2 (en) Simplified sub-prediction unit (sub-PU) motion parameter inheritance (MPI)
US9948915B2 (en) Sub-PU motion prediction for texture and depth coding
ES2842109T3 (es) Predicción residual avanzada basada en bloques para la codificación de vídeo 3D
ES2900751T3 (es) Extensiones de sintaxis de alto nivel para codificación de vídeo de alta eficacia
KR101749437B1 (ko) 디스패리티 벡터 유도
US9538180B2 (en) Motion vector prediction in video coding
KR20160016803A (ko) 이웃-기반 디스패리티 벡터 유도에 의한 3d 비디오 코딩을 위한 병렬 유도된 디스패리티 벡터
KR20160055229A (ko) 비대칭 모션 파티셔닝을 이용한 비디오 코딩 기법들
BR112015016011B1 (pt) Método de decodificação de vídeo inter-vista ou intercamada, método de codificação de vídeo inter-vista ou inter-camada, dispositivo e memória legível por computador
WO2015200835A1 (en) Filters for advanced residual prediction in video coding
US20140355666A1 (en) Advanced depth inter coding based on disparity of depth blocks
KR20160096649A (ko) 3차원 (3d) hevc 또는 다른 3d 코딩에서 서브 예측 유닛 (서브 pu) 모션 파라미터 상속 (mpi) 제어
WO2015135174A1 (en) Simplified disparity derived depth coding in three-dimensional (3d) video coding