ES3041562T3 - Video encoding and decoding method and apparatus - Google Patents

Video encoding and decoding method and apparatus

Info

Publication number
ES3041562T3
ES3041562T3 ES18919173T ES18919173T ES3041562T3 ES 3041562 T3 ES3041562 T3 ES 3041562T3 ES 18919173 T ES18919173 T ES 18919173T ES 18919173 T ES18919173 T ES 18919173T ES 3041562 T3 ES3041562 T3 ES 3041562T3
Authority
ES
Spain
Prior art keywords
block
motion vector
prediction
processed
candidate predicted
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
ES18919173T
Other languages
English (en)
Inventor
Xu Chen
Jicheng An
Jianhua Zheng
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.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Application granted granted Critical
Publication of ES3041562T3 publication Critical patent/ES3041562T3/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/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/105Selection of the reference unit for prediction within a chosen coding or prediction mode, e.g. adaptive choice of position and number of pixels used for prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/46Embedding additional information in the video signal during the compression process
    • H04N19/463Embedding additional information in the video signal during the compression process by compressing encoding parameters before transmission
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/513Processing of motion vectors
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/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/53Multi-resolution motion estimation; Hierarchical motion estimation
    • 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/577Motion compensation with bidirectional frame interpolation, i.e. using B-pictures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/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/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/567Motion estimation based on rate distortion criteria

Landscapes

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

Abstract

Las realizaciones de la presente solicitud divulgan un método de adquisición de vectores de movimiento, que comprende: determinar un bloque de referencia de un bloque a procesar, teniendo el bloque de referencia y el bloque a procesar una correlación preestablecida en el dominio del tiempo o del dominio espacial, teniendo el bloque de referencia un vector de movimiento inicial y uno o más desplazamientos de vectores de movimiento preestablecidos, obteniéndose el vector de movimiento inicial del bloque de referencia sobre la base de un vector de movimiento predicho del bloque de referencia, y obteniéndose un bloque predicho del bloque de referencia sobre la base del vector de movimiento inicial y uno o más desplazamientos de vectores de movimiento preestablecidos; y utilizar el vector de movimiento inicial del bloque de referencia como un vector de movimiento predicho del bloque a procesar. (Traducción automática con Google Translate, sin valor legal)

Description

