ES2908241T3 - Selección de candidatos de modo de fusión unificado y modo de predicción de vector de movimiento adaptable - Google Patents

Selección de candidatos de modo de fusión unificado y modo de predicción de vector de movimiento adaptable Download PDF

Info

Publication number
ES2908241T3
ES2908241T3 ES12727051T ES12727051T ES2908241T3 ES 2908241 T3 ES2908241 T3 ES 2908241T3 ES 12727051 T ES12727051 T ES 12727051T ES 12727051 T ES12727051 T ES 12727051T ES 2908241 T3 ES2908241 T3 ES 2908241T3
Authority
ES
Spain
Prior art keywords
candidate
block
motion vector
mode
candidate block
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
ES12727051T
Other languages
English (en)
Inventor
Yunfei Zheng
Xianglin Wang
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 ES2908241T3 publication Critical patent/ES2908241T3/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/40Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using video transcoding, i.e. partial or full decoding of a coded input stream followed by re-encoding of the decoded output stream
    • 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/11Selection of coding mode or of prediction mode among a plurality of spatial predictive coding modes
    • 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/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/513Processing of motion vectors
    • H04N19/517Processing of motion vectors by encoding
    • H04N19/52Processing of motion vectors by encoding by predictive encoding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/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/109Selection of coding mode or of prediction mode among a plurality of temporal predictive coding modes
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/513Processing of motion vectors
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/593Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial prediction techniques
    • 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)

Abstract

Un procedimiento de codificación (20) de un vector de movimiento en un procedimiento de codificación de vídeo, comprendiendo el procedimiento: determinar (900) un vector de movimiento relativo a un fotograma de referencia para un bloque actual (127, 137) de datos de vídeo, en el que la ubicación de un fotograma de referencia es en base a una dirección de predicción; determinar (901) uno de una pluralidad de modos para un procedimiento de predicción de vectores de movimiento para el bloque actual (127, 137) de datos de vídeo, el modo determinado que es uno de un modo de fusión y un modo de predicción de vectores de movimiento adaptativo; y realizar, de acuerdo con un patrón de verificación, el procedimiento de predicción del vector de movimiento (902) para el bloque actual mediante el uso del modo determinado y un conjunto de bloques candidatos (100, 120) que comprende un bloque candidato de inferior izquierdo (101, 111, 121, 131), un bloque candidato izquierdo (102, 112, 122, 132), un bloque candidato superior (104, 114, 124, 134), un bloque candidato superior derecho (103, 113, 123, 133), un bloque candidato superior izquierdo (105, 125), y un bloque candidato temporal (106, 115), el patrón de comprobación que define un orden para comprobar cada uno de los bloques candidatos en el conjunto de bloques candidatos, en el que, si el modo determinado es un modo de fusión, un bloque candidato en el conjunto de bloques candidatos se designa como un bloque candidato adicional, y en el que el modo de fusión tiene un número máximo N de bloques candidatos para su uso en la realización del procedimiento de predicción del vector de movimiento y el conjunto de bloques candidatos se define como los primeros N bloques candidatos disponibles en el conjunto de bloques candidatos a lo largo del patrón de verificación, en el que N es igual a 5, y en el que el bloque candidato adicional se usa en el modo de fusión si otro de los bloques candidatos del conjunto de bloques candidatos no está disponible o no es válido.

Description

