ES2978268T3 - Método y aparato de codificación y decodificación de imágenes de video - Google Patents

Método y aparato de codificación y decodificación de imágenes de video Download PDF

Info

Publication number
ES2978268T3
ES2978268T3 ES19893119T ES19893119T ES2978268T3 ES 2978268 T3 ES2978268 T3 ES 2978268T3 ES 19893119 T ES19893119 T ES 19893119T ES 19893119 T ES19893119 T ES 19893119T ES 2978268 T3 ES2978268 T3 ES 2978268T3
Authority
ES
Spain
Prior art keywords
flag
prediction
inter
mode
images
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
ES19893119T
Other languages
English (en)
Inventor
Xu Chen
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
Priority claimed from PCT/CN2019/123810 external-priority patent/WO2020114509A1/zh
Application granted granted Critical
Publication of ES2978268T3 publication Critical patent/ES2978268T3/es
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • 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/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/109Selection of coding mode or of prediction mode among a plurality of temporal predictive coding modes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/132Sampling, masking or truncation of coding units, e.g. adaptive resampling, frame skipping, frame interpolation or high-frequency transform coefficient masking
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/157Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/157Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
    • H04N19/159Prediction type, e.g. intra-frame, inter-frame or bidirectional frame 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/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/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/61Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards

Landscapes

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

Abstract

En la presente solicitud se proporcionan un método y un aparato de codificación y decodificación de imágenes de vídeo. Cuando se utiliza un modo de fusión o un modo de salto, no es necesario codificar ni decodificar un identificador de PU triangular si el resultado de la decodificación de un identificador de MMVD es verdadero, y el identificador de PU triangular solo se codifica y decodifica si el resultado de la decodificación del identificador de MMVD es falso, lo que reduce el uso de recursos de codificación y la sobrecarga del flujo de código. (Traducción automática con Google Translate, sin valor legal)

Description