DESCRIPCIÓN
Método y aparato de codificación y decodificación de vídeo
Campo técnico
Esta solicitud se refiere al campo de las tecnologías de codificación de vídeo, y en particular, a un método y aparato de codificación de vídeo.
Antecedentes
Una tecnología de vídeo digital puede ser ampliamente aplicada a varios aparatos, incluidos un televisor digital, un sistema de difusión digital en directo, un sistema de difusión inalámbrica, un asistente digital personal (PDA), un ordenador portátil, una tableta, un lector de libros electrónicos, una cámara digital, un aparato de grabación digital, un reproductor de medios digitales, un aparato de videojuegos, una consola de videojuegos, un teléfono celular o de radio por satélite, un aparato de videoconferencia, un aparato de transmisión de vídeo y similares. Un aparato de video digital implementa tecnologías de decodificación de video, por ejemplo, MPEG-2, MPEG-4, ITU-T H.263, decodificación de video avanzada (codificación de video avanzada, AVC) ITU-T H.264/MPEG-4 Parte 10 , ITU-T H.265 (también conocida como decodificación de vídeo de alta eficiencia (HEVC)), y tecnologías de decodificación de video descritas en partes extendidas de estos estándares. Los aparatos de vídeo digitales pueden enviar, recibir, codificar, decodificar y/o almacenar información de vídeo digital de manera más eficiente mediante la implementación de dichas tecnologías de decodificación de vídeo.
En una tecnología de compresión de vídeo, información redundante inherente en una secuencia de vídeo puede ser reducida o eliminada mediante la realización de predicción espacial (intra) y/o predicción temporal (inter). Para la decodificación de vídeo basada en bloques, una imagen de vídeo se puede dividir en bloques de vídeo. El bloque de vídeo también puede denominarse bloque de árbol, unidad de codificación/unidad de decodificación (unidad de codificación, CU) o nodo de codificación/nodo de decodificación. Un bloque de vídeo en un segmento intradecodificado (I) de una imagen se codifica mediante predicción espacial para una muestra de referencia en un bloque adyacente en la misma imagen. Un bloque de vídeo en un segmento interdecodificado (P o B) de una imagen se puede codificar a través de la predicción espacial para una muestra de referencia en un bloque adyacente en la misma imagen o predicción temporal para una muestra de referencia en otra imagen de referencia. La imagen puede denominarse fotograma y la imagen de referencia puede denominarse fotograma de referencia. El documento Xu Yaowu, et al, "METHOD AND APPARATUS FOR VIDEO CODING USING REFERENCE MOTION VECTORS", 2014, revela un método para decodificar un flujo de bits de video codificado.
El documento Chen, et al, "OFFSET VECTOR IDENTIFICATION OF TEMPORAL MOTION VECTOR PREDICTOR", 2018, revela un método para decodificar datos de video.
Compendio
Las realizaciones de esta solicitud se definen mediante las reivindicaciones adjuntas.
Breve descripción de los dibujos
La FIG. 1 es un diagrama de bloques de un ejemplo de un sistema de codificación de vídeo que puede configurarse para su uso en una realización de esta solicitud;
la FIG. 2 es un diagrama de bloques del sistema de un ejemplo de un codificador de vídeo que puede configurarse para su uso en una realización de esta solicitud;
la FIG. 3 es un diagrama de bloques del sistema de un ejemplo de un decodificador de vídeo que puede configurarse para su uso en una realización de esta solicitud;
la FIG. 4 es un diagrama de bloques de un ejemplo de un módulo de interpredicción que puede configurarse para su uso en una realización de esta solicitud;
la FIG. 5 es un diagrama de flujo de una implementación ejemplar de un modo de predicción de fusión;
la FIG. 6 es un diagrama de flujo de una implementación ejemplar de un modo de predicción de vector de movimiento avanzado;
la FIG. 7 es un diagrama de flujo de una implementación ejemplar de compensación de movimiento por un decodificador de vídeo que puede configurarse para su uso en una realización de esta solicitud;
la FIG. 8 es un diagrama esquemático de un ejemplo de una unidad de codificación y un bloque de imagen de posición adyacente asociado con la unidad de codificación;
la FIG. 9 es un diagrama de flujo de una implementación ejemplar de construcción de una lista de vectores de movimiento predichos candidatos;
la FIG. 10 es un diagrama esquemático de una implementación ejemplar de adición de un vector de movimiento candidato combinado a una lista de vectores de movimiento predichos candidatos en modo de fusión;
la FIG. 11 es un diagrama esquemático de una implementación ejemplar de adición de un vector de movimiento candidato a una lista de vectores de movimiento predichos candidatos en modo de fusión;
la FIG. 12 es un diagrama esquemático de una implementación ejemplar de adición de un vector de movimiento cero combinado a una lista de vectores de movimiento predichos candidatos en modo de fusión;
la FIG. 13 es un diagrama de flujo esquemático de un método para actualizar un vector de movimiento en la codificación de vídeo según una realización de esta solicitud;
la FIG. 14 es un diagrama de flujo esquemático de un método para actualizar un vector de movimiento en la decodificación de vídeo según una realización de esta solicitud;
la FIG. 15 es un diagrama de flujo esquemático de actualización de un vector de movimiento según una realización de esta solicitud;
la FIG. 16 es un diagrama de flujo esquemático de actualización de un vector de movimiento según una realización de esta solicitud;
las FIG. 17A y FIG. 17B son diagramas de flujo esquemático de actualización de un vector de movimiento según una realización de esta solicitud;
la FIG. 18 es un diagrama de flujo esquemático de actualización de un vector de movimiento según una realización de esta solicitud;
la FIG. 19 es un diagrama de flujo esquemático de un método para obtener un vector de movimiento en codificación de vídeo según una realización de esta solicitud.
la FIG. 20 es un diagrama de flujo esquemático de un método para obtener un vector de movimiento en decodificación de vídeo según una realización de esta solicitud.
la FIG. 21 es un diagrama de bloques esquemático de un aparato para obtener un vector de movimiento en decodificación de vídeo según una realización de esta solicitud; y
la FIG. 22 es un diagrama de bloques esquemático de un aparato de codificación de vídeo según una realización de esta solicitud.
Descripción de realizaciones
A continuación se describen de forma clara las soluciones técnicas en las realizaciones de esta solicitud con referencia a los dibujos adjuntos en las realizaciones de esta solicitud.
La FIG. 1 es un diagrama de bloque esquemático de un sistema 10 de codificación de vídeo según una realización de esta solicitud. Como se muestra en la FIG. 1, el sistema 10 incluye un aparato 12 fuente. El aparato 12 fuente genera datos de vídeo codificados que han de ser posteriormente decodificados por un aparato 14 de destino. El aparato 12 fuente y el aparato 14 de destino pueden incluir cualquiera de un amplio rango de aparatos, que incluye un ordenador de escritorio, un ordenador portátil, una tableta, un decodificador, un teléfono de mano tal como un teléfono "inteligente", un panel táctil "inteligente", un televisor, una cámara, un aparato de visualización, un reproductor de medios digitales, una videoconsola, un aparato de transmisión de vídeo, o similares. En algunos casos, el aparato 12 fuente y el aparato 14 de destino pueden estar equipados para comunicación inalámbrica. El aparato 14 de destino puede recibir los datos de vídeo codificados que se van a decodificar a través de un enlace 16. El enlace 16 puede incluir uno o más medios o aparatos que pueden transferir los datos de vídeo codificados desde el aparato 12 fuente al aparato 14 de destino. En una implementación factible, el enlace 16 puede incluir un medio de comunicación que permite que el aparato 12 fuente transmita directamente los datos de vídeo codificados al aparato 14 de destino en tiempo real. Los datos de vídeo codificados pueden modularse según un estándar de comunicación (por ejemplo, un protocolo de comunicación inalámbrica) y luego transmitirse al aparato 14 de destino. El medio de comunicación puede incluir cualquier medio de comunicación inalámbrica o por cable, por ejemplo, un espectro de radiofrecuencia o uno o más cables físicos de transmisión. El medio de comunicación puede constituir una parte de una red basada en paquetes (por ejemplo, una red de área local, una red de área amplia o una red global tal como Internet). El medio de comunicación puede incluir un enrutador, un conmutador, una estación base u otro dispositivo que facilita la comunicación desde el aparato 12 fuente al aparato 14 de destino.
De manera alternativa, los datos codificados pueden ser emitido a un aparato 24 de almacenamiento a través de una interfaz 22 de salida. De manera similar, se puede acceder a los datos codificados desde el aparato 24 de almacenamiento a través de una interfaz de entrada. El aparato 24 de almacenamiento puede incluir cualquiera de una pluralidad de medios de almacenamiento de datos dispersos o locales, por ejemplo, una unidad de disco duro, un disco Blu-ray, un DVD, un CD-ROM, una memoria flash, una memoria volátil o no volátil, o cualquier otro medio de almacenamiento digital apropiado configurado para almacenar los datos de vídeo codificados. En otro ejemplo, el aparato 24 de almacenamiento puede corresponder a un servidor de archivos, u otro aparato de almacenamiento intermedio que sea capaz de mantener un vídeo codificado generado por el aparato 12 fuente. El aparato 14 de destino puede acceder datos de vídeo almacenados del aparato 24 de almacenamiento a través de transmisión en continuo o descarga. El servidor de archivos puede ser cualquier tipo de servidor capaz de almacenar datos de vídeo codificados y transmitir esos datos de vídeo codificados al aparato 14 de destino. En una implementación factible, el servidor de archivos incluye un servidor de sitio web, un servidor de protocolo de transferencia de archivos, un aparato de almacenamiento conectado a la red o una unidad de disco local. El aparato 14 de destino puede acceder a los datos de vídeo codificados a través de cualquier conexión de datos estándar, incluida una conexión a Internet. La conexión de datos puede incluir un canal inalámbrico (por ejemplo, conexión Wi-Fi) o una conexión por cable (por ejemplo, un módem de cable) que sea adecuado para acceder a los datos de vídeo codificados almacenados en el servidor de archivos, o una combinación de los mismos. Los datos de vídeo codificados pueden ser transmitidos desde el aparato 24 de almacenamiento en un modo de transmisión en continuo, a través de descarga, o una combinación de los mismos.
Las tecnologías de esta solicitud no se limitan necesariamente a aplicaciones o configuraciones inalámbricas. Las tecnologías se puede aplicar a la codificación de vídeo para soportar una pluralidad de aplicaciones multimedia, por ejemplo, difusión de televisión por el aire, transmisión de televisión por cable, transmisión de televisión vía satélite, transmisión de vídeo en continuo (por ejemplo, a través de Internet), codificación de un vídeo digital para almacenar en un medio de almacenamiento de datos, decodificación un vídeo digital almacenado en un medio de almacenamiento de datos, u otra aplicación. En algunas realizaciones factibles, el sistema 10 puede estar configurado para soportar transmisión de vídeo unidireccional o bidireccional, para soportar aplicaciones tales como transmisión de vídeo en continuo, reproducción de vídeo, difusión de vídeo y/o videotelefonía.
En una implementación factible de la FIG. 1, el aparato 12 fuente incluye una fuente 18 de vídeo, un codificador 20 de vídeo y la interfaz 22 de salida. En algunos ejemplos, la interfaz 22 de salida puede incluir un modulador/demodulador (módem) y/o un transmisor. En el aparato 12 fuente, la fuente 18 de vídeo puede incluir, por ejemplo, las siguientes fuentes: un aparato de captura de vídeo (por ejemplo, una videocámara), un archivo de vídeo que incluye datos de vídeo previamente capturados, una interfaz de alimentación de vídeo para recibir vídeo de un proveedor de contenido de vídeo, y/o un sistema de gráficos por ordenador para generar datos de gráficos informáticos como una fuente de vídeo, o una combinación de los mismos. En una implementación factible, si la fuente 18 de vídeo es la cámara de vídeo, el aparato 12 fuente y el aparato 14 de destino pueden constituir un teléfono con cámara o un teléfono con vídeo. Por ejemplo, las tecnologías descritas en esta solicitud pueden ser aplicables a la decodificación de vídeo y pueden ser aplicables a aplicaciones inalámbricas y/o cableadas.
El codificador 20 de vídeo puede codificar un vídeo capturado o precapturado o un vídeo generado por un ordenador. Los datos de vídeo codificados pueden ser transmitidos directamente al aparato 14 de destino a través de la interfaz 22 de salida del aparato 12 fuente. Los datos de vídeo codificados se pueden también (o de manera alternativa) almacenar en el aparato 24 de almacenamiento, de modo que el aparato 14 de destino u otro aparato acceda posteriormente a los datos de vídeo codificados para decodificación y/o reproducción.
El aparato 14 de destino incluye una interfaz 28 de entrada, un decodificador 30 de vídeo, y un aparato 32 de visualización. En algunos ejemplos, la interfaz 28 de entrada incluye un receptor y/o un módem. La interfaz 28 de entrada del aparato 14 de destino recibe los datos de vídeo codificados a través del enlace 16. Los datos de vídeo codificados transmitidos o proporcionados al aparato 24 de almacenamiento a través del enlace 16 pueden incluir una pluralidad de elementos de sintaxis que son generados por el codificador 20 de vídeo y utilizados por un decodificador 30 de vídeo para decodificar los datos de vídeo. Estos elementos de sintaxis pueden incluirse en los datos de vídeo codificados que se transmiten en el medio de comunicaciones y que se almacenan en el medio de almacenamiento o en el servidor de archivos.
El aparato 32 de visualización puede estar integrado con el aparato 14 de destino o puede estar dispuesto fuera del aparato 14 de destino. En algunas implementaciones factibles, el aparato 14 de destino puede incluir un aparato de visualización integrado y también estar configurado para conectarse a una interfaz de un aparato de visualización externo. En otras implementaciones factibles, el aparato 14 de destino puede ser un aparato de visualización. Generalmente, el aparato 32 de visualización puede visualizar datos de vídeo decodificados a un usuario, y puede incluir una pluralidad de aparatos de visualización, por ejemplo, una pantalla de cristal líquido, una pantalla de plasma, una pantalla de diodo emisor de luz orgánico, o un aparato de visualización de otro tipo.
El codificador 20 de vídeo y el decodificador 30 de vídeo pueden funcionar según, por ejemplo, un estándar de compresión de codificación de vídeo de próxima generación (H.266) que se está desarrollando actualmente, y pueden cumplir con un modelo de prueba H.266 (JEM). Alternativamente, el codificador 20 de vídeo y el decodificador 30 de vídeo pueden operar según, por ejemplo, otros estándares dedicados o industriales tales como el estándar ITU-T H.265 o el estándar ITU-T H.264, o extensiones de estos estándares. El estándar ITU-T H.265 también se conoce como un estándar de codificación de video de alta eficiencia, y el estándar ITU-T H.264 se conoce alternativamente como MPEG-4 Parte 10 o codificación de video avanzada (AVC). Sin embargo, las técnicas de esta descripción no se limitan a ningún estándar de codificación en particular. En otras implementaciones factibles, los estándares de compresión de video incluyen MPEG-2 y ITU-T H.263.
Aunque no se muestra en la FIG. 1, en algunos aspectos, el codificador 20 de vídeo y el decodificador 30 de vídeo pueden estar integrados respectivamente con un codificador y decodificador de audio, y pueden incluir unidades de multiplexor-demultiplexor (MUX-DEMUX) apropiadas, u otro hardware y software, para codificar tanto un audio como un vídeo en un mismo flujo de datos o flujos de datos separados. Si corresponde, en algunas implementaciones factibles, la unidad MUX-DEMUX pueden cumplir con el protocolo multiplexor H.223 de ITU u otros protocolos, tales como el protocolo de datagramas de usuario (UDP).
El codificador 20 de vídeo y el decodificador 30 de vídeo pueden implementarse cada uno como cualquiera de diversos circuitos codificadores adecuados, por ejemplo, uno o más microprocesadores, procesadores de señales digitales (DSP), circuitos integrados de aplicación específica (ASIC), matrices de puertas programables en campo (FPGA), lógica discreta, hardware, firmware, o cualquier combinación de los mismos. Cuando las técnicas se implementan parcialmente en software, un aparato puede almacenar instrucciones para el software en un medio legible por ordenador no transitorio, y puede ejecutar las instrucciones en hardware mediante el uso de uno o más procesadores, para ejecutar las tecnologías en esta solicitud. El codificador 20 de vídeo y el decodificador 30 de vídeo pueden estar incluidos cada uno en uno o más codificadores o decodificadores. Cualquiera del codificador 20 de vídeo o del decodificador 30 de vídeo pueden integrarse como parte de un codificador/decodificador (CODEC) combinado en un aparato correspondiente.
Esta solicitud puede, por ejemplo, referirse a otro aparato en el que el codificador 20 de vídeo señala información específica, por ejemplo, al decodificador 30 de vídeo. Sin embargo, debe entenderse que el codificador 20 de vídeo puede asociar elementos de sintaxis específicos con partes codificadas de los datos de vídeo, para señalizar información. Es decir, el codificador 20 de vídeo puede almacenar los elementos de sintaxis específicos en la información de cabecera de las partes codificadas de los datos de vídeo, para señalizar los datos. En algunas aplicaciones, estos elementos de sintaxis pueden codificarse y almacenarse (por ejemplo, almacenarse en un sistema 34 de almacenamiento o en un servidor 36 de archivos) antes de ser recibidos y decodificados por el decodificador 30 de vídeo. Por lo tanto, el término "señalizar" puede significar, por ejemplo, la transmisión de una sintaxis o la transmisión de otros datos utilizados para decodificar datos de vídeo comprimidos, independientemente de si la transmisión se realiza en tiempo real, casi en tiempo real o dentro de un lapso de tiempo. Por ejemplo, la transmisión se puede realizar cuando un elemento de sintaxis se almacena en un medio durante la codificación y luego el elemento de sintaxis puede ser investigado por un aparato de decodificación en cualquier momento después de ser almacenado en el medio.
El JCT-VC ha desarrollado el estándar H.265 (HEVC). La estandarización HEVC se basa en un modelo evolucionado de un aparato de decodificación de vídeo, al que se denomina modelo de prueba HEVC (HM). Un documento estándar H.265 más reciente está disponible en http://www.itu.int/rec/T-REC-H.265. La última versión del documento estándar es H.265 (12/16). En el HM, se supone que el aparato de decodificación de vídeo tiene varias capacidades adicionales en relación con un algoritmo existente de ITU-TH.264/AVC. Por ejemplo, H.264 proporciona nueve modos de codificación de intrapredicción, mientras que HM puede proporcionar hasta 35 modos de codificación de intrapredicción.
El JVET está comprometido con el desarrollo del estándar H.266. Un proceso de estandarización H.266 se basa en un modelo evolucionado del aparato de decodificación de vídeo, al que se denomina modelo de prueba H.266. Las descripciones del algoritmo H.266 están disponibles en http://phenix.int-evry.fr/jvet, y las descripciones de algoritmos más recientes están incluidas en JVET-G1001-v1. Además, el software de referencia para el modelo de prueba JEM está disponible en https://jvet.hhi.fraunhofer.de/svn/svn_HMJEMSoftware/.
Generalmente, como se describe en un modelo de trabajo HM, un fotograma de video o imagen se puede dividir en una secuencia de bloques de árbol o unidades de codificación más grandes (LCU) que incluyen muestras de luminancia y crominancia. La LCU también se conoce como CTU. Un bloque de árbol tiene una función similar a la de un macrobloque en el estándar H.264. Un segmento incluye varios bloques de árbol consecutivos en un orden de decodificación. El fotograma de vídeo o la imagen se pueden dividir en uno o más segmentos. Cada bloque de árbol se puede dividir en unidades de codificación basadas en un árbol cuaternario. Por ejemplo, un bloque de árbol que sirve como nodo raíz del árbol cuaternario se puede dividir en cuatro nodos secundarios, y cada nodo secundario también puede servir como nodo principal y dividirse en otros cuatro nodos secundarios. Un nodo secundario final no divisible que sirve como nodo hoja del árbol cuaternario incluye un nodo de decodificación, por ejemplo, un bloque de video decodificado. En los datos sintácticos asociados a un flujo de bits decodificado, se puede definir una cantidad máxima de veces que se puede dividir el bloque de árbol y un tamaño mínimo del nodo de decodificación.
Una unidad de codificación incluye un nodo de decodificación, una unidad de predicción (PU) y una unidad de transformación (TU) asociada con el nodo de decodificación. Un tamaño de la CU corresponde a un tamaño del nodo de decodificación, y una forma de la CU tiene que ser cuadrada. El tamaño de la CU puede variar desde 8 x 8 píxeles hasta un máximo de 64 x 64 píxeles o un tamaño de bloque de árbol mayor. Cada CU puede incluir una o más PU y una o más TU. Los datos de sintaxis asociados con una CU pueden describir la partición de la CU en una o más PU. Los patrones de partición pueden variar cuando la CU está codificada en un modo de salto o directo, codificada en un modo de intrapredicción o codificada en un modo de interpredicción. La PU obtenida mediante partición puede tener una forma no cuadrada. Por ejemplo, los datos de sintaxis asociados con una CU también pueden describir la partición de la CU en una o más TU según un árbol cuádruple. La TU puede tener forma cuadrada o no cuadrada.
El estándar HEVC permite la transformación basada en TU, y las TU pueden ser diferentes para diferentes CU. El tamaño de una TU generalmente se establece en función del tamaño de una PU dentro de una CU determinada definida para una LCU particionada. Sin embargo, un caso no siempre puede ser así. El tamaño de la TU es generalmente igual o menor que el tamaño de la PU. En algunas implementaciones factibles, se puede utilizar una estructura de árbol cuádruple denominada "árbol cuádruple residual" (RQT) para dividir una muestra residual correspondiente a la CU en unidades más pequeñas. Un nodo hoja del RQT puede denominarse TU. Una diferencia de píxeles asociada con la TU se puede transformar para generar un coeficiente de transformación, y el coeficiente de transformación se puede cuantificar.
Generalmente, la PU incluye datos relacionados con un proceso de predicción. Por ejemplo, cuando la PU está codificada en el modo de intrapredicción, la PU puede incluir datos que describen el modo de predicción intra de la PU. En otra implementación factible, cuando la PU se codifica en el modo de interpredicción, la PU puede incluir datos que definen un vector de movimiento para la PU. Por ejemplo, los datos que definen el vector de movimiento para la PU pueden describir un componente horizontal del vector de movimiento, un componente vertical del vector de movimiento, una resolución (por ejemplo, precisión de 1/4 píxel o precisión de 1/8 píxel) del vector de movimiento, una imagen de referencia a la que apunta el vector de movimiento y/o una lista de imágenes de referencia (por ejemplo, una lista 0, una lista 1 o una lista C) del vector de movimiento.
Generalmente, se utilizan procesos de transformación y cuantificación para la TU. Una CU determinada que incluye una o más PU también puede incluir una o más TU. Después de la predicción, el codificador 20 de vídeo puede calcular un valor residual correspondiente a la PU. El valor residual incluye una diferencia de píxeles. La diferencia de píxeles se puede transformar en un coeficiente de transformación, y el coeficiente de transformación se cuantifica y se somete a un escaneo TU para generar un coeficiente de transformación serializado para la decodificación de entropía. En esta solicitud, el término "bloque de vídeo" se utiliza normalmente para indicar un nodo de decodificación de una CU. En algunas aplicaciones específicas, en esta solicitud, el término "bloque de vídeo" también se puede utilizar para indicar un bloque de árbol que incluye un nodo de decodificación, una PU y una TU, por ejemplo, el bloque de árbol es una LCU o una CU.
Una secuencia de vídeo normalmente incluye una serie de fotogramas o imágenes de vídeo. Por ejemplo, un grupo de imágenes (GOP) incluye una serie de imágenes de vídeo, o una o más imágenes de vídeo. El GOP puede incluir datos sintácticos en la información de cabecera del GOP, en la información de cabecera de una o más de las imágenes o en otro lugar, y los datos sintácticos describen una cantidad de imágenes incluidas en el GOP. Cada segmento de una imagen puede incluir datos sintácticos de segmento que describen un modo de codificación de la imagen correspondiente. El codificador 20 de vídeo normalmente realiza una operación en bloques de vídeo en algunos segmentos de vídeo, para codificar los datos de vídeo. El bloque de vídeo puede corresponder al nodo de decodificación en la CU. El tamaño del bloque de vídeo puede ser fijo o modificable y puede variar según un estándar de decodificación específico.
En una implementación factible, el HM admite la predicción para una variedad de tamaños de PU. Suponiendo que el tamaño de una CU dada es 2N x 2N, el HM admite intrapredicción para un tamaño de PU de 2N x 2N o N x N, y interpredicción para un tamaño de PU simétrico de 2N x 2N, 2N x N, N x 2N o N x N. El HM también admite partición asimétrica para interpredicción para tamaños de PU de 2N x nU, 2N x nD, nL x 2N y nR x 2N. En la partición asimétrica, la CU no se divide en una dirección, y se divide en dos partes en la otra dirección, donde una parte representa el 25% de la CU y la otra parte representa el 75% de la CU. La parte que representa el 25% de la CU se indica mediante un indicador que incluye "n" seguido de "U (Arriba)", "D (Abajo)", "L (Izquierda)" o "R (Derecha)". Por lo tanto, por ejemplo, "2N x nU" se refiere a una CU 2N x 2N dividida horizontalmente, con una PU 2N x 0,5N en la parte superior y una PU 2N x 1,5N en la parte inferior.
En esta solicitud, "N x M" y "N multiplicado por M" se pueden usar indistintamente para indicar un tamaño de píxel de un bloque de vídeo en una dimensión vertical y una dimensión horizontal, por ejemplo, 16 x 16 píxeles o 16 multiplicado por 16 píxeles. Generalmente, un bloque de 16 x 16 tiene 16 píxeles en dirección vertical (y = 16) y 16 píxeles en dirección horizontal (x = 16). De manera similar, un bloque N x N tiene N píxeles en la dirección vertical y N píxeles en la dirección horizontal, donde N es un entero no negativo. Los píxeles de un bloque pueden organizarse en filas y columnas. Además, en un bloque, una cantidad de píxeles en la dirección horizontal y una cantidad de píxeles en la dirección vertical pueden no ser necesariamente la misma. Por ejemplo, un bloque puede incluir N x M píxeles, donde M no es necesariamente igual a N.
Después de realizar la decodificación de intra o interpredicción en la PU en la CU, el codificador 20 de video puede calcular datos residuales de la TU en la CU. La PU puede incluir datos de píxeles en un dominio espacial (también denominado dominio de píxeles). La TU puede incluir un coeficiente en un dominio de transformación después de que se realiza una transformación (por ejemplo, transformada de coseno discreta (DCT), transformada de enteros, transformada de onda o una transformación conceptualmente similar) en datos de video residuales. Los datos residuales pueden corresponder a una diferencia de píxeles entre los píxeles de una imagen no codificada y un predictor correspondiente a la PU. El codificador 20 de vídeo puede generar una TU que incluya datos residuales de la CU y luego transformar la TU para generar un coeficiente de transformación de la CU.
Después de realizar cualquier transformación para generar coeficientes de transformación, el codificador 20 de vídeo puede cuantificar los coeficientes de transformación. La cuantificación se refiere, por ejemplo, a un proceso de cuantificación de los coeficientes, para reducir la cantidad de datos utilizados para representar los coeficientes e implementar una mayor compresión. El proceso de cuantificación puede reducir una profundidad de bit asociada con algunos o la totalidad de los coeficientes. Por ejemplo, durante la cuantificación, un valor de n bits puede reducirse a un valor de m bits mediante redondeo, donde n es mayor que m.
El modelo JEM mejora aún más la estructura de codificación de imágenes de vídeo. En concreto, se introduce una estructura de codificación de bloques denominada estructura "árbol cuaternario más árbol binario" (QTBT). Sin utilizar conceptos como CU, PU y TU en HEVC, la estructura QTBT admite formas de CU particionadas más flexibles. Una CU puede tener forma cuadrada o rectangular. La partición del árbol cuaternario se realiza primero en una CTU, y la partición del árbol binario se realiza además en un nodo hoja del árbol cuaternario. Además, hay dos patrones de partición en la partición de árbol binario: partición horizontal simétrica y partición vertical simétrica. Un nodo hoja de un árbol binario se denomina CU. La CU en el modelo JEM no se puede dividir aún más durante la predicción y la transformación. En otras palabras, la CU, la PU y la TU en el modelo JEM tienen el mismo tamaño de bloque. En el modelo JEM existente, el tamaño máximo de CTU es de 256 x 256 píxeles de luminancia.
En algunas implementaciones factibles, el codificador 20 de video puede escanear el coeficiente de transformación cuantificado en un orden de escaneo predefinido para generar un vector serializado que puede codificarse por entropía. En otras implementaciones factibles, el codificador 20 de vídeo puede realizar un escaneo adaptativo. Después de escanear el coeficiente de transformación cuantificado para formar un vector unidimensional, el codificador 20 de vídeo puede realizar una decodificación de entropía en el vector unidimensional mediante el uso de codificación de longitud variable adaptativa basada en el contexto (CAVLC), decodificación aritmética binaria adaptativa basada en el contexto (CABAC), decodificación aritmética binaria adaptativa al contexto basada en sintaxis (SBAC), decodificación de entropía de partición de intervalo de probabilidad (PIPE) u otro método de decodificación de entropía. El codificador 20 de vídeo puede realizar además una codificación de entropía en el elemento de sintaxis asociado con los datos de vídeo codificados, para que el decodificador 30 de vídeo decodifique los datos de vídeo.
Para realizar CABAC, el codificador 20 de vídeo puede asignar un contexto en un modelo de contexto a un símbolo que se va a transmitir. El contexto puede estar relacionado con si un valor adyacente del símbolo es distinto de cero. Para realizar CAVLC, el codificador 20 de vídeo puede seleccionar un código de longitud variable del símbolo que se va a transmitir. Se puede construir una palabra de código en codificación de longitud variable (VLC), de modo que un código más corto corresponda a un símbolo más probable y un código más largo corresponda a un símbolo menos probable. De esta manera, en comparación con el uso de palabras de código de igual longitud para todos los símbolos a transmitir, el uso de VLC puede reducir la tasa de bits. Una probabilidad en CABAC se puede determinar en función del contexto asignado al símbolo.
En esta realización de esta solicitud, el codificador de vídeo puede realizar predicciones entre imágenes para reducir la redundancia temporal entre imágenes. Como se describió anteriormente, una CU puede tener una o más unidades de predicción (PU) dependiendo de diferentes estándares de codificación de compresión de video. En otras palabras, una pluralidad de PU puede pertenecer a una CU, o una PU y una CU tienen el mismo tamaño. En esta especificación, cuando la CU y la PU tienen el mismo tamaño, un patrón de partición de la CU es sin partición, o la CU se particiona en una PU y la PU se usa uniformemente para la descripción. Cuando el codificador de vídeo realiza una predicción entre dispositivos, el codificador de vídeo puede señalizar información de movimiento para la PU al decodificador de vídeo. Por ejemplo, la información de movimiento para la PU puede incluir un índice de imagen de referencia, un vector de movimiento y un identificador de dirección de predicción. El vector de movimiento puede indicar un desplazamiento entre un bloque de imagen (también denominado bloque de vídeo, bloque de píxeles, conjunto de píxeles o similar) de la PU y un bloque de referencia de la PU. El bloque de referencia de la PU puede ser parte de una imagen de referencia similar al bloque de imagen de la PU. El bloque de referencia puede estar ubicado en una imagen de referencia indicada por el índice de imagen de referencia y el identificador de dirección de predicción.
Para reducir la cantidad de bits codificados necesarios para representar la información de movimiento para la PU, el codificador de vídeo puede generar una lista de vectores de movimiento (MV) predichos candidatos para cada PU según un modo de predicción de fusión o un modo de predicción de vector de movimiento avanzado. Cada vector de movimiento predicho candidato en la lista de vectores de movimiento predicho candidatos para la PU puede indicar información de movimiento. La información de movimiento indicada por algunos vectores de movimiento predichos candidatos en la lista de vectores de movimiento predichos candidatos puede basarse en información de movimiento de otras PU. Si un vector de movimiento predicho candidato indica información de movimiento de una posición de vector de movimiento predicho candidato espacial especificado o una posición de vector de movimiento predicho candidato temporal especificado, el vector de movimiento predicho candidato puede denominarse vector de movimiento predicho candidato "original" en esta solicitud. Por ejemplo, en un modo de fusión, también denominado modo de predicción de fusión en esta especificación, puede haber cinco posiciones de vector de movimiento predichas candidatas espaciales originales y una posición de vector de movimiento predicha candidata temporal original. En algunos ejemplos, el codificador de vídeo puede generar un vector de movimiento predicho candidato adicional combinando algunos vectores de movimiento de diferentes vectores de movimiento predichos candidatos originales, modificando el vector de movimiento predicho candidato original o insertando solo un vector de movimiento cero como vector de movimiento predicho candidato. El vector de movimiento predicho candidato adicional no se considera como el vector de movimiento predicho candidato original y puede denominarse vector de movimiento predicho candidato generado artificialmente en esta solicitud.
Las tecnologías en esta solicitud generalmente incluyen una tecnología para generar una lista de vectores de movimiento predichos candidatos en el codificador de vídeo y una tecnología para generar la misma lista de vectores de movimiento predichos candidatos en el decodificador de vídeo. El codificador de vídeo y el decodificador de vídeo pueden generar la misma lista de vectores de movimiento predichos candidatos implementando una misma tecnología para construir la lista de vectores de movimiento predichos candidatos. Por ejemplo, el codificador de vídeo y el decodificador de vídeo pueden construir listas con la misma cantidad de vectores de movimiento predichos candidatos (por ejemplo, cinco vectores de movimiento predichos candidatos). El codificador de vídeo y el decodificador de vídeo pueden considerar primero vectores de movimiento predichos candidatos espaciales (por ejemplo, bloques adyacentes en una misma imagen) y luego considerar vectores de movimiento predichos candidatos temporales (por ejemplo, vectores de movimiento predichos candidatos en diferentes imágenes), y finalmente pueden considerar vectores de movimiento predichos candidatos generados artificialmente, hasta que se agregue una cantidad requerida de vectores de movimiento predichos candidatos a las listas. Según las tecnologías de esta solicitud, durante la construcción de la lista de vectores de movimiento predichos candidatos, se puede realizar una operación de poda para algunos tipos de vectores de movimiento predichos candidatos para eliminar vectores de movimiento predichos candidatos repetidos de la lista de vectores de movimiento predichos candidatos, y no se puede realizar para otros tipos de vectores de movimiento predichos candidatos para reducir la complejidad del decodificador. Por ejemplo, para un conjunto de vectores de movimiento predichos candidatos espaciales y para un vector de movimiento predicho candidato temporal, se puede realizar la operación de poda para eliminar un vector de movimiento predicho candidato con información de movimiento repetida de la lista de vectores de movimiento predichos candidatos. Sin embargo, el vector de movimiento predicho candidato generado artificialmente se puede agregar a la lista de vectores de movimiento predichos candidatos sin ser podado.
Después de generar la lista de vectores de movimiento predichos candidatos para la PU de la CU, el codificador de vídeo puede seleccionar un vector de movimiento predicho candidato de la lista de vectores de movimiento predichos candidatos y emitir un índice de vector de movimiento predicho candidato en un flujo de bits. El vector de movimiento predicho candidato seleccionado puede ser un vector de movimiento predicho candidato para generar un vector de movimiento que coincida lo más estrechamente posible con un predictor de una PU objetivo que se está decodificando. El índice del vector de movimiento predicho candidato puede indicar una posición del vector de movimiento predicho candidato seleccionado en la lista de vectores de movimiento predichos candidatos. El codificador de vídeo puede generar además un bloque de imagen de predicción para la PU basándose en un bloque de referencia indicado por la información de movimiento para la PU. La información de movimiento para la PU se puede determinar en función de la información de movimiento indicada por el vector de movimiento predicho candidato seleccionado. Por ejemplo, en el modo de fusión, la información de movimiento de la PU puede ser la misma que la información de movimiento indicada por el vector de movimiento predicho candidato seleccionado. En el modo AMVP, la información de movimiento para la PU se puede determinar en función de una diferencia del vector de movimiento para la PU y la información de movimiento indicada por el vector de movimiento predicho candidato seleccionado. El codificador de vídeo puede generar uno o más bloques de imagen residuales para la CU basándose en el bloque de imagen de predicción para la PU de la CU y un bloque de imagen original para la CU. Luego, el codificador de video puede codificar uno o más bloques de imágenes residuales y emitir uno o más bloques de imágenes residuales en el flujo de bits.
El flujo de bits puede incluir datos que identifican el vector de movimiento predicho candidato seleccionado en la lista de vectores de movimiento predichos candidatos para la PU. El decodificador de vídeo puede determinar la información de movimiento para la PU basándose en la información de movimiento indicada por el vector de movimiento predicho candidato seleccionado en la lista de vectores de movimiento predichos candidatos para la PU. El decodificador de vídeo puede identificar uno o más bloques de referencia para la PU basándose en la información de movimiento de la PU. Después de identificar uno o más bloques de referencia para la PU, el decodificador de vídeo puede generar el bloque de imagen de predicción para la PU basándose en uno o más bloques de referencia para la PU. El decodificador de vídeo puede reconstruir el bloque de imagen para la CU basándose en el bloque de imagen de predicción para la PU de la CU y el uno o más bloques de imagen residual para la CU.
Para facilitar la explicación, en esta solicitud, una posición o un bloque de imagen puede describirse como si tuviera varias relaciones espaciales con una CU o una P<u>. La descripción se puede explicar de la siguiente manera: La posición o el bloque de imagen tiene varias relaciones espaciales con un bloque de imagen asociado con la CU o la PU. Además, en esta solicitud, una PU que está siendo decodificada actualmente por el decodificador de vídeo puede denominarse PU actual, y también puede denominarse bloque de imagen actual a procesar. En esta solicitud, una CU que actualmente está siendo decodificada por el decodificador de vídeo puede denominarse CU actual. En esta solicitud, una imagen que actualmente está siendo decodificada por el decodificador de vídeo puede denominarse imagen actual. Debe entenderse que esta solicitud también es aplicable a un caso en el que una PU y una CU tienen el mismo tamaño, o una P<u>es una CU y la PU se utiliza uniformemente para la descripción.
Como se describió con brevedad anteriormente, el codificador 20 de vídeo puede generar el bloque de imagen de predicción y la información de movimiento para la PU de la CU a través de interpredicción. En muchos ejemplos, la información de movimiento para una PU dada puede ser la misma o similar a la información de movimiento para una o más PU adyacentes (es decir, una PU cuyo bloque de imagen es espacial o temporalmente adyacente a un bloque de imagen de la PU dada). Debido a que la PU adyacente a menudo tiene información de movimiento similar, el codificador 20 de video puede codificar la información de movimiento para la PU dada basándose en la información de movimiento de la PU adyacente. La codificación de la información de movimiento para la PU dada en función de la información de movimiento para la PU adyacente puede reducir la cantidad de bits codificados necesarios en el flujo de bits para indicar la información de movimiento para la PU dada.
El codificador 20 de vídeo puede codificar la información de movimiento para la PU dada basándose en la información de movimiento de la PU adyacente de varias maneras. Por ejemplo, el codificador 20 de vídeo puede indicar que la información de movimiento para la PU dada es la misma que la información de movimiento para la PU adyacente. En esta solicitud, el modo de fusión se puede utilizar para indicar que la información de movimiento para la PU dada es la misma que la información de movimiento de la PU adyacente o puede derivarse de ella. En otra implementación factible, el codificador 20 de video puede calcular una diferencia de vector de movimiento (MVD) para la PU dada. La MVD indica una diferencia entre un vector de movimiento para la PU dada y un vector de movimiento para la PU adyacente. El codificador 20 de vídeo puede incluir la MVD en lugar del vector de movimiento para la PU dada en la información de movimiento para la PU dada. En el flujo de bits, la cantidad de bits codificados necesarios para representar la MVD es menor que la cantidad de bits codificados necesarios para representar el vector de movimiento para la PU dada. En esta aplicación, el modo de predicción de vector de movimiento avanzado se puede utilizar para indicar que la información de movimiento para la PU dada se envía a un decodificador mediante la MVD y un valor de índice que se utiliza para identificar un vector de movimiento candidato.
Para señalizar, en el modo de fusión o el modo AMVP, la información de movimiento para la PU dada al decodificador, el codificador 20 de vídeo puede generar una lista de vectores de movimiento predichos candidatos para la PU dada. La lista de vectores de movimiento predichos candidatos puede incluir uno o más vectores de movimiento predichos candidatos. Cada uno de los vectores de movimiento predichos candidatos en la lista de vectores de movimiento predichos candidatos para la PU dada puede especificar información de movimiento. La información de movimiento indicada por cada vector de movimiento predicho candidato puede incluir un vector de movimiento, un índice de imagen de referencia y un identificador de dirección de predicción. Los vectores de movimiento predichos candidatos en la lista de vectores de movimiento predichos candidatos pueden incluir vectores de movimiento predichos candidatos "originales", y cada vector de movimiento predicho candidato "original" indica información de movimiento de una de las posiciones de vector de movimiento predichos candidatos especificadas dentro de una PU diferente de la PU dada.
Después de generar la lista de vectores de movimiento predichos candidatos para la PU, el codificador 20 de vídeo puede seleccionar un vector de movimiento predicho candidato de la lista de vectores de movimiento predichos candidatos para la PU. Por ejemplo, el codificador de vídeo puede comparar cada vector de movimiento predicho candidato con una PU que se está decodificando y puede seleccionar un vector de movimiento predicho candidato con un coste de tasa-distorsión deseado. El codificador 20 de vídeo puede emitir un índice de vector de movimiento predicho candidato para la PU. El índice del vector de movimiento predicho candidato puede identificar una posición del vector de movimiento predicho candidato seleccionado en la lista de vectores de movimiento predichos candidatos.
Además, el codificador 20 de vídeo puede generar un bloque de imagen de predicción para la PU basándose en un bloque de referencia indicado por la información de movimiento para la PU. La información de movimiento para la PU puede determinarse basándose en la información de movimiento indicada por el vector de movimiento predicho candidato seleccionado en la lista de vectores de movimiento predichos candidatos para la PU. Por ejemplo, en el modo de fusión, la información de movimiento de la PU puede ser la misma que la información de movimiento indicada por el vector de movimiento predicho candidato seleccionado. En el modo AMVP, la información de movimiento para la PU se puede determinar en función de una diferencia del vector de movimiento para la PU y la información de movimiento indicada por el vector de movimiento predicho candidato seleccionado. Como se describió anteriormente, el codificador 20 de vídeo puede procesar el bloque de imagen de predicción para la PU.
Cuando el decodificador 30 de vídeo recibe el flujo de bits, el decodificador 30 de vídeo puede generar una lista de vectores de movimiento predichos candidatos para cada PU de la CU. La lista de vectores de movimiento predichos candidatos generada por el decodificador 30 de vídeo para la PU puede ser la misma que la lista de vectores de movimiento predichos candidatos generada por el codificador 20 de vídeo para la PU. Un elemento de sintaxis obtenido al analizar el flujo de bits puede indicar la posición del vector de movimiento predicho candidato seleccionado en la lista de vectores de movimiento predichos candidatos para la PU. Después de generar la lista de vectores de movimiento predichos candidatos para la PU, el decodificador 30 de vídeo puede generar el bloque de imagen de predicción para la PU basándose en uno o más bloques de referencia indicados por la información de movimiento para la PU. El decodificador 30 de vídeo puede determinar la información de movimiento para la PU basándose en la información de movimiento indicada por el vector de movimiento predicho candidato seleccionado en la lista de vectores de movimiento predichos candidatos para la PU. El decodificador 30 de vídeo puede reconstruir el bloque de imagen para la CU basándose en el bloque de imagen de predicción para la PU y el bloque de imagen residual para la CU.
Debe entenderse que, en una implementación factible, en el decodificador, la construcción de la lista de vectores de movimiento predichos candidatos y el análisis del flujo de bits para obtener la posición del vector de movimiento predicho candidato seleccionado en la lista de vectores de movimiento predichos candidatos son independientes entre sí, y pueden realizarse en cualquier orden o en paralelo.
En otra implementación factible, en el decodificador, la posición del vector de movimiento predicho candidato seleccionado en la lista de vectores de movimiento predichos candidatos se obtiene primero analizando el flujo de bits, y luego la lista de vectores de movimiento predichos candidatos se construye en base a la posición obtenida a través del análisis. En esta implementación, no es necesario construir todas las listas de vectores de movimiento predichos candidatos, y solo se necesita construir una lista de vectores de movimiento predichos candidatos en la posición obtenida a través del análisis, para ser específico, siempre que se pueda determinar el vector de movimiento predicho candidato en la posición. Por ejemplo, cuando se obtiene, al analizar el flujo de bits, que el vector de movimiento predicho candidato seleccionado es un vector de movimiento predicho candidato cuyo índice es 3 en la lista de vectores de movimiento predichos candidatos, solo se necesita construir una lista de vectores de movimiento predichos candidatos desde un índice 0 hasta el índice 3, y se puede determinar el vector de movimiento predicho candidato cuyo índice es 3. Esto puede reducir la complejidad y mejorar la eficiencia de la decodificación.
La FIG. 2 es un diagrama de bloques esquemático de un codificador 20 de vídeo según una realización de esta solicitud. El codificador 20 de vídeo puede realizar intracodificación e intercodificación en un bloque de vídeo en un segmento de vídeo. La intracodificación se basa en la predicción espacial para reducir o eliminar la redundancia espacial de un vídeo en un fotograma o imagen de vídeo dado. La intercodificación se basa en la predicción temporal para reducir o eliminar la redundancia temporal de un vídeo en un fotograma o imagen adyacente de una secuencia de vídeo. Un modo intra (modo I) puede ser cualquiera de varios modos de compresión basados en el espacio. Un modo inter, como un modo de predicción unidireccional (modo P) o un modo de predicción bidireccional (modo B), puede ser cualquiera de varios modos de compresión basados en el tiempo.
En una implementación factible de la FIG. 2, el codificador 20 de vídeo incluye una unidad 35 de partición, una unidad 41 de predicción, una memoria 64 de imagen de referencia, un sumador 50, una unidad 52 de procesamiento de transformación, una unidad 54 de cuantificación y una unidad 56 de codificación de entropía. La unidad 41 de predicción incluye una unidad 42 de estimación de movimiento, una unidad 44 de compensación de movimiento y una unidad 46 de intrapredicción. Para la reconstrucción de bloques de vídeo, el codificador 20 de vídeo incluye además una unidad 58 de cuantización inversa, una unidad 60 de transformada inversa y un sumador 62. El codificador 20 de vídeo puede además incluir un filtro de desbloqueo (no mostrado en la FIG. 2) para filtrar los límites del bloque, para eliminar los artefactos de bloqueo del vídeo reconstruido. Cuando es necesario, el filtro de desbloqueo normalmente filtra una salida del sumador 62. Además del filtro de desbloqueo, se puede usar también un filtro de bucle adicional (dentro o después del bucle).
Como se muestra en la FIG. 2, el codificador 20 de vídeo recibe datos de vídeo, y la unidad 35 de partición divide los datos en bloques de vídeo. Dicha partición puede incluir además la partición en segmentos, bloques de imagen, u otras unidades más grandes (por ejemplo) partición de bloques de video basada en estructuras de árbol cuaternario de una LCU y una CU. Por ejemplo, el codificador 20 de vídeo es un componente para codificar un bloque de vídeo en un segmento de vídeo a codificar. Normalmente, un segmento puede particionarse en una pluralidad de bloques de vídeo (y puede ser particionado en conjuntos de bloques de vídeo que son referidos como bloques de imagen).
La unidad 41 de predicción puede seleccionar uno de una pluralidad de modos de decodificación posibles, por ejemplo, uno de una pluralidad de modos de decodificación intra o uno de una pluralidad de modos de decodificación inter, para un bloque de vídeo actual basándose en la calidad de codificación y un resultado de cálculo de coste (por ejemplo, un coste de distorsión de velocidad, RDcost, o denominado coste de distorsión de velocidad). La unidad 41 de predicción puede proporcionar un bloque intra decodificado o inter decodificado obtenido al sumador 50 para generar datos de bloque residuales, y proporcionar el bloque intra decodificado o inter decodificado obtenido al sumador 62 para reconstruir un bloque codificado y usar el bloque codificado reconstruido como una imagen de referencia.
La unidad 42 de estimación de movimiento y la unidad 44 de compensación de movimiento en la unidad 41 de predicción realizan una decodificación interpredictiva del bloque de vídeo actual en relación con uno o más bloques de predicción de una o más imágenes de referencia, para proporcionar compresión de tiempo. La unidad 42 de estimación de movimiento puede configurarse para determinar un modo de interpredicción para el segmento de vídeo basándose en un modo preestablecido de la secuencia de video. En el modo preestablecido, el segmento de vídeo en la secuencia se puede especificar como un segmento P, un segmento B o un segmento GPB. La unidad 42 de estimación de movimiento y la unidad 44 de compensación de movimiento pueden estar altamente integradas, pero se describen por separado para explicar conceptos. La estimación de movimiento realizada por la unidad 42 de estimación de movimiento es un proceso de generar un vector de movimiento para estimar el bloque de vídeo. Por ejemplo, el vector de movimiento puede indicar un desplazamiento de una PU de un bloque de vídeo en un fotograma de vídeo o imagen actual en relación con un bloque de predicción en una imagen de referencia.
Un bloque de predicción es un bloque en una PU que, en función de una diferencia de píxeles, se considera estrechamente coincidente con un bloque de vídeo que se va a decodificar. La diferencia de píxeles puede determinarse basándose en una suma de la diferencia absoluta (SAD), la suma de diferencias cuadráticas (SSD) u otras métricas de diferencia. En algunas implementaciones factibles, el codificador 20 de vídeo puede calcular valores para posiciones de píxeles de subenteros de una imagen de referencia almacenada en la memoria 64 de imágenes de referencia. Por ejemplo, el codificador 20 de vídeo puede interpolar valores de posición de 1/4 píxel, posición de 1/8 píxel u otras posiciones fraccionarias de píxel de la imagen de referencia. Por lo tanto, la unidad 42 de estimación de movimiento puede realizar una búsqueda de movimiento con respecto a las posiciones de píxeles completos y posiciones de píxeles fraccionarios y emitir un vector de movimiento con precisión de píxeles fraccionarios.
La unidad 42 de estimación de movimiento calcula un vector de movimiento para una PU de un bloque de vídeo en un segmento intercodificado comparando la posición de la PU y una posición de un bloque de predicción en una imagen de referencia. La imagen de referencia se puede seleccionar de una primera lista de imágenes de referencia (una lista 0) o de una segunda lista de imágenes de referencia (una lista 1). Cada elemento de la lista se utiliza para identificar una o más imágenes de referencia almacenadas en la memoria 64 de imágenes de referencia. La unidad 42 de estimación de movimiento envía el vector de movimiento calculado a la unidad 56 de codificación de entropía y la unidad 44 de compensación de movimiento.
La compensación de movimiento realizada por la unidad 44 de compensación de movimiento puede incluir extraer o generar un bloque de predicción basándose en el vector de movimiento determinado a través de la estimación de movimiento, y se pude realizar interpolación a nivel de subpíxel. Tras recibir el vector de movimiento para la PU del bloque de vídeo actual, la unidad 44 de compensación de movimiento puede ubicar el bloque de predicción apuntado por el vector de movimiento en una de las listas de imágenes de referencia. El codificador 20 de vídeo resta un valor de píxel del bloque de predicción de un valor de píxel del bloque de vídeo actual que se está decodificando, para obtener un bloque de vídeo residual y obtener la diferencia de píxeles. La diferencia de píxeles constituye datos residuales del bloque y puede incluir un componente de diferencia de luminancia y un componente de diferencia de crominancia. El sumador 50 es uno o más componentes que realizan la operación de resta. La unidad 44 de compensación de movimiento puede además generar un elemento de sintaxis asociado con el bloque de vídeo y el segmento de vídeo, para un decodificador 30 de vídeo para decodificar el bloque de vídeo en el segmento de vídeo.
Si la PU está ubicada en el segmento B, una imagen que incluye la PU puede asociarse con las dos listas de imágenes de referencia denominadas "lista 0" y "lista 1". En algunas implementaciones factibles, la imagen que incluye el segmento B puede estar asociado con una combinación de lista de la lista 0 y la lista 1.
Además, si la PU está ubicada en el segmento B, la unidad 42 de estimación de movimiento puede realizar una predicción unidireccional o una predicción bidireccional para la PU. En algunas implementaciones factibles, la predicción bidireccional es una predicción realizada por separado en función de las imágenes de la lista 0 de imágenes de referencia y las imágenes de la lista 1 de imágenes de referencia. En algunas otras implementaciones factibles, la predicción bidireccional es una predicción realizada por separado en función de un fotograma futuro reconstruido y un fotograma pasado reconstruido que son de un fotograma actual en un orden de visualización. Cuando la unidad 42 de estimación de movimiento realiza una predicción unidireccional para la PU, la unidad 42 de estimación de movimiento puede buscar las imágenes de referencia en la lista 0 o la lista 1 para encontrar un bloque de referencia para la PU. Luego, la unidad 42 de estimación de movimiento puede generar un índice de referencia que indica una imagen de referencia que incluye el bloque de referencia en la lista 0 o la lista 1, y un vector de movimiento que indica un desplazamiento espacial entre la PU y el bloque de referencia. La unidad 42 de estimación de movimiento puede emitir el índice de referencia, un identificador de dirección de predicción y el vector de movimiento como información de movimiento para la PU. El identificador de dirección de predicción puede indicar que el índice de referencia indica la imagen de referencia en la lista 0 o la lista 1. La unidad 44 de compensación de movimiento puede generar un bloque de imagen de predicción para la PU basándose en el bloque de referencia indicado por la información de movimiento para la PU.
Cuando la unidad 42 de estimación de movimiento realiza una predicción bidireccional para la PU, la unidad 42 de estimación de movimiento puede buscar las imágenes de referencia en la lista 0 para un bloque de referencia para la PU, y puede buscar además las imágenes de referencia en la lista 1 para otro bloque de referencia para la PU. Luego, la unidad 42 de estimación de movimiento puede generar un índice de referencia que indica imágenes de referencia que incluyen bloques de referencia en la lista 0 y la lista 1, y vectores de movimiento que indican desplazamientos espaciales los bloques de referencia y la PU. La unidad 42 de estimación de movimiento puede emitir los índices de referencia y los vectores de movimiento para la PU como información de movimiento para la PU. La unidad 44 de compensación de movimiento puede generar un bloque de imagen de predicción para la PU basándose en los bloques de referencia indicados por la información de movimiento para la PU.
En algunas implementaciones factibles, la unidad 42 de estimación de movimiento no emite un conjunto completo de información de movimiento para la PU a la unidad 56 de codificación de entropía. En cambio, la unidad 42 de estimación de movimiento puede señalizar la información de movimiento para la PU con referencia a la información<de movimiento para otra>P<u>.<Por ejemplo, la unidad 42 de estimación de movimiento puede determinar que la>información de movimiento de la PU es similar a la información de movimiento de una PU adyacente. En esta implementación, la unidad 42 de estimación de movimiento puede indicar un valor indicador en una estructura de sintaxis asociada con la PU, y el valor indicador indica, al decodificador 30 de vídeo, que la información de movimiento para la PU es la misma que o puede derivarse de la información de movimiento para la PU adyacente. En otra implementación, la unidad 42 de estimación de movimiento puede identificar, en la estructura de sintaxis asociada con la PU, un vector de movimiento predicho candidato y una diferencia de vector de movimiento (MVD) que están asociados con la PU adyacente. La MVD indica una diferencia entre el vector de movimiento de la PU y el vector de movimiento predicho candidato indicado asociado con la PU adyacente. El decodificador 30 de vídeo puede utilizar el vector de movimiento predicho candidato indicado y la MVD para determinar el vector de movimiento para la PU.
Como se describió anteriormente, la unidad 41 de predicción puede generar una lista de vectores de movimiento predichos candidatos para cada PU de una CU. Una o más de las listas de vectores de movimiento predichos candidatos pueden incluir uno o más vectores de movimiento predichos candidatos originales y uno o más vectores de movimiento predichos candidatos adicionales derivados de los uno o más vectores de movimiento predichos candidatos originales.
La unidad 46 de intrapredicción en la unidad 41 de predicción puede realizar una decodificación de intrapredicción en el bloque de video actual en relación con uno o más bloques adyacentes que están en una misma imagen o segmento que el bloque actual a decodificar, para proporcionar compresión espacial. Por lo tanto, como una alternativa a la intepredicción (como se describió anteriormente) realizada por la unidad 42 de estimación de movimiento y la unidad 44 de compensación de movimiento, la unidad 46 de intrapredicción puede realizar intrapredicción en el bloque actual. Específicamente, la unidad 46 de intrapredicción puede determinar un modo de intrapredicción para codificar el bloque actual. En algunas implementaciones factibles, la unidad 46 de intrapredicción puede (por ejemplo) utilizar varios modos de intrapredicción para codificar el bloque actual durante un recorrido de codificación separado, y la unidad 46 de intrapredicción (o una unidad 40 de selección de modo en algunas implementaciones factibles) puede seleccionar un modo de intrapredicción apropiado entre los modos probados.
Después de que la unidad 41 de predicción genera un bloque de predicción del bloque de vídeo actual a través de interpredicción o intrapredicción, el codificador 20 de vídeo resta el bloque de predicción del bloque de vídeo actual, para obtener un bloque de vídeo residual. Los datos de vídeo residuales en el bloque residual se pueden incluir en una o más TU, y aplicados a la unidad 52 de procesamiento de transformación. La unidad 52 de procesamiento de transformación realiza una transformación, por ejemplo, la transformada de coseno discreta (DCT) o una transformación conceptualmente similar (por ejemplo, la transformada de seno discreta DST) para transformar los datos de vídeo residuales en coeficientes de transformación residuales. La unidad 52 de procesamiento de transformación puede transformar los datos de vídeo residuales de los datos del dominio de píxeles a datos del dominio de transformación (por ejemplo, el dominio de la frecuencia).
La unidad 52 de procesamiento de transformación puede enviar los coeficientes de transformada resultantes a la unidad 54 de cuantificación. La unidad 54 de cuantificación cuantifica los coeficientes de transformada para reducir aún más una tasa de bits. El proceso de cuantificación puede reducir una profundidad de bit asociada con algunos o la totalidad de los coeficientes. Un grado de cuantificación puede modificarse mediante el ajuste de un parámetro de cuantificación. En algunas implementaciones factibles, la unidad 54 de cuantificación puede realizar entonces un escaneo de la matriz que incluya un coeficiente de transformada cuantificado. Alternativamente, la unidad 56 de codificación de entropía puede realizar el escaneo.
Después de la cuantificación, la unidad 56 de codificación de entropía puede realizar codificación en coeficiente de transformación cuantificado. Por ejemplo, la unidad 56 de codificación de entropía puede realizar decodificación de longitud variable adaptable al contexto (CAVLC), decodificación aritmética binaria adaptable al contexto (CABAC), decodificación aritmética binaria adaptable al contexto basada en sintaxis (SBAC), decodificación de entropía de partición de intervalo de probabilidad (PIPE) u otro método o tecnología de codificación de entropía. La unidad 56 de codificación de entropía puede realizar además codificación de entropía en un vector de movimiento y otro elemento de sintaxis de un segmento de vídeo actual que se está decodificando. Después de que la unidad 56 de codificación de entropía realice la codificación de entropía, un flujo de bits codificado puede ser transmitido al decodificador 30 de vídeo, o archivarse para su posterior transmisión o para búsqueda por el decodificador 30 de vídeo.
La unidad 56 de codificación de entropía puede codificar información que indica, según la tecnología de esta solicitud, el modo de intrapredicción seleccionado. El codificador 20 de vídeo puede incluir, en los datos de configuración de flujo de bits transmitidos que pueden incluir una pluralidad de tablas de índice de modo de intrapredicción y una pluralidad de tablas de índice de modo de intrapredicción modificadas (también denominadas tablas de correspondencia de palabras clave), definiciones de contextos de codificación para diversos bloques, e indicaciones de un modo de un MPM, una tabla de índice de modo de intrapredicción, y una tabla de índice de modo de intrapredicción modificada que se usan para cada contexto.
La unidad 58 de cuantificación inversa y la unidad 60 de transformación inversa realizan respectivamente cuantificación inversa y transformación inversa, para reconstruir el bloque residual en el dominio del pixel para ser posteriormente usado como un bloque de referencia de la imagen de referencia. La unidad 44 de compensación de movimiento puede calcular el bloque de referencia al agregar el bloque residual y un bloque de predicción en una imagen de referencia en una de las listas de imágenes de referencia. La unidad 44 de compensación de movimiento también puede aplicar uno o más filtros de interpolación a un bloque residual reconstruido, para calcular un valor de píxel subenteros para estimación de movimiento. El sumador 62 añade el bloque residual reconstruido y un bloque de predicción compensado de movimiento generado por la unidad 44 de compensación de movimiento para generar el bloque de referencia, y el bloque de referencia se almacena en la memoria 64 de imágenes de referencia. El bloque de referencia puede ser usado por la unidad 42 de estimación de movimiento y la unidad 44 de compensación de movimiento como un bloque de referencia para realizar interpredicción en un bloque en un fotograma de vídeo o imagen posterior.
La FIG. 3 es un diagrama de bloques esquemático de un decodificador 30 de vídeo según una realización de esta solicitud. En una implementación factible de la FIG. 3, el decodificador 30 de vídeo incluye una unidad 80 de decodificación de entropía, una unidad 81 de predicción, una unidad 86 de cuantificación inversa, una unidad 88 de transformación inversa, un sumador 90 y una memoria 92 de imágenes de referencia. La unidad 81 de predicción incluye una unidad 82 de compensación de movimiento y una unidad 84 de intrapredicción. En algunas implementaciones factibles, el decodificador 30 de vídeo puede realizar un proceso de decodificación ejemplar inverso al proceso de codificación descrito con respecto al codificador 20 de vídeo en la FIG. 4.
Durante la decodificación, el decodificador 30 de vídeo recibe, desde el codificador 20 de vídeo, un flujo de bits de vídeo codificado que representa un bloque de vídeo de un segmento de vídeo codificado y elementos de sintaxis asociados. La unidad 80 de codificación de entropía del decodificador 30 de vídeo realiza decodificación de entropía en el flujo de bits para generar un coeficiente cuantificado, un vector de movimiento, y otros elementos de sintaxis. La unidad 80 de codificación de entropía transfiere el vector de movimiento y los demás elementos de sintaxis a la unidad 81 de predicción. El decodificador 30 de vídeo puede recibir el elemento de sintaxis en un nivel de segmento de vídeo y/o un nivel de bloque de vídeo.
Cuando el segmento de vídeo se decodifica en un segmento intracodificado (I), la unidad 84 de intrapredicción de la unidad 81 de predicción puede generar datos de predicción para el bloque de vídeo del segmento de vídeo actual basándose en un modo de intrapredicción señalizado y datos de un bloque previamente decodificado del fotograma o imagen actual.
Cuando la imagen de vídeo se decodifica en un segmento interdecodificado (por ejemplo, un segmento B, un segmento P o un segmento GPB), la unidad 82 de compensación de movimiento de la unidad de predicción 81 genera un bloque de predicción del bloque de vídeo de la imagen de vídeo actual basándose en el vector de movimiento y los otros elementos de sintaxis que se reciben desde la unidad 80 de codificación de entropía. El bloque de predicción puede generarse a partir de una de imagen de referencia en una lista de imágenes de referencia. El decodificador 30 de vídeo puede usar una tecnología de construcción predeterminada para construir las listas de imágenes de referencia (una lista 0 y una lista 1) basándose en una imagen de referencia almacenada en la memoria 92 de imágenes de referencia.
La unidad 82 de compensación de movimiento determina información de predicción para el bloque de vídeo del segmento de vídeo actual mediante el análisis de los vectores de movimiento y otros elementos de sintaxis y usa la información de predicción para producir los bloques de predicción del bloque de vídeo actual que se está decodificando. Por ejemplo, la unidad 82 de compensación de movimiento usa algunos elementos de sintaxis recibidos para determinar un modo de predicción (por ejemplo, intrapredicción o interpredicción) para decodificar el bloque de vídeo del segmento de vídeo, un tipo de segmento de interpredicción (por ejemplo, segmento B, segmento P o segmento GPB), información de construcción para una o más de las listas de imágenes de referencia del segmento, un vector de movimiento de cada bloque de vídeo intercodificado del segmento, un estado de interpredicción para cada bloque de vídeo interdecodificado del segmento, y otra información para decodificar el bloque de vídeo en el segmento de vídeo actual.
La unidad 82 de compensación de movimiento también puede realizar una interpolación en función de un filtro de interpolación. La unidad 82 de compensación de movimiento puede usar, por ejemplo, el filtro de interpolación usados por el codificador 20 de vídeo durante la codificación de los bloques de vídeo, para calcular un valor interpolado de un pixel subentero de un bloque de referencia. En esta solicitud, la unidad 82 de compensación de movimiento puede determinar, basándose en los elementos de sintaxis recibidos, el filtro de interpolación usado por el codificador 20 de vídeo, y usar el filtro de interpolación para generar el bloque de predicción.
Si una PU se codifica a través de interpredicción, la unidad 82 de compensación de movimiento puede generar una lista de vectores de movimiento predichos candidatos para la PU. El flujo de bits puede incluir datos para identificar una posición de un vector de movimiento predicho candidato seleccionado en la lista de vectores de movimiento predichos candidatos para la PU. Después de generar el vector de movimiento predicho candidato para la PU, la unidad 82 de compensación de movimiento puede generar un bloque de imagen de predicción para la PU basándose en uno o más bloques de referencia indicados por la información de movimiento para la PU. El bloque de referencia para la PU puede estar ubicado en una imagen de tiempo diferente de una imagen de tiempo de la PU. La unidad 82 de compensación de movimiento puede determinar la información de movimiento para la PU basándose en la información de movimiento seleccionada en la lista de vectores de movimiento predichos candidatos para la PU.
La unidad 86 de cuantificación inversa realiza cuantización inversa (por ejemplo, decuantificación) en un coeficiente de transformada cuantificado que se proporciona en el flujo de bits y se decodifica por la unidad 80 de codificación de entropía. El proceso de cuantificación inversa puede incluir: determinar un grado de cuantificación basándose en un parámetro de cuantificación calculado por el codificador 20 de vídeo para cada bloque de imágenes en el segmento de vídeo y, de manera similar, determinar un grado de cuantificación inversa a aplicar. La unidad 88 de transformación inversa realiza la transformación inversa (por ejemplo, DCT inversa, transformación entera inversa, o un proceso de transformación inversa conceptualmente similar) sobre el coeficiente de transformación para generar un bloque residual del dominio del pixel.
Después de que la unidad 82 de compensación de movimiento genera el bloque de predicción del bloque de vídeo actual basándose en el vector de movimiento y los otros elementos de sintaxis, el decodificador 30 de vídeo añade el bloque residual de la unidad 88 de transformación inversa y el bloque de predicción correspondiente generado por la unidad 82 de compensación de movimiento, para constituir un bloque de vídeo decodificado. El sumador 90 representa uno o más componentes que realizan la operación de suma. Cuando sea necesario, se puede utilizar además un filtro de desbloqueo para filtrar el bloque decodificado para eliminar un artefacto de bloqueo. Otro filtro de bucle (en o tras un bucle de decodificación) se puede usar además para suavizar los píxeles, o la calidad de vídeo se puede mejorar de otra manera. Luego, un bloque de vídeo decodificado en un fotograma o imagen dados se almacena en la memoria 92 de imágenes de referencia. La memoria 92 de imágenes de referencia almacena una imagen de referencia utilizada para la compensación de movimiento posterior. La memoria 92 de imágenes de referencia almacena además un vídeo decodificado para ser visualizado posteriormente en un aparato de visualización tal como el aparato 32 de visualización de la FIG. 1.
Como se describió anteriormente, las tecnologías en esta solicitud se relacionan, por ejemplo, con la interdecodificación. Debe entenderse que las tecnologías de esta solicitud pueden ser implementadas por cualquier códec de vídeo descrito en esta solicitud, y el decodificador de vídeo incluye (por ejemplo) el codificador 20 de vídeo y el decodificador 30 de vídeo, mostrados y descritos en las FIG. 1 a FIG. 3. En concreto, en una implementación factible, la unidad 41 de predicción descrita en la FIG. 2 puede implementar una tecnología específica descrita a continuación cuando se realiza la interpredicción durante la codificación de un bloque de datos de vídeo. En otra implementación factible, la unidad 81 de predicción descrita en la FIG. 3 puede realizar una tecnología particular descrita a continuación cuando se realiza una interpredicción durante la decodificación de un bloque de datos de vídeo. Por lo tanto, una referencia a un "codificador de vídeo" o "decodificador de vídeo" general puede incluir el codificador 20 de vídeo, el decodificador 30 de vídeo u otra unidad de codificación o unidad de decodificación de vídeo.
La FIG. 4 es un diagrama de flujo esquemático de módulo de interpredicción según una realización de esta solicitud. El módulo 121 de interpredicción, por ejemplo, puede incluir una unidad 42 de estimación de movimiento y una unidad 44 de compensación de movimiento. Una relación entre una PU y una CU varía según el estándar de codificación de compresión de video. El módulo 121 de interpredicción puede particionar una CU actual en PU según una pluralidad de patrones de partición. Por ejemplo, el módulo 121 de interpredicción puede particionar la CU actual en las PU según patrones de partición 2N x 2N, 2N x N, N x 2N y N x N. En otra realización, la CU actual es una PU actual, y esto no está limitado.
El módulo 121 de interpredicción puede realizar una estimación de movimiento entero (IME) y luego una estimación de movimiento fraccionario (FME) en cada PU. Cuando el módulo 121 de interpredicción realiza IME en la PU, el módulo 121 de interpredicción puede buscar una o más imágenes de referencia para un bloque de referencia para la PU. Después de encontrar el bloque de referencia para la PU, el módulo 121 de interpredicción puede generar un vector de movimiento que indica, con precisión entera, un desplazamiento espacial entre la PU y el bloque de referencia para la PU. Cuando el módulo 121 de interpredicción realiza FME en la PU, el módulo 121 de interpredicción puede mejorar el vector de movimiento generado al realizar IME en la PU. Un vector de movimiento generado al realizar FME en la PU puede tener precisión subentera (por ejemplo, precisión de 1/2 píxel o precisión de 1/4 píxel). Después de generar el vector de movimiento para la PU, el módulo 121 de interpredicción puede generar un bloque de imagen de predicción para la PU utilizando el vector de movimiento para la PU.
En algunas implementaciones factibles en las que el módulo 121 de interpredicción señaliza información de movimiento para la PU a un decodificador en un modo AMVP, el módulo 121 de interpredicción puede generar una lista de vectores de movimiento predichos candidatos para la PU. La lista de vectores de movimiento predichos candidatos pueden incluir uno o más vectores de movimiento predichos candidatos originales y uno o más vectores de movimiento predichos candidatos adicionales derivados de los uno o más vectores de movimiento predichos candidatos originales. Después de generar la lista de vectores de movimiento predichos candidatos para la PU, el módulo 121 de interpredicción puede seleccionar un vector de movimiento predicho candidato de la lista de vectores de movimiento predichos candidatos y generar una diferencia de vector de movimiento (MVD) para la PU. La MVD para la PU puede indicar una diferencia entre un vector de movimiento indicado por el vector de movimiento predicho candidato seleccionado y el vector de movimiento generado para la PU a través de IME y FME. En estas implementaciones factibles, el módulo 121 de interpredicción puede emitir un índice de vector de movimiento predicho candidato que identifica una posición del vector de movimiento predicho candidato seleccionado en la lista de vectores de movimiento predichos candidatos. El módulo 121 de interpredicción puede emitir además la MVD para la PU. A continuación se describe en detalle una implementación factible del modo de predicción avanzada de vectores de movimiento (AMVP) de la FIG. 6 en esta realización de esta solicitud.
Además de realizar IME y FME en la PU para generar la información de movimiento para la PU, el módulo 121 de interpredicción puede realizar además una operación de fusión en la PU. Cuando el módulo 121 de interpredicción realiza la operación de fusión en la PU, el módulo 121 de interpredicción puede generar una lista de vectores de movimiento predichos candidatos para la PU. La lista de vectores de movimiento predichos candidatos para la PU pueden incluir uno o más vectores de movimiento predichos candidatos originales y uno o más vectores de movimiento predichos candidatos adicionales derivados de los uno o más vectores de movimiento predichos candidatos originales. Los vectores de movimiento predichos candidatos originales en la lista de vectores de movimiento predichos candidatos pueden incluir uno o más vectores de movimiento predichos candidatos espaciales y vectores de movimiento predichos candidatos temporales. El vector de movimiento predicho candidato espacial puede indicar información de movimiento para otra PU en una imagen actual. El vector de movimiento predicho candidato temporal puede basarse en información de movimiento de una PU correspondiente en una imagen diferente de la imagen actual. El vector de movimiento predicho candidato temporal también puede denominarse predicción del vector de movimiento temporal (TMVP).
Después de generar la lista de vectores de movimiento predichos candidatos, el módulo 121 de interpredicción puede seleccionar un vector de movimiento predicho candidato de la lista de vectores de movimiento predichos candidatos. Luego, el módulo 121 de interpredicción puede generar un bloque de imagen de predicción para la PU basándose en el bloque de referencia indicado por la información de movimiento para la PU. En el modo de fusión, la información de movimiento de la PU puede ser la misma que la información de movimiento indicada por el vector de movimiento predicho candidato seleccionado. La FIG. 5 que se describe a continuación es un diagrama de flujo de un ejemplo del modo de fusión.
Después de generar el bloque de imagen de predicción para la PU a través de IME y FME y generar el bloque de imagen de predicción para la PU a través de la operación de fusión, el módulo 121 de interpredicción puede seleccionar el bloque de imagen de predicción generado al realizar la operación FME o el bloque de imagen de predicción generado al realizar la operación de fusión. En algunas implementaciones factibles, el módulo 121 de interpredicción puede seleccionar el bloque de imagen de predicción para la PU analizando los costes de tasa de distorsión del bloque de imagen de predicción generado al realizar la operación FME y el bloque de imagen de predicción generado al realizar la operación de fusión.
Después de que el módulo 121 de interpredicción ha seleccionado un bloque de imagen de predicción de una PU generada al particionar la CU actual según cada patrón de partición (en algunas implementaciones, después de que una unidad de árbol de codificación CTU se particiona en CU, la CU no se particiona más en PU más pequeñas y, en este caso, la PU es equivalente a la CU), el módulo 121 de interpredicción puede seleccionar un patrón de partición para la CU actual. En algunas implementaciones, el módulo 121 de interpredicción puede seleccionar el patrón de partición para la CU actual analizando un coste de distorsión de tasa del bloque de imagen de predicción seleccionado de la PU generado al particionar la CU actual según cada patrón de partición. El módulo 121 de interpredicción puede emitir un bloque de imagen de predicción asociado con una PU que pertenece al patrón de partición seleccionado a un módulo 102 de generación residual. El módulo 121 de interpredicción puede emitir un elemento de sintaxis de información de movimiento para la PU que pertenece al patrón de partición seleccionado a un módulo 116 de codificación de entropía.
En el diagrama esquemático mostrado en la FIG. 4, el módulo 121 de interpredicción incluye los módulos 180A a 180N IME (denominados colectivamente "módulo 180 IME"), los módulos 182A a 182N FME (denominados colectivamente "módulo 182 FME"), los módulos 184A a 184N de fusión (denominados colectivamente "módulo 184 de fusión"), los módulos 186A a 186N de toma de decisiones de patrones de PU (denominados colectivamente "módulo 186 de toma de decisiones de patrones de PU") y un módulo 188 de toma de decisiones de patrones de CU (que además puede realizar un proceso de toma de decisiones de patrones de CTU a CU).
El módulo 180 IME, el módulo 182 FME y el módulo 184 de fusión pueden realizar respectivamente una operación IME, una operación FME y una operación de fusión en la PU de la CU actual. En el diagrama esquemático que se muestra en la FIG. 4, se describe que el módulo 121 de intepredicción que incluye un módulo 180 IME separado, un módulo 182 FME separado y un módulo 184 de fusión separado para cada PU en cada patrón de partición para la CU. En otra implementación factible, el módulo 121 de intepredicción no incluye el módulo 180<i>M<e>separado, el módulo 182 FME separado o el módulo 184 de fusión separado para cada PU en cada patrón de partición de la CU.
Como se ilustra en el diagrama esquemático que se muestra en la FIG. 4, el módulo 180A IME, el módulo 182A FME y el módulo 184A de fusión pueden realizar respectivamente una operación IME, una operación FME y una operación de fusión en una PU generada al particionar la CU según el patrón de partición 2N x 2N. El módulo 186A de toma de decisiones de patrón PU puede seleccionar uno de los bloques de imágenes de predicción generados por el módulo 180A IME, el módulo 182A FME y el módulo 184A de fusión.
El módulo 180B IME, el módulo 182B FME y el módulo 184B de fusión pueden realizar respectivamente una operación IME, una operación FME y una operación de fusión en la PU izquierda generada al particionar la CU según el patrón de partición N x 2N. El módulo 186B de toma de decisiones de patrón PU puede seleccionar uno de los bloques de imágenes de predicción generados por el módulo 180B IME, el módulo 182B FME y el módulo 184B de fusión.
El módulo 180C IME, el módulo 182C FME y el módulo 184C de fusión pueden realizar respectivamente una operación IME, una operación FME y una operación de fusión en la PU derecha generada al particionar la CU según el patrón de partición N x 2N. El módulo 186C de toma de decisiones de patrón PU puede seleccionar uno de los bloques de imágenes de predicción generados por el módulo 180C IME, el módulo 182C FME y el módulo 184C de fusión.
El módulo 180N IME, el módulo 182N FME y el módulo 184N de fusión pueden realizar respectivamente una operación IME, una operación FME y una operación de fusión en la PU inferior derecha generada al particionar la CU según el patrón de partición N x N. El módulo 186N de toma de decisiones de patrón PU puede seleccionar uno de los bloques de imágenes de predicción generados por el módulo 180N IME, el módulo 182N FME y el módulo 184N de fusión.
El módulo 186 de toma de decisiones de patrón de PU puede seleccionar un bloque de imagen de predicción analizando los costes de tasa-distorsión de una pluralidad de posibles bloques de imagen de predicción, y seleccionar un bloque de imagen de predicción que proporcione un coste de tasa-distorsión óptimo en un escenario de decodificación dado. Por ejemplo, para una aplicación con ancho de banda limitado, el módulo 186 de toma de decisiones de patrón de PU puede preferir un bloque de imagen de predicción para el cual se aumenta una relación de compresión, y para otra aplicación, el módulo 186 de toma de decisiones de patrón de PU puede preferir un bloque de imagen de predicción para el cual se mejora la calidad de un video reconstruido. Después de que el módulo 186 de toma de decisiones de patrón de PU selecciona bloques de imágenes de predicción para las PU de la CU actual, el módulo 188 de toma de decisiones de patrón de CU selecciona el patrón de partición para la CU actual y emite el bloque de imágenes de predicción y la información de movimiento para la PU que pertenece al patrón de partición seleccionado.
La FIG. 5 es un diagrama de flujo de un ejemplo de un modo de fusión según una realización de esta solicitud. Un codificador de vídeo (por ejemplo, el codificador 20 de vídeo) puede realizar una operación 200 de fusión. En otra implementación factible, el codificador de vídeo puede realizar una operación de fusión diferente de la operación 200 de fusión. Por ejemplo, en otra implementación factible, el codificador de vídeo puede realizar una operación de fusión, donde el codificador de vídeo realiza pasos más o menos que los pasos de la operación 200 de fusión o pasos diferentes de los pasos de la operación 200 de fusión. En otra implementación factible, el codificador de vídeo puede realizar los pasos de la operación 200 de fusión en diferentes órdenes o en paralelo. El codificador puede realizar además la operación 200 de fusión en una PU codificada en un modo de omisión.
Después de que el codificador de video inicia la operación 200 de fusión, el codificador de video puede generar una lista de vectores de movimiento predichos candidatos para una PU actual (202). El codificador de video puede generar la lista de vectores de movimiento predichos candidatos para la PU actual de varias maneras. Por ejemplo, el codificador de vídeo puede generar, según una de las tecnologías de ejemplo descritas a continuación con respecto a la FIG. 8 a la FIG. 12, la lista de vectores de movimiento predichos candidatos para la PU actual.
Como se describió anteriormente, la lista de vectores de movimiento predichos candidatos para la PU actual puede incluir un vector de movimiento predicho candidato temporal. El vector de movimiento predicho candidato temporal puede indicar información de movimiento para una PU ubicada conjuntamente en el dominio de tiempo correspondiente. La PU ubicada conjuntamente puede estar ubicada espacialmente en la misma posición que la PU actual en un fotograma de imagen en una imagen de referencia en lugar de en una imagen actual. En esta solicitud, la imagen de referencia que incluye la PU de dominio de tiempo correspondiente puede denominarse imagen de referencia relacionada. En esta solicitud, un índice de imagen de referencia de la imagen de referencia relacionada puede denominarse índice de imagen de referencia relacionada. Como se describió anteriormente, la imagen actual puede estar asociada a una o más listas de imágenes de referencia (por ejemplo, una lista 0 y una lista 1). El índice de imágenes de referencia puede indicar la imagen de referencia indicando una posición de la imagen de referencia en una lista de imágenes de referencia. En algunas implementaciones factibles, la imagen actual puede estar asociada con una lista de imágenes de referencia combinadas.
En algunos codificadores de vídeo, el índice de imagen de referencia relacionado es un índice de imagen de referencia para una PU que cubre una posición de fuente de índice de referencia asociada con la PU actual. En estos codificadores de vídeo, la posición de la fuente del índice de referencia asociada con la PU actual está adyacente a la izquierda de la PU actual o adyacente a la parte superior de la PU actual. En esta solicitud, si un bloque de imagen asociado con una PU incluye una posición específica, la PU puede "cubrir" la posición específica. En estos codificadores de vídeo, el codificador de vídeo puede usar un índice 0 de imagen de referencia si la posición de la fuente del índice de referencia no está disponible.
Sin embargo, en un ejemplo, la posición de la fuente del índice de referencia asociada con la PU actual está dentro de una CU actual. En este ejemplo, una PU que cubre la posición de la fuente del índice de referencia asociada con la PU actual puede considerarse disponible si la PU está arriba o a la izquierda de la CU actual. En este caso, es posible que el codificador de vídeo necesite acceder a la información de movimiento de otra PU de la CU actual para determinar la imagen de referencia, incluida la PU ubicada conjuntamente. Por lo tanto, estos codificadores de vídeo pueden usar información de movimiento (por ejemplo, un índice de imagen de referencia) para una PU que pertenece a la CU actual para generar el vector de movimiento predicho candidato temporal para la PU actual. En otras palabras, estos codificadores de vídeo pueden usar la información de movimiento de la PU perteneciente a la CU actual para generar el vector de movimiento predicho candidato temporal. Por lo tanto, es posible que el codificador de vídeo no pueda generar, en paralelo, listas de vectores de movimiento predichos candidatos para la PU actual y la PU que cubre la posición de la fuente del índice de referencia asociada con la PU actual.
Según las tecnologías de esta solicitud, el codificador de vídeo puede establecer explícitamente el índice de imagen de referencia relacionado sin hacer referencia a un índice de imagen de referencia para ninguna otra PU. De esta manera, el codificador de vídeo puede generar, en paralelo, listas de vectores de movimiento predichos candidatos para la PU actual y otra PU de la CU actual. Debido a que el codificador de video establece explícitamente el índice de imagen de referencia relacionada, dicho índice no se basa en la información de movimiento de ninguna otra PU de la CU actual. En algunas implementaciones factibles en las que el codificador de video establece explícitamente el índice de imagen de referencia relacionado, el codificador de video siempre puede establecer el índice de imagen de referencia relacionado en un índice de imagen de referencia preestablecido fijo (por ejemplo, 0). De esta manera, el codificador de vídeo puede generar un vector de movimiento predicho candidato temporal basado en información de movimiento para una PU ubicada conjuntamente en un fotograma de referencia indicado por el índice de imagen de referencia preestablecido, donde el vector de movimiento predicho candidato temporal puede incluirse en una lista de vectores de movimiento predichos candidatos para la CU actual.
En una implementación factible en la que el codificador de video establece explícitamente el índice de imagen de referencia relacionada, el codificador de video puede señalizar explícitamente el índice de imagen de referencia relacionada en una estructura de sintaxis (por ejemplo, una cabecera de imagen, una cabecera de segmento, un APS u otra estructura de sintaxis). En esta implementación factible, el codificador de video puede señalizar un índice de imagen de referencia relacionado para cada LCU (es decir, una CTU), CU, PU, TU o subbloque de otro tipo a un decodificador. Por ejemplo, el codificador de vídeo puede señalizar que un índice de imagen de referencia relacionado para cada PU de la CU es igual a "1".
En algunas implementaciones factibles, el índice de imagen de referencia relacionado se puede establecer implícitamente en lugar de explícitamente. En estas implementaciones factibles, el codificador de video puede generar cada vector de movimiento predicho candidato temporal en la lista de vectores de movimiento predichos candidatos para la PU de la CU actual usando información de movimiento para una PU en una imagen de referencia indicada por un índice de imagen de referencia para una PU que cubre posiciones fuera de la CU actual, incluso si estas posiciones no son estrictamente adyacentes a la PU actual.
Después de generar la lista de vectores de movimiento predichos candidatos para la PU actual, el codificador de video puede generar un bloque de imagen de predicción asociado con un vector de movimiento predicho candidato en la lista de vectores de movimiento predichos candidatos (204). El codificador de video puede determinar información de movimiento para la PU actual basándose en la información de movimiento de un vector de movimiento predicho candidato indicado y luego generar un bloque de imagen de predicción basado en uno o más bloques de referencia indicados por la información de movimiento para la PU actual, para generar un bloque de imagen de predicción asociado con el vector de movimiento predicho candidato. Luego, el codificador de video puede seleccionar un vector de movimiento predicho candidato de la lista de vectores de movimiento predichos candidatos (206). El codificador de vídeo puede seleccionar el vector de movimiento predicho candidato de varias maneras. Por ejemplo, el codificador de vídeo puede seleccionar un vector de movimiento predicho candidato analizando el coste de tasa-distorsión de cada bloque de imagen de predicción asociado con los vectores de movimiento predichos candidatos.
Después de seleccionar el vector de movimiento predicho candidato, el codificador de vídeo puede emitir un índice de vector de movimiento predicho candidato (208). El índice del vector de movimiento predicho candidato puede indicar una posición del vector de movimiento predicho candidato seleccionado en la lista de vectores de movimiento predichos candidatos. En algunas implementaciones factibles, el índice del vector de movimiento predicho por el candidato puede representarse como "merge_idx".
La FIG. 6 es un diagrama de flujo de un ejemplo de un modo de predicción avanzada de vectores de movimiento (AMVP) según una realización de esta solicitud. Un codificador de vídeo (por ejemplo, el codificador 20 de vídeo) puede realizar una operación 210 AMVP.
Después de que el codificador de video inicia la operación 210 AMVP, el codificador de video puede generar uno o más vectores de movimiento para una PU actual (211). El codificador de video puede realizar una estimación de movimiento entero y una estimación de movimiento fraccionario para generar el vector de movimiento para la PU actual. Como se describió anteriormente, una imagen actual puede estar asociada a dos listas de imágenes de referencia (una lista 0 y una lista 1). Si la PU actual se predice de manera unidireccional, el codificador de video puede generar un vector de movimiento de lista 0 o un vector de movimiento de lista 1 para la PU actual. El vector de movimiento de la lista 0 puede indicar un desplazamiento espacial entre un bloque de imagen correspondiente a la PU actual y un bloque de referencia en una imagen de referencia en la lista 0. El vector de movimiento de la lista 1 puede indicar un desplazamiento espacial entre el bloque de imagen correspondiente a la PU actual y un bloque de referencia en una imagen de referencia en la lista 1. Si la PU actual se predice bidireccionalmente, el codificador de vídeo puede generar el vector de movimiento de la lista 0 y el vector de movimiento de la lista 1 para la PU actual.
Después de generar uno o más vectores de movimiento para la PU actual, el codificador de video puede generar un bloque de imagen de predicción para la PU actual (212). El codificador de vídeo puede generar el bloque de imagen de predicción para la PU actual basándose en uno o más bloques de referencia indicados por uno o más vectores de movimiento para la PU actual.
Además, el codificador de vídeo puede generar una lista de vectores de movimiento predichos candidatos para la PU actual (213). El codificador de video puede generar la lista de vectores de movimiento predichos candidatos para la PU actual de varias maneras. Por ejemplo, el codificador de vídeo puede generar, según una de las tecnologías ejemplares descritas a continuación con respecto a la FIG. 8 a la FIG. 12, la lista de vectores de movimiento predichos candidatos para la PU actual. En algunas implementaciones factibles, cuando el codificador de video genera la lista de vectores de movimiento predichos candidatos en la operación 210 AMVP, la lista de vectores de movimiento predichos candidatos puede estar limitada a dos vectores de movimiento predichos candidatos. Por el contrario, cuando el codificador de vídeo genera la lista de vectores de movimiento predichos candidatos en una operación de fusión, la lista de vectores de movimiento predichos candidatos puede incluir más vectores de movimiento predichos candidatos (por ejemplo, cinco vectores de movimiento predichos candidatos).
Después de generar la lista de vectores de movimiento predichos candidatos para la PU actual, el codificador de vídeo puede generar una o más diferencias de vector de movimiento (MVD) para cada vector de movimiento predicho candidato en la lista de vectores de movimiento predichos candidatos (214). El codificador de vídeo puede determinar una diferencia entre un vector de movimiento indicado por un vector de movimiento predicho candidato y un vector de movimiento correspondiente para la PU actual, para generar una diferencia de vector de movimiento para el vector de movimiento predicho candidato.
Si la PU actual se predice unidireccionalmente, el codificador de video puede generar una sola MVD para cada vector de movimiento predicho candidato. Si la PU actual se predice bidireccionalmente, el codificador de video puede generar dos MVD para cada vector de movimiento predicho candidato. Una primera MVD puede indicar una diferencia entre un vector de movimiento indicado por el vector de movimiento predicho candidato y el vector de movimiento de la lista 0 para la PU actual. Una segunda MVD para la PU puede indicar una diferencia entre el vector de movimiento indicado por el vector de movimiento predicho candidato y el vector de movimiento de la lista-1 para la PU actual.
El codificador de video puede seleccionar un vector de movimiento predicho candidato de la lista de vectores de movimiento predichos candidatos (215). El codificador de vídeo puede seleccionar el uno o más vectores de movimiento predichos candidatos de varias maneras. Por ejemplo, el codificador de vídeo puede seleccionar un vector de movimiento predicho candidato que coincida, con un error mínimo, con un vector de movimiento asociado de un vector de movimiento a codificar. Esto puede reducir la cantidad de bits necesarios para representar una diferencia de vector de movimiento para el vector de movimiento predicho candidato.
Después de seleccionar uno o más vectores de movimiento predichos candidatos, el codificador de vídeo puede emitir uno o más índices de imágenes de referencia para la PU actual, uno o más índices de vectores de movimiento predichos candidatos para la PU actual y una o más diferencias de vectores de movimiento para uno o más vectores de movimiento predichos candidatos seleccionados (216).
En un ejemplo en el que la imagen actual está asociada con las dos listas de imágenes de referencia (la lista 0 y la lista 1) y la PU actual se predice unidireccionalmente, el codificador de vídeo puede emitir un índice de imagen de referencia ("ref_idx_10") para la lista 0 o un índice de imagen de referencia ("ref_idx_11") para la lista 1. El codificador de vídeo puede emitir además un índice de vector de movimiento predicho candidato ("mvp_10_flag") que indica una posición de un vector de movimiento predicho candidato seleccionado del vector de movimiento de la lista 0 para la PU actual en la lista de vectores de movimiento predichos candidatos. Como alternativa, el codificador de video puede emitir un índice de vector de movimiento predicho candidato ("mvp_11_flag") que indica una posición de un vector de movimiento predicho candidato seleccionado del vector de movimiento de la lista 1 para la PU actual en la lista de vectores de movimiento predichos candidatos. El codificador de video puede además emitir una MVD para el vector de movimiento de la lista 0 o el vector de movimiento de la lista 1 para la PU actual.
En un ejemplo en el que la imagen actual está asociada con las dos listas de imágenes de referencia (la lista 0 y la lista 1) y la PU actual se predice bidireccionalmente, el codificador de vídeo puede emitir un índice de imagen de referencia ("ref_idx_10") para la lista 0 o un índice de imagen de referencia ("ref_idx_11") para la lista 1. El codificador de vídeo puede emitir además un índice de vector de movimiento predicho candidato ("mvp_10_flag") que indica una posición de un vector de movimiento predicho candidato seleccionado del vector de movimiento de la lista 0 para la PU actual en la lista de vectores de movimiento predichos candidatos. Además, el codificador de video puede emitir un índice de vector de movimiento predicho candidato ("mvp_11_flag") que indica una posición de un vector de movimiento predicho candidato seleccionado del vector de movimiento de la lista 1 para la PU actual en la lista de vectores de movimiento predichos candidatos. El codificador de video puede además emitir una MVD para el vector de movimiento de la lista 0 para la PU actual y una MVD para el vector de movimiento de la lista 1 para la PU actual.
La FIG. 7 es un diagrama de flujo de un ejemplo de compensación de movimiento realizado por un decodificador de vídeo (por ejemplo, el decodificador 30 de vídeo) según una realización de esta solicitud.
Cuando el decodificador de vídeo realiza una operación 220 de compensación de movimiento, el decodificador de vídeo puede recibir una indicación para un vector de movimiento predicho candidato seleccionado para una PU actual (222). Por ejemplo, el decodificador de vídeo puede recibir un índice de vector de movimiento predicho candidato que indica una posición del vector de movimiento predicho candidato seleccionado en una lista de vectores de movimiento predichos candidatos para la PU actual.
Si la información de movimiento para la PU actual está codificada en un modo AMVP y la PU actual se predice de manera bidireccional, el decodificador de video puede recibir un primer índice de vector de movimiento predicho candidato y un segundo índice de vector de movimiento predicho candidato. El primer índice de vector de movimiento predicho candidato indica una posición de un vector de movimiento predicho candidato seleccionado de un vector de movimiento de lista 0 para la PU actual en la lista de vectores de movimiento predichos candidatos. El segundo índice de vector de movimiento predicho candidato indica una posición de un vector de movimiento predicho candidato seleccionado de un vector de movimiento de lista 1 para la PU actual en la lista de vectores de movimiento predichos candidatos. En algunas implementaciones factibles, se puede usar un solo elemento de sintaxis para identificar los dos índices de vector de movimiento predichos candidatos.
Además, el decodificador de vídeo puede generar la lista de vectores de movimiento predichos candidatos para la PU actual (224). El decodificador de video puede generar la lista de vectores de movimiento predichos candidatos para la PU actual de varias maneras. Por ejemplo, el decodificador de vídeo puede generar la lista de vectores de movimiento predichos candidatos para la PU actual mediante el uso de tecnologías descritas a continuación con referencia a la FIG. 8 a la FIG. 12. Cuando el decodificador de vídeo genera un vector de movimiento predicho candidato temporal para la lista de vectores de movimiento predichos candidatos, el decodificador de vídeo puede establecer de manera explícita o implícita un índice de imagen de referencia que identifica una imagen de referencia que incluye una PU ubicada conjuntamente, como se describió anteriormente con respecto a la FIG. 5.
Después de generar la lista de vectores de movimiento predichos candidatos para la PU actual, el decodificador de vídeo puede determinar la información de movimiento para la PU actual basándose en la información de movimiento indicada por uno o más vectores de movimiento predichos candidatos seleccionados en la lista de vectores de movimiento predichos candidatos para la PU actual (225). Por ejemplo, si la información de movimiento para la PU actual está codificada en un modo de fusión, la información de movimiento para la PU actual puede ser la misma que la información de movimiento indicada por el vector de movimiento predicho candidato seleccionado. Si la información de movimiento para la PU actual está codificada en el modo AMVP, el decodificador de video puede reconstruir uno o más vectores de movimiento para la PU actual utilizando uno o más vectores de movimiento indicados por uno o más vectores de movimiento predichos candidatos seleccionados y uno o más MVD indicados en un flujo de bits. Un índice de imagen de referencia y un identificador de dirección de predicción de la PU actual pueden ser los mismos que los índices de imagen de referencia y los identificadores de dirección de predicción de uno o más vectores de movimiento predichos candidatos seleccionados. Después de determinar la información de movimiento para la PU actual, el decodificador de video puede generar un bloque de imagen de predicción para la PU actual basándose en uno o más bloques de referencia indicados por la información de movimiento para la PU actual (226).
La FIG. 8 es un diagrama esquemático de un ejemplo de una unidad de codificación (CU) y un bloque de imagen de posición adyacente asociado con la unidad de codificación según una realización de esta solicitud. La FIG. 8 es un diagrama esquemático para ilustrar una CU 250 y posiciones 252A a 252E de vector de movimiento predichas candidatas esquemáticas asociadas con la CU 250. En esta solicitud, las posiciones 252A a 252E de vector de movimiento predichas candidatas pueden denominarse colectivamente posición 252 de vector de movimiento predicha candidato. La posición 252 del vector de movimiento predicho candidato representa un vector de movimiento predicho candidato espacial que está en la misma imagen que la CU 250. La posición 252A del<vector de movimiento predicho candidato se encuentra a la izquierda de la>C<u 250. La posición 252B del vector>de movimiento predicho candidato se encuentra por encima de la CU 250. La posición 252C del vector de movimiento predicho candidato se encuentra en la derecha superior de la CU 250. La posición 252D del vector de movimiento predicho candidato se encuentra en la izquierda inferior de la CU 250. La posición 252E del vector de movimiento predicho candidato se encuentra en la izquierda superior de la CU 250. La FIG. 8 muestra una implementación esquemática de una manera en que un módulo 121 de interpredicción y un módulo 162 de compensación de movimiento pueden generar listas de vectores de movimiento predichos candidatos. A continuación se explica la implementación con referencia al módulo 121 de interpredicción. Sin embargo, debe entenderse que el módulo 162 de compensación de movimiento puede implementar la misma tecnología y, por lo tanto, generar la misma lista de vectores de movimiento predichos candidatos. En esta realización de esta solicitud, un bloque de imagen en el que se ubica una posición de vector de movimiento predicho candidato se denomina bloque de referencia. Además, el bloque de referencia incluye un bloque de referencia espacial, por ejemplo, bloques de imagen en los que se ubican 252A a 252E, y también incluye un bloque de referencia temporal, por ejemplo, un bloque de imagen en el que se ubica un bloque ubicado conjuntamente, o un bloque de imagen espacialmente adyacente de un bloque ubicado conjuntamente.
La FIG. 9 es un diagrama de flujo de un ejemplo de construcción de una lista de vectores de movimiento predichos candidatos según una realización de esta solicitud. En la FIG. 9 se describe una tecnología basada en una lista que incluye cinco vectores de movimiento predichos candidatos, pero la tecnología descrita en esta especificación puede usarse alternativamente con una lista de otro tamaño. Cada uno de los cinco vectores de movimiento predichos candidatos puede tener un índice (por ejemplo, de 0 a 4). La tecnología de la FIG. 9 se describe basándose en un decodificador de vídeo general. El decodificador de vídeo general puede ser, por ejemplo, un codificador de vídeo (por ejemplo, el codificador 20 de vídeo) o un decodificador de vídeo (por ejemplo, el decodificador 30 de vídeo).
Para reconstruir una lista de vectores de movimiento predichos candidatos según una implementación de la FIG.
9, el decodificador de vídeo primero considera cuatro vectores de movimiento predichos candidatos espaciales (902). Los cuatro vectores de movimiento candidatos espaciales predichos pueden incluir las posiciones 252A, 252B, 252 C y 252D de vectores de movimiento predichos candidatos. Los cuatro vectores de movimiento candidatos espaciales predichos pueden corresponder a información de movimiento para cuatro PU que están ubicadas en una misma imagen que una CU actual (por ejemplo, una CU 250). El decodificador de vídeo puede considerar los cuatro vectores de movimiento predichos candidatos espaciales en la lista en un orden específico. Por ejemplo, se puede considerar primero la posición 252A del vector de movimiento predicho candidato. Si la posición del vector de movimiento predicho candidato 252A está disponible, la posición del vector de movimiento predicho candidato 252A puede asignarse a un índice 0. Si la posición del vector de movimiento predicho candidato 252A no está disponible, el decodificador de vídeo puede no añadir la posición del vector de movimiento predicho candidato 252A a la lista de vectores de movimiento predichos candidatos. Es posible que la posición del vector de movimiento predicho candidato no esté disponible por diversos motivos. Por ejemplo, si la posición del vector de movimiento predicho candidato no se encuentra dentro de una imagen actual, es posible que la posición del vector de movimiento predicho candidato no esté disponible. En otra implementación factible, si la posición del vector de movimiento predicho candidato se somete a una intrapredicción, la posición del vector de movimiento predicho candidato puede no estar disponible. En otra implementación factible, si la posición del vector de movimiento predicho candidato se ubica en un segmento diferente a la de la CU actual, la posición del vector de movimiento predicho candidato puede no estar disponible.
Después de considerar la posición 252A del vector de movimiento predicho candidato, el decodificador de vídeo puede considerar la posición 252B del vector de movimiento predicho candidato. Si la posición 252B del vector de movimiento predicho candidato está disponible y es diferente de la posición 252A del vector de movimiento predicho candidato, el decodificador de vídeo puede agregar la posición 252B del vector de movimiento predicho candidato a la lista de vectores de movimiento predichos candidatos. En este contexto específico, el término "mismo" o "diferente" significa que la información de movimiento asociada con las posiciones de vectores de movimiento predichos candidatos es la misma o diferente. Por lo tanto, si dos posiciones de vectores de movimiento predichos candidatos tienen la misma información de movimiento, se consideran iguales; o si dos posiciones de vectores de movimiento predichos candidatos tienen información de movimiento diferente, se consideran diferentes. Si la posición 252a del vector de movimiento predicho candidato no está disponible, el decodificador de vídeo puede asignar la posición 252B del vector de movimiento predicho candidato al índice 0. Si la posición 252A del vector de movimiento predicho candidato está disponible, el decodificador de vídeo puede asignar la posición 252 del vector de movimiento predicho candidato al índice 1. Si la posición 252B del vector de movimiento predicho candidato no está disponible o es la misma que la posición 252A del vector de movimiento predicho candidato, el decodificador de vídeo omite la adición de la posición 252B del vector de movimiento predicho candidato a la lista de vectores de movimiento predichos candidatos.
De manera similar, el decodificador de vídeo considera la posición 252C de vector de movimiento predicho candidato para determinar si agregar la posición 252C de vector de movimiento predicho candidato a la lista. Si la posición 252C del vector de movimiento predicho candidato está disponible y es diferente de las posiciones 252B y 252A del vector de movimiento predicho candidato, el decodificador de vídeo puede asignar la posición 252C del vector de movimiento predicho candidato a un próximo índice disponible. Si la posición 252C de vector de movimiento predicho candidato no está disponible o es la misma que al menos una de las posiciones 252A y 252B del vector de movimiento predicho candidato, el decodificador de vídeo no agrega la posición 252C de vector de movimiento predicho candidato a la lista de vectores de movimiento predichos candidatos. A continuación, el decodificador de vídeo considera la posición del vector de movimiento predicho candidato 252D. Si la posición 252D del vector de movimiento predicho candidato está disponible y es diferente de las posiciones 252A, 252B y 252C del vector de movimiento predicho candidato, el decodificador de vídeo puede asignar la posición 252D del vector de movimiento predicho candidato a un próximo índice disponible. Si la posición 252D de vector de movimiento predicho candidato no está disponible o es la misma que al menos una de las posiciones 252A, 252B y 252C del vector de movimiento predicho candidato, el decodificador de vídeo no agrega la posición 252D de vector de movimiento predicho candidato a la lista de vectores de movimiento predichos candidatos. En la implementación anterior, se describe de manera general un ejemplo en el que se consideran las posiciones 252A a 252D de vector de movimiento predicho candidato para determinar si se incluirán en la lista de vectores de movimiento predicho candidato. Sin embargo, en algunas implementaciones, todas las posiciones 252A a 252D de vector de movimiento predicho candidato pueden agregarse primero a la lista de vectores de movimiento predicho candidato, y luego una posición de vector de movimiento predicho candidato repetida se elimina de la lista de vectores de movimiento predicho candidato.
Después de que el decodificador de video considera los primeros cuatro vectores de movimiento predichos candidatos espaciales, la lista de vectores de movimiento predichos candidatos puede incluir cuatro vectores de movimiento predichos candidatos espaciales, o la lista puede incluir menos de cuatro vectores de movimiento predichos candidatos espaciales. Si la lista incluye cuatro vectores de movimiento predichos candidatos espaciales (904, sí), el decodificador de vídeo considera un vector de movimiento predicho candidato temporal (906). El vector de movimiento predicho candidato temporal puede corresponderse con información de movimiento para una PU ubicada conjuntamente de una imagen diferente de la imagen actual. Si el vector de movimiento predicho candidato temporal está disponible y es diferente de los primeros cuatro vectores de movimiento predichos candidatos espaciales, el decodificador de vídeo asigna el vector de movimiento predicho candidato temporal a un índice 4. Si el vector de movimiento predicho candidato temporal no está disponible o es el mismo que uno de los primeros cuatro vectores de movimiento predichos candidatos espaciales, el decodificador de vídeo no agrega el vector de movimiento predicho candidato temporal a la lista de vectores de movimiento predichos candidatos. Por lo tanto, después de que el decodificador de vídeo considera el vector de movimiento predicho candidato temporal (906), la lista de vectores de movimiento predichos candidatos puede incluir cinco vectores de movimiento predichos candidatos (los primeros cuatro vectores de movimiento predichos candidatos espaciales considerados en 902 y el vector de movimiento predicho candidato temporal considerado en 906) o puede incluir cuatro vectores de movimiento predichos candidatos (los primeros cuatro vectores de movimiento predichos candidatos espaciales considerados en 902). Si la lista de vectores de movimiento predichos candidatos incluye cinco vectores de movimiento predichos candidatos (908, sí), el decodificador de video completa la construcción de la lista.
Si la lista de vectores de movimiento predichos candidatos incluye cuatro vectores de movimiento predichos candidatos (908, no), el decodificador de vídeo puede considerar un quinto vector de movimiento predicho candidato espacial (910). El quinto vector de movimiento predicho candidato espacial puede corresponder (por ejemplo) a una posición 252E de vector de movimiento predicho candidato. Si el vector de movimiento predicho candidato en la posición 252E está disponible y es diferente de los vectores de movimiento predichos candidatos en las posiciones 252A, 252B, 252C y 252D, el decodificador de vídeo puede agregar el quinto vector de movimiento predicho candidato espacial a la lista de vectores de movimiento predichos candidatos y asignarlo al índice 4. Si el vector de movimiento predicho candidato en la posición 252E no está disponible o es el mismo que los vectores de movimiento predichos candidatos en las posiciones 252A, 252B, 252C y 252D, el decodificador de vídeo puede no agregar el vector de movimiento predicho candidato en la posición 252e a la lista de vectores de movimiento predichos candidatos. Por lo tanto, después de que el quinto vector de movimiento predicho candidato espacial sea considerado (910), la lista puede incluir cinco vectores de movimiento predichos candidatos (los primeros cuatro vectores de movimiento predichos candidatos espaciales considerados en 902 y el quinto vector de movimiento predicho candidato espacial considerado en 910) o puede incluir cuatro vectores de movimiento predichos candidatos (los cuatro vectores de movimiento predichos candidatos espaciales considerados en 902).
Si la lista de vectores de movimiento predichos candidatos incluye cinco vectores de movimiento predichos candidatos (912, sí), el decodificador de vídeo completa la generación de la lista de vectores de movimiento predichos candidatos. Si la lista de vectores de movimiento predichos candidatos incluye cuatro vectores de movimiento predichos candidatos (912, no), el decodificador de vídeo agrega un vector de movimiento predicho candidato generado artificialmente (914) hasta que la lista incluya cinco vectores de movimiento predichos candidatos (916, sí).
Si la lista incluye menos de cuatro vectores de movimiento predichos candidatos espaciales (904, no) después de que el decodificador de vídeo considera los primeros cuatro vectores de movimiento predichos candidatos espaciales, el decodificador de vídeo puede considerar un quinto vector de movimiento predicho candidato espacial (918). El quinto vector de movimiento predicho candidato espacial puede corresponder (por ejemplo) a una posición 252E de vector de movimiento predicho candidato. Si el vector de movimiento predicho candidato en la posición 252E está disponible y es diferente de los vectores de movimiento predichos candidatos existentes en la lista de vectores de movimiento predichos candidatos, el decodificador de vídeo puede agregar el quinto vector de movimiento predicho candidato espacial a la lista de vectores de movimiento predichos candidatos y asignar el quinto vector de movimiento predicho candidato espacial a un próximo índice disponible. Si el vector de movimiento predicho candidato en la posición 252E no está disponible o es el mismo que uno de los vectores de movimiento predichos candidatos existentes en la lista de vectores de movimiento predichos candidatos, es posible que el decodificador de video no agregue el vector de movimiento predicho candidato en la posición 252E a la lista de vectores de movimiento predichos candidatos. A continuación, el decodificador de vídeo puede considerar un vector de movimiento predicho candidato temporal (920). Si el vector de movimiento predicho candidato temporal está disponible y es diferente de los vectores de movimiento predichos candidatos existentes en la lista de vectores de movimiento predichos candidatos, el decodificador de vídeo puede añadir el vector de movimiento predicho candidato temporal a la lista de vectores de movimiento predichos candidatos, y asignar el vector de movimiento predicho candidato temporal a un próximo índice disponible. Si el vector de movimiento predicho candidato temporal no está disponible o es el mismo que uno de los vectores de movimiento predichos candidatos existentes en la lista de vectores de movimiento predichos candidatos, el decodificador de video puede no agregar el vector de movimiento predicho candidato temporal a la lista de vectores de movimiento predichos candidatos.
Si la lista de vectores de movimiento predichos candidatos incluye cinco vectores de movimiento predichos candidatos (922, sí) después de que se consideran el quinto vector de movimiento predicho candidato espacial (en 918) y el vector de movimiento predicho candidato temporal (en 920), el decodificador de video completa la generación de la lista de vectores de movimiento predichos candidatos. Si la lista de vectores de movimiento predichos candidatos incluye menos de cinco vectores de movimiento predichos candidatos (922, no), el decodificador de vídeo añade un vector de movimiento predicho candidato generado artificialmente (914) hasta que la lista incluya cinco vectores de movimiento predichos candidatos (916, sí).
Según las tecnologías en esta solicitud, un vector de movimiento predicho candidato de fusión adicional puede generarse artificialmente después de un vector de movimiento predicho candidato espacial y un vector de movimiento predicho candidato temporal, de modo que un tamaño de una lista de vectores de movimiento predichos candidatos de fusión sea fijo e igual a una cantidad especificada (por ejemplo, cinco en la implementación factible de la FIG. 9 anterior) de vectores de movimiento predichos candidatos de fusión. El vector de movimiento predicho candidato de fusión adicional puede incluir ejemplos de un vector de movimiento predicho candidato de fusión bipredictivo combinado (un vector 1 de movimiento predicho candidato), un vector de movimiento predicho candidato de fusión bipredictivo escalado (un vector 2 de movimiento predicho candidato) y un vector de movimiento predicho candidato de fusión/AMVP de vector cero (un vector 3 de movimiento predicho candidato).
La FIG. 10 es un diagrama esquemático de un ejemplo de adición de un vector de movimiento candidato combinado a una lista de vectores de movimiento predichos candidatos en modo de fusión según una realización de esta solicitud. Se puede generar un vector de movimiento predicho candidato de fusión bipredictivo combinado al combinar vectores de movimiento predichos de candidato de fusión originales. Específicamente, se pueden usar dos vectores de movimiento predichos candidatos originales (que tienen mvL0 y refIdxL0 o mvL1 y refIdxL1) para generar el vector de movimiento predicho candidato de fusión bipredictiva. En la FIG. 10, se incluyen dos vectores de movimiento predichos candidatos en una lista de vectores de movimiento predichos candidatos de fusión original. Un tipo de predicción de un vector de movimiento predicho candidato es predicción unidireccional mediante el uso de una lista 0, y un tipo de predicción del otro vector de movimiento predicho candidato es predicción unidireccional mediante el uso de una lista 1. En esta implementación factible, mvL0_A y ref0 se toman de la lista 0, y mvL1_B y ref0 se toman de la lista 1. Luego, se puede generar un vector de movimiento predicho candidato de fusión bipredictiva (que tiene mvL0_A y ref0 en la lista 0 y mvL1_B y ref0 en la lista 1), y se verifica si el vector de movimiento predicho candidato de fusión bipredictiva es diferente de un vector de movimiento predicho candidato existente en la lista de vectores de movimiento predicho candidato. Si el vector de movimiento predicho del candidato de fusión bipredictiva es diferente del vector de movimiento predicho del candidato existente, un decodificador de video puede agregar el vector de movimiento predicho del candidato de fusión bipredictiva a la lista de vectores de movimiento predichos del candidato.
La FIG. 11 es un diagrama esquemático de un ejemplo de adición de un vector de movimiento candidato escalado a una lista de vectores de movimiento predichos candidatos en modo de fusión según una realización de esta aplicación. Se puede generar un vector de movimiento predicho candidato de escalado bipredictivo combinado al escalar un vector de movimiento predicho de candidato de fusión original. Específicamente, se pueden usar un vector de movimiento predichos candidatos originales (que tiene mvLX y refIdxLX) para generar el vector de movimiento predicho candidato de fusión bipredictiva. En una implementación factible de la FIG. 11, se incluyen dos vectores de movimiento predichos candidatos en una lista de vectores de movimiento predichos candidatos de fusión original. Un tipo de predicción de un vector de movimiento predicho candidato es una predicción unidireccional mediante el uso de una lista 0, y un tipo de predicción del otro vector de movimiento predicho candidato es una predicción unidireccional mediante el uso de una lista 1. En esta implementación factible, mvL0_A y ref0 se pueden tomar de la lista 0, y ref0 se puede copiar a la lista 1 y se denota como un índice de referencia ref0'. A continuación, mvL0'_A se puede calcular al escalar mvL0_A con ref0 y ref0'. La escalada puede depender de una distancia POC (Recuento de Orden de Imagen). A continuación, se puede generar un vector de movimiento predicho de candidato de fusión bipredictiva (que tiene mvL0_A y ref0 en la lista 0 y mvL0' A y ref0' en la lista 1), y se verifica si el vector de movimiento predicho de candidato de fusión bipredictiva se repite. Si el vector de movimiento predicho del candidato de fusión bipredictiva no se repite, se puede agregar a la lista de vectores de movimiento predichos del candidato de fusión.
La FIG. 12 es un diagrama esquemático de un ejemplo de adición de un vector de movimiento cero a una lista de vectores de movimiento predichos candidatos en modo de fusión según una realización de esta solicitud. Se puede generar un vector de movimiento predicho candidato de fusión de vector cero al combinar un vector cero y un índice de referencia al que se pueda hacer referencia. Si el vector de movimiento predicho del candidato de fusión de vector cero no se repite, se puede añadir a una lista de vectores de movimiento predichos del candidato de fusión. La información de movimiento de cada vector de movimiento predicho candidato de fusión generado se puede comparar con la información de movimiento de un vector de movimiento predicho candidato anterior en la lista.
En una implementación factible, si un vector de movimiento predicho candidato recientemente generado es diferente de un vector de movimiento predicho candidato existente en la lista de vectores de movimiento predichos candidatos, el vector de movimiento predicho candidato generado se agrega a la lista de vectores de movimiento predichos candidatos de fusión. Un proceso para determinar si el vector de movimiento predicho candidato es diferente del vector de movimiento predicho candidato existente en la lista de vectores de movimiento predicho candidato a veces se denomina poda. Mediante la poda, cada vector de movimiento predicho candidato recién generado se puede comparar con el vector de movimiento predicho candidato existente en la lista. En algunas implementaciones factibles, la operación de poda puede incluir: comparar uno o más nuevos vectores de movimiento predichos candidatos con el vector de movimiento predicho candidato existente en la lista de vectores de movimiento predichos candidatos y omitir la adición de un nuevo vector de movimiento predicho candidato que sea el mismo que el vector de movimiento predicho candidato existente en la lista de vectores de movimiento predichos candidatos. En algunas otras implementaciones factibles, la operación de poda puede incluir: añadir uno o más nuevos vectores de movimiento predichos candidatos a la lista de vectores de movimiento predichos candidatos y luego eliminar un vector de movimiento predicho candidato repetido de la lista.
En una implementación factible de esta aplicación, durante la interpredicción, un método para predecir información de movimiento de un bloque de imagen a procesar incluye: obtener información de movimiento de al menos un bloque de imagen cuyo vector de movimiento se determina en una imagen en la que se ubica un bloque de imagen a procesar, donde el al menos un bloque de imagen cuyo vector de movimiento se determina incluye un bloque de imagen que no es adyacente al bloque de imagen a procesar y cuyo vector de movimiento se determina; obtener primera información de identificación, donde la primera información de identificación se utiliza para determinar información de movimiento objetivo en la información de movimiento del al menos un bloque de imagen cuyo vector de movimiento se determina; y predecir información de movimiento del bloque de imagen a procesar basándose en la información de movimiento objetivo.
La FIG. 13 es un diagrama de flujo de un ejemplo de actualización de un vector de movimiento en la codificación de vídeo según una realización de esta solicitud. Un bloque a procesar es un bloque a codificar.
S1301: Obtener un vector de movimiento inicial del bloque a procesar basándose en un vector de movimiento predicho del bloque a procesar.
En una implementación factible, por ejemplo, en un modo de fusión, el vector de movimiento predicho del bloque a procesar se utiliza como el vector de movimiento inicial del bloque a procesar.
En otra implementación factible, por ejemplo, en un modo AMVP, el vector de movimiento predicho del bloque a procesar y una diferencia de vector de movimiento del bloque a procesar se suman para obtener el vector de movimiento inicial del bloque a procesar.
El vector de movimiento predicho del bloque a procesar se puede obtener según los métodos mostrados en las FIG. 9 a FIG. 12 en las realizaciones de esta solicitud o cualquiera de los métodos existentes para obtener un vector de movimiento predicho en el estándar H.265 o un modo de referencia JEM. Esto no está limitado. La diferencia del vector de movimiento se puede obtener utilizando el bloque a procesar como referencia, realizando una estimación de movimiento dentro de un rango de búsqueda determinado en base al vector de movimiento predicho del bloque a procesar, y calculando una diferencia entre un vector de movimiento, obtenido después de la estimación de movimiento, del bloque a procesar y el vector de movimiento predicho del bloque a procesar.
Durante la predicción bidireccional, este paso incluye específicamente: obtener un vector de movimiento inicial hacia adelante del bloque a procesar basándose en un vector de movimiento predicho hacia adelante del bloque a procesar, y obtener un vector de movimiento inicial hacia atrás del bloque a procesar basándose en un vector de movimiento predicho hacia atrás del bloque a procesar.
S1302: Obtener un bloque de predicción del bloque a procesar basándose en el vector de movimiento inicial y uno o más desplazamientos de vector de movimiento preestablecidos. Específicamente:
S13021: Obtener, a partir de un fotograma de referencia que es del bloque a procesar e indicado por un índice de fotograma de referencia del bloque a procesar, un bloque de imagen indicado por el vector de movimiento inicial del bloque a procesar, y utilizar el bloque de imagen obtenido como un bloque de predicción temporal del bloque a procesar.
S13022: Agregar el vector de movimiento inicial y uno o más desplazamientos de vector de movimiento preestablecidos del bloque que se va a procesar para obtener uno o más vectores de movimiento reales, donde cada vector de movimiento real indica una posición de búsqueda.
S13023: Obtener uno o más bloques de predicción candidatos en las posiciones de búsqueda indicadas por uno o más vectores de movimiento reales, donde cada posición de búsqueda corresponde a un bloque de predicción candidato.
S13024: Seleccionar, de uno o más bloques de predicción candidatos, un bloque de predicción candidato con una diferencia de píxeles mínima respecto del bloque de predicción temporal como el bloque de predicción del bloque que se procesará.
Debe entenderse que la diferencia de píxeles puede calcularse de varias maneras. Por ejemplo, se puede calcular una suma de errores absolutos entre las matrices de píxeles del bloque de predicción candidato y el bloque de predicción temporal, o se puede calcular un error cuadrático medio entre las matrices de píxeles, o se puede calcular una correlación entre las matrices de píxeles. Esto no está limitado.
Durante la predicción bidireccional, este paso incluye específicamente: obtener, a partir de un fotograma de referencia hacia delante que es del bloque a procesar e indicado por un índice de fotograma de referencia hacia delante del bloque a procesar, un primer bloque de imagen indicado por el vector de movimiento inicial hacia delante del bloque a procesar, obtener, a partir de un fotograma de referencia hacia atrás que es del bloque a procesar e indicado por un índice de fotograma de referencia hacia atrás del bloque a procesar, un segundo bloque de imagen indicado por el vector de movimiento inicial hacia atrás del bloque a procesar, y ponderar el primer bloque de imagen y el segundo bloque de imagen para obtener el bloque de predicción temporal del bloque a procesar; sumar el vector de movimiento inicial hacia delante y uno o más desplazamientos de vector de movimiento preestablecidos del bloque a procesar para obtener uno o más vectores de movimiento real hacia delante, y sumar el vector de movimiento inicial hacia atrás y uno o más desplazamientos de vector de movimiento preestablecidos del bloque a procesar para obtener uno o más vectores de movimiento real hacia atrás; obtener uno o más bloques de predicción candidatos hacia adelante en posiciones de búsqueda indicadas por uno o más vectores de movimiento real hacia adelante, y obtener uno o más bloques de predicción candidatos hacia atrás en posiciones de búsqueda indicadas por uno o más vectores de movimiento real hacia atrás; y seleccionar, de entre los uno o más bloques de predicción candidatos hacia adelante, un bloque de predicción candidato con una diferencia mínima de píxeles respecto del bloque de predicción temporal como un bloque de predicción hacia adelante del bloque a procesar, seleccionar, de entre los uno o más bloques de predicción candidatos hacia atrás, un bloque de predicción candidato con una diferencia mínima de píxeles respecto del bloque de predicción temporal como un bloque de predicción hacia atrás del bloque a procesar, y ponderar el bloque de predicción hacia adelante y el bloque de predicción hacia atrás para obtener el bloque de predicción del bloque a procesar.
Opcionalmente, en una implementación factible, después del paso S13022, el método incluye además el siguiente paso:
S13025: Cuando una resolución de vector de movimiento del vector de movimiento real es mayor que la precisión de píxel preestablecida, redondear la resolución de vector de movimiento del vector de movimiento real, de modo que una resolución de vector de movimiento de un vector de movimiento real procesado sea igual a la precisión de píxel preestablecida. La precisión de píxeles preestablecida es precisión de píxeles enteros, precisión de 1/2 píxel, precisión de 1/4 píxel o precisión de 1/8 píxel, y no está limitada.
Debe entenderse que la resolución del vector de movimiento es la precisión de píxeles que se puede distinguir mediante un vector de movimiento en un proceso de estimación de movimiento o compensación de movimiento. El redondeo puede incluir redondeo al más cercano, hacia arriba, hacia abajo o similares en función de un tipo de precisión de píxeles. Esto no está limitado.
Por ejemplo, el redondeo puede incluir las siguientes operaciones:
un componente horizontal o un componente vertical de un vector de movimiento a procesar se descompone en una parte entera a, una parte decimal b y un bit de signo. Aparentemente, a es un entero no negativo, b es una fracción mayor que 0 y menor que 1, y el bit de signo es positivo o negativo.
Se puede suponer que la precisión de píxeles preestablecida es una precisión de píxeles N, donde N es mayor que 0 y menor o igual que 1, y c es igual a b dividido por N.
Cuando se utiliza una regla de redondeo al más cercano, se redondea una parte decimal de c al entero más cercano; cuando se utiliza una regla de redondeo hacia arriba, se incrementa una parte entera de c en 1 y se descarta la parte decimal; cuando se utiliza una regla de redondeo hacia abajo, se descarta la parte decimal de c. Se puede suponer que c obtenido después del procesamiento es d.
Se obtiene un valor absoluto de un componente del vector de movimiento procesado multiplicando d por N y luego sumando a, y el signo positivo o negativo del componente del vector de movimiento permanece sin cambios.
Por ejemplo, para un vector de movimiento real (1,25, 1), cuando la precisión de píxel preestablecida es la precisión de píxel entero, el vector de movimiento real se redondea para obtener (1, 1). Para un vector de movimiento real (-1,7, -1), cuando la precisión de píxel preestablecida es la precisión de 1/4 píxel, el vector de movimiento real se redondea para obtener (-1,75, -1).
Opcionalmente, en otra implementación factible, el paso S13024 incluye: seleccionar, de entre uno o más bloques de predicción candidatos, un vector de movimiento real correspondiente al bloque de predicción candidato con la diferencia de píxeles mínima con respecto al bloque de predicción temporal; cuando una resolución de vector de movimiento del vector de movimiento real seleccionado es mayor que la precisión de píxeles preestablecida, redondear la resolución de vector de movimiento del vector de movimiento real seleccionado, de modo que una resolución de vector de movimiento de un vector de movimiento real seleccionado procesado sea igual a la precisión de píxeles preestablecida; y determinar que un bloque de predicción correspondiente a una posición indicada por el vector de movimiento real seleccionado procesado es el bloque de predicción del bloque que se va a procesar.
Asimismo, la precisión de píxeles preestablecida es precisión de píxeles enteros, precisión de 1/2 píxel, precisión de 1/4 píxel o precisión de 1/8 píxel. Esto no está limitado. Para el redondeo, consulte el ejemplo de la implementación factible anterior. Los detalles no se describen de nuevo.
Debe entenderse que una mayor precisión de píxeles generalmente significa que se debe realizar una interpolación de píxeles más compleja en una región de búsqueda en el proceso de estimación de movimiento o compensación de movimiento, para hacer que la resolución del vector de movimiento sea igual a la precisión de píxeles preestablecida. Esto reduce la complejidad del codificado.
La FIG. 14 es un diagrama de flujo de un ejemplo de actualización de un vector de movimiento en la decodificación de vídeo según una realización de esta solicitud. Un bloque a procesar es un bloque a decodificar.
S1401: Obtener un vector de movimiento inicial del bloque a procesar basándose en un vector de movimiento predicho del bloque a procesar.
En una implementación factible, por ejemplo, en un modo de fusión, el vector de movimiento predicho del bloque a procesar se utiliza como el vector de movimiento inicial del bloque a procesar.
En otra implementación factible, por ejemplo, en un modo AMVP, el vector de movimiento predicho del bloque a procesar y una diferencia de vector de movimiento del bloque a procesar se suman para obtener el vector de movimiento inicial del bloque a procesar.
El vector de movimiento predicho del bloque a procesar se puede obtener según los métodos mostrados en las FIG. 9 a FIG. 12 en las realizaciones de esta solicitud o cualquiera de los métodos existentes para obtener un vector de movimiento predicho en el estándar H.265 o un modo de referencia JEM. Esto no está limitado. La diferencia del vector de movimiento se puede obtener analizando un flujo de bits.
Durante la predicción bidireccional, este paso incluye específicamente: obtener un vector de movimiento inicial hacia adelante del bloque a procesar basándose en un vector de movimiento predicho hacia adelante del bloque a procesar, y obtener un vector de movimiento inicial hacia atrás del bloque a procesar basándose en un vector de movimiento predicho hacia atrás del bloque a procesar.
S1402: Obtener un bloque de predicción del bloque a procesar basándose en el vector de movimiento inicial y uno o más desplazamientos de vector de movimiento preestablecidos. Específicamente:
S14021: Obtener, a partir de un fotograma de referencia que es del bloque a procesar e indicado por un índice de fotograma de referencia del bloque a procesar, un bloque de imagen indicado por el vector de movimiento inicial del bloque a procesar, y utilizar el bloque de imagen obtenido como un bloque de predicción temporal del bloque a procesar.
S14022: Añadir el vector de movimiento inicial y uno o más desplazamientos de vector de movimiento preestablecidos del bloque que se va a procesar para obtener uno o más vectores de movimiento reales, donde cada vector de movimiento real indica una posición de búsqueda.
S14023: Obtener uno o más bloques de predicción candidatos en las posiciones de búsqueda indicadas por uno o más vectores de movimiento reales, donde cada posición de búsqueda corresponde a un bloque de predicción candidato.
S14024: Seleccionar, de uno o más bloques de predicción candidatos, un bloque de predicción candidato con una diferencia de píxeles mínima respecto del bloque de predicción temporal como el bloque de predicción del bloque que se procesará.
Debe entenderse que la diferencia de píxeles puede calcularse de varias maneras. Por ejemplo, se puede calcular una suma de errores absolutos entre las matrices de píxeles del bloque de predicción candidato y el bloque de predicción temporal, o se puede calcular un error cuadrático medio entre las matrices de píxeles, o se puede calcular una correlación entre las matrices de píxeles. Esto no está limitado.
Durante la predicción bidireccional, este paso incluye específicamente: obtener, a partir de un fotograma de referencia hacia delante que es del bloque a procesar e indicado por un índice de fotograma de referencia hacia delante del bloque a procesar, un primer bloque de imagen indicado por el vector de movimiento inicial hacia delante del bloque a procesar, obtener, a partir de un fotograma de referencia hacia atrás que es del bloque a procesar e indicado por un índice de fotograma de referencia hacia atrás del bloque a procesar, un segundo bloque de imagen indicado por el vector de movimiento inicial hacia atrás del bloque a procesar, y ponderar el primer bloque de imagen y el segundo bloque de imagen para obtener el bloque de predicción temporal del bloque a procesar; sumar el vector de movimiento inicial hacia delante y uno o más desplazamientos de vector de movimiento preestablecidos del bloque a procesar para obtener uno o más vectores de movimiento real hacia delante, y sumar el vector de movimiento inicial hacia atrás y uno o más desplazamientos de vector de movimiento preestablecidos del bloque a procesar para obtener uno o más vectores de movimiento real hacia atrás; obtener uno o más bloques de predicción candidatos hacia adelante en posiciones de búsqueda indicadas por uno o más vectores de movimiento real hacia adelante, y obtener uno o más bloques de predicción candidatos hacia atrás en posiciones de búsqueda indicadas por uno o más vectores de movimiento real hacia atrás; y seleccionar, de entre los uno o más bloques de predicción candidatos hacia adelante, un bloque de predicción candidato con una diferencia mínima de píxeles respecto del bloque de predicción temporal como un bloque de predicción hacia adelante del bloque a procesar, seleccionar, de entre los uno o más bloques de predicción candidatos hacia atrás, un bloque de predicción candidato con una diferencia mínima de píxeles respecto del bloque de predicción temporal como un bloque de predicción hacia atrás del bloque a procesar, y ponderar el bloque de predicción hacia adelante y el bloque de predicción hacia atrás para obtener el bloque de predicción del bloque a procesar.
Opcionalmente, en una implementación factible, después del paso S14022, el método incluye además el siguiente paso:
S14025: Cuando una resolución de vector de movimiento del vector de movimiento real es mayor que la precisión de píxel preestablecida, redondear la resolución de vector de movimiento del vector de movimiento real, de modo que una resolución de vector de movimiento de un vector de movimiento real procesado sea igual a la precisión de píxel preestablecida. La precisión de píxeles preestablecida es precisión de píxeles enteros, precisión de 1/2 píxel, precisión de 1/4 píxel o precisión de 1/8 píxel, y no está limitada.
Opcionalmente, en otra implementación factible, el paso S14024 incluye: seleccionar, de entre uno o más bloques de predicción candidatos, un vector de movimiento real correspondiente al bloque de predicción candidato con la diferencia de píxeles mínima con respecto al bloque de predicción temporal; cuando una resolución de vector de movimiento del vector de movimiento real seleccionado es mayor que la precisión de píxeles preestablecida, redondear la resolución de vector de movimiento del vector de movimiento real seleccionado, de modo que una resolución de vector de movimiento de un vector de movimiento real seleccionado procesado sea igual a la precisión de píxeles preestablecida; y determinar que un bloque de predicción correspondiente a una posición indicada por el vector de movimiento real seleccionado procesado es el bloque de predicción del bloque que se va a procesar.
Asimismo, la precisión de píxeles preestablecida es precisión de píxeles enteros, precisión de 1/2 píxel, precisión de 1/4 píxel o precisión de 1/8 píxel. Esto no está limitado. Para el redondeo, consulte el ejemplo de la implementación factible anterior. Los detalles no se describen de nuevo.
Mediante el uso de varias realizaciones específicas, a continuación se describe en detalle una implementación de actualización de un vector de movimiento. Debe entenderse que, como se describe en el método de codificación de la FIG. 13 y el método de decodificación de la FIG. 14, la actualización de un vector de movimiento es consistente en un codificador y un decodificador. Por lo tanto, las siguientes realizaciones se describen únicamente desde el codificador o el decodificador. Debe entenderse que cuando la descripción la proporciona el codificador, la implementación en el decodificador se mantiene consistente con la del codificador; cuando la descripción la proporciona el decodificador, la implementación en el codificador se mantiene consistente con la del decodificador.
Realización 1
Como se muestra en la FIG. 15, un bloque de decodificación actual es un primer bloque de decodificación, y se obtiene información de movimiento de predicción del bloque de decodificación actual. Se supone que los predictores del vector de movimiento hacia adelante y hacia atrás del bloque de decodificación actual son respectivamente (-10, 4) y (5, 6), un POC de una imagen en la que se ubica el bloque de decodificación actual es 4, y los POC que son de imágenes de referencia e indicados por valores de índice de las imágenes de referencia son respectivamente 2 y 6. Por lo tanto, un POC correspondiente al bloque de decodificación actual es 4, un POC correspondiente a un bloque de imagen de referencia de predicción hacia adelante es 2, y un POC correspondiente a un bloque de imagen de referencia de predicción hacia atrás es 6.
La predicción hacia adelante y la predicción hacia atrás se realizan por separado en el bloque de decodificación actual para obtener un bloque de predicción de decodificación hacia adelante (FPB) inicial y un bloque de predicción de decodificación hacia atrás (BPB) inicial del bloque de decodificación actual, y se supone que el bloque de predicción de decodificación hacia adelante inicial y el bloque de predicción de decodificación hacia atrás inicial son respectivamente FPB1 y BPB1. Un primer bloque de predicción de decodificación (DPB) del bloque de decodificación actual se obtiene realizando una suma ponderada en FPB1 y BPB1, y se supone que es DPB1.
(-10, 4) y (5, 6) se utilizan como entradas de referencia de los predictores de vector de movimiento hacia adelante y hacia atrás, y la búsqueda de movimiento con primera precisión se realiza por separado en el bloque de imagen de referencia de predicción hacia adelante y el bloque de imagen de referencia de predicción hacia atrás. En este caso, la primera precisión es una precisión de 1/2 píxel en un rango de 1 píxel. El primer bloque de predicción de decodificación DPB1 se utiliza como referencia. Los nuevos bloques de predicción de decodificación hacia adelante y hacia atrás correspondientes obtenidos en cada búsqueda de movimiento se comparan con el primer bloque de predicción de decodificación DPB1, para obtener un nuevo bloque de predicción de decodificación con una diferencia mínima con respecto a DPB1, y los predictores de vector de movimiento hacia adelante y hacia atrás correspondientes al nuevo bloque de predicción de decodificación se utilizan como predictores de vector de movimiento objetivo, y se supone que son (-11, 4) y (6, 6) respectivamente.
Los predictores del vector de movimiento objetivo se actualizan a (-11, 4) y (6, 6), la predicción hacia adelante y la predicción hacia atrás se realizan en el primer bloque de decodificación basándose en los predictores del vector de movimiento objetivo, un bloque de predicción de decodificación objetivo se obtiene realizando una suma ponderada en los nuevos bloques de predicción de decodificación hacia adelante y hacia atrás obtenidos, y se supone que es DPB2, y el bloque de predicción de decodificación del bloque de decodificación actual se actualiza a DPB2.
Se debe tener en cuenta que, cuando la búsqueda de movimiento con la primera precisión se realiza en el bloque de imagen de referencia de predicción hacia adelante y el bloque de imagen de referencia de predicción hacia atrás, la primera precisión puede ser cualquier precisión especificada, por ejemplo, puede ser una precisión de píxel entero, una precisión de 1/2 píxel, una precisión de 1/4 píxel o una precisión de 1/8 píxel.
Realización 2
Como se muestra en la FIG. 16, un bloque de decodificación actual es un primer bloque de decodificación, y se obtiene información de movimiento de predicción del bloque de decodificación actual. Se supone que un predictor de vector de movimiento hacia adelante del bloque de decodificación actual es (-21, 18), un POC de una imagen en la que se ubica el bloque de decodificación actual es 4 y un POC que es de una imagen de referencia e indicado por un valor de índice de la imagen de referencia es 2. Por lo tanto, un POC correspondiente al bloque de decodificación actual es 4 y un POC correspondiente a un bloque de imagen de referencia de predicción hacia adelante es 2.
Se realiza una predicción hacia adelante en el bloque de decodificación actual para obtener un bloque de predicción de decodificación hacia adelante inicial del bloque de decodificación actual, y se supone que el bloque de predicción de decodificación hacia adelante inicial es FPB 1. En este caso, FPB1 se utiliza como un primer bloque de predicción de decodificación del bloque de decodificación actual, y el primer bloque de predicción de decodificación se denota como DPB1.
(-21, 18) se utiliza como una entrada de referencia del predictor de vector de movimiento hacia adelante, y la búsqueda de movimiento con primera precisión se realiza en el bloque de imagen de referencia de predicción hacia adelante. En este caso, la primera precisión es una precisión de 1 píxel en un rango de 5 píxeles. El primer bloque de predicción de decodificación DPB 1 se utiliza como referencia. Un nuevo bloque de predicción de decodificación hacia adelante correspondiente obtenido en cada búsqueda de movimiento se compara con el primero bloque de predicción de decodificación DPB 1, para obtener un nuevo bloque de predicción de decodificación con una diferencia mínima con respecto a DPB 1, y un predictor de vector de movimiento hacia adelante correspondiente al nuevo bloque de predicción de decodificación se usa como un predictor de vector de movimiento objetivo, y se supone que es (-19, 19).
El predictor del vector de movimiento objetivo se actualiza a (-19, 19), se realiza una predicción hacia adelante en el primer bloque de decodificación basándose en el predictor del vector de movimiento objetivo, un nuevo bloque de predicción de decodificación hacia adelante obtenido se utiliza como un bloque de predicción de decodificación objetivo, y se supone que es DPB2, y el bloque de predicción de decodificación del bloque de decodificación actual se actualiza a DPB2.
Se debe tener en cuenta que, cuando la búsqueda de movimiento con la primera precisión se realiza en el bloque de imagen de referencia de predicción hacia adelante y un bloque de imagen de referencia de predicción hacia atrás, la primera precisión puede ser cualquier precisión especificada, por ejemplo, puede ser una precisión de píxel entero, una precisión de 1/2 píxel, una precisión de 1/4 píxel o una precisión de 1/8 píxel.
Realización 3
Como se muestra en la FIG. 17A y FIG. 17B, un bloque de codificación actual es un primer bloque de codificación, y se obtiene información de movimiento de predicción del bloque de codificación actual. Se supone que los predictores del vector de movimiento hacia adelante y hacia atrás del bloque de codificación actual son respectivamente (-6, 12) y (8, 4), un POC de una imagen en la que se ubica el bloque de codificación actual es 8 y los POC que son de imágenes de referencia e indicados por valores de índice de las imágenes de referencia son respectivamente 4 y 12. Por lo tanto, un POC correspondiente al bloque de codificación actual es 4, un POC correspondiente a un bloque de imagen de referencia de predicción hacia adelante es 4 y un POC correspondiente a un bloque de imagen de referencia de predicción hacia atrás es 12.
La predicción hacia adelante y la predicción hacia atrás se realizan por separado en el bloque de codificación actual para obtener un bloque de predicción de codificación hacia adelante inicial y un bloque de predicción de codificación hacia atrás inicial del bloque de decodificación actual, y se supone que el bloque de predicción de codificación hacia adelante inicial y el bloque de predicción de codificación hacia atrás inicial son respectivamente FPB1 y BPB1. Un primer bloque de predicción de codificación del bloque de codificación actual se obtiene al realizar una suma ponderada en FPB1 y BPB1, y se supone que es DPB1.
(-6, 12) y (8, 4) se utilizan como entradas de referencia de los predictores de vector de movimiento hacia adelante y hacia atrás, y la búsqueda de movimiento con primera precisión se realiza por separado en el bloque de imagen de referencia de predicción hacia adelante y el bloque de imagen de referencia de predicción hacia atrás El primer bloque de predicción de codificación DPB1 se utiliza como referencia. Los nuevos bloques de predicción de codificación hacia adelante y hacia atrás correspondientes obtenidos en cada búsqueda de movimiento se comparan con el primer bloque de predicción de codificación DPB1, para obtener un nuevo bloque de predicción de codificación con una diferencia mínima con respecto a DPB1, y los predictores de vector de movimiento hacia adelante y hacia atrás correspondientes al nuevo bloque de predicción de codificación se utilizan como predictores de vector de movimiento objetivo, y se supone que son (-11, 4) y (6, 6) respectivamente.
Los predictores del vector de movimiento objetivo se actualizan a (-11, 4) y (6, 6), la predicción hacia adelante y la predicción hacia atrás se realizan en el primer bloque de codificación basándose en los predictores del vector de movimiento objetivo, un bloque de predicción de codificación objetivo se obtiene realizando una suma ponderada en los nuevos bloques de predicción de codificación hacia adelante y hacia atrás obtenidos, y se supone que es DPB2, y el bloque de predicción de codificación del bloque de codificación actual se actualiza a DPB2.
A continuación, (-11, 4) y (6, 6) se utilizan como entradas de referencia de los predictores de vectores de movimiento hacia delante y hacia atrás, y la búsqueda de movimiento con la primera precisión se realiza por separado en el bloque de imagen de referencia de predicción hacia delante y en el bloque de imagen de referencia de predicción hacia atrás. El bloque de predicción de codificación DPB2 del bloque de codificación actual se utiliza como referencia. Los nuevos bloques de predicción de codificación hacia adelante y hacia atrás correspondientes obtenidos en cada búsqueda de movimiento se comparan con el primer bloque de predicción de codificación DPB2, para obtener un nuevo bloque de predicción de codificación con una diferencia mínima con respecto a DPB2, y los predictores de vector de movimiento hacia adelante y hacia atrás correspondientes al nuevo bloque de predicción de codificación se utilizan como predictores de vector de movimiento objetivo, y se supone que son (-7, 11) y (6, 5) respectivamente.
Entonces, los predictores del vector de movimiento objetivo se actualizan a (-7, 11) y (6, 5), la predicción hacia adelante y la predicción hacia atrás se realizan en el primer bloque de codificación basándose en los predictores del vector de movimiento objetivo, un bloque de predicción de codificación objetivo se obtiene realizando una suma ponderada en los nuevos bloques de predicción de codificación hacia adelante y hacia atrás obtenidos, y se supone que es DPB3, y el bloque de predicción de codificación del bloque de codificación actual se actualiza a DPB3.
Además, los predictores del vector de movimiento objetivo pueden actualizarse continuamente según el método anterior, y la cantidad de ciclos no está limitada.
Se debe tener en cuenta que, cuando la búsqueda de movimiento con la primera precisión se realiza en el bloque de imagen de referencia de predicción hacia adelante y el bloque de imagen de referencia de predicción hacia atrás, la primera precisión puede ser cualquier precisión especificada, por ejemplo, puede ser una precisión de píxel entero, una precisión de 1/2 píxel, una precisión de 1/4 píxel o una precisión de 1/8 píxel.
Debe entenderse que, en algunas realizaciones factibles, el ciclo finaliza cuando se cumple una condición. Por ejemplo, el ciclo termina cuando la diferencia entre DPBn y DPBn-1 es menor que un umbral, donde n es un entero positivo mayor que 2.
Realización 4
Como se muestra en la FIG. 18, un bloque de decodificación actual es un primer bloque de decodificación, y se obtiene información de movimiento de predicción del bloque de decodificación actual. Se supone que los predictores del vector de movimiento hacia adelante y hacia atrás del bloque de decodificación actual son respectivamente (-10, 4) y (5, 6), las diferencias de los vectores de movimiento hacia delante y hacia atrás del bloque de decodificación actual son (-2, 1) y (1, 1) respectivamente, un POC de una imagen en la que se ubica el bloque de decodificación actual es 4, y los POC que son de imágenes de referencia e indicados por valores de índice de las imágenes de referencia son respectivamente 2 y 6. Por lo tanto, un POC correspondiente al bloque de decodificación actual es 4, un POC correspondiente a un bloque de imagen de referencia de predicción hacia adelante es 2, y un POC correspondiente a un bloque de imagen de referencia de predicción hacia atrás es 6.
La predicción hacia adelante y la predicción hacia atrás se realizan por separado en el bloque de decodificación actual para obtener un bloque de predicción de decodificación hacia adelante (FPB) inicial y un bloque de predicción de decodificación hacia atrás (BPB) inicial del bloque de decodificación actual, y se supone que el bloque de predicción de decodificación hacia adelante inicial y el bloque de predicción de decodificación hacia atrás inicial son respectivamente FPB1 y BPB1. Un primer bloque de predicción de decodificación (DPB) del bloque de decodificación actual se obtiene realizando una suma ponderada en FPB1 y BPB1, y se supone que es DPB1.
Se utiliza una suma del predictor del vector de movimiento hacia adelante y la diferencia del vector de movimiento hacia adelante y una suma del predictor del vector de movimiento hacia atrás y la diferencia del vector de movimiento hacia atrás, es decir (-10, 4)+(-2, 1)=(-12, 5) y (5, 6)+(1, 1)=(6, 7), como vector de movimiento hacia adelante y como vector de movimiento hacia atrás respectivamente, y se realiza una búsqueda de movimiento con primera precisión por separado en el bloque de imagen de referencia de predicción hacia adelante y en el bloque de imagen de referencia de predicción hacia atrás. En este caso, la primera precisión es una precisión de 1/4 píxel en un rango de 1 píxel. El primer bloque de predicción de decodificación DPB 1 se utiliza como referencia. Los nuevos bloques de predicción de decodificación hacia adelante y hacia atrás correspondientes obtenidos en cada búsqueda de movimiento se comparan con el primer bloque de predicción de decodificación DPB 1, para obtener un nuevo bloque de predicción de decodificación con una diferencia mínima con respecto a DPB1, y los vectores de movimiento hacia adelante y hacia atrás correspondientes al nuevo bloque de predicción de decodificación se utilizan como predictores de vector de movimiento objetivo, y se supone que son (-11, 4) y (6, 6) respectivamente. Los vectores de movimiento objetivo se actualizan a (-11, 4) y (6, 6), la predicción hacia adelante y la predicción hacia atrás se realizan por separado en el primer bloque de decodificación basándose en los vectores de movimiento objetivo, un bloque de predicción de decodificación objetivo se obtiene realizando una suma ponderada en los nuevos bloques de predicción de decodificación hacia adelante y hacia atrás obtenidos, y se supone que es DPB2, y el bloque de predicción de decodificación del bloque de decodificación actual se actualiza a DPB2. La FIG. 19 es un diagrama de flujo esquemático del método para obtener un vector de movimiento mediante un codificador según una realización de la presente solicitud. El método incluye los siguientes pasos:
S1901: Determinar un bloque de referencia de un bloque a procesar.
El bloque de referencia se ha descrito anteriormente con referencia a la FIG. 8. Debe entenderse que el bloque de referencia no solo incluye un bloque espacialmente adyacente al bloque a procesar mostrado en la FIG. 8, sino que también incluye otro bloque de imagen real o virtual que tiene una correlación temporal o espacial preestablecida con el bloque a procesar.
Debe entenderse que los efectos beneficiosos de esta realización de esta solicitud se reflejan en un escenario en el que se actualiza un vector de movimiento del bloque de referencia del bloque a procesar. Para ser más específico, el bloque de referencia tiene un vector de movimiento inicial y uno o más desplazamientos de vector de movimiento preestablecidos, el vector de movimiento inicial del bloque de referencia se obtiene basándose en un vector de movimiento predicho del bloque de referencia, y un bloque de predicción del bloque de referencia se obtiene basándose en el vector de movimiento inicial y uno o más desplazamientos de vector de movimiento preestablecidos.
Específicamente, para un proceso de actualización del vector de movimiento del bloque de referencia y obtención del vector de movimiento inicial, consulte la realización relacionada con la FIG. 13 en esta solicitud. Debe entenderse que el bloque de referencia en la realización relacionada con la FIG. 19 es el bloque a procesar en la realización relacionada con la FIG. 13.
En algunas implementaciones factibles, la determinación de un bloque de referencia de un bloque a procesar incluye específicamente: seleccionar, de uno o más bloques de referencia candidatos del bloque a procesar, un bloque de referencia candidato con un coste de tasa-distorsión mínimo como el bloque de referencia del bloque a procesar.
En algunas implementaciones factibles, después de determinar el bloque de referencia del bloque a procesar en uno o más bloques de referencia candidatos del bloque a procesar, el método incluye además: codificar información de identificación del bloque de referencia determinado en uno o más bloques de referencia candidatos en un flujo de bits.
S1902: Utilizar el vector de movimiento inicial del bloque de referencia como un vector de movimiento predicho del bloque que se va a procesar.
En algunas implementaciones factibles, por ejemplo, en un modo de fusión, después del paso S1902, el método incluye además: utilizar el vector de movimiento predicho del bloque a procesar como un vector de movimiento inicial del bloque a procesar. Como alternativa, en el paso S1902, el vector de movimiento inicial del bloque de referencia se utiliza como vector de movimiento inicial del bloque a procesar.
En otra implementación factible, por ejemplo, en un modo AMVP, tras el paso S1902, el método además incluye: añadir el vector de movimiento predicho del bloque a procesar y una diferencia de vector de movimiento del bloque a procesar para obtener el vector de movimiento inicial del bloque a procesar.
La FIG. 20 es un diagrama de flujo esquemático de un método para obtener un vector de movimiento mediante un decodificador según una realización de esta solicitud. El método incluye los siguientes pasos:
S2001: Determinar un bloque de referencia de un bloque a procesar.
Debe entenderse que los efectos beneficiosos de esta realización de esta solicitud se reflejan en un escenario en el que se actualiza un vector de movimiento del bloque de referencia del bloque a procesar. Para ser más específico, el bloque de referencia tiene un vector de movimiento inicial y uno o más desplazamientos de vector de movimiento preestablecidos, el vector de movimiento inicial del bloque de referencia se obtiene basándose en un vector de movimiento predicho del bloque de referencia, y un bloque de predicción del bloque de referencia se obtiene basándose en el vector de movimiento inicial y uno o más desplazamientos de vector de movimiento preestablecidos.
Específicamente, para un proceso de actualización del vector de movimiento del bloque de referencia y obtención del vector de movimiento inicial, consulte la realización relacionada con la FIG. 14 en esta solicitud. Debe entenderse que el bloque de referencia en la realización relacionada con la FIG. 20 es el bloque a procesar en la realización relacionada con la FIG. 14.
En algunas implementaciones factibles, la determinación de un bloque de referencia de un bloque a procesar incluye específicamente: analizar un flujo de bits para obtener una segunda información de identificación; y determinar el bloque de referencia del bloque a procesar basándose en la segunda información de identificación.
S2002: Utilizar el vector de movimiento inicial del bloque de referencia como un vector de movimiento predicho del bloque que se va a procesar.
En una implementación factible, por ejemplo, en un modo de fusión, después del paso S2002, el método incluye además: utilizar el vector de movimiento predicho del bloque a procesar como un vector de movimiento inicial del bloque a procesar. Como alternativa, en el paso S2002, el vector de movimiento inicial del bloque de referencia se utiliza como vector de movimiento inicial del bloque a procesar.
En otra implementación factible, por ejemplo, en un modo AMVP, después del paso S2002, el método incluye además: añadir el vector de movimiento predicho del bloque a procesar y una diferencia de vector de movimiento del bloque a procesar para obtener un vector de movimiento inicial del bloque a procesar, donde la diferencia de vector de movimiento del bloque a procesar se obtiene al analizar primero la información de identificación en el flujo de bits.
En las implementaciones anteriores, se utiliza un vector de movimiento inicial antes de la actualización para reemplazar un vector de movimiento real, y se utiliza para predecir un bloque de codificación o un bloque de decodificación posterior. Se puede realizar un paso de predicción para el bloque de codificación o bloque de decodificación posterior antes de que se complete la actualización del vector de movimiento real. Esto garantiza la mejora de la eficiencia de codificación lograda mediante la actualización del vector de movimiento y elimina el retraso en el procesamiento.
La FIG. 21 es un diagrama de bloques esquemático de un aparato 2100 para obtener un vector de movimiento según una realización de esta solicitud. El aparato 2100 incluye:
un módulo 2101 de determinación, configurado para determinar un bloque de referencia de un bloque a procesar, donde el bloque de referencia y el bloque a procesar tienen una correlación temporal o espacial preestablecida, el bloque de referencia tiene un vector de movimiento inicial y uno o más desplazamientos de vector de movimiento preestablecidos, el vector de movimiento inicial del bloque de referencia se obtiene basándose en un vector de movimiento predicho del bloque de referencia, y un bloque de predicción del bloque de referencia se obtiene basándose en el vector de movimiento inicial y uno o más desplazamientos de vector de movimiento preestablecidos; y
un módulo 2102 de obtención, configurado para utilizar el vector de movimiento inicial del bloque de referencia como un vector de movimiento predicho del bloque a procesar.
En una implementación factible, el módulo 2102 de obtención está configurado además para: utilizar el vector de movimiento predicho del bloque de referencia como el vector de movimiento inicial del bloque de referencia; o añadir el vector de movimiento predicho del bloque de referencia y una diferencia de vector de movimiento del bloque de referencia para obtener el vector de movimiento inicial del bloque de referencia.
En una implementación factible, el módulo 2102 de obtención está configurado además para: obtener, a partir de un fotograma de referencia del bloque de referencia, un bloque de imagen indicado por el vector de movimiento inicial del bloque de referencia, y usar el bloque de imagen obtenido como un bloque de predicción temporal del bloque de referencia; añadir el vector de movimiento inicial y uno o más desplazamientos de vector de movimiento preestablecidos del bloque de referencia para obtener uno o más vectores de movimiento reales, donde cada vector de movimiento real indica una posición de búsqueda; obtener uno o más bloques de predicción candidatos en las posiciones de búsqueda indicadas por uno o más vectores de movimiento reales, donde cada posición de búsqueda corresponde a un bloque de predicción candidato; y seleccionar, a partir de uno o más bloques de predicción candidatos, un bloque de predicción candidato con una diferencia de píxeles mínima del bloque de predicción temporal como el bloque de predicción del bloque de referencia.
En una implementación factible, el aparato 2100 está configurado para predicción bidireccional, el fotograma de referencia incluye un fotograma de referencia de primera dirección y un fotograma de referencia de segunda dirección, el vector de movimiento inicial incluye un vector de movimiento inicial de primera dirección y un vector de movimiento inicial de segunda dirección, y el módulo 2102 de obtención está configurado específicamente para: obtener, a partir del fotograma de referencia de primera dirección del bloque de referencia, un primer bloque de imagen indicado por el vector de movimiento inicial de primera dirección del bloque de referencia; obtener, a partir del fotograma de referencia de segunda dirección del bloque de referencia, un segundo bloque de imagen indicado por el vector de movimiento inicial de segunda dirección del bloque de referencia; y ponderar el primer bloque de imagen y el segundo bloque de imagen para obtener el bloque de predicción temporal del bloque de referencia.
En una implementación factible, el aparato 2100 incluye además: un módulo 2103 de redondeo, configurado para: cuando una resolución de vector de movimiento del vector de movimiento real es mayor que la precisión de píxel preestablecida, redondear la resolución de vector de movimiento del vector de movimiento real, de modo que una resolución de vector de movimiento de un vector de movimiento real procesado sea igual a la precisión de píxel preestablecida.
En una implementación factible, el módulo 2102 de obtención está específicamente configurado para: seleccionar, de entre uno o más bloques de predicción candidatos, un vector de movimiento real correspondiente al bloque de predicción candidato con la diferencia de píxeles mínima con respecto al bloque de predicción temporal; cuando una resolución de vector de movimiento del vector de movimiento real seleccionado es mayor que la precisión de píxeles preestablecida, redondear la resolución de vector de movimiento del vector de movimiento real seleccionado, de modo que una resolución de vector de movimiento de un vector de movimiento real seleccionado procesado sea igual a la precisión de píxeles preestablecida; y determinar que un bloque de predicción correspondiente a una posición indicada por el vector de movimiento real seleccionado procesado es el bloque de predicción del bloque de referencia.
En una implementación factible, la precisión de píxeles preestablecida es precisión de píxeles enteros, precisión de 1/2 píxel, precisión de 1/4 píxel o precisión de 1/8 píxel.
En una implementación factible, el módulo 2102 de obtención se configura específicamente para usar el vector de movimiento predicho del bloque a procesar como un vector de movimiento inicial del bloque a procesar.
En una implementación factible, el módulo 2102 de obtención se configura específicamente para añadir el vector de movimiento predicho del bloque a procesar y una diferencia de vector de movimiento del bloque a procesar para obtener un vector de movimiento inicial del bloque a procesar.
En una implementación factible, el aparato 2100 está configurado para decodificación de video, y la diferencia del vector de movimiento del bloque a procesar se obtiene al analizar primero la información de identificación en un flujo de bits.
En una implementación factible, el aparato 2100 está configurado para decodificación de video, y el módulo 2101 de determinación está configurado específicamente para: analizar un flujo de bits para obtener una segunda información de identificación; y determinar el bloque de referencia del bloque que se va a procesar basándose en la segunda información de identificación.
En una implementación factible, el aparato 2100 está configurado para codificación de video, y el módulo 2101 de determinación está configurado específicamente para: seleccionar, de uno o más bloques de referencia candidatos del bloque a procesar, un bloque de referencia candidato con un coste de tasa-distorsión mínimo como el bloque de referencia del bloque a procesar.
La FIG. 22 es un diagrama de bloques esquemático de un dispositivo de codificación de vídeo según una realización de esta solicitud. El dispositivo 2200 se puede aplicar a un codificador o se puede aplicar a un decodificador. El dispositivo 2200 incluye un procesador 2201 y una memoria 2202. El procesador 2201 y la memoria 2202 están conectados entre sí (por ejemplo, conectados entre sí a través de un bus 2204). En una posible implementación, el dispositivo 2200 puede incluir además un transceptor 2203. El transceptor 2203 está conectado al procesador 2201 y a la memoria 2202, y está configurado para recibir/enviar datos.
La memoria 2202 incluye pero no se limita a una memoria de acceso aleatorio (RAM), una memoria solo de lectura (ROM), una memoria de solo lectura programable (EPROM), o una memoria de solo lectura de disco compacto (CD-ROM). La memoria 2202 se configura para almacenar código de programa relacionado y datos de vídeo.
El procesador 2201 puede ser una o más unidades de procesamiento central(CPU). Cuando el procesador 2201 es una CPU, la CPU puede ser una CPU de núcleo único o un CPU de núcleos múltiples.
El procesador 2201 está configurado para leer el código de programa almacenado en la memoria 2202 y realizar operaciones en cualquier solución de implementación correspondiente a la FIG. 13 a la FIG. 20 y varias implementaciones factibles de la solución de implementación.
Una realización de esta solicitud proporciona además un medio de almacenamiento legible por ordenador. El medio de almacenamiento legible por ordenador almacena una instrucción. Cuando la instrucción se ejecuta en un ordenador, el ordenador puede realizar operaciones en cualquier solución de implementación correspondiente a la FIG. 13 a la FIG. 20 y varias implementaciones factibles de la solución de implementación.
Por ejemplo, una realización de esta solicitud proporciona además un producto de programa informático que incluye una instrucción. Cuando el producto de programa informático se ejecuta en un ordenador, el ordenador puede realizar operaciones en cualquier solución de implementación correspondiente a la FIG. 13 a la FIG. 20 y varias implementaciones factibles de la solución de implementación.
Un experto en la técnica puede ser consciente de que, en combinación con los ejemplos descritos en las realizaciones descritas en esta especificación, unidades y pasos del algoritmo se pueden implementar por hardware electrónico o una combinación de software informático y hardware electrónico. Si las funciones son realizadas por hardware o software depende de las aplicaciones particulares y de las limitaciones de diseño de las soluciones técnicas. Un experto en la técnica puede usar diferentes métodos para implementar las funciones descritas para cada aplicación particular, pero no debe considerarse que la implementación va más allá del alcance de esta solicitud.
Los expertos en la materia pueden entender claramente que, con el propósito de una descripción conveniente y breve, para procesos de trabajo detallados del sistema, aparato y unidad anteriores, se refiere a procesos correspondientes en las realizaciones del método anterior, y los detalles no se describen en esta invención nuevamente.
Todas o algunas de las realizaciones anteriores se pueden implementar usando software, hardware, firmware o cualquier combinación de los mismos. Cuando se usa software para implementar las realizaciones, las realizaciones pueden implementarse, completa o parcialmente, en forma de un producto de programa informático. El producto de programa informático incluye una o más instrucciones informáticas, y cuando las instrucciones de programa informático se cargan y se ejecutan en un ordenador, se generan todos o algunos de los procedimientos o funciones según algunas realizaciones de la presente invención. El ordenador puede ser un ordenador de propósito general, un ordenador de propósito especial, una red informática, u otro aparato programable. Las instrucciones informáticas pueden ser almacenadas en un medio de almacenamiento legible por ordenador o pueden ser transmitidas desde un medio de almacenamiento legible por ordenador a otro medio de almacenamiento legible por ordenador. Por ejemplo, las instrucciones informáticas pueden transmitirse desde un sitio web, ordenador, servidor o centro de datos a otro sitio web, ordenador, servidor o centro de datos de una manera por cable (por ejemplo, un cable coaxial, una fibra óptica o una línea de abonado digital) o inalámbrica (por ejemplo, infrarrojos o microondas). El medio de almacenamiento legible por ordenador puede ser cualquier medio utilizable accesible por un ordenador, o un dispositivo de almacenamiento de datos, tal como un servidor o un centro de datos, que integre uno o más medios usables. El medio usable puede ser un medio magnético (por ejemplo, un disquete, un disco duro o una cinta magnética), un medio óptico (por ejemplo, un DVD), un medio de semiconductores (por ejemplo, una unidad de estado sólido) o similar.
En las realizaciones anteriores, la descripción de cada realización tiene enfoques respectivos. Para una parte que no se describe en detalle en una realización, consúltense las descripciones relacionadas en otras realizaciones.
El alcance de protección de la presente invención se someterá al alcance de protección de las reivindicaciones.