DESCRIPCIÓN
Selección de candidatos de modo de fusión unificado y modo de predicción de vector de movimiento adaptable Campo técnico
Esta divulgación se refiere a la codificación de vídeo y, más particularmente, a las técnicas para seleccionar bloques candidatos de predicción de vectores de movimiento en un procedimiento de predicción de vectores de movimiento. Antecedentes
Las capacidades de vídeo digital pueden incorporarse en un amplio rango de dispositivos, incluidos televisores digitales, sistemas de difusión digital directa, sistemas de difusión inalámbrica, asistentes digitales personales (PDA), ordenadores portátiles o de escritorio, cámaras digitales, dispositivos de grabación digital, reproductores de medios digitales, dispositivos de videojuegos, consolas de videojuegos, teléfonos celulares o satelitales, dispositivos de videoconferencia 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), el estándar de codificación de vídeo de alta eficiencia (HEVC) actualmente en desarrollo, y extensiones de dichos estándares, para transmitir, recibir y almacenar información de vídeo digital de manera más eficiente.
Las técnicas de compresión de vídeo incluyen predicción espacial y/o predicción temporal para reducir o eliminar la redundancia inherente a las secuencias de vídeo. Para la codificación de vídeo basada en bloques, un fotograma o segmento de vídeo puede dividirse en bloques. Cada bloque puede dividirse aún más. Los bloques de un fotograma o segmento intracodificado (I) se codifican mediante el uso de la predicción espacial con respecto a las muestras de referencia en bloques vecinos en el mismo fotograma o segmento. Los bloques en un fotograma o segmento intercodificado (P o B) pueden usar predicción espacial con respecto a muestras de referencia en bloques vecinos en el mismo fotograma o segmento o predicción temporal con respecto a muestras de referencia en otros fotogramas de referencia. La predicción espacial o temporal da como resultado un bloque predictivo para que se codifique un bloque. Los datos residuales representan las diferencias de píxeles entre el bloque original a codificar y el bloque predictivo.
Un bloque intercodificado se codifica de acuerdo con un vector de movimiento que apunta a un bloque de muestras de referencia que forman el bloque predictivo, y los datos residuales indican la diferencia entre el bloque codificado y el bloque predictivo. Un bloque intracodificado se codifica de acuerdo con un modo de intracodificación y los datos residuales. Para una compresión adicional, los datos residuales pueden transformarse del dominio de píxeles a un dominio de transformación, y dar como resultado coeficientes de transformación residuales, que luego pueden cuantificarse. Los coeficientes de transformación cuantificados, dispuestos inicialmente en una matriz bidimensional, pueden escanearse en un orden particular para producir un vector unidimensional de coeficientes de transformación para la codificación de entropía.
En el documento de propuesta JCTVC-E396 "Unified Motion Vector Predictor Selection for Merge and AMVP" de Yunfei Zheng, Wei-Jung Chien y Marta Karczewicz, de la 5a reunión de JCTVC, se divulga una propuesta para un procedimiento de selección de predictor de vector de movimiento unificado para el modo de Fusión y AMVp , que alinea el procedimiento de selección de predictor de vector de movimiento al buscar cuatro bloques vecinos fijos, que se definen en base a la forma de partición y el índice de partición.
Sumario
En general, esta divulgación describe técnicas para codificar datos de vídeo. Esta divulgación describe técnicas para seleccionar bloques candidatos de predicción de vectores de movimiento en un procedimiento de predicción de vectores de movimiento.
La invención se define por las reivindicaciones independientes.
Las características de las realizaciones preferentes se enumeran en las reivindicaciones dependientes.
Los detalles de uno o más ejemplos se establecen en los dibujos adjuntos y la descripción a continuación. Otras características, objetivos y ventajas serán evidentes a partir de la divulgación y los dibujos y a partir de las reivindicaciones.
Breve descripción de los dibujos
La Figura 1A es un dibujo conceptual que ilustra bloques candidatos para la predicción de vectores de movimiento de acuerdo con un modo de predicción de vectores de movimiento adaptable (AMVP).
La Figura 1B es un dibujo conceptual que ilustra bloques candidatos para la predicción de vectores de movimiento de acuerdo con el modo de fusión.
La Figura 2 es un diagrama de bloques que ilustra un sistema de codificación y decodificación de vídeo de ejemplo.
La Figura 3 es un diagrama de bloques que ilustra un codificador de vídeo de ejemplo.
La Figura 4A es un dibujo conceptual de información de señalización para el modo de fusión.
La Figura 4B es un dibujo conceptual de información de señalización para el modo AMVP.
La Figura 5A es un dibujo conceptual que ilustra bloques candidatos para un AMVP y un modo de fusión de acuerdo con un ejemplo de la divulgación.
La Figura 5B es un dibujo conceptual que ilustra bloques candidatos para un AMVP y un modo de fusión de acuerdo con otro ejemplo de la divulgación.
La Figura 6 es un dibujo conceptual que ilustra bloques candidatos para un AMVP y un modo de fusión de acuerdo con otro ejemplo de la divulgación.
La Figura 7 es un dibujo conceptual que ilustra bloques candidatos y un patrón de verificación para un AMVP y un modo de fusión de acuerdo con otro ejemplo de la divulgación.
La Figura 8 es un diagrama de bloques que ilustra un decodificador de vídeo de ejemplo.
La Figura 9 es un diagrama de flujo que ilustra un procedimiento de ejemplo para codificar vídeo.
La Figura 10 es un diagrama de flujo que ilustra un procedimiento de ejemplo para codificar vídeo en un modo de fusión.
La Figura 11 es un diagrama de flujo que ilustra un procedimiento de ejemplo para codificar vídeo en un modo AMVP.
La Figura 12 es un diagrama de flujo que ilustra un procedimiento de ejemplo para decodificar vídeo.
La Figura 13 es un diagrama de flujo que ilustra un procedimiento de ejemplo para decodificar vídeo en un modo de fusión.
La Figura 14 es un diagrama de flujo que ilustra un procedimiento de ejemplo para decodificar vídeo en un modo AMVP.
La Figura 15 es un diagrama de flujo que ilustra otro procedimiento de ejemplo para codificar vídeo.
La Figura 16 es un diagrama de flujo que ilustra otro procedimiento de ejemplo para decodificar vídeo.
La Figura 17 es un diagrama de flujo que ilustra otro procedimiento de ejemplo para decodificar vídeo en un modo de fusión.
La Figura 18 es un diagrama de flujo que ilustra otro procedimiento de ejemplo para decodificar vídeo en un modo AMVP.
Descripción detallada
En general, esta divulgación describe técnicas para codificar datos de vídeo. Esta divulgación describe técnicas para seleccionar bloques candidatos de predicción de vectores de movimiento en un procedimiento de predicción de vectores de movimiento. En un ejemplo, esta divulgación propone que cada uno de una pluralidad de modos de predicción de vectores de movimiento use el mismo conjunto de bloques candidatos para predecir un vector de movimiento para un bloque actual. En otro ejemplo, esta divulgación propone que un bloque candidato en el conjunto de bloques candidatos se designe como un bloque candidato adicional. El bloque candidato adicional se usa si otro de los bloques del conjunto no está disponible.
Los dispositivos de vídeo digital implementan técnicas de compresión de vídeo para codificar y decodificar información de vídeo digital más eficientemente. La compresión de vídeo puede aplicar técnicas de predicción espacial (dentro del fotograma) y/o de predicción temporal (entre fotogramas) para reducir o eliminar la redundancia inherente a las secuencias de vídeo.
Para la codificación de vídeo de acuerdo con el estándar de codificación de vídeo de alta eficiencia (HEVC) actualmente en desarrollo por el Equipo Cooperativo Conjunto para la Codificación de vídeo (JCT-VC), un fotograma de vídeo puede dividirse en unidades de codificación. Una unidad de codificación (CU) generalmente se refiere a una región de imagen que sirve como unidad básica a la que se aplican diversas herramientas de codificación para la compresión de vídeo. Una CU generalmente tiene un componente de luminancia, denotado como Y, y dos componentes de crominancia, denotados como U y V. En función del formato de muestreo de vídeo, el tamaño de los componentes U y V, en términos de número de muestras, puede ser el mismo o diferente al tamaño del componente Y. Una CU es típicamente cuadrada y puede considerarse similar a un llamado macrobloque, por ejemplo, bajo otros estándares de codificación de vídeo como ITU-T H.264.
Para lograr una mejor eficiencia de codificación, una unidad de codificación puede tener tamaños variables en función del contenido de vídeo. Además, una unidad de codificación puede dividirse en bloques más pequeños para predicción o transformación. En particular, cada unidad de codificación puede dividirse adicionalmente en unidades de predicción (PU) y unidades de transformación (TU). Las unidades de predicción pueden considerarse similares a las llamadas particiones según otros estándares de codificación de vídeo, como H.264. Las unidades de transformación (TU) se refieren a bloques de datos residuales a los que se aplica una transformación para producir coeficientes de transformación.
La codificación de acuerdo con algunos de los aspectos actualmente propuestos del estándar en desarrollo HEVC se describirá en la presente solicitud con propósitos ilustrativos. Sin embargo, las técnicas descritas en esta divulgación pueden ser útiles para otro procedimiento de codificación de vídeo, como los definidos de acuerdo con H.264 u otro procedimiento de codificación de vídeo estándar o propietario.
Los esfuerzos de la estandarización de HEVC se basan en un modelo de un dispositivo de codificación de vídeo denominado como el Modelo de Prueba HEVC (HM). El HM presupone diversas capacidades de los dispositivos de codificación de vídeo con relación a los dispositivos de acuerdo con, por ejemplo, ITU-T H.264/AVC. Por ejemplo, mientras que H.264 proporciona nueve modos de codificación de intrapredicción, e1HM proporciona hasta treinta y cuatro modos de codificación de intrapredicción.
De acuerdo con el HM, una CU puede incluir una o más unidades de predicción (PU) y/o una o más unidades de transformación (TU). Las sintaxis de datos dentro de un flujo de bits pueden definir una unidad de codificación más grande (LCU), que es una CU más grande en términos de número de píxeles. En general, una CU tiene un propósito similar a un macrobloque de H.264, excepto que una CU no tiene una distinción de tamaño. Por lo tanto, una CU puede dividirse en sub-CU. En general, las referencias en esta divulgación a una CU pueden referirse a una unidad de codificación más grande de una imagen o una sub-CU de una LCU. Una LCU puede dividirse en sub-CU, y cada sub-CU puede dividirse, además, en sub-CU. Las sintaxis de datos para un flujo de bits pueden definir un número máximo de veces que puede dividirse una LCU, que se refiere como profundidad de CU. En consecuencia, un flujo de bits también puede definir una unidad de codificación más pequeña (SCU). Esta divulgación también usa el término "bloque" o "porción" para referirse a cualquiera de una CU, PU o TU. En general, "porción" puede referirse a cualquier subconjunto de un fotograma de vídeo.
Una LCU puede asociarse con una estructura de datos de árbol cuaternario. En general, una estructura de datos de árbol cuaternario incluye un nodo por CU, donde un nodo raíz corresponde a la LCU. Si una CU se divide en cuatro sub-CU, el nodo correspondiente a la CU incluye cuatro nodos hoja, cada uno de los cuales corresponde a una de las sub-CU. Cada nodo de la estructura de datos de árbol cuaternario puede proporcionar sintaxis de datos para la correspondiente CU. Por ejemplo, un nodo en el árbol cuaternario puede incluir un indicador de división, que indica si la CU correspondiente al nodo se divide en sub-CU. Los elementos de sintaxis para una CU pueden definirse recursivamente y pueden depender de si la CU se divide en sub-CU. Si una CU no se divide más, se refiere a ella como una CU hoja.
Además, las TU de las CU hoja también pueden asociarse con las respectivas estructuras de datos de árbol cuaternario. Es decir, una CU hoja puede incluir un árbol cuaternario que indica cómo se particiona la CU hoja en las TU. Esta divulgación se refiere al árbol cuaternario que indica cómo se divide una LCU como un árbol cuaternario de CU y al árbol cuaternario que indica cómo una CU hoja se divide en TU como un árbol cuaternario de TU. El nodo raíz de un árbol cuaternario TU corresponde generalmente a una CU hoja, mientras que el nodo raíz de un árbol cuaternario CU corresponde generalmente a un LCU. Las TU del árbol cuaternario TU que no se dividen se denominan TU hoja.
Una CU hoja puede incluir una o más unidades de predicción (PU). En general, una PU representa toda o una porción de la Cu correspondiente y puede incluir datos para recuperar una muestra de referencia para la PU. Por ejemplo, cuando la PU se codifica intermodo, la PU puede incluir datos que definen un vector de movimiento para la PU. Los datos que definen el vector de movimiento pueden describir, por ejemplo, un componente horizontal del vector de movimiento, un componente vertical del vector de movimiento, una resolución para el vector de movimiento (por ejemplo, precisión de un cuarto de píxel o precisión de un octavo de píxel), un fotograma de referencia al que apunta el vector de movimiento, y/o una lista de referencia (por ejemplo, lista 0 o lista 1) para el vector de movimiento. Los datos para la CU hoja que define las PU también pueden describir, por ejemplo, la partición de la CU en una o más PU. Los modos de particionamiento pueden diferir en función de si la CU no se codifica predictivamente, se codifica en modo de intrapredicción, o se codifica en modo interpredicción. Para la intracodificación, una PU puede tratarse igual que una unidad de transformación de hoja descrita más abajo.
Para codificar un bloque (por ejemplo, una unidad de predicción (PU) de datos de vídeo), primero se deriva un predictor para el bloque. El predictor puede derivarse o mediante intrapredicción (I) (es decir, predicción espacial) o interpredicción (P o B) (es decir, predicción temporal). Por lo tanto, algunas unidades de predicción pueden intracodificarse (I) mediante el uso de predicción espacial con respecto a bloques de referencia vecinos en el mismo fotograma, y otras unidades de predicción pueden intercodificarse (P o B) con respecto a bloques de referencia en otros fotogramas.
Tras la identificación de un predictor, se calcula la diferencia entre el bloque de datos de vídeo original y su predictor. Esta diferencia también se denomina residuo de predicción y se refiere a las diferencias de valor de píxel entre los píxeles del bloque a codificar y los píxeles correspondientes del bloque de referencia, es decir, predictor. Para lograr una mejor compresión, el residual de predicción (es decir, la matriz de valores de diferencia de píxeles) generalmente se transforma, por ejemplo, mediante el uso de una transformada de coseno discreta (DCT), transformada de entero, transformada de Karhunen-Loeve (K-L) u otra transformada.
La codificación de una PU mediante el uso de la interpredicción implica calcular un vector de movimiento entre un bloque actual y un bloque en un fotograma de referencia. Los vectores de movimiento se calculan a través de un procedimiento llamado estimación de movimiento (o búsqueda de movimiento). Un vector de movimiento, por ejemplo, puede indicar el desplazamiento de una unidad de predicción en un fotograma actual con relación a una muestra de referencia de un fotograma de referencia. Una muestra de referencia puede ser un bloque que se encuentra que coincide estrechamente con la porción de la CU, incluida la PU que se codifica en términos de diferencia de píxel, que puede determinarse por la suma de la diferencia absoluta (SAD), la suma de la diferencia al cuadrado (SSD), u otras métricas de diferencia. La muestra de referencia puede ocurrir en cualquier lugar dentro de un fotograma de referencia o un segmento de referencia. En algunos ejemplos, la muestra de referencia puede ocurrir en una posición de píxel fraccional. Al encontrar una porción del fotograma de referencia que mejor coincida con la porción actual, el codificador determina el vector de movimiento actual para la porción actual como la diferencia en la ubicación de la porción actual a la porción coincidente en el fotograma de referencia (es decir, desde el centro de la porción actual al centro de la porción coincidente).
En algunos ejemplos, un codificador puede señalar el vector de movimiento para cada porción en el flujo de bits de vídeo codificado. El decodificador usa el vector de movimiento señalado para realizar la compensación de movimiento con el fin de decodificar los datos de vídeo. Sin embargo, la señalización directa del vector de movimiento original puede resultar en una codificación menos eficiente, ya que normalmente se necesita una gran cantidad de bits para transmitir la información.
En algunos casos, en lugar de señalar directamente el vector de movimiento original, el codificador puede predecir un vector de movimiento para cada partición, es decir, para cada PU. Al realizar esta predicción del vector de movimiento, el codificador puede seleccionar un conjunto de vectores de movimiento candidatos determinados a partir de bloques espacialmente vecinos en el mismo fotograma que la porción actual o un vector de movimiento candidato determinado a partir de un bloque coubicado en un fotograma de referencia. El codificador puede realizar la predicción del vector de movimiento y, si es necesario, señalar la diferencia de predicción en lugar de señalar un vector de movimiento original para reducir la tasa de bits en la señalización. Los vectores de vector de movimiento candidatos de los bloques espacialmente vecinos pueden denominarse candidatos de MVP espacial, mientras que el vector de movimiento candidato del bloque coubicado en otro fotograma de referencia puede denominarse candidato de MVP temporal.
En el borrador de trabajo actual del estándar HEVC se proponen dos modos o tipos diferentes de predicción del vector de movimiento. Un modo se denomina modo de "fusión". El otro modo se denomina predicción de vector de movimiento adaptativo (AMVP). En el modo de fusión, el codificador instruye a un decodificador, a través de la señalización de flujo de bits de la sintaxis de predicción, para copiar un vector de movimiento, un índice de referencia (que identifica un fotograma de referencia, en una lista de imágenes de referencia dada, a la que apunta el vector de movimiento) y la dirección de predicción de movimiento (que identifica la lista de imágenes de referencia (Lista 0 o Lista 1), es decir, en términos de si el fotograma de referencia precede o sigue temporalmente al fotograma actual) de un vector de movimiento candidato seleccionado para una porción actual del fotograma. Esto se logra al señalar en el flujo de bits un índice en una lista de vectores de movimiento candidatos que identifica el vector de movimiento candidato seleccionado (es decir, el candidato MVP espacial particular o el candidato MVP temporal). Por lo tanto, para el modo de fusión, la sintaxis de predicción puede incluir un indicador que identifique el modo (en este caso, el modo de "fusión") y un índice que identifique el vector de movimiento candidato seleccionado. En algunos casos, el vector de movimiento candidato estará en una porción causal en referencia a la porción actual. Es decir, el decodificador ya decodificó el vector de movimiento candidato. Como tal, el decodificador ya recibió y/o determinó el vector de movimiento, el índice de referencia y la dirección de predicción de movimiento para la porción causal. Como tal, el decodificador puede simplemente recuperar el vector de movimiento, el índice de referencia y la dirección de predicción de movimiento asociados con la porción causal de la memoria y copiar estos valores como información de movimiento para la porción actual. Para reconstruir un bloque en modo de fusión, el decodificador obtiene el bloque predictivo mediante el uso de la información de movimiento derivada para la porción actual y agrega los datos residuales al bloque predictivo para reconstruir el bloque codificado.
En AMVP, el codificador instruye al decodificador, a través de la señalización de flujo de bits, para que solo copie el vector de movimiento de la porción candidata y use el vector copiado como un predictor para el vector de movimiento de la porción actual, y señala la diferencia de vector de movimiento (MVD). El fotograma de referencia y la dirección de predicción asociada con el vector de movimiento de la porción actual se señalan por separado. Un MVD es la diferencia entre el vector de movimiento actual para la porción actual y un predictor de vector de movimiento derivado de una porción candidata. En este caso, el codificador, mediante el uso de la estimación de movimiento, determina un vector de movimiento real para el bloque a codificar y luego determina la diferencia entre el vector de movimiento real y el predictor de vector de movimiento como el valor MVD. De esta forma, el decodificador no usa una copia exacta del vector de movimiento candidato como el vector de movimiento actual, como en el modo de fusión, sino que puede usar un vector de movimiento candidato que puede tener un valor "cercano" al vector de movimiento actual determinado a partir de la estimación de movimiento y agregar el MVD para reproducir el vector de movimiento actual. Para reconstruir un bloque en modo AMVP, el decodificador agrega los datos residuales correspondientes para reconstruir el bloque codificado.
En la mayoría de las circunstancias, el MVD requiere menos bits para señalizar que todo el vector de movimiento actual. Como tal, el AMVP permite una señalización más precisa del vector de movimiento actual mientras mantiene la eficiencia de codificación sobre el envío de todo el vector de movimiento. Por el contrario, el modo de fusión no permite la memoria descriptiva de un MVD y, como tal, el modo de fusión sacrifica la precisión de la señalización del vector de movimiento por una mayor eficiencia de señalización (es decir, menos bits). La sintaxis de predicción para AMVP puede incluir un indicador para el modo (en este caso, indicador AMVP), el índice para la porción candidata, el MVD entre el vector de movimiento actual y el vector de movimiento predictivo de la porción candidata, el índice de referencia y la dirección de predicción de movimiento.
Una vez que se realiza la estimación de movimiento para determinar un vector de movimiento para una porción actual, el codificador compara la porción coincidente en el fotograma de referencia con la porción actual. Esta comparación generalmente implica restar la porción (que comúnmente se denomina "muestra de referencia") en el fotograma de referencia de la porción actual y da como resultado los llamados datos residuales, como se mencionó anteriormente. Los datos residuales indican valores de diferencia de píxeles entre la porción actual y la muestra de referencia. El codificador entonces transforma estos datos residuales de un dominio espacial a un dominio de transformación, tal como un dominio de frecuencia. Por lo general, el codificador aplica una transformada de coseno discreta (DCT) a los datos residuales para lograr esta transformación. El codificador realiza esta transformación para facilitar la compresión de los datos residuales porque los coeficientes de transformación resultantes representan diferentes frecuencias, en las que la mayoría de la energía suele concentrarse en unos pocos coeficientes de baja frecuencia.
Normalmente, los coeficientes de transformación resultantes se agrupan de una manera que permite la codificación de longitud de serie, especialmente si los coeficientes de transformación se cuantifican (redondean) primero. El codificador realiza esta codificación de longitud de serie de los coeficientes de transformación cuantificados y luego realiza la codificación estadística sin pérdidas (o denominada "entropía") para comprimir aún más los coeficientes de transformación cuantificados codificados de longitud de serie.
Después de realizar la codificación de entropía sin pérdidas, el codificador genera un flujo de bits que incluye los datos de vídeo codificados. Este flujo de bits también incluye una serie de elementos de sintaxis de predicción en ciertos casos que especifican si, por ejemplo, se realizó la predicción del vector de movimiento, el modo del vector de movimiento y un índice del predictor de vector de movimiento (MVP) (es decir, el índice de la porción candidata con el vector de movimiento seleccionado). También puede hacerse referencia al índice MVP como su nombre de variable de elemento de sintaxis "mvp_idx".
En un diseño actual propuesto para su adopción por el Equipo Colaborativo Conjunto sobre Codificación de vídeo (JCT-VC) de ITU-T/iSo /IEC, denominado codificación de vídeo de alta eficiencia (HEVC), el codificador realiza una serie de modos de predicción de vector de movimiento mediante el cual predecir un vector de movimiento para una porción actual que incluye 1) AMVP y 2) el modo de fusión descrito anteriormente. Estos dos modos son similares, aunque AMVP brinda más flexibilidad en términos de poder definir MVD, direcciones de predicción de movimiento e índices de referencia, mientras que el modo de fusión simplemente copia esta información de vector de movimiento (es decir, vector de movimiento, dirección de predicción de movimiento e índice de referencia) y no permite la mayor precisión de un MVD.
La Figura 1A muestra el conjunto de bloques candidatos 100 (o porciones/bloques de una PU) actualmente propuestos en el estándar HEVc para su uso en modo AMVP, mientras que la Figura 1B muestra el conjunto de bloques candidatos 110 actualmente propuestos en el estándar HEVC para su uso en modo de fusión. El modo AMVP utiliza seis bloques candidatos: el bloque 101 inferior izquierdo (BL), el bloque 102 de la izquierda (L), el bloque 103 superior derecho (RA), el bloque 104 superior (A), el bloque 105 superior izquierdo (LA), y el bloque temporal (T) 106. Tenga en cuenta que, además de un conjunto de bloques candidatos, el modo AMVp también especifica un orden para verificar los bloques candidatos. En el ejemplo de la Figura 1A, el patrón de verificación procede de la siguiente manera: BL - L - Ra - A - LA -T. Como se muestra en la Figura 1B, el modo de fusión usa cinco bloques candidatos: el bloque 111 inferior izquierdo (BL), el bloque 112 de la izquierda (L), el bloque 113 superior derecho (RA), el bloque 114 superior (A) y el bloque temporal (T) 115. Los vectores de movimiento asociados con estos bloques candidatos se usan para determinar un predictor de vector de movimiento en el modo de fusión y el modo AMVP. El modo de fusión puede usar un patrón de verificación similar al de AMVP o puede usar un patrón de verificación diferente.
Como se discutió anteriormente, el modo AMVP usa seis bloques candidatos, mientras que el modo de fusión usa cinco bloques candidatos. Además, además de los bloques superior derecho (RA), inferior izquierdo (BL) y temporal (T), los bloques candidatos para el modo AMVP y el modo de fusión están en diferentes ubicaciones. Como tal, debe almacenarse y considerarse una gran cantidad de bloques candidatos durante el procedimiento de codificación y decodificación. Además, es posible que el patrón de comprobación de AMVP no sea óptimo, ya que el bloque inferior izquierdo puede no estar disponible en todas las circunstancias. Dichas circunstancias incluyen cuando el bloque inferior izquierdo aún no se codificó (por ejemplo, se encuentra a través de un corte o límite de CU) o si los datos del bloque inferior izquierdo se encuentran dañados.
En esta divulgación, se propone un conjunto de bloques candidatos unificados tanto para AMVP como para el modo de fusión. En general, se usa el mismo conjunto de bloques candidatos independientemente del modo de predicción de vector de movimiento (por ejemplo, modo de fusión o modo AMVP) que se use. Como tal, se necesita menos memoria para almacenar vectores de movimiento y otra información relacionada con la interpredicción (por ejemplo, fotograma de referencia, dirección de predicción, etc.). En otros ejemplos de esta divulgación, se proponen técnicas para usar un conjunto de bloques candidatos que incluye un bloque candidato adicional. Además, también se divulgan técnicas para un patrón de comprobación más óptimo.
La Figura 2 es un diagrama de bloques que ilustra un ejemplo de sistema de codificación y decodificación de vídeo 10 que puede configurarse para usar técnicas para la predicción de vectores de movimiento de acuerdo con ejemplos de esta divulgación. Como se muestra en la Figura 2, el sistema 10 incluye el dispositivo fuente 12 que transmite vídeo codificado al dispositivo de destino 14 a través de un canal de comunicación 16. Los datos de vídeo codificados también pueden almacenarse en un medio de almacenamiento 34 o un servidor de archivos 36 y puede accederse a ellos mediante el dispositivo de destino 14 como se desee. Cuando se almacena en un medio de almacenamiento o servidor de archivos, el codificador de vídeo 20 puede proporcionar datos de vídeo codificados a otro dispositivo, como una interfaz de red, un disco compacto (CD), Blu-ray o dispositivo de grabación o instalación de estampación de discos de vídeo digitales (DVD), u otros dispositivos, para almacenar los datos de vídeo codificados en el medio de almacenamiento. Igualmente, un dispositivo separado del decodificador de vídeo 30, como una interfaz de red, lector de CD o DVD, o similar, puede recuperar datos de vídeo codificados de un medio de almacenamiento y proporcionar los datos recuperados al decodificador de vídeo 30.
El dispositivo fuente 12 y el dispositivo de destino 14 pueden comprender cualquiera de una amplia variedad de dispositivos, que incluyen ordenadores de escritorio, notebook (es decir, ordenador portátil), tabletas, cajas decodificadoras, teléfonos móviles como los llamados teléfonos inteligentes, televisores, cámaras, dispositivos de visualización, reproductores de medios digitales, consolas de vídeo juegos o similares. En muchos casos, estos dispositivos pueden equiparse para la comunicación inalámbrica. Por tanto, el canal de comunicación 16 puede comprender un canal inalámbrico, un canal alámbrico o una combinación de canales inalámbricos y alámbricos adecuados para la transmisión de datos de vídeo codificados. De manera similar, al servidor de archivos 36 puede accederse por el dispositivo de destino 14 a través de cualquier conexión de datos estándar, incluida una conexión a Internet. Esto puede incluir un canal inalámbrico (por ejemplo, una conexión Wi-Fi), una conexión alámbrica (por ejemplo, DSL, módem por cable, etc.) o una combinación de ambos que sea adecuada para acceder a los datos de vídeo codificados almacenados en un servidor de archivos.
Las técnicas para la predicción de vectores de movimiento, de acuerdo con los ejemplos de esta divulgación, pueden aplicarse a la codificación de vídeo para soportar cualquiera de una variedad de aplicaciones multimedia, como la difusión de televisión por aire, las transmisiones de televisión por cable, las transmisiones de televisión por satélite, las transmisiones de vídeo en tiempo real, por ejemplo, a través de Internet, codificación de vídeo digital para su almacenamiento 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 la transmisión de vídeo unidireccional o bidireccional para soportar aplicaciones tal como el vídeo en directo, la reproducción de vídeo, la difusión de vídeo, y/o la telefonía de vídeo.
En el ejemplo de la Figura 2, el dispositivo fuente 12 incluye una fuente de vídeo 18, un codificador de vídeo 20, un modulador/demodulador 22 y un transmisor 24. En el dispositivo fuente 12, la fuente de vídeo 18 puede incluir una fuente como un dispositivo de captura de vídeo, tal como una cámara de vídeo, un archivo de vídeo que contenga vídeo capturado previamente, una interfaz de alimentación de vídeo para recibir vídeo de un proveedor de contenido de vídeo, y/o un sistema de gráficos por ordenador para generar datos de gráficos por ordenador como la fuente del vídeo, o una combinación de tales fuentes. Como un ejemplo, si la fuente de vídeo 18 es una cámara de vídeo, el dispositivo fuente 12 y el dispositivo de destino 14 pueden formar los denominados teléfonos con cámara o videoteléfonos. Sin embargo, las técnicas descritas en esta divulgación pueden aplicarse a la codificación de vídeo en general, y pueden aplicarse a aplicaciones inalámbricas y/o alámbricas, o aplicaciones en las que los datos de vídeo codificados se almacenan en un disco local.
El vídeo capturado, precapturado o generado por ordenador puede codificarse por el codificador de vídeo 20. La información de vídeo codificado puede modularse por el módem 22 de acuerdo con un estándar de comunicación, tal como un protocolo de comunicación inalámbrico, y transmitirse al dispositivo de destino 14 a través del transmisor 24. El módem 22 puede incluir varios mezcladores, filtros, amplificadores u otros componentes diseñados para la modulación de la señal. El transmisor 24 puede incluir circuitos diseñados para transmitir datos, incluidos amplificadores, filtros y una o más antenas.
El vídeo capturado, precapturado o generado por ordenador que se codifica por el codificador de vídeo 20 también puede almacenarse en un medio de almacenamiento 34 o un servidor de archivos 36 para su consumo posterior. El medio de almacenamiento 34 puede incluir discos Blu-ray, DVD, CD-ROM, memoria flash o cualquier otro medio de almacenamiento digital adecuado para almacenar vídeo codificado. El vídeo codificado almacenado en el medio de almacenamiento 34 puede entonces accederse por el dispositivo de destino 14 para decodificación y reproducción.
El servidor de archivos 36 puede ser cualquier tipo de servidor capaz de almacenar vídeo codificado y transmitir ese vídeo codificado al dispositivo de destino 14. Ejemplos de servidores de archivos incluyen un servidor web (por ejemplo, para un sitio web), un servidor FTP, dispositivos de almacenamiento conectados en red (NAS), una unidad de disco local o cualquier otro tipo de dispositivo capaz de almacenar datos de vídeo codificados y transmitirlos a un dispositivo de destino. La transmisión de datos de vídeo codificados desde el servidor de archivos 36 puede ser una transmisión en directo, una transmisión de descarga, o una combinación de ambas. Al servidor de archivos 36 puede accederse por el dispositivo de destino 14 a través de cualquier conexión de datos estándar, incluida una conexión a internet. Esto puede incluir un canal inalámbrico (por ejemplo, una conexión Wi-Fi), una conexión alámbrica (por ejemplo, DSL, módem por cable, Ethernet, USB, etc.), o una combinación de ambos que sea adecuada para acceder a datos de vídeo codificados almacenados en un servidor de archivos.
El dispositivo de destino 14, en el ejemplo de la Figura 2, incluye un receptor 26, un módem 28, un decodificador de vídeo 30 y un dispositivo de visualización 32. El receptor 26 del dispositivo de destino 14 recibe información por el canal 16, y el módem 28 demodula la información para producir un flujo de bits demodulado para el decodificador de vídeo 30. La información comunicada por el canal 16 puede incluir una variedad de información de sintaxis generada por el codificador de vídeo 20 para su uso por el decodificador de vídeo 30 en la decodificación de datos de vídeo. Tal sintaxis también puede incluirse con los datos de vídeo codificados almacenados en el medio de almacenamiento 34 o el servidor de archivos 36. Cada uno del codificador de vídeo 20 y el decodificador de vídeo 30 pueden formar parte de un respectivo codificador-decodificador (CODEC) que es capaz de codificación o decodificación de datos de vídeo.
El dispositivo de visualización 32 puede integrarse con, o ser externo al, dispositivo de destino 14. En algunos ejemplos, el dispositivo de destino 14 puede incluir un dispositivo de visualización integrado y también configurarse para interactuar con un dispositivo de visualización externo. En otros ejemplos, el dispositivo de destino 14 puede ser un dispositivo de visualización. En general, el dispositivo de visualización 32 muestra los datos de vídeo decodificados a un usuario, y puede comprender cualquiera de una variedad de dispositivos de visualización como una pantalla de cristal líquido (LCD), una pantalla de plasma, una pantalla de diodo orgánico emisor de luz (OLED), u otro tipo de dispositivo de visualización.
En el ejemplo de la Figura 2, el canal de comunicación 16 puede comprender cualquier medio de comunicación inalámbrico o alámbrico, como un espectro de radiofrecuencia (RF) o una o más líneas de transmisión físicas, o cualquier combinación de medios inalámbricos y alámbricos. El canal de comunicación 16 puede formar parte de una red basada en paquetes, como una red de área local, una red de área amplia o una red global como Internet. El canal de comunicación 16 generalmente representa cualquier medio de comunicación adecuado, o colección de diferentes medios de comunicación, para transmitir datos de vídeo desde el dispositivo fuente 12 al dispositivo de destino 14, que incluye cualquier combinación adecuada de medios alámbricos o inalámbricos. El canal de comunicación 16 puede incluir enrutadores, conmutadores, estaciones base, o cualquier otro equipo que pueda ser útil para facilitar la comunicación desde el dispositivo fuente 12 al dispositivo de destino 14.
El codificador de vídeo 20 y el decodificador de vídeo 30 pueden operar de acuerdo con un estándar de compresión de vídeo, tal como el estándar de Codificación de vídeo de Alta Eficiencia (HEVC) actualmente en desarrollo, y pueden ajustarse al Modelo de Prueba HEVC (HM). Alternativamente, el codificador de vídeo 20 y el decodificador de vídeo 30 pueden operar de acuerdo con otros estándares de propiedad o de la industria, tal como el estándar ITU-T H.264, también conocido como MPEG-4, Parte 10, Codificación de Vídeo Avanzada (AVC) o con las extensiones de tales estándares. Las técnicas de esta divulgación, sin embargo, no se limitan a ningún estándar de codificación particular. Otros ejemplos incluyen MPEG-2 e ITU-T H.263.
Aunque no se muestra en la Figura 2, en algunos aspectos, el codificador de vídeo 20 y el decodificador de vídeo 30 pueden integrarse cada uno con un codificador y decodificador de audio y pueden incluir unidades MUX-DEMUX apropiadas, u otro hardware y software, para manejar la codificación de audio y de vídeo en un flujo de datos común o en flujos de datos separados. Si corresponde, en algunos ejemplos, las unidades MUX-DEMUX pueden ajustarse al protocolo multiplexor ITU H.223 o a otros protocolos tales como el protocolo de datagramas de usuario (UDP).
El codificador de vídeo 20 y el decodificador de vídeo 30 pueden implementarse cada uno como cualquiera de una variedad de circuitos codificadores adecuados, como uno o más microprocesadores, procesadores de señales digitales (DSP), circuitos integrados de aplicación específica (ASIC), matriz de puertas lógicas programables en campo (FPGA), lógica discreta, software, hardware, firmware o cualquiera de sus combinaciones. Cuando las técnicas se implementan de manera parcial en el software, un dispositivo puede almacenar instrucciones para el software en un medio legible por ordenador no transitorio adecuado y ejecutar las instrucciones en el hardware mediante el uso de uno o más procesadores para realizar las técnicas de esta divulgación. Cada uno del codificador de vídeo 20 y el decodificador de vídeo 30 puede incluirse en uno o más codificadores o decodificadores, cualquiera de los cuales puede integrarse como parte de un codificador/decodificador combinado (CODEC) en un dispositivo respectivo.
El codificador de vídeo 20 puede implementar cualquiera o todas las técnicas de esta divulgación para la predicción de vectores de movimiento en un procedimiento de codificación de vídeo. Asimismo, el decodificador de vídeo 30 puede implementar cualquiera o todas estas técnicas para la predicción de vectores de movimiento en un procedimiento de codificación de vídeo. Un codificador de vídeo, como se describió en esta divulgación, puede referirse a un codificador de vídeo o un decodificador de vídeo. De manera similar, una unidad de codificación de vídeo puede referirse a un codificador de vídeo o un decodificador de vídeo. Igualmente, la codificación de vídeo puede referirse a la codificación o decodificación de vídeo.
En un ejemplo de la divulgación, el codificador de vídeo 20 del dispositivo fuente 12 puede configurarse para determinar uno de una pluralidad de modos para un procedimiento de predicción de vector de movimiento y realizar el procedimiento de predicción de vector de movimiento para el bloque actual de datos de vídeo mediante el uso del modo determinado y un conjunto de bloques candidatos, en el que el conjunto de bloques candidatos es el mismo para cada uno de la pluralidad de modos.
En otro ejemplo de la divulgación, el codificador de vídeo 20 del dispositivo fuente 12 puede configurarse para determinar uno de una pluralidad de modos para un procedimiento de predicción de vector de movimiento para un bloque actual de datos de vídeo y realizar el procedimiento de predicción de vector de movimiento para el bloque actual mediante el uso del modo determinado y un conjunto de bloques candidatos, en el que el conjunto de bloques candidatos es el mismo para cada uno de la pluralidad de modos, y en el que un bloque candidato en el conjunto de bloques candidatos se designa como un bloque candidato adicional, y en el que el bloque candidato adicional se usa si otro de los bloques candidatos del conjunto de bloques candidatos no está disponible
En otro ejemplo de la divulgación, el decodificador de vídeo 30 del dispositivo de destino 14 puede configurarse para recibir un elemento de sintaxis que indica uno de una pluralidad de modos para un procedimiento de predicción de vector de movimiento para un bloque actual de datos de vídeo y recibir un índice que indica un bloque candidato de un conjunto de bloques candidatos, en el que el conjunto de bloques candidatos es el mismo para cada uno de la pluralidad de modos, y en el que la información asociada con el bloque candidato se usa para decodificar un vector de movimiento para el bloque actual.
En otro ejemplo de la divulgación, el decodificador de vídeo 30 del dispositivo de destino 14 puede configurarse para recibir un elemento de sintaxis que indica uno de una pluralidad de modos para un procedimiento de predicción de vector de movimiento para un bloque actual de datos de vídeo y recibir un índice que indica un bloque candidato de un conjunto de bloques candidatos, en el que el conjunto de bloques candidatos es el mismo para cada uno de la pluralidad de modos, en el que un bloque candidato en el conjunto de bloques candidatos se designa como un bloque candidato adicional, en el que el bloque candidato adicional se usa si otro de los bloques candidatos del conjunto de bloques candidatos no está disponible, y en el que la información asociada con el bloque candidato se usa para decodificar un vector de movimiento para el bloque actual.
La Figura 3 es un diagrama de bloques que ilustra un ejemplo de un codificador de vídeo 20 que puede usar técnicas para la predicción de vectores de movimiento como se describe en esta divulgación. El codificador de vídeo 20 se describirá en el contexto de la codificación HEVC con fines de ilustración, pero sin limitación de esta divulgación en cuanto a otros estándares o procedimientos de codificación que pueden requerir la exploración de coeficientes de transformación. El codificador de vídeo 20 puede realizar intracodificación e intercodificación de CU dentro de los fotogramas de vídeo. La intracodificación se basa en la predicción espacial para reducir o eliminar la redundancia espacial en los datos de vídeo dentro de un fotograma de vídeo dado. La intercodificación se basa en la predicción temporal para reducir o eliminar la redundancia temporal entre un fotograma actual y los fotogramas previamente codificados de una secuencia de vídeo. El modo Intra (modo I) puede referirse a cualquiera de varios modos de compresión de vídeo basados en el espacio. EL modo Inter, como la predicción unidireccional (modo P) o la predicción bidireccional (modo B), pueden referirse a cualquiera de varios modos de compresión de vídeo basados en el tiempo.
Como se muestra en la Figura 3, el codificador de vídeo 20 recibe un bloque de vídeo actual dentro de un fotograma de vídeo a codificarse. En el ejemplo de la Figura 3, el codificador de vídeo 20 incluye una unidad de compensación de movimiento 44, una unidad de estimación de movimiento 42, una unidad de intrapredicción 46, una memoria intermedia de fotogramas de referencia 64, un sumador 50, un módulo de transformación 52, una unidad de cuantificación 54 y una unidad de codificación de entropía 56. El módulo de transformación 52 ilustrado en la Figura 3 es la estructura o aparato que aplica la transformación actual o combinaciones de transformación a un bloque de datos residuales, y no debe confundirse con un bloque de coeficientes de transformación, que también puede referirse como unidad de transformación (TU) de una CU. Para la reconstrucción de bloques de vídeo, el codificador de vídeo 20 también incluye una unidad de cuantificación inversa 58, un módulo de transformada inversa 60, y un sumador 62. Puede incluirse además un filtro de desbloqueo (no se muestra en la Figura 3) para filtrar los límites de los bloques para eliminar los artefactos de bloqueo del vídeo reconstruido. Si lo desea, el filtro de desbloqueo filtraría típicamente la salida del sumador 62.
Durante el procedimiento de codificación, el codificador de vídeo 20 recibe un fotograma o segmento de vídeo a codificar. El fotograma o segmento puede dividirse en múltiples bloques de vídeo, por ejemplo, unidades de codificación más grande (LCU). La unidad de estimación de movimiento 42 y la unidad de compensación de movimiento 44 realizan una codificación interpredictiva del bloque de vídeo que se recibe con relación a uno o más bloques en uno o más fotogramas de referencia para proporcionar compresión temporal. La unidad de intrapredicción 46 puede realizar una codificación intrapredictiva del bloque de vídeo que se recibe con relación a uno o más bloques vecinos en el mismo fotograma o segmento que el bloque a codificar para proporcionar compresión espacial.
La unidad de selección de modo 40 puede seleccionar uno de los modos de codificación, intra o inter, por ejemplo, en base a los resultados de error (es decir, distorsión) para cada modo, y proporciona el bloque intra o interpredicho resultante (por ejemplo, una unidad de predicción (PU)) al sumador 50 para generar datos de bloque residuales y al sumador 62 para reconstruir el bloque codificado para su uso en un fotograma de referencia. El sumador 62 combina el bloque predicho con datos de transformada inversa cuantificados inversamente del módulo de transformada inversa 60 para que el bloque reconstruya el bloque codificado, como se describe con mayor detalle a continuación. Algunos fotogramas de vídeo pueden designarse como fotogramas I, donde todos los bloques de un fotograma I se codifican en un modo de intrapredicción. En algunos casos, la unidad de intrapredicción 46 puede realizar la codificación de intrapredicción de un bloque en un fotograma P o B, por ejemplo, cuando la búsqueda de movimiento realizada por la unidad de estimación de movimiento 42 no resulta en una predicción suficiente del bloque.
La unidad de estimación de movimiento 42 y la unidad de compensación de movimiento 44 pueden integrarse altamente, pero se ilustran por separado por propósitos conceptuales. La estimación de movimiento (o búsqueda de movimiento) es el procedimiento de generar vectores de movimiento, que estiman el movimiento de los bloques de vídeo. Un vector de movimiento, por ejemplo, puede indicar el desplazamiento de una unidad de predicción en un fotograma actual con relación a una muestra de referencia de un fotograma de referencia. La unidad de estimación de movimiento 42 calcula un vector de movimiento para una unidad de predicción de un fotograma intercodificada al comparar la unidad de predicción con muestras de referencia de un fotograma de referencia almacenada en la memoria intermedia de fotogramas de referencia 64. Una muestra de referencia puede ser un bloque que se encuentra que coincide estrechamente con la porción de la CU, incluida la PU que se codifica en términos de diferencia de píxel, que puede determinarse por la suma de la diferencia absoluta (SAD), la suma de la diferencia al cuadrado (SSD), u otras métricas de diferencia. La muestra de referencia puede ocurrir en cualquier lugar dentro de un fotograma de referencia o un segmento de referencia. En algunos ejemplos, la muestra de referencia puede ocurrir en una ubicación de píxel fraccional.
La porción del fotograma de referencia identificada por un vector de movimiento puede referirse como muestra de referencia. La unidad de compensación de movimiento 44 puede calcular un valor de predicción para una unidad de predicción de una CU actual, por ejemplo, al recuperar la muestra de referencia identificada por un vector de movimiento para la PU. En algunas técnicas de codificación de vídeo, la unidad de estimación de movimiento 42 envía el vector de movimiento calculado, el fotograma de referencia y la dirección de predicción (es decir, la dirección en términos de si el fotograma de referencia precede o sigue temporalmente al fotograma actual) a la unidad de codificación de entropía 56 y la unidad de compensación de movimiento 44. Otras técnicas de codificación de vídeo usan un procedimiento de predicción de vector de movimiento para codificar el vector de movimiento. El procedimiento de predicción del vector de movimiento puede elegirse entre una pluralidad de modos, que incluyen un modo de fusión y un modo AMVP.
En el modo de fusión, el codificador considera un conjunto de bloques candidatos y selecciona un bloque que tiene el mismo vector de movimiento, fotograma de referencia y dirección de predicción (o los que más se acercan) que el bloque actual. Esto se logra al verificar cada bloque candidato a su vez y elegir el que produce el mejor rendimiento de distorsión de velocidad una vez que su vector de movimiento, fotograma de referencia y dirección de predicción se copian en el bloque actual. Entonces, en lugar de señalar esta información de vector de movimiento (es decir, el vector de movimiento, el fotograma de referencia y la dirección de predicción) en el flujo de bits de vídeo codificado, el codificador señala un número de índice para el bloque candidato seleccionado. Un decodificador puede copiar la información del vector de movimiento del bloque candidato indicado por el número de índice señalado y usar la información del vector de movimiento copiado para un bloque actual. La Figura 4A muestra un ejemplo de señalización de modo de fusión. Un indicador de fusión 201 indica que se usa el modo de fusión. El índice de bloque candidato 202 indica cuál de los bloques candidatos del conjunto de bloques candidatos definidos para el modo de fusión se usará para recuperar información de vector de movimiento para el bloque actual.
Cabe señalar que, en ciertos casos, para cumplir con el número especificado de candidatos para el conjunto de candidatos del modo de fusión, puede generarse cierta información de vector de movimiento "artificial" para completar el conjunto de candidatos. La información de vector de movimiento "artificial" puede generarse mediante combinaciones parciales de información de vector de movimiento de diferentes bloques candidatos. Por ejemplo, el vector de movimiento de Lista 0 del bloque candidato 1 puede combinarse con el vector de movimiento de Lista 1 del candidato 2, junto con el índice del fotograma de referencia y la dirección de predicción, para formar nueva información de vector de movimiento en el conjunto de candidatos. En algunos otros ejemplos, los vectores de movimiento cero también pueden agregarse como información de vector de movimiento adicional para completar el conjunto de candidatos. Sin embargo, independientemente de cómo se forme el conjunto de candidatos, en el modo de fusión, solo debe señalarse al decodificador un índice en el conjunto de candidatos para indicar qué candidato se selecciona para proporcionar información de vector de movimiento para un bloque actual. En el lado del decodificador, se forma el mismo conjunto de candidatos y la información del vector de movimiento puede identificarse a través del índice señalado en el conjunto de candidatos.
En el modo AMVP, el codificador considera un conjunto de bloques candidatos y selecciona un bloque que produce una diferencia de vector de movimiento (es decir, una diferencia entre el vector de movimiento de un bloque candidato respectivo y el vector de movimiento real del bloque actual) que da como resultado la mejor distorsión de velocidad o alcanza algún umbral predeterminado (por ejemplo, un umbral de distorsión de velocidad). El modo AMVP puede considerar los bloques candidatos en un patrón de verificación hasta que se encuentre y elija un candidato satisfactorio. Alternativamente, en algunos ejemplos, todos los bloques candidatos podrían verificarse y un bloque candidato que produzca el mejor resultado se selecciona como el MVP para el bloque a codificar. El codificador puede señalar entonces un índice para el bloque candidato usado para producir la diferencia de vector de movimiento junto con la diferencia de vector de movimiento. Un decodificador puede entonces recrear el vector de movimiento para el bloque actual al sumar la diferencia del vector de movimiento recibido al vector de movimiento recuperado del bloque candidato indicado por el índice señalado. La Figura 4B muestra un ejemplo de señalización de modo AMVP. Un indicador de modo AMVP 205 indica que se usa el modo AMVP. El índice de bloque candidato 206 indica cuál de los bloques candidatos del conjunto de bloques candidatos definidos para el modo AMVP se usará para recuperar un vector de movimiento. El modo AMVP también señala la diferencia de vector de movimiento 207, el fotograma de referencia 208 y la dirección de predicción 209. En algunos ejemplos, en lugar de señalar explícitamente el fotograma de referencia y la dirección de predicción, el fotograma de referencia y la dirección de predicción se recuperan de la información del vector de movimiento asociada con el bloque candidato.
En los ejemplos descritos anteriormente, la señalización de la información del vector de movimiento en el flujo de bits codificado no requiere la transmisión en tiempo real de dichos elementos desde el codificador al decodificador, sino que significa que dicha información se codifica en el flujo de bits y se hace accesible para el decodificador de cualquier manera. Esto puede incluir la transmisión en tiempo real (por ejemplo, en videoconferencias), así como el almacenamiento del flujo de bits codificado en un medio legible por ordenador para uso futuro por parte de un decodificador (por ejemplo, en transmisión, descarga, acceso al disco, acceso a la tarjeta, DVD, Blu-ray, etc.).
De acuerdo con los ejemplos de esta divulgación, el modo de fusión y el modo AMVP usan el mismo conjunto de bloques candidatos (es decir, en términos de número y ubicación de los bloques). Como tal, tanto el codificador como el decodificador pueden reducir la cantidad de memoria necesaria para almacenar información de vector de movimiento para los bloques candidatos. También puede reducir el requisito de ancho de banda de la memoria para recuperar esos vectores de movimiento durante el procedimiento de codificación de un bloque actual.
En un primer ejemplo de la divulgación, el modo de fusión y el modo AMVP usan el mismo conjunto de bloques candidatos 120 que se muestra en la Figura 5A. En este ejemplo, el modo de fusión ahora usaría seis bloques candidatos en lugar de cinco. Sin embargo, la cantidad total de bloques candidatos para el modo de fusión y el modo AMVP se reduce, ya que ambos modos usan bloques candidatos en las mismas ubicaciones. En este ejemplo, los bloques candidatos están en las posiciones inferior izquierda (BL) 121, izquierda (L) 122, superior izquierda (LA) 125, superior (A) 124, superior derecha (RA) 123 y temporal (T) 126 como se muestra en la Figura 5a . En este ejemplo, el bloque candidato izquierdo 122 es adyacente al borde izquierdo del bloque actual 127. El borde inferior del bloque izquierdo 122 se encuentra alineado con el borde inferior del bloque actual 127. El bloque superior 124 es adyacente al borde superior del bloque actual 127. El borde derecho del bloque superior 124 se encuentra alineado con el borde derecho del bloque actual 127.
En un segundo ejemplo de la divulgación, el modo AMVP y el modo de fusión usan el conjunto de bloques candidatos 130 que se muestra en la Figura 5B. En este ejemplo, el número de bloques candidatos para el modo AMVP se reduce a 5. Se logra una mayor reducción de los bloques candidatos, ya que tanto el modo de fusión como el modo AMVP ahora usan bloques candidatos en las mismas ubicaciones. En este ejemplo, los bloques candidatos están en las posiciones inferior izquierda (BL) 131, izquierda (L) 132, superior (A) 134, superior derecha (RA) 133 y temporal (T) 135. Tenga en cuenta que las ubicaciones del bloque superior 134 y el bloque izquierdo 132 difieren de las ubicaciones del bloque superior 124 y el bloque izquierdo 122 en el ejemplo de la Figura 5A. En este ejemplo, el bloque candidato izquierdo 132 es adyacente al borde izquierdo del bloque actual 137. El borde superior del bloque izquierdo 132 se encuentra alineado con el borde superior del bloque actual 137. El bloque superior 134 es adyacente al borde superior del bloque actual 137. El borde izquierdo del bloque superior 134 se encuentra alineado con el borde izquierdo del bloque actual 137. En un ejemplo, el patrón de verificación para el modo AMVP procede de la siguiente manera: BL - L - RA - A - T.
En un tercer ejemplo de la divulgación, el modo de fusión y el modo AMVP usan el conjunto de bloques candidatos 140 que se muestra en la Figura 6. En este ejemplo, se reduce el número de bloques candidatos; tanto al reducir el número total de cada modo a 5, como al unificar las ubicaciones de los bloques candidatos para ambos modos. En este ejemplo, los bloques candidatos están en las posiciones inferior izquierda (BL) 141, a la izquierda (L) 142, superior (A) 143, superior derecha (RA) 144 y temporal (T) 145. En este ejemplo, el bloque candidato izquierdo 142 es adyacente al borde izquierdo del bloque actual 147. El borde inferior del bloque izquierdo 142 se encuentra alineado con el borde inferior del bloque actual 147. El bloque superior 143 es adyacente al borde superior del bloque actual 147. El borde derecho del bloque superior 143 se encuentra alineado con el borde derecho del bloque actual 147.
En otro ejemplo, la divulgación describe un patrón de verificación mejorado para el modo AMVP. Como se muestra en la Figura 7, por ejemplo, el patrón de verificación procede de la siguiente manera: L-BL-A-RA-LA-T. En lugar de comenzar en el bloque candidato BL, como se muestra en la Figura 1A, el ejemplo en la Figura 7 comienza en el bloque candidato L. Los bloques del lado izquierdo generalmente se encuentran más correlacionados con el bloque actual, ya que el contenido de vídeo generalmente se mueve en dirección horizontal. El bloque candidato L se verifica primero, porque el bloque candidato BL puede no estar disponible (es decir, puede no haberse codificado ya) en todas las situaciones. Además, el bloque candidato A se comprueba antes que el bloque candidato RA, ya que se demostró que el vector de movimiento del bloque candidato A tiene una correlación estadística más alta con el vector de movimiento del bloque actual que con el bloque candidato RA.
El modo de fusión puede usar el mismo patrón de verificación que se muestra en la Figura 7, o puede usar un patrón de verificación diferente. Como ejemplo, el patrón de verificación para el modo de fusión puede proceder de la siguiente manera: L-A-RA-BL-(LA)-T. En este ejemplo, la inclusión del bloque LA es opcional o adaptable en función de si uno de los primeros cuatro bloques candidatos no está disponible.
El ejemplo de la Figura 7 se muestra con referencia al conjunto de bloques candidatos de la Figura 5A. Sin embargo, este patrón de comprobación puede aplicarse a cualquier conjunto de candidatos. En general, el bloque candidato de la izquierda debe verificarse antes que el bloque candidato de inferior izquierdo. A continuación, el bloque candidato superior debe verificarse antes que el bloque candidato superior derecho. Cualquier bloque candidato restante puede verificarse en cualquier orden. En algunos ejemplos, el bloque candidato temporal puede verificarse en último lugar.
En otro ejemplo de la divulgación que está de acuerdo con las reivindicaciones independientes, se divulgan candidatos adicionales flexibles tanto para el modo de fusión como para el AMVP. Como se muestra en el ejemplo de la Figura 5A, hay cinco bloques candidatos espaciales (es decir, L, BL, A, RA, y LA) y un bloque candidato temporal (es decir, T), para un total de seis bloques candidatos. En una propuesta anterior al estándar HEVC, el número máximo de bloques candidatos para el modo de fusión es cinco. Como tal, uno de los bloques candidatos mostrados en la Figura 5A puede eliminarse para el modo de fusión. En un ejemplo, el bloque candidato LA puede definirse como un bloque candidato adicional (es decir, inicialmente no se considera como parte del conjunto de bloques candidatos para el modo de fusión).
Sin embargo, como se mencionó anteriormente, no todos los bloques candidatos están disponibles en todas las situaciones. Por ejemplo, es posible que el bloque candidato de BL aún no se codifique en el momento en que se codifica el bloque actual. Además, los datos de algunos bloques candidatos pueden corromperse o no recibirse en absoluto (por ejemplo, en la decodificación en tiempo real). Como tal, esta divulgación propone utilizar bloques candidatos adicionales en situaciones en las que se descubre que un bloque candidato en el conjunto no está disponible. De esta forma, el número total de candidatos se mantiene en el límite máximo sin desperdiciar una verificación en un candidato no disponible.
En un ejemplo, los candidatos L y BL se verifican primero por el codificador o decodificador, según corresponda. Si uno de estos bloques candidatos no es válido (por ejemplo, se encuentra corrupto) o no está disponible, puede utilizarse en su lugar un bloque candidato adicional (por ejemplo, LA). Si los bloques candidatos L y BL son válidos, se comprueban los bloques candidatos A y RA. Si uno de estos bloques candidatos no es válido o no está disponible, puede usarse en su lugar el bloque candidato LA. Si los bloques candidatos A y RA son válidos, no se usará el bloque candidato LA. En este ejemplo que está de acuerdo con las reivindicaciones independientes, el bloque candidato LA se usa como bloque candidato adicional. Sin embargo, puede usarse cualquier bloque candidato adicional en cualquier posición causal (es decir, en una posición, relativa al bloque actual, donde el bloque candidato ya se codificó) relativa al bloque actual.
En otro ejemplo, todos los bloques candidatos mostrados en la Figura 5A se usarán. Para un modo de fusión donde el número máximo de bloques candidatos es N (donde N es menor que 6), los primeros N bloques candidatos disponibles en un patrón de verificación se usarán como bloques candidatos para el modo de fusión. En el ejemplo de la Figura 5A, hay seis bloques candidatos con un patrón de verificación de L - A - RA - BL - LA - T. Los primeros N bloques candidatos disponibles en el patrón de verificación formarán el conjunto final de bloques candidatos para el modo de fusión. En este ejemplo, el patrón de verificación es fijo. En otro ejemplo, el patrón de verificación puede seleccionarse en base al tamaño del bloque, el tamaño de la partición y/o el índice de la partición. En otro ejemplo, el patrón de verificación puede actualizarse de forma adaptativa durante la codificación y decodificación. La actualización puede depender del índice de fusión, el modo de predicción del vector de movimiento, el tamaño de partición, el índice de partición y/o la información del vector de movimiento (por ejemplo, índice de referencia, diferencia de vector de movimiento, predictor de vector de movimiento) de bloques previamente codificados/decodificados.
De acuerdo con otro ejemplo, las técnicas de usar un bloque candidato adicional también pueden aplicarse al modo AMVP. El modo AMVP en el borrador de trabajo actual del estándar HEVC ya permite verificar los seis bloques candidatos que se muestran en la Figura 5A. Sin embargo, como se mencionó anteriormente, algunos de estos bloques candidatos pueden no estar disponibles o no ser válidos. En tal caso, puede definirse un candidato de fusión adicional. Tal candidato de fusión puede estar en cualquier posición que sea causal para la PU actual.
De regreso a la Figura 3, la unidad de intrapredicción 46 puede realizar la interpredicción en el bloque que se recibe, como una alternativa a la interpredicción realizada por la unidad de estimación de movimiento 42 y la unidad de compensación de movimiento 44. La unidad de intrapredicción 46 puede predecir el bloque que se recibe con relación a los bloques vecinos previamente codificados, por ejemplo, los bloques superior, superior derecho, superior izquierdo, o a la izquierda del bloque actual, al asumir un orden de codificación de izquierda a derecha, de arriba a abajo para los bloques. La unidad de intrapredicción 46 puede configurarse con una variedad de diferentes modos de intrapredicción. Por ejemplo, la unidad de intrapredicción 46 puede configurarse con un cierto número de modos de predicción direccional, por ejemplo, treinta y cuatro modos de predicción direccional, en base al tamaño de la CU que se codifica.
La unidad de intrapredicción 46 puede seleccionar un modo de intrapredicción, por ejemplo, al calcular valores de error de predicción para varios modos de intrapredicción y seleccionar un modo que produzca el valor de error más bajo. Los modos de predicción direccional pueden incluir funciones para combinar valores de píxeles espacialmente vecinos y aplicar los valores combinados a una o más posiciones de píxeles en una PU. Una vez que se han calculado los valores para todas las posiciones de los píxeles en la PU, la unidad de intrapredicción 46 puede calcular un valor de error para el modo de predicción en base a las diferencias de píxeles entre los valores previstos o calculados de la PU y el bloque original que se recibe a codificarse. La unidad de intrapredicción 46 puede continuar la prueba de los modos de intrapredicción hasta que se descubra un modo de intrapredicción que produzca un valor de error aceptable. La unidad de intrapredicción 46 puede entonces enviar la PU al sumador 50. El codificador de vídeo 20 forma un bloque residual al restar los datos de predicción calculados por la unidad de compensación de movimiento 44 o la unidad de intrapredicción 46 del bloque de vídeo original que se codifica. El sumador 50 representa el componente o componentes que realizan esta operación de resta. El bloque residual puede corresponder a una matriz bidimensional de valores de diferencia de píxeles, donde el número de valores en el bloque residual es el mismo que el número de píxeles en la PU correspondiente al bloque residual. Los valores del bloque residual pueden corresponder a las diferencias, es decir, al error, entre los valores de los píxeles coubicados en la PU y en el bloque original a codificar. Tal operación se aplica tanto a los componentes de luma como de croma, por lo que las diferencias pueden ser diferencias de croma o luma en función del tipo de bloque que se codifica.
El módulo de transformación 52 puede formar una o más unidades de transformación (TU) a partir del bloque residual. El módulo de transformación 52 selecciona una transformación entre una pluralidad de transformaciones. La transformación puede seleccionarse en base a una o más características de codificación, como el tamaño de bloque, el modo de codificación o similares. El módulo de transformación 52 luego aplica la transformación seleccionada a la TU, y produce un bloque de vídeo que comprende una matriz bidimensional de coeficientes de transformación.
El módulo de transformación 52 puede enviar los coeficientes de transformación resultantes a la unidad de cuantificación 54. La unidad de cuantificación 54 puede entonces cuantificar los coeficientes de transformación. La unidad de codificación de entropía 56 puede entonces realizar una exploración de los coeficientes de transformación cuantificados en la matriz de acuerdo con un modo de exploración. Esta divulgación describe que la unidad de codificación de entropía 56 realiza el escaneo. Sin embargo, debe entenderse que, en otros ejemplos, otras unidades de procesamiento, como la unidad de cuantificación 54, podrían realizar el escaneo.
Una vez que los coeficientes de transformación se escanean en la matriz unidimensional, la unidad de codificación de entropía 56 puede aplicar la codificación de entropía, como la codificación de longitud variable adaptable al contexto (CAVLC), la codificación aritmética binaria adaptable al contexto (CABAC), la codificación aritmética binaria adaptable al contexto basada en la sintaxis (SBAC), u otra metodología de codificación de entropía a los coeficientes. La codificación de entropía también puede aplicarse a los elementos de sintaxis, como los elementos de sintaxis usados en el modo de fusión y el modo AMVP.
Para realizar CAVLC, la unidad de codificación de entropía 56 puede seleccionar un código de longitud variable para que se transmita un símbolo. Las palabras de código en VLC pueden construirse de manera que los códigos relativamente más cortos correspondan a símbolos más probables, mientras que los códigos más largos correspondan a símbolos menos probables. De esta manera, el uso de VLC puede lograr un ahorro de bits con respecto a, por ejemplo, mediante el uso de palabras de código de igual longitud para cada símbolo a transmitir. Para realizar CABAC, la unidad de codificación de entropía 56 puede seleccionar un modelo de contexto para aplicar a un determinado contexto para codificar los símbolos que se transmitirán. En el caso de los coeficientes de transformación, el contexto puede relacionarse, por ejemplo, con si los valores vecinos son distintos de cero o no. La unidad de codificación de entropía 56 también puede codificar entropía elementos de sintaxis, tales como la señal representativa de la transformada seleccionada. De acuerdo con las técnicas de esta divulgación, la unidad de codificación de entropía 56 puede seleccionar el modelo de contexto usado para codificar estos elementos de sintaxis en base a, por ejemplo, una dirección de intrapredicción para modos de intrapredicción, una posición de escaneo del coeficiente correspondiente a los elementos de sintaxis, el tipo de bloque y/o el tipo de transformación, entre otros factores usados para la selección del modelo de contexto.
Después de la codificación de entropía por la unidad de codificación de entropía 56, el vídeo codificado resultante puede transmitirse a otro dispositivo, tal como el decodificador de vídeo 30, o archivarse para su posterior transmisión o recuperación.
En algunos casos, la unidad de codificación de entropía 56 u otra unidad del codificador de vídeo 20 pueden configurarse para realizar otras funciones de codificación, además de la codificación de entropía. Por ejemplo, la unidad de codificación de entropía 56 puede configurarse para determinar valores de patrón de bloques codificados (CBP) para CU y PU. Además, en algunos casos, la unidad de codificación de entropía 56 puede realizar la codificación de longitud de ejecución de coeficientes.
La unidad de cuantificación inversa 58 y el módulo de transformada inversa 60 aplican cuantificación inversa y transformada inversa, respectivamente, para reconstruir el bloque residual en el dominio de píxeles, por ejemplo, para su uso posterior en la reconstrucción de un bloque de referencia. La unidad de compensación de movimiento 44 puede calcular un bloque de referencia al sumar el bloque residual a un bloque predictivo formado a partir de uno de los fotogramas de la memoria intermedia de fotogramas de referencia 64. La unidad de compensación de movimiento 44 también puede aplicar uno o más filtros de interpolación al bloque de referencia reconstruido para calcular valores de píxeles subenteros para su uso en la estimación de movimiento. El sumador 62 añade el bloque residual reconstruido al bloque de predicción compensado por movimiento producido por la unidad 44 de compensación de movimiento para producir un bloque de vídeo reconstruido para su almacenamiento en la memoria intermedia 64 de fotogramas de referencia. El bloque de vídeo reconstruido puede usarse por la unidad de estimación de movimiento 42 y la unidad de compensación de movimiento 44 como un bloque de referencia para intercodificar un bloque en un fotograma de vídeo posterior.
La Figura 8 es un diagrama de bloques que ilustra un ejemplo de un decodificador de vídeo 30, que decodifica una secuencia de vídeo codificada. En el ejemplo de la Figura 8, el decodificador de vídeo 30 incluye una unidad de decodificación de entropía 70, una unidad de compensación de movimiento 72, una unidad de intrapredicción 74, una unidad de cuantificación inversa 76, un módulo de transformada inversa 78, una memoria intermedia de fotograma de referencia 82 y un sumador 80. El decodificador de vídeo 30 puede, en algunos ejemplos, realizar un paso de decodificación generalmente recíproco al paso de codificación descrito con respecto al codificador de vídeo 20 (ver Figura 3).
La unidad de decodificación de entropía 70 realiza un procedimiento de decodificación de entropía en el flujo de bits codificado para recuperar una matriz unidimensional de coeficientes de transformación. El procedimiento de decodificación de entropía usado depende de la codificación de entropía usada por el codificador de vídeo 20 (por ejemplo, CABAC, CAVLC, etc.). El procedimiento de codificación de entropía usado por el codificador puede señalizarse en el flujo de bits codificado o puede ser un procedimiento predeterminado.
En algunos ejemplos, la unidad de decodificación de entropía 70 (o la unidad de cuantificación inversa 76) puede escanear los valores recibidos mediante el uso de un escaneo que refleja el modo de escaneo usado por la unidad de codificación de entropía 56 (o la unidad de cuantificación 54) del codificador de vídeo 20. Aunque el escaneo de coeficientes puede realizarse en la unidad de cuantificación inversa 76, el escaneo se describirá con propósitos ilustrativos como se realiza por la unidad de decodificación de entropía 70. Además, aunque se muestran como unidades funcionales separadas para facilitar la ilustración, la estructura y funcionalidad de la unidad de decodificación de entropía 70, la unidad de cuantificación inversa 76 y otras unidades del decodificador de vídeo 30 pueden integrarse altamente entre sí.
La unidad de cuantificación inversa 76 cuantifica inversamente, es decir, descuantifica, los coeficientes de transformación cuantificados proporcionados en el flujo de bits y decodificados por la unidad de decodificación de entropía 70. El procedimiento de cuantificación inversa puede incluir un procedimiento convencional, por ejemplo, similar a los procedimientos propuestos por el HEVC o definidos por el estándar de decodificación H.264. El procedimiento de cuantificación inversa puede incluir el uso de un parámetro de cuantificación QP calculado por el codificador de vídeo 20 por la CU para determinar un grado de cuantificación e, igualmente, un grado de cuantificación inversa que debería aplicarse. La unidad de cuantificación inversa 76 puede cuantificar de forma inversa los coeficientes de transformación antes o después de que los coeficientes se conviertan de una matriz unidimensional a una matriz bidimensional.
El módulo de transformada inversa 78 aplica una transformada inversa a los coeficientes de transformada cuantificada inversa. En algunos ejemplos, el módulo de transformada inversa 78 puede determinar una transformada inversa en base a la señalización del codificador de vídeo 20, o al inferir la transformada de una o más características de codificación como tamaño de bloque, modo de codificación o similares. En algunos ejemplos, el módulo de transformada inversa 78 puede determinar una transformación para aplicar al bloque actual en base a una transformación señalada en el nodo raíz de un árbol cuaternario para una LCU que incluye el bloque actual. Alternativamente, la transformación puede señalizarse en la raíz de un árbol cuaternario de TU para un nodo hoja de CU en el árbol cuaternario de LCU. En algunos ejemplos, el módulo de transformada inversa 78 puede aplicar una transformada inversa en cascada, en la que el módulo de transformada inversa 78 aplica dos o más transformadas inversas a los coeficientes de transformada del bloque actual que se decodifica.
La unidad de intrapredicción 74 puede generar datos de predicción para un bloque actual de un fotograma actual en base a un modo de intrapredicción señalado y datos de bloques previamente decodificados del fotograma actual. De acuerdo con ejemplos de esta divulgación, el decodificador de vídeo 30 puede recibir, desde el flujo de bits codificado, sintaxis de predicción que identifica el modo de predicción del vector de movimiento y la información del vector de movimiento asociado (por ejemplo, véanse las Figuras 4A y 4B y la discusión relacionada). En particular, el decodificador de vídeo 30 puede recibir un índice que indica un bloque candidato de un conjunto de bloques candidatos, en el que el conjunto de bloques candidatos es el mismo para cada uno de la pluralidad de modos, y en el que la información asociada con el bloque candidato se usa para decodificar un vector de movimiento para el bloque actual. El conjunto de bloques candidatos pueden ser los conjuntos que se muestran en la Figura 5A, la Figura 5B, o la Figura 6, o cualquier otro conjunto de bloques candidatos causales del bloque actual.
En el caso de que el elemento de sintaxis indique el modo de fusión, el decodificador de vídeo se configura además para recuperar un vector de movimiento, un fotograma de referencia y una dirección de predicción asociada con el bloque candidato que tiene el índice recibido, y para realizar un procedimiento de predicción intermedia para el bloque actual mediante el uso del vector de movimiento recuperado, el fotograma de referencia y la dirección de predicción.
En el caso de que el elemento de sintaxis indique el modo de predicción de vector de movimiento adaptativo (AMVP), el decodificador de vídeo se configura además para recibir un índice de fotograma de referencia, una diferencia de vector de movimiento y un elemento de sintaxis que indica una dirección de predicción, recuperar un vector de movimiento candidato asociado con el bloque candidato que tiene el índice recibido, calcular un vector de movimiento para el bloque actual mediante el uso del vector de movimiento candidato y la diferencia de vector de movimiento, y realizar un procedimiento de interpredicción mediante el uso del vector de movimiento calculado, el índice del fotograma de referencia recibido y la dirección de predicción recibida.
Independientemente del modo de predicción, una vez que se determinan la dirección de predicción, el índice del fotograma de referencia y el vector de movimiento para el bloque actual, la unidad de compensación de movimiento produce un bloque con compensación de movimiento para el bloque actual. Estos bloques compensados por movimiento esencialmente recrean el bloque predictivo usado para producir los datos residuales.
La unidad de compensación de movimiento 72 puede producir los bloques de compensación de movimiento, posiblemente al realizar una interpolación en base a filtros de interpolación. Los identificadores para los filtros de interpolación a usarse para la estimación de movimiento con precisión de subpíxeles pueden incluirse en los elementos de sintaxis. La unidad de compensación de movimiento 72 puede usar filtros de interpolación como los usa el codificador de vídeo 20 durante la codificación del bloque de vídeo para calcular valores interpolados para píxeles subenteros del bloque de referencia. La unidad de compensación de movimiento 72 puede determinar los filtros de interpolación usados por el codificador de vídeo 20 de acuerdo con la información de sintaxis recibida y usar los filtros de interpolación para producir bloques predictivos.
Además, la unidad de compensación de movimiento 72 y la unidad de intrapredicción 74, en un ejemplo de HEVC, pueden usar parte de la información de sintaxis (por ejemplo, proporcionada por un árbol cuaternario) para determinar los tamaños de las LCU utilizadas para codificar fotogramas de la secuencia de vídeo codificada. La unidad de compensación de movimiento 72 y la unidad de intrapredicción 74 también pueden usar información de sintaxis para determinar información dividida que describe cómo se divide cada CU de un fotograma de la secuencia de vídeo codificada (y, de la misma manera, cómo se dividen las sub-CU). La información de sintaxis también puede incluir modos que indican cómo se codifica cada CU (por ejemplo, intra o interpredicción, y para intrapredicción un modo de codificación de intrapredicción), uno o más fotogramas de referencia (y/o listas de referencia que contienen identificadores para los fotogramas de referencia) para cada PU intercodificada, y otra información para decodificar la secuencia de vídeo codificada.
El sumador 80 combina los bloques residuales con los bloques de predicción correspondientes generados por la unidad de compensación de movimiento 72 o la unidad de intrapredicción 74 para formar bloques decodificados. Los bloques decodificados, en efecto, reconstruyen los bloques codificados originalmente, sujetos a pérdida debido a la cuantificación u otros aspectos de la codificación. Si se desea, también puede aplicarse un filtro de desbloqueo para filtrar los bloques decodificados con el fin de eliminar los artefactos de bloqueo. Los bloques de vídeo decodificados luego se almacenan en la memoria intermedia del fotograma de referencia 82, que proporciona bloques de referencia para la compensación de movimiento posterior y también produce vídeo decodificado para su presentación en un dispositivo de visualización (como el dispositivo de visualización 32 de la Figura 2).
Como se mencionó anteriormente, las técnicas de esta divulgación son aplicables tanto para un codificador como para un decodificador. En general, y de acuerdo con la descripción anterior, un codificador utiliza el mismo conjunto de bloques candidatos para realizar un procedimiento de predicción de vectores de movimiento (por ejemplo, un modo de fusión y un modo AMVP). Luego, un decodificador puede decodificar el vector de movimiento en base a los elementos de sintaxis recibidos mediante el uso del mismo conjunto de bloques candidatos que usa el codificador. Al unificar los bloques candidatos para todos los modos de predicción de vectores de movimiento, se reduce la cantidad de memoria necesaria para almacenar información de vectores de movimiento (por ejemplo, vector de movimiento, dirección de predicción, índices de fotograma de referencia, etc.). También puede reducirse el requisito de ancho de banda de memoria para recuperar la información del vector de movimiento de esos bloques candidatos. La Figura 9 es un diagrama de flujo que ilustra un procedimiento de ejemplo de codificación de vídeo, que puede realizarse por un codificador de vídeo, como el codificador de vídeo 20 de la Figura 3. El codificador de vídeo 20 puede configurarse para determinar un vector de movimiento relativo a un fotograma de referencia para un bloque actual de datos de vídeo (900). El codificador de vídeo 20 también puede determinar uno de una pluralidad de modos (por ejemplo, modo de fusión o AMVP) para un procedimiento de predicción de vector de movimiento (901), y realizar el procedimiento de predicción de vector de movimiento para el bloque actual de datos de vídeo mediante el uso del modo determinado y un conjunto de bloques candidatos. El conjunto de bloques candidatos es el mismo para cada uno de la pluralidad de modos.
La pluralidad de modos puede incluir un modo de fusión y un modo de predicción de vector de movimiento adaptativo. La Figura 10 ilustra un procedimiento de ejemplo de codificación de vídeo cuando el procedimiento de predicción del vector de movimiento está en el modo de fusión. En este caso, el codificador de vídeo se configura además para determinar un vector de movimiento candidato del conjunto de bloques candidatos que produce un rendimiento de distorsión de velocidad satisfactorio una vez que su vector de movimiento, fotograma de referencia y dirección de predicción se copian en el bloque actual (1001) y señalar un índice que identifica el vector de movimiento candidato (1002).
En un ejemplo, el conjunto de bloques candidatos puede incluir un bloque candidato superior, un bloque candidato superior derecho, un bloque candidato izquierdo, un bloque candidato inferior izquierdo y un bloque candidato temporal. El bloque candidato izquierdo es adyacente a un borde izquierdo del bloque actual y un borde superior del bloque candidato izquierdo se encuentra alineado con un borde superior del bloque actual. El bloque candidato superior es adyacente al borde superior del bloque actual y un borde izquierdo del bloque candidato superior se encuentra alineado con el borde izquierdo del bloque actual.
En otro ejemplo, el bloque candidato izquierdo es adyacente a un borde izquierdo del bloque actual y un borde inferior del bloque candidato izquierdo se encuentra alineado con un borde inferior del bloque actual. El bloque candidato superior es adyacente a un borde superior del bloque actual y un borde derecho del bloque candidato superior se encuentra alineado con un borde derecho del bloque actual.
En otro ejemplo, el conjunto de bloques candidatos incluye un bloque candidato superior izquierdo, un bloque candidato superior, un bloque candidato superior derecho, un bloque candidato izquierdo, un bloque candidato inferior izquierdo y un bloque candidato temporal.
La Figura 11 ilustra un procedimiento de ejemplo para codificar vídeo cuando el procedimiento de predicción del vector de movimiento está en el modo AMVP. En este caso, el codificador de vídeo se configura para determinar un vector de movimiento candidato de cada bloque candidato en el conjunto de bloques candidatos (1101) y calcular una diferencia de vector de movimiento entre el vector de movimiento para el bloque actual y el vector de movimiento candidato de cada uno de los bloques candidatos de acuerdo con un patrón de verificación (1102). El codificador de vídeo también se configura para seleccionar uno de los vectores de movimiento candidatos en base a las diferencias de vectores de movimiento calculadas (1103), y para señalar un índice que identifique el bloque candidato que tiene el vector de movimiento candidato seleccionado, para señalar la diferencia de vector de movimiento calculada con respecto al seleccionado de los vectores de movimiento candidatos, para señalar el fotograma de referencia, y para señalar la dirección de predicción (1104).
En un ejemplo, el conjunto de bloques candidatos incluye un bloque candidato superior, un bloque candidato superior derecho, un bloque candidato izquierdo, un bloque candidato inferior izquierdo y un bloque candidato temporal. En este ejemplo, el patrón de verificación procede en el siguiente orden: bloque candidato inferior izquierdo, bloque candidato izquierdo, bloque candidato superior derecho, bloque candidato superior, bloque candidato temporal.
En otro ejemplo, el conjunto de bloques candidatos incluye un bloque candidato superior izquierdo, un bloque candidato superior, un bloque candidato superior derecho, un bloque candidato izquierdo, un bloque candidato inferior izquierdo y un bloque candidato temporal. El patrón de verificación procede en el siguiente orden: bloque candidato izquierdo, bloque candidato inferior izquierdo, bloque candidato superior, bloque candidato superior derecho, bloque candidato superior izquierdo, bloque candidato temporal.
La Figura 12 es un diagrama de flujo que ilustra un procedimiento de ejemplo de decodificación de vídeo, que puede realizarse por un decodificador de vídeo, como el decodificador de vídeo 30 de la Figura 3. El decodificador de vídeo 30 puede configurarse para recibir un elemento de sintaxis que indica uno de una pluralidad de modos para un procedimiento de predicción de vector de movimiento para un bloque actual de datos de vídeo (1201), y para recibir un índice que indica un bloque candidato de un conjunto de bloques candidatos (1202), en el que el conjunto de bloques candidatos es el mismo para cada uno de la pluralidad de modos, y en el que la información asociada con el bloque candidato se usa para decodificar un vector de movimiento para el bloque actual. La pluralidad de modos puede incluir un modo de fusión y un modo de predicción de vector de movimiento adaptativo.
La Figura 13 es un diagrama de flujo que ilustra un procedimiento de ejemplo de decodificación de vídeo en el caso de que el procedimiento de predicción del vector de movimiento sea el modo de fusión. En este caso, el decodificador de vídeo se configura además para recuperar un vector de movimiento, un fotograma de referencia y una dirección de predicción asociada con el bloque candidato que tiene el índice recibido (1301), y para realizar un procedimiento de interpredicción en el bloque actual mediante el uso del vector de movimiento recuperado, el fotograma de referencia y la dirección de predicción (1302).
En un ejemplo, el conjunto de bloques candidatos incluye un bloque candidato superior, un bloque candidato superior derecho, un bloque candidato izquierdo, un bloque candidato inferior izquierdo y un bloque candidato temporal. El bloque candidato izquierdo es adyacente a un borde izquierdo del bloque actual y un borde superior del bloque candidato izquierdo se encuentra alineado con un borde superior del bloque actual. El bloque candidato superior es adyacente al borde superior del bloque actual y un borde izquierdo del bloque candidato superior se encuentra alineado con el borde izquierdo del bloque actual.
En otro ejemplo, el bloque candidato izquierdo es adyacente a un borde izquierdo del bloque actual y un borde inferior del bloque candidato izquierdo se encuentra alineado con un borde inferior del bloque actual. El bloque candidato superior es adyacente a un borde superior del bloque actual y un borde derecho del bloque candidato superior se encuentra alineado con un borde derecho del bloque actual.
En otro ejemplo, el conjunto de bloques candidatos incluye un bloque candidato superior izquierdo, un bloque candidato superior, un bloque candidato superior derecho, un bloque candidato izquierdo, un bloque candidato inferior izquierdo y un bloque candidato temporal.
La Figura 14 es un diagrama de flujo que ilustra un procedimiento de ejemplo para decodificar vídeo en el caso de que el procedimiento de predicción del vector de movimiento sea el modo AMVP. En este caso, el decodificador de vídeo se configura para recibir un índice de fotograma de referencia, una diferencia de vector de movimiento y un elemento de sintaxis que indica una dirección de predicción (1401) y para recuperar un vector de movimiento candidato asociado con el bloque candidato que tiene el índice recibido (1402). El decodificador de vídeo se configura además para calcular un vector de movimiento para el bloque actual mediante el uso del vector de movimiento candidato y la diferencia de vector de movimiento (1403), y para realizar un procedimiento de interpredicción mediante el uso del vector de movimiento calculado, el índice de fotograma de referencia recibido y la dirección de predicción recibida (1404).
En un ejemplo, el conjunto de bloques candidatos incluye un bloque candidato superior, un bloque candidato superior derecho, un bloque candidato izquierdo, un bloque candidato inferior izquierdo y un bloque candidato temporal, y un patrón de verificación para el conjunto de bloques candidatos continúa en el siguiente orden: bloque candidato inferior izquierdo, bloque candidato izquierdo, bloque candidato superior derecho, bloque candidato superior, bloque candidato temporal.
En otro ejemplo, el conjunto de bloques candidatos incluye un bloque candidato superior izquierdo, un bloque candidato superior, un bloque candidato superior derecho, un bloque candidato izquierdo, un bloque candidato inferior izquierdo y un bloque candidato temporal, y un patrón de verificación para el conjunto de bloques candidatos procede en el siguiente orden: bloque candidato izquierdo, bloque candidato inferior izquierdo, bloque candidato superior, bloque candidato derecho superior, bloque candidato superior izquierdo, bloque candidato temporal.
La Figura 15 es un diagrama de flujo que ilustra otro procedimiento de ejemplo de codificación de vídeo, que puede realizarse por un codificador de vídeo, como el codificador de vídeo 20 de la Figura 3. El codificador de vídeo 20 puede configurarse para determinar un vector de movimiento relativo a un fotograma de referencia para un bloque actual de datos de vídeo (1501), para determinar uno de una pluralidad de modos para un procedimiento de predicción de vector de movimiento para un bloque actual de datos de vídeo (1502), y para realizar el procedimiento de predicción del vector de movimiento para el bloque actual mediante el uso del modo determinado y un conjunto de bloques candidatos, en el que el conjunto de bloques candidatos es el mismo para cada uno de la pluralidad de modos, y en el que un bloque candidato en el conjunto de bloques candidatos se designa como un bloque candidato adicional (1503). El bloque candidato adicional se usa si otro de los bloques candidatos del conjunto de bloques candidatos no está disponible. El codificador de vídeo 20 puede configurarse adicionalmente para actualizar un patrón de verificación basado en uno o más de un índice de fusión, un modo determinado, un tamaño de partición, un índice de fotograma de referencia, una diferencia de vector de movimiento y una predicción de vector de movimiento (1504).
La pluralidad de modos puede incluir un modo de fusión y un modo de predicción de vector de movimiento adaptativo. El modo de fusión puede tener un número máximo N de bloques candidatos para su uso en la realización del procedimiento de predicción del vector de movimiento. En ese caso, el procedimiento de predicción del vector de movimiento se realiza de acuerdo con un patrón de verificación, que define el patrón de verificación un orden para verificar cada uno de los bloques candidatos en el conjunto de bloques candidatos. El conjunto de bloques candidatos se define como los primeros N bloques candidatos disponibles en el conjunto de bloques candidatos a lo largo del patrón de verificación. El patrón de comprobación puede ser en base a uno o más de un tamaño de bloque, un tamaño de partición y un índice de partición. Más específicamente, por ejemplo, el patrón de verificación para cada tamaño de bloque, tamaño de partición o índice de partición diferente puede actualizarse o modificar en base a las estadísticas de selección de candidatos en varios bloques codificados anteriores que tienen el mismo tamaño de bloque, tamaño de partición o índice de partición, etc.
En otro ejemplo, el conjunto de bloques candidatos incluye un bloque candidato inferior izquierdo, un bloque candidato izquierdo, un bloque candidato superior, un bloque candidato superior derecho, un bloque candidato superior izquierdo y un bloque candidato temporal. En este ejemplo, el bloque candidato adicional es el bloque candidato superior izquierdo. Sin embargo, el bloque candidato adicional puede ser cualquier bloque candidato que tenga una relación causal con el bloque actual.
La Figura 16 es un diagrama de flujo que ilustra otro procedimiento de ejemplo de decodificación de vídeo, que puede realizarse por un decodificador de vídeo, como el decodificador de vídeo 30 de la Figura 3. El decodificador de vídeo 30 puede configurarse para recibir un elemento de sintaxis que indica uno de una pluralidad de modos para un procedimiento de predicción de vector de movimiento para un bloque actual de datos de vídeo (1601) y para recibir un índice que indica un bloque candidato de un conjunto de bloques candidatos, en el que el conjunto de bloques candidatos es el mismo para cada uno de la pluralidad de modos, en el que un bloque candidato en el conjunto de bloques candidatos se designa como un bloque candidato adicional (1602). El bloque candidato adicional se usa si otro de los bloques candidatos del conjunto de bloques candidatos no está disponible. La información asociada con el bloque candidato se usa para decodificar un vector de movimiento para el bloque actual. La pluralidad de modos puede incluir un modo de fusión y un modo de predicción de vector de movimiento adaptativo. La Figura 17 representa un procedimiento de decodificación en el caso de que el elemento de sintaxis recibido indique que se usa el modo de fusión. En este caso, el decodificador de vídeo se configura además para recuperar un vector de movimiento, un fotograma de referencia y una dirección de predicción asociada con el bloque candidato que tiene el índice recibido (1701), y para realizar un procedimiento de interpredicción en el bloque actual mediante el uso del vector de movimiento recuperado, el fotograma de referencia y la dirección de predicción (1702). El modo de fusión puede definirse como que tiene un número máximo N de bloques candidatos para su uso en la realización del procedimiento de predicción del vector de movimiento. En este caso, el procedimiento de predicción del vector de movimiento puede realizarse de acuerdo con un patrón de verificación, el patrón de verificación define un orden para verificar cada uno de los bloques candidatos en el conjunto de bloques candidatos. El conjunto de bloques candidatos se define como los primeros N bloques candidatos disponibles en el conjunto de bloques candidatos a lo largo del patrón de verificación. El patrón de verificación es en base a uno o más de un tamaño de bloque, un tamaño de partición y un índice de partición.
En otro ejemplo, tanto para el modo de fusión como para el modo AMVP, el conjunto de bloques candidatos puede incluir un bloque candidato inferior izquierdo, un bloque candidato izquierdo, un bloque candidato superior, un bloque candidato superior derecho, un bloque candidato superior izquierdo y un bloque candidato temporal. El bloque candidato adicional es el bloque candidato superior izquierdo. Sin embargo, el bloque candidato adicional puede ser cualquier bloque candidato que tenga una relación causal con el bloque actual.
La Figura 18 representa un procedimiento de decodificación en el caso de que el elemento de sintaxis recibido indique que se usa el modo AMVP. En este caso, el decodificador de vídeo se configura además para recibir un índice de fotograma de referencia, una diferencia de vector de movimiento y un elemento de sintaxis que indica una dirección de predicción (1801), y para recuperar un vector de movimiento candidato asociado con el bloque candidato que tiene el índice recibido (1802). El decodificador de vídeo se configura además para calcular un vector de movimiento para el bloque actual mediante el uso del vector de movimiento candidato y la diferencia de vector de movimiento (1803), y realizar un procedimiento de interpredicción mediante el uso del vector de movimiento calculado, el índice de fotograma de referencia recibido y la dirección de predicción recibida (1804).
En uno o más ejemplos, las funciones descritas pueden implementarse en hardware, software, microprograma o cualquiera de sus combinaciones. Si se implementan en software, las funciones pueden almacenarse o transmitirse, 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. Los medios legibles por ordenador pueden incluir medios de almacenamiento legibles por ordenador, que corresponden a un medio tangible, tal como los medios de almacenamiento de datos o los medios de comunicación, que incluyen cualquier medio que facilite transferir un programa informático de un lugar a otro, por ejemplo, de acuerdo con un protocolo de comunicación. De esta manera, los medios legibles por ordenador generalmente pueden corresponder a (1) medios de almacenamiento legibles por ordenador tangibles que no son transitorios o (2) un medio de comunicación tal como una señal u onda portadora. Los medios de almacenamiento de datos pueden ser cualquier medio disponible al que se pueda acceder 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 manera de ejemplo, y no de limitación, tales medios legibles por ordenador pueden comprender RAM, ROM, EPROM, EEPROM, CD-ROM u otro almacenamiento en disco óptico, almacenamiento en disco magnético u otros dispositivos de almacenamiento magnéticos, memoria flash o cualquier otro medio que pueda utilizarse para almacenar el código del programa deseado en forma de instrucciones o estructuras de datos y al que puede accederse por un ordenador. Además, cualquier conexión se califica apropiadamente como un medio legible por ordenador. Por ejemplo, si las instrucciones se transmiten desde un sitio web, servidor u otra fuente remota mediante el uso de un cable coaxial, un cable de fibra óptica, un par trenzado, una línea de suscriptor digital (DSL) o tecnologías inalámbricas tales como infrarrojos, radio y microondas, entonces el cable coaxial, el cable de fibra óptica, el par trenzado, la DSL o las tecnologías inalámbricas tales como infrarrojos, radio y microondas se incluyen en la definición de medio. Sin embargo, debe entenderse que los medios de almacenamiento legibles por ordenador y los medios de almacenamiento de datos no incluyen las conexiones, ondas portadoras, señales u otros medios transitorios, sino que se dirigen a medios de almacenamiento tangibles no transitorios. Disco, como se utiliza en la presente memoria, incluye el disco compacto (CD), el disco de láser, el disco óptico, el disco digital versátil (DVD), el disquete, y el disco Blu-ray donde existen discos que usualmente reproducen los datos de manera magnética, mientras que otros discos reproducen los datos de manera óptica con láseres. Las combinaciones de los medios anteriores pueden incluirse además dentro del ámbito de los medios legibles por ordenador.
Las instrucciones pueden ejecutarse por uno o más procesadores, como uno o más procesadores de señales digitales (DSP), microprocesadores de propósito general, circuitos integrados para aplicaciones específicas (ASIC), matrices lógicas programables en campo (FPGA) u otro circuito integrado lógico o discreto equivalente. En consecuencia, el término "procesador", como se utiliza en la presente memoria puede referirse a cualquiera de las estructuras anteriores o cualquier otra estructura adecuada para la implementación de las técnicas descritas en la presente memoria. Además, en algunos aspectos, la funcionalidad descrita en la presente memoria puede proporcionarse dentro de módulos de hardware y/o software dedicados configurados para la codificación y decodificación, o incorporarse en un códec combinado. Asimismo, las técnicas se podrían implementar completamente en uno o más circuitos o elementos lógicos.
Las técnicas de esta divulgación pueden implementarse en una amplia variedad de dispositivos o aparatos, que incluyen un teléfono inalámbrico, un circuito integrado (IC) o un conjunto de IC (por ejemplo, un conjunto de chips). En esta divulgación se describen varios componentes, módulos o unidades para enfatizar los aspectos funcionales de los dispositivos configurados para realizar las técnicas divulgadas, pero no necesariamente requieren la realización por diferentes unidades de hardware. Más bien, como se describió anteriormente, varias unidades pueden combinarse en una unidad de hardware de códec o proporcionarse por una colección de unidades de hardware interoperativas, que incluyen uno o más procesadores como se describió anteriormente, junto con software y/o microprograma adecuados.
Se describen diversos ejemplos. Estos y otros ejemplos están dentro del ámbito de las siguientes reivindicaciones.

