ES2900029T3 - Derivación de vector de movimiento en codificación de vídeo - Google Patents

Derivación de vector de movimiento en codificación de vídeo Download PDF

Info

Publication number
ES2900029T3
ES2900029T3 ES16718538T ES16718538T ES2900029T3 ES 2900029 T3 ES2900029 T3 ES 2900029T3 ES 16718538 T ES16718538 T ES 16718538T ES 16718538 T ES16718538 T ES 16718538T ES 2900029 T3 ES2900029 T3 ES 2900029T3
Authority
ES
Spain
Prior art keywords
motion vector
motion
video
block
candidate
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
ES16718538T
Other languages
English (en)
Inventor
Xiang Li
Ying Chen
Li Zhang
Hongbin Liu
Jianle Chen
Marta Karczewicz
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Qualcomm Inc filed Critical Qualcomm Inc
Application granted granted Critical
Publication of ES2900029T3 publication Critical patent/ES2900029T3/es
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • 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/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/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/119Adaptive subdivision aspects, e.g. subdivision of a picture into rectangular or non-rectangular coding blocks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • H04N19/137Motion inside a coding unit, e.g. average field, frame or block difference
    • H04N19/139Analysis of motion vectors, e.g. their magnitude, direction, variance or reliability
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/44Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/46Embedding additional information in the video signal during the compression process
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/513Processing of motion vectors
    • H04N19/517Processing of motion vectors by encoding
    • H04N19/52Processing of motion vectors by encoding by predictive encoding
    • 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/523Motion estimation or motion compensation with sub-pixel accuracy
    • 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/56Motion estimation with initialisation of the vector search, e.g. estimating a good candidate to initiate a search
    • 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/57Motion estimation characterised by a search window with variable size or shape
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/96Tree coding, e.g. quad-tree coding

Landscapes

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

Abstract

Un procedimiento de derivación de vector de movimiento de lado de descodificador para procesar datos de vídeo, comprendiendo el procedimiento: determinar una lista de candidatos de vector de movimiento que comprende una pluralidad de vectores de movimiento candidatos para derivar información de movimiento de un bloque actual en una imagen actual de datos de vídeo, en el que la información de movimiento indica un movimiento del bloque actual en relación con los datos de vídeo de referencia, y en el que la lista de candidatos de vector de movimiento comprende uno o más vectores de movimiento candidatos en modo de fusión o uno o más vectores de movimiento candidatos en modo de predicción de vector de movimiento avanzada; seleccionar un vector de movimiento candidato de la lista de candidatos de vector de movimiento; y determinar un vector de movimiento derivado para el bloque actual que apunta a un conjunto de datos de referencia de una imagen de referencia, en el que determinar el vector de movimiento derivado comprende: realizar una búsqueda de movimiento para un primer conjunto de datos de referencia de una primera imagen de referencia correspondiente a un segundo conjunto de datos de referencia fuera del bloque actual, apuntándose a la primera imagen de referencia por el vector de movimiento candidato, en el que el vector de movimiento candidato indica un punto de partida en la primera imagen de referencia para la búsqueda de movimiento; y refinar el vector de movimiento candidato para determinar un vector de movimiento derivado que apunta al primer conjunto de datos de referencia, en el que el primer conjunto de datos de referencia y el segundo conjunto de datos de referencia representan los datos de referencia de la mejor coincidencia, en el que la mejor coincidencia se basa en un coste de coincidencia entre el primer conjunto de datos de referencia de la primera imagen de referencia y el segundo conjunto de datos de referencia; en el que el coste de coincidencia comprende una magnitud de una diferencia entre el vector de movimiento derivado y el vector de movimiento candidato.

Description