DESCRIPCIÓN
Método y aparato de codificación y decodificación de imágenes de video
Campo de la invención
Esta solicitud se refiere al campo de las tecnologías de la codificación de imágenes, y en particular, a un método de decodificación de imágenes de video, un método de codificación de imágenes de video, un aparato de decodificación de imágenes de video y un aparato de codificación de imágenes de video.
Antecedentes
Con el desarrollo de tecnologías de información, los servicios de video tales como tales como televisión de alta definición, conferencias Web, IPTV y televisión en 3D se desarrollan rápidamente. Debido a ventajas tales como la capacidad de intuición y alta eficiencia, las señales de video resultan una manera principal de obtención de información en la vida diaria de las personas. Las señales de video incluyen una gran cantidad de datos, y por lo tanto ocupan una gran cantidad de ancho de banda de transmisión y espacio de almacenamiento. Para transmitir y almacenar de manera efectiva las señales de video, se necesita realizar codificación de compresión sobre las señales de video. Una tecnología de compresión de video ha resultado gradualmente una tecnología clave indispensable en el campo de la aplicación de video.
Un principio básico de la compresión de codificación de video es reducir al máximo la redundancia utilizando correlaciones entre un dominio de espacio, un dominio de tiempo y una palabra código. Actualmente, un método que prevalece es implementar la compresión de codificación de video utilizando un marco de codificación de video híbrido basado en bloques de imágenes y realizando etapas tales como predicción (incluyendo intra-predicción e inter-predicción), transformada, cuantificación, y codificación por entropía. En diversas soluciones de codificación/decodificación de video, la estimación de movimiento/desplazamiento de movimiento en inter-predicción es una tecnología clave que afecta al cumplimiento de la codificación/decodificación. En la inter-predicción existente, se agrega un modo de fusión con diferencia de vector de movimiento (merge mode with motion vector difference, MMVD) y un modo de unidad de predicción triangular (triangle prediction unit, triangle PU). Sin embargo, en la implementación de inter-predicción existente, bajo una misma condición se necesitan codificar tanto un indicador MMVD como un indicador PU triangular. En consecuencia, la redundancia ocurre durante la compatibilidad entre los dos modos.
R-L LIAO (PANASONIC) ET AL, "CE10.3.1.b: Triangular prediction unit mode", no. m44133, (20180924), 124. MPEG MEETING (“REUNIÓN MPEG”)); 20181008 - 20181012; MACAO; (MOTION PICTURE EXPERT GROUP OR ISO/IEC JTC1/SC29/WG11), URL: http://phenix.intevry.fr/mpeg/doc_end_user/documents/124_Macao/wg11/m44133-JVET-L0124-v1-JVET-L0124-v1.zip JVET-L0124-v1.doc, (20180924), describen que CE10.3.1.b: Triangular prediction unit mode, en el que en el modo de unidad de predicción triangular, una CU puede ser dividida utilizando dos unidades de predicción triangular, bien en dirección diagonal o diagonal inversa.
Compendio
Esta solicitud proporciona un método de decodificación y de codificación de imágenes de video y un aparato de decodificación y de codificación de imágenes de video, para resolver, en cierta medida, un problema convencional de redundancia que ocurre durante la compatibilidad entre un modo MMVD y un modo de PU triangular.
Para lograr el objetivo anterior, se adoptan las soluciones técnicas definidas en las reivindicaciones adjuntas. La invención se define en las reivindicaciones independientes. Las características adicionales de la invención se proporcionan en las reivindicaciones dependientes. A continuación, las partes de la descripción y los dibujos que se refieren a realizaciones que no están cubiertas por las reivindicaciones no se presentan como realizaciones de la invención, sino como ejemplos útiles para comprender la invención.
Según un primer aspecto, una realización de esta solicitud proporciona un método de decodificación de imágenes de video, que incluye:
analizar un primer indicador procedente de una corriente de bits; analizar un segundo indicador procedente de la corriente de bits si el primer indicador indica que un modo de salto es utilizado para inter-predicción de un bloque actual de imágenes que han de ser procesadas (por ejemplo, un modo de salto está permitido); y analizar un tercer indicador procedente de la corriente de bits cuando el segundo indicador indica que un modo de fusión con diferencia de vector de movimiento (MMVD) no es utilizado para inter-predicción del bloque actual de imágenes que han de ser procesadas (por ejemplo, en el modo de salto, la MMVD no se utiliza para inter-predicción del bloque actual de imágenes que han de ser procesadas), donde si, el tercer indicador es un primer valor, indica que una unidad de predicción triangular es utilizada para inter-predicción del bloque actual de imágenes que han de ser procesadas (por ejemplo, en el modo de salto, el modo de unidad de predicción triangular es utilizado para inter-predicción del bloque actual de imágenes que han de ser procesadas); y si el tercer indicador es un segundo valor, indica que un modo de unidad de predicción triangular no está permitido que sea utilizado para inter-predicción del bloque actual de imágenes que han de ser procesadas (por ejemplo, en el modo de salto, el modo de unidad de predicción triangular no está permitido que sea utilizado para inter-predicción del bloque actual de imágenes que han de ser procesadas); realizar inter-predicción sobre el bloque actual de imágenes que han de ser procesadas utilizando un modo de inter-predicción indicado por información de indicador en la corriente de bits incluye:
si el tercer indicador es el primer valor, permitir realizar inter-predicción sobre el bloque actual de imágenes que han de ser procesadas utilizando el modo de unidad de predicción triangular, y
si el tercer indicador es el segundo valor, permitir realizar la inter-predicción sobre el bloque actual de imágenes que han de ser procesadas utilizando el modo de salto.
Debería observarse que el tercer indicador no es sps_triangle_enabled_flag, y se realiza inter-predicción en el bloque actual de imágenes que han de ser procesadas utilizando un modo de inter-predicción indicado por información de indicador en la corriente de bits, donde la información de indicador incluye uno o más del primer indicador, del segundo indicador, y del tercer indicador.
Debería entenderse que un caso en el que otro indicador puede ser analizado adicionalmente antes que el tercer indicador sea analizado no queda excluido en esta solicitud. Por ejemplo, el tercer indicador puede ser analizado después que el otro indicador se haya analizado como que es falso.
Por ejemplo, el primer indicador también puede denominarse como cu_skip_flag[x0][y0], y el primer indicador puede utilizar el nombre anterior en un texto o código estándar. El segundo indicador también puede denominarse como skip_mmvd_flag[x0][y0], mmvd_indicator[x0][y0], o merge_mmvd_flag[x0][y0], y el segundo indicador puede utilizar uno de los nombres anteriores en un texto o código estándar. El tercer indicador también puede denominarse como skip_triangle_flag[x0][y0], triangle_flag[x0][y0], o merge_triangle_flag[x0][y0], y el tercer indicador puede utilizar uno de los nombres anteriores en un texto o código estándar.
Por ejemplo, el primer valor puede ser 1 (o verdadero), y el segundo valor puede ser 0 (o falso). Debería entenderse que el primer valor y el segundo valor son intercambiables. Por ejemplo, el primer valor puede ser 0 (o falso), y el segundo valor puede ser 1 (o verdadero). En esta realización de esta solicitud, cuando se determina que el modo de salto es utilizado, un indicador de unidad de predicción triangular (PU triangular) es decodificado únicamente cuando se determina a través de la decodificación que la MMVD no se ha utilizado. En otras palabras, cuando se determina a través de la decodificación que la MMVD se ha utilizado, el tercer indicador no necesita ser analizado a partir de la corriente de bits (en otras palabras, el indicador de unidad de predicción triangular no necesita ser codificado), y la inter-predicción puede ser directamente realizada en el bloque actual de imágenes que han de ser procesadas utilizando la MMVD. Esto puede evitar, en cierta medida, la redundancia que ocurre durante la compatibilidad entre la MMVD y el modo de PU triangular, reducir una cantidad de recursos de codificación utilizados, y reducir sobrecargas de bit de la corriente de bits.
En un ejemplo, cuando se determina que no se permite que el modo de PU triangular sea utilizado para inter predicción del bloque actual de imágenes que han de ser procesadas, se puede determinar que el modo de salto es utilizado para inter-predicción. Ciertamente, otro modo en el modo de salto puede ser analizado a partir de la corriente de bits. En este caso, el otro modo en el modo de salto alternativamente puede ser utilizado para inter-predicción del bloque actual de imágenes que han de ser procesadas. Esto no está limitado en esta solicitud.
En un posible diseño, la realización de la inter-predicción en el bloque actual de imágenes que han de ser procesadas utilizando un modo de inter-predicción indicado por información de indicador en la corriente de bits incluye: cuando el segundo indicador indica que la MMVD es utilizada para inter-predicción del bloque de imágenes actuales que han de ser procesadas, realizar inter-predicción en el bloque actual de imágenes que han de ser procesadas utilizando la MMVD.
En un posible diseño, cuando el segundo indicador indica que la MMVD es utilizada para inter-predicción del bloque actual de imágenes que han de ser procesadas, no se realiza una operación de decodificación del tercer indicador. En otras palabras, cuando el segundo indicador indica que la MMVD es utilizada para inter predicción del bloque actual de imágenes que han de ser procesadas, directamente se puede determinar o inferir que el modo de PU triangular no es utilizado para inter-predicción del bloque actual de imágenes que han de ser procesadas. Además, cuando el segundo indicador indica que la MMVD es utilizada para inter predicción del bloque actual de imágenes que han de ser procesadas, se realiza inter-predicción en el bloque actual de imágenes que han de ser procesadas utilizando la MMVD. En otras palabras, cuando el segundo indicador indica que la MMVD es utilizada para inter-predicción del bloque actual de imágenes que han de ser procesadas, un indicador relacionado para el modo de PU triangular no es analizado, y la inter-predicción es realizada directamente en el bloque actual de imágenes que han de ser procesadas utilizando la MMVD en el modo de salto.
En el diseño anterior, cuando se determina que el modo de salto es utilizado, si se determina a través de decodificación que la MMVD es utilizada, el tercer indicador (el indicador PU triangular) puede no ser decodificado, y de manera correspondiente, un lado de codificador no necesita codificar el tercer indicador en la corriente de bits tampoco. El indicador de PU triangular es decodificado únicamente cuando se determina a través de la decodificación que la MMVD no es utilizada. Esto puede evitar, en cierta medida, la redundancia que ocurre durante la compatibilidad entre la MMVD y el modo de PU triangular, reducir una cantidad de recursos de codificación utilizados, y reducir sobrecargas de bit de la corriente de bits.
Por ejemplo, la condición de que se permita que el modo de unidad de predicción triangular sea utilizado para inter-predicción puede incluir al menos uno de los siguientes casos:
(1) un bit de control de PU triangular es verdadero (sps_triangle_enabled_flag == 1);
(2) un fotograma de video que incluye el bloque actual de imágenes que han de ser procesadas es un fotograma B (slice_type == B);
(3) la anchura multiplicada por la altura del bloque actual de imágenes que han de ser procesadas es mayor que o igual a 16 (cbWidth * cbHeight >= 16); y
(4) no se permite que un modo afín (affine) sea utilizado para el bloque actual de imágenes que han de ser procesadas.
Debería entenderse que un caso en el que otra información de indicador es analizada adicionalmente antes de que el tercer indicador sea analizado no queda excluido en esta realización de esta solicitud. Debería entenderse que cuando un valor de la información de indicador es falso, el tercer indicador es analizado a partir de la corriente de bits.
Por ejemplo, los diseños del primer aspecto se describen desde una perspectiva en la que un indicador MMVD es decodificado antes que el indicador de PU triangular sea decodificado.
Según un tercer aspecto, una realización de esta solicitud proporciona un método de codificación de imagen de video, que incluye:
determinar un modo de predicción utilizado para inter-predicción de un bloque actual de imágenes que han de ser procesadas; y
codificar, en una corriente de bits, información de indicador utilizada para indicar el modo de predicción determinado, donde
la información de indicador incluye un primer indicador;
la información de indicador además incluye un segundo indicador cuando el primer indicador indica que un modo de salto es utilizado para inter-predicción del bloque actual de imágenes que han de ser procesadas; y la información de indicador además incluye un tercer indicador cuando el segundo indicador indica que un modo de fusión con diferencia de vector de movimiento MMVD no es utilizado para inter-predicción del bloque actual de imágenes que han de ser procesadas (por ejemplo, en el modo de salto, el modo de fusión con diferencia de vector de movimiento MMVD no es utilizado para inter-predicción del bloque actual de imágenes que han de ser procesadas).
Cuando el tercer indicador es un primer valor, indica que una unidad de predicción triangular es utilizada para inter-predicción del bloque actual de imágenes que han de ser procesadas (por ejemplo, en el modo de salto, el modo de unidad de predicción triangular es utilizado para inter-predicción del bloque actual de imágenes que han de ser procesadas); o cuando el tercer indicador es un segundo valor, esto indica que un modo de unidad de predicción triangular no es utilizado para inter-predicción del bloque actual de imágenes que han de ser procesadas (por ejemplo, en el modo de salto, el modo de unidad de predicción triangular no es utilizado para inter-predicción del bloque actual de imágenes que han de ser procesadas).
Cuando se determina el modo de predicción utilizado para inter-predicción del bloque actual de imágenes que han de ser procesadas, el modo de predicción utilizado para inter-predicción del bloque actual de imágenes que han de ser procesadas puede ser determinado de entre uno o más modos de inter-predicción para el bloque actual de imágenes que han de ser procesadas según un criterio de coste de distorsión de tasa en un proceso de determinar o seleccionar un modo de predicción apropiado para el bloque actual de imágenes que han de ser procesadas. Por ejemplo, un modo de predicción correspondiente a un coste de distorsión de tasa mínimo es seleccionado como el modo de predicción utilizado para inter-predicción del bloque actual de imágenes que han de ser procesadas.
En otra manera de descripción, una realización de esta solicitud proporciona un método de codificación de imagen de video, incluyendo:
codificar un primer indicador en una corriente de bits, y codificar un segundo indicador en la corriente de bits cuando el primer indicador indica que un modo de salto es utilizado para inter-predicción de un bloque actual de imágenes que han de ser procesadas; y
codificar un tercer indicador en la corriente de bits cuando el segundo indicador indica que un modo de fusión con diferencia de vector de movimiento MMVD no es utilizado para inter-predicción del bloque actual de imágenes que han de ser procesadas.
Cuando el tercer indicador es un primer valor, indica que una unidad de predicción triangular es utilizada para inter-predicción del bloque actual de imágenes que han de ser procesadas; o cuando el tercer indicador es un segundo valor, indica que un modo de unidad de predicción triangular no es utilizado para inter-predicción del bloque actual de imágenes que han de ser procesadas.
En otra manera de descripción todavía, una realización de esta solicitud proporciona un método de codificación de imágenes de video, que incluye:
determinar un valor de un primer indicador, un valor de un segundo indicador, y un valor de un tercer indicador; y
codificar el primer indicador, el segundo indicador, y el tercer indicador en una corriente de bits, donde el valor del primer indicador es utilizado para indicar que un modo de salto es utilizado para inter-predicción de un bloque actual de imágenes que han de ser procesadas, el valor del segundo indicador es utilizado para indicar que un modo de fusión con diferencia de vector de movimiento MMVD no es utilizado para inter predicción del bloque de imágenes que han de ser procesadas, y el valor del tercer indicador es utilizado para indicar que un modo de unidad de predicción triangular es utilizado para inter-predicción del bloque de imágenes que han de ser procesadas; o
codificar el primer indicador, el segundo indicador, y el tercer indicador en una corriente de bits, donde el valor del primer indicador es utilizado para indicar que un modo de salto es utilizado para inter-predicción de un bloque actual de imágenes que han de ser procesadas, el valor del segundo indicador es utilizado para indicar que un modo de fusión con diferencia de vector de movimiento MMVD no es utilizado para inter predicción del bloque de imágenes que han de ser procesadas, y el valor del tercer indicador es utilizado para indicar que un modo de unidad de predicción triangular no es utilizado para inter-predicción del bloque de imágenes que han de ser procesadas; o
codificar el primer indicador y el segundo indicador en una corriente de bits, donde el valor del primer indicador es utilizado para indicar que un modo de salto es utilizado para inter-predicción de un bloque actual de imágenes que han de ser procesadas, y el valor del segundo indicador es utilizado para indicar que un modo de fusión con diferencia de vector de movimiento MMVD es utilizado para inter-predicción del bloque de imágenes que han de ser procesadas.
En un posible diseño, cuando la información de indicador incluye el segundo indicador (cuando la corriente de bits incluye el segundo indicador), en la corriente de bits, el segundo indicador está ubicado después del primer indicador; o cuando la información de indicador además incluye el tercer indicador (cuando la corriente de bits incluye el tercer indicador), en la corriente de bits, el tercer indicador está ubicado después del segundo indicador.
En un posible diseño, que la información de indicador además incluye un tercer indicador cuando el segundo indicador indica que una MMVD no es utilizada para inter-predicción del bloque actual de imágenes que han de ser procesadas incluye:
la información de indicador además incluye el tercer indicador cuando el segundo indicador indica que la MMVD no es utilizada para inter-predicción del bloque actual de imágenes que han de ser procesadas y cuando el bloque actual de imágenes que han de ser procesadas satisface una condición de que el modo de unidad de predicción triangular está permitido que sea utilizado para inter-predicción.
Según un quinto aspecto, una realización de esta solicitud proporciona un aparato de decodificación de imágenes de video, incluyendo varias unidades funcionales configuradas para implementar cualquier método según el primer aspecto.
Por ejemplo, el aparato de decodificación de imágenes de video puede incluir una unidad de decodificación entrópica y una unidad de inter-predicción.
La unidad de decodificación entrópica está configurada para analizar un primer indicador de una corriente de bits.
La unidad de decodificación entrópica además está configurada para analizar un segundo indicador procedente de la corriente de bits cuando el primer indicador indica que un modo de salto es utilizado para inter-predicción de un bloque actual de imágenes que han de ser procesadas.
La unidad de decodificación entrópica además está configurada para analizar un tercer indicador procedente de la corriente de bits cuando el segundo indicador indica que un modo de fusión con diferencia de vector de movimiento MMVD no es utilizado para inter-predicción del bloque actual de imágenes que han de ser procesadas.
Cuando el tercer indicador es un primer valor, indica que un modo de unidad de predicción triangular es utilizado para inter-predicción del bloque actual de imágenes que han de ser procesadas; o cuando el tercer indicador es un segundo valor, indica que un modo de unidad de predicción triangular no es utilizado para inter-predicción del bloque actual de imágenes que han de ser procesadas.
La unidad de inter-predicción está configurada para realizar inter-predicción en el bloque actual de imágenes que han de ser procesadas utilizando un modo de inter-predicción indicado por información de indicador en la corriente de bits, donde la información de indicador incluye uno o más del primer indicador, del segundo indicador, y del tercer indicador.
En un posible diseño, la unidad de inter-predicción está específicamente configurada para: cuando el tercer indicador es el primer valor, realizar inter-predicción en el bloque actual de imágenes que han de ser procesadas utilizando el modo de unidad de predicción triangular; o cuando el tercer indicador es el segundo valor, realizar inter-predicción en el bloque actual de imágenes que han de ser procesadas utilizando el modo de salto.
En un posible diseño, la unidad de inter-predicción está específicamente configurada para: cuando el segundo indicador indica que la MMVD es utilizada para inter-predicción del bloque actual de imágenes que han de ser procesadas, realizar inter-predicción en el bloque actual de imágenes que han de ser procesadas utilizando la MMVD.
Según un séptimo aspecto, una realización de esta solicitud proporciona un aparato de codificación de imágenes de video, incluyendo varias unidades funcionales configuradas para implementar cualquier método según el tercer aspecto.
Por ejemplo, el aparato de codificación de imágenes de video puede incluir:
una unidad de inter-predicción, configurada para determinar un modo de predicción utilizado para inter predicción de un bloque actual de imágenes que han de ser procesadas; y
una unidad de codificación entrópica, configurada para codificar, en una corriente de bits, información de indicador utilizada para indicar el modo de predicción determinado, donde
la información de indicador incluye un primer indicador;
la información de indicador además incluye un segundo indicador cuando el primer indicador indica que un modo de salto es utilizado para inter-predicción del bloque actual de imágenes que han de ser procesadas; y la información de indicador además incluye un tercer indicador cuando el segundo indicador indica que un modo de fusión con diferencia de vector de movimiento MMVD no es utilizado para inter-predicción del bloque actual de imágenes que han de ser procesadas.
Cuando el tercer indicador es un primer valor, esto indica que una unidad de predicción triangular es utilizada para inter-predicción del bloque actual de imágenes que han de ser procesadas; o cuando el tercer indicador es un segundo valor, esto indica que un modo de unidad de predicción triangular no es utilizado para inter predicción del bloque actual de imágenes que han de ser procesadas.
Por ejemplo, cuando se determina el modo de predicción utilizado para inter-predicción del bloque actual de imágenes que han de ser procesadas, la unidad de inter-predicción puede determinar, de entre uno o más modos de inter-predicción para el bloque actual de imágenes que han de ser procesadas, el modo de predicción utilizado para inter-predicción del bloque actual de imágenes que han de ser procesadas según un criterio de coste de distorsión de tasa en un proceso de determinación o selección de un modo de predicción apropiado para el bloque actual de imágenes que han de ser procesadas. Por ejemplo, un modo de predicción correspondiente a un coste de distorsión de tasa mínimo es seleccionado como el modo de predicción utilizado para inter-predicción del bloque actual de imágenes que han de ser procesadas.
En un posible diseño, cuando la información de indicador incluye el segundo indicador, en la corriente de bits, el segundo indicador está ubicado después del primer indicador; o cuando la información de indicador además incluye el tercer indicador, en la corriente de bits, el tercer indicador está ubicado después del segundo indicador.
En un posible diseño, la información de indicador además incluye un cuarto indicador cuando el primer indicador indica que el modo de salto no es utilizado para inter-predicción del bloque actual de imágenes que han de ser procesadas;
la información de indicador además incluye un quinto indicador cuando el cuarto indicador indica que un modo de fusión es utilizado para inter-predicción del bloque actual de imágenes que han de ser procesadas; y
la información de indicador además incluye un sexto indicador cuando el quinto indicador indica que un modo de fusión con diferencia de vector de movimiento MMVD no es utilizado para inter-predicción del bloque actual de imágenes que han de ser procesadas.
Cuando el sexto indicador es un tercer valor, indica que se utiliza un modo de unidad de predicción de triángulos para la interpredicción del bloque de imágenes por procesar actual; o cuando el sexto indicador es un cuarto valor, indica que no se utiliza un modo de unidad de predicción de triángulos para la interpredicción del bloque de imágenes por procesar actual.
En una posible realización, que la información del indicador incluya además un tercer indicador cuando el segundo indicador indique que no se utiliza un MMVD para la interpredicción del bloque de imágenes por procesar actual incluye: la información del indicador incluye además el tercer indicador cuando el segundo indicador indica que el MMVD no se utiliza para la interpredicción del bloque de imágenes por procesar actual y cuando el bloque de imágenes por procesar actual satisface una condición que permite utilizar el modo de unidad de predicción triangular para la interpredicción
Según un décimo quinto aspecto, una realización de esta solicitud proporciona un dispositivo de decodificación de datos de video, donde el dispositivo incluye:
una memoria, configurada para almacenar datos de video en una forma de corriente de bits; y
un decodificador de video, configurado para: analizar un primer indicador de una corriente de bits; analizar un segundo indicador procedente de la corriente de bits cuando el primer indicador indica que un modo de salto es utilizado para inter-predicción de un bloque actual de imágenes que han de ser procesadas; analizar un tercer indicador procedente de la corriente de bits cuando el segundo indicador indica que un modo de fusión con diferencia de vector de movimiento MMVD no es utilizado para inter-predicción del bloque actual de imágenes que han de ser procesadas, donde, cuando el tercer indicador es un primer valor, indica que un modo de unidad de predicción triangular está permitido que sea utilizado para inter-predicción del bloque actual de imágenes que han de ser procesadas; o cuando el tercer indicador es un segundo valor, indica que un modo de unidad de predicción triangular no está permitido que sea utilizado para inter-predicción del bloque actual de imágenes que han de ser procesadas; y realizar inter-predicción en el bloque actual de imágenes que han de ser procesadas utilizando un modo de inter-predicción indicado por información de indicador en la corriente de bits, donde la información de indicador incluye uno o más del primer indicador, del segundo indicador, y del tercer indicador.
Según un décimo séptimo aspecto, una realización de esta solicitud proporciona un dispositivo de codificación de datos de video, donde el dispositivo incluye:
una memoria, configurada para almacenar datos de video, donde los datos de video incluyen uno o más bloques de imágenes; y
un codificador de video, configurado para: determinar un modo de predicción utilizado para inter-predicción de un bloque actual de imágenes que han de ser procesadas; y codificar, en una corriente de bits, información de indicador utilizada para indicar el modo de predicción determinado, donde la información de indicador incluye un primer indicador; la información de indicador además incluye un segundo indicador cuando el primer indicador indica que un modo de salto es utilizado para inter-predicción del bloque actual de imágenes que han de ser procesadas; y la información de indicador además incluye un tercer indicador cuando el segundo indicador indica que un modo de fusión con diferencia de vector de movimiento MMVD no es utilizado para inter-predicción del bloque actual de imágenes que han de ser procesadas, donde cuando el tercer indicador es un primer valor, indica que un modo de unidad de predicción triangular en el modo de salto está permitido que sea utilizado para inter-predicción del bloque actual de imágenes que han de ser procesadas; o cuando el tercer indicador es un segundo valor, indica que un modo de unidad de predicción triangular en el modo de salto no está permitido que sea utilizado para inter-predicción del bloque actual de imágenes que han de ser procesadas.
Según un vigésimo aspecto, una realización de esta solicitud proporciona un dispositivo de decodificación, que incluye una memoria no volátil y un procesador que están acoplados entre sí. El procesador invoca un código de programa almacenado en la memoria para realizar algunas o todas las etapas de cualquier método según el primer aspecto, el segundo aspecto, el noveno aspecto, o el undécimo aspecto.
Según un vigésimo-primer aspecto, una realización de esta solicitud proporciona un medio de almacenamiento legible por ordenador. El medio de almacenamiento legible por ordenador almacena un código de programa. El código de programa incluye una instrucción utilizada para realizar algunas o todas las etapas de cualquier método según el primer aspecto al cuarto aspecto, el noveno aspecto, o el undécimo aspecto.
Según un vigésimo segundo aspecto, una realización de esta solicitud proporciona un producto de programa informático. Cuando el producto de programa de ordenador corre en un ordenador, el ordenador se permite realizar alguno o todos los pasos de cualquier
método según el primer aspecto al cuarto aspecto, al noveno aspecto, o al undécimo aspecto.
Debería entenderse que soluciones técnicas en el segundo aspecto al vigésimo-segundo aspecto de esta solicitud son consistentes con las soluciones técnicas en el primer aspecto de esta solicitud, y los efectos benéficos logrados en los aspectos e implementaciones factibles correspondientes son similares. Los detalles no se describen en la presente memoria nuevamente.Se puede aprender que en las realizaciones de esta solicitud, cuando se determina que el modo de salto o el modo de fusión es utilizado, si se determina, a través de codificación, que la<m>M<v>D es utilizada, el indicador de PU triangular puede no ser codificado, y el indicador de PU triangular es codificado únicamente cuando se determina, a través de codificación, que la MMVD no es utilizada. Esto puede evitar la redundancia que ocurre durante la compatibilidad entre la MMVD y el modo de PU triangular, reducir una cantidad de recursos de codificación utilizados, y reducir sobrecargas de bit de la corriente de bits.
Breve descripción de los dibujos
La FIG. 1A es un diagrama de bloques de un ejemplo de un sistema 10 de codificación y decodificación de video según una realización de esta solicitud;
la FIG. 1B es un diagrama de bloques de un ejemplo de un sistema 40 de codificación de video según una realización de esta solicitud;
la FIG. 2 es un diagrama de bloques de una estructura ejemplar de un codificador 20 según una realización de esta solicitud;
la FIG. 3 es un diagrama de bloques de una estructura ejemplar de un decodificador 30 según una realización de esta solicitud;
la FIG. 4 es un diagrama de bloques de un ejemplo de un dispositivo 400 de codificación de video según una realización de esta solicitud;
la FIG. 5 es un diagrama de bloques de un ejemplo de otro aparato de codificación o aparato de decodificación según una realización de esta solicitud;
la FIG. 6 es un diagrama esquemático de bloques candidatos espaciales y temporales según una realización de esta olicitud;
la FIG. 7 es un diagrama esquemático de un modo de división de unidad de predicción triangular según una realización de esta solicitud;
la FIG. 8 es un diagrama esquemático de cálculo ponderado según una realización de esta solicitud; la FIG. 9A es un diagrama esquemático de un punto de búsqueda MMVD según una realización de esta solicitud;
la FIG. 9B es un diagrama esquemático de un proceso de búsqueda MMVD según una realización de esta solicitud;
la FIG. 10A es un diagrama de flujo esquemático de un método de decodificación de imágenes de video según una realización de esta solicitud;
la FIG. 10B es un diagrama de flujo esquemático de un método de codificación de imágenes de video según una realización de esta solicitud;
la FIG. 11A es un diagrama de flujo esquemático de otro método de decodificación de imágenes de video según una realización de esta solicitud;
la FIG. 11B es un diagrama de flujo esquemático de otro método de codificación de imágenes de video según una ralización de esta solicitud;
La FIG. 12 es un diagrama de bloques estructural de un aparato 1200 de decodificación de imágenes de video según una realización de esta solicitud; y
la FIG. 13 es un diagrama de bloques estructural de un aparato 1300 de codificación de imágenes de video según una realización de esta solicitud.
Descripción detallada de la invención
Lo que sigue describe las realizaciones de esta solicitud con referencia a los dibujos adjuntos en las realizaciones de esta solicitud. En la siguiente descripción, se hace referencia a los dibujos adjuntos que forman una parte de esta descripción y muestran, a modo de ilustración, aspectos específicos de las realizaciones de esta solicitud o aspectos específicos en los cuales se pueden utilizar las realizaciones de esta solicitud. Debería entenderse que las realizaciones de esta solicitud pueden ser utilizadas en otros aspectos, y pueden incluir cambios estructurales o lógicos no mostrados en los dibujos adjuntos. Por lo tanto, la siguiente descripción detallada no deberá ser tomada en un sentido limitante, y el alcance de esta solicitud es definido por las reivindicaciones adjuntas. Por ejemplo, se debe entender que una descripción, en conexión con un método descrito, también puede seguir siendo verdadera para un dispositivo o sistema correspondiente configurado para realizar el método y viceversa. Por ejemplo, si se describen una o más etapas de método específicas, un dispositivo correspondiente puede incluir una o más unidades tal como unidades funcionales, para realizar las una o más etapas de método descritas (por ejemplo, una unidad que realiza las una o más etapas; o una pluralidad de unidades, cada una de las cuales realiza una o más de la pluralidad de etapas), incluso si dichas una o más o unidades no son explícitamente descritas o ilustradas en los dibujos adjuntos. Por otra parte, por ejemplo, si un aparato específico es descrito basado en una o más unidades tal como unidades funcionales, un método correspondiente puede incluir una etapa utilizado para realizar la funcionalidad de las una o más unidades (por ejemplo, una etapa utilizada para realizar la funcionalidad de las una o más unidades, o una pluralidad de etapas, cada una utilizada para realizar la funcionalidad de una o más de una pluralidad de unidades), incluso si dichas una o más etapas no son explícitamente descritos o ilustrados en los dibujos adjuntos. Además, se debe entender que características de las diversas realizaciones y/o aspectos ejemplares descritos en esta memoria descriptiva se pueden combinar entre sí, a menos que específicamente se mencione de otra manera.
Las soluciones técnicas en las realizaciones de esta solicitud no solamente son aplicables a una norma de codificación de video existente (por ejemplo, la norma tal como H.264 o HEVC), sino que también es aplicable a una norma de codificación de video futura (por ejemplo, la norma H.266). Términos utilizados en la DESCRIPCIÓN DETALLADA DE LA INVENCIÓN de esta solicitud solamente se utilizan para explicar realizaciones específicas de esta solicitud, pero no pretenden limitar esta aplicación. Lo que sigue describe en primer lugar brevemente conceptos relacionados en las realizaciones de esta solicitud.
La codificación de video generalmente se refiere al procesamiento de una secuencia de imágenes que forman un video o una secuencia de video. Los términos "imagen (picture)", "fotograma (frame)", o "imagen (image)" pueden ser utilizados como sinónimos en el campo de la codificación de video. La codificación de video en esta memoria descriptiva representa codificación de video o decodificación de video. La codificación de video es realizada en un lado origen, y generalmente incluye procesar (por ejemplo, por compresión) una imagen de video original para reducir una cantidad de datos requeridos para representar la imagen de video, para un almacenamiento y/o transmisión más eficiente. La decodificación de video es ejecutada en un lado de destino, y generalmente incluye procesamiento inverso en comparación con un codificador para reconstruir una imagen de video. "Codificar" una imagen de video en las realizaciones debería entenderse como "codificar" o "decodificar" una secuencia de video. Una combinación de una parte de codificación y una parte de decodificación también se denomina como códec (codificación y decodificación).
Una secuencia de video incluye una serie de imágenes (picture), una imagen es dividida adicionalmente en segmentos (slice), y un segmento es dividido adicionalmente en bloques (block). El procesamiento de codificación de video es realizado por bloque. En algunas nuevas normas de codificación de video, adicionalmente se extiende un concepto de bloque. Por ejemplo, un macrobloque (macroblock, MB) es introducido en la norma H.264. El macrobloque puede ser dividido adicionalmente en una pluralidad de bloques de predicción que pueden ser utilizados para codificación predictiva. En la norma de codificación de video de alta eficiencia (high efficiency video coding, HEVC), se utilizan conceptos básicos tales como unidad de codificación (coding unit, CU), unidad de predicción (prediction unit, PU), y unidad de transformada (transform unit, TU). Una pluralidad de unidades de bloque se obtiene a través de división funcional, y se describen utilizando una nueva estructura basada en árbol. Por ejemplo, una CU puede ser dividida en CU más pequeñas basadas en un árbol cuaternario, y la CU más pequeña puede ser dividida adicionalmente, para generar una estructura de árbol cuaternario. La CU es una unidad básica utilizada para dividir y codificar una imagen codificada. Una PU y una TU también tienen estructuras de árbol similares. La Pu puede corresponder a un bloque de predicción, y es una unidad básica utilizada para codificación predictiva. La CU es dividida adicionalmente en una pluralidad de PU basadas en un patrón de división. La TU puede corresponder a un bloque de transformada, y es una unidad básica utilizada para transformar un residuo de predicción. Sin embargo, en esencia, todas las CU, las PU, y las TU son conceptualmente bloques (o bloques de imágenes).
Por ejemplo, en HEVC, una CTU es dividida en una pluralidad de CU utilizando una estructura de árbol cuaternario representada como un árbol de codificación. Una decisión respecto a si se codifica un área de imagen utilizando predicción inter-imagen (temporal) o intra-imagen (espacial) se realiza a un nivel de CU. Cada CU puede ser dividida adicionalmente en una, dos o cuatro PU basado en un patrón de división de PU. Dentro de una PU, se aplica un mismo proceso de predicción, y se transmite información relacionada a un decodificador sobre una base de PU. Después de obtener un bloque residual aplicando el proceso de predicción con base en el patrón de división de PU, la CU puede ser dividida en particiones en unidades de transformada (transform unit, TU) con base en otra estructura de árbol cuaternario similar al árbol de codificación utilizado para la CU. En el desarrollo reciente de tecnologías de compresión de video, un fotograma de partición de árbol cuaternario más árbol binario (Quadtree plus binary tree, QTBT) es utilizado para dividir un bloque de codificación. En una estructura de bloque QTBT, la CU puede ser cuadrada o rectangular.
En esta memoria descriptiva, para facilidad de descripción y comprensión, un bloque de imágenes que han de ser codificadas en una imagen codificada actual puede ser denominado como un bloque actual. Por ejemplo, en codificación, un bloque actual es un bloque que actualmente está siendo codificado; y en decodificación, un bloque actual es un bloque que actualmente está siendo decodificado. Un bloque de imágenes decodificadas, en una imagen de referencia, utilizado para predecir un bloque actual es denominado como un bloque de referencia. En otras palabras, un bloque de referencia es un bloque que proporciona una señal de referencia para un bloque actual. La señal de referencia representa un valor de pixel en el bloque de imágenes. Un bloque que proporciona una señal de predicción para un bloque actual en una imagen de referencia puede ser denominado como un bloque de predicción. La señal de predicción representa un valor de pixel, un valor de muestreo, o una señal de muestreo en el bloque de predicción. Por ejemplo, después de atravesar una pluralidad de bloques de referencia, se encuentra un bloque de referencia óptimo, y el bloque de referencia óptimo proporciona predicción para el bloque actual, y este bloque es denominado como un bloque de predicción.
En un caso de codificación de video sin pérdidas, se pueden reconstruir imágenes de video originales. Es decir, las imágenes de video reconstruidas tienen cierta la misma calidad que las imágenes de video originales (asumiendo que ninguna pérdida de transmisión u otra pérdida de datos es causada durante el almacenamiento o transmisión). En un caso de codificación de video con pérdida, se realiza compresión adicional a través de, por ejemplo, cuantificación, para reducir una cantidad de datos requerida para representar imágenes de video, y las imágenes de video no pueden ser completamente reconstruidas en un lado del decodificador. Es decir, la calidad de las imágenes de video reconstruidas es inferior o peor que la calidad de las imágenes de video originales.
Varias normas de codificación de video H.261 son para "códec de video híbrido con pérdida" (es decir, predicción espacial y temporal en un dominio de muestra se combina con codificación de transformada 2D para aplicar cuantificación en un dominio de transformada). Cada imagen de una secuencia de video generalmente es dividida en particiones un conjunto de bloques que no se superponen, y la codificación generalmente es realizada a un nivel de bloque. En otras palabras, en un lado del codificador, generalmente un video es procesado, es decir, es codificado, a un nivel de bloque (bloque de video). Por ejemplo, un bloque de predicción es generado a través de predicción espacial (intra-imagen) y predicción temporal (inter imagen), el bloque de predicción es sustraído de un bloque actual (un bloque que actualmente está siendo procesado o ha de ser procesado) para obtener un bloque residual, y el bloque residual es transformado y cuantificado en el dominio de transformada para reducir una cantidad de datos que han de ser transmitidos (comprimidos). En un lado del decodificador, procesamiento inverso comparado con el codificador es aplicado al bloque codificado o comprimido para reconstruir el bloque actual para representación. Además, el codificador duplica un bucle de procesamiento del decodificador, de manera que el codificador y el decodificador generan las mismas predicciones (por ejemplo, intra-predicción e inter-predicción) y/o reconstrucción para el procesamiento, es decir, para la codificación de un bloque posterior.
Lo siguiente describe una arquitectura de sistema aplicable a las realizaciones de esta solicitud. La FIG. 1A es un diagrama de bloques esquemático de un ejemplo de un sistema 10 de codificación y decodificación de video aplicable a las realizaciones de esta solicitud. Como se muestra en la FIG. 1A, el sistema de codificación y decodificación de video 10 puede incluir un dispositivo fuente 12 y un dispositivo destino 14. El dispositivo fuente 12 genera datos de video codificados, y por lo tanto, el dispositivo fuente 12 puede ser denominado como un aparato de codificación de video. El dispositivo destino 14 puede decodificar los datos de video codificados generados por el dispositivo fuente 12, y por lo tanto, el dispositivo destino 14 puede ser denominado como un aparato de decodificación de video. En varias soluciones de implementación, el dispositivo fuente 12, el dispositivo destino 14, o tanto el dispositivo fuente 12 como el dispositivo destino 14 pueden incluir uno o más procesadores y una memoria acoplada a uno o más procesadores. La memoria puede incluir, pero no se limita a una rAm , una ROM, una EEPROM, una memoria flash, o cualquier otro medio que pueda ser utilizado para almacenar un código de programa deseado en una forma de una instrucción o una estructura de datos accesible a una ordenador, como se describe en esta memoria descriptiva. El dispositivo fuente 12 y el dispositivo destino 14 pueden incluir varios aparatos, incluyendo un ordenador de escritorio, un aparato informático móvil, un ordenador portátil (por ejemplo, un portátil (“laptop”)), un tableta, un decodificador, un aparato telefónico tal como un denominado teléfono “inteligente”, una televisión, una cámara, un aparato de visualización, un reproductor de medios digitales, una consola de juegos de video, un ordenador integrado en un vehículo, un dispositivo de comunicaciones inalámbrico, o similar.
Aunque la FIG. 1A representa el dispositivo fuente 12 y el dispositivo destino 14 como dispositivos separados, una realización del dispositivo puede incluir alternativamente tanto el dispositivo fuente 12 como el dispositivo destino 14 o funcionalidades tanto del dispositivo fuente 12 como del dispositivo destino 14, es decir, el dispositivo fuente 12 o una funcionalidad correspondiente y el dispositivo destino 14 o una funcionalidad correspondiente. En dicha realización, el dispositivo fuente 12 o la funcionalidad correspondiente y el dispositivo destino 14 o la funcionalidad correspondiente puede ser implementado utilizando el mismo hardware y/o software, hardware y/o software separados, o cualquier combinación de los mismos.
Una conexión de comunicación entre el dispositivo fuente 12 y el dispositivo destino 14 puede ser implementada sobre un enlace 13, y el dispositivo destino 14 puede recibir datos de video codificados procedentes del dispositivo fuente 12 sobre el enlace 13. El enlace 13 puede incluir uno o más medios o aparatos que pueden transferir los datos de video codificados desde el dispositivo fuente 12 al dispositivo destino 14. En un ejemplo, el enlace 13 puede incluir uno o más medios de comunicación que permiten al dispositivo fuente 12 transmitir directamente los datos de video codificados al dispositivo destino 14 en tiempo real. En este ejemplo, el dispositivo fuente 12 puede modular los datos de video codificados según una norma de comunicaciones (por ejemplo, un protocolo de comunicaciones inalámbrico), y puede transmitir datos de video modulados al dispositivo destino 14. Uno o más medios de comunicaciones pueden incluir un medio de comunicaciones inalámbricas y/o un medio de comunicaciones cableadas, por ejemplo, un espectro de radiofrecuencia (RF) o uno o más cables de transmisión física. Uno o más medios de comunicaciones pueden ser una parte de una red basada en paquetes, y la red basada en paquetes, por ejemplo, es una red de área local, una red de área amplia, o una red global (por ejemplo, la internet). El uno o más medios de comunicaciones pueden incluir un router, un interruptor, una estación base, u otro dispositivo que facilita la comunicación del dispositivo fuente 12 al dispositivo destino 14.
El dispositivo fuente 12 incluye un codificador 20. Opcionalmente, el dispositivo fuente 12 además puede incluir una fuente 16 de imagen, un preprocesador 18 de imagen, y una interfaz 22 de comunicaciones. En una implementación específica, el codificador 20, la fuente 16 de imagen, el preprocesador 18 de imagen, y la interfaz 22 de comunicaciones pueden ser componentes de hardware en el dispositivo fuente 12, o pueden ser programas de software en el dispositivo fuente 12. Las descripciones se proporcionan separadamente a continuación:
La fuente 16 de imagen puede incluir o puede ser cualquier tipo de dispositivo de captura de imagen configurado para, por ejemplo, capturar una imagen del mundo real; y/o cualquier tipo de dispositivo para generar una imagen o un comentario (para codificación de contenido de pantalla, algún texto en una pantalla también se considera como una parte de una imagen que se ha de codificar), por ejemplo, un procesador informático de gráficos configurado para generar una imagen de animación por ordenador; o cualquier tipo de dispositivo configurado para obtener y/o proporcionar una imagen del mundo real o una imagen de animación por ordenador (por ejemplo, contenido de pantalla o una imagen de realidad virtual (virtual reality, VR)); y/o cualquier combinación de los mismos (por ejemplo, una imagen de realidad aumentada (augmented reality, AR)). La fuente 16 de imagen puede ser una cámara configurada para captar una imagen o una memoria configurada para almacenar una imagen. La fuente 16 de imagen además puede incluir cualquier tipo de interfaz (interna o externa) a través de la cual se almacena una imagen previamente capturada o generada y/o se obtiene o recibe una imagen. Cuando la fuente 16 de imagen es una cámara, la fuente 16 de imagen puede ser, por ejemplo, una cámara local, o una cámara integrada en el dispositivo fuente. Cuando la fuente 16 de imagen es una memoria, la fuente 16 de imagen puede ser una memoria local o, por ejemplo, una memoria integrada en el dispositivo fuente. Cuando la fuente 16 de imagen incluye una interfaz, la interfaz puede ser, por ejemplo, una interfaz externa para recibir una imagen procedente de una fuente de video externa. La fuente de video externa es, por ejemplo, un dispositivo de captura de imagen externo tal como una cámara, una memoria externa, o un dispositivo externo de generación de imagen. El dispositivo externo de generación de imagen es, por ejemplo, un procesador informático externo de gráficos, un ordenador, o un servidor. La interfaz puede ser cualquier tipo de interfaz, por ejemplo, una interfaz cableada o inalámbrica o una interfaz óptica, según cualquier protocolo de interfaz de propietario o estandarizada.
Una imagen puede ser considerada como una agrupación o matriz bidimensional de elementos de pixel (elemento de imagen). El elemento de pixel en la agrupación también puede ser denominado como una muestra. Una cantidad de muestras en las direcciones (o ejes) horizontal y vertical de la agrupación o la imagen define un tamaño y/o resolución de la imagen. Para representación de color, generalmente se emplean tres componentes de color, para ser específicos, la imagen puede ser representada como, o incluir, tres agrupaciones de muestras. Por ejemplo, en un formato RGB o un espacio de color, una imagen incluye agrupaciones de muestras correspondientes rojo, verde y azul. Sin embargo, en la codificación de video, cada pixel generalmente es representado en un formato de luminancia/crominancia o un espacio de color. Por ejemplo, una imagen en un formato YUV incluye un componente de luminancia indicado por Y (algunas veces indicado por L en su lugar) y dos componentes de crominancia indicados por U y V. El componente Y de luminancia (luma) representa el brillo o intensidad de nivel de gris (por ejemplo, ambos son los mismos en una imagen de escala de grises), y los dos componentes de crominancia (croma) U y V representan componentes de crominancia o información de color. De manera correspondiente, la imagen en el formato YUV incluye una agrupación de muestras de luminancia de valores (Y) de muestras de luminancia y dos agrupaciones de muestras de crominancia de valores de crominancia (U y V). Una imagen en un formato RGB puede ser transformada o convertida a un formato YUV y viceversa. Este proceso también es denominado como conversión o transformación de color. Si una imagen es monocromática, la imagen puede incluir únicamente una agrupación de muestras de luminancia. En esta realización de esta solicitud, una imagen transmitida por la fuente 16 de imagen al procesador de imágenes también puede ser denominada como datos 17 de imagen sin procesar.
El preprocesador 18 de imagen está configurado para recibir los datos 17 de imagen sin procesar y realizar el pre-procesamiento sobre los datos 17 de imagen sin procesar para obtener una imagen pre-procesada 19 o datos 19 de imagen pre-procesada. Por ejemplo, el procesamiento previo realizado por el preprocesador 18 de imagen puede incluir el recorte, conversión de formato de color (por ejemplo, desde un formato RGB a un formato YUV), corrección de color, o supresión de ruido.
El codificador 20 (o denominado como un codificador 20 de video) está configurado para recibir los datos 19 de imagen pre-procesada, y procesar los datos 19 de imagen pre-procesada utilizando un modo de predicción relacionado (por ejemplo, un modo de predicción en cada realización de esta memoria descriptiva), para proporcionar datos 21 de imagen codificados (detalles estructurales del codificador 20 se describen adicionalmente a continuación con base en la FIG. 2, FIG. 4, o FIG. 5). En algunas realizaciones, el codificador 20 puede ser configurado para llevar a cabo cada realización descrita a continuación, para implementar la aplicación del lado del codificador de un método de codificación de imágenes de video descrito en esta solicitud.
La interfaz 22 de comunicaciones puede ser configurada para recibir los datos 21 de imagen codificados, y transmitir los datos 21 de imagen codificados al dispositivo destino 14 o a cualquier otro dispositivo (por ejemplo, una memoria) sobre el enlace 13, para almacenamiento o reconstrucción directa. El otro dispositivo puede ser cualquier dispositivo utilizado para decodificación o almacenamiento. La interfaz 22 de comunicaciones puede ser configurada, por ejemplo, para empaquetar los datos 21 de imagen codificados en un formato apropiado, por ejemplo, un paquete de datos, para transmisión sobre el enlace 13.
El dispositivo destino 14 incluye un decodificador 30. Opcionalmente, el dispositivo destino 14 además puede incluir una interfaz 28 de comunicaciones, un post-procesador 32 de imágenes, y un dispositivo 34 de visualización. Las descripciones son proporcionadas por separado como sigue:
La interfaz 28 de comunicaciones puede ser configurada para recibir los datos 21 de imagen codificados desde el dispositivo fuente 12 o cualquier otra fuente. Cualquier otra fuente es, por ejemplo, un dispositivo de almacenamiento. El dispositivo de almacenamiento es, por ejemplo, un dispositivo de almacenamiento de datos de imagen codificados. La interfaz 28 de comunicaciones puede ser configurada para transmitir o recibir los datos 21 de imagen codificados sobre el enlace 13 entre el dispositivo fuente 12 y el dispositivo destino 14 o sobre cualquier tipo de red. El enlace 13 es, por ejemplo, una conexión cableada o inalámbrica directa. Cualquier tipo de red, por ejemplo, es una red cableada o inalámbrica o cualquier combinación de las mismas, o cualquier tipo de red privada o pública, o cualquier combinación de las mismas. La interfaz 28 de comunicaciones, por ejemplo, puede ser configurada para desempaquetar el paquete de datos transmitido a través de la interfaz 22 de comunicaciones, para obtener los datos 21 de imagen codificados.
Tanto la interfaz 28 de comunicaciones como la interfaz 22 de comunicaciones pueden ser configuradas como interfaces de comunicaciones unidireccionales o interfaces de comunicaciones bidireccionales, y pueden ser configuradas, por ejemplo, para enviar y recibir mensajes para configurar una conexión, y reconocer e intercambiar cualquier otra información relacionada con un enlace de comunicación y/o transmisión de datos tal como transmisión de datos de imagen codificados.
El decodificador 30 (o denominado como un decodificador 30 de video) está configurado para recibir los datos 21 de imagen codificados y proporcionar datos 31 de imagen decodificados o una imagen decodificada 331 (detalles estructurales del decodificador 30 se describen adicionalmente a continuación con base en la FIG. 3, FIG. 4, o FIG. 5). En algunas realizaciones, el decodificador 30 puede ser configurado para llevar a cabo cada realización descrita a continuación, para implementar una aplicación del lado del decodificador de un método de decodificación de imágenes de video descrito en esta solicitud.
El post-procesador 32 de imágenes está configurado para post-procesar los datos 31 de imagen decodificados (también denominados como datos de imagen reconstruidos) para obtener datos 33 de imagen post-procesados. El post-procesamiento ejecutado por el post-procesador 32 de imágenes puede incluir conversión de formato de color (por ejemplo, desde un formato YUV a un formato RGB), corrección de color, recorte, nuevo muestreo, o cualquier otro procesamiento. El post-procesador 32 de imágenes puede ser configurado adicionalmente para transmitir los datos 33 de imagen post-procesados al dispositivo 34 de visualización.
El dispositivo 34 de visualización está configurado para recibir los datos 33 de imagen post-procesados para mostrar una imagen, por ejemplo, a un usuario o un espectador. El dispositivo 34 de visualización puede ser o puede incluir cualquier tipo de visualización para presentar una imagen reconstruida, por ejemplo, un dispositivo de visualización o monitor integrado o externo. Por ejemplo, el dispositivo de visualización puede incluir una pantalla de cristal líquido (liquid crystal display, LCD), una pantalla de diodo de emisión de luz orgánica (organic light emitting diode, OLED), una pantalla de plasma, un proyector, una pantalla de micro LED, un cristal líquido sobre silicio (liquid crystal on silicon, LCoS), un procesador de luz digital (digital light processor, DLP), o cualquier tipo de otro dispositivo de visualización.
Aunque la FIG. 1A representa el dispositivo fuente 12 y el dispositivo destino 14 como dispositivos separados, una realización de dispositivo puede incluir alternativamente tanto el dispositivo fuente 12 como el dispositivo destino 14 o funcionalidades tanto del dispositivo fuente 12 como del dispositivo destino 14, es decir, el dispositivo fuente 12 o una funcionalidad correspondiente y el dispositivo destino 14 o una funcionalidad correspondiente. En dicha realización, el dispositivo fuente 12 o la funcionalidad correspondiente y el dispositivo destino 14 o la funcionalidad correspondiente pueden ser implementados utilizando el mismo hardware y/o software, hardware y/o software separados, o cualquier combinación de los mismos.
Como resultará evidente para un experto en la técnica basado en las descripciones, la existencia y división (exacta) de funcionalidades de diferentes unidades o funcionalidades del dispositivo fuente 12 y/o del dispositivo destino 14 mostradas en la FIG. 1A pueden variar dependiendo de un dispositivo y aplicación real. El dispositivo fuente 12 y el dispositivo destino 14 pueden incluir cualquiera de una amplia gama de dispositivos, incluyendo cualquier tipo de dispositivo manual o estacionario, por ejemplo, un ordenador portátil o “laptop”, un teléfono móvil, un teléfono inteligente, una tableta u ordenador de tableta, una cámara de video, un ordenador de escritorio, un decodificador, una televisión, una cámara, un dispositivo integrado en un vehículo, un dispositivo de visualización, un reproductor de medios digitales, una consola de juegos de video, un dispositivo de difusión de video (tal como un servidor de servicio de contenido o un servidor de entrega de contenido), un dispositivo receptor de difusión, o un dispositivo transmisor de difusión, y puede utilizar o no utilizar cualquier tipo de sistema operativo.
El codificador 20 y el decodificador 30 pueden ser implementados como cualquiera de diversos circuitos apropiados, por ejemplo, uno o más microprocesadores, procesadores de señal digital (digital signal processor, dSp ), circuitos integrados de aplicación específica (application-specific integrated circuit, ASIC), agrupaciones de puertas programables en campo (field-programmable gate array, FPGA), lógica discreta, hardware, o cualquier combinación de los mismos. Si las tecnologías son implementadas parcialmente utilizando software, un dispositivo puede almacenar una instrucción de software en un medio de almacenamiento legible por ordenador no transitorio adecuado y puede realizar la instrucción utilizando hardware tal como uno o más procesadores, para realizar las tecnologías de esta descripción. Cualquiera del contenido anterior (incluyendo hardware, software, una combinación de hardware y software, y similares) se puede considerar como uno o más procesadores.
En algunos casos, el sistema 10 de codificación y decodificación de video mostrado en la FIG. 1A es simplemente un ejemplo, y las tecnologías de esta solicitud son aplicables a configuraciones de codificación de video (por ejemplo, codificación de video o decodificación de video) que no necesariamente incluyen alguna comunicación de datos entre un dispositivo de codificación y un dispositivo de decodificación. En otro ejemplo, los datos pueden ser recuperados desde una memoria local, transmitidos sobre una red, o similar. Un dispositivo de codificación de video puede codificar datos y almacenar los datos en una memoria, y/o un dispositivo de decodificación de video puede recuperar datos de la memoria y decodificar los datos. En algunos ejemplos, la codificación y la decodificación son ejecutadas por dispositivos que no se comunican entre sí, sino que simplemente codifican datos a una memoria y/o recuperan datos de la memoria y decodifican los datos.
La FIG. 1B es un diagrama que ilustra un ejemplo de un sistema 40 de codificación de video incluyendo el codificador 20 en la FIG. 2 y/o el decodificador 30 en la FIG. 3 según una realización ejemplar. El sistema 40 de codificación de video puede implementar una combinación de varias tecnologías en las realizaciones de esta solicitud. En una implementación ilustrada, el sistema 40 de codificación de video puede incluir un dispositivo 41 de formación de imágenes, el codificador 20, el decodificador 30 (y/o un codificador/decodificador de video implementado por un circuito lógico 47 de una unidad 46 de procesamiento), una antena 42, uno o más procesadores 43, una o más memorias 44, y/o un dispositivo 45 de visualización.
Como se muestra en la FIG. 1B, el dispositivo 41 de formación de imágenes, la antena 42, la unidad 46 de procesamiento, el circuito lógico 47, el codificador 20, el decodificador 30, el procesador 43, la memoria 44, y/o el dispositivo 45 de visualización pueden comunicarse entre sí. Como se ha descrito, aunque el sistema 40 de codificación de video está ilustrado tanto con el codificador 20 como con el decodificador 30, en diferentes ejemplos, el sistema 40 de codificación de video puede incluir solamente el codificador 20 o solamente el decodificador 30.
En algunos ejemplos, la antena 42 puede ser configurada para transmitir o recibir una corriente de bits codificada de datos de video. Además, en algunos ejemplos, el dispositivo 45 de visualización puede ser configurado para presentar los datos de video. En algunos ejemplos, el circuito lógico 47 puede ser implementado por la unidad 46 de procesamiento. La unidad 46 de procesamiento puede incluir lógica de circuito integrado de aplicación específica (application-specific integrated circuit, ASIC), un procesador de gráficos, un procesador de propósito general, o similar. El sistema 40 de codificación de video también puede incluir el procesador opcional 43. De manera similar, el procesador opcional 43 puede incluir lógica de circuito integrado de aplicación específica (application-specific integrated circuit, ASIC), un procesador de gráficos, un procesador de propósito general, o similar. En algunos ejemplos, el circuito lógico 47 puede ser implementado por hardware, por ejemplo, hardware dedicado de codificación de video, y el procesador 43 puede ser implementado utilizando software de propósito general, un sistema operativo, o similar. Además, la memoria 44 puede ser cualquier tipo de memoria, por ejemplo, una memoria volátil (por ejemplo, una memoria de acceso aleatorio estática (Static Random Access Memory, SRAM) o una memoria de acceso aleatorio dinámica (Dynamic Random Access Memory, DRAM)), o una memoria no volátil (por ejemplo, una memoria flash). En un ejemplo no limitativo, la memoria 44 puede ser implementada por una memoria caché. En algunos ejemplos, el circuito lógico 47 puede tener acceso a la memoria 44 (por ejemplo, para implementación de una memoria tampón de imágenes). En otros ejemplos, el circuito lógico 47 y/o la unidad 46 de procesamiento pueden incluir una memoria (por ejemplo, una memoria caché) para implementación de una memoria tampón de imágenes o similar.
En algunos ejemplos, el codificador 20 implementado por el circuito lógico puede incluir una memoria tampón de imágenes (por ejemplo, implementada por la unidad 46 de procesamiento o la memoria 44) y una unidad de procesamiento de gráficos (por ejemplo, implementada por la unidad 46 de procesamiento). La unidad de procesamiento de gráficos puede estar acoplada comunicativamente a la memoria tampón de imágenes. La unidad de procesamiento de gráficos puede incluir el codificador 20 implementado por el circuito lógico 47, para implementar varios módulos que son descritos con referencia a la FIG. 2 y/o cualquier otro sistema o subsistema codificador descrito en esta memoria descriptiva. El circuito lógico puede ser configurado para realizar varias operaciones descritas en esta memoria descriptiva.
En algunos ejemplos, el decodificador 30 puede ser implementado por el circuito lógico 47 en una manera similar, para implementar varios módulos que se describen con referencia a un decodificador 30 en la FIG. 3 y/o cualquier otro sistema o subsistema decodificador descrito en esta memoria descriptiva. En algunos ejemplos, el decodificador 30 implementado por el circuito lógico puede incluir una memoria tampón de imágenes (por ejemplo, implementada por la unidad 46 de procesamiento o la memoria 44) y una unidad de procesamiento de gráficos (por ejemplo, implementada por la unidad 46 de procesamiento). La unidad de procesamiento de gráficos puede estar acoplada comunicativamente a la memoria tampón de imágenes. La unidad de procesamiento de gráficos puede incluir el decodificador 30 implementado por el circuito lógico 47, para implementar varios módulos que se describen con referencia a la FIG. 3 y/o cualquier otro sistema o subsistema decodificador descrito en esta memoria descriptiva.
En algunos ejemplos, la antena 42 puede ser configurada para recibir una corriente de bits codificada de datos de video. Tal como se ha descrito, la corriente de bits codificada puede incluir datos, un indicador, un valor de índice, datos de selección de modo, y similares relacionados con codificación de fotogramas de video descrita en esta especificación, por ejemplo, datos relacionados con la división en particiones de la codificación (por ejemplo, un coeficiente de transformada o un coeficiente de transformada cuantificado, un indicador opcional (tal como se ha descrito), y/o datos que definen la división en particiones de la codificación). El sistema 40 de codificación de video además puede incluir el decodificador 30 acoplado a la antena 42 y configurado para decodificar la corriente de bits codificada. El dispositivo 45 de visualización está configurado para presentar un fotograma de video.
Debería entenderse que, en esta realización de esta solicitud, para el ejemplo descrito con referencia al codificador 20, el decodificador 30 puede ser configurado para realizar un proceso inverso. Con referencia a la señalización de un elemento de sintaxis, el decodificador 30 puede ser configurado para recibir y analizar dicho elemento de sintaxis y de manera correspondiente decodificar datos de video relacionados. En algunos ejemplos, el codificador 20 puede codificar en entropía el elemento de sintaxis en una corriente de bits de video codificada. En dichos ejemplos, el decodificador 30 puede analizar el elemento de sintaxis y de manera correspondiente puede decodificar datos de video relacionados.
Cabe señalar que un método de codificación de imágenes de video descrito en las realizaciones de esta solicitud es realizado por el codificador 20 y un método de decodificación de imágenes de video descrito en las realizaciones de esta solicitud es realizado por el decodificador 30. El codificador 20 y el decodificador 30 en las realizaciones de esta solicitud, pueden ser, por ejemplo, un codificador y un decodificador correspondientes a un protocolo estándar de video tal como H.263, H.264, HEVC, MPEG-2, MPEG-4, VP8, o VP9, o a un protocolo estándar de video de la próxima generación (tal como H.266).
La FIG. 2 es un diagrama de bloques esquemático/conceptual de un ejemplo de un codificador 20 según una realización de esta solicitud. En el ejemplo de la FIG. 2, el codificador 20 incluye una unidad 204 de cálculo residual, una unidad 206 de procesamiento de transformada, una unidad 208 de cuantificación, una unidad 210 de cuantificación inversa, una unidad 212 de procesamiento de transformada inversa, una unidad 214 de reconstrucción, una memoria tampón 216, una unidad 220 de filtro en bucle, una memoria tampón de imágenes decodificadas (decoded picture buffer, DPB) 230, una unidad 260 de procesamiento de predicción, y una unidad 270 de codificación entrópica. La unidad 260 de procesamiento de predicción puede incluir una unidad 244 de inter-predicción, una unidad 254 de intra-predicción, y una unidad 262 de selección de modo. La unidad 244 de inter-predicción puede incluir una unidad de estimación de movimiento y una unidad de desplazamiento de movimiento (que no se muestran). El codificador 20 mostrado en la FIG. 2 también puede ser denominado como un codificador de video híbrido o un codificador de video según un códec de video híbrido.
Por ejemplo, la unidad 204 de cálculo residual, la unidad 206 de procesamiento de transformada, la unidad 208 de cuantificación, la unidad 260 de procesamiento de predicción, y la unidad 270 de codificación entrópica forman una trayectoria de señal de avance del codificador 20, mientras que por ejemplo, la unidad 210 de cuantificación inversa, la unidad 212 de procesamiento de transformada inversa, la unidad 214 de reconstrucción, la memoria tampón 216, el filtro 220 en bucle, la memoria tampón de imágenes decodificadas (decoded picture buffer, DPB) 230, y la unidad 260 de procesamiento de predicción forman una trayectoria de señal de retroceso del codificador. La trayectoria de señal de retroceso del codificador corresponde a una trayectoria de señal de un decodificador (con referencia a un decodificador 30 en la FIG. 3).
El codificador 20 recibe, por ejemplo, a través de una entrada 202, una imagen 201 o un bloque 203 de imágenes de una imagen 201, por ejemplo, una imagen en una secuencia de imágenes que forman un video o una secuencia de video. El bloque 203 de imágenes también puede ser denominado como un bloque de imagen actual o un bloque de imágenes que han de codificadas. La imagen 201 puede ser denominada como una imagen actual o una imagen que ha de ser codificada (en particular en codificación de video para distinguir la imagen actual de otras imágenes, por ejemplo, imágenes previamente codificadas y/o decodificadas de una misma secuencia de video, es decir, la secuencia de video que también incluye la imagen actual).
Una realización del codificador 20 puede incluir una unidad de división en particiones (que no se ha representado en la FIG. 2), configurada para dividir en particiones la imagen 201 en una pluralidad de bloques tal como bloques 203 de imagen. La imagen 201 generalmente es dividida en particiones en una pluralidad de bloques que no se superponen. La unidad de división en particiones puede ser configurada para utilizar un mismo tamaño de bloque para todas las imágenes en una secuencia de video y una cuadrícula correspondiente que define el tamaño de bloque, o para cambiar un tamaño de bloque entre imágenes o subconjuntos o grupos de imágenes, y para dividir en particiones cada imagen en bloques correspondientes.
En un ejemplo, la unidad 260 de procesamiento de predicción en el codificador 20 puede ser configurada para realizar cualquier combinación de tecnologías de división en particiones antes descritas.
Como la imagen 201, el bloque 203 de imágenes también es o puede ser considerado como una agrupación o matriz bidimensional de muestras con valores de muestra, aunque un tamaño del bloque 203 de imágenes es más pequeño que un tamaño de la imagen 201. En otras palabras, el bloque 203 de imágenes puede incluir, por ejemplo, una agrupación de muestras (por ejemplo, una agrupación de luma en un caso de una imagen monocromática 201), tres agrupaciones de muestra (por ejemplo, una agrupación de luma y dos agrupaciones de croma en un caso de una imagen de color), o cualquier otra cantidad y/o tipo de agrupaciones dependiendo de un formato de color aplicado. Una cantidad de muestras en las direcciones (o ejes) horizontal y vertical del bloque 203 de imágenes define un tamaño del bloque 203 de imágenes.
El codificador 20 mostrado en la FIG. 2 está configurado para codificar la imagen 201 bloque por bloque. Por ejemplo, la codificación y predicción son realizadas por bloque 203 de imágenes.
La unidad 204 de cálculo residual está configurada para calcular un bloque residual 205 con base en el bloque 203 de imágenes y un bloque 265 de predicción (a continuación se proporcionan detalles adicionales acerca del bloque 265 de predicción), por ejemplo, sustrayendo valores de muestra del bloque 265 de predicción de valores de muestra del bloque 203 de imágenes muestra por muestra (pixel por pixel), para obtener el bloque residual 205 en un dominio de muestra.
La unidad 206 de procesamiento de transformada está configurada para aplicar una transformada, por ejemplo, una transformada de coseno discreta (discrete cosine transform, DCT) o una transformada de seno discreta (discrete sine transform, DST), a valores de muestra del bloque residual 205 para obtener coeficientes 207 de transformada en un dominio de transformada. El coeficiente 207 de transformada también puede ser denominado como un coeficiente residual de transformada y representa el bloque residual 205 en el dominio de transformada.
La unidad 206 de procesamiento de transformada puede ser configurada para aplicar aproximaciones de número entero de DCT/DST, tal como transformadas especificadas en HEVC/H.265. En comparación con una transformada DCT ortogonal, dichas aproximaciones de número entero generalmente son escaladas con base en un factor. Para preservar una norma de un bloque residual el cual es procesado utilizando transformadas de avance e inversa, se aplica un factor de escala adicional como una parte del proceso de transformada. El factor de escala generalmente es seleccionado con base en algunas restricciones, por ejemplo, siendo el factor de escala una potencia de dos para una operación de desplazamiento, una profundidad de bit del coeficiente de transformada, y un desplazamiento entre precisión y costes de implementación. Por ejemplo, un factor de escala específico es especificado para la transformada inversa, por ejemplo, mediante la unidad 212 de procesamiento de transformada inversa en el lado del decodificador 30 (y una transformada inversa correspondiente, por ejemplo, mediante la unidad 212 de procesamiento de transformada inversa en el lado del codificador 20), y de manera correspondiente, un factor de escala correspondiente puede ser especificado para la transformada de avance mediante la unidad 206 de procesamiento de transformada en el lado del codificador 20.
La unidad 208 de cuantificación está configurada para cuantificar los coeficientes 207 de transformada para obtener coeficientes 209 de transformada cuantificados, por ejemplo, aplicando cuantificación escalar o cuantificación vectorial. El coeficiente 209 de transformada cuantificado también puede ser denominado como un coeficiente residual cuantificado 209. Un proceso de cuantificación puede reducir una profundidad de bit relacionada con algunos o todos los coeficientes 207 de transformada. Por ejemplo, un coeficiente de transformada de n-bits puede ser redondeado hacia abajo a un coeficiente de transformada de m-bits durante la cuantificación, donde n es mayor que m. Un grado de cuantificación puede ser modificado ajustando un parámetro de cuantificación (quantization parameter, QP). Por ejemplo, para cuantificación escalar, se pueden aplicar diferentes escalas para lograr una cuantificación más fina o más gruesa. Un tamaño de etapa de cuantificación más pequeño corresponde a cuantificación más fina, y un tamaño de etapa de cuantificación más grande corresponde a cuantificación más gruesa. Un tamaño de etapa de cuantificación apropiado puede ser indicado por un parámetro de cuantificación (quantization parameter, QP). Por ejemplo, el parámetro de cuantificación puede ser un índice a un conjunto predefinido de tamaños de etapa de cuantificación apropiados. Por ejemplo, un parámetro de cuantificación más pequeño puede corresponder a cuantificación más fina (un tamaño de etapa de cuantificación más pequeño) y un parámetro de cuantificación más grande puede corresponder a cuantificación más gruesa (un tamaño de etapa de cuantificación más grande), o viceversa. La cuantificación puede incluir división por un tamaño de etapa de cuantificación y cuantificación o cuantificación inversa correspondiente, por ejemplo, realizada por la unidad 210 de cuantificación inversa, o puede incluir multiplicación por un tamaño de etapa de cuantificación. En realizaciones según algunas normas tales como HEVC, se puede utilizar un parámetro de cuantificación para determinar el tamaño de etapa de cuantificación. Generalmente, el tamaño de etapa de cuantificación puede ser calculado con base en un parámetro de cuantificación utilizando una aproximación de punto fijo de una ecuación que incluye división. Factores de escala adicionales pueden ser introducidos para cuantificación y descuantificación con el fin de restaurar la norma del bloque residual, donde la norma del bloque residual puede ser modificada debido a una escala utilizada en la aproximación de punto fijo de la ecuación para el tamaño de etapa de cuantificación y el parámetro de cuantificación. En una implementación ejemplar, una escala de la transformada inversa se puede combinar con una escala de la descuantificación. Alternativamente, una tabla de cuantificación personalizada puede ser utilizada y señalizada desde un codificador a un decodificador, por ejemplo, en una corriente de bits. La cuantificación es una operación con pérdida, donde la pérdida aumenta con el incremento del tamaño de etapa de cuantificación.
La unidad 210 de cuantificación inversa está configurada para aplicar la cuantificación inversa de la unidad 208 de cuantificación a un coeficiente cuantificado para obtener un coeficiente descuantificado 211, por ejemplo, aplicar, con base en o utilizando un mismo tamaño de etapa de cuantificación que la unidad 208 de cuantificación, la inversa de un esquema de cuantificación aplicado por la unidad 208 de cuantificación. El coeficiente descuantificado 211 también puede ser denominado como un coeficiente residual descuantificado 211, y corresponder al coeficiente 207 de transformada, aunque el coeficiente descuantificado 211 generalmente es diferente del coeficiente de transformada debido a una pérdida provocada por la cuantificación.
La unidad 212 de procesamiento de transformada inversa está configurada para aplicar una transformada inversa de la transformada aplicada por la unidad 206 de procesamiento de transformada, por ejemplo, una transformada de coseno discreta inversa (discrete cosine transform, DCT) o una transformada de seno discreta inversa (discrete sine transform, DST), para obtener un bloque 213 de trasformada inversa en el dominio de muestra. El bloque 213 de transformada inversa también puede ser denominado como un bloque descuantificado 213 de transformada inversa o un bloque residual 213 de transformada inversa.
La unidad 214 de reconstrucción (por ejemplo, una sumadora 214) está configurada para sumar el bloque 213 de transformada inversa (concretamente, el bloque residual reconstruido 213) al bloque 265 de predicción, por ejemplo, sumando los valores de muestra del bloque residual reconstruido 213 y los valores de muestra del bloque 265 de predicción, para obtener un bloque reconstruido 215 en el dominio de muestra. Opcionalmente, una unidad 216 de memoria tampón ("memoria tampón" 216 para abreviar) de, por ejemplo, la memoria tampón 216 de línea, está configurada para almacenar en memoria tampón o almacenar el bloque reconstruido 215 y un valor de muestra correspondiente, por ejemplo, para intra-predicción. En otras realizaciones, el codificador puede ser configurado para utilizar un bloque reconstruido no filtrado y/o un valor de muestra correspondiente que son almacenados en la unidad 216 de memoria tampón para realizar cualquier tipo de estimación y/o predicción, por ejemplo, intra-predicción.
Por ejemplo, en una realización, el codificador 20 puede ser configurado de modo que la unidad 216 de memoria tampón está configurada para almacenar el bloque reconstruido 215 no solamente utilizado para la unidad 254 de intra-predicción sino también utilizado para la unidad 220 de filtro en bucle, y/o de modo que, por ejemplo, la unidad 216 de memoria tampón y la unidad 230 de memoria tampón de imágenes decodificadas forman una memoria tampón. En otras realizaciones, un bloque filtrado 221 y/o un bloque o muestra (que no se ha mostrado en la FIG. 2) procedente de la memoria tampón 230 de imágenes decodificadas es utilizado como una entrada o una base para la unidad 254 de intra-predicción.
La unidad 220 de filtro en bucle ("filtro en bucle" 220 para abreviar) está configurada para filtrar el bloque reconstruido 215 para obtener un bloque filtrado 221, para suavizar transiciones de pixel o mejorar la calidad del video. La unidad 220 de filtro en bucle está destinada a representar uno o más filtros en bucle tal como un filtro de desbloqueo, un filtro de desplazamiento de muestra adaptativo (sample-adaptive offset, SAO), u otros filtros, por ejemplo, un filtro bilateral, un filtro en bucle adaptativo (adaptive loop filter, ALF), un filtro de enfoque o suavizante, o un filtro colaborativo. Aunque la unidad 220 de filtro en bucle se muestra como un filtro en-bucle en la FIG. 2, en otra implementación, la unidad 220 de filtro en bucle puede ser implementada como un filtro post-bucle. El bloque filtrado 221 también puede ser denominado como un bloque reconstruido filtrado 221. La memoria tampón 230 de imágenes decodificadas puede almacenar un bloque codificado reconstruido después que la unidad 220 de filtro en bucle realiza una operación de filtración sobre el bloque codificado reconstruido.
En una realización, el codificador 20 (de manera correspondiente, la unidad 220 de filtro en bucle) puede ser configurada para emitir un parámetro de filtro en bucle (por ejemplo, información de desplazamiento de muestra adaptativa), por ejemplo, directamente o después de la codificación entrópica realizada por la unidad 270 de codificación entrópica o cualquier otra unidad de codificación entrópica, de modo que el decodificador 30 puede recibir y aplicar el mismo parámetro de filtro de bucle para decodificación.
La memoria tampón de imágenes decodificadas (decoded picture buffer, DPB) 230 puede ser una memoria de imágenes de referencia que almacena datos de imágenes de referencia para usar en codificación de datos de video mediante el codificador 20. La DPB 230 puede estar formada por cualquiera de una variedad de dispositivos de almacenamiento tales como una memoria de acceso aleatorio dinámica (dynamic random access memory, DRAM) (incluyendo una DRAM sincronizada (synchronous DRAM, SDRA<m>), una RAM magnetorresistiva (magnetoresistive RAM, MRAM), una RAM resistiva (resistive RAM, RRAM)), u otros tipos de dispositivos de almacenamiento. La DPB 230 y la memoria tampón 216 pueden ser proporcionadas por un mismo dispositivo de almacenamiento o dispositivos de almacenamiento separados. En un ejemplo, la memoria tampón de imágenes decodificadas (decoded picture buffer, DPB) 230 está configurada para almacenar el bloque filtrado 221. La memoria tampón 230 de imágenes decodificadas puede ser configurada adicionalmente para almacenar otros bloques previamente filtrados, por ejemplo, bloques 221 previamente reconstruidos y filtrados, de la misma imagen actual o de diferentes imágenes, por ejemplo, imágenes previamente reconstruidas, y puede proporcionar imágenes completas previamente reconstruidas, es decir, decodificadas (y bloques y muestras de referencia correspondientes) y/o una imagen actual parcialmente reconstruida (y bloques y muestras de referencia correspondientes), por ejemplo, para inter-predicción. En un ejemplo, si el bloque reconstruido 215 es reconstruido sin filtración en-bucle, la memoria tampón de imágenes decodificadas (decoded picture buffer, DPB) 230 está configurada para almacenar el bloque reconstruido 215.
La unidad 260 de procesamiento de predicción, también denominada como una unidad 260 de procesamiento de predicción de bloque, está configurada para recibir u obtener el bloque 203 de imágenes (un bloque 203 de imagen actual de la imagen actual 201) y datos de imagen reconstruida, por ejemplo, muestras de referencia de la misma imagen (actual) procedentes de la memoria tampón 216 y/o datos 231 de imagen de referencia de una o más imágenes previamente decodificadas procedentes de la memoria tampón 230 de imágenes decodificadas, y procesar dichos datos para predicción, en particular, para proporcionar el bloque 265 de predicción que puede ser un bloque 245 de inter-predicción o un bloque 255 de intrapredicción.
La unidad 262 de selección de modo puede ser configurada para seleccionar un modo de predicción (por ejemplo, un modo de intra o inter-predicción) y/o un bloque 245 o 255 de predicción correspondiente que ha de ser utilizado como el bloque 265 de predicción, para cálculo del bloque residual 205 y para reconstrucción del bloque reconstruido 215.
En una realización, la unidad 262 de selección de modo puede ser configurada para seleccionar el modo de predicción (por ejemplo, a partir de modos de predicción soportados por la unidad 260 de procesamiento de predicción), donde el modo de predicción proporciona un mejor emparejamiento o en otras palabras un residuo mínimo (el residuo mínimo significa mejor compresión para transmisión o almacenamiento), o proporciona sobrecargas de señalización mínima (las sobrecargas de señalización mínima significan una mejor compresión para transmisión o almacenamiento), o considera o equilibra ambos. La unidad 262 de selección de modo puede ser configurada para determinar el modo de predicción con base en una optimización de distorsión de tasa (rate-distortion optimization, RDO), es decir, seleccionar un modo de predicción que proporciona una distorsión de tasa mínima o seleccionar un modo de predicción para el cual la distorsión de tasa relacionada satisface al menos un criterio de selección de modo de predicción.
Lo que sigue describe en detalle el procesamiento de predicción (por ejemplo, realizado por la unidad 260 de procesamiento de predicción) y de selección de modo (por ejemplo, realizado por la unidad 262 de selección de modo) que son realizados por un ejemplo del codificador 20.
Tal como se ha descrito antes, el codificador 20 está configurado para determinar o seleccionar el mejor modo de predicción o el óptimo de entre un conjunto de modos de predicción (predeterminados). El conjunto de modos de predicción puede incluir, por ejemplo, un modo de intra-predicción y/o un modo de inter predicción.
Un conjunto de modos de intra-predicción puede incluir 35 modos de intra-predicción diferentes, por ejemplo, modos no direccionales tales como modo DC (o promedio) y un modo plano, o modos direccionales tales como los definidos en H.265, o puede incluir 67 modos de intra-predicción diferentes, por ejemplo, modos no direccionales tal como un modo DC (o promedio) y un modo plano, o modos direccionales tales como los definidos en H.266 bajo desarrollo.
En una posible implementación, un conjunto de modos de inter-predicción depende de imágenes de referencia disponibles (en particular, por ejemplo, al menos imágenes parcialmente decodificadas almacenadas en la DBP 230, como se ha descrito antes) y otros parámetros de inter-predicción, por ejemplo, depende de si una imagen de referencia completa o solamente una parte de una imagen de referencia, por ejemplo, un área de ventana de búsqueda alrededor de un área de un bloque actual, es utilizada para buscar un mejor bloque de referencia de emparejamiento, y/o por ejemplo, depende de si se aplica interpolación de pixel tal como interpolación de medio-pixel y/o de cuarto-de pixel. El conjunto de modos de inter-predicción puede incluir, por ejemplo, un modo de salto (skip) y un modo de fusión (merge). En una implementación específica, el conjunto de modos de inter-predicción puede incluir un modo de unidad de predicción triangular basada en salto (triangle prediction unit, Triangle PU), un modo de PU triangular basado en fusión, un modo de fusión basado en salto con diferencia de vector de movimiento MMVD (merge mode with vector de movimiento difference, MMVD), o una MMVD basada en fusión en las realizaciones de esta solicitud. En un ejemplo, la unidad 254 de intra-predicción puede ser configurada para realizar cualquier combinación de tecnologías de inter-predicción descritas a continuación.
Además de los modos de predicción anteriores, el modo de salto y/o un modo directo también se pueden aplicar en las realizaciones de esta solicitud.
La unidad 260 de procesamiento de predicción puede ser configurada adicionalmente para dividir en particiones el bloque 203 de imágenes en particiones de bloque o sub-bloques más pequeños, por ejemplo, utilizando de forma iterativa la división en particiones de árbol cuaternario (quadtree, QT), la división en particiones de árbol binario (binary tree, BT), la división en particiones de árbol ternario (ternary tree, TT), o cualquier combinación de los mismos, y por ejemplo, predecir cada una de las particiones de bloque o sub bloques. La selección de modo incluye selección de una estructura de árbol del bloque 203 de imágenes dividido y la selección de un modo de predicción aplicado a cada una de las particiones de bloque o sub bloques.
La unidad 244 de inter-predicción puede incluir una unidad de estimación de movimiento (motion estimation, ME) (la cual no se muestra en la FIG. 2) y una unidad de desplazamiento de movimiento (motion compensation, MC) (la cual no se muestra en la FIG. 2). La unidad de estimación de movimiento está configurada para recibir u obtener un bloque 203 de imágenes (el bloque 203 de imagen actual de la imagen actual 201) y una imagen decodificada 231, o al menos uno o más bloques previamente reconstruidos, por ejemplo, uno o más bloques reconstruidos de otras/diferentes imágenes 231 previamente decodificadas, para estimación de movimiento. Por ejemplo, una secuencia de video puede incluir la imagen actual y la imagen 231 previamente decodificada. En otras palabras, la imagen actual y la imagen 231 previamente decodificada pueden ser una parte de, o formar, una secuencia de imágenes que forman una secuencia de video.
Por ejemplo, el codificador 20 puede ser configurado para seleccionar un bloque de referencia de entre una pluralidad de bloques de referencia de una misma imagen o imágenes diferentes de una pluralidad de otras imágenes, y proporcionar una imagen de referencia y/o un desplazamiento (un desplazamiento espacial) entre una ubicación (coordenadas X, Y) del bloque de referencia y una ubicación del bloque actual como un parámetro de inter-predicción a la unidad de estimación de movimiento (la cual no se muestra en la FIG. 2). Este desplazamiento también se denomina un vector de movimiento (motion vector, MV).
La unidad de compensación de movimiento está configurada para obtener un parámetro de inter-predicción, y realizar inter-predicción con base en o utilizando el parámetro de inter-predicción para obtener un bloque 245 de inter-predicción. La compensación de movimiento realizada por la unidad de compensación de movimiento (la cual no se muestra en la FIG. 2) puede incluir la extracción o generación del bloque de predicción con base en un vector de movimiento/bloque determinado a través de la estimación de movimiento (posiblemente realizando interpolación en precisión de sub-pixel). La filtración por interpolación puede generar muestras de pixel adicionales a partir de muestras de pixel conocidas. Esto incrementa potencialmente una cantidad de bloques de predicción candidatos que pueden ser utilizados para codificar un bloque de imagen. Tras recibir un vector de movimiento para una PU del bloque de imagen actual, la unidad de compensación de movimiento puede localizar un bloque de predicción al cual apunta el vector de movimiento en una de las listas de imágenes de referencia. La unidad de compensación de movimiento también puede generar un elemento de sintaxis asociado con un bloque y un segmento de video, de manera que el decodificador 30 utiliza el elemento de sintaxis para decodificar el bloque de imágenes en el segmento de video.
Específicamente, la unidad 244 de inter-predicción puede transmitir un elemento de sintaxis a la unidad 270 de codificación entrópica. El elemento de sintaxis incluye el parámetro de inter-predicción (tal como información de indicación de un modo de inter-predicción utilizado para predicción del bloque actual después que se atraviesan una pluralidad de modos de inter-predicción). En un posible escenario de aplicación, si solamente existe un modo de inter-predicción, el parámetro de inter-predicción no puede ser llevado en el elemento de sintaxis. En este caso, el lado del decodificador 30 puede realizar directamente decodificación utilizando un modo de predicción por defecto. Se puede entender que la unidad 244 de inter-predicción puede ser configurada para realizar cualquier combinación de tecnologías de inter-predicción.
La unidad 254 de intra-predicción está configurada para obtener, por ejemplo, recibir, un bloque 203 de imágenes (el bloque de imagen actual) y uno o más bloques previamente reconstruidos, por ejemplo, bloques contiguos reconstruidos, de una misma imagen para intra-estimación. Por ejemplo, el codificador 20 puede ser configurado para seleccionar un modo de intra-predicción de entre una pluralidad de modos de intrapredicción (predeterminados).
En una realización, el codificador 20 puede ser configurado para seleccionar el modo de intra-predicción según un criterio de optimización, por ejemplo, con base en un residuo mínimo (por ejemplo, un modo de intra-predicción que proporciona el bloque 255 de predicción que es más similar al bloque 203 de imagen actual) o distorsión de tasa mínima.
La unidad 254 de intra-predicción además está configurada para determinar el bloque 255 de intra-predicción con base en, por ejemplo, un parámetro de intra-predicción en el modo seleccionado de intra-predicción. En cualquier caso, después de seleccionar un modo de intra-predicción para un bloque, la unidad 254 de intrapredicción además está configurada para proporcionar un parámetro de intra-predicción, es decir, información que indica el modo de intra-predicción seleccionado para el bloque, a la unidad 270 de codificación entrópica. En un ejemplo, la unidad 254 de intra-predicción puede ser configurada para realizar cualquier combinación de tecnologías de intra-predicción.
Específicamente, la unidad 254 de intra-predicción puede transmitir el elemento de sintaxis a la unidad 270 de codificación entrópica. El elemento de sintaxis incluye el parámetro de intra-predicción (tal como información de indicación de la selección de un modo de intra-predicción utilizado para predicción del bloque actual después que haber atravesado una pluralidad de modos de intra-predicción). En un posible escenario de aplicación, si solamente hay un modo de intra-predicción, el parámetro de intra-predicción no puede ser llevado en el elemento de sintaxis. En este caso, el lado del decodificador 30 puede realizar directamente decodificación utilizando un modo de predicción por omisión.
La unidad 270 de codificación entrópica está configurada para aplicar (o no aplicar) un algoritmo o esquema de codificación entrópica (por ejemplo, un esquema de codificación de longitud variable (variable length coding, VLC), un esquema VLC adaptativo al contexto (context-adaptive VLC, CAVLC), un esquema de codificación aritmética, un esquema de codificación aritmética binaria adaptativa al contexto (context-adaptive binary arithmetic coding, CABAC), un esquema de codificación aritmética binaria adaptativa al contexto basada en sintaxis (syntax-based context-adaptive binary arithmetic coding, SBAC), un esquema de codificación entrópica de división en particiones de intervalo de probabilidad (probability interval partitioning entropy, PIPE), u otra metodología o tecnología de codificación entrópica) a uno o todos los coeficientes residuales cuantificados 209, el parámetro de inter-predicción, el parámetro de intra-predicción, y/o el parámetro de filtro en bucle, para obtener datos 21 de imagen codificados que pueden ser emitidos a través de una salida 272, por ejemplo, en una forma de una corriente 21 de bits codificada. La corriente de bits codificada puede ser transmitida al decodificador 30 de video, o ser almacenada para posterior transmisión o recuperación por el decodificador 30 de video. La unidad 270 de codificación entrópica puede ser configurada adicionalmente para codificación entrópica de otro elemento de sintaxis para un segmento de video actual que está siendo codificado.
Se pueden utilizar otras variaciones estructurales del codificador 20 de video para codificar una corriente de video. Por ejemplo, el codificador 20 basado en no-transformada puede cuantificar una señal residual directamente sin la unidad 206 de procesamiento de transformada para algunos bloques o fotogramas. En otra implementación, el codificador 20 puede tener la unidad 208 de cuantificación y la unidad 210 de cuantificación inversa combinadas en una sola unidad.
Específicamente, en esta realización de esta solicitud, el codificador 20 puede ser configurado para implementar un método de codificación de imágenes de video descrito en las siguientes realizaciones.
Debería entenderse que otras variaciones estructurales del codificador 20 de video pueden ser utilizadas para codificar una transmisión de video. Por ejemplo, para algunos bloques de imagen o fotogramas de imagen, el codificador 20 de video puede directamente cuantificar una señal residual. En este caso, no se requiere el procesamiento mediante la unidad 206 de procesamiento de transformada, y de manera correspondiente, tampoco se requiere el procesamiento mediante la unidad 212 de procesamiento de transformada inversa. Alternativamente, para algunos bloques de imagen o fotogramas de imagen, el codificador 20 de video no genera datos residuales. De manera correspondiente, en este caso, el procesamiento mediante la unidad 206 de procesamiento de transformada, la unidad 208 de cuantificación, la unidad 210 de cuantificación inversa, y la unidad 212 de procesamiento de transformada inversa no se requiere. De manera alternativa, el codificador 20 de video directamente puede almacenar un bloque de imágenes reconstruido como un bloque de referencia. En este caso, no se requiere el procesamiento mediante el filtro 220. Alternativamente, la unidad 208 de cuantificación y la unidad 210 de cuantificación inversa en el codificador 20 de video se pueden combinar. El filtro en bucle 220 es opcional. Además, en un caso de codificación de compresión sin pérdida, la unidad 206 de procesamiento de transformada, la unidad 208 de cuantificación, la unidad 210 de cuantificación inversa, y la unidad 212 de procesamiento de transformada inversa también son opcionales. Debería entenderse que, en diferentes escenarios de aplicación, la unidad 244 de inter-predicción y la unidad 254 de intra-predicción pueden ser utilizadas de manera selectiva.
La FIG. 3 es un diagrama de bloques esquemático/conceptual de un ejemplo de un decodificador 30 según una realización de esta solicitud. El decodificador 30 de video está configurado para recibir, por ejemplo, datos 21 de imagen codificados (por ejemplo, una corriente de bits codificada) obtenidos a través de la codificación mediante un codificador 20, para obtener una imagen decodificada 331. En un proceso de decodificación, el decodificador 30 de video recibe, procedentes del codificador 20 de video, datos de video, por ejemplo, una corriente de bits de video codificada que representa un bloque de imágenes en un segmento de video codificado y un elemento de sintaxis asociado.
En el ejemplo de la FIG. 3, el decodificador 30 incluye una unidad 304 de decodificación entrópica, una unidad 310 de cuantificación inversa, una unidad 312 de procesamiento de transformada inversa, una unidad 314 de reconstrucción (por ejemplo, una sumadora 314), una memoria tampón 316, un filtro en bucle 320, una memoria tampón 330 de imágenes decodificadas, y una unidad 360 de procesamiento de predicción. La unidad 360 de procesamiento de predicción puede incluir una unidad 344 de inter-predicción, una unidad 354 de intra-predicción, y una unidad 362 de selección de modo. En algunos ejemplos, el decodificador 30 de video puede realizar una etapa de decodificación que generalmente es inversa a una etapa de codificación descrita con referencia al codificador 20 de video en la FIG. 2.
La unidad 304 de decodificación entrópica está configurada para decodificar entrópicamente los datos 21 de imagen codificados para obtener, por ejemplo, un coeficiente cuantificado 309 y/o un parámetro de codificación decodificado (que no se muestra en la FIG. 3), por ejemplo, cualquiera o todos de un parámetro de inter-predicción, un parámetro de intra-predicción, un parámetro de filtro en bucle, y/u otro elemento de sintaxis (que son decodificados). La unidad 304 de decodificación entrópica además está configurada para reenviar el parámetro de inter-predicción, el parámetro de intra-predicción, y/o el otro elemento de sintaxis a la unidad 360 de procesamiento de predicción. El decodificador 30 de video puede recibir un elemento de sintaxis a un nivel de segmento de video y/o un nivel de bloque de imagen.
La unidad 310 de cuantificación inversa puede ser idéntica en función a la unidad 210 de cuantificación inversa, la unidad 312 de procesamiento de transformada inversa puede ser idéntica en función a la unidad 212 de procesamiento de transformada inversa, la unidad 314 de reconstrucción puede ser idéntica en función a la unidad 214 de reconstrucción, la memoria tampón 316 puede ser idéntica en función a la memoria tampón 216, el filtro en bucle 320 puede ser idéntico en función al filtro en bucle 220, y la memoria tampón 330 de imágenes decodificadas puede ser idéntica en función a la memoria tampón 230 de imágenes decodificadas.
La unidad 360 de procesamiento de predicción puede incluir la unidad 344 de inter-predicción y la unidad 354 de intra-predicción. La unidad 344 de inter-predicción puede ser similar en función a la unidad 244 de inter predicción, y la unidad 354 de intra-predicción puede ser similar en función a la unidad 254 de intrapredicción. La unidad 360 de procesamiento de predicción generalmente está configurada para realizar predicción de bloque y/u obtener un bloque 365 de predicción de los datos codificados 21, y recibir u obtener (explícita o implícitamente) un parámetro relacionado con la predicción y/o información acerca de un modo de predicción seleccionado, por ejemplo, de la unidad 304 de decodificación entrópica.
Cuando el fotograma de video es codificado en un segmento intra-codificado (I), la unidad 354 de intrapredicción en la unidad 360 de procesamiento de predicción está configurada para generar un bloque 365 de predicción de un bloque de imágenes en el segmento de video actual con base en un modo de intrapredicción señalizado y datos de un bloque previamente decodificado de un fotograma o imagen actual. Cuando el fotograma de video es codificado en un segmento inter-codificado (concretamente, B o P), la unidad 344 de inter-predicción (por ejemplo, una unidad de compensación de movimiento) en la unidad 360 de procesamiento de predicción está configurada para generar un bloque 365 de predicción de un bloque de video en el segmento de video actual con base en un vector de movimiento y el otro elemento de sintaxis que es recibido desde la unidad 304 de decodificación entrópica. En inter-predicción, un bloque de predicción puede ser generado a partir de una imagen de referencia en una lista de imágenes de referencia. El decodificador 30 de video puede construir listas de fotogramas de referencia, una lista 0 y una lista 1, utilizando una tecnología de construcción por defecto y con base en imágenes de referencia almacenadas en la DPB 330.
La unidad 360 de procesamiento de predicción está configurada para determinar información de predicción del bloque de video en el segmento de video actual analizando el vector de movimiento y el otro elemento de sintaxis, y generar, utilizando la información de predicción, el bloque de predicción del bloque de video actual que está siendo decodificado. En un ejemplo de esta solicitud, la unidad 360 de procesamiento de predicción determina, utilizando algunos elementos de sintaxis recibidos, un modo de predicción (por ejemplo, intrapredicción o inter-predicción) para codificar el bloque de video en el segmento de video, un tipo de segmento de inter-predicción (por ejemplo, un segmento B, un segmento P, o un segmento GPB), información de construcción de una o más de las listas de imágenes de referencia para el segmento, un vector de movimiento de cada bloque de video inter-codificado en el segmento, un estatus de inter-predicción de cada bloque de video inter-codificado en el segmento, y otra información, para decodificar el bloque de video en el segmento de video actual. En otro ejemplo de esta descripción, el elemento de sintaxis recibido por el decodificador 30 de video de la corriente de bits incluye un elemento de sintaxis en uno o más de un conjunto de parámetros adaptativo (adaptive parameter set, APS), un conjunto de parámetros de secuencia (sequence parameter set, SPS), un conjunto de parámetros de imagen (picture parameter set, PPS), o una cabecera de segmento.
La unidad 310 de cuantificación inversa puede ser configurada para realizar cuantificación inversa (en particular, descuantificación) en un coeficiente de transformada cuantificado proporcionado en la corriente de bits y decodificado por la unidad 304 de decodificación entrópica. Un proceso de cuantificación inversa puede incluir el uso de un parámetro de cuantificación calculado por el codificador 20 de video para cada bloque de video en el segmento de video, para determinar un grado de cuantificación que debería aplicarse y, de modo similar, un grado de cuantificación inversa que debería aplicarse.
La unidad 312 de procesamiento de transformada inversa está configurada para aplicar una transformada inversa (por ejemplo, una DCT inversa, una transformada de número entero inversa, o un proceso de transformada inversa conceptualmente similar) a un coeficiente de transformada, para generar un bloque residual en un dominio de pixel.
La unidad 314 de reconstrucción (por ejemplo, la sumadora 314) está configurada para sumar un bloque 313 de transformada inversa (concretamente, un bloque residual reconstruido 313) al bloque 365 de predicción, por ejemplo, sumando valores muestra del bloque residual reconstruido 313 y valores muestra del bloque 365 de predicción, para obtener un bloque reconstruido 315 en un dominio de muestra.
La unidad 320 de filtro de bucle (ya sea en un bucle de codificación o después de un bucle de codificación) está configurada para filtrar el bloque reconstruido 315 para obtener un bloque filtrado 321, para suavizar las transiciones de pixel o mejorar la calidad del video. En un ejemplo, la unidad 320 de filtro en bucle puede ser configurada para realizar cualquier combinación de tecnologías de filtración descritas a continuación. La unidad 320 de filtro en bucle está destinada a representar uno o más filtros en bucle tales como un filtro de desbloqueo, un filtro de desplazamiento de muestra adaptativo (sample-adaptive offset, SAO), u otros filtros, por ejemplo, un filtro bilateral, un filtro en bucle adaptativo (adaptive loop filter, ALF), un filtro de enfoque o suavizado, o un filtro colaborativo. Aunque la unidad 320 de filtro en bucle se muestra como un filtro en-bucle en la FIG. 3, en otra implementación, la unidad 320 de filtro en bucle puede ser implementada como un filtro post-bucle.
Luego, un bloque de video decodificado en un fotograma o imagen determinada es almacenado en la memoria tampón 330 de imágenes decodificadas que almacena una imagen de referencia utilizada para compensación posterior de movimiento.
El decodificador 30 está configurado para emitir, por ejemplo, la imagen decodificada 331 a través de una salida 332, para presentación o visualización a un usuario.
Otras variaciones del decodificador 30 de video pueden ser utilizadas para decodificar una corriente de bits comprimida. Por ejemplo, el decodificador 30 puede generar una corriente de video de salida sin la unidad 320 de filtro en bucle. Por ejemplo, el decodificador 30 basado en no-transformada puede cuantificar a la inversa una señal residual directamente sin la unidad 312 de procesamiento de transformada inversa para algunos bloques o fotogramas. En otra implementación, el decodificador 30 de video puede tener la unidad 310 de cuantificación inversa y la unidad 312 de procesamiento de transformada inversa combinadas en una sola unidad.
Específicamente, en esta realización de esta solicitud, el decodificador 30 puede ser configurado para implementar un método de decodificación de imágenes de video descrito en las siguientes realizaciones. Debería entenderse que otras variantes estructurales del decodificador 30 de video pueden ser utilizadas para decodificar una corriente de bits de video codificada. Por ejemplo, el decodificador 30 de video puede generar una corriente de video de salida sin procesamiento mediante el filtro 320. Alternativamente, para algunos bloques de imagen o fotogramas de imagen, la unidad 304 de decodificación entrópica en el decodificador 30 de video no obtiene un coeficiente cuantificado a través de decodificación, y de manera correspondiente, no se requiere el procesamiento mediante la unidad 310 de cuantificación inversa y la unidad 312 de procesamiento de transformada inversa. El filtro 320 en bucle es opcional. Además, en un caso de compresión sin pérdida, la unidad 310 de cuantificación inversa y la unidad 312 de procesamiento de transformada inversa también son opcionales. Debería entenderse que, en diferentes escenarios de aplicación, la unidad de inter-predicción y la unidad de intra-predicción pueden ser utilizadas selectivamente. Debería entenderse que, en el codificador 20 y el decodificador 30 en esta solicitud, un resultado del procesamiento de una etapa puede ser procesado adicionalmente y después emitido a una siguiente etapa. Por ejemplo, después de una etapa tal como filtración de interpolación, derivación de vector de movimiento, o filtración en bucle, una operación adicional, tal como recorte o desplazamiento, es realizada sobre un resultado de procesamiento de la etapa correspondiente.
Por ejemplo, un vector de movimiento que es de un punto de control de un bloque de imagen actual y que es derivado con base en un vector de movimiento de un bloque de codificación afín contiguo o un vector de movimiento que es de un sub-bloque de un bloque de imagen actual y que es derivado con base en un vector de movimiento de un bloque de codificación afín contiguo puede ser procesado adicionalmente. Esto no está limitado en esta solicitud. Por ejemplo, un valor del vector de movimiento está restringido a quedar dentro de un intervalo de anchura de bit específico. Asumiendo que una anchura de bit permitida del vector de movimiento es bitDepth, el valor del vector de movimiento varía desde -2 A(bitDepth - 1) a 2A(bitDepth - 1) -1, donde el símbolo "A" representa la exponenciación. Si bitDepth es 16, el valor varía desde -32768 a 32767. Si bitDepth es 18, el valor varía desde -131072 a 131071. Como otro ejemplo, el valor del vector de movimiento (por ejemplo, vectores de movimiento MV de cuatro sub-bloques 4x4 dentro de un bloque de imagen 8x8) queda restringido de manera que una diferencia máxima entre partes enteras de los MV de los cuatro sub-bloques 4x4 no excede de N pixeles, por ejemplo, no excede de 1 pixel.
La FIG. 4 es un diagrama estructural esquemático de un dispositivo 400 de codificación de video (por ejemplo, un dispositivo 400 de codificación de video o un dispositivo 400 de decodificación de video) según una realización de esta solicitud. El dispositivo 400 de codificación de video es adecuado para implementar las realizaciones descritas en esta memoria descriptiva. En una realización, el dispositivo 400 de codificación de video puede ser un decodificador de video (por ejemplo, el decodificador 30 en la FIG. 1A) o un codificador de video (por ejemplo, el codificador 20 en la FlG. 1A). En otra realización, el dispositivo 400 de codificación de video puede ser uno o más componentes del decodificador 30 en la FIG. 1A o el codificador 20 en la FIG. 1A.
El dispositivo 400 de codificación de video incluye: puertos 410 de entrada y una unidad 420 de recepción (Rx) que están configurados para recibir datos; un procesador, una unidad lógica, o una unidad 430 de procesamiento central (CPU) que está configurada para procesar datos; una unidad transmisora (Tx) 440 y puertos 450 de salida que están configurados para transmitir los datos; y una memoria 460 configurada para almacenar datos. La unidad receptora 420 también puede ser denominada como un receptor 420 o una unidad receptora 420. La unidad transmisora 440 también puede ser denominada como un transmisor 440 para abreviar. El dispositivo 400 de codificación de video además puede incluir componentes óptico-eléctricos y componentes electro-ópticos (EO) que están acoplados a los puertos 410 de entrada, la unidad receptora 420, la unidad transmisora 440, y los puertos 450 de salida, para salida o entrada de una señal óptica o eléctrica.
El procesador 430 es implementado mediante hardware y software. El procesador 430 puede ser implementado como uno o más chips de CPU, núcleos (por ejemplo, un procesador multi-núcleo), FPGA, ASIC, y DSP El procesador 430 se comunica con los puertos 410 de entrada, la unidad receptora 420, la unidad transmisora 440, los puertos 450 de salida, y la memoria 460. El procesador 430 incluye un módulo 470 de cifrado (por ejemplo, un módulo 470 de codificación o un módulo 470 de decodificación). El módulo 470 de codificación/decodificación implementa las realizaciones descritas en esta especificación, para implementar un método de codificación y decodificación de imagen de video proporcionado en las realizaciones de esta solicitud. Por ejemplo, el módulo 470 de codificación/decodificación implementa, procesa o proporciona varias operaciones de codificación. Por lo tanto, el módulo 470 de codificación/decodificación proporciona una mejora sustancial a una función del dispositivo 400 de codificación de video, y afecta la transformación del dispositivo 400 de codificación de video a un estado diferente. Alternativamente, el módulo 470 de codificación/decodificación es implementado como una instrucción que es almacenada en la memoria 460 y ejecutada por el procesador 430.
La memoria 460 incluye uno o más discos, unidades de cinta, y unidades en estado sólido, y puede ser utilizada como un dispositivo de almacenamiento de datos en exceso, para almacenar programas cuando dichos programas son seleccionados para ejecución, y almacenar una instrucción y datos que son leídos durante la ejecución del programa. La memoria 460 puede ser volátil y/o no volátil, y puede ser una memoria de solo lectura (ROM), una memoria de acceso aleatorio (RAM), una memoria de contenido direccionable ternaria (ternary content-addressable memory, TCAM), y/o una memoria de acceso aleatorio estática (SRAM).
La FIG. 5 es un diagrama de bloques simplificado de un aparato 500 que puede ser utilizado como cualquiera o ambos del dispositivo fuente 12 y del dispositivo destino 14 en la FIG. 1A según una realización ejemplar. El aparato 500 puede implementar las tecnologías de esta solicitud. En otras palabras, la FIG. 5 es un diagrama de bloques esquemático de una implementación de un dispositivo de codificación o un dispositivo de decodificación (denominado como un dispositivo 500 de codificación para abreviar) según una realización de esta solicitud. El dispositivo 500 de codificación puede incluir un procesador 510, una memoria 530, y un sistema 550 de bus. El procesador y la memoria están conectados a través del sistema de bus. La memoria está configurada para almacenar una instrucción. El procesador está configurado para realizar la instrucción almacenada en la memoria. La memoria del dispositivo de codificación almacena un código de programa. El procesador puede recurrir al código de programa almacenado en la memoria para realizar varios métodos de codificación o decodificación de imágenes de video, descritos en esta solicitud. Para evitar la repetición, los detalles no se describen en la presente memoria.
En esta realización de esta solicitud, el procesador 510 puede ser una unidad de procesamiento central (Central Processing Unit, "CPU" para abreviar). Alternativamente, el procesador 510 puede ser otro procesador de propósito general, un procesador de señal digital (DSP), un circuito integrado de aplicación específica (ASIC), una agrupación de puertas programable en campo (FPGA) u otro dispositivo lógico programable, una puerta discreta o dispositivo lógico de transistor, un componente de hardware discreto, o similar. El procesador de propósito general puede ser un microprocesador, cualquier procesador convencional, o similar.
La memoria 530 puede incluir un dispositivo de memoria de solo lectura (ROM) o un dispositivo de memoria de acceso aleatorio (RAM). Cualquier otro tipo conveniente de dispositivo de almacenamiento alternativamente puede ser utilizado como la memoria 530. La memoria 530 puede incluir un código y datos 531 a los que se tiene acceso a través del procesador 510 mediante el bus 550. La memoria 530 además puede incluir un sistema operativo 533 y un programa 535 de aplicación. El programa 535 de aplicación incluye al menos un programa que permite al procesador 510 realizar un método de codificación o decodificación de video descrito en esta solicitud (especialmente un método de codificación o decodificación de imagen de video descrito en esta solicitud). Por ejemplo, los programas 535 de aplicación pueden incluir las aplicaciones 1 a N. Las aplicaciones además incluyen una aplicación de codificación o decodificación de video (denominada como una aplicación de codificación de video para abreviar) que realiza el método de codificación o decodificación de video descrito en esta solicitud.
El sistema 550 de bus puede no solamente incluir un bus de datos, sino también incluir un bus de potencia, un bus de control, un bus de señal de estado, y similar. Sin embargo, para una descripción clara, varios tipos de buses en la FIG. son marcados como el sistema 550 de bus.
Opcionalmente, el dispositivo 500 de codificación además puede incluir uno o más dispositivos de salida, por ejemplo, un dispositivo 570 de visualización. En un ejemplo, el dispositivo 570 de visualización puede ser un dispositivo de visualización sensible al tacto que combina un dispositivo de visualización y una unidad sensible al tacto que es operable para detectar una entrada táctil. El dispositivo 570 de visualización se puede conectar al procesador 510 a través del bus 550.
Lo siguiente describe tecnologías relacionadas utilizadas para inter-predicción en esta solicitud.
(1) Modo de fusión (merge)
En el modo de fusión, una lista de vectores de movimiento candidatos es construida en primer lugar basada en información de movimiento de bloques codificados espacial o temporalmente contiguos de un bloque actual. Luego, información de movimiento candidata correspondiente a un coste de distorsión de tasa mínimo en la lista de vectores de movimiento candidatos es utilizada como un predictor de vector de movimiento (motion vector predictor, MVP) del bloque actual, y un valor de índice (por ejemplo, denominado como índice de fusión en lo sucesivo) de una ubicación de la información de movimiento candidata óptima en la lista de vectores de movimiento candidatos es transferido a un lado del decodificador. Se predefinen las ubicaciones y un orden transversal de los bloques contiguo. Un coste de distorsión de tasa e calcula según la Fórmula (1), donde J representa el coste RD de coste de distorsión de tasa, SAD es una suma de diferencias absolutas (sum of absolute differences, SAD) entre un valor de pixel original y un valor de pixel predicho obtenido a través de la estimación de movimiento utilizando un predictor de vector de movimiento candidato, R representa una tasa de bits, yXrepresenta un multiplicador de Lagrange. Un lado del codificador transfiere un valor de índice del predictor de vector de movimiento seleccionado en la lista de vectores de movimiento candidatos al lado del decodificador. Además, se realiza una búsqueda de movimiento en una inmediación centrada en el MVP, para obtener un vector de movimiento real del bloque actual. El lado del codificador transfiere una diferencia (diferencia de vector de movimiento) (en particular, un residuo) entre el MVP y el vector de movimiento real al lado del decodificador.
J = SADXR<(>1<)>La FIG. 6 muestra información de movimiento candidata espacial y temporal del bloque actual. La información de movimiento candidata espacial es procedente de cinco bloques espacialmente contiguos (Ac, A<1>, B<0>, B<1>, y B<2>), como se muestra en la FIG. 6. Si un bloque contiguo no está disponible (el bloque contiguo no existe, el bloque contiguo no está codificado, o un modo de predicción utilizado para el bloque contiguo es un modo de inter-predicción), la información de movimiento del bloque contiguo no es añadida a la lista de vectores de movimiento candidatos. La información de movimiento candidato temporal del bloque actual se obtiene escalando un MV de un bloque en una ubicación correspondiente en un fotograma de referencia basado en recuentos de orden de imagen (picture order count, POC) del fotograma de referencia y de un fotograma actual. Se determina en primer lugar si un bloque en una ubicación T en el fotograma de referencia está disponible. Si el bloque no está disponible, se selecciona un bloque en una ubicación C en el fotograma de referencia.
En el modo de fusión, las ubicaciones y el orden transversal de los bloques contiguos son predefinidos. Además, las ubicaciones y el orden transversal de los bloques contiguos pueden ser diferentes en diferentes modos.
Se puede aprender que se necesita mantener una lista de vectores de movimiento candidatos en el modo de fusión. Antes de que se añada nueva información de movimiento a la lista de candidatos cada vez, se verifica en primer lugar si la misma información de movimiento existe en la lista. Si la misma información de movimiento existe en la lista, la información de movimiento no se añade a la lista. Este proceso de verificación es denominado como recorte de la lista de vectores de movimiento candidatos. El recorte de la lista es para evitar la misma información de movimiento en la lista, para evitar el cálculo del coste de distorsión de tasa redundante.
(2) Modo de salto (skip)
El modo de salto es un modo de fusión especial. Una diferencia radica en que no hay un residuo durante la transmisión y solamente se transfiere un índice de candidato de fusión (merge index). El índice de fusión es utilizado para indicar la información de movimiento candidata mejor u objetivo en una lista de información de movimiento de candidatos de fusión.
(3) Modo de unidad de predicción triangular (triangle prediction unit, triangle PU)
Como se muestra en la FIG. 7, un bloque actual es dividido en dos unidades de predicción triangulares, y un vector de movimiento y un índice de fotograma de referencia son seleccionados a partir de una lista de candidatos de uni-predicción para cada unidad de predicción triangular. Luego, se obtiene un valor de predicción para cada una de las dos unidades de predicción triangulares, y se obtiene un predictor mediante la realización de ponderación adaptativa sobre un pixel incluido en una región diagonal o anti-diagonal. Luego, se realizan procesos de transformada y cuantificación sobre todo el bloque actual. Además, se debe observar que el modo de unidad de predicción triangular generalmente es aplicado solo en un modo de salto o un modo de fusión. La FIG. 7(1) muestra un modo de división superior-izquierda a inferior-derecha (es decir, división desde la esquina superior-izquierda a la esquina inferior-derecha), y la FIG. 7(2) muestra un modo de división superior-derecha a inferior-izquierda (es decir, división desde la esquina superior-derecha a la esquina inferior-izquierda).
Generalmente, la lista de candidatos de uni-predicción en el modo de unidad de predicción triangular puede incluir cinco vectores de movimiento predichos candidatos. Estos vectores de movimiento predichos candidatos se obtienen, por ejemplo, utilizando siete bloques contiguos (cinco bloques contiguos espaciales y dos bloques correspondientes temporales) en la FIG. 6. Se busca información de movimiento de los siete bloques contiguos, y los siete bloques vecinos son colocados en la lista de candidatos de uni-predicción en orden. Por ejemplo, el orden puede ser un vector de movimiento de bi-predicción en L0, un vector de movimiento de bi-predicción en L1, y un promedio de vectores de movimiento en L0 y L1. Si hay menos de cinco candidatos, se añade un vector de movimiento cero 0 a la lista de candidatos de uni-predicción. Durante la codificación, la lista de candidatos de uni-predicción se obtiene de la manera anterior. Por ejemplo, en la lista de candidatos de uni-predicción, se utiliza información de movimiento de predicción de avance para predecir un predictor de pixel de una PU triangular, y se utiliza información de movimiento de predicción hacia atrás para predecir un predictor de pixel de la otra Pu triangular. Un lado del codificador selecciona un mejor vector de movimiento mediante transversal. Por ejemplo, se puede utilizar la siguiente manera {m, i, j}:
{0, 1, 0}, {1, 0, 1}, {1, 0, 2}, {0, 0, 1}, {0, 2, 0}
{1, 0, 3}, {1, 0, 4}, {1, 1, 0}, {0, 3, 0}, {0, 4, 0}
{0, 0, 2}, {0, 1, 2}, {1, 1, 2}, {0, 0, 4}, {0, 0, 3}
{0, 1, 3}, {0, 1, 4},{1,1, 4},{1,1, 3},{1,2, 1}
{1,2, 0}, {0, 2,1},{0, 4, 3},{1,3, 0},{1,3, 2}
{1,3, 4},{1,4, 0},{1,3,1}, {1,2, 3},{1,4, 1}
{0, 4,1},{0, 2, 3},{1,4, 2}, {0, 3, 2},{1,4, 3}
{0, 3, 1}, {0, 2, 4}, {1, 2, 4}, {0, 4, 2}, {0, 3, 4}
donde en {m, i, j}, m en la primera ubicación representa el modo de división superior-izquierda a inferiorderecha o el modo de división superior-derecha a inferior-izquierda, i en la segunda ubicación representa información de movimiento de avance de un iésimo vector de movimiento predicho candidato utilizado para la primera PU triangular, y j en la tercera ubicación representa información de movimiento hacia atrás de un jésim° vector de movimiento predicho candidato utilizado por la segunda PU triangular.
Para un proceso de ponderación adaptativo realizado basándose en el predictor del pixel incluido en la región diagonal o anti-diagonal, se hace referencia a la FIG. 8. Después que se haya completado la predicción de las unidades de predicción triangulares Pi y P<2>, el proceso de ponderación adaptativo es realizado sobre el pixel incluido en la región diagonal o anti-diagonal, para obtener un predictor final del bloque actual. Por ejemplo, un predictor de un pixel en una ubicación de 2 en la FIG. izquierda en la FIG. 8, es ^ xP1 ^ xP2. P1 representa un predictor de un pixel en una región superior-derecha en la FIG. 8, yP2representa un predictor de un pixel en la región inferior-izquierda en la FIG. 8.
Dos conjuntos de parámetros ponderados son como sigue:
Primeros conjuntos de parámetros ponderados, {7/8, 6/8, 4/8, 2/8, 1/8} y {7/8, 4/8, 1/8}, se utilizan para puntos de luma y croma, respectivamente.
Segundos conjuntos de parámetros ponderados, {7/8, 6/8, 5/8, 4/8, 3/8, 2/8, 1/8} y {6/8, 4/8, 2/8}, se utilizan para puntos de luma y croma, respectivamente.
Un conjunto de parámetros ponderados se utiliza para codificar el bloque actual. Cuando imágenes de referencia de las dos unidades de predicción son diferentes o una diferencia de vector de movimiento entre las dos unidades de predicción es mayor de 16 pixeles, se seleccionan los segundos conjuntos de parámetros ponderados; de otra manera, se utilizan los primeros conjuntos de parámetros ponderados. (4) Modo de fusión con diferencia de vector de movimiento (merge mode with motion vector difference, MMVD)
Se utiliza un candidato de fusión en la MMVD. Se seleccionan uno o más vectores de movimiento candidatos de entre una lista de vectores de movimiento de candidatos de fusión, y luego se realiza la expresión de extensión de vector de movimiento (MV) con base en el vector de movimiento candidato. La expresión de la extensión MV incluye un punto de inicio de un MV, un tamaño de etapa de movimiento, y una dirección de movimiento.
Se utiliza una lista de vectores de movimiento candidatos de fusión existente, y un vector de movimiento candidato seleccionado es de un tipo de fusión por defecto (por ejemplo, MRG_TYPE_DEFAULT_N). El vector de movimiento candidato seleccionado es un punto de inicio de un MV. En otras palabras, se utiliza el vector de movimiento candidato seleccionado para determinar una ubicación inicial del M<v>. Como se muestra en la Tabla 1, un índice de candidato base (Base candidate IDX) indica qué vector de movimiento candidato es seleccionado a partir de la lista de vectores de movimiento candidatos como un vector de movimiento candidato óptimo.
Tabla 1
Si la lista de vectores de movimiento candidatos de fusión incluye un vector de movimiento candidato para selección, el IDX de candidato base no puede ser determinado.
Un índice de distancia (Distance IDX) representa información de distancia de desplazamiento del vector de movimiento. Un valor del índice de distancia representa un desplazamiento de distancia (por ejemplo, una distancia preestablecida) desde la ubicación inicial. Una definición de la distancia preestablecida se muestra en la Tabla 2.
Tabla 2
Un índice de dirección (Direction IDX) representa una dirección de una diferencia de vector de movimiento (MVD) con base en la ubicación inicial. El índice de dirección puede incluir cuatro casos en total. Una definición específica se muestra en la Tabla 3.
Tabla 3
Un proceso de determinación de un valor de pixel predicho para un bloque de imagen actual utilizando la MMVD incluye: En primer lugar, se determina un punto de inicio de un Mv con base en un IDX candidato base. Por ejemplo, el punto de inicio es un punto hueco en el centro en la FIG. 9A o una ubicación correspondiente a una línea continua en la FIG. 9B. Luego, se determina una dirección de desplazamiento basada en el punto de inicio del MV con base en un IDX de dirección, y use determina una cantidad específica de elementos de pixel que son desplazados en una dirección indicada por el IDX de dirección con base en el IDX de distancia. Por ejemplo, IDX de dirección == 00 e IDX de distancia = 2 indican que un vector de movimiento que está desplazado por un elemento de pixel en una dirección x es utilizado como un vector de movimiento del bloque de imagen actual, para predecir u obtener el valor de pixel predicho del bloque de imagen actual.
La codificación de un indicador de MMVD es realizada después de la de los indicadores de salto y fusión. Si el indicador de salto o fusión es verdadero, el indicador de MMVD necesita ser codificado. Por ejemplo, si el indicador de salto o fusión es 1, y el indicador de MMVD es 1, se necesita codificar otro indicador relacionado correspondiente a la MMVD.
(5) Inter e intra-predicción combinadas
La inter e intra-predicción combinadas (combined inter-picture merge and intra-picture prediction, CIIP) combina intra-predicción y predicción de fusión. Cuando se permite que un modo de fusión sea utilizado para inter-predicción de un bloque de imagen actual, se introduce un bit de indicador. Cuando el bit de indicador es 1, esto indica que un intra modo es seleccionado de entre una lista de intra-candidatos. Para un componente de luma, un candidato en la lista de intra-candidatos es a partir de cuatro modos de intra-predicción: un modo actual directo (modo DC), un modo plano (PLANO), un modo de predicción horizontal, y un modo de predicción vertical. Basado en un tamaño del bloque de imagen actual, una longitud de la lista de intracandidatos puede ser establecida en 3 o 4. Cuando la anchura del bloque de imagen actual es mayor que dos veces la altura, el modo de predicción horizontal es excluido de la lista de intra-candidatos. Cuando la altura del bloque de imagen actual es mayor que dos veces la anchura, el modo de predicción vertical es excluido de la lista de intra-candidatos. Un modo de intra-predicción es seleccionado a partir de la lista de intra-candidatos basado en un índice de intra-modo, se realiza intra-predicción en el bloque actual utilizando el modo de intra-predicción seleccionado para obtener un bloque de intra-predicción del bloque actual, se realiza inter-predicción en el bloque actual basado en información de movimiento candidata que se determina a partir de una lista de información de movimiento candidata basado en un índice de fusión, para obtener un bloque de inter-predicción del bloque actual, y se realiza el promediado ponderado sobre el bloque de intrapredicción y el bloque de inter-predicción para obtener un bloque de predicción del bloque actual en el modo de inter e intra-predicción combinadas.
Además, debería observarse que en esta solicitud, "al menos uno" significa uno o más, y "una pluralidad de" significa dos o más de dos. El término "y/o" describe una relación de asociación para describir objetos y representa que pueden existir tres relaciones. Por ejemplo, A y/o B puede representar los siguientes casos: Solamente existe A, existen tanto A como B, y solamente existe B, donde A y B pueden ser singular o plural. El carácter T generalmente representa una relación "o" entre los objetos asociados. "Al menos un elemento (pieza) de los siguientes" o una expresión similar de la misma significa cualquier combinación de estos elementos, incluyendo un elemento singular (pieza) o cualquier combinación de varios elementos (piezas). Por ejemplo, al menos un elemento (pieza) de a, b, o c puede representar: a, b, c, a-b, a-c, b-c, o a-b-c, donde a, b, y c pueden ser singular o plural.
Actualmente, una MMVD y un modo de PU triangular son introducidos en inter-predicción. Durante la codificación, si se determina que un modo de inter-predicción utilizado para un bloque actual es un modo de fusión o de salto, tanto un indicador MMVD como un indicador de PU triangular necesitan ser codificados. En realidad, cuando se utiliza una MMVD, no se utiliza un modo de PU triangular. En otras palabras, no existe un caso en el cual tanto un bit de indicador MMVD como un bit de indicador de PU triangular son verdaderos. En este caso, si tanto el bit de indicador MMVD como el bit de indicador de PU triangular son codificados, ocurre redundancia. Esto da como resultado un desperdicio de recursos de codificación, e incrementa las sobrecargas de bit de una corriente de bits.
Basado en esto, las realizaciones de esta solicitud proporcionan un método de decodificación y de codificación de imagen de video y un aparato de de codificación y de codificación de imagen de video. Cuando se determina que se ha utilizado un modo de fusión o de salto, si se determine mediante decodificación que un indicador de MMVD es verdadero, no puede ser codificado un indicador de PU triangular. El indicador de PU triangular es codificado únicamente cuando se determina mediante decodificación que el indicador de MMVD es falso. Esto puede reducir, en cierta medida, una cantidad de recursos de codificación utilizados, y puede reducir las sobrecargas de bit de una corriente de bits. El método y el aparato están basados en un mismo concepto inventivo. Debido a que un principio de resolución de problemas del método es similar al del aparato, implementaciones del aparato y del método se pueden referir mutuamente entre sí, y no se proporciona una descripción repetida.
Hay dos casos para el método de decodificación y de codificación de imagen de video proporcionado en las realizaciones de esta solicitud. En un primer caso, se utiliza un modo de salto para inter-predicción. En un segundo caso, se utiliza un modo de fusión para inter-predicción.
Lo siguiente describe en detalle, desde una perspectiva de un lado del decodificador con referencia a los dibujos adjuntos, un método de decodificación de imágenes de video proporcionado en esta solicitud. Específicamente, el método de decodificación de imágenes de video puede ser realizado por el decodificador 30, o puede ser ejecutado por la unidad de decodificación entrópica y la unidad de procesamiento de predicción en el decodificador, o puede ser realizado por un procesador.
Un método de decodificación de imágenes de video en el primer caso se describe desde una perspectiva de decodificación, como se muestra en la FIG. 10A.
S1001a: Analizar un primer indicador a partir de una corriente de bits.
El primer indicador es utilizado para indicar si se ha utilizado un modo de salto para inter-predicción de un bloque actual de imágenes que han de ser procesadas. En otras palabras, el primer indicador es utilizado para indicar si se permite que sea utilizado un modo de salto para inter-predicción de un bloque actual de imágenes que han de ser procesadas. Por ejemplo, en un texto o código estándar, el primer indicador puede estar representado por un elemento de sintaxis cu_skip_flag[x0][y0]. Por ejemplo, cuando cu_skip_flag[x0][y0] == 1, esto indica que el modo de salto es utilizado para inter-predicción del bloque actual de imágenes que han de ser procesadas. Por ejemplo, se permite que el modo de salto sea utilizado. Cuando cu_skip_flag[x0][y0] == 0, esto indica que el modo de salto no es utilizado para inter-predicción del bloque actual de imágenes que han de ser procesadas. Por ejemplo, no se permite que el modo de salto sea utilizado.
S1002a: Analizar un segundo indicador a partir de la corriente de bits cuando el primer indicador indica que el modo de salto es utilizado para inter-predicción de un bloque actual de imágenes que han de ser procesadas. El segundo indicador es utilizado para indicar si una MMVD en el modo de salto es utilizada para inter predicción del bloque actual de imágenes que han de ser procesadas. En otras palabras, el segundo indicador es utilizado para indicar si se permite que una MMVD sea utilizada para inter-predicción del bloque actual de imágenes que han de ser procesadas. Por ejemplo, en un texto o código estándar, el segundo indicador puede ser representado por un elemento de sintaxis skip_mmvd_flag[x0][y0] o mmvd_flag[x0][y0]. mmvd_flag[x0][y0] se utiliza como un ejemplo. Cuando mmvd_flag[x0][y0] == 1, esto indica que se permite que la MMVd sea utilizada para inter-predicción del bloque actual de imágenes que han de ser procesadas. Cuando mmvd_flag[x0][y0] == 0, esto indica que no se permite que la MMVD sea utilizada para inter predicción del bloque actual de imágenes que han de ser procesadas.
S1003a: Analizar un tercer indicador a partir de la corriente de bits cuando el segundo indicador indica que la MMVD no es utilizada para inter-predicción del bloque actual de imágenes que han de ser procesadas. El tercer indicador es utilizado para indicar si se utiliza un modo de PU triangular para inter-predicción del bloque actual de imágenes que han de ser procesadas. En otras palabras, el tercer indicador es utilizado para indicar si se permite que un modo de PU triangular sea utilizado para inter-predicción del bloque actual de imágenes que han de ser procesadas.
Cuando el tercer indicador es un primer valor, esto indica que el modo de PU triangular es utilizado para inter predicción del bloque actual de imágenes que han de ser procesadas; o cuando el tercer indicador es un segundo valor, esto indica que el modo de PU triangular no es utilizado para inter-predicción del bloque actual de imágenes que han de ser procesadas. Por ejemplo, el primer valor es 1, y el segundo valor es 0. Para otro ejemplo, el primer valor es 0, y el segundo valor es 1. (Por ejemplo, se puede entender que, cuando el primer valor es 0, se puede reutilizar un indicador existente. Por ejemplo, el tercer indicador puede ser representado por ciip_flag; y cuando ciip_flag = 0, esto indica que CIIP no es utilizado, y por lo tanto implícitamente indica que se permite que otro modo tal como el modo de PU triangular sea utilizado para inter-predicción del bloque actual de imágenes que han der ser procesadas.)
Por ejemplo, en un texto o código estándar, el tercer indicador puede ser representado por un elemento de sintaxis skip_triangle_flag[x0][y0], triangle_flag[x0][y0], o merge_triangle_flag[x0][y0]. skip_triangle_flag[x0][y0] es utilizado como un ejemplo. Cuando skip_triangle_flag[x0][y0] == 1, esto indica que se permite que el modo de PU triangular sea utilizado para inter-predicción del bloque actual de imágenes que han de ser procesadas. Cuando skip_triangle_flag[x0][y0] == 0, esto indica que no se permite que el modo de PU triangular sea utilizado para inter-predicción del bloque actual de imágenes que han de ser procesadas.
S1004a: Realizar inter-predicción en el bloque actual de imágenes que han de ser procesadas utilizando un modo de inter-predicción indicado por información de indicador en la corriente de bits, donde la información de indicador incluye uno o más del primer indicador, del segundo indicador, y del tercer indicador.
Cuando el tercer indicador indica que el modo de unidad de predicción triangular es utilizado para inter predicción del bloque actual de imágenes que han de ser procesadas, se ejecuta inter-predicción en el bloque actual de imágenes que han de ser procesadas utilizando el modo de unidad de predicción triangular. Alternativamente, cuando el tercer indicador indica que el modo de unidad de predicción triangular no es utilizado para inter-predicción del bloque actual de imágenes que han de ser procesadas, se realiza inter predicción en el bloque actual de imágenes que han de ser procesadas utilizando el modo de salto.
Debería entenderse que, cuando el primer indicador es decodificado como verdadero, por ejemplo, cu_skip_flag[x0][y0] = 1, en otras palabras, cuando el modo de salto puede ser utilizado para inter-predicción del bloque actual de imágenes que han de ser procesadas, se realiza una operación de decodificación del segundo indicador, y la MMVD es aplicada en el modo de salto. Por lo tanto, el segundo indicador es utilizado para indicar si la MMVD es utilizada para inter-predicción de la imagen actual que ha de ser procesada. En otras palabras, el segundo indicador es utilizado para indicar si la MMVD en el modo de salto es utilizada para inter-predicción de la imagen actual que ha de ser procesada. De manera similar, el tercer indicador es utilizado para indicar si el modo de PU triangular es utilizado para inter-predicción de la imagen actual que ha de ser procesada. En otras palabras, el tercer indicador es utilizado para indicar si el modo de PU triangular en el modo de salto es utilizado para inter-predicción de la imagen actual que ha de ser procesada.
S1005a: Cuando el segundo indicador indica que la MMVD es utilizada para inter-predicción del bloque actual de imágenes que han de ser procesadas, realizar inter-predicción en el bloque actual de imágenes que han de ser procesadas utilizando la MMVD.
En un ejemplo, cuando se determina e indica que el modo de PU triangular en el modo de salto no es utilizado para inter-predicción del bloque actual de imágenes que han de ser procesadas, se puede determinar que el modo de salto es utilizado para inter-predicción. Ciertamente se puede analizar otro modo en el modo de salto. En este caso, el otro modo en el modo de salto puede ser utilizado alternativamente para inter-predicción del bloque actual de imágenes que han de ser procesadas.
En un posible ejemplo, cuando el tercer indicador ha de ser analizado a partir de la corriente de bits, y cuando se determina que el bloque actual de imágenes que han de ser procesadas satisface una condición en la que se permite que el modo de PU triangular sea utilizado para inter-predicción, el tercer indicador es analizado a partir de la corriente de bits. En otras palabras, cuando el segundo indicador indica que la MMVD no es utilizada para inter-predicción del bloque actual de imágenes que han de ser procesadas, y cuando el bloque actual de imágenes que han de ser procesadas satisface una condición en la que se permite que el modo de PU triangular sea utilizado para inter-predicción, el tercer indicador es analizado a partir de la corriente de bits.
La condición puede incluir al menos uno de los siguientes:
(1) un bit de control de PU triangular es verdadero (por ejemplo, sps_triangle_enabled_flag es verdadero); (2) un fotograma de video que incluye el bloque actual de imágenes que han de ser procesadas es un fotograma B (slice_type == B);
(3) una anchura multiplicada por la altura del bloque actual de imágenes que han de ser procesadas es mayor que o igual a 16; y
(4) no se permite que un modo afín sea utilizado para el bloque actual de imágenes que han de ser procesadas.
En un posible ejemplo, cuando el segundo indicador indica que la MMVD en el modo de salto es utilizada para inter-predicción del bloque actual de imágenes que han de ser procesadas, no se realiza una operación de decodificación del tercer indicador. En otras palabras, cuando el segundo indicador indica que la MMVD es utilizada para inter-predicción del bloque actual de imágenes que han de ser procesadas, directamente se puede determinar o inferir que el modo de PU triangular no es utilizado para inter-predicción del bloque actual de imágenes que han de ser procesadas. Además, cuando el segundo indicador indica que la MMVD es utilizada para inter-predicción del bloque actual de imágenes que han de ser procesadas, se realiza inter predicción en el bloque actual de imágenes que han de ser procesadas utilizando la MMVD en el modo de fusión. En otras palabras, cuando el segundo indicador indica que la MMVD es utilizada para inter-predicción del bloque actual de imágenes que han de ser procesadas, un indicador relacionado para el modo de PU triangular no es analizado, y directamente se realiza inter-predicción en el bloque actual de imágenes que han de ser procesadas utilizando la MMVD en el modo de salto.
Debería entenderse que, aunque si se satisface la condición de que se permita que el modo de unidad de predicción triangular sea utilizado para inter-predicción, se puede determinar antes si se utiliza el modo de unidad de predicción triangular para el bloque actual de imágenes, en realidad, si es utilizado el modo de unidad de predicción triangular para el bloque actual de imágenes basado en un valor de merge_triangle_flag. Si merge_triangle_flag es igual a 1, el modo de unidad de predicción triangular es utilizado para, o se permite, que sea utilizado para el bloque actual de imágenes; de otro modo, el modo de unidad de predicción triangular no es utilizado para, o no se le permite, que sea utilizado para el bloque actual de imágenes.
Lo siguiente proporciona un ejemplo de pseudocódigo en la realización correspondiente a la FIG. 10A: void CABACReader::triangle_mode(CodingUnit& cu)
{ RExt__DECODER_DEBUG_BIT_STATISTICS_CREATE_SET(STATS__CABAC_BITS__TRIANGLE_FL AG);
if(!cu.cs->slice->getSPSQ->getSpsNextQ.getUseTriangleO || !cu.cs->slice->isInterB() || cu.lwidth() * cu.lheight()
< TRIANGLE_MIN_SIZE || cu.affine)
{
return; }
#if JVET_L0054_MMVD
if (cu.firstPU->mergeFlag && (cu.firstPU->mmvdMergeFlag || cu.mmvdSkip))
{
return; }
#endif
unsigned flag_idx = DeriveCtx::CtxTriangleFlag(cu);
cu.triangle = m_BinDecoder.decodeBin(Ctx::TriangleFlag(flag_idx));
DTRACE(g_trace_ctx, D_SYNTAX, "triangle_mode() triangle_mode=%d pos=(%d,%d) size: %dx%d\n", cu.triangle, cu.Y().x, cu.Y().y, cu.lumaSize().width, cu.lumaSize().height); }
Lo que sigue proporciona descripciones detalladas desde una perspectiva de codificación. La FIG. 10B muestra un diagrama de flujo esquemático de un ejemplo de un método de codificación de imágenes de video.
S1001b: Determinar un modo de predicción utilizado para inter-predicción de un bloque actual de imágenes que han de ser procesadas.
Cuando se implementa S1001b, el modo de predicción utilizado para inter-predicción del bloque actual de imágenes que han de ser procesadas puede ser determinado a partir de uno o más modos de inter predicción para el bloque actual de imágenes que han de ser procesadas según un criterio de coste de distorsión de tasa en un proceso de determinación o selección de un modo de predicción apropiado para el bloque actual de imágenes que han de ser procesadas. Por ejemplo, un modo de predicción correspondiente a un coste de distorsión de tasa mínimo es seleccionado como el modo de predicción utilizado para inter predicción del bloque actual de imágenes que han de ser procesadas.
S1002b: Codificar, en una corriente de bits, información de indicador utilizada para indicar el modo de predicción determinado, donde la información de indicador incluye un primer indicador; la información de indicador además incluye un segundo indicador cuando el primer indicador indica que un modo de salto es utilizado para inter-predicción del bloque actual de imágenes que han de ser procesadas; y la información de indicador además incluye un tercer indicador cuando el segundo indicador indica que un modo de fusión con diferencia de vector de movimiento MMVD no es utilizado para inter-predicción del bloque actual de imágenes que han de ser procesadas.
Cuando el tercer indicador es un primer valor, esto indica que una unidad de predicción triangular es utilizada para inter-predicción del bloque actual de imágenes que han de ser procesadas; o cuando el tercer indicador es un segundo valor, esto indica que un modo de unidad de predicción triangular no es utilizado para inter predicción del bloque actual de imágenes que han de ser procesadas.
Para descripciones del primer indicador, del segundo indicador, y del tercer indicador, se hace referencia a descripciones en el lado de decodificación. Los detalles no se describen en la presente memoria nuevamente.
En una posible implementación, cuando están siendo codificados en la corriente de bits, los indicadores pueden ser codificados uno por uno, y se determina si un indicador posterior es codificado en la corriente de bits basándose en un valor de un indicador previo.
En un ejemplo, B1: Codificar el primer indicador en la corriente de bits.
B2: Codificar el segundo indicador en la corriente de bits cuando el primer indicador indica que el modo de fusión es utilizado para inter-predicción del bloque actual de imágenes que han de ser procesadas.
B3: Codificar el tercer indicador en la corriente de bits cuando el segundo indicador indica que el modo de fusión con diferencia de vector de movimiento MMVD no es utilizado para inter-predicción del bloque actual de imágenes que han de ser procesadas.
Cuando el tercer indicador es el primer valor, esto indica que el modo de unidad de predicción triangular es utilizado para inter-predicción del bloque actual de imágenes que han de ser procesadas; o cuando el tercer indicador es el segundo valor, esto indica que el modo de unidad de predicción triangular no es utilizado para inter-predicción del bloque actual de imágenes que han de ser procesadas.
En otra posible implementación, primero se pueden determinar valores de los indicadores, y luego se determina qué indicador necesita ser codificado en la corriente de bits basándose en los valores.
Por ejemplo, C1: Determinar un valor del primer indicador, un valor del segundo indicador, y un valor del tercer indicador, y realizar C21, C22, o C23.
C21: Codificar el primer indicador, el segundo indicador, y el tercer indicador en la corriente de bits, donde el valor del primer indicador es utilizado para indicar que el modo de salto es utilizado para inter-predicción del bloque actual de imágenes que han de ser procesadas, el valor del segundo indicador es utilizado para indicar que el modo de fusión con diferencia de vector de movimiento MMVD no es utilizado para inter predicción del bloque de imágenes que han de ser procesadas, y el valor del tercer indicador es utilizado para indicar que el modo de unidad de predicción triangular es utilizado para inter-predicción del bloque de imágenes que han de ser procesadas.
C22: Codificar el primer indicador, el segundo indicador, y el tercer indicador en la corriente de bits, donde el valor del primer indicador es utilizado para indicar que el modo de salto es utilizado para inter-predicción del bloque actual de imágenes que han de ser procesadas, el valor del segundo indicador es utilizado para indicar que el modo de fusión con diferencia de vector de movimiento MMVD no es utilizado para inter predicción del bloque de imágenes que han de ser procesadas, y el valor del tercer indicador es utilizado para indicar que el modo de unidad de predicción triangular no es utilizado para inter-predicción del bloque de imágenes que han de ser procesadas.
C23: Codificar el primer indicador y el segundo indicador en la corriente de bits, donde el valor del primer indicador es utilizado para indicar que el modo de salto es utilizado para inter-predicción del bloque actual de imágenes que han de ser procesadas, y el valor del segundo indicador es utilizado para indicar que el modo de fusión con diferencia de vector de movimiento MMVD es utilizado para inter-predicción del bloque de imágenes que han de ser procesadas.
En una posible implementación, cuando la información de indicador incluye el segundo indicador (cuando la corriente de bits incluye el segundo indicador), en la corriente de bits, el segundo indicador está ubicado después del primer indicador; o cuando la información de indicador incluye el segundo indicador y el tercer indicador (cuando la corriente de bits incluye el tercer indicador), en la corriente de bits, el tercer indicador está ubicado después del segundo indicador, y el segundo indicador está ubicado después del primer indicador.
En una posible implementación, la información de indicador además incluye un cuarto indicador (en otras palabras, codificar el cuarto indicador en la corriente de bits) cuando el primer indicador indica que el modo de salto no es utilizado para inter-predicción del bloque actual de imágenes que han de ser procesadas; la información de indicador además incluye un quinto indicador (en otras palabras, codificar el quinto indicador en la corriente de bits) cuando el cuarto indicador indica que un modo de fusión es utilizado para inter-predicción del bloque actual de imágenes que han de ser procesadas; y
la información de indicador además incluye un sexto indicador (en otras palabras, codificar el sexto indicador en la corriente de bits) cuando el quinto indicador indica que un modo de fusión con diferencia de vector de movimiento MMVD no es utilizado para inter-predicción del bloque actual de imágenes que han de ser procesadas.
Cuando el sexto indicador es un tercer valor, esto indica que una unidad de predicción triangular es utilizada para inter-predicción del bloque actual de imágenes que han de ser procesadas; o cuando el sexto indicador es un cuarto valor, esto indica que un modo de unidad de predicción triangular no es utilizado para inter predicción del bloque actual de imágenes que han de ser procesadas.
En un posible diseño, el hecho de que la información de indicador además incluye un tercer indicador cuando el segundo indicador indica que una MMVD no es utilizada para inter-predicción del bloque actual de imágenes que han de ser procesadas, incluye:
la información de indicador incluye además el tercer indicador cuando el segundo indicador indica que la MMVD no es utilizada para inter-predicción del bloque actual de imágenes que han de ser procesadas y cuando el bloque actual de imágenes que han de ser procesadas satisface una condición en la que se permite que el modo de unidad de predicción triangular sea utilizado para inter-predicción.
Un método de decodificación de imágenes de video en el segundo caso es descrito desde una perspectiva de decodificación, como se muestra en la FIG. 11A.
S1101a: Analizar un cuarto indicador a partir de una corriente de bits.
El cuarto indicador es utilizado para indicar si un modo de fusión es utilizado para inter-predicción de una imagen actual que ha de ser procesada. En otras palabras, el cuarto indicador es utilizado para indicar si se permite que un modo de fusión sea utilizado para inter-predicción de una imagen actual que ha de ser procesada. Por ejemplo, en un texto o código estándar, el cuarto indicador puede ser representado por un elemento de sintaxis merge_flag[x0][y0]. Por ejemplo, cuando merge_flag[x0][y0] == 1, esto indica que se permite que el modo de fusión sea utilizado para inter-predicción de la imagen actual que ha de ser procesada; o cuando merge_flag[x0][y0] == 0, esto indica que no se permite que el modo de fusión sea utilizado para inter-predicción de la imagen actual que ha de ser procesada.
S1102a: Analizar un quinto indicador a partir de la corriente de bits cuando el cuarto indicador indica que el modo de fusión es utilizado para inter-predicción de un bloque actual de imágenes que han de ser procesadas.
El quinto indicador es utilizado para indicar si una MMVD en el modo de fusión es utilizada para inter predicción de la imagen actual que ha de ser procesada. En otras palabras, el quinto indicador es utilizado para indicar si se permite que una MMVD sea utilizada para inter-predicción de la imagen actual que ha de ser procesada. Por ejemplo, en un texto o código estándar, el quinto indicador puede ser representado por un elemento de sintaxis merge_mmvd_flag[x0][y0] o mmvd_flag[x0][y0]. Por ejemplo, cuando merge_mmvd_flag[x0][y0] == 1, esto indica que se permite que la MMVD sea utilizada para inter-predicción de la imagen actual que ha de ser procesada; o cuando merge_mmvd_flag[x0][y0] == 0, esto indica que no se permite que la MMVD sea utilizada para inter-predicción de la imagen actual que ha de ser procesada. S1103a: Analizar un sexto indicador a partir de la corriente de bits cuando el quinto indicador indica que la MMVD en el modo de fusión no es utilizada para inter-predicción del bloque actual de imágenes que han de ser procesadas.
El sexto indicador es utilizado para indicar si se permite que un modo de PU triangular sea utilizado para inter-predicción de la imagen actual que ha de ser procesada. En otras palabras, el sexto indicador es utilizado para indicar si se permite que un modo de P<u>triangular en el modo de fusión sea utilizado para inter-predicción de la imagen actual que ha de ser procesada.
Cuando el sexto indicador es un tercer valor, esto indica que se permite que el modo de PU triangular sea utilizado para inter-predicción del bloque actual de imágenes que han de ser procesadas; o cuando el sexto indicador es un cuarto valor, esto indica que no se permite que el modo de PU triangular sea utilizado para inter-predicción del bloque actual de imágenes que han de ser procesadas. Por ejemplo, el tercer valor es 1, y el cuarto valor es 0. Para otro ejemplo, el tercer valor es 0, y el cuarto valor es 1.
Por ejemplo, en un texto o código estándar, el sexto indicador puede ser representado por un elemento de sintaxis merge_triangle_flag[x0][y0] o triangle_flag[x0][y0]. Por ejemplo, cuando merge_triangle_flag[x0][y0] == 1, esto indica que se permite que el modo de PU triangular sea utilizado para inter-predicción de la imagen actual que ha de ser procesada; o cuando merge_triangle_flag[x0][y0] == 0, esto indica que no se permite que el modo de PU triangular sea utilizado para inter-predicción de la imagen actual que ha de ser procesada.
S1104a: Realizar inter-predicción sobre el bloque actual de imágenes que han de ser procesadas utilizando un modo de inter-predicción indicado por información de indicador en la corriente de bits, donde la información de indicador incluye uno o más del cuarto indicador, del quinto indicador, y del sexto indicador. Cuando el sexto indicador es el tercer valor, se realiza inter-predicción sobre el bloque actual de imágenes que han de ser procesadas utilizando el modo de unidad de predicción triangular.
Alternativamente, cuando el sexto indicador es el cuarto valor, se realiza inter-predicción sobre el bloque actual de imágenes que han de ser procesadas utilizando el modo de fusión.
S1105a: Cuando el quinto indicador indica que la MMVD es utilizada para inter-predicción del bloque actual de imágenes que han de ser procesadas, realizar inter-predicción en el bloque actual de imágenes que han de ser procesadas utilizando la MMVD.
En un ejemplo, cuando se determina que el modo de PU triangular en el modo de fusión no es utilizado para inter-predicción del bloque actual de imágenes que han de ser procesadas, se puede determinar que el modo de fusión es utilizado para inter-predicción. Ciertamente, otro modo en el modo de fusión puede ser analizado. En este caso, otro modo en el modo de fusión puede ser utilizado alternativamente para inter predicción del bloque actual de imágenes que han de ser procesadas.
En un posible ejemplo, cuando el sexto indicador ha de ser analizado a partir de la corriente de bits, y cuando se determina que el bloque actual de imágenes que han de ser procesadas satisface una condición en la que se permite que el modo de PU triangular sea utilizado para inter-predicción, el sexto indicador es analizado a partir de la corriente de bits. En otras palabras, cuando el quinto indicador indica que la MMVD no es utilizada para inter-predicción del bloque actual de imágenes que han de ser procesadas, y cuando el bloque actual de imágenes que han de ser procesadas satisface una condición en la que se permite que el modo de PU triangular sea utilizado para inter-predicción, el sexto indicador es analizado a partir de la corriente de bits. Para la condición, se hace referencia a descripciones relacionadas en la realización correspondiente a la FIG.
10A. Los detalles no se describen en la presente memoria nuevamente.
En un posible ejemplo, cuando el quinto indicador indica que la MMVD es utilizada para inter-predicción del bloque actual de imágenes que han de ser procesadas, no se realiza una operación de decodificación del sexto indicador. En otras palabras, cuando el quinto indicador indica que la MMVD es utilizada para inter predicción del bloque actual de imágenes que han de ser procesadas, directamente se puede determinar o inferir que el modo de PU triangular no es utilizado para inter-predicción del bloque actual de imágenes que han de ser procesadas. Además, cuando el quinto indicador indica que la MMVD es utilizada para inter predicción del bloque actual de imágenes han de ser procesadas, se realiza inter-predicción en el bloque actual de imágenes que han de ser procesadas utilizando la MMVD en el modo de fusión. En otras palabras, cuando el quinto indicador indica que la MMVD es utilizada para inter-predicción del bloque actual de imágenes que han de ser procesadas, un indicador relacionado para el modo de PU triangular no es analizado, y directamente se realiza inter-predicción en el bloque actual de imágenes que han de ser procesadas utilizando la MMVD en el modo de fusión.
Además, en una posible implementación, un primer indicador necesita ser decodificado antes que el cuarto indicador sea decodificado de la corriente de bits, y el cuarto indicador es decodificado de la corriente de bits solamente cuando el primer indicador indica que un modo de salto no es utilizado para inter-predicción del bloque actual de imágenes que han de ser procesadas. En otras palabras, se realiza un procedimiento de decodificación de imágenes de video mostrado en la FIG. 11A. Cuando el primer indicador indica que un modo de salto es utilizado para inter-predicción del bloque actual de imágenes que han de ser procesadas, no se realiza una operación de decodificación del cuarto indicador. En otras palabras, no se realiza un procedimiento de decodificación de imágenes de video mostrado en la FIG. 11A, pero sí se realiza un procedimiento de decodificación de imágenes de video mostrado en la FIG. 10A.
Debería entenderse que el modo de salto es uno de los modos de fusión. Por lo tanto, el segundo indicador y el quinto indicador en la presente memoria pueden ser nombrados de la misma manera. Por ejemplo, ambos son denominados como mmvd_flag[x0][y0] o merge_mmvd_flag[x0][y0]. De manera similar, el tercer indicador y el sexto indicador también pueden ser nombrados de una misma manera. Por ejemplo, ambos son denominados como merge_triangle_flag[x0][y0] o triangle_flag[x0][y0].
Debería entenderse que, cuando el cuarto indicador es decodificado como verdadero, por ejemplo, merge_flag[x0][y0] = 1, en otras palabras, cuando el modo de fusión puede ser utilizado para inter-predicción del bloque actual que ha de ser procesado, se realiza una operación de decodificación del quinto indicador, y la MMVD es aplicada en el modo de fusión. Por lo tanto, el quinto indicador es utilizado para indicar si la MMVD es utilizada para inter-predicción de la imagen actual que ha de ser procesada. En otras palabras, el quinto indicador es utilizado para indicar si la MMVD en el modo de fusión es utilizada para inter-predicción de la imagen actual que ha de ser procesada. De manera similar, el sexto indicador es utilizado para indicar si el modo de PU triangular es utilizado para inter-predicción de la imagen actual que ha de ser procesada. En otras palabras, el sexto indicador es utilizado para indicar si el modo de PU triangular en el modo de fusión es utilizado para inter-predicción de la imagen actual que ha de ser procesada.
Lo que sigue proporciona descripciones detalladas desde una perspectiva de codificación. La FIG. 11B muestra un diagrama de flujo esquemático de un ejemplo de un método de codificación de imágenes de video.
S1101b: Determinar un modo de predicción utilizado para inter-predicción de un bloque actual de imágenes que han de ser procesadas.
S1102b: Codificar, en una corriente de bits, información de indicador utilizada para indicar el modo de predicción determinado, donde la información de indicador incluye un cuarto indicador; la información de indicador además incluye un quinto indicador cuando el cuarto indicador indica que un modo de fusión es utilizado para inter-predicción del bloque actual de imágenes que han de ser procesadas; y la información de indicador además incluye un sexto indicador cuando el quinto indicador indica que un modo de fusión con diferencia de vector de movimiento MMVD no es utilizado para inter-predicción del bloque actual de imágenes que han de ser procesadas.
Cuando el sexto indicador es un tercer valor, esto indica que se permite que un modo de unidad de predicción triangular sea utilizado para inter-predicción del bloque actual de imágenes que han de ser procesadas; o cuando el sexto indicador es un cuarto valor, esto indica que no se permite que un modo de unidad de predicción triangular sea utilizado para inter-predicción del bloque actual de imágenes que han de ser procesadas.
Para descripciones del cuarto indicador, el quinto indicador, y el sexto indicador, se hace referencia a las descripciones en el lado de decodificación. Los detalles no se describen en la presente memoria nuevamente.
En una posible implementación, cuando están siendo codificados en la corriente de bits, los indicadores pueden ser codificados uno por uno, y si un indicador posterior es codificado en la corriente de bits puede ser determinado basándose en un valor de un indicador previo o basándose en un significado indicado por un indicador previo.
Por ejemplo, E1: Codificar el cuarto indicador en la corriente de bits.
E2: Codificar el quinto indicador en la corriente de bits cuando el cuarto indicador indica que el modo de fusión es utilizado para inter-predicción del bloque actual de imágenes que han de ser procesadas.
E3: Codificar el sexto indicador en la corriente de bits cuando el quinto indicador indica que la MMVD no es utilizada para inter-predicción del bloque actual de imágenes que han de ser procesadas.
Cuando el sexto indicador es el tercer valor, esto indica que se permite que el modo de unidad de predicción triangular sea utilizado para inter-predicción del bloque actual de imágenes que han de ser procesadas; o cuando el sexto indicador es el cuarto valor, esto indica que no se permite que el modo de unidad de predicción triangular sea utilizado para inter-predicción del bloque actual de imágenes que han de ser procesadas.
En otra posible implementación, en primer lugar se pueden determinar valores de los indicadores, y luego se determina qué indicador necesita ser codificado en la corriente de bits basándose en los valores.
Por ejemplo, F1: Determinar un valor del cuarto indicador, un valor del quinto indicador, y un valor del sexto indicador, y realizar F21, F22, o F23.
F21: Codificar el cuarto indicador, el quinto indicador, y el sexto indicador en la corriente de bits, donde el valor del cuarto indicador es utilizado para indicar que el modo de fusión es utilizado para inter-predicción del bloque actual de imágenes que han de ser procesadas, el valor del quinto indicador es utilizado para indicar que el modo de fusión con diferencia de vector de movimiento MMVD no es utilizado para inter-predicción del bloque de imágenes que han de ser procesadas, y el valor del sexto indicador es utilizado para indicar que el modo de unidad de predicción triangular es utilizado para inter-predicción del bloque de imágenes que han de ser procesadas.
F22: Codificar el cuarto indicador, el quinto indicador, y el sexto indicador en la corriente de bits, donde el valor del cuarto indicador es utilizado para indicar que el modo de fusión es utilizado para inter-predicción del bloque actual de imágenes que han de ser procesadas, el valor del quinto indicador es utilizado para indicar que la MMVD no es utilizada para inter-predicción del bloque de imágenes que han de ser procesadas, y el valor del sexto indicador es utilizado para indicar que el modo de unidad de predicción triangular no es utilizado para inter-predicción del bloque de imágenes que han de ser procesadas.
F23: Codificar el cuarto indicador y el quinto indicador en la corriente de bits, donde el valor del cuarto indicador es utilizado para indicar que el modo de fusión es utilizado para inter-predicción del bloque actual de imágenes que han de ser procesadas, y el valor del quinto indicador es utilizado para indicar que la MMVD es utilizada para inter-predicción del bloque de imágenes que han de ser procesadas.
En una posible implementación, cuando la información de indicador incluye el quinto indicador (cuando la corriente de bits incluye el quinto indicador), en la corriente de bits, el quinto indicador está ubicado después del cuarto indicador; o cuando la información de indicador incluye el quinto indicador y el sexto indicador (cuando la corriente de bits incluye el sexto indicador), en la corriente de bits, el sexto indicador está ubicado después del quinto indicador, y el quinto indicador está ubicado después del cuarto indicador.
En una posible implementación, el hecho de que la información de indicador además incluye un sexto indicador cuando el quinto indicador indica que una MMVD no es utilizada para inter-predicción del bloque actual de imágenes que han de ser procesadas incluye:
la información de indicador además incluye el sexto indicador cuando el quinto indicador indica que la MMVD no es utilizada para inter-predicción del bloque actual de imágenes que han de ser procesadas y cuando el bloque actual de imágenes que han de ser procesadas satisface una condición en la que se permite que el modo de unidad de predicción triangular sea utilizado para inter-predicción.
En una posible implementación, la información de indicador además incluye un primer indicador, donde el primer indicador indica que un modo de salto no es utilizado para inter-predicción del bloque actual de imágenes que han de ser procesadas.
En un posible diseño, en la corriente de bits, el primer indicador está ubicado antes que el cuarto indicador. Una realización de esta solicitud además proporciona un método de decodificación de imágenes de video, que incluye las siguientes etapas:
G1: Analizar un séptimo indicador (por ejemplo, mh_intra_flag[x0][y0]) de una corriente de bits.
G2: Analizar un octavo indicador (por ejemplo, merge_triangle_flag[x0][y0]) procedente de la corriente de bits cuando el séptimo indicador indica que inter e intra-predicción combinadas (es decir, inter-fusión/intrapredicción combinadas) no son utilizadas para un bloque actual de imágenes que han de ser procesadas. Cuando el octavo indicador es un primer valor, esto indica que una unidad de predicción triangular es utilizada para inter-predicción del bloque actual de imágenes que han de ser procesadas; o cuando el octavo indicador es un segundo valor, esto indica que un modo de unidad de predicción triangular no es utilizado para inter-predicción del bloque actual de imágenes que han de ser procesadas.
G3: Realizar inter-predicción en el bloque actual de imágenes que han de ser procesadas utilizando un modo de inter-predicción indicado por información de indicador en la corriente de bits, donde la información de indicador incluye uno o más del séptimo indicador y del octavo indicador.
Debería entenderse que no se excluye un caso en el cual otra información de indicador es analizada adicionalmente antes de que el octavo indicador sea analizado. Tampoco se excluye un caso en el cual otra condición necesita ser considerada para determinar si se analiza el octavo indicador. La otra condición en la presente memoria es, por ejemplo, sps_triangle_enabled_flag && slice_type (tipo de segmento) == B && cbWidth (anchura del bloque actual) * cbHeight (altura del bloque actual) >= 16. En un ejemplo, sps_triangle_enabled_flag indica si se permite que el modo de unidad de predicción triangular sea utilizado para una secuencia que incluye el bloque actual de imágenes que han de ser procesadas. En otro ejemplo, se permite que una condición que indica que el modo de unidad de predicción triangular sea utilizado para una imagen que incluye el bloque actual de imágenes que han de ser procesadas puede incluir: el séptimo indicador indica que la inter e intra-predicción combinadas no son utilizadas para el bloque actual de imágenes que han de ser procesadas, sps_triangle_enabled_flag && slice_type (tipo de segmento) == B && cbWidth (anchura del bloque actual) * cbHeight (altura del bloque actual) >= 16, y similar.
Una realización de esta solicitud además proporciona otro método de decodificación de imágenes de video, que incluye las siguientes etapas:
H1: Analizar un séptimo indicador (por ejemplo, mh_intra_flag[x0][y0]) procedente de una corriente de bits. H2: Analizar un octavo indicador (merge_triangle_flag[x0][y0]) procedente de la corriente de bits cuando el bloque actual de imágenes que han de ser procesadas satisface una condición en la que se permite que el modo de unidad de predicción triangular sea utilizado para inter-predicción, donde se permite que la condición de que el modo de unidad de predicción triangular sea utilizado para inter-predicción al menos incluye: el séptimo indicador indica que un modo de inter e intra-predicción combinadas no es utilizado para el bloque actual de imágenes que han de ser procesadas.
Cuando el octavo indicador es un primer valor, esto indica que el modo de unidad de predicción triangular es utilizado para inter-predicción del bloque actual de imágenes que han de ser procesadas; o cuando el octavo indicador es un segundo valor, esto indica que el modo de unidad de predicción triangular no es utilizado para inter-predicción del bloque actual de imágenes que han de ser procesadas.
H3: Realizar inter-predicción en el bloque actual de imágenes que han de ser procesadas utilizando un modo de inter-predicción indicado por información de indicador en la corriente de bits, donde la información de indicador incluye uno o más del séptimo indicador y del octavo indicador.
Por ejemplo, la condición de que se permite que el modo de unidad de predicción triangular sea utilizado para inter-predicción puede incluir: mh_intra_flag[x<0>][y<0>] (séptimo indicador) ==<0>&& sps_triangle_enabled_flag && slice_type == B && cbWidth * cbHeight >=<1 6>.
En un ejemplo, esta memoria descriptiva describe un ejemplo de algunas estructuras de sintaxis de un modo de inter-predicción utilizado para analizar un bloque de imagen actual, como se muestra en la Tabla 4.
Debería entenderse que, cuando el primer indicador (cu_skip_flag[x0][y0]) es decodificado como verdadero, el cuarto indicador (merge_flag[x<0>][y<0>]) es considerado como verdadero por defecto.
Tabla 4
Basado en un mismo concepto inventivo que el método anterior, como se muestra en la FIG. 12, una realización de esta solicitud además proporciona un aparato 1200 de decodificación de imágenes de video. El aparato<1 2 0 0>incluye una unidad<1 2 0 1>de decodificación entrópica y una unidad<1 2 0 2>de inter-predicción. En una posible implementación, la unidad 1201 de decodificación entrópica está configurada para analizar un primer indicador de una corriente de bits;
la unidad<1 2 0 1>de decodificación entrópica además está configurada para analizar un segundo indicador procedente de la corriente de bits cuando el primer indicador indica que un modo de salto es utilizado para inter-predicción de un bloque actual de imágenes que han de ser procesadas; y
la unidad<1 2 0 1>de decodificación entrópica además está configurada para analizar un tercer indicador procedente de la corriente de bits cuando el segundo indicador indica que un modo de fusión con diferencia de vector de movimiento MMVD no es utilizado para inter-predicción del bloque actual de imágenes que han de ser procesadas.
Cuando el tercer indicador es un primer valor, esto indica que una unidad de predicción triangular es utilizada para inter-predicción del bloque actual de imágenes que han de ser procesadas; o cuando el tercer indicador es un segundo valor, esto indica que un modo de unidad de predicción triangular no es utilizado para inter predicción del bloque actual de imágenes que han de ser procesadas.
La unidad 1202 de inter-predicción está configurada para realizar inter-predicción en el bloque actual de imágenes que han de ser procesadas utilizando un modo de inter-predicción indicado por información de indicador en la corriente de bits, donde la información de indicador incluye uno o más del primer indicador, el segundo indicador, y el tercer indicador.
Por ejemplo, la unidad 1202 de inter-predicción está específicamente configurada para:
cuando el tercer indicador indica que el modo de unidad de predicción triangular es utilizado para inter predicción del bloque actual de imágenes que han de ser procesadas, realizar inter-predicción en el bloque actual de imágenes que han de ser procesadas utilizando el modo de unidad de predicción triangular; o cuando el tercer indicador indica que el modo de unidad de predicción triangular no es utilizado para inter predicción del bloque actual de imágenes que han de ser procesadas, realizar inter-predicción en el bloque actual de imágenes que han de ser procesadas utilizando el modo de salto.
Por ejemplo, la unidad 1202 de inter-predicción está específicamente configurada para: cuando el segundo indicador indica que la MMVD es utilizada para inter-predicción del bloque actual de imágenes que han de ser procesadas, realizar inter-predicción en el bloque actual de imágenes que han de ser procesadas utilizando la MMVD.
Por ejemplo, la unidad 1201 de decodificación entrópica además está configurada para:
analizar un cuarto indicador procedente de la corriente de bits cuando el primer indicador indica que el modo de salto no es utilizado para inter-predicción del bloque actual de imágenes que han de ser procesadas; analizar un quinto indicador procedente de la corriente de bits cuando el cuarto indicador indica que un modo de fusión es utilizado para inter-predicción del bloque actual de imágenes que han de ser procesadas; y analizar un sexto indicador procedente de la corriente de bits cuando el quinto indicador indica que una MMVD no es utilizada para inter-predicción del bloque actual de imágenes que han de ser procesadas. Cuando el sexto indicador es un tercer valor, esto indica que un modo de unidad de predicción triangular es utilizado para inter-predicción del bloque actual de imágenes que han de ser procesadas; o cuando el sexto indicador es un cuarto valor, esto indica que un modo de unidad de predicción triangular no es utilizado para inter-predicción del bloque actual de imágenes que han de ser procesadas.
De manera correspondiente, la unidad 1202 de inter-predicción está configurada para realizar inter-predicción en el bloque actual de imágenes que han de ser procesadas utilizando un modo de inter-predicción indicado por información de indicador en la corriente de bits, donde la información de indicador incluye uno o más del primer indicador, del cuarto indicador, del quinto indicador, y del sexto indicador.
Por ejemplo, cuando se analiza el tercer indicador procedente de la corriente de bits, la unidad 1201 de decodificación entrópica está específicamente configurada para:
analizar el tercer indicador procedente de la corriente de bits cuando el bloque actual de imágenes que han de ser procesadas satisface una condición en la que se permite que el modo de unidad de predicción triangular sea utilizado para inter-predicción.
En un posible diseño, antes de analizar el tercer indicador procedente de la corriente de bits, la unidad 1201 de decodificación entrópica además está configurada para analizar un séptimo indicador procedente de la corriente de bits.
La condición de que se permita que el modo de unidad de predicción triangular sea utilizado para inter predicción incluye: El séptimo indicador indica que inter e intra-predicción combinadas no son utilizadas para el bloque actual de imágenes que han de ser procesadas.
De manera correspondiente, la información de indicador incluye uno o más del primer indicador, del segundo indicador, del tercer indicador, y del séptimo indicador.
En un posible diseño, antes de analizar el tercer indicador procedente de la corriente de bits, la unidad 1201 de decodificación entrópica además está configurada para analizar un séptimo indicador procedente de la corriente de bits.
En términos de analizar el tercer indicador procedente de la corriente de bits, la unidad de decodificación entrópica está específicamente configurada para: analizar el tercer indicador procedente de la corriente de bits cuando el séptimo indicador indica que la inter e intra-predicción combinadas no son utilizadas para el bloque actual de imágenes que han de ser procesadas.
De manera correspondiente, la información de indicador incluye uno o más del primer indicador, del segundo indicador, del tercer indicador, y del séptimo indicador.
En otra implementación posible, la unidad 1201 de decodificación entrópica está configurada para analizar un cuarto indicador procedente de una corriente de bits; y
la unidad<1 2 0 1>de decodificación entrópica además está configurada para: analizar un quinto indicador procedente de la corriente de bits cuando el cuarto indicador indica que un modo de fusión es utilizado para inter-predicción de un bloque actual de imágenes que han de ser procesadas; y analizar un sexto indicador procedente de la corriente de bits cuando el quinto indicador indica que un modo de fusión con diferencia de vector de movimiento MMVD no es utilizado para inter-predicción del bloque actual de imágenes que han de ser procesadas.
Cuando el sexto indicador es un tercer valor, esto indica que una unidad de predicción triangular es utilizada para inter-predicción del bloque actual de imágenes que han de ser procesadas; o cuando el sexto indicador es un cuarto valor, esto indica que un modo de unidad de predicción triangular no es utilizado para inter predicción del bloque actual de imágenes que han de ser procesadas.
La unidad 1202 de inter-predicción está configurada para realizar inter-predicción en el bloque actual de imágenes que han de ser procesadas utilizando un modo de inter-predicción indicado por información de indicador en la corriente de bits, donde la información de indicador incluye uno o más del cuarto indicador, del quinto indicador, y del sexto indicador.
Por ejemplo, la unidad 1202 de inter-predicción está específicamente configurada para: cuando el quinto indicador indica que la MMVD es utilizada para inter-predicción del bloque actual de imágenes que han de ser procesadas, realizar inter-predicción en el bloque actual de imágenes que han de ser procesadas utilizando la MMVD.
Por ejemplo, cuando se analiza el sexto indicador procedente de la corriente de bits, la unidad 1201 de decodificación entrópica está específicamente configurada para:
analizar el sexto indicador procedente de la corriente de bits cuando el bloque actual de imágenes que han de ser procesadas satisface una condición en la que se permite que el modo de unidad de predicción triangular sea utilizado para inter-predicción.
Por ejemplo, la unidad 1201 de decodificación entrópica además está configurada para analizar un primer indicador procedente de la corriente de bits.
Cuando se analiza el cuarto indicador procedente de la corriente de bits, la unidad 1201 de decodificación entrópica está específicamente configurada para:
analizar el cuarto indicador procedente de la corriente de bits cuando el primer indicador indica que un modo de salto no es utilizado para inter-predicción del bloque actual de imágenes que han de ser procesadas. En este caso, la información de indicador además puede incluir el primer indicador.
En otra posible implementación aún, la unidad 1201 de decodificación entrópica está configurada para: analizar un séptimo indicador de una corriente de bits; y analizar un octavo indicador procedente de la corriente de bits cuando el séptimo indicador indica que inter e intra-predicción combinadas no son utilizadas para un bloque actual de imágenes que han de ser procesadas, donde, cuando el octavo indicador es un primer valor, esto indica que una unidad de predicción triangular es utilizada para inter-predicción del bloque actual de imágenes que han de ser procesadas; o cuando el octavo indicador es un segundo valor, esto indica que un modo de unidad de predicción triangular no es utilizado para inter-predicción del bloque actual de imágenes que han de ser procesadas.
La unidad 1202 de inter-predicción está configurada para realizar inter-predicción en el bloque actual de imágenes que han de ser procesadas utilizando un modo de inter-predicción indicado por información de indicador en la corriente de bits, donde la información de indicador incluye uno o más del séptimo indicador y del octavo indicador.
En otra posible implementación aún, la unidad 1201 de decodificación entrópica está configurada para: analizar un séptimo indicador de una corriente de bits; y analizar un octavo indicador procedente de la corriente de bits cuando un bloque actual de imágenes que han de ser procesadas satisface una condición en la que se permite que un modo de unidad de predicción triangular sea utilizado para inter-predicción, donde la condición de que se permite que el modo de unidad de predicción triangular sea utilizado para inter predicción al menos incluye: el séptimo indicador indica que inter e intra-predicción combinadas no son utilizadas para el bloque actual de imágenes que han de ser procesadas.
Cuando el octavo indicador es un primer valor, esto indica que el modo de unidad de predicción triangular es utilizado para inter-predicción del bloque actual de imágenes que han de ser procesadas; o cuando el octavo indicador es un segundo valor, esto indica que el modo de unidad de predicción triangular no es utilizado para inter-predicción del bloque actual de imágenes que han de ser procesadas.
La unidad 1202 de inter-predicción está configurada para realizar inter-predicción en el bloque actual de imágenes que han de ser procesadas utilizando un modo de inter-predicción indicado por información de indicador en la corriente de bits, donde la información de indicador incluye uno o más del séptimo indicador y del octavo indicador.
Además se debe observar que, para procesos de implementación específicos de la unidad 1201 de decodificación entrópica y de la unidad<1 2 0 2>de inter-predicción, se puede hacer referencia a descripciones detalladas en la realización de la FIG. 10A o la FIG. 11A. Por brevedad en esta memoria descriptiva, los detalles no se describen en la presente memoria nuevamente.
Basado en un mismo concepto inventivo que el método anterior, como se muestra en la FIG. 13, una realización de esta solicitud además proporciona un aparato 1300 de codificación de imágenes de video. El aparato 1300 incluye una unidad 1301 de inter-predicción y una unidad 1302 de codificación entrópica.
En una posible implementación, la unidad 1301 de inter-predicción está configurada para determinar un modo de predicción utilizado para inter-predicción de un bloque actual de imágenes que han de ser procesadas; y la unidad 1302 de codificación entrópica está configurada para codificar, en una corriente de bits, información de indicador utilizada para indicar el modo de predicción determinado, donde
la información de indicador incluye un primer indicador;
la información de indicador además incluye un segundo indicador cuando el primer indicador indica que un modo de salto es utilizado para inter-predicción del bloque actual de imágenes que han de ser procesadas; y la información de indicador además incluye un tercer indicador cuando el segundo indicador indica que un modo de fusión con diferencia de vector de movimiento MMVD no es utilizado para inter-predicción del bloque actual de imágenes que han de ser procesadas.
Cuando el tercer indicador es un primer valor, esto indica que un modo de unidad de predicción triangular es utilizado para inter-predicción del bloque actual de imágenes que han de ser procesadas; o cuando el tercer indicador es un segundo valor, esto indica que un modo de unidad de predicción triangular no es utilizado para inter-predicción del bloque actual de imágenes que han de ser procesadas.
Por ejemplo, cuando la información de indicador incluye el segundo indicador, en la corriente de bits, el segundo indicador está ubicado después del primer indicador; o cuando la información de indicador además incluye el tercer indicador, en la corriente de bits, el tercer indicador está ubicado después del segundo indicador.
Por ejemplo, la información de indicador además incluye a cuarto indicador cuando el primer indicador indica que el modo de salto no es utilizado para inter-predicción del bloque actual de imágenes que han de ser procesadas;
la información de indicador además incluye un quinto indicador cuando el cuarto indicador indica que un modo de fusión es utilizado para inter-predicción del bloque actual de imágenes que han de ser procesadas; y
la información de indicador además incluye un sexto indicador cuando el quinto indicador indica que un modo de fusión con diferencia de vector de movimiento MMVD no es utilizado para inter-predicción del bloque actual de imágenes que han de ser procesadas.
Cuando el sexto indicador es un tercer valor, esto indica que un modo de unidad de predicción triangular es utilizado para inter-predicción del bloque actual de imágenes que han de ser procesadas; o cuando el sexto indicador es un cuarto valor, esto indica que un modo de unidad de predicción triangular no es utilizado para inter-predicción del bloque actual de imágenes que han de ser procesadas.
Por ejemplo, el hecho de que la información de indicador además incluye un tercer indicador cuando el segundo indicador indica que una MMVD no es utilizada para inter-predicción del bloque actual de imágenes que han de ser procesadas incluye:
la información de indicador además incluye el tercer indicador cuando el segundo indicador indica que la MMVD no es utilizada para inter-predicción del bloque actual de imágenes que han de ser procesadas y cuando el bloque actual de imágenes que han de ser procesadas satisface una condición en la que se permite que el modo de unidad de predicción triangular sea utilizado para inter-predicción.
En otra posible implementación, la unidad 1301 de inter-predicción está configurada para determinar un modo de predicción utilizado para inter-predicción de un bloque actual de imágenes que han de ser procesadas; y
la unidad 1302 de codificación entrópica está configurada para codificar, en una corriente de bits, información de indicador utilizada para indicar el modo de predicción determinado, donde
la información de indicador incluye un cuarto indicador;
la información de indicador además incluye un quinto indicador cuando el cuarto indicador indica que un modo de fusión es utilizado para inter-predicción del bloque actual de imágenes que han de ser procesadas; y
la información de indicador además incluye un sexto indicador cuando el quinto indicador indica que un modo de fusión con diferencia de vector de movimiento MMVD no es utilizado para inter-predicción del bloque actual de imágenes que han de ser procesadas.
Cuando el sexto indicador es un tercer valor, esto indica que un modo de unidad de predicción triangular es utilizado para inter-predicción del bloque actual de imágenes que han de ser procesadas; o cuando el sexto indicador es un cuarto valor, esto indica que un modo de unidad de predicción triangular no es utilizado para inter-predicción del bloque actual de imágenes que han de ser procesadas.
Por ejemplo, cuando la información de indicador incluye el quinto indicador, en la corriente de bits, el quinto indicador está ubicado después del cuarto indicador; o cuando la información de indicador incluye el quinto indicador y el sexto indicador, en la corriente de bits, el sexto indicador está ubicado después del quinto indicador, y el quinto indicador está ubicado después del cuarto indicador.
Por ejemplo, el hecho de que la información de indicador además incluye un sexto indicador cuando el quinto indicador indica que una MMVD no es utilizada para inter-predicción del bloque actual de imágenes que han de ser procesadas incluye:
la información de indicador además incluye el sexto indicador cuando el quinto indicador indica que la MMVD no es utilizada para inter-predicción del bloque actual de imágenes que han de ser procesadas y cuando el bloque actual de imágenes que han de ser procesadas satisface una condición en la que se permite que el modo de unidad de predicción triangular sea utilizado para inter-predicción.
Por ejemplo, la información de indicador además incluye un primer indicador, donde el primer indicador indica que un modo de salto no es utilizado para inter-predicción del bloque actual de imágenes que han de ser procesadas.
Por ejemplo, en la corriente de bits, el primer indicador está ubicado antes que el cuarto indicador.
Por ejemplo, en un lado del decodificador, en la FIG. 12, una ubicación del unidad 1201 de decodificación entrópica corresponde a una ubicación de la unidad 304 de decodificación entrópica en la FIG. 3. En otras palabras, para una implementación específica de una función de la unidad<1 2 0 1>de decodificación entrópica, hacer referencia a detalles específicos de la unidad de decodificación entrópica 304 en la FIG. 3. Una ubicación de la unidad 1202 de inter-predicción corresponde a una ubicación de la unidad 344 de inter predicción en la FIG. 3. En otras palabras, para una implementación específica de una función de la unidad 1202 de inter-predicción, se hace referencia a detalles específicos de la unidad 344 de inter-predicción en la FIG. 3.
Por ejemplo, en un lado del codificador, en la FIG. 13, una ubicación de la unidad 1302 de codificación entrópica corresponde a una ubicación de la unidad 270 de codificación entrópica en la FIG. 2. En otras palabras, para una implementación específica de una función de la unidad<1 2 0 1>de decodificación entrópica, se hace referencia a detalles específicos de la unidad 270 de codificación entrópica en la FIG. 2. Una ubicación de la unidad 1301 de inter-predicción corresponde a una ubicación de la unidad 244 de interpredicción en la FIG. 2. En otras palabras, para una implementación específica de una función de la unidad 1301 de inter-predicción, se hace referencia a detalles específicos de la unidad 244 de inter-predicción en la FIG. 2.
Además debería observarse que, para procesos de implementación específicos de la unidad 1301 de inter predicción y de la unidad 1302 de codificación entrópica, se puede hacer referencia a descripciones detalladas en la realización de la FIG. 10B o la FIG. 11B. Por brevedad en esta memoria descriptiva, los detalles no se describen en la presente memoria nuevamente.
Un experto en la técnica puede entender que, las funciones descritas con referencia a diversos bloques lógicos ilustrativos, módulos y etapas de algoritmo divulgados y descritos en esta memoria descriptiva pueden ser implementados por hardware, software, firmware, o cualquier combinación de los mismos. Si se implementan mediante software, las funciones descritas con referencia a los bloques lógicos ilustrativos, módulos y etapas pueden ser almacenadas en o transmitidos sobre un medio legible por ordenador y realizados por una unidad de procesamiento basada en hardware. El medio legible por ordenador puede incluir un medio de almacenamiento legible por ordenador, lo cual corresponde a un medio tangible tal como un medio de almacenamiento de datos, o puede incluir cualquier medio de comunicaciones que facilite la transmisión de un programa informático de un lugar a otro (por ejemplo, según un protocolo de comunicaciones). De esta manera, el medio legible por ordenador generalmente puede corresponder a (1) un medio de almacenamiento legible por ordenador tangible no-transitorio o (<2>) un medio de comunicaciones tal como una señal o una portadora. El medio de almacenamiento de datos puede ser cualquier medio que se puede utilizar al que se puede tener acceso a través de uno o más ordenadores o uno o más procesadores para recuperar instrucciones, código y/o estructuras de datos para implementar las tecnologías descritas en esta solicitud. Un producto de programa informático puede incluir un medio legible por ordenador.
A modo de ejemplo pero no de limitación, dicho medio de almacenamiento legible por ordenador puede incluir una RAM, una R<o>M, una EEPROM, un CD-ROM u otro aparato de almacenamiento en disco compacto, un aparato de almacenamiento en disco magnético, u otro almacenamiento en disco magnético, una memoria flash, o cualquier otro medio que puede ser utilizado para almacenar un código de programa deseado en una forma de una instrucción o una estructura de datos y a la que se puede tener acceso mediante un ordenador. Además, cualquier conexión puede ser denominada de manera apropiada como un medio legible por ordenador. Por ejemplo, si una instrucción es transmitida desde un sitio Web, un servidor, u otra fuente remota mediante un cable coaxial, una fibra óptica, un par trenzado, una línea de suscriptor digital (DSL), o tecnologías inalámbricas tales como infrarrojos, radio, o microondas, el cable coaxial, la fibra óptica, el par trenzado, la DSL, o la tecnología inalámbrica tales como infrarrojo, radio, o microondas son incluidas en la definición del medio. No obstante, debería entenderse que el medio de almacenamiento legible por ordenador y el medio de almacenamiento de datos no incluyen conexiones, portadoras, señales o algún otro medio transitorio, sino que realmente significan un medio de almacenamiento tangible no transitorio. Los discos utilizados en esta memoria descriptiva incluyen un disco compacto (CD), un disco láser, un disco óptico, un disco versátil digital (DVD), y un disco Blu-ray. El disco generalmente reproduce datos de forma magnética, y el disco óptico reproduce datos de manera óptica utilizando láseres. Combinaciones de los elementos anteriores también deberían incluirse dentro del alcance del medio legible por ordenador.
La instrucción puede ser ejecutada por uno o más procesadores, y uno o más procesadores son, por ejemplo, uno o más procesadores de señal digital (DSP), microprocesadores de propósito general, circuitos integrados de aplicación específica (ASIC), agrupaciones lógicas programables en campo (FPGA), u otros circuitos lógicos integrados o discretos equivalentes. Por lo tanto, el término "procesador" utilizado en esta memoria descriptiva puede representar cualquiera de las estructuras anteriores o cualquier otra estructura adecuada para implementar las tecnologías descritas en esta memoria descriptiva. Además, en algunos aspectos, las funciones descritas en esta memoria descriptiva pueden ser proporcionadas dentro de módulos de hardware y/o software dedicados configurados codificar y decodificar, o se pueden incorporar en un códec combinado. Además, las tecnologías pueden ser todas implementadas en uno o más circuitos o elementos lógicos.
Las tecnologías de esta solicitud pueden ser implementadas en una pluralidad de dispositivos o aparatos que incluyen un equipo inalámbrico, un circuito integrado (IC), o un conjunto de IC (por ejemplo, un conjunto de chips). Diversos componentes, módulos o unidades se describen en esta solicitud para enfatizar aspectos funcionales de los aparatos configurados para implementar las tecnologías descritas, pero no son necesariamente implementadas por diferentes unidades de hardware. En realidad, tal como se describió antes, se pueden combinar diversas unidades en una unidad de hardware de códec en combinación con el software y/o firmware apropiado, o se pueden proporcionar mediante unidades de hardware interoperativas (incluyendo uno o más procesadores antes descritos)
En las realizaciones anteriores, las descripciones en cada realización tienen enfoques respectivos. Para una parte que no se describe en detalle en una realización, se hace referencia a descripciones relacionadas en otras realizaciones.