Claims (14)

REIVINDICACIONES
1. Un procedimiento de codificación (20) de un vector de movimiento en un procedimiento de codificación de vídeo, comprendiendo el procedimiento:
determinar (900) un vector de movimiento relativo a un fotograma de referencia para un bloque actual (127, 137) de datos de vídeo, en el que la ubicación de un fotograma de referencia es en base a una dirección de predicción; determinar (901) uno de una pluralidad de modos para un procedimiento de predicción de vectores de movimiento para el bloque actual (127, 137) de datos de vídeo, el modo determinado que es uno de un modo de fusión y un modo de predicción de vectores de movimiento adaptativo; y
realizar, de acuerdo con un patrón de verificación, el procedimiento de predicción del vector de movimiento (902) para el bloque actual mediante el uso del modo determinado y un conjunto de bloques candidatos (100, 120) que comprende un bloque candidato de inferior izquierdo (101, 111, 121, 131), un bloque candidato izquierdo (102, 112, 122, 132), un bloque candidato superior (104, 114, 124, 134), un bloque candidato superior derecho (103, 113, 123, 133), un bloque candidato superior izquierdo (105, 125), y un bloque candidato temporal (106, 115), el patrón de comprobación que define un orden para comprobar cada uno de los bloques candidatos en el conjunto de bloques candidatos,
en el que, si el modo determinado es un modo de fusión, un bloque candidato en el conjunto de bloques candidatos se designa como un bloque candidato adicional, y en el que el modo de fusión tiene un número máximo N de bloques candidatos para su uso en la realización del procedimiento de predicción del vector de movimiento y el conjunto de bloques candidatos se define como los primeros N bloques candidatos disponibles en el conjunto de bloques candidatos a lo largo del patrón de verificación, en el que N es igual a 5, y en el que el bloque candidato adicional se usa en el modo de fusión si otro de los bloques candidatos del conjunto de bloques candidatos no está disponible o no es válido.
2. Un procedimiento de decodificación (30) de un vector de movimiento en un procedimiento de codificación de vídeo, comprendiendo el procedimiento:
determinar uno de una pluralidad de modos para un procedimiento de predicción de vectores de movimiento para un bloque actual de datos de vídeo, el modo determinado que es uno de un modo de fusión y un modo de predicción de vectores de movimiento adaptativo; y
determinar un bloque candidato (1101, 1102, 1103) a partir de un conjunto de bloques candidatos que comprende un bloque candidato inferior izquierdo, un bloque candidato izquierdo, un bloque candidato superior, un bloque candidato superior derecho, un bloque candidato superior izquierdo, y un bloque candidato temporal,
en el que el procedimiento de predicción del vector de movimiento se realiza de acuerdo con un patrón de verificación, el patrón de verificación que define un orden para verificar cada uno de los bloques candidatos en el conjunto de bloques candidatos,
en el que el modo de fusión tiene un número máximo N de bloques candidatos para su uso en la realización del procedimiento de predicción del vector de movimiento, y en el que el conjunto de bloques candidatos se define como los primeros N bloques candidatos disponibles en el conjunto de bloques candidatos a lo largo del patrón de comprobación, en el que N es igual a 5,
en el que, si el modo determinado es un modo de fusión, un bloque candidato en el conjunto de bloques candidatos se designa como un bloque candidato adicional, y en el que el bloque candidato adicional se usa en el modo de fusión si otro de los bloques candidatos del conjunto de los bloques candidatos no están disponibles o no son válidos, y
en el que la información asociada con el bloque candidato se usa para decodificar un vector de movimiento para el bloque actual.
3. El procedimiento de la reivindicación 2, en el que el modo para el procedimiento de predicción del vector de movimiento se determina a partir de un elemento de sintaxis recibido (1201), y en el que el bloque candidato se determina a partir de un elemento de sintaxis recibido (1202).
4. El procedimiento de la reivindicación 2 o la reivindicación 3, en el que el modo determinado es un modo de fusión y el procedimiento comprende, además:
recuperar (1301) un vector de movimiento, un fotograma de referencia y una dirección de predicción asociada con el bloque candidato que tiene el índice recibido; y
realizar (1302) un procedimiento de interpredicción en el bloque actual mediante el uso del vector de movimiento recuperado, el fotograma de referencia y la dirección de predicción.
5. El procedimiento de cualquiera de las reivindicaciones 2 a 4, en el que el modo determinado es el modo de predicción del vector de movimiento adaptativo, y en el que el procedimiento comprende, además:
recibir (1401) un índice de fotograma de referencia, una diferencia de vector de movimiento y un elemento de sintaxis que indica una dirección de predicción;
recuperar (1402) un vector de movimiento candidato asociado con el bloque candidato que tiene el índice recibido; calcular (1403) un vector de movimiento para el bloque actual mediante el uso del vector de movimiento candidato y la diferencia de vector de movimiento; y
realizar (1404) un procedimiento de interpredicción mediante el uso del vector de movimiento calculado, el índice del fotograma de referencia recibido y la dirección de predicción recibida.
6. El procedimiento de cualquiera de las reivindicaciones 1 a 4, en el que el patrón de verificación es en base a uno o más de un tamaño de bloque, un tamaño de partición y un índice de partición.
7. El procedimiento de las reivindicaciones 1 a 4, que comprende, además:
actualizar (1504) el patrón de verificación para bloques codificados posteriormente en base a uno o más de un índice de fusión, el modo determinado, un tamaño de partición, un índice de partición, un índice de fotograma de referencia, una diferencia de vector de movimiento y una predicción de vector de movimiento.
8. Un aparato para codificar (20) un vector de movimiento en un procedimiento de codificación de vídeo, comprendiendo el aparato:
medios para determinar (900) un vector de movimiento relativo a un fotograma de referencia para un bloque actual (127, 137) de datos de vídeo, en el que la ubicación de un fotograma de referencia es en base a una dirección de predicción;
medios para determinar (901) uno de una pluralidad de modos para un procedimiento de predicción de vector de movimiento para el bloque actual (127, 137) de datos de vídeo, el modo determinado que es uno de un modo de fusión y un modo de predicción de vector de movimiento adaptativo; y
medios para realizar, de acuerdo con un patrón de verificación, el procedimiento de predicción del vector de movimiento (902) para el bloque actual mediante el uso del modo determinado y un conjunto de bloques candidatos (100, 120) que comprende un bloque candidato de inferior izquierdo (101, 111, 121, 131), un bloque candidato izquierdo (102, 112, 122, 132), un bloque candidato superior (104, 114, 124, 134), un bloque candidato superior derecho (103, 113, 123, 133), un bloque candidato superior izquierdo (105, 125), y un bloque candidato temporal (106, 115), el patrón de comprobación que define un orden para comprobar cada uno de los bloques candidatos en el conjunto de bloques candidatos,
en el que, si el modo determinado es un modo de fusión, un bloque candidato en el conjunto de bloques candidatos se designa como un bloque candidato adicional, y en el que el modo de fusión tiene un número máximo N de bloques candidatos para su uso en la realización del procedimiento de predicción del vector de movimiento y el conjunto de bloques candidatos se define como los primeros N bloques candidatos disponibles en el conjunto de bloques candidatos a lo largo del patrón de verificación, en el que N es igual a 5, y en el que el bloque candidato adicional se usa en el modo de fusión si otro de los bloques candidatos del conjunto de bloques candidatos no está disponible o no es válido.
9. Un aparato para decodificar (30) un vector de movimiento en un procedimiento de codificación de vídeo, comprendiendo el aparato:
medios para determinar uno de una pluralidad de modos para un procedimiento de predicción de vectores de movimiento para un bloque actual de datos de vídeo, el modo determinado que es uno de un modo de fusión y un modo de predicción de vectores de movimiento adaptativo; y
medios para determinar un bloque candidato (1101, 1102, 1103) de un conjunto de bloques candidatos que comprende un bloque candidato inferior izquierdo, un bloque candidato izquierdo, un bloque candidato superior, un bloque candidato superior derecho, un bloque candidato superior izquierdo, y un bloque candidato temporal, en el que el procedimiento de predicción del vector de movimiento se realiza de acuerdo con un patrón de verificación, el patrón de verificación que define un orden para verificar cada uno de los bloques candidatos en el conjunto de bloques candidatos,
en el que el modo de fusión tiene un número máximo N de bloques candidatos para su uso en la realización del procedimiento de predicción del vector de movimiento, y en el que el conjunto de bloques candidatos se define como los primeros N bloques candidatos disponibles en el conjunto de bloques candidatos a lo largo del patrón de comprobación, en el que N es igual a 5,
en el que, si el modo determinado es un modo de fusión, un bloque candidato en el conjunto de bloques candidatos se designa como un bloque candidato adicional, y en el que el bloque candidato adicional se usa en el modo de fusión si otro de los bloques candidatos del conjunto de los bloques candidatos no están disponibles o no son válidos, y
en el que la información asociada con el bloque candidato se usa para decodificar un vector de movimiento para el bloque actual.
10. El aparato de la reivindicación 9, en el que el modo para el procedimiento de predicción del vector de movimiento se determina a partir de un elemento de sintaxis recibido (1201), y en el que el bloque candidato se determina a partir de un elemento de sintaxis recibido (1202).
11. El aparato de la reivindicación 8 o la reivindicación 9, en el que el modo determinado es un modo de fusión y el aparato comprende, además:
medios para recuperar (1301) un vector de movimiento, un fotograma de referencia y una dirección de predicción asociados con el bloque candidato que tiene el índice recibido; y
medios para realizar (1302) un procedimiento de interpredicción en el bloque actual mediante el uso del vector de movimiento recuperado, el fotograma de referencia y la dirección de predicción.
12. El aparato de cualquiera de las reivindicaciones 8 a 11, en el que el patrón de comprobación es en base a uno o más de un tamaño de bloque, un tamaño de partición y un índice de partición.
13. El aparato de cualquiera de las reivindicaciones 8 a 12, que comprende, además:
medios para actualizar (1504) el patrón de verificación para bloques codificados posteriormente en base a uno o más de un índice de fusión, el modo determinado, un tamaño de partición, un índice de partición, un índice de fotograma de referencia, una diferencia de vector de movimiento y una predicción de vector de movimiento.
14. Un producto de programa informático que comprende un medio de almacenamiento legible por ordenador que tiene almacenadas en el mismo instrucciones que, cuando se ejecutan, hacen que un procesador de un dispositivo para codificar o decodificar datos de vídeo realice el procedimiento de acuerdo con cualquiera de las reivindicaciones 1 a 7
ES12727051T 2011-06-20 2012-06-05 Selección de candidatos de modo de fusión unificado y modo de predicción de vector de movimiento adaptable Active ES2908241T3 (es)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201161499114P 2011-06-20 2011-06-20
US201161506558P 2011-07-11 2011-07-11
US201161509007P 2011-07-18 2011-07-18
US13/487,996 US9282338B2 (en) 2011-06-20 2012-06-04 Unified merge mode and adaptive motion vector prediction mode candidates selection
PCT/US2012/040928 WO2012177388A1 (en) 2011-06-20 2012-06-05 Unified merge mode and adaptive motion vector prediction mode candidates selection