Claims (26)

REIVINDICACIONES
1. Un método para obtener un vector de movimiento que comprende:
determinar un bloque de referencia de un bloque a procesar, donde el bloque de referencia y el bloque a procesar tienen una correlación temporal o espacial preestablecida, el bloque de referencia tiene un vector de movimiento inicial, el vector de movimiento inicial del bloque de referencia se obtiene basándose en un vector de movimiento predicho del bloque de referencia, y un bloque de predicción del bloque de referencia se obtiene basándose en un vector de movimiento inicial y un desplazamiento de vector de movimiento, donde el desplazamiento del vector de movimiento se obtiene basándose en uno o más desplazamientos del vector de movimiento preestablecidos; y usar el vector de movimiento inicial del bloque de referencia como un vector de movimiento predicho del bloque que se va a procesar.
2. El método según la reivindicación 1, en el que el vector de movimiento inicial del bloque de referencia se obtiene específicamente de la siguiente manera:
usar el vector de movimiento predicho del bloque de referencia como el vector de movimiento inicial del bloque de referencia; o
añadir el vector de movimiento predicho del bloque de referencia y una diferencia del vector de movimiento del bloque de referencia para obtener el vector de movimiento inicial del bloque de referencia.
3. El método según la reivindicación 1 o 2, en el que el bloque de predicción del bloque de referencia se obtiene específicamente de la siguiente manera:
obtener, a partir de un fotograma de referencia del bloque de referencia, un bloque de imagen indicado por el vector de movimiento inicial del bloque de referencia, y utilizar el bloque de imagen obtenido como un bloque de predicción temporal del bloque de referencia;
añadir el vector de movimiento inicial y el uno o más desplazamientos de vector de movimiento preestablecidos del bloque de referencia para obtener uno o más vectores de movimiento reales, donde cada vector de movimiento real indica una posición de búsqueda.
obtener uno o más bloques de predicción candidatos en las posiciones de búsqueda indicadas por el uno o más vectores de movimiento reales, donde cada posición de búsqueda corresponde a un bloque de predicción candidato; y
seleccionar, de uno o más bloques de predicción candidatos, un bloque de predicción candidato con una diferencia de píxeles mínima respecto del bloque de predicción temporal como el bloque de predicción del bloque de referencia.
4. El método según la reivindicación 3, en el que el método se usa para predicción bidireccional, el fotograma de referencia comprende un fotograma de referencia de primera dirección y un fotograma de referencia de segunda dirección, el vector de movimiento inicial comprende un vector de movimiento inicial de primera dirección y un vector de movimiento inicial de segunda dirección, y la obtención, a partir de un fotograma de referencia del bloque de referencia, de un bloque de imagen indicado por el vector de movimiento inicial del bloque de referencia, y el uso del bloque de imagen obtenido como bloque de predicción temporal del bloque de referencia comprende: obtener, a partir del fotograma de referencia de primera dirección del bloque de referencia, un primer bloque de imagen indicado por el vector de movimiento inicial de primera dirección del bloque de referencia;
obtener, a partir del fotograma de referencia de segunda dirección del bloque de referencia, un segundo bloque de imagen indicado por el vector de movimiento inicial de segunda dirección del bloque de referencia; y ponderar el primer bloque de imagen y el segundo bloque de imagen para obtener el bloque de predicción temporal del bloque de referencia.
5. El método según la reivindicación 3 o 4, que además comprende:
cuando una resolución de vector de movimiento del vector de movimiento real es mayor que la precisión de píxel preestablecida, redondear la resolución de vector de movimiento del vector de movimiento real, de modo que una resolución de vector de movimiento de un vector de movimiento real procesado sea igual a la precisión de píxel preestablecida.
6. El método según la reivindicación 3 o 4, donde la selección, a partir del uno o más bloques de predicción candidatos, un bloque de predicción candidato con una diferencia de píxeles mínima respecto del bloque de predicción temporal como el bloque de predicción del bloque de referencia comprende:
seleccionar, del uno o más bloques de predicción candidatos, un vector de movimiento real correspondiente al bloque de predicción candidato con la diferencia de píxeles mínima respecto del bloque de predicción temporal; cuando una resolución de vector de movimiento del vector de movimiento real es mayor que la precisión de píxel preestablecida, redondear la resolución de vector de movimiento del vector de movimiento real, de modo que una resolución de vector de movimiento de un vector de movimiento real seleccionado sea igual a la precisión de píxel preestablecida; y
determinar que un bloque de predicción correspondiente a una posición indicada por el vector de movimiento real seleccionado procesado es el bloque de predicción del bloque de referencia.
7. El método según la reivindicación 5 o 6, en el que la precisión de píxel preestablecida es precisión de píxel entero, precisión de 1/2 píxel, precisión de 1/4 píxel o precisión de 1/8 píxel.
8. El método según cualquiera de las reivindicaciones 1 a 7, que comprende además:
utilizar el vector de movimiento predicho del bloque a procesar como un vector de movimiento inicial del bloque a procesar.
9. El método según cualquiera de las reivindicaciones 1 a 7, que comprende además:
añadir el vector de movimiento predicho del bloque a procesar y una diferencia de vector de movimiento del bloque a procesar para obtener un vector de movimiento inicial del bloque a procesar.
10. El método según la reivindicación 9, en el que el método se utiliza para la decodificación de vídeo, y la diferencia del vector de movimiento del bloque a procesar se obtiene al analizar la primera información de identificación en un flujo de bits.
11. El método según cualquiera de las reivindicaciones 1 a 9, en el que el método se utiliza para la decodificación de vídeo, y la determinación de un bloque de referencia de un bloque a procesar comprende:
analizar un flujo de bits para obtener una segunda información de identificación; y
determinar el bloque de referencia del bloque a procesar basándose en la segunda información de identificación.
12. El método según cualquiera de las reivindicaciones 1 a 9, en el que el método se utiliza para la codificación de vídeo, y la determinación de un bloque de referencia de un bloque a procesar comprende:
seleccionar, de uno o más bloques de referencia candidatos del bloque a procesar, un bloque de referencia candidato con un coste mínimo de tasa-distorsión como bloque de referencia del bloque a procesar.
13. Un aparato (2100) para obtener un vector de movimiento, que comprende:
un módulo (2101) de determinación, configurado para determinar un bloque de referencia de un bloque a procesar, donde el bloque de referencia y el bloque a procesar tienen una correlación temporal o espacial preestablecida, el bloque de referencia tiene un vector de movimiento inicial, el vector de movimiento inicial del bloque de referencia se obtiene basándose en un vector de movimiento predicho del bloque de referencia, y un bloque de predicción del bloque de referencia se obtiene basándose en un vector de movimiento inicial y un desplazamiento de vector de movimiento, donde el desplazamiento del vector de movimiento se obtiene basándose en uno o más desplazamientos del vector de movimiento preestablecidos; y
un módulo (2102) de obtención, configurado para utilizar el vector de movimiento inicial del bloque de referencia como un vector de movimiento predicho del bloque a procesar.
14. El aparato (2100) según la reivindicación 13, en el que el módulo (2102) de obtención está configurado además para:
usar el vector de movimiento predicho del bloque de referencia como el vector de movimiento inicial del bloque de referencia; o
añadir el vector de movimiento predicho del bloque de referencia y una diferencia del vector de movimiento del bloque de referencia para obtener el vector de movimiento inicial del bloque de referencia.
15. El aparato (2100) según la reivindicación 13 o 14, en el que el módulo (2102) de obtención está configurado además para:
obtener, a partir de un fotograma de referencia del bloque de referencia, un bloque de imagen indicado por el vector de movimiento inicial del bloque de referencia, y utilizar el bloque de imagen obtenido como un bloque de predicción temporal del bloque de referencia;
añadir el vector de movimiento inicial y el uno o más desplazamientos de vector de movimiento preestablecidos del bloque de referencia para obtener uno o más vectores de movimiento reales, donde cada vector de movimiento real indica una posición de búsqueda;
obtener uno o más bloques de predicción candidatos en las posiciones de búsqueda indicadas por el uno o más vectores de movimiento reales, donde cada posición de búsqueda corresponde a un bloque de predicción candidato; y
seleccionar, del uno o más bloques de predicción candidatos, un bloque de predicción candidato con una diferencia de píxeles mínima respecto del bloque de predicción temporal como el bloque de predicción del bloque de referencia.
16. El aparato (2100) según la reivindicación 15, en el que el aparato (2100) está configurado para predicción bidireccional, el fotograma de referencia comprende un fotograma de referencia de primera dirección y un fotograma de referencia de segunda dirección, el vector de movimiento inicial comprende un vector de movimiento inicial de primera dirección y un vector de movimiento inicial de segunda dirección, y el módulo (2102) de obtención está configurado específicamente para:
obtener, a partir del fotograma de referencia de primera dirección del bloque de referencia, un primer bloque de imagen indicado por el vector de movimiento inicial de primera dirección del bloque de referencia;
obtener, a partir del fotograma de referencia de segunda dirección del bloque de referencia, un segundo bloque de imagen indicado por el vector de movimiento inicial de segunda dirección del bloque de referencia; y ponderar el primer bloque de imagen y el segundo bloque de imagen para obtener el bloque de predicción temporal del bloque de referencia.
17. El aparato (2100) según la reivindicación 15 o 16, que además comprende:
un módulo (2103) de redondeo, configurado para: cuando una resolución de vector de movimiento del vector de movimiento real es mayor que la precisión de píxel preestablecida, redondear la resolución de vector de movimiento del vector de movimiento real, de modo que una resolución de vector de movimiento de un vector de movimiento real procesado sea igual a la precisión de píxel preestablecida.
18. El aparato (2100) según la reivindicación 15 o 16, en donde el módulo (2102) de obtención está configurado específicamente para:
seleccionar, del uno o más bloques de predicción candidatos, un vector de movimiento real correspondiente al bloque de predicción candidato con la diferencia de píxeles mínima respecto del bloque de predicción temporal; cuando una resolución de vector de movimiento del vector de movimiento real es mayor que la precisión de píxel preestablecida, redondear la resolución de vector de movimiento del vector de movimiento real, de modo que una resolución de vector de movimiento de un vector de movimiento real seleccionado sea igual a la precisión de píxel preestablecida; y
determinar que un bloque de predicción correspondiente a una posición indicada por el vector de movimiento real seleccionado procesado es el bloque de predicción del bloque de referencia.
19. El aparato (2100) según la reivindicación 17 o 18, en el que la precisión de píxel preestablecida es precisión de píxel entero, precisión de 1/2 píxel, precisión de 1/4 píxel o precisión de 1/8 píxel.
20. El aparato (2100) según cualquiera de las reivindicaciones 13 a 19, en el que el módulo (2102) de obtención está configurado específicamente para:
utilizar el vector de movimiento predicho del bloque a procesar como vector de movimiento inicial del bloque a procesar.
21. El aparato (2100) según cualquiera de las reivindicaciones 13 a 19, en el que el módulo (2102) de obtención está configurado específicamente para:
añadir el vector de movimiento predicho del bloque a procesar y una diferencia de vector de movimiento del bloque a procesar para obtener un vector de movimiento inicial del bloque a procesar.
22. El aparato (2100) según la reivindicación 21, en el que el aparato (2100) se utiliza para la decodificación de vídeo, y la diferencia del vector de movimiento del bloque a procesar se obtiene al analizar la primera información de identificación en un flujo de bits.
23. El aparato (2100) según cualquiera de las reivindicaciones 13 a 21, en el que el aparato (2100) se utiliza para decodificación de vídeo, y el módulo (2101) de determinación está configurado específicamente para: analizar un flujo de bits para obtener una segunda información de identificación; y
determinar el bloque de referencia del bloque a procesar basándose en la segunda información de identificación.
24. El aparato (2100) según cualquiera de las reivindicaciones 13 a 22, en el que el aparato (2100) se utiliza para codificación de vídeo, y el módulo (2101) de determinación está configurado específicamente para: seleccionar, de uno o más bloques de referencia candidatos del bloque a procesar, un bloque de referencia candidato con un coste de tasa-distorsión mínimo como bloque de referencia del bloque a procesar.
25. Un dispositivo para obtener un vector de movimiento, en donde el dispositivo se utiliza para codificación de vídeo o decodificación de vídeo, y comprende:
un procesador (2201) y una memoria (2202), en donde el procesador y la memoria están conectados entre sí; la memoria está configurada para almacenar código de programa informático y datos de vídeo; y
el procesador está configurado para leer el código de programa almacenado en la memoria, para realizar el método según cualquiera de las reivindicaciones 1 a 12.
26. Un medio de almacenamiento legible por ordenador, en donde el medio de almacenamiento legible por ordenador almacena una instrucción, y cuando la instrucción se ejecuta en un ordenador, la instrucción habilita el ordenador para realizar el método de una cualquiera de las reivindicaciones 1 a 12.
ES18919173T 2018-05-16 2018-05-16 Video encoding and decoding method and apparatus Active ES3041562T3 (en)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2018/087180 WO2019218286A1 (zh) 2018-05-16 2018-05-16 一种视频编解码方法和装置