DESCRIPCIÓN
Derivación de vector de movimiento en codificación de vídeo
CAMPO TÉCNICO
La presente divulgación se refiere a la codificación de vídeo.
ANTECEDENTES
Las capacidades de vídeo digital se pueden incorporar a una amplia gama de dispositivos, que incluyen televisores digitales, sistemas de radiodifusión digital directa, sistemas de radiodifusión inalámbrica, asistentes personales digitales (PDA), ordenadores portátiles o de escritorio, ordenadores de tableta, lectores de libros electrónicos, cámaras digitales, dispositivos de grabación digital, reproductores de medios digitales, dispositivos de videojuegos, consolas de videojuegos, teléfonos móviles o de radio por satélite, los denominados "teléfonos inteligentes", dispositivos de videoconferencia, dispositivos de transmisión continua de vídeo y similares. Los dispositivos de vídeo digital implementan técnicas de codificación de vídeo, tales como las descritas en las normas definidas por MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264/MPEG-4, parte 10, codificación de vídeo avanzada (AVC), la norma de codificación de vídeo de alta eficacia (HEVC) y las extensiones de dichas normas. Los dispositivos de vídeo pueden transmitir, recibir, codificar, descodificar y/o almacenar información de vídeo digital más eficazmente implementando dichas técnicas de codificación de vídeo.
Las técnicas de codificación de vídeo incluyen la predicción espacial (intraimagen) y/o la predicción temporal (interimagen) para reducir o eliminar la redundancia intrínseca en las secuencias de vídeo. Para la codificación de vídeo basada en bloques, un fragmento de vídeo (por ejemplo, una trama de vídeo o una parte de una trama de vídeo) se puede dividir en bloques de vídeo, que para algunas técnicas también se pueden denominar bloques de árbol, unidades de codificación (CU) y/o nodos de codificación. Los bloques de vídeo en un fragmento intracodificado (I) de una imagen se codifican usando predicción espacial con respecto a muestras de referencia en bloques vecinos en la misma imagen. Los bloques de vídeo de un fragmento intercodificado (P o B) de una imagen pueden usar predicción espacial con respecto a muestras de referencia en bloques vecinos en la misma imagen o predicción temporal con respecto a muestras de referencia en otras imágenes de referencia. Las imágenes se pueden denominar tramas, y las imágenes de referencia se pueden denominar tramas de referencia.
La predicción espacial o temporal da como resultado un bloque predictivo para un bloque que se va a codificar. Los datos residuales representan diferencias de píxeles entre el bloque original que se va 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, e indicando los datos residuales 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 compresión adicional, los datos residuales se pueden transformar desde el dominio de píxel a un dominio de transformada, dando como resultado coeficientes de transformada residuales que, a continuación, se pueden cuantificar. Se pueden explorar los coeficientes de transformada cuantificados, dispuestos inicialmente en una matriz bidimensional, para producir un vector unidimensional de coeficientes de transformada, y se puede aplicar codificación entrópica para lograr incluso más compresión. Los siguientes documentos divulgan dichas técnicas de codificación de vídeo:
El documento US 2011/176611 A1 (HUANG YU-WEN [TW] ETAL.) 21 de julio de 2011 (21-07-2011)
Y-J CHIU ET AL.: "CE1 Subtest1: A joint proposal of candidate-based decoder-side motion vector derivation", 95. REUNIÓN DE MPEG; 24-1-2011 - 28-1-2011; DAEGU; (GRUPO DE EXPERTOS EN IMÁGENES EN MOVIMIENTO O ISO/IEC JTC1/SC29/WG11), n.° m19473, 26 de enero de 2011 (26-01-2011)
STEFFEN KAMP ET AL.: "Decoder Side Motion Vector Derivation", 82. REUNIÓN DE MPEG; 22-10-2007 - 26-10-2007; SHENZHEN; (GRUPO DE EXPERTOS EN IMÁGENES EN MOVIMIENTO O ISO/IEC JTC1/SC29/WG11), n.° M14917, 16 de octubre de 2007 (16-10-2007)
ZHAO X ET AL.: "CE3 related: Simplifications to sub-PU level inter-view motion prediction", 6. REUNIÓN DE JCT-3V; 25-10-2013 - 1-11-2013; GINEBRA; (EQUIPO DE COLABORACIÓN CONJUNTA EN DESARROLLO DE EXTENSIONES DE CODIFICACIÓN DE VÍDEO EN 3D DE ISO/IEC JTC1/SC29/WG11 E ITU-T SG.16); URL: HTTP://PHENIX.INT-EVRY.FR/JCT2/, n.° JCT3V-F0127, 18 de octubre de 2013 (18-10-2013)
LIN S ET AL. : "TE1: Huawei report on DMVD improvements", 2. REUNIÓN DE JCT-VC; 21-7-2010 - 28-7-2010; GINEBRA; (EQUIPO DE COLABORATIVO CONJUNTA EN CODIFICACIÓN DE VÍDEO DE ISO/IEC JTC1/SC29/WG11 E ITU-T SG.16); URL:HTTP://WFTP3.ITU.INT/AV-ARCH/JCTVC-SITE/, n.° JCTVC-B037, 23 de julio de 2010 (23-07-2010)
Y-J CHIU (INTEL) ET AL.: "Video coding technology proposal by Intel", 1. REUNIÓN DE JCT-VC; 15-4-2010 - 23-4-2010; DRESDE; (EQUIPO DE COLABORACIÓN CONJUNTA EN CODIFICACIÓN DE VÍDEO DE ISO/IEC JTC1/SC29/WG11 E ITU-TSG.16); URL: HTTP://WFTP3.ITU.INT/AV-ARCH/JCTVC-SITE/, n.° JCTVC-A106, 18 de abril de 2010 (18-04-2010)
HM7: MODELO DE PRUEBA DE CODIFICACIÓN DE VÍDEO DE ALTA EFICACIA (HEVC) 7 DESCRIPCIÓN DEL CODIFICADOR: "High Efficiency Video Coding (HEVC) Test Model 7 (HM 7) Encoder Description", 9. REUNIÓN DE JCT-VC; 100. REUNIÓN DE JCT-VC; 27-4-2012 - 7-5-2012; GINEBRA; (EQUIPO DE COLABORACIÓN CONJUNTA EN CODIFICACIÓN DE VÍDEO DE ISO/CEI JTC1/SC29/WG11 E ITU-T SG.16); URL: HTTP:/WFTP3.ITU.INT/AV-ARCH/JCTVC-SITE/, n.° JCTVC-I1002, 9 de julio de 2012 (09-07-2012)
TANG K L ET AL.: "Enhanced SAD reuse fast motion estimation", COMUNICACIONES VISUALES Y PROCESAMIENTO DE IMÁGENES; 30-1-2007 - 1-2-2007; SAN JOSÉ, 30 de enero de 2007 (30-01-2007)
SUMARIO
Las técnicas de la presente divulgación se refieren a derivar información de movimiento en la codificación de vídeo. Por ejemplo, un codificador de vídeo (un codificador de vídeo o descodificador de vídeo) puede generar información de movimiento que no está incluida en el flujo de bits para codificar datos de vídeo que están incluidos en el flujo de bits. Derivando la información de movimiento en el bucle de codificación o descodificación, se puede lograr un ahorro de bits en relación con las técnicas que incluyen información de movimiento en el flujo de bits, tales como las técnicas de interpredicción tradicionales.
El alcance de protección buscado por la invención de la presente divulgación se define de acuerdo con las reivindicaciones adjuntas.
Los detalles de uno o más ejemplos de la divulgación se exponen en los dibujos adjuntos y en la descripción siguiente. Otros rasgos característicos, objetivos y ventajas resultarán evidentes a partir de la descripción, los dibujos y las reivindicaciones.
BREVE DESCRIPCIÓN DE LOS DIBUJOS
La FIG. 1 es un diagrama de bloques que ilustra un sistema de codificación y descodificación de vídeo de ejemplo que puede implementar las técnicas de la presente divulgación.
La FIG. 2 es un diagrama de bloques que ilustra un ejemplo de codificador de vídeo que puede implementar las técnicas de la presente divulgación.
La FIG. 3 es un diagrama de bloques que ilustra un ejemplo de descodificador de vídeo que puede implementar las técnicas de la presente divulgación.
Las FIGS. 4A y 4b son diagramas conceptuales que ilustran candidatos de vectores de movimiento vecinos espaciales de ejemplo para un modo de fusión y un modo de predicción de vector de movimiento avanzada (AMVP).
Las FIGS. 5A y 5B son diagramas conceptuales que ilustran un candidato de predictor de vector de movimiento temporal (TMVP) de ejemplo y un escalado de vector de movimiento.
La FIG. 6 es un diagrama conceptual que ilustra un ejemplo de estimación de movimiento (ME) unilateral en conversión ascendente de velocidad de tramas (FRUC).
La FIG. 7 es un diagrama conceptual que ilustra un ejemplo de estimación de movimiento (ME) bilateral en FRUC. La FIG. 8 es un diagrama conceptual que ilustra un ejemplo de derivación de vector de movimiento de lado de descodificador (DMVD) basado en coincidencia de plantillas.
La FIG. 9 es un diagrama conceptual que ilustra un ejemplo de derivación de vector de movimiento bidireccional con base especular en DMVD
La FIG. 10 es un diagrama conceptual que ilustra la derivación de vector de movimiento basada en coincidencia bilateral extendida.
La FIG. 11 es un diagrama de flujo que ilustra un ejemplo de descodificación de una unidad de predicción (PU) usando DMVD
La FIG. 12 es un diagrama de flujo que ilustra un proceso de ejemplo para determinar un modo de derivación de información de movimiento para codificar un bloque de datos de vídeo.
La FIG. 13 es un diagrama de flujo que ilustra un proceso de ejemplo para derivar un vector de movimiento para codificar un bloque de datos de vídeo.
La FIG. 14 es un diagrama de flujo que ilustra un proceso de ejemplo para derivar información de movimiento para subbloques de un bloque de datos de vídeo.
DESCRIPCIÓN DETALLADA
Las técnicas de la presente divulgación se refieren a la derivación de información de movimiento de lado de descodificador, la división de bloques y/o la interpolación de datos de vídeo en la codificación de vídeo basada en bloques. Las técnicas se pueden aplicar a cualquiera de los códecs de vídeo existentes, tales como la codificación de vídeo de alta eficacia (HEVC) o ser una herramienta de codificación eficaz para cualquier norma de codificación de vídeo futura.
Los dispositivos de codificación de vídeo implementan técnicas de compresión de vídeo para codificar y descodificar datos de vídeo eficazmente. Las técnicas de compresión de vídeo pueden incluir la aplicación de predicción espacial (por ejemplo, predicción intratrama), predicción temporal (por ejemplo, predicción entre tramas) y/u otras técnicas de predicción para reducir o eliminar la redundancia intrínseca en las secuencias de vídeo. Un codificador de vídeo típicamente divide cada imagen de una secuencia de vídeo original en regiones rectangulares denominadas bloques de vídeo o unidades de codificación (descritas con más detalle a continuación). Estos bloques de vídeo se pueden codificar usando un modo de predicción particular.
Para los modos de interpredicción, un codificador de vídeo busca típicamente un bloque similar al que se codifica en una trama en otra ubicación temporal, denominada trama de referencia. El codificador de vídeo puede restringir la búsqueda a un determinado desplazamiento espacial desde el bloque que se va a codificar. Se puede ubicar la mejor coincidencia usando un vector de movimiento bidimensional (2D) que incluye un componente de desplazamiento horizontal y un componente de desplazamiento vertical. Para un modo de intrapredicción, un codificador de vídeo puede formar el bloque predicho usando técnicas de predicción espacial basadas en datos de bloques vecinos codificados previamente dentro de la misma imagen.
El codificador de vídeo puede determinar un error de predicción, es decir, la diferencia entre los valores de píxeles en el bloque que se codifica y el bloque predicho (también denominado residual). El codificador de vídeo también puede aplicar una transformada al error de predicción, tal como una transformada de coseno discreta (DCT), para generar coeficientes de transformada. Después de la transformación, el codificador de vídeo puede cuantificar los coeficientes de transformada. Los coeficientes de transformada cuantificados y los vectores de movimiento se pueden representar usando elementos de sintaxis y, junto con la información de control, formar una representación codificada de una secuencia de vídeo. En algunos casos, el codificador de vídeo puede entropizar elementos de sintaxis de código, reduciendo además de este modo el número de bits necesarios para su representación.
Un descodificador de vídeo puede, usando los elementos de sintaxis y la información de control analizados anteriormente, construir datos predictivos (por ejemplo, un bloque predictivo) para descodificar una trama actual. Por ejemplo, el descodificador de vídeo puede añadir el bloque predicho y el error de predicción comprimido. El descodificador de vídeo puede determinar el error de predicción comprimido ponderando las funciones de base de transformada usando los coeficientes cuantificados. La diferencia entre la trama reconstruida y la trama original se llama error de reconstrucción.
En algunos casos, un descodificador de vídeo o un dispositivo de posprocesamiento pueden interpolar imágenes en base a una o más imágenes de referencia. Dichas imágenes interpoladas no se incluyen en un flujo de bits codificado. El descodificador de vídeo o el dispositivo de posprocesamiento pueden interpolar imágenes para convertir de forma ascendente una velocidad de trama original de un flujo de bits codificado. Este proceso se puede denominar conversión ascendente de velocidad de tramas (FRUC). De forma alternativa, el descodificador de vídeo o el dispositivo de posprocesamiento pueden interpolar imágenes para insertar una o más imágenes que se omitieron por un codificador de vídeo para codificar una secuencia de vídeo a una velocidad de trama reducida. En cualquier caso, el descodificador de vídeo o el dispositivo de posprocesamiento interpola las tramas que no están incluidas en un flujo de bits codificado que se ha recibido por el descodificador de vídeo. El descodificador de vídeo o el dispositivo de posprocesamiento puede interpolar las imágenes usando cualquiera de una serie de técnicas de interpolación, por ejemplo, usando interpolación de tramas compensadas por movimiento, repetición de tramas o promediado de tramas.
Si bien se han usado determinadas técnicas para interpolar imágenes con el propósito de conversión ascendente, dichas técnicas no se han usado ampliamente durante la codificación de vídeo, por ejemplo, para codificar datos de vídeo que están incluidos en un flujo de bits codificado. Por ejemplo, las técnicas para interpolar imágenes pueden requerir relativamente mucho tiempo y/o requerir una cantidad relativamente grande de potencia de procesamiento. En consecuencia, dichas técnicas no se han realizado típicamente en bucle cuando se descodifican datos de vídeo.
De acuerdo con aspectos de la presente divulgación, un codificador de vídeo (por ejemplo, un codificador de vídeo o un descodificador de vídeo) puede derivar información de movimiento cuando codifica un flujo de bits. Por ejemplo, el codificador de vídeo puede generar información de movimiento que no está incluida en el flujo de bits para codificar datos de vídeo que están incluidos en el flujo de bits. Derivando la información de movimiento en el bucle de codificación o descodificación, se puede lograr un ahorro de bits en relación con las técnicas que incluyen información de movimiento en el flujo de bits (tales como las técnicas de interpredicción mencionadas anteriormente).
De acuerdo con algunos aspectos de la presente divulgación, un codificador de vídeo puede utilizar una pluralidad de técnicas de derivación de información de movimiento durante la codificación. En dichos ejemplos, el codificador de vídeo puede determinar un modo de derivación de información de movimiento para determinar qué técnicas de derivación de información de movimiento usar cuando se determina la información de movimiento para un bloque actual. En general, usar un modo de derivación de información de movimiento para derivar información de movimiento puede incluir realizar una búsqueda de movimiento para un primer conjunto de datos de referencia que corresponde a un segundo conjunto de datos de referencia fuera del bloque actual. Por ejemplo, usando el modo de derivación de información de movimiento (por ejemplo, una técnica de coincidencia bilateral, una técnica de coincidencia de plantillas u otra técnica, como se describe con más detalle a continuación), el codificador de vídeo puede seleccionar un candidato de vector de movimiento en una lista de candidatos de vector de movimiento. El codificador de vídeo puede seleccionar el candidato de vector de movimiento en base al candidato de vector de movimiento que identifica los datos de referencia en una imagen de referencia que coincide relativamente de forma estrecha con los datos de la imagen actual (lo que se puede denominar determinar la "mejor coincidencia" de los datos de referencia).
En algunos casos, el codificador de vídeo puede usar el candidato de vector de movimiento seleccionado para identificar una ventana de búsqueda en una imagen de referencia. El codificador de vídeo puede refinar el candidato de vector de movimiento en base a datos de referencia en la ventana de búsqueda que coinciden relativamente de forma estrecha con los datos correspondientes en la imagen actual. Es decir, el codificador de vídeo puede derivar nueva información de movimiento para el bloque actual en base al movimiento entre los datos de referencia en la ventana de búsqueda que coinciden de forma estrecha con los datos en la imagen actual. A continuación, el codificador de vídeo puede realizar una compensación de movimiento para el bloque actual usando la información de movimiento derivada. De esta manera, el codificador de vídeo puede derivar información de movimiento para un bloque actual sin que se señalice la información de movimiento en un flujo de bits codificado.
De acuerdo con aspectos de la presente divulgación, en algunos ejemplos, el codificador de vídeo puede dividir un bloque de datos de vídeo en subbloques cuando deriva información de movimiento. Por ejemplo, el codificador de vídeo puede derivar por separado información de movimiento para cada subbloque de un bloque más grande. En algunos casos, el codificador de vídeo puede determinar inicialmente la información de movimiento para el bloque y usar la información de movimiento derivada como información de movimiento candidata para cada uno de los subbloques. A continuación, el codificador de vídeo puede refinar además la información de movimiento derivada para cada uno de los subbloques, por ejemplo, usando un modo de derivación de información de movimiento (por ejemplo, una técnica de coincidencia bilateral, una técnica de coincidencia de plantillas u otra técnica, como se describe con más detalle a continuación).
Las técnicas de la presente divulgación también pueden incluir técnicas para interpolar imágenes. En algunos casos, se puede usar cualquier combinación de las técnicas anteriores para interpolar una imagen que no está incluida en el flujo de bits, por ejemplo, similar a la conversión ascendente de velocidad de tramas. Sin embargo, en lugar de simplemente añadir la imagen interpolada a la secuencia de vídeo, un descodificador de vídeo puede usar la trama interpolada durante la codificación. Por ejemplo, el descodificador de vídeo puede descodificar datos de una imagen actual en base a al menos una parte de la imagen interpolada. En algunos casos, el descodificador de vídeo puede establecer la imagen interpolada igual a la imagen actual. Por ejemplo, el descodificador de vídeo puede descodificar datos de sintaxis para la imagen actual que está incluida en el flujo de bits (por ejemplo, datos de cabecera de fragmento y similares), interpolar la imagen y establecer la imagen interpolada como la imagen actual. En otros casos, el descodificador de vídeo puede interpolar la imagen y descodificar los datos para la imagen actual en relación con la imagen interpolada. En este caso, el descodificador de vídeo puede añadir la imagen interpolada a una memoria de imágenes de referencia con propósitos de predicción.
De ahí que se pueden usar determinadas técnicas descritas en el presente documento que se refieren a FRUC, en algunos ejemplos, para determinar información de movimiento (por ejemplo, en un proceso de derivación de información de movimiento del lado del descodificador). En otros ejemplos, las técnicas descritas en el presente documento que se refieren a FRUC se pueden usar para interpolar datos de vídeo, por ejemplo, para referencia para codificar datos de vídeo, o para salida.
La FIG. 1 es un diagrama de bloques que ilustra un sistema de codificación y descodificación de vídeo 10 de ejemplo que puede utilizar técnicas para derivar información de movimiento, realizar divisiones de bloques y/o interpolar datos de vídeo. Como se muestra en la FIG. 1, el sistema 10 incluye un dispositivo de origen 12 que proporciona datos de vídeo codificados que se van a descodificar en un momento posterior por un dispositivo de destino 14. En particular, el dispositivo de origen 12 proporciona los datos de vídeo al dispositivo de destino 14 por medio de un medio legible por ordenador 16. El dispositivo de origen 12 y el dispositivo de destino 14 pueden comprender cualquiera de una amplia gama de dispositivos, incluyendo ordenadores de mesa, ordenadores plegables (es decir, portátiles), tabletas electrónicas, cajas de conexión, aparatos telefónicos tales como los denominados teléfonos "inteligentes", los denominados paneles "inteligentes", televisores, cámaras, dispositivos de visualización, reproductores de medios digitales, consolas de videojuegos, un dispositivo de transmisión continua de vídeo o similares. En algunos casos, el dispositivo de origen 12 y el dispositivo de destino 14 pueden estar equipados para la comunicación inalámbrica.
El dispositivo de destino 14 puede recibir los datos de vídeo codificados que se van a descodificar por medio del medio legible por ordenador 16. El medio legible por ordenador 16 puede comprender cualquier tipo de medio o dispositivo que puede transportar los datos de vídeo codificados desde el dispositivo de origen 12 al dispositivo de destino 14. En un ejemplo, el medio legible por ordenador 16 puede comprender un medio de comunicación para habilitar el dispositivo de origen 12 para transmitir datos de vídeo codificados directamente al dispositivo de destino 14 en tiempo real. Los datos de vídeo codificados se pueden modular de acuerdo con una norma de comunicación, tal como un protocolo de comunicación inalámbrica, y transmitir al dispositivo de destino 14. El medio de comunicación puede comprender cualquier medio de comunicación inalámbrica o alámbrica, tal como un espectro de radiofrecuencia (RF) o una o más líneas de transmisión físicas. El medio de comunicación puede formar parte de una red basada en paquetes, tal como una red de área local, una red de área amplia o una red global, tal como Internet. El medio de comunicación puede incluir encaminadores, conmutadores, estaciones base o cualquier otro equipo que puede ser útil para facilitar la comunicación desde el dispositivo de origen 12 al dispositivo de destino 14.
En algunos ejemplos, se pueden emitir datos codificados desde la interfaz de salida 22 hasta un dispositivo de almacenamiento. De forma similar, se puede acceder a los datos codificados desde el dispositivo de almacenamiento por una interfaz de entrada. El dispositivo de almacenamiento puede incluir cualquiera de una variedad de medios de almacenamiento de datos, distribuidos o de acceso local, tales como un disco duro, discos Blu-ray, DVD, CD-ROM, memoria flash, memoria volátil o no volátil o cualquier otro medio de almacenamiento digital adecuado para almacenar datos de vídeo codificados. En otro ejemplo, el dispositivo de almacenamiento puede corresponder a un servidor de ficheros o a otro dispositivo de almacenamiento intermedio que pueda almacenar el vídeo codificado generado por el dispositivo de origen 12. El dispositivo de destino 14 puede acceder a datos de vídeo almacenados desde el dispositivo de almacenamiento por medio de transmisión continua o descarga. El servidor de ficheros puede ser cualquier tipo de servidor que puede almacenar datos de vídeo codificados y transmitir esos datos de vídeo codificados al dispositivo de destino 14. Los servidores de ficheros de ejemplo incluyen un servidor web (por ejemplo, para un sitio web), un servidor FTP, dispositivos de almacenamiento unido a red (NAS) o una unidad de disco local. El dispositivo de destino 14 puede acceder a los datos de vídeo codificados a través de cualquier conexión de datos estándar, incluyendo una conexión a Internet. Esto puede incluir un canal inalámbrico (por ejemplo, una conexión wifi), una conexión alámbrica (por ejemplo, DSL, módem de cable, etc.) o una combinación de ambos que sea adecuada para acceder a datos de vídeo codificados almacenados en un servidor de ficheros. La transmisión de datos de vídeo codificados desde el dispositivo de almacenamiento puede ser una transmisión continua, una transmisión de descarga o una combinación de las mismas.
Las técnicas de la presente divulgación no están limitadas necesariamente a aplicaciones o configuraciones inalámbricas. Las técnicas se pueden aplicar a la codificación de vídeo para admitir cualquiera de una variedad de aplicaciones de multimedia, tales como radiodifusiones de televisión por el aire, transmisiones de televisión por cable, transmisiones de televisión por satélite, transmisiones continuas de vídeo por internet, tales como la transmisión continua adaptativa dinámica sobre HTTP (DASH), vídeo digital que se codifica en un medio de almacenamiento de datos, descodificación de vídeo digital almacenado en un medio de almacenamiento de datos u otras aplicaciones. En algunos ejemplos, se puede configurar el sistema 10 para admitir una transmisión de vídeo unidireccional o bidireccional para admitir aplicaciones tales como transmisión continua de vídeo, reproducción de vídeo, radiodifusión de vídeo y/o videotelefonía.
En el ejemplo de la FIG. 1, el dispositivo de origen 12 incluye una fuente de vídeo 18, un codificador de vídeo 20 y una interfaz de salida 22. El dispositivo de destino 14 incluye una interfaz de entrada 28, un descodificador de vídeo 30 y un dispositivo de visualización 32. De acuerdo con la presente divulgación, el codificador de vídeo 20 del dispositivo fuente 12 se puede configurar para aplicar las técnicas para derivar información de movimiento, realizar divisiones de bloques y/o interpolar datos de vídeo. En otros ejemplos, un dispositivo de origen y un dispositivo de destino pueden incluir otros componentes o disposiciones. Por ejemplo, el dispositivo de origen 12 puede recibir datos de vídeo desde una fuente de vídeo externa 18, tal como una cámara externa. Del mismo modo, el dispositivo de destino 14 puede interactuar con un dispositivo de visualización externo, en lugar de incluir un dispositivo de visualización integrado.
El sistema 10 ilustrado de la FIG. 1 es simplemente un ejemplo. Las técnicas para derivar información de movimiento, realizar divisiones de bloques y/o interpolar datos de vídeo se pueden realizar por cualquier dispositivo de codificación y/o descodificación de vídeo digital. Aunque, en general, las técnicas de la presente divulgación se realizan por un dispositivo de codificación de vídeo, las técnicas también se pueden realizar por un codificador/descodificador de vídeo, denominado típicamente "CÓDEC". Además, las técnicas de la presente divulgación también se pueden realizar mediante un preprocesador de vídeo. El dispositivo de origen 12 y el dispositivo de destino 14 son simplemente ejemplos de dichos dispositivos de codificación, en los que el dispositivo de origen 12 genera datos de vídeo codificados para su transmisión al dispositivo de destino 14. En algunos ejemplos, los dispositivos 12, 14 pueden funcionar de manera sustancialmente simétrica, de modo que cada uno de los dispositivos 12, 14 incluye componentes de codificación y descodificación de vídeo. De ahí que el sistema 10 pueda admitir una transmisión de vídeo unidireccional o bidireccional entre los dispositivos de vídeo 12, 14, por ejemplo, para transmisión continua de vídeo, reproducción de vídeo, radiodifusión de vídeo o videotelefonía.
La fuente de vídeo 18 del dispositivo de origen 12 puede incluir un dispositivo de captación de vídeo, tal como una cámara de vídeo, un archivo de vídeo que contiene vídeo captado previamente y/o una interfaz de suministro de vídeo para recibir vídeo desde un proveedor de contenidos de vídeo. Como otra alternativa, la fuente de vídeo 18 puede generar datos basados en gráficos de ordenador como fuente de vídeo, o una combinación de vídeo en directo, vídeo archivado y vídeo generado por ordenador. En algunos casos, si la fuente de vídeo 18 es una cámara de vídeo, el dispositivo de origen 12 y el dispositivo de destino 14 pueden formar los denominados teléfonos con cámara o videoteléfonos. Sin embargo, como se menciona anteriormente, las técnicas descritas en la presente divulgación pueden ser aplicables a la codificación de vídeo en general, y se pueden aplicar a aplicaciones inalámbricas y/o alámbricas. En cada caso, el vídeo captado, precaptado o generado por ordenador se puede codificar por el codificador de vídeo 20. A continuación, la información de vídeo codificada se puede emitir por la interfaz de salida 22 a un medio legible por ordenador 16.
El medio legible por ordenador 16 puede incluir medios transitorios, tales como una radiodifusión inalámbrica o una transmisión de red alámbrica, o medios de almacenamiento (es decir, medios de almacenamiento no transitorios), tales como un disco duro, una unidad de memoria flash, un disco compacto, un disco de vídeo digital, un disco Blu-ray u otros medios legibles por ordenador. En algunos ejemplos, un servidor de red (no mostrado) puede recibir datos de vídeo codificados desde el dispositivo de origen 12 y proporcionar los datos de vídeo codificados al dispositivo de destino 14, por ejemplo, por medio de transmisión por red. De forma similar, un dispositivo informático de una instalación de producción de medios, tal como una instalación de acuñación de discos, puede recibir datos de vídeo codificados desde el dispositivo de origen 12 y producir un disco que contiene los datos de vídeo codificados. Por lo tanto, se puede entender que el medio legible por ordenador 16 incluye uno o más medios legibles por ordenador de diversas formas, en diversos ejemplos.
La interfaz de entrada 28 del dispositivo de destino 14 recibe información desde el medio legible por ordenador 16. La información del medio legible por ordenador 16 puede incluir información sintáctica definida por el codificador de vídeo 20, que también se usa por el descodificador de vídeo 30, que incluye elementos de sintaxis que describen características y/o procesamiento de bloques y otras unidades codificadas, por ejemplo, los GOP. El dispositivo de visualización 32 presenta los datos de vídeo descodificados a un usuario, y puede comprender cualquiera de una variedad de dispositivos de visualización, tales como un tubo de rayos catódicos (CRT), una pantalla de cristal líquido (LCD), una pantalla de plasma, una pantalla de diodos orgánicos emisores de luz (OLED) u otro tipo de dispositivo de visualización.
Aunque no se muestra en la FIG. 1, en algunos aspectos, el codificador de vídeo 20 y el descodificador de vídeo 30 se pueden integrar cada uno con un codificador y un descodificador de audio, y pueden incluir unidades MUX-DEMUX apropiadas, u otro hardware y software, para gestionar la codificación tanto de audio como de vídeo en un flujo de datos común o en flujos de datos separados. Si es aplicable, las unidades MUX-DEMUX se pueden ajustar al protocolo de multiplexor ITU H.223 u otros protocolos tales como el protocolo de datagramas de usuario (UDP).
Tanto el codificador de vídeo 20 como el descodificador de vídeo 30 se pueden implementar como cualquiera de una variedad de circuitos de codificador adecuados, tales como uno o más microprocesadores, procesadores de señales digitales (DSP), circuitos integrados específicos de la aplicación (ASIC), matrices de puertas programables por campo (FPGA), lógica discreta, software, hardware, firmware o cualquier combinación de los mismos. Cuando las técnicas se implementan parcialmente en software, un dispositivo puede almacenar instrucciones para el software en un medio no transitorio legible por ordenador adecuado y ejecutar las instrucciones en hardware usando uno o más procesadores para realizar las técnicas de la presente divulgación. Tanto el codificador de vídeo 20 como el descodificador de vídeo 30 pueden estar incluidos en uno o más codificadores o descodificadores, de los que cualquiera puede estar integrado como parte de un codificador/descodificador (CÓDEC) combinado en un dispositivo respectivo.
La presente divulgación se puede referir, en general, al codificador de vídeo 20 que "señaliza" determinada información a otro dispositivo, tal como el descodificador de vídeo 30. El término "señalizar" se puede referir, en general, a la comunicación de elementos de sintaxis y/o a otros datos usados para descodificar los datos de vídeo comprimidos. Dicha comunicación se puede producir en tiempo real o casi real. De forma alternativa, dicha comunicación se puede producir durante un período de tiempo, tal como se podría producir cuando se almacenan elementos de sintaxis en un medio de almacenamiento legible por ordenador en un flujo de bits codificado en el momento de la codificación, que, a continuación, se pueden recuperar por un dispositivo de descodificación en cualquier momento después de almacenarse en este medio.
El codificador de vídeo 20 y el descodificador de vídeo 30 pueden funcionar de acuerdo a una norma de codificación de vídeo. Las normas de codificación de vídeo de ejemplo desarrolladas por el Equipo de colaboración conjunta sobre codificación de vídeo (JCT-VC) y el Equipo de colaboración conjunta sobre el desarrollo de extensiones de codificación de vídeo 3D (JCT-3V) del Grupo de expertos en codificación de vídeo (VCEG) del ITU-T y el Grupo de expertos en imágenes en movimiento (MPEG) de ISO/IEC incluyen la codificación de vídeo de alta eficacia (HEVC) o ITU-T H.265, incluyendo su extensión de alcance, extensión de vista múltiple (MV-HEVC) y extensión escalable (SHVC). El documento de la norma de HEVC finalizado se publica como "ITU-T H.265, SERIE H: SISTEMAS AUDIOVISUALES Y MULTIMEDIA Infraestructura de servicios audiovisuales - Codificación de vídeo en movimiento - Codificación de vídeo de alta eficacia, "Sector de Normalización de las Telecomunicaciones de la Unión Internacional de Telecomunicaciones (UIT), abril de 2013. De forma alternativa, el codificador de vídeo 20 y el descodificador de vídeo 30 pueden funcionar de acuerdo con otras normas patentadas o de la industria, tales como ISO/IEC MPEG-4 visual e ITU-T H.264 (también conocida como ISO/iEc MPEG-4 AVC), incluyendo su extensión de codificación de vídeo escalable (SVC) y extensión de codificación de vídeo de vista múltiple (MVC). Sin embargo, las técnicas de la presente divulgación no se limitan a ninguna norma de codificación particular. Por ejemplo, las técnicas de la presente divulgación se pueden usar con una variedad de otras técnicas de codificación de vídeo patentadas o no patentadas o normas posteriores, tales como ITU-T H.266.
Como se indica anteriormente, para los modos de interpredicción, el codificador de vídeo 20 puede buscar un bloque similar al que se está codificando (un "bloque actual") en una imagen de otra ubicación temporal, denominada imagen de referencia. La información usada para identificar la imagen de referencia se puede denominar información de movimiento. Por ejemplo, para cada bloque, puede estar disponible un conjunto de información de movimiento. Un conjunto de información de movimiento contiene información de movimiento para las direcciones de predicción hacia delante y hacia atrás. Aquí, las direcciones de predicción hacia delante y hacia atrás son dos direcciones de predicción de un modo de predicción bidireccional y los términos "hacia delante" y "hacia atrás" no tienen necesariamente un significado geométrico; en cambio, corresponden a la lista de imágenes de referencia 0 (RefPicList0) y a la lista de imágenes de referencia 1 (RefPicList1) de una imagen actual. Cuando solo está disponible una lista de imágenes de referencia para una imagen o un fragmento, solo está disponible la RefPicList0 y la información de movimiento de cada bloque de un fragmento siempre es hacia delante.
En algunos casos, en procesos de descodificación se usa un vector de movimiento conjuntamente con su índice de referencia, un vector de movimiento de este tipo con el índice de referencia asociado se indica como un conjunto unipredictivo de información de movimiento.
Para cada dirección de predicción, la información de movimiento debe contener un índice de referencia y un vector de movimiento. En algunos casos, por simplicidad, se puede hacer referencia a un vector de movimiento por sí mismo, de manera que se suponga que tiene un índice de referencia asociado. Se usa un índice de referencia para identificar una imagen de referencia en la lista de imágenes de referencia actuales (RefPicList0 o RefPicList1). Un vector de movimiento tiene una componente horizontal y otro vertical.
El recuento de orden de imágenes (POC) se usa ampliamente en las normas de codificación de vídeo para identificar un orden de visualización de una imagen. Aunque existen casos en que dos imágenes dentro de una secuencia de vídeo codificada pueden tener el mismo valor de POC, típicamente no ocurre dentro de una secuencia de vídeo codificada. Cuando están presentes múltiples secuencias de vídeo codificado en un flujo de bits, las imágenes con un mismo valor de POC pueden estar más cercanas entre sí en términos de orden de descodificación. Los valores de POC de las imágenes se usan típicamente para la construcción de la lista de imágenes de referencia, la derivación de un conjunto de imágenes de referencia como en la HEVC y el escalado del vector de movimiento.
En H.264/AVC, cada macrobloque (MB) inter se puede dividir en cuatro maneras diferentes, que incluyen: una división de MB de 16x16; dos divisiones de MB de 16x8; dos divisiones de MB de 8x16; y cuatro divisiones de MB de 8x8. Diferentes divisiones de MB en un MB pueden tener diferentes valores de índice de referencia para cada dirección (RefPicList0 o RefPicList1). Cuando un MB no está dividido en cuatro divisiones de MB de 8x8, tiene solo un vector de movimiento para cada división de MB en cada dirección.
Cuando un MB se divide en cuatro divisiones de MB de 8x8, cada división de 8x8 MB se puede dividir además en subbloques, de los que cada uno puede tener un vector de movimiento diferente en cada dirección. Existen cuatro maneras diferentes de obtener subbloques a partir de una división de MB de 8x8: un subbloque de 8x8, dos subbloques de 8x4, dos subbloques de 4x8; y cuatro subbloques de 4x4. Cada subbloque puede tener un vector de movimiento diferente en cada dirección. Por lo tanto, el vector de movimiento está presente en un nivel de igual a mayor que el subbloque.
En AVC, el modo directo temporal se puede habilitar en el nivel de MB o bien de división de MB para el modo de salto o directo en los fragmentos B. Para cada división de MB, los vectores de movimiento del bloque coubicado con la división de MB actual en la RefPicList1 [ 0 ] del bloque actual se usan para derivar los vectores de movimiento. Cada vector de movimiento en el bloque coubicado se ajusta a escala en base a las distancias de POC. En AVC, un modo directo también puede predecir la información de movimiento desde los vecinos espaciales, lo que se puede denominar modo directo espacial.
En HEVC, para generar una representación codificada de una imagen, el codificador de vídeo 20 puede generar un conjunto de unidades de árbol de codificación (CTU). Cada una de las CTU puede comprender un bloque de árbol de codificación (CTB) de muestras de luma, dos CTB correspondientes de muestras de croma y estructuras de sintaxis usadas para codificar las muestras de los CTB. En imágenes monocromáticas o imágenes que tienen tres planos de color separados, una CTU puede comprender un único bloque de CTB y estructuras de sintaxis usadas para codificar las muestras del bloque de árbol de codificación.
Un bloque de árbol de codificación puede ser un bloque de muestras de NxN. El tamaño de un CTB puede variar de 16x16 a 64x64 en el perfil principal de HEVC (aunque, técnicamente, se pueden admitir tamaños de CTB de 8x8). Aunque una unidad de codificación (CU) podría ser del mismo tamaño que un CTB y tan pequeña como 8x8. Cada unidad de codificación está codificada con un modo. Una CTU también se puede denominar "bloque de árbol" o "unidad de codificación de máximo tamaño" (LCU). Las CTU de HEVC pueden ser análogas en términos generales a los macrobloques de otras normas, tales como H.264/AVC. Sin embargo, una CTU no está necesariamente limitada a un tamaño particular y puede incluir una o más unidades de codificación (CU). Un fragmento puede incluir un número entero de CTU ordenadas consecutivamente en un orden de exploración de barrido.
Para generar una CTU codificada, el codificador de vídeo 20 puede realizar de forma recursiva una división de árbol cuaternario en los bloques de árbol de codificación de una CTU para dividir los bloques de árbol de codificación en bloques de codificación, de ahí el nombre "unidades de árbol de codificación". Un bloque de codificación puede ser un bloque de muestras de NxN. Una CU puede comprender un bloque de codificación de muestras de luma y dos bloques de codificación correspondientes de muestras de croma de una imagen que tiene una matriz de muestras de luma, una matriz de muestras Cb y una matriz de muestras Cr y estructuras de sintaxis usadas para codificar las muestras de los bloques de codificación. En imágenes monocromáticas o imágenes que tienen tres planos de color separados, una CU puede comprender un único bloque de codificación y estructuras de sintaxis usadas para codificar las muestras del bloque de codificación.
El codificador de vídeo 20 puede dividir un bloque de codificación de una CU en uno o más bloques de predicción. Un bloque de predicción es un bloque rectangular (es decir, cuadrado o no cuadrado) de muestras en las que se aplica la misma predicción. Una unidad de predicción (PU) de una CU puede comprender un bloque de predicción de muestras de luma, dos bloques de predicción correspondientes de muestras de croma y estructuras de sintaxis usadas para predecir los bloques de predicción. En imágenes monocromáticas o imágenes que tienen tres planos de color separados, una PU puede comprender un único bloque de predicción y estructuras de sintaxis usadas para predecir el bloque de predicción. El codificador de vídeo 20 puede generar bloques predictivos de luma, Cb y Cr para bloques de predicción de luma, Cb y Cr de cada PU de la CU.
El codificador de vídeo 20 puede usar intrapredicción o interpredicción para generar los bloques predictivos para una PU. Si el codificador de vídeo 20 usa intrapredicción para generar los bloques predictivos de una PU, el codificador de vídeo 20 puede generar los bloques predictivos de la PU en base a muestras descodificadas de la imagen asociada con la PU. Si el codificador de vídeo 20 usa interpredicción para generar los bloques predictivos de una PU, el codificador de vídeo 20 puede generar los bloques predictivos de la PU en base a muestras descodificadas de una o más imágenes distintas a la imagen asociada con la PU. Cuando se intercodifica una CU, la CU se puede dividir además en dos o cuatro PU. Cuando dos PU están presentes en una CU, las PU pueden ser en algunos casos rectángulos de la mitad del tamaño o del tamaño de dos rectángulos con un cuarto o tres cuartos del tamaño de la CU.
Después de que el codificador de vídeo 20 genera bloques predictivos de luma, Cb y Cr para una o más PU de una CU, el codificador de vídeo 20 puede generar un bloque residual de luma para la CU. Cada muestra en el bloque residual de luma de la CU indica una diferencia entre una muestra de luma en uno de los bloques predictivos de luma de la CU y una muestra correspondiente en el bloque de codificación de luma original de la CU. Además, el codificador de vídeo 20 puede generar un bloque residual de Cb para la CU. Cada muestra en el bloque residual de Cb de la CU puede indicar una diferencia entre una muestra de Cb en uno de los bloques predictivos de Cb de la CU y una muestra correspondiente en el bloque de codificación de Cb original de la CU. El codificador de vídeo 20 también puede generar un bloque residual de Cr para la CU. Cada muestra en el bloque residual de Cr de la CU puede indicar una diferencia entre una muestra de Cr en uno de los bloques predictivos de Cr de la CU y una muestra correspondiente en el bloque de codificación de Cr original de la CU.
Además, el codificador de vídeo 20 puede usar una división de árbol cuaternario para descomponer los bloques residuales de luma, Cb y Cr de una CU en uno o más bloques de transformada de luma, Cb y Cr. Un bloque de transformada es un bloque rectangular (por ejemplo, cuadrado o no cuadrado) de muestras a las que se aplica la misma transformada. Una unidad de transformada (TU) de una CU puede comprender un bloque de transformada de muestras de luma, dos bloques correspondientes de transformada de muestras de croma y estructuras de sintaxis usadas para transformar las muestras de bloques de transformada. De este modo, cada TU de una CU puede estar asociada con un bloque de transformada de luma, un bloque de transformada de Cb y un bloque de transformada de Cr. El bloque de transformada de luma asociado con la TU puede ser un subbloque del bloque residual de luma de la CU. El bloque de transformada de Cb puede ser un subbloque del bloque residual de Cb de la CU. El bloque de transformada de Cr puede ser un subbloque del bloque residual de Cr de la CU. En imágenes monocromáticas o imágenes que tienen tres planos de color separados, una TU puede comprender un único bloque de transformada y estructuras de sintaxis usadas para transformar las muestras del bloque de transformada.
El codificador de vídeo 20 puede aplicar una o más transformadas a un bloque de transformada de luma de una TU para generar un bloque de coeficientes de luma para la TU. Un bloque de coeficientes puede ser una matriz bidimensional de coeficientes de transformada. Un coeficiente de transformada puede ser una cantidad escalar. El codificador de vídeo 20 puede aplicar una o más transformadas a un bloque de transformada de Cb de una TU para generar un bloque de coeficientes de Cb para la TU. El codificador de vídeo 20 puede aplicar una o más transformadas a un bloque de transformada de Cr de una TU para generar un bloque de coeficientes de Cr para la TU.
Después de generar un bloque de coeficientes (por ejemplo, un bloque de coeficientes de luma, un bloque de coeficientes de Cb o un bloque de coeficientes de Cr), el codificador de vídeo 20 puede cuantificar el bloque de coeficientes. La cuantificación se refiere, en general, a un proceso en el que los coeficientes de transformada se cuantifican para reducir, posiblemente, la cantidad de datos usados para representar los coeficientes de transformada, proporcionando compresión adicional. Después de que el codificador de vídeo 20 cuantifica un bloque de coeficientes, el codificador de vídeo 20 puede codificar por entropía elementos de sintaxis que indican los coeficientes de transformada cuantificados. Por ejemplo, el codificador de vídeo 20 puede realizar una codificación aritmética binaria adaptativa al contexto (CABAC) en los elementos de sintaxis que indican los coeficientes de transformada cuantificados.
El codificador de vídeo 20 puede emitir un flujo de bits que incluye una secuencia de bits que forma una representación de imágenes codificadas y datos asociados. El flujo de bits puede comprender una secuencia de unidades de capa de abstracción de red (NAL). Una unidad de NAL es una estructura de sintaxis que contiene una indicación del tipo de datos en la unidad de NAL y octetos que contienen esos datos en forma de una carga útil de secuencia de octetos sin procesar (RBSP) entremezclados como sea necesario con bits de prevención de emulación. Cada una de las unidades de NAL incluye una cabecera de unidad de NAL y encapsula una RBSP.
Diferentes tipos de unidades de NAL pueden encapsular diferentes tipos de RBSP. Por ejemplo, un primer tipo de unidad de NAL puede encapsular una RBSP para un conjunto de parámetros de imagen (PPS), un segundo tipo de unidad de NAL puede encapsular una RBSP para un fragmento codificado, un tercer tipo de unidad de NAL puede encapsular una RBSP para SEI y así sucesivamente. Las unidades de NAL que encapsulan las RBSP para datos de codificación de vídeo (a diferencia de las RBSP para conjuntos de parámetros y mensajes SEI) se pueden denominar unidades de NAL de la capa de codificación de vídeo (VCL).
El descodificador de vídeo 30 puede recibir un flujo de bits generado por el codificador de vídeo 20. Además, el descodificador de vídeo 30 puede analizar el flujo de bits para obtener elementos de sintaxis a partir del flujo de bits. El descodificador de vídeo 30 puede reconstruir las imágenes de los datos de vídeo en base, al menos en parte, a los elementos de sintaxis obtenidos a partir del flujo de bits. El proceso para reconstruir los datos de vídeo puede ser, en general, recíproco al proceso realizado por el codificador de vídeo 20. Además, el descodificador de vídeo 30 puede realizar una cuantificación inversa de los bloques de coeficientes asociados con las TU de una CU actual. El descodificador de vídeo 30 puede realizar transformadas inversas en los bloques de coeficientes para reconstruir los bloques de transformada asociados con las TU de la CU actual. El descodificador de vídeo 30 puede reconstruir los bloques de codificación de la CU actual añadiendo las muestras de los bloques predictivos para las PU de la CU actual a las muestras correspondientes de los bloques de transformada de las TU de la CU actual. Al reconstruir los bloques de codificación para cada CU de una imagen, el descodificador de vídeo 30 puede reconstruir la imagen.
Cuando una CU se intercodifica, está presente un conjunto de información de movimiento para cada PU. Además, cada PU se codifica con un modo único de interpredicción para derivar un conjunto de información de movimiento. En la norma HEVC, existen dos modos de interpredicción, denominados modos de fusión (el salto se considera un caso especial de fusión) y de predicción de vector de movimiento avanzada (AMVP) respectivamente para una unidad de predicción (PU).
Tanto en el modo AMVP como de fusión, se mantiene una lista de candidatos de vector de movimiento (MV) para predictores de vector de movimiento múltiples. El/los vector(es) de movimiento, así como los índices de referencia en el modo de fusión, de la PU actual se generan tomando un candidato de la lista de candidatos de MV.
La lista de candidatos de MV contiene hasta cinco candidatos para el modo de fusión y dos candidatos para el modo AMVP. Un candidato de fusión puede contener un conjunto de información de movimiento, por ejemplo, vectores de movimiento correspondientes a ambas listas de imágenes de referencia (lista 0 y lista 1) y los índices de referencia. Si un candidato de fusión se identifica por un índice de fusión, las imágenes de referencia se usan para la predicción de los bloques actuales, así como se determinan los vectores de movimiento asociados. Sin embargo, en el modo AMVP, para cada dirección de predicción potencial de la lista 0 o bien la lista 1, se necesita señalizar explícitamente un índice de referencia, conjuntamente con un índice de MVP, a la lista de candidatos de MV, puesto que el candidato de AMVP solo contiene un vector de movimiento. En el modo AMVP, los vectores de movimiento predichos se pueden refinar además.
Como se puede observar anteriormente, un candidato de fusión corresponde a un conjunto completo de información de movimiento, mientras que un candidato de AMVP contiene solo un vector de movimiento para una dirección de predicción e índice de referencia específicos. Los candidatos para ambos modos se derivan de forma similar a partir de los mismos bloques vecinos espaciales y temporales, como se describe con respecto a las FIGS.
4 y 5 a continuación.
De acuerdo con los aspectos de la presente divulgación, como se describe con más detalle a continuación, el codificador de vídeo 20 y/o el descodificador de vídeo 30 se pueden configurar para realizar cualquier combinación de las técnicas descritas en el presente documento para derivar información de movimiento, realizar divisiones de bloques y/o interpolar datos de vídeo. Con respecto a la derivación de información de movimiento, el codificador de vídeo 20 y/o el descodificador de vídeo 30 se pueden configurar para derivar información de movimiento realizando una búsqueda de movimiento para un primer conjunto de datos de referencia que corresponde a un segundo conjunto de datos de referencia fuera del bloque actual. La correspondencia se puede determinar en base a una cantidad de similitud entre los datos de referencia, y se puede denominar en el presente documento como determinación de una "coincidencia" o de "la mejor coincidencia".
En algunos ejemplos, el codificador de vídeo 20 y/o el descodificador de vídeo 30 pueden codificar inicialmente uno o más elementos de sintaxis que indican si está habilitado el proceso de derivación de movimiento. En algunos casos, el uno o más elementos de sintaxis se pueden incorporarse con otro modo, tal como el modo de fusión descrito anteriormente. Por ejemplo, como se describe con más detalle con respecto al ejemplo de la FIG. 10, el codificador de vídeo 20 y/o el descodificador de vídeo 30 codifican uno o más elementos de sintaxis cuando se realiza el modo de fusión (por ejemplo, un indicador, un índice en una lista de candidatos de fusión o similares) que indica si se realiza la derivación de movimiento.
En los casos en los que se habilita la derivación de movimiento, de acuerdo con aspectos de la presente divulgación, el codificador de vídeo 20 y/o el descodificador de vídeo 30 pueden realizar la derivación de vector de movimiento con patrón coincidente. Por ejemplo, el codificador de vídeo 20 y/o el descodificador de vídeo 30 pueden codificar uno o más elementos de sintaxis que indican qué modo de derivación de información de movimiento aplicar a partir de una pluralidad de modos de derivación de información de movimiento. El codificador de vídeo 20 y/o el descodificador de vídeo 30 pueden codificar un indicador para distinguir entre dos modos de información de derivación de movimiento o un índice para distinguir entre más de dos modos de derivación de información de movimiento. Como se describe en el presente documento, los modos de derivación de información de movimiento con patrón coincidente de ejemplo incluyen coincidencia bilateral o coincidencia de plantillas.
Durante el proceso de derivación de movimiento, el codificador de vídeo 20 y/o el descodificador de vídeo 30 pueden derivar un vector de movimiento inicial para todo un bloque (por ejemplo, una PU completa) en base al proceso de derivación de movimiento seleccionado. Por ejemplo, el codificador de vídeo 20 y/o el descodificador de vídeo 30 pueden usar vectores de movimiento de una lista de candidatos asociada con el modo de fusión y determinar qué vector de movimiento de la lista de candidatos da como resultado la mejor coincidencia. Es decir, el codificador de vídeo 20 y/o el descodificador de vídeo 30 pueden determinar qué vector de movimiento de la lista de candidatos, cuando se usa en el proceso de derivación de movimiento seleccionado, da como resultado un primer conjunto de datos de referencia que corresponde a un segundo conjunto de datos de referencia fuera del bloque actual, por ejemplo, datos de referencia que coinciden de forma estrecha con los datos en la imagen actual u otra imagen de referencia. En general, "la mejor coincidencia" se puede referir a datos de vídeo que son los más similares en términos de diferencias de píxeles.
Como ejemplo con propósitos ilustrativos, como se describe con más detalle con respecto a la FIG. 8, el codificador de vídeo 20 y/o el descodificador de vídeo 30 pueden seleccionar un modo de derivación de información de movimiento por coincidencia de plantillas. En este ejemplo, el codificador de vídeo 20 y/o el descodificador de vídeo 30 pueden seleccionar el candidato de vector de movimiento a partir del modo de fusión en base al mejor candidato de vector que da como resultado una plantilla que coincide de forma lo más estrecha con una plantilla en una imagen de referencia. Por ejemplo, el codificador de vídeo 20 y/o el descodificador de vídeo 30 se pueden configurar para realizar una búsqueda de movimiento para un primer conjunto de datos de referencia que corresponde a un segundo conjunto de datos de referencia fuera del bloque actual, donde el primer conjunto de datos comprende la plantilla en la imagen actual y el segundo conjunto de datos de referencia comprende la plantilla en la imagen de referencia. En algunos casos, como se describe con más detalle a continuación, el codificador de vídeo 20 y/o el descodificador de vídeo 30 puede seleccionar de forma adicional o alternativa un vector de movimiento candidato en base a un coste de coincidencia mínimo.
De acuerdo con aspectos de la presente divulgación, después de determinar el vector de movimiento candidato, el codificador de vídeo 20 y/o el descodificador de vídeo 30 puede refinar además el vector de movimiento candidato para derivar la información de movimiento para el bloque actual. Por ejemplo, el codificador de vídeo 20 y/o el descodificador de vídeo 30 pueden realizar una búsqueda (por ejemplo, una búsqueda usando el modo de derivación de información de movimiento) en un área predefinida de la imagen de referencia indicada por el vector de movimiento candidato. El codificador de vídeo 20 y/o el descodificador de vídeo 30 pueden derivar la información de movimiento para el bloque actual en base al vector de movimiento que indica datos de referencia en el área predefinida que tienen una mejor coincidencia y/o un coste de coincidencia mínimo con los datos de vídeo de la imagen actual.
En algunos casos, de acuerdo con aspectos de la presente divulgación, el codificador de vídeo 20 y/o el descodificador de vídeo 30 pueden dividir el bloque de datos de vídeo en subbloques cuando se deriva información de movimiento. Por ejemplo, el codificador de vídeo 20 y/o el descodificador de vídeo 30 puede derivar por separado información de movimiento para cada subbloque de un bloque más grande. En algunos casos, el codificador de vídeo 20 y/o el descodificador de vídeo 30 puede usar la información de movimiento derivada para un bloque (por ejemplo, usando el proceso descrito anteriormente) como información de movimiento candidata para cada uno de los subbloques. A continuación, el codificador de vídeo 20 y/o el descodificador de vídeo 30 puede refinar además la información de movimiento derivada para cada uno de los subbloques, por ejemplo, usando un modo de derivación de información de movimiento particular (por ejemplo, una técnica de coincidencia bilateral, una técnica de coincidencia de plantillas u otra técnica, como se describe con más detalle a continuación).
La FIG. 2 es un diagrama de bloques que ilustra un ejemplo de codificador de vídeo 20 que puede implementar técnicas para derivar información de movimiento, realizar divisiones de bloques y/o interpolar datos de vídeo. El codificador de vídeo 20 puede realizar intracodificación e intercodificación de bloques de vídeo dentro de fragmentos de vídeo. La intracodificación se basa en la predicción espacial para reducir o eliminar la redundancia espacial de un vídeo dentro de una trama o imagen de vídeo dada. La intercodificación se basa en la predicción temporal para reducir o eliminar la redundancia temporal de un vídeo dentro de tramas o imágenes contiguas de una secuencia de vídeo. El intramodo (modo I) se puede referir a cualquiera de varios modos de codificación de base espacial. Los intermodos, tales como la predicción unidireccional (modo P) o la predicción bidireccional (modo B), se pueden referir a cualquiera de varios modos de codificación de base temporal.
Como se muestra en la FIG. 2, el codificador de vídeo 20 recibe un bloque de vídeo actual dentro de una trama de vídeo que se va a codificar. En el ejemplo de la FIG. 2, el codificador de vídeo 20 incluye una memoria de datos de vídeo 38, una unidad de selección de modo 40, una memoria de imágenes de referencia 64, un sumador 50, una unidad de procesamiento de transformada 52, una unidad de cuantificación 54 y una unidad de codificación entrópica 56. A su vez, la unidad de selección de modo 40 incluye una unidad de compensación de movimiento 44, una unidad de estimación de movimiento 42, una unidad de intrapredicción 46 y una unidad de división 48. 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, una unidad de transformada inversa 60 y un sumador 62. También se puede incluir un filtro de eliminación de bloques (no mostrado en la FIG. 2) para filtrar los límites de bloque para eliminar distorsiones de efecto pixelado del vídeo reconstruido. Si se desea, el filtro de eliminación de bloques filtrará típicamente la salida del sumador 62. También se pueden usar filtros adicionales (en bucle o posteriormente al bucle), además del filtro de eliminación de bloques. Dichos filtros no se muestran por razones de brevedad, pero si se desea, pueden filtrar la salida del sumador 50 (como un filtro en bucle).
Durante el proceso de codificación, el codificador de vídeo 20 recibe una trama o fragmento de vídeo que se va a codificar. La trama o fragmento se pueden dividir en múltiples bloques de vídeo. La memoria de datos de vídeo 38 puede almacenar los datos de vídeo que se van a codificar por los componentes del codificador de vídeo 20. Los datos de vídeo almacenados en la memoria de datos de vídeo 38 se pueden obtener, por ejemplo, a partir de la fuente de vídeo 18. La memoria de imágenes de referencia 64 se puede denominar un DPB que almacena datos de vídeo de referencia para su uso en la codificación de datos de vídeo por el codificador de vídeo 20, por ejemplo, en modos de intracodificación o intercodificación. La memoria de datos de vídeo 38 y la memoria de imágenes de referencia 64 se pueden formar por cualquiera de una variedad de dispositivos de memoria, tales como memoria dinámica de acceso aleatorio (DRAM), incluyendo DRAM síncrona (Sd RAM), RAM magnetorresistiva (MRAM), RAM resistiva (RRAM) u otros tipos de dispositivos de memoria. La memoria de datos de vídeo 38 y la memoria de imágenes de referencia 64 se pueden proporcionar por el mismo dispositivo de memoria o por dispositivos de memoria separados. En diversos ejemplos, la memoria de datos de vídeo 38 puede estar en un chip con otros componentes del codificador de vídeo 20, o fuera del chip en relación con esos componentes.
La unidad de estimación de movimiento 42 y la unidad de compensación de movimiento 44 realizan la codificación interpredictiva del bloque de vídeo recibido en relación con uno o más bloques en una o más tramas de referencia para proporcionar predicción temporal. La unidad de intrapredicción 46, de forma alternativa, puede realizar la codificación intrapredictiva del bloque de vídeo recibido en relación con uno o más bloques vecinos en la misma trama o fragmento que el bloque que se va a codificar para proporcionar predicción espacial. El codificador de vídeo 20 puede realizar múltiples pases de codificación, por ejemplo, para seleccionar un modo de codificación apropiado para cada bloque de datos de vídeo.
Además, la unidad de división 48 puede dividir bloques de datos de vídeo en subbloques, en base a la evaluación de esquemas de división previos en pases de codificación previos. Por ejemplo, la unidad de división 48 puede dividir inicialmente una trama o fragmento en LCU, y dividir cada una de las lCu en sub-CU en base a un análisis de velocidad-distorsión (por ejemplo, una optimización de velocidad-distorsión). La unidad de selección de modo 40 puede producir además una estructura de datos de árbol cuaternario, indicativa de la división de una LCU en sub-CU. Las CU de nodos hoja del árbol cuaternario pueden incluir una o más PU y una o más TU.
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 errores, y proporciona el bloque intracodificado o intercodificado resultante al sumador 50 para generar datos de bloques residuales, y al sumador 62 para reconstruir el bloque codificado para su uso como una trama de referencia. La unidad de selección de modo 40 también proporciona elementos de sintaxis, tales como vectores de movimiento, indicadores de intramodo, información de división y otra información de sintaxis de este tipo a la unidad de codificación entrópica 56.
La unidad de estimación de movimiento 42 y la unidad de compensación de movimiento 44 pueden estar altamente integradas, pero se ilustran por separado con propósitos conceptuales. La estimación de movimiento, realizada por la unidad de estimación de movimiento 42, es el proceso de generación de vectores de movimiento, que estiman el movimiento para los bloques de vídeo. Un vector de movimiento, por ejemplo, puede indicar el desplazamiento de una Pu de un bloque de vídeo dentro de una trama o imagen de vídeo actual, en relación con un bloque predictivo dentro de una trama de referencia (u otra unidad codificada), en relación con el bloque actual que se está codificando dentro de la trama actual (u otra unidad codificada). Un bloque predictivo es un bloque que se encuentra que coincide de forma estrecha con el bloque que se va a codificar, en términos de la diferencia de píxeles, lo que se puede determinar por una suma de diferencias absolutas (SAD), una suma de diferencias al cuadrado (SSD) u otras métricas de diferencia.
En algunos ejemplos, el codificador de vídeo 20 puede realizar una búsqueda de movimiento rápido para determinar un vector de movimiento de un bloque. Existen muchos procedimientos de búsqueda de movimiento rápido propuestos en la literatura, tales como la búsqueda en descenso de gradiente basada en bloques (BBGDS) como se describe, por ejemplo, en Lurng-Kuo Liu, Ephraim Feig, "A block-based gradient descent search algorithm for block motion estimation in video coding", IEEE Trans. Circuits Syst. Video Technol., vol. 6, págs., 419-422, agosto de 1996, búsqueda de rombos con sesgo central sin restricciones (UCBDS), como se describe, por ejemplo, en Jo Yew Tham, Surendra Ranganath, Maitreya Ranganath y Ashraf Ali Kassim, "A novel unrestricted center-biased diamond search algorithm for block motion estimation", IEEE Trans. Circuits Syst. Video Technol., vol. 8, págs. 369-377, agosto de 1998, y búsqueda basada en hexágonos (HEBS) como se describe, por ejemplo, en Ce Zhu, Xiao Lin y Lap-Pui Chau, "Hexagon-Based Search Pattern for Fast Block Motion Estimation", IEEE Trans. Circuits Syst. Video Technol., vol. 12, págs. 349-355, mayo de 2002. Básicamente, estas técnicas incluyen buscar solo un determinado número de posiciones en el interior de una ventana de búsqueda en base a patrones de búsqueda predefinidos. Estas técnicas habitualmente funcionan bien cuando el movimiento es pequeño y moderado.
En algunos ejemplos, el codificador de vídeo 20 puede calcular valores para posiciones de píxel fraccionario de imágenes de referencia almacenadas en la memoria de imágenes de referencia 64. Por ejemplo, el codificador de vídeo 20 puede interpolar valores de posiciones de un cuarto de píxel, posiciones de un octavo de píxel u otras posiciones de píxel fraccionario de la imagen de referencia. Por lo tanto, la unidad de estimación de movimiento 42 puede realizar una búsqueda de movimiento en relación con las posiciones de píxel completo y las posiciones de píxel fraccionario y emitir un vector de movimiento con una precisión de píxel fraccionario.
La unidad de estimación de movimiento 42 calcula un vector de movimiento para una PU de un bloque de vídeo en un fragmento intercodificado comparando la posición de la PU con la posición de un bloque predictivo de una imagen de referencia. La imagen de referencia se puede seleccionar de una primera lista de imágenes de referencia (lista 0) o de una segunda lista de imágenes de referencia (lista 1), de las que cada una identifica una o más imágenes de referencia almacenadas en la memoria de imágenes de referencia 64. La unidad de estimación de movimiento 42 envía el vector de movimiento calculado a la unidad de codificación entrópica 56 y a la unidad de compensación de movimiento 44.
La compensación de movimiento, realizada por la unidad de compensación de movimiento 44, puede implicar buscar o generar el bloque predictivo en base al vector de movimiento determinado por la unidad de estimación de movimiento 42. De nuevo, la unidad de estimación de movimiento 42 y la unidad de compensación de movimiento 44 se pueden integrar funcionalmente, en algunos ejemplos. Tras recibir el vector de movimiento para la PU del bloque de vídeo actual, la unidad de compensación de movimiento 44 puede ubicar el bloque predictivo al que apunta el vector de movimiento en una de las listas de imágenes de referencia. El sumador 50 forma un bloque de vídeo residual restando valores de píxel del bloque predictivo a los valores de píxel del bloque de vídeo actual que se está codificando, formando valores de diferencias de píxel, como se analiza a continuación. En general, la unidad de estimación de movimiento 42 realiza la estimación de movimiento en relación con los componentes de luma, y la unidad de compensación de movimiento 44 usa los vectores de movimiento calculados en base a los componentes de luma tanto para los componentes de croma como para los componentes de luma. La unidad de selección de modo 40 también puede generar elementos de sintaxis asociados con los bloques de vídeo y el fragmento de vídeo para su uso por el descodificador de vídeo 30 en la descodificación de los bloques de vídeo del fragmento de vídeo.
La unidad de intrapredicción 46 puede intrapredecir un bloque actual, 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, como se describe anteriormente. En particular, la unidad de intrapredicción 46 puede determinar un modo de intrapredicción para usar para codificar un bloque actual. En algunos ejemplos, la unidad de intrapredicción 46 puede codificar un bloque actual usando diversos modos de intrapredicción, por ejemplo, durante pases de codificación separados, y la unidad de intrapredicción 46 (o unidad de selección de modo 40, en algunos ejemplos) puede seleccionar un modo de intrapredicción apropiado para usar a partir de los modos sometidos a prueba.
Por ejemplo, la unidad de intrapredicción 46 puede calcular valores de velocidad-distorsión usando un análisis de velocidad-distorsión para los diversos modos de intrapredicción sometidos a prueba, y seleccionar el modo de intrapredicción que tiene las mejores características de velocidad-distorsión entre los modos sometidos a prueba. El análisis de velocidad-distorsión determina, en general, una cantidad de distorsión (o de error) entre un bloque codificado y un bloque original, no codificado, que se codificó para producir el bloque codificado, así como una velocidad de transferencia de bits (es decir, un número de bits) usada para producir el bloque codificado. La unidad de intrapredicción 46 puede calcular proporciones a partir de las distorsiones y velocidades para los diversos bloques codificados para determinar qué modo de intrapredicción presenta el mejor valor de velocidad-distorsión para el bloque.
Después de seleccionar un modo de intrapredicción para un bloque, la unidad de intrapredicción 46 puede proporcionar información indicativa del modo de intrapredicción seleccionado para el bloque a la unidad de codificación entrópica 56. La unidad de codificación entrópica 56 puede codificar la información que indica el modo de intrapredicción seleccionado. El codificador de vídeo 20 puede incluir, en el flujo de bits transmitido, datos de configuración, que pueden incluir una pluralidad de tablas de índices de modo de intrapredicción y una pluralidad de tablas de índices de modo de intrapredicción modificadas (también denominadas tablas de correlación de palabras de código), definiciones de contextos de codificación para diversos bloques e indicaciones de un modo de intrapredicción más probable, una tabla de índices de modo de intrapredicción y una tabla de índices de modo de intrapredicción modificada para su uso para cada uno de los contextos.
De acuerdo con aspectos de la presente divulgación, como se describe en el presente documento, el codificador de vídeo 20 se puede configurar para realizar cualquier combinación de las técnicas descritas en el presente documento para derivar información de movimiento, realizar divisiones de bloques y/o interpolar datos de vídeo. En particular, determinadas técnicas de la presente divulgación se pueden realizar por la unidad de derivación 49. Por ejemplo, la unidad de derivación 49 se puede configurar para determinar información de movimiento para un bloque actual y sin incluir datos que indican la información de movimiento en el flujo de bits.
En algunos casos, la unidad de derivación 49 (y/o la unidad de selección de modo 40) puede determinar si realizar la derivación de movimiento para un bloque particular (por ejemplo, frente a la intrapredicción o la interpredicción tradicional) en base a un análisis de distorsión de velocidad. Por ejemplo, la unidad de derivación 49 puede determinar si se realiza la derivación de movimiento de una manera similar a una selección de coste de distorsión de velocidad como se realiza para los candidatos de fusión en el modo de fusión. En este ejemplo, la unidad de derivación 49 puede verificar cada modo de derivación de información de movimiento de una pluralidad de modos de derivación de información de movimiento (por ejemplo, un modo de coincidencia bilateral, modo de coincidencia de plantillas o similares) usando una selección de coste de distorsión de velocidad. La unidad de derivación 49 puede comparar además el modo de derivación de información de movimiento que tiene el coste mínimo con otros modos de PU (por ejemplo, modos de intrapredicción, un modo de interpredicción tradicional, un modo de codificación de paleta o similares). En los casos en los que el modo de derivación de movimiento es el modo más eficaz en términos de eficacia de codificación, el codificador de vídeo 20 puede codificar uno o más elementos de sintaxis que indican que se deriva (en lugar de señalizar) la información de movimiento para el bloque actual. El codificador de vídeo 20 también puede codificar uno o más elementos de sintaxis para la indicación del modo de derivación de movimiento a partir de una pluralidad de modos de derivación de información de movimiento.
En otros ejemplos, de acuerdo con aspectos de la presente divulgación, la unidad de derivación 49 puede interpolar datos de vídeo que no están incluidos en el flujo de bits codificado para una secuencia de vídeo. Por ejemplo, la unidad de derivación 49 puede realizar cualquier combinación de técnicas de derivación de movimiento para interpolar una imagen que no está incluida en el flujo de bits, por ejemplo, similar a la conversión ascendente de velocidad de tramas. En algunos casos, el codificador de vídeo 20 puede usar la imagen interpolada durante la codificación. Por ejemplo, la unidad de derivación 49 puede interpolar una imagen y el codificador de vídeo 20 puede codificar los datos para una imagen actual en relación con la imagen interpolada. En este ejemplo, el codificador de vídeo 20 puede añadir la imagen interpolada a la memoria de imágenes de referencia 64 y codificar los datos de otras imágenes en base a al menos una parte de la imagen interpolada.
En otros ejemplos, la unidad de derivación 49 puede interpolar una imagen y el codificador de vídeo 20 puede establecer la imagen interpolada igual a la imagen actual. Por ejemplo, la unidad de derivación 49 puede interpolar la imagen actual y el codificador de vídeo 20 puede codificar los datos de sintaxis para que la imagen actual se incluya en el flujo de bits (por ejemplo, datos de cabecera de fragmento y similares), pero puede omitir la codificación de datos de vídeo para la imagen actual.
Si bien la unidad de derivación 49 se puede configurar para realizar determinadas técnicas de derivación y/o interpolación, como se describe en el presente documento, se debe entender que una o más de otras unidades del codificador de vídeo 20 también o de forma alternativa se pueden configurar para interpolar los datos. Por ejemplo, el codificador de vídeo 20 puede incluir una variedad de otros interpoladores o filtros, por ejemplo, para interpolar un píxel en una ubicación de subpíxel (subpíxel) durante una compensación de movimiento.
El codificador de vídeo 20 forma un bloque de vídeo residual restando los datos de predicción de la unidad de selección de modo 40 al bloque de vídeo original que se está codificando. El sumador 50 representa el componente o los componentes que realizan esta operación de resta. La unidad de procesamiento de transformada 52 aplica una transformada, tal como una transformada de coseno discreta (DCT) o una transformada conceptualmente similar, al bloque residual, produciendo un bloque de vídeo que comprende valores de coeficientes de transformada residuales. La unidad de procesamiento de transformada 52 puede realizar otras transformadas que son conceptualmente similares a la DCT. También se podrían usar transformadas de ondículas, transformadas de enteros, transformadas de subbanda u otros tipos de transformadas.
En cualquier caso, la unidad de procesamiento de transformada 52 aplica la transformada al bloque residual, produciendo un bloque de coeficientes de transformada residuales. La transformada puede convertir la información residual desde un dominio de valores de píxel a un dominio de transformada, tal como un dominio de frecuencia. La unidad de procesamiento de transformada 52 puede enviar los coeficientes de transformada resultantes a la unidad de cuantificación 54. La unidad de cuantificación 54 cuantifica los coeficientes de transformada para reducir además la velocidad de transferencia de bits. El proceso de cuantificación puede reducir la profundidad de bits asociada con algunos o todos los coeficientes. El grado de cuantificación se puede modificar ajustando un parámetro de cuantificación. En algunos ejemplos, la unidad de cuantificación 54 puede realizar, a continuación, una exploración de la matriz que incluye los coeficientes de transformada cuantificados. De forma alternativa, la unidad de codificación entrópica 56 puede realizar la exploración.
Después de la cuantificación, la unidad de codificación entrópica 56 codifica por entropía los coeficientes de transformada cuantificados. Por ejemplo, la unidad de codificación entrópica 56 puede realizar la codificación de longitud variable adaptativa al contexto (CAVLC), la codificación aritmética binaria adaptativa al contexto (CABAC), la codificación aritmética binaria adaptativa al contexto basada en sintaxis (SBAC), la codificación entrópica por división en intervalos de probabilidad (PIPE) u otra técnica de codificación entrópica. En el caso de la codificación entrópica basada en contexto, el contexto se puede basar en bloques vecinos. Después de la codificación entrópica por la unidad de codificación entrópica 56, el flujo de bits codificado se puede transmitir a otro dispositivo (por ejemplo, el descodificador de vídeo 30) o archivar para su posterior transmisión o recuperación.
La unidad de cuantificación inversa 58 y la unidad de transformada inversa 60 aplican la cuantificación inversa y la transformación inversa, respectivamente, para reconstruir el bloque residual en el dominio de píxel, por ejemplo, para su uso posterior como bloque de referencia. La unidad de compensación de movimiento 44 puede calcular un bloque de referencia añadiendo el bloque residual a un bloque predictivo de una de las tramas de la memoria de imágenes 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 residual reconstruido para calcular valores de píxeles fraccionarios, 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 de compensación de movimiento 44, para producir un bloque de vídeo reconstruido para su almacenamiento en la memoria de imágenes de referencia 64. El bloque de vídeo reconstruido se puede usar 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 una trama de vídeo posterior.
La FIG. 3 es un diagrama de bloques que ilustra un ejemplo de descodificador de vídeo 30 que puede implementar técnicas para derivar información de movimiento, realizar divisiones de bloques y/o interpolar datos de vídeo. En el ejemplo de la FIG. 3, el descodificador de vídeo 30 incluye la memoria de datos de vídeo 68, una unidad de descodificación entrópica 70, la unidad de compensación de movimiento 72, la unidad de intrapredicción 74, la unidad de cuantificación inversa 76, la unidad de transformación inversa 78, la memoria de imágenes de referencia 82 y el sumador 80. En algunos ejemplos, el descodificador de vídeo 30 puede realizar un pase de descodificación, en general, recíproco al pase de codificación descrito con respecto al codificador de vídeo 20 (FIG. 2). La unidad de compensación de movimiento 72 puede generar datos de predicción en base a vectores de movimiento recibidos desde la unidad de descodificación entrópica 70, mientras que la unidad de intrapredicción 74 puede generar datos de predicción en base a indicadores de modo de intrapredicción recibidos desde la unidad de descodificación entrópica 70.
Durante el proceso de descodificación, el descodificador de vídeo 30 recibe un flujo de bits de vídeo codificado que representa bloques de vídeo de un fragmento de vídeo codificado y elementos de sintaxis asociados desde el codificador de vídeo 20. Los datos de vídeo almacenados en la memoria de datos de vídeo 68 se pueden obtener, por ejemplo, de un medio legible por ordenador, por ejemplo, de una fuente de vídeo local, tal como una cámara, por medio de comunicación de datos de vídeo por red alámbrica o inalámbrica, o accediendo a medios físicos de almacenamiento de datos. La memoria de datos de vídeo 68 puede formar una memoria intermedia de imágenes codificadas (CPB) que almacena datos de vídeo codificados a partir de un flujo de bits de vídeo codificado.
La memoria de imágenes de referencia 82 se puede denominar DPB que almacena datos de vídeo de referencia para su uso en la descodificación de datos de vídeo por el descodificador de vídeo 30, por ejemplo, en modos de intracodificación o intercodificación. La memoria de datos de vídeo 68 y la memoria de imágenes de referencia 82 se pueden formar por cualquiera de una variedad de dispositivos de memoria, tales como memoria dinámica de acceso aleatorio (DRAM), incluyendo DRAM síncrona (SDRAM), RAM magnetorresistiva (MRAM), RAM resistiva (RRAM) u otros tipos de dispositivos de memoria. La memoria de datos de vídeo 68 y la memoria de imágenes de referencia 82 se pueden proporcionar por el mismo dispositivo de memoria o por dispositivos de memoria separados. En diversos ejemplos, la memoria de datos de vídeo 68 puede estar en un chip con otros componentes del descodificador de vídeo 30, o fuera del chip en relación con esos componentes.
La unidad de descodificación entrópica 70 del descodificador de vídeo 30 descodifica por entropía el flujo de bits para generar coeficientes cuantificados, vectores de movimiento o indicadores de modo de intrapredicción y otros elementos de sintaxis. La unidad de descodificación entrópica 70 reenvía los vectores de movimiento y otros elementos de sintaxis a la unidad de compensación de movimiento 72. El descodificador de vídeo 30 puede recibir los elementos de sintaxis a nivel de fragmento de vídeo y/o a nivel de bloque de vídeo.
Cuando el fragmento de vídeo se codifica como un fragmento intracodificado (I), la unidad de intrapredicción 74 puede generar datos de predicción para un bloque de vídeo del fragmento de vídeo actual en base a un modo de intrapredicción señalizado y datos de bloques previamente descodificados de la trama o imagen actual. Cuando la trama de vídeo se codifica como un fragmento intercodificado (es decir, B, P o GPB), la unidad de compensación de movimiento 72 produce bloques predictivos para un bloque de vídeo del fragmento de vídeo actual en base a los vectores de movimiento y en otros elementos de sintaxis recibidos desde la unidad de descodificación entrópica 70. Los bloques predictivos se pueden producir a partir de una de las imágenes de referencia dentro de una de las listas de imágenes de referencia. El descodificador de vídeo 30 puede construir las listas de tramas de referencia, lista 0 y lista 1, usando técnicas de construcción por defecto en base a imágenes de referencia almacenadas en la memoria de imágenes de referencia 82.
La unidad de compensación de movimiento 72 determina información de predicción para un bloque de vídeo del fragmento de vídeo actual analizando los vectores de movimiento y otros elementos de sintaxis, y usa la información de predicción para producir los bloques predictivos para el bloque de vídeo actual que se esté descodificando. Por ejemplo, la unidad de compensación de movimiento 72 usa algunos de los elementos de sintaxis recibidos para determinar un modo de predicción (por ejemplo, de intrapredicción o interpredicción) usado para codificar los bloques de vídeo del fragmento de vídeo, un tipo de fragmento de interpredicción (por ejemplo, un fragmento B, un fragmento P o un fragmento GPB), información de construcción para una o más de las listas de imágenes de referencia para el fragmento, vectores de movimiento para cada bloque de vídeo intercodificado del fragmento, un estado de interpredicción para cada bloque de vídeo intercodificado del fragmento y otra información para descodificar los bloques de vídeo del fragmento de vídeo actual.
La unidad de compensación de movimiento 72 también puede realizar interpolación en base a filtros de interpolación. La unidad de compensación de movimiento 72 puede usar filtros de interpolación como los usados por el codificador de vídeo 20 durante la codificación de los bloques de vídeo para calcular valores interpolados para píxeles fraccionarios de bloques de referencia. En este caso, la unidad de compensación de movimiento 72 puede determinar los filtros de interpolación usados por el codificador de vídeo 20 a partir de los elementos de sintaxis recibidos y usar los filtros de interpolación para producir bloques predictivos.
De acuerdo con aspectos de la presente divulgación, el descodificador de vídeo 30 se puede configurar para realizar cualquier combinación de las técnicas descritas en el presente documento para derivar información de movimiento, realizar divisiones de bloques y/o interpolar datos de vídeo. En particular, determinadas técnicas de la presente divulgación se pueden realizar por la unidad de derivación 75. Por ejemplo, de acuerdo con los aspectos de la presente divulgación, la unidad de derivación 75 se puede configurar para determinar la información de movimiento para un bloque actual y sin decodificar la información de movimiento de un flujo de bits codificado.
En algunos casos, la unidad de derivación 75 puede determinar si se realiza la derivación de movimiento para un bloque particular (por ejemplo, frente a la intrapredicción o la interpredicción tradicional). Por ejemplo, el descodificador de vídeo 30 puede descodificar uno o más elementos de sintaxis que indican que se deriva (en lugar de señalizarse) la información de movimiento para un bloque que se está descodificando. El descodificador de vídeo 30 también puede descodificar uno o más elementos de sintaxis que indican un modo de derivación de información de movimiento a partir de una pluralidad de modos de derivación de información de movimiento que se van a usar para descodificar un bloque. La unidad de derivación 75 puede determinar si se realiza la derivación de movimiento y el modo de derivación de información de movimiento para un bloque en base a la sintaxis descodificada. En algunos ejemplos, como se describe en el presente documento, la sintaxis se puede asociar con uno o más de otros modos, tal como el modo de fusión, AMVp u otras funciones de descodificación.
De acuerdo con otros aspectos de la presente divulgación, la unidad de derivación 75 puede interpolar datos de vídeo que no están incluidos en el flujo de bits codificado para una secuencia de vídeo. Por ejemplo, la unidad de derivación 75 puede realizar cualquier combinación de técnicas de derivación de movimiento para interpolar una imagen que no está incluida en el flujo de bits analizado, por ejemplo, similar a la conversión ascendente de velocidad de tramas. En algunos casos, el descodificador de vídeo 30 puede usar la imagen interpolada durante la codificación. Por ejemplo, la unidad de derivación 75 puede interpolar una imagen y el descodificador de vídeo 30 puede descodificar datos para una imagen actual en relación con la imagen interpolada. En este ejemplo, el descodificador de vídeo 30 puede añadir la imagen interpolada a la memoria de imágenes de referencia 82 y descodificar los datos de otras imágenes en base a al menos una parte de la imagen interpolada.
En otros ejemplos, la unidad de derivación 75 puede interpolar una imagen y el descodificador de vídeo 30 puede establecer la imagen interpolada igual a la imagen actual. Por ejemplo, la unidad de derivación 75 puede interpolar la imagen actual y el descodificador de vídeo 30 puede descodificar elementos de sintaxis para la imagen actual a partir del flujo de bits codificado (por ejemplo, datos de cabecera de fragmento y similares), pero puede omitir la descodificación de datos de vídeo para la imagen actual y en su lugar interpolar la imagen actual.
Si bien la unidad de derivación 75 se puede configurar para realizar determinadas técnicas de interpolación, como se describe en el presente documento, se debe entender que una o más de otras unidades del descodificador de vídeo 30 también o de forma alternativa se pueden configurar para interpolar datos. Por ejemplo, el descodificador de vídeo 30 puede incluir una variedad de otros interpoladores o filtros, por ejemplo, para interpolar un píxel en una ubicación de subpíxel (subpíxel) durante la compensación de movimiento.
La unidad de cuantificación inversa 76 cuantifica de forma inversa, es decir, descuantifica, los coeficientes de transformada cuantificados proporcionados en el flujo de bits y descodificados por la unidad de descodificación entrópica 70. El procedimiento de cuantificación inversa puede incluir el uso de un parámetro de cuantificación QPy , calculado por el descodificador de vídeo 30 para cada bloque de vídeo en el fragmento de vídeo para determinar un grado de cuantificación y, asimismo, un grado de cuantificación inversa que se debe aplicar.
La unidad de transformada inversa 78 aplica una transformada inversa, por ejemplo, una DCT inversa, una transformada de enteros inversa o un procedimiento de transformada inversa conceptualmente similar, a los coeficientes de transformada para producir bloques residuales en el dominio de píxel.
Después de que la unidad de compensación de movimiento 72 genera el bloque predictivo para el bloque de vídeo actual en base a los vectores de movimiento y otros elementos de sintaxis, el descodificador de vídeo 30 forma un bloque de vídeo descodificado sumando los bloques residuales de la unidad de transformada inversa 78 a los bloques predictivos correspondientes generados por la unidad de compensación de movimiento 72. El sumador 80 representa el componente o los componentes que realizan esta operación de suma. Si se desea, también se puede aplicar un filtro de eliminación de bloques para filtrar los bloques descodificados para eliminar distorsiones de efecto pixelado. También se pueden usar otros filtros de bucle (en el bucle de codificación o bien después del bucle de codificación) para suavizar las transiciones de píxeles o mejorar de otro modo la calidad de vídeo. Los bloques de vídeo descodificados en una trama o imagen dada se almacenan a continuación en la memoria de imágenes de referencia 82, que almacena imágenes de referencia usadas para la compensación de movimiento posterior. La memoria de imágenes de referencia 82 también almacena vídeo descodificado para su presentación posterior en un dispositivo de visualización, tal como el dispositivo de visualización 32 de la FIG. 1.
Las FIGS. 4A y 4B son diagramas conceptuales que ilustran candidatos vecinos espaciales en HEVC. En algunos ejemplos, el codificador de vídeo 20 y/o el descodificador de vídeo 30 pueden derivar candidatos de vector de movimiento (MV) espacial a partir del bloque vecino 0, el bloque vecino 1, el bloque vecino 2, el bloque vecino 3 o el bloque vecino 4 para PU0.
En algunos casos, las técnicas para generar los candidatos de MV a partir de los bloques difieren para los modos de fusión y AMVP. La FIG. 4A ilustra un ejemplo para el modo de fusión. Por ejemplo, en HEVC, un codificador de vídeo (por ejemplo, tal como el codificador de vídeo 20 y/o el descodificador de vídeo 30 de las FIGS. 1-3) puede derivar hasta cuatro candidatos de MV espaciales. Los candidatos se pueden incluir en una lista de candidatos que tiene un orden particular. En un ejemplo, el orden para el ejemplo de la FIG. 4A puede ser el bloque vecino 0 (A1), el bloque vecino 1 (B1), el bloque vecino 2 (B0), el bloque vecino 3 (A0) y el bloque vecino 4 (B2).
La FIG. 4B ilustra un ejemplo para el modo AMVP. Por ejemplo, en HEVC, el codificador de vídeo puede dividir los bloques vecinos en dos grupos: el grupo izquierdo que incluye el bloque vecino 0 y el bloque vecino 1, y el grupo superior que incluye el bloque vecino 2, el bloque vecino 3 y el bloque vecino 4. Para cada grupo, el candidato de vector de movimiento potencial asociado con un bloque vecino que se refiere a la misma imagen de referencia que la indicada por el índice de referencia señalizado (para el bloque que se está codificando actualmente) puede tener la prioridad más alta para elegirse para formar un candidato final del grupo. Es posible que ninguno de los bloques vecinos contenga un vector de movimiento que apunte a la misma imagen de referencia. Por lo tanto, si no se puede encontrar dicho candidato, el codificador de vídeo puede ajustar a escala el primer candidato disponible para formar el candidato final, por tanto se pueden compensar las diferencias de distancia temporales.
De acuerdo con aspectos de la presente divulgación, los candidatos de vector de movimiento, tales como los vectores de movimiento asociados con los bloques vecinos mostrados en las FIGS. 4A y 4B se pueden usar para derivar un vector de movimiento para un bloque. Por ejemplo, el codificador de vídeo puede generar una lista de candidatos que incluye candidatos de vector de movimiento de los bloques vecinos mostrados en las FIGS. 4A y 4B. En este ejemplo, el codificador de vídeo puede usar uno o más de los candidatos de la lista de candidatos como vector de movimiento inicial en un proceso de derivación de información de movimiento (por ejemplo, coincidencia bilateral, coincidencia de plantillas o similar). El codificador de vídeo puede aplicar uno o más de los candidatos de vector de movimiento en una búsqueda de movimiento de un proceso de derivación de vector de movimiento para identificar datos de referencia. El codificador de vídeo puede seleccionar el candidato a partir de la lista que identifica datos de referencia que coinciden de forma estrecha (por ejemplo, como se describe con respecto a las FIGS. 8-9 a continuación). Por ejemplo, el codificador de vídeo puede realizar una búsqueda de movimiento para un primer conjunto de datos de referencia que corresponde a un segundo conjunto de datos de referencia fuera del bloque actual. El codificador de vídeo puede, en algunos casos, refinar además el candidato, por ejemplo, realizando una búsqueda de movimiento adicional en un área indicada por el candidato seleccionado, para determinar un vector de movimiento derivado usando el proceso de derivación de información de movimiento.
Las FIGS. 5A y 5B son diagramas conceptuales que ilustran la predicción de vector de movimiento temporal en HEVC. Un candidato de predictor de vector de movimiento temporal (TMVP), si está habilitado y disponible, se añade a una lista de candidatos de MV después de los candidatos de vector de movimiento espaciales. En HEVC, el proceso de derivación de vector de movimiento para un candidato de TMVP es el mismo tanto para los modos de fusión como AMVP, sin embargo, el índice de referencia objetivo para el candidato de TMVP en el modo de fusión se establece típicamente en cero.
La FIG. 5A ilustra una ubicación de bloque principal (mostrado como bloque "T") para un candidato de TMVP, que es el bloque inferior derecho fuera de la PU coubicada. La ubicación puede compensar el sesgo de los bloques superiores e izquierdos usados para generar candidatos vecinos espaciales. Sin embargo, si el bloque T está ubicado fuera de la fila de CTB actual o la información de movimiento no está disponible, el bloque se sustituye por un bloque central de la PU, como se ilustra por las flechas discontinuas del bloque T en la FIG. 5A.
La figura 5B ilustra la derivación de un candidato de TMVP 84 para un bloque actual 86 de una imagen actual 88 a partir de una PU coubicada 90 de una imagen coubicada 92, como se indica en el nivel de fragmento (por ejemplo, en una cabecera de fragmento). De manera similar al modo temporal directo en AVC, un vector de movimiento del candidato de TMVP puede estar sujeto a escalado de vector de movimiento, que se realiza para compensar las diferencias de distancia, por ejemplo, distancias temporales entre imágenes. Con respecto al escalado de vector de movimiento, se puede configurar un codificador de vídeo (tal como un codificador de vídeo 20 y/o un descodificador de vídeo 30) para determinar inicialmente que el valor de los vectores de movimiento es proporcional a la distancia de las imágenes en el tiempo de presentación. Un vector de movimiento asocia dos imágenes, la imagen de referencia y la imagen que contiene el vector de movimiento (a saber, la imagen contenedora). Cuando se utiliza un vector de movimiento para predecir el otro vector de movimiento, la distancia de la imagen contenedora y la imagen de referencia se calcula en base a los valores de recuento de orden de imágenes (POC).
Para predecir un vector de movimiento, tanto la imagen contenedora asociada para el vector de movimiento como una imagen de referencia del vector de movimiento pueden ser diferentes. Por lo tanto, el codificador de vídeo puede calcular una nueva distancia en base a los valores de POC, y el codificador de vídeo puede ajustar a escala el vector de movimiento en base a estas dos distancias de POC. Para un candidato vecino espacial, las imágenes contenedoras para los dos vectores de movimiento son las mismas, mientras que las imágenes de referencia son diferentes. En HEVC, el ajuste a escala del vector de movimiento se aplica tanto a TMVP como a AMVP para candidatos vecinos espaciales y temporales.
En algunos ejemplos, se puede configurar un codificador de vídeo para determinar uno o más candidatos de vector de movimiento artificiales. Por ejemplo, si una lista de candidatos de vector de movimiento no está completa, el codificador de vídeo puede generar candidatos de vector de movimiento artificiales e insertar los candidatos de vector de movimiento artificiales al final de la lista hasta que la lista incluye un número predeterminado de entradas. En el modo de fusión, existen dos tipos de candidatos de MV artificiales, incluyendo un candidato combinado derivado solo para fragmentos B y un candidato cero. En algunos casos, el candidato cero se usa solo para AMVP si el tipo combinado no proporciona suficientes candidatos artificiales.
Para cada par de candidatos que ya están en la lista de candidatos y tienen la información de movimiento necesaria, los candidatos de vector de movimiento combinados bidireccionales se derivan por una combinación del vector de movimiento del primer candidato que se refiere a una imagen en la lista 0 y el vector de movimiento de un segundo candidato que se refiere a una imagen en la lista 1.
De acuerdo con aspectos de la presente divulgación, los candidatos de vector de movimiento, tales como el TMVP mostrado en las FIGs .5A y 5B, se pueden usar para derivar un vector de movimiento para un bloque. Por ejemplo, el codificador de vídeo puede generar una lista de candidatos que incluye un TMVP determinado de acuerdo con el proceso descrito anteriormente. En este ejemplo, el codificador de vídeo puede usar el TMVP como vector de movimiento inicial en un proceso de derivación de información de movimiento (por ejemplo, coincidencia bilateral, coincidencia de plantillas o similares). El codificador de vídeo puede aplicar el TMVP en un proceso de derivación de vector de movimiento para identificar los datos de referencia. El codificador de vídeo puede seleccionar el TMVP en casos en los que el TMVP identifica datos de referencia que coinciden de forma estrecha (por ejemplo, como se describe con respecto a las FIGS. 8-9 a continuación). El codificador de vídeo puede, en algunos casos, refinar además el TMVP para determinar un vector de movimiento derivado usando el proceso de derivación de información de movimiento.
En algunos ejemplos, el codificador de vídeo puede recortar una lista de candidatos que incluye candidatos de vector de movimiento (tales como los descritos con respecto a las FIGS. 4A-5B). Por ejemplo, en algunos casos, es posible que los candidatos de diferentes bloques sean los mismos, lo que disminuye la eficacia de una lista de candidatos de fusión/AMVP. El código de vídeo puede aplicar un proceso de recorte para resolver este problema. El codificador de vídeo puede comparar un candidato con los otros en la lista de candidatos actual para evitar insertar un candidato idéntico. Para reducir la complejidad, el codificador de vídeo puede aplicar solo números limitados de procesos de recorte en lugar de comparar cada uno potencial con todos los demás existentes.
La FIG. 6 es un diagrama conceptual que ilustra un ejemplo de estimación de movimiento (ME) unilateral en conversión ascendente de velocidad de tramas (FRUC). En particular, la FIG. 6 ilustra una trama actual 100, una trama de referencia 102 y una trama interpolada 104. En algunos casos, un descodificador de vídeo o un dispositivo de posprocesamiento pueden interpolar imágenes en base a una o más imágenes de referencia. El descodificador de vídeo o el dispositivo de posprocesamiento pueden interpolar imágenes para convertir de forma ascendente una velocidad de trama original de un flujo de bits codificado. De forma alternativa, el descodificador de vídeo o el dispositivo de posprocesamiento pueden interpolar imágenes para insertar una o más imágenes que se omitieron por un codificador de vídeo para codificar una secuencia de vídeo a una velocidad de trama reducida. En cualquier caso, el descodificador de vídeo o el dispositivo de posprocesamiento interpola las tramas (tales como la trama interpolada 104) que no están incluidas en un flujo de bits codificado que se ha recibido por el descodificador de vídeo usando imágenes que se han decodificado (tales como la trama actual 100 y la trama de referencia 102). El descodificador de vídeo o el dispositivo de posprocesamiento puede interpolar las imágenes usando cualquiera de una serie de técnicas de interpolación, por ejemplo, usando interpolación de tramas compensadas por movimiento, repetición de tramas o promediado de tramas.
Las técnicas de interpolación de tramas mencionadas anteriormente se implementan típicamente después del bucle. Por ejemplo, un descodificador de vídeo típicamente recibe y descodifica un flujo de bits codificado para generar una representación reconstruida de una secuencia de vídeo que incluye la trama actual 100 y la trama de referencia 102. Después del bucle de descodificación, el descodificador de vídeo u otro dispositivo de posprocesamiento puede interpolar imágenes que se van a incluir con la representación reconstruida, incluyendo la trama interpolada 104. En algunos casos, el proceso de interpolación de imágenes se puede denominar conversión ascendente de velocidad de tramas (FRUC), porque la secuencia de imágenes resultante incluye imágenes adicionales (interpoladas) que no se incluyeron en el flujo de bits codificado.
En consecuencia, la tecnología FRUC se puede usar para generar vídeos de alta velocidad de tramas en base a vídeos de baja velocidad de tramas. Se ha usado FRUC en la industria de visualización. Los ejemplos incluyen H. Liu, R. Xiong, D. Zhao, S. Ma, W. Gao, "Multiple Hypotheses Bayesian Frame Rate Up-Conversion by Adaptive Fusion of Motion-Compensated Interpolations", transacciones del IEEE sobre circuitos y sistemas para tecnología de vídeo, vol. 22, n.° 8, agosto de 2012; W. H. Lee, K. Choi, J. B. Ra, "Frame rate up conversion based on variational image fusion", transacciones del IEEE sobre procesamiento de imágenes, vol. 23, n.° 1, enero de 2014; y U. S. Kim, M. H. Sunwoo, "New frame rate up-conversion algorithms with low computational complexity", transacciones del IEEE sobre circuitos y sistemas para tecnología de vídeo, vol. 24, n.° 3, marzo de 2014.
Los algoritmos de FRUC se pueden dividir en dos tipos. Un tipo de procedimientos interpola tramas intermedias por repetición o promediado de tramas sencillo. Sin embargo, este procedimiento proporciona resultados incorrectos en una imagen que contiene mucho movimiento. El otro tipo de procedimiento, llamado FRUC compensada por movimiento (MC-FRUC), considera el movimiento del objeto cuando genera tramas intermedias y consiste en dos etapas: estimación de movimiento (ME) e interpolación compensada por movimiento (MCI). La ME genera vectores de movimiento (MV), que representan el movimiento del objeto usando vectores, mientras que la MCI usa los MV para generar tramas intermedias.
El algoritmo de coincidencia de bloques (BMA) se usa ampliamente para ME en MC-FRUC ya que es sencillo de implementar. El BMA divide una imagen en bloques y detecta el movimiento de esos bloques, por ejemplo, para determinar si los bloques se corresponden. Dos tipos de ME se usan principalmente para BMA: ME unilateral y ME bilateral
Como se muestra en la FIG. 6, la ME unilateral obtiene los MV buscando el mejor bloque coincidente a partir de la trama de referencia 102 de la trama actual 100. A continuación, se puede ubicar el bloque en la trayectoria de movimiento en la trama interpolada de modo que se logre el MV. Como se muestra en la FIG. 6, tres bloques que incluyen 106A, 106B y 106C de la trama actual 100, la trama de referencia 102 y la trama interpolada 104, respectivamente, están implicados después de la trayectoria de movimiento. Aunque el bloque 106A en la trama actual 100 pertenece a un bloque codificado, es posible que el mejor bloque coincidente 106B en la trama de referencia 102 no pertenezca por completo a un bloque codificado, y tampoco lo haga el bloque 106C en la trama interpolada 104. En consecuencia, se pueden producir regiones superpuestas de los bloques y regiones sin rellenar (huecos) en la trama interpolada.
Para gestionar las superposiciones, los algoritmos de FRUC sencilla simplemente implican promediar y sobrescribir los píxeles superpuestos. Además, los huecos se cubren por los valores de píxeles de una trama de referencia o una actual. Sin embargo, estos algoritmos dan como resultado distorsiones de efecto pixelado y desenfoque. De ahí que se proponen la segmentación de campo de movimiento, la extrapolación sucesiva usando la transformada discreta de Hartley y la restauración de imagen para gestionar los huecos y superposiciones sin incrementar las distorsiones de efecto pixelado y el desenfoque.
De acuerdo con aspectos de la presente divulgación, un codificador de vídeo (tal como un codificador de vídeo 20 y/o un descodificador de vídeo 30) puede generar una trama interpolada 104 en el bucle de codificación o descodificación usando la técnica de coincidencia unilateral mostrada en la FIG. 6. Por ejemplo, el codificador de vídeo puede usar FRUC a nivel de imagen para interpolar la trama interpolada 104 como predictor de la imagen actual, usando la matriz de píxeles reconstruida. En algunos ejemplos, una imagen interpolada de este tipo se puede considerar como una imagen de referencia o la reconstrucción de la trama actual 100. En otros ejemplos, el codificador de vídeo puede establecer la imagen actual igual a la imagen interpolada. Una imagen de este tipo se puede marcar como una imagen desechable y/o una imagen no de referencia por elementos de sintaxis o procesos de descodificación.
En algunos ejemplos, el codificador de vídeo puede interpolar una imagen actual de modo que un modo FRUC sea el único modo permitido, donde el modo FRUC indica la técnica de coincidencia unilateral mostrada en la FIG. 6 o cualquier otra técnica de interpolación o derivación de información de movimiento descrita en el presente documento. De ahí que en lugar de una señalización de estructura de CU basada en árbol cuaternario, todos los bloques pueden tener el mismo tamaño predefinido o señalizado. En algunos casos, solo se puede permitir un subconjunto de modos de codificación de CU válidos, tales como salto normal, fusión normal, modo FRUc y modo intra. De forma alternativa o adicional, se puede permitir un modo de llenado de huecos para FRUC en una imagen o fragmento de este tipo.
De acuerdo con aspectos de la presente divulgación, se puede introducir un mensaje SEI para indicar qué imágenes o subsecuencia de imágenes están codificadas por FRUC a nivel de imagen. Dichas imágenes se pueden desechar sin afectar la calidad de las otras imágenes. Un mensaje SEI de este tipo puede indicar (o indicar adicionalmente) qué nivel(es) temporal(es) contiene(n) imágenes codificadas con FRUC, o contiene(n) solo imágenes codificadas con FRUC. Dicha información en el mensaje SEI también puede estar presente en otros lugares de la sintaxis de alto nivel, tales como PPS, SPS y VPS.
En algunos ejemplos, un codificador de vídeo puede codificar una parte de una imagen e interpolar los datos de vídeo restantes. Por ejemplo, el codificador de vídeo puede codificar una denominada "sugerencia" para la conversión ascendente de velocidad de tramas de lado de descodificador, que puede permitir que los descodificadores inteligentes o ricos en recursos generen opcionalmente las tramas con FRUC. Por ejemplo, varias regiones clave (tales como las regiones rectangulares) se pueden señalizar como una sugerencia para dichas tramas con FRUC. Cuando se recibe la sugerencia y opcionalmente se procesa, el procedimiento de FRUC especificado como parte del descodificador se puede usar en primer lugar para las regiones que no son regiones clave, mientras que las regiones clave se deben procesar además por los medios que es posible que no se especifiquen por el descodificador, tales como los procedimientos de llenado de huecos.
Con respecto al llenado de huecos, de acuerdo con aspectos de la presente divulgación, un codificador de vídeo puede implementar técnicas de llenado de huecos basadas en bloques. Por ejemplo, una técnica de llenado de huecos es usar interbloques vecinos espacialmente para predecir el intrabloque actual en la misma CTU. Por ejemplo, el codificador de vídeo puede codificar/descodificar una CTU dos veces. La primera codificación/descodificación es como habitualmente. En la segunda ronda, solo se codifican/descodifican y se sobrescriben los intrabloques. Para un intrabloque, todos sus interbloques vecinos espacialmente en la misma CTU, incluyendo aquellos en la parte inferior derecha del bloque actual, se marcan como disponibles para la intrapredicción. El procedimiento de llenado de huecos también puede ser a nivel de fragmento, mosaico, imagen, otro en cualquier otro nivel. Otro procedimiento de llenado de huecos puede usar una técnica de restauración de imagen. También se pueden aplicar otras técnicas de llenado de huecos.
La FIG. 7 es un diagrama conceptual que ilustra un ejemplo de estimación de movimiento (ME) bilateral en FRUC. En particular, la FIG. 7 ilustra un bloque interpolado 108 de una trama interpolada 110 que se interpola a partir de un bloque actual 112 de una trama actual 114 y un bloque de referencia 116 de una trama de referencia 118. Como se muestra en la FIG. 7, la ME bilateral es otra solución (en MC-FRUC) que se puede usar para evitar los problemas provocados por superposiciones y huecos mostrados en la FIG. 6. La ME bilateral obtiene los MV que pasan a través del bloque interpolado 108 usando la simetría temporal entre los bloques 112 y 116 de la trama actual 114 y la trama de referencia 118, respectivamente. Como resultado, no genera superposiciones ni huecos. Puesto que se supone que el bloque actual es un bloque que se está procesando, en un orden determinado, por ejemplo, como en el caso de la codificación de vídeo, una secuencia de dichos bloques cubriría la imagen intermedia completa sin solapamiento. Por ejemplo, en el caso de la codificación de vídeo, los bloques se pueden procesar en el orden de descodificación.
De acuerdo con aspectos de la presente divulgación, se puede aprovechar la estimación de movimiento bilateral mostrada en el ejemplo de la FIG. 7 para derivar información de movimiento. Por ejemplo, como se describe con más detalle con respecto a la FIG. 9 a continuación, un codificador de vídeo (tal como un codificador de vídeo 20 o un descodificador de vídeo 30) puede aplicar coincidencia bilateral como un modo de derivación de información de movimiento para derivar información de movimiento durante la codificación. En la coincidencia bilateral, el codificador de vídeo puede realizar una búsqueda de movimiento para un primer conjunto de datos de referencia en una primera imagen de referencia que corresponde a un segundo conjunto de datos de referencia en una segunda imagen de referencia.
De acuerdo con otros aspectos de la presente divulgación, un codificador de vídeo (tal como un codificador de vídeo 20 y/o un descodificador de vídeo 30) puede generar la trama interpolada en el bucle de codificación o descodificación usando la técnica de coincidencia bilateral mostrada en la FIG. 7. Por ejemplo, el codificador de vídeo puede usar FRUC a nivel de imagen para interpolar la imagen interpolada como un predictor de la imagen actual, usando la matriz de píxeles reconstruida. En algunos ejemplos, una imagen interpolada de este tipo se puede considerar como una imagen de referencia o la reconstrucción de la imagen actual. En otros ejemplos, el codificador de vídeo puede establecer la imagen actual igual a la imagen interpolada. Una imagen de este tipo se puede marcar como una imagen desechable y/o una imagen no de referencia por elementos de sintaxis o procesos de descodificación.
La FIG. 8 es un diagrama conceptual que ilustra un ejemplo de derivación de vector de movimiento de lado de descodificador (DMVD) basado en coincidencia de plantillas. Con los códecs de vídeo avanzados, el porcentaje de bits de la información de movimiento en el flujo de bits aumenta cada vez más. En algunos casos, la DMVD puede reducir el coste de bits de la información de movimiento. La DMVD basada en coincidencia de plantillas puede presentar una mejora en la eficacia de codificación, como se describe, por ejemplo, en S. Kamp, M. Wien, "Decoder-side motion vector derivation for block-based video coding", transacciones del IEEE sobre circuitos y sistemas para tecnología de vídeo, vol. 22, n.° 12, diciembre de 2012.
En el ejemplo de la FIG. 8, una imagen actual 120 incluye un objetivo de predicción 122 (por ejemplo, un bloque que se está codificando actualmente) y una plantilla 124. Las imágenes de referencia 126 incluyen una plantilla coubicada 128, la mejor coincidencia 130 y un vector de desplazamiento 132. Un codificador de vídeo (tal como un codificador de vídeo 20 y/o un descodificador de vídeo 30) puede usar la plantilla 124 para buscar la mejor coincidencia para el objetivo de predicción 122 (por ejemplo, en lugar de usar el propio objetivo de predicción 122, que aún no se ha codificado). Por ejemplo, el codificador de vídeo puede realizar una búsqueda de movimiento para identificar un primer conjunto de datos de referencia (por ejemplo, la mejor coincidencia 130) que corresponde a un segundo conjunto de datos de referencia fuera del objetivo de predicción 122 (por ejemplo, la plantilla 124). Como se indica anteriormente, la correspondencia se puede determinar en base a una cantidad de similitud entre los datos de referencia, y se puede denominar en el presente documento como determinación de una "coincidencia" o de "la mejor coincidencia".
En el ejemplo mostrado, el codificador de vídeo puede identificar la plantilla coubicada 128 en las imágenes de referencia 126. A continuación, el codificador de vídeo puede buscar la mejor coincidencia 130, que incluye valores de píxeles que son similares a la plantilla 124. El codificador de vídeo puede determinar el vector de desplazamiento 132 en base al desplazamiento de la plantilla coubicada 128 y la mejor coincidencia 130 en las imágenes de referencia 126.
Suponiendo que la plantilla 124 y el objetivo de predicción 122 provienen del mismo objeto, se puede usar el vector de movimiento de la plantilla como vector de movimiento del objetivo de predicción. De ahí que en el ejemplo de la FIG. 8, el codificador de vídeo puede aplicar el vector de desplazamiento 132 al objetivo de predicción 122. Puesto que la coincidencia de plantillas se lleva a cabo tanto en un codificador de vídeo como en un descodificador de vídeo, el vector de movimiento se puede derivar en el lado de descodificador para evitar el coste de señalización.
De acuerdo con aspectos de la presente divulgación, el codificador de vídeo puede aplicar la coincidencia de plantillas como un modo de derivación de información de movimiento. Por ejemplo, el codificador de vídeo puede aplicar la coincidencia de plantillas para derivar información de movimiento de un bloque actual ubicando la mejor coincidencia entre la plantilla 124 de la imagen actual y los datos de referencia correspondientes en las imágenes de referencia 126. Si bien el ejemplo de la FIG. 8 ilustra la plantilla 124 como un bloque de datos de vídeo en forma de L, se debe entender que se pueden usar otras plantillas. Por ejemplo, el codificador de vídeo puede usar múltiples bloques como plantilla, por ejemplo, uno o más bloques situados a la izquierda del objetivo de predicción 122 y uno o más bloques situados por encima del objetivo de predicción 122.
De acuerdo con aspectos de la presente divulgación, el codificador de vídeo puede aplicar las técnicas de coincidencia de plantillas mostradas en la FIG. 8 usando uno o más vectores de movimiento de una lista de candidatos de vectores de movimiento. Por ejemplo, el codificador de vídeo se puede configurar para determinar uno o más vectores de movimiento candidatos usando cualquier combinación de técnicas descritas en el presente documento (por ejemplo, candidatos de modo de fusión, candidatos de AMVP, un TMVP o similares). A continuación, el codificador de vídeo se puede configurar para aplicar uno o más de los vectores de movimiento candidatos a la plantilla 124 para ubicar la plantilla coubicada 128 (en este ejemplo, la ubicación de la plantilla coubicada 128 viene dictada por el uno o más vectores de movimiento candidatos y no necesariamente coubicada estrictamente). El codificador de vídeo se puede configurar para determinar de los vectores de movimiento candidatos el que da como resultado la mejor coincidencia entre la plantilla 124 y la plantilla coubicada 128.
De acuerdo con aspectos de la presente divulgación, el codificador de vídeo se puede configurar para refinar el vector de movimiento candidato para derivar información de movimiento para el objetivo de predicción 122. Por ejemplo, el codificador de vídeo puede buscar la mejor coincidencia para la plantilla 124 en una región de imágenes de referencia 126 identificadas por el vector de movimiento candidato. Tras la determinación de la mejor coincidencia, el codificador de vídeo puede determinar un desplazamiento entre la plantilla 124 y la coincidencia basada determinada. El codificador de vídeo puede designar el desplazamiento como un vector de movimiento derivado para el objetivo de predicción 122.
La FIG. 9 es un diagrama conceptual que ilustra un ejemplo de derivación de vector de movimiento bidireccional en DMVD. Otra categoría de DMVD es la derivación de Mv bidireccional con base especular, como se describe, por ejemplo, en Y.-J. Chiu, L. Xu, W. Zhang, H. Jiang, "Decoder-side Motion Estimation and Wiener filter for HEVC", Comunicaciones visuales y procesamiento de imágenes (VCIP), 2013. El concepto de derivación de vector de movimiento bidireccional en DMVD puede ser similar a la ME bilateral en FRUC. Por ejemplo, la derivación de MV con base especular se puede aplicar por la estimación de movimiento centrosimétrica alrededor de los centros de búsqueda con precisión de muestra fraccionada.
El ejemplo de la FIG. 9 incluye la imagen actual 140 que tiene el bloque actual 142 (el bloque que se está codificando actualmente), un primer vector de movimiento candidato PMV0 que identifica un primer bloque de plantilla 144 de una primera imagen de referencia 146 (L0 ref), y un segundo vector de movimiento candidato PMV1 que identifica un segundo bloque de plantilla 148 de una segunda imagen de referencia 150. El codificador de vídeo puede aplicar dMV como una desviación para ubicar un primer bloque de referencia 152 en la ventana de búsqueda 154 de la primera imagen de referencia 146 y para ubicar un segundo bloque de referencia 156 en la ventana de búsqueda 158 de la segunda imagen de referencia 150.
Por ejemplo, el codificador de vídeo puede añadir dMV a PMV0 y restar dMV de PMV1 para generar un par de MV, MV0 y MV1. El codificador de vídeo puede verificar todos los valores de dMV en el interior de la ventana de búsqueda 154 y 158 para determinar qué valor de dMV da como resultado la mejor coincidencia entre el primer bloque de referencia 152 (por ejemplo, un primer conjunto de datos de referencia) de LO ref y el segundo bloque de referencia 156 (por ejemplo, un segundo conjunto de datos de referencia) de LI ref. En algunos ejemplos, el codificador de vídeo puede determinar la mejor coincidencia en base a la suma de diferencias absolutas (SAD). En otros ejemplos, el codificador de vídeo puede usar otra métrica para determinar la mejor coincidencia. El tamaño y la ubicación de las ventanas de búsqueda 154 y 158 pueden estar predefinidos o se pueden señalizar en un flujo de bits.
El codificador de vídeo puede seleccionar el par de MV con la mínima SAD como salida de la estimación de movimiento centrosimétrica. Puesto que esta técnica usa una referencia futura (referencia en una posición temporal posterior a la trama actual) y una referencia anterior (referencia en una posición temporal anterior a la trama actual) para la coincidencia por sA d , no se puede aplicar a la trama P o a las tramas B de bajo retardo en las que solo está disponible la referencia anterior.
De acuerdo con aspectos de la presente divulgación, el codificador de vídeo puede aplicar las técnicas de derivación de vector de movimiento bidireccional como un modo de derivación de información de movimiento. En algunos ejemplos, el codificador de vídeo puede aplicar las técnicas mostradas en la FIG. 9 usando uno o más vectores de movimiento de una lista de candidatos de vectores de movimiento. Por ejemplo, el codificador de vídeo se puede configurar para determinar uno o más vectores de movimiento candidatos usando cualquier combinación de técnicas descritas en el presente documento (por ejemplo, candidatos de modo de fusión, candidatos de AMVP, un TMVP o similares). A continuación, el codificador de vídeo se puede configurar para aplicar uno o más de los vectores de movimiento candidatos como PMV0 y/o PMV1 para ubicar el primer bloque de plantilla 144 y el segundo bloque de plantilla 148. El codificador de vídeo se puede configurar para determinar de los vectores de movimiento candidatos el que da como resultado la mejor coincidencia entre el primer bloque de plantilla 144 y el segundo bloque de plantilla 148.
De acuerdo con aspectos de la presente divulgación, a continuación el codificador de vídeo se puede configurar para refinar el vector de movimiento candidato para derivar información de movimiento para el bloque actual 142.
Por ejemplo, el codificador de vídeo puede buscar la mejor coincidencia aplicando una variedad de valores de dMV, de la manera descrita anteriormente. De esta forma, el codificador de vídeo puede derivar el par de MV MV0 y MV1.
La FIG. 11 es un diagrama conceptual que ilustra la derivación de vector de movimiento basada en coincidencia bilateral extendida. Un inconveniente potencial de la derivación de MV bidireccional con base especular (por ejemplo, como se muestra en la FIG. 10) es que no funciona cuando dos referencias de la imagen actual son ambas anteriores o ambas posteriores a la imagen actual. Las técnicas de coincidencia bilateral extendida descritas en el presente documento pueden, en algunos casos, superar el inconveniente de que todas las imágenes de referencia de la imagen actual están en el mismo lado (en orden de visualización) que la imagen actual.
El ejemplo de la FIG. 11 incluye una imagen actual 160 que incluye un bloque actual 162, una primera imagen de referencia (Ref0) 164 que incluye un primer bloque de referencia 166 y una segunda imagen de referencia (Refl) 168 que incluye un segundo bloque de referencia 170. Como se muestra en la FIG. 11, la primera imagen de referencia (Ref0) 164 y la segunda imagen de referencia (Refl) 168 están ubicadas ambas antes de la imagen actual en la dirección temporal. Suponiendo que el primer bloque de referencia 166, el segundo bloque de referencia 170 y el bloque actual 162 están a lo largo de la misma trayectoria de movimiento, la proporción entre MV0 y MV1 será igual a la proporción entre la distancia temporal TDO y TD1. En otras palabras, dadas dos referencias Ref0 y Refl con distancia temporal TDO y TD1 con respecto a la imagen actual, para cualquier MV0 en Ref0, se puede determinar MV1 en Refl ajustando a escala MV0.
El codificador de vídeo puede seleccionar el par MV0 y MV1 final como el par que minimiza el coste de coincidencia entre el par de bloques apuntado por MV0 y MV1 (por ejemplo, como se describe anteriormente con respecto a la FIG. 10). Teóricamente, el bloque actual 162 se puede considerar como un bloque extrapolado en base al primer bloque de referencia 166 y el segundo bloque de referencia 170. Cabe destacar que la coincidencia bilateral extendida también funciona en el caso bidireccional habitual en el que la imagen actual está temporalmente entre las dos referencias. En este caso, el bloque actual 162 se puede considerar como un bloque interpolado en base al primer bloque de referencia 166 y el segundo bloque de referencia 170. Además, las técnicas de coincidencia bilateral descritas en el presente documento no requieren una "relación especular" entre MV0 y MV1, incluso en el caso bidireccional. El supuesto de coincidencia bilateral es que la proporción entre MV0 y MV1 es proporcional a la proporción entre la distancia temporal de Ref0 con respecto a la imagen actual y la de Refl con respecto a la imagen actual.
Claramente, para bloques de referencia distintos del primer bloque de referencia 166 y el segundo bloque de referencia 170, el codificador de vídeo puede derivar un par de MV diferente. En un ejemplo, el descodificador de vídeo puede seleccionar imágenes de referencia para realizar una correspondencia bilateral de acuerdo con un orden en el que aparecen las imágenes de referencia en una lista de imágenes de referencia. Por ejemplo, el codificador de vídeo puede seleccionar la primera referencia en la lista de referencias 0 como Ref0 y la primera referencia en la lista de referencias 1 como Refl. A continuación, el codificador de vídeo puede buscar el par de MV (MV0, MV1). En otro ejemplo, el codificador de vídeo selecciona Ref0 en base a una entrada en una lista inicial (por ejemplo, una lista de candidatos de vector de movimiento inicial). A continuación, el codificador de vídeo puede establecer Refl en una imagen de referencia en la otra lista de imágenes de referencia que esté temporalmente lo más cercana a la imagen actual. En consecuencia, el codificador de vídeo puede buscar el par de MV (MV0, MV1) en Ref0 y Refl.
De ahí, de acuerdo con aspectos de la presente divulgación, el codificador de vídeo puede aplicar las técnicas de derivación de movimiento bidireccional extendida ilustradas en la FIG. 11 como un modo de derivación de información de movimiento. Por ejemplo, el codificador de vídeo puede usar la coincidencia bilateral para derivar información de movimiento del bloque actual 162 encontrando la mejor coincidencia entre dos bloques (por ejemplo, tal como el primer bloque de referencia 166 y el segundo bloque de referencia 170) a lo largo de la trayectoria de movimiento del bloque actual en dos imágenes de referencia diferentes. En el supuesto de trayectoria de movimiento continuo, los vectores de movimiento MV0 y MV1 que apuntan a los dos bloques de referencia, primer bloque de referencia 166 y segundo bloque de referencia 170, serán proporcionales a las distancias temporales, es decir, TDO y TD1, entre la imagen actual y las dos imágenes de referencia. Como caso especial, cuando la imagen actual 160 está temporalmente entre dos imágenes de referencia (como se muestra en el ejemplo de la FIG. 10) y la distancia temporal desde la imagen actual a las dos imágenes de referencia es la misma, la coincidencia bilateral se vuelve MV bidireccional con base especular.
La FIG. 11 es un diagrama de flujo que ilustra un ejemplo de descodificación de una unidad de predicción (PU) usando DMVD. En Y.-J. Chiu, L. Xu, W. Zhang, H. Jiang, "Decoder-side Motion Estimation and Wiener filter for HEVC", Comunicaciones visuales y procesamiento de imágenes (VCIP), 2013, se propuso además combinar la derivación de MV bidireccional con base especular con el modo de fusión en HEVC. En la técnica propuesta, se añade un indicador llamado pu_dmvd_flag para una PU de fragmentos B para indicar si se aplica un modo DMVD a la PU actual. Debido a que el modo DMVD no transmite explícitamente ninguna información de MV en el flujo de bits, el elemento de sintaxis pu dmvdflag se integra con la sintaxis del modo de fusión en HEVC (que usa un índice para los datos representativos de un vector de movimiento en lugar del propio vector de movimiento).
En el ejemplo de la FIG. 11, un descodificador de vídeo (tal como un descodificador de vídeo 30) puede comenzar a descodificar una PU (180). El descodificador de vídeo 30 puede determinar si el modo usado para descodificar la PU es el modo de fusión (182), por ejemplo, en base a la sintaxis incluida en un flujo de bits que incluye la PU. Si no se usa el modo de fusión (la rama "no" de la etapa 182), el descodificador de vídeo 30 puede usar un proceso normal para una PU no de fusión para descodificar la PU (184) y finalizar el proceso (186).
Si se usa el modo de fusión (la rama "sí" de la etapa 182), el descodificador de vídeo 30 puede determinar si se usa DMVD para determinar la información de movimiento para la PU en base al valor del elemento de sintaxis pu_dmvd_flag (188). Si no se usa DMVD (la rama "no" de la etapa 188), el descodificador de vídeo 30 puede usar un modo de fusión normal para descodificar la PU (190) y finalizar el proceso (186). Si se usa DMVD (la rama "sí" de la etapa 188), el descodificador de vídeo 30 puede aplicar un proceso de DMVD para determinar la información de movimiento para la PU (192) y finalizar el proceso (186).
En algunos casos, las técnicas de codificación de vídeo actuales pueden tener determinadas limitaciones. Por ejemplo, determinadas técnicas de DMVD se pueden considerar como un subconjunto de la tecnología FRUC. Aunque se ha aplicado DMVD en la codificación de vídeo, no se han implementado otras técnicas de FRUC eficaces en la codificación de vídeo, por ejemplo, en el bucle de codificación de vídeo por un codificador de vídeo o un descodificador de vídeo. Además, aunque se han propuesto diferentes técnicas de DMVD, la interacción y superposición de dichas técnicas no se aprovechan en el descodificador. Es decir, solo se ha usado un modo DMVD en otros sistemas de codificación de vídeo. No se ha estudiado la manera en la que usar una pluralidad de técnicas de DMVD para mejorar además la eficacia de codificación.
Como otra limitación potencial, DMVD se puede aplicar solo a bloques relativamente grandes de datos de vídeo y, por lo tanto, es posible que no sea muy eficaz. La aplicación de dichos procedimientos para bloques más pequeños puede dar lugar a una sobrecarga apreciable debido al coste de señalización. En algunos casos, el intervalo de búsqueda para las técnicas de DMVD tradicionales puede ser relativamente pequeño y solo se buscan varios puntos, por ejemplo, 16 puntos. Además, como se indica anteriormente, la derivación de MV bidireccional con base especular no se puede aplicar en el caso de B de bajo retardo, porque es necesario identificar dos imágenes de referencia con orden de visualización antes y después de una imagen actual y esto no es posible en el caso de bajo retardo.
Otra limitación potencial puede ser que, en el descodificador, el coste de coincidencia de las técnicas de DMVD tradicionales solo puede considerar la distorsión. Sin embargo, la magnitud del vector de movimiento no se ha considerado en el coste de coincidencia, lo que puede dar lugar a una optimización local o un resultado inexacto de la coincidencia, por ejemplo, debido al ruido en el dominio de píxeles. Además, la complejidad de las técnicas de DMVD tradicionales puede ser relativamente alta, tanto en términos de ancho de banda de memoria como de complejidad informática, especialmente debido al hecho de que la interpolación es necesaria para los vectores de movimiento de píxeles fraccionarios durante la búsqueda en el descodificador.
Las técnicas de la presente divulgación pueden abordar una o más de las limitaciones potenciales descritas anteriormente. En algunos ejemplos, las técnicas para derivar información de movimiento se pueden aplicar individualmente. De forma alternativa, cualquier combinación de las técnicas descritas en el presente documento se pueden aplicar conjuntamente. Como se describe en el presente documento, la información de índice de referencia se puede considerar, en general, como parte de la información de movimiento. En algunos casos, la información de vector de movimiento y la información de índice de referencia se pueden denominar conjunto de información de movimiento.
Determinadas técnicas de la presente divulgación incluyen seleccionar un modo de derivación de movimiento de una pluralidad de modos de derivación de movimiento potenciales. Por ejemplo, de acuerdo con los aspectos de la presente divulgación, un codificador de vídeo (por ejemplo, un codificador de vídeo 20 o un descodificador de vídeo 30) puede usar dos o más técnicas de derivación de movimiento para proporcionar una mejor predicción de la información de movimiento en un descodificador de vídeo para evitar la señalización de la información de movimiento en el flujo de bits. Las dos o más técnicas de derivación de movimiento pueden incluir, pero no se limitan a, coincidencia bilateral, coincidencia de plantillas y cualquier otro procedimiento de coincidencia. Estas técnicas se pueden denominar, en general, modos de derivación de información de movimiento o modos FRUC. De ahí se debe entender que en algunos casos se puede usar en cambio una técnica denominada modo FRUC para interpolar información de movimiento para un bloque actual (por ejemplo, en lugar de interpolar un nuevo bloque de datos de vídeo).
En algunos ejemplos, cuando se usan múltiples procedimientos de derivación de movimiento, en lugar de tener diferentes procedimientos de optimización para diferentes procedimientos de derivación, el proceso para encontrar el mejor movimiento para dos o más de los procedimientos de derivación de movimiento puede estar alineado, en términos de la selección de los puntos de partida para la búsqueda y cómo buscar alrededor de los puntos de partida. Por ejemplo, el codificador de vídeo puede construir una lista de candidatos de vector de movimiento, seleccionar un candidato inicial de la lista y refinar el candidato usando las mismas técnicas de búsqueda y coincidencia. En este ejemplo, la derivación de movimiento bidireccional y la derivación de movimiento basada en coincidencia de plantillas se pueden usar de una manera adaptativa en el lado de descodificador.
De acuerdo con aspectos de la presente divulgación, se introduce señalización adicional a nivel de bloque para identificar qué procedimiento de derivación de movimiento se usa para codificar el bloque actual. Por ejemplo, el codificador de vídeo puede codificar uno o más elementos de sintaxis para indicar si está habilitada la derivación de información de movimiento. El codificador de vídeo también puede codificar uno o más elementos de sintaxis para indicar un modo de derivación de información de movimiento particular a partir de una pluralidad de modos potenciales. En otros ejemplos, es posible que la técnica de derivación de información de movimiento que se va a usar no se señalice, sino que se derive en el descodificador de vídeo, por ejemplo, en base a un modo de predicción u otra información disponible antes de que se decodifique el bloque actual. Todavía en otros ejemplos, el codificador de vídeo puede realizar múltiples modos de derivación de información de movimiento y determinar un promedio ponderado de las predicciones de las dos o más técnicas de derivación para codificar el bloque actual.
En un ejemplo con propósitos ilustrativos, un descodificador de vídeo, tal como un descodificador de vídeo 30, puede identificar en primer lugar si se aplica un modo de interpolación de información de movimiento (por ejemplo, en base a la sintaxis en el flujo de bits). A continuación, el descodificador de vídeo 30 puede identificar qué modo de derivación de información de movimiento se va a aplicar (por ejemplo, en base a la sintaxis en el flujo de bits). En un ejemplo, cuando se admiten múltiples procedimientos de derivación de movimiento simultáneamente, por ejemplo, ambos modos de coincidencia bilateral extendida y coincidencia de plantillas, se puede señalizar un valor de índice en el flujo de bits para indicar qué procedimiento de derivación de movimiento está realmente en uso para un bloque actual. El índice puede tener tres valores que incluyen desactivado, coincidencia bilateral extendida y coincidencia de plantillas.
Cuando se usa la codificación CABAC, se pueden usar dos intervalos (bins) para representar el índice. Ambos de los dos intervalos pueden usar vecinos espaciales como contextos o solo uno de ellos usa contextos de vecinos espaciales. De forma alternativa, uno o ambos intervalos pueden usar otra información codificada, tal como la profundidad de CU, como contextos. La binarización del índice puede estar predefinida, tal como "0" para desactivado, "10" para coincidencia bilateral extendida y "11" para coincidencia de plantillas. De forma alternativa, la binarización del índice se puede señalizar en una cabecera de fragmento o derivarse de información codificada tal como tipo de fragmento, nivel temporal o información QP.
De acuerdo con aspectos de la presente divulgación, la sintaxis que indica un modo de derivación de información de movimiento se puede incluir con otro modo de codificación. En un ejemplo, un modo de derivación de información de movimiento se puede considerar un candidato de fusión particular, indicado, por tanto, por un índice de fusión. En este caso, el tamaño de la lista de candidatos de fusión se puede incrementar para adaptar el índice adicional. El índice de candidatos de fusión para el modo de derivación de información de movimiento puede estar predefinido o señalizarse en el flujo de bits.
En algunos ejemplos, tanto la coincidencia bilateral extendida como la coincidencia de plantillas se admiten con el modo de fusión. En dichos ejemplos, cuando el indicador de fusión es igual a 1, se señaliza un nuevo indicador de derivación de información de movimiento para indicar si la información de movimiento se deriva para la PU actual. El indicador puede usar el mismo indicador de su vecino espacial, tal como los bloques superior e izquierdo como contextos de codificación CABAC. Cuando este indicador está activado, se señaliza un segundo indicador para indicar qué modo de derivación de información de movimiento (por ejemplo, coincidencia bilateral extendida o coincidencia de plantillas) se usa para derivar la información de movimiento del bloque. Cuando la derivación de movimiento está activada, incluso cuando el modo actual es el modo de fusión, no se señaliza ningún índice de fusión. De forma alternativa o adicional, no se permite una derivación de información de movimiento particular (por ejemplo, tal como la coincidencia de plantillas) si la PU no es la primera PU de una CU en el orden de descodificación. En este caso, solo es necesario señalizar el indicador para indicar si se usa o no la concordancia bilateral extendida para la PU.
En otro ejemplo, el modo de derivación de información de movimiento se puede combinar con el modo AMVP, por ejemplo, al nivel de PU. En un ejemplo, se pueden señalizar elementos de sintaxis adicionalmente (por ejemplo, un indicador adicional) para indicar el modo de derivación de información de movimiento. Cuando este modo está activado, no se puede señalizar ningún índice de AMVP en el flujo de bits. De otro modo, se puede señalizar un índice de AMVP normal en el flujo de bits. En otro ejemplo, el modo de derivación de información de movimiento se puede considerar como un candidato de AMVP particular, tal como el primer candidato de AMVP, en una lista de candidatos de AMVP. En algunos casos, cuando se combina con el modo AMVP, es posible que un vector de movimiento no se derive a un nivel de sub-PU.
De acuerdo con otros aspectos, un codificador de vídeo puede inicialmente codificar condicionalmente un indicador de nivel de CU (por ejemplo, para una CU intercodificada) para indicar si todas las PU dentro de la CU actual usan el modo de derivación de información de movimiento. En un ejemplo, el indicador de nivel de PU no se señaliza. En otro ejemplo, cuando el indicador de CU es igual a 0 (es decir, no todas las PU están codificadas con el modo), el indicador de nivel de PU de la primera PU se señaliza además mientras que la segunda PU no incluye el indicador de nivel de PU.
En algunos ejemplos, el modo de derivación de información de movimiento se puede deshabilitar para tipos de fragmentos, niveles temporales, tipos de bloques o tamaños de bloques específicos. En un ejemplo, no se permite la derivación de información de movimiento cuando el fragmento actual solo incluye imágenes de referencia con posiciones temporales que están todas antes o después de la de la imagen actual. En otro ejemplo, la derivación de información de movimiento no está permitida para PU que no sean 2Nx2N. Cuando se deshabilita la derivación de información de movimiento, no se necesita señalización a nivel de bloque relacionada con la derivación de información de movimiento.
De acuerdo con aspectos de la presente divulgación, habilitar o deshabilitar las técnicas de derivación de información de movimiento descritas en el presente documento se puede controlar por una sintaxis de alto nivel para proporcionar una mejor compensación de complejidad frente a eficacia de codificación y/o flexibilidad de codificador/descodificador. En un ejemplo, se puede señalizar un indicador en una SPS, PPS, cabecera de fragmento o cualquier otra cabecera de sintaxis de alto nivel para indicar el uso de un modo de derivación de información de movimiento. Cuando este indicador indica que este modo de codificación no está habilitado, es posible que no se codifiquen los indicadores de nivel de CU/PU en el flujo de bits.
En algunos casos, la sintaxis de alto nivel se puede usar de forma adicional o alternativa para indicar otros parámetros de derivación de información de movimiento. Por ejemplo, un índice del algoritmo de búsqueda que se va a usar para buscar el vector de movimiento a nivel de PU se puede codificar en un flujo de bits dentro de una SPS, PPS o cabecera de fragmento. En algunos casos, un índice del algoritmo de búsqueda que se usa para buscar el vector de movimiento a nivel de subbloque se puede codificar en el flujo de bits dentro de una SPS, PPS o cabecera de fragmento. En algunos ejemplos, para mantener una baja complejidad informática en el lado de descodificador, los números máximos de bloques/coincidencias de división en el nivel de PU, los números máximos de bloques/coincidencias de división en el nivel de sub-PU y/o el número de coincidencias total de en tanto el nivel de PU como el de sub-PU pueden estar restringidos. En algunos casos, dichos números máximos pueden estar predefinidos o señalizarse en el flujo de bits.
Las técnicas de la presente divulgación incluyen una variedad de técnicas para derivar información de movimiento. En algunos ejemplos, el codificador de vídeo puede determinar una lista inicial (lista de candidatos iniciales) de entradas que contienen vectores de movimiento, y un mejor punto de partida se identifica como una entrada de la lista inicial. Las entradas que contienen vectores de movimiento pueden ser vectores de movimiento de vecinos espaciales, vecinos temporales y/o vectores de movimiento derivados por otros medios. De forma alternativa, el mejor punto de partida (o índice del mejor punto de partida) se puede señalizar al descodificador.
En algunos ejemplos, la lista inicial puede contener los vectores de movimiento de los vecinos espaciales y/o temporales. Cada entrada de la lista inicial puede ser un conjunto unipredictivo de información de movimiento, que incluye un vector de movimiento y su índice de referencia. En un ejemplo, la lista inicial se puede generar de la misma manera que la lista de candidatos de predicción de movimiento usada en otro modo de codificación, por ejemplo, la misma que la lista de candidatos de fusión. En este caso, se pueden usar hasta dos vectores de movimiento de cada candidato de fusión para generar hasta dos entradas en la lista inicial. En algunos casos, las entradas en la lista inicial se pueden generar a partir de un subconjunto de candidatos de predicción de movimiento en una lista usada en otro modo de codificación, por ejemplo, un subconjunto de la lista de candidatos de fusión.
En otro ejemplo, se pueden añadir vectores de movimiento adicionales a la lista inicial, además de los de la lista de candidatos de predicción de movimiento usados en otro modo de codificación, por ejemplo, además de los de la lista de candidatos de fusión. De forma alternativa o adicional, los vectores de movimiento de los vecinos espaciales del bloque actual, tales como un bloque superior, un bloque izquierdo, un bloque superior derecho u otro bloque se pueden añadir a la lista inicial. En algunos casos, también se pueden añadir a la lista vectores de movimiento cero con diferentes índices de imagen de referencia.
De forma alternativa o adicional, se pueden añadir a la lista inicial los vectores de movimiento de los bloques coubicados temporalmente del bloque actual (por ejemplo, un TMVP para el bloque actual) y/o vectores de movimiento de los bloques coubicados temporalmente en la parte inferior derecha del bloque actual en las imágenes de referencia. Antes de añadir un vector de movimiento candidato particular a la lista, los vectores de movimiento se pueden ajustar a escala o no en base a la distancia temporal.
De acuerdo con algunos aspectos, un vector de movimiento se puede interpolar y/o extrapolar a partir de una imagen de referencia y se puede añadir en la lista inicial. Por ejemplo, antes de codificar una interimagen, se puede generar un campo de movimiento interpolado y/o extrapolado de la imagen en base a sus imágenes de referencia con una técnica similar a ME unilateral. El campo de movimiento interpolado y/o extrapolado de un bloque se puede usar para la predicción de MV o usarse como candidatos de partida adicionales en una búsqueda de MV de un modo de derivación de información de movimiento. Téngase en cuenta que el campo de movimiento interpolado y/o extrapolado se guarda en la unidad de 4x4 u 8x8 o cualquier otro nivel de bloque predefinido/señalizado, y una PU puede contener múltiples bloques de este tipo de modo que se puedan usar múltiples MV interpolados y/o extrapolados.
En un ejemplo, el campo de movimiento de cada imagen de referencia en ambas listas de referencia atraviesa el bloque de NxN por el bloque de NxN, donde N puede estar predefinido como 4, 8 o 16, o señalizado. Para cada bloque, si el movimiento asociado al bloque que pasa a través de un bloque de NxN en la imagen actual y al bloque no se le ha asignado ningún movimiento interpolado, el movimiento del bloque de referencia se ajusta a escala a la imagen actual de la misma manera que el del escalado de MV en TMVP y el movimiento ajustado a escala se asigna al bloque en la trama actual. Si no se asigna ningún MV ajustado a escala a un bloque de NxN, el movimiento del bloque se marca como no disponible en el campo de movimiento interpolado. En otro ejemplo, a un bloque de NxN en la imagen actual se le pueden asignar múltiples vectores de movimiento en el campo de movimiento interpolado.
En algunos casos, un codificador de vídeo puede recortar uno o más candidatos de una lista de candidatos. Se puede aplicar recortado para eliminar entradas idénticas de una lista inicial antes del mejor proceso de selección de punto de partida, por ejemplo, antes de calcular el coste de coincidencia para cada candidato de la lista.
En algunos casos, la primera imagen en cada lista de referencia se puede usar como imagen de referencia, y los candidatos de vector de movimiento se ajustan a escala en consecuencia si es necesario. En un caso de este tipo, se puede modificar el índice de referencia de cada entrada de la lista inicial después de ajustar a escala el vector de movimiento en base, por ejemplo, a la distancia de POC, de forma similar a TMVP. En algunos casos, el índice de referencia de cada entrada se puede fijar en una o dos imágenes y los vectores de movimiento asociados se pueden ajustar a escala hacia dichas imágenes.
En un ejemplo, para la coincidencia bilateral, se puede obtener un par de vectores de movimiento, que es un conjunto completo de información de movimiento que contiene tanto los vectores de movimiento como sus índices de referencia asociados a la lista 0 y la lista 1 de referencia, respectivamente, en base a cada entrada de una lista de candidatos inicial. A continuación, un codificador de vídeo puede realizar una coincidencia bilateral para todos los pares de MV generados a partir de todas las entradas en la lista inicial, y seleccionar el candidato que da lugar al coste de coincidencia mínimo.
Para generar el par de MV, el codificador de vídeo puede seleccionar una entrada de la lista inicial como primer vector de movimiento y generar el segundo vector de movimiento. Por ejemplo, supóngase que una entrada contiene el primer vector de movimiento MVa actual y un índice de referencia (con el valor de POC POCa) está asociado a una primera imagen de referencia en la lista A de imágenes de referencia (siendo A igual a 0 o 1). Suponiendo que el valor de POC de la imagen actual es POCc , el codificador de vídeo se puede configurar para encontrar una segunda imagen de referencia a partir de la lista B de imágenes de referencia (siendo B igual a 1-A) de modo que su valor de POC POCb sea igual a (2 x POCc - POCa). Si ninguna imagen de referencia en la lista B de imágenes de referencia tiene un valor de POC igual a (2 x POCc-POCü), el codificador de vídeo puede seleccionar la segunda imagen de referencia verificando todas las imágenes de referencia en la lista B de modo que POCb no sea igual a POCa y el valor absoluto de POCc-POCb sea el mínimo. En resumen, el codificador de vídeo puede seleccionar una imagen ubicada en el otro lado de la imagen actual (en orden de visualización) que tenga la misma distancia de POC. Si no está disponible, el codificador de vídeo puede seleccionar una imagen en el otro lado que tenga la distancia más pequeña a la imagen actual. Si todas las imágenes de referencia están en el mismo lado temporal que la primera referencia con POCa cuando se compara con la imagen actual, el codificador de vídeo puede seleccionar la referencia que está temporalmente lo más cercana a la imagen actual y tiene un POC distinto de POCa. En los supuestos anteriores, el codificador de vídeo puede ajustar a escala el primer vector de movimiento MVa para generar el segundo vector de movimiento asociado con la segunda imagen de referencia, por ejemplo, en base a la diferencia de POC como en TMVP. De forma alternativa, se puede usar cualquier técnica en base a la suposición de MV bilateral para generar la segunda imagen de referencia y su vector de movimiento.
De acuerdo con algunos aspectos, se pueden seleccionar dos vectores de movimiento de partida de la lista inicial. Cada uno de estos dos vectores de movimiento se selecciona (en términos de coste de coincidencia mínimo) de las entradas en dos subconjuntos de la lista inicial. Cada sub subconjunto contiene vectores de movimiento asociados con el índice de referencia solo a la lista de imágenes de referencia 0 o solo a la lista de imágenes de referencia 1.
De acuerdo con los aspectos de la presente divulgación, un codificador de vídeo se puede configurar para seleccionar un candidato a partir de un candidato en base a un coste de coincidencia asociado con el vector de movimiento. Además, después de seleccionar un candidato de una lista de candidatos, el codificador de vídeo puede refinar el vector de movimiento candidato para derivar información de movimiento para un bloque. Por ejemplo, el vector de movimiento candidato se puede usar para indicar un punto de partida de una imagen de referencia, que a continuación se puede buscar para encontrar la mejor coincidencia en base a un coste de coincidencia.
De acuerdo con los aspectos de la presente divulgación, se puede usar una variedad de costes de coincidencia, por ejemplo, cuando se determina la mejor coincidencia para un candidato de vector de movimiento inicial y/o cuando se refina el candidato de vector de movimiento inicial. En un ejemplo, cuando se busca el movimiento de un bloque, se puede incluir un coste de MV en el coste de coincidencia para evitar un impacto negativo por el ruido. Por ejemplo, se puede usar la parte de refinamiento del vector de movimiento (por ejemplo, la diferencia entre el MV actual y el centro de búsqueda), indicado como MVR para calcular el coste. En este ejemplo, el coste puede ser w*(|MVR[0]|+|MVR[1]|), donde w es un factor de ponderación que se puede señalizar o predefinir y MVR[0] y MVR[1] son los dos componentes de MVR. De forma alternativa, se puede usar el vector de movimiento refinado MV para calcular el coste, por ejemplo, como w*(|MV[0]|+|MV[1]|).
En algunos ejemplos, cuando el bloque es relativamente pequeño, por ejemplo, de 4x4 o más pequeño, se puede usar un bloque más grande que cubra el bloque (por ejemplo, el bloque con límites extendidos) en el cálculo del coste de coincidencia para suprimir el ruido. Por ejemplo, cuando se busca la mejor coincidencia para un bloque de 4x4, el coste de coincidencia se puede calcular en base al bloque de 8x8 siendo el bloque un bloque central.
En algunos ejemplos, el coste de coincidencia puede ser cualquier tipo de distancia/coste, tal como la suma de diferencias absolutas (SAD), la suma de errores de predicción al cuadrado (SSE) o la suma de diferencias absolutas transformadas (SATD). Para reducir la complejidad informática, la SAD, la SSE u otro coste se puede calcular con resolución reducida en dirección horizontal, vertical o en ambas direcciones. Por ejemplo, para un bloque de 8x8, la SAD se puede calcular en base solo a filas impares. En otro ejemplo, el coste de coincidencia se puede calcular en base a un subconjunto seleccionado de un bloque, por ejemplo, solo se puede usar una región central de un.
De acuerdo con los aspectos de la presente divulgación, el proceso de refinamiento para la mejor coincidencia (por ejemplo, el candidato seleccionado en base al coste de coincidencia) se puede realizar dentro de una ventana de búsqueda predefinida o señalizada en lugar de usar siempre una ventana pequeña, por ejemplo, dentro de una ventana de 2x2 (aquí la unidad es el píxel y los vectores de movimiento fraccionario se pueden buscar dentro de una ventana) para lograr una búsqueda más eficaz pero de baja complejidad. En este ejemplo, el intervalo de una ventana de búsqueda (por ejemplo, con un tamaño de 16x16) puede estar predefinido o señalizado en el flujo de bits.
El algoritmo de búsqueda para la búsqueda puede estar predefinido, tal como una búsqueda completa, una búsqueda de tres etapas, una búsqueda en rombo, un algoritmo de búsqueda en descenso de gradiente basado en bloques (BBGDS) como se describe, por ejemplo, en Lurng-Kuo Liu, Ephraim Feig, "A block-based gradient descent search algorithm for block motion estimation in video coding", IEEE Trans. Circuits Syst. Video Technol., vol. 6, págs., 419-422, agosto de 1996, o un algoritmo de búsqueda en rombo con sesgo central sin restricciones (UCBDS) como se describe, por ejemplo, en Jo Yew Tham, Surendra Ranganath, Maitreya Ranganath y Ashraf Ali Kassim, "A novel unrestricted center-biased diamond search algorithm for block motion estimation", IEEE Trans. Circuits Syst. Video Technol., vol. 8, págs. 369-377, agosto de 1998.
En algunos casos, se pueden usar diferentes técnicas de búsqueda en diferentes casos en base a criterios de señalización o predefinidos. Por ejemplo, para buscar una PU completa, se puede usar una búsqueda en rombo. Para buscar una sub-PU, se puede usar una pequeña búsqueda en rombo. Adicionalmente, o de forma alternativa, se puede aplicar una parada anticipada durante la búsqueda, por ejemplo, cuando el coste de coincidencia está por debajo de un umbral predefinido o adaptativo. Cuando se usa la coincidencia de plantillas, se puede aplicar además una restricción de que los dos vectores de movimiento de las dos listas de referencia después del refinamiento no apunten al mismo bloque en la misma imagen de referencia.
Como se indica anteriormente, la presente divulgación describe determinadas técnicas de optimización para los procesos de DMVD existentes. Por ejemplo, como se describe anteriormente con respecto al ejemplo de la FIG.
10, las técnicas incluyen extender la coincidencia bilateral de la predicción bidireccional a la predicción unidireccional. También se puede aplicar la coincidencia bilateral cuando las posiciones temporales de dos imágenes de referencia están ambas antes o después de la posición temporal del fragmento actual (es decir, los valores de POC son más pequeños o más grandes que los de la imagen actual). Dichas técnicas se pueden denominar conjuntamente en el presente documento coincidencia bilateral extendida.
Otros aspectos de la presente divulgación se relacionan con las técnicas de interpolación. Por ejemplo, de acuerdo con los aspectos de la presente divulgación, las técnicas de interpolación se pueden simplificar para reducir la complejidad. Como se indica anteriormente con respecto a la FIG. 2, la búsqueda de movimiento se realiza típicamente usando precisión de subpíxeles. En consecuencia, se necesita interpolación para posiciones de píxeles no enteros. Para reducir la complejidad informática, de acuerdo con aspectos de la presente divulgación, un codificador de vídeo puede usar un filtro de interpolación con tomas más cortas en comparación con la interpolación de compensación de movimiento habitual. En un ejemplo, el codificador de vídeo puede usar un filtro de interpolación bilineal durante la búsqueda de movimiento, por ejemplo, cuando se aplican vectores de movimiento candidatos iniciales o se refinan dichos vectores de movimiento. En otro ejemplo, el codificador de vídeo se puede configurar para realizar inicialmente una búsqueda de movimiento usando posiciones de píxeles enteros, seguido de realizar una búsqueda de movimiento en posiciones de píxeles fraccionarios con la mejor coincidencia de la posición de píxeles enteros como punto de partida.
Otras técnicas de la presente divulgación se relacionan con la derivación de información de movimiento para subbloques. Por ejemplo, de acuerdo con los aspectos de la presente divulgación, un codificador de vídeo puede dividir un bloque/PU en sub-PU/subbloques (no superpuestos) en base a cualquier técnica de derivación de movimiento. Cuando una PU se divide en múltiples sub-PU de tamaño más pequeño, el codificador de vídeo puede derivar un conjunto único de información de movimiento para cada sub-PU.
En un ejemplo con propósitos ilustrativos, una PU de 32x32 se puede dividir en 16 sub-PU de 8x8. En este ejemplo, el codificador de vídeo puede determinar diferentes índices de referencia y/o vectores de movimiento para cada una de las sub-PU de 8x8. En otros ejemplos, las sub-PU pueden tener otros tamaños, por ejemplo, 4x4, 2x2 o 1x1.
En algunos casos, el tamaño del subbloque/sub-PU puede estar predefinido y fijo independientemente del tamaño del bloque/PU. En otros ejemplos, se puede definir una profundidad de división D para las PU que controla el número de veces que una PU se puede dividir de acuerdo con una estructura de árbol cuaternario. En algunos ejemplos, un tamaño mínimo de sub-PU/subbloque puede estar predefinido o señalizarse para indicar el tamaño objetivo del subbloque/sub-PU en el que se dividirá el bloque/PU actual. El tamaño objetivo puede ser el más grande entre el tamaño mínimo de sub-PU/subbloque y el tamaño obtenido dividiendo el bloque actual D veces de acuerdo con una estructura de árbol cuaternario.
De acuerdo con los aspectos de la presente divulgación, un codificador de vídeo puede aprovechar la información de movimiento derivada para una PU cuando se deriva información de movimiento para las sub-PU de la PU. Por ejemplo, el codificador de vídeo puede, para cada sub-PU, buscar información de movimiento única respectiva estableciendo la información de movimiento del bloque completo como el centro de búsqueda (punto de búsqueda inicial). A continuación, el codificador de vídeo puede refinar el movimiento para cada sub-PU. De forma alternativa, el centro de búsqueda de cada sub-PU se puede derivar de una lista de candidatos de punto de partida.
En otro ejemplo, se puede generar una lista de candidatos de vector de movimiento para la sub-PU usando cualquiera de las técnicas descritas en el presente documento. A continuación, el codificador de vídeo puede verificar cada candidato en la lista después de verificar el centro de búsqueda (por ejemplo, el punto de búsqueda inicial derivado de la PU). De acuerdo con aspectos de la presente divulgación, las sub-PU se pueden refinar usando cualquiera de las técnicas descritas en el presente documento que son aplicables a bloques normales. En otros ejemplos, el refinamiento se puede omitir siempre o condicionalmente para las sub-PU después de verificar la lista de candidatos de vector de movimiento para la mejor coincidencia de la manera descrita anteriormente. Una condición posible puede ser que la mejor coincidencia sigue siendo el candidato indicado por la información de movimiento de la PU (por ejemplo, el punto de búsqueda inicial) después de verificar la lista de candidatos. Si es verdadero, el codificador de vídeo puede omitir el refinamiento. De otro modo, el codificador de vídeo puede realizar el refinamiento.
En algunos ejemplos, el filtrado de vectores de movimiento se puede realizar para sub-PU para corregir un vector de movimiento incorrecto aislado. Por ejemplo, un codificador de vídeo puede usar un filtro mediano con el vector de movimiento de la sub-PU actual y los vectores de movimiento de hasta cuatro sub-PU vecinas. De acuerdo con aspectos de la presente divulgación, cuando se aplican transformaciones, el codificador de vídeo puede considerar la PU completa como un bloque completo, de modo que una transformada puede cruzar los límites de la sub-PU. En otros ejemplos, el codificador de vídeo puede aplicar transformadas a cada sub-PU de modo que el tamaño de transformada no sea más grande que el tamaño de la sub-PU. En algunos casos, cuando se usa la coincidencia de plantillas, también se puede dividir una PU completa en sub-PU más pequeñas. Para las sub-PU con vecinos espaciales que están todos en la PU actual (sus plantillas no están disponibles), el codificador de vídeo puede establecer sus vectores de movimiento en los vectores de movimiento derivados de la PU completa.
En algunos ejemplos, un codificador de vídeo puede codificar elementos de sintaxis separados que indican si un bloque particular está dividido. En otro ejemplo, todos los bloques de 2Nx2N con modo de coincidencia bilateral extendida se dividen además en divisiones pequeñas y no se señaliza ningún indicador adicional. El tamaño del subbloque puede estar predefinido o señalizado. De forma alternativa, el tamaño del subbloque se puede basar en el tamaño del bloque actual. Por ejemplo, el tamaño del subbloque se puede derivar como el número más grande de dos valores. El primer valor es un tamaño de subbloque mínimo predefinido o señalizado (por ejemplo, tal como de 4*4 u 8*8). El segundo valor es un tamaño relativo con respecto al bloque actual, tal como (S>>d)*(S>>d) donde SxS es el tamaño de bloque actual, mientras que d es un valor predefinido o señalizado para indicar la profundidad de árbol cuaternario con la que el bloque actual se divide en subbloques. En los ejemplos anteriores, se debe entender que el término PU se usa de manera intercambiable con el término bloque y el término sub-PU se usa de manera intercambiable con el término subbloque.
Como se indica anteriormente, las técnicas descritas en el presente documento se pueden usar independientemente o en combinación. Como ejemplo, un proceso de derivación de información de movimiento asociado con un modo de derivación de información de movimiento (por ejemplo, un modo de coincidencia bilateral extendida, un modo de coincidencia de plantillas o cualquier otro modo) puede incluir tres etapas, aunque la tercera etapa se puede realizar condicionalmente en base al tipo de fragmento, nivel temporal, tipo de bloque, tamaño de bloque o sintaxis definida en el flujo de bits.
En una primera etapa, un codificador de vídeo puede formular una lista de candidatos inicial de conjuntos unipredictivos de información de movimiento para un bloque actual. El codificador de vídeo puede seleccionar el candidato que tiene el mejor punto de partida de la lista, por ejemplo, en base a un coste de coincidencia. En una segunda etapa, el codificador de vídeo puede refinar el candidato seleccionado para derivar la información de movimiento para el bloque actual. El refinamiento también se puede basar en un coste de coincidencia, como se describe en el presente documento. A continuación, el codificador de vídeo puede opcionalmente dividir además el bloque actual en subbloques como se describe en el presente documento, y refinar cada vector de movimiento para cada subbloque. Finalmente, el codificador de vídeo puede aplicar compensación de movimiento para el bloque actual usando la información de movimiento derivada. Si se ha realizado la división, el codificador de vídeo puede aplicar compensación de movimiento subbloque por subbloque.
En un ejemplo, se puede usar el siguiente seudocódigo para reconstruir un bloque usando un modo de derivación de información de movimiento, donde la información de movimiento se deriva por coincidencia bilateral o bien coincidencia de plantillas. Cuando se usa la coincidencia bilateral, el bloque se divide además en subbloques (téngase en cuenta que MV aquí incluye información de referencia):
Reconstrucción del bloque B (con tamaño W *H) en FRUC
Construir lista inicial
si B es coincidencia bilateral
í
Encontrar la meior coincidencia {por ejemplo, coincidencia bilateral) en la lula inicial como punió de panida con la medición de la coincidencia bilateral
Refinar el MV en base al punió de parlida con coincidencia bilateral para obtener el vector de movimiento MVn para el bloque B
para cada subbioque en el bloque B
{
tomando MV& como punto de partida refinar MV para cada subbioque
realizar compensación de movimiento para el subbioque con la información de MV derivada
í
>
si no ii coincidencia de plantillas
í
Encontrar ta mejor coincidencia {por ejemplo, coincidencia de plantillas) en la lisia imciai como punto de partida con la medición de coincidencia de puntillas
Retinar el MV en base al punto de partida con ta coincidencia de plantillas
>
De ahí, de acuerdo con los aspectos de la presente divulgación, el codificador de vídeo 20 o el descodificador de vídeo 30 puede determinar un modo de interpolación de información de movimiento para determinar la información de movimiento para un bloque actual (un bloque que se está codificando o descodificando actualmente). Usando el modo de interpolación de información de movimiento (por ejemplo, coincidencia bilateral, coincidencia de plantillas u otra técnica), el codificador de vídeo 20 o el descodificador de vídeo 30 puede determinar el mejor candidato de vector de movimiento en una lista de candidatos de vector de movimiento, por ejemplo, el vector de movimiento que identifica un bloque de referencia que coincide de forma estrecha con el bloque actual. El codificador de vídeo 20 o el descodificador de vídeo 30 puede usar el candidato de vector de movimiento para identificar una ventana de búsqueda en una imagen de referencia.
El codificador de vídeo 20 o el descodificador de vídeo 30 puede refinar el candidato de vector de movimiento en base a un bloque de referencia en la ventana de búsqueda que coincide de forma estrecha con el bloque actual. Es decir, el codificador de vídeo 20 o el descodificador de vídeo 30 puede determinar un nuevo vector de movimiento interpolado para el bloque actual en base al movimiento entre el bloque de referencia en la ventana de búsqueda que coincide de forma estrecha con el bloque actual y el bloque actual. A continuación, el codificador de vídeo 20 o el descodificador de vídeo 30 puede realizar una compensación de movimiento para el bloque actual usando el vector de movimiento interpolado.
En algunos casos, el codificador de vídeo 20 o el descodificador de vídeo 30 puede dividir el bloque actual en más de un subbloque con propósitos de predicción. Además, en otros ejemplos, el codificador de vídeo 20 o el descodificador de vídeo 30 puede realizar más, menos o una disposición diferente de técnicas para interpolar información de movimiento.
De ahí que determinadas técnicas de la presente divulgación se pueden generalizar como una herramienta de codificación a nivel de bloque que aprovecha determinados conceptos de FRUC, dado el supuesto de que se puede considerar que un bloque actual de una imagen actual se predice por imágenes de referencia de una manera similar a que se puede considerar que una imagen actual se interpola por imágenes de referencia en FRUC. En un ejemplo, solo se usan los procesos basados en movimiento para la herramienta de codificación a nivel de bloque. En otro ejemplo, solo se usan los procesos basados en píxeles para la herramienta de codificación a nivel de bloque. En otro ejemplo, se usan los procesos basados en movimiento o bien los procesos basados en píxeles para un bloque dado. En otro ejemplo, tanto los procesos basados en píxeles como los procesos basados en movimiento se usan para la herramienta de codificación a nivel de bloque. En otro ejemplo, se puede reutilizar o predecir otra sintaxis a partir de las otras tramas temporales y se puede usar para la herramienta de codificación, tal como información del árbol de codificación, información de SAO, ALF, RQT.
La FIG. 12 es un diagrama de flujo que ilustra un proceso de ejemplo para determinar un modo de derivación de información de movimiento para codificar un bloque de datos de vídeo. El proceso de ejemplo de la FIG. 12 se describe con respecto a un codificador de vídeo, que se puede configurar como codificador de vídeo 20, descodificador de vídeo 30 u otro procesador.
En el ejemplo de la FIG. 12, el codificador de vídeo puede seleccionar un modo de derivación de movimiento de una pluralidad de modos de derivación de movimiento (200). En general, cada uno de los modos de derivación de movimiento puede incluir realizar una búsqueda de movimiento para un primer conjunto de datos de referencia que corresponde a un segundo conjunto de datos de referencia fuera del bloque actual. Por ejemplo, con respecto a la coincidencia de plantillas, el codificador de vídeo puede realizar una búsqueda de movimiento para identificar una plantilla en una imagen actual (por ejemplo, un primer conjunto de datos de referencia) que corresponde a la plantilla en una imagen de referencia (por ejemplo, un segundo conjunto de datos de referencia). En otro ejemplo, con respecto al movimiento bilateral, el codificador de vídeo puede realizar una búsqueda de movimiento para identificar un bloque de referencia en una primera imagen de referencia (por ejemplo, un primer conjunto de datos de referencia) que corresponde a un segundo bloque de referencia en una segunda imagen de referencia (por ejemplo, un segundo conjunto de datos de referencia). Los modos de derivación de movimiento de ejemplo pueden incluir un modo de estimación de movimiento unilateral, un modo de coincidencia bilateral, un modo de coincidencia de plantillas o un modo con base especular.
De acuerdo con algunos aspectos, el codificador de vídeo puede seleccionar el modo de derivación de información de movimiento de acuerdo con uno o más elementos de sintaxis incluidos en un flujo de bits. Por ejemplo, un descodificador de vídeo puede analizar y descodificar el uno o más elementos de sintaxis del flujo de bits y determinar el modo de derivación de información de movimiento en base a la sintaxis. Un codificador de vídeo puede someter a prueba la pluralidad de modos de derivación de información de movimiento, seleccionar el modo que tiene el mejor coste de RD y codificar el uno o más elementos de sintaxis en el flujo de bits que indican el modo seleccionado.
El codificador de vídeo puede determinar información de movimiento para el bloque usando el modo de derivación de movimiento seleccionado, que puede incluir determinar una información de movimiento inicial usando el modo seleccionado (202) y usando un proceso de optimización para refinar la información de movimiento inicial (204). Por ejemplo, el codificador de vídeo puede construir una lista de candidatos de vector de movimiento con candidatos para determinar la información de movimiento inicial. La información de movimiento inicial puede proporcionar un punto de partida para refinar la información de movimiento, como se describe en el presente documento.
A continuación, el codificador de vídeo puede codificar el bloque usando la información de movimiento determinada y sin codificar la sintaxis representativa de la información de movimiento (206). Por ejemplo, en los casos en los que el codificador de vídeo comprende un descodificador de vídeo, el descodificador de vídeo puede determinar un bloque de referencia en una imagen de referencia en base a la información de movimiento determinada, descodificar los datos residuales de un flujo de bits codificado y combinar el residuo descodificado y el bloque de referencia determinado para reconstruir el bloque actual. En los casos en los que el codificador de vídeo comprende un codificador de vídeo, el codificador de vídeo puede codificar los datos residuales para el bloque actual en un flujo de bits codificado sin codificar los índices de referencia o vectores de movimiento para los datos residuales.
La FIG. 13 es un diagrama de flujo que ilustra un proceso de ejemplo para derivar un vector de movimiento para codificar un bloque de datos de vídeo. El proceso de ejemplo de la FIG. 13 se describe con respecto a un codificador de vídeo, que se puede configurar como codificador de vídeo 20, descodificador de vídeo 30 u otro procesador.
El codificador de vídeo puede generar una lista de vectores de movimiento candidatos (210). La lista de vectores de movimiento candidatos puede incluir uno o más candidatos de vector de movimiento que se pueden usar para derivar la información de movimiento para el bloque actual. En algunos ejemplos, los candidatos de vector de movimiento se pueden determinar a partir de bloques vecinos espacialmente, bloques temporales o de otras ubicaciones.
El codificador de vídeo puede determinar un candidato de la lista para derivar la información de movimiento (212). En algunos ejemplos, el codificador de vídeo puede realizar uno o más cálculos de coste para determinar el candidato usando un modo de derivación de movimiento particular. Por ejemplo, el codificador de vídeo puede determinar un coste de coincidencia para un primer conjunto de datos de referencia y un segundo conjunto de datos de referencia, que puede incluir un coste asociado con los vectores de movimiento respectivos, como se describe en el presente documento.
A continuación, el codificador de vídeo puede determinar el vector de movimiento derivado en base al candidato determinado (214). Por ejemplo, el codificador de vídeo puede refinar el candidato determinado para determinar el vector de movimiento derivado usando el modo de derivación de movimiento. A continuación, el codificador de vídeo puede codificar el bloque usando el vector de movimiento derivado (216). Por ejemplo, en los casos en los que el codificador de vídeo comprende un descodificador de vídeo, el descodificador de vídeo puede determinar un bloque de referencia en una imagen de referencia en base al vector de movimiento derivado, descodificar los datos residuales de un flujo de bits codificado y combinar el residuo descodificado y el bloque de referencia determinado para reconstruir el bloque actual. En los casos en los que el codificador de vídeo comprende un codificador de vídeo, el codificador de vídeo puede codificar los datos residuales para el bloque actual en un flujo de bits codificado sin codificar el vector de movimiento derivado.
La FIG. 14 es un diagrama de flujo que ilustra un proceso de ejemplo para derivar información de movimiento para subbloques de un bloque de datos de vídeo. El proceso de ejemplo de la FIG. 14 se describe con respecto a un codificador de vídeo, que se puede configurar como codificador de vídeo 20, descodificador de vídeo 30 u otro procesador.
El codificador de vídeo puede derivar información de movimiento para un bloque actual (220). En algunos ejemplos, el codificador de vídeo puede usar cualquier combinación de técnicas de derivación de información de movimiento descritas en el presente documento para derivar la información de movimiento. Por ejemplo, el codificador de vídeo puede usar cualquiera de las técnicas descritas en el presente documento para realizar una búsqueda de movimiento para un primer conjunto de datos de referencia que corresponde a un segundo conjunto de datos de referencia fuera del bloque actual (por ejemplo, coincidencia de plantillas, coincidencia bilateral o similares).
De acuerdo con aspectos de la presente divulgación, el codificador de vídeo también puede dividir el bloque en una pluralidad de subbloques (222). El codificador de vídeo puede derivar por separado la información de movimiento para subbloques respectivos que comprende realizar una búsqueda de movimiento para un primer conjunto de datos de referencia que corresponde a un segundo conjunto de datos de referencia fuera de cada subbloque respectivo (224). De nuevo, el codificador de vídeo puede usar cualquier técnica descrita en el presente documento para derivar la información de movimiento tal como, por ejemplo, coincidencia de plantillas, coincidencia bilateral o similares. Por ejemplo, el codificador de vídeo puede usar el vector de movimiento derivado como punto de partida para derivar la información de movimiento para cada uno de los subbloques, y puede refinar además la información de movimiento derivada usando cualquier combinación de las técnicas de derivación de información de movimiento descritas en el presente documento.
A continuación, el codificador de vídeo puede codificar cada uno de los subbloques en base a la información de movimiento derivada sin codificar elementos de sintaxis representativos de la información de movimiento (226). Por ejemplo, en los casos en los que el codificador de vídeo comprende un descodificador de vídeo, el descodificador de vídeo puede determinar un bloque de referencia en una imagen de referencia para cada subbloque en base a la información de movimiento determinada, descodificar los datos residuales para cada subbloque de un flujo de bits codificado y combinar el residuo descodificado y el bloque de referencia determinado para reconstruir cada subbloque. En los casos en los que el codificador de vídeo comprende un codificador de vídeo, el codificador de vídeo puede codificar los datos residuales para cada subbloque en un flujo de bits codificado sin codificar los índices de referencia o vectores de movimiento para los datos residuales.
Se ha de reconocer que, dependiendo del ejemplo, determinadas acciones o acontecimientos de cualquiera de las técnicas descritas en el presente documento se pueden realizar en una secuencia diferente, se pueden añadir, fusionar o excluir por completo (por ejemplo, no todas las acciones o acontecimientos descritos son necesarios para la puesta en práctica de las técnicas). Además, en determinados ejemplos, las acciones o acontecimientos se pueden realizar simultáneamente, por ejemplo, a través de procesamiento de múltiples hilos, procesamiento por interrupciones o múltiples procesadores, en lugar de secuencialmente.
En uno o más ejemplos, las funciones descritas se pueden implementar en hardware, software, firmware o en cualquier combinación de los mismos. Si se implementan en software, las funciones se pueden almacenar en, o transmitirse sobre, un medio legible por ordenador como una o más instrucciones o código, 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, tales como medios de almacenamiento de datos, o medios de comunicación que incluyen cualquier medio que facilita la transferencia de un programa informático de un lugar a otro, por ejemplo, de acuerdo con un protocolo de comunicación. De esta manera, los medios legibles por ordenador pueden corresponder, en general, a (1) unos medios de almacenamiento tangibles legibles por ordenador que no son transitorios o a (2) un medio de comunicación tal como una señal u onda portadora. Los medios de almacenamiento de datos pueden ser cualesquiera medios disponibles a los que se puede 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 la presente divulgación. Un producto de programa informático puede incluir un medio legible por ordenador.
A modo de ejemplo, y no de limitación, dichos medios de almacenamiento legibles por ordenador pueden comprender RAM, ROM, EEPROM, CD-ROM u otro almacenamiento en disco óptico, almacenamiento en disco magnético u otros dispositivos de almacenamiento magnético, memoria flash o cualquier otro medio que se puede usar para almacenar un código de programa deseado en forma de instrucciones o estructuras de datos y al que se puede acceder por un ordenador. Además, cualquier conexión recibe apropiadamente la denominación de medio legible por ordenador. Por ejemplo, si las instrucciones se transmiten desde un sitio web, un servidor u otra fuente remota usando un cable coaxial, un cable de fibra óptica, un par trenzado, una línea de abonado digital (DSL) o tecnologías inalámbricas tales como infrarrojos, radio y microondas, entonces el cable coaxial, el cable de fibra óptica, el par trenzado, la DSL o las tecnologías inalámbricas tales como infrarrojos, radio y microondas están incluidos en la definición de medio. Sin embargo, se deberá entender que los medios de almacenamiento legibles por ordenador y los medios de almacenamiento de datos no incluyen conexiones, ondas portadoras, señales u otros medios transitorios, sino que, en cambio, están dirigidos a medios de almacenamiento tangibles no transitorios. Los discos, como se usa en el presente documento, incluyen el disco compacto (CD), el disco láser, el disco óptico, el disco versátil digital (DVD), el disco flexible y el disco Blu-ray, donde algunos discos reproducen normalmente datos de forma magnética, mientras que otros discos reproducen datos de forma óptica con láseres. Las combinaciones de los anteriores también se deben incluir dentro del alcance de los medios legibles por ordenador.
Las instrucciones se pueden ejecutar por uno o más procesadores, tales como uno o más procesadores de señales digitales (DSP), microprocesadores de propósito general, circuitos integrados específicos de la aplicación (ASIC), matrices de puertas programables por campo (FPGA) u otros circuitos lógicos integrados o discretos equivalentes. En consecuencia, el término "procesador", como se usa en el presente documento, se puede referir a cualquiera de las estructuras anteriores o a cualquier otra estructura adecuada para la implementación de las técnicas descritas en el presente documento. Además, en algunos aspectos, la funcionalidad descrita en el presente documento se puede proporcionar dentro de módulos de hardware y/o de software dedicados configurados para codificar y descodificar, o incorporar en un códec combinado. Además, las técnicas se podrían implementar por completo en uno o más circuitos o elementos lógicos.
Las técnicas de la presente divulgación se pueden implementar en una amplia variedad de dispositivos o aparatos, incluyendo un aparato telefónico inalámbrico, un circuito integrado (IC) o un conjunto de IC (por ejemplo, un conjunto de chips). En la presente divulgación se describen diversos componentes, módulos o unidades para destacar aspectos funcionales de dispositivos configurados para realizar las técnicas divulgadas, pero no se requiere necesariamente su realización por diferentes unidades de hardware. En cambio, como se describe anteriormente, diversas unidades se pueden combinar en una unidad de hardware de códec o proporcionar por un grupo de unidades de hardware interoperativas, que incluyen uno o más procesadores como se describe anteriormente, junto con software y/o firmware adecuados.
Se han descrito diversos ejemplos. Estos y otros ejemplos están dentro del alcance de las siguientes reivindicaciones.

Claims (14)

REIVINDICACIONES
1. Un procedimiento de derivación de vector de movimiento de lado de descodificador para procesar datos de vídeo, comprendiendo el procedimiento:
determinar una lista de candidatos de vector de movimiento que comprende una pluralidad de vectores de movimiento candidatos para derivar información de movimiento de un bloque actual en una imagen actual de datos de vídeo, en el que la información de movimiento indica un movimiento del bloque actual en relación con los datos de vídeo de referencia, y en el que la lista de candidatos de vector de movimiento comprende uno o más vectores de movimiento candidatos en modo de fusión o uno o más vectores de movimiento candidatos en modo de predicción de vector de movimiento avanzada;
seleccionar un vector de movimiento candidato de la lista de candidatos de vector de movimiento; y
determinar un vector de movimiento derivado para el bloque actual que apunta a un conjunto de datos de referencia de una imagen de referencia, en el que determinar el vector de movimiento derivado comprende:
realizar una búsqueda de movimiento para un primer conjunto de datos de referencia de una primera imagen de referencia correspondiente a un segundo conjunto de datos de referencia fuera del bloque actual, apuntándose a la primera imagen de referencia por el vector de movimiento candidato, en el que el vector de movimiento candidato indica un punto de partida en la primera imagen de referencia para la búsqueda de movimiento; y
refinar el vector de movimiento candidato para determinar un vector de movimiento derivado que apunta al primer conjunto de datos de referencia, en el que el primer conjunto de datos de referencia y el segundo conjunto de datos de referencia representan los datos de referencia de la mejor coincidencia, en el que la mejor coincidencia se basa en un coste de coincidencia entre el primer conjunto de datos de referencia de la primera imagen de referencia y el segundo conjunto de datos de referencia;
en el que el coste de coincidencia comprende una magnitud de una diferencia entre el vector de movimiento derivado y el vector de movimiento candidato.
2. El procedimiento de la reivindicación 1, que comprende además generar la lista de candidatos de vector de movimiento, en el que cada entrada de la lista de candidatos de vector de movimiento comprende un vector de movimiento y su índice de referencia asociado.
3. El procedimiento de la reivindicación 2, en el que generar la lista de candidatos de vector de movimiento comprende identificar uno o más vectores de movimiento a partir de un vecino espacial del bloque actual, un vecino temporal del bloque actual o derivar un vector de movimiento usando una técnica de derivación de vector de movimiento.
4. El procedimiento de la reivindicación 2, en el que generar la lista de candidatos de vector de movimiento comprende generar la lista de candidatos de vector de movimiento y una lista de candidatos de vector de movimiento en modo de fusión de la misma manera.
5. El procedimiento de la reivindicación 2, en el que generar la lista de candidatos de vector de movimiento comprende extrapolar o interpolar un campo de movimiento de la imagen que contiene el bloque actual y determinar uno o más vectores de movimiento candidatos a partir del campo de movimiento extrapolado o interpolado.
6. El procedimiento de la reivindicación 2, en el que generar la lista de candidatos de vector de movimiento comprende recortar vectores de movimiento candidatos duplicados de la lista de candidatos de vector de movimiento.
7. El procedimiento de la reivindicación 2, que comprende además ajustar a escala los vectores de movimiento candidatos usando una imagen de referencia fija de una lista de imágenes de referencia para el bloque actual, en el que la imagen de referencia fija es una imagen inicial en la lista de imágenes de referencia para el bloque actual.
8. El procedimiento de la reivindicación 1, que comprende además:
obtener un par de vectores de movimiento para cada vector de movimiento candidato de la lista de candidatos de vector de movimiento;
realizar un proceso de coincidencia bilateral para los pares de vectores de movimiento respectivos; y
en el que seleccionar el uno o más vectores de vector de movimiento candidatos comprende seleccionar uno o más vectores de movimiento a partir del proceso de coincidencia bilateral.
9. El procedimiento de la reivindicación 8, en el que obtener el par de vectores de movimiento para cada vector de movimiento candidato comprende determinar un primer vector de movimiento del par a partir del vector de movimiento candidato respectivo y determinar un segundo vector de movimiento del par en base a una imagen de referencia de una lista de imágenes de referencia para el bloque actual.
10. El procedimiento de la reivindicación 1, en el que determinar el vector de movimiento derivado para el bloque actual en base al refinamiento del vector de movimiento candidato seleccionado comprende:
determinar una ventana de búsqueda en una imagen de referencia en base al vector de movimiento candidato; en el que la búsqueda de movimiento comprende buscar el primer conjunto de datos de referencia que mejor coincide con el segundo conjunto de datos de referencia dentro de la ventana de búsqueda determinada; y determinar el vector de movimiento derivado para el bloque actual en base a un resultado de la búsqueda.
11. El procedimiento de la reivindicación 1, que comprende además descodificar el bloque actual de datos de vídeo usando el vector de movimiento derivado, en el que descodificar el bloque actual comprende:
determinar un bloque de referencia en una imagen de referencia en base al vector de movimiento derivado; descodificar los datos residuales de un flujo de bits codificado; y
combinar el residuo descodificado y el bloque de referencia determinado para reconstruir el bloque actual.
12. El procedimiento de la reivindicación 1,
en el que seleccionar el vector de movimiento candidato comprende además seleccionar el vector de movimiento candidato en base a un coste de coincidencia asociado con el vector de movimiento candidato que incluye el coste de vector de movimiento; y
en el que determinar el vector de movimiento derivado comprende buscar, como parte de la búsqueda de movimiento, el primer conjunto de datos de referencia que mejor coincide con el segundo conjunto de datos de vídeo de referencia dentro de una ventana de búsqueda indicada por el vector de movimiento candidato y determinar el vector de movimiento derivado en base a un resultado de la búsqueda.
13. Un aparato para el procesamiento de derivación de vector de movimiento de lado de descodificador de datos de vídeo, comprendiendo el aparato:
medios para determinar una lista de candidatos de vector de movimiento que comprende una pluralidad de vectores de movimiento candidatos para derivar información de movimiento de un bloque actual de una imagen actual de datos de vídeo, en el que la información de movimiento indica un movimiento del bloque actual en relación con los datos de vídeo de referencia, y en el que la lista de candidatos de vector de movimiento comprende uno o más vectores de movimiento candidatos en modo de fusión o uno o más vectores de movimiento candidatos en modo de predicción de vector de movimiento avanzada;
medios para seleccionar el vector de movimiento candidato de la lista de candidatos de vector de movimiento; y medios para determinar un vector de movimiento derivado para el bloque actual que apunta a un conjunto de datos de referencia de una imagen de referencia, en el que determinar el vector de movimiento derivado comprende:
realizar una búsqueda de movimiento para un primer conjunto de datos de referencia de una primera imagen de referencia correspondiente a un segundo conjunto de datos de referencia fuera del bloque actual, apuntándose a la imagen de referencia por el vector de movimiento candidato, en el que el vector de movimiento candidato indica un punto de partida en la primera imagen de referencia para la búsqueda de movimiento; y
refinar el vector de movimiento candidato para determinar un vector de movimiento derivado que apunta al primer conjunto de datos de referencia, en el que el primer conjunto de datos de referencia y el segundo conjunto de datos de referencia representan los datos de referencia de la mejor coincidencia, en el que la mejor coincidencia se basa en un coste de coincidencia entre el primer conjunto de datos de referencia de la primera imagen de referencia y el segundo conjunto de datos de referencia;
en el que el coste de coincidencia comprende una magnitud de una diferencia entre el vector de movimiento derivado y el vector de movimiento candidato.
14. Un medio no transitorio legible por ordenador que tiene instrucciones almacenadas en el mismo que, cuando se ejecutan, hacen que uno o más procesadores realicen el procedimiento de una cualquiera de las reivindicaciones 1 a 12.
ES16718538T 2015-03-27 2016-03-25 Derivación de vector de movimiento en codificación de vídeo Active ES2900029T3 (es)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201562139572P 2015-03-27 2015-03-27
US201562182367P 2015-06-19 2015-06-19
US15/080,478 US10200711B2 (en) 2015-03-27 2016-03-24 Motion vector derivation in video coding
PCT/US2016/024332 WO2016160608A1 (en) 2015-03-27 2016-03-25 Motion vector derivation in video coding

Publications (1)

Publication Number Publication Date
ES2900029T3 true ES2900029T3 (es) 2022-03-15

Family

ID=56974464

Family Applications (2)

Application Number Title Priority Date Filing Date
ES16715214T Active ES2898862T3 (es) 2015-03-27 2016-03-25 Derivación de información de movimiento para subbloques en codificación de vídeo
ES16718538T Active ES2900029T3 (es) 2015-03-27 2016-03-25 Derivación de vector de movimiento en codificación de vídeo

Family Applications Before (1)

Application Number Title Priority Date Filing Date
ES16715214T Active ES2898862T3 (es) 2015-03-27 2016-03-25 Derivación de información de movimiento para subbloques en codificación de vídeo

Country Status (27)

Country Link
US (3) US11330284B2 (es)
EP (3) EP3275186B1 (es)
JP (3) JP6740243B2 (es)
KR (3) KR102520296B1 (es)
CN (3) CN107534766B (es)
AU (5) AU2016243518B2 (es)
BR (1) BR112017020635A2 (es)
CA (3) CA2976827C (es)
CL (3) CL2017002383A1 (es)
CO (3) CO2017009675A2 (es)
DK (2) DK3275186T3 (es)
ES (2) ES2898862T3 (es)
HK (1) HK1243259A1 (es)
HU (2) HUE056702T2 (es)
IL (1) IL253849B (es)
MX (3) MX2017012060A (es)
MY (3) MY188593A (es)
NZ (2) NZ734554A (es)
PH (3) PH12017501440A1 (es)
PL (2) PL3275186T3 (es)
PT (2) PT3275186T (es)
RU (3) RU2705428C2 (es)
SA (3) SA517382335B1 (es)
SG (3) SG11201706534TA (es)
SI (2) SI3275188T1 (es)
TW (3) TW201639370A (es)
WO (3) WO2016160609A1 (es)

Families Citing this family (215)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014082541A (ja) * 2012-10-12 2014-05-08 National Institute Of Information & Communication Technology 互いに類似した情報を含む複数画像のデータサイズを低減する方法、プログラムおよび装置
US11330284B2 (en) 2015-03-27 2022-05-10 Qualcomm Incorporated Deriving motion information for sub-blocks in video coding
EP4013051A1 (en) * 2015-06-05 2022-06-15 Dolby Laboratories Licensing Corporation Methods for encoding and decoding intra-frame prediction
US10375413B2 (en) 2015-09-28 2019-08-06 Qualcomm Incorporated Bi-directional optical flow for video coding
US10390038B2 (en) * 2016-02-17 2019-08-20 Telefonaktiebolaget Lm Ericsson (Publ) Methods and devices for encoding and decoding video pictures using a denoised reference picture
WO2017157281A1 (en) * 2016-03-16 2017-09-21 Mediatek Inc. Method and apparatus of pattern-based motion vector derivation for video coding
KR102584349B1 (ko) * 2016-03-28 2023-10-04 로즈데일 다이나믹스 엘엘씨 인터 예측 모드 기반 영상 처리 방법 및 이를 위한 장치
US10939099B2 (en) * 2016-04-22 2021-03-02 Lg Electronics Inc. Inter prediction mode-based image processing method and device therefor
US10593015B2 (en) * 2016-05-04 2020-03-17 Texas Instruments Incorporated Apparatus and method for efficient motion estimation
CN109565592B (zh) * 2016-06-24 2020-11-17 华为技术有限公司 一种使用基于分割的视频编码块划分的视频编码设备和方法
CN116708783A (zh) * 2016-07-12 2023-09-05 韩国电子通信研究院 图像编码/解码方法以及用于该方法的记录介质
CN116567226A (zh) * 2016-08-11 2023-08-08 Lx 半导体科技有限公司 图像编码/解码设备和图像数据的发送设备
US10368087B2 (en) * 2016-09-20 2019-07-30 Ati Technologies Ulc Dynamic reload of video encoder motion estimation search window under performance/power constraints
US10778999B2 (en) 2016-09-30 2020-09-15 Qualcomm Incorporated Frame rate up-conversion coding mode with affine motion model
JP6700489B2 (ja) * 2016-09-30 2020-05-27 華為技術有限公司Huawei Technologies Co.,Ltd. インター予測を介する画像符号化および復号のための方法および装置
US10616582B2 (en) 2016-09-30 2020-04-07 Qualcomm Incorporated Memory and bandwidth reduction of stored data in image/video coding
JP6968228B2 (ja) * 2016-09-30 2021-11-17 華為技術有限公司Huawei Technologies Co., Ltd. インター予測を介する画像符号化および復号のための方法および装置
CN109496431A (zh) * 2016-10-13 2019-03-19 富士通株式会社 图像编码/解码方法、装置以及图像处理设备
CN106780363B (zh) * 2016-11-21 2019-07-23 北京金山安全软件有限公司 一种图片处理方法、装置及电子设备
CN117528107A (zh) * 2016-11-28 2024-02-06 英迪股份有限公司 图像编码方法、图像解码方法及用于传送比特流的方法
US20210136400A1 (en) * 2016-11-29 2021-05-06 Mediatek Inc. Method and apparatus of merge mode derivation for video coding
KR102414924B1 (ko) * 2016-12-05 2022-06-30 엘지전자 주식회사 영상 코딩 시스템에서 영상 디코딩 방법 및 장치
WO2018110180A1 (ja) * 2016-12-15 2018-06-21 シャープ株式会社 動きベクトル生成装置、予測画像生成装置、動画像復号装置、および動画像符号化装置
CN110140355B (zh) * 2016-12-27 2022-03-08 联发科技股份有限公司 用于视频编解码的双向模板运动向量微调的方法及装置
US10291928B2 (en) 2017-01-10 2019-05-14 Blackberry Limited Methods and devices for inter-prediction using motion vectors for video coding
CN116886897A (zh) 2017-01-16 2023-10-13 世宗大学校产学协力团 影像解码/编码方法以及传送比特流的方法
EP3595313A1 (en) * 2017-03-10 2020-01-15 Sony Corporation Image processing device and method
US20200007885A1 (en) * 2017-03-10 2020-01-02 Sony Corporation Image processing apparatus and method
WO2018172609A2 (en) * 2017-03-21 2018-09-27 Nokia Technologies Oy Motion compensation in video encoding and decoding
WO2018173895A1 (ja) * 2017-03-21 2018-09-27 シャープ株式会社 予測画像生成装置、動画像復号装置、および動画像符号化装置
US10595035B2 (en) * 2017-03-22 2020-03-17 Qualcomm Incorporated Constraining motion vector information derived by decoder-side motion vector derivation
US10491917B2 (en) * 2017-03-22 2019-11-26 Qualcomm Incorporated Decoder-side motion vector derivation
WO2018174618A1 (ko) * 2017-03-22 2018-09-27 한국전자통신연구원 참조 블록을 사용하는 예측 방법 및 장치
TWI838914B (zh) * 2017-04-13 2024-04-11 美商松下電器(美國)知識產權公司 編碼裝置、解碼裝置及非暫時性電腦可讀取媒體
EP3611925A4 (en) * 2017-04-13 2020-03-25 Panasonic Intellectual Property Corporation of America ENCODING DEVICE, DECODING DEVICE, ENCODING METHOD, AND DECODING METHOD
WO2018193967A1 (ja) * 2017-04-19 2018-10-25 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ 符号化装置、復号装置、符号化方法及び復号方法
WO2018193968A1 (ja) * 2017-04-19 2018-10-25 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ 符号化装置、復号装置、符号化方法及び復号方法
CN117014631A (zh) * 2017-04-27 2023-11-07 松下电器(美国)知识产权公司 解码装置、编码装置以及非暂时性记录介质
US10805630B2 (en) 2017-04-28 2020-10-13 Qualcomm Incorporated Gradient based matching for motion search and derivation
US10735761B2 (en) * 2017-05-19 2020-08-04 Mediatek Inc Method and apparatus of video coding
US11616976B2 (en) 2017-06-09 2023-03-28 Electronics And Telecommunications Research Institute Video encoding/decoding method and device, and recording medium storing bit stream
CN109089119B (zh) 2017-06-13 2021-08-13 浙江大学 一种运动矢量预测的方法及设备
US20200014945A1 (en) * 2018-07-08 2020-01-09 Mellanox Technologies, Ltd. Application acceleration
US11252464B2 (en) 2017-06-14 2022-02-15 Mellanox Technologies, Ltd. Regrouping of video data in host memory
US20200014918A1 (en) * 2018-07-08 2020-01-09 Mellanox Technologies, Ltd. Application accelerator
US20190007699A1 (en) * 2017-06-28 2019-01-03 Futurewei Technologies, Inc. Decoder Side Motion Vector Derivation in Video Coding
GB2563936A (en) * 2017-06-30 2019-01-02 Canon Kk Method and apparatus for encoding or decoding a flag during video data encoding
IL271770B2 (en) * 2017-06-30 2024-03-01 Huawei Tech Co Ltd Search area for motion vector refinement
WO2019001739A1 (en) * 2017-06-30 2019-01-03 Huawei Technologies Co., Ltd. ERROR RESILIENCE AND PARALLEL PROCESSING FOR MOTION VECTOR CALCULATION DECODER SIDE
WO2019001741A1 (en) * 2017-06-30 2019-01-03 Huawei Technologies Co., Ltd. MOTION VECTOR REFINEMENT FOR MULTI-REFERENCE PREDICTION
WO2019009567A1 (ko) * 2017-07-03 2019-01-10 엘지전자 주식회사 영상 코딩 시스템에서 인터 예측에 따른 영상 디코딩 방법 및 장치
GB2588563B (en) * 2017-07-04 2021-10-20 Canon Kk Method and apparatus for encoding or decoding video data with sub-pixel motion vector refinement
US20200154124A1 (en) * 2017-07-04 2020-05-14 Lg Electronics Inc. Image decoding method based on inter prediction and image decoding apparatus therefor
GB2564133B (en) * 2017-07-04 2021-03-17 Canon Kk Method and apparatus for encoding or decoding video data with sub-pixel motion vector refinement
CN110832859B (zh) * 2017-07-11 2022-02-25 华为技术有限公司 一种基于模板匹配的解码方法及装置
CN110999293B (zh) * 2017-07-31 2022-11-04 韩国电子通信研究院 图像编码/解码方法和装置以及存储比特流的记录介质
JP6994868B2 (ja) * 2017-08-09 2022-01-14 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ 符号化装置、復号装置、符号化方法、および復号方法
WO2019032765A1 (en) * 2017-08-09 2019-02-14 Vid Scale, Inc. CONVERSION-ELEVATION OF FRAME FREQUENCY WITH REDUCED COMPLEXITY
US10659788B2 (en) 2017-11-20 2020-05-19 Google Llc Block-based optical flow estimation for motion compensated prediction in video coding
US11917128B2 (en) * 2017-08-22 2024-02-27 Google Llc Motion field estimation based on motion trajectory derivation
CN117615154A (zh) * 2017-08-29 2024-02-27 株式会社Kt 视频解码和编码方法及用于存储压缩视频数据的装置
EP3451669A1 (en) * 2017-08-29 2019-03-06 Thomson Licensing Methods and apparatus for improved compression/decompression using frame rate up conversion tools
EP3451665A1 (en) * 2017-09-01 2019-03-06 Thomson Licensing Refinement of internal sub-blocks of a coding unit
MX2020001436A (es) * 2017-09-26 2020-03-20 Panasonic Ip Corp America Codificador, decodificador, metodo de codificacion y metodo de decodificacion.
WO2019066602A1 (ko) * 2017-09-29 2019-04-04 엘지전자 주식회사 영상 코딩 시스템에서 인터 예측 방법 및 장치
WO2019072369A1 (en) * 2017-10-09 2019-04-18 Huawei Technologies Co., Ltd. PRUNING MOTION VECTOR LIST
WO2019072370A1 (en) 2017-10-09 2019-04-18 Huawei Technologies Co., Ltd. MEMORY ACCESS WINDOW AND FILLING FOR VECTOR MOVEMENT REFINEMENT
WO2019072368A1 (en) * 2017-10-09 2019-04-18 Huawei Technologies Co., Ltd. LIMITED MEMORY ACCESS WINDOW FOR MOTION VECTOR REFINEMENT
WO2019072371A1 (en) * 2017-10-09 2019-04-18 Huawei Technologies Co., Ltd. MEMORY ACCESS WINDOW FOR PREDICTION SUB-BLOCK MOTION VECTOR CALCULATION
CN111201792B (zh) 2017-10-09 2022-06-14 华为技术有限公司 指向分数像素点位置的运动矢量的修正运动矢量
WO2019072373A1 (en) * 2017-10-09 2019-04-18 Huawei Technologies Co., Ltd. UPDATING MODELS FOR REFINING MOTION VECTORS
US10785494B2 (en) * 2017-10-11 2020-09-22 Qualcomm Incorporated Low-complexity design for FRUC
WO2019087978A1 (ja) * 2017-10-30 2019-05-09 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ 符号化装置、復号装置、符号化方法及び復号方法
KR102604775B1 (ko) * 2017-11-09 2023-11-21 삼성전자주식회사 움직임 정보의 부호화 장치 및 방법, 및 복호화 장치 및 방법
WO2019103564A1 (ko) * 2017-11-27 2019-05-31 엘지전자 주식회사 영상 코딩 시스템에서 인터 예측에 따른 영상 디코딩 방법 및 장치
CN117336504A (zh) * 2017-12-31 2024-01-02 华为技术有限公司 图像预测方法、装置以及编解码器
WO2020065520A2 (en) 2018-09-24 2020-04-02 Beijing Bytedance Network Technology Co., Ltd. Extended merge prediction
WO2019135648A1 (ko) * 2018-01-08 2019-07-11 삼성전자 주식회사 움직임 정보의 부호화 및 복호화 방법, 및 움직임 정보의 부호화 및 복호화 장치
WO2019139013A1 (ja) * 2018-01-09 2019-07-18 シャープ株式会社 動きベクトル導出装置、動画像復号装置および動画像符号化装置
US11265551B2 (en) * 2018-01-18 2022-03-01 Qualcomm Incorporated Decoder-side motion vector derivation
CN118042154A (zh) * 2018-01-25 2024-05-14 三星电子株式会社 使用基于子块的运动补偿进行视频信号处理的方法和装置
US11310526B2 (en) 2018-01-26 2022-04-19 Mediatek Inc. Hardware friendly constrained motion vector refinement
WO2019146718A1 (ja) * 2018-01-29 2019-08-01 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ 符号化装置、復号装置、符号化方法及び復号方法
US10523948B2 (en) 2018-02-05 2019-12-31 Tencent America LLC Method and apparatus for video coding
CN111903133A (zh) * 2018-02-15 2020-11-06 艾锐势有限责任公司 用于模板匹配的可变模板尺寸
WO2019164031A1 (ko) * 2018-02-22 2019-08-29 엘지전자 주식회사 영상 코딩 시스템에서 블록 분할 구조에 따른 영상 디코딩 방법 및 장치
CN117640961A (zh) 2018-03-19 2024-03-01 英迪股份有限公司 图像解码方法、图像编码方法和存储比特流的记录介质
SG11202007843YA (en) * 2018-03-19 2020-10-29 Qualcomm Inc Improvements to advanced temporal motion vector prediction
CN111955008A (zh) * 2018-03-29 2020-11-17 世宗大学校产学协力团 用于对图像编码/解码的方法和设备
CN110324637B (zh) 2018-03-29 2023-11-17 华为技术有限公司 一种双向帧间预测方法及装置
JP7248013B2 (ja) 2018-03-30 2023-03-29 株式会社ソシオネクスト 復号方法、復号装置、符号化装置及びプログラム
WO2019188942A1 (en) * 2018-03-30 2019-10-03 Sharp Kabushiki Kaisha Systems and methods for performing motion compensated prediction for video coding
EP3777176A4 (en) * 2018-03-30 2022-08-17 Hulu, LLC TEMPLATE REFINED BI PREDICTION FOR VIDEO CODING
CN111971966A (zh) * 2018-03-30 2020-11-20 韩国电子通信研究院 图像编码/解码方法和设备以及存储比特流的记录介质
TWI700922B (zh) * 2018-04-02 2020-08-01 聯發科技股份有限公司 用於視訊編解碼系統中的子塊運動補償的視訊處理方法和裝置
CN110337810B (zh) * 2018-04-02 2022-01-14 北京大学 用于视频处理的方法和设备
CN112055965A (zh) 2018-04-04 2020-12-08 日本放送协会 预测图像校正装置、图像编码装置、图像解码装置以及程序
US10958928B2 (en) * 2018-04-10 2021-03-23 Qualcomm Incorporated Decoder-side motion vector derivation for video coding
US20190320196A1 (en) * 2018-04-12 2019-10-17 Arris Enterprises Llc Motion Information Storage for Video Coding and Signaling
WO2019203517A1 (ko) * 2018-04-15 2019-10-24 엘지전자 주식회사 영상 코딩 시스템에서 움직임 정보 도출 방법 및 장치
WO2019203513A1 (ko) * 2018-04-16 2019-10-24 엘지전자 주식회사 영상 코딩 시스템에서 dmvd 를 이용한 인터 예측에 따른 영상 디코딩 방법 및 장치
US10779002B2 (en) 2018-04-17 2020-09-15 Qualcomm Incorporated Limitation of the MVP derivation based on decoder-side motion vector derivation
US20210120262A1 (en) * 2018-04-18 2021-04-22 Mediatek Inc. Candidate Reorganizing with Advanced Control in Video Coding
WO2019225932A1 (ko) * 2018-05-21 2019-11-28 엘지전자 주식회사 영상 코딩 시스템에서 dmvr을 사용하는 영상 디코딩 방법 및 그 장치
EP3804325A1 (en) * 2018-05-28 2021-04-14 InterDigital VC Holdings, Inc. Data dependency in coding/decoding
EP3804329A1 (en) 2018-06-01 2021-04-14 FRAUNHOFER-GESELLSCHAFT zur Förderung der angewandten Forschung e.V. Video codec using template matching prediction
WO2019234598A1 (en) 2018-06-05 2019-12-12 Beijing Bytedance Network Technology Co., Ltd. Interaction between ibc and stmvp
WO2019234669A1 (en) * 2018-06-07 2019-12-12 Beijing Bytedance Network Technology Co., Ltd. Signaled mv precision
JP2021526329A (ja) * 2018-06-07 2021-09-30 インターデジタル ヴイシー ホールディングス, インコーポレイテッド 映像のコード化又は映像の復号のためのシンタックス要素
EP3591969A1 (en) * 2018-07-02 2020-01-08 InterDigital VC Holdings, Inc. Syntax elements for video encoding or decoding
MX2020012662A (es) 2018-06-08 2021-02-09 Kt Corp Método y aparato para procesar una señal de video.
WO2019245260A1 (ko) * 2018-06-18 2019-12-26 세종대학교 산학협력단 영상 부호화/복호화 방법 및 장치
TWI723430B (zh) 2018-06-19 2021-04-01 大陸商北京字節跳動網絡技術有限公司 不同精度的多個候選
KR20210022617A (ko) 2018-06-21 2021-03-03 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 칼라 컴포넌트 간의 서브 블록 mv 상속
CN110636298B (zh) 2018-06-21 2022-09-13 北京字节跳动网络技术有限公司 对于Merge仿射模式和非Merge仿射模式的统一约束
WO2020004931A1 (ko) * 2018-06-27 2020-01-02 엘지전자 주식회사 영상 코딩 시스템에서 인터 예측에 따른 영상 처리 방법 및 장치
WO2020005002A1 (ko) * 2018-06-28 2020-01-02 엘지전자 주식회사 영상 코딩 시스템에서 인터 예측에 따른 템플릿 영역 도출 방법 및 장치
CA3104570C (en) * 2018-06-28 2023-05-23 Huawei Technologies Co., Ltd. Memory access window and padding for motion vector refinement and motion compensation
KR20240007298A (ko) 2018-06-29 2024-01-16 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 Lut에서의 모션 후보들의 검사 순서
EP3817381A4 (en) * 2018-06-29 2022-04-27 Electronics and Telecommunications Research Institute IMAGE DECODING/CODING APPARATUS AND METHOD FOR PROCESSING THROUGHPUT IMPROVEMENT, AND RECORDING MEDIA STORAGE OF A BITSTREAM
TWI752331B (zh) 2018-06-29 2022-01-11 大陸商北京字節跳動網絡技術有限公司 當向Merge/AMVP添加HMVP候選時的部分/完全修剪
CN114125450B (zh) 2018-06-29 2023-11-17 北京字节跳动网络技术有限公司 一种用于处理视频数据的方法、装置和计算机可读介质
TWI728390B (zh) 2018-06-29 2021-05-21 大陸商北京字節跳動網絡技術有限公司 查找表尺寸
CN110662046B (zh) * 2018-06-29 2022-03-25 北京字节跳动网络技术有限公司 视频处理方法、装置和可读存储介质
CN114466197A (zh) 2018-06-29 2022-05-10 北京字节跳动网络技术有限公司 用于查找表更新的编码的运动信息的选择
EP3794824A1 (en) 2018-06-29 2021-03-24 Beijing Bytedance Network Technology Co. Ltd. Conditions for updating luts
KR102627814B1 (ko) 2018-06-29 2024-01-23 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 룩업 테이블의 업데이트: fifo, 제약된 fifo
CN110662075B (zh) 2018-06-29 2023-04-25 北京字节跳动网络技术有限公司 改进的时域运动矢量预测推导
CN117354509A (zh) * 2018-06-29 2024-01-05 英迪股份有限公司 对图像解码和编码的方法及非暂态计算机可读存储介质
US11758175B2 (en) * 2018-06-30 2023-09-12 B1 Institute Of Image Technology, Inc Image encoding/decoding method and apparatus
TWI719522B (zh) * 2018-06-30 2021-02-21 大陸商北京字節跳動網絡技術有限公司 用於視頻編碼的對稱性雙向預測模式
TWI719526B (zh) 2018-07-02 2021-02-21 大陸商北京字節跳動網絡技術有限公司 查找表的更新
US10638153B2 (en) * 2018-07-02 2020-04-28 Tencent America LLC For decoder side MV derivation and refinement
WO2020009427A1 (ko) * 2018-07-02 2020-01-09 엘지전자 주식회사 영상 코딩 시스템의 인터 예측에서 템플릿 기반의 후보 리스트 재정렬 방법 및 장치
US10516885B1 (en) 2018-07-11 2019-12-24 Tencent America LLC Method and apparatus for video coding
US10701384B2 (en) 2018-08-01 2020-06-30 Tencent America LLC Method and apparatus for improvement on decoder side motion derivation and refinement
US11336914B2 (en) * 2018-08-16 2022-05-17 Qualcomm Incorporated History-based candidate list with classification
US10958932B2 (en) * 2018-09-12 2021-03-23 Qualcomm Incorporated Inter-prediction coding of video data using generated motion vector predictor list including non-adjacent blocks
TWI820211B (zh) 2018-09-12 2023-11-01 大陸商北京字節跳動網絡技術有限公司 取決於總數減去k的開始檢查hmvp候選的條件
SG11202102569QA (en) * 2018-09-13 2021-04-29 Huawei Tech Co Ltd Apparatus and method for conditional decoder-side motion vector refinement in video coding
CN116546213A (zh) 2018-09-19 2023-08-04 北京字节跳动网络技术有限公司 具有自适应运动矢量分辨率的仿射模式的语法重用
JP6976916B2 (ja) * 2018-09-21 2021-12-08 Kddi株式会社 画像復号装置、画像符号化装置、画像処理システム及びプログラム
WO2020070730A2 (en) * 2018-10-06 2020-04-09 Beijing Bytedance Network Technology Co., Ltd. Size restriction based on affine motion information
WO2020084460A1 (en) * 2018-10-22 2020-04-30 Beijing Bytedance Network Technology Co., Ltd. Decoder side motion vector derivation in the presence of multi-hypothesis prediction
WO2020084475A1 (en) * 2018-10-22 2020-04-30 Beijing Bytedance Network Technology Co., Ltd. Utilization of refined motion vector
WO2020084476A1 (en) 2018-10-22 2020-04-30 Beijing Bytedance Network Technology Co., Ltd. Sub-block based prediction
WO2020084554A1 (en) 2018-10-24 2020-04-30 Beijing Bytedance Network Technology Co., Ltd. Searching based motion candidate derivation for sub-block motion vector prediction
CN117768658A (zh) 2018-11-06 2024-03-26 北京字节跳动网络技术有限公司 依赖位置的对运动信息的存储
WO2020096755A1 (en) * 2018-11-08 2020-05-14 Interdigital Vc Holdings, Inc. Quantization for video encoding or decoding based on the surface of a block
CN112823514A (zh) * 2018-11-08 2021-05-18 Oppo广东移动通信有限公司 图像信号编码/解码方法及其设备
WO2020094149A1 (en) * 2018-11-10 2020-05-14 Beijing Bytedance Network Technology Co., Ltd. Rounding in triangular prediction mode
EP3857879A4 (en) 2018-11-12 2022-03-16 Beijing Bytedance Network Technology Co., Ltd. SIMPLIFICATION OF COMBINED INTER-INTRA PREDICTION
KR20210091161A (ko) 2018-11-20 2021-07-21 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 부분적 위치에 기반한 차분 계산
WO2020103877A1 (en) 2018-11-20 2020-05-28 Beijing Bytedance Network Technology Co., Ltd. Coding and decoding of video coding modes
KR20240024335A (ko) 2018-11-22 2024-02-23 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 서브 블록 기반 인터 예측을 위한 조정 방법
CN113170183B (zh) * 2018-11-22 2024-04-02 北京字节跳动网络技术有限公司 用于具有几何分割的帧间预测的修剪方法
US10778977B2 (en) * 2018-12-05 2020-09-15 Qualcomm Incorporated Triangle motion information for video coding
CN116980598A (zh) * 2018-12-21 2023-10-31 北京达佳互联信息技术有限公司 用于视频解码的方法和装置及存储介质
CN113196747B (zh) * 2018-12-21 2023-04-14 北京字节跳动网络技术有限公司 当前图片参考模式下的信息信令通知
US20220150511A1 (en) * 2018-12-21 2022-05-12 Electronics And Telecommunications Research Institute Image encoding/decoding method and device, and recording medium having bitstream stored therein
WO2020135465A1 (en) 2018-12-28 2020-07-02 Beijing Bytedance Network Technology Co., Ltd. Modified history based motion prediction
CN113302935A (zh) * 2019-01-02 2021-08-24 瑞典爱立信有限公司 视频编码/解码***中的端运动细化
WO2020140243A1 (zh) 2019-01-03 2020-07-09 北京大学 视频图像处理方法与装置
WO2020142685A1 (en) * 2019-01-03 2020-07-09 Beijing Dajia Internet Information Technology Co., Ltd. Video coding with triangle prediction
JP7275286B2 (ja) 2019-01-10 2023-05-17 北京字節跳動網絡技術有限公司 Lut更新の起動
CN113383554B (zh) 2019-01-13 2022-12-16 北京字节跳动网络技术有限公司 LUT和共享Merge列表之间的交互
WO2020147772A1 (en) 2019-01-16 2020-07-23 Beijing Bytedance Network Technology Co., Ltd. Motion candidates derivation
JP7277590B2 (ja) * 2019-01-18 2023-05-19 ウィルス インスティテュート オブ スタンダーズ アンド テクノロジー インコーポレイティド モーション補償を用いたビデオ信号処理方法及び装置
JP7263529B2 (ja) 2019-02-14 2023-04-24 北京字節跳動網絡技術有限公司 デコーダ側精緻化ツールのサイズ選択アプリケーション
CN116208777A (zh) 2019-02-28 2023-06-02 华为技术有限公司 编码器、解码器及相应的帧间预测方法
KR102635518B1 (ko) 2019-03-06 2024-02-07 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 변환된 단예측 후보의 사용
CN113545086A (zh) 2019-03-08 2021-10-22 北京达佳互联信息技术有限公司 用于视频编解码的双向光流和解码器侧运动矢量细化
CN112969072B (zh) 2019-03-11 2022-08-26 杭州海康威视数字技术股份有限公司 一种编解码方法、装置及其设备
WO2020184847A1 (ko) 2019-03-12 2020-09-17 엘지전자 주식회사 Dmvr 및 bdof 기반의 인터 예측 방법 및 장치
CN113615193B (zh) 2019-03-22 2024-06-25 北京字节跳动网络技术有限公司 Merge列表构建和其他工具之间的交互
KR20230169434A (ko) 2019-04-02 2023-12-15 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 디코더 측 움직임 벡터 유도
CN116506609B (zh) * 2019-04-09 2024-03-15 北京达佳互联信息技术有限公司 用于在视频编码中用信号发送合并模式的方法和装置
CN113785588B (zh) 2019-04-12 2023-11-24 北京字节跳动网络技术有限公司 基于矩阵的帧内预测的色度编解码模式确定
CN113748676B (zh) 2019-04-16 2024-05-10 北京字节跳动网络技术有限公司 帧内编解码模式下的矩阵推导
CN113767637B (zh) 2019-04-28 2023-09-22 北京字节跳动网络技术有限公司 对称运动矢量差编解码
WO2020221256A1 (en) * 2019-04-28 2020-11-05 Beijing Bytedance Network Technology Co., Ltd. Symmetric motion vector difference coding
WO2020221372A1 (en) 2019-05-01 2020-11-05 Beijing Bytedance Network Technology Co., Ltd. Context coding for matrix-based intra prediction
CN113812150B (zh) 2019-05-01 2023-11-28 北京字节跳动网络技术有限公司 使用滤波的基于矩阵的帧内预测
KR20220011127A (ko) 2019-05-22 2022-01-27 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 업샘플링을 이용한 행렬 기반 인트라 예측
CN114175658A (zh) * 2019-05-26 2022-03-11 北京达佳互联信息技术有限公司 用于改进视频编解码中的运动估计的方法和装置
JP2022535726A (ja) 2019-05-31 2022-08-10 北京字節跳動網絡技術有限公司 行列ベースイントラ予測における制約されたアップサンプリングプロセス
JP2022534320A (ja) 2019-06-05 2022-07-28 北京字節跳動網絡技術有限公司 マトリクスベースイントラ予測のためのコンテキスト決定
BR112021025804A2 (pt) * 2019-06-27 2022-02-08 Samsung Electronics Co Ltd Método de decodificação de vídeo, método de codificação de vídeo, e aparelho de decodificação de vídeo
JP7359936B2 (ja) 2019-07-20 2023-10-11 北京字節跳動網絡技術有限公司 パレットモードの使用の指示の条件依存符号化
CN117221536A (zh) * 2019-07-23 2023-12-12 北京字节跳动网络技术有限公司 调色板模式编解码的模式确定
KR20220038060A (ko) 2019-07-27 2022-03-25 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 참조 픽처 유형들에 따른 툴들의 사용의 제한들
CN114208184A (zh) 2019-08-13 2022-03-18 北京字节跳动网络技术有限公司 基于子块的帧间预测中的运动精度
WO2021052507A1 (en) 2019-09-22 2021-03-25 Beijing Bytedance Network Technology Co., Ltd. Sub-picture coding and decoding of video
US20210092427A1 (en) * 2019-09-23 2021-03-25 Qualcomm Incorporated Harmonized early termination in bdof and dmvr in video coding
WO2021061023A1 (en) * 2019-09-23 2021-04-01 Huawei Technologies Co., Ltd. Signaling for motion vector refinement
CN112204983A (zh) * 2019-09-24 2021-01-08 北京大学 一种视频处理方法、设备及存储介质
CN110730350B (zh) * 2019-09-25 2021-08-24 杭州电子科技大学 结合编码深度估计和贝叶斯判决的shvc快速编码方法
WO2021056438A1 (zh) * 2019-09-27 2021-04-01 深圳市大疆创新科技有限公司 点云数据处理方法及其装置、激光雷达、可移动平台
WO2020251418A2 (en) * 2019-10-01 2020-12-17 Huawei Technologies Co., Ltd. Method and apparatus of slice-level signaling for bi-directional optical flow and decoder side motion vector refinement
WO2020256601A2 (en) * 2019-10-03 2020-12-24 Huawei Technologies Co., Ltd. Method and apparatus of picture-level signaling for bidirectional optical flow and decoder side motion vector refinement
CN117579823A (zh) 2019-10-28 2024-02-20 北京字节跳动网络技术有限公司 基于颜色分量的语法信令通知和解析
US11936899B2 (en) * 2021-03-12 2024-03-19 Lemon Inc. Methods and systems for motion candidate derivation
US11671616B2 (en) 2021-03-12 2023-06-06 Lemon Inc. Motion candidate derivation
WO2022211492A1 (ko) * 2021-04-02 2022-10-06 현대자동차주식회사 디코더 측면의 움직임 보상을 이용하는 비디오 코딩방법 및 장치
US11936877B2 (en) * 2021-04-12 2024-03-19 Qualcomm Incorporated Template matching based affine prediction for video coding
US20230139186A1 (en) * 2021-10-28 2023-05-04 Tencent America LLC Template-matching based adaptive motion vector resolution (amvr)
WO2023104083A1 (en) * 2021-12-07 2023-06-15 Beijing Bytedance Network Technology Co., Ltd. Method, apparatus, and medium for video processing
US20230254500A1 (en) * 2022-02-07 2023-08-10 Nvidia Corporation Smart packet pacing for video frame streaming
WO2023163386A1 (ko) * 2022-02-24 2023-08-31 현대자동차주식회사 블록 경계 불연속성을 감소시키는 비디오 코딩을 위한 방법 및 장치
US20230300364A1 (en) * 2022-03-15 2023-09-21 Tencent America LLC Temporal based subblock type motion vector predictor
US11968356B2 (en) * 2022-03-16 2024-04-23 Qualcomm Incorporated Decoder-side motion vector refinement (DMVR) inter prediction using shared interpolation filters and reference pixels
US20230328225A1 (en) * 2022-04-11 2023-10-12 Tencent America LLC Bilateral matching with affine motion
US20230370604A1 (en) * 2022-05-16 2023-11-16 Tencent America LLC Flexible scaling factors for joint mvd coding
US20230421751A1 (en) * 2022-05-23 2023-12-28 Tencent America LLC Subblock-based motion vector predictor with mv offset derived by template matching
US20240022711A1 (en) * 2022-07-13 2024-01-18 Tencent America LLC Block vector refinement method for intra block copy

Family Cites Families (62)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1578136A3 (en) 1998-01-27 2005-10-19 AT&T Corp. Method and apparatus for encoding video shape and texture information
US6438168B2 (en) * 2000-06-27 2002-08-20 Bamboo Media Casting, Inc. Bandwidth scaling of a compressed video stream
CN101448162B (zh) 2001-12-17 2013-01-02 微软公司 处理视频图像的方法
US20040001546A1 (en) 2002-06-03 2004-01-01 Alexandros Tourapis Spatiotemporal prediction for bidirectionally predictive (B) pictures and motion vector prediction for multi-picture reference motion compensation
US7724827B2 (en) 2003-09-07 2010-05-25 Microsoft Corporation Multi-layer run level encoding and decoding
US7728909B2 (en) 2005-06-13 2010-06-01 Seiko Epson Corporation Method and system for estimating motion and compensating for perceived motion blur in digital video
EP1775954A1 (en) 2005-10-14 2007-04-18 Thomson Licensing Method and apparatus for reconstructing a video frame for spatial multi-layer video sequence
WO2008150498A1 (en) 2007-05-30 2008-12-11 University Of Georgia Research Foundation Inc. Human embryonic stem cell derived mesoderm-like epithelium transitions to mesenchymal progenitor cells
RU2505938C2 (ru) * 2008-04-10 2014-01-27 Квэлкомм Инкорпорейтед Интерполяция на основе искажений в зависимости от скорости передачи для кодирования видео на основе неперестраиваемого фильтра или адаптивного фильтра
US8705622B2 (en) 2008-04-10 2014-04-22 Qualcomm Incorporated Interpolation filter support for sub-pixel resolution in video coding
US9077971B2 (en) 2008-04-10 2015-07-07 Qualcomm Incorporated Interpolation-like filtering of integer-pixel positions in video coding
JP5406465B2 (ja) 2008-04-24 2014-02-05 株式会社Nttドコモ 画像予測符号化装置、画像予測符号化方法、画像予測符号化プログラム、画像予測復号装置、画像予測復号方法及び画像予測復号プログラム
US8055025B2 (en) 2008-06-14 2011-11-08 City University Of Hong Kong Motion estimation method
CN101686393B (zh) 2008-09-28 2012-10-17 华为技术有限公司 应用于模板匹配的快速运动搜索方法及装置
KR101279573B1 (ko) 2008-10-31 2013-06-27 에스케이텔레콤 주식회사 움직임 벡터 부호화 방법 및 장치와 그를 이용한 영상 부호화/복호화 방법 및 장치
TWI405469B (zh) 2009-02-20 2013-08-11 Sony Corp Image processing apparatus and method
JP2010268259A (ja) 2009-05-15 2010-11-25 Sony Corp 画像処理装置および方法、並びにプログラム
KR101671460B1 (ko) 2009-09-10 2016-11-02 에스케이 텔레콤주식회사 움직임 벡터 부호화/복호화 방법 및 장치와 그를 이용한 영상 부호화/복호화 방법 및 장치
EP2493196A4 (en) 2009-10-20 2013-06-05 Sharp Kk IMAGE ENCODING APPARATUS, IMAGE DECODING APPARATUS, AND CODED DATA STRUCTURE
US10743027B2 (en) 2009-12-08 2020-08-11 Interdigital Madison Patent Holdings Methods and apparatus for adaptive template matching prediction for video encoding and decoding
CN102131091B (zh) 2010-01-15 2013-01-23 联发科技股份有限公司 解码端运动向量导出方法
US20110176611A1 (en) * 2010-01-15 2011-07-21 Yu-Wen Huang Methods for decoder-side motion vector derivation
WO2011094871A1 (en) 2010-02-05 2011-08-11 Sensio Technologies Inc. Method and apparatus of frame interpolation
JP5609737B2 (ja) 2010-04-13 2014-10-22 ソニー株式会社 信号処理装置および方法、符号化装置および方法、復号装置および方法、並びにプログラム
US8837592B2 (en) * 2010-04-14 2014-09-16 Mediatek Inc. Method for performing local motion vector derivation during video coding of a coding unit, and associated apparatus
WO2011142815A1 (en) 2010-05-12 2011-11-17 Thomson Licensing Methods and apparatus for uni-prediction of self-derivation of motion estimation
KR101454133B1 (ko) 2010-09-02 2014-10-23 엘지전자 주식회사 영상 부호화 및 복호화 방법과 이를 이용한 장치
EP2625858A4 (en) 2010-10-06 2015-01-14 Intel Corp SYSTEM AND METHOD FOR MOVING VECTOR REMOVAL WITH LOW COMPLEXITY
CN107277542B (zh) 2011-02-10 2019-12-10 太阳专利托管公司 动态图像解码方法、动态图像解码装置
CN102685504B (zh) 2011-03-10 2015-08-19 华为技术有限公司 视频图像的编解码方法、编码装置、解码装置及其***
CN103392340B (zh) 2011-03-14 2017-02-08 寰发股份有限公司 推导运动向量预测子的方法与装置
WO2012125178A1 (en) 2011-03-15 2012-09-20 Intel Corporation Low memory access motion vector derivation
US9143795B2 (en) 2011-04-11 2015-09-22 Texas Instruments Incorporated Parallel motion estimation in video coding
US9247266B2 (en) 2011-04-18 2016-01-26 Texas Instruments Incorporated Temporal motion data candidate derivation in video coding
CN107529708B (zh) 2011-06-16 2019-05-07 Ge视频压缩有限责任公司 解码器、编码器、解码和编码视频的方法及存储介质
US20130114717A1 (en) 2011-11-07 2013-05-09 Qualcomm Incorporated Generating additional merge candidates
GB2556489B (en) 2011-11-08 2018-11-21 Kt Corp A method of decoding a video signal using a merge mode
WO2013095180A1 (en) * 2011-12-22 2013-06-27 Intel Corporation Complexity scalable frame rate up-conversion
WO2013100791A1 (en) 2011-12-30 2013-07-04 Intel Corporation Method of and apparatus for scalable frame rate up-conversion
US20130188715A1 (en) 2012-01-09 2013-07-25 Qualcomm Incorporated Device and methods for merge list reordering in video coding
US9332259B2 (en) 2012-01-18 2016-05-03 Qualcomm Incorporated Indication of use of wavefront parallel processing in video coding
US9426463B2 (en) * 2012-02-08 2016-08-23 Qualcomm Incorporated Restriction of prediction units in B slices to uni-directional inter prediction
US9998726B2 (en) 2012-06-20 2018-06-12 Nokia Technologies Oy Apparatus, a method and a computer program for video coding and decoding
US9325990B2 (en) 2012-07-09 2016-04-26 Qualcomm Incorporated Temporal motion vector prediction in video coding extensions
US9998755B2 (en) 2012-10-03 2018-06-12 Mediatek Inc. Method and apparatus for motion information inheritance in three-dimensional video coding
US10375405B2 (en) 2012-10-05 2019-08-06 Qualcomm Incorporated Motion field upsampling for scalable coding based on high efficiency video coding
US9438928B2 (en) * 2012-11-05 2016-09-06 Lifesize, Inc. Mechanism for video encoding based on estimates of statistically-popular motion vectors in frame
EP2920962A4 (en) 2012-11-13 2016-07-20 Intel Corp ADAPTIVE TRANSFORMATION ENCODING OF CONTENT FOR NEXT GENERATION VIDEO
US10136143B2 (en) 2012-12-07 2018-11-20 Qualcomm Incorporated Advanced residual prediction in scalable and multi-view video coding
US9544566B2 (en) 2012-12-14 2017-01-10 Qualcomm Incorporated Disparity vector derivation
CN104104960B (zh) 2013-04-03 2017-06-27 华为技术有限公司 多级双向运动估计方法及设备
US10129544B2 (en) 2013-07-30 2018-11-13 Riversilica Technologies Pvt Ltd System and method for performing optimal temporal predictive mode decision in H.264 video coding
US9762927B2 (en) 2013-09-26 2017-09-12 Qualcomm Incorporated Sub-prediction unit (PU) based temporal motion vector prediction in HEVC and sub-PU design in 3D-HEVC
US9967558B1 (en) * 2013-12-17 2018-05-08 Google Llc Adaptive motion search control for variable block size partitions in video coding
US10531116B2 (en) 2014-01-09 2020-01-07 Qualcomm Incorporated Adaptive motion vector resolution signaling for video coding
US9967592B2 (en) * 2014-01-11 2018-05-08 Qualcomm Incorporated Block-based advanced residual prediction for 3D video coding
WO2015109598A1 (en) 2014-01-27 2015-07-30 Mediatek Singapore Pte. Ltd. Methods for motion parameter hole filling
US10412387B2 (en) 2014-08-22 2019-09-10 Qualcomm Incorporated Unified intra-block copy and inter-prediction
US11330284B2 (en) 2015-03-27 2022-05-10 Qualcomm Incorporated Deriving motion information for sub-blocks in video coding
US10616582B2 (en) 2016-09-30 2020-04-07 Qualcomm Incorporated Memory and bandwidth reduction of stored data in image/video coding
US10778999B2 (en) 2016-09-30 2020-09-15 Qualcomm Incorporated Frame rate up-conversion coding mode with affine motion model
US10805630B2 (en) 2017-04-28 2020-10-13 Qualcomm Incorporated Gradient based matching for motion search and derivation

Also Published As

Publication number Publication date
EP3275188B1 (en) 2021-11-17
BR112017020632A2 (pt) 2018-06-26
CN107431820A (zh) 2017-12-01
AU2020207821A1 (en) 2020-08-06
AU2016243521A1 (en) 2017-08-31
RU2017133236A (ru) 2019-04-05
US20160286232A1 (en) 2016-09-29
KR102520296B1 (ko) 2023-04-10
CA2976827C (en) 2023-08-29
TWI714565B (zh) 2021-01-01
RU2742298C2 (ru) 2021-02-04
PH12017501440A1 (en) 2018-01-15
PH12017501471A1 (en) 2018-01-29
CO2017009676A2 (es) 2017-12-15
US20160286230A1 (en) 2016-09-29
CA2976827A1 (en) 2016-10-06
US10958927B2 (en) 2021-03-23
KR20170131446A (ko) 2017-11-29
RU2705428C2 (ru) 2019-11-07
BR112017020635A2 (pt) 2018-06-26
WO2016160605A1 (en) 2016-10-06
IL253849A0 (en) 2017-09-28
PH12017501470A1 (en) 2018-01-15
CO2017009672A2 (es) 2017-12-15
MX2017012060A (es) 2018-01-12
SI3275186T1 (sl) 2021-12-31
CL2017002383A1 (es) 2018-06-15
CL2017002384A1 (es) 2018-06-15
AU2016243518A1 (en) 2017-08-31
JP6783788B2 (ja) 2020-11-11
DK3275186T3 (da) 2021-11-22
PL3275188T3 (pl) 2022-01-31
CN107409225A (zh) 2017-11-28
US20160286229A1 (en) 2016-09-29
NZ734552A (en) 2023-04-28
JP6740243B2 (ja) 2020-08-12
HK1243259A1 (zh) 2018-07-06
JP2018512810A (ja) 2018-05-17
CN107534766A (zh) 2018-01-02
SA517382337B1 (ar) 2021-05-30
RU2017133106A (ru) 2019-04-04
CN107431820B (zh) 2020-01-10
SI3275188T1 (sl) 2022-01-31
RU2017132847A3 (es) 2019-09-25
CO2017009675A2 (es) 2017-12-15
KR102519779B1 (ko) 2023-04-07
SA517382334B1 (ar) 2021-10-24
PT3275188T (pt) 2021-12-17
AU2016243518B2 (en) 2020-07-30
AU2020204590A1 (en) 2020-07-30
CN107534766B (zh) 2020-05-08
TW201639369A (zh) 2016-11-01
RU2017133236A3 (es) 2019-09-20
CA2976818A1 (en) 2016-10-06
CL2017002423A1 (es) 2018-07-13
MX2017012059A (es) 2018-01-12
DK3275188T3 (da) 2021-12-13
TWI705703B (zh) 2020-09-21
HUE056702T2 (hu) 2022-03-28
AU2016243520A1 (en) 2017-08-31
MY187812A (en) 2021-10-26
PL3275186T3 (pl) 2022-01-24
US11330284B2 (en) 2022-05-10
CN107409225B (zh) 2020-01-07
MX2017012065A (es) 2018-01-12
NZ734554A (en) 2023-03-31
SG11201706539PA (en) 2017-10-30
EP3275186A1 (en) 2018-01-31
KR20170131448A (ko) 2017-11-29
AU2020207821B2 (en) 2022-04-07
EP3275186B1 (en) 2021-10-20
EP3275187B1 (en) 2021-09-29
RU2017132847A (ru) 2019-04-10
BR112017020627A2 (pt) 2018-07-03
SG11201706534TA (en) 2017-10-30
MY187426A (en) 2021-09-22
KR20170131447A (ko) 2017-11-29
PT3275186T (pt) 2021-11-25
SA517382335B1 (ar) 2022-02-06
MX368146B (es) 2019-09-20
US10200711B2 (en) 2019-02-05
KR102519778B1 (ko) 2023-04-07
EP3275188A1 (en) 2018-01-31
TW201639368A (zh) 2016-11-01
TW201639370A (zh) 2016-11-01
WO2016160608A1 (en) 2016-10-06
EP3275187A1 (en) 2018-01-31
SG11201706537WA (en) 2017-10-30
RU2719296C2 (ru) 2020-04-17
MY188593A (en) 2021-12-22
CA2976828A1 (en) 2016-10-06
ES2898862T3 (es) 2022-03-09
JP2018513612A (ja) 2018-05-24
JP2018513611A (ja) 2018-05-24
RU2017133106A3 (es) 2019-09-11
HUE057250T2 (hu) 2022-04-28
IL253849B (en) 2021-03-25
WO2016160609A1 (en) 2016-10-06

Similar Documents

Publication Publication Date Title
ES2900029T3 (es) Derivación de vector de movimiento en codificación de vídeo
ES2755573T3 (es) Predicción de vector de movimiento temporal avanzada basada en unidades de subpredicción
KR20190120389A (ko) 아핀 모션 정보 도출
EP3308544A1 (en) Systems and methods of determining illumination compensation status for video coding
EP3308543A1 (en) Systems and methods of determining illumination compensation status for video coding
BR112017020632B1 (pt) Métodos e dispositivo para processar dados de vídeo e memória legível por computador
BR112017020627B1 (pt) Derivação de vetor de movimento em codificação de vídeo