ES2901937T3 - Predicción residual avanzada en codificación de vídeo escalable y de múltiples vistas - Google Patents

Predicción residual avanzada en codificación de vídeo escalable y de múltiples vistas Download PDF

Info

Publication number
ES2901937T3
ES2901937T3 ES13818046T ES13818046T ES2901937T3 ES 2901937 T3 ES2901937 T3 ES 2901937T3 ES 13818046 T ES13818046 T ES 13818046T ES 13818046 T ES13818046 T ES 13818046T ES 2901937 T3 ES2901937 T3 ES 2901937T3
Authority
ES
Spain
Prior art keywords
block
residual
disparity
view
temporal
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
ES13818046T
Other languages
English (en)
Inventor
Li Zhang
Ying Chen
Marta Karczewicz
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Qualcomm Inc filed Critical Qualcomm Inc
Application granted granted Critical
Publication of ES2901937T3 publication Critical patent/ES2901937T3/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/30Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability
    • H04N19/31Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability in the temporal domain
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/597Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding specially adapted for multi-view video sequence encoding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/105Selection of the reference unit for prediction within a chosen coding or prediction mode, e.g. adaptive choice of position and number of pixels used for prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/107Selection of coding mode or of prediction mode between spatial and temporal predictive coding, e.g. picture refresh
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/187Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a scalable video layer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/30Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability
    • 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/577Motion compensation with bidirectional frame interpolation, i.e. using B-pictures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/61Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Testing, Inspecting, Measuring Of Stereoscopic Televisions And Televisions (AREA)

Abstract

Un método de decodificación de datos de vídeo de múltiples vistas, comprendiendo el método: determinar, para un primer bloque de datos de vídeo en una primera capa de datos de vídeo, un vector de movimiento temporal y bloque de referencia temporal asociado en una imagen de referencia temporal para predecir el primer bloque, en donde la imagen de referencia temporal tiene un valor de recuento de orden de imagen, y en donde el primer bloque y el bloque de referencia temporal están incluidos en una primera vista; determinar un bloque de referencia de disparidad en una imagen de referencia de disparidad indicado por un vector de disparidad asociado con el primer bloque, en donde la imagen de referencia de disparidad está incluida en una unidad de acceso que incluye una imagen que contiene el primer bloque, y está incluida en una segunda vista, siendo diferente la segunda vista de la primera vista; determinar si una memoria intermedia de imagen decodificada contiene una imagen de referencia de disparidad temporal en la segunda vista y que tiene el mismo valor de recuento de orden de imagen de la imagen de referencia temporal, en donde la imagen de referencia de disparidad temporal está ubicada basándose en una combinación del vector de movimiento temporal y el vector de disparidad; basándose en una determinación de que la memoria intermedia de imagen decodificada no contiene la imagen de referencia de disparidad temporal en la segunda vista y que tiene el mismo valor de recuento de orden de imagen de la imagen de referencia temporal, modificar un proceso de predicción residual de inter vista, que comprende generar un predictor residual para predecir datos residuales asociados con el primer bloque, en donde el predictor residual se genera basándose en diferencias entre muestras del bloque de referencia de disparidad y correspondientes muestras del bloque de referencia de disparidad temporal, y en donde los datos residuales asociados con el primer bloque representan diferencias entre muestras del primer bloque y correspondientes muestras del bloque de referencia temporal; y decodificar los datos residuales del primer bloque de datos de vídeo con el proceso de predicción residual de inter vista modificado, en donde la modificación del proceso de predicción residual de inter vista comprende escalar el vector de movimiento temporal para indicar una imagen temporalmente más cercana a la imagen de referencia de disparidad.

Description