Publications (1)

Publication Number Publication Date
ES3041562T3 true ES3041562T3 (en) 2025-11-12

Family

ID=68539347

Family Applications (1)

Application Number Title Priority Date Filing Date
ES18919173T Active ES3041562T3 (en) 2018-05-16 2018-05-16 Video encoding and decoding method and apparatus

Country Status (17)

Country Link
US (3) US11765378B2 (es)
EP (2) EP4697719A1 (es)
JP (3) JP7407741B2 (es)
KR (2) KR102727805B1 (es)
CN (6) CN111684796B (es)
AU (1) AU2018423422B2 (es)
BR (1) BR112020022246A2 (es)
CA (1) CA3098488C (es)
ES (1) ES3041562T3 (es)
HU (1) HUE072433T2 (es)
MX (1) MX2020012244A (es)
MY (1) MY206099A (es)
PH (1) PH12020551803A1 (es)
PL (1) PL3783888T3 (es)
RU (1) RU2767993C1 (es)
SG (1) SG11202010578WA (es)
WO (1) WO2019218286A1 (es)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019147067A1 (ko) * 2018-01-26 2019-08-01 한국전자통신연구원 시간적 움직임 정보를 이용하는 영상 부호화 및 영상 복호화를 위한 방법 및 장치
CN111684796B (zh) 2018-05-16 2024-04-09 华为技术有限公司 一种视频编解码方法和装置
CN117615155A (zh) 2019-09-19 2024-02-27 北京字节跳动网络技术有限公司 视频编解码中的参考样点位置推导
BR112022006453A2 (pt) 2019-10-05 2022-09-27 Beijing Bytedance Network Tech Co Ltd Método de processamento de dados de dados de vídeo, aparelho para processar dados de vídeo, meio de armazenamento não transitório legível por computador e meio de gravação não transitório legível por computador
CN117499640A (zh) 2019-10-12 2024-02-02 北京字节跳动网络技术有限公司 视频编解码中的预测类型信令
CN117376557A (zh) 2019-10-13 2024-01-09 北京字节跳动网络技术有限公司 参考图片重采样与视频编解码工具之间的相互作用
KR102922307B1 (ko) * 2019-12-27 2026-02-05 두인 비전 컴퍼니 리미티드 비디오 픽처 헤더의 슬라이스 유형의 시그널링
WO2021235888A1 (ko) * 2020-05-21 2021-11-25 엘지전자 주식회사 인터 레이어 예측 여부에 기반하여 움직임 정보를 결정하는 영상 부호화/복호화 방법, 장치 및 비트스트림을 전송하는 방법
US12401818B2 (en) * 2021-02-26 2025-08-26 Qualcomm Incorporated Efficient video encoder architecture