Publications (1)

Publication Number Publication Date
ES2908241T3 true ES2908241T3 (es) 2022-04-28

Family

ID=47353635

Family Applications (1)

Application Number Title Priority Date Filing Date
ES12727051T Active ES2908241T3 (es) 2011-06-20 2012-06-05 Selección de candidatos de modo de fusión unificado y modo de predicción de vector de movimiento adaptable

Country Status (18)

Country Link
US (2) US9131239B2 (es)
EP (2) EP2721817B1 (es)
JP (4) JP2014520484A (es)
KR (3) KR102010097B1 (es)
CN (2) CN103609123B (es)
AU (2) AU2012273398B2 (es)
BR (2) BR112013032110B1 (es)
CA (2) CA2838839C (es)
DK (1) DK2721817T3 (es)
ES (1) ES2908241T3 (es)
HU (1) HUE058080T2 (es)
IL (2) IL229718A (es)
MX (2) MX339025B (es)
MY (2) MY181631A (es)
SG (1) SG195213A1 (es)
SI (1) SI2721817T1 (es)
UA (1) UA111971C2 (es)
WO (2) WO2012177388A1 (es)

Families Citing this family (114)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2546325C2 (ru) * 2009-05-29 2015-04-10 Мицубиси Электрик Корпорейшн Устройство кодирования изображений, устройство декодирования изображений, способ кодирования изображений и способ декодирования изображений
US9060176B2 (en) * 2009-10-01 2015-06-16 Ntt Docomo, Inc. Motion vector prediction in video coding
KR101791078B1 (ko) * 2010-04-16 2017-10-30 에스케이텔레콤 주식회사 영상 부호화/복호화 장치 및 방법
WO2011146451A1 (en) * 2010-05-20 2011-11-24 Thomson Licensing Methods and apparatus for adaptive motion vector candidate ordering for video encoding and decoding
KR101762819B1 (ko) * 2010-09-02 2017-07-28 엘지전자 주식회사 영상 부호화 및 복호화 방법과 이를 이용한 장치
EP2698999B1 (en) 2011-04-12 2017-01-04 Sun Patent Trust Motion-video encoding method, motion-video encoding apparatus, motion-video decoding method, motion-video decoding apparatus, and motion-video encoding/decoding apparatus
KR102015674B1 (ko) 2011-05-24 2019-08-28 벨로스 미디어 인터내셔널 리미티드 화상 부호화 방법, 화상 부호화 장치, 화상 복호 방법, 화상 복호 장치, 및, 화상 부호화 복호 장치
EP4213483A1 (en) 2011-05-27 2023-07-19 Sun Patent Trust Image coding method, image coding apparatus, image decoding method, image decoding apparatus, and image coding and decoding apparatus
US9485518B2 (en) 2011-05-27 2016-11-01 Sun Patent Trust Decoding method and apparatus with candidate motion vectors
SG194746A1 (en) 2011-05-31 2013-12-30 Kaba Gmbh Image encoding method, image encoding device, image decoding method, image decoding device, and image encoding/decoding device
EP2717579B1 (en) 2011-05-31 2020-01-22 Sun Patent Trust Video decoding method and video decoding device
JP2013005077A (ja) * 2011-06-14 2013-01-07 Sony Corp 画像処理装置および方法
KR20120140592A (ko) 2011-06-21 2012-12-31 한국전자통신연구원 움직임 보상의 계산 복잡도 감소 및 부호화 효율을 증가시키는 방법 및 장치
WO2012177052A2 (ko) 2011-06-21 2012-12-27 한국전자통신연구원 인터 예측 방법 및 그 장치
ES2754657T3 (es) 2011-06-27 2020-04-20 Samsung Electronics Co Ltd Codificación y decodificación de información de movimiento
EP3481066B1 (en) 2011-06-28 2021-05-19 LG Electronics Inc. Method for deriving a motion vector predictor
MX2013013029A (es) 2011-06-30 2013-12-02 Panasonic Corp Metodo de decodificacion de imagenes, metodo de codificacion de imagenes, dispositivo de decodificacion de imagenes, dispositivo de codificacion de imagenes y dispositivo de codificacion/decodifi cacion de imagenes.
CN107105227B (zh) * 2011-06-30 2019-10-25 Jvc建伍株式会社 图像编码装置、图像编码方法、图像解码装置及图像解码方法
MX341415B (es) 2011-08-03 2016-08-19 Panasonic Ip Corp America Metodo de codificacion de video, aparato de codificacion de video, metodo de decodificacion de video, aparato de decodificacion de video y aparato de codificacion/decodificacion de video.
JP5958165B2 (ja) * 2011-08-12 2016-07-27 株式会社Jvcケンウッド 画像復号装置、画像復号方法、画像復号プログラム、受信装置、受信方法及び受信プログラム
GB2493755B (en) * 2011-08-17 2016-10-19 Canon Kk Method and device for encoding a sequence of images and method and device for decoding a sequence of images
CN106851311B (zh) 2011-08-29 2019-08-13 苗太平洋控股有限公司 视频译码装置
EP2716047A4 (en) 2011-10-19 2015-03-18 Mediatek Inc METHOD AND DEVICE FOR DERIVING MOTION VECTOR PREVIEW CANDIDATE SETS
JP6308495B2 (ja) * 2011-10-19 2018-04-11 サン パテント トラスト 画像復号方法、および、画像復号装置
KR20130050405A (ko) 2011-11-07 2013-05-16 오수미 인터 모드에서의 시간 후보자 결정방법
WO2013068647A1 (en) * 2011-11-08 2013-05-16 Nokia Corporation Reference picture handling
KR101830352B1 (ko) 2011-11-09 2018-02-21 에스케이 텔레콤주식회사 스킵모드를 이용한 동영상 부호화 및 복호화 방법 및 장치
WO2013107028A1 (en) * 2012-01-19 2013-07-25 Mediatek Singapore Pte. Ltd. Methods and apparatuses of amvp simplification
US9729873B2 (en) 2012-01-24 2017-08-08 Qualcomm Incorporated Video coding using parallel motion estimation
US9426463B2 (en) 2012-02-08 2016-08-23 Qualcomm Incorporated Restriction of prediction units in B slices to uni-directional inter prediction
US9451277B2 (en) 2012-02-08 2016-09-20 Qualcomm Incorporated Restriction of prediction units in B slices to uni-directional inter prediction
US20130235926A1 (en) * 2012-03-07 2013-09-12 Broadcom Corporation Memory efficient video parameter processing
US9338451B2 (en) 2012-04-12 2016-05-10 Qualcomm Incorporated Common spatial candidate blocks for parallel motion estimation
US20130272412A1 (en) * 2012-04-12 2013-10-17 Qualcomm Incorporated Common motion information candidate list construction process
CN107454426A (zh) * 2012-07-27 2017-12-08 寰发股份有限公司 三维视频编码或解码方法
US9344742B2 (en) * 2012-08-10 2016-05-17 Google Inc. Transform-domain intra prediction
KR102186605B1 (ko) * 2012-09-28 2020-12-03 삼성전자주식회사 다시점 영상 부호화/복호화 장치 및 방법
WO2014047881A1 (en) * 2012-09-28 2014-04-03 Intel Corporation Inter-layer intra mode prediction
CN102883163B (zh) * 2012-10-08 2014-05-28 华为技术有限公司 用于运动矢量预测的运动矢量列表建立的方法、装置
JP5983430B2 (ja) * 2013-01-25 2016-08-31 富士通株式会社 動画像符号化装置、動画像符号化方法及び動画像復号装置ならびに動画像復号方法
JP5776712B2 (ja) * 2013-03-06 2015-09-09 株式会社Jvcケンウッド 画像復号装置、画像復号方法、画像復号プログラム、受信装置、受信方法、及び受信プログラム
JP5776711B2 (ja) * 2013-03-06 2015-09-09 株式会社Jvcケンウッド 画像復号装置、画像復号方法、画像復号プログラム、受信装置、受信方法、及び受信プログラム
JP5776714B2 (ja) * 2013-03-06 2015-09-09 株式会社Jvcケンウッド 画像復号装置、画像復号方法、画像復号プログラム、受信装置、受信方法、及び受信プログラム
JP5776713B2 (ja) * 2013-03-06 2015-09-09 株式会社Jvcケンウッド 画像復号装置、画像復号方法、画像復号プログラム、受信装置、受信方法、及び受信プログラム
US9565454B2 (en) 2013-06-24 2017-02-07 Microsoft Technology Licensing, Llc Picture referencing control for video decoding using a graphics processor
TW201501511A (zh) * 2013-06-25 2015-01-01 Hon Hai Prec Ind Co Ltd 框內預測方法及系統
FR3011429A1 (fr) * 2013-09-27 2015-04-03 Orange Codage et decodage video par heritage d'un champ de vecteurs de mouvement
EP3055998A1 (en) * 2013-10-11 2016-08-17 Telefonaktiebolaget LM Ericsson (publ) Method and arrangement for video transcoding using mode or motion or in-loop filter information
CN105706281B (zh) 2013-11-06 2019-07-26 瓦特燃料电池公司 化学反应器系统
TWI538487B (zh) * 2013-12-05 2016-06-11 財團法人工業技術研究院 螢幕視訊之預測編碼的方法與系統
CN105874789B (zh) * 2014-01-29 2019-10-29 联发科技股份有限公司 利用自适应运动向量精度的方法
US10631005B2 (en) * 2014-04-21 2020-04-21 Qualcomm Incorporated System and method for coding in block prediction mode for display stream compression (DSC)
WO2015169200A1 (en) 2014-05-06 2015-11-12 Mediatek Singapore Pte. Ltd. Method of block vector prediction for intra block copy mode coding
CN104363451B (zh) * 2014-10-27 2019-01-25 华为技术有限公司 图像预测方法及相关装置
JP5854110B2 (ja) * 2014-10-30 2016-02-09 株式会社Jvcケンウッド 画像符号化装置、画像符号化方法、画像符号化プログラム、送信装置、送信方法、及び送信プログラム
CN112188207B (zh) 2014-10-31 2023-10-20 三星电子株式会社 使用高精度跳过编码的视频编码设备和视频解码设备及其方法
KR102362242B1 (ko) 2014-10-31 2022-02-11 삼성전자주식회사 움직임 벡터 부복호화 방법 및 장치
US10085027B2 (en) 2015-03-06 2018-09-25 Qualcomm Incorporated Adaptive mode checking order for video encoding
JP5999230B2 (ja) * 2015-07-08 2016-09-28 株式会社Jvcケンウッド 受信装置
CN108965871B (zh) 2015-09-29 2023-11-10 华为技术有限公司 图像预测的方法及装置
US10812822B2 (en) * 2015-10-02 2020-10-20 Qualcomm Incorporated Intra block copy merge mode and padding of unavailable IBC reference region
US10368073B2 (en) * 2015-12-07 2019-07-30 Qualcomm Incorporated Multi-region search range for block prediction mode for display stream compression (DSC)
JP6036977B2 (ja) * 2015-12-08 2016-11-30 株式会社Jvcケンウッド 画像符号化装置、画像符号化方法、画像符号化プログラム、送信装置、送信方法、及び送信プログラム
JP6036974B2 (ja) * 2015-12-08 2016-11-30 株式会社Jvcケンウッド 画像符号化装置、画像符号化方法、画像符号化プログラム、送信装置、送信方法、及び送信プログラム
JP6036976B2 (ja) * 2015-12-08 2016-11-30 株式会社Jvcケンウッド 画像符号化装置、画像符号化方法、画像符号化プログラム、送信装置、送信方法、及び送信プログラム
JP6036975B2 (ja) * 2015-12-08 2016-11-30 株式会社Jvcケンウッド 画像符号化装置、画像符号化方法、画像符号化プログラム、送信装置、送信方法、及び送信プログラム
WO2017118411A1 (en) * 2016-01-07 2017-07-13 Mediatek Inc. Method and apparatus for affine inter prediction for video coding system
CN105635736B (zh) * 2016-03-14 2018-11-13 杭州电子科技大学 一种简单快速的合并方法
US10560712B2 (en) 2016-05-16 2020-02-11 Qualcomm Incorporated Affine motion prediction for video coding
CN109644267B (zh) * 2016-08-03 2023-07-04 株式会社Kt 视频信号处理方法和装置
US11638027B2 (en) 2016-08-08 2023-04-25 Hfi Innovation, Inc. Pattern-based motion vector derivation for video coding
CN106375764B (zh) * 2016-08-31 2018-04-10 中国科学技术大学 一种结合方向预测和块复制预测的视频帧内编码方法
CN106254884B (zh) * 2016-09-30 2019-06-28 福州瑞芯微电子股份有限公司 基于h265编码的帧间预测方法和编码器ip
US10448010B2 (en) * 2016-10-05 2019-10-15 Qualcomm Incorporated Motion vector prediction for affine motion models in video coding
JP6288209B2 (ja) * 2016-10-24 2018-03-07 株式会社Jvcケンウッド 画像符号化装置
CN110574377B (zh) 2017-05-10 2021-12-28 联发科技股份有限公司 用于视频编解码的重新排序运动向量预测候选集的方法及装置
WO2018226066A1 (ko) * 2017-06-09 2018-12-13 엘지전자 주식회사 영상 코딩 시스템에서 어파인 예측에 따른 영상 디코딩 방법 및 장치
US10911769B2 (en) * 2017-06-23 2021-02-02 Qualcomm Incorporated Motion-based priority for the construction of candidate lists in video coding
US10523961B2 (en) 2017-08-03 2019-12-31 Samsung Electronics Co., Ltd. Motion estimation method and apparatus for plurality of frames
CN109510991B (zh) * 2017-09-15 2021-02-19 浙江大学 一种运动矢量导出方法及装置
US11877001B2 (en) 2017-10-10 2024-01-16 Qualcomm Incorporated Affine prediction in video coding
US10523948B2 (en) * 2018-02-05 2019-12-31 Tencent America LLC Method and apparatus for video coding
CN118233630A (zh) * 2018-05-10 2024-06-21 三星电子株式会社 视频解码方法、视频编码设备以及存储比特流的方法
CN108810549B (zh) * 2018-06-06 2021-04-27 天津大学 一种面向低功耗的流媒体播放方法
EP4322533A3 (en) 2018-06-29 2024-03-06 Beijing Bytedance Network Technology Co., Ltd. Checking order of motion candidates in lut
CN110662052B (zh) 2018-06-29 2022-07-08 北京字节跳动网络技术有限公司 更新查找表(lut)的条件
TWI731360B (zh) 2018-06-29 2021-06-21 大陸商北京字節跳動網絡技術有限公司 查找表的使用條件
TWI728390B (zh) * 2018-06-29 2021-05-21 大陸商北京字節跳動網絡技術有限公司 查找表尺寸
GB2587984B (en) 2018-06-29 2022-12-14 Kt Corp Method and apparatus for processing a video signal
EP3791585A1 (en) 2018-06-29 2021-03-17 Beijing Bytedance Network Technology Co. Ltd. Partial/full pruning when adding a hmvp candidate to merge/amvp
CN110662043B (zh) 2018-06-29 2021-12-21 北京字节跳动网络技术有限公司 一种用于处理视频数据的方法、装置和计算机可读介质
EP3791586A1 (en) 2018-06-29 2021-03-17 Beijing Bytedance Network Technology Co. Ltd. Concept of using one or multiple look up tables to store motion information of previously coded in order and use them to code following blocks
SG11202012293RA (en) 2018-06-29 2021-01-28 Beijing Bytedance Network Technology Co Ltd Update of look up table: fifo, constrained fifo
WO2020008349A1 (en) 2018-07-02 2020-01-09 Beijing Bytedance Network Technology Co., Ltd. Merge index coding
US11218721B2 (en) 2018-07-18 2022-01-04 Mediatek Inc. Method and apparatus of motion compensation bandwidth reduction for video coding system utilizing multi-hypothesis
US11051010B2 (en) * 2018-07-18 2021-06-29 Mediatek Inc. Merge candidates with multiple hypothesis
KR20200010113A (ko) * 2018-07-18 2020-01-30 한국전자통신연구원 지역 조명 보상을 통한 효과적인 비디오 부호화/복호화 방법 및 장치
CN116708815A (zh) * 2018-08-09 2023-09-05 Lg电子株式会社 编码设备、解码设备和数据发送设备
US11089297B2 (en) 2018-08-31 2021-08-10 Hulu, LLC Historical motion vector prediction with reset list
CN112040247B (zh) * 2018-09-10 2021-09-21 华为技术有限公司 视频解码方法、视频解码器以及计算机可读存储介质
WO2020053800A1 (en) 2018-09-12 2020-03-19 Beijing Bytedance Network Technology Co., Ltd. How many hmvp candidates to be checked
US11997311B2 (en) 2018-09-17 2024-05-28 Hfi Innovation Inc. Methods and apparatuses of combining multiple predictors for block prediction in video coding systems
US11558622B2 (en) * 2018-10-09 2023-01-17 Samsung Electronics Co., Ltd. Video decoding method and apparatus, and video encoding method and apparatus involving sub-block merge index context and bypass model
EP3788779A4 (en) * 2018-10-23 2022-03-02 Tencent America LLC VIDEO CODING METHOD AND APPARATUS
US10917636B2 (en) * 2018-12-03 2021-02-09 Tencent America LLC Method and apparatus for video coding
JP7073501B2 (ja) * 2018-12-12 2022-05-23 エルジー エレクトロニクス インコーポレイティド 履歴ベース動きベクトル予測に基づいてビデオ信号を処理するための方法及び装置
TWI720753B (zh) * 2018-12-21 2021-03-01 聯發科技股份有限公司 簡化的三角形合併模式候選列表導出的方法以及裝置
US11032574B2 (en) 2018-12-31 2021-06-08 Tencent America LLC Method and apparatus for video coding
JP7275286B2 (ja) 2019-01-10 2023-05-17 北京字節跳動網絡技術有限公司 Lut更新の起動
WO2020143824A1 (en) 2019-01-13 2020-07-16 Beijing Bytedance Network Technology Co., Ltd. Interaction between lut and shared merge list
US11025951B2 (en) * 2019-01-13 2021-06-01 Tencent America LLC Method and apparatus for video coding
WO2020147772A1 (en) 2019-01-16 2020-07-23 Beijing Bytedance Network Technology Co., Ltd. Motion candidates derivation
WO2020192611A1 (en) 2019-03-22 2020-10-01 Beijing Bytedance Network Technology Co., Ltd. Interaction between merge list construction and other tools
EP3955569A4 (en) 2019-04-25 2022-07-27 Huawei Technologies Co., Ltd. METHOD AND APPARATUS FOR IMAGE PREDICTION AND COMPUTER READABLE INFORMATION MEDIA