Claims (1)

  1. REIVINDICACIONES
    1. Un método de decodificación de imágenes de video, que comprende:
    analizar (<1 0 0 1>a) un primer indicador procedente de una corriente de bits;
    analizar (<1 0 0 2>a) un segundo indicador procedente de la corriente de bits cuando el primer indicador indica que un modo de salto es utilizado para inter-predicción de un bloque actual de imágenes; y
    analizar (1003a) un tercer indicador procedente de la corriente de bits cuando el segundo indicador indica que un modo de fusión con diferencia de vector de movimiento MMVD no es utilizado para inter-predicción del bloque actual de imágenes, en donde si el tercer indicador es un primer valor, esto indica que se permite que un modo de unidad de predicción triangular sea utilizado para inter-predicción del bloque actual de imágenes; y si el tercer indicador es un segundo valor, esto indica que no se permite que un modo de unidad de predicción triangular sea utilizado para inter-predicción del bloque de imagen actual; y el tercer indicador es un indicador a nivel de bloque de imagen; y
    realizar (1004a) inter-predicción en el bloque actual de imágenes basándose en un modo de inter-predicción indicado por información de indicador en la corriente de bits, en donde la información de indicador comprende el primer indicador, el segundo indicador, y el tercer indicador.
    en donde la realización de inter-predicción sobre el bloque actual de imágenes basándose en un modo de inter-predicción indicado por información de indicador en la corriente de bits comprende:
    si el tercer indicador es el primer valor, permitir realizar inter-predicción sobre el bloque actual de imágenes basándose en el modo de unidad de predicción triangular; y
    si el tercer indicador es el segundo valor, permitir realizar inter-predicción sobre el bloque actual de imágenes basándose en el modo de salto.
    2. - El método según la reivindicación 1, en donde la realización de inter-predicción sobre el bloque actual de imágenes basándose en un modo de inter-predicción indicado por información de indicador en la corriente de bits comprende:
    si el segundo indicador indica que la MMVD es utilizada para inter-predicción del bloque actual de imágenes, realizar inter-predicción sobre el bloque actual de imágenes basándose en la MMVD.
    3. - Un método de codificación de imágenes de video, que comprende:
    determinar (<1 0 0 1>b) un modo de predicción utilizado para inter-predicción de un bloque actual de imágenes; y codificar (<1 0 0 2>b), en una corriente de bits, información de indicador utilizada para indicar el modo de predicción determinado, en donde
    la información de indicador comprende un primer indicador;
    la información de indicador además comprende un segundo indicador si el primer indicador indica que un modo de salto es utilizado para inter-predicción del bloque actual de imágenes; y
    la información de indicador además comprende un tercer indicador si el segundo indicador indica que un modo de fusión con diferencia de vector de movimiento MMVD no es utilizado para inter-predicción del bloque actual de imágenes; y
    si el tercer indicador es un primer valor, esto indica que se permite que un modo de unidad de predicción triangular sea utilizado para inter-predicción del bloque actual de imágenes; y si el tercer indicador es un segundo valor, esto indica que no se permite que un modo de unidad de predicción triangular sea utilizado para inter-predicción del bloque actual de imágenes;
    en donde si el tercer indicardor es el primer valor, se permite realizar la interpredicción en el bloque de imagen actual basándose en el modo de la unidad de predicción triangular; y
    si el tercer indicador es el segundo valor, se permite realizar la interpredicción en el bloque de imagen actual basándose en el modo de salto
    4. El método según la reivindicación 3, en donde si la información de indicador comprende el segundo indicador, en la corriente de bits, el segundo indicador está ubicado después del primer indicador; o si la información de indicador comprende el segundo indicador y el tercer indicador, en la corriente de bits, el tercer indicador está ubicado después del segundo indicador, y el segundo indicador está ubicado después del primer indicador.
    5. Un dispositivo de decodificación de datos de video que comprende:
    una memoria (44), configurada para almacenar datos de video en forma de una corriente de bits; y un decodificador (30) de video, configurado para realizar el método según cualquiera de las reivindicaciones<1>a<2>.
    <6>. Un dispositivo de codificación de datos de video que comprende:
    una memoria (44), configurada para almacenar datos de video, en donde los datos de video incluyen uno o más bloques de imágenes; y
    un codificador (20) de video, configurado para realizar el método según cualquiera de las reivindicaciones 3 a 4.
    7. Una corriente de video codificada mediante el método según cualquiera de las reivindicaciones 3 a 4.
    <8>. Un producto de programa informático que comprende instrucciones de ordenador que cuando son ejecutadas en un ordenador o uno o más procesadores, hacen que el ordenador o el uno o más procesadores realicen el método según cualquiera de las reivindicaciones 1 a 4.