Family Cites Families (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1982518A4 (en) * 2006-01-12 2010-06-16 Lg Electronics Inc PROCESSING MORE VIEW VIDEO
KR101279573B1 (ko) * 2008-10-31 2013-06-27 에스케이텔레콤 주식회사 움직임 벡터 부호화 방법 및 장치와 그를 이용한 영상 부호화/복호화 방법 및 장치
CN101742278B (zh) * 2008-11-12 2012-11-07 富士通半导体股份有限公司 获取图像的运动矢量和边界强度的方法和系统
US8559519B2 (en) * 2010-01-08 2013-10-15 Blackberry Limited Method and device for video encoding using predicted residuals
US8855205B2 (en) * 2010-05-26 2014-10-07 Newratek Inc. Method of predicting motion vectors in video codec in which multiple references are allowed, and motion vector encoding/decoding apparatus using the same
CN102340663B (zh) * 2010-07-22 2013-02-27 华为技术有限公司 图像运动估计方法和装置
CN102710934B (zh) * 2011-01-22 2015-05-06 华为技术有限公司 一种运动预测或补偿方法
EP2769549A1 (en) * 2011-10-21 2014-08-27 Dolby Laboratories Licensing Corporation Hierarchical motion estimation for video compression and motion analysis
US20130114717A1 (en) * 2011-11-07 2013-05-09 Qualcomm Incorporated Generating additional merge candidates
JP5485969B2 (ja) * 2011-11-07 2014-05-07 株式会社Nttドコモ 動画像予測符号化装置、動画像予測符号化方法、動画像予測符号化プログラム、動画像予測復号装置、動画像予測復号方法及び動画像予測復号プログラム
BR112014013969B1 (pt) * 2011-12-28 2022-05-10 JVC Kenwood Corporation Dispositivo de codificação de vídeo, método de codificação de vídeo, programa de codificação de vídeo, dispositivo de decodificação de vídeo, método de decodificação de vídeo, programa de decodificação de vídeo
CN102883161B (zh) * 2012-09-19 2015-09-30 华为技术有限公司 视频编码和解码的处理方法和装置
US9485515B2 (en) * 2013-08-23 2016-11-01 Google Inc. Video coding using reference motion vectors
WO2014058796A1 (en) * 2012-10-08 2014-04-17 Google Inc Method and apparatus for video coding using reference motion vectors
CN103024378B (zh) * 2012-12-06 2016-04-13 浙江大学 一种视频编解码中运动信息导出方法及装置
US10531116B2 (en) * 2014-01-09 2020-01-07 Qualcomm Incorporated Adaptive motion vector resolution signaling for video coding
US10123036B2 (en) 2014-06-27 2018-11-06 Microsoft Technology Licensing, Llc Motion vector selection for video encoding
KR102647887B1 (ko) * 2014-10-31 2024-03-14 삼성전자주식회사 움직임 벡터 부복호화 방법 및 장치
KR20180008445A (ko) * 2015-06-10 2018-01-24 삼성전자주식회사 적응적 가중치 예측을 위한 신택스 시그널링을 이용하여 영상을 부호화 또는 복호화하는 방법 및 장치
EP3264769A1 (en) * 2016-06-30 2018-01-03 Thomson Licensing Method and apparatus for video coding with automatic motion information refinement
CN107623849B (zh) * 2016-07-13 2019-06-18 北京大学 视频解码方法和装置
US11638027B2 (en) * 2016-08-08 2023-04-25 Hfi Innovation, Inc. Pattern-based motion vector derivation for video coding
US10812791B2 (en) 2016-09-16 2020-10-20 Qualcomm Incorporated Offset vector identification of temporal motion vector predictor
US10462462B2 (en) * 2016-09-29 2019-10-29 Qualcomm Incorporated Motion vector difference coding technique for video coding
EP3509304B1 (en) 2016-09-30 2023-11-01 Huawei Technologies Co., Ltd. Method for image decoding and device for image coding and decoding for inter-frame prediction
CN106507106B (zh) * 2016-11-08 2018-03-06 中国科学技术大学 基于参考片的视频帧间预测编码方法
US10701366B2 (en) * 2017-02-21 2020-06-30 Qualcomm Incorporated Deriving motion vector information at a video decoder
US12457321B2 (en) * 2017-03-22 2025-10-28 Electronics And Telecommunications Research Institute Prediction method and device using reference block
CN107948654A (zh) * 2017-11-21 2018-04-20 广州市百果园信息技术有限公司 视频发送、接收方法和装置及终端
CN111684796B (zh) * 2018-05-16 2024-04-09 华为技术有限公司 一种视频编解码方法和装置

Also Published As

Publication number Publication date
US20210067796A1 (en) 2021-03-04
CN115361564B (zh) 2023-09-01
KR20210002563A (ko) 2021-01-08
PH12020551803A1 (en) 2021-05-17
US11765378B2 (en) 2023-09-19
BR112020022246A2 (pt) 2021-02-02
CN111684796A (zh) 2020-09-18
JP2025100574A (ja) 2025-07-03
AU2018423422B2 (en) 2023-02-02
MY206099A (en) 2024-11-28
CA3098488C (en) 2023-08-15
HUE072433T2 (hu) 2025-11-28
WO2019218286A1 (zh) 2019-11-21
SG11202010578WA (en) 2020-11-27
MX2020012244A (es) 2021-01-29
US20230379490A1 (en) 2023-11-23
CN111684796B (zh) 2024-04-09
EP4697719A1 (en) 2026-02-18
RU2767993C1 (ru) 2022-03-22
KR20230085231A (ko) 2023-06-13
JP2021524199A (ja) 2021-09-09
JP7407741B2 (ja) 2024-01-04
CN115866272A (zh) 2023-03-28
CN118301331A (zh) 2024-07-05
AU2018423422A1 (en) 2020-11-19
KR102542196B1 (ko) 2023-06-12
EP3783888A4 (en) 2021-08-04
EP3783888A1 (en) 2021-02-24
EP3783888B1 (en) 2025-07-09
CN115361564A (zh) 2022-11-18
US20250280142A1 (en) 2025-09-04
JP2023083293A (ja) 2023-06-15
CA3098488A1 (en) 2019-11-21
CN112399184A (zh) 2021-02-23
CN112399184B (zh) 2022-07-12
CN112653895B (zh) 2022-08-02
KR102727805B1 (ko) 2024-11-07
US12278981B2 (en) 2025-04-15
CN112653895A (zh) 2021-04-13
PL3783888T3 (pl) 2025-10-13

Similar Documents

Publication Publication Date Title
ES3041562T3 (en) Video encoding and decoding method and apparatus
TWI791723B (zh) 圖像預測方法、裝置以及視訊編碼器、視訊解碼器
US12225203B2 (en) Motion vector obtaining method and apparatus, computer device, and storage medium
US11394996B2 (en) Video coding method and apparatus
BR112021003965B1 (pt) Método de determinação de residual de vetor de movimento, aparelho de determinação de residual de vetor de movimento e meio de armazenamento legível por computador