DESCRIPCIÓN
Predicción residual avanzada en codificación de vídeo escalable y de múltiples vistas
Esta solicitud reivindica el beneficio de la Solicitud Provisional de Estados Unidos n.° 61/734.874, presentada el 7 de diciembre de 2012.
Campo técnico
Esta divulgación se refiere a la codificación de vídeo.
Antecedentes
Las capacidades de vídeo digital se pueden incorporar en una amplia gama de dispositivos, incluidos televisores digitales, sistemas de transmisión digital directa, sistemas de transmisión inalámbrica, asistentes digitales personales (PDA), ordenadores portátiles o de escritorio, tabletas, lectores de libros electrónicos, cámaras digitales, dispositivos de grabación digital, reproductores de medios digitales, dispositivos de videojuegos, consolas de videojuegos, radioteléfonos móviles o por satélite, los llamados "teléfonos inteligentes", dispositivos de vídeo teleconferencia, dispositivos de transmisión de vídeo y similares. Los dispositivos de vídeo digital implementan técnicas de compresión de vídeo, como las descritas en los estándares definidos por MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264/MPEG-4, Parte 10, Codificación de Vídeo Avanzada (AVC), la norma de codificación de vídeo de alta eficacia (HEVC) actualmente en desarrollo y extensiones de dichas normas. Los dispositivos de vídeo pueden transmitir, recibir, codificar, decodificar y/o almacenar información de vídeo digital de manera más eficiente implementando tales técnicas de compresión de vídeo.
Las técnicas de compresión de vídeo realizan predicción espacial (intra imagen) y/o predicción temporal (inter imagen) para reducir o eliminar la redundancia intrínseca en las secuencias de vídeo. Para codificación de vídeo basada en bloques, un corte de vídeo (es decir, una imagen o una porción de una imagen) puede subdividirse en bloques de vídeo, que pueden denominarse también bloques de árbol, unidades de codificación (CU) y/o nodos de codificación. Los bloques de vídeo en un corte intra codificado (I) de una imagen se codifican usando predicción espacial con respecto a muestras de referencia en bloques vecinos en la misma imagen. Los bloques de vídeo en un corte inter codificado (P o B) de una imagen pueden usar predicción espacial con respecto a muestras de referencia en bloques vecinos en la misma imagen o predicción temporal con respecto a muestras de referencia en otras imágenes 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íxel entre el bloque original que va a codificarse y el bloque predictivo. Un bloque inter codificado se codifica de acuerdo con un vector de movimiento que apunta a un bloque de muestras de referencia que forma el bloque predictivo, y los datos residuales que indican la diferencia entre el bloque codificado y el bloque predictivo. Un bloque intra codificado se codifica de acuerdo con un modo de intra codificación y los datos residuales. Para una compresión adicional, los datos residuales pueden transformarse desde el dominio espacial a un dominio de transformada, dando como resultado coeficientes de transformada residuales, que pueden cuantificarse a continuación. Los coeficientes de transformada cuantificados, inicialmente dispuestos en una matriz bidimensional, pueden explorarse para producir un vector unidimensional de coeficientes de transformada, y puede aplicarse codificación por entropía para conseguir incluso más compresión.
Puede generarse un flujo de bits de codificación de múltiples vistas codificando vistas, por ejemplo, desde múltiples perspectivas. Se han desarrollado algunas normas de vídeo tridimensional (3D) que hacen uso de aspectos de codificación de múltiples vistas. Por ejemplo, diferentes vistas pueden transmitir las vistas del ojo izquierdo y derecho para soportar vídeo en 3D. Como alternativa, algunos procesos de codificación de vídeo en 3D pueden aplicar una denominada codificación de múltiples vistas más profundidad. En codificación de múltiples vistas más profundidad, un flujo de bits de vídeo en 3D puede contener no únicamente 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.
"Test Model under Consideration for HEVC based 3D video coding v3.0", 100. REUNIÓN DE MPEG; 30-4-2010 - 4-5­ 2012; GINEBRA; (MOTION PICTURE EXPERT GROUP O ISO/IEC JTC1/SC29/WG11), n.° N12744, 1 de junio de 2012 analiza la predicción de vector de movimiento y desactiva la predicción de vector de movimiento en ciertas circunstancias. Zhang et al.: "3DCE5.h related: "Advanced residual prediction for multiview coding",102. REUNIÓN DE MPEG; 15-10-2012 - 19-10-2012; SHANGHAI; (MOTION PICTURE EXPERT GROUP O ISO/IEC JTC1/SC29/WG11), n.° m26740, 10 de octubre de 2012 analiza la predicción avanzada residual para codificación de vídeo de múltiples vistas.
Sumario
En general, esta divulgación se refiere a predicción residual de inter vista para codificadores-decodificadores (códecs) de múltiples capas y códecs de vídeo tridimensional (3DV) basados en códecs bidimensionales, tales como la Codificación de Vídeo de Alta Eficacia (HEVC). En algunos casos, las técnicas de esta divulgación pueden usarse para perfeccionar un proceso de predicción inter residual avanzado (ARP). Por ejemplo, los aspectos de esta divulgación pueden referirse a activar/desactivar ARP, interpolación en ARP y factores de ponderación en ARP.
La invención se expone en las reivindicaciones independientes adjuntas. Se definen características opcionales en las reivindicaciones dependientes.
Los detalles de uno o más ejemplos de la divulgación se establecen en los dibujos adjuntos y la descripción a continuación. Otras características, objetos y ventajas resultarán evidentes a partir de la descripción, los dibujos y las reivindicaciones.
Breve descripción de los dibujos
La Figura 1 es un diagrama de bloques que ilustra un sistema de codificación y decodificación de vídeo de ejemplo que puede utilizar las técnicas descritas en esta divulgación.
La Figura 2 es un diagrama de bloques que ilustra un codificador de vídeo de ejemplo que puede implementar las técnicas descritas en esta divulgación.
La Figura 3 es un diagrama de bloques que ilustra un decodificador de vídeo de ejemplo que puede implementar las técnicas descritas en esta divulgación.
La Figura 4 es un diagrama conceptual que ilustra la codificación de una secuencia de múltiples vistas.
La Figura 5 es un diagrama conceptual que ilustra un patrón de predicción de múltiples vistas de ejemplo.
La Figura 6 es un diagrama conceptual que ilustra capas escalables de datos de vídeo de ejemplo.
La Figura 7 es un diagrama conceptual que ilustra unidades de predicción (PU) espacialmente vecinas de ejemplo con relación a una PU actual.
La Figura 8 es un diagrama de bloques que ilustra predicción residual de inter vista.
La Figura 9 es un diagrama conceptual que ilustra una estructura de predicción de ejemplo de predicción residual avanzada (ARP) en codificación de vídeo de múltiples vistas.
La Figura 10 es un diagrama conceptual que ilustra una relación de ejemplo entre un bloque actual, un bloque de referencia y un bloque de movimiento compensado en ARP.
La Figura 11 es un diagrama conceptual que ilustra muestras enteras y posiciones de muestra fraccionales para interpolación de luma de muestra de un cuarto.
La Figura 12 es un diagrama conceptual que ilustra modos de subdivisión para codificar un bloque de datos de vídeo.
La Figura 13 es un diagrama de flujo que ilustra una operación de ejemplo de un codificador de vídeo , de acuerdo con una o más técnicas de esta divulgación.
La Figura 14 es un diagrama de flujo que ilustra una operación de ejemplo de un decodificador de vídeo , de acuerdo con una o más técnicas de esta divulgación.
La Figura 15 es un diagrama de flujo que ilustra una operación de ejemplo de un codificador de vídeo , de acuerdo con una o más técnicas de esta divulgación.
La Figura 16 es un diagrama de flujo que ilustra una operación de ejemplo de un decodificador de vídeo , de acuerdo con una o más técnicas 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 , de acuerdo con una o más técnicas de esta divulgación.
La Figura 18 es un diagrama de flujo que ilustra una operación de ejemplo de un decodificador de vídeo , de acuerdo con una o más técnicas de esta divulgación.
La Figura 19 es un diagrama de flujo que ilustra una operación de ejemplo de un codificador de vídeo , de acuerdo con una o más técnicas de esta divulgación.
La Figura 20 es un diagrama de flujo que ilustra una operación de ejemplo de un decodificador de vídeo , de acuerdo con una o más técnicas de esta divulgación.
Descripción detallada
Las técnicas de esta divulgación se refieren en general a diversas técnicas para mejorar adicionalmente la eficacia de codificación de predicción residual avanzada (ARP) para múltiples vistas, 3DV (por ejemplo, múltiples vistas más profundidad), o códecs escalables basados en códecs de bidimensionales (2D) avanzados. Por ejemplo, se está desarrollado una norma de Codificación de Vídeo de Alta Eficacia (HEVC) por el Equipo de Colaboración Mixto sobre Codificación de Vídeo (JCT-VC) del Grupo de Expertos en Codificación de Vídeo (VCEG) de la ITU-T y el Grupo de Expertos de Imágenes en Movimiento (MPEG) de la ISO/IEC. Un borrador de la norma de HVEC, denominado como "HEVC Working Draft 9" (también denominado en el presente documento como WD9) se describe en Bross et al., High Efficiency Video Coding (HEVC) text specification draft 9", Equipo Colaborativo Mixto sobre la Codificación de Vídeo (JCT-VC) de la ITU-T SG16 WP3 e ISO/IEC JTC1/SC29/WG11, 11th Meeting, Shanghai, China, octubre de 2012 y está disponible a partir de http://phenix.int-evry.fr/jct/doc_end_user/documents/11_Shanghai/wg11/JCTVC-K1003-v10.zip.
Un uso de HEVC puede encontrarse en el área de vídeo de alta y ultra alta definición (UHD). Muchas pantallas de alta definición (HD) ya pueden representar vídeo estéreo, y la resolución aumentada y el tamaño de visualización de las pantallas UHD puede hacer a tales pantallas incluso más adecuadas para vídeo estéreo. Más allá de eso, la capacidad de compresión mejorada de HEVC (por ejemplo, la mitad de una tasa de bits esperada con misma calidad en comparación con el perfil H.264/AVC alto) puede hacer a HEVC un buen candidato para codificar vídeo estéreo. Por ejemplo, al usar mecanismos que aprovechan la redundancia entre vistas, un codificador de vídeo (por ejemplo, un codificador de vídeo o decodificador de vídeo) puede usar HEVC para codificar vídeo estéreo de resolución completa a tasas incluso inferiores que un vídeo de única vista (monoscópico) de la misma calidad y resolución codificada usando la norma H.264/AVC.
De manera similar a los proyectos basados en AVC, un Equipo de Colaboración Conjunta sobre la Codificación de Vídeo en 3D (JCT-3V) de VCEG y MPEG está llevando a cabo un estudio de dos soluciones de 3DV que se están usando en la tecnología de codificación de HEVC. La primera es la extensión de múltiples vistas de HEVC, denominada como MV-HEVC y otra es el códec de 3DV completo basado en HEVC de profundidad mejorada, 3D-HEVC. Parte de los esfuerzos de estandarización incluye la estandarización de codificación de vídeo de múltiples vistas/3D basándose en HEVC. El último software 3D-HTM versión 5.0 está electrónicamente disponible en https://hevc.hhi.fraunhofer.de/svn/svn_3DVCSoftware/tags/HTM-5.0A Las técnicas descritas a continuación pueden implementarse en conjunto con las dos soluciones de 3DV propuestas anteriormente.
En algunos casos, las técnicas pueden implementarse también (o como alternativa) con una extensión escalable a HEVC. En codificación de vídeo escalable, pueden codificarse múltiples capas de datos de vídeo. En algunos casos, cada capa puede corresponder a una vista particular. En este punto, se considera altamente beneficiosa la aplicación de escalabilidad de vista y escalabilidad espacial en la evolución de los servicios en 3D, ya que permiten extensiones compatibles hacia atrás para más vistas, y/o mejoran la resolución de vistas de tal manera que es posible la decodificación por dispositivos heredados.
En codificación de vídeo bidimensional, se codifican datos de vídeo (es decir, una secuencia de imágenes) imagen a imagen, no necesariamente en orden de visualización. Los dispositivos de codificación de vídeo dividen cada imagen en bloques, y codifican cada bloque individualmente. Los modos de predicción basados en bloque incluyen predicción espacial, también denominada como intra predicción, y predicción temporal, también denominada como inter predicción.
Para los datos de vídeo tridimensionales, tales como datos codificados de múltiples vistas o escalables, los bloques también pueden predecirse inter vista y/o inter capa. Como se describe en el presente documento, una "capa" de vídeo puede hacer referencia en general a una secuencia de imágenes que tienen al menos una característica en común, tal como una vista, una tasa de fotogramas, una resolución o similares. Por ejemplo, una capa puede incluir datos de vídeo asociados con una vista particular (por ejemplo, perspectiva) de datos de vídeo de múltiples vistas. Como otro ejemplo, una capa puede incluir datos de vídeo asociados con una capa particular de datos de vídeo escalables.
Por lo tanto, esta divulgación puede referirse indistintamente a una capa y una vista de datos de vídeo. Es decir, una vista de datos de vídeo puede denominarse como una capa de datos de vídeo, y viceversa. Además, las expresiones predicción de inter vista y predicción de inter capa pueden hacer referencia de manera intercambiable a predicción entre múltiples capas y/o vistas de datos de vídeo. Además, el códec de múltiples capas (o codificador de vídeo de múltiples capas) puede hacer referencia conjuntamente a un códec de múltiples vistas o a un códec escalable.
En codificación de vídeo de múltiples vistas o escalable, los bloques pueden predecirse a partir de una imagen de otra vista o capa de datos de vídeo. De esta manera, puede posibilitarse la predicción de inter vista basándose en componentes de vista reconstruidos de diferentes vistas. Esta divulgación usa la expresión "componente de vista" para hacer referencia a una imagen codificada de una vista o capa particular. Es decir, un componente de vista puede comprender una imagen codificada para una vista particular en un tiempo particular (en términos de orden de visualización u orden de salida). Un componente de vista (o cortes de un componente de vista) puede tener un valor de recuento de orden de imagen (POC), que indica en general el orden de visualización (u orden de salida) del componente de vista.
Típicamente, los mismos objetos o correspondientes de las dos vistas no están coubicados. La expresión "vector de disparidad" puede usarse para hacer referencia a un vector que indica el desplazamiento de un objeto en una imagen de una vista con relación al correspondiente objeto en una vista diferente. Un vector de este tipo puede denominarse también como un "vector de desplazamiento". Un vector de disparidad puede también ser aplicable a un píxel o un bloque de datos de vídeo de una imagen. Por ejemplo, un píxel en una imagen de una primera vista puede desplazarse con respecto a un correspondiente píxel en una imagen de una segunda vista por un vector de disparidad particular relacionado con diferentes ubicaciones de cámara a partir de las que se capturaron la primera vista y la segunda vista. En algunos ejemplos, puede usarse el vector de disparidad para predecir la información de movimiento (vector o vectores de movimiento) con o sin índice o índices de imagen de referencia) de una vista a otra vista.
Por lo tanto, para mejorar adicionalmente la eficacia de codificación, un codificador de vídeo puede aplicar también predicción de movimiento de inter vista y/o predicción residual de inter vista. Con respecto a predicción de movimiento de inter vista, un codificador de vídeo puede codificar un vector de movimiento asociado con un bloque de una vista con relación a un vector de movimiento asociado con un bloque de una segunda vista diferente. Análogamente, como se describe en mayor detalle a continuación, en predicción residual de inter vista, un codificador de vídeo puede codificar datos residuales de una vista con relación al residual de una segunda vista diferente. En algunos casos, la predicción residual de inter vista puede denominarse como predicción residual avanzada (ARP), particularmente en el contexto de 3D-HEVC.
En ARP, un codificador de vídeo determina un bloque predictivo para predecir un bloque actual. El bloque predictivo para el bloque actual puede estar basado en muestras de una imagen de referencia temporal que están asociadas con una ubicación indicada por un vector de movimiento del bloque actual. La imagen de referencia temporal está asociada con la misma vista que la imagen actual, pero está asociada con una instancia de tiempo diferente que la imagen actual. En algunos casos, cuando las muestras de un bloque están basadas en muestras de una imagen particular, las muestras pueden estar basadas en muestras reales o interpoladas de la imagen particular.
Además, en ARP, el codificador de vídeo determina un bloque de referencia de disparidad basándose en muestras de una imagen de referencia de disparidad que están en una ubicación indicada por un vector de disparidad del bloque actual. La imagen de referencia de disparidad está asociada con una vista diferente (es decir, una vista de referencia) de la imagen actual, pero está asociada con la misma instancia de tiempo que la imagen actual.
El codificador de vídeo también determina un bloque de referencia de disparidad temporal para el bloque actual. El bloque de referencia temporal está basado en muestras de una imagen de referencia de disparidad temporal que están asociadas con una ubicación indicada por el vector de movimiento del bloque actual y el vector de disparidad. Por ejemplo, el bloque de referencia de disparidad temporal puede estar ubicado aplicando el vector de movimiento temporal (por ejemplo, reutilizando el vector de movimiento temporal) al bloque de referencia de disparidad. Por lo tanto, la imagen de referencia de disparidad temporal está asociada con la misma vista que la imagen de referencia de disparidad y está asociada con la misma unidad de acceso que la imagen de referencia temporal del bloque actual.
Aunque se describe en el presente documento el bloque de referencia de disparidad temporal como que está ubicado aplicando el vector de movimiento temporal al bloque de referencia de disparidad para propósitos de ilustración, en algunos casos, el vector de movimiento temporal puede no aplicarse realmente a la imagen de referencia de disparidad. En su lugar, el vector de movimiento temporal puede combinarse con el vector de disparidad para ubicar el bloque de referencia de disparidad temporal, por ejemplo, con relación al bloque actual. Por ejemplo, supóngase, para propósitos de ilustración, que los vectores de disparidad se indican como DV[0] y DV[1] y los vectores de movimiento temporal se indican como TMV[0] y TMV[1]. En este ejemplo, un codificador de vídeo (tal como un codificador de vídeo o decodificador de vídeo) puede determinar la ubicación de los bloques de disparidad temporal en las imágenes de referencia de disparidad temporal con relación al bloque actual combinando los vectores de disparidad y los vectores de movimiento temporal, por ejemplo, DV[0]+t Mv [0], DV[1]+TMV[1]. Por lo tanto, las referencias en el presente documento a "aplicar un vector de movimiento temporal a un bloque de referencia de disparidad" no requieren necesariamente que el vector de movimiento temporal se aplique directamente a la ubicación del bloque de referencia de disparidad.
El codificador de vídeo a continuación determina un predictor residual para predecir el residual asociado con el bloque actual, por ejemplo, la diferencia entre el bloque actual y el bloque de referencia temporal. Cada muestra del predictor residual para el bloque actual indica una diferencia entre una muestra del bloque de referencia de disparidad y una correspondiente muestra del bloque de referencia de disparidad temporal. En algunos casos, el codificador de vídeo puede aplicar un factor de ponderación (por ejemplo, 0, 0,5, 1 o similares) al predictor residual para aumentar la precisión del predictor residual.
En casos en los que el codificador de vídeo es un codificador de vídeo, el codificador de vídeo puede determinar un bloque residual final para el bloque actual. El bloque residual final comprende muestras que indican diferencias entre muestras del bloque actual, muestras en el bloque predictivo temporal y muestras en el predictor residual. El codificador de vídeo puede incluir, en un flujo de bits, datos que representan el bloque residual final. En casos donde el codificador de vídeo es un decodificador de vídeo, el decodificador de vídeo puede reconstruir el bloque actual basándose en el bloque residual final, el predictor residual y el bloque predictivo temporal.
Aunque ARP puede mejorar la eficacia de codificación de predicción residual de inter vista (o inter capa), son posibles perfeccionamientos adicionales. Por ejemplo, ciertas técnicas de esta divulgación se refieren al factor de ponderación de ARP. Como se ha indicado anteriormente, un codificador de vídeo puede aplicar un factor de ponderación al predictor residual. En general, el factor de ponderación siempre se señaliza en el flujo de bits, independientemente de si hay una imagen de referencia temporal en las listas de imágenes de referencia para codificar el bloque actual. Sin embargo, señalizar el factor de ponderación cuando no hay imagen de referencia temporal puede aumentar innecesariamente la complejidad y reducir la eficacia, puesto que, si no hay imágenes de referencia temporales, no hay predicción temporal y residual asociado para aplicar ARP.
Una instancia en la que puede no haber imágenes de referencia temporales en las listas de imágenes de referencia (por ejemplo, ni en la lista 0 ni en la lista 1) es cuando se codifican imágenes de acceso aleatorio. Como se describe en mayor detalle a continuación, las imágenes de acceso aleatorio no se predicen temporalmente. Las imágenes de acceso aleatorio típicamente son únicamente intra previstas o previstas inter vista (únicamente están incluidas imágenes de referencia de inter vista en una lista de imágenes de referencia). Por lo tanto, como se ha indicado anteriormente, la señalización de factores de ponderación es innecesaria e ineficaz, puesto que no hay residual para el que determinar un predictor.
De acuerdo con aspectos de esta divulgación, un codificador de vídeo (tal como un codificador de vídeo o un decodificador de vídeo) puede activar o desactivar ARP (que incluye codificar el residual de una capa con relación al residual de una segunda capa diferente) basándose en las imágenes de referencia en las listas de imágenes de referencia para el bloque que se está codificando actualmente. En un ejemplo, el codificador de vídeo puede activar o desactivar ARP basándose en si las listas de imágenes de referencia (por ejemplo, la lista 0 o lista 1) para el bloque que se está codificando actualmente incluyen alguna imagen de referencia temporal. De acuerdo con aspectos de esta divulgación, si las listas de imágenes de referencia para un corte inter previsto incluyen únicamente imágenes de referencia de inter vista, el codificador de vídeo puede desactivar ARP cuando se codifican los bloques del corte. En un ejemplo de este tipo, cuando el codificador de vídeo comprende un codificador de vídeo, el codificador de vídeo puede no señalizar un factor de ponderación para todos los bloques (por ejemplo, unidades de codificación o unidades de predicción en el contexto de Codificación de Vídeo de Alta Eficacia (HEVC), como se describe en mayor detalle a continuación) dentro del corte en el flujo de bits (omitir la señalización de un factor de ponderación). Análogamente, cuando el codificador de vídeo comprende un decodificador de vídeo, el decodificador de vídeo puede omitir análogamente la decodificación de un factor de ponderación y determinar automáticamente (es decir, inferir) que el factor de ponderación es igual a cero.
Las técnicas anteriormente descritas pueden aplicarse en el contexto de imágenes de acceso aleatorio. Por ejemplo, de acuerdo con aspectos de esta divulgación, un codificador de vídeo puede activar o desactivar ARP basándose en si el componente de vista que se está codificando actualmente es un componente de vista de acceso aleatorio. Como se ha indicado anteriormente, los componentes de vista de acceso aleatorio no tienen imágenes de referencia temporales, ya que las imágenes de acceso aleatorio están intra previstas o previstas por inter vista. Por lo tanto, el codificador de vídeo puede desactivar ARP para cada bloque de un componente de vista de acceso aleatorio. De nuevo, el codificador de vídeo puede no señalizar un factor de ponderación en el flujo de bits (omitir la señalización de un factor de ponderación). Análogamente, cuando el codificador de vídeo comprende un decodificador de vídeo, el decodificador de vídeo puede omitir análogamente la decodificación de un factor de ponderación e inferir que el factor de ponderación es igual a cero.
En otro ejemplo, de acuerdo con aspectos de esta divulgación, un codificador de vídeo puede activar ARP si al menos una imagen de referencia es desde la misma vista que el bloque que se está codificando actualmente. Adicionalmente o como alternativa, el codificador de vídeo puede activar ARP únicamente cuando ambas imágenes de referencia (que corresponden a una imagen de referencia en RefPicList0 y una imagen de referencia en RefPicList1), si están disponibles, son de la misma vista que el bloque que se está codificando actualmente. Adicionalmente o como alternativa, el codificador de vídeo puede desactivar ARP para un bloque si el bloque está codificado por inter vista con una imagen de referencia de inter vista. Como se ha indicado anteriormente, cuando se desactiva ARP, no se señaliza el factor de ponderación.
Las técnicas de esta divulgación también se refieren a interpolación en ARP. Por ejemplo, cuando se realiza ARP (por ejemplo, el factor de ponderación no es cero) tanto un codificador de vídeo como un decodificador de vídeo pueden usar un proceso de compensación de movimiento adicional durante el proceso de generación de predictor residual. Por lo tanto, si un vector de movimiento indica una ubicación de píxel fraccional (pel fraccional), el codificador de vídeo realiza dos procesos de interpolación pel fraccional, por ejemplo, un proceso de interpolación para ubicar el bloque de referencia temporal y otro proceso de interpolación para ubicar el bloque de referencia de disparidad temporal. Además, el codificador de vídeo puede aplicar otro proceso de interpolación pel fraccional más cuando se determina un bloque de referencia de disparidad. En HEVC, se especifica un filtro de 8 derivaciones para componentes de luma, mientras que se especifica un filtro de 4 derivaciones para componentes de croma. Tales procesos de interpolación pueden aumentar la complejidad computacional asociada con ARP.
De acuerdo con aspectos de esta divulgación, puede simplificarse el proceso de compensación de movimiento de ARP, particularmente con respecto a interpolación de subpíxel (sub-pel) de bloques de referencia. Por ejemplo, un codificador de vídeo puede determinar el bloque de referencia de disparidad de una manera similar o igual que el proceso usado para generar la señal de predicción durante la compensación de movimiento (por ejemplo, el proceso usado para determinar el bloque de referencia temporal). Es decir, el codificador de vídeo puede determinar el bloque de referencia de disparidad usando la imagen de vista de referencia reconstruida con un vector de disparidad del bloque actual.
En algunos casos, de acuerdo con aspectos de esta divulgación, el codificador de vídeo puede usar uno o más tipos de interpolaciones para determinar las ubicaciones de bloques de referencia en ARP. Por ejemplo, el codificador de vídeo puede usar un filtro de paso bajo, tal como un filtro bilineal, para interpolar la ubicación del bloque de referencia de disparidad. Adicionalmente o como alternativa, el codificador de vídeo puede usar el filtro de paso bajo para interpolar la ubicación del bloque de referencia de disparidad temporal. En otro ejemplo más, el codificador de vídeo puede usar el filtro de paso bajo para interpolar la ubicación del bloque de referencia temporal. Por consiguiente, de acuerdo con aspectos de esta divulgación, el codificador de vídeo puede usar un filtro bilineal para interpolar la ubicación de uno o más bloques de referencia en ARP, lo que puede ser computacionalmente más eficiente que aplicar los filtros de derivación más altos especificados por HEVC. Aunque se han hecho referencias en el presente documento a filtros bilineales, debería entenderse que pueden usarse también, o como alternativa, uno o más otros filtros de paso bajo. De acuerdo con aspectos de esta divulgación, el codificador de vídeo puede aplicar los filtros de paso bajo anteriormente descritos a cualquier combinación de componentes de luma, componentes de croma, o tanto componentes de luma como de croma.
Las técnicas de esta divulgación también se refieren a señalizar un factor de ponderación de ARP para modos de codificación y/o modos de partición particulares. Por ejemplo, en general, puede señalizarse un factor de ponderación para todos los modos de partición (como se describe en mayor detalle, por ejemplo, con respecto al ejemplo mostrado en la Figura 12) que incluyen PART_2Nx2N, PART_2NxN, PART_Nx2N, o similares, y todos los modos inter codificados que incluyen salto, unión, predicción de vector de movimiento avanzada (AMVP). Señalizar el factor de ponderación para todos los modos de partición e inter modos puede aumentar innecesariamente la complejidad y reducir la eficacia, puesto que ARP no puede aplicarse eficazmente con ciertos modos de partición o inter modos.
De acuerdo con aspectos de esta divulgación, puede activarse o desactivarse ARP basándose en un modo de partición y/o modo de codificación del bloque que se está codificando actualmente. Por ejemplo, pueden señalizarse únicamente factores de ponderación para únicamente ciertos modos de partición y/o ciertos modos de codificación. Si no se incluye un factor de ponderación en un flujo de bits, un decodificador de vídeo puede omitir la decodificación del factor de ponderación e inferir que el factor de ponderación tiene valor cero (desactivando de esta manera ARP). De acuerdo con aspectos de esta divulgación, en algunos ejemplos, puede no señalizarse el factor de ponderación para algún bloque inter codificado con modo de partición no igual a PART_2Nx2N. En otro ejemplo, puede no señalizarse el factor de ponderación para un bloque inter codificado con un modo de partición distinto de PART_2Nx2N, PART_2NxN y PARt_Nx2N. En otro ejemplo más, adicionalmente o como alternativa, puede no señalizarse el factor de ponderación para algún bloque inter codificado con modo de codificación desigual al modo de salto y/o al modo de unión.
Las técnicas de esta divulgación también se refieren a perfeccionar la manera en la que se señalizan los factores de ponderación en el flujo de bits. Por ejemplo, en general, un codificador de vídeo puede seleccionar un factor de ponderación de un conjunto fijo de tres factores de ponderación fijos (por ejemplo, 0, 0,5 y 1). Sin embargo, en algunos casos, tres factores de ponderación estáticos pueden no proporcionar suficiente flexibilidad para conseguir suficiente eficacia de predicción, debido a diferencias de calidad entre una vista actual y su vista de referencia. Las diferencias de calidad entre la vista actual y la vista de referencia pueden ser dinámicas, en particular con respecto a codificación de vídeo escalable. A la inversa, tres factores de ponderación pueden superar las necesidades de algunos cortes o imágenes. Es decir, algunos cortes o imágenes pueden no necesitar seleccionar a partir de tres factores de ponderación para conseguir un equilibrio óptimo entre la complejidad y la mejora de eficacia de codificación.
De acuerdo con aspectos de esta divulgación, puede implementarse un enfoque más flexible para los factores de ponderación. Por ejemplo, el número de factores de ponderación disponible puede modificarse en el nivel de secuencia (por ejemplo, en un conjunto de parámetros, tal como un conjunto de parámetros de secuencia (SPS)). En un ejemplo, para propósitos de ilustración, puede señalizarse un indicador en un SPS para desactivar uno o más factores de ponderación, por ejemplo, 0,5 y/o 1. En otro ejemplo, puede señalizarse un indicador de este tipo en un conjunto de parámetros de vídeo (VPS) y ser aplicable para todas las vistas no de base. En otro ejemplo más, puede señalizarse un indicador de este tipo en una extensión de VPS para cada vista no de base. En otro ejemplo, puede proporcionarse un indicador de este tipo en un conjunto de parámetros de imagen (PPS), un encabezado de corte o un conjunto de parámetros de vista para desactivar uno o más factores de ponderación. Cuando se ha desactivado un factor de ponderación, pueden usarse menos bits para representar esos factores de ponderación restantes, proporcionado de esta manera unos ahorros de bits.
De acuerdo con otros aspectos, puede proporcionarse un indicador para modificar y/o sustituir uno o más factores de ponderación. En un ejemplo, el codificador de vídeo puede sustituir el factor de ponderación de 0,5 por un factor de ponderación de 0,75. Este indicador puede señalizarse en un encabezado de corte, un SPS, un conjunto de parámetros de imagen (PPS) o un VPS.
Las técnicas de esta divulgación también se refieren a determinar si activar o desactivar un proceso de ARP basándose en las imágenes de referencia de una memoria intermedia de imagen decodificada (que puede denominarse también de manera intercambiable como una memoria de imagen de referencia, como se describe en mayor detalle con respecto a las Figuras 2 y 3 a continuación) y/o a listas de imágenes de referencia. Por ejemplo, como se ha indicado anteriormente, un bloque de referencia de disparidad temporal para determinar el predictor residual está ubicado típicamente aplicando el vector de movimiento temporal al bloque de referencia de disparidad. Sin embargo, en algunos casos, la memoria intermedia de imagen decodificada puede no contener la imagen indicada aplicando el vector de movimiento temporal al bloque de referencia de disparidad. Es decir, la memoria intermedia de imagen decodificada puede no contener una imagen en la misma vista que el bloque de referencia de disparidad que también tiene el mismo valor de recuento de orden de imagen (POC) que la imagen de referencia temporal del bloque actual.
En algunos ejemplos, incluso si la imagen está incluida en la memoria intermedia de imagen decodificada, la lista de imágenes de referencia o listas de imágenes de referencia del corte que contiene el bloque de referencia de disparidad puede no contener la imagen indicada aplicando el vector de movimiento temporal al bloque de referencia de disparidad, por ejemplo, la imagen de referencia de disparidad temporal potencial. En tales casos, ubicar el bloque de referencia de disparidad temporal puede introducir un error y/o retardo en el proceso de codificación.
De acuerdo con aspectos de esta divulgación, un codificador de vídeo puede activar o desactivar ARP basándose en las imágenes de una memoria intermedia de imagen decodificada y/o en las listas de imágenes de referencia. Por ejemplo, cuando la memoria intermedia de imagen decodificada para codificar un bloque actual no incluye una imagen en la misma vista que la imagen de referencia de disparidad que tiene el mismo POC que la imagen de referencia temporal del bloque actual, un codificador de vídeo puede modificar el proceso de ARP.
En otro ejemplo, adicionalmente o como alternativa, cuando la lista o listas de imágenes de referencia del bloque de referencia de disparidad no incluya una imagen en la misma vista que la imagen de referencia de disparidad que tiene el mismo POC que la imagen de referencia temporal del bloque actual, un codificador de vídeo puede modificar el proceso de ARP. Es decir, dado el índice de lista de imágenes de referencia actual X (siendo X 0 o 1), en un ejemplo, si la lista de imágenes de referencia con un índice de lista igual a X del bloque de referencia de disparidad no incluye una imagen de referencia en la misma vista que la imagen de referencia de disparidad y que tiene el mismo POC que la imagen de referencia temporal del bloque actual, el codificador de vídeo puede modificar el proceso de ARP. En otro ejemplo, si ninguna de las listas de imágenes de referencia (por ejemplo, ni la lista 0 ni la lista 1) del bloque de referencia de disparidad incluye una imagen de referencia en la misma vista que la imagen de referencia de disparidad y que tiene el mismo POC que la imagen de referencia temporal del bloque actual, el codificador de vídeo puede modificar el proceso de ARP.
En algunos ejemplos, el codificador de vídeo puede modificar el proceso de ARP desactivando el proceso de ARP, de manera que el bloque actual no se codifica usando ARP. Es decir, no se genera el predictor residual o siempre se establece a 0. En otros ejemplos, el codificador de vídeo puede modificar el proceso de ARP escalando el vector de movimiento temporal para identificar otra imagen de referencia de disparidad temporal. Por ejemplo, el codificador de vídeo puede escalar el vector de movimiento temporal de manera que, cuando se aplica a la imagen de referencia de disparidad, el vector de movimiento escalado identifica una imagen de referencia de disparidad temporal que está incluida en la lista de imágenes de referencia y está en una ubicación temporalmente más cerca de la imagen de referencia de disparidad. Las técnicas anteriormente descritas pueden evitar que el codificador de vídeo intente ubicar el bloque de referencia de disparidad en una imagen que no está incluida en la lista o listas de imágenes o de referencia.
La Figura 1 es un diagrama de bloques que ilustra un sistema 10 de codificación y decodificación de vídeo de ejemplo que puede utilizar las técnicas de esta divulgación para predicción residual avanzada (ARP). Como se muestra en la Figura 1, el sistema 10 incluye un dispositivo 12 de origen que proporciona datos de vídeo codificados que van a decodificarse en un tiempo posterior por un dispositivo 14 de destino. En particular, el dispositivo 12 de origen proporciona los datos de vídeo al dispositivo 14 de destino mediante un medio 16 legible por ordenador. El dispositivo 12 de origen y el dispositivo 14 de destino pueden comprender cualquiera de una amplia gama de dispositivos, que incluyen ordenadores de sobremesa, ordenadores portátiles (es decir, portátiles), ordenadores de tableta, decodificadores de salón, microteléfonos telefónicos tales como los denominados teléfonos "inteligentes", los denominados mandos "inteligentes", televisiones, cámaras, dispositivos de visualización, reproductores de medios digitales, consolas de videojuegos, dispositivo de envío por flujo continuo de vídeo o similares. En algunos casos, el dispositivo 12 de origen y el dispositivo 14 de destino pueden equiparse para comunicación inalámbrica.
El dispositivo 14 de destino puede recibir los datos de vídeo codificados para que se decodifiquen mediante un medio 16 legible por ordenador. El medio 16 legible por ordenador puede comprender cualquier tipo de medio o dispositivo que pueda mover los datos de vídeo codificados desde el dispositivo 12 de origen al dispositivo 14 de destino. En un ejemplo, el medio 16 legible por ordenador puede comprender un medio de comunicación para posibilitar que el dispositivo 12 de origen transmita datos de vídeo codificados directamente al dispositivo 14 de destino en tiempo real.
Los datos de vídeo codificados pueden modularse de acuerdo con una norma de comunicación, tal como un protocolo de comunicación inalámbrica, y transmitirse al dispositivo 14 de destino. El medio de comunicación puede comprender cualquier medio de comunicación inalámbrica o alámbrica, tal como un espectro de radiofrecuencia (RF) o una o más líneas de transmisión físicas. El medio de comunicación puede formar parte de una red basada en paquetes, tal como una red de área local, una red de área extensa o una red global, tal como internet. El medio de comunicación puede incluir encaminadores, conmutadores, estaciones base o cualquier otro equipo que pueda ser útil para facilitar la comunicación desde el dispositivo 12 de origen al dispositivo 14 de destino.
En algunos ejemplos, los datos codificados pueden emitirse desde la interfaz 22 de salida a un dispositivo de almacenamiento. De manera similar, puede accederse a los datos codificados desde el dispositivo de almacenamiento mediante interfaz de entrada. El dispositivo de almacenamiento puede incluir cualquiera de una diversidad de medios de almacenamiento de datos distribuidos o de acceso local, tales como un disco duro, discos Blu-ray, DVD, CD-ROM, memoria flash, memoria volátil o no volátil o cualquier otro medio de almacenamiento digital adecuado para almacenar datos de vídeo codificados. En un ejemplo adicional, el dispositivo de almacenamiento puede corresponder a un servidor de ficheros u otro dispositivo de almacenamiento intermedio que puede almacenar el vídeo codificado generado por el dispositivo 12 de origen.
El dispositivo 14 de destino puede acceder a datos de vídeo almacenados del dispositivo de almacenamiento mediante envío por flujo continuo o descarga. El servidor de ficheros puede ser cualquier tipo de servidor que pueda almacenar datos de vídeo codificados y transmitir esos datos de vídeo codificados al dispositivo 14 de destino. Servidores de ficheros ilustrativos incluyen, un servidor web (por ejemplo, para un sitio web), un servidor de FTP, dispositivos de almacenamiento de conexión de red (NAS) o una unidad de disco local. El dispositivo 14 de destino puede acceder a los datos de vídeo codificados a través de cualquier conexión de datos convencional, incluyendo una conexión a Internet. Esta puede incluir, un canal inalámbrico (por ejemplo, una conexión de Wi-Fi), una conexión cableada (por ejemplo, DSL, módem de cable, etc.), o una combinación de ambos que es adecuada para acceder a datos de vídeo codificados almacenados en un servidor de ficheros. La transmisión de datos de vídeo codificados del dispositivo de almacenamiento puede ser una transmisión de envío por flujo continuo, una transmisión de descarga o una combinación de ambas.
Las técnicas de esta divulgación no están necesariamente limitadas a aplicaciones o ajustes inalámbricos. Las técnicas pueden aplicarse a codificación de vídeo en apoyo de cualquiera de una diversidad de aplicaciones multimedia, tales como difusiones de televisión en el transcurso de la comunicación, transmisiones de televisión de cable, transmisiones de televisión por satélite, transmisiones de vídeo de envío por flujo continuo de Internet, tales como envío por flujo continuo adaptativo dinámico a través de HTTP (DASH), vídeo digital que se codifica en un medio de almacenamiento de datos, decodificación de vídeo digital almacenado en un medio de almacenamiento de datos u otras aplicaciones. En algunos ejemplos, el sistema 10 puede configurarse para soportar una transmisión de vídeo unidireccional o bidireccional para soportar aplicaciones tales como envío por flujo continuo de vídeo, reproducción de vídeo, difusión de vídeo y/o telefonía de vídeo.
En el ejemplo de la Figura 1, el dispositivo 12 de origen incluye el origen 18 de vídeo, el codificador 20 de vídeo y la interfaz 22 de salida. El dispositivo 14 de destino incluye la interfaz 28 de entrada, el decodificador 30 de vídeo y el dispositivo 32 de visualización. De acuerdo con esta divulgación, el codificador 20 de vídeo del dispositivo 12 de origen puede configurarse para aplicar las técnicas para predicción de vector de movimiento en codificación de múltiples vistas. En otros ejemplos, un dispositivo de origen y un dispositivo de destino pueden incluir otros componentes o disposiciones. Por ejemplo, el dispositivo 12 de origen puede recibir datos de vídeo desde un origen 18 de vídeo externo, tal como una cámara externa. Análogamente, el dispositivo 14 de destino puede interconectar con un dispositivo de visualización externo, en lugar de incluir un dispositivo de visualización integrado.
El sistema 10 ilustrado de la Figura 1 es simplemente un ejemplo. Las técnicas para predicción residual avanzada pueden realizarse por algún dispositivo de codificación y/o decodificación de vídeo digital. Aunque las técnicas de esta divulgación se realizan, en general, por un dispositivo de codificación de vídeo, las técnicas pueden realizarse por un codificador/decodificador de vídeo, típicamente denominado como un "CÓDEC". Además, las técnicas de esta divulgación pueden realizarse también por un preprocesador de vídeo. El dispositivo 12 de origen y el dispositivo 14 de destino son simplemente ejemplos de tales dispositivos de codificación en los que el dispositivo 12 de origen genera datos de vídeo codificados para transmisión al dispositivo 14 de destino. En algunos ejemplos, los dispositivos 12, 14 pueden operar de una manera sustancialmente simétrica de manera que cada uno de los dispositivos 12, 14 incluya componentes de codificación y decodificación de vídeo. Por lo tanto, el sistema 10 puede soportar transmisión unidireccional o bidireccional entre los dispositivos 12, 14 de vídeo, por ejemplo, para envío por flujo continuo de vídeo, reproducción de vídeo, difusión de vídeo o telefonía de vídeo.
El origen 18 de vídeo del dispositivo 12 de origen puede incluir un dispositivo de captura de vídeo, tal como una cámara de vídeo, un archivo de vídeo que contiene vídeo previamente capturado y/o una interfaz de alimentación de vídeo para recibir vídeo desde un proveedor de contenido de vídeo. Como una alternativa adicional, el origen 18 de vídeo puede generar datos basados en gráficos informáticos como el vídeo de origen, o una combinación de vídeo en directo, vídeo archivado y vídeo generado por ordenador. En algunos casos, si el origen 18 de vídeo es una cámara de vídeo, el dispositivo 12 de origen y el dispositivo 14 de destino pueden formar denominados teléfonos de cámara o videoteléfonos. Sin embargo, como se ha mencionado anteriormente, las técnicas descritas en esta divulgación pueden ser aplicables a codificación de vídeo, en general, y pueden aplicarse a aplicaciones inalámbricas y/o alámbricas. En cada caso, el vídeo capturado, pre-capturado o generado por ordenador puede codificarse por el codificador 20 de vídeo. La información de vídeo codificada puede emitirse a continuación por la interfaz 22 de salida en un medio 16 legible por ordenador.
El medio 16 legible por ordenador puede incluir medios transitorios, tales como una transmisión de difusión inalámbrica o de red cableada o medios de almacenamiento (es decir, medios de almacenamiento no transitorios), tales como un disco duro, unidad flash, disco compacto, disco de vídeo digital, disco Blu-ray u otro medio legible por ordenador. En algunos ejemplos, un servidor de red (no mostrado) puede recibir datos de vídeo codificados desde el dispositivo 12 de origen y proporcionar los datos de vídeo codificados al dispositivo 14 de destino, por ejemplo, mediante la transmisión de red. De manera similar, un dispositivo informático de una instalación de producción de medios, tal como una instalación de estampado de discos, puede recibir datos de vídeo codificados desde el dispositivo 12 de origen y producir un disco que contiene los datos de vídeo codificados. Por lo tanto, el medio 16 legible por ordenador puede entenderse que incluye uno o más medios legibles por ordenador de diversas formas en diversos ejemplos.
La interfaz 28 de entrada del dispositivo 14 de destino recibe información desde el medio 16 legible por ordenador. La información del medio 16 legible por ordenador puede incluir información de sintaxis definida por el codificador 20 de vídeo, que también se usa por el decodificador 30 de vídeo, que incluye elementos de sintaxis que describen características y/o procesamiento de bloques y otras unidades codificadas, por ejemplo, los GOP. El dispositivo 32 de visualización presenta visualmente los datos de vídeo decodificados a un usuario, y puede comprender cualquiera de una diversidad de dispositivos de visualización, tales como un tubo de rayos catódicos (CRT), una pantalla de cristal líquido (LCD), una pantalla de plasma, una pantalla de diodo de emisión de luz orgánico (OLED) u otro tipo de dispositivo de visualización.
Aunque no se muestra en la Figura 1, en algunos aspectos, el codificador 20 de vídeo y el decodificador 30 de vídeo puede cada uno estar integrado con un codificador y decodificador de audio, y puede incluir unidades MUX-DEMUX apropiadas y otro hardware y software, para manejar la codificación tanto de audio como de vídeo en un flujo de datos común o en flujos de datos separados. Si es aplicable, las unidades MUX-DEMUX pueden ser de conformidad con el protocolo multiplexor de la ITU H.223 u otros protocolos, tales como el protocolo de datagramas de usuario (UDP).
El codificador 20 de vídeo y el decodificador 30 de vídeo cada uno puede implementarse como cualquiera de una diversidad de circuitería de codificador o decodificador adecuada, según sea aplicable, tal como uno o más microprocesadores, procesadores de señales digitales (DSP), circuitos integrados específicos de la aplicación (ASIC), campos de matrices de puertas programables (FPGA), circuitería de lógica discreta, software, hardware, firmware o cualquier combinación de los mismos. Cada uno del codificador 20 de vídeo y el decodificador 30 de vídeo pueden estar incluidos en uno o más codificadores o decodificadores, cualquiera de los cuales puede estar integrado como parte de un codificador/decodificador de vídeo combinado (CÓDEC). Un dispositivo que incluye el codificador 20 de vídeo y/o el decodificador 30 de vídeo puede comprender un circuito integrado, un microprocesador y/o un dispositivo de comunicación inalámbrica, tal como un teléfono celular.
Esta divulgación puede referirse, en general, al codificador 20 de vídeo que "señaliza" cierta información a otro dispositivo, tal como el decodificador 30 de vídeo. Debe entenderse, sin embargo, que el codificador 20 de vídeo puede señalizar información asociando ciertos elementos de sintaxis con diversas porciones codificadas de datos de vídeo. Es decir, el codificador 20 de vídeo puede "señalizar" datos almacenando ciertos elementos de sintaxis en encabezados de diversas porciones codificadas de datos de vídeo. En algunos casos, tales elementos de sintaxis pueden codificarse y almacenarse (por ejemplo, almacenarse en el dispositivo 24 de almacenamiento) antes de que se reciban y decodifiquen por el decodificador 30 de vídeo. Por lo tanto, el término "señalizar" puede referirse en general a la comunicación de sintaxis u otros datos para decodificar datos de vídeo comprimidos, si tal comunicación tiene lugar en tiempo real o casi en tiempo real o a través de un lapso de tiempo, tal como puede ocurrir cuando se almacenan elementos de sintaxis en un medio en el momento de codificación, que, a continuación, pueden recuperarse por un dispositivo de decodificación en cualquier momento después de que se almacenen en este medio.
En algunos casos, el codificador 20 de vídeo y el decodificador 30 de vídeo pueden operar de acuerdo con normas propietarias o industriales, tal como la norma ITU-T H.264, denominada como alternativa como MPEG-4, Parte 10, Codificación Avanzada de Vídeo (AVC) o extensiones de tales normas. La norma ITU-T H.264/MPEG-4 (AVC) se formuló por el Grupo de Expertos en Codificación de Vídeo (VCEG) de la ITU-T junto con el Grupo de Expertos de Imágenes en Movimiento (MPEG) de la ISO/IEC como el producto de una asociación colectiva conocida como el Equipo Mixto de Vídeo (JVT).
El codificador 20 de vídeo y el decodificador 30 de vídeo pueden operar adicionalmente o como alternativa de acuerdo con otra norma de codificación de vídeo, tal como la norma de Codificación de Vídeo de Alta Eficacia (HEVC). Un borrador de la norma de HVEC, denominado como "HEVC Working Draft 9" se describe en Bross et al., "High Efficiency Video Coding (HEVC) text specification draft 9", Equipo Colaborativo Mixto sobre la Codificación de Vídeo (JCT-VC) de la ITU-T SG16 WP3 e ISO/IEC JTC1/SC29/WG11, 11a reunión, Shanghai, China, octubre de 2012.
Adicionalmente, como se ha indicado anteriormente, existen esfuerzos en curso para producir codificación de vídeo escalable, codificación de múltiples vistas y extensiones de 3DV para HEVC. Por consiguiente, en algunos casos, el codificador 20 de vídeo y el decodificador 30 de vídeo pueden realizar codificación de vídeo de múltiples vistas. Por ejemplo, el codificador 20 de vídeo y el decodificador 30 de vídeo pueden implementar una extensión de múltiples vistas de HEVC (denominada como MV-HEVC), un códec de 3DV completo basado en HEVC mejorado de profundidad (denominado como 3D-HEVC), o una extensión de codificación de vídeo escalable de HEVC (denominado como SHEVC (HEVC escalable) o HSVC (codificación de vídeo escalable de alta eficacia).
Las técnicas descritas a continuación pueden implementarse en conjunto con una o más de las extensiones de HEVC anteriormente indicadas. Para 3D-HEVC, pueden incluirse y soportarse nuevas herramientas de codificación, que incluyen aquellas en el nivel de la unidad de codificación/unidad de predicción, para tanto vistas de textura como de profundidad. En cuanto al software del 21 de noviembre de 2013, para 3D-HEVC (es decir, 3D-HTM versión 5.0) puede descargarse a partir del siguiente enlace: https://hevc.hhi.fraunhofer.de/svn/svn_3DVCSoftware/tags/HTM-5.0/.
En general, el bucle de compensación de movimiento de HEVC es el mismo que en H.264/AVC. Por ejemplo, la reconstrucción de un fotograma actual / en el bucle de compensación de movimiento puede ser igual a coeficientes descuantificados r más predicción temporal P:
l = r P.
En la fórmula anterior, P indica inter predicción unipredictiva para fotogramas P o predicción inter bipredictiva para fotogramas B.
Sin embargo, la unidad de compensación de movimiento en HEVC es diferente de las normas de codificación de vídeo anteriores. Por ejemplo, el concepto de un macrobloque en normas de codificación de vídeo anteriores no existe en HEVC. En su lugar, se sustituyen los macrobloques por una estructura jerárquica flexible basándose en un esquema de árbol cuádruple genérico. Dentro de este esquema, se definen tres tipos de bloques, es decir, unidades de codificación (CU), unidades de predicción (PU) y unidades de transformada (TU). Una Cu es una unidad básica de división de región. El concepto de una CU es análogo al concepto de macrobloque, pero una CU no está restringida a un tamaño máximo y una CU permite división recursiva en cuatro CU con igual tamaño para mejorar la adaptabilidad de contenido. Una Pu es una unidad básica de inter/intra predicción. En algunos ejemplos, una PU puede contener múltiples particiones con forma arbitraria en una única PU para codificar eficazmente patrones de imagen irregulares. Una TU es una unidad básica de transformada. Las TU de una CU pueden definirse independientemente de las PU de la CU. Sin embargo, un tamaño de una TU está limitado a la CU a la que pertenece la TU. Esta separación de la estructura de bloque en tres conceptos diferentes puede permitir que cada uno se optimice de acuerdo con su papel, lo que puede dar como resultado eficacia de codificación mejorada.
En HEVC y otras especificaciones de codificación de vídeo, una secuencia de vídeo típicamente incluye una serie de imágenes. Las imágenes también se pueden denominar "fotogramas". Una imagen puede incluir tres matrices de muestras, indicadas Sl, Sob y Sor. Sl es una matriz bidimensional (es decir, un bloque) de muestras de luma. Sob es una matriz bidimensional de muestras de croma Cb. SCr es una matriz bidimensional de muestras de croma Cr. Las muestras de croma pueden denominarse también en el presente documento como muestras "croma". En otros casos, una imagen puede ser monocroma y puede incluir únicamente una matriz de muestras de luma.
Para generar una representación codificada de una imagen, el codificador 20 de vídeo puede generar un conjunto de unidades de árbol de codificación (CTU). Cada una de las CTU puede comprender un bloque de árbol de codificación de muestras de luma, dos correspondientes bloques de árbol de codificación de muestras de croma, y estructuras de sintaxis usadas para codificar las muestras de los bloques de árbol de codificación. En imágenes monocromas o imágenes que tienen tres planos de color separados, una CTU puede comprender un único bloque de árbol de codificación y estructuras de sintaxis usadas para codificar las muestras del bloque de árbol de codificación. Un bloque de árbol de codificación puede ser un bloque NxN de muestras. Una CTU también se puede denominar "bloque de árbol" o "unidad de codificación más grande" (LCU). Las CTU de HEVC pueden ser ampliamente análogas a los macrobloques de otras normas, 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 CU. Un corte puede incluir un número entero de CTU ordenadas consecutivamente en un orden de exploración por filas.
Un corte codificado puede comprender un encabezado de corte y datos de corte. El encabezado de corte de un corte puede ser una estructura de sintaxis que incluye elementos de sintaxis que proporcionan información acerca del corte. Los datos de corte pueden incluir las CTU codificadas del corte.
Esta divulgación puede usar 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 usadas para codificar muestras de los uno o más bloques de muestras. Los tipos ilustrativos de unidades o bloques de vídeo pueden incluir CTU, CU, PU, unidades de transformada (TU), macrobloques, particiones de macrobloque, y así sucesivamente. En algunos contextos, el análisis de las PU se puede intercambiar con el análisis de los macrobloques de las particiones de macrobloque.
Para generar una CTU codificada, el codificador 20 de vídeo puede realizar recursivamente subdivisión de árbol cuádruple en los bloques de árbol de codificación de una CTU para dividir los bloques de árbol de codificación en bloques de codificación, de ahí el nombre "unidades de árbol de codificación". Un bloque de codificación es un bloque N x N de muestras. Una CU puede comprender un bloque de codificación de muestras de luma y dos bloques de codificación correspondientes de muestras de croma de una imagen que tiene una matriz de muestras de luma, una matriz de muestras Cb y una matriz de muestras Cr, y estructuras de sintaxis usadas para codificar las muestras de los bloques de codificación. En imágenes monocromas o imágenes que tienen tres planos de color separados, una CU puede comprender un único bloque de codificación y estructuras de sintaxis usadas para codificar las muestras del bloque de codificación.
El codificador 20 de vídeo puede subdividir 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 que se aplica la misma predicción. Una PU de una CU puede comprender un bloque de predicción de muestras de luma, dos bloques de predicción correspondientes de muestras de croma y estructuras de sintaxis usadas para predecir los bloques de predicción. En imágenes monocromas o imágenes que tienen tres planos de color separados, una PU puede comprender un único bloque de predicción y estructuras de sintaxis usadas para predecir el bloque de predicción. El codificador 20 de vídeo puede generar bloques de luma, Cb y Cr predictivos para bloques de predicción de luma, Cb y Cr de cada PU de la CU. Por lo tanto, en esta divulgación, puede decirse que una CU se subdivide en una o más PU. Para facilidad de explicación, esta divulgación puede hacer referencia al tamaño de un bloque de predicción de una PU simplemente el tamaño de la PU.
El codificador 20 de vídeo puede utilizar intra predicción o inter predicción para generar los bloques predictivos para una PU. Si el codificador 20 de vídeo usa intra predicción para generar los bloques predictivos de una PU, el codificador 20 de vídeo puede generar los bloques predictivos de la Pu basándose en muestras de la imagen asociada con la PU. En esta divulgación, la expresión "basándose en" puede indicar "basándose al menos en parte en".
Si el codificador 20 de vídeo usa la inter predicción para generar los bloques predictivos de una PU, el codificador 20 de vídeo puede generar los bloques predictivos de la PU basándose en muestras decodificadas de una o más imágenes distintas de la imagen asociada con la PU. Cuando se usa inter predicción para generar los bloques predictivos de un bloque (por ejemplo, una PU), esta divulgación puede hacer referencia al bloque como "inter codificado" o "inter previsto". La inter predicción puede ser unipredictiva (es decir, unipredicción) o bipredictiva (es decir, bipredicción). Para realizar unipredicción o bipredicción, el codificador 20 de vídeo puede generar una primera lista de imágenes de referencia (RefPicListO) y una segunda lista de imágenes de referencia (RefPicListl) para una imagen actual. Cada una de las listas de imágenes de referencia puede incluir una o más imágenes de referencia. Después de que se construye la lista de imágenes de referencia (en concreto RefPicList0 y RefPicList1, si estuvieran disponibles), puede usarse 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.
Cuando se usa unipredicción, el codificador 20 de vídeo puede buscar las imágenes de referencia en cualquiera o ambas de RefPicList0 y RefPicList1 para determinar una ubicación de referencia dentro de una imagen de referencia. Adicionalmente, cuando se usa unipredicción, el codificador 20 de vídeo puede generar, basándose al menos en parte en muestras que corresponden a la ubicación de referencia, los bloques predictivos para la PU. Además, cuando se usa unipredicción, el codificador 20 de vídeo puede generar un único vector de movimiento que indica un desplazamiento espacial entre un bloque de predicción de la PU y la ubicación de referencia. El vector de movimiento puede incluir un componente horizontal que especifica 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 especifica un desplazamiento vertical entre el bloque de predicción de la PU y la ubicación de referencia.
Cuando se usa bipredicción para codificar una PU, el codificador 20 de vídeo puede determinar una primera ubicación de referencia en una imagen de referencia en RefPicList0 y una segunda ubicación de referencia en una imagen de referencia en RefPicList1. El codificador 20 de vídeo puede generar, basándose al menos en parte en muestras que corresponden a la primera y segunda ubicaciones de referencia, los bloques predictivos para la PU. Además, cuando se usa bipredicción para codificar la PU, el codificador 20 de vídeo puede generar un primer vector de movimiento que indica un desplazamiento espacial entre un bloque de predicción 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.
Si el codificador 20 de vídeo usa la inter predicción para generar los bloques predictivos de una PU, el codificador 20 de vídeo puede generar los bloques predictivos de la PU basándose en muestras de una o más imágenes distintas de la imagen asociada con la PU. Por ejemplo, el codificador 20 de vídeo puede realizar inter predicción unipredictiva (es decir, unipredicción) o inter predicción bipredictiva (es decir, bipredicción) en una PU.
En casos donde el codificador 20 de vídeo realiza unipredicción en una PU, el codificador 20 de vídeo puede determinar, basándose en un vector de movimiento de la PU, una ubicación de referencia en una imagen de referencia. El codificador 20 de vídeo puede determinar a continuación un bloque predictivo para la PU. Cada muestra en el bloque predictivo para la PU puede estar asociada con la ubicación de referencia. En algunos ejemplos, una muestra en un bloque predictivo para una PU puede estar asociada con una ubicación de referencia cuando la muestra está dentro de un bloque de muestras que tienen el mismo tamaño que la PU y cuya esquina superior izquierda es la ubicación de referencia. Cada muestra en el bloque predictivo puede ser una muestra real o interpolada de la imagen de referencia.
En casos donde las muestras de luma del bloque predictivo están basadas en muestras de luma interpoladas de la imagen de referencia, el codificador 20 de vídeo puede generar las muestras de luma interpoladas aplicando un filtro de interpolación de 8 derivaciones a muestras de luma reales de la imagen de referencia. En casos donde las muestras de croma del bloque predictivo están basadas en muestras de croma interpoladas de la imagen de referencia, el codificador 20 de vídeo puede generar las muestras de croma interpoladas aplicando un filtro de interpolación de 4 derivaciones a muestras de croma reales de la imagen de referencia. En general, el número de derivaciones de un filtro indica el número de coeficientes requeridos para representar el filtro matemáticamente. Un filtro con un número de derivación más alto es generalmente más complejo que un filtro que tiene un número de derivación más bajo.
En casos donde el codificador 20 de vídeo realiza bipredicción en una PU, la PU tiene dos vectores de movimiento. El codificador 20 de vídeo puede determinar, basándose en los vectores de movimiento de la PU, dos ubicaciones de referencia en dos imágenes de referencia. El codificador 20 de vídeo puede determinar a continuación, de la manera anteriormente descrita, bloques de referencia asociados con las dos ubicaciones de referencia. El codificador 20 de vídeo puede determinar a continuación un bloque de predicción para la PU. Cada muestra en el bloque de predicción puede ser una media ponderada de correspondientes muestras en los bloques de referencia. La ponderación de muestras puede estar basada en distancias temporales de las imágenes de referencia de la imagen que contiene la PU.
El codificador 20 de vídeo puede subdividir una CU en una o más PU de acuerdo con diversos modos de subdivisión. Por ejemplo, si se usa intra predicción para generar bloques predictivos para las PU de una CU, la CU puede subdividirse de acuerdo con un modo PART_2Nx2N o un modo PART_NxN. En el modo PART_2Nx2N, la CU únicamente tiene una PU. En el modo PART NxN, la CU tiene cuatro PU con igual tamaño que tienen bloques de predicción rectangulares. Si se usa inter predicción para generar bloques predictivos para las PU de una CU, la CU puede subdividirse de acuerdo con el modo PART_2Nx2N, el modo PARt NxN, un modo PART_2NxN, un modo PART_Nx2N, un modo PART_2NxnU, un modo PART_2NxuD, un modo PART_nLx2N o un modo PART_nRx2N. En el modo PART_2NxN y el modo PART_Nx2N, la CU se subdivide en dos PU con igual tamaño que tienen bloques de predicción rectangulares. En cada uno del modo PART_2NxnU, el modo PART_2NxuD, el modo PART_nLx2N y el modo PART_nRx2N, la CU se subdivide en dos PU con tamaño desigual que tienen bloques de predicción rectangulares.
Después de que el codificador 20 de vídeo genera bloques de luma, Cb, y Cr predictivos para una o más PU de una CU, el codificador 20 de vídeo puede generar un bloque residual de luma para la CU. Cada muestra en el bloque residual de luma de la CU indica una diferencia entre una muestra de luma en uno de los bloques de luma predictivos de la CU y una muestra correspondiente en el bloque de codificación de luma original de la CU. Además, el codificador 20 de vídeo puede generar un bloque residual Cb para la CU. Cada muestra en el bloque residual Cb de la CU indica una diferencia entre una muestra Cb en uno de los bloques Cb predictivos de la CU y una muestra correspondiente en el bloque de codificación Cb original de la CU. El codificador 20 de vídeo también puede generar un bloque residual Cr para la CU. Cada muestra en el bloque residual Cr de la CU indica una diferencia entre una muestra Cr en uno de los bloques Cr predictivos de la CU y una muestra correspondiente en el bloque de codificación Cr original de la CU.
Adicionalmente, el codificador 20 de vídeo puede usar subdivisión de árbol cuádruple para descomponer los bloques residuales de luma, Cb y Cr de una CU en uno o más bloques de transformada de luma, Cb y Cr. Un bloque de transformada es un bloque de muestras rectangular (por ejemplo, cuadrado o no cuadrado) sobre el que se aplica la misma transformada. Una TU de una CU puede comprender un bloque de transformada de muestras de luma, dos bloques de transformada correspondientes de muestras de croma y estructuras de sintaxis usadas para transformar las muestras de bloque de transformada. Por lo tanto, cada TU de una CU puede estar asociada con un bloque de transformada de luma, un bloque de transformada Cb y un bloque de transformada Cr. El bloque de transformada de luma asociado con la TU puede ser un subbloque del bloque residual de luma de la CU. El bloque de transformada Cb puede ser un subbloque del bloque residual Cb de la CU. El bloque de transformada Cr puede ser un subbloque del bloque residual Cr de la CU. En imágenes monocromas o imágenes que tienen tres planos de color separados, una TU puede comprender un único bloque de transformada y estructuras de sintaxis usadas para transformar las muestras del bloque de transformada.
El codificador 20 de vídeo puede aplicar una o más transformadas a un bloque de transformada de luma de una TU para generar un bloque de coeficientes de luma para la TU. Un bloque de coeficientes puede ser una matriz bidimensional de coeficientes de transformada. Un coeficiente de transformada puede ser una cantidad escalar. El codificador 20 de vídeo puede aplicar una o más transformadas a un bloque de transformada Cb de una TU para generar un bloque de coeficientes Cb para la TU. El codificador 20 de vídeo puede aplicar una o más transformadas a un bloque de transformada Cr de una TU para generar un bloque de coeficientes Cr para la TU.
Después de generar un bloque de coeficientes (por ejemplo, un bloque de coeficientes de luma, un bloque de coeficientes Cb o un bloque de coeficientes Cr), el codificador 20 de vídeo puede cuantificar el bloque de coeficientes. La cuantificación generalmente se refiere a un proceso en el que los coeficientes de transformada se cuantifican para reducir posiblemente la cantidad de datos usados para representar los coeficientes de transformada, proporcionando una compresión adicional. El codificador 20 de vídeo puede cuantificar un bloque de coeficientes asociado con una TU de una CU basándose en un valor de parámetro de cuantificación (QP) asociado con la CU. El codificador 20 de vídeo 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. En algunos ejemplos, el valor de QP asociado con la CU puede estar asociado con la imagen o el corte actual como una totalidad. Después de que el codificador 20 de vídeo cuantifica un bloque de coeficientes, el codificador 20 de vídeo puede codificar por entropía elementos de sintaxis que indican los coeficientes de transformada cuantificados. Por ejemplo, el codificador 20 de vídeo puede realizar una codificación aritmética binaria adaptativa según contexto (CABAC) sobre los elementos de sintaxis que indican los coeficientes de transformada cuantificados.
El codificador 20 de vídeo puede emitir un flujo de bits que incluye una secuencia de bits que forma una representación de datos de vídeo (es decir, imágenes codificadas y datos asociados). El flujo de bits puede comprender una secuencia de unidades de capa de abstracción de red (NAL). Una unidad de NAL es una estructura de sintaxis que contiene una indicación del tipo de datos en la unidad de 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 de NAL incluye un encabezado de unidad de NAL y encapsula una RBSP. El encabezado de unidad de NAL puede incluir un elemento de sintaxis que indica un código de tipo de unidad de NAL. El código de tipo de unidad de nAl especificado por el encabezado de unidad de NAL de una unidad de NAL indica el tipo de la unidad de NAL. Una RBSP puede ser una estructura de sintaxis que contiene un número entero de bytes que se encapsula dentro de una unidad de NAL. En algunos casos, una RBSP incluye cero bits.
Diferentes tipos de unidades de NAL pueden encapsular diferentes tipos de RBSP. Por ejemplo, diferentes tipos de unidades de NAL pueden encapsular diferentes RBSP para los conjuntos de parámetros de vídeo (VPS), conjuntos de parámetros de secuencia (SPS), conjuntos de parámetros de imagen (PPS), cortes codificados, SEI y así sucesivamente. Las unidades de NAL que encapsulan las RBSP para datos de codificación de vídeo (a diferencia de las RBSP para conjuntos de parámetros y mensajes de SEI) pueden denominarse como unidades de NAL de capa de codificación de vídeo (VCL).
En HEVC, los SPS pueden contener información que se aplica a todos los cortes de una secuencia de vídeo codificada (CVS). En HEVC, una CVS puede iniciarse desde una imagen de refresco de decodificación instantánea (IDR), o una imagen de acceso de enlace roto (BLA), o una imagen de acceso aleatorio limpio (CRA) que es la primera imagen en el flujo de bits, que incluye todas las imágenes posteriores que no son una imagen de IDR o BLA. Es decir, en HEVC, una CVS puede comprender una secuencia de unidades de acceso que puede consistir, en orden de decodificación, en una unidad de acceso de CRA que es la primera unidad de acceso en el flujo de bits, una unidad de acceso de IDR o una unidad de acceso de BLA, seguida por cero o más unidades de acceso no de IDR y no de BLA que incluyen todas las unidades de acceso posteriores hasta, pero no incluyendo, ninguna unidad de acceso de IDR o BLA posterior.
Un VPS es una estructura de sintaxis que comprende elementos de sintaxis que se aplican a cero o más CVS completas. Un SPS puede incluir un elemento de sintaxis que identifica un VPS que está activo cuando el SPS está activo. Por lo tanto, los elementos de sintaxis de un VPS pueden ser aplicables más en general que los elementos de sintaxis de un SPS. Un PPS es una estructura de sintaxis que comprende elementos de sintaxis que se aplican a cero o más CVS completas. Un PPS puede incluir un elemento de sintaxis que identifica un SPS que está activo cuando el PPS está activo. Un encabezado de corte de un corte puede incluir un elemento de sintaxis que indica un PPS que está activo cuando se está codificando el corte.
El decodificador 30 de vídeo puede recibir un flujo de bits generado por el codificador 20 de vídeo. Además, el decodificador 30 de vídeo puede analizar el flujo de bits para obtener elementos de sintaxis del flujo de bits. El decodificador 30 de vídeo puede reconstruir imágenes de los datos de vídeo basándose, al menos en parte, en los elementos de sintaxis obtenidos del flujo de bits. El proceso para reconstruir los datos de vídeo puede ser generalmente recíproco al proceso realizado por el codificador 20 de vídeo. Por ejemplo, el decodificador 30 de vídeo puede usar vectores de movimiento de las Pu para determinar bloques predictivos para las PU de una CU actual. Además, el decodificador 30 de vídeo puede cuantificar a la inversa los bloques de coeficientes asociados con las TU de la CU actual. El decodificador 30 de vídeo puede realizar transformadas inversas sobre los bloques de coeficientes para reconstruir bloques de transformada asociados con las TU de la CU actual. El decodificador 30 de vídeo 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 muestras correspondientes de los bloques de transformada de las TU de la CU actual. Reconstruyendo los bloques de codificación para cada CU de una imagen, el decodificador 30 de vídeo puede reconstruir la imagen.
En algunos ejemplos, el codificador 20 de vídeo puede señalizar la información de movimiento de una PU usando un modo de unión o modo de predicción de vector de movimiento avanzado (AMVP). En otras palabras, en HEVC, hay dos modos para la predicción de parámetros de movimiento, uno que es el modo de unión/salto y el otro que es AMVP. La predicción de movimiento puede comprender la determinación de información de movimiento de una unidad de vídeo (por ejemplo, una PU) basándose en información de movimiento de una o más otras unidades de vídeo. La información de movimiento (es decir, los parámetros de movimiento) de una PU pueden incluir el vector o vectores de movimiento de la PU, el índice o índices de referencia de la PU y uno o más indicadores de dirección de predicción.
Cuando el codificador 20 de vídeo señaliza la información de movimiento de una PU actual usando el modo de unión, el codificador 20 de vídeo genera una lista de candidatos de unión. En otras palabras, el codificador 20 de vídeo puede realizar un proceso de construcción de listas de predictores de vector de movimiento. La lista de candidatos de unión incluye un conjunto de candidatos de unión que indica la información de movimiento de las PU que son vecinas espacial o temporalmente a la PU actual. Es decir, en el modo de unión, se construye una lista de candidatos de parámetros de movimiento (por ejemplo, índices de referencia, vectores de movimiento, etc.) donde un candidato puede ser de bloques vecinos espaciales y temporales.
Adicionalmente, en el modo de unión, el codificador 20 de vídeo puede seleccionar un candidato de unión de la lista de candidatos de unión y puede usar la información de movimiento indicada por el candidato de unión seleccionado como la información de movimiento de la PU actual. El codificador 20 de vídeo puede señalizar la posición en la lista de candidatos de unión del candidato de unión seleccionado. Por ejemplo, el codificador 20 de vídeo puede señalizar los parámetros de vector de movimiento seleccionado transmitiendo un índice (es decir, un índice de candidato de unión) que indica una posición dentro de la lista de candidatos del candidato de unión seleccionado.
El decodificador 30 de vídeo puede obtener, del flujo de bits, el índice en la lista de candidatos (es decir, el índice de candidato de unión). Además, el decodificador 30 de vídeo puede generar la misma lista de candidatos de unión y puede determinar, basándose en el índice de candidato de unión, el candidato de unión seleccionado. El decodificador 30 de vídeo puede usar a continuación la información de movimiento del candidato de unión seleccionado para generar bloques predictivos para la PU actual. Es decir, el decodificador 30 de vídeo puede determinar, basándose al menos en parte en el índice de lista de candidatos, un candidato seleccionado en la lista de candidatos, en donde el candidato seleccionado especifica la información de movimiento (por ejemplo, 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 correspondiente bloque donde pueden heredarse los puntos de índice por la PU actual.
El modo de salto es similar al modo de unión. En el modo de salto, el codificador 20 de vídeo y el decodificador 30 de vídeo generan y usan una lista de candidatos de unión de la misma manera que el codificador 20 de vídeo y el decodificador 30 de vídeo usan la lista de candidatos de unión en el modo de unión. Sin embargo, cuando el codificador 20 de vídeo señaliza la información de movimiento de una PU actual usando el modo de salto, el codificador 20 de vídeo no señaliza ningún dato residual para la PU actual. Por consiguiente, el decodificador 30 de vídeo puede determinar, sin el uso de datos residuales, un bloque de predicción para la PU basándose en un bloque de referencia indicado por la información de movimiento de un candidato seleccionado en la lista de candidatos de unión. Debido a que el modo de salto tiene el mismo proceso de derivación de vector de movimiento que el modo de unión, pueden aplicarse las técnicas descritas en este documento tanto a los modos de unión como de salto.
El modo AMVP es similar al modo de unión en que el codificador 20 de vídeo puede generar una lista de candidatos y puede seleccionar un candidato de la lista de candidatos. Sin embargo, cuando el codificador 20 de vídeo señaliza la información de movimiento RefPicListX (donde X es 0 o 1) de una PU actual usando el modo AMVP, el codificador 20 de vídeo puede señalizar una diferencia de vector de movimiento (MVD) RefPicListX para la PU actual y un índice de referencia RefPicListX para la PU actual además de señalizar una bandera de predictor de vector de movimiento (MVP) RefPicListX para la PU actual. La bandera de MVP 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 RefPicListX para la PU actual puede indicar una diferencia entre un vector de movimiento RefPicListX de la PU actual y un vector de movimiento del candidato de AMVP seleccionado. De esta manera, el codificador 20 de vídeo puede señalizar la información de movimiento RefPicListX de la PU actual señalizando una bandera de MVP de RefPicListX, un valor de índice de referencia RefPicListX y una MVD RefPicListX. En otras palabras, los datos en el flujo de bits que representa el vector de movimiento para la PU actual pueden incluir datos que representan un índice de referencia, un índice a una lista de candidatos y una MVD. Por lo tanto, los vectores de movimiento elegidos pueden señalizarse transmitiendo un índice en la lista de candidatos. Además, también pueden señalizarse los valores de índice de referencia y las diferencias de vector de movimiento.
Adicionalmente, cuando se señaliza la información de movimiento de una PU actual usando el modo de AMVP, el decodificador 30 de vídeo puede obtener, del flujo de bits, una MVD para una PU actual y una bandera de MVP. El decodificador 30 de vídeo puede generar la misma lista de candidatos de AMVP y puede determinar, basándose en la bandera de MVP, el candidato de AMVP seleccionado. El decodificador 30 de vídeo 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 30 de vídeo puede determinar, basándose en un vector de movimiento indicado por el candidato de AMVP seleccionado y la mVd, el vector de movimiento de la PU actual. El decodificador 30 de vídeo puede usar a continuación el vector de movimiento o vectores de movimiento recuperados de la PU actual para generar bloques predictivos para la PU actual.
Cuando un codificador de vídeo genera una lista de candidatos de AMVP para una PU actual, el codificador de vídeo puede derivar uno o más candidatos de AMVP basándose en la información de movimiento de las PU que cubren ubicaciones que son vecinas espacialmente a la PU actual (es decir, PU espacialmente vecinas) y uno o más candidatos de AMVP basándose en información de movimiento de las PU que son vecinas temporalmente a la PU actual (es decir, PU temporalmente vecinas). En AMVP, puede derivarse una lista de candidatos de predictores de vector de movimiento para cada hipótesis de movimiento basándose en un índice de referencia codificado. En esta divulgación, una PU (u otro tipo de unidad de vídeo) puede decirse que "cubre" una ubicación si un bloque de predicción asociado con la PU (u otro tipo de bloque de muestras asociado con la unidad de vídeo) incluye la ubicación. La lista de candidatos incluye vectores de movimiento de bloques vecinos que están asociados con el mismo índice de referencia, así como, un predictor de vector de movimiento temporal que se deriva basándose en los parámetros de movimiento (es decir, información de movimiento) del bloque vecino del bloque coubicado en una imagen de referencia temporal.
Para mejorar adicionalmente la eficacia de codificación, un codificador de vídeo puede aplicar también predicción de movimiento de inter vista y/o predicción residual de inter vista. Con respecto a predicción de movimiento inter vista, un codificador de vídeo puede codificar un vector de movimiento asociado con un bloque de una vista con relación a un vector de movimiento asociado con un bloque de una segunda vista diferente, por ejemplo, usando los modos de unión/salto o el modo de AMVP anteriormente descritos. Análogamente, como en predicción residual de inter vista, un codificador de vídeo puede codificar datos residuales de una vista con relación al residual de una segunda vista diferente. En algunos casos, puede conseguirse predicción residual de inter vista aplicando un proceso de predicción residual avanzado (ARP), como se describe en mayor detalle a continuación.
En predicción residual de inter vista, el codificador 20 de vídeo y/o el decodificador 30 de vídeo pueden determinar un bloque predictivo para predecir un bloque actual. El bloque predictivo para el bloque actual puede estar basado en muestras de una imagen de referencia temporal que están asociadas con una ubicación indicada por un vector de movimiento del bloque actual. La imagen de referencia temporal está asociada con la misma vista que la imagen actual, pero está asociada con una instancia de tiempo diferente que la imagen actual. En algunos casos, cuando las muestras de un bloque están basadas en muestras de una imagen particular, las muestras pueden estar basadas en muestras reales o interpoladas de la imagen particular.
El codificador 20 de vídeo y/o el decodificador 30 de vídeo también determinan un bloque de referencia de disparidad basándose en muestras de una imagen de referencia de disparidad que están en una ubicación indicada por un vector de disparidad del bloque actual. La imagen de referencia de disparidad está asociada con una vista diferente (es decir, una vista de referencia) de la imagen actual, pero está asociada con la misma instancia de tiempo que la imagen actual.
El codificador 20 de vídeo y/o el decodificador 30 de vídeo también determinan un bloque de referencia de disparidad temporal para el bloque actual. El bloque de referencia temporal está basado en muestras de una imagen de referencia de disparidad temporal que están asociadas con una ubicación indicada por el vector de movimiento del bloque actual y el vector de disparidad (por ejemplo, por la combinación del vector de movimiento y el vector de disparidad). Es decir, el codificador 20 de vídeo y/o el decodificador 30 de vídeo pueden combinar el vector de movimiento y el vector de disparidad y aplicar el vector combinado al bloque actual para ubicar el bloque de referencia de disparidad temporal en la imagen de referencia de disparidad temporal. Por lo tanto, la imagen de referencia de disparidad temporal está asociada con la misma vista que la imagen de referencia de disparidad y está asociada con la misma unidad de acceso que la imagen de referencia temporal.
El codificador 20 de vídeo y/o el decodificador 30 de vídeo determinan a continuación un predictor residual para predecir el residual asociado con el bloque actual, por ejemplo, la diferencia entre el bloque actual y el bloque de referencia temporal. Cada muestra del predictor residual para el bloque actual indica una diferencia entre una muestra del bloque de referencia de disparidad y una correspondiente muestra del bloque de referencia de disparidad temporal. En algunos casos, el codificador 20 de vídeo y/o el decodificador 30 de vídeo pueden aplicar un factor de ponderación (por ejemplo, 0, 0,5, 1 o similares) al predictor residual para aumentar la precisión del predictor residual.
El codificador 20 de vídeo puede determinar un bloque residual final para el bloque actual. El bloque residual final comprende muestras que indican diferencias entre muestras del bloque actual, muestras en el bloque predictivo temporal y muestras en el predictor residual. El codificador 20 de vídeo puede incluir, en un flujo de bits, datos que representan el bloque residual final. El decodificador de vídeo puede reconstruir el bloque actual basándose en el bloque residual final (según se obtiene, por ejemplo, de un flujo de bits codificado), el predictor residual y el bloque predictivo temporal.
Aunque ARP puede mejorar la eficacia de codificación de predicción residual de inter vista (o inter capa), son posibles perfeccionamientos adicionales. Por ejemplo, ciertas técnicas de esta divulgación se refieren al factor de ponderación de ARP. Como se ha indicado anteriormente, un codificador de vídeo puede aplicar un factor de ponderación al predictor residual. En general, el factor de ponderación siempre se señaliza en el flujo de bits, independientemente de si hay una imagen de referencia temporal en las listas de imágenes de referencia para codificar el bloque actual. Sin embargo, señalizar el factor de ponderación cuando no hay imagen de referencia temporal puede aumentar innecesariamente la complejidad y reducir la eficacia, puesto que, si no hay imágenes de referencia temporales, no hay predicción temporal y residual asociado para aplicar ARP.
De acuerdo con aspectos de esta divulgación, el codificador 20 de vídeo y/o el decodificador 30 de vídeo pueden determinar, para un primer bloque de datos de vídeo en una primera ubicación temporal, si las listas de imágenes de referencia (por ejemplo, RefPicList0 y RefPicList1) para codificar el primer bloque contienen al menos una imagen de referencia en una segunda ubicación temporal diferente. El codificador 20 de vídeo y/o el decodificador 30 de vídeo pueden codificar también el primer bloque de datos de vídeo con relación a al menos un bloque de referencia de datos de vídeo de una imagen de referencia en las listas de imágenes de referencia. Sin embargo, el codificador 20 de vídeo y/o el decodificador 30 de vídeo pueden desactivar un proceso de predicción residual de inter vista cuando las listas de imágenes de referencia no incluyen al menos una imagen de referencia en la segunda ubicación temporal.
El codificador 20 de vídeo puede no señalizar un factor de ponderación en el flujo de bits (omitir la señalización de un factor de ponderación), indicando de esta manera que no se usa predicción residual de inter vista. En tales casos, el codificador 20 de vídeo puede codificar el residual sin predecir el residual. Análogamente, cuando se desactiva la predicción de inter vista, el decodificador 30 de vídeo puede determinar automáticamente (es decir, inferir) que un factor de ponderación es igual a cero y omitir la decodificación del factor de ponderación. De esta manera, el codificador 20 de vídeo y/o el decodificador 30 de vídeo pueden activar o desactivar la predicción residual de inter vista (por ejemplo, ARP) basándose en las imágenes de referencia en listas de imágenes de referencia para el bloque que se está codificando actualmente.
Las técnicas anteriormente descritas pueden aplicarse en el contexto de imágenes de acceso aleatorio. Por ejemplo, de acuerdo con aspectos de esta divulgación, el codificador 20 de vídeo y/o el decodificador 30 de vídeo pueden activar o desactivar la predicción residual de inter vista basándose en si el componente de vista que se está codificando actualmente es un componente de vista de acceso aleatorio. Es decir, por ejemplo, el codificador 20 de vídeo y/o el decodificador 30 de vídeo pueden desactivar la predicción residual de inter vista para todos los bloques de una imagen de acceso aleatorio, que no tienen imágenes de referencia temporales asociadas.
Las técnicas de esta divulgación también se refieren a interpolación en predicción residual de inter vista. Por ejemplo, cuando se realiza predicción residual de inter vista, tanto el codificador 20 de vídeo como el decodificador 30 de vídeo pueden usar un proceso de compensación de movimiento adicional durante la codificación. Por lo tanto, si un vector de movimiento indica una ubicación fraccional-pel, el codificador de vídeo realiza dos procesos de interpolación de pel fraccional, por ejemplo, un proceso de interpolación para ubicar el bloque de referencia temporal y otro proceso de interpolación para ubicar el bloque de referencia de disparidad temporal. Además, el codificador 20 de vídeo y/o el decodificador 30 de vídeo pueden aplicar otro proceso de interpolación de pel fraccional cuando se determina un bloque de referencia de disparidad. En HEVC, como un ejemplo, se especifica un filtro de 8 derivaciones para componentes de luma, mientras que se especifica un filtro de 4 derivaciones para componentes de croma. Tales procesos de interpolación pueden aumentar la complejidad computacional asociada con predicción residual de inter vista.
De acuerdo con aspectos de esta divulgación, puede simplificarse el proceso de compensación de movimiento de predicción residual de inter vista, particularmente con respecto a interpolación sub-pel de los bloques de referencia. Por ejemplo, el codificador 20 de vídeo y/o el decodificador 30 de vídeo pueden interpolar, con un primer tipo de interpolación, una ubicación de un bloque de referencia temporal indicada por un vector de movimiento temporal a un bloque actual de datos de vídeo, donde el bloque actual y el bloque de referencia temporal están ubicados en una primera capa de datos de vídeo. Además, el codificador 20 de vídeo y/o el decodificador 30 de vídeo pueden interpolar, con un segundo tipo de interpolación, una ubicación de un bloque de referencia de disparidad indicado por un vector de disparidad del bloque actual, donde el bloque de referencia de disparidad está ubicado en una segunda capa diferente, y donde el segundo tipo de interpolación comprende un filtro bilineal. El codificador 20 de vídeo y/o el decodificador 30 de vídeo pueden determinar también un bloque de referencia de disparidad temporal del bloque de referencia de disparidad indicado aplicando el vector de movimiento temporal al bloque de referencia de disparidad, y codificar el bloque actual basándose en el bloque de referencia temporal, el bloque de referencia de disparidad y el bloque de referencia de disparidad temporal (por ejemplo, codificar el residual del bloque actual usando predicción residual de inter vista).
De acuerdo con algunos ejemplos, el primer tipo de interpolación puede comprender también un filtro de paso bajo, tal como un filtro bilineal. En otro ejemplo, puede usarse un filtro bilineal para interpolar la ubicación del bloque de referencia de disparidad temporal. Por consiguiente, de acuerdo con aspectos de esta divulgación, el codificador 20 de vídeo y/o el decodificador 30 de vídeo pueden usar un filtro de paso bajo, tal como un filtro bilineal para interpolar la ubicación de uno o más bloques de referencia en predicción residual de inter vista. De nuevo, aunque se hace referencia a filtros bilineales, en otros ejemplos, el codificador 20 de vídeo y/o el decodificador 30 de vídeo pueden aplicar un número de otros filtros de paso bajo que son computacionalmente más eficaces que aplicar los filtros de derivación superior especificados por HEVC (en particular, los filtros especificados en WD9). De acuerdo con aspectos de esta divulgación, el codificador 20 de vídeo y/o el decodificador 30 de vídeo pueden aplicar los filtros de paso bajo anteriormente descritos a cualquier combinación de componentes de luma, componentes de croma o tanto componentes de luma como de croma.
Las técnicas de esta divulgación también se refieren a señalizar un factor de ponderación de ARP para modos de codificación y/o modos de partición particulares. Por ejemplo, en general, puede señalizarse un factor de ponderación para todos los modos de partición (como se describe en mayor detalle, por ejemplo, con respecto al ejemplo mostrado en la Figura 12) que incluyen PART_2Nx2N, PART_2NxN, PART_Nx2N, o similares, y todos los modos inter codificados que incluyen salto, unión, predicción de vector de movimiento avanzada (AMVP). Señalizar el factor de ponderación para todos los modos de partición e inter modos puede aumentar innecesariamente la complejidad y reducir la eficacia, puesto que ARP no puede aplicarse eficazmente con ciertos modos de partición o inter modos.
De acuerdo con aspectos de esta divulgación, puede activarse o desactivarse la predicción residual de inter vista basándose en un modo de partición y/o modo de codificación del bloque que se está codificando actualmente. Por ejemplo, el codificador 20 de vídeo y/o el decodificador 30 de vídeo pueden determinar un modo de partición para codificar un bloque de datos de vídeo, donde el modo de partición indica una división del bloque de datos de vídeo para codificación predictiva. Además, el codificador 20 de vídeo y/o el decodificador 30 de vídeo pueden determinar si codificar un factor de ponderación para un proceso de predicción residual de inter vista basándose en el modo de partición, en donde, cuando no se codifica el factor de ponderación, no se aplica el proceso de predicción residual de inter vista para predecir un residual para el bloque actual. El codificador 20 de vídeo y/o el decodificador 30 de vídeo pueden a continuación codificar el bloque de datos de vídeo usando el modo de partición determinado.
De acuerdo con aspectos de esta divulgación, en algunos ejemplos, puede no señalizarse el factor de ponderación para algún bloque inter codificado con modo de partición no igual a PART_2Nx2N. En otro ejemplo, adicionalmente o como alternativa, puede no señalizarse el factor de ponderación para algún bloque inter codificado con modo de codificación desigual al modo de salto y/o al modo de unión.
Las técnicas de esta divulgación también se refieren a perfeccionar la manera en la que se señalizan los factores de ponderación en el flujo de bits. Por ejemplo, en general, el codificador 20 de vídeo y/o el decodificador 30 de vídeo pueden seleccionar un factor de ponderación de un conjunto fijo de tres factores de ponderación fijos (por ejemplo, 0, 0,5 y 1). Sin embargo, en algunos casos, tres factores de ponderación estáticos pueden no proporcionar suficiente flexibilidad para conseguir suficiente eficacia de predicción, debido a diferencias de calidad entre una vista actual y su vista de referencia. Las diferencias de calidad entre la vista actual y la vista de referencia pueden ser dinámicas, en particular con respecto a codificación de vídeo escalable. A la inversa, tres factores de ponderación pueden superar las necesidades de algunos cortes o imágenes. Es decir, algunos cortes o imágenes pueden no necesitar seleccionar a partir de tres factores de ponderación para conseguir un equilibrio óptimo entre la complejidad y la mejora de eficacia de codificación.
De acuerdo con aspectos de esta divulgación, puede implementarse un enfoque más flexible para los factores de ponderación. Por ejemplo, el número de factores de ponderación disponible puede modificarse en el nivel de secuencia (por ejemplo, en un conjunto de parámetros, tal como un conjunto de parámetros de secuencia (SPS)). En un ejemplo, para propósitos de ilustración, puede señalizarse un indicador en un SPS para desactivar uno o más factores de ponderación, por ejemplo, 0,5 y/o 1. En otro ejemplo, puede señalizarse un indicador de este tipo en un VPS y ser aplicable para todas las vistas no de base. En otro ejemplo más, puede señalizarse un indicador de este tipo en un conjunto de parámetros de vídeo (VPS) para cada vista no de base. En otro ejemplo, puede proporcionarse un indicador de este tipo en un conjunto de parámetros de imagen (PPS), un encabezado de corte o un conjunto de parámetros de vista para desactivar uno o más factores de ponderación. Cuando se ha desactivado un factor de ponderación, pueden usarse menos bits para representar esos factores de ponderación restantes, proporcionado de esta manera unos ahorros de bits.
De acuerdo con otros aspectos, puede proporcionarse un indicador para modificar y/o sustituir uno o más factores de ponderación. En un ejemplo, el codificador de vídeo puede sustituir el factor de ponderación de 0,5 por un factor de ponderación de 0,75. Este indicador puede señalizarse en un encabezado de corte, un SPS, un conjunto de parámetros de imagen (PPS) o un VPS.
Como se ha indicado anteriormente, un bloque de referencia de disparidad temporal para determinar el predictor residual está ubicado típicamente aplicando el vector de movimiento temporal al bloque de referencia de disparidad. Es decir, el codificador de vídeo puede combinar el vector de movimiento temporal y el vector de disparidad y ubicar el bloque de referencia de disparidad temporal basándose en la combinación, por ejemplo, con relación al bloque actual. Sin embargo, en algunos casos, la memoria intermedia de imagen decodificada y/o las listas de imágenes de referencia para codificar el bloque actual pueden no contener la imagen indicada aplicando el vector de movimiento temporal al bloque de referencia de disparidad.
De acuerdo con aspectos de esta divulgación, un codificador de vídeo puede activar o desactivar ARP basándose en las imágenes de una memoria intermedia de imagen decodificada y/o en las listas de imágenes de referencia. Por ejemplo, el codificador 20 de vídeo y/o el decodificador 30 de vídeo pueden determinar, para un primer bloque de datos de vídeo en una primera capa de datos de vídeo, un vector de movimiento temporal e imagen de referencia temporal asociada para predecir el primer bloque, donde la imagen de referencia temporal tiene un valor de recuento de orden de imagen. Además, el codificador 20 de vídeo y/o el decodificador 30 de vídeo pueden determinar un bloque de referencia de disparidad en una imagen de una unidad de acceso que incluye una imagen que contiene el primer bloque. El codificador 20 de vídeo y/o el decodificador 30 de vídeo pueden determinar si una memoria intermedia de imagen decodificada contiene una imagen de referencia de disparidad temporal que tiene el valor de recuento de orden de imagen de la imagen de referencia temporal, donde la imagen de referencia de disparidad temporal está ubicada basándose en una combinación del vector de movimiento temporal y el vector de disparidad, y cuando la memoria intermedia de imagen decodificada no contiene una imagen de referencia de disparidad temporal que tiene el valor de recuento de orden de imagen de la imagen de referencia temporal, el codificador 20 de vídeo y/o el decodificador 30 de vídeo pueden modificar el proceso de predicción residual de inter vista para predecir datos residuales del primer bloque.
En algunos ejemplos, el codificador 20 de vídeo y/o el decodificador 30 de vídeo pueden modificar el proceso de predicción residual de inter vista desactivando el proceso de predicción residual de inter vista, de manera que no se codifica el bloque actual usando predicción residual de inter vista. En otros ejemplos, el codificador 20 de vídeo y/o el decodificador 30 de vídeo pueden modificar el proceso de predicción residual de inter vista escalando el vector de movimiento temporal para identificar otra imagen de referencia de disparidad temporal. Por ejemplo, el codificador 20 de vídeo y/o el decodificador 30 de vídeo pueden escalar el vector de movimiento temporal de manera que, cuando se aplica a la imagen de referencia de disparidad (por ejemplo, o se combina con el vector de disparidad), el vector de movimiento escalado identifica una imagen de referencia de disparidad temporal que está incluida en la lista de imágenes de referencia y está en una ubicación temporalmente más cerca de la imagen de referencia de disparidad. Las técnicas anteriormente descritas pueden evitar que el codificador 20 de vídeo y/o el decodificador 30 de vídeo intenten ubicar el bloque de referencia de disparidad en una imagen que no está incluida en la lista de imágenes de referencia.
La Figura 2 es un diagrama de bloques que ilustra un codificador 20 de vídeo de ejemplo que puede implementar las técnicas descritas en esta divulgación par predicción residual avanzada. El codificador 20 de vídeo puede realizar intra- e inter- codificación de bloques de vídeo dentro de cortes de vídeo. La intra codificación se basa en la predicción espacial para reducir o eliminar la redundancia espacial en vídeo dentro de una imagen dada. La inter codificación se basa en la predicción temporal para reducir o eliminar la redundancia temporal en el vídeo dentro de imágenes o imágenes adyacentes de una secuencia de vídeo. El intra modo (modo I) puede hacer referencia a cualquiera de varios modos de compresión espacial. Los inter modos, tales como la predicción unidireccional (modo P) o la bipredicción (modo B), pueden hacer referencia a cualquiera de varios modos de compresión temporal.
Como se ha indicado anteriormente, el codificador 20 de vídeo puede adaptarse para realizar codificación de vídeo de múltiples vistas. Por ejemplo, el codificador 20 de vídeo puede estar configurado para codificar múltiples capas escalables de datos de vídeo de acuerdo con las normas de codificación de vídeo MVC, MV-HEC, 3DHEVC y/o HSVC. Por lo tanto, el codificador 20 de vídeo puede estar configurado para codificar MV-HEVC, de manera que cada vista en una instancia de tiempo puede procesarse por un decodificador, tal como el decodificador 30 de vídeo. Para HEVC-3D, además de codificar mapas de textura (es decir, valores de luma y croma) para cada vista, el codificador 20 de vídeo puede codificar adicionalmente un mapa de profundidad para cada vista.
En cualquier caso, como se muestra en la Figura 2, el codificador 20 de vídeo recibe datos de vídeo que van a codificarse. En el ejemplo de la Figura 2, el codificador 20 de vídeo incluye una unidad 40 de selección de modo, el sumador 50, la unidad 52 de procesamiento de transformada, la unidad 54 de cuantificación, la unidad 56 de codificación por entropía y la memoria 64 de imagen de referencia. La unidad 40 de selección de modo, a su vez, incluye la unidad 42 de estimación de movimiento, la unidad 44 de compensación de movimiento, la unidad 46 de intra predicción y la unidad 48 de subdivisión. Para la reconstrucción del bloque de vídeo, el codificador 20 de vídeo también incluye la unidad 58 de cuantificación inversa, la unidad 60 de procesamiento de transformada inversa y el sumador 62. Un filtro de desbloqueo (no mostrado en la Figura 2) también puede incluirse para filtrar límites de bloque para eliminar los artefactos de bloqueo del vídeo reconstruido. Si se desea, el filtro de desbloqueo típicamente filtraría la salida del sumador 62. Pueden usarse también filtros de bucle adicionales (dentro del bucle o posteriores al bucle) además del filtro de desbloqueo. Tales filtros no se muestran por brevedad, pero, si se desea, pueden filtrar la salida del sumador 50 (como un filtro en bucle).
Durante el proceso de codificación, el codificador 20 de vídeo recibe una imagen o corte que se va a codificar. La imagen o corte puede dividirse en múltiples bloques de vídeo. La unidad 42 de estimación de movimiento y la unidad 44 de compensación de movimiento realizan codificación inter predictiva del bloque de vídeo recibido con relación a uno o más bloques en una o más imágenes de referencia para proporcionar compresión temporal. La unidad 46 de intra predicción puede realizar, como alternativa, codificación intra predictiva del bloque de vídeo recibido con relación a uno o más bloques vecinos en la misma imagen o corte que el bloque que va a codificarse para proporcionar una compresión espacial. El codificador 20 de vídeo puede realizar múltiples pasadas de codificación, por ejemplo, para seleccionar un modo de codificación apropiado para cada bloque de datos de vídeo.
Además, la unidad 48 de subdivisión puede subdividir bloques de datos de vídeo en subbloques, basándose en una evaluación de los esquemas de subdivisión previos en pasadas de codificación previas. Por ejemplo, la unidad 48 de subdivisión puede subdividir inicialmente una imagen o corte en LCU, y subdividir cada una de las LCU en sub-CU basándose en el análisis de tasa-distorsión (por ejemplo, optimización de tasa-distorsión). La unidad 40 de selección de modo puede producir adicionalmente una estructura de datos de árbol cuádruple indicativa de la subdivisión de una LCU en sub-CU. Las CU de nodo hoja del árbol cuádruple pueden incluir una o más PU y una o más TU.
La unidad 40 de selección de modo puede seleccionar uno de los modos de codificación, intra o inter, por ejemplo, basándose en los resultados de error, y proporciona el bloque intra- o inter codificado resultante al sumador 50 para generar datos residuales y al sumador 62 para reconstruir el bloque codificado para su uso como una imagen de referencia. La unidad 40 de selección de modo también proporciona elementos de sintaxis, tales como vectores de movimiento, indicadores de intra modo, información de subdivisión y otra información de sintaxis de este tipo, a la unidad 56 de codificación por entropía.
La unidad 42 de estimación de movimiento, la unidad 43 de predicción de inter capa y la unidad 44 de compensación de movimiento pueden estar altamente integradas, pero se ilustran de manera separada para propósitos conceptuales. La estimación de movimiento, realizada por la unidad 42 de estimación de movimiento, es el proceso de generación de vectores de movimiento, que estiman el movimiento para bloques de vídeo. Un vector de movimiento, por ejemplo, puede indicar el desplazamiento de una PU de un bloque de vídeo dentro de una imagen actual con relación a un bloque predictivo dentro de una imagen de referencia (u otra unidad codificada) con relación al bloque actual que se está codificando dentro de la imagen actual (u otra unidad codificada).
Un bloque predictivo es un bloque que se halla que coincide estrechamente al bloque que va a codificarse, en términos de diferencia de píxel, que puede determinarse por una suma de diferencia absoluta (SAD), suma de diferencia de cuadrados (SSD) u otras métricas de diferencia. En algunos ejemplos, el codificador 20 de vídeo puede calcular valores para posiciones de píxeles sub-enteros de imágenes de referencia almacenadas en la memoria 64 de imagen de referencia, que también puede denominarse como una memoria intermedia de imagen de referencia. Por ejemplo, el codificador 20 de vídeo puede interpolar valores de posiciones de un cuarto de píxel, posiciones de un octavo de píxel y otras posiciones de píxel fraccionales de la imagen de referencia. Por lo tanto, la unidad 42 de estimación de movimiento puede realizar una búsqueda de movimiento con relación a las posiciones de píxel completas y las posiciones de píxel fraccionales y emitir un vector de movimiento con precisión de píxel fraccional.
La unidad 42 de estimación de movimiento calcula un vector de movimiento para una PU de un bloque de vídeo en un corte inter codificado comparando la posición de la PU a la posición de un bloque predictivo de una imagen de referencia. Por consiguiente, en general, los datos para un vector de movimiento pueden incluir una lista de imágenes de referencia, un índice en la lista de imágenes de referencia (ref idx), un componente horizontal y un componente vertical. La imagen de referencia puede seleccionarse a partir de una primera lista de imágenes de referencia (Lista 0), una segunda lista de imágenes de referencia (Lista 1), o una lista de imágenes de referencia combinada (Lista c), cada una de las cuales identifica una o más imágenes de referencia almacenadas en la memoria 64 de imagen de referencia.
La unidad 42 de estimación de movimiento puede generar y enviar un vector de movimiento que identifica el bloque predictivo de la imagen de referencia a la unidad 56 de codificación por entropía y a la unidad 44 de compensación de movimiento. Es decir, la unidad 42 de estimación de movimiento puede generar y enviar datos de vector de movimiento que identifican la lista de imágenes de referencia que contiene el bloque predictivo, un índice en la lista de imágenes de referencia que identifica la imagen del bloque predictivo, y un componente horizontal y vertical para ubicar el bloque predictivo dentro de la imagen identificada.
En algunos ejemplos, en lugar de enviar el vector de movimiento real para una PU actual, la unidad 43 de predicción de inter capa puede predecir el vector de movimiento para reducir adicionalmente la cantidad de datos necesarios para comunicar el vector de movimiento. En este caso, en lugar de codificar y comunicar el mismo vector de movimiento, la unidad 43 de predicción de inter capa puede generar una diferencia de vector de movimiento (MVD) con relación a un vector de movimiento conocido (o conocible). El vector de movimiento conocido, que puede usarse con la MVD para definir el vector de movimiento actual, puede definirse por un denominado predictor de vector de movimiento (MVP). En general, para ser un MVP válido, el vector de movimiento que se está usando para predicción debe apuntar a la misma imagen de referencia que el vector de movimiento que se está codificando actualmente.
La unidad 43 de predicción de inter capa puede identificar un predictor de vector de movimiento, por ejemplo, para generar un MVD o unión, en codificación de múltiples vistas. Por ejemplo, la unidad 43 de predicción de inter capa puede identificar un vector de movimiento de disparidad a partir de un bloque en un componente de vista diferente de un bloque actual para predecir el vector de movimiento para el bloque actual. En otros ejemplos, la unidad 43 de predicción inter capa puede identificar un vector de movimiento temporal a partir de un bloque en un componente de vista diferente de un bloque actual para predecir el vector de movimiento para el bloque actual.
De acuerdo con aspectos de esta divulgación, la unidad 43 de predicción de inter capa puede realizar predicción residual inter capa. Por ejemplo, la unidad 43 de predicción de inter capa puede codificar datos residuales de una capa con relación a datos residuales de una segunda capa diferente. En algunos casos, la unidad 43 de predicción de inter capa puede determinar en primer lugar un bloque predictivo para predecir un bloque actual. El bloque predictivo para el bloque actual puede estar basado en muestras de una imagen de referencia temporal que están asociadas con una ubicación indicada por un vector de movimiento del bloque actual. La imagen de referencia temporal está asociada con la misma capa que la imagen actual, pero está asociada con una instancia de tiempo diferente que la imagen actual.
La unidad 43 de predicción de inter capa también determina un bloque de referencia de disparidad basándose en muestras de una imagen de referencia de disparidad que están en una ubicación indicada por un vector de disparidad del bloque actual. La imagen de referencia de disparidad está asociada con una capa diferente (es decir, una capa de referencia) de la imagen actual, pero está asociada con la misma instancia de tiempo que la imagen actual. La unidad 43 de predicción de inter capa también determina un bloque de referencia de disparidad temporal para el bloque actual. El bloque de referencia temporal está basado en muestras de una imagen de referencia de disparidad temporal que están asociadas con una ubicación indicada por el vector de movimiento del bloque actual y el vector de disparidad (por ejemplo, por la combinación del vector de movimiento y el vector de disparidad). Por lo tanto, la imagen de referencia de disparidad temporal está asociada con la misma vista que la imagen de referencia de disparidad y está asociada con la misma unidad de acceso que la imagen de referencia temporal.
La unidad 43 de predicción de inter capa a continuación determina un predictor residual para predecir el residual asociado con el bloque actual, por ejemplo, la diferencia entre el bloque actual y el bloque de referencia temporal. Cada muestra del predictor residual para el bloque actual indica una diferencia entre una muestra del bloque de referencia de disparidad y una correspondiente muestra del bloque de referencia de disparidad temporal. En algunos casos, la unidad 43 de predicción de inter capa puede aplicar un factor de ponderación (por ejemplo, 0, 0,5, 1 o similares) al predictor residual para aumentar la precisión del predictor residual.
La unidad 43 de predicción de inter capa puede determinar un bloque residual final para el bloque actual. El bloque residual final comprende muestras que indican diferencias entre muestras del bloque actual, muestras en el bloque predictivo temporal y muestras en el predictor residual. El codificador 20 de vídeo puede incluir, en un flujo de bits, datos que representan el bloque residual final.
De acuerdo con aspectos de esta divulgación, la unidad 43 de predicción de inter capa puede activar o desactivar la predicción residual de inter vista (que incluye la codificación del residual de una capa con relación al residual de una segunda capa diferente) basándose en las imágenes de referencia en listas de imágenes de referencia para el bloque que se está codificando actualmente. En un ejemplo, la unidad 43 de predicción de inter capa puede activar o desactivar la predicción residual de inter vista basándose en si las listas de imágenes de referencia (por ejemplo, RefPicList0 y/o RefPicList1) para el bloque que se está codificando actualmente incluyen alguna imagen de referencia temporal. De acuerdo con aspectos de esta divulgación, si las listas de imágenes de referencia para un bloque intra previsto incluyen únicamente imágenes de referencia de inter vista, la unidad 43 de predicción de inter capa puede desactivar la unidad 43 de predicción de inter capa. En algunos ejemplos, la unidad 43 de predicción de inter capa puede desactivar la unidad 43 de predicción de inter capa para cada bloque de un componente de vista de acceso aleatorio.
En otro ejemplo, cuando la lista o listas de imágenes de referencia del bloque de referencia de disparidad no incluyen una imagen de referencia en la misma vista que la imagen de referencia de disparidad que tiene el mismo POC que la imagen de referencia temporal, la unidad 43 de predicción de inter capa puede modificar la predicción residual de inter vista. La determinación de si modificar la predicción residual de inter vista puede estar basada en una o ambas de las listas de imágenes de referencia (por ejemplo, RefPicList0 y/o RefPicList1). Es decir, dado un índice de lista de imágenes de referencia actual X (siendo X 0 o 1), en un ejemplo, si la lista de imágenes de referencia con un índice de lista igual a X del bloque de referencia de disparidad no incluye una imagen de referencia en la misma vista que la imagen de referencia de disparidad y que tiene el mismo POC que la imagen de referencia temporal del bloque actual, la unidad 43 de predicción de inter capa puede modificar el proceso de ARP. En otro ejemplo, si ninguna de las listas de imágenes de referencia (por ejemplo, ni la lista 0 ni la lista 1) del bloque de referencia de disparidad incluye una imagen de referencia en la misma vista que la imagen de referencia de disparidad y que tiene el mismo POC que la imagen de referencia temporal del bloque actual, la unidad 43 de predicción de inter capa puede modificar el proceso de ARP.
En algunos casos, la unidad 43 de predicción de inter capa puede modificar la predicción residual de inter vista desactivando la predicción residual de inter vista. En otras instancias, la unidad 43 de predicción de inter capa puede modificar el proceso de predicción residual de inter vista escalando el vector de movimiento temporal para identificar otra imagen de referencia de disparidad temporal. Por ejemplo, la unidad 43 de predicción de inter capa puede escalar el vector de movimiento temporal de manera que, cuando se aplica a la imagen de referencia de disparidad, la combinación escalada del vector de movimiento y el vector de disparidad identifica una imagen de referencia de disparidad temporal que está incluida en la lista de imágenes de referencia y está en una ubicación temporalmente más cerca de la imagen de referencia de disparidad.
Aunque se describe con respecto a la lista de imágenes de referencia, la unidad 43 de predicción de inter capa puede modificar y/o desactivar adicionalmente o como alternativa la predicción residual de inter vista si la memoria 64 de imagen de referencia (es decir, memoria intermedia de imagen decodificada) no contiene una misma imagen en la misma vista que la imagen de referencia de disparidad que tiene el mismo POC que la imagen de referencia temporal.
En aún otro ejemplo, de acuerdo con aspectos de esta divulgación, la unidad 43 de predicción de inter capa puede simplificar la manera en la que están ubicados los bloques de referencia, particularmente cuando se interpola una posición de sub-pel. Por ejemplo, la unidad 43 de predicción de inter capa puede usar un filtro de paso bajo, tal como un filtro bilineal, para interpolar la ubicación del bloque de referencia de disparidad. Adicionalmente o como alternativa, la unidad 43 de predicción de inter capa puede usar un filtro de paso bajo, tal como el filtro bilineal, para interpolar la ubicación del bloque de referencia de disparidad temporal. En otro ejemplo más, de acuerdo con aspectos de esta divulgación, la unidad 42 de estimación de movimiento y/o la unidad 44 de compensación de movimiento pueden usar un filtro de paso bajo, tal como el filtro bilineal para interpolar la ubicación del bloque de referencia temporal.
En otro ejemplo más, de acuerdo con aspectos de esta divulgación, la unidad 43 de predicción de inter capa puede aplicar únicamente predicción residual de inter vista, y por lo tanto puede señalizar únicamente un factor de ponderación, para modos de codificación y/o modos de partición particulares. Por ejemplo, la unidad 43 de predicción de inter capa puede señalizar únicamente un factor de ponderación para cualquier bloque inter codificado con modo de partición desigual a PART_2Nx2N. En otro ejemplo, adicionalmente o como alternativa, la unidad 43 de predicción de inter capa puede no señalizar un factor de ponderación para cualquier bloque inter codificado con un modo de codificación desigual al modo de salto y/o al modo de unión.
La compensación de movimiento, realizada por la unidad 44 de compensación de movimiento, puede implicar capturar o generar el bloque predictivo basándose en el vector de movimiento determinado por la unidad 42 de estimación de movimiento y/o la información de la unidad 43 de predicción de inter capa. En algunos casos, la unidad 44 de compensación de movimiento puede aplicar predicción de inter vista. De nuevo, la unidad 42 de estimación de movimiento, la unidad 43 de predicción de inter capa y la unidad 44 de compensación de movimiento pueden estar integradas funcionalmente, en algunos ejemplos. Tras recibir el vector de movimiento para la PU del bloque de vídeo actual, la unidad 44 de compensación de movimiento puede ubicar el bloque predictivo al que apunta el vector de movimiento en una de las listas de imágenes de referencia.
El sumador 50 forma un bloque de vídeo residual restando valores de píxel del bloque predictivo de los valores de píxel del bloque de vídeo actual que se está codificando, formando valores de diferencia de píxel, como se analiza a continuación. En general, la unidad 42 de estimación de movimiento realiza estimación de movimiento con relación a componentes de luma, y la unidad 44 de compensación de movimiento usa vectores de movimiento calculados basándose en los componentes de luma para tanto los componentes de croma como los componentes de luma. La unidad 40 de selección de modo puede generar también elementos de sintaxis asociados con los bloques de vídeo y el corte de vídeo para su uso por el decodificador 30 de vídeo al decodificar los bloques de vídeo del corte de vídeo.
La unidad 46 de intra predicción puede intra predecir un bloque actual, como una alternativa a la inter predicción realizada por la unidad 42 de estimación de movimiento y la unidad 44 de compensación de movimiento, como se ha descrito anteriormente. En particular, la unidad 46 de intra predicción puede determinar un modo de intra predicción para usar para codificar un bloque actual. En algunos ejemplos, la unidad 46 de intra predicción puede codificar un bloque actual usando diversos modos de intra predicción, por ejemplo, durante pasadas de codificación separadas y la unidad 46 de intra predicción (o la unidad 40 de selección de modo, en algunos ejemplos) puede seleccionar un modo de intra predicción apropiado para usar a partir de los modos probados.
Por ejemplo, la unidad 46 de intra predicción puede calcular valores de tasa-distorsión usando un análisis de tasadistorsión para los diversos modos de intra predicción probados, y seleccionar el modo de intra predicción que tiene las mejores características de tasa-distorsión entre los modos probados. El análisis de tasa-distorsión determina, en general, una cantidad de distorsión (o error) entre un bloque codificado y un bloque original no codificado, que se codificó para producir el bloque codificado, así como una tasa de bits (es decir, un número de bits) usada para producir el bloque codificado. La unidad 46 de intra predicción puede calcular relaciones a partir de las distorsiones y tasas para los diversos bloques codificados para determinar cuál modo de intra predicción muestra el mejor valor de tasadistorsión para el bloque.
Después de seleccionar un modo de intra predicción para un bloque, la unidad 46 de intra predicción puede proporcionar información indicativa del modo de intra predicción seleccionado para el bloque a la unidad 56 de codificación por entropía. La unidad 56 de codificación por entropía puede codificar la información que indica el modo de intra predicción seleccionado. El codificador 20 de vídeo puede incluir en el flujo de bits transmitido datos de configuración, que pueden incluir una pluralidad de tablas de índices de modo de intra predicción y una pluralidad de tablas de índices de modo de intra predicción modificado (también denominadas como tablas de mapeo de palabra de código), definiciones de codificación de contextos para diversos bloques e indicaciones de un modo de intra predicción más probable, una tabla de índices de modo de intra predicción y una tabla de índices de modo de intra predicción modificado para usar para cada uno de los contextos.
El codificador 20 de vídeo forma un bloque de vídeo residual restando los datos de predicción de la unidad 40 de selección de modo del bloque de vídeo original que se está codificando. El sumador 50 representa el componente o componentes que realizan esta operación de resta. La unidad 52 de procesamiento de transformada aplica una transformada, tal como una transformada de coseno discreta (DCT) o una transformada conceptualmente similar, al bloque residual, produciendo un bloque de vídeo que comprende valores de coeficientes de transformada residual. La unidad 52 de procesamiento de transformada puede realizar otras transformadas que son conceptualmente similares a DCT. Podrían usarse también transformadas de ondícula, transformadas de números enteros, transformadas de subbanda u otros tipos de transformadas. En cualquier caso, la unidad 52 de procesamiento de transformada aplica la transformada al bloque residual, produciendo un bloque de coeficientes de transformada residual. La transformada puede convertir la información residual de un dominio de valores de píxeles a un dominio de la transformada, tal como un dominio de frecuencia.
La unidad 52 de procesamiento de transformada puede enviar los coeficientes de transformada resultantes a la unidad 54 de cuantificación. La unidad 54 de cuantificación cuantifica los coeficientes de transformada para reducir adicionalmente la tasa de bits. El proceso de cuantificación puede reducir la profundidad de bits asociada con alguno o todos los coeficientes. El grado de cuantificación puede modificarse ajustando un parámetro de cuantificación. En algunos ejemplos, la unidad 54 de cuantificación puede realizar a continuación una exploración de la matriz que incluye los coeficientes de transformada cuantificados. Como alternativa, la unidad 56 de codificación por entropía puede realizar la exploración.
Después de la cuantificación, la unidad 56 de codificación por entropía codifica por entropía los coeficientes de transformada cuantificados. Por ejemplo, la unidad 56 de codificación por entropía puede realizar codificación de longitud variable adaptativa según contexto (CAVLC), codificación binaria aritmética adaptativa según contexto (CABAC), codificación binaria aritmética adaptativa según contexto basada en sintaxis (SBAC), codificación por entropía de subdivisión de intervalo de probabilidad (PIPE) u otra técnica de codificación por entropía.
La unidad 58 de cuantificación inversa y la unidad 60 de procesamiento de transformada inversa aplican cuantificación inversa y transformación inversa, respectivamente, para reconstruir el bloque residual en el dominio de los píxeles, por ejemplo, para su uso posterior como un bloque de referencia. La unidad 44 de compensación de movimiento puede calcular un bloque de referencia añadiendo el bloque residual a un bloque predictivo de una de las imágenes de la memoria 64 de imagen de referencia. La unidad 44 de compensación de movimiento puede aplicar también uno o más filtros de interpolación al bloque residual objetivo para calcular valores de píxel sub-enteros para su uso en la estimación de movimiento.
El sumador 62 añade el bloque residual objetivo al bloque de predicción de movimiento compensado producido por la unidad 44 de compensación de movimiento para producir un bloque de vídeo reconstruido para su almacenamiento en la memoria 64 de imagen de referencia. El bloque de vídeo reconstruido puede usarse por la unidad 42 de estimación de movimiento y la unidad 44 de compensación de movimiento como un bloque de referencia para inter codificar un bloque en una imagen posterior.
La Figura 3 es un diagrama de bloques que ilustra un decodificador 30 de vídeo de ejemplo que puede implementar las técnicas descritas en esta divulgación para predecir vectores de movimiento en codificación de múltiples vistas. En el ejemplo de la Figura 3, el decodificador 30 de vídeo incluye una unidad 80 de decodificación por entropía, una unidad 81 de procesamiento de predicción, una unidad 86 de cuantificación inversa, una unidad 88 de procesamiento de transformada, un sumador 90 y una memoria 92 de imagen de referencia. La unidad 81 de procesamiento de predicción incluye la unidad 82 de compensación de movimiento, la unidad 83 de predicción de inter capa y la unidad 84 de intra predicción.
Como se ha indicado anteriormente, el decodificador 30 de vídeo puede adaptarse para realizar codificación de vídeo de múltiples vistas. En algunos casos, el decodificador 30 de vídeo puede estar configurado para decodificar HEVC de múltiples vistas. Para HEVC-3D, además de decodificar mapas de textura (es decir, valores de luma y croma) para cada vista, el decodificador 30 de vídeo puede decodificar adicionalmente un mapa de profundidad para cada vista.
En cualquier caso, durante el proceso de decodificación, el decodificador 30 de vídeo recibe un flujo de bits de vídeo codificado que representa bloques de vídeo de un corte de vídeo codificado y elementos de sintaxis asociados del codificador 20 de vídeo. La unidad 80 de decodificación por entropía del decodificador 30 de vídeo decodifica por entropía el flujo de bits para generar coeficientes cuantificados, vectores de movimiento y otros elementos de sintaxis. La unidad 80 de decodificación por entropía reenvía los vectores de movimiento y otros elementos de sintaxis a la unidad 81 de procesamiento de predicción. El decodificador 30 de vídeo puede recibir los elementos de sintaxis en el nivel de corte de vídeo y/o en el nivel de bloque de vídeo.
Por ejemplo, a modo de antecedentes, el decodificador 30 de vídeo puede recibir datos de vídeo comprimidos que se han comprimido para su transmisión mediante una red en las denominadas "unidades de capa de abstracción de red" o unidades de NAL. Cada unidad de NAL puede incluir un encabezado que identifica un tipo de datos almacenados para la unidad de NAL. Hay dos tipos de datos que se almacenan comúnmente en las unidades de NAL. El primer tipo de datos almacenados en una unidad de NAL son los datos de capa de codificación de vídeo (VCL), que incluyen los datos de vídeo comprimido. El segundo tipo de datos almacenados en una unidad de NAL se denomina como datos no de VCL, que incluyen información adicional, tal como conjuntos de parámetros que definen datos de encabezado comunes a un gran número de unidades de NAL e información de mejora complementaria (SEI).
Por ejemplo, los conjuntos de parámetros pueden contener la información de encabezado de nivel de secuencia (por ejemplo, en conjuntos de parámetros de secuencia (SPS)) y la información de encabezado de nivel de imagen que cambia infrecuentemente (por ejemplo, en conjuntos de parámetros de imagen (PPS)). La información que cambia infrecuentemente contenida en los conjuntos de parámetros no necesita repetirse para cada secuencia o imagen, mejorando de esta manera la eficacia de codificación. Además, el uso de conjuntos de parámetros posibilita la transmisión fuera de banda de información de encabezado, evitando de esta manera la necesidad de transmisiones redundantes para resiliencia de error.
Cuando se codifica el corte de vídeo como un corte intra codificado (I), la unidad 84 de intra predicción de la unidad 81 de procesamiento de predicción puede generar datos de predicción para un bloque de vídeo del corte de vídeo actual basándose en un modo de intra predicción señalizado y datos de bloques previamente decodificados de la imagen actual. Cuando se codifica la imagen como un corte inter codificado (es decir, B, P o GPB), la unidad 82 de compensación de movimiento de la unidad 81 de procesamiento de predicción produce bloques predictivos para un bloque de vídeo del corte de vídeo actual basándose en los vectores de movimiento y otros elementos de sintaxis recibidos de la unidad 80 de decodificación por entropía. Los bloques predictivos pueden producirse de una de las imágenes de referencia dentro de una de las listas de imágenes de referencia. El decodificador 30 de vídeo puede reconstruir las listas de imágenes de referencia, Lista 0 y Lista 1, usando técnicas de construcción por defecto basándose en imágenes de referencia almacenadas en la memoria 92 de imagen de referencia.
La unidad 82 de compensación de movimiento determina información de predicción para un bloque de vídeo del corte de vídeo actual analizando los vectores de movimiento y otros elementos de sintaxis, y usa la información de predicción para producir los bloques predictivos para el bloque de vídeo actual que se está decodificando. Por ejemplo, la unidad 82 de compensación de movimiento usa alguno de los elementos de sintaxis recibidos para determinar un modo de predicción (por ejemplo, intra- o inter- predicción) usado para codificar los bloques de vídeo del corte de vídeo, un tipo de corte de inter predicción (por ejemplo, corte B o corte P o corte GPB), información de construcción para una o más de las listas de imágenes de referencia para el corte, vectores de movimiento para cada bloque de vídeo inter codificado del corte, estado de inter predicción para cada bloque de vídeo inter codificado del corte, y otra información para decodificar los bloques de vídeo en el corte de vídeo actual. En algunos ejemplos, la unidad 82 de compensación de movimiento puede recibir cierta información de movimiento de la unidad 83 de predicción de inter capa.
La unidad 83 de predicción de inter capa puede recibir datos de predicción que indican dónde recuperar información de movimiento para un bloque actual. Por ejemplo, la unidad 83 de predicción de inter capa puede recibir información de predicción de vector de movimiento, tal como un índice de MVP (bandera mvp), MVD, bandera de unión (merge_flag), y/o índice de unión (merge_idx) y usar tal información para identificar información de movimiento usada para predecir un bloque actual. Es decir, como se ha indicado anteriormente con respecto al codificador 20 de vídeo, de acuerdo con aspectos de esta divulgación, la unidad 83 de predicción de inter capa puede recibir un índice de MVP (mvpflag) y MVD, y usar tal información para determinar un vector de movimiento usado para predecir un bloque actual. La unidad 83 de predicción de inter capa puede generar una lista de MVP o candidatos de unión. Los candidatos de MVP y/o de unión pueden incluir uno o más bloques de vídeo ubicados en una vista diferente de un bloque de vídeo que se está decodificando actualmente.
De acuerdo con aspectos de esta divulgación, la unidad 83 de predicción de inter capa puede realizar predicción residual inter capa. Por ejemplo, la unidad 83 de predicción de inter capa puede codificar datos residuales de una capa con relación a datos residuales de una segunda capa diferente. En algunos casos, la unidad 83 de predicción de inter capa puede determinar en primer lugar un bloque predictivo para predecir un bloque actual. El bloque predictivo para el bloque actual puede estar basado en muestras de una imagen de referencia temporal que están asociadas con una ubicación indicada por un vector de movimiento del bloque actual. La imagen de referencia temporal está asociada con la misma capa que la imagen actual, pero está asociada con una instancia de tiempo diferente que la imagen actual.
La unidad 83 de predicción de inter capa también determina un bloque de referencia de disparidad basándose en muestras de una imagen de referencia de disparidad que están en una ubicación indicada por un vector de disparidad del bloque actual. La imagen de referencia de disparidad está asociada con una capa diferente (es decir, una capa de referencia) de la imagen actual, pero está asociada con la misma instancia de tiempo que la imagen actual. La unidad 83 de predicción de inter capa también determina un bloque de referencia de disparidad temporal para el bloque actual. El bloque de referencia temporal está basado en muestras de una imagen de referencia de disparidad temporal que están asociadas con una ubicación indicada por el vector de movimiento del bloque actual y el vector de disparidad (por ejemplo, por la combinación del vector de movimiento y el vector de disparidad). Por lo tanto, la imagen de referencia de disparidad temporal está asociada con la misma vista que la imagen de referencia de disparidad y está asociada con la misma unidad de acceso que la imagen de referencia temporal.
La unidad 83 de predicción de inter capa a continuación determina un predictor residual para predecir el residual asociado con el bloque actual, por ejemplo, la diferencia entre el bloque actual y el bloque de referencia temporal. Cada muestra del predictor residual para el bloque actual indica una diferencia entre una muestra del bloque de referencia de disparidad y una correspondiente muestra del bloque de referencia de disparidad temporal. En algunos casos, la unidad 83 de predicción de inter capa puede aplicar un factor de ponderación (por ejemplo, 0, 0,5, 1 o similares) al predictor residual para aumentar la precisión del predictor residual.
La unidad 83 de predicción de inter capa puede obtener, del flujo de bits codificado, datos que indican un bloque residual final para el bloque actual. La unidad 83 de predicción de inter capa puede reconstruir el bloque actual combinando el bloque residual final, el bloque predictivo temporal y las muestras en el predictor residual.
De acuerdo con aspectos de esta divulgación, la unidad 83 de predicción de inter capa puede activar o desactivar la predicción residual de inter vista (que incluye la codificación del residual de una capa con relación al residual de una segunda capa diferente) basándose en las imágenes de referencia en listas de imágenes de referencia para el bloque que se está codificando actualmente. En un ejemplo, la unidad 83 de predicción de inter capa puede activar o desactivar la predicción residual de inter vista basándose en si la lista de imágenes de referencia para el bloque que se está codificando actualmente incluye alguna imagen de referencia temporal. De acuerdo con aspectos de esta divulgación, si las listas de imágenes de referencia para un bloque intra previsto incluyen únicamente imágenes de referencia de inter vista, la unidad 83 de predicción de inter capa puede desactivar la unidad 83 de predicción de inter capa. En algunos ejemplos, la unidad 83 de predicción de inter capa puede desactivar la unidad 83 de predicción de inter capa para cada bloque de un componente de vista de acceso aleatorio.
En otro ejemplo, cuando la lista o listas de imágenes de referencia del bloque de referencia de disparidad no incluyen una imagen de referencia en la misma vista que la imagen de referencia de disparidad que tiene el mismo POC que la imagen de referencia temporal, la unidad 83 de predicción de inter capa puede modificar la predicción residual de inter vista. La determinación de si modificar la predicción residual de inter vista puede estar basada en una o ambas de las listas de imágenes de referencia (por ejemplo, RefPicList0 y/o RefPicList1). Es decir, dado un índice de lista de imágenes de referencia actual X (siendo X 0 o 1), en un ejemplo, si la lista de imágenes de referencia con un índice de lista igual a X del bloque de referencia de disparidad no incluye una imagen de referencia en la misma vista que la imagen de referencia de disparidad y que tiene el mismo POC que la imagen de referencia temporal del bloque actual, la unidad 83 de predicción de inter capa puede modificar el proceso de ARP. En otro ejemplo, si ninguna de las listas de imágenes de referencia (por ejemplo, ni la lista 0 ni la lista 1) del bloque de referencia de disparidad incluye una imagen de referencia en la misma vista que la imagen de referencia de disparidad y que tiene el mismo POC que la imagen de referencia temporal del bloque actual, la unidad 83 de predicción de inter capa puede modificar el proceso de ARP.
En algunos casos, la unidad 83 de predicción de inter capa puede modificar la predicción residual de inter vista desactivando la predicción residual de inter vista. En otras instancias, la unidad 83 de predicción de inter capa puede modificar el proceso de predicción residual de inter vista escalando el vector de movimiento temporal para identificar otra imagen de referencia de disparidad temporal. Por ejemplo, la unidad 83 de predicción de inter capa puede escalar el vector de movimiento temporal de manera que, cuando se aplica a la imagen de referencia de disparidad, la combinación escalada del vector de movimiento y el vector de disparidad identifica una imagen de referencia de disparidad temporal que está incluida en la lista de imágenes de referencia y está en una ubicación temporalmente más cerca de la imagen de referencia de disparidad.
En aún otro ejemplo, de acuerdo con aspectos de esta divulgación, la unidad 83 de predicción de inter capa puede simplificar la manera en la que están ubicados los bloques de referencia, particularmente cuando se interpola una posición de sub-pel. Por ejemplo, la unidad 83 de predicción de inter capa puede usar un filtro de paso bajo, tal como un filtro bilineal, para interpolar la ubicación del bloque de referencia de disparidad. Adicionalmente o como alternativa, la unidad 83 de predicción de inter capa puede usar un filtro de paso bajo, tal como el filtro bilineal, para interpolar la ubicación del bloque de referencia de disparidad temporal. En otro ejemplo más, de acuerdo con aspectos de esta divulgación, la unidad 82 de compensación de movimiento puede usar un filtro de paso bajo, tal como el filtro bilineal, para interpolar la ubicación del bloque de referencia temporal.
En otro ejemplo más, de acuerdo con aspectos de esta divulgación, la unidad 83 de predicción de inter capa puede aplicar únicamente predicción residual de inter vista, y por lo tanto puede señalizar únicamente un factor de ponderación, para modos de codificación y/o modos de partición particulares. Por ejemplo, la unidad 83 de predicción de inter capa puede señalizar únicamente un factor de ponderación para cualquier bloque inter codificado con modo de partición desigual a PART_2Nx2N. En otro ejemplo, adicionalmente o como alternativa, la unidad 83 de predicción de inter capa puede no señalizar un factor de ponderación para cualquier bloque inter codificado con un modo de codificación desigual al modo de salto y/o al modo de unión.
La unidad 86 de cuantificación inversa cuantifica a la inversa, es decir, descuantifica, los coeficientes de transformada cuantificados proporcionados en el flujo de bits y decodificados por la unidad 80 de decodificación por entropía. El proceso de cuantificación inversa puede incluir el uso de un parámetro de cuantificación calculado por el codificador 20 de vídeo para cada bloque de vídeo en el corte de vídeo para determinar un grado de cuantificación y, análogamente, un grado de cuantificación inversa que debe aplicarse.
La unidad 88 de procesamiento de transformada inversa aplica una transformada inversa, por ejemplo, una DCT inversa, una transformada de enteros inversa o un proceso de transformada inversa conceptualmente similar, a los coeficientes de transformada para producir bloques residuales en el dominio de los píxeles. De acuerdo con los aspectos de esta divulgación, la unidad 88 de procesamiento de transformada inversa puede determinar la manera en la que se aplicaron las transformadas a los datos residuales. Es decir, por ejemplo, la unidad 88 de procesamiento de transformada inversa puede determinar un RQT que representa la manera en la que se aplicaron las transformadas (por ejemplo, DCT, transformada de números enteros, transformada de ondícula o una o más otras transformadas) a las muestras de luma residuales y las muestras de croma residuales asociadas con un bloque de datos de vídeo recibidos.
Después de que la unidad 82 de compensación de movimiento genera el bloque predictivo para el bloque de vídeo actual basándose en los vectores de movimiento y otros elementos de sintaxis, el decodificador 30 de vídeo forma un bloque de vídeo decodificado sumando los bloques residuales de la unidad 88 de procesamiento de transformada inversa con los correspondientes bloques predictivos generados por la unidad 82 de compensación de movimiento. El sumador 90 representa el componente o componentes que realizan esta operación de suma. Si se desea, puede aplicarse también un filtro de desbloqueo para filtrar los bloques decodificados para eliminar artefactos de bloqueo. Pueden usarse también otros filtros de bucle (en el bucle de codificación o después del bucle de codificación) para suavizar las transiciones de píxel, o mejorar de otra manera la calidad de vídeo. Los bloques de vídeo decodificados en una imagen dada se almacenan a continuación en la memoria 92 de imagen de referencia, que almacena imágenes de referencia usadas para compensación de movimiento posterior. La memoria 92 de imagen de referencia también almacena vídeo decodificado para su presentación posterior en un dispositivo de visualización, tal como el dispositivo 32 de visualización de la Figura 1.
La Figura 4 es un diagrama conceptual que ilustra un orden de decodificación de múltiples vistas ilustrativo. El orden de decodificación de múltiples vistas 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 cuadrados corresponden a unidades de acceso. Cada unidad de acceso puede definirse que contiene las imágenes codificadas de todas las vistas de una instancia de tiempo. Las filas de cuadrados corresponden a las vistas. En el ejemplo de la Figura 4, las unidades de acceso se etiquetan T0...T11 y las vistas se etiquetan 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 como codificación de primera vez. El orden de decodificación de las unidades de acceso puede no ser idéntico al orden de salida o de visualización.
La codificación de múltiples vistas puede soportar predicción de inter vista. La predicción de inter vista es similar a la inter predicción usada en H.264/AVC, HEVC, u otras especificaciones de codificación de vídeo y puede usar los mismos elementos de sintaxis. Sin embargo, cuando un codificador de vídeo realiza predicción de inter vista en una unidad de vídeo actual (tal como un macrobloque o PU), el codificador de vídeo puede usar, como una imagen de referencia, una imagen que está en la misma unidad de acceso que la unidad de vídeo actual, pero en una vista diferente. En contraste, la inter predicción convencional únicamente usa imágenes en diferentes unidades de acceso que las imágenes de referencia.
La Figura 5 es un diagrama conceptual que ilustra un patrón de predicción de MVC de ejemplo que puede usarse con MVC, HEVC de múltiples vistas y 3D-HEVC (múltiples vistas más profundidad). Las referencias a m Vc a continuación se aplican a MVC en general, y no están restringidas a H.264/MVC.
En el ejemplo de la Figura 5, se ilustran ocho vistas (S0-S7), se ilustran doce ubicaciones temporales (T0-T11) para cada vista. En general, cada fila en la Figura 5 corresponde a una vista, mientras que cada columna indica una ubicación temporal. Cada una de las vistas puede identificarse usando un identificador de vista ("view_id"), que puede usarse para indicar una ubicación de cámara relativa con respecto a las otras vistas. En el ejemplo mostrado en la Figura 5, los ID de vista se indican como "SO" a "S7", aunque pueden usarse también ID de vista numéricos. Además, puede identificarse cada una de las ubicaciones temporales usando un valor de recuento de orden de imagen (POC), que indica un orden de visualización de las imágenes. En el ejemplo mostrado en la Figura 5, los valores de POC se indican como "TO" a "T11".
Aunque un flujo de bits codificado de múltiples vistas puede tener una denominada vista de base que puede decodificarse por decodificares particulares y puede soportarse un par de vistas estéreo, algunos flujos de bits de múltiples vistas pueden soportar más de dos vistas como una entrada de vídeo en 3D. Por consiguiente, un representador de un cliente que tiene un decodificador particular puede esperar contenido de vídeo en 3D con múltiples vistas.
Las imágenes en la Figura 5 se indican usando un bloque sombreado que incluye una letra, que designa si la correspondiente imagen está intra codificada (es decir, un fotograma I), o inter codificada en una dirección (es decir, como un fotograma P) o en múltiples direcciones (es decir, como un fotograma B). En general, las predicciones se indican por flechas donde la imagen apuntada usa el objeto de punto de referencia como referencia de predicción. Por ejemplo, se predice el fotograma P de la vista S2 en la ubicación temporal T0 a partir del fotograma I de la vista S0 en la ubicación temporal T0.
Al igual que la codificación de vídeo de única vista, las imágenes de una secuencia de vídeo de múltiples vistas pueden codificarse predictivamente con respecto a imágenes en diferentes ubicaciones temporales. Por ejemplo, el fotograma b de la vista S0 en la ubicación temporal T1 tiene una flecha apuntando hacia él desde el fotograma I de la vista S0 en la ubicación temporal T0, que indica que se predice el fotograma b a partir del fotograma I. Sin embargo, adicionalmente, en el contexto de codificación de vídeo de múltiples vistas, las imágenes pueden predecirse por inter vista. Es decir, un componente de vista puede usar los componentes de vista en otras vistas para referencia. Por ejemplo, puede realizarse predicción de inter vista como si el componente de vista en otra vista fuera una referencia de inter predicción. Las referencias de inter vista potenciales pueden señalizarse en la extensión de MVC del Conjunto de Parámetros de Secuencia (SPS) y pueden modificarse por el proceso de construcción de la lista de imágenes de referencia, lo que posibilita ordenación flexible de la inter predicción o las referencias de predicción de inter vista.
La Figura 5 proporciona diversos ejemplos de predicción de inter vista. Las imágenes de la vista S1, en el ejemplo de la Figura 5, se ilustran como prediciéndose a partir de imágenes en diferentes ubicaciones temporales de la vista S1, así como, se predicen por inter vista a partir de imágenes de las imágenes de las vistas s 0 y S2 en las mismas ubicaciones temporales. Por ejemplo, se predice el fotograma b de la vista S1 en la ubicación temporal T1 desde cada uno de los fotogramas B de la vista S1 en las ubicaciones temporales T0 y T2, así como, los fotogramas b de las vistas S0 y S2 en la ubicación temporal T1.
En el ejemplo de la Figura 5, la "B" mayúscula y la "b" minúscula se pretende que indiquen diferentes relaciones jerárquicas entre imágenes, en lugar de diferentes metodologías de codificación. En general, los fotogramas de la "B" mayúscula son relativamente superiores en la jerarquía de predicción que los fotogramas de la "b" minúscula. La Figura 5 también ilustra variaciones en la jerarquía de predicción usando diferentes niveles de sombreado, donde imágenes con una mayor cantidad de sombreado (es decir, relativamente más oscuras) son superiores en la jerarquía de predicción que aquellas imágenes que tienen menos sombreado (es decir, relativamente más claras). Por ejemplo, se muestran todos los fotogramas I en la Figura 5 con sombreado total, mientras que los fotogramas P tienen, en cierto modo, sombreado más claro, y los fotogramas B (y los fotogramas b en minúsculas) tienen diversos niveles de sombreado con relación entre sí, pero siempre más claros que el sombrado de los fotogramas P y los fotogramas I.
En general, la jerarquía de predicción está relacionada con los índices de orden de vista, en que las imágenes relativamente superiores en la jerarquía de predicción deben decodificarse antes de decodificar imágenes que son relativamente inferiores en la jerarquía, de manera que estas imágenes relativamente superiores en la jerarquía pueden usarse como imágenes de referencia durante la decodificación de las imágenes relativamente inferiores en la jerarquía. Un índice de orden de vista es un índice que indica el orden de decodificación de componentes de vista en una unidad de acceso. Los índices de orden de vista pueden verse implicados en un conjunto de parámetros, tal como un SPS.
De esta manera, pueden decodificarse las imágenes usadas como imágenes de referencia antes de decodificar las imágenes que se codifican con referencia a las imágenes de referencia. Un índice de orden de vista es un índice que indica el orden de decodificación de componentes de vista en una unidad de acceso. Para cada índice de orden de vista i, se señaliza el correspondiente id de vista. La decodificación de los componentes de vista sigue el orden ascendente de los índices de orden de vista. Si se presentan todas las vistas, entonces el conjunto de índices de orden de vista comprende un conjunto consecutivamente ordenado desde cero a uno menos del número total de vistas.
Puede extraerse un subconjunto de un flujo de bits total para formar un subflujo de bits conforme. Hay muchos posibles subflujos de bits que pueden requerir las aplicaciones específicas, basándose en, por ejemplo, un servicio proporcionado por un servidor, la capacidad, soporte y capacidades de los decodificadores de uno o más clientes, y/o la preferencia de uno o más clientes. Por ejemplo, un cliente puede requerir únicamente tres vistas y puede haber dos escenarios. En un ejemplo, un cliente puede requerir una experiencia de visualización suave y puede preferir vistas con valores de view_id S0, S1 y S2, mientras que otro cliente puede requerir escalabilidad de vista y preferir vistas con valores de view_id S0, S2 y S4. Obsérvese que ambos de estos subflujos de bits pueden decodificarse como flujos de bits independientes y pueden soportarse simultáneamente.
Con respecto a predicción de inter vista, se permite la predicción de inter vista entre imágenes en la misma unidad de acceso (es decir, con la misma instancia de tiempo). Cuando se codifica una imagen en una de las vistas no de base, puede añadirse una imagen en una lista de imágenes de referencia, si se encuentra en una vista diferente, pero con una misma instancia de tiempo. Una imagen de referencia de predicción de inter vista puede ponerse en cualquier posición de una lista de imágenes de referencia, simplemente como cualquier inter predicción imagen de referencia.
Por lo tanto, en el contexto de codificación de vídeo de múltiples vistas, hay 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 inter predicción que corresponde a un vector de movimiento temporal normal puede denominarse como predicción de movimiento compensado (MCP). Cuando se usa una imagen de referencia de predicción de inter vista para compensación de movimiento, el correspondiente vector de movimiento se denomina como un "vector de movimiento de disparidad". En otras palabras, un vector de movimiento de disparidad apunta a una imagen en una vista diferente (es decir, una imagen de referencia de disparidad o una imagen de referencia de inter vista). El tipo de inter predicción que corresponde a un vector de movimiento de disparidad puede denominarse como "predicción de disparidad compensada" o "DCP".
Como se ha mencionado anteriormente, una extensión de múltiples vistas de HEVC (es decir, MV-HEVC) y una extensión 3DV de HEVC (es decir, 3DHEVC) se encuentran bajo desarrollo. MV-HEVC y 3D-HEVC pueden mejorar la eficacia de codificación usando predicción de movimiento de inter vista y predicción residual de inter vista. En predicción de movimiento de inter vista, 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 una vista diferente de la PU actual. En predicción residual de inter vista, un codificador de vídeo puede determinar bloques residuales de una CU actual basándose en datos residuales en una vista diferente de la Cu actual usando la estructura de predicción mostrada en la Figura 5.
Para posibilitar la predicción de movimiento de inter vista y la predicción residual de inter vista, un codificador de vídeo puede determinar vectores de disparidad para bloques (por ejemplo, las PU, las CU, etc.). En general, se usa un vector de disparidad como un estimador del desplazamiento entre dos vistas. Un codificador de vídeo, tal como el codificador 20 de vídeo o el decodificador 30 de vídeo, puede usar un vector de disparidad para un bloque para ubicar un bloque de referencia (que puede denominarse en el presente documento como un bloque de referencia de disparidad) en otra vista para predicción de movimiento de inter visa o residual, o el codificador de vídeo puede convertir el vector de disparidad en un vector de movimiento de disparidad para predicción de movimiento de inter vista.
La Figura 6 es un diagrama conceptual que ilustra codificación de vídeo escalable. Aunque se describe la Figura 6 con respecto a H.264/AVC y SVC, debería entenderse que pueden codificarse capas similares usando otros esquemas de codificación de vídeo de múltiples capas, incluyendo HSVC. En otro ejemplo, pueden codificarse capas similares usando un códec de múltiples normas. Por ejemplo, puede codificarse una capa base usando H.264/AVC, mientras que puede codificarse una capa de mejora usando una extensión únicamente de HLS escalable para HEVC. Por lo tanto, las referencias a SVC a continuación pueden aplicarse a codificación de vídeo escalable en general, y no están restringidas a H.264/SVC.
En SVC, pueden posibilitarse las escalabilidades en tres dimensiones que incluyen, por ejemplo, espacial, temporal y de calidad (representadas como una tasa de bits o una relación de señal a ruido (SNR)). En general, puede conseguirse normalmente mejor representación añadiendo una representación en cualquier dimensión. Por ejemplo, en el ejemplo de la Figura 6, se codifica la capa 0 en Formato Intermedio Común de un Cuarto (QCIF) que tiene una tasa de fotogramas de 7,5 Hz y una tasa de bits de 64 kilobytes por segundo (KBPS). Además, se codifica la capa 1 a QCIF que tiene una tasa de fotogramas de 15 Hz y una tasa de bits de 64 KBPS, se codifica la capa 2 a CIF que tiene una tasa de fotogramas de 15 Hz y una tasa de bits de 256 KBPS, se codifica la capa 3 a QCIF que tiene una tasa de fotogramas de 7,5 Hz y una tasa de bits de 512 KBPS, y se codifica la capa 4 en 4CIF que tiene una tasa de fotogramas de 30 Hz y una tasa de bits de Megabyte por segundo (MBPS). Debería entenderse que se proporciona el número, contenidos y disposición particulares de las capas mostradas en la Figura 5 para los propósitos de ejemplo únicamente.
En cualquier caso, una vez que un codificador de vídeo (tal como el codificador 20 de vídeo) ha codificado contenido en una manera escalable de este tipo, un decodificador de vídeo (tal como el decodificador 30 de vídeo) puede usar una herramienta extractora para adaptar el contenido entregado real de acuerdo con requisitos de aplicación, que pueden depender, por ejemplo, del cliente o del canal de transmisión.
En SVC, las imágenes que tienen la capa espacial y de calidad más baja son típicamente compatibles con H.264/AVC. En el ejemplo de la Figura 6, las imágenes con la capa espacial y de calidad más baja (las imágenes en la capa 0 y en la capa 1, con resolución QCIF) pueden ser compatibles con H.264/AVC. Entre ellas, aquellas imágenes del nivel temporal más bajo forman la capa de base temporal (capa 0). Esta capa de base temporal (capa 0) puede mejorarse con imágenes de niveles temporales superiores (capa 1).
Además de la capa compatible con H.264/AVC, pueden añadirse varias capas espaciales y/o de mejora de calidad para proporcionar escalabilidades espaciales y/o de calidad. Cada capa espacial o de mejora de calidad en sí misma puede ser temporalmente escalable, con la misma estructura de escalabilidad temporal que la capa compatible con H.264/AVC.
Aunque puede describirse la predicción residual de inter vista con respecto a "vistas" de datos de vídeo, debería entenderse que pueden aplicarse técnicas similares a múltiples capas de datos, tales como capas de la estructura escalable mostrada en la Figura 6. Por ejemplo, un codificador de vídeo (tal como el codificador 20 de vídeo y/o el decodificador 30 de vídeo) puede predecir el residual de una capa usando otra capa. En algún caso, las técnicas pueden implementarse con una extensión escalable de HEVC, tal como HSVC.
En particular, como se describe en mayor detalle a continuación, el codificador 20 de vídeo puede señalizar factores de ponderación para las CU únicamente para ciertos modos de partición de codificación y/o para ciertos modos de codificación. Cuando no se señaliza un factor de ponderación, el decodificador 30 de vídeo puede omitir la decodificación de un factor de ponderación y determinar automáticamente (es decir, inferir) que el factor de ponderación es cero.
En un ejemplo, puede no señalizarse el factor de ponderación para una CU inter codificada con modo de partición desigual a PART_2Nx2N. En un ejemplo alternativo, puede no señalizarse el factor de ponderación para una CU inter codificada con modo de partición desigual a PART_2Nx2N, PART_2NxN y PART_Nx2N. En otro ejemplo más, adicionalmente o como alternativa, puede no señalizarse el factor de ponderación para cualquier CU inter codificada con modo de codificación desigual para la omisión y/o unión.
De acuerdo con otros aspectos, el codificador de vídeo puede modificar los factores de ponderación. Por ejemplo, puede señalizarse un indicador en un nivel de secuencia para desactivar uno o más factores de ponderación (por ejemplo, 0,5 y/o 1). En algunos ejemplos, el indicador puede señalizarse en una extensión de VPS para cada vista no de base. En otros ejemplos, el indicador puede señalizarse en un VPS y puede ser aplicable para todas las vistas no de base. En otros ejemplos más, el indicador puede señalizarse en un conjunto de parámetros de imagen (PPS), encabezado de corte o conjunto de parámetros de vista.
En otro ejemplo, puede señalizarse un indicador para modificar uno o más de los factores de ponderación. Por ejemplo, el indicador puede provocar que el decodificador 30 de vídeo sustituya un factor de ponderación inicial (por ejemplo, 0,5) por un nuevo factor de ponderación (por ejemplo, 0,75). Este indicador de modificación puede señalizarse en un PPS, un encabezado de corte o un VPS.
De acuerdo con otros aspectos más, el codificador de vídeo puede activar o desactivar ARP basándose en las imágenes de una memoria intermedia de imagen decodificada y/o listas de imágenes de referencia para codificar una imagen en la estructura escalable mostrada en la Figura 6. Por ejemplo, cuando una memoria intermedia de imagen decodificada para codificar una PU actual no incluye una imagen en la misma vista que la imagen de referencia de disparidad que tiene el mismo POC que la imagen de referencia temporal, un codificador de vídeo puede modificar el proceso de ARP para la PU.
En otro ejemplo, adicionalmente/como alternativa, cuando una o ambas de las listas de imágenes de referencia del bloque de referencia de disparidad no incluye una imagen de referencia en la misma vista que la imagen de referencia de disparidad que tiene el mismo POC que la imagen de referencia temporal, un codificador de vídeo puede modificar el proceso de ARP para la PU.
En algunos ejemplos, el codificador de vídeo puede modificar el proceso de ARP desactivando el proceso de ARP, de manera que la PU actual no se codifica usando ARP. En otros ejemplos, el codificador de vídeo puede modificar el proceso de ARP escalando el vector de movimiento temporal para identificar otra imagen de referencia de disparidad temporal disponible.
La Figura 7 es un diagrama conceptual que ilustra PU espacialmente vecinas ilustrativas con relación a una PU 100 actual, que pueden usarse para determinar un vector de disparidad para la PU 100 actual. En el ejemplo de la Figura 7, las PU espacialmente vecinas pueden ser las PU que cubren las ubicaciones indicadas como A0 , A1, B0 , B1 y B2.
Como se ha indicado anteriormente, un codificador de vídeo (tal como el codificador 20 de vídeo o el decodificador 30 de vídeo) puede realizar predicción de movimiento de inter vista y/o predicción residual de inter vista. Para posibilitar estas dos herramientas de codificación, la primera etapa es derivar un vector de disparidad.
En algunos ejemplos, el codificador de vídeo puede usar el método de vector de disparidad basado en bloques vecinos (NBDV) para derivar un vector de disparidad para un bloque. Por ejemplo, para derivar un vector de disparidad para la PU, puede usarse un proceso llamado NBDV en un modelo de prueba para 3D-HEVC (es decir, 3D-HTM). El proceso de NBDV usa vectores de movimiento de disparidad de bloques vecinos espaciales y temporales (tales como las PU vecinas A0 , A1, B0 , B1, y B2) para derivar el vector de disparidad para un bloque actual. Debido a que los bloques vecinos (por ejemplo, bloques que son vecinos espacial o temporalmente al 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 usar la información del vector de movimiento en los bloques vecinos como predictores del vector de disparidad del bloque actual.
Cuando un codificador de vídeo realiza el proceso de NBDV, el codificador de vídeo puede comprobar, en un orden de comprobación fijo, vectores de movimiento de bloques espacialmente vecinos y temporalmente vecinos. Cuando el codificador de vídeo comprueba el vector o vectores de movimiento del bloque espacialmente vecino o temporalmente vecino, el codificador de vídeo puede determinar si el vector o vectores de movimiento del bloque espacialmente vecino o temporalmente vecino son vectores de movimiento de disparidad. Un vector de movimiento de disparidad de un bloque de una imagen es un vector de movimiento que apunta a una ubicación dentro de una imagen de referencia de disparidad de la imagen.
Una imagen de referencia de disparidad de una imagen dada puede ser una imagen que está asociada con la misma unidad de acceso que la imagen dada, pero está asociada con una vista diferente de la imagen dada. Cuando el codificador de vídeo identifica un vector de movimiento de disparidad, el codificador de vídeo puede terminar el proceso de comprobación. El codificador de vídeo puede convertir el vector de movimiento de disparidad devuelto en un vector de disparidad y puede usar el vector de disparidad para predicción de movimiento de inter vista y predicción residual de inter vista. Por ejemplo, el codificador de vídeo puede establecer un componente horizontal del vector de disparidad para el bloque actual igual a un componente horizontal del vector de movimiento de disparidad y puede establecer el componente vertical del vector de disparidad a 0.
Si el codificador de vídeo no puede derivar un vector de disparidad para el bloque actual (es decir, si no se halla vector de disparidad) realizando el proceso de NBDV, el codificador de vídeo puede usar un vector de disparidad cero como el vector de disparidad para el bloque actual. El vector de disparidad cero es un vector de disparidad que tiene ambos componentes horizontal y vertical iguales a 0. Por lo tanto, incluso cuando el proceso de NBDV devuelve un resultado no disponible, otros procesos de codificación del codificador de vídeo que requieren un vector de disparidad pueden usar un vector de disparidad cero para el bloque actual.
En algunos ejemplos, si el codificador de vídeo no puede derivar un vector de disparidad para el bloque actual realizando el proceso de NBDV, el codificador de vídeo puede desactivar la predicción residual de inter vista para el bloque actual. Sin embargo, independientemente de si el codificador de vídeo puede derivar un vector de disparidad para el bloque actual realizando el proceso de NBDV, el codificador de vídeo puede usar predicción de movimiento de inter vista para la PU actual. Es decir, si no se halla vector de disparidad después de comprobar todos los bloques vecinos predefinidos, puede usarse un vector de disparidad cero para predicción de movimiento de inter vista mientras que puede desactivarse la predicción residual de inter vista para la correspondiente CU.
Como se ha indicado anteriormente, pueden usarse cinco bloques vecinos espaciales para la derivación del vector de disparidad, que incluyen, por ejemplo, las PU indicadas por Ac, A1, B0, B1 o B2. Además, pueden usarse uno o más bloques vecinos temporales para la derivación de vector de disparidad. En este caso, todas las imágenes de referencia de la vista actual se tratan como imágenes candidatas. El número de imágenes candidatas puede restringirse adicionalmente a, por ejemplo, cuatro imágenes de referencia. Se comprueba en primer lugar una imagen de referencia coubicada y se comprueban el resto de imágenes candidatas en el orden ascendente del índice de referencia (refIdx). Cuando están disponibles tanto RefPicList0[refIdx] como RefPicListl [refIdx], RefPicListX[refIdx] precede la otra imagen, donde X es igual a collocated_from_10_flag.
Para cada imagen candidata, se determinan tres regiones candidatas para derivar los bloques vecinos temporales. Cuando una región cubre más de un bloque de 16x16, todos los bloques de 16x16 en una región de este tipo se comprueban en orden de exploración por filas. Las tres regiones candidatas se definen como sigue: CPU (la región coubicada de la PU actual o CU actual), CLCU (la unidad de codificación más grande (LCU) que cubre la región coubicada de la PU actual), y BR (el bloque de 4x4 inferior derecha de la CPU).
El codificador de vídeo puede comprobar los bloques vecinos espaciales y/o temporales para un vector de disparidad en un orden particular. En algunos casos, el codificador de vídeo puede comprobar los bloques vecinos espaciales (A0 , A1, B0 , B1, y B2) en primer lugar, seguido por los bloques vecinos temporales. Si uno de los bloques espacialmente vecinos 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 usar el vector de movimiento de disparidad como el vector de disparidad final para la PU actual.
El codificador de vídeo puede comprobar cada una de las regiones candidatas de una imagen candidata. En un ejemplo, si la imagen candidata está en una primera vista no de base, el codificador de vídeo puede comprobar las regiones candidatas en el orden de CPU, CLCu y BR. En este ejemplo, si la imagen candidata está en una segunda vista no de base, el codificador de vídeo puede comprobar las regiones candidatas en el orden de BR, CPU, CLCU.
En este ejemplo, la decodificación de las 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 con imágenes asociadas con otras vistas. Adicionalmente, en este ejemplo, la decodificación de imágenes asociadas con la segunda vista no de base puede depender únicamente de la decodificación de imágenes asociadas con la vista de base. En otros ejemplos, la decodificación de imágenes asociadas con la segunda vista no de base puede depender adicionalmente de la primera vista no de base, pero no para imágenes asociadas con otras vistas, si están presentes.
Cuando una región candidata cubre más de un bloque de 16x16, el codificador de vídeo puede comprobar todos los bloques de 16x16 en la región candidata de acuerdo con un orden de exploración por filas. Cuando el codificador de vídeo comprueba una región candidata (o un bloque de 16x16 dentro de una región candidata), el codificador de vídeo puede determinar si una PU que cubre la región candidata especifica un vector de movimiento de disparidad. Si la PU que cubre la región candidata especifica un vector de movimiento de disparidad, el codificador de vídeo puede determinar el vector de disparidad de la unidad de vídeo actual basándose en el vector de movimiento de disparidad de la PU.
Puede aplicarse predicción de movimiento de inter vista tanto a los modos de AMVP como de unión. Por ejemplo, como se ha indicado anteriormente, se ha extendido el modo AMVP de una manera que se añade un predictor de vector de movimiento de inter vista a una lista de candidatos. Basándose en el vector de disparidad derivado de NBDV, el codificador de vídeo determina un bloque de referencia en una vista de referencia añadiendo el vector de disparidad y la posición de la muestra media del bloque actual. Si el índice de referencia para el bloque actual hace referencia a una imagen de referencia de inter vista, el codificador de vídeo puede establecer el predictor de vector de movimiento de inter vista igual al correspondiente vector de disparidad. Si el índice de referencia actual hace referencia a una imagen de referencia temporal y el bloque de referencia usa una hipótesis de movimiento que hace referencia a la misma unidad de acceso que el índice de referencia actual, el codificador de vídeo puede usar el vector de movimiento que está asociado con esta hipótesis de movimiento como un predictor de vector de movimiento de inter vista. En otros casos, el codificador de vídeo puede marcar el predictor de vector de movimiento de inter vista como inválido y el codificador de vídeo puede no incluir el vector de movimiento en la lista de candidatos de predictor de vector de movimiento.
Con respecto al modo de unión/salto, se amplía la lista de candidatos de parámetros de movimiento por un conjunto de parámetros de movimiento que se obtiene usando predicción de movimiento de inter vista. Por ejemplo, el codificador de vídeo puede derivar un candidato de vector de movimiento del bloque de referencia en la vista de referencia de la misma manera que el modo AMVP anteriormente indicado. Si el vector de movimiento derivado es válido y su imagen de referencia tiene un valor de recuento de orden de imagen (POC) igual al de una entrada en la lista de imágenes de referencia de la PU/CU actual, puede añadirse la información de movimiento (dirección de predicción, imágenes de referencia y vectores de movimiento) a la lista de candidatos de unión después de convertir el índice de referencia basándose en el POC. Un candidato de este tipo puede denominarse como un vector de movimiento previsto de inter vista. De otra manera, el vector de disparidad se convierte a un vector de movimiento de disparidad de inter vista, que puede añadir el codificador de vídeo en la lista de candidatos de unión, en la misma posición que un vector de movimiento previsto de inter vista cuando está disponible.
De una manera similar que para la predicción de movimiento de inter vista, la predicción residual de inter vista está basada en un vector de disparidad para cada CU, como se describe en mayor detalle con respecto a las Figuras 8 y 9 a continuación.
La Figura 8 es un diagrama conceptual que ilustra una estructura de predicción de ejemplo de codificación de vídeo de múltiples vistas. Como un ejemplo, un codificador de vídeo (tal como el codificador 20 de vídeo o el decodificador 30 de vídeo) puede codificar un bloque en la vista V1 en el tiempo Te prediciendo el bloque usando el bloque Pe en la vista V1 en el tiempo To. El codificador de vídeo puede restar los valores de píxel originales del bloque actual de Pe, obteniendo de esta manera las muestras residuales del bloque actual.
Además, el codificador de vídeo puede ubicar un bloque de referencia en la vista de referencia (vista V0) por el vector 104 de disparidad. Las diferencias de los valores de muestra originales del bloque de referencia Ib y sus muestras previstas Pb se denominan las muestras residuales del bloque de referencia, como se indica por rb en la ecuación a continuación. En algunos ejemplos, el codificador de vídeo puede restar rb del residual actual y únicamente transformar en código la señal de diferencia resultante. Por lo tanto, cuando se usa predicción residual de inter vista, el bucle de compensación de movimiento puede expresarse por la siguiente ecuación:
Figure imgf000031_0001
donde la reconstrucción del bloque actual íe equivale a los coeficientes descuantificados re más predicción Pe y coeficientes residuales normalizados de cuantificación rb. Los codificadores de vídeo pueden tratar rb como el predictor residual. Por lo tanto, similar a la compensación de movimiento, puede restarse rb del residual actual y únicamente se codifica por transformada la señal de diferencia resultante.
El codificador de vídeo puede señalizar condicionalmente una bandera para indicar el uso de predicción residual de inter vista en una base por CU. Por ejemplo, el codificador de vídeo puede atravesar todas las unidades de transformada (TU) cubiertas o parcialmente cubiertas por la región de referencia residual. Si alguna de estas TU están inter codificadas y contienen un valor de bandera de bloque codificado (CBF) distinto de cero (CBF de luma o CBF de croma), el codificador de vídeo puede marcar la referencia residual relacionada como disponible y el codificador de vídeo puede aplicar predicción residual. En este caso, el codificador de vídeo puede señalizar una bandera que indica el uso de predicción residual de inter vista como parte de la sintaxis de la CU. Si esta bandera es igual a 1, la señal residual actual se predice usando la señal residual de referencia potencialmente interpolada y únicamente se transmite la diferencia usando codificación de transformada. De otra manera, se codifica de manera convencional el residual del bloque actual usando la codificación de transformada de HEVC.
La Solicitud Provisional de Estados Unidos N.° 61/670.075, presentada el 10 de julio de 2012, y la Solicitud Provisional de Estados Unidos N.° 61/706.692, presentada el 27 de septiembre 2012, proponen una predicción residual generalizada (GRP) para codificación de vídeo escalable. Aunque estas solicitudes de patente provisionales se centran en la codificación de vídeo escalable, las técnicas de GRP descritas en estas solicitudes de patente provisionales pueden ser aplicables a codificación de vídeo de múltiples vistas (por ejemplo, MV-HEVC y 3D-HEVC).
La idea general de GRP puede formularse, en el contexto de uni-predicción, como:
Ic = rc Pc w * rr,
En la fórmula anterior, Ic indica la reconstrucción de un fotograma actual en una capa (o vista) actual, Pc representa una predicción temporal de la misma capa (o vista), re indica un residual señalizado, rr indica una predicción de residual de una capa de referencia, y w es un factor de ponderación. En algunos ejemplos, puede ser necesario que se codifique el factor de ponderación en un flujo de bits o se derive basándose en información previamente codificada. Esta estructura para GRP puede aplicarse en casos tanto de decodificación de único bucle como en decodificación de múltiples bucles. La decodificación de múltiples bucles implica una versión no restringida de predicción de un bloque que usa la señal de resolución reconstruida y submuestreada inferior. Para decodificar un bloque en una capa de mejora, puede ser necesario que se acceda a múltiples bloques en capas anteriores.
Por ejemplo, cuando el decodificador 30 de vídeo usa decodificación de múltiples bucles, puede formularse adicionalmente GRP como:
Ic = rc Pc w * (Ir - Pr),
En la fórmula anterior, Pr indica la predicción temporal para la imagen actual en la capa de referencia, Pe representa una predicción temporal de la misma capa (o vista), re indica un residual señalizado, w es un factor de ponderación, y Ir indica la reconstrucción total de la imagen actual en la capa de referencia.
Las fórmulas anteriores incluyen un factor de ponderación que puede señalizarse en un flujo de bits o derivarse basándose en información previamente codificada. En algunos ejemplos, el codificador 20 de vídeo puede señalizar, en un flujo de bits, en una base CU a CU, índices de ponderación usados en GRP. Cada índice de ponderación puede corresponder a un factor de ponderación que es mayor o igual que 0. Cuando un factor de ponderación para una CU actual es igual a 0, se codifica el bloque residual de la CU actual usando codificación de transformada de HEVC convencional. De otra manera, cuando el factor de ponderación para la CU actual es mayor que 0, la señal residual actual (es decir, el bloque residual para la CU actual) puede predecirse usando una señal residual de referencia multiplicada por el factor de ponderación y únicamente se transmite la diferencia usando la codificación de transformada. En algunos ejemplos, se interpola la señal residual de referencia.
L. Zhang etal., "3D-CE5.h related: Advanced residual prediction for multiview coding", Equipo Colaborativo Mixto sobre el desarrollo de extensión de codificación de vídeo en 3D de la ITU-T SG 16 WP 3 e IsO/IEC JTC 1/SC 29/WG 11, 2a reunión: Shanghai, CN, 13-19 de octubre de 2012, documento JCT3V-B0051 (en lo sucesivo, "JCT3V-B0051"), propone un método de predicción residual avanzado (ARP) para mejorar adicionalmente la eficacia de codificación de la predicción residual de inter vista. En algunos casos, puede realizarse la ARP en un nivel de PU en lugar de un nivel de CU. Para distinguir el esquema de predicción residual anteriormente descrito a partir de ARP, el esquema de predicción residual anteriormente descrito puede denominarse como "predicción residual de inter vista basada en CU".
La Figura 9 es un diagrama conceptual que ilustra una estructura de predicción de ejemplo de ARP en codificación de vídeo de múltiples vistas. La Figura 6 incluye cuatro imágenes: una imagen 110 actual, una imagen 112 de referencia temporal, una imagen 114 de referencia de disparidad y una imagen 116 de referencia de disparidad temporal. La imagen 110 actual está asociada con la vista V1 y está asociada con la instancia de tiempo Tj. La imagen 112 de referencia temporal está asociada con la vista V1 y está asociada con la instancia de tiempo Ti. La imagen 114 de referencia de disparidad está asociada con la vista V0 y está asociada con la instancia de tiempo Tj. La imagen 116 de referencia de disparidad temporal está asociada con la vista V0 y está asociada con la instancia de tiempo Ti.
La imagen 110 actual incluye una PU actual indicada como "Dc". En otras palabras, Dc representa un bloque actual en una vista actual (vista 1). Dc tiene un vector de movimiento temporal Vd que indica una ubicación en la imagen 112 de referencia temporal. El codificador 20 de vídeo puede determinar un bloque de referencia temporal Dr basándose en muestras en la imagen 112 que están asociadas con la ubicación indicada por el vector de movimiento temporal Vd. Por lo tanto, Dr indica el bloque de predicción temporal de De de la misma vista (vista 1) en el tiempo Ti y Vd indica el movimiento de Dc a Dr.
Adicionalmente, el codificador 20 de vídeo puede determinar un bloque de referencia de disparidad Bc basándose en muestras en la imagen 114 de referencia de disparidad que están asociadas con una ubicación indicada por un vector de disparidad de Dc. Por lo tanto, Bc indica un bloque de referencia (es decir, la representación de Dc en la vista de referencia (vista 0) en el tiempo Tj). La posición superior-izquierda de Bc puede calcularse con el vector de disparidad determinado añadiendo el vector de disparidad determinado a la posición superior-izquierda de Dc. Puesto que Dc y Bc pueden ser proyecciones del mismo objeto en dos vistas diferentes, Dc y Bc deben compartir la misma información de movimiento. Por lo tanto, el bloque de predicción temporal de Be, Br, en la vista 0 en el tiempo Ti puede ubicarse desde Bc aplicando la información de movimiento de Vd.
El codificador 20 de vídeo puede determinar un bloque de referencia de disparidad temporal Br (el bloque predictivo de Bc) en la imagen 116 de disparidad temporal. Como se ha indicado anteriormente, la imagen 116 de disparidad temporal está asociada con la misma vista (es decir, la vista V0) que Br y está asociada con la misma instancia de tiempo que Dr (es decir, la instancia de tiempo Ti). El codificador 20 de vídeo puede determinar Br basándose en muestras en una ubicación indicada por el vector de movimiento Vd de Dc. Por lo tanto, la posición superior-izquierda de Br puede calcularse con el vector de movimiento Vd reutilizado añadiendo el vector de movimiento Vd a la posición superior-izquierda de Bc. La posición superior-izquierda de Bc puede ser igual a la suma de la posición superiorizquierda de Dc y el vector de disparidad. Por lo tanto, la posición superior-izquierda de Br puede ser igual a la suma de las coordenadas de la posición superior-izquierda de Dc, del vector de disparidad y del vector de movimiento Vd. De esta manera, como se muestra en la Figura 9 por la flecha 118, el codificador 20 de vídeo puede reutilizar el vector de movimiento Vd para determinar Br.
Adicionalmente, en ARP, cada muestra en un primer bloque residual puede indicar la diferencia entre una muestra en Dc y una correspondiente muestra de Dr. El primer bloque residual puede denominarse como un bloque residual original para Dc. Cada muestra en un segundo bloque residual puede indicar una diferencia entre una muestra en Bc y una correspondiente muestra en Br. El segundo bloque residual puede denominarse como un "predictor residual". Puesto que el codificador 20 de vídeo usa el vector de movimiento Vd para determinar Br, el predictor residual puede ser diferente de los datos residuales reales de Bc.
Después de que el codificador 20 de vídeo determina el predictor residual, el codificador 20 de vídeo puede multiplicar el predictor residual por un factor de ponderación. En otras palabras, se multiplica el residual de Bc por información de movimiento de Vd por un factor de ponderación y se usa como el predictor residual para el residual actual. El factor de ponderación puede ser igual a 0, 0,5 o 1. Por lo tanto, pueden usarse tres factores de ponderación en ARP (es decir, 0, 0,5 y 1).
Después de que el codificador 20 de vídeo multiplica el predictor residual por el factor de ponderación, el predictor residual puede denominarse como un predictor residual ponderado. El codificador 20 de vídeo puede seleccionar, como un factor de ponderación final, el factor de ponderación que conduce a un coste de tasa distorsión mínimo para la CU actual (es decir, la CU que contiene la PU actual). El codificador 20 de vídeo puede incluir, en el flujo de bits, en un nivel de CU, datos que indican un índice de ponderación. El índice de ponderación puede indicar el factor de ponderación final (es decir, el factor de ponderación que se usó para generar el predictor residual ponderado) para la CU actual. En algunos ejemplos, los índices de ponderación de 0, 1 y 2 corresponden a factores de ponderación de 0, 1 y 0,5, respectivamente. La selección del factor de ponderación de 0 para la Cu actual es equivalente a no usar ARP para cualquiera de las PU de la CU actual.
El codificador 20 de vídeo puede determinar a continuación un bloque residual final para la PU actual. Cada muestra en el bloque residual final para la PU actual puede indicar una diferencia entre una muestra en el bloque residual original y una correspondiente muestra en el predictor residual ponderado. Un bloque residual de una CU actual (es decir, la CU que contiene la PU actual) puede incluir el bloque residual final para la PU actual junto con bloques residuales, si los hubiera, para otras PU de la CU actual. Como se ha descrito en cualquier otra parte en esta divulgación, el codificador 20 de vídeo puede subdividir el bloque residual de la CU actual entre uno o más bloques de transformada. Cada uno de los bloques de transformada puede estar asociado con una TU de la CU actual. Para cada bloque de transformada, el codificador 2 0 de vídeo puede aplicar una o más transformadas al bloque de transformada para generar un bloque de coeficientes de transformada. El codificador 20 de vídeo puede incluir, en un flujo de bits, datos que representan coeficientes de transformada cuantificados del bloque de coeficientes de transformada.
Por lo tanto, en ARP, para garantizar una alta correlación entre residuos de dos vistas, el codificador 20 de vídeo puede aplicar un movimiento de una PU actual a un correspondiente bloque en una imagen de vista de referencia para generar el residual en la vista de base para que se use para predicción residual de inter vista. De esta manera, se alinea el movimiento para la PU actual y el correspondiente bloque de referencia en la vista de referencia. Además, se aplica un factor de ponderación adaptativo a la señal de residuo de modo que se reduce adicionalmente el error de predicción.
Si se bipredice la PU actual, la PU actual tiene un vector de movimiento RefPicListO, un vector de movimiento RefPicListl, un índice de referencia RefPicListO y un índice de referencia RefPicListl. Esta divulgación puede hacer referencia a la imagen de referencia indicada por el índice de referencia RefPicListO de la PU actual como la imagen de referencia objetivo RefPicListO de la PU actual. El vector de movimiento RefPicListl de la PU actual puede indicar una ubicación de referencia en la imagen de referencia objetivo RefPicListl de la PU actual. Esta divulgación puede hacer referencia a la imagen de referencia indicada por el índice de referencia RefPicListl de la PU actual como la imagen de referencia objetivo RefPicListl de la PU actual. El vector de movimiento RefPicListl de la PU actual puede indicar una ubicación de referencia en la imagen de referencia objetivo RefPicListl de la PU actual.
Por lo tanto, cuando el codificador 20 de vídeo realiza ARP en una PU biprevista, el codificador 20 de vídeo puede determinar, basándose en el vector de movimiento de RefPicListO de la PU actual, una ubicación de referencia en la imagen de referencia objetivo RefPicListO de la PU actual. Esta divulgación puede hacer referencia a esta ubicación de referencia como la ubicación de referencia RefPicListO de la PU actual. El codificador 20 de vídeo puede a continuación determinar un bloque de referencia que incluye muestras reales o interpoladas de la imagen de referencia objetivo RefPicListO de la PU actual que están asociadas con la ubicación de referencia RefPicListO de la PU actual. Esta divulgación puede hacer referencia a este bloque de referencia como el bloque de referencia RefPicListO de la PU actual.
Además, el codificador 20 de vídeo puede determinar, basándose en el vector de movimiento RefPicList1 de la PU actual, una ubicación de referencia en la imagen de referencia objetivo RefPicListl de la PU actual. Esta divulgación puede hacer referencia a esta ubicación de referencia como la ubicación de referencia RefPicListl de la PU actual. El codificador 20 de vídeo puede a continuación determinar un bloque de referencia que incluye muestras reales o interpoladas de la imagen de referencia objetivo RefPicListl de la PU actual que están asociadas con la ubicación de referencia RefPicListO de la PU actual. Esta divulgación puede hacer referencia a este bloque de referencia como el bloque de referencia RefPicListl de la PU actual.
El codificador 20 de vídeo puede determinar, basándose en el bloque de referencia RefPicListO de la PU actual y el bloque de referencia RefPicListl de la PU actual, un bloque predictivo temporal para la PU actual. Por ejemplo, cada muestra en el bloque predictivo temporal de la PU actual puede indicar una media ponderada de correspondientes muestras en el bloque de referencia RefPicListO de la PU actual y el bloque de referencia RefPicListl de la PU actual.
Adicionalmente, cuando el codificador 20 de vídeo realiza ARP en una PU biprevista, el codificador 20 de vídeo puede determinar, basándose en el vector de movimiento RefPicListO de la PU actual y en una ubicación dentro de un fotograma de referencia de disparidad de un bloque de referencia de disparidad, una ubicación de referencia de disparidad temporal en una imagen de referencia de disparidad temporal. Esta diferencia puede hacer referencia a esta ubicación de referencia de disparidad temporal y esta imagen de referencia de disparidad temporal como la ubicación de referencia de disparidad temporal RefPicListO y la imagen de referencia de disparidad temporal RefPicListO, respectivamente. La imagen de referencia de disparidad temporal RefPicListO puede tener el mismo valor de POC que la imagen de referencia objetivo RefPicListO de la PU actual. El codificador 20 de vídeo puede a continuación determinar un bloque de muestras que incluye muestras reales o interpoladas de la imagen de referencia de disparidad temporal RefPicListO que están asociadas con la ubicación de referencia de disparidad temporal RefPicListO. Esta divulgación puede hacer referencia a este bloque de muestras como el bloque de referencia de disparidad temporal RefPicListO.
Además, el codificador 20 de vídeo puede determinar, basándose en el vector de movimiento RefPicListl de la PU actual y en la ubicación dentro del fotograma de referencia de disparidad del bloque de referencia de disparidad, una ubicación de referencia de disparidad temporal en una imagen de referencia de disparidad temporal. Esta diferencia puede hacer referencia a esta ubicación de referencia de disparidad temporal y esta imagen de referencia de disparidad temporal que la ubicación de referencia de disparidad temporal RefPicListI y la imagen de referencia de disparidad temporal RefPicListI, respectivamente. La imagen de referencia de disparidad temporal RefPicList1 puede tener el mismo valor de POC que la imagen de referencia objetivo RefPicListl de la PU actual. Puesto que la imagen de referencia objetivo RefPicListO de la PU actual y la imagen de referencia objetivo RefPicListl de la PU actual pueden ser diferentes, la imagen de referencia de disparidad temporal RefPicListl puede ser diferente de la imagen de referencia de disparidad temporal RefPicListO. El codificador 20 de vídeo puede a continuación determinar un bloque de muestras que incluye muestras reales o interpoladas de la imagen de referencia de disparidad temporal RefPicListl que están asociadas con la ubicación de referencia de disparidad temporal RefPicListl. Esta divulgación puede hacer referencia a este bloque de muestras como el bloque de referencia de disparidad temporal RefPicListl.
A continuación, el codificador 20 de vídeo puede determinar, basándose en el bloque de referencia de disparidad temporal RefPicListO y el bloque de referencia de disparidad temporal RefPicListl, un bloque predictivo de disparidad. En algunos ejemplos, cada muestra en el bloque predictivo de disparidad hay una media ponderada de correspondientes muestras en el bloque de referencia de disparidad temporal RefPicListO y el bloque de referencia de disparidad temporal RefPicListl. El codificador 20 de vídeo puede determinar a continuación un predictor residual. El predictor residual puede ser un bloque de muestras. Cada muestra en el predictor residual puede indicar una diferencia entre una muestra en el bloque de referencia de disparidad y una correspondiente muestra en el bloque predictivo de disparidad. El codificador 20 de vídeo puede a continuación generar un predictor residual ponderado aplicando un factor de ponderación al predictor residual. El codificador 20 de vídeo puede determinar a continuación un bloque residual final para la PU actual. Cada muestra en el bloque residual final de la PU actual puede indicar una diferencia entre una muestra en el bloque de predicción original para la PU actual y correspondientes muestras en el bloque predictivo temporal de la PU actual y el predictor residual ponderado. El codificador 20 de vídeo puede señalizar el bloque residual final de la PU actual en el flujo de bits.
El decodificador 30 de vídeo puede realizar un proceso similar cuando se realiza ARP en una PU y una PU biprevista. Por ejemplo, el decodificador 30 de vídeo puede determinar el bloque predictivo temporal de la PU actual y el predictor residual ponderado en la muestra de la manera anteriormente descrita. El decodificador 30 de vídeo puede determinar el bloque residual final de la PU actual basándose en datos señalizados en el flujo de bits. El decodificador 30 de vídeo puede a continuación reconstruir el bloque de predicción de la PU actual añadiendo el bloque residual final de la PU actual, el bloque predictivo temporal de la PU actual y el predictor residual ponderado.
La Figura 10 ilustra la relación entre bloque actual, el correspondiente bloque y el bloque de movimiento compensado anteriormente descritos. En otras palabras, la Figura 10 es un diagrama conceptual que ilustra una relación de ejemplo entre un bloque actual, un bloque de referencia y un bloque de movimiento compensado en ARP. En el ejemplo de la Figura 10, un codificador de vídeo está codificando actualmente una PU 130 actual en una imagen 131 actual. La imagen 131 actual está asociada con una vista V1 y una instancia de tiempo T1.
Adicionalmente, en el ejemplo de la Figura 10, el codificador de vídeo puede determinar un bloque 132 de referencia (es decir, un correspondiente bloque) que comprende muestras reales o interpoladas de una imagen 133 de referencia que están asociadas con una ubicación indicada por un vector de disparidad de la PU 130 actual. Por ejemplo, una esquina superior-izquierda del bloque 132 de referencia puede ser la ubicación indicada por el vector de disparidad de la PU 130 actual. El bloque 145 de referencia de disparidad temporal puede tener el mismo tamaño que el bloque de predicción de la PU 130 actual.
En el ejemplo de la Figura 10, la PU 130 actual tiene un primer vector 134 de movimiento y un segundo vector 136 de movimiento. El vector 134 de movimiento indica una ubicación en la imagen 138 de referencia temporal. La imagen 138 de referencia temporal está asociada con la vista V1 (es decir, la misma vista que la imagen 131 actual) y una instancia de tiempo t0. El vector 136 de movimiento indica una ubicación en la imagen 140 de referencia temporal. La imagen 140 de referencia temporal está asociada con la vista V1 y una instancia de tiempo T3.
De acuerdo con el esquema de ARP anteriormente descrito, el codificador de vídeo puede determinar una imagen de referencia (es decir, la imagen 142 de referencia) que está asociada con la misma vista que la imagen 133 de referencia y está asociada con la misma instancia de tiempo que la imagen 138 de referencia temporal. Además, el codificador de vídeo puede añadir el vector 134 de movimiento a las coordenadas de una esquina superior-izquierda del bloque 132 de referencia para derivar una ubicación de referencia de disparidad temporal. El codificador de vídeo puede determinar un bloque 143 de referencia de disparidad temporal (es decir, un bloque de movimiento compensado). Las muestras en el bloque 143 de referencia de disparidad temporal pueden ser muestras reales o interpoladas de la imagen 142 de referencia que están asociadas con la ubicación de referencia de disparidad temporal derivadas del vector 134 de movimiento. El bloque 143 de referencia de disparidad temporal puede tener el mismo tamaño que el bloque de predicción de la PU 130 actual.
De manera similar, el codificador de vídeo puede determinar una imagen de referencia (es decir, la imagen 144 de referencia) que está asociada con la misma vista que la imagen 134 de referencia y está asociada con la misma instancia de tiempo que la imagen 140 de referencia temporal. Además, el codificador de vídeo puede añadir el vector 136 de movimiento a las coordenadas de la esquina superior-izquierda del bloque 132 de referencia para derivar una ubicación de referencia de disparidad temporal. El codificador de vídeo puede determinar a continuación un bloque 145 de referencia de disparidad temporal (es decir, un bloque de movimiento compensado). Las muestras en el bloque 145 de referencia de disparidad temporal pueden ser muestras reales o interpoladas de la imagen 144 de referencia que están asociadas con la ubicación de referencia de disparidad temporal derivadas del vector 136 de movimiento. El bloque 145 de referencia de disparidad temporal puede tener el mismo tamaño que el bloque de predicción de la PU 130 actual.
Adicionalmente, en el ejemplo de la Figura 10, el codificador de vídeo puede determinar, basándose en el bloque 143 de referencia de disparidad temporal y el bloque 145 de referencia de disparidad temporal, un bloque predictivo de disparidad. El codificador de vídeo puede determinar a continuación un predictor residual. Cada muestra en el predictor residual puede indicar una diferencia entre una muestra en el bloque 132 de referencia y una correspondiente muestra en el bloque predictivo de disparidad.
De acuerdo con aspectos de esta divulgación, un codificador de vídeo (tal como un codificador de vídeo o un decodificador de vídeo) puede activar o desactivar ARP (que incluye codificar el residual de una capa con relación al residual de una segunda capa diferente) basándose en las imágenes de referencia en listas de imágenes de referencia para el bloque que se está codificando actualmente. En un ejemplo, el codificador de vídeo puede activar o desactivar ARP basándose en si las listas de imágenes de referencia para el bloque que se está codificando actualmente incluyen alguna imagen de referencia temporal. De acuerdo con aspectos de esta divulgación, si las listas de imágenes de referencia para un bloque intra previsto incluyen únicamente imágenes de referencia de inter vista, el codificador de vídeo puede desactivar ARP. En un ejemplo de este tipo, cuando el codificador de vídeo comprende un codificador de vídeo, el codificador de vídeo puede no señalizar un factor de ponderación en el flujo de bits (omitir la señalización de un factor de ponderación). Análogamente, cuando el codificador de vídeo comprende un decodificador de vídeo, el decodificador de vídeo puede omitir análogamente la decodificación de un factor de ponderación e inferir que el factor de ponderación es igual a cero.
Las técnicas anteriormente descritas pueden aplicarse en el contexto de imágenes de acceso aleatorio. Por ejemplo, de acuerdo con aspectos de esta divulgación, el codificador de vídeo puede activar o desactivar ARP basándose en si el componente de vista que se está codificando actualmente es un componente de vista de acceso aleatorio.
Con respecto a los componentes de vista de acceso aleatorio, en HEVC, en general, hay cuatro tipos de imágenes que pueden identificarse por el tipo de unidad de NAL. Los cuatro tipos de imágenes incluyen una imagen de refresco de decodificación imagen (IDR), una imagen de CRA, una imagen de acceso de capa temporal (TLA) y una imagen codificada que no es una imagen IDR, CRA o TLA. Las imágenes de IDR y codificadas son tipos de imagen heredadas de la especificación H.264/AVC. Los tipos de imágenes de CRA y TLA son nuevas adiciones para la norma de HVEC. Una imagen de CRA es un tipo de imagen que facilita la decodificación que comienza desde cualquier punto de acceso aleatorio en el medio de una secuencia de vídeo, y puede ser más eficiente que insertar imágenes de IDR. Una imagen de TLA es un tipo de imagen que puede usarse para indicar puntos de conmutación de capa temporal válidos.
En aplicaciones de vídeo, tales como difusión y envío por flujo continuo, la conmutación puede tener lugar entre diferentes canales de datos de vídeo y el salto puede tener lugar en partes específicas de datos de vídeo. En tales casos, puede ser beneficioso conseguir un retardo mínimo durante la conmutación y/o salto. Esta característica se activa teniendo imágenes de acceso aleatorio a intervalos regulares en los flujos de bits de vídeo. La imagen de IDR, especificada tanto en H.264/AVC como HEVC, puede usarse para acceso aleatorio. Sin embargo, una imagen de IDR inicia una secuencia de vídeo codificada y elimina imágenes de una memoria intermedia de imagen decodificada (DPB) (que puede denominarse también como una memoria de imagen de referencia, como se describe a continuación con respecto a las Figuras 2 y 3). Por consiguiente, las imágenes que siguen a la imagen de IDR en orden de decodificación no pueden usar imágenes decodificadas antes de la imagen de IDR como una referencia. En consecuencia, los flujos de bits que se basan en imágenes de IDR para acceso aleatorio pueden tener eficacia de codificación inferior. Para mejorar la eficacia de codificación, las imágenes de CRA en HEVC permiten imágenes que siguen a una imagen de CRA en orden de decodificación, pero que preceden a la imagen de CRA en orden de salida para usar imágenes decodificadas antes que la imagen de CRA como una referencia.
En HEVC, se considera un flujo de bits que inicia con una imagen de CRA un flujo de bits conforme. Cuando se inicia un flujo de bits con una imagen de CRA, las imágenes iniciales de la imagen de CRA pueden hacer referencia a imágenes de referencia no disponibles y por lo tanto no pueden decodificarse correctamente. Sin embargo, HEVC especifica que las imágenes iniciales de la imagen de CRA de inicio no se emitan, de ahí el nombre "acceso aleatorio limpio". Para el establecimiento del requisito de conformidad del flujo de bits, HEVC especifica un proceso de decodificación para generar imágenes de referencia no disponibles para la decodificación de las imágenes iniciales no de salida. Sin embargo, las implementaciones del decodificador conforme no tienen que seguir ese proceso de decodificación, siempre que estos decodificadores conformes puedan generar idéntica salida en comparación con cuando se realiza el proceso de decodificación desde el comienzo del flujo de bits. En HEVC, un flujo de bits conforme puede contiene ninguna imagen de IDR en absoluto, y, en consecuencia, puede contener un subconjunto de una secuencia de vídeo codificada o una secuencia de vídeo codificada incompleta.
Además de las imágenes de IDR y CRA, hay otros tipos de imágenes de punto de acceso aleatorio, por ejemplo, una imagen de acceso de enlace roto (BLA). Para cada uno de los tipos principales de las imágenes de punto de acceso aleatorio, puede haber subtipos, dependiendo de cómo pudiera tratarse potencialmente una imagen de punto de acceso aleatorio por lo sistemas. Cada subtipo de imagen de punto de acceso aleatorio tiene un tipo de unidad de NAL diferente.
En general, con respecto a las extensiones de HEVC (tales como MV-HEVC, 3D-HEVC o SHVC), si un componente de vista es un punto de acceso aleatorio puede depender del tipo de unidad de NAL del componente de vista. Si el tipo pertenece a aquellos definidos en la especificación de base de HEVC para imágenes de punto de acceso aleatorio, el componente de vista actual está en un componente de vista de punto de acceso aleatorio (o, por simplicidad, imagen de punto de acceso aleatorio de la vista actual).
En algunos casos, la funcionalidad de acceso aleatorio únicamente se aplica a predicción temporal de una manera que se desactivan o restringen ciertas predicciones en la dimensión temporal (por lo tanto, dentro de una vista) de manera similar que en la especificación de base de HEVC. Sin embargo, la predicción de inter vista para un componente de vista de punto de acceso aleatorio aún es posible, y, en general, se realiza para mejorar la eficacia de codificación, similar a la imagen de anclaje en H.264/MVC. Por lo tanto, un componente de vista de punto de acceso aleatorio (RAP), si usa predicción de inter vista, puede ser una imagen P o B.
De acuerdo con aspectos de esta divulgación, un codificador de vídeo (tal como el codificador 20 de vídeo o el decodificador 30 de vídeo) puede desactivar la predicción residual de inter vista para cada bloque de un componente de vista de acceso aleatorio. En tales ejemplos, el codificador 20 de vídeo puede no señalizar un factor de ponderación en el flujo de bits (omitir la señalización de un factor de ponderación). El decodificador 30 de vídeo puede omitir análogamente la decodificación de un factor de ponderación y determinar automáticamente que el factor de ponderación es igual a cero.
En otro ejemplo, de acuerdo con aspectos de esta divulgación, el codificador de vídeo puede activar ARP si al menos una imagen de referencia es desde la misma vista que el bloque que se está codificando actualmente. Adicionalmente o como alternativa, el codificador de vídeo puede activar ARP únicamente cuando ambas imágenes de referencia (que corresponden a una imagen de referencia en RefPicList0 y una imagen de referencia en RefPicList1), si están disponibles, son de la misma vista que el bloque que se está codificando actualmente. Adicionalmente o como alternativa, el codificador de vídeo puede desactivar ARP para un bloque si el bloque está codificado por inter vista con una imagen de referencia de inter vista. Como se ha indicado anteriormente, cuando se desactiva ARP, no se señaliza el factor de ponderación.
En algunos ejemplos, cuando una memoria intermedia de imagen decodificada para codificar un bloque actual no incluye una imagen en la misma vista que la imagen de referencia de disparidad que tiene el mismo POC que la imagen de referencia temporal, el codificador de vídeo puede modificar el proceso de ARP.
En otro ejemplo, adicionalmente o como alternativa, cuando una o ambas de las listas de imágenes de referencia del bloque de referencia de disparidad no incluye una imagen de referencia en la misma vista que la imagen de referencia de disparidad que tiene el mismo POC que la imagen de referencia temporal, el codificador de vídeo puede modificar el proceso de ARP. Por ejemplo, dado un índice de lista de imágenes de referencia actual X (siendo X 0 o 1) para el corte que contiene el bloque de referencia de disparidad, en un ejemplo, si la lista de imágenes de referencia con un índice de lista igual a X del bloque de referencia de disparidad no incluye una imagen de referencia en la misma vista que la imagen de referencia de disparidad y que tiene el mismo POC que la imagen de referencia temporal del bloque actual, el codificador de vídeo puede modificar el proceso de ARP. En otro ejemplo, si ninguna de las listas de imágenes de referencia (por ejemplo, ni la lista 0 ni la lista 1 ) del bloque de referencia de disparidad incluye una imagen de referencia en la misma vista que la imagen de referencia de disparidad y que tiene el mismo POC que la imagen de referencia temporal del bloque actual, el codificador de vídeo puede modificar el proceso de ARP.
En algunos ejemplos, el codificador de vídeo puede modificar el proceso de ARP desactivando el proceso de ARP, de manera que el bloque actual no se codifica usando ARP. En otros ejemplos, el codificador de vídeo puede modificar el proceso de ARP escalando el vector de movimiento temporal para identificar otra imagen de referencia de disparidad temporal. Por ejemplo, el codificador de vídeo puede escalar el vector de movimiento temporal de manera que, cuando se combina con el vector de disparidad, la combinación escalada es una imagen de referencia de disparidad temporal que se incluye en la lista de imágenes de referencia y está en una ubicación temporalmente más cerca de la imagen de referencia de disparidad. Las técnicas anteriormente descritas pueden evitar que el codificador de vídeo intente ubicar el bloque de referencia de disparidad en una imagen que no está incluida en la memoria intermedia de imágenes decodificadas o en una o ambas de las listas de imágenes de referencia.
De acuerdo con otros aspectos de esta divulgación, puede activarse o desactivarse ARP basándose en un modo de partición y/o modo de codificación del bloque que se está codificando actualmente. Por ejemplo, pueden señalizarse únicamente factores de ponderación para únicamente ciertos modos de partición y/o ciertos modos de codificación. Si no se incluye un factor de ponderación en un flujo de bits, un decodificador de vídeo puede omitir la decodificación del factor de ponderación e inferir que el factor de ponderación tiene valor cero (desactivando de esta manera ARP). De acuerdo con aspectos de esta divulgación, en algunos ejemplos, puede no señalizarse el factor de ponderación para algún bloque inter codificado con modo de partición no igual a PART_2Nx2N. En otro ejemplo, puede no señalizarse el factor de ponderación para un bloque inter codificado con un modo de partición distinto de PART_2Nx2N, PART_2NxN y PART_Nx2N. En otro ejemplo más, adicionalmente o como alternativa, puede no señalizarse el factor de ponderación para algún bloque inter codificado con modo de codificación desigual al modo de salto y/o al modo de unión.
De acuerdo con otros aspectos más de esta divulgación, puede implementarse un enfoque más flexible a factores de ponderación. Por ejemplo, el número de factores de ponderación disponible puede modificarse en el nivel de secuencia (por ejemplo, en un conjunto de parámetros, tal como un conjunto de parámetros de secuencia (SPS)). En un ejemplo, para propósitos de ilustración, puede señalizarse un indicador en un SPS para desactivar uno o más factores de ponderación, por ejemplo, 0,5 y/o 1. En otro ejemplo, puede señalizarse un indicador de este tipo en un VPS y ser aplicable para todas las vistas no de base. En otro ejemplo más, puede señalizarse un indicador de este tipo en un conjunto de parámetros de vídeo (VPS) para cada vista no de base. En otro ejemplo, puede proporcionarse un indicador de este tipo en un conjunto de parámetros de imagen (PPS), un encabezado de corte o un conjunto de parámetros de vista para desactivar uno o más factores de ponderación. Cuando se ha desactivado un factor de ponderación, pueden usarse menos bits para representar esos factores de ponderación restantes, proporcionado de esta manera unos ahorros de bits.
De acuerdo con otros aspectos, puede proporcionarse un indicador para modificar y/o sustituir uno o más factores de ponderación. En un ejemplo, el codificador de vídeo puede sustituir el factor de ponderación de 0,5 por un factor de ponderación de 0,75. Este indicador puede señalizarse en un encabezado de corte, un SPS, un conjunto de parámetros de imagen (PPS) o un VPS.
De acuerdo con aspectos de esta divulgación, en una implementación de ejemplo, el codificador de vídeo puede usar un proceso de predicción residual de inter vista modificado como el descrito en 3D-HTM versión 5.0 (anteriormente indicado). Por ejemplo, de acuerdo con aspectos de esta divulgación, puede usarse uno o más elementos de sintaxis para indicar que se aplica predicción residual de inter vista.
En un ejemplo, puede señalizarse uno o más elementos de sintaxis que indican un índice de un factor de ponderación (por ejemplo, un elemento de sintaxis weighting_factor_index) como parte de la CU. En este ejemplo, puede modificarse la sintaxis de la CU (por ejemplo, con relación a 3D-HTM versión 5.0) y puede señalizarse el elemento de sintaxis de factor de ponderación únicamente cuando se satisfacen las siguientes condiciones: la vista actual es una vista de textura dependiente, la CU actual no está intra codificada y la CU actual tiene un modo de partición igual a PART_2Nx2N. Cuando este elemento de sintaxis no está presente en el flujo de bits, el factor de ponderación se infiere que es igual a 0. Se muestra a continuación una tabla de sintaxis de CU de ejemplo:
Figure imgf000037_0001
(continuación)
Figure imgf000038_0001
Se muestra a continuación otra tabla de sintaxis de CU de ejemplo:
Figure imgf000038_0002
continuación
Figure imgf000039_0001
En el ejemplo anterior, TempMVAvai puede establecerse igual a 1 cuando la CU actual se predice desde al menos una imagen de referencia a partir de la misma vista. De otra manera, se establece igual a 0. Además, DispVectAvai puede establecerse igual a 1 si pudiera hallarse un vector de disparidad. De otra manera, es igual a 0.
En otro ejemplo, puede señalizarse el elemento de sintaxis de factor de ponderación únicamente cuando se satisfacen las siguientes condiciones: la vista actual es una vista de textura dependiente, la CU actual no está intra codificada y la CU actual tiene un modo de partición igual a PART_2Nx2N, el vector de disparidad determinado está disponible y al menos una partición tiene un vector de movimiento temporal, por ejemplo, la imagen de referencia es desde la misma vista. Cuando este elemento de sintaxis no está presente en el flujo de bits, el factor de ponderación se infiere que es igual a 0.
En otro ejemplo más, puede señalizarse el elemento de sintaxis de factor de ponderación únicamente cuando se satisfacen las siguientes condiciones: la vista actual es una vista de textura dependiente, la CU actual no está intra codificada y la CU actual tiene un modo de partición igual a PART_2Nx2N, el vector de disparidad determinado está disponible y al menos una partición en todas las PU de la CU actual tiene un vector de movimiento temporal, por ejemplo, la imagen de referencia es desde la misma vista. Cuando este elemento de sintaxis no está presente en el flujo de bits, el factor de ponderación se infiere que es igual a 0.
En otro ejemplo más, puede señalizarse el elemento de sintaxis de factor de ponderación únicamente cuando se satisfacen las siguientes condiciones: la vista actual es una vista de textura dependiente y el vector de disparidad determinado está disponible.
De acuerdo con aspectos de esta divulgación, puede señalizarse el factor de ponderación en una diversidad de maneras. Por ejemplo, como se ha indicado anteriormente, el índice de factor de ponderación de elemento de sintaxis puede indicar un índice a un factor de ponderación usado para predicción residual avanzada. Cuando no está presente, puede desactivarse la predicción residual avanzada para la Cu actual. Por ejemplo, si el factor de ponderación es igual a 0, el residual del bloque actual se codifica convencionalmente usando la codificación de transformada de HEVC, y se invocan especificaciones, tales como en la subcláusula 8.5.2.2, de la especificación HEVC (por ejemplo, tal como WD9, como se ha identificado anteriormente) para obtener las muestras de predicción. Si está presente el índice de factor de ponderación, se predice la señal residual actual usando la señal residual de referencia potencialmente interpolada multiplicada por el factor de ponderación y únicamente se transmite la diferencia, y puede invocarse el proceso descrito a continuación con respecto a las subcláusulas modificadas 8.5.2.2.1 y 8.5.2.2.2 de la especificación HEVC (por ejemplo, WD9) para cada lista de predicción donde se utiliza la imagen de referencia temporal.
En algunos casos, puede mapearse un índice de factor de ponderación a un factor de ponderación. De esta manera, el codificador de vídeo puede implementar un enfoque más flexible a factores de ponderación en predicción residual de inter vista. Por ejemplo, supóngase para propósitos de ilustración que hay N factores de ponderación diferentes que han de señalizarse, siendo N igual a 2, 3, 4 o similares. Cada uno de estos factores de ponderación puede mapearse inicialmente a un índice de ponderación único, como se muestra en el ejemplo de la tabla 1 a continuación, donde Wq, W 1, W2 ,..., W n-1 son los factores de ponderación en el orden ascendente de los valores.
Ta l 1 - m nr ín i f r n r i n f r n r ción
Figure imgf000040_0003
En otro ejemplo, W0, W 1, W2, ..., W n-1 pueden representar los factores de ponderación en orden descendente de la probabilidad del factor de ponderación que se está usando, que puede calcularse durante la codificación.
Se muestra otro mapeo de ejemplo en la Tabla 2 a continuación, donde se indexan factores de ponderación iguales a 0, 1, 0,5 por 0, 1, 2, respectivamente. Todos los factores de ponderación restantes pueden indexarse basándose en el orden ascendente de valores u orden descendente de probabilidades.
Tabla 2 - ma eo entre índices de factor de onderación factores de onderación
Figure imgf000040_0002
El decodificador 30 de vídeo puede analizar el índice de factor de ponderación a partir de un flujo de bits codificado para determinar el valor del índice. En un ejemplo, cada factor de ponderación puede identificarse por un índice de factor de ponderación, y pueden señalizarse los índices de factor de ponderación usando conversión a binario unaria truncada, como se describe en la sección 9.3.2.2 de la especificación HEVC (por ejemplo, WD9). En otro ejemplo, pueden mapearse en primer lugar los factores de ponderación a un índice de ponderación único basándose en el orden descendente de las probabilidades de los factores de ponderación y a continuación codificarse con la conversión a binario unaria truncada.
En otro ejemplo más, el proceso de conversión a binario puede definirse de acuerdo con la Tabla 3 a continuación:
-
Figure imgf000040_0001
continuación
Figure imgf000041_0001
En este punto, la cadena binaria de los índices de factor de ponderación que corresponden a los valores 3 a N-1 es consistente con un prefijo de '11' y un sufijo, indexado restando 3 del valor de weighting_factor_index donde se usa la conversión a binario unaria truncada.
Cuando hay en total cuatro factores de ponderación, puede definirse el proceso de conversión a binario la siguiente tabla:
- =
Figure imgf000041_0002
Cuando hay en total tres factores de ponderación, por ejemplo, 0, 0,5 y 1, puede definirse el proceso de conversión a binario por la siguiente tabla:
T l - nv r i n in ri f r n r i n N =
Figure imgf000041_0003
Con respecto a la inicialización de contexto, puede usarse un conjunto de contextos para codificar los índices de factor de ponderación. El modo de predicción residual de inter vista avanzado puede aplicarse tanto para los cortes P como los cortes B. La probabilidad inicial para el contexto de los índices de ponderación de los cortes P puede ser diferente de la de los cortes B. Como alternativa, se inicializan todos los modelos de contexto con igual probabilidad para diferentes valores binarios, por ejemplo, 0 y 1.
Con respecto a la selección de contexto, supóngase, para propósitos de ilustración, que la ubicación de luma (xC, yC) especifica la muestra de luma superior-izquierda del bloque de codificación de luma actual con relación a la muestra superior-izquierda de la imagen actual. Supóngase adicionalmente que la variable availableL, que especifica la disponibilidad del bloque de codificación ubicado directamente a la izquierda del bloque de codificación actual, se deriva invocando el proceso de derivación de disponibilidad para un bloque en el orden de exploración en z como se especifica en la subcláusula 6.4.1 de la especificación HEVC con la ubicación (xCurr, yCurr) establecida igual a (xC, yC) y la ubicación vecina (xN, yN) establecida igual a (xC - 1, yC) ya que la entrada y la salida están asignadas a availableL.
En el ejemplo anterior, la variable availableA especifica la disponibilidad del bloque de codificación ubicado directamente por encima del bloque de codificación actual, puede derivarse invocando el proceso de derivación de disponibilidad para un bloque en el orden de exploración en z como se especifica en la subcláusula 6.4.1 de la especificación HEVC (por ejemplo, WD9) con la ubicación (xCurr, yCurr) establecida igual a (xC, yC) y la ubicación vecina (xN, yN) establecida igual a (xC, yC -1 ) ya que la entrada y la salida están asignadas a availableA.
De acuerdo con aspectos de esta divulgación, condTermFlagN (N puede ser L o A) puede derivarse como sigue: - Si está disponible mbPAddrN y el factor de ponderación para el bloque mbPAddrN no es igual a 0, condTerm FlagN se establece igual a
- De lo contrario (mbPAddrN no está disponible o el factor de ponderación para el bloque mbPAddrN es igual a 0), condTermFlagN se establece igual a 0.
Además, suponiendo que ctxIdx es el índice de contexto que se va a usar para codificar los índices de factor de ponderación. En este ejemplo, se derivan los incrementos de ctxIdx (ctxIdxInc) para cada binario que va a codificarse por ctxIdxInc = M * condTermFlagL N * condTermFlagA. donde M o N pueden ser 1 o 2. Como alternativa, ctxIdxInc puede derivarse por ctxIdxInc = condTermFlagA. Como alternativa, ctxIdxInc puede derivarse por ctxIdxInc = condTermFlagL. Como alternativa, ctxIdxInc puede fijarse para que sea 0.
Como se ha indicado anteriormente, en algunos ejemplos, pueden modificarse los factores de ponderación. Por ejemplo, el número de factores de ponderación disponible puede modificarse en el nivel de secuencia (por ejemplo, en un conjunto de parámetros, tal como un conjunto de parámetros de secuencia (SPS)). En un ejemplo, para propósitos de ilustración, puede señalizarse un indicador en un SPS para desactivar uno o más factores de ponderación, por ejemplo, 0,5 y/o 1. En otro ejemplo, puede señalizarse un indicador de este tipo en un VPS y ser aplicable para todas las vistas no de base. En otro ejemplo más, puede señalizarse un indicador de este tipo en un conjunto de parámetros de vídeo (VPS) para cada vista no de base. En otro ejemplo, puede proporcionarse un indicador de este tipo en un conjunto de parámetros de imagen (PPS), un encabezado de corte o un conjunto de parámetros de vista para desactivar uno o más factores de ponderación.
De acuerdo con otros aspectos, puede proporcionarse un indicador para modificar y/o sustituir uno o más factores de ponderación. En un ejemplo, el codificador de vídeo puede sustituir el factor de ponderación de 0,5 por un factor de ponderación de 0,75. Este indicador puede señalizarse en un encabezado de corte, un SPS, un conjunto de parámetros de imagen (PPS) o un VPS.
En un ejemplo, puede modificarse un conjunto de parámetros de vídeo como sigue (por ejemplo, con relación a 3D-HTM versión 5.0):
extensión de conjunto de parámetros de vídeo
Figure imgf000042_0001
continuación
Figure imgf000043_0001
En el ejemplo anterior, advanced_residual_pred_flag[ i ] igual a 1 puede especificar que puede usarse la predicción residual avanzada (ARP) para la vista de textura actual con id de capa igual a i. advanced _residual_pred_ flag[ i ] igual a 0 especifica que no se usa ARP para la vista de textura actual con id de capa igual a i. Cuando no está presente, advanced_residual_pred_flag[ i ] puede inferirse que es igual a 0.
En otro ejemplo, puede señalizarse una bandera, en concreto advanced_residual_pred_flag, una vez en la extensión de VPS y puede ser aplicable a todas las vistas de textura no de base. En este ejemplo, weight_factor_change_flag[ i ] igual a 1 puede especificar que se cambia el factor de ponderación que corresponde al índice de factor de ponderación igual a 2 para la capa actual. Además, weight_factor_change_flag[ i ] igual a 0 puede especificar que no se cambia el factor de ponderación que corresponde al índice de factor de ponderación igual a 2 para la capa actual. Además, diff_weight[ i ] puede especificar una diferencia (con posible escalado) entre el factor de ponderación nuevo y el factor de ponderación original para el índice de factor de ponderación igual a 2. El intervalo de diff_weight[ i ] puede ser de -2 a 4, inclusive.
En el ejemplo anterior, el codificador de vídeo puede derivar el factor de ponderación nuevo como sigue:
W2 = (W2*4 + diff_weight[ i ]) 4.
En el ejemplo anterior, cuando el factor de ponderación W2 es igual a Wo o W 1, el índice de factor de ponderación de cualquier CU en la vista aplicable siempre es menor que 2.
En otro ejemplo más, pueden señalizase los elementos de sintaxis anteriormente descritos en el conjunto de parámetros de secuencia o en la extensión del conjunto de parámetros de secuencia como advanced_residual_pred_flag, el factor de ponderación change_flag y el peso de diferencia para conseguir la misma funcionalidad para una vista de textura no de base haciendo referencia al conjunto de parámetros de secuencia.
La Figura 11 ilustra ubicaciones de muestra en datos de vídeo. En general, las ubicaciones de muestra pueden identificarse por un vector de movimiento o vector de disparidad en la codificación de vídeo. Un codificador de vídeo (tal como el codificador 20 de vídeo y/o el decodificador 30 de vídeo) puede usar las muestras asociadas con la ubicación identificada para los propósitos de la codificación predictiva. En el ejemplo de la Figura 11, se indican muestras de enteros con letras en mayúsculas, mientras que se indican posiciones de muestra fraccional con letras en minúscula. Aunque el ejemplo de la Figura 11 ilustra en general interpolación de luma de un cuarto de muestra, puede aplicarse interpolación similar para los componentes de croma.
Cuando un codificador de vídeo (tal como el codificador 20 de vídeo o el decodificador 30 de vídeo) realiza ARP para una PU, el codificador de vídeo puede necesitar acceder a tres bloques (es decir, Br, Bc, y Dr en la Figura 9). Como se ha indicado anteriormente, si un vector de movimiento indica una ubicación de pel fraccional, el codificador de vídeo realiza dos procesos de interpolación de pel fraccional, por ejemplo, un proceso de interpolación para ubicar el bloque de referencia temporal y otro proceso de interpolación para ubicar el bloque de referencia de disparidad temporal. Además, el codificador de vídeo puede aplicar otro proceso de interpolación pel fraccional más cuando se determina un bloque de referencia de disparidad. h Ev C puede usar un filtro de interpolación de luma/croma de 8/4 derivaciones para un proceso de interpolación de muestra fraccional cuando se determinan bloques de movimiento compensado.
De acuerdo con aspectos de esta divulgación, puede simplificarse el proceso de compensación de movimiento de ARP, particularmente con respecto a interpolación de sub-pel de bloques de referencia. En algunos casos, de acuerdo con aspectos de esta divulgación, el codificador de vídeo puede usar uno o más tipos de interpolaciones para determinar las ubicaciones de bloques de referencia en ARP. Por ejemplo, el codificador de vídeo puede usar un filtro de paso bajo, tal como un filtro bilineal, para interpolar la ubicación de los bloques de referencia. En general, un filtro bilineal (es decir, interpolación bilineal) es una extensión de interpolación lineal para interpolar funciones de dos variables (por ejemplo, x e y) en una cuadrícula de 2 dimensiones regular. Por lo tanto, un filtro bilineal puede ser un filtro de 2 derivaciones.
En algunos ejemplos, el codificador de vídeo puede usar un filtro bilineal cuando se genera el bloque de referencia de disparidad y el bloque de referencia de disparidad temporal. Por consiguiente, el filtro de interpolación de luma/croma de 8/4 derivaciones usado en HEVC para el proceso de interpolación de muestra fraccional puede sustituirse por un filtro bilineal cuando se genera el predictor residual, es decir, generando los Br y Bc mostrados en la Figura 9.
Además, en algunos ejemplos, el codificador de vídeo puede usar un filtro bilineal cuando se genera un bloque de movimiento compensado de la PU actual. Es decir, el filtro de interpolación de luma/croma de 8/4 derivaciones usado en HEVC para el proceso de interpolación de muestra fraccional puede sustituirse por un filtro bilineal cuando se genera el bloque de movimiento compensado de la PU actual, es decir, generando el Dr mostrado en la Figura 9. Por lo tanto, cuando se determina un bloque predictivo para una PU actual, el codificador de vídeo puede aplicar un filtro bilineal a los componentes de luma y/o de croma de la imagen de referencia temporal.
En un ejemplo alternativo, el codificador de vídeo puede aplicar el filtro bilineal anteriormente descrito únicamente al componente de luma o únicamente al de croma. En otro ejemplo, el codificador de vídeo puede aplicar el filtro bilineal a ambos componentes de luma y de croma.
En el ejemplo mostrado en la Figura 11, las entradas al proceso de interpolación de muestra de luma pueden incluir una ubicación de luma en unidades de muestra totales (xIntL, yIntL), una ubicación de luma en unidades de muestra fraccional (xFracL, yFracL), y la matriz de muestras de referencia de luma refPicLXL. Además, la salida del proceso de interpolación es un valor de muestra de luma previsto predSampleLXL[ xl, yL ]
Las posiciones etiquetadas con letras en mayúsculas Ai, j dentro de los bloques sombreados representan muestras de luma en ubicaciones de muestra completa dentro de la matriz bidimensional dada refPicLXL de muestras de luma. Estas muestras pueden usarse para generar el valor de muestra de luma prevista predSampleLXL[ xl, yL ]. Las ubicaciones (xAij, yAi, j) para cada una de las correspondientes muestras de luma A,j dentro de la matriz dada refPicLXL de muestras de luma pueden derivarse como sigue:
xAi,j = Clip3( 0, pic_width_in_luma_samples -1, xIntL i) (6-1)
yAi, j = Clip3( 0, pic_height_in_luma_samples -1, yIntL j ) (6-2)
Las posiciones etiquetadas con letras en minúsculas dentro de bloques no sombreados representan muestras de luma en ubicaciones fraccionales de muestra de cuarto de píxel (cuarto de pel). El desplazamiento de ubicación de luma en unidades de muestra fraccional (xFracL, yFracL) especifica cuál de las muestras de luma generadas en ubicaciones de muestra total y de muestra fraccional se asigna al valor de muestra de luma prevista predSampleLXL[ xl, yL ]. Esta asignación puede realizarse de acuerdo con la asignación especificada en la Tabla 6-1, mostrada a continuación. El valor de predSampleLXL[ xl, yL ] es la salida.
Las variables shift1, shift2 y shift3 pueden derivarse de la misma manera que la subcláusula de HEVC 8.5.2.2.2.2. Dadas las muestras de luma Ai,j en ubicaciones de muestra totales (xAi,j yAi,j), pueden derivarse las muestras de luma 'a0,ü' a 'r0,0' en posiciones de muestra fraccional por las siguientes ecuaciones.
- Las muestras etiquetadas a0,0, b0,0, 00,0, d0,0, h0,0y n0,0 pueden derivarse aplicando un filtro de 2 derivaciones a las muestras de posición de enteros más cercanas:
a0,0 -( 48*A0,0 + 16*A-i,0)» shiftl (6-3)
b0,0 = ( 32*A0,0 32* A10 )» shiftl (6-4)
c0,0 = ( 16*A0,0 + 48*A-i,0 ) » shift1 (6-5)
d0,0 = (48*A0,0 1 6 *A0,1 )» shiftl (6-6)
h0,0 “ ( 32*A0,0 32*A0,1 )» shiftl (6-7)
n0,0 = (16*A0,0 + 48*A-i,0 )» shift1 (6-8)
Las muestras etiquetadas e0,0, i0,0, p0,0, f0,0, j 0,0, q0,0, g0,0, k0,0 y r0,0 pueden derivarse aplicando el filtro de 8 derivaciones a las muestras a0,i, b0,i y c0,i donde i = -3..4 en la dirección vertical:
e0,0 = ( 48*a0,0 16 *a0,1 )»shift2 (6-9)
iü,ü - ( 32*a0,0 32*a0,i )» shift2 (6-10)
p0,0 - ( 16*a0,0 + 48*a0,i )» shift2 (6-11)
Figure imgf000045_0001
16 *bo0,i )»shift2 (6-12)
j 0,0 - ( 32*b0,0 32*b0,i )»shift2 (6-13)
q0,0 - ( 16*b0,0 + 48*b0,i )»shift2 (6-14)
g0,0 - (48*c0,0 + 16 *c0,i)» shift2 (6-15)
k0,0 -( 32*c0,0 32*c0,i )» shift2 (6-16)
r0,0 - (16 *c0,0 + 48*c0,i )» shift2 (6-17)
T l -1 - i n i n l m r r i i n l m r m l LXL
Figure imgf000045_0002
Como se ha indicado anteriormente, aunque se describe con respecto a un componente de luma, un codificador de vídeo puede ubicar muestras en un bloque de croma de una manera similar.
En algunos ejemplos, pueden determinarse las ubicaciones del bloque de referencia de disparidad y el bloque de referencia de disparidad temporal después de que se ha aplicado la compensación de movimiento como se especifica en la subcláusula 8.5.2.2.1 y 8.5.2.2.2 de la especificación de HEVC. Por ejemplo, para el bloque actual, la matriz de muestras de luma previstas puede identificarse como predSampleLXL, y las matrices de muestras de croma pueden identificarse como predSampleLXcb y predSampleLXcr. En este ejemplo, si el factor de ponderación no es igual a 0, el codificador de vídeo puede realizar las siguientes operaciones al final del proceso:
- Para cada lista de imágenes de referencia X (siendo X 0 o 1), si la imagen de referencia no es una imagen de referencia inter vista, se aplica lo siguiente para modificar adicionalmente los valores de muestra previstos:
1. Se invoca el proceso de derivación de vector de disparidad para obtener un vector de disparidad, que apunta a una vista de referencia objetivo.
2. Ubicar el bloque de referencia por el vector de disparidad en la vista de referencia objetivo de la imagen dentro de la misma unidad de acceso. Si el vector de disparidad apunta a una posición fraccional (es decir, la posición superior-izquierda del bloque de referencia (Bc en la Figura 9) es una fraccional), se aplica un filtro bilineal para interpolar el bloque de referencia.
3. Reutilizar la información de movimiento del bloque actual para derivar la información de movimiento para el bloque de referencia. Aplicar compensación de movimiento para el bloque de referencia basándose en el vector de movimiento derivado del bloque de referencia y la imagen de referencia derivada en la vista de referencia para el bloque de referencia, para derivar un bloque de residuo. La relación entre bloque actual, el bloque de referencia y el bloque de movimiento compensado se muestra en la Figura 9.
• Se indica el índice de referencia del bloque actual como ref_idx_lx
• Seleccionar en la memoria intermedia de imagen decodificada una imagen de referencia que tiene el mismo POC que refPicListX[ref_idx_1x] y dentro de la vista de referencia objetivo.
• Derivar el vector de movimiento del bloque de referencia para que sea el mismo que el vector de movimiento del bloque actual.
Se aplica interpolación bilineal si el vector de movimiento apunta a una posición fraccional, es decir, la posición superior-izquierda del bloque de referencia más el vector de movimiento es una posición fraccional (posición superior-izquierda de Br en la Figura 9).
4. Aplicar el factor de ponderación al bloque de residuo para obtener un bloque de residuo ponderado, indicado como predARPSampleLXL, predARPSampleLXcb y predARPSampleLXcr
5. Añadir los valores del bloque de residuo ponderado a las muestras previstas:
• predSampleLXL = predSampleLXL predARPSampleLXL
• predSampleLXcb = predSampleLXcb predARPSampleLXcb
• predSampleLXcr = predSampleLXcr predARPSampleLXcr
Obsérvese que la operación anterior es una operación de adición de matriz/vector.
Independientemente de si se aplica o no la predicción residual de inter vista avanzada, se aplica un proceso de predicción de muestra ponderada, tal como se especifica en la subcláusula 8.5.2.2.3 de la especificación HEVC (por ejemplo, WD9), para una PU prevista bidireccional.
Como se ha indicado anteriormente, de acuerdo con algunos aspectos de esta divulgación, cuando la lista o listas de imágenes de referencia del bloque de referencia de disparidad no incluyen una imagen de referencia en la misma vista que la imagen de referencia de disparidad que tiene el mismo POC que la imagen de referencia temporal, el codificador de vídeo puede modificar el proceso de ARP.
En algunos ejemplos, el codificador de vídeo puede modificar el proceso de ARP desactivando el proceso de ARP, de manera que el bloque actual no se codifica usando ARP. En otros ejemplos, el codificador de vídeo puede modificar el proceso de ARP escalando el vector de movimiento temporal para identificar otra imagen de referencia de disparidad temporal. Por ejemplo, el codificador de vídeo puede escalar el vector de movimiento temporal de manera que, cuando se aplica a la imagen de referencia de disparidad, el vector de movimiento escalado identifica una imagen de referencia de disparidad temporal que está incluida en la lista de imágenes de referencia y está en una ubicación temporalmente más cerca de la imagen de referencia de disparidad.
La Figura 12 ilustra en general modos de subdivisión (que pueden definir tamaños de PU) que pueden estar asociados con unidades de predicción. Por ejemplo, suponiendo que el tamaño de una CU particular es 2Nx2N, puede predecirse la CU usando los modos de partición 2Nx2N (160), NxN (162), hNx2N (164), 2NxhN (166), Nx2N (168), 2NxN (170), nLx2 N (172), nRx2 N (174), 2 NxnU (176) y 2 NxnD (178). Los modos de partición mostrados en el ejemplo de la Figura 12 se presentan para propósitos de ilustración únicamente, y pueden usarse otros modos de partición para indicar la manera en la que se predicen los datos de vídeo.
En algunos casos, un codificador de vídeo (por ejemplo, tal como el codificador 20 de vídeo y/o el decodificador 30 de vídeo) puede realizar intra predicción o inter predicción usando los modos 160 y 162 de partición. Por ejemplo, el codificador de vídeo puede predecir una CU como una totalidad usando la PU de 2Nx2N (modo 160 de partición). En otro ejemplo, el codificador de vídeo puede predecir la CU usando cuatro PU con tamaño de NxN (modo 162 de partición), haciendo que se aplique cada una de las cuatro secciones una técnica de predicción potencialmente diferente.
Además, con respecto a la intra codificación, el codificador de vídeo puede realizar una técnica denominada como intra predicción de corta distancia (SDIP). Si está disponible la SDIP, la CU puede predecirse usando las PU paralelas (modos 164 y 166 de partición). Es decir, SDIP generalmente permite que una CU se divida en PU paralelas. Dividiendo una unidad de codificación (CU) en unidades de predicción (PU) no cuadradas pueden acortarse las distancias entre los píxeles previstos y los de referencia.
Con respecto a inter codificación, además de los modos 160 y 162 de partición simétrica, el codificador de vídeo puede implementar una disposición lado a lado de las PU (modos 168 y 170 de partición), o una diversidad de modos de AMP (partición de movimiento asimétrico). Con respecto a los modos de AMP, el codificador de vídeo puede subdividir asimétricamente una CU usando los modos de partición nLx2N (172), nRx2N (174), 2NxnU (176) y 2NxnD (178). En subdivisión asimétrica, no se subdivide una dirección de una CU, mientras que la otra dirección se subdivide en el 25 % y el 75 %. La porción de la CU que corresponde a la partición del 25 % se indica por una "n" seguida por una indicación de "Arriba", "Abajo", "Izquierda" o "Derecha".
De acuerdo con otros aspectos de esta divulgación, puede activarse o desactivarse ARP basándose en un modo de partición y/o modo de codificación del bloque que se está codificando actualmente. Por ejemplo, pueden señalizarse únicamente factores de ponderación para únicamente ciertos modos de partición y/o ciertos modos de codificación. Si no se incluye un factor de ponderación en un flujo de bits, un decodificador de vídeo puede omitir la decodificación del factor de ponderación e inferir que el factor de ponderación tiene valor cero (desactivando de esta manera ARP).
En un ejemplo, como se ha indicado anteriormente con respecto a las tablas de sintaxis de la unidad de codificación de ejemplo, de acuerdo con algunos aspectos de esta divulgación, puede no señalizarse el factor de ponderación para cualquier bloque inter codificado con modo de partición desigual a PART_2Nx2N (modo 160 de partición). En otro ejemplo, el factor de ponderación para un bloque inter codificado con un modo de partición distinto de PART_2Nx2N (modo 160 de partición), PART_2NxN (modo 170 de partición) y PART_Nx2N (modo 168 de partición) puede no señalizarse. En otro ejemplo más, adicionalmente o como alternativa, puede no señalizarse el factor de ponderación para algún bloque inter codificado con modo de codificación desigual al modo de salto y/o al modo de unión.
La Figura 13 es un diagrama de flujo que ilustra un método de ejemplo para codificar un bloque actual de acuerdo con técnicas de esta divulgación. El bloque actual puede comprender una CU actual o una porción de la CU actual, por ejemplo, una PU actual. Aunque se describen con respecto al codificador 20 de vídeo (Figuras 1 y 2), debería entenderse que otros dispositivos pueden estar configurados para realizar un método similar al de la Figura 13.
En este ejemplo, el codificador 20 de vídeo predice inicialmente el bloque (190) actual usando un vector de movimiento. Por ejemplo, el codificador 20 de vídeo puede calcular una o más unidades de predicción (PU) para el bloque actual. En este ejemplo, se supone que el codificador 20 de vídeo inter predice el bloque actual. Por ejemplo, la unidad 42 de estimación de movimiento puede calcular un vector de movimiento para el bloque actual realizando una búsqueda de movimiento de imágenes previamente codificadas, por ejemplo, imágenes de inter vista e imágenes temporales. Por lo tanto, la unidad 42 de estimación de movimiento puede producir un vector de movimiento temporal o un vector de movimiento de disparidad para codificar el bloque actual.
El codificador 20 de vídeo puede determinar a continuación si las listas de imágenes de referencia (por ejemplo, RefPicList0 y RefPicList 1, cuando el bloque actual está biprevisto) para codificar el bloque actual incluyen una o más imágenes de referencia en una ubicación temporal distinta de la ubicación temporal del bloque (191) actual. En algunos ejemplos, el codificador 2 0 de vídeo puede hacer una determinación de este tipo determinando si el bloque actual está incluido en una imagen de acceso aleatorio, como se describe en cualquier otra parte en esta divulgación.
Si las listas de imágenes de referencia incluyen una imagen de referencia en una ubicación temporal que es diferente de la ubicación temporal del bloque actual (el ramal sí de la etapa 191), el codificador 20 de vídeo puede posibilitar un proceso de predicción residual de inter vista, tal como el proceso de ARP anteriormente descrito. En este ejemplo, el codificador 20 de vídeo puede realizar predicción inter residual para predecir los datos residuales del bloque (192) actual. Por ejemplo, como se ha indicado anteriormente, el codificador 20 de vídeo puede determinar un bloque de referencia de disparidad indicado por un vector de disparidad del primer bloque, determinar un bloque de referencia de disparidad temporal combinando el vector de movimiento temporal y el vector de movimiento de disparidad, y determinar un predictor residual basándose en una diferencia entre el bloque de referencia de disparidad temporal y el bloque de referencia de disparidad. El codificador 20 de vídeo puede aplicar un factor de ponderación al predictor residual. El codificador 20 de vídeo puede a continuación calcular un bloque residual para el bloque (194) actual.
Si las listas de imágenes de referencia no incluyen una imagen de referencia en una ubicación temporal que es diferente de la ubicación temporal del bloque actual (el ramal no de la etapa 191), el codificador 20 de vídeo puede desactivar un proceso de predicción residual de inter vista, tal como el proceso de ARP anteriormente descrito, y puede omitir el cálculo del bloque residual para el bloque (194) actual. En este ejemplo, el codificador 20 de vídeo puede no señalizar un factor de ponderación para el proceso de predicción residual de inter vista. Es decir, en un ejemplo para propósitos de ilustración, el codificador 20 de vídeo puede no señalizar un elemento de sintaxis factor_index de ponderación en el flujo de bits.
En cualquier caso, el codificador 20 de vídeo calcula el bloque residual para el bloque actual, por ejemplo, para producir una unidad de transformada (TU) (194). Para calcular el bloque residual cuando no se usa predicción residual de inter vista, el codificador 20 de vídeo puede calcular una diferencia entre el bloque original no codificado y el bloque previsto para el bloque actual para producir el residual. Para calcular el bloque residual cuando se usa predicción residual de inter vista, el codificador 2 0 de vídeo puede calcular una diferencia entre el bloque original no codificado y el bloque previsto para el bloque actual para generar un primer residual. El codificador 20 de vídeo puede calcular a continuación un residual final basándose en la diferencia entre el primer residual y el predictor residual.
El codificador 20 de vídeo puede a continuación transformar y cuantificar coeficientes del bloque (196) residual. A continuación, el codificador 20 de vídeo puede explorar los coeficientes de transformada cuantificados del bloque (198) residual. Durante la exploración, o después de la exploración, el codificador 20 de vídeo puede codificar por entropía los coeficientes de transformada que incluyen, por ejemplo, un valor de ponderación de predicción residual de inter vista en casos en los que se activa y aplica (200) la predicción residual de inter vista. El codificador 20 de vídeo puede a continuación emitir los datos codificados por entropía para coeficientes del bloque y el valor de ponderación en casos en los que se activa y aplica (2 0 2 ) la predicción residual de inter vista.
La Figura 14 es un diagrama de flujo que ilustra un método de ejemplo para decodificar un bloque actual de datos de vídeo de acuerdo con técnicas de esta divulgación. El bloque actual puede comprender una CU actual o una porción de la CU actual (por ejemplo, una PU). Aunque se describen con respecto al decodificador 30 de vídeo (Figuras 1 y 3), debería entenderse que otros dispositivos pueden estar configurados para realizar un método similar al de la Figura 14.
Inicialmente, el decodificador 30 de vídeo recibe datos para coeficientes de transformada y un vector de movimiento para el bloque (210) actual. De nuevo, este ejemplo supone que el bloque actual está inter previsto. La unidad 80 de decodificación por entropía decodifica por entropía los datos para los coeficientes y el vector de movimiento para el bloque (2 1 2 ).
El decodificador 30 de vídeo puede determinar a continuación si las listas de imágenes de referencia (por ejemplo, RefPicList0 y RefPicList 1, cuando el bloque actual está biprevisto) para codificar el bloque actual incluyen una o más imágenes de referencia en una ubicación temporal distinta de la ubicación temporal del bloque (214) actual. En algunos ejemplos, el decodificador 30 de vídeo puede hacer una determinación de este tipo determinando si el bloque actual está incluido en una imagen de acceso aleatorio, como se describe en cualquier otra parte en esta divulgación.
Si las listas de imágenes de referencia incluyen una imagen de referencia en una ubicación temporal que es diferente de la ubicación temporal del bloque actual (el ramal sí de la etapa 214), el decodificador 30 de vídeo puede posibilitar un proceso de predicción residual de inter vista, tal como el proceso de ARP anteriormente descrito. En este ejemplo, el decodificador 30 de vídeo puede realizar predicción inter residual para predecir los datos residuales del bloque (216) actual. Por ejemplo, como se ha indicado anteriormente, el decodificador 30 de vídeo puede determinar un bloque de referencia de disparidad indicado por un vector de disparidad del primer bloque, determinar un bloque de referencia de disparidad temporal combinando el vector de movimiento temporal y el vector de movimiento de disparidad, y determinar un predictor residual basándose en una diferencia entre el bloque de referencia de disparidad temporal y el bloque de referencia de disparidad. El decodificador 30 de vídeo puede aplicar también un factor de ponderación, como se señaliza en el flujo de bits, al predictor residual.
Si las listas de imágenes de referencia no incluyen una imagen de referencia en una ubicación temporal que es diferente de la ubicación temporal del bloque actual (el ramal no de la etapa 214), o después de predecir datos residuales con predicción (216) residual de inter vista), el decodificador 30 de vídeo puede desactivar un proceso de predicción residual de inter vista, tal como el proceso de ARP anteriormente descrito, y puede omitir la predicción del bloque actual usando el vector (218) de movimiento.
En cualquier caso, el decodificador 30 de vídeo puede a continuación predecir el bloque actual usando el vector (218) de movimiento decodificado. El decodificador 30 de vídeo, a continuación, puede explorar a la inversa los coeficientes reproducidos (220), para crear un bloque de coeficientes de transformada cuantificados. El decodificador 30 de vídeo, a continuación, puede cuantificar a la inversa y transformar a la inversa los coeficientes para producir un bloque (2 2 2 ) residual. El decodificador 30 de vídeo puede decodificar finalmente el bloque actual combinando el bloque previsto y el bloque o bloques (224) residuales. Por ejemplo, en caso de que no se aplique predicción residual de inter vista, el decodificador 30 de vídeo puede simplemente combinar el bloque previsto y el residual decodificado. En casos en los que se aplica predicción residual de inter vista, el decodificador 30 de vídeo puede combinar el bloque previsto, el residual decodificado (que representa un residual final) y el predictor residual.
La Figura 15 es un diagrama de flujo que ilustra un método de ejemplo para codificar un bloque actual de acuerdo con técnicas de esta divulgación. El bloque actual puede comprender una CU actual o una porción de la CU actual, por ejemplo, una PU actual. Aunque se describen con respecto al codificador 20 de vídeo (Figuras 1 y 2), debería entenderse que otros dispositivos pueden estar configurados para realizar un método similar al de la Figura 15.
En este ejemplo, el codificador 20 de vídeo determina la ubicación de un bloque de referencia temporal indicado por un vector de movimiento temporal para el bloque (240) actual. Por ejemplo, el codificador 20 de vídeo puede calcular una o más unidades de predicción (PU) para el bloque actual. En este ejemplo, se supone que el codificador 20 de vídeo inter predice el bloque actual. Por ejemplo, la unidad 42 de estimación de movimiento puede calcular un vector de movimiento para el bloque actual realizando una búsqueda de movimiento de imágenes previamente codificadas, por ejemplo, imágenes de inter vista e imágenes temporales. Por lo tanto, la unidad 42 de estimación de movimiento puede producir un vector de movimiento temporal o un vector de movimiento de disparidad para codificar el bloque actual.
El codificador 20 de vídeo puede interpolar también la ubicación de un bloque (242) de referencia de disparidad. Por ejemplo, el codificador 2 0 de vídeo puede determinar un vector de disparidad para ubicar un bloque de referencia de disparidad que tiene el mismo valor de POC que el bloque actual, pero ubicado en una segunda vista diferente. En algunos casos, de acuerdo con aspectos de esta divulgación, si el vector de disparidad identifica una ubicación para el bloque de referencia de disparidad que no es una ubicación de enteros, el codificador 2 0 de vídeo puede aplicar un filtro bilineal para interpolar la ubicación del bloque de referencia de disparidad.
Además, el codificador 20 de vídeo puede determinar la ubicación de un bloque (244) de referencia de disparidad temporal. Por ejemplo, el codificador 20 de vídeo puede combinar el vector de movimiento temporal y el vector de movimiento de disparidad para determinar la ubicación del bloque de referencia de disparidad temporal. De nuevo, en algunos casos, de acuerdo con aspectos de esta divulgación, si la combinación identifica una ubicación para el bloque de referencia de disparidad temporal que no es una ubicación de enteros, el codificador 2 0 de vídeo puede aplicar un filtro bilineal para interpolar la ubicación del bloque de referencia de disparidad temporal.
El codificador 20 de vídeo puede a continuación determinar un predictor residual para el bloque (246) actual. El codificador 2 0 de vídeo puede determinar el predictor residual basándose en la diferencia entre el bloque de referencia de disparidad y el bloque de referencia de disparidad temporal. El codificador 20 de vídeo puede aplicar un factor de ponderación al predictor residual resultante.
El codificador 20 de vídeo puede a continuación determinar un residual final para el bloque (248). Por ejemplo, el codificador 2 0 de vídeo puede determinar un primer residual basándose en una diferencia entre muestras del bloque actual y el bloque de referencia temporal. El codificador 20 de vídeo puede a continuación determinar el residual final basándose en una diferencia entre el primer residual y el predictor residual.
El codificador 20 de vídeo puede a continuación transformar y cuantificar coeficientes del bloque (250) residual. A continuación, el codificador 20 de vídeo puede explorar los coeficientes de transformada cuantificados del bloque (252) residual. Durante la exploración, o después de la exploración, el codificador 20 de vídeo puede codificar por entropía los coeficientes de transformada que incluyen, por ejemplo, un valor (254) de ponderación de predicción residual de inter vista. El codificador 20 de vídeo puede a continuación emitir los datos codificados por entropía para los coeficientes del bloque y el valor (256) de ponderación.
La Figura 16 es un diagrama de flujo que ilustra un método de ejemplo para decodificar un bloque actual de datos de vídeo de acuerdo con técnicas de esta divulgación. El bloque actual puede comprender una CU actual o una porción de la CU actual (por ejemplo, una PU). Aunque se describen con respecto al decodificador 30 de vídeo (Figuras 1 y 3), debería entenderse que otros dispositivos pueden estar configurados para realizar un método similar al de la Figura 14.
Inicialmente, el decodificador 30 de vídeo recibe datos para coeficientes de transformada y un vector de movimiento para el bloque (260) actual. De nuevo, este ejemplo supone que el bloque actual está inter previsto. La unidad 80 de decodificación por entropía decodifica por entropía los datos para los coeficientes y el vector de movimiento para el bloque (262).
El decodificador 30 de vídeo puede a continuación predecir el bloque actual usando el vector (264) de movimiento decodificado. El decodificador 30 de vídeo, también puede explorar a la inversa los coeficientes (266) reproducidos para crear un bloque de coeficientes de transformada cuantificados. El decodificador 30 de vídeo, también puede cuantificar a la inversa y transformar a la inversa los coeficientes para producir un bloque (268) residual.
El decodificador 30 de vídeo puede interpolar también la ubicación de un bloque (270) de referencia de disparidad. Por ejemplo, el decodificador 30 de vídeo puede determinar un vector de disparidad para ubicar un bloque de referencia de disparidad que tiene el mismo valor de POC que el bloque actual, pero ubicado en una segunda vista diferente. En algunos casos, de acuerdo con aspectos de esta divulgación, si el vector de disparidad identifica una ubicación para el bloque de referencia de disparidad que no es una ubicación de enteros, el decodificador 30 de vídeo puede aplicar un filtro bilineal para interpolar la ubicación del bloque de referencia de disparidad.
Además, el decodificador 30 de vídeo puede determinar la ubicación de un bloque (272) de referencia de disparidad temporal. Por ejemplo, el decodificador 30 de vídeo puede combinar el vector de movimiento temporal y el vector de movimiento de disparidad para determinar la ubicación del bloque de referencia de disparidad temporal. De nuevo, en algunos casos, de acuerdo con aspectos de esta divulgación, si la combinación identifica una ubicación para el bloque de referencia de disparidad temporal que no es una ubicación de enteros, el decodificador 30 de vídeo puede aplicar un filtro bilineal para interpolar la ubicación del bloque de referencia de disparidad temporal.
El decodificador 30 de vídeo puede a continuación determinar un predictor residual para el bloque (274) actual. El decodificador 30 de vídeo puede determinar el predictor residual basándose en la diferencia entre el bloque de referencia de disparidad y el bloque de referencia de disparidad temporal. El decodificador 30 de vídeo puede aplicar un factor de ponderación al predictor residual resultante.
El decodificador 30 de vídeo puede decodificar finalmente el bloque actual combinando el bloque previsto y el residual (276). Por ejemplo, el decodificador 30 de vídeo puede combinar el bloque previsto, el residual decodificado (que representa un residual final) y el predictor residual.
La Figura 17 es un diagrama de flujo que ilustra un método de ejemplo para codificar un bloque actual de acuerdo con técnicas de esta divulgación. El bloque actual puede comprender una CU actual o una porción de la CU actual, por ejemplo, una PU actual. Aunque se describen con respecto al codificador 20 de vídeo (Figuras 1 y 2), debería entenderse que otros dispositivos pueden estar configurados para realizar un método similar al de la Figura 17.
En este ejemplo, el codificador 20 de vídeo determina inicialmente un modo de partición para predecir el bloque (280) actual. Por ejemplo, el codificador 20 de vídeo puede determinar si calcular una PU (por ejemplo, un modo de partición de 2Nx2N) o calcular más de una PU para el bloque actual. En este ejemplo, se supone que el codificador 20 de vídeo inter predice el bloque actual. Por ejemplo, la unidad 42 de estimación de movimiento puede calcular un vector de movimiento para el bloque actual realizando una búsqueda de movimiento de imágenes previamente codificadas, por ejemplo, imágenes de inter vista e imágenes temporales. Por lo tanto, la unidad 42 de estimación de movimiento puede producir un vector de movimiento temporal o un vector de movimiento de disparidad para codificar el bloque actual.
El codificador 20 de vídeo puede a continuación determinar si codificar datos que indican un factor de ponderación (y realizar predicción residual de inter vista) basándose en el modo (282) de partición determinado. En algunos ejemplos, el codificador 2 0 de vídeo puede desactivar la predicción residual de inter vista y omitir la codificación de un factor de ponderación si el modo de partición es un modo distinto del modo de partición 2Nx2N.
Si el codificador 20 de vídeo no codifica un factor de ponderación, el codificador 20 de vídeo puede realizar predicción residual de inter vista para predecir los datos residuales del bloque (284) actual. Por ejemplo, como se ha indicado anteriormente, el codificador 20 de vídeo puede determinar un bloque de referencia de disparidad indicado por un vector de disparidad del primer bloque, determinar un bloque de referencia de disparidad temporal combinando el vector de movimiento temporal y el vector de movimiento de disparidad, y determinar un predictor residual basándose en una diferencia entre el bloque de referencia de disparidad temporal y el bloque de referencia de disparidad. El codificador 20 de vídeo puede aplicar un factor de ponderación al predictor residual. El codificador 20 de vídeo puede a continuación calcular un bloque residual para el bloque (286) actual.
Si el codificador 20 de vídeo no codifica un factor de ponderación, (el ramal no de la etapa 282), el codificador 20 de vídeo puede desactivar la predicción residual de inter vista y puede omitir el cálculo del bloque residual para el bloque (286) actual. En este ejemplo, el codificador 20 de vídeo puede no señalizar un factor de ponderación para el proceso de predicción residual de inter vista. Es decir, en un ejemplo para propósitos de ilustración, el codificador 20 de vídeo puede no señalizar un elemento de sintaxis factor_index de ponderación en el flujo de bits.
En cualquier caso, el codificador 20 de vídeo calcula el bloque residual para el bloque actual, por ejemplo, para producir una unidad de transformada (TU) (286). Para calcular el bloque residual cuando no se usa predicción residual de inter vista, el codificador 2 0 de vídeo puede calcular una diferencia entre el bloque original no codificado y el bloque previsto para el bloque actual para producir el residual. Para calcular el bloque residual cuando se usa predicción residual de inter vista, el codificador 2 0 de vídeo puede calcular una diferencia entre el bloque original no codificado y el bloque previsto para el bloque actual para generar un primer residual. El codificador 20 de vídeo puede calcular a continuación un residual final basándose en la diferencia entre el primer residual y el predictor residual.
El codificador 20 de vídeo puede a continuación transformar y cuantificar coeficientes del bloque (288) residual. A continuación, el codificador 20 de vídeo puede explorar los coeficientes de transformada cuantificados del bloque (290) residual. Durante la exploración, o después de la exploración, el codificador 20 de vídeo puede codificar por entropía los coeficientes de transformada que incluyen, por ejemplo, un valor de ponderación de predicción residual de inter vista en casos en los que se activa y aplica (292) la predicción residual de inter vista. El codificador 20 de vídeo puede a continuación emitir los datos codificados por entropía para coeficientes del bloque y el valor de ponderación en casos en los que se activa y aplica (294) la predicción residual de inter vista.
La Figura 18 es un diagrama de flujo que ilustra un método de ejemplo para decodificar un bloque actual de datos de vídeo de acuerdo con técnicas de esta divulgación. El bloque actual puede comprender una CU actual o una porción de la CU actual (por ejemplo, una PU). Aunque se describen con respecto al decodificador 30 de vídeo (Figuras 1 y 3), debería entenderse que otros dispositivos pueden estar configurados para realizar un método similar al de la Figura 14.
En este ejemplo, el decodificador 30 de vídeo determina inicialmente un modo de partición para predecir el bloque (300) actual. Por ejemplo, el decodificador 30 de vídeo puede determinar si determinar una PU (por ejemplo, un modo de partición de 2Nx2N) o determinar más de una PU para el bloque actual. Esa estructura de subdivisión para el bloque puede señalizarse en el flujo de bits codificado. El decodificador 30 de vídeo también decodifica por entropía datos para coeficientes de transformada y un vector de movimiento para el bloque (302) actual. De nuevo, este ejemplo supone que el bloque actual está inter previsto.
El decodificador 30 de vídeo puede determinar a continuación si decodificar (por ejemplo, analizar, del flujo de bits codificado) un factor de ponderación (y realizar predicción residual de inter vista) basándose en el modo (304) de partición determinado. En algunos ejemplos, el decodificador 20 de vídeo puede desactivar la predicción residual de inter vista y omitir la decodificación de un factor de ponderación si el modo de partición es un modo distinto del modo de partición 2Nx2N. Es decir, por ejemplo, el decodificador 30 de vídeo puede determinar automáticamente (es decir, inferir) que el factor de ponderación es cero cuando el modo de partición es un modo distinto del modo de partición de 2Nx2N.
Si el decodificador 30 de vídeo decodifica un factor de ponderación, el decodificador 30 de vídeo puede realizar predicción residual de inter vista para predecir los datos residuales del bloque (306) actual. Por ejemplo, como se ha indicado anteriormente, el decodificador 30 de vídeo puede determinar un bloque de referencia de disparidad indicado por un vector de disparidad del primer bloque, determinar un bloque de referencia de disparidad temporal aplicando el vector de movimiento del bloque actual al bloque de referencia de disparidad, y determinar un predictor residual basándose en una diferencia entre el bloque de referencia de disparidad temporal y el bloque de referencia de disparidad. El decodificador 30 de vídeo puede aplicar también un factor de ponderación, como se señaliza en el flujo de bits, al predictor residual.
Si el decodificador 30 de vídeo no decodifica un factor de ponderación (el ramal no de la etapa 304),el decodificador 30 de vídeo puede desactivar un proceso de predicción residual de inter vista. El decodificador 30 de vídeo puede omitir la predicción del bloque actual usando el vector de movimiento.
En cualquier caso, el decodificador 30 de vídeo puede a continuación predecir el bloque actual usando el vector (308) de movimiento decodificado. El decodificador 30 de vídeo, a continuación, puede explorar a la inversa los coeficientes reproducidos (310), para crear un bloque de coeficientes de transformada cuantificados. El decodificador 30 de vídeo, a continuación, puede cuantificar a la inversa y transformar a la inversa los coeficientes para producir un bloque (312) residual. El decodificador 30 de vídeo puede decodificar finalmente el bloque actual combinando el bloque previsto y el bloque o bloques (314) residuales. Por ejemplo, en caso de que no se aplique predicción residual de inter vista, el decodificador 30 de vídeo puede simplemente combinar el bloque previsto y el residual decodificado. En casos en los que se aplica predicción residual de inter vista, el decodificador 30 de vídeo puede combinar el bloque previsto, el residual decodificado (que representa un residual final) y el predictor residual.
La Figura 19 es un diagrama de flujo que ilustra un método de ejemplo para codificar un bloque actual de acuerdo con técnicas de esta divulgación. El bloque actual puede comprender una CU actual o una porción de la CU actual, por ejemplo, una PU actual. Aunque se describen con respecto al codificador 20 de vídeo (Figuras 1 y 2), debería entenderse que otros dispositivos pueden estar configurados para realizar un método similar al de la Figura 19.
En este ejemplo, el codificador 20 de vídeo determina un vector de movimiento temporal y la imagen de referencia para el bloque (320) actual. Por ejemplo, el codificador 20 de vídeo puede calcular una o más unidades de predicción (PU) para el bloque actual. En este ejemplo, se supone que el codificador 20 de vídeo inter predice el bloque actual. Por ejemplo, la unidad 42 de estimación de movimiento puede calcular un vector de movimiento para el bloque actual realizando una búsqueda de movimiento de imágenes previamente codificadas, por ejemplo, imágenes de inter vista e imágenes temporales. Por lo tanto, la unidad 42 de estimación de movimiento puede producir un vector de movimiento temporal o un vector de movimiento de disparidad para codificar el bloque actual.
El codificador 20 de vídeo puede determinar a continuación un bloque de referencia de disparidad en la misma unidad de acceso que el bloque (322) actual. Por ejemplo, el codificador 20 de vídeo puede determinar un vector de disparidad para ubicar un bloque de referencia de disparidad que tiene el mismo valor de POC que el bloque actual, pero ubicado en una segunda vista diferente.
El codificador 20 de vídeo puede determinar si una memoria intermedia de imagen decodificada (también denominada en el presente documento como una memoria de imagen de referencia) contiene una imagen que tiene un valor de POC que es igual al valor de POC de la imagen (324) de referencia temporal. Por ejemplo, el codificador 20 de vídeo puede determinar si la imagen indicada por una combinación del vector de movimiento temporal y el vector de movimiento de disparidad está incluida en la memoria intermedia de imagen decodificada. En algunos casos, incluso si la imagen de referencia de disparidad temporal potencial está incluida en la memoria intermedia de imagen decodificada, el codificador 2 0 de vídeo puede determinar adicionalmente si la imagen está incluida en una o ambas listas de imágenes de referencia para el bloque de referencia de disparidad.
Si la imagen de referencia de disparidad temporal potencial está incluida en la memoria intermedia de imagen decodificada (y/o en una o ambas listas de imágenes de referencia del bloque de referencia de disparidad) (324) el codificador 2 0 de vídeo puede realizar un proceso de predicción residual de inter vista para predecir los datos residuales del bloque (326) actual. Por ejemplo, como se ha indicado anteriormente, el codificador 20 de vídeo puede determinar un bloque de referencia de disparidad indicado por un vector de disparidad del primer bloque, determinar un bloque de referencia de disparidad temporal aplicando el vector de movimiento del bloque actual al bloque de referencia de disparidad, y determinar un predictor residual basándose en una diferencia entre el bloque de referencia de disparidad temporal y el bloque de referencia de disparidad. El codificador 20 de vídeo puede aplicar un factor de ponderación al predictor residual. El codificador 20 de vídeo puede a continuación calcular un bloque residual para el bloque (330) actual.
Si la imagen de referencia de disparidad temporal potencial no está incluida en la memoria intermedia de imagen decodificada (o no está incluida en una o ambas listas de imágenes de referencia del bloque de referencia de disparidad) (el ramal no de la etapa 324), el codificador 20 de vídeo puede modificar el proceso (328) de predicción residual de inter vista. En algunos ejemplos, el codificador 20 de vídeo puede modificar el proceso desactivando el proceso. En otros ejemplos, el codificador 20 de vídeo puede seleccionar una imagen de referencia disponible (una imagen de referencia que está incluida en la memoria intermedia de imagen decodificada y/o en la lista de imágenes de referencia) y escalar el vector de movimiento temporal en consecuencia.
En cualquier caso, el codificador 20 de vídeo calcula el bloque residual para el bloque actual, por ejemplo, para producir una unidad de transformada (TU) (330). Para calcular el bloque residual cuando no se usa predicción residual de inter vista, el codificador 2 0 de vídeo puede calcular una diferencia entre el bloque original no codificado y el bloque previsto para el bloque actual para producir el residual. Para calcular el bloque residual cuando se usa predicción residual de inter vista, el codificador 2 0 de vídeo puede calcular una diferencia entre el bloque original no codificado y el bloque previsto para el bloque actual para generar un primer residual. El codificador 20 de vídeo puede calcular a continuación un residual final basándose en la diferencia entre el primer residual y el predictor residual.
El codificador 20 de vídeo puede a continuación transformar y cuantificar coeficientes del bloque (332) residual. A continuación, el codificador 20 de vídeo puede explorar los coeficientes de transformada cuantificados del bloque (334) residual. Durante la exploración, o después de la exploración, el codificador 20 de vídeo puede codificar por entropía los coeficientes de transformada que incluyen, por ejemplo, un valor de ponderación de predicción residual de inter vista en casos en los que se activa y aplica (336) la predicción residual de inter vista. El codificador 20 de vídeo puede a continuación emitir los datos codificados por entropía para coeficientes del bloque y el valor de ponderación en casos en los que se activa y aplica (338) la predicción residual de inter vista.
La Figura 20 es un diagrama de flujo que ilustra un método de ejemplo para decodificar un bloque actual de datos de vídeo de acuerdo con técnicas de esta divulgación. El bloque actual puede comprender una CU actual o una porción de la CU actual (por ejemplo, una PU). Aunque se describen con respecto al decodificador 30 de vídeo (Figuras 1 y 3), debería entenderse que otros dispositivos pueden estar configurados para realizar un método similar al de la Figura 14.
Inicialmente, el decodificador 30 de vídeo recibe datos para coeficientes de transformada y un vector de movimiento para el bloque (350) actual. De nuevo, este ejemplo supone que el bloque actual está inter previsto. El decodificador 30 de vídeo puede ubicar una imagen de referencia temporal usando el vector de movimiento recibido.
El decodificador 30 de vídeo puede determinar a continuación un bloque de referencia de disparidad en la misma unidad de acceso que el bloque (352) actual. Por ejemplo, el decodificador 30 de vídeo puede determinar un vector de disparidad para ubicar un bloque de referencia de disparidad que tiene el mismo valor de POC que el bloque actual, pero ubicado en una segunda vista diferente. En algunos casos, el decodificador 30 de vídeo puede determinar el vector de disparidad basándose en datos incluidos en el flujo de bits. En otros casos, el decodificador 30 de vídeo puede aplicar el mismo proceso que el codificador 2 0 de vídeo para determinar el vector de disparidad.
El decodificador 30 de vídeo puede determinar si una memoria intermedia de imagen decodificada (también denominada en el presente documento como una memoria de imagen de referencia) contiene una imagen que tiene un valor de POC que es igual al valor de POC de la imagen (354) de referencia temporal. Por ejemplo, el decodificador 30 de vídeo puede determinar si la imagen indicada por una combinación del vector de movimiento temporal y el vector de movimiento de disparidad está incluida en la memoria intermedia de imagen decodificada. En algunos casos, incluso si la imagen de referencia de disparidad temporal potencial está incluida en la memoria intermedia de imagen decodificada, el decodificador 30 de vídeo puede determinar adicionalmente si la imagen está incluida en una o más listas de imágenes de referencia para el bloque de referencia de disparidad.
Si la imagen de referencia de disparidad temporal potencial está incluida en la memoria intermedia de imagen decodificada (y/o en las listas de imágenes de referencia del bloque de referencia de disparidad), el decodificador 30 de vídeo puede realizar un proceso de predicción residual de inter vista para predecir los datos residuales del bloque (356) actual. Por ejemplo, como se ha indicado anteriormente, el decodificador 30 de vídeo puede determinar un bloque de referencia de disparidad indicado por un vector de disparidad del primer bloque, determinar un bloque de referencia de disparidad temporal aplicando el vector de movimiento del bloque actual al bloque de referencia de disparidad, y determinar un predictor residual basándose en una diferencia entre el bloque de referencia de disparidad temporal y el bloque de referencia de disparidad. El decodificador 30 de vídeo puede aplicar también un factor de ponderación, como se señaliza en el flujo de bits, al predictor residual.
Si la imagen de referencia de disparidad temporal potencial no está incluida en la memoria intermedia de imagen decodificada (y/o en las listas de imágenes de referencia del bloque de referencia de disparidad) (el ramal no de la etapa 354), el decodificador 30 de vídeo puede modificar el proceso (358) de predicción residual de inter vista. En algunos ejemplos, el decodificador 30 de vídeo puede modificar el proceso desactivando el proceso. En otros ejemplos, el decodificador 30 de vídeo puede seleccionar una imagen de referencia disponible (una imagen de referencia que está incluida en la memoria intermedia de imagen decodificada y/o en la lista de imágenes de referencia) y escalar el vector de movimiento temporal en consecuencia.
En cualquier caso, el decodificador 30 de vídeo puede a continuación predecir el bloque actual usando el vector (360) de movimiento decodificado. El decodificador 30 de vídeo, a continuación, puede explorar a la inversa los coeficientes reproducidos (362), para crear un bloque de coeficientes de transformada cuantificados. El decodificador 30 de vídeo, a continuación, puede cuantificar a la inversa y transformar a la inversa los coeficientes para producir un bloque (364) residual. El decodificador 30 de vídeo puede decodificar finalmente el bloque actual combinando el bloque previsto y el bloque o bloques (366) residuales. Por ejemplo, en caso de que no se aplique predicción residual de inter vista, el decodificador 30 de vídeo puede simplemente combinar el bloque previsto y el residual decodificado. En casos en los que se aplica predicción residual de inter vista, el decodificador 30 de vídeo puede combinar el bloque previsto, el residual decodificado (que representa un residual final) y el predictor residual.
Ha de reconocerse que, dependiendo del ejemplo, ciertos actos o eventos de cualquiera de las técnicas descritas en el presente documento pueden realizarse en una secuencia diferente, pueden añadirse, fusionarse o excluirse por completo (por ejemplo, no todos los actos o eventos descritos son necesarios para la puesta en práctica de las técnicas). Además, en ciertos ejemplos, los actos o eventos pueden realizare de manera concurrente, por ejemplo, a través de procesamiento de múltiples hilos, procesamiento de interrupción o múltiples procesadores en lugar de secuencialmente.
Ciertos aspectos de esta divulgación se han descrito con respecto al desarrollo de la norma de HEVC para propósitos de ilustración. Sin embargo, las técnicas descritas en esta divulgación pueden ser útiles para otros procesos de codificación/decodificación de vídeo, incluyendo otros procesos de codificación/decodificación de vídeo convencionales o de propiedad exclusiva aún por desarrollar.
Las técnicas anteriormente descritas pueden realizarse por el codificador 20 de vídeo (Figuras 1 y 2) y/o el decodificador 30 de vídeo (Figuras 1 y 3), ambos de los cuales pueden denominarse, en general, como un codificador de vídeo. Asimismo, la codificación/decodificación de vídeo se puede referir a la codificación de vídeo o a la decodificación de vídeo, según sea aplicable.
Debería entenderse que, dependiendo del ejemplo, ciertos actos o eventos de cualquiera de los métodos descritos en el presente documento pueden realizarse en una secuencia diferente, pueden añadirse, unirse o ejecutarse por completo (por ejemplo, no todos los actos o eventos descritos son necesarios para la práctica del método). Además, en ciertos ejemplos, los actos o eventos pueden realizare de manera concurrente, por ejemplo, a través de procesamiento de múltiples hilos, procesamiento de interrupción o múltiples procesadores en lugar de secuencialmente. Además, aunque se describen ciertos aspectos de esta divulgación como que se realizan por un único módulo o unidad para los propósitos de claridad, debería entenderse que las técnicas de esta divulgación pueden realizarse por una combinación de unidades o módulos asociados con un codificador de vídeo.
Aunque se han descrito anteriormente combinaciones particulares de diversos aspectos de las técnicas, estas combinaciones se proporcionan simplemente para ilustrar ejemplos de las técnicas descritas en esta divulgación. Por consiguiente, las técnicas de esta divulgación no deben estar limitadas a estas combinaciones de ejemplo y pueden abarcar cualquier combinación concebible de los diversos aspectos de las técnicas descritas en esta divulgación.
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 almacenarse en o transmitirse a través como una o más instrucciones o código en un medio legible por ordenador y ejecutarse por una unidad de procesamiento basada en hardware. Medio legible por ordenador puede incluir medio de almacenamiento legible por ordenador, que corresponde a un medio de almacenamiento tal como un medio de almacenamiento de datos o medios de comunicación que incluyen cualquier medio que facilite la transferencia de un programa informático desde un lugar a otro, por ejemplo, de acuerdo con un protocolo de comunicación.
De esta manera, medio legible por ordenador generalmente puede corresponder a (1) medio de almacenamiento legible por ordenador tangible que es no transitorio o (2 ) un medio de comunicación tal como una señal u onda portadora. El medio de almacenamiento de datos puede ser cualquier medio disponible que pueda accederse por uno o más ordenadores o uno o más procesadores para recuperar instrucciones, código y/o estructuras de datos para la implementación de las técnicas descritas en esta divulgación. Un producto de programa informático puede incluir un medio legible por ordenador.
A modo de ejemplo, y no de limitación, dichos medios de almacenamiento legibles por ordenador pueden comprender RAM, ROM, EEPROM, CD-ROM u otro almacenamiento en disco óptico, almacenamiento en disco magnético u otros dispositivos de almacenamiento magnético, memoria flash o cualquier otro medio que se pueda utilizar para almacenar el código de programa deseado en forma de instrucciones o estructuras de datos y al que se puede acceder mediante un ordenador. Además, cualquier conexión se denomina apropiadamente un medio legible por ordenador. Por ejemplo, si las instrucciones se transmiten desde un sitio web, servidor u otra fuente remota usando un cable coaxial, cable de fibra óptica, par trenzado, línea digital de abonado (DSL) o tecnologías inalámbricas tales como infrarrojos, radio y microondas, entonces el cable coaxial, cable de fibra óptica, par trenzado, DSL o tecnologías inalámbricas tales como infrarrojos, radio y microondas se incluyen en la definición de medio.
Sin embargo, debería entenderse que medios de almacenamiento legibles por ordenador y medios de almacenamiento de datos no incluyen conexiones, ondas portadoras, señales u otros medios transitorios, sino que, en su lugar, se refieren a medios de almacenamiento tangibles no transitorios. Disco magnético y disco óptico, como se usan en el presente documento, incluyen disco compacto (CD), disco láser, disco óptico, disco versátil digital (DVD), disco flexible y disco Blu-ray donde los discos magnéticos normalmente reproducen datos magnéticamente, mientras que los discos ópticos reproducen datos ópticamente con láseres. Combinaciones de lo anterior deberían incluirse también dentro del alcance de medios legibles por ordenador.
Las instrucciones pueden ejecutarse por uno o más procesadores, tal como uno o más procesadores de señales digitales (DSP), microprocesadores de propósito general, circuitos integrados específicos de la aplicación (ASIC), matrices lógicas programables en campo (FPGA) u otra circuitería integrada o de lógica discreta equivalente. Por consiguiente, el término "procesador", como se usa en el presente documento, puede hacer referencia a cualquiera de la 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 especializados configurados para codificar y decodificar, o incorporarse en un códec combinado. También, las técnicas podrían implementarse totalmente 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 microteléfono inalámbrico, un circuito integrado (CI) o un conjunto de CI (por ejemplo, un conjunto de chips). Se describen diversos componentes, módulos o unidades en esta divulgación para destacar aspectos funcionales de dispositivos configurados para realizar las técnicas divulgadas, pero no requieren necesariamente su realización por diferentes unidades de hardware. En su lugar, como se ha descrito anteriormente, diversas unidades pueden combinarse en una unidad de hardware de códec o proporcionarse mediante una recopilación de unidades de hardware inter operativas, que incluyen uno o más procesadores, como se ha descrito anteriormente, en conjunto con software y/o firmware adecuado.
Se han descrito diversos aspectos de la divulgación. Estos y otros aspectos están dentro del alcance de las siguientes reivindicaciones.

Claims (1)

  1. REIVINDICACIONES
    1. Un método de decodificación de datos de vídeo de múltiples vistas, comprendiendo el método:
    determinar, para un primer bloque de datos de vídeo en una primera capa de datos de vídeo, un vector de movimiento temporal y bloque de referencia temporal asociado en una imagen de referencia temporal para predecir el primer bloque, en donde la imagen de referencia temporal tiene un valor de recuento de orden de imagen, y en donde el primer bloque y el bloque de referencia temporal están incluidos en una primera vista;
    determinar un bloque de referencia de disparidad en una imagen de referencia de disparidad indicado por un vector de disparidad asociado con el primer bloque, en donde la imagen de referencia de disparidad está incluida en una unidad de acceso que incluye una imagen que contiene el primer bloque, y está incluida en una segunda vista, siendo diferente la segunda vista de la primera vista;
    determinar si una memoria intermedia de imagen decodificada contiene una imagen de referencia de disparidad temporal en la segunda vista y que tiene el mismo valor de recuento de orden de imagen de la imagen de referencia temporal, en donde la imagen de referencia de disparidad temporal está ubicada basándose en una combinación del vector de movimiento temporal y el vector de disparidad;
    basándose en una determinación de que la memoria intermedia de imagen decodificada no contiene la imagen de referencia de disparidad temporal en la segunda vista y que tiene el mismo valor de recuento de orden de imagen de la imagen de referencia temporal, modificar un proceso de predicción residual de inter vista, que comprende generar un predictor residual para predecir datos residuales asociados con el primer bloque, en donde el predictor residual se genera basándose en diferencias entre muestras del bloque de referencia de disparidad y correspondientes muestras del bloque de referencia de disparidad temporal, y en donde los datos residuales asociados con el primer bloque representan diferencias entre muestras del primer bloque y correspondientes muestras del bloque de referencia temporal; y
    decodificar los datos residuales del primer bloque de datos de vídeo con el proceso de predicción residual de inter vista modificado, en donde la modificación del proceso de predicción residual de inter vista comprende escalar el vector de movimiento temporal para indicar una imagen temporalmente más cercana a la imagen de referencia de disparidad.
    2. Un método de codificación de datos de vídeo de múltiples vistas, comprendiendo el método:
    determinar, para un primer bloque de datos de vídeo en una primera capa de datos de vídeo, un vector de movimiento temporal y bloque de referencia temporal asociado en una imagen de referencia temporal para predecir el primer bloque, en donde la imagen de referencia temporal tiene un valor de recuento de orden de imagen, y en donde el primer bloque y el bloque de referencia temporal están incluidos en una primera vista;
    determinar un bloque de referencia de disparidad en una imagen de referencia de disparidad indicado por un vector de disparidad asociado con el primer bloque, en donde la imagen de referencia de disparidad está incluida en una unidad de acceso que incluye una imagen que contiene el primer bloque, y está incluida en una segunda vista, siendo diferente la segunda vista de la primera vista;
    determinar si una memoria intermedia de imagen decodificada contiene una imagen de referencia de disparidad temporal en la segunda vista y que tiene el mismo valor de recuento de orden de imagen de la imagen de referencia temporal, en donde la imagen de referencia de disparidad temporal está ubicada basándose en una combinación del vector de movimiento temporal y el vector de disparidad;
    basándose en una determinación de que la memoria intermedia de imagen decodificada no contiene la imagen de referencia de disparidad temporal en la segunda vista y que tiene el mismo valor de recuento de orden de imagen de la imagen de referencia temporal, modificar un proceso de predicción residual de inter vista, que comprende generar un predictor residual para predecir datos residuales asociados con el primer bloque, en donde el predictor residual se genera basándose en diferencias entre muestras del bloque de referencia de disparidad y correspondientes muestras del bloque de referencia de disparidad temporal, y en donde los datos residuales asociados con el primer bloque representan diferencias entre muestras del primer bloque y correspondientes muestras del bloque de referencia temporal; y
    codificar los datos residuales del primer bloque de datos de vídeo con el proceso de predicción residual de inter vista modificado, en donde la modificación del proceso de predicción residual de inter vista comprende escalar el vector de movimiento temporal para indicar una imagen temporalmente más cercana a la imagen de referencia de disparidad.
    3. El método de la reivindicación 1 o la reivindicación 2, que comprende adicionalmente:
    determinar si al menos una lista de imágenes de referencia para una imagen que contiene el bloque de referencia de disparidad contiene una imagen de referencia de disparidad temporal que tiene el valor de recuento de orden de imagen de la imagen de referencia temporal; y
    basándose en la determinación de que al menos una lista de imágenes de referencia para una imagen que contiene el bloque de referencia de disparidad no contiene una imagen de referencia de disparidad temporal que tiene el valor de recuento de orden de imagen de la imagen de referencia temporal, modificar el proceso de predicción residual de inter vista para predecir datos residuales del primer bloque escalando el vector de movimiento temporal para indicar una imagen temporalmente más cercana a la imagen de referencia de disparidad.
    4. El método de la reivindicación 1 o la reivindicación 2, en donde el bloque de referencia de disparidad está asociado con una primera lista de imágenes de referencia y una segunda lista de imágenes de referencia, comprendiendo adicionalmente el método:
    cuando ni la primera lista de imágenes de referencia ni la segunda lista de imágenes de referencia contiene una imagen de referencia de disparidad temporal que tiene el valor de recuento de orden de imagen de la imagen de referencia temporal, modificar el proceso de predicción residual de inter vista para predecir datos residuales del primer bloque escalando el vector de movimiento temporal para indicar una imagen temporalmente más cercana a la imagen de referencia de disparidad.
    5. Un aparato para decodificar datos de vídeo de múltiples vistas, comprendiendo el aparato:
    medios para determinar, para un primer bloque de datos de vídeo en una primera capa de datos de vídeo, un vector de movimiento temporal y bloque de referencia temporal asociado en una imagen de referencia temporal para predecir el primer bloque, en donde la imagen de referencia temporal tiene un valor de recuento de orden de imagen, y en donde el primer bloque y el bloque de referencia temporal están incluidos en una primera vista;
    medios para determinar un bloque de referencia de disparidad en una imagen de referencia de disparidad indicado por un vector de disparidad asociado con el primer bloque, en donde la imagen de referencia de disparidad está incluida en una unidad de acceso que incluye una imagen que contiene el primer bloque, y está incluida en una segunda vista, siendo diferente la segunda vista del primer bloque;
    medios para determinar si una memoria intermedia de imagen decodificada contiene una imagen de referencia de disparidad temporal en la segunda vista y que tiene el mismo valor de recuento de orden de imagen de la imagen de referencia temporal, en donde la imagen de referencia de disparidad temporal está ubicada basándose en una combinación del vector de movimiento temporal y el vector de disparidad;
    medios para modificar un proceso de predicción residual de inter vista, basándose en una determinación de que la memoria intermedia de imagen decodificada no contiene la imagen de referencia de disparidad temporal en la segunda vista y que tiene el mismo valor de recuento de orden de imagen de la imagen de referencia temporal, comprendiendo el proceso de predicción residual de inter vista generar un predictor residual para predecir datos residuales asociados con el primer bloque, en donde el predictor residual se genera basándose en diferencias entre muestras del bloque de referencia de disparidad y correspondientes muestras del bloque de referencia de disparidad temporal, y en donde los datos residuales asociados con el primer bloque representan diferencias entre muestras del primer bloque y correspondientes muestras del bloque de referencia temporal; y
    medios para decodificar el residual para el primer bloque de datos de vídeo con el proceso de predicción residual de inter vista modificado,
    en donde modificar el proceso de predicción residual de inter vista comprende
    escalar el vector de movimiento temporal para indicar una imagen temporalmente más cercana a la imagen de referencia de disparidad.
    6. Un aparato para codificar datos de vídeo de múltiples vistas, comprendiendo el aparato:
    medios para determinar, para un primer bloque de datos de vídeo en una primera capa de datos de vídeo, un vector de movimiento temporal y bloque de referencia temporal asociado en una imagen de referencia temporal para predecir el primer bloque, en donde la imagen de referencia temporal tiene un valor de recuento de orden de imagen, y en donde el primer bloque y el bloque de referencia temporal están incluidos en una primera vista;
    medios para determinar un bloque de referencia de disparidad en una imagen de referencia de disparidad indicado por un vector de disparidad asociado con el primer bloque, en donde la imagen de referencia de disparidad está incluida en una unidad de acceso que incluye una imagen que contiene el primer bloque, y está incluida en una segunda vista, siendo diferente la segunda vista del primer bloque;
    medios para determinar si una memoria intermedia de imagen decodificada contiene una imagen de referencia de disparidad temporal en la segunda vista y que tiene el mismo valor de recuento de orden de imagen de la imagen de referencia temporal, en donde la imagen de referencia de disparidad temporal está ubicada basándose en una combinación del vector de movimiento temporal y el vector de disparidad;
    medios para modificar un proceso de predicción residual de inter vista, basándose en una determinación de que la memoria intermedia de imagen decodificada no contiene la imagen de referencia de disparidad temporal en la segunda vista y que tiene el mismo valor de recuento de orden de imagen de la imagen de referencia temporal, comprendiendo el proceso de predicción residual de inter vista generar un predictor residual para predecir datos residuales asociados con el primer bloque, en donde el predictor residual se genera basándose en diferencias entre muestras del bloque de referencia de disparidad y correspondientes muestras del bloque de referencia de disparidad temporal, y en donde los datos residuales asociados con el primer bloque representan diferencias entre muestras del primer bloque y correspondientes muestras del bloque de referencia temporal; y
    medios para codificar el residual para el primer bloque de datos de vídeo con el proceso de predicción residual de inter vista modificado,
    en donde modificar el proceso de predicción residual de inter vista comprende
    escalar el vector de movimiento temporal para indicar una imagen temporalmente más cercana a la imagen de referencia de disparidad.
    7. El aparato de la reivindicación 5, que comprende adicionalmente medios para obtener, de un flujo de bits codificado, un residual para el primer bloque, en donde el residual representa una diferencia entre los datos residuales del primer bloque y el predictor residual; y
    medios para reconstruir el bloque actual basándose en una combinación del residual, el predictor residual y el bloque de referencia temporal.
    8. El aparato de la reivindicación 6 , que comprende adicionalmente
    medios para determinar los datos residuales para el primer bloque; y
    medios para determinar un residual basándose en una diferencia entre los datos residuales del primer bloque y el predictor residual; y
    medios para codificar datos que indican el residual en un flujo de bits.
    9. El aparato de la reivindicación 5 o la reivindicación 6 , que comprende adicionalmente:
    medios para determinar si al menos una lista de imágenes de referencia para una imagen que contiene el bloque de referencia de disparidad contiene una imagen de referencia de disparidad temporal que tiene el valor de recuento de orden de imagen de la imagen de referencia temporal; y
    medios para, basándose en la determinación de que al menos una lista de imágenes de referencia para una imagen que contiene el bloque de referencia de disparidad no contiene una imagen de referencia de disparidad temporal que tiene el valor de recuento de orden de imagen de la imagen de referencia temporal, modificar el proceso de predicción residual de inter vista para predecir datos residuales del primer bloque escalando el vector de movimiento temporal para indicar una imagen temporalmente más cercana a la imagen de referencia de disparidad.
    10. El aparato de la reivindicación 5 o la reivindicación 6 , en donde el bloque de referencia de disparidad está asociado con una primera lista de imágenes de referencia y una segunda lista de imágenes de referencia, comprendiendo adicionalmente el aparato:
    medios para, cuando ni la primera lista de imágenes de referencia ni la segunda lista de imágenes de referencia contiene una imagen de referencia de disparidad temporal que tiene el valor de recuento de orden de imagen de la imagen de referencia temporal, modificar el proceso de predicción residual de inter vista para predecir datos residuales del primer bloque escalando el vector de movimiento temporal para indicar una imagen temporalmente más cercana a la imagen de referencia de disparidad.
    11. Un medio legible por ordenador no transitorio que tiene instrucciones almacenadas en el mismo que, cuando se ejecutan, hacen que uno o más procesadores realicen el método de acuerdo con cualquiera de las reivindicaciones 1 ­ 4.
ES13818046T 2012-12-07 2013-12-06 Predicción residual avanzada en codificación de vídeo escalable y de múltiples vistas Active ES2901937T3 (es)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201261734874P 2012-12-07 2012-12-07
US14/098,369 US10334259B2 (en) 2012-12-07 2013-12-05 Advanced residual prediction in scalable and multi-view video coding
PCT/US2013/073602 WO2014089445A1 (en) 2012-12-07 2013-12-06 Advanced residual prediction in scalable and multi-view video coding

Publications (1)

Publication Number Publication Date
ES2901937T3 true ES2901937T3 (es) 2022-03-24

Family

ID=50880948

Family Applications (2)

Application Number Title Priority Date Filing Date
ES13814698T Active ES2974538T3 (es) 2012-12-07 2013-12-06 Predicción residual avanzada en codificación de vídeo escalable y multi-vista
ES13818046T Active ES2901937T3 (es) 2012-12-07 2013-12-06 Predicción residual avanzada en codificación de vídeo escalable y de múltiples vistas

Family Applications Before (1)

Application Number Title Priority Date Filing Date
ES13814698T Active ES2974538T3 (es) 2012-12-07 2013-12-06 Predicción residual avanzada en codificación de vídeo escalable y multi-vista

Country Status (9)

Country Link
US (4) US9948939B2 (es)
EP (4) EP2929686B1 (es)
JP (6) JP6275736B2 (es)
KR (4) KR102085395B1 (es)
CN (4) CN104904213B (es)
ES (2) ES2974538T3 (es)
HU (1) HUE056984T2 (es)
TW (4) TWI538482B (es)
WO (4) WO2014089461A1 (es)

Families Citing this family (76)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
PL4124034T3 (pl) * 2010-12-22 2024-01-03 Lg Electronics Inc. Predykcja wewnątrzramkowa w kodowaniu wideo
EP2723079A4 (en) 2011-06-15 2015-03-04 Korea Electronics Telecomm MODULABLE VIDEO ENCODING AND DECODING METHOD AND DEVICE APPLYING THE SAME
KR20130050149A (ko) * 2011-11-07 2013-05-15 오수미 인터 모드에서의 예측 블록 생성 방법
US9729884B2 (en) * 2012-01-18 2017-08-08 Lg Electronics Inc. Method and device for entropy coding/decoding
US10085024B2 (en) * 2012-04-13 2018-09-25 Qualcomm Incorporated Lookup table for rate distortion optimized quantization
JP6341426B2 (ja) * 2012-09-10 2018-06-13 サン パテント トラスト 画像復号化方法および画像復号化装置
CN102883163B (zh) * 2012-10-08 2014-05-28 华为技术有限公司 用于运动矢量预测的运动矢量列表建立的方法、装置
WO2014078068A1 (en) * 2012-11-13 2014-05-22 Intel Corporation Content adaptive transform coding for next generation video
US9948939B2 (en) 2012-12-07 2018-04-17 Qualcomm Incorporated Advanced residual prediction in scalable and multi-view video coding
JP5952733B2 (ja) * 2012-12-28 2016-07-13 日本電信電話株式会社 映像符号化方法、映像復号方法、映像符号化装置、映像復号装置、映像符号化プログラム、映像復号プログラム及び記録媒体
US20140192881A1 (en) * 2013-01-07 2014-07-10 Sony Corporation Video processing system with temporal prediction mechanism and method of operation thereof
KR20140121315A (ko) 2013-04-04 2014-10-15 한국전자통신연구원 참조 픽처 리스트를 이용한 다 계층 기반의 영상 부호화/복호화 방법 및 그 장치
US8958477B2 (en) * 2013-04-05 2015-02-17 Vidyo, Inc. Multiple reference layer prediction signaling techniques
CN105103563B (zh) * 2013-04-08 2019-05-21 寰发股份有限公司 关于缩放列表数据信令的方法和装置
KR101761331B1 (ko) * 2013-04-12 2017-07-25 니폰 덴신 덴와 가부시끼가이샤 영상 부호화 장치 및 방법, 영상 복호 장치 및 방법과 이들의 프로그램
EP2932712A4 (en) * 2013-06-11 2016-11-30 Hfi Innovation Inc METHOD FOR THE INTERMEDIATE REST PRESENTATION WITH REDUCED COMPLEXITY IN A THREE-DIMENSIONAL VIDEO CODING
EP3013052A4 (en) * 2013-07-12 2017-02-01 Samsung Electronics Co., Ltd. Method and apparatus for inter-layer encoding and method and apparatus for inter-layer decoding video using residual prediction
CN105723712B (zh) 2013-10-14 2019-06-28 韩国电子通信研究院 基于多层的图像编码/解码方法和设备
US10972751B2 (en) * 2013-10-17 2021-04-06 Nippon Telegraph And Telephone Corporation Video encoding apparatus and method, and video decoding apparatus and method
US10063887B2 (en) * 2013-10-18 2018-08-28 Lg Electronics Inc. Video decoding apparatus and method for decoding multi-view video
US20160255368A1 (en) * 2013-10-18 2016-09-01 Lg Electronics Inc. Method and apparatus for coding/decoding video comprising multi-view
US10321157B2 (en) 2013-10-18 2019-06-11 Lg Electronics Inc. Video decoding method and apparatus for decoding multi-view video
US10178384B2 (en) * 2013-12-19 2019-01-08 Sharp Kabushiki Kaisha Image decoding device, image coding device, and residual prediction device
US10110925B2 (en) * 2014-01-03 2018-10-23 Hfi Innovation Inc. Method of reference picture selection and signaling in 3D and multi-view video coding
EP3117606B1 (en) * 2014-03-13 2018-12-26 Qualcomm Incorporated Simplified advanced residual prediction for 3d-hevc
WO2015196364A1 (en) * 2014-06-24 2015-12-30 Mediatek Singapore Pte. Ltd. Methods for inter-view advanced residual prediction
CN105393535B (zh) * 2014-06-24 2018-10-12 寰发股份有限公司 3d视频编码中的视图间先进残差预测方法
US9924191B2 (en) * 2014-06-26 2018-03-20 Qualcomm Incorporated Filters for advanced residual prediction in video coding
EP3247114A4 (en) * 2015-01-21 2018-01-17 Samsung Electronics Co., Ltd. Method and apparatus for decoding inter-layer video, and method and apparatus for encoding inter-layer video
WO2016124710A1 (en) * 2015-02-05 2016-08-11 Fraunhofer Gesellschaft Zur Foerderung Der Angewandten Forschung E.V. Multi-view video codec supporting residual prediction
CN105872539B (zh) 2015-02-08 2020-01-14 同济大学 图像编码方法和装置及图像解码方法和装置
US10506244B2 (en) 2015-03-06 2019-12-10 Qualcomm Incorporated Method and apparatus for video coding using adaptive tile sizes
US10958927B2 (en) 2015-03-27 2021-03-23 Qualcomm Incorporated Motion information derivation mode determination in video coding
US10250904B2 (en) * 2015-05-05 2019-04-02 Avago Technologies International Sales Pte. Limited Apparatus and method for overlapped motion compensation for video coding
KR101780444B1 (ko) * 2015-10-29 2017-09-21 삼성에스디에스 주식회사 영상 신호의 노이즈 제거 방법
US9883137B2 (en) * 2015-11-03 2018-01-30 Qualcomm Incorporated Updating regions for display based on video decoding mode
CN109121465B (zh) * 2016-05-06 2023-06-06 交互数字麦迪逊专利控股公司 用于运动补偿残差预测的系统和方法
CN116708782A (zh) * 2016-07-12 2023-09-05 韩国电子通信研究院 图像编码/解码方法以及用于该方法的记录介质
CN116600109A (zh) 2016-08-11 2023-08-15 Lx 半导体科技有限公司 图像编码/解码方法和图像数据的发送方法
WO2018034373A1 (ko) * 2016-08-19 2018-02-22 엘지전자(주) 영상 처리 방법 및 이를 위한 장치
US10390015B2 (en) * 2016-08-26 2019-08-20 Qualcomm Incorporated Unification of parameters derivation procedures for local illumination compensation and cross-component linear model prediction
CN114359487A (zh) * 2016-09-16 2022-04-15 松下电器(美国)知识产权公司 三维数据制作方法以及三维数据制作装置
CN118474340A (zh) 2016-10-04 2024-08-09 有限公司B1影像技术研究所 图像数据编码/解码方法、介质和传输数据的方法
EP3349451A1 (en) * 2017-01-11 2018-07-18 Thomson Licensing Method and apparatus for selecting a coding mode used for encoding/decoding a residual block
US11252464B2 (en) 2017-06-14 2022-02-15 Mellanox Technologies, Ltd. Regrouping of video data in host memory
US12058309B2 (en) * 2018-07-08 2024-08-06 Mellanox Technologies, Ltd. Application accelerator
US20200014945A1 (en) * 2018-07-08 2020-01-09 Mellanox Technologies, Ltd. Application acceleration
CN109327699B (zh) * 2017-07-31 2021-07-16 华为技术有限公司 一种图像的处理方法、终端和服务器
US10432944B2 (en) 2017-08-23 2019-10-01 Avalon Holographics Inc. Layered scene decomposition CODEC system and methods
EP3692722A1 (en) * 2017-10-02 2020-08-12 Fraunhofer Gesellschaft zur Förderung der Angewand Efficient immersive streaming
US10785494B2 (en) * 2017-10-11 2020-09-22 Qualcomm Incorporated Low-complexity design for FRUC
US10931963B2 (en) * 2017-12-07 2021-02-23 Tencent America LLC Method and apparatus for video coding
CN110868591A (zh) 2018-08-28 2020-03-06 北京字节跳动网络技术有限公司 用扩展四叉树进行分割时的上下文编码
BR112021004890A2 (pt) 2018-09-13 2021-06-01 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e. V. intrapredições ponderadas lineares afins
US10904528B2 (en) * 2018-09-28 2021-01-26 Tencent America LLC Techniques for QP selection for 360 image and video coding
WO2020084465A1 (en) * 2018-10-22 2020-04-30 Beijing Bytedance Network Technology Co., Ltd. Simplified coding of generalized bi-directional index
CN111093073B (zh) 2018-10-24 2024-04-19 北京字节跳动网络技术有限公司 用于子块运动矢量预测的基于搜索的运动候选推导
GB201817784D0 (en) * 2018-10-31 2018-12-19 V Nova Int Ltd Methods,apparatuses, computer programs and computer-readable media
WO2020113074A1 (en) * 2018-11-27 2020-06-04 Op Solutions, Llc Adaptive temporal filter for an unavailable reference picture cross-reference to related applications
EP3895420A4 (en) * 2018-12-18 2022-08-31 HFI Innovation Inc. METHOD AND APPARATUS FOR CODING OR DECODING CONSTRAINED VIDEO BLOCKS DURING BLOCK PARTITIONING
PT3891980T (pt) * 2018-12-21 2024-07-22 Huawei Tech Co Ltd Método e aparelho de filtragem de interpolação para codificação preditiva
CN113196753B (zh) 2018-12-28 2023-05-12 华为技术有限公司 用于预测译码的插值滤波锐化方法和装置
JP7317973B2 (ja) 2019-01-08 2023-07-31 華為技術有限公司 画像予測方法、機器、及びシステム、装置、及び記憶媒体
WO2020145855A1 (en) * 2019-01-12 2020-07-16 Huawei Technologies Co., Ltd. A video encoder, a video decoder and corresponding methods of processing mmvd distance
CN113273217A (zh) 2019-02-03 2021-08-17 北京字节跳动网络技术有限公司 非对称四叉树分割
CN113632464B (zh) * 2019-05-21 2023-04-28 华为技术有限公司 分量间预测的方法和设备
KR102627821B1 (ko) 2019-06-04 2024-01-23 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 이웃 블록 정보를 사용한 모션 후보 리스트 구성
EP3963889A4 (en) 2019-06-04 2023-01-25 Beijing Bytedance Network Technology Co., Ltd. CONDITIONAL IMPLEMENTATION OF A MOVEMENT CANDIDATE LIST CONSTRUCTION PROCESS
CN114175636B (zh) 2019-07-14 2024-01-12 北京字节跳动网络技术有限公司 自适应参数集中的自适应环路滤波的指示
MX2022000716A (es) 2019-07-26 2022-02-23 Beijing Bytedance Network Tech Co Ltd Determinación del modo de particionado de imagen con base en el tamaño de bloque.
WO2021057996A1 (en) * 2019-09-28 2021-04-01 Beijing Bytedance Network Technology Co., Ltd. Geometric partitioning mode in video coding
US11451802B2 (en) * 2020-04-17 2022-09-20 Tencent America LLC Method and apparatus for point cloud coding
US11438628B2 (en) * 2020-06-03 2022-09-06 Tencent America LLC Hash-based accessing of geometry occupancy information for point cloud coding
US20210409706A1 (en) * 2020-06-30 2021-12-30 Tencent America LLC Low latency cross component intra prediction mode
US11941856B2 (en) * 2020-08-18 2024-03-26 Tencent America LLC Predictive tree-based geometry coding for a point cloud
CN112950570B (zh) * 2021-02-25 2022-05-17 昆明理工大学 一种结合深度学习与密集连续中心点的裂纹检测方法

Family Cites Families (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006517364A (ja) 2003-01-07 2006-07-20 トムソン ライセンシング マクロブロック・パーティションのインター/イントラ混在ビデオ符号化
US7822281B2 (en) 2003-10-31 2010-10-26 Canon Kabushiki Kaisha Digital video compression
US7778474B2 (en) 2004-10-06 2010-08-17 Nippon Telegraph And Telephone Corporation Scalable encoding method and apparatus, scalable decoding method and apparatus, programs therefor, and storage media for storing the programs
EP1878257A1 (en) * 2005-04-12 2008-01-16 Nokia Corporation Method and system for motion compensated fine granularity scalable video coding with drift control
KR100728009B1 (ko) 2005-08-22 2007-06-13 삼성전자주식회사 다시점 동영상을 부호화하는 방법 및 장치
JP4528255B2 (ja) 2005-12-06 2010-08-18 日本放送協会 映像復号装置および映像復号プログラム
US20100091845A1 (en) * 2006-03-30 2010-04-15 Byeong Moon Jeon Method and apparatus for decoding/encoding a video signal
PL2008460T3 (pl) * 2006-03-30 2017-10-31 Lg Electronics Inc Sposób i urządzenie do dekodowania/kodowania sygnału wideo
JP2007336275A (ja) 2006-06-15 2007-12-27 Toshiba Corp 動画像再生装置
CN101473655B (zh) 2006-06-19 2011-06-08 Lg电子株式会社 用于处理多视点视频信号的方法和装置
CN101166282B (zh) 2006-10-16 2010-12-08 华为技术有限公司 摄像机参数编码传输的方法
ZA200902051B (en) 2006-10-24 2010-07-28 Thomson Licensing Picture management for multi-view video coding
BRPI0718421A2 (pt) * 2006-10-24 2013-11-12 Thomson Licensing Gerenciamento de quadro para codificação de vídeo de multivistas
WO2008053746A1 (fr) * 2006-10-30 2008-05-08 Nippon Telegraph And Telephone Corporation Procédé de génération d'informations de référence prédictives, procédé de codage et de décodage d'image dynamiques, leur dispositif, leur programme et support de stockage contenant le programme
CN101690231A (zh) 2007-06-28 2010-03-31 汤姆森特许公司 多视图编码视频的单环解码
CN101415115B (zh) 2007-10-15 2011-02-02 华为技术有限公司 基于运动跳跃模式的视频编解码方法及其编解码器
CN102055967B (zh) 2009-10-28 2012-07-04 中国移动通信集团公司 多视点视频的视角切换以及编码方法和装置
JP5321426B2 (ja) 2009-11-26 2013-10-23 株式会社Jvcケンウッド 画像符号化装置、画像復号化装置、画像符号化方法、及び画像復号化方法
US9451197B1 (en) 2010-04-12 2016-09-20 UV Networks, Inc. Cloud-based system using video compression for interactive applications
ES2561078T3 (es) 2010-07-15 2016-02-24 Ge Video Compression, Llc Codificación de vídeo híbrido que soporta síntesis de vistas intermedias
US9241160B2 (en) 2010-07-21 2016-01-19 Dolby Laboratories Licensing Corporation Reference processing using advanced motion models for video coding
US20130194386A1 (en) 2010-10-12 2013-08-01 Dolby Laboratories Licensing Corporation Joint Layer Optimization for a Frame-Compatible Video Delivery
CN102006480B (zh) 2010-11-29 2013-01-30 清华大学 基于视间预测的双目立体视频的编码及解码方法
US9247249B2 (en) 2011-04-20 2016-01-26 Qualcomm Incorporated Motion vector prediction in video coding
GB2548739B (en) 2011-04-26 2018-01-10 Lg Electronics Inc Method for managing a reference picture list,and apparatus using same
RU2583040C2 (ru) * 2011-08-30 2016-05-10 Нокиа Текнолоджиз Ой Устройство, способ и компьютерная программа для кодирования и декодирования видеосигналов
WO2013068547A2 (en) * 2011-11-11 2013-05-16 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Efficient multi-view coding using depth-map estimate and update
US9503720B2 (en) 2012-03-16 2016-11-22 Qualcomm Incorporated Motion vector coding and bi-prediction in HEVC and its extensions
US20130258052A1 (en) 2012-03-28 2013-10-03 Qualcomm Incorporated Inter-view residual prediction in 3d video coding
US9380289B2 (en) 2012-07-20 2016-06-28 Qualcomm Incorporated Parameter sets in video coding
CN104813669B (zh) * 2012-09-21 2018-05-22 诺基亚技术有限公司 用于视频编码的方法和装置
US20140098883A1 (en) 2012-10-09 2014-04-10 Nokia Corporation Method and apparatus for video coding
WO2014075236A1 (en) * 2012-11-14 2014-05-22 Mediatek Singapore Pte. Ltd. Methods for residual prediction with pseudo residues in 3d video coding
JP6042556B2 (ja) 2012-11-16 2016-12-14 寰發股▲ふん▼有限公司HFI Innovation Inc. 3dビデオ符号化における制約される視差ベクトル導出の方法と装置
US9948939B2 (en) 2012-12-07 2018-04-17 Qualcomm Incorporated Advanced residual prediction in scalable and multi-view video coding

Also Published As

Publication number Publication date
JP2018067940A (ja) 2018-04-26
JP2016503971A (ja) 2016-02-08
EP2929686B1 (en) 2024-03-06
KR102195668B1 (ko) 2020-12-28
ES2974538T3 (es) 2024-06-27
TW201440492A (zh) 2014-10-16
US9948939B2 (en) 2018-04-17
WO2014089453A1 (en) 2014-06-12
EP2929689A1 (en) 2015-10-14
KR102210174B1 (ko) 2021-01-29
CN104969551A (zh) 2015-10-07
JP6333839B2 (ja) 2018-05-30
KR20150093723A (ko) 2015-08-18
KR20150092223A (ko) 2015-08-12
CN104838657A (zh) 2015-08-12
JP2016504845A (ja) 2016-02-12
WO2014089445A1 (en) 2014-06-12
EP2929689B1 (en) 2021-03-24
CN104838651A (zh) 2015-08-12
JP6545852B2 (ja) 2019-07-17
EP2929686A1 (en) 2015-10-14
US10136143B2 (en) 2018-11-20
JP6552964B2 (ja) 2019-07-31
US20140161187A1 (en) 2014-06-12
US20140161175A1 (en) 2014-06-12
TWI538482B (zh) 2016-06-11
WO2014089469A1 (en) 2014-06-12
CN104904213A (zh) 2015-09-09
JP2016504846A (ja) 2016-02-12
US10334259B2 (en) 2019-06-25
EP2929686C0 (en) 2024-03-06
CN104904213B (zh) 2018-06-01
CN104969551B (zh) 2018-11-23
TWI538481B (zh) 2016-06-11
JP2016503972A (ja) 2016-02-08
HUE056984T2 (hu) 2022-04-28
JP6605565B2 (ja) 2019-11-13
KR102085395B1 (ko) 2020-03-05
WO2014089461A1 (en) 2014-06-12
EP2929685B1 (en) 2021-03-31
TWI519137B (zh) 2016-01-21
EP2929685A1 (en) 2015-10-14
KR20150093722A (ko) 2015-08-18
TW201440494A (zh) 2014-10-16
CN104838657B (zh) 2018-06-05
TW201440497A (zh) 2014-10-16
KR102126600B1 (ko) 2020-06-24
CN104838651B (zh) 2018-11-09
EP2929687B1 (en) 2021-12-01
JP2018129838A (ja) 2018-08-16
TW201440496A (zh) 2014-10-16
US20140161189A1 (en) 2014-06-12
TWI538484B (zh) 2016-06-11
US9357212B2 (en) 2016-05-31
EP2929687A1 (en) 2015-10-14
JP6367219B2 (ja) 2018-08-01
US20140161188A1 (en) 2014-06-12
KR20150092222A (ko) 2015-08-12
JP6275736B2 (ja) 2018-02-07

Similar Documents

Publication Publication Date Title
ES2901937T3 (es) Predicción residual avanzada en codificación de vídeo escalable y de múltiples vistas
EP3022932B1 (en) Processing illumination compensation for video coding
EP3092805B1 (en) Block-based advanced residual prediction for 3d video coding
US9549180B2 (en) Disparity vector generation for inter-view prediction for video coding
KR101834611B1 (ko) 비디오 코딩에서 디스패리티 벡터 예측
ES2899664T3 (es) Construcción de listas de imágenes de referencia para codificación de vídeo multivistas o 3DV