ES19893119T 2018-12-07 2019-12-06 Método y aparato de codificación y decodificación de imágenes de video Active ES2978268T3 (es)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
CN201811497390 2018-12-07
CN201811574426.2A CN111294601A (zh) 2018-12-07 2018-12-21 视频图像解码、编码方法及装置
PCT/CN2019/123810 WO2020114509A1 (zh) 2018-12-07 2019-12-06 视频图像解码、编码方法及装置

Publications (1)

Publication Number Publication Date
ES2978268T3 true ES2978268T3 (es) 2024-09-09

Family

ID=71024123

Family Applications (1)

Application Number Title Priority Date Filing Date
ES19893119T Active ES2978268T3 (es) 2018-12-07 2019-12-06 Método y aparato de codificación y decodificación de imágenes de video

Country Status (15)

Country Link
US (4) US11425372B2 (es)
EP (2) EP3893510B1 (es)
JP (4) JP7314274B2 (es)
KR (3) KR102759483B1 (es)
CN (5) CN111294601A (es)
AU (3) AU2019394522C1 (es)
BR (1) BR112021010896A2 (es)
CA (1) CA3122329C (es)
DK (1) DK3893510T3 (es)
ES (1) ES2978268T3 (es)
FI (1) FI3893510T3 (es)
HU (1) HUE066747T2 (es)
MX (2) MX2021006683A (es)
PL (1) PL3893510T3 (es)
PT (1) PT3893510T (es)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111294601A (zh) * 2018-12-07 2020-06-16 华为技术有限公司 视频图像解码、编码方法及装置
US11234007B2 (en) * 2019-01-05 2022-01-25 Tencent America LLC Method and apparatus for video coding
EP3957072A4 (en) * 2019-04-19 2023-01-11 Beijing Dajia Internet Information Technology Co., Ltd. VIDEO CODING METHODS AND APPARATUS USING OPTICAL FLOW PREDICTION REFINEMENT
US12120335B2 (en) * 2021-08-24 2024-10-15 Tencent America LLC Hardware friendly design for intra mode coding
CN115065825A (zh) * 2022-06-07 2022-09-16 北京邮电大学 一种基于gpu的移动视频编解码系统
CN120982094A (zh) * 2023-06-30 2025-11-18 Oppo广东移动通信有限公司 编解码方法、编码器、解码器、码流以及存储介质

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090034857A1 (en) * 2005-07-22 2009-02-05 Mitsubishi Electric Corporation Image encoder and image decoder, image encoding method and image decoding method, image encoding program and image decoding program, and computer readable recording medium recorded with image encoding program and computer readable recording medium recorded with image decoding program
CN101500160B (zh) 2008-01-28 2015-04-29 华为技术有限公司 一种码流标识方法、装置及编解码系统
CN103222265B (zh) 2010-09-30 2017-02-08 三菱电机株式会社 运动图像编码装置、运动图像解码装置、运动图像编码方法以及运动图像解码方法
CN103081475B (zh) 2010-11-23 2016-04-27 Lg电子株式会社 编码和解码图像的方法及使用该方法的设备
US9066110B2 (en) * 2011-03-08 2015-06-23 Texas Instruments Incorporated Parsing friendly and error resilient merge flag coding in video coding
JP6422011B2 (ja) 2012-05-11 2018-11-14 サン パテント トラスト 動画像符号化方法、動画像復号化方法、動画像符号化装置および動画像復号化装置
JP6295951B2 (ja) 2012-06-25 2018-03-20 ソニー株式会社 画像復号装置及び画像復号方法
CN104104964B (zh) * 2013-04-09 2019-03-12 乐金电子(中国)研究开发中心有限公司 一种深度图像帧间编码、解码方法、编码器及解码器
GB2531004A (en) * 2014-10-06 2016-04-13 Canon Kk Residual colour transform signalled at sequence level for specific coding modes
WO2016175549A1 (ko) * 2015-04-27 2016-11-03 엘지전자 주식회사 비디오 신호의 처리 방법 및 이를 위한 장치
CN106331722B (zh) * 2015-07-03 2019-04-26 华为技术有限公司 图像预测方法和相关设备
CN104935938B (zh) * 2015-07-15 2018-03-30 哈尔滨工业大学 一种混合视频编码标准中帧间预测方法
JP6078138B1 (ja) * 2015-10-30 2017-02-08 Nttエレクトロニクス株式会社 動画像符号化装置及び動画像符号化方法
CN106878751B (zh) 2015-12-11 2022-01-14 北京三星通信技术研究有限公司 视频帧内编码模式的标识方法、处理方法和装置
US10812791B2 (en) * 2016-09-16 2020-10-20 Qualcomm Incorporated Offset vector identification of temporal motion vector predictor
US10123020B2 (en) * 2016-12-30 2018-11-06 Axis Ab Block level update rate control based on gaze sensing
CN112997489B (zh) 2018-11-06 2024-02-06 北京字节跳动网络技术有限公司 具有几何分割的帧间预测的边信息信令
US10917636B2 (en) * 2018-12-03 2021-02-09 Tencent America LLC Method and apparatus for video coding
CN111294601A (zh) * 2018-12-07 2020-06-16 华为技术有限公司 视频图像解码、编码方法及装置
US11432004B2 (en) * 2019-04-25 2022-08-30 Hfi Innovation Inc. Method and apparatus of constraining merge flag signaling in video coding