Family Cites Families (52)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2079434A1 (en) 1991-09-30 1993-03-31 Derek Andrew Motion vector estimation, motion picture encoding and storage
US5594504A (en) * 1994-07-06 1997-01-14 Lucent Technologies Inc. Predictive video coding using a motion vector updating routine
JP3800640B2 (ja) 1995-07-04 2006-07-26 ソニー株式会社 画像情報の動き検出方法及びその装置、画像情報の符号化方法及びその装置、画像情報伝送システム、画像情報記録システム並びに記録媒体
US6519287B1 (en) 1998-07-13 2003-02-11 Motorola, Inc. Method and apparatus for encoding and decoding video signals by using storage and retrieval of motion vectors
US6289052B1 (en) 1999-06-07 2001-09-11 Lucent Technologies Inc. Methods and apparatus for motion estimation using causal templates
US6968008B1 (en) * 1999-07-27 2005-11-22 Sharp Laboratories Of America, Inc. Methods for motion estimation with adaptive motion accuracy
EP1294194B8 (en) 2001-09-10 2010-08-04 Texas Instruments Incorporated Apparatus and method for motion vector estimation
JP2004023458A (ja) * 2002-06-17 2004-01-22 Toshiba Corp 動画像符号化/復号化方法及び装置
KR100865034B1 (ko) * 2002-07-18 2008-10-23 엘지전자 주식회사 모션 벡터 예측 방법
KR100506864B1 (ko) * 2002-10-04 2005-08-05 엘지전자 주식회사 모션벡터 결정방법
US7075257B2 (en) * 2002-10-18 2006-07-11 Black & Decker Inc. Method and device for braking a motor
NO318167B1 (no) * 2002-11-27 2005-02-14 Tandberg Telecom As Vektorprediksjon
AU2003248913A1 (en) 2003-01-10 2004-08-10 Thomson Licensing S.A. Defining interpolation filters for error concealment in a coded image
ES2343410T3 (es) 2003-06-25 2010-07-30 Thomson Licensing Codificacion intertramas con decision rapida de modo.
WO2005002233A1 (en) * 2003-06-27 2005-01-06 Koninklijke Philips Electronics N.V. Method of encoding for handheld apparatuses
US20050013498A1 (en) 2003-07-18 2005-01-20 Microsoft Corporation Coding of motion vector information
US8064520B2 (en) 2003-09-07 2011-11-22 Microsoft Corporation Advanced bi-directional predictive coding of interlaced video
US7400681B2 (en) 2003-11-28 2008-07-15 Scientific-Atlanta, Inc. Low-complexity motion vector prediction for video codec with two lists of reference pictures
JP4213646B2 (ja) * 2003-12-26 2009-01-21 株式会社エヌ・ティ・ティ・ドコモ 画像符号化装置、画像符号化方法、画像符号化プログラム、画像復号装置、画像復号方法、及び画像復号プログラム。
FR2868579A1 (fr) * 2004-03-30 2005-10-07 St Microelectronics Sa Procede et dispositif de generation de vecteurs candidats pour les systemes d'interpolation d'images par estimation et compensation de mouvement
JP2006020095A (ja) 2004-07-01 2006-01-19 Sharp Corp 動きベクトル検出回路、画像符号化回路、動きベクトル検出方法および画像符号化方法
CN101156451A (zh) 2005-04-12 2008-04-02 皇家飞利浦电子股份有限公司 使用基于区域的多次通过运动估计和时间运动矢量候选更新的视频处理
US8913660B2 (en) * 2005-04-14 2014-12-16 Fastvdo, Llc Device and method for fast block-matching motion estimation in video encoders
CN101401440A (zh) * 2006-01-09 2009-04-01 诺基亚公司 可伸缩视频编码中的差错恢复模式判决
AU2007244443A1 (en) * 2006-04-28 2007-11-08 Ntt Docomo, Inc. Image predictive coding device, image predictive coding method, image predictive coding program, image predictive decoding device, image predictive decoding method and image predictive decoding program
KR100856223B1 (ko) * 2006-10-19 2008-09-03 삼성전자주식회사 H.264 인코더의 적응적 인코딩 모드 결정 장치 및결정 방법
FR2907989B1 (fr) * 2006-10-27 2009-01-16 Actimagine Sarl Procede et dispositif d'optimisation de la compression d'un flux video
WO2008120577A1 (ja) 2007-03-29 2008-10-09 Kabushiki Kaisha Toshiba 画像符号化及び復号化の方法及び装置
US20090003449A1 (en) * 2007-06-28 2009-01-01 Mitsubishi Electric Corporation Image encoding device, image decoding device, image encoding method and image decoding method
BRPI0906413A2 (pt) * 2008-01-10 2015-07-14 Thomson Licensing Métodos e equipamento para compensação de iluminação de vídeo intra predito
BRPI0915821A2 (pt) * 2008-07-10 2015-11-10 Mitsubishi Electric Corp dispositivos codificador e decodificador de imagem, e, métodos de codificação e de decodificação de imagem.
US8724697B2 (en) 2008-09-26 2014-05-13 Qualcomm Incorporated Locating motion vectors for video data units
TWI382770B (zh) * 2008-12-11 2013-01-11 Univ Nat Taiwan 視訊影像傳輸中遇到封包遺失時的有效選取方法
BRPI1011885A2 (pt) 2009-06-19 2016-04-12 France Telecom métodos para a codificação e decodificação de um sinal de imagens, dispositivos de codificação e decodificação, sinal e programas de computador correspondentes.
US8665964B2 (en) 2009-06-30 2014-03-04 Qualcomm Incorporated Video coding based on first order prediction and pre-defined second order prediction mode
KR101452859B1 (ko) 2009-08-13 2014-10-23 삼성전자주식회사 움직임 벡터를 부호화 및 복호화하는 방법 및 장치
CN102668566B (zh) * 2009-10-22 2016-05-04 汤姆森特许公司 将dc帧内预测模式用于视频编码和解码的方法和装置
US9036692B2 (en) 2010-01-18 2015-05-19 Mediatek Inc. Motion prediction method
WO2011099792A2 (ko) * 2010-02-10 2011-08-18 엘지전자 주식회사 비디오 신호의 처리 방법 및 장치
US8588303B2 (en) * 2010-03-31 2013-11-19 Futurewei Technologies, Inc. Multiple predictor sets for intra-frame coding
KR101752418B1 (ko) * 2010-04-09 2017-06-29 엘지전자 주식회사 비디오 신호 처리 방법 및 장치
US9124898B2 (en) * 2010-07-12 2015-09-01 Mediatek Inc. Method and apparatus of temporal motion vector prediction
KR101762819B1 (ko) * 2010-09-02 2017-07-28 엘지전자 주식회사 영상 부호화 및 복호화 방법과 이를 이용한 장치
JP5855570B2 (ja) 2010-09-30 2016-02-09 パナソニック インテレクチュアル プロパティ コーポレーション オブアメリカPanasonic Intellectual Property Corporation of America 画像復号方法、画像符号化方法、画像復号装置、画像符号化装置、プログラムおよび集積回路
KR102034004B1 (ko) * 2010-10-08 2019-10-18 지이 비디오 컴프레션, 엘엘씨 블록 분할 및 블록 병합을 지원하는 픽처 코딩
US8824558B2 (en) 2010-11-23 2014-09-02 Mediatek Inc. Method and apparatus of spatial motion vector prediction
US9137544B2 (en) * 2010-11-29 2015-09-15 Mediatek Inc. Method and apparatus for derivation of mv/mvp candidate for inter/skip/merge modes
US8711940B2 (en) 2010-11-29 2014-04-29 Mediatek Inc. Method and apparatus of motion vector prediction with extended motion vector predictor
US9066104B2 (en) * 2011-01-14 2015-06-23 Google Inc. Spatial block merge mode
US8755437B2 (en) * 2011-03-17 2014-06-17 Mediatek Inc. Method and apparatus for derivation of spatial motion vector candidate and motion vector prediction candidate
EP3139611A1 (en) 2011-03-14 2017-03-08 HFI Innovation Inc. Method and apparatus for deriving temporal motion vector prediction
WO2012173315A1 (ko) 2011-06-17 2012-12-20 엘지전자 주식회사 인트라 예측 모드 부호화/복호화 방법 및 장치

Also Published As

Publication number Publication date
BR112013032110B1 (pt) 2022-05-17
CA2839249A1 (en) 2012-12-27
US9131239B2 (en) 2015-09-08
IL229716A0 (en) 2014-01-30
CA2838839A1 (en) 2012-12-27
AU2012273399A1 (en) 2014-01-09
AU2012273398B2 (en) 2015-11-19
UA111971C2 (uk) 2016-07-11
WO2012177388A1 (en) 2012-12-27
JP5893729B2 (ja) 2016-03-23
KR20170016994A (ko) 2017-02-14
JP2016096550A (ja) 2016-05-26
KR20140024954A (ko) 2014-03-03
BR112013032601B1 (pt) 2022-06-07
CN103609121B (zh) 2017-09-01
EP2721817B1 (en) 2022-02-09
AU2012273398A1 (en) 2014-01-09
JP2014517656A (ja) 2014-07-17
CN103609121A (zh) 2014-02-26
SI2721817T1 (sl) 2022-04-29
KR20140017020A (ko) 2014-02-10
SG195213A1 (en) 2013-12-30
BR112013032110A2 (pt) 2016-12-13
IL229718A (en) 2017-05-29
RU2014101483A (ru) 2015-07-27
MX2013014929A (es) 2014-02-11
MY181631A (en) 2020-12-30
RU2014101348A (ru) 2015-07-27
JP2014520484A (ja) 2014-08-21
IL229716A (en) 2016-12-29
CN103609123B (zh) 2017-02-15
JP2016076944A (ja) 2016-05-12
HUE058080T2 (hu) 2022-07-28
KR102010097B1 (ko) 2019-08-12
CA2838839C (en) 2017-03-21
BR112013032601A2 (pt) 2017-08-01
WO2012177387A1 (en) 2012-12-27
MX2013014932A (es) 2014-02-11
IL229718A0 (en) 2014-01-30
JP6254136B2 (ja) 2017-12-27
CA2839249C (en) 2017-01-03
MY168369A (en) 2018-10-31
DK2721817T3 (da) 2022-03-14
MX339025B (es) 2016-05-05
CN103609123A (zh) 2014-02-26
AU2012273399B2 (en) 2016-03-24
US20120320968A1 (en) 2012-12-20
EP2721818A1 (en) 2014-04-23
US9282338B2 (en) 2016-03-08
EP2721817A1 (en) 2014-04-23
US20120320969A1 (en) 2012-12-20

Similar Documents

Publication Publication Date Title
ES2908241T3 (es) Selección de candidatos de modo de fusión unificado y modo de predicción de vector de movimiento adaptable
ES2927641T3 (es) Fusionar filtros para múltiples clases de bloques para codificación de video
ES2856051T3 (es) Candidatos de fusión favorables a la paralelización para codificación de vídeo
ES2963135T3 (es) Codificación de la posición de un último coeficiente significativo dentro de un bloque de vídeo basándose en un orden de exploración para el bloque en una codificación de vídeo
US9699472B2 (en) Restriction of prediction units in B slices to uni-directional inter prediction
ES2864623T3 (es) Codificación de parámetros de cuantificación (QP) en codificación de video
ES2912367T3 (es) Jerarquía de bloques de vídeo de predicción de movimiento
ES2973247T3 (es) Indicación de modo de intra-predicción mejorada para codificación de vídeo utilizando el modo contiguo
ES2844549T3 (es) Inicialización del parámetro de Rice para la codificación de niveles de coeficiente en un proceso de codificación de vídeo
ES2952256T3 (es) Modelado de contexto eficiente de memoria
ES2810253T3 (es) Reposicionamiento de bloques residuales de predicción en codificación de vídeo
US9426463B2 (en) Restriction of prediction units in B slices to uni-directional inter prediction
ES2693643T3 (es) Exploración dependiente de modo de coeficientes de un bloque de datos de vídeo
BR112014008097B1 (pt) Remoção de corte de candidato a preditor de vetor de movimento para codificação de vídeo
ES2842082T3 (es) Indicación de alineación de tipos de imágenes entre capas en la codificación de vídeo multicapa