Also Published As

Publication number Publication date
CA3122329C (en) 2023-10-24
DK3893510T3 (da) 2024-04-22
KR20230149344A (ko) 2023-10-26
AU2019394522B9 (en) 2024-07-11
CN115243049A (zh) 2022-10-25
US11758130B2 (en) 2023-09-12
CN115243048B (zh) 2023-04-28
EP3893510A1 (en) 2021-10-13
EP4346212A2 (en) 2024-04-03
EP3893510B1 (en) 2024-01-24
KR102759483B1 (ko) 2025-01-22
MX2024010177A (es) 2024-08-27
KR102593525B1 (ko) 2023-10-23
AU2026201183A1 (en) 2026-03-05
US20240040113A1 (en) 2024-02-01
AU2019394522A1 (en) 2021-07-08
JP7769063B2 (ja) 2025-11-12
AU2019394522B2 (en) 2024-06-27
BR112021010896A2 (pt) 2021-08-31
HUE066747T2 (hu) 2024-09-28
AU2019394522C1 (en) 2024-11-07
CA3122329A1 (en) 2020-06-11
JP7547557B2 (ja) 2024-09-09
CN115174931A (zh) 2022-10-11
US11425372B2 (en) 2022-08-23
JP7314274B2 (ja) 2023-07-25
FI3893510T3 (fi) 2024-04-22
JP2026015342A (ja) 2026-01-29
JP2024169438A (ja) 2024-12-05
JP2023107799A (ja) 2023-08-03
AU2024205433B2 (en) 2025-11-20
EP3893510A4 (en) 2022-02-23
PT3893510T (pt) 2024-04-22
KR20210095945A (ko) 2021-08-03
MX2021006683A (es) 2021-09-23
CN113491132A (zh) 2021-10-08
PL3893510T3 (pl) 2024-05-27
JP2022511873A (ja) 2022-02-01
CN115243048A (zh) 2022-10-25
AU2024205433A1 (en) 2024-08-22
US20260012583A1 (en) 2026-01-08
US20210329229A1 (en) 2021-10-21
CN111294601A (zh) 2020-06-16
KR20250017762A (ko) 2025-02-04
US12382026B2 (en) 2025-08-05
CN113491132B (zh) 2022-07-22
US20220353497A1 (en) 2022-11-03
EP4346212A3 (en) 2024-11-06

Similar Documents

Publication Publication Date Title
JP7485839B2 (ja) ビデオピクチャ予測方法及び装置
ES2996341T3 (en) Video processing method, video processing apparatus, encoder, decoder, medium and computer program
ES2978268T3 (es) Método y aparato de codificación y decodificación de imágenes de video
ES3010207T3 (en) Inter-frame prediction method and device
ES2966509T3 (es) Método y dispositivo de partición de imagen
CN119815033A (zh) 帧间预测方法、装置以及相应的编码器和解码器
ES2998959T3 (en) Inter-frame prediction method and device
ES3038385T3 (en) Video coder, video decoder, and corresponding method
CN112135129B (zh) 一种帧间预测方法及装置
CN111726630B (zh) 基于三角预测单元模式的处理方法及装置
CN118075484A (zh) 基于三角预测单元模式的处理方法及装置