ES2946909T3 - Método, aparato y producto de programa informático para interpredicción - Google Patents

Método, aparato y producto de programa informático para interpredicción Download PDF

Info

Publication number
ES2946909T3
ES2946909T3 ES19887343T ES19887343T ES2946909T3 ES 2946909 T3 ES2946909 T3 ES 2946909T3 ES 19887343 T ES19887343 T ES 19887343T ES 19887343 T ES19887343 T ES 19887343T ES 2946909 T3 ES2946909 T3 ES 2946909T3
Authority
ES
Spain
Prior art keywords
index
prediction
block
candidate list
video
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
ES19887343T
Other languages
English (en)
Inventor
Semih Esenlik
Jianle Chen
Anand Meher Kotra
Han Gao
Biao Wang
Roman Igorevich Chernyak
Alexander Alexandrovich Karabutov
Sergey Yurievich Ikonin
Timofey Mikhailovich Solovyev
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Application granted granted Critical
Publication of ES2946909T3 publication Critical patent/ES2946909T3/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/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/109Selection of coding mode or of prediction mode among a plurality of temporal predictive coding modes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/119Adaptive subdivision aspects, e.g. subdivision of a picture into rectangular or non-rectangular coding blocks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/105Selection of the reference unit for prediction within a chosen coding or prediction mode, e.g. adaptive choice of position and number of pixels used for prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/13Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
    • 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/136Incoming video signal characteristics or properties
    • H04N19/137Motion inside a coding unit, e.g. average field, frame or block difference
    • H04N19/139Analysis of motion vectors, e.g. their magnitude, direction, variance or reliability
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/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/146Data rate or code amount at the encoder output
    • H04N19/147Data rate or code amount at the encoder output according to rate distortion criteria
    • 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/46Embedding additional information in the video signal during the compression process
    • H04N19/463Embedding additional information in the video signal during the compression process by compressing encoding parameters before transmission
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/513Processing of motion vectors
    • 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/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/107Selection of coding mode or of prediction mode between spatial and temporal predictive coding, e.g. picture refresh
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/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/80Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation
    • H04N19/82Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation involving filtering within a prediction loop

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Compression Of Band Width Or Redundancy In Fax (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Analogue/Digital Conversion (AREA)

Abstract

Un método de predicción para un bloque de imagen que comprende un primer subbloque de predicción y un segundo subbloque de predicción, comprendiendo el método de predicción: analizar un primer índice de un flujo de bits, donde el primer índice se usa para obtener información de predicción del primer subbloque de predicción -bloquear; analizar un segundo índice del flujo de bits; comparar el primer índice con el segundo índice; ajustar el segundo índice en caso de que el segundo índice sea igual o mayor que el primer índice; y obtener información de predicción del segundo subbloque de predicción según el segundo índice ajustado. (Traducción automática con Google Translate, sin valor legal)

Description

DESCRIPCIÓN
Método, aparato y producto de programa informático para interpredicción
Campo técnico
Las modalidades de la presente solicitud se refieren en general al campo de procesamiento de imágenes y, más en particularmente, a interpredicción.
Antecedentes
La codificación de vídeo (codificación y decodificación de vídeo) se utiliza en una amplia gama de aplicaciones de vídeo digital, por ejemplo, difusión de televisión digital, transmisión de vídeo a través de Internet y redes móviles, aplicaciones conversacionales en tiempo real tal como chat de vídeo, videoconferencias, DVD y discos Blu-ray, sistemas de adquisición y edición de contenido de vídeo y videocámaras de aplicaciones de seguridad.
La cantidad de datos de vídeo necesarios para representar incluso un vídeo relativamente corto puede ser sustancial, lo que puede dar por resultado dificultades cuando los datos se deben transmitir o comunicar de otra manera a través de una red de comunicaciones con capacidad de ancho de banda limitada. Por lo tanto, los datos de vídeo generalmente se comprimen antes de comunicarse a través de redes de telecomunicaciones modernas. El tamaño de un vídeo también podría ser un problema cuando el vídeo se almacena en un dispositivo de almacenamiento debido a que los recursos de memoria pueden ser limitados. Los dispositivos de compresión de vídeo a menudo usan software y/o hardware en la fuente para codificar los datos de vídeo antes de la transmisión o almacenamiento, disminuyendo de esta manera la cantidad de datos necesarios para representar imágenes de vídeo digitales. Los datos comprimidos luego se reciben en el destino por un dispositivo de descompresión de vídeo que decodifica los datos de vídeo. Con recursos de red limitados y demandas cada vez mayores de mayor calidad de vídeo, son convenientes técnicas mejoradas de compresión y descompresión que mejoren la relación de compresión con poco o ningún sacrificio en la calidad de imagen.
RU-LING LIAO ET AL, " CE10.3.1.b: Triangular prediction unit mode ", núm. JVET-L0124-v2; JVET-L0124, (20181005), páginas 1 - 8, 12. REUNIÓN JVET; 20181003 - 20181012; MACAO; (EL EQUIPO CONJUNTO DE EXPLORACIÓN DE VIDEO DE ISO/IEC JTC1/SC29/WG11 Y ITU-T SG.16 )" URL: http://phenix.intevry.fr/jvet/doc_end_user/documents/12_Macao/wg11/JVET-L0124 -v2.zip JVET-L0124-v2.doc, (20181005), describe que en el modo de unidad de predicción triangular, una CU se puede dividir usando dos unidades de predicción triangular, en dirección diagonal o diagonal inversa.
R-L LIAO (PANASONIC) ET AL, " CE10.3. Lb: Triangular prediction unit mode ", núm. JVET-L0124, (20181101), 12. REUNIÓN JVET; 20181003 - 20181012; MACAO; (EL EQUIPO CONJUNTO DE EXPLORACIÓN DE VIDEO DE ISO/IEC JTC1/SC29/WG11 Y ITU-T SG.16 )" URL: http://phenix.intevry.fr/jvet/doc_end_user/documents/12_Macao/wg11/JVET-L0124- v6.zip JVET-L0124-text-v4.docx, (20181101), describe el modo de unidad de predicción triangular.
Resumen
Las modalidades de la presente solicitud proporcionan un método, un aparato y producto de programa informático para decodificación de acuerdo con las reivindicaciones independientes. La descripción habilitante para la invención protegida se proporciona con las modalidades descritas en relación con la Figura 15. Las otras figuras, aspectos y modalidades se proporcionan con fines ilustrativos y no representan modalidades de la invención a menos que se combinen con todas las características respectivamente definidas en las reivindicaciones independientes.
Las modalidades particulares se describen en las reivindicaciones independientes adjuntas, con otras modalidades en las reivindicaciones dependientes.
Los detalles de una o más modalidades se establecen en las figuras anexas y la descripción más adelante.
Otras características, objetos y ventajas serán evidentes a partir de la descripción, dibujos y reivindicaciones.
Se debe señalar que en la presente solicitud, para un modo de predicción triangular, ya que comparar con el modo de predicción que todo el bloque tiene información de predicción de unificación, el caso de que dos subbloques de predicción en este bloque tengan la misma información de predicción es redundancia. La presente solicitud diseña un método de codificación de índice de predicción para evitar el caso redundante. Se guardan los bits para indicar el índice de predicción y se mejora la eficiencia de codificación. Y la cantidad máxima de información de predicción candidata para el modo de predicción triangular se deriva con base en la cantidad máxima de información de predicción candidata para el modo de fusión. Los bits de codificación también se guardan, en comparación con la cantidad máxima de información de predicción candidata para el modo de predicción triangular se señaliza de forma independiente.
Breve descripción de los dibujos
En las siguientes modalidades de la invención se describen más detalladamente con referencia a las figuras y dibujos anexos, en los cuales:
La Figura 1A es un diagrama de bloques que muestra un ejemplo de un sistema de codificación de vídeo configurado para implementar modalidades de la invención;
La Figura 1B es un diagrama de bloques que muestra otro ejemplo de un sistema de codificación de vídeo configurado para implementar modalidades de la invención;
La Figura 2 es un diagrama de bloques que muestra un ejemplo de un codificador de vídeo configurado para implementar modalidades de la invención;
La Figura 3 es un diagrama de bloques que muestra una estructura de ejemplo de un decodificador de vídeo configurado para implementar modalidades de la invención;
La Figura 4 es un diagrama de bloques que ilustra un ejemplo de un aparato de codificación o un aparato de decodificación;
La Figura 5 es un diagrama de bloques que ilustra otro ejemplo de un aparato de codificación o un aparato de decodificación;
La Figura 6 es un diagrama que muestra un ejemplo de posiciones del candidato de fusión espacial;
La Figura 7 es un diagrama que muestra un ejemplo de pares de candidatos considerados para verificación de redundancia de candidatos de fusión espacial;
La Figura 8 es un diagrama que muestra un ejemplo de la modificación de escala de vector de movimiento para candidato de fusión temporal;
La Figura 9 es un diagrama que muestra un ejemplo de posiciones para el candidato temporal;
La Figura 10A es una ilustración de la división de un bloque en dos unidades de predicción de triángulos;
La Figura 10B es otra ilustración de la división de un bloque en dos unidades de predicción de triángulos;
La Figura 11 son ejemplos de otros esquemas de partición de subbloque;
La Figura 12 es una ilustración para derivar un vector de movimiento de unipredicción de la lista de candidatos de fusión;
La Figura 13 es un ejemplo de un bloque que aplica el filtro de mezcla;
La Figura 14 es un diagrama de bloques esquemático que ilustra el proceso de CABAC;
La Figura 15 es un diagrama de bloques que ilustra un ejemplo de un método de predicción;
La Figura 16 es un diagrama de bloques que ilustra otro ejemplo de un método de predicción;
La Figura 17 es un diagrama de bloques que muestra un ejemplo de un aparato de predicción configurado para implementar modalidades de la solicitud;
La Figura 18 es un diagrama de bloques que ilustra un ejemplo de un aparato de codificación o un aparato de decodificación;
La Figura 19 es un diagrama de bloques que muestra una estructura de ejemplo de un sistema de suministro de contenido 3100 que realiza un servicio de suministro de contenido;
La Figura 20 es un diagrama de bloques que muestra una estructura de un ejemplo de un dispositivo terminal.
En los siguientes signos de referencia idénticos se hace referencia a características idénticas o al menos funcionalmente equivalentes si no se especifica explícitamente lo contrario.
Descripción detallada de la invención
En la siguiente descripción, se hace referencia a las figuras anexas, que forman parte de la descripción, y que muestran, a manera de ilustración, aspectos específicos de modalidades de la invención o aspectos específicos en los que se pueden utilizar modalidades de la presente invención. Se entiende que las modalidades de la invención se pueden usar en otros aspectos y comprenden cambios estructurales o lógicos no representados en las figuras. Por lo tanto, la siguiente descripción detallada no se debe tomar en un sentido limitante, y el alcance de la presente invención se define por las reivindicaciones anexas.
Por ejemplo, se entiende que una descripción en conexión con un método descrito también se puede mantener verdadera para un dispositivo o sistema correspondiente configurado para realizar el método y viceversa. Por ejemplo, si se describen uno o una pluralidad de pasos de método específicos, un dispositivo correspondiente puede incluir una o una pluralidad de unidades, por ejemplo, unidades funcionales, para realizar el paso de método descrito (por ejemplo, una unidad para realizar el paso o pluralidad de pasos, o una pluralidad de unidades para realizar cada uno o más de la pluralidad de pasos), incluso si esta unidad o más no se describen o ilustran explícitamente en las figuras. Por otro lado, por ejemplo, si un aparato específico se describe con base en una o una pluralidad de unidades, por ejemplo, unidades funcionales, un método correspondiente puede incluir un paso para realizar la funcionalidad de la una o pluralidad de unidades (por ejemplo, un paso para realizar la funcionalidad de la una o pluralidad de unidades, o una pluralidad de pasos para realizar cada una la funcionalidad de una o más de la pluralidad de unidades), incluso si este paso o pluralidad de pasos no se describen o ilustran explícitamente en las figuras. Además, se entiende que las características de las diversas modalidades y/o aspectos de ejemplo descritos a continuación se pueden combinar entre sí, a menos que se indique específicamente lo contrario.
La codificación de vídeo típicamente se refiere al procesamiento de una secuencia de imágenes, que forman el vídeo o secuencia de vídeo. En lugar del término “fotografía”, el término “trama” o “imagen” se puede usar como sinónimos en el campo de codificación de vídeo. La codificación de vídeo (o codificación en general) consta de dos partes codificación de vídeo y decodificación de vídeo. La codificación de vídeo se realiza en el lado fuente, que comprende típicamente procesar (por ejemplo, mediante compresión) las imágenes de vídeo originales para reducir la cantidad de datos necesarios para representar las imágenes de vídeo (para almacenamiento y/o transmisión más eficiente). La decodificación de vídeo se realiza en el lado de destino y generalmente comprende el procesamiento inverso en comparación con el codificador para reconstruir las imágenes de vídeo. Se entenderá que las modalidades que se refieren a “codificación” de imágenes de vídeo (o imágenes en general) se refieren a “codificación” o “decodificación” de imágenes de vídeo o secuencias de vídeo respectivas. La combinación de la parte de codificación y la parte de decodificación también se conoce como CODEC (codificación y decodificación). En caso de codificación de vídeo sin pérdida, las imágenes de vídeo originales se pueden reconstruir, es decir, las imágenes de vídeo reconstruidas tienen la misma calidad que las imágenes de vídeo originales (asumiendo que no hay pérdida de transmisión u otra pérdida de datos durante el almacenamiento o transmisión). En caso de codificación de vídeo con pérdida, se realiza compresión adicional, por ejemplo, mediante cuantificación, para reducir la cantidad de datos que representan las imágenes de vídeo, que no se pueden reconstruir completamente en el decodificador, es decir, la calidad de las imágenes de vídeo reconstruidas es menor o peor en comparación con la calidad de las imágenes de vídeo originales.
Varias normas de codificación de vídeo pertenecen al grupo de “códecs de vídeo híbridos con pérdidas” (es decir, combinan predicción espacial y temporal en el dominio de muestra y codificación de transformación 2D para aplicar cuantificación en el dominio de transformación). Cada imagen de una secuencia de vídeo se particiona típicamente en un conjunto de bloques no superpuestos y la codificación se realiza típicamente a nivel de bloque. En otras palabras, en el codificador el vídeo se procesa típicamente, es decir, se codifica, a nivel de bloque (bloque de vídeo), por ejemplo, mediante el uso de predicción espacial (intraimagen) y predicción temporal (intertrama) para generar un bloque de predicción, restar el bloque de predicción del bloque actual (bloque actualmente procesado/que se va a procesar) para obtener un bloque residual, transformar el bloque residual y cuantificar el bloque residual en el dominio de transformación para reducir la cantidad de datos que se van a transmitir (compresión), mientras que en el decodificador el procesamiento inverso en comparación con el codificador se aplica parcialmente al bloque codificado o comprimido para reconstruir el bloque actual para su representación. Además, el codificador duplica el bucle de procesamiento de decodificador de modo que ambos generarán predicciones idénticas (por ejemplo, intra e interpredicciones) y/o reconstrucciones para procesamiento, es decir, codificación, los bloques posteriores.
En las siguientes modalidades de un sistema de codificación de vídeo 10, un codificador de vídeo 20 y un decodificador de vídeo 30 se describen con base en las figuras 1 a 3.
La Figura 1A es un diagrama de bloques esquemático que ilustra un sistema de codificación de ejemplo 10, por ejemplo, un sistema de codificación de vídeo 10 (o sistema de codificación corto 10) que puede utilizar técnicas de esta presente solicitud. El codificador de vídeo 20 (o codificador corto 20) y el decodificador de vídeo 30 (por ejemplo, decodificador corto 30) del sistema de codificación de vídeo representan ejemplos de dispositivos que se pueden configurar para realizar técnicas de acuerdo con varios ejemplos descritos en la presente solicitud.
Como se muestra en la Figura 1A, el sistema de codificación 10 comprende un dispositivo fuente 12 configurado para proporcionar datos de imagen codificados 21, por ejemplo, a un dispositivo destino 14 para decodificar los datos de imagen codificados 13.
El dispositivo fuente 12 comprende un codificador 20 y puede comprender adicionalmente, es decir, opcionalmente, una fuente de imagen 16, un preprocesador (o unidad de preprocesamiento) 18, por ejemplo, un preprocesador de imágenes 18 y una interfaz de comunicación o unidad de comunicación 22.
La fuente de imagen 16 puede comprender o ser cualquier tipo de dispositivo de captura de imágenes, por ejemplo, una cámara para capturar una imagen del mundo real, y/o cualquier tipo de dispositivo que genera imágenes, por ejemplo, un procesador de gráficos de computadora para generar una imagen animada por ordenador, o cualquier tipo de otro dispositivo para obtener y/o proporcionar una imagen del mundo real, una imagen generada por ordenador (por ejemplo, un contenido de pantalla, una imagen de realidad virtual (VR)) y/o cualquier combinación de los mismos (por ejemplo, una imagen de realidad aumentada (AR)). La fuente de imagen puede ser cualquier tipo de memoria o almacenamiento que almacene cualquiera de las imágenes mencionadas anteriormente.
A diferencia del preprocesador 18 y el procesamiento realizado por la unidad de preprocesamiento 18, la imagen o datos de imagen 17 también se pueden referir como datos de imagen sin procesar o imagen sin procesar 17.
El preprocesador 18 se configura para recibir los datos de imagen (sin procesar) 17 y para realizar preprocesamiento en los datos de imagen 17 para obtener una imagen preprocesada 19 o datos de imagen preprocesados 19. El preprocesamiento realizado por el preprocesador 18 puede, por ejemplo, comprender recorte, conversión de formato de color (por ejemplo, de RGB a YCbCr), corrección de color o eliminación de ruido. Se puede entender que la unidad de preprocesamiento 18 puede ser un componente opcional. El codificador de vídeo 20 se configura para recibir los datos de imagen preprocesados 19 y proporcionar datos de imagen codificados 21 (se describirán más detalles a continuación, por ejemplo, con base en la Figura 2).
La interfaz de comunicación 22 del dispositivo fuente 12 se puede configurar para recibir los datos de imagen codificados 21 y transmitir los datos de imagen codificados 21 (o cualquier versión procesada adicional de estos) a través del canal de comunicación 13 a otro dispositivo, por ejemplo, el dispositivo destino 14 o cualquier otro dispositivo, para almacenamiento o reconstrucción directa.
El dispositivo destino 14 comprende un decodificador 30 (por ejemplo un decodificador de vídeo 30) y puede comprender adicionalmente, es decir, opcionalmente, una interfaz de comunicación o unidad de comunicación 28, un postprocesador 32 y un dispositivo de visualización 34.
La interfaz de comunicación 28 del dispositivo destino 14 se configura para recibir los datos de imagen codificados 21 (o cualquier versión procesada adicional de los mismos), por ejemplo, directamente desde el dispositivo fuente 12 o desde cualquier otra fuente, por ejemplo, un dispositivo de almacenamiento, por ejemplo, un dispositivo de almacenamiento de datos de imagen codificados, y proporcionar los datos de imagen codificados 21 al decodificador 30.
La interfaz de comunicación 22 y la interfaz de comunicación 28 se pueden configurar para transmitir o recibir los datos de imagen codificados 21 o datos codificados 13 mediante un enlace de comunicación directa entre el dispositivo fuente 12 y el dispositivo destino 14, por ejemplo, una conexión inalámbrica o alámbrica directa, o mediante cualquier tipo de red, por ejemplo, una red inalámbrica o por cable o cualquier combinación de las mismas, o cualquier tipo de red pública y privada, o cualquier tipo de combinación de las mismas.
La interfaz de comunicación 22 se puede configurar, por ejemplo, para empaquetar los datos de imagen codificados 21 en un formato adecuado, por ejemplo, paquetes, y/o procesar los datos de imagen codificados usando cualquier tipo de codificación o procesamiento de transmisión para transmisión a través de un enlace de comunicación o red de comunicación.
La interfaz de comunicación 28, que forma la contraparte de la interfaz de comunicación 22, se puede configurar, por ejemplo, para recibir los datos transmitidos y procesar los datos de transmisión usando cualquier tipo de decodificación o procesamiento de transmisión correspondiente y/o desempaquetado para obtener los datos de imagen codificados 21.
Tanto la interfaz de comunicación 22 como la interfaz de comunicación 28 se pueden configurar como interfaces de comunicación unidireccionales como se indica por la flecha para el canal de comunicación 13 en la Figura 1 que apuntan desde el dispositivo fuente 12 al dispositivo destino 14, o interfaces de comunicación bidireccionales, y se pueden configurar, por ejemplo, para enviar y recibir mensajes, por ejemplo, para configurar una conexión, para reconocer e intercambiar cualquier otra información relacionada con el enlace de comunicación y/o transmisión de datos, por ejemplo, transmisión de datos de imagen codificados.
El decodificador 30 se configura para recibir los datos de imagen codificados 21 y proporcionar datos de imagen decodificados 31 o una imagen decodificada 31 (se describirán más detalles a continuación, por ejemplo, con base en la figura 3 o figura 5).
El postprocesador 32 del dispositivo destino 14 se configura para postprocesar los datos de imagen decodificados 31 (también llamados datos de imagen reconstruidos), por ejemplo, la imagen decodificada 31, para obtener datos de imagen postprocesados 33, por ejemplo, una imagen postprocesados 33. El postprocesamiento realizado por la unidad de postprocesamiento 32 puede comprender, por ejemplo, conversión de formato de color (por ejemplo, de YCbCr a RGB), corrección de color, recorte o remuestreo, o cualquier otro procesamiento, por ejemplo, para preparar los datos de imagen decodificados 31 para visualización, por ejemplo, por dispositivo de visualización 34. El dispositivo de visualización 34 del dispositivo destino 14 se configura para recibir los datos de imagen postprocesados 33 para visualizar la imagen, por ejemplo, a un usuario o espectador. El dispositivo de visualización 34 puede ser o comprender cualquier tipo de pantalla para representar la imagen reconstruida, por ejemplo, una pantalla o monitor integrado o externo. Las pantallas pueden, por ejemplo, comprender pantallas de cristal líquido (LCD), pantallas de diodos emisores de luz orgánicos (OLED), pantallas de plasma, proyectores, pantallas de microleds, cristal líquido sobre silicio (LCoS), procesador de luz digital (DLP) o cualquier tipo de otra pantalla.
Aunque la Figura 1A representa el dispositivo fuente 12 y el dispositivo destino 14 como dispositivos separados, modalidades de dispositivos también pueden comprender ambas funcionalidades, el dispositivo fuente 12 o funcionalidad correspondiente y el dispositivo destino 14 o funcionalidad correspondiente. En estas modalidades, el dispositivo fuente 12 o funcionalidad correspondiente y el dispositivo destino 14 o funcionalidad correspondiente se pueden implementar usando el mismo hardware y/o software o mediante hardware y/o software separado o cualquier combinación de los mismos. Como será evidente para el experto con base en la descripción, la existencia y (exacta) división de funcionalidades de las diferentes unidades o funcionalidades dentro del dispositivo fuente 12 y/o dispositivo destino 14 como se muestra en la Figura 1A puede variar dependiendo del dispositivo y aplicación reales.
El codificador 20 (por ejemplo, un codificador de vídeo 20) o decodificador 30 (por ejemplo, un decodificador de vídeo 30) o ambos codificador 20 y decodificador 30 se puede implementar mediante circuitería de procesamiento como se muestra en la Figura 1B, tal como uno o más microprocesadores, procesadores de señales digitales (DSP), circuitos integrados de aplicación específica (ASIC), arreglos de compuertas programables en el campo (FPGA), lógica discreta, hardware, codificación de vídeo dedicada o cualquier combinación de los mismos. El codificador 20 se puede implementar a través de la circuitería de procesamiento 46 para incorporar los diversos módulos como se analiza con respecto al codificador 20de la Figura 2 y/o cualquier otro sistema o subsistema codificador descrito en la presente. El decodificador 30 se puede implementar a través de la circuitería de procesamiento 46 para incorporar los diversos módulos como se analiza con respecto al decodificador 30 de la Figura 3 y/o cualquier otro sistema o subsistema decodificador descrito en la presente. La circuitería de procesamiento se puede configurar para realizar las diversas operaciones descritas más adelante. Como se muestra en la Figura 5, si las técnicas se implementan parcialmente en software, un dispositivo puede almacenar instrucciones para el software en un almacenamiento medio de almacenamiento legible por ordenador adecuado y no transitorio y puede ejecutar las instrucciones en hardware usando uno o más procesadores para realizar las técnicas de esta descripción. Cualquiera del codificador de vídeo 20 y el decodificador de vídeo 30 se pueden integrar como parte de un codificador/decodificador combinado (CODEC) en un solo dispositivo, por ejemplo, como se muestra en la Figura 1B.
El dispositivo fuente 12 y el dispositivo destino 14 pueden comprender cualquiera de una amplia gama de dispositivos, que incluyen cualquier tipo de dispositivo portátil o estacionario, por ejemplo, notebook o computadoras laptop, teléfonos móviles, teléfonos inteligentes, tabletas o computadoras de tableta, cámaras, computadoras de escritorio, decodificadores, televisiones, dispositivos de visualización, reproductores de medios digitales, consolas de videojuegos, dispositivos de transmisión en tiempo de vídeo (tal como servidores de servicios de contenido o servidores de entrega de contenido), dispositivo receptor de difusión, dispositivo transmisor de difusión o similares y pueden usar ningún o cualquier tipo de sistema operativo. En algunos casos, el dispositivo fuente 12 y el dispositivo destino 14 pueden estar equipados para comunicación inalámbrica. Por lo tanto, el dispositivo fuente 12 y el dispositivo destino 14 pueden ser dispositivos de comunicación inalámbrica.
En algunos casos, sistema de codificación de vídeo 10 ilustrado en la Figura 1A es meramente un ejemplo y las técnicas de la presente solicitud se pueden aplicar a configuraciones de codificación de vídeo (por ejemplo, codificación de vídeo o decodificación de vídeo) que no incluyen necesariamente alguna comunicación de datos entre los dispositivos de codificación y decodificación. En otros ejemplos, los datos se recuperan de una memoria local, se transmiten en tiempo real a través de una red o similares. Un dispositivo de codificación de vídeo puede codificar y almacenar datos en memoria, y/o un dispositivo de decodificación de vídeo puede recuperar y decodificar datos de memoria. En algunos ejemplos, la codificación y decodificación se realizan mediante dispositivos que no se comunican entre sí, sino que simplemente codifican datos para memoria y/o recuperan y decodifican datos de memoria.
Para mayor comodidad de descripción, las modalidades de la invención se describen en la presente, por ejemplo, con referencia a Codificación de Vídeo de Alta Eficiencia (HEVC) o al software de referencia de Codificación de Vídeo Versátil (VVC), la norma de codificación de Vídeo de próxima generación desarrollada por el Equipo Conjunto de Colaboración en Codificación de Vídeo (JCT-VC) del Grupo de Expertos en Codificación de Vídeo ITU-T (VCEG) y el Grupo de Expertos en Imágenes en Movimiento ISO/IEC (MPEG). Un experto en la técnica entenderá que las modalidades de la invención no se limitan a HEVC o VVC.
Codificador y método de codificación
La Figura 2 muestra un diagrama de bloques esquemático de un codificador de vídeo de ejemplo 20 que se configura para implementar las técnicas de la presente solicitud. En el ejemplo de la Figura 2, el codificador de vídeo 20 comprende una entrada 201 (o interfaz de entrada 201), una unidad de cálculo residual 204, una unidad de procesamiento de transformación 206, una unidad de cuantificación 208, una unidad de cuantificación inversa 210 y una unidad de procesamiento de transformación inversa 212, una unidad de reconstrucción 214, una unidad de filtro de bucle 220, una memoria intermedia de imágenes decodificadas (DPB) 230, una unidad de selección de modo 260, una unidad de codificación de entropía 270 y una salida 272 (o interfaz de salida 272). La unidad de selección de modo 260 puede incluir una unidad de interpredicción 244, una unidad de intrapredicción 254 y una unidad de particionado 262. La unidad de intrapredicción 244 puede incluir una unidad de estimación de movimiento y una unidad de compensación de movimiento (no se muestra). Un codificador de vídeo 20 como se muestra en la Figura 2 también se puede referir como codificador de vídeo híbrido o un codificador de vídeo de acuerdo con un códec de vídeo híbrido.
La unidad de cálculo residual 204, la unidad de procesamiento de transformación 206, la unidad de cuantificación 208, la unidad de selección de modo 260 se pueden referir como que forman una ruta de señal directa del codificador 20, mientras que la unidad de cuantificación inversa 210, la unidad de procesamiento de transformación inversa 212, la unidad de reconstrucción 214, la memoria intermedia 216, el filtro de bucle 220, la memoria intermedia de imágenes decodificadas (DPB) 230, la unidad de predicción inversa 244 y la unidad de intrapredicción 254 se pueden referir como que forman una ruta de señal inversa del codificador de vídeo 20, en donde la ruta de señal inversa del codificador de vídeo 20 corresponde a la ruta de señal del decodificador (ver el decodificador de vídeo 30 en la Figura 3). También se hace referencia a la unidad de cuantificación inversa 210, la unidad de procesamiento de transformación inversa 212, la unidad de reconstrucción 214, el filtro de bucle 220, la memoria intermedia de imágenes decodificadas (DPB) 230, la unidad de predicción intermedia 244 y la unidad de intrapredicción 254 que forman el “decodificador integrado” del codificador de vídeo 20.
Imágenes y particionado de imágenes (imágenes y bloques)
El codificador 20 se puede configurar para recibir, por ejemplo, mediante la entrada 201, una imagen 17 (o datos de imagen 17), por ejemplo, imagen de una secuencia de imágenes que forman un vídeo o secuencia de vídeo. La imagen o datos de imagen recibidos también pueden ser una imagen preprocesada 19 (o datos de imagen preprocesados 19). En aras de simplicidad, la siguiente descripción se refiere a la imagen 17. La imagen 17 también se puede referir como imagen actual o imagen que se va a codificar (en particular, en la codificación de vídeo para distinguir la imagen actual de otras imágenes, por ejemplo, imágenes previamente codificadas y/o decodificadas de la misma secuencia de vídeo, es decir, la secuencia de vídeo que también comprende la imagen actual).
Una imagen (digital) es o se puede considerar como un arreglo bidimensional o matriz de muestras con valores de intensidad. Una muestra en el arreglo también se puede referir como píxel (forma corta de elemento de imagen) o un pel. El número de muestras en dirección horizontal y vertical (o eje) del arreglo o imagen define el tamaño y/o resolución de la imagen. Para la representación del color, típicamente se emplean tres componentes de color, es decir, la imagen puede estar representada o incluir tres matrices de muestras. En formato RBG o espacio de color, una imagen comprende un arreglo de muestras roja, verde y azul correspondiente. Sin embargo, en la codificación de vídeo, cada píxel se representa típicamente en un formato de luminancia y crominancia o espacio de color, por ejemplo, YCbCr, que comprende un componente de luminancia indicado por Y (a veces también se usa L en su lugar) y dos componentes de crominancia indicados por Cb y Cr. El componente de luminancia (o luma corta) Y representa el brillo o la intensidad del nivel de gris (por ejemplo, como en una imagen a escala de grises), mientras que los dos componentes de crominancia (o croma corta) Cb y Cr representan los componentes de cromaticidad o información de color. Por consiguiente, una imagen en formato YCbCr comprende un arreglo de muestra de luminancia de valores de muestra de luminancia (Y) y dos arreglos de muestra de crominancia de valores de crominancia (Cb y Cr). Las imágenes en formato RGB se pueden convertir o transformar en formato YCbCr y viceversa, el proceso también se conoce como transformación o conversión de color. Si una imagen es monocromática, la imagen puede comprender solo un arreglo de muestras de luminancia. Por consiguiente, una imagen puede ser, por ejemplo, un arreglo de muestras de luma en formato monocromático o un arreglo de muestras de luma y dos arreglos correspondientes de muestras de croma en formato de color 4:2:0, 4:2: 2 y 4:4: 4:4. Las modalidades del codificador de vídeo 20 pueden comprender una unidad de particionado de imagen (no representada en la Figura 2) configurada para dividir la imagen 17 en una pluralidad de bloques de imagen 203 (típicamente no superpuestos). Estos bloques también se pueden referir como bloques raíz, macrobloques (H.264/AVC) o bloques de árbol de codificación (CTB) o unidades de árbol de codificación (CTU) (H.265/HEVC y VVC). La unidad de particionado de imagen se puede configurar para usar el mismo tamaño de bloque para todas las imágenes de una secuencia de vídeo y la cuadrícula correspondiente que define el tamaño de bloque, o para cambiar el tamaño de bloque entre imágenes o subconjuntos o grupos de imágenes, y particionar cada imagen en los bloques correspondientes.
En modalidades adicionales, el codificador de vídeo se puede configurar para recibir directamente un bloque 203 de la imagen 17, por ejemplo, uno, varios o todos los bloques que forman la imagen 17. El bloque de imagen 203 también se puede referir como bloque de imagen actual o bloque de imagen que se va a codificar.
Al igual que la imagen 17, el bloque de imagen 203 nuevamente es o se puede considerar como un arreglo bidimensional o matriz de muestras con valores de intensidad (valores de muestra), aunque de dimensión más pequeña que la imagen 17. En otras palabras, el bloque 203 puede comprender, por ejemplo, un arreglo de muestras (por ejemplo, un arreglo de luma en el caso de una imagen monocromática 17, o un arreglo de luma o croma en el caso de una imagen de color) o tres arreglos de muestras (por ejemplo, un arreglo de luma y dos arreglos de croma en el caso de una imagen de color 17) o cualquier otro número y/o tipo de arreglos dependiendo del formato de color aplicado. El número de muestras en dirección horizontal y vertical (o eje) del bloque 203 define el tamaño del bloque 203. Por consiguiente, un bloque puede, por ejemplo, una matriz de muestras MxN (columna M por fila N) o una matriz MxN de coeficientes de transformación.
Se pueden configurar modalidades del codificador de vídeo 20 como se muestra en la Figura 2 para codificar el bloque de imagen 17 por bloque, por ejemplo, la codificación y predicción se realiza por bloque 203.
Las modalidades del codificador de vídeo 20 como se muestra en la Figura 2 se pueden configurar además para particionar y/o codificar la imagen mediante el uso de segmentos (también denominados segmentos de vídeo), en donde una imagen se puede particionar o codificar mediante el uso de uno o más segmentos (típicamente no superpuestos), y cada segmento puede comprender uno o más bloques (por ejemplo, CTU) o uno o más grupos de bloques (por ejemplo, mosaicos (H.265/HEVC y VVC) o ladrillos (VvC)).
Las modalidades del codificador de vídeo 20 como se muestra en la Figura 2 se pueden configurar adicionalmente para particionar y/o codificar la imagen mediante el uso de grupos de mosaicos/segmentos (también denominados grupos de mosaicos de vídeo) y/o mosaicos (también denominados mosaicos de vídeo), en donde una imagen se puede particionar o codificar mediante el uso de uno o más grupos de mosaicos/segmentos (típicamente no superpuestos), y cada grupo de mosaicos/segmentos puede comprender, por ejemplo, uno o más bloques (por ejemplo, CTU) o una o más mosaicos, en donde cada mosaico, por ejemplo, puede tener forma rectangular y puede comprender uno o más bloques (por ejemplo, CTU), por ejemplo, bloques completos o fraccionarios.
Cálculo residual
La unidad de cálculo residual 204 se puede configurar para calcular un bloque residual 205 (también denominado residual 205) con base en el bloque de imagen 203 y un bloque de predicción 265 (los detalles adicionales sobre el bloque de predicción 265 se proporcionan más adelante), por ejemplo al restar valores de muestra del bloque de predicción 265 de valores de muestra del bloque de imagen 203, muestra por muestra (píxel por píxel) para obtener el bloque residual 205 en el dominio de muestra.
Transformación
La unidad de procesamiento de transformación 206 se puede configurar para aplicar una transformación, por ejemplo, una transformación discreta de coseno (DCT) o una transformación discreta de seno (DST), a los valores de muestra del bloque residual 205 para obtener coeficientes de transformación 207 en un dominio de transformación. Los coeficientes de transformación 207 también se pueden referir como coeficientes residuales de transformación y representan el bloque residual 205 en el dominio de transformación.
La unidad de procesamiento de transformación 206 se puede configurar para aplicar aproximaciones enteras de DCT/DST, tal como las transformaciones especificadas para H.265/HEVC. En comparación con una transformación DCT ortogonal, estas aproximaciones enteras generalmente se modifican en escala por un factor determinado. Para preservar la norma del bloque residual que se procesa mediante transformaciones directas e inversas, se aplican factores de modificación de escala adicionales como parte del proceso de transformación. Los factores de escala se eligen típicamente con base en ciertas limitaciones, como factores de escala que son una potencia de dos para operaciones de desplazamiento, profundidad de bits de los coeficientes de transformación, compensación entre precisión y costos de implementación, etc. Los factores de modificación de escala específicos se especifican, por ejemplo, para la transformación inversa, por ejemplo, mediante la unidad de procesamiento de transformación inversa 212 (y la transformación inversa correspondiente, por ejemplo, mediante la unidad de procesamiento de transformación inversa 312 en el decodificador de vídeo 30) y los factores de modificación de escala correspondientes para la transformación directa, por ejemplo, mediante la unidad de procesamiento de transformación 206, en un codificador 20 se pueden especificar en consecuencia.
Se pueden configurar modalidades del codificador de vídeo 20 (respectivamente unidad de procesamiento de transformación 206) para emitir parámetros de transformación, por ejemplo, un tipo de transformación o transformaciones, por ejemplo, directamente o codificada o comprimida a través de la unidad de codificación de entropía 270, de modo que, por ejemplo, el decodificador de vídeo 30 pueda recibir y usar los parámetros de transformación para decodificación.
Cuantificación
La unidad de cuantificación 208 se puede configurar para cuantificar los coeficientes de transformación 207 para obtener coeficientes cuantificados 209, por ejemplo, mediante la aplicación de cuantificación escalar o cuantificación vectorial. Los coeficientes cuantificados 209 también se pueden referir como coeficientes de transformación cuantificados 209 o coeficientes residuales cuantificados 209.
El proceso de cuantificación puede reducir la profundidad de bits asociada con algunos o todos los coeficientes de transformación 207. Por ejemplo, un coeficiente de transformación de n-bits se puede redondear hacia abajo a un coeficiente de transformación de m-bits durante la cuantificación, donde n es mayor que m. El grado de cuantificación se puede modificar ajustando un parámetro de cuantificación (QP). Por ejemplo para cuantificación escalar, se puede aplicar modificación de escala diferente para lograr cuantificación más fina o más gruesa. Los tamaños de paso de cuantificación más pequeños corresponden a una cuantificación más fina, mientras que los tamaños de paso de cuantificación más grandes corresponden a una cuantificación más gruesa. El tamaño de paso de cuantificación aplicable se puede indicar mediante un parámetro de cuantificación (QP). El parámetro de cuantificación puede ser, por ejemplo, un índice de un conjunto predefinido de tamaños de paso de cuantificación aplicables. Por ejemplo, parámetros de cuantificación pequeños pueden corresponder a una cuantificación fina (tamaños de paso de cuantificación pequeños) y parámetros de cuantificación grandes pueden corresponder a una cuantificación gruesa (tamaños de paso de cuantificación grandes) o viceversa. La cuantificación puede incluir división por un tamaño de paso de cuantificación y un tamaño de paso correspondiente y/o la descuantificación inversa, por ejemplo, por unidad de cuantificación inversa 210, puede incluir multiplicación por el tamaño de paso de cuantificación. Las modalidades de acuerdo con algunas normas, por ejemplo, HEVC, se pueden configurar para usar un parámetro de cuantificación para determinar el tamaño de paso de cuantificación. En general, el tamaño de paso de cuantificación se puede calcular con base en un parámetro de cuantificación usando de una aproximación de punto fijo de una ecuación que incluye división. Se pueden introducir factores de modificación de escala adicionales para cuantificación y descuantificación para restaurar la norma del bloque residual, que se puede modificar debido a la modificación escala utilizada en la aproximación de punto fijo de la ecuación para el tamaño de paso de cuantificación y el parámetro de cuantificación. En una implementación de ejemplo, se puede combinar transformación inversa y descuantificación.
De manera alternativa, tablas de cuantificación personalizadas se pueden utilizar y señalizar desde un codificador a un decodificador, por ejemplo, en un flujo de bits. La cuantificación es una operación con pérdidas, en donde la pérdida aumenta con el aumento de tamaños de paso de cuantificación.
Se pueden configurar modalidades del codificador de vídeo 20 (respectivamente unidad de cuantificación 208) para emitir parámetros de cuantificación (QP), por ejemplo, directamente o codificados a través de la unidad de codificación de entropía 270, de modo que, por ejemplo, el decodificador de vídeo 30 pueda recibir y aplicar los parámetros de cuantificación para decodificación.
Cuantificación inversa
La unidad de cuantificación inversa 210 se configura para aplicar la cuantificación inversa de la unidad de cuantificación 208 en los coeficientes cuantificados para obtener coeficientes descuantificados 211, por ejemplo, mediante la aplicación del inverso del esquema de cuantificación aplicado por la unidad de cuantificación 208 con base en o utilizando el mismo tamaño de paso de cuantificación que la unidad de cuantificación 208. Los coeficientes descuantificados 211 también se pueden denominar como coeficientes residuales descuantificados 211 y corresponden - aunque generalmente no son idénticos a los coeficientes de transformación debido a la pérdida por cuantificación - a los coeficientes de transformación 207.
Transformación inversa
La unidad de procesamiento de transformación inversa 212 se configura para aplicar la transformación inversa de la transformación aplicada por la unidad de procesamiento de transformación 206, por ejemplo, una transformación inversa discreta de coseno (DCT) o transformación inversa discreta de seno (DST) u otras transformaciones inversas, para obtener un bloque residual reconstruido 213 (o coeficientes correspondientes descuantificados 213) en el dominio de muestra. El bloque residual reconstruido 213 también se puede denominar como bloque de transformación 213.
Reconstrucción
La unidad de reconstrucción 214 (por ejemplo, añadidor o sumador 214) se configura para sumar el bloque de transformación 213 (es decir, el bloque residual reconstruido 213) al bloque de predicción 265 para obtener un bloque reconstruido 215 en el dominio de muestra, por ejemplo, sumando - muestra por muestra - valores de muestra del bloque residual reconstruido 213 y valores de muestra del bloque de predicción 265.
Filtrado
La unidad de filtro de bucle 220 (o “filtro de bucle” corto 220), se configura para filtrar el bloque reconstruido 215 para obtener un bloque filtrado 221, o en general, para filtrar muestras reconstruidas para obtener valores de muestra filtrados. La unidad de filtro de bucle se configura, por ejemplo, para suavizar transiciones de píxeles o mejorar de otro modo la calidad de vídeo. La unidad de filtro de bucle 220 puede comprender uno o más filtros de bucle tal como un filtro de desbloqueo, un filtro de desplazamiento adaptativo de muestra (SAO) o uno o más filtros adicionales, por ejemplo, un filtro bilateral, un filtro de bucle adaptativo (ALF), una definición, filtros de suavizado o filtros colaborativos o cualquier combinación de los mismos. En un ejemplo, la unidad de filtro de bucle 220 puede comprender un filtro de desbloqueo, un filtro SAO y un filtro ALF. El orden del proceso de filtrado puede ser el filtro de desbloqueo, SAO y ALF. En otro ejemplo, se agrega un proceso llamado mapeo de luma con modificación de escala de croma (LMCS) (es decir, el remodelador adaptativo en bucle).
Este proceso se realiza antes del desbloqueo. En otro ejemplo, el proceso de filtro de desbloqueo también se puede aplicar a bordes de subbloques internos, por ejemplo, bordes de subbloques afines, bordes de subbloques a TmVP, bordes de transformación de subbloque (SBT) y intrabordes de subpartición (ISP). Aunque la unidad de filtro de bucle 220 se muestra en la Figura 2 como un filtro en bucle, en otras configuraciones, la unidad de filtro de bucle 220 se puede implementar como un filtro de bucle posterior. El bloque filtrado 221 también se puede denominar como bloque reconstruido filtrado 221.
Se pueden configurar modalidades del codificador de vídeo 20 (respectivamente unidad de filtro de bucle 220) para emitir parámetros de filtro de bucle (tal como parámetros de filtro SAO o parámetros de filtro ALF o parámetros LMCS), por ejemplo, directamente o codificada a través de la unidad de codificación de entropía 270, de modo que, por ejemplo, un decodificador 30 puede recibir y aplicar los mismos parámetros de filtro de bucle o filtros de bucle respectivos para decodificación.
Memoria intermedia de imágenes decodificadas
La memoria intermedia de imágenes decodificadas (DPB) 230 puede ser una memoria que almacena imágenes de referencia, o en datos de imágenes de referencia generales, para codificar datos de vídeo mediante el codificador de vídeo 20. La DPB 230 puede estar formada por cualquiera de una variedad de dispositivos de memoria, tal como memoria de acceso aleatorio dinámica (DRAM), que incluye DRAM síncrona (SDRAM), RAM magneto-resistiva (MRAM), RAM resistiva (RRAM) u otros tipos de dispositivos de memoria. Se puede configurar la memoria intermedia de imágenes decodificadas (DPB) 230 para almacenar uno o más bloques filtrados 221. La memoria intermedia de imágenes decodificadas 230 se puede configurar además para almacenar otros bloques previamente filtrados, por ejemplo, bloques previamente reconstruidos y filtrados 221, de la misma imagen actual o de imágenes diferentes, por ejemplo, imágenes previamente reconstruidas, y puede proporcionar imágenes completas previamente reconstruidas, es decir, decodificadas, imágenes (y bloques y muestras de referencia correspondientes) y/o una imagen actual parcialmente reconstruida (y bloques y muestras de referencia correspondientes), por ejemplo para interpredicción. La memoria intermedia de imágenes decodificadas (DPB) 230 también se puede configurar para almacenar uno o más bloques reconstruidos no filtrados 215, o en general muestras reconstruidas no filtradas, por ejemplo, si el bloque reconstruido 215 no se filtra mediante la unidad de filtro de bucle 220, o cualquier otra versión procesada adicional de los bloques o muestras reconstruidas.
Selección de modo (particionado y predicción)
La unidad de selección de modo 260 comprende la unidad de particionado 262, la unidad de interpredicción 244 y la unidad de intrapredicción 254, y se configura para recibir u obtener datos de imagen originales, por ejemplo, un bloque original 203 (bloque actual 203 de la imagen actual 17), y datos de imagen reconstruidos, por ejemplo, muestras reconstruidas filtradas y/o no filtradas o bloques de la misma imagen (actual) y/o de una o una pluralidad de imágenes previamente decodificadas, por ejemplo, de la memoria intermedia de imágenes decodificadas 230 u otras memorias intermedias (por ejemplo, memoria intermedia lineal, no mostrada). Los datos de imagen reconstruidos se utilizan como datos de imagen de referencia para predicción, por ejemplo, interpredicción o intrapredicción, para obtener un bloque de predicción 265 o predictor 265.
La unidad de selección de modo 260 se puede configurar para determinar o seleccionar un particionado para un modo de predicción de bloque actual (que incluye sin partición) y un modo de predicción (por ejemplo, un modo de intra- o interpredicción) y generar un bloque de predicción correspondiente 265, que se utiliza para el cálculo del bloque residual 205 y para la reconstrucción del bloque reconstruido 215.
Las modalidades de la unidad de selección de modo 260 se pueden configurar para seleccionar la partición y el modo de predicción (por ejemplo de aquellos soportados por o disponibles para la unidad de selección de modo 260), que proporcionan la mejor coincidencia o, en otras palabras, el residuo mínimo (residuo mínimo significa mejor compresión para transmisión o almacenamiento), o una sobrecarga de señalización mínima (sobrecarga de señalización mínima significa mejor compresión para transmisión o almacenamiento), o que considera o equilibra ambos. La unidad de selección de modo 260 se puede configurar para determinar el modo de partición y predicción con base en la optimización de distorsión de velocidad (RDO), es decir, seleccionar el modo de predicción que proporciona una distorsión de velocidad mínima. Términos como “mejor”, “mínimo”, "óptimo”, etc. en este contexto no se refieren necesariamente a un “mejor”, “mínimo”, “óptimo” general etc., pero también pueden hacer referencia al cumplimiento de un criterio de terminación o selección como un valor que excede o cae por debajo de un umbral u otras restricciones que conducen potencialmente a una “selección subóptima”, pero que reduce la complejidad y el tiempo de procesamiento.
En otras palabras, la unidad de particionado 262 se puede configurar para particionar una imagen de una secuencia de vídeo en una secuencia de unidades de árbol de codificación (CTU), y la CTU 203 se puede particionar adicionalmente en particiones o subbloques de bloques más pequeños (que forman nuevamente bloques), por ejemplo, iterativamente usando partición de árbol cuaternario (QT), partición binarias (BT) o partición de árbol ternario (TT) o cualquier combinación de las mismas, y para realizar, por ejemplo, la predicción para cada una de las particiones o subbloques de bloques, en donde la selección de modo comprende la selección de la estructura de árbol del bloque particionado 203 y los modos de predicción se aplican a cada una de las particiones o subbloques de bloques.
En lo siguiente, el particionado (por ejemplo, mediante la unidad de particionado 260) y el procesamiento de predicción (por la unidad de interpredicción 244 y la unidad de intrapredicción 254) realizados por un codificador de vídeo de ejemplo 20 se explicarán en más detalle.
Particionado
La unidad de particionado 262 se puede configurar para particionar una imagen de una secuencia de vídeo en una secuencia de unidades de árbol de codificación (CTU), y la unidad de particionado 262 puede particionar (o dividir) una unidad de árbol de codificación (CTU) 203 en particiones más pequeñas, por ejemplo, bloques más pequeños de tamaño cuadrado o rectangular. Para una imagen que tiene tres arreglos de muestras, una CTU consiste de un bloque de N*N de muestras de luma junto con dos bloques correspondientes de muestras de croma. El tamaño máximo permitido del bloque luma en una CTU se especifica para que sea 128*128 en el desarrollo de codificación de vídeo versátil (VVC), pero se puede especificar para que sea valor en lugar de 128x128 en el futuro, por ejemplo, 256x256. Las CTU de una imagen se pueden agrupar/reagrupar como grupos de segmentos/mosaicos, mosaicos o ladrillos. Un mosaico cubre una región rectangular de una imagen y un mosaico se puede dividir en uno o más ladrillos. Un ladrillo consiste de un número de filas de CTU dentro de un mosaico. Un mosaico que no se particiona en múltiples ladrillos se puede conocer como un ladrillo. Sin embargo, un ladrillo es un subconjunto verdadero de un mosaico y no se conoce como un mosaico. Hay dos modos de grupos de mosaicos soportados en VVC, es decir, el modo de grupo de segmentos/mosaicos de escaneo de trama y el modo de segmento rectangular. En el modo de grupo de mosaicos de escaneo de trama, un grupo de segmentos/mosaicos contiene una secuencia de mosaicos en el escaneo de trama de mosaicos de una imagen. En el modo de segmento rectangular, un segmento contiene un número de ladrillos de una imagen que forman colectivamente una región rectangular de la imagen. Los ladrillos dentro de un segmento rectangular están en el orden de escaneo de trama de ladrillo del segmento. Estos bloques más pequeños (que también se pueden denominar como subbloques) se pueden particionar adicionalmente en particiones aún más pequeñas. Esto también se refiere a la partición de árboles o partición jerárquica de árboles, en donde un bloque raíz, por ejemplo, en el nivel de árbol raíz 0 (nivel de jerarquía 0, profundidad 0), se puede particionar recursivamente, por ejemplo, particionar en dos o más bloques de un siguiente nivel de árbol inferior, por ejemplo, nodos en nivel de árbol 1 (nivel de jerarquía 1, profundidad 1), en donde estos bloques se pueden particionar nuevamente en dos o más bloques de un siguiente nivel inferior, por ejemplo, nivel de árbol 2 (nivel de jerarquía 2, profundidad 2), etc. hasta que se termina la partición, por ejemplo, porque se cumple un criterio de terminación, por ejemplo, se alcanza una profundidad de árbol máxima o un tamaño de bloque mínimo. Los bloques que no se particionan adicionalmente también se conocen como bloques de hoja o nodos hoja del árbol. Un árbol que usa particiones en dos particiones se conoce como árbol binario (BT), un árbol que usa particiones en tres particiones se conoce como árbol ternario (TT), y un árbol que usa particiones en cuatro particiones se conoce como árbol cuaternario (QT).
Por ejemplo, una unidad de árbol de codificación (CTU) puede ser o comprender un CTB de muestras de luma, dos CTB correspondientes de muestras de croma de una imagen que tiene tres arreglos de muestras o un CTB de muestras de una imagen monocromática o una imagen que se codifica usando tres planos de color separados y estructuras de sintaxis utilizadas para codificar las muestras.
De manera correspondiente, un bloque de árbol de codificación (CTB) puede ser un bloque de muestras de NxN para algún valor de N de modo que la división de un componente en CTB sea un particionado. Una unidad de codificación (CU) puede ser o comprender un bloque de codificación de muestras de luma, dos bloques de codificación correspondientes de muestras de croma de una imagen que tiene tres arreglos de muestras, o un bloque de codificación de muestras de una imagen monocromática o una imagen que se codifica usando tres planos de color y estructuras de sintaxis separadas utilizadas para codificar las muestras. En consecuencia, un bloque de codificación (CB) puede ser un bloque de muestras de MxN para algunos valores de M y N de modo que la división de un CTB en bloques de codificación sea un particionado.
En modalidades, por ejemplo, de acuerdo con HEVC, una unidad de árbol de codificación (CTU) se puede dividir en CU mediante el uso de una estructura de árbol cuaternario denotada como árbol de codificación. La decisión de si se debe codificar un área de imagen utilizando predicción interimagen (temporal) o intraimagen (espacial) se toma al nivel de CU de hoja. Cada CU de hoja se puede dividir además en una, dos o cuatro PU de acuerdo con el tipo de división PU. Dentro de una PU, se aplica el mismo proceso de predicción y la información relevante se transmite al decodificador de una forma por PU. Después de obtener el bloque residual mediante la aplicación del proceso de predicción con base en el tipo de división PU, una CU de hoja se puede particionar en unidades de transformación (TU) de acuerdo con otra estructura de árbol cuaternario similar al árbol de codificación para la CU.
En modalidades, por ejemplo, de acuerdo con la norma de codificación de vídeo más reciente actualmente en desarrollo, a la que se hace referencia como codificación de vídeo versátil (VC), se utiliza una estructura de segmentación de divisiones binarias y ternarias para particionar una unidad de árbol de codificación. En la estructura de árbol de codificación dentro de una unidad de árbol de codificación, una CU puede tener una forma cuadrada o rectangular. Por ejemplo, la unidad de árbol de codificación (CTU) se particiona primero mediante un árbol cuaternario. Luego, los nodos hoja de árbol cuaternario se pueden particionar adicionalmente mediante una estructura de árbol de tipo múltiple. Hay cuatro tipos de división en estructura de árbol de tipo múltiple, división binaria vertical (SPLIT_BT_VER), división binaria horizontal (SPLIT_BT_HOR), división ternaria vertical (SPLIT_TT_VER) y división ternaria horizontal (SPLIT_TT_HOR). Los nodos hoja de árbol de tipo múltiple se denominan unidades de codificación (CU), y a menos que la CU sea demasiado grande para la longitud de transformación máxima, esta segmentación se utiliza para predicción y procesamiento de transformación sin ningún particionado adicional. Esto significa que, en la mayoría de los casos, la CU, PU y TU tienen el mismo tamaño de bloque en el árbol cuaternario con estructura de bloque de codificación de árbol de tipo múltiple anidado. La excepción se presenta cuando la longitud máxima de transformación soportada es menor que el ancho o la altura del componente de color de la CU. La VVC desarrolla un mecanismo de señalización único de la información de división de particiones en árbol cuaternario con estructura de árbol de codificación de tipo múltiple anidada. En el mecanismo de señalización, una unidad de árbol de codificación (CTU) se trata como la raíz de un árbol cuaternario y se divide primero mediante una estructura de árbol cuaternario. Cada nodo hoja de árbol cuaternario (cuando es lo suficientemente grande para permitirlo) se particiona adicionalmente mediante una estructura de árbol de tipo múltiple. En la estructura de árbol de tipo múltiple, se señaliza una primera bandera (mtt_split_cu_flag) para indicar si el nodo se particiona adicionalmente; cuando un nodo se particiona adicionalmente, se señaliza una segunda bandera (mtt_split_cu_verticaLflag) para indicar la dirección de división, y luego se señaliza una tercera bandera (mtt_split_cu_binary_flag) para indicar si la división es una división binaria o una división ternaria. Con base en los valores de mtt_split_cu_vertical_flag y mtt_split_cu_binary_flag, el modo de división de árbol de tipo múltiple (MttSplitMode) de una CU se puede derivar mediante un decodificador con base en una regla predefinida o una tabla. Se debe señalar que, para un diseño determinado, por ejemplo, bloque de luma de 64*64 y diseño de procesamiento en paralelo de croma de 32*32 en decodificadores de hardware VVC, se prohíbe la división TT cuando ya sea el ancho o la altura de un bloque de codificación luma es mayor que 64, como se muestra en la Figura 6. La división TT también está prohibida cuando ya sea el ancho o la altura de un bloque de codificación de croma es mayor que 32. El diseño de procesamiento en paralelo dividirá una en unidades virtuales de datos de procesamiento en paralelo (VPDU) que se definen como unidades no superpuestas en una imagen. En los decodificadores de hardware, las VPDU sucesivas se procesan por múltiples etapas de procesamiento en paralelo simultáneamente. El tamaño de VPDU es aproximadamente proporcional al tamaño de memoria intermedia en la mayoría de las etapas de procesamiento en paralelo, por lo que es importante mantener el tamaño de VPDU pequeño. En la mayoría de los decodificadores de hardware, el tamaño de VPDU se puede configurar en el tamaño máximo de bloque de transformación (TB). Sin embargo, en VVC, la partición de árbol ternario (TT) y árbol binario (BT) puede conducir al aumento del tamaño de VPDU.
Además, se debe señalar que, cuando una parte de un bloque de nodo de árbol excede el límite de imagen inferior o derecho, el bloque de nodo de árbol se ve obligado a dividirse hasta que todas las muestras de cada CU codificada se ubican dentro de los límites de imagen.
Como un ejemplo, la herramienta de intra-subparticiones (ISP) puede dividir bloques intrapredichos de luma de forma vertical u horizontal en 2 o 4 subparticiones dependiendo del tamaño de bloque.
En un ejemplo, la unidad de selección de modo 260 del codificador de vídeo 20 se puede configurar para realizar cualquier combinación de las técnicas de partición descritas en la presente.
Como se describió anteriormente, el codificador de vídeo 20 se configura para determinar o seleccionar el mejor modo de predicción o un modo de predicción óptimo de un conjunto de modos de predicción (por ejemplo, predeterminados). El conjunto de modos de predicción puede comprender, por ejemplo, modos de intrapredicción y/o modos de interpredicción.
Intrapredicción
El conjunto de modos de intrapredicción puede comprender 35 modos de intrapredicción diferentes, por ejemplo, modos no direccionales como modo DC (o medio) y modo plano, o modos direccionales, por ejemplo, como se define en HEVC, o puede comprender 67 modos de intrapredicción diferentes, por ejemplo, modos no direccionales como modo DC (o medio) y modo plano, o modos direccionales, por ejemplo, como se define para VVC. Como ejemplo, varios modos de intrapredicción angular convencionales se reemplazan adaptativamente con modos de intrapredicción de ángulo ancho para los bloques no cuadrados, por ejemplo, como se define en VVC. Como otro ejemplo, para evitar operaciones de división para predicción DC, solo se utiliza el lado más largo para calcular el promedio de bloques no cuadrados. Y, los resultados de intrapredicción del modo plano se pueden modificar adicionalmente mediante un método de combinación de intrapredicción dependiente de la posición (PDPC).
La unidad de intrapredicción 254 se configura para usar muestras reconstruidas de bloques vecinos de la misma imagen actual para generar un bloque de intrapredicción 265 de acuerdo con un modo de intrapredicción del conjunto de modos de intrapredicción.
La unidad de intrapredicción 254 (o en general la unidad de selección de modo 260) se configura además para emitir parámetros de intrapredicción (o en información general indicativa del modo de intrapredicción seleccionado para el bloque) a la unidad de codificación de entropía 270 en forma de elementos de sintaxis 266 para inclusión en los datos de imagen codificados 21, de modo que, por ejemplo, el decodificador de vídeo 30 puede recibir y usar los parámetros de predicción para decodificación.
Interpredicción
El conjunto de (o posibles) modos de interpredicción depende de las imágenes de referencia disponibles (es decir, imágenes anteriores al menos parcialmente decodificadas, por ejemplo, almacenadas en la DBP 230) y otros parámetros de interpredicción, por ejemplo, si la imagen de referencia completa o solo una parte, por ejemplo, un área de ventana de búsqueda alrededor del área del bloque actual, de la imagen de referencia se utiliza para buscar un bloque de referencia que coincida mejor y/o por ejemplo, si se aplica interpolación de píxeles, por ejemplo, interpolación de medio/semi-píxel, cuarto de píxel, 1/16 de píxel o no.
Además de los modos de predicción anteriores, se puede aplicar un modo de salto, un modo directo y/u otro modo de interpredicción.
Por ejemplo, predicción de fusión extendida, la lista de candidatos de fusión de este modo se construye al incluir los siguientes cinco tipos de candidatos en orden: MVP espacial de CU vecinas espaciales, MVP temporal de CU coubicadas, MVP basado en historial de una tabla FIFO, MVP promedio por pares y MV cero. Y se puede aplicar un refinamiento de vector de lado de decodificador (DMVR) basado en coincidencia bilateral para aumentar la precisión de los MV del modo de fusión. Modo de fusión con MVD (MMVD), que proviene del modo de fusión con diferencias de vector de movimiento. Se señaliza una bandera MMVD justo después de enviar una bandera de salto y una bandera de fusión para especificar si se utiliza el modo MMVD para una CU. Y se puede aplicar un esquema de resolución de vector de movimiento adaptativo (AMVR) a nivel de CU. La AMVR permite codificar MVD de la CU con diferente precisión. Dependiendo del modo de predicción para la CU actual, los MVD de la CU actual se pueden seleccionar de manera adaptativa. Cuando una CU se codifica en modo de fusión, se puede aplicar el modo combinado inter/intrapredicción (CIIP) a la CU actual. Se realiza un promedio ponderado de las señales inter e intrapredicción para obtener la predicción CIIP. La predicción compensada por movimiento afín, el campo de movimiento afín del bloque se describe mediante información de movimiento de vectores de movimiento de dos puntos de control (4 parámetros) o vectores de movimiento de tres puntos de control (6 parámetros). Predicción de vector de movimiento temporal basada en subbloques (SbTMVP), que es similar a la predicción de vector de movimiento temporal (TMVP) en HEVC, pero predice los vectores de movimiento de las sub-CU dentro de la CU actual. El flujo óptico bidireccional (BDOF), anteriormente denominado BIO, es una versión más simple que requiere mucho menos cálculo, especialmente en términos de número de multiplicaciones y el tamaño del multiplicador. Modo de partición de triángulo, en este modo, una CU se divide uniformemente en dos particiones en forma de triángulo, usando la división diagonal o la división anti-diagonal. Además, el modo bipredicción se extiende más allá del promedio simple para permitir el promedio ponderado de las dos señales de predicción.
La unidad de interpredicción 244 puede incluir una unidad de estimación de movimiento (ME) y una unidad de compensación de movimiento (MC) (ambas no se muestran en la Figura 2). La unidad de estimación de movimiento se puede configurar para recibir u obtener el bloque de imagen 203 (bloque de imagen actual 203 de la imagen actual 17) y una imagen decodificada 231, o al menos uno o una pluralidad de bloques previamente reconstruidos, por ejemplo, bloques reconstruidos de una o una pluralidad de otras/diferentes imágenes previamente decodificadas 231, para estimación de movimiento. Por ejemplo, una secuencia de vídeo puede comprender la imagen actual y las imágenes previamente decodificadas 231, o en otras palabras, la imagen actual y las imágenes previamente decodificadas 231 pueden ser parte de o formar una secuencia de imágenes que forman una secuencia de vídeo.
El codificador 20 se puede configurar, por ejemplo, para seleccionar un bloque de referencia de una pluralidad de bloques de referencia de la misma o diferentes imágenes de la pluralidad de otras imágenes y proporcionar una imagen de referencia (o índice de imagen de referencia) y/o un desplazamiento (desplazamiento espacial) entre la posición (coordenadas x, y) del bloque de referencia y la posición del bloque actual como parámetros de interpredicción a la unidad de estimación de movimiento. Este desplazamiento también se conoce como vector de movimiento (MV).
La unidad de compensación de movimiento se configura para obtener, por ejemplo, recibir, un parámetro de interpredicción y para realizar interpredicción con base en o mediante el uso del parámetro de interpredicción para obtener un bloque de interpredicción 265. La compensación de movimiento, realizada por la unidad de compensación de movimiento, puede implicar recuperar o generar el bloque de predicción con base en el vector de movimiento/bloque determinado por estimación de movimiento, posiblemente realizando interpolaciones a precisión de subpíxeles. El filtrado de interpolación puede generar muestras de píxeles adicionales a partir de muestras de píxeles conocidas, aumentando así la cantidad de bloques de predicción candidatos que se pueden usar para codificar un bloque de imagen. Después de recibir el vector de movimiento para la PU del bloque de imagen actual, la unidad de compensación de movimiento puede ubicar el bloque de predicción al que apunta el vector de movimiento en una de las listas de imágenes de referencia.
La unidad de compensación movimiento también puede generar elementos de sintaxis asociados con los bloques y segmentos de vídeo para su uso por decodificador de vídeo 30 en decodificación de los bloques de imagen del segmento de vídeo. Además o como una alternativa a los segmentos y los elementos de sintaxis respectivos, se pueden generar o utilizar grupos de mosaicos y/o mosaicos y elementos de sintaxis respectivos.
Codificación de entropía
La unidad de codificación de entropía 270 se configura para aplicar, por ejemplo, un algoritmo o esquema de codificación de entropía (por ejemplo, un esquema de codificación de longitud variable (VLC), un esquema VLC adaptativa al contexto (CAVLC), un esquema de codificación aritmética, una binarización, una codificación aritmética binaria (CABAC), codificación aritmética binaria adaptativa al contexto con base en sintaxis (SBAC), codificación de entropía de partición de intervalo de probabilidad (PIPE) u otra metodología o técnica de codificación de entropía) o derivación (sin compresión) en los coeficientes cuantificados 209, parámetros de interpredicción, parámetros de intrapredicción, parámetros de filtro de bucle y/u otros elementos de sintaxis para obtener datos de imagen codificados 21 que se pueden generar a través de la salida 272, por ejemplo, en forma de un flujo de bits codificado 21, de modo que, por ejemplo, el decodificador de vídeo 30 puede recibir y usar los parámetros para decodificación. El flujo de bits codificado 21 se puede transmitir al decodificador de vídeo 30, o almacenarse en una memoria para su posterior transmisión o recuperación mediante el decodificador de vídeo 30.
Otras variaciones estructurales del codificador de vídeo 20 se pueden usar para codificar el flujo de vídeo. Por ejemplo, un codificador no basado en transformación 20 puede cuantificar la señal residual directamente sin la unidad de procesamiento de transformación 206 para determinados bloques o tramas. En otra implementación, un codificador 20 puede tener la unidad de cuantificación 208 y la unidad de cuantificación inversa 210 combinadas en una sola unidad.
Decodificador y método de decodificación
La Figura 3 muestra un decodificador de vídeo de ejemplo 30 que se configura para implementar las técnicas de la presente solicitud. El decodificador de vídeo 30 se configura para recibir datos de imagen codificados 21 (por ejemplo, flujo de bits codificado 21), por ejemplo, codificado por el codificador 20, para obtener una imagen decodificada 331. Los datos de imagen codificados comprenden información para decodificar los datos de imagen codificados, por ejemplo, datos que representan bloques de imagen de un segmento de vídeo codificado (y/o grupos de mosaicos o mosaicos) y elementos de sintaxis asociados.
En el ejemplo de la Figura 3, el decodificador 30 comprende una unidad de decodificación de entropía 304, una unidad de cuantificación inversa 310, una unidad de procesamiento de transformación inversa 312, una unidad de reconstrucción 314 (por ejemplo, un sumador 314), un filtro de bucle 320, una memoria intermedia de imágenes decodificadas (DBP) 330, una unidad de aplicación de modo 360, una unidad de interpredicción 344 y una unidad de intrapredicción 354. La unidad de intrapredicción 344 puede ser o incluir una unidad de compensación de movimiento. El decodificador de vídeo 30 puede, en algunos ejemplos, realizar una pasada de decodificación generalmente recíproca a la pasada de codificación descrita con respecto al codificador de vídeo 100 de la Figura 2. Como se explica con respecto al codificador 20, también se hace referencia a la unidad de cuantificación inversa 210, la unidad de procesamiento de transformación inversa 212, la unidad de reconstrucción 214, el filtro de bucle 220, la memoria intermedia de imágenes decodificadas (DPB) 230, la unidad de interpredicción 344 y la unidad de intrapredicción 354 como que forman el “decodificador integrado” del codificador de vídeo 20. Por consiguiente, la unidad de cuantificación inversa 310 puede ser idéntica en función a la unidad de cuantificación inversa 110, la unidad de procesamiento de transformación inversa 312 puede ser idéntica en función al filtro de bucle 220 y la memoria intermedia de imágenes decodificadas 330 puede ser idéntica en función a la memoria intermedia de imágenes decodificadas 230. Por lo tanto, las explicaciones proporcionadas para las respectivas unidades y funciones del codificador de vídeo 20 se aplican de manera correspondiente a las respectivas unidades y funciones del decodificador de vídeo 30.
Decodificación de entropía
La unidad de decodificación de entropía 304 se configura para analizar el flujo de bits 21 (o en general datos de imagen codificados 21) y realizar, por ejemplo, decodificación de entropía a los datos de imagen codificados 21 para obtener, por ejemplo, coeficientes cuantificados 309 y/o parámetros de codificación decodificados (no mostrados en la Figura 3), por ejemplo, cualquiera o todos los parámetros de interpredicción (por ejemplo, índice de imagen de referencia y vector de movimiento), parámetro intrapredicción (por ejemplo, modo o índice intrapredicción), parámetros de transformación, parámetros de cuantificación, parámetros de filtro de bucle y/u otros elementos de sintaxis. La unidad de decodificación de entropía 304 se puede configurar para aplicar los algoritmos o esquemas de decodificación correspondientes a los esquemas de codificación como se describe con respecto a la unidad de codificación de entropía 270 del codificador 20. La unidad de decodificación de entropía 304 se puede configurar además para proporcionar parámetros de interpredicción, parámetro de intrapredicción y/u otros elementos de sintaxis a la unidad de aplicación de modo 360 y otros parámetros a otras unidades del decodificador 30. El decodificador de vídeo 30 puede recibir los elementos de sintaxis al nivel de segmento de vídeo y/o al nivel de bloque de vídeo. Además o como una alternativa a los segmentos y los elementos de sintaxis respectivos, se pueden recibir y/o utilizar grupos de mosaicos y/o mosaicos y elementos de sintaxis respectivos.
Cuantificación inversa
La unidad de cuantificación inversa 310 se puede configurar para recibir parámetros de cuantificación (QP) (o en información general relacionada con la cuantificación inversa) y coeficientes cuantificados a partir de los datos de imagen codificados 21 (por ejemplo, mediante análisis y/o decodificación, por ejemplo, mediante unidad de decodificación de entropía 304) y para aplicar con base en los parámetros de cuantificación una cuantificación inversa en los coeficientes cuantificados decodificados 309 para obtener coeficientes descuantificados 311, que también se pueden denominar como coeficientes de transformación 311. El proceso de cuantificación inversa puede incluir el uso de un parámetro de cuantificación determinado mediante el codificador de vídeo 20 para cada bloque de vídeo en el segmento de vídeo (o grupo de mosaicos o mosaico) para determinar un grado de cuantificación y, de manera similar, un grado de cuantificación inversa que se debe aplicar.
Transformación inversa
La unidad de procesamiento de transformación inversa 312 se puede configurar para recibir coeficientes descuantificados 311, también denominados coeficientes de transformación 311, y para aplicar una transformación a los coeficientes descuantificados 311 para obtener bloques residuales reconstruidos 213 en el dominio de muestra. Los bloques residuales reconstruidos 213 también se pueden denominar como bloques de transformación 313. La transformación puede ser una transformación inversa, por ejemplo, una DCT inversa, una DST inversa, una transformación de enteros inversa o un proceso de transformación inversa conceptualmente similar. La unidad de procesamiento de transformación inversa 312 se puede configurar adicionalmente para recibir parámetros de transformación o información correspondiente a partir de los datos de imagen codificados 21 (por ejemplo, mediante análisis y/o decodificación, por ejemplo, mediante unidad de decodificación de entropía 304) para determinar la transformación que se va a aplicar a los coeficientes descuantificados 311.
Reconstrucción
La unidad de reconstrucción 314 (por ejemplo, añadidor o sumador 314) se puede configurar para sumar el bloque residual reconstruido 313 al bloque de predicción 365 para obtener un bloque reconstruido 315 en el dominio de muestra, por ejemplo, sumando los valores de muestra del bloque residual reconstruido 313 y los valores de muestra del bloque de predicción 365.
Filtrado
La unidad de filtro de bucle 320 (ya sea en el bucle de codificación o después del bucle de codificación) se configura para filtrar el bloque reconstruido 315 para obtener un bloque filtrado 321, por ejemplo, para suavizar transiciones de píxeles o mejorar de otro modo la calidad de vídeo. La unidad de filtro de bucle 320 puede comprender uno o más filtros de bucle tal como un filtro de desbloqueo, un filtro de desplazamiento adaptativo de muestra (SAO) o uno o más filtros adicionales, por ejemplo, un filtro bilateral, un filtro de bucle adaptativo (ALF), una definición, filtros de suavizado o filtros colaborativos o cualquier combinación de los mismos. En un ejemplo, la unidad de filtro de bucle 220 puede comprender un filtro de desbloqueo, un filtro SAO y un filtro ALF. El orden del proceso de filtrado puede ser el filtro de desbloqueo, SAO y ALF. En otro ejemplo, se agrega un proceso llamado mapeo de luma con modificación de escala de croma (LMCS) (es decir, el remodelador adaptativo en bucle). Este proceso se realiza antes del desbloqueo. En otro ejemplo, el proceso de filtro de desbloqueo también se puede aplicar a bordes de subbloques internos, por ejemplo, bordes de subbloques afines, bordes de subbloques ATMVP, bordes de transformación de subbloque (SBT) y intrabordes de subpartición (ISP). Aunque la unidad de filtro de bucle 320 se muestra en la Figura 3 como un filtro en bucle, en otras configuraciones, la unidad de filtro de bucle 320 se puede implementar como un filtro de bucle posterior.
Memoria intermedia de imágenes decodificadas
Los bloques de vídeo decodificados 321 de una imagen se almacenan en la memoria intermedia de imágenes decodificadas 330, que almacena las imágenes decodificadas 331 como imágenes de referencia para compensación de movimiento posterior para otras imágenes y/o para visualización de salida, respectivamente.
El decodificador 30 se configura para emitir la imagen decodificada 311, por ejemplo, a través de la salida 312, para su presentación o visualización a un usuario.
Predicción
La unidad de interpredicción 344 puede ser idéntica a la unidad de interpredicción 244 (en particular a la unidad de compensación de movimiento) y la unidad de intrapredicción 354 puede ser idéntica a la unidad de interpredicción 254 en función, y toma decisiones de división o partición y predicción con base en los parámetros de partición y/o predicción o información respectiva recibida a partir de los datos de imagen codificados 21 (por ejemplo, mediante análisis y/o decodificación, por ejemplo, mediante la unidad decodificación de entropía 304). La unidad de aplicación de modo 360 se puede configurar para realizar la predicción (intra o interpredicción) por bloque con base en imágenes reconstruidas, bloques o muestras respectivas (filtradas o no filtradas) para obtener el bloque de predicción 365.
Cuando el segmento de vídeo se codifica como un segmento intracodificado (I), la unidad de intrapredicción 354 de la unidad de aplicación de modo 360 se configura para generar el bloque de predicción 365 para un bloque de imagen del segmento de vídeo actual con base en un modo de intrapredicción señalizado y datos de bloques previamente decodificados de la imagen actual. Cuando la imagen de vídeo se codifica como un segmento intercodificado (es decir, B o P), la unidad de intercodificación 344 (por ejemplo, unidad de compensación de movimiento) de la unidad de aplicación de modo 360 se configura para producir bloques de predicción 365 para un bloque de vídeo del segmento de vídeo actual con base en los vectores de movimiento y otros elementos de sintaxis recibidos de la unidad de decodificación de entropía 304. Para interpredicción, los bloques de predicción se pueden producir a partir de una de las imágenes de referencia dentro de una de las listas de imágenes de referencia. El decodificador vídeo 30 puede construir las listas de tramas de referencia, Lista 0 y Lista 1, usando técnicas de construcción predeterminadas basadas en imágenes de referencia almacenadas en DPB 330. Lo mismo o similar se puede solicitar o mediante modalidades mediante el uso de grupos de mosaicos (por ejemplo, grupos de mosaicos de vídeo) y/o mosaicos (por ejemplo, mosaicos de vídeo) además o alternativamente a segmentos (por ejemplo, segmentos de vídeo), por ejemplo, un vídeo se puede codificar mediante el uso de grupos de mosaicos y/o mosaicos I, P o B. La unidad de aplicación de modo 360 se configura para determinar la información de predicción para un bloque de vídeo del segmento de vídeo actual mediante el análisis de los vectores de movimiento o información relacionada y otros elementos de sintaxis y utiliza la información de predicción para producir los bloques de predicción para el bloque de vídeo actual que se decodifica. Por ejemplo, la unidad de aplicación de modo 360 utiliza algunos de los elementos de sintaxis recibidos para determinar un modo de predicción (por ejemplo, intra o interpredicción) utilizado para codificar los bloques de vídeo del segmento de vídeo, un tipo de segmento de interpredicción (por ejemplo, segmento B, segmento P o segmento GPB), información de construcción para una o más de las listas de imágenes de referencia para el segmento, vectores de movimiento para cada bloque de vídeo intercodificado del segmento, estado de interpredicción para cada bloque de vídeo intercodificado del segmento y otra información para decodificar los bloques de vídeo en el segmento de vídeo actual. Lo mismo o similar se puede solicitar o mediante modalidades mediante el uso de grupos de mosaicos (por ejemplo, grupos de mosaicos de vídeo) y/o mosaicos (por ejemplo, mosaicos de vídeo) además o alternativamente a segmentos (por ejemplo, segmentos de vídeo), por ejemplo, un vídeo se puede codificar mediante el uso de grupos de mosaicos y/o mosaicos I, P o B.
Las modalidades del decodificador de vídeo 30 como se muestra en la Figura 3 se pueden configurar para particionar y/o decodificar la imagen mediante el uso de segmentos (también denominados segmentos de vídeo), en donde una imagen se puede particionar o decodificar mediante el uso de uno o más segmentos (típicamente no superpuestos), y cada segmento puede comprender uno o más bloques (por ejemplo, CTU) o uno o más grupos de bloques (por ejemplo, mosaicos (H.265/HEVC y VVC) o ladrillos (VvC)).
Las modalidades del decodificador de vídeo 30 como se muestra en la Figura 3 se pueden configurar para particionar y/o decodificar la imagen mediante el uso de grupos de segmentos/mosaicos (también denominados grupos de mosaicos de vídeo) y/o mosaicos (también denominados mosaicos de vídeo), en donde una imagen se puede particionar o decodificar mediante el uso de uno o más grupos de segmentos/mosaicos (típicamente no superpuestos), y cada grupo de segmentos/mosaicos puede comprender, por ejemplo, uno o más bloques (por ejemplo, CTU) o una o más mosaicos, en donde cada mosaico, por ejemplo, puede tener forma rectangular y puede comprender uno o más bloques (por ejemplo, CTU), por ejemplo, bloques completos o fraccionarios.
Otras variaciones del decodificador de vídeo 30 se pueden usar para decodificar los datos de imagen codificados 21. Por ejemplo, el decodificador 30 puede producir el flujo de vídeo de salida sin la unidad de filtrado de bucle 320. Por ejemplo, un decodificador no basado en transformación 30 puede cuantificar inversamente la señal residual directamente sin la unidad de procesamiento de transformación inversa 312 para determinados bloques o tramas. En otra implementación, el decodificador de vídeo 30 puede tener la unidad de cuantificación inversa 310 y la unidad de procesamiento de transformación inversa 312 combinadas en una sola unidad.
Se debe entender que, en el codificador 20 y el decodificador 30, un resultado de procesamiento de un paso actual se puede procesar adicionalmente y luego enviar al siguiente paso. Por ejemplo, después de filtrado de interpolación, derivación de vector de movimiento o filtrado de bucle, una operación adicional, tal como recorte o desplazamiento, se puede realizar en el resultado de procesamiento del filtrado de interpolación, derivación de vector de movimiento o filtrado de bucle.
Se debe señalar que se pueden aplicar operaciones adicionales a los vectores de movimiento derivados del bloque actual (que incluyen, pero no se limitan a, vectores de movimiento de punto de control del modo afín, vectores de movimiento de subbloque en modos afín, plano, ATMVP, vectores de movimiento temporal, etc.). Por ejemplo, el valor del vector de movimiento se restringe a un intervalo predefinido de acuerdo con su bit representativo. Si el bit representativo del vector de movimiento es bitDepth, entonces el intervalo es -2A(bitDepth-1) ~ 2A(bitDepth-1)-1, donde “A” significa exponenciación. Por ejemplo, si bitDepth se establece igual a 16, el intervalo es -32768 ~ 32767; si bitDepth se establece igual a 18, el intervalo es -131072~131071. Por ejemplo, el valor del vector de movimiento derivado (por ejemplo, los MV de cuatro subbloques de 4x4 dentro de un bloque de 8x8) se restringe de modo que la diferencia máxima entre las partes enteras de los cuatro MV de subbloque de 4x4 no es más de N píxeles, tal como no más de 1 píxel. Aquí se proporcionan dos métodos para restringir el vector de movimiento de acuerdo con la profundidad de bits.
La Figura 4 es un diagrama esquemático de un dispositivo de codificación de vídeo 400 de acuerdo con una modalidad de la descripción. El dispositivo de codificación de vídeo 400 es adecuado para implementar las modalidades descritas como se describe en la presente. En una modalidad, el dispositivo de codificación de vídeo 400 puede ser un decodificador tal como decodificador de vídeo 30 de la Figura 1A o un codificador tal como codificador de vídeo 20 de la Figura 1A.
El dispositivo de codificación de vídeo 400 comprende puertos de ingreso 410 (o puertos de entrada 410) y unidades receptoras (Rx) 420 para recibir datos; un procesador, unidad lógica o unidad de procesamiento central (CPU) 430 para procesar los datos; unidades transmisoras (Tx) 440 y puertos de egreso 450 (o puertos de salida 450) para transmitir los datos; y una memoria 460 para almacenar los datos. El dispositivo de codificación de vídeo 400 también puede comprender componentes óptico a eléctrico (OE) y componentes eléctrico a óptico (EO) acoplados a los puertos de ingreso 410, las unidades receptoras 420, las unidades transmisoras 440 y los puertos de egreso 450 para salida o entrada de señales ópticas o eléctricas.
El procesador 430 se implementa por hardware y software. El procesador 430 se puede implementar como uno o más chips de CPU, núcleos (por ejemplo, como un procesador de múltiples núcleos), FPGA, ASIC y DSP. El procesador 430 está en comunicación con los puertos de ingreso 410, unidades receptoras 420, unidades transmisoras 440, puertos de egreso 450 y memoria 460. El procesador 430 comprende un módulo de codificación 470. El módulo de codificación 470 implementa las modalidades descritas anteriormente. Por ejemplo, el módulo de codificación 470 implementa, procesa, prepara o proporciona las diversas operaciones de codificación. Por lo tanto, la inclusión del módulo de codificación 470 proporciona una mejora sustancial a la funcionalidad del dispositivo de codificación de vídeo 400 y efectúa una transformación del dispositivo de codificación de vídeo 400 a un estado diferente. Alternativamente, el módulo de codificación 470 se implementa como instrucciones almacenadas en la memoria 460 y ejecutadas por el procesador 430.
La memoria 460 puede comprender uno o más discos, unidades de cinta y unidades de estado sólido y se puede utilizar como un dispositivo de almacenamiento de datos de desbordamiento, para almacenar programas cuando estos programas se seleccionan para ejecución, y para almacenar instrucciones y datos que se leen durante la ejecución de programa. La memoria 460 puede ser, por ejemplo, volátil y/o no volátil y puede ser memoria de solo A lectura (ROM), memoria de acceso aleatorio (RAM), memoria ternaria direccionable por contenido (TCAM) y/o memoria estática de acceso aleatorio (SRAM).
La Figura 5 es un diagrama de bloques simplificado de un aparato 500 que se puede usar como cualquiera o ambos del dispositivo fuente 12 y el dispositivo destino 14 de la Figura 1 de acuerdo con una modalidad de ejemplo.
Un procesador 502 en el aparato 500 puede ser una unidad de procesamiento central. Alternativamente, el procesador 502 puede ser cualquier otro tipo de dispositivo o múltiples dispositivos capaces de manipular o procesar información ahora existente o desarrollada posteriormente. Aunque las implementaciones descritas se pueden poner en práctica con un solo procesador como se muestra, por ejemplo, el procesador 502, se pueden lograr ventajas en velocidad y eficiencia usando más de un procesador.
Una memoria 504 en el aparato 500 puede ser un dispositivo de memoria de solo lectura (ROM) o un dispositivo de memoria de acceso aleatorio (RAM) en una implementación. Se puede utilizar cualquier otro tipo adecuado de dispositivo de almacenamiento como la memoria 504. La memoria 504 puede incluir código y datos 506 a los que se accede por el procesador 502 usando un bus 512. La memoria 504 puede incluir además un sistema operativo 508 y programas de aplicación 510, los programas de aplicación 510 que incluyen al menos un programa que permite que el procesador 502 realice los métodos descritos en la presente. Por ejemplo, los programas de solicitud 510 pueden incluir aplicaciones 1 a N, que incluyen además una aplicación de codificación de vídeo que realiza los métodos descritos en la presente.
El aparato 500 también puede incluir uno o más dispositivos de salida, tal como una pantalla 518. La pantalla 518 puede ser, en un ejemplo, una pantalla sensible al tacto que combina una pantalla con un elemento sensible al tacto que se puede operar para detectar entradas táctiles. La pantalla 518 se puede acoplar al procesador 502 mediante el bus 512.
Aunque se representa aquí como un solo bus, el bus 512 del aparato 500 puede estar compuesto de múltiples buses. Además, el almacenamiento secundario 514 se puede acoplar directamente a los otros componentes del aparato 500 o se puede acceder a través de una red y puede comprender una sola unidad integrada tal como una tarjeta de memoria o múltiples unidades tal como múltiples tarjetas de memoria. Por lo tanto, el aparato 500 se puede implementar en una amplia variedad de configuraciones.
Algunas técnicas que se podrían implementar con la solución actual de esta solicitud se presentan a continuación: Lista de candidatos de fusión
El proceso de construcción de la lista de candidatos de movimiento de fusión se introduce mediante la norma UIT-T H.265. En otra modalidad, la lista de candidatos de movimiento de fusión se utiliza mediante predicción de fusión extendida de codificación de vídeo versátil (VVC).
La operación de fusión de bloques es un modo especial (también llamado "Modo de fusión") para codificación de datos de movimiento. La operación de fusión de bloques permite que un bloque actual utilice la misma información de movimiento de un bloque vecino. La información de movimiento contiene datos de movimiento, y los datos de movimiento incluyen la información sobre si se utilizan una o dos listas de imágenes de referencia, así como un índice de referencia y un vector de movimiento para cada lista de imágenes de referencia. La operación de fusión de bloques es especialmente útil si dos bloques vecinos corresponden a un mismo objeto no deformable en el trama de imagen. En este caso, los dos bloques se pueden predecir usando los mismos vectores de movimiento y la misma imagen de referencia, por lo tanto, toda la información de movimiento es idéntica para ambos bloques.
En una implementación, después de verificar si un bloque vecino está disponible y contiene información de movimiento, se realizan algunas verificaciones de redundancia adicionales antes de tomar todos los datos de movimiento del bloque vecino como candidatos de información de movimiento.
En una implementación, la lista de candidatos de fusión se construye al incluir los siguientes cinco tipos de candidatos en orden:
1) MVP espacial de CU vecinas espaciales
2) MVP temporal de CU coubicadas
3) MVP basado en historial de una tabla FIFO
4) MVP promedio por pares
5) MV cero.
El tamaño de la lista de fusión se señaliza en la cabecera de segmento y el tamaño máximo permitido de la lista de fusión es 6, a manera de ejemplo. Para cada código CU en modo de fusión, se codifica un índice del mejor candidato de fusión.
Se proporciona el proceso de generación de cada categoría de candidatos de fusión:
Derivación de candidatos espaciales
En una implementación, se seleccionan un máximo de cuatro candidatos de fusión entre los candidatos ubicados en los puestos representados en la Figura 6. El orden de derivación es B1, A1, B0, A0 y B2. La posición B2 se considera solo cuando cualquier CU de la posición A0, B0, B1, A1 no está disponible (por ejemplo, porque pertenece a otra porción o mosaico) o está intracodificada. Después de que se añade el candidato en la posición B1, la adición de los candidatos restantes está sujeta a una verificación de redundancia que asegura que los candidatos con la misma información de movimiento se excluyan de la lista de modo que se mejora la eficiencia de codificación. Para reducir la complejidad computacional, no todos los posibles pares de candidatos se consideran en la verificación de redundancia mencionada. En cambio, solo se consideran los pares vinculados con una flecha en la Figura 7 y un candidato solo se añade la lista si el candidato correspondiente utilizado para la verificación de redundancia no tiene la misma información de movimiento.
Durante las implementaciones, el orden, la posición y el número de vecinos espaciales que se consideran cambiables, el ejemplo anterior no podría considerarse como una restricción.
Derivación de candidatos temporales
En una implementación, solo se añade un candidato a la lista. Particularmente, en la derivación de este candidato de fusión temporal, se deriva un vector de movimiento modificado en escala con base en la CU ubicada conjuntamente que pertenece a la imagen de referencia colocada. La lista de imágenes de referencia que se va a utilizar para la derivación de la CU coubicada se señaliza explícitamente en la cabecera de segmento. El vector de movimiento modificado en escala para el candidato de fusión temporal se obtiene como se ilustra por la línea de puntos en la Figura 8, que se modifica en escala desde el vector de movimiento de la CU coubicada usando las distancias POC, tb y td, donde tb se define como la diferencia POC entre la imagen de referencia de la imagen actual y la imagen actual y td se define que es la diferencia POC entre la imagen de referencia de la imagen coubicada y la imagen coubicada. El índice de imagen de referencia del candidato de fusión temporal se establece igual a cero.
La posición para el candidato temporal se selecciona entre los candidatos C0 y C1, como se ilustra en la Figura 9. Si la Uc en la posición C0 no está disponible, está intracodificada o está fuera de la fila actual de CTU, se utiliza la posición C1. De lo contrario, la posición C0 se utiliza en la derivación del candidato de fusión temporal.
Derivación de candidatos de fusión basada en el historial
Los candidatos de fusión de MVP basados en el historial (HMVP) se añaden a la lista de fusión después de MVP y TMVP espaciales. En una implementación, la información de movimiento de un bloque previamente codificado se almacena en una tabla y se utiliza como MVP para la CU actual. La tabla con múltiples candidatos HMVP se mantiene durante el proceso de codificación/decodificación. La tabla se reinicia (vacía) cuando se encuentra una nueva fila de CTU. Cada vez que hay una CU intercodificada que no sea un subbloque , la información de movimiento asociada se añade a la última entrada de la tabla como un nuevo candidato HMVP.
El tamaño de tabla HMVP S se establece en 5, lo que indica que se pueden añadir hasta 5 candidatos MVP basados en historial (HMVP) a la tabla, a manera de ejemplo. Al insertar un nuevo candidato de movimiento en la tabla, se utiliza una regla de primero en entrar, primero en salir (FIFO) restringida, en donde primero se aplica una verificación de redundancia para determinar si hay una HMVP idéntica en la tabla. Si se encuentra, la HMVP idéntica se elimina de la tabla y todos los candidatos de HMVP después se mueven hacia adelante.
Los candidatos HMVP se podrían utilizar en el proceso de construcción de la lista de candidatos de fusión. Los últimos candidatos HMVP en la tabla se verifican en orden y se insertan en la lista de candidatos después del candidato TMVP. La verificación de redundancia se aplica en los candidatos de HMVP al candidato de fusión espacial o temporal.
Para reducir el número de operaciones de control de redundancia, podrían introducirse diferentes simplificaciones. Generalmente, una vez que el número total de candidatos de fusión disponibles alcanza los candidatos de fusión máximos permitidos menos 1, se finaliza el proceso de construcción de lista de candidatos de fusión de HMVP. Derivación de candidatos de fusión promedio por pares
Los candidatos promedio por pares se generan promediando pares predefinidos de candidatos en la lista de candidatos de fusión existente, y el par predefinido se define como (0, 1), por ejemplo, donde los números denotan los índices de fusión a la lista de candidatos de fusión. Los vectores de movimiento promediados se calculan por separado para cada lista de referencia. Si ambos vectores de movimiento están disponibles en una lista, estos dos vectores de movimiento se promedian incluso cuando apuntan a diferentes imágenes de referencia; si solo hay un vector de movimiento disponible, usarlo directamente; si no hay un vector de movimiento disponible, mantener esta lista inválida.
Se genera una lista de candidatos de información de movimiento durante un proceso de construcción de lista de candidatos de fusión. El término "información de movimiento" se refiere a la información recopilada que es necesaria para realizar el proceso de interpredicción. La información de movimiento generalmente se refiere a la siguiente información:
1) Si el bloque aplica unipredicción o bipredicción (dirección de predicción).
2) Vector de movimiento (2 vectores de movimiento si el bloque aplica bipredicción)
3) El índice de imagen de referencia que se utiliza en la predicción. (2 índices si el bloque aplica bipredicción, cada índice corresponde a una lista de imágenes de referencia, la primera lista de imágenes de referencia (L0) o la segunda lista de imágenes de referencia (L1)).
En alguna implementación factible, la información de movimiento también puede hacer referencia al índice de filtro de interpolación conmutable, que se utiliza para indicar un filtro de interpolación específico para la compensación de movimiento de una unidad de interpolación.
En la presente solicitud, la información de movimiento puede ser uno o más de los elementos anteriores o cualquier otra información que es necesaria para realizar el proceso de interpredicción de acuerdo con las diferentes modalidades.
El índice de imagen de referencia se utiliza para indicar la entrada en la lista de imágenes de referencia que se utiliza en el proceso de predicción de un bloque de codificación. Por ejemplo, el primer vector de movimiento puede apuntar a una primera imagen en L0 y el segundo vector de movimiento puede apuntar a la primera imagen en L1. Se pueden mantener dos listas de imágenes de referencia y la imagen apuntada por el primer vector de movimiento se selecciona de L0 y la imagen apuntada por el segundo vector de movimiento se selecciona de L1.
Cada una de las listas de imágenes de referencia L0 y L1 puede incluir una o más imágenes de referencia, cada una de las cuales se identifica con un recuento de orden de imagen (POC). La asociación con cada índice de referencia y el valor POC se podría señalar en el flujo de bits. A modo de ejemplo, las listas de imágenes de referencia L0 y L1 pueden incluir las siguientes imágenes de referencia:
Figure imgf000020_0001
En el ejemplo anterior, la primera entrada (indicada por el índice de referencia 0) en la lista de imágenes de referencia L1 es la imagen de referencia con el valor POC 13.
POC es una variable que se asocia con cada imagen, identifica de forma única la imagen asociada entre todas las imágenes en la secuencia de vídeo codificada (CVS) y, cuando la imagen asociada se va a generar desde la memoria intermedia de imágenes decodificadas, indica la posición de la imagen asociada en orden de salida con respecto a las posiciones de orden de salida de las otras imágenes en la misma CVS que se va a generar desde la memoria intermedia de imágenes decodificadas.
Modo de predicción triangular
Cuando se utiliza el modo de predicción triangular (TPM), una CU se divide uniformemente en dos particiones en forma de triángulo, usando la división diagonal o la división anti-diagonal, como se muestra en la Figura 10A o la Figura 10B. Se debe señalar que la Figura 10A o la Figura 10B es un ejemplo. Las posiciones de PU1 y PU2 no se limitan en la presente solicitud. Cada partición de triángulo en la CU se intercala usando su propio movimiento; solo se permite unipredicción para cada partición, es decir, cada partición tiene un vector de movimiento y un índice de referencia. La restricción de movimiento de unipredicción se aplica para garantizar que, al igual que la bipredicción convencional, solo se necesitan dos predicciones compensadas en movimiento para cada CU. El movimiento de unipredicción para cada partición se deriva directamente de la lista de candidatos de fusión construida para la predicción de fusión extendida descrita anteriormente.
Si se utiliza el modo de partición de triángulo para una CU actual, se señaliza además una bandera que indica la dirección de la partición de triángulo (diagonal o antidiagonal) y dos índices de fusión (uno para cada partición). Después de predecir cada una de las particiones de triángulo, los valores de muestra a lo largo del borde diagonal o anti-diagonal se ajustan usando un procesamiento de mezcla con factores de ponderación adaptativos. Esta es la señal de predicción para toda la CU, y el proceso de transformación y cuantificación se aplicará a toda la CU como en otros modos de predicción. Finalmente, el campo de movimiento de una CU predicha mediante el modo de partición de triángulo se almacena en unidades de 4x4.
TPM es un caso especial de partición de subbloques, donde un bloque se divide en dos bloques. En el ejemplo anterior, se ilustran dos direcciones de división de bloques (particiones de 45 grados y 135 grados). Sin embargo, se observa que también son posibles otros ángulos de partición y proporciones de partición, como se ejemplifica en la Figura 11. Como un ejemplo, los subbloques pueden ser rectangulares (por ejemplo, las figuras media y derecha de la Figura 11) o no rectangulares (trapezoidales, por ejemplo, la Figura izquierda de la Figura 11) dependiendo del ángulo de partición. En algunos ejemplos, un bloque actual consiste de dos unidades de predicción, y las dos unidades de predicción se dividen por una línea de división virtual. En este caso, se llama que el bloque actual se predice mediante un modo de predicción geométrica. Y por ejemplo, la línea de división virtual podría ser una línea recta, que es un límite entre el primer subbloque y el segundo subbloque.
Más específicamente, el procedimiento de predicción usando el TPM, que comprende:
Construcción de lista de candidatos de unipredicción
Dado un índice candidato de fusión, el vector de movimiento de unipredicción se deriva de la lista de candidatos de fusión construida para la predicción de fusión extendida, como se ejemplifica en la Figura 12. Para un candidato en la lista, su vector de movimiento LX con X igual a la paridad del valor del índice candidato de fusión, se utiliza como el vector de movimiento de unipredicción para el modo de partición de triángulo. Estos vectores de movimiento se marcan con "x" en la Figura 12. En caso de que no exista un vector de movimiento LX correspondiente, el vector de movimiento L(1-X) del mismo candidato en la lista de candidatos de predicción de fusión extendida se utiliza como el vector de movimiento de unipredicción para el modo de partición de triángulo.
Se debe señalar que en una implementación factible, el vector de movimiento de unipredicción se puede derivar de la lista de candidatos de fusión, que se utiliza para el modo de fusión regular (Modo de fusión), directamente, sin la construcción explícita de una lista de candidatos de unipredicción separada especial.
Mezcla a lo largo del borde de partición de triángulo
Después de predecir cada partición de triángulo usando su propio movimiento, se aplica mezcla a las dos señales de predicción para derivar muestras alrededor del borde de diagonal o anti-diagonal. Los siguientes factores de ponderación se utilizan en el proceso de mezcla:
{H8, 6/8, 5/8, 4/8, 3/8, 2/8, 1/8} para el luma y {6/8, 4/8, 2/8} para el croma, como se muestra en la Figura 13.
En comparación con el modo de predicción regular, la información de movimiento de los diferentes subbloques se debe señalar para un bloque. Por lo tanto, la sobrecarga de información secundaria, que se utiliza para representar la información de movimiento, en modo de predicción de subbloques es mayor. Para mejorar la eficiencia de codificación de la información secundaria para el modo de predicción de subbloques, se introducen diferentes modalidades en la presente solicitud.
Modalidad 1:
Si se determina que una predicción de subbloques se aplica a un bloque:
1. Un primer índice inicial se incluye en el flujo de bits (en el lado de codificador) que puede tener un valor máximo de M (M es un entero y M<N, N es la cantidad de candidatos en la lista de candidatos de información de movimiento).
2. Un segundo índice inicial se incluye en el flujo de bits (en el lado de codificador) que puede tener un valor máximo de M-m (m es un número entero y m<M, m es un valor predefinido).
3. Si el valor del segundo índice inicial es mayor o igual al valor del primer índice inicial, el valor del segundo índice inicial se incrementa por un número predefinido para obtener un segundo índice actualizado (por ejemplo, el número predefinido puede ser uno).
4. La primera parte de subbloque del bloque se predice mediante la aplicación de la información de candidato de movimiento que se determina con base en el primer índice inicial.
5. La segunda parte de subbloque del bloque se predice mediante la aplicación de la información de candidato de movimiento que se determina con base en el segundo índice actualizado.
En una implementación factible, el primer índice inicial y el segundo índice inicial se pueden incluir en el flujo de bits por el codificador y se pueden analizar por el decodificador.
En una implementación factible, la operación de incrementar el segundo índice inicial por m se realiza tanto en el lado de codificador como en el lado de decodificador, esta operación tiene como objetivo mantener la consistencia entre el lado de codificador y el lado de decodificador.
En una implementación factible, el primer índice inicial y el segundo índice actualizado se utilizan para seleccionar entradas en una lista de candidatos de información de movimiento (con base en el primer índice inicial y el segundo índice actualizado como entradas, se pueden seleccionar candidatos de información de movimiento correspondientes), y los candidatos de información de movimiento seleccionados se utilizan para la primera parte de subbloque (por ejemplo, PU1 en la Figura 10A o Figura 10B) y la segunda parte de subbloque (por ejemplo, PU2 en la Figura 10A o Figura 10B) de un bloque para realizar la predicción.
En una implementación factible, la lista de candidatos de información de movimiento podría estar compuesta solo por candidatos de información de movimiento de unipredicción. Se debe señalar que la lista de candidatos de fusión (como la lista de candidatos de fusión de la UIT-T H.265) podría estar integrada por candidatos de información de movimiento de unipredicción y bipredicción. Por lo tanto, la lista de candidatos de información de movimiento utilizada en la modalidad podría ser diferente de la lista de candidatos de fusión de UIT-T H.265.
La lista de candidatos de información de movimiento puede no ser idéntica a la lista de candidatos de fusión, ya que la lista de candidatos de fusión puede incluir candidatos de bipredicción, que están prohibidos para que se utilicen cuando se determina que un bloque aplica la predicción de subbloques (por ejemplo, triangular). En este caso, cada subbloque debe aplicar una información de movimiento de unipredicción, de ahí que el primer índice inicial y el segundo índice actualizado apunten a entradas en una lista de candidatos de información de movimiento que solo incluye candidatos de unipredicción. La lista de candidatos de información de movimiento se puede construir utilizando los mismos bloques vecinos espaciales y temporales que se utilizan en la construcción de la lista de candidatos de fusión. En otro ejemplo, la lista de candidatos de información de movimiento se puede construir con base en la lista de candidatos de fusión al convertir los candidatos de bipredicción en la lista de candidatos de fusión en candidatos de unipredicción.
Se debe señalar que el primer índice inicial y el segundo índice inicial no necesitan seguir un orden particular en la estructura de flujo de bits.
Se debe señalar que las operaciones de comparación entre el primer índice inicial y el segundo índice inicial se realizan tanto en el codificador como en el decodificador. Para el lado de codificador, los indicadores (por ejemplo, el primer índice inicial y el segundo índice inicial) se incluyen en el flujo de bits. Para el lado de decodificador, los indicadores (por ejemplo, el primer índice inicial y el segundo índice inicial) se analizan desde el flujo de bits.
El valor del segundo índice inicial se incrementa por un número predefinido (por ejemplo, uno) si el valor del segundo índice inicial es mayor o igual al valor del primer índice inicial. Generalmente, se utiliza una misma lista de candidatos de información de movimiento (compuesta por candidatos de información de movimiento) y si los dos índices apuntan a la misma información de movimiento en la lista de candidatos de información de movimiento, esto correspondería a tener una sola información de movimiento para todo el bloque. Por lo tanto, el segundo índice inicial se incrementa por uno para evitar obtener el mismo índice. Si el segundo índice inicial no se incrementa, el primer y segundo índices podrían apuntar al mismo candidato de movimiento en la lista de candidatos de información de movimiento (ya que la misma lista se utiliza para seleccionar información de movimiento de ambas partes de subbloque). En este caso, cada parte de subbloque aplicaría la misma información de movimiento para predicción, lo que significa que no tiene sentido dividir un bloque en dos subbloques. La representación redundante al aumentar el segundo índice inicial se evita si el valor del segundo índice inicial es igual o mayor que el primer índice inicial. Por consiguiente, se observa que la lista de candidatos de información de movimiento incluye al menos dos conjuntos de información de movimiento. Como resultado de la eliminación de la representación de información de movimiento redundante de los subbloques por medio de la invención, se mejora la eficiencia de compresión. Se debe señalar que el segundo índice inicial se podría incrementar por un número predefinido (por ejemplo, uno, dos, tres, etc.) incluso si el resultado de incrementar la operación no excede la cantidad de candidatos en la lista de candidatos de información de movimiento.
En una implementación específica de la primera modalidad, asumir que una lista de candidatos de información de movimiento incluye candidatos de información de movimiento con 6 entradas. Suponiendo además que el primer candidato de movimiento en la lista de candidatos de información de movimiento se aplica a la primera parte de subbloque del bloque para la predicción y el quinto candidato de movimiento en la lista de candidatos de información de movimiento se aplica a la segunda parte de subbloque del bloque para la predicción.
En el lado de codificador:
1. Se incluye un valor de 0 (o se señaliza) en el flujo de bits para indicar el valor del primer índice inicial. (El valor de índice 0 corresponde a la primera entrada en la lista de candidatos de información de movimiento, el valor 1 corresponde a la segunda entrada, y así sucesivamente.)
2. Se incluye un valor de 3 (o se señaliza) en el flujo de bits para indicar el valor del segundo índice inicial.
3. El valor del segundo índice actualizado se calcula al incrementar el valor del segundo índice inicial por, por ejemplo, uno, de ahí que se obtenga el valor 4.
4. Se determina que el primer índice inicial apunta al primer candidato de movimiento en una lista de candidatos de información de movimiento. Se aplica para predecir la primera parte de subbloque del bloque.
5. Se determina que el segundo índice actualizado apunta al quinto candidato de movimiento en la lista de candidatos de información de movimiento. Se aplica para predecir la segunda parte de subbloque del bloque. En el lado de decodificador:
1. Se analiza un valor de 0 del flujo de bits para indicar el valor del primer índice inicial.
2. Se analiza un valor de 3 desde el flujo de bits para indicar el valor del segundo índice inicial.
3. El valor del segundo índice actualizado se calcula al incrementar su valor por ejemplo, uno (dado que 3 es mayor que 0) de ahí que se obtenga el valor 4.
4. Se determina que el primer índice inicial apunta al primer candidato de movimiento en la lista de candidatos de información de movimiento. Se aplica para predecir la primera parte de subbloque del bloque.
5. Se determina que el segundo índice actualizado apunta al quinto candidato de movimiento en la lista de candidatos de información de movimiento. Se aplica para predecir la segunda parte de subbloque del bloque. A partir de esta implementación, en el lado de codificador, el segundo índice inicial también se actualiza aumentando por uno, esta operación tiene como objetivo mantener la consistencia con la operación similar en el lado de decodificador.
Es comprensible que el número de incremento pueda ser un número predefinido, por ejemplo, 1, 2, 3, etc., incluso si el resultado de incrementar la operación no excede la cantidad de candidatos en la lista de candidatos de información de movimiento.
En otra implementación específica de la primera modalidad, asumir que la lista de candidatos de información de movimiento comprende 3 entradas que son las siguientes:
(1) Primer candidato de información de movimiento (1er candidato)
(2) Segundo candidato de información de movimiento (2do candidato)
(3) Candidato de información de la tercera moción (3er candidato)
Los valores del primer y segundo índice son los siguientes:
Figure imgf000023_0001
De la tabla anterior, el valor máximo para el primer índice es 3, y el valor máximo para el segundo índice es 2. A partir de la tabla, si el segundo índice inicial es mayor que el primer índice inicial, el segundo índice inicial aún se incrementa en 1. Esto es para mantener una operación unificada (por ejemplo, incrementar por uno) para los escenarios cuando el segundo índice inicial es mayor o igual al primer índice inicial. Tomemos la primera a tercera filas de la tabla anterior, por ejemplo, para la primera y tercera filas, el primer índice inicial y el segundo índice inicial son iguales, para hacerlos diferentes, el segundo índice inicial se incrementa por 1. Para la segunda fila, el segundo índice inicial es mayor que el primer índice inicial, si no se realiza una operación incremental, esto será una excepción y mejorará la complejidad. Para hacerlo simple, cuando la determinación del segundo índice inicial es mayor que el primer índice inicial, el segundo índice inicial aún se incrementa en 1.
Modalidad 2:
Si se determina que una predicción de subbloques se aplica a un bloque:
1. Un indicador que indica la dirección de división se incluye en el flujo de bits.
2. Se incluye un primer índice inicial en el flujo de bits que puede tener un valor máximo de M (M es un número entero y M <N, N es la cantidad de candidatos en la lista de candidatos de información de movimiento).
3. Un segundo índice inicial se incluye en el flujo de bits que puede tener un valor máximo de M-m (m es un número entero y m<M, m es un valor predefinido).
4. Si el valor del segundo índice inicial es mayor o igual al valor del primer índice inicial, el valor del segundo índice inicial se incrementa por un número predefinido para obtener un segundo índice actualizado (por ejemplo, el número predefinido puede ser uno).
5. La primera parte de subbloque del bloque se predice mediante la aplicación de la información de candidato de movimiento que se determina con base en el primer índice inicial.
6. La segunda parte de subbloque del bloque se predice mediante la aplicación de la información de candidato de movimiento que se determina con base en el segundo índice actualizado.
Se debe señalar que la indicación de dirección de división, el primer índice inicial y el segundo índice inicial no necesitan seguir un orden particular en la estructura de flujo de bits.
En una implementación factible, podría haber dos direcciones de división que podrían ser:
(1) División de la esquina superior izquierda a la esquina inferior derecha del bloque (ver figura izquierda en la Figura 10A o la Figura 10B)
(2) División de la esquina superior derecha a la esquina inferior izquierda del bloque (ver figura derecha en la Figura 10A o la Figura 10B)
En una implementación factible, podría haber cuatro direcciones de división que podrían ser
(1) División de la esquina superior izquierda a la esquina inferior derecha del bloque
(2) División de la esquina superior derecha a la esquina inferior izquierda del bloque
(3) División del punto de la parte superior del centro al punto de la parte inferior del centro del bloque
(4) División del punto central-derecho al punto central-izquierdo del bloque
Modalidad 3:
Si se determina que una predicción de subbloques se aplica a un bloque:
1. Un indicador que indica la dirección de división se incluye en el flujo de bits.
2. Si el indicador indica una dirección de división específica (por ejemplo, división de la esquina superior izquierda a la esquina inferior derecha del bloque, ver figura izquierda en la Figura 10A o la Figura 10B) 2.1 Un primer índice inicial se incluye en el flujo de bits que puede tener un valor máximo de M (M es un entero y M<N, N es la cantidad de candidatos en la lista de candidatos de información de movimiento). 2.2 Un segundo índice inicial se incluye en el flujo de bits que puede tener un valor máximo de M-m (m es un número entero y m<M, m es un valor predefinido).
2.3. Si el valor del segundo índice inicial es mayor o igual al valor del primer índice inicial, el valor del segundo índice inicial se incrementa por un número predefinido para obtener un segundo índice actualizado (por ejemplo, el número predefinido puede ser uno).
3. De lo contrario (si el indicador indica una dirección de división diferente, por ejemplo, división de la esquina superior derecha a la esquina inferior izquierda del bloque (ver figura derecha en la Figura 10A o la Figura 10B) 3.1 Un primer índice inicial se incluye en el flujo de bits que puede tener un valor máximo de M-m (m es un número entero y m<M, m es un valor predefinido).
3.2 Un segundo índice inicial se incluye en el flujo de bits que puede tener un valor máximo de M (M es un entero y M<N, N es la cantidad de candidatos en la lista de candidatos de información de movimiento). 3.3. Si el valor del segundo índice inicial es mayor o igual al valor del primer índice inicial, el valor del segundo índice inicial se incrementa por un número predefinido para obtener un segundo índice actualizado (por ejemplo, el número predefinido puede ser uno).
4. La primera parte de subbloque del bloque se predice mediante la aplicación del candidato de información de movimiento que se determina con base en el primer índice.
5. La segunda parte de subbloque del bloque se predice mediante la aplicación del candidato de información de movimiento que se determina con base en el segundo índice.
En una implementación factible, podría haber dos direcciones de división que podrían ser
(1) División de la esquina superior izquierda a la esquina inferior derecha del bloque
(2) División de la esquina superior derecha a la esquina inferior izquierda del bloque
En una implementación factible, podría haber cuatro direcciones de división que podrían ser
(1) División de la esquina superior izquierda a la esquina inferior derecha del bloque
(2) División de la esquina superior derecha a la esquina inferior izquierda del bloque
(3) División del punto de la parte superior del centro al punto de la parte inferior del centro del bloque
(4) División del punto central-derecho al punto central-izquierdo del bloque
Modalidad 4:
Si se determina que una predicción de subbloques se aplica a un bloque,
1. Un indicador que indica la dirección de división se incluye en el flujo de bits.
2. Un primer índice inicial se incluye en el flujo de bits que puede tener un valor máximo de M (M es un entero y M<N, N es la cantidad de candidatos en la lista de candidatos de información de movimiento).
3. Un segundo índice inicial se incluye en el flujo de bits que puede tener un valor máximo de M-m (m es un número entero y m<M, m es un valor predefinido).
4. Si el valor del segundo índice inicial es mayor o igual al valor del primer índice inicial, el valor del segundo índice inicial se incrementa por un número predefinido para obtener un segundo índice actualizado (por ejemplo, el número predefinido puede ser uno).
5. La primera parte de subbloque del bloque se predice mediante la aplicación de la información de candidato de movimiento que se determina con base en el primer índice inicial.
6. La segunda parte de subbloque del bloque se predice mediante la aplicación de la información de candidato de movimiento que se determina con base en el segundo índice actualizado.
Donde la primera parte de subbloque se asigna a la parte cuyo centro geométrico está más cerca del límite izquierdo del bloque. Tomemos la Figura 10A o la Figura 10B como ejemplo, la PU1 denota la primera parte de subbloque, mientras que la PU2 denota la segunda parte de subbloque.
En la modalidad 4, el índice correspondiente a la parte de subbloque que tiene un centro geométrico más cerca del límite izquierdo del bloque se incluye primero en el flujo de bits. La construcción de la lista de candidatos de información de movimiento generalmente considera información de movimiento de bloques vecinos en el siguiente orden: Información de movimiento de bloque izquierdo, Información de movimiento de bloque superior, Información de movimiento de bloque superior derecho...El orden de vecinos espaciales anterior se toma de HEVC como un ejemplo. Dado que la información de movimiento del vecino izquierdo se considera primero, el índice que indica la información de movimiento del vecino izquierdo generalmente tiene menos bits. Dado que la parte de subbloque que está más cerca (por media geométrica) del vecino izquierdo se codifica primero, y el segundo índice no puede apuntar a la misma información de movimiento (es decir, la misma entrada en la lista de fusión), el número total de bits para representar el primer índice y el segundo índice son típicamente más bajos. En otra implementación factible, el índice correspondiente a la parte de subbloque que tiene un centro geométrico más cerca del límite superior del bloque se incluye primero en el flujo de bits. El orden no se limita por la presente solicitud.
En una modalidad específica, asumir que la lista de candidatos de información de movimiento tiene un tamaño de 3 e incluye los siguientes candidatos de información de movimiento: Información de movimiento de bloque vecino izquierdo (primera entrada), Información de movimiento de bloque vecino superior (segunda entrada) e Información de movimiento de bloque coubicado (tercera entrada, bloque de vecino temporal).
Además, suponiendo que la dirección de división y el primer subbloque (PU1) y el segundo subbloque (PU2) están dadas como la Figura izquierda en la Figura 10A o la Figura 10B. Generalmente, es más probable que la PU1 se prediga con base en la primera entrada en la lista de candidatos de información de movimiento (que corresponde a la información de movimiento del bloque vecino izquierdo), y la PU2 se predecirá con base en la segunda entrada en la lista de candidatos de información de movimiento (que corresponde a la información de movimiento del bloque vecino superior) debido a la proximidad espacial. De acuerdo con la invención, el valor de 0 se incluye (analizado en el decodificador) en el flujo de bits para representar el primer índice, y el valor de 0 se incluye (analizado en el decodificador) en el flujo de bits para representar el segundo índice (que son los valores más pequeños que un índice puede asumir) ya que el segundo índice es igual al primer índice, el segundo índice se incrementa en uno antes de seleccionar el candidato de movimiento de la lista de candidatos de información de movimiento. En un caso, el primer y el segundo índices tienen los valores más pequeños posibles de acuerdo con la invención, lo que requeriría un menor número de bits totales para representar el primer índice y el segundo índice en el flujo de bits. Se debe señalar que la indicación de dirección de división, el primer índice y el segundo índice no necesitan seguir un orden particular en la estructura de flujo de bits.
En una implementación específica, el modo de predicción de subbloques es el modo de predicción triangular.
El primer índice (por ejemplo, el primer índice inicial) y el segundo índice (por ejemplo, el segundo índice actualizado) se utilizan para seleccionar la información de movimiento que se va a aplicar al primer subbloque y al segundo subbloque. La información de movimiento se selecciona de la misma lista de candidatos de información de movimiento. Para evitar la selección de la misma información de movimiento para ambas partes de subbloque (que sería idéntica a no tener particiones de subbloque), el segundo índice se incrementa por un número predefinido (por ejemplo, uno) si es mayor o igual al primer índice.
Las modalidades 1-4 proporcionan diferentes métodos eficientes de señalización de la información de movimiento para cada subbloque de un bloque que aplica predicción de subbloques.
Modalidad 5:
El valor máximo del primer índice y el segundo índice (denotado como M en las modalidades 1 a 4) es menor o igual al tamaño de la lista de candidatos de información de movimiento, N.
Se debe señalar que el valor máximo del primer y el segundo índices también describen el número de entradas en la lista de candidatos de información de movimiento. Por ejemplo, si el valor máximo del primer índice es 6 (suponiendo que el conteo comienza desde 1, el índice puede asumir los valores de 1,2,3,4, 5 y 6), el tamaño de la lista de candidatos de información de movimiento es 6.
La lista de candidatos de fusión se podría construir de acuerdo con los métodos en la ITU-T H.265 y en la VVC, ver los ejemplos anteriores y las descripciones sobre el proceso de construcción de la lista de fusión en HEVC y en VVC. El valor máximo del primer índice y el segundo índice (dado por M y que es equivalente al tamaño de la lista de candidatos de información de movimiento) es menor o igual al tamaño de la lista de candidatos de fusión N. Se debe señalar que si se determina que un bloque no aplica un modo de predicción de subbloques, el bloque se puede predecir con base en una de las entradas en la lista de candidatos de fusión. Sin embargo, si el bloque se predice usando el modo de predicción de subbloques, las entradas de la lista de candidatos de información de movimiento se utilizan para predecir el bloque.
Por ejemplo, cuando un indicador de predicción analizado desde el flujo de bits indica que una predicción de subbloques se va a aplicar en un bloque, se obtienen dos indicadores diferentes, y estos dos indicadores diferentes indican por separado dos entradas diferentes en una lista de candidatos de información de movimiento para dos subbloques en el bloque, y la interpredicción se realiza para el bloque con base en los dos indicadores diferentes. Cuando el indicador de predicción analizado desde el flujo de bits indica que la predicción de subbloques no se va a aplicar en el bloque, se obtiene un indicador individual, y el indicador individual indica una entrada en una lista de candidatos de fusión (por ejemplo, se puede construir de acuerdo con los métodos en la UIT-T H.265 y en la VVC) para el bloque; y la interpredicción (por ejemplo, predicción no de subbloque) se realiza para el bloque con base en el indicador individual.
El valor máximo del primer índice se establece igual a M, si M es menor o igual a N, donde N es el tamaño (número de candidatos) de la lista de candidatos de fusión. De lo contrario (si N es menor que M), el valor máximo del primer índice de fusión se establece igual a N.
En una implementación factible, N se podría derivar de un indicador que se incluye en el flujo de bits y M podría ser un número predefinido.
Por ejemplo, el valor M (que describe el valor máximo del primer índice) podría ser 5, que está predeterminado. Y el valor de N (lista de candidatos de fusión de tamaño) podría señalarse en el conjunto de parámetros de secuencia (SPS). Si el valor de N se señaliza como 6, el valor máximo del primer índice es igual a 5 (4 si el conteo comienza desde 0), ya que N es mayor que M. En otro escenario, si se señaliza que N es 3 en el SFS, entonces el valor máximo del primer índice es igual a 3 (2 si el conteo comienza desde 0).
Se debe señalar que N es el tamaño de la lista de candidatos de fusión, que se podría construir de acuerdo con los métodos en la ITU-T H.265 y en la VVC. El primer índice y el segundo índice que se utilizan en las modalidades apuntan a una lista diferente, es decir, una lista de candidatos de información de movimiento que se compone solo de candidatos de unipredicción. La lista de candidatos de información de movimiento puede no ser idéntica a la lista de candidatos de fusión, ya que la lista de candidatos de fusión puede incluir candidatos de bipredicción, que están prohibidos para que se utilicen cuando se determina que un bloque aplica la predicción de subbloques (o triangular). En este caso, cada subbloque debe aplicar una información de movimiento de unipredicción, de ahí que el primer índice y el segundo índice apunten a entradas en una lista de candidatos de información de movimiento que solo incluye candidatos de unipredicción. La lista de candidatos de información de movimiento se puede construir utilizando los mismos bloques vecinos espaciales y temporales que se utilizan en la construcción de la lista de candidatos de fusión. De manera alternativa, la lista de candidatos de información de movimiento se puede construir con base en las entradas de la lista de candidatos de fusión. En una implementación factible, la lista de candidatos de información de movimiento puede no construirse explícitamente, por ejemplo, los candidatos de unipredicción se pueden derivar directamente de la lista de candidatos de fusión.
Para la predicción basada en bloques, solo se señaliza un conjunto de información de movimiento (en forma de índice de fusión en una implementación). Dado que en el caso de la predicción de subbloques son necesarios dos conjuntos de información de movimiento (incrementando la sobrecarga de señalización), se espera que los valores de los índices no sean mayores que el valor máximo del índice de fusión (el valor máximo del índice de fusión es equivalente al tamaño de la lista de candidatos de fusión).
Dado que se espera que la lista de candidatos de información de movimiento se construya con base en los candidatos que se utilizan para construir la lista de candidatos de fusión o con base en las entradas de la lista de candidatos de fusión, la lista de candidatos de información de movimiento no tendría un tamaño mayor que el tamaño de la lista de candidatos de fusión.
Por lo tanto, el tamaño de la lista de candidatos de información de movimiento (y por lo tanto los valores máximos del primer y el segundo índices) se establecen iguales o menores que la lista de candidatos de fusión.
En otra implementación factible, N se podría derivar de un indicador que se incluye en el flujo de bits y M se podría derivar de un indicador que se incluye en el flujo de bits. En este caso, el indicador que se utiliza para derivar el valor de M no puede indicar un valor de M que sea mayor que N.
En HEVC, el tamaño de la lista de candidatos de información de movimiento es N y N se puede modificar con base en un elemento de sintaxis que se incluye en el flujo de bits. El valor de N puede ser un número entero positivo (típicamente entre 2 y 5) y se señaliza en el SPS. El tamaño de la lista de fusión es fijo para toda la secuencia de vídeo.
El valor máximo del primer índice y el segundo índice no puede ser mayor que el tamaño de la lista de candidatos de información de movimiento. Aunque el primer índice y el segundo índice se utilizan para seleccionar la información de movimiento de una lista diferente (lista de candidatos de información de movimiento que no es la misma que la lista de candidatos de fusión), la lista de candidatos de información de movimiento se puede construir típicamente usando los mismos bloques vecinos espaciales y temporales (pero aplicando reglas de construcción diferentes que la lista de candidatos de información de movimiento).
En una implementación particular, la lista de candidatos de información de movimiento se puede construir al convertir los candidatos de bipredicción en la lista de candidatos de fusión en candidatos de unipredicción. Por consiguiente, establecer el valor máximo del primer y el segundo índice para que sea menor que el tamaño de la lista de candidatos de fusión asegura que se pueda utilizar una lista de candidatos de información de movimiento que se construyó con base en la lista de candidatos de fusión para seleccionar la información de movimiento de cada subbloque del bloque actual.
Modalidad 6:
El primer y segundo índices se binarizan (se convierten de representación decimal a binaria) usando código binario unario truncado y basado en el valor máximo del índice. El valor máximo de los índices se utiliza en el proceso de mapeo del valor decimal del índice a la representación binaria. La asignación de palabras de código de valor para el código binario unario truncado (código unario truncado con un valor decimal máximo de 4) se da a continuación:
Figure imgf000027_0002
En la tabla anterior, cada valor decimal requiere un bit más en la representación binaria en comparación con el valor decimal anterior (que es uno menos en decimal), excepto por el último valor decimal que corresponde al valor máximo del índice. En este caso (cuando el valor del índice es 4, que es el valor máximo), se representa con la misma cantidad de bits en la representación binaria con el valor decimal anterior (que es 3).
Si el primer índice tiene un valor máximo de 4 (=M) y el segundo índice tiene un valor máximo de 3 (=M-1), se aplican las siguientes representaciones binarias:
Figure imgf000027_0001
Modalidad 7:
El primer tramo del primer índice se codifica usando el modo de codificación regular de codificación aritmética binaria adaptativa basada en contexto (CABAC) (usando estimación de probabilidad que se actualiza después de la codificación de cada caso del primer índice), mientras que los otros tramos se codifican usando el modo de desviación de CABAC (usando probabilidades iguales que no se actualizan). El modo de codificación regular de la CABAC se ilustra mediante la derivación de “Codificador Aritmético Regular” de la Figura 14. El modo de desviación se ilustra mediante la derivación “Codificador aritmético de desviación” de la Figura 14.
A modo de ejemplo, el primer tramo del segundo índice se codifica usando el modo de codificación regular de CABAC (usando estimación de probabilidad que se actualiza después de la codificación de cada caso del segundo índice), mientras que los otros tramos se codifican usando el modo de desviación de CABAC (usando probabilidades iguales que no se actualizan). En este caso, el primer índice se incluye en el flujo de bits (o se analiza mediante decodificador de flujo de bits) mediante CABAC, donde el primer tramo del primer índice binarizado se codifica mediante CABAC usando un primer modelo de estimación de probabilidad usando modo de codificación de modo regular de CABAC. Los tramos restantes del primer índice binarizado se codifican usando el modo de desviación de CABAC. El segundo índice se incluye en el flujo de bits (o se analiza mediante decodificador de flujo de bits) por CABAC, donde el primer tramo del segundo índice binarizado se codifica por CABAC usando un segundo modelo de estimación de probabilidad usando el modo de codificación de modo regular de CABAC. Los tramos restantes del segundo índice binarizado se codifican usando el modo de desviación de CABAC.
Como otro ejemplo, el primer tramo del primer índice y el primer tramo del segundo índice se codifican usando el modo de codificación regular de CABAC y se utiliza el mismo modelo de estimación de probabilidad. El modelo de estimación de probabilidad se actualiza después de codificar el primer índice y después de codificar el segundo índice. En este caso el primer índice se incluye en el flujo de bits (o se analiza mediante decodificador de flujo de bits) mediante CABAC, donde el primer tramo del primer índice binarizado se codifica mediante CABAC usando un primer modelo de estimación de probabilidad usando modo de codificación de modo regular de CABAC. Los tramos restantes del primer índice binarizado se codifican usando el modo de desviación de CABAC. El segundo índice se incluye en el flujo de bits (o se analiza mediante decodificador de flujo de bits) por CABAC, donde el primer tramo del segundo índice binarizado se codifica por CABAC usando el primer modelo de estimación de probabilidad usando el modo de codificación de modo regular de CABAC. Los tramos restantes del segundo índice binarizado se codifican usando el modo de desviación de CABAC.
El modelo de estimación de probabilidad describe la probabilidad de que un tramo tenga el valor de un "1" en lugar de un "0". El modelo de estimación de probabilidad se actualiza para adaptarse a las estadísticas, por ejemplo, si la probabilidad de observar un “1” es 0,8 (lo que significa que “0” es 0,2), entonces un tramo que tiene un valor de “1” se codifica usando menos bits reales que “0” por CABAC.
El primer tramo es el primer símbolo de la representación binaria, ejemplo se muestra en la tabla de la siguiente manera:
Figure imgf000028_0001
Modalidad 8:
Si se determina que una predicción de subbloques se aplica a un bloque,
1. Un indicador que indica la dirección de división se incluye en el flujo de bits.
2. Si el tamaño del bloque es menor que o igual a un umbral especificado
2.1Un primer índice inicial se incluye en el flujo de bits que puede tener un valor máximo de M (M es un entero positivo y M<N, N es la cantidad de candidatos en la lista de candidatos de fusión).
2.2Un segundo índice inicial se incluye en el flujo de bits que puede tener un valor máximo de M-m (m es un número entero positivo y m<M, m es un valor predefinido).
3. De lo contrario (si el tamaño del bloque es mayor que un umbral especificado)
3.1Un primer índice se incluye en el flujo de bits que puede tener un valor máximo de P (P es un entero positivo y M<P < N, N es la cantidad de candidatos en la lista de candidatos de información de movimiento).
3.2Un segundo índice se incluye en el flujo de bits que puede tener un valor máximo de P-m (m es un número entero positivo y m<P, m es un valor predefinido).
4. Si el valor del segundo índice inicial es mayor o igual al valor del primer índice inicial, el valor del segundo índice inicial se incrementa por un número predefinido para obtener un segundo índice actualizado (por ejemplo, el número predefinido puede ser uno).
5. La primera parte de subbloque del bloque se predice mediante la aplicación del candidato de información de movimiento que se determina con base en el primer índice inicial.
6. La segunda parte de subbloque del bloque se predice mediante la aplicación del candidato de información de movimiento que se determina con base en el actualiza segundo índice actualizado.
Donde P y M son valores enteros positivos y M<P < N.
El primer índice inicial y el segundo índice inicial se podrían binarizar de la siguiente manera:
Si el tamaño del bloque es menor que o igual a un umbral especificado:
(1) El primer índice se convierte de representación decimal a binaria con base en el valor máximo M y aplicando codificación binaria truncada;
(2) El segundo índice se convierte de representación decimal a binaria con base en el valor máximo M-1 y aplicando codificación binaria truncada.
Si el tamaño del bloque es mayor que un umbral especificado:
(1) El primer índice se convierte de representación decimal a binaria con base en el valor máximo P y aplicando codificación binaria truncada;
(2) El segundo índice se convierte de representación decimal a binaria con base en el valor máximo P-1 y aplicando codificación binaria truncada.
El umbral puede ser un entero positivo que se señaliza en el flujo de bits o puede ser un número predefinido.
Para determinar si un bloque es mayor que un umbral, la multiplicación del ancho y la altura del bloque se puede comparar con el umbral (ancho x alto > umbral). En otro ejemplo, tanto el ancho como la altura se pueden comparar con un umbral y si ambos son mayores que el umbral (ancho > umbral Y altura > umbral), se puede considerar que el bloque es mayor que el umbral. En otro ejemplo, si cualquiera de ancho y alto es mayor que el umbral (ancho > umbral O alto > umbral), se puede considerar que el bloque es mayor que el umbral.
Se debe señalar que la indicación de dirección de división, el primer índice y el segundo índice no necesitan seguir un orden particular en la estructura de flujo de bits.
En una implementación factible, podría haber dos direcciones de división que podrían ser
(1) División de la esquina superior izquierda a la esquina inferior derecha del bloque
(2) División de la esquina superior derecha a la esquina inferior izquierda del bloque
En otra implementación factible, podría haber cuatro direcciones de división que podrían ser
(1) División de la esquina superior izquierda a la esquina inferior derecha del bloque
(2) División de la esquina superior derecha a la esquina inferior izquierda del bloque
(3) División del punto de la parte superior del centro al punto de la parte inferior del centro del bloque
(4) División del punto central-derecho al punto central-izquierdo del bloque
Se debe señalar que en una implementación factible, la indicación de dirección de división no se incluye en (o se analiza desde) el flujo de bits.
Modalidad 9:
Si se determina que una predicción de subbloques se aplica a un bloque,
1. Un primer índice inicial se incluye en el flujo de bits que puede tener un valor máximo de M. (M es un entero y M<N, N es la cantidad de candidatos en la lista de candidatos de información de movimiento)
2. Un segundo índice inicial se incluye en el flujo de bits que puede tener un valor máximo de M.
3. Si el valor del segundo índice inicial es mayor o igual al valor del primer índice, el valor del segundo índice inicial se incrementa por un número predefinido para obtener un segundo índice actualizado (por ejemplo, el número predefinido puede ser uno).
4. La primera parte de subbloque del bloque se predice mediante la aplicación de la información de candidato de movimiento que se determina con base en el primer índice inicial.
5. La segunda parte de subbloque del bloque se predice mediante la aplicación de la información de candidato de movimiento que se determina con base en el segundo índice actualizado.
El valor máximo del primer índice inicial y el segundo índice se establece igual a M, si M es menor o igual a N-1, donde N es el tamaño (número de candidatos de movimiento) de la lista de candidatos de información de movimiento. De lo contrario, el valor máximo del primer índice y el segundo índice se establece igual a N-1.
Se debe señalar que N es el tamaño de la lista de candidatos de fusión, que se podría construir de acuerdo con los métodos en la ITU-T H.265 y en la VVC. El primer índice y el segundo índice que se utilizan en las modalidades apuntan a una lista de candidatos de información de movimiento diferente que se compone solo de candidatos de unipredicción. La lista de candidatos de información de movimiento no es idéntica a la lista de candidatos de fusión, ya que la lista de candidatos de fusión puede incluir candidatos de bipredicción, que están prohibidos para que se utilicen cuando se determina que un bloque aplica la predicción de subbloques (o triangular). En este caso, cada subbloque debe aplicar una información de movimiento de unipredicción, de ahí que el primer índice y el segundo índice apunten a entradas en una lista de candidatos de información de movimiento que solo comprende candidatos de unipredicción. La lista de candidatos de información de movimiento se puede construir utilizando los mismos bloques vecinos espaciales y temporales que se utilizan en la construcción de la lista de candidatos de fusión. En otro ejemplo, la lista de candidatos de información de movimiento se puede construir con base en la lista de candidatos de fusión al convertir los candidatos de bipredicción en la lista de candidatos de fusión en candidatos de unipredicción.
En una implementación factible, N se podría derivar de un indicador que se incluye en el flujo de bits y M podría ser un número predefinido.
En otra implementación factible, N se podría derivar de un indicador que se incluye en el flujo de bits y M se podría derivar de un indicador que se incluye en el flujo de bits. En este caso, el indicador que se utiliza para derivar el valor de M no puede indicar un valor de M que sea mayor que N-1.
En un ejemplo específico, asumir que la lista de candidatos de información de movimiento comprende 3 entradas que son candidatos de información de primer movimiento (1er candidato), segundo candidato de información de movimiento (2do candidato) y tercer candidato de información de movimiento (3er candidato).
Los valores del primer y segundo índice se muestran como ejemplos en la siguiente tabla:
Figure imgf000030_0001
Se señala que el 3er candidato de información de movimiento no se puede seleccionar para aplicarse en el primer subbloque del bloque. La ventaja es que los valores máximos del primer índice y el segundo índice que incluyen el flujo de bits son los mismos (1 en el ejemplo anterior). Por consiguiente, se podría aplicar el mismo esquema de binarización (codificación binaria truncada con base en el valor máximo de 1) para binarizar tanto el primer índice como el segundo índice.
El valor máximo del primer y el segundo índices se establecen para ser el mismo. Esta característica tiene un beneficio adicional de usar el mismo esquema de binarización tanto para el primer como para el segundo índice de fusión cuando se usa codificación binaria truncada.
Modalidad 10:
Si se determina que una predicción de subbloques se aplica a un bloque,
1. Un primer índice inicial se incluye en el flujo de bits que puede tener un valor máximo de M. (M es un entero y M<N, N es la cantidad de candidatos en la lista de candidatos de información de movimiento)
2. Un segundo índice inicial se incluye en el flujo de bits que puede tener un valor máximo de M.
3. La primera parte de subbloque del bloque se predice mediante la aplicación de la información de candidato de movimiento que se determina con base en el primer índice inicial.
4. La segunda parte de subbloque del bloque se predice mediante la aplicación de la información de candidato de movimiento que se determina con base en el segundo índice inicial.
En una implementación factible, el primer índice y el segundo índice se utilizan para seleccionar entradas en una lista de candidatos de información de movimiento (la misma lista se utiliza para seleccionar información de movimiento por el primer índice y el segundo índice), y los candidatos de información de movimiento seleccionados se aplican al primer subbloque y al segundo subbloque de un bloque para predecir el bloque. En una implementación factible, la lista de candidatos de información de movimiento podría estar compuesta solo por candidatos de información de movimiento de unipredicción. Se debe señalar que la lista de candidatos de fusión (como la lista de candidatos de fusión de la UIT-T H.265) podría estar integrada por candidatos de información de movimiento de unipredicción y bipredicción. Por lo tanto, la lista de candidatos de información de movimiento utilizada en la modalidad podría ser diferente de la lista de candidatos de fusión de UIT-T H265.
La lista de candidatos de información de movimiento no es idéntica a la lista de candidatos de fusión, ya que la lista de candidatos de fusión puede incluir candidatos de bipredicción, que están prohibidos para que se utilicen cuando se determina que un bloque aplica la predicción de subbloques (o triangular). En este caso cada subbloque debe aplicar una información de movimiento de unipredicción, de ahí que el primer índice y el segundo índice apunten a entradas en una lista de candidatos de información de movimiento que solo incluye candidatos de unipredicción. La lista de candidatos de información de movimiento se puede construir utilizando los mismos bloques vecinos espaciales y temporales que se utilizan en la construcción de la lista de candidatos de fusión. En otro ejemplo, la lista de candidatos de información de movimiento se puede construir con base en la lista de candidatos de fusión al convertir los candidatos de bipredicción en la lista de candidatos de fusión en candidatos de unipredicción.
Se señala que el primer índice y el segundo índice no necesitan seguir un orden particular en la estructura de flujo de bits.
Se señala que se realizan operaciones idénticas en el codificador y decodificador excepto por la inclusión del indicador (índice) en el flujo de bits. En el decodificador, el indicador se analiza desde el flujo de bits, mientras que el indicador se incluye en el flujo de bits por el codificador.
En un ejemplo específico, se asume una lista de candidatos de información de movimiento que incluye candidatos de información de movimiento con 6 entradas. Se asume además que el primer candidato de movimiento en la lista de candidatos de información de movimiento se aplica al primer subbloque para predicción y el quinto candidato de movimiento en la lista de candidatos de información de movimiento se aplica al segundo subbloque para predicción.
En el lado de codificador:
1. Se incluye un valor de 0 en el flujo de bits para indicar el valor del primer índice. (El valor de índice 0 corresponde a la primera entrada en la lista de candidatos de información de movimiento, el valor 1 corresponde a la segunda entrada y así sucesivamente.)
2. Se incluye un valor de 3 en el flujo de bits para indicar el valor del segundo índice.
3. Se determina que el primer índice apunta al primer candidato de movimiento en una lista de candidatos de información de movimiento. Se aplica para predecir la primera subparte del bloque.
4. Se determina que el segundo índice apunta al cuarto candidato de movimiento en la lista de candidatos de información de movimiento. Se aplica para predecir la segunda subparte del bloque.
En el lado de decodificador:
1. Se analiza un valor de 0 del flujo de bits para indicar el valor del primer índice.
2. Se analiza un valor de 3 del flujo de bits para indicar el valor del segundo índice.
3. Se determina que el primer índice apunta al primer candidato de movimiento en la lista de candidatos de información de movimiento. Se aplica para predecir la primera subparte del bloque.
4. Se determina que el segundo índice apunta al cuarto candidato de movimiento en la lista de candidatos de información de movimiento. Se aplica para predecir la segunda subparte del bloque.
En otro ejemplo específico, asumir que la lista de candidatos de información de movimiento comprende 3 entradas que son candidatos de información de primer movimiento (1er candidato), segundo candidato de información de movimiento (2do candidato) y tercer candidato de información de movimiento (3er candidato).
Los valores del primer y segundo índice son los siguientes:
Figure imgf000031_0001
Modalidad 11:
Si se determina que una predicción de subbloques se aplica a un bloque,
1. Un indicador que indica la dirección de división se incluye en el flujo de bits.
2. Un primer índice inicial se incluye en el flujo de bits que puede tener un valor máximo de M. (M es un entero y M<N, N es la cantidad de candidatos en la lista de candidatos de información de movimiento)
3. Un segundo índice inicial se incluye en el flujo de bits que puede tener un valor máximo de M-m (m es un número entero y m<M, m es un valor predefinido).
4. Si el valor del segundo índice inicial es mayor o igual al valor del primer índice, el valor del segundo índice inicial se incrementa por un número predefinido para obtener un segundo índice actualizado (por ejemplo, el número predefinido puede ser uno).
5. La primera parte de subbloque del bloque se predice mediante la aplicación de la información de candidato de movimiento que se determina con base en el primer índice inicial.
6. La segunda parte de subbloque del bloque se predice mediante la aplicación de la información de candidato de movimiento que se determina con base en el segundo índice actualizado.
Se debe señalar que N es el tamaño de la lista de candidatos de fusión, que se podría construir de acuerdo con los métodos en la ITU-T H.265 y en la VVC. El primer índice y el segundo índice que se utilizan en las modalidades apuntan a una lista de candidatos de información de movimiento diferente que se compone solo de candidatos de unipredicción. La lista de candidatos de información de movimiento no es idéntica a la lista de candidatos de fusión, ya que la lista de candidatos de fusión puede incluir candidatos de bipredicción, que están prohibidos para que se utilicen cuando se determina que un bloque aplica la predicción de subbloques (o triangular). En este caso, cada subbloque debe aplicar una información de movimiento de unipredicción, de ahí que el primer índice y el segundo índice apunten a entradas en una lista de candidatos de información de movimiento que solo comprende candidatos de unipredicción. La lista de candidatos de información de movimiento se puede construir utilizando los mismos bloques vecinos espaciales y temporales que se utilizan en la construcción de la lista de candidatos de fusión. En otro ejemplo, la lista de candidatos de información de movimiento se puede construir con base en la lista de candidatos de fusión al convertir los candidatos de bipredicción en la lista de candidatos de fusión en candidatos de unipredicción.
El valor máximo del primer índice inicial se establece igual a M.
En una implementación factible, N se podría derivar de un indicador que se incluye en el flujo de bits y M podría ser un número predefinido.
En otra implementación factible, N se podría derivar de un indicador que se incluye en el flujo de bits y M se podría derivar de un indicador que se incluye en el flujo de bits. En este caso, el indicador que se utiliza para derivar el valor de M no puede indicar un valor de M que sea mayor que N-1.
En otra implementación factible, N se podría derivar de un indicador que se incluye en el flujo de bits y M se podría derivar de N. Por ejemplo, M se podría derivar de N de la siguiente manera:
Si N es igual a 1, M es igual a cero (la predicción del subbloque no se utiliza y los elementos de sintaxis correspondientes a la predicción del subbloque no se señalizan);
Si N > 2, M es igual a N.
Por ejemplo, M se podría derivar de N de acuerdo con la siguiente tabla:
Figure imgf000032_0001
En otra implementación factible, N se podría derivar de un indicador que se incluye en el flujo de bits y M se podría derivar de N. Por ejemplo, M se podría derivar de N de la siguiente manera:
Si N es igual a 1, M es igual a cero (la predicción del subbloque no se utiliza y los elementos de sintaxis correspondientes a la predicción del subbloque no se señalizan);
Si N > 2 y N<K, M es igual a N, donde K es el valor predefinido del número entero (por ejemplo, K podría ser igual a 5);
Si N > K, M es igual a K.
Por ejemplo, M se podría derivar de N de acuerdo con la siguiente tabla (K es igual a 5):
Figure imgf000032_0002
Modalidad 12:
Si se determina que una predicción de subbloques se aplica a un bloque,
1. Un indicador que indica la dirección de división se incluye en el flujo de bits.
2. Un primer índice inicial se incluye en el flujo de bits que puede tener un valor máximo de M. (M es un número entero)
3. Un segundo índice inicial se incluye en el flujo de bits que puede tener un valor máximo de M-m (m es un número entero y m<M, m es un valor predefinido).
4. Si el valor del segundo índice inicial es mayor o igual al valor del primer índice, el valor del segundo índice inicial se incrementa por un número predefinido para obtener un segundo índice actualizado (por ejemplo, el número predefinido puede ser uno).
5. La primera parte de subbloque del bloque se predice mediante la aplicación de la información de candidato de movimiento que se determina con base en el primer índice inicial.
6. La segunda parte de subbloque del bloque se predice mediante la aplicación de la información de candidato de movimiento que se determina con base en el segundo índice actualizado.
El primer índice y el segundo índice que se utilizan en las modalidades apuntan a una lista de candidatos de información de movimiento diferente que se compone solo de candidatos de unipredicción. La lista de candidatos de información de movimiento no es idéntica a la lista de candidatos de fusión, ya que la lista de candidatos de fusión puede incluir candidatos de bipredicción, que están prohibidos para que se utilicen cuando se determina que un bloque aplica la predicción de subbloques (o triangular). En este caso cada subbloque debe aplicar una información de movimiento de unipredicción, de ahí que el primer índice y el segundo índice apunten a entradas en una lista de candidatos de información de movimiento que solo comprende candidatos de unipredicción. La lista de candidatos de información de movimiento se puede construir utilizando los mismos bloques vecinos espaciales y temporales que se utilizan en la construcción de la lista de candidatos de fusión. En otro ejemplo, la lista de candidatos de información de movimiento se puede construir con base en la lista de candidatos de fusión al convertir los candidatos de bipredicción en la lista de candidatos de fusión en candidatos de unipredicción.
El valor máximo del primer índice inicial es M.
En una implementación factible, M se podría derivar de un indicador que se incluye en el flujo de bits.
M puede depender del valor entero N que es el tamaño de la lista de candidatos de fusión, que se podría construir de acuerdo con los métodos en la ITU-T H.265 y en la VVC.
En otra implementación factible, N se podría derivar de un indicador que se incluye en el flujo de bits y M podría ser un número predefinido.
En otra implementación factible, N se podría derivar de un indicador que se incluye en el flujo de bits y M se podría derivar de N. Por ejemplo, M se podría derivar de N de la siguiente manera:
Si N es igual a 1, M es igual a 2 (para algunos ejemplos, el modo de subbloque puede requerir un primer índice inicial no igual al segundo índice actualizado);
Si N > 2, M es igual a N.
Por ejemplo, M se podría derivar de N de acuerdo con la siguiente tabla:
Figure imgf000033_0001
En otra implementación factible, N se podría derivar de un indicador que se incluye en el flujo de bits y M se podría derivar de N. Por ejemplo, M se podría derivar de N de la siguiente manera:
Si N es igual a 1, M es igual a 2 (para algunos ejemplos, el modo de subbloque puede requerir un primer índice inicial no igual al segundo índice actualizado);
Si N > 2 y N<K, M es igual a N, donde K es el valor predefinido del número entero (por ejemplo, K podría ser igual a 5);
Si N > K, M es igual a K.
Por ejemplo, M se podría derivar de N de acuerdo con la siguiente tabla (K es igual a 5):
Figure imgf000033_0002
Se debe señalar que el valor de N (tamaño de la lista de candidatos de fusión) puede ser menor que el valor de M (un valor máximo del primer índice inicial).
La Figura 15 muestra un método de interpredicción de la presente solicitud. El método de interpredicción se realiza para un bloque de imagen en un método de predicción basado en subbloques, por ejemplo, un modo de predicción triangular.
En un modo de predicción triangular, un bloque actual comprende un primer subbloque de predicción y un segundo subbloque de predicción, por ejemplo, PU1 y PU2 en la Figura 10A o la Figura 10B. Se debe señalar que la presente solicitud también se puede implementar con base en diferentes métodos de predicción basados en subbloques, por ejemplo, los modos de predicción que se muestran en la Figura 11.
S1501: analizar al menos un indicador para determinar un modo de predicción del bloque actual.
Generalmente, la interpredicción incluye varios modos de interpredicción. El modo de interpredicción objetivo se selecciona en el lado de codificador usando diferentes criterios, por ejemplo, procedimiento RDO, y se codifica en un flujo de bits como uno o más indicadores. El lado de decodificador analiza el flujo de bits para lograr el valor del uno o más indicadores y determinar el modo de interpredicción objetivo de acuerdo con el valor del uno o más indicadores.
En una implementación factible, el indicador podría ser un índice de modo de predicción.
En otra implementación factible, se combinan varios indicadores para decidir un modo de predicción.
En el caso de que el modo de predicción determinado del bloque actual sea un modo de predicción triangular, el procedimiento del presente método continúa.
S1502: obtener una lista de candidatos para el bloque actual.
La lista de candidatos se obtiene de una lista de candidatos de modo de fusión. Como ejemplo, la construcción de la lista de candidatos de modo de fusión y la construcción de la lista de candidatos de unipredicción para la predicción triangular del bloque actual se podrían referir a las secciones anteriores.
Se debe señalar que dado que la lista de candidatos para la predicción triangular se deriva de la lista de candidatos de modo de fusión. En una implementación factible, la lista de candidatos podría no ser una lista independiente. El candidato en la lista de candidatos se puede representar por el indicador que apunta a un candidato en la lista de candidatos de modo de fusión.
Se debe señalar que el paso S1502 se puede implementar después de analizar los índices de información de predicción del primer subbloque de predicción y/o el segundo subbloque de predicción. No se limita en la presente solicitud.
S1503: analizar un primer índice de un flujo de bits.
El primer índice se utiliza para obtener información de predicción del primer subbloque de predicción.
A modo de ejemplo, analizar un elemento de sintaxis que representa el primer índice del flujo de bits; localizar un elemento en la lista de candidatos de acuerdo con el primer índice; y obtener el elemento como la información de predicción del primer subbloque de predicción.
S1504: analizar un segundo índice del flujo de bits.
El segundo índice se utiliza para obtener información de predicción del segundo subbloque de predicción.
A modo de ejemplo, analizar otro elemento de sintaxis que representa el segundo índice del flujo de bits.
S1505: comparar el primer índice con el segundo índice.
S1506A: en el caso de que el segundo índice sea menor que el primer índice, localizar un elemento en la lista de candidatos de acuerdo con el segundo índice; y obtener el elemento como la información de predicción del segundo subbloque de predicción.
S1506B: en el caso de que el segundo índice sea igual o mayor que el primer índice, ajustar el segundo índice, luego obtener información de predicción del segundo subbloque de predicción de acuerdo con el segundo índice ajustado.
Similar al paso S1506A, la obtención de información de predicción del segundo subbloque de predicción de acuerdo con el segundo índice ajustado, comprende: localizar un elemento en la lista de candidatos de acuerdo con el segundo índice ajustado; y obtener el elemento como la información de predicción del segundo subbloque de predicción.
Ajustar el segundo índice comprende incrementar el segundo índice en 1.
En otra implementación factible, ajustar el segundo índice podría ser otro cálculo basado en el valor analizado del segundo índice, y el valor ajustado del segundo índice es diferente del valor analizado.
En una implementación específica, los pasos S1505, S1506A y S1506B se podrían describir como: Suponiendo que las variables idxm e idxn, que son el primer índice y el segundo índice (ajustado), para el primer subbloque de predicción y el segundo subbloque de predicción respectivamente, se derivan usando el valor analizado del primer índice (merge_triangle_idx0) y el valor analizado del segundo índice (merge_triangle_idx1) de la siguiente manera: idxm = merge_triangle_idx0
idxn = merge_triangle_idx1 (merge_triangle_idx1 >= idxm)? 1: 0
Se debe señalar que en otra implementación, idxn también se podría derivar como merge_triangle_idx1 (merge_triangle_idx1 > idxm)? 1: 0. De manera similar, en el caso de que el segundo índice sea igual al primer índice, la acción en S1506A o S1506B se puede ejecutar alternativamente con base en las diferentes modalidades, que no se limita en la presente solicitud.
En una implementación factible, en donde el primer índice se binariza de acuerdo con un código unario truncado, el segundo índice se binariza de acuerdo con el código unario truncado.
En una implementación factible, en donde un primer tramo del primer índice binarizado se codifica usando el modo de codificación regular de CABAC, un primer tramo del segundo índice binarizado se codifica usando el modo de codificación regular de CABAC.
En una implementación factible, en donde un no primer tramo del primer índice binarizado se codifica usando el modo de codificación de desviación de CABAC, un no primer tramo del segundo índice binarizado se codifica usando el modo de codificación de desviación de CABAC. El no primer tramo significa cualquier otro tramo del primer índice binarizado (o segundo índice binarizado), excepto el primer tramo.
S1507: obtener un valor de predicción del bloque actual con base en la información de predicción del primer subbloque de predicción y la información de predicción del segundo subbloque de predicción.
Después de obtener la información de predicción del primer subbloque de predicción y la información de predicción del segundo subbloque de predicción, el valor de predicción del bloque actual se podría obtener con base en el método de construcción del método de predicción triangular como se describe en las secciones anteriores.
En una implementación factible, el método de predicción que comprende además: analizar un indicador de dirección desde el flujo de bits, y en donde el indicador de dirección se utiliza para indicar una dirección de división del bloque actual. Por ejemplo, cuando el indicador de dirección es 0, la PU1 y la PU2se dividen por una dirección de división que se muestra como la Figura izquierda de la Figura 10A o la Figura 10B, cuando el indicador de dirección es 1, la PU1 y la PU2se dividen por una dirección de división que se muestra como la Figura derecha de la Figura 10A o la Figura 10B.
Se señala que analizar un indicador de dirección desde el flujo de bits antes de analizar el primer índice desde un flujo de bits en una implementación factible, y analizar un indicador de dirección desde el flujo de bits después de derivar el segundo índice ajustado en otra implementación factible. El orden de implementación no se limita en la presente solicitud, lo que significa que el indicador de dirección se puede portar en las diferentes posiciones por el flujo de bits.
La Figura 16 muestra otro método de interpredicción de la presente solicitud. Se debe señalar que el diseño de palabra de código del primer índice y/o el segundo índice se basa en el valor máximo permitido del primer índice y/o el segundo índice. Un lado de decodificador no puede analizar el primer índice y/o el segundo índice con éxito sin obtener el valor máximo permitido del primer índice y/o el segundo índice.
En una implementación factible, el valor máximo permitido del primer índice y/o el segundo índice se obtiene tanto por el lado de codificador como por el lado de decodificador de acuerdo con un protocolo preestablecido, por ejemplo, un valor preestablecido en una norma. En este caso, no se señaliza ningún indicador para representar el valor máximo permitido.
En otra implementación factible, uno o más indicadores para representar el valor máximo permitido se señalizan en el flujo de bits. Así que el lado decodificador puede lograr un mismo valor que en el lado codificador analizando el flujo de bits.
Se debe señalar que, como un ejemplo, el primer subbloque de predicción y el segundo subbloque de predicción comparten una misma lista de candidatos, el valor máximo permitido del primer índice y/o el segundo índice se puede considerar como una longitud de la lista de candidatos.
Se debe señalar que la longitud de la lista de candidatos se puede codificar en el flujo de bits como sintaxis de alto nivel, por ejemplo, se puede incluir en el conjunto de parámetros de secuencia, conjunto de parámetros de imagen, cabecera de imagen o cabecera de segmento y así sucesivamente. En este caso, la longitud de la lista de candidatos se puede determinar antes del paso S1501.
La longitud de la lista de candidatos también se puede codificar en el nivel de bloque o PU. En este caso, la longitud de la lista de candidatos se puede determinar entre el paso S1502 y el paso S1501.
La longitud de la lista de candidatos se determina de la siguiente manera:
S1508: analizar un primer número para determinar una primera longitud de la lista de candidatos.
En una implementación factible, el primer número se analiza del flujo de bits directamente.
En otra implementación factible, varias sintaxis se analizan desde el flujo de bits, y las sintaxis analizadas se combinan para determinar el primer número.
Como un ejemplo, la primera longitud es una cantidad máxima de información de predicción candidata para el modo de fusión en la lista de candidatos.
Como se describe en las secciones anteriores, la lista de candidatos para el modo de predicción triangular se deriva de la lista de candidatos para el modo de fusión. El índice de modo de fusión también se puede utilizar como el primer índice y/o el segundo índice. En este caso, la lista de candidatos para el modo de predicción triangular se puede considerar como parte de la lista de candidatos para el modo de fusión, por ejemplo, como se muestra en la Figura 12, cada candidato en la lista de candidatos para el modo de predicción triangular corresponde a una información de movimiento de unipredicción en la lista de candidatos para el modo de fusión. Y la cantidad máxima de información de predicción candidata para el modo de fusión y para el modo de predicción triangular podría ser diferente.
S1509: derivar una segunda longitud de la lista de candidatos con base en el primer número.
La segunda longitud es una cantidad máxima de información de predicción candidata para un modo de predicción basado en subbloques en la lista de candidatos, en donde el modo de predicción basado en subbloques es el modo de predicción triangular o el modo de predicción geométrica. El modo de predicción puede ser otro modo de predicción basado en subbloques, incluido el modo rectangular o no rectangular (trapezoidal). Y el modo de predicción triangular y el modo de predicción geométrica se podrían unificar como un solo modo de predicción, que también podría estar implicado en la implementación factible.
Dado que la lista de candidatos del modo de predicción triangular se deriva de la lista de candidatos del modo de fusión, la primera longitud es igual o mayor que la segunda longitud.
En una implementación factible, la segunda longitud se podría obtener restando un valor delta preestablecido del primer número.
En otra implementación factible, la segunda longitud se podría obtener restando un valor delta del primer número, y el valor delta se analiza del flujo de bits.
Se debe señalar que como se muestra en la Figura 12, la lista de candidatos de unipredicción se construye para el modo de predicción triangular, mientras que la lista de candidatos de bipredicción se construye para el modo de fusión. En la presente solicitud, cada información de movimiento en la lista de candidatos de unipredicción indicada por un índice es un candidato para TPM; cada conjunto de información de movimiento (información de movimiento para List0 e información de movimiento para List1) en la lista de candidatos de bipredicción indicado por un índice es un candidato para el modo de fusión.
La modalidad también se podría describir como:
Suponiendo que la lista de candidatos es una lista de candidatos del Modo de Fusión, en consecuencia, se utiliza un índice de Modo de Fusión para indicar un candidato en la lista de candidatos.
S1508': analizar un primer número para determinar un índice candidato máximo permitido en la lista de candidatos.
El índice candidato máximo permitido puede ser el índice máximo para el Modo de fusión. En otras palabras, es el valor máximo permitido del índice de modo de fusión.
S1509': obtener un índice de valor máximo basado en el índice candidato máximo permitido.
El índice de valor máximo se utiliza para indicar la limitación máxima para el primer índice y el segundo índice (los mismos índices que se describen en la modalidad de la Figura 15).
Se debe señalar que de acuerdo con la presente solicitud. Es una redundancia para un modo de predicción basado en subbloques si el primer índice y el segundo índice son iguales. Por lo tanto, si el primer índice tiene una limitación máxima MAX, el segundo índice tendrá una limitación máxima MAX-m cuando el segundo índice se analiza del flujo de bits. m es un entero positivo, por ejemplo, m podría ser 1 en la presente modalidad. Y también se observa que el segundo índice ajustado en la presente modalidad podría ser el mismo que la limitación máxima.
En una implementación factible, obtener el índice máximo mediante un cálculo entre el índice candidato máximo permitido y un número predeterminado. Por ejemplo, el índice máximo es igual al índice candidato máximo permitido: el número predeterminado. En otro ejemplo, el índice máximo es igual al número predeterminado - el índice candidato máximo permitido un valor de desplazamiento.
En otra implementación factible, analizar un segundo número para derivar una diferencia entre el índice candidato máximo permitido y el índice máximo; y obtener el índice máximo mediante un cálculo entre el índice candidato máximo permitido y la diferencia. Por ejemplo, el índice máximo es igual al índice candidato máximo permitido: la diferencia. En otro ejemplo, el índice máximo es igual a la diferencia - el índice candidato máximo permitido un valor de desplazamiento.
En otra modalidad, el índice máximo y el índice candidato máximo permitido se señalizan de forma independiente. Por ejemplo, que es similar con S1508 o S1508', analizar un tercer número para determinar el índice máximo.
Y no importa si el índice máximo y el índice candidato máximo permitido se señalizan de forma independiente o dependiente, en una implementación factible, el índice candidato máximo permitido, que es un índice máximo del Modo de Fusión, no es menor que el índice máximo.
En una implementación específica, max_num_merge_cand_minus_max_num_triangle_cand especifica el número máximo de candidatos de modo de fusión triangular soportados en el segmento (o en la imagen, de acuerdo con las diferentes modalidades) restados de MaxNumMergeCand. six_minus_max_num_merge_cand especifica el número máximo de candidatos de predicción de vector de movimiento de fusión (MVP) soportados en el segmento restada de 6. El número máximo de candidatos MVP fusionados, MaxNumMergeCand se deriva como: MaxNumMergeCand = 6 - six_minus_max_num_merge_cand. El número máximo de candidatos de modo de fusión triangular, MaxNumTriangleMergeCand se deriva como: MaxNumTriangleMergeCand = MaxNumMergeCand -max_num_merge_cand_minus_max_num_triangle_cand. max_num_merge_cand_minus_max_num_triangle_cand se podría portar por el flujo de bits (estar presente), por lo que se puede analizar el valor de max_num_merge_cand_minus_max_num_triangle_cand. Se debe señalar que el valor de MaxNumTriangleMergeCand debe estar en el intervalo de 2 a MaxNumMergeCand.
Con base en una condición diferente, max_num_merge_cand_minus_max_num_triangle_cand podría no portarse por el flujo de bits (no estar presente). En este caso, cuando sps_triangle_enabled_flag es igual a 0 o MaxNumMergeCand es menor que 2, MaxNumTriangleMergeCand se establece igual a 0, lo que significa que no se permite el modo de fusión de triángulo para la porción actual (o la imagen actual, de acuerdo con la modalidad diferente); cuando sps_triangle_enabled_flag es igual a 1 y MaxNumMergeCand es mayor o igual a 2, se infiere que max_num_merge_cand_minus_max_num_triangle_cand es igual a pps_max_num_merge_cand_minus_max_num_triangle_cand_plus1 - 1, en donde sps_triangle_enabled_flag es un elemento de sintaxis incluido en el conjunto de parámetros de secuencia e indicar si TPM está permitido, y pps_max_num_merge_cand_minus_max_num_triangle_cand_plus1 es un elemento de sintaxis incluido en el conjunto de parámetros de imagen. pps_max_num_merge_cand_minus_max_num_triangle_cand_plus1 igual a 0 especifica que max_num_merge_cand_minus_max_num_triangle_cand está presente en la cabecera de segmento de segmentos (o cabecera de imagen de imágenes, de acuerdo con la modalidad diferente) con referencia al conjunto de parámetros de imagen. pps_max_num_merge_cand_minus_max_num_triangle_cand_plus1 es mayor que 0 especifica que max_num_merge_cand_minus_max_num_triangle_cand no está presente en la cabecera de segmento de segmentos (o cabecera de imagen de imágenes, de acuerdo con la modalidad diferente) con referencia al conjunto de parámetros de imagen. El valor de pps_max_num_merge_cand_minus_max_num_triangle_cand_plus1 debe estar comprendido entre 0 y MaxNumMergeCand -1.
De manera alternativa, la primera longitud y la segunda longitud se pueden señalar de forma independiente, lo que significa que el paso S1509 se puede analizar un segundo número para determinar una segunda longitud de la lista de candidatos.
De manera similar, en una implementación factible, el segundo número se analiza del flujo de bits directamente. Y en otra implementación factible, varias sintaxis se analizan desde el flujo de bits, y las sintaxis analizadas se combinan para determinar el segundo número.
Se debe señalar que cualquier información analizada desde el flujo de bits para indicar la primera longitud y/o la segunda longitud directa o indirectamente (por ejemplo, un valor de diferencia entre las dos longitudes) se puede portar por el flujo de bits en el conjunto de parámetros de secuencia, conjunto de parámetros de imagen, cabecera de imagen o cabecera de segmento y así sucesivamente.
La Figura 17 muestra un aparato de interpredicción 1700 de la presente solicitud.
Un bloque actual que comprende un primer subbloque de predicción y un segundo subbloque de predicción, el aparato 1700 que comprende: un módulo de análisis 1701, configurado para analizar un primer índice de un flujo de bits, en donde el primer índice se utiliza para obtener información de predicción del primer subbloque de predicción; y analizar un segundo índice del flujo de bits; un módulo de localización 1702, configurado para comparar el primer índice con el segundo índice; y ajustar el segundo índice en el caso de que el segundo índice sea igual o mayor que el primer índice; y un módulo de obtención 1703, configurado para obtener información de predicción del segundo subbloque de predicción de acuerdo con el segundo índice ajustado.
En una implementación factible, el módulo de localización 1702 se configura para: aumentar el segundo índice por m, en donde m es un entero positivo.
En una implementación factible, en donde m es uno.
En una implementación factible, antes de analizar un primer índice de un flujo de bits, el módulo de análisis 1701 se configura además para: analizar al menos un indicador para determinar un modo de predicción del bloque actual, en donde el modo de predicción es un modo de predicción triangular o un modo de predicción geométrica. El modo de predicción puede ser otro modo de predicción basado en subbloques, incluido el modo rectangular o no rectangular (trapezoidal). Y el modo de predicción triangular y el modo de predicción geométrica se podrían unificar como un solo modo de predicción, que también podría estar implicado en la implementación factible.
En una implementación factible, en donde el módulo de localización 1702 se configura además para: obtener una lista de candidatos para el bloque actual.
En una implementación viable, en donde la información de predicción del primer subbloque de predicción se obtiene de la lista de candidatos de acuerdo con el primer índice.
En una implementación factible, en donde la información de predicción del segundo subbloque de predicción se obtiene de la lista de candidatos de acuerdo con el segundo índice ajustado.
En una implementación factible, en donde la lista de candidatos es una lista de candidatos del Modo de Fusión. En una implementación factible, en donde el módulo de análisis 1701 se configura para: analizar un primer número para determinar un índice candidato máximo permitido en la lista de candidatos; y obtener un índice máximo con base en el índice candidato máximo permitido, en donde el primer índice no es mayor que el índice máximo.
En una implementación factible, en donde el módulo de análisis 1701 se configura para: obtener el índice máximo mediante un cálculo entre el índice candidato máximo permitido y un número predeterminado.
En una implementación factible, en donde el módulo de análisis 1701 se configura para: analizar un segundo número para derivar una diferencia entre el índice candidato máximo permitido y el índice máximo; y obtener el índice máximo mediante un cálculo entre el índice candidato máximo permitido y la diferencia.
En una implementación factible, en donde el módulo de análisis 1701 se configura para: analizar un tercer número para determinar el índice máximo.
En una implementación factible, en donde el índice candidato máximo permitido no es menor que el índice máximo. En una implementación factible, en donde después de obtener información de predicción del segundo subbloque de predicción de acuerdo con el segundo índice ajustado, el módulo de obtención 1703 se configura además para: obtener un valor de predicción del bloque actual con base en la información de predicción del primer subbloque de predicción y la información de predicción del segundo subbloque de predicción.
En una implementación factible, en donde el primer índice o el segundo índice se binariza de acuerdo con un código unario truncado.
En una implementación factible, en donde un primer tramo del primer índice binarizado o segundo índice se codifica usando el modo de codificación regular de CABAC.
En una implementación factible, en donde un no primer tramo del primer índice binarizado o segundo índice se codifica usando modo de codificación de desviación de CABAC.
En una implementación factible, en donde el módulo de análisis 1701 se configura para analizar un indicador de dirección desde el flujo de bits, y en donde el indicador de dirección se utiliza para indicar una dirección de división del bloque actual.
La Figura 18 muestra un aparato de interpredicción 1800 de la presente solicitud, el aparato 1800 puede ser un decodificador o un codificador. El aparato 1800 que comprende: uno o más procesadores 1801; y un medio de almacenamiento legible por ordenador no transitorio 1802 acoplado a los procesadores y que almacena programación para ejecución por los procesadores, en donde la programación, cuando se ejecuta por los procesadores, configura el decodificador para llevar a cabo el método en la Figura 15 o Figura 16.
En otra modalidad, un producto de programa informático que comprende código de programa para realizar el método en la Figura 15 o Figura 16 cuando se ejecuta en un ordenador o un procesador.
En otra modalidad, un medio legible por ordenador no transitorio que porta un código de programa que, cuando se ejecuta por un dispositivo informático, hace que el dispositivo informático realice el método en la Figura 15 o Figura 16.
Lo siguiente es una explicación de las aplicaciones del método de codificación, así como el método de decodificación tal como se muestra en las modalidades mencionadas anteriormente, y un sistema que las usa. La Figura 19 es un diagrama de bloques que muestra un sistema de suministro de contenido 3100 para realizar el servicio de distribución de contenido. Este sistema de suministro de contenido 3100 incluye el dispositivo de captura 3102, el dispositivo terminal 3106 y opcionalmente incluye la pantalla 3126. El dispositivo de captura 3102 se comunica con el dispositivo terminal 3106 a través del enlace de comunicación 3104. El enlace de comunicación puede incluir el canal de comunicación 13 descrito anteriormente. El enlace de comunicación 3104 incluye, pero no se limita a Wi-Fi, Ethernet, Cable, inalámbrico (3G/4G/5G), USB, o cualquier tipo de combinación de los mismos, o similares.
El dispositivo de captura 3102 genera datos y puede codificar los datos mediante el método de codificación como se muestra en las modalidades anteriores. Alternativamente, el dispositivo de captura 3102 puede distribuir los datos a un servidor de transmisión en tiempo real (no mostrado en las figuras), y el servidor codifica los datos y transmite los datos codificados al dispositivo terminal 3106. El dispositivo de captura 3102 incluye, pero no se limita a, cámara, teléfono inteligente o Pad, ordenador u ordenador portátil, sistema de videoconferencia, PDA, dispositivo montado en vehículo, o una combinación de cualquiera de ellos, o similares. Por ejemplo, el dispositivo de captura 3102 puede incluir el dispositivo fuente 12 como se describió anteriormente. Cuando los datos incluyen vídeo, el codificador de vídeo 20 incluido en el dispositivo de captura 3102 puede realizar realmente procesamiento de codificación de vídeo. Cuando los datos incluyen audio (es decir, voz), un codificador de audio incluido en el dispositivo de captura 3102 puede realizar realmente el procesamiento de codificación de audio. Para algunos escenarios prácticos, el dispositivo de captura 3102 distribuye los datos codificados de vídeo y audio al multiplexarlos conjuntamente. Para otros escenarios prácticos, por ejemplo en el sistema de videoconferencia, los datos de audio codificados y los datos de vídeo codificados no se multiplexan. El dispositivo de captura 3102 distribuye los datos de audio codificados y los datos de vídeo codificados al dispositivo terminal 3106 por separado. En el sistema de suministro de contenido 3100, el dispositivo terminal 310 recibe y reproduce los datos codificados. El dispositivo terminal 3106 podría ser un dispositivo con capacidad de recepción y recuperación de datos, tal como teléfono inteligente o Pad 3108, ordenador u ordenador portátil 3110, grabadora de vídeo de red (NVR)/grabadora de vídeo digital (DVR) 3112, TV 3114, decodificador (STB) 3116, sistema de videoconferencia 3118, sistema de videovigilancia 3120, asistente digital personal (PDA) 3122, dispositivo montado en vehículo 3124, o una combinación de cualquiera de los mismos, o similares capaces de decodificar los datos codificados mencionados anteriormente. Por ejemplo, el dispositivo terminal 3106 puede incluir el dispositivo destino 14 como se describió anteriormente. Cuando los datos codificados incluyen vídeo, se prioriza el decodificador de vídeo 30 incluido en el dispositivo terminal para realizar decodificación de vídeo. Cuando los datos codificados incluyen audio, se prioriza un decodificador de audio incluido en el dispositivo terminal para realizar procesamiento de decodificación de audio. Para un dispositivo terminal con su pantalla, por ejemplo, teléfono inteligente o Pad 3108, ordenador portátil 3110, grabadora de vídeo de red (NVR)/grabadora de vídeo digital (DVR) 3112, TV 3114, asistente digital personal (PDA) 3122, o dispositivo montado en vehículo 3124, el dispositivo terminal puede alimentar los datos decodificados a su pantalla. Para un dispositivo terminal equipado sin pantalla, por ejemplo, STB 3116, sistema de videoconferencia 3118 o sistema de vigilancia de vídeo 3120, se pone en contacto una pantalla externa 3126 en el mismo para recibir y mostrar los datos decodificados.
Cuando cada dispositivo en este sistema realiza codificación o decodificación, se puede usar el dispositivo de codificación de imágenes o el dispositivo de decodificación de imágenes, como se muestra en las modalidades mencionadas anteriormente.
La Figura 20 es un diagrama que muestra una estructura de un ejemplo del dispositivo terminal 3106. Después de que el dispositivo terminal 3106 recibe flujo del dispositivo de captura 3102, la unidad de procedimiento de protocolo 3202 analiza el protocolo de transmisión del flujo. El protocolo incluye, pero no se limita a, Protocolo de Transmisión en Tiempo Real (RTSP), Protocolo de Transferencia de Hipertexto (HTTP), Protocolo de Transmisión en tiempo real en Vivo HTTP (HlS), Mp EG-DASH, Protocolo de Transporte en Tiempo Real (RTP), Protocolo de Mensajería en Tiempo Real (RTMP), o cualquier tipo de combinación de los mismos, o similares.
Después de que la unidad de procedimiento de protocolo 3202 procesa la secuencia, se genera el archivo de secuencia. El archivo se envía a una unidad de demultiplexación 3204. La unidad de demultiplexación 3204 puede separar los datos multiplexados en los datos de audio codificados y los datos de vídeo codificados. Como se describió anteriormente, para algunos escenarios prácticos, por ejemplo en el sistema de videoconferencia, los datos de audio codificados y los datos de vídeo codificados no se multiplexan. En esta situación, los datos codificados se transmiten al decodificador de vídeo 3206 y al decodificador de audio 3208 sin a través de la unidad de demultiplexación 3204.
Mediante el procesamiento de demultiplexación, se genera flujo elemental de vídeo (ES), ES de audio y, opcionalmente, subtítulo. El decodificador de vídeo 3206, que incluye el decodificador de vídeo 30 como se explica en las modalidades mencionadas anteriormente, decodifica el ES de vídeo mediante el método de decodificación como se muestra en las modalidades mencionadas anteriormente para generar tramas de vídeo, y alimenta estos datos a la unidad síncrona 3212. El decodificador de audio 3208, decodifica el ES de audio para generar trama de audio y alimenta estos datos a la unidad síncrona 3212. De manera alternativa, el trama de vídeo se puede almacenar en una memoria intermedia (no mostrada en la Figura 20) antes de alimentarlo a la unidad síncrona 3212. De forma similar, el trama de audio se puede almacenar en una memoria intermedia (no mostrada en la Figura 20) antes de alimentarlo a la unidad síncrona 3212.
La unidad síncrona 3212 sincroniza el trama de vídeo y el trama de audio y suministra el video/audio a una pantalla de vídeo/audio 3214. Por ejemplo, la unidad síncrona 3212 sincroniza la presentación de la información de vídeo y audio. La información se puede codificar en la sintaxis utilizando marcas de tiempo relativas a la presentación de datos audiovisuales codificados y marcas de tiempo relativas a la distribución del flujo de datos en sí.
Si el subtítulo se incluye en el flujo, el decodificador de subtítulo 3210 decodifica el subtítulo y lo sincroniza con el trama de vídeo y el trama de audio y suministra el video/audio/subtítulo a una pantalla de vídeo/audio/subtítulo 3216. La presente invención no se limita al sistema mencionado anteriormente, y ya sea el dispositivo de codificación de imágenes o el dispositivo de decodificación de imágenes en las modalidades mencionadas anteriormente se pueden incorporar en otro sistema, por ejemplo, un sistema de automóvil.
Operadores matemáticos
Los operadores matemáticos utilizados en esta solicitud son similares a aquellos utilizados en el lenguaje de programación C. Sin embargo, los resultados de las operaciones de división entera y cambio aritmético se definen con mayor precisión, y se definen operaciones adicionales, tal como exponenciación y división con valores reales. Las convenciones de numeración y conteo generalmente comienzan desde 0, por ejemplo, "el primero" es equivalente al 0-ésimo, "el segundo" es equivalente al 1-ero, etc.
Operadores aritméticos
Los siguientes operadores aritméticos se definen de la siguiente manera:
+ Suma
- Resta (como operador de dos argumentos) o negación (como operador de prefijo unario)
* Multiplicación, que incluye multiplicación de matrices
xy Exponenciación. Especifica x a la potencia de y. En otros contextos, esta notación se utiliza para superíndices que no pretende que se interprete como exponenciación
/ División entera con truncamiento del resultado hacia cero. Por ejemplo, 7 / 4 y -7 / -4 se truncan a 1 y -7 / 4 y 7 / -4 se truncan a -1.
Se utiliza para denotar división en ecuaciones matemáticas donde no se pretende truncar o redondear. x Se utiliza para denotar división en ecuaciones matemáticas donde no se pretende truncar o redondear. Y
La suma de f(i) con i que toma todos los valores enteros de x hasta e que incluye y.
x % y Módulo. Resto de x dividido por y, definido solo para enteros x e y con x >= 0 e y > 0.
Operadores lógicos
Los siguientes operadores lógicos se definen de la siguiente manera:
x &&y Booleano lógico "y" de x y y
x | | y Booleano lógico "o" de x y y
! Booleano lógico "no"
x ? y : z Si x es VERDADERO o no igual a 0, se evalúa al valor de y; de lo contrario, se evalúa al valor de z.
Operadores relacionales
Los siguientes operadores relacionales se definen de la siguiente manera:
> Mayor que
>= Mayor que o igual a
< Menor que
<= Menor que o igual a
= = Igual a
!= No igual a
Cuando un operador relacional se aplica a un elemento o variable de sintaxis al que se le ha asignado el valor "na" (no aplicable), el valor "na" se trata como un valor distinto para el elemento o variable de sintaxis. Se considera que el valor "na" no es igual a ningún otro valor.
Operadores a nivel de bits
Los siguientes operadores de nivel de bit se definen de la siguiente manera:
& a nivel de bits "y”. Cuando se opera en argumentos enteros, opera en una representación de complemento de dos del valor entero. Cuando se opera en un argumento binario que contiene menos bits que otro argumento, se extiende el argumento más corto agregando bits más significativos iguales a 0. | “o” a nivel de bit. Cuando se opera en argumentos enteros, opera en una representación de complemento de dos del valor entero. Cuando se opera en un argumento binario que contiene menos bits que otro argumento, se extiende el argumento más corto agregando bits más significativos iguales a 0.
a "o exclusivo” a nivel de bits. Cuando se opera en argumentos enteros, opera en una representación de complemento de dos del valor entero. Cuando se opera en un argumento binario que contiene menos bits que otro argumento, se extiende el argumento más corto agregando bits más significativos iguales a 0. x >> y Desplazamiento aritmético derecho de una representación entera de complemento de dos de x por y dígitos binarios. Esta función se define solo para valores enteros no negativos de y. Los bits trasladados a los bits más significativos (MSB) como resultado del desplazamiento derecho tienen un valor igual al MSB de x antes de la operación de desplazamiento.
x << y Desplazamiento aritmético izquierdo de una representación entera de complemento de dos de x por y dígitos binarios. Esta función se define solo para valores enteros no negativos de y. Los bits trasladados a los bits menos significativos (LSB) como resultado del desplazamiento izquierdo tienen un valor igual a 0. Operadores de asignación
Los siguientes operadores aritméticos se definen de la siguiente manera:
= Operador de asignación
+ Incremento, es decir, x+ es equivalente a x = x 1; cuando se utiliza en un índice de arreglo, se evalúa al valor de la variable antes de la operación de incremento.
— Decremento, es decir, x— es equivalente a x = x - 1; cuando se utiliza en un índice de arreglo, se evalúa el valor de la variable antes de la operación de disminución.
+= Incremento por cantidad especificada, es decir, x = 3 es equivalente a x = x 3, y x = (-3) es equivalente a x = x (-3).
-= Decremento por cantidad especificada, es decir, x -= 3 es equivalente a x = x - 3, y x - = (-3) es equivalente a x = x -(-3).
Notación de intervalo
La siguiente notación se utiliza para especificar un intervalo de valores:
x = y..z x asume valores enteros a partir de y a z, inclusive, con x, y y z que son números enteros y z mayores que y.
Funciones matemáticas
Se definen las siguientes funciones matemáticas:
Figure imgf000042_0002
Asin(x) la función seno inversa trigonométrica, que opera en un argumento x que está en el intervalo de -1.0 a 1.0, inclusive, con un valor de salida en el intervalo de -n -2 a n-2, inclusive, en unidades de radianes Atan(x) la función tangente inversa trigonométrica, que opera en un argumento x, con un valor de salida en el intervalo de -n -2 a n-2, inclusive, en unidades de radianes
Figure imgf000042_0001
Ceil(x) el número entero más pequeño mayor o igual a x.
Clip1Y(x) = Clip3(0, (1 << BitDepthY) - 1, x)
Clip1c(x) = Clip3(0, (1 « BitDepthc) - 1, x)
Figure imgf000042_0003
Cos(x) la función coseno trigonométrica que opera en un argumento x en unidades de radianes.
Floor(x) el número entero más grande menor o igual a x.
Figure imgf000042_0004
Ln(x) el logaritmo natural de x (el logaritmo base-e, donde e es la constante de base del logaritmo natural 2.718281828...).
Log2(x) el logaritmo base-2 de x.
Log10(x) el logaritmo base-10 de x.
Figure imgf000042_0005
Figure imgf000043_0001
Sin(x) la función seno trigonométrica que opera en un argumento x en unidades de radianes
Figure imgf000043_0002
Tan(x) la función tangente trigonométrica que opera en un argumento x en unidades de radianes
Orden de precedencia de la operación
Cuando un orden de precedencia en una expresión no se indica explícitamente mediante el uso de paréntesis, se aplican las siguientes reglas:
- Las operaciones de mayor precedencia se evalúan antes de cualquier operación de menor precedencia.
- Las operaciones de la misma precedencia se evalúan secuencialmente de izquierda a derecha.
La tabla a continuación especifica la precedencia de las operaciones de mayor a menor; una posición más alta en la tabla indica una precedencia más alta.
Para aquellos operadores que también se utilizan en el lenguaje de programación C. El orden de precedencia utilizado en esta especificación es el mismo que se utiliza en el lenguaje de programación C.
Tabla: Prioridad de operación de mayor (en la parte superior de la tabla) a menor (en la parte inferior de la tabla)
Figure imgf000043_0003
Descripción del texto de operaciones lógicas
En el texto, una instrucción de operaciones lógicas como se describiría matemáticamente en la siguiente forma:
if( condition 0 )
statement 0
else if( condition 1 )
statement 1
else /* comentario informativo sobre la condición restante */
statement n
puede describirse de la siguiente manera:
... como sigue /... se aplica lo siguiente:
- Si la condición 0, declaración 0
- De lo contrario, si la condición 1, declaración 1
- De lo contrario (comentario informativo sobre la condición restante), declaración n
Cada declaración "If... De lo contrario, if... De lo contrario,..." en el texto se introduce con "... como sigue" o "... se aplica lo siguiente" inmediatamente seguido de "If...". La última condición de "If... De lo contrario, if... De lo contrario,..." es siempre "De lo contrario,...". Intercaladas "If... De lo contrario, if... De lo contrario,..." las declaraciones se pueden identificar haciendo coincidir"... como sigue" o "... se aplica lo siguiente" con la terminación "De lo contrario,...".
En el texto, una declaración de operaciones lógicas como se describiría matemáticamente de la siguiente forma:
if( condition 0a && condition 0b )
statement 0
else if( condition 1a | | condition 1b )
statement 1
else
statement n
puede describirse de la siguiente manera:
... como sigue /... se aplica lo siguiente:
- Si se cumplen todas las condiciones siguientes, declaración 0:
- condición 0a
- condición 0b
- De lo contrario, si una o más de las siguientes condiciones son verdaderas, declaración 1:
- condición 1a
- condición 1b
- De lo contrario, declaración n
En el texto, una declaración de operaciones lógicas como se describiría matemáticamente de la siguiente forma:
if( condition 0)
statement 0
if( condition 1)
statement 1
puede describirse de la siguiente manera:
Cuando la condición 0, declaración 0
Cuando la condición 1, declaración 1
Modalidades, por ejemplo, del codificador 20 y el decodificador 30, y las funciones descritas en el presente documento, por ejemplo, con referencia al codificador 20 y al decodificador 30, puede implementarse en hardware, software, microprograma o cualquier combinación de los mismos. Si se implementan en software, las funciones pueden almacenarse en un medio legible por ordenador o transmitirse a través de medios de comunicación como una o más instrucciones o código y ejecutarse mediante una unidad de procesamiento con base en hardware. Los medios legibles por ordenador pueden incluir medios de almacenamiento legibles por ordenador, que corresponden a un medio tangible, tal como medios de almacenamiento de datos, o medios de comunicación, incluido cualquier medio que facilite la transferencia de un programa de informático de un lugar a otro, por ejemplo, de acuerdo con un protocolo de comunicación. De esta manera, los medios legibles por ordenador generalmente pueden corresponder a (1) medios de almacenamiento legibles por ordenador tangibles que no sean transitorios o (2) un medio de comunicación tal como una señal u onda portadora. Los medios de almacenamiento de datos pueden ser cualquier medio disponible al que se pueda acceder mediante uno o más ordenadores o uno o más procesadores para recuperar instrucciones, código y/o estructuras de datos para la implementación de las técnicas descritas en esta invención. Un producto de programa de informático puede incluir un medio legible por ordenador.
A modo de ejemplo, y no limitativo, dichos medios de almacenamiento legibles por ordenador pueden comprender RAM, ROM, EEPROM, CD-ROM u otro almacenamiento en disco óptico, almacenamiento en disco magnético u otros dispositivos de almacenamiento magnético, memoria flash o cualquier otro medio que se pueda usar para almacenar el código de programa deseado en forma de instrucciones o estructuras de datos y al que se puede acceder mediante un ordenador. Además, cualquier conexión se denomina correctamente un medio legible por ordenador. Por ejemplo, si las instrucciones se transmiten desde un sitio web, servidor u otra de origen remota usando un cable coaxial, cable de fibra óptica, par trenzado, línea de suscriptor digital (DSL) o tecnologías inalámbricas como infrarrojos, radio y microondas, entonces el cable coaxial, cable de fibra óptica, par trenzado, DSL o tecnologías inalámbricas como infrarrojos, radio y microondas se incluyen en la definición de medio. Sin embargo, debe entenderse que los medios de almacenamiento legibles por ordenador y los medios de almacenamiento de datos no incluyen conexiones, ondas portadoras, señales u otros medios transitorios, sino que están dirigidos a medios de almacenamiento tangibles y no transitorios. Disco digital y disco, tal como se usan en este documento, incluyen disco compacto (CD), disco láser, disco óptico, disco versátil digital (DVD), disquete y disco Blu-ray, en donde los discos generalmente reproducen datos magnéticamente, mientras que los discos digitales reproducen datos ópticamente con láser. Las combinaciones de los anteriores también deben incluirse dentro del alcance de los medios legibles por ordenador.
Las instrucciones pueden ser ejecutadas por uno o más procesadores, tal como uno o más procesadores de señales digitales (DSP), microprocesadores de propósitos generales, circuitos integrados específicos de aplicación (ASIC), matrices lógicas programables en campo (FPGA) u otros circuitos lógicos integrados o discretos equivalentes. En consecuencia, el término "procesador", tal como se usa en el presente documento, puede referirse a cualquiera de las estructuras anteriores o cualquier otra estructura adecuada para la implementación de las técnicas descritas en el presente documento. Además, en algunos aspectos, la funcionalidad descrita en el presente documento puede proporcionarse dentro de módulos de hardware y/o software dedicados configurados para codificar y decodificar, o incorporarse en un códec combinado. Además, las técnicas podrían implementarse completamente en uno o más circuitos o elementos lógicos. Las técnicas de esta descripción pueden implementarse en una amplia variedad de dispositivos o aparatos, incluido un teléfono inalámbrico, un circuito integrado (IC) o un conjunto de IC (por ejemplo, un conjunto de chips). En esta descripción se describen varios componentes, módulos o unidades para enfatizar los aspectos funcionales de los dispositivos configurados para llevar a cabo las técnicas descritas, pero no necesariamente requieren la modalidad por diferentes unidades de hardware. Más bien, tal como se describió anteriormente, varias unidades pueden combinarse en una unidad de hardware de códec o proporcionarse mediante una colección de unidades de hardware interoperativas, que incluyen uno o más procesadores como se describió anteriormente, junto con software y/o microprograma adecuados.

Claims (20)

REIVINDICACIONES
1. Un método de predicción para un bloque de imagen, en donde un bloque actual que comprende un primer subbloque de predicción y un segundo subbloque de predicción, el método de predicción que comprende: analizar (S1503) un primer índice de un flujo de bits, en donde el primer índice se utiliza para obtener información de predicción del primer subbloque de predicción;
analizar (S1504) un segundo índice del flujo de bits;
comparar (S1505) el primer índice con el segundo índice;
ajustar (S1506B) el segundo índice en el caso de que el segundo índice sea igual o mayor que el primer índice; y
obtener (S1506B) información de predicción del segundo subbloque de predicción de acuerdo con el segundo índice ajustado.
en donde el primer índice o el segundo índice se binarizan de acuerdo con un código unario truncado; en donde ajustar el segundo índice comprende incrementar el segundo índice en uno.
2. El método de predicción de la reivindicación 1, en donde antes de analizar un primer índice de un flujo de bits, el método de predicción que comprende además:
analizar al menos un indicador para determinar un modo de predicción del bloque actual, en donde el modo de predicción es un modo de predicción triangular o un modo de predicción geométrica.
3. El método de predicción de cualquiera de las reivindicaciones 1-2, en donde el método de predicción que comprende además:
obtener una lista de candidatos para el bloque actual.
4. El método de predicción de la reivindicación 3, en donde la información de predicción del primer subbloque de predicción se obtiene de la lista de candidatos de acuerdo con el primer índice.
5. El método de predicción de la reivindicación 3 o 4, en donde la información de predicción del segundo subbloque de predicción se obtiene de la lista de candidatos de acuerdo con el segundo índice ajustado.
6. El método de predicción de cualquiera de las reivindicaciones 3-5, en donde la lista de candidatos es una lista de candidatos del Modo de Fusión.
7. El método de predicción de la reivindicación 6, en donde el método de predicción que comprende además: analizar un primer número para determinar un índice candidato máximo permitido en la lista de candidatos; y
obtener un índice máximo con base en el índice candidato máximo permitido, en donde el primer índice no es mayor que el índice máximo.
8. El método de predicción de la reivindicación 7, en donde obtener el índice máximo con base en el índice candidato máximo permitido, que comprende:
analizar un segundo número para derivar una diferencia entre el índice candidato máximo permitido y el índice máximo; y
obtener el índice máximo mediante un cálculo entre el índice candidato máximo permitido y la diferencia.
9. El método de predicción de cualquiera de las reivindicaciones 1-6, en donde el método de predicción que comprende además:
analizar un tercer número para determinar el índice máximo.
10. El método de predicción de cualquiera de las reivindicaciones 1-9, en donde el índice candidato máximo permitido no es menor que el índice máximo.
11. El método de predicción de cualquiera de las reivindicaciones 1-10, en donde después de obtener información de predicción del segundo subbloque de predicción de acuerdo con el segundo índice ajustado, el método de predicción que comprende además:
obtener un valor de predicción del bloque actual con base en la información de predicción del primer subbloque de predicción y la información de predicción del segundo subbloque de predicción.
12. El método de predicción de cualquiera de las reivindicaciones 1-11, en donde un primer tramo del primer índice binarizado o segundo índice se codifica usando el modo de codificación regular de CABAC.
13. El método de predicción de cualquiera de las reivindicaciones 1 a 12, en donde un no primer tramo del primer índice binarizado o segundo índice se codifica usando modo de codificación de desviación de CABAC.
14. Un aparato (1700) para la interpredicción, en donde un bloque actual que comprende un primer subbloque de predicción y un segundo subbloque de predicción, el aparato que comprende:
un módulo de análisis (1701), configurado para analizar un primer índice de un flujo de bits, en donde el primer índice se utiliza para obtener información de predicción del primer subbloque de predicción; y analizar un segundo índice del flujo de bits;
un módulo de localización (1702), configurado para comparar el primer índice con el segundo índice; y ajustar el segundo índice en el caso de que el segundo índice sea igual o mayor que el primer índice; y un módulo de obtención (1703), configurado para obtener información de predicción del segundo subbloque de predicción de acuerdo con el segundo índice ajustado;
en donde el primer índice o el segundo índice se binariza de acuerdo con un código unario truncado; en donde el módulo de localización está configurado para incrementar el segundo índice en uno.
15. El aparato de la reivindicación 14, en donde antes de analizar un primer índice de un flujo de bits, el módulo de análisis se configura además para:
analizar al menos un indicador para determinar un modo de predicción del bloque actual, en donde el modo de predicción es un modo de predicción triangular o un modo de predicción geométrica.
16. El aparato de cualquiera de las reivindicaciones 14-15, en donde el módulo de localización está configurado además para:
obtener una lista de candidatos para el bloque actual.
17. El aparato de la reivindicación 16, en donde la información de predicción del primer subbloque de predicción se obtiene de la lista de candidatos de acuerdo con el primer índice.
18. El aparato de la reivindicación 16 o 17, en donde la información de predicción del segundo subbloque de predicción se obtiene de la lista de candidatos de acuerdo con el segundo índice ajustado.
19. El aparato de cualquiera de las reivindicaciones 16 a 18, en donde la lista de candidatos es una lista de candidatos del modo de fusión.
20. Un producto de programa informático que comprende un código de programa para realizar el método de acuerdo con cualquiera de las reivindicaciones 1 a 13 cuando se ejecuta en un ordenador o un procesador.
ES19887343T 2018-11-22 2019-11-22 Método, aparato y producto de programa informático para interpredicción Active ES2946909T3 (es)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201862770826P 2018-11-22 2018-11-22
US201962787678P 2019-01-02 2019-01-02
US201962816897P 2019-03-11 2019-03-11
US201962905367P 2019-09-24 2019-09-24
PCT/RU2019/050224 WO2020106190A1 (en) 2018-11-22 2019-11-22 An encoder, a decoder and corresponding methods for inter prediction

Publications (1)

Publication Number Publication Date
ES2946909T3 true ES2946909T3 (es) 2023-07-27

Family

ID=70773945

Family Applications (1)

Application Number Title Priority Date Filing Date
ES19887343T Active ES2946909T3 (es) 2018-11-22 2019-11-22 Método, aparato y producto de programa informático para interpredicción

Country Status (16)

Country Link
US (2) US11558632B2 (es)
EP (2) EP4221205A1 (es)
JP (2) JP7239697B2 (es)
KR (2) KR102638710B1 (es)
CN (2) CN113727101B (es)
AU (2) AU2019384016B2 (es)
BR (1) BR112021009848A2 (es)
CA (1) CA3120877A1 (es)
ES (1) ES2946909T3 (es)
HU (1) HUE062487T2 (es)
IL (1) IL283359A (es)
MX (1) MX2021006039A (es)
PL (1) PL3884670T3 (es)
PT (1) PT3884670T (es)
SG (1) SG11202105354YA (es)
WO (1) WO2020106190A1 (es)

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11520704B1 (en) * 2021-06-30 2022-12-06 International Business Machines Corporation Writing store data of multiple store operations into a cache line in a single cycle
BR112021008298A2 (pt) 2018-11-08 2021-08-03 Guangdong Oppo Mobile Telecommunications Corp., Ltd. método de decodificação de vídeo, método de codificação de vídeo, aparelho de decodificação de vídeo e codificador de vídeo
US10778977B2 (en) * 2018-12-05 2020-09-15 Qualcomm Incorporated Triangle motion information for video coding
US10893298B2 (en) * 2018-12-12 2021-01-12 Tencent America LLC Method and apparatus for video coding
GB2580084B (en) * 2018-12-20 2022-12-28 Canon Kk Video coding and decoding
US11032574B2 (en) * 2018-12-31 2021-06-08 Tencent America LLC Method and apparatus for video coding
KR102443965B1 (ko) * 2019-01-01 2022-09-19 엘지전자 주식회사 히스토리 기반 모션 벡터 예측을 기반으로 비디오 신호를 처리하기 위한 방법 및 장치
US10742972B1 (en) * 2019-03-08 2020-08-11 Tencent America LLC Merge list construction in triangular prediction
US11589043B2 (en) * 2019-06-24 2023-02-21 Tencent America LLC Flexible slice, tile and brick partitioning
JP2021027429A (ja) * 2019-08-01 2021-02-22 シャープ株式会社 動画像符号化装置、動画像復号装置
US11792423B2 (en) 2019-11-22 2023-10-17 Qualcomm Incorporated Early termination of motion vector refinement process in video coding
US11496755B2 (en) * 2019-12-28 2022-11-08 Tencent America LLC Method and apparatus for video coding
WO2021194797A1 (en) * 2020-03-26 2021-09-30 Alibaba Group Holding Limited Method and apparatus for encoding or decoding video
CN117280684A (zh) * 2021-04-09 2023-12-22 交互数字Ce专利控股有限公司 具有可切换内插滤波器的几何分区
EP4364409A1 (en) * 2021-06-28 2024-05-08 Beijing Dajia Internet Information Technology Co., Ltd. Methods and devices for geometric partition mode with motion vector refinement
JP2023005871A (ja) * 2021-06-29 2023-01-18 Kddi株式会社 画像復号装置、画像復号方法及びプログラム
JP7495909B2 (ja) * 2021-08-05 2024-06-05 Kddi株式会社 画像復号装置、画像復号方法及びプログラム
US20230069984A1 (en) * 2021-08-24 2023-03-09 Tencent America LLC Hardware friendly design for intra mode coding
JP2023047920A (ja) * 2021-09-27 2023-04-06 Kddi株式会社 画像復号装置、画像復号方法及びプログラム
JP2023048030A (ja) * 2021-09-27 2023-04-06 Kddi株式会社 画像復号装置、画像復号方法及びプログラム
WO2023132615A1 (ko) * 2022-01-04 2023-07-13 현대자동차주식회사 쌍 머지 후보들을 생성하여 머지 후보 리스트를 구성하는 비디오 부호화/복호화 방법 및 장치
WO2024067638A1 (en) * 2022-09-27 2024-04-04 Douyin Vision Co., Ltd. Method, apparatus, and medium for video processing

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8724697B2 (en) * 2008-09-26 2014-05-13 Qualcomm Incorporated Locating motion vectors for video data units
KR101878148B1 (ko) * 2010-05-04 2018-07-13 엘지전자 주식회사 비디오 신호의 처리 방법 및 장치
KR20130049522A (ko) * 2011-11-04 2013-05-14 오수미 인트라 예측 블록 생성 방법
US9554150B2 (en) * 2013-09-20 2017-01-24 Qualcomm Incorporated Combined bi-predictive merging candidates for 3D video coding
US10158866B2 (en) * 2014-09-26 2018-12-18 Qualcomm Incorporated Parsing dependency reduction for palette index coding
BR112017010468B1 (pt) * 2014-11-18 2024-01-02 Hfi Innovation Inc Método de decodificação de vídeo para blocos codificados no modo de interpredição e método de codificação de vídeo para blocos codificados no modo de interpredição
KR20230155014A (ko) * 2018-11-02 2023-11-09 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 Hmvp 후보 저장을 위한 표 유지
CA3235103A1 (en) * 2018-11-08 2020-05-14 Guangdong Oppo Mobile Telecommunications Corp., Ltd. Partitioning of a coding block to obtain a plurality of prediction blocks in encoding/decoding a video signal
US10778977B2 (en) * 2018-12-05 2020-09-15 Qualcomm Incorporated Triangle motion information for video coding
US11032574B2 (en) * 2018-12-31 2021-06-08 Tencent America LLC Method and apparatus for video coding
KR20200127909A (ko) * 2019-05-02 2020-11-11 주식회사 엑스리스 영상 신호 부호화/복호화 방법 및 이를 위한 장치

Also Published As

Publication number Publication date
EP3884670A4 (en) 2022-01-19
AU2019384016A1 (en) 2021-06-17
AU2023203444A1 (en) 2023-06-29
KR20210089776A (ko) 2021-07-16
BR112021009848A2 (pt) 2021-08-17
JP7239697B2 (ja) 2023-03-14
WO2020106190A1 (en) 2020-05-28
KR102638710B1 (ko) 2024-02-19
KR20240025062A (ko) 2024-02-26
EP3884670B1 (en) 2023-05-10
EP3884670B9 (en) 2023-07-19
PT3884670T (pt) 2023-06-02
AU2019384016B2 (en) 2023-03-02
SG11202105354YA (en) 2021-06-29
EP3884670A1 (en) 2021-09-29
US20210281870A1 (en) 2021-09-09
US20230125381A1 (en) 2023-04-27
JP2023078188A (ja) 2023-06-06
CN113727101A (zh) 2021-11-30
HUE062487T2 (hu) 2023-11-28
CA3120877A1 (en) 2020-05-28
IL283359A (en) 2021-07-29
US11558632B2 (en) 2023-01-17
JP2022507872A (ja) 2022-01-18
PL3884670T3 (pl) 2023-07-10
CN113170142A (zh) 2021-07-23
EP4221205A1 (en) 2023-08-02
MX2021006039A (es) 2021-09-10
CN113727101B (zh) 2022-10-11

Similar Documents

Publication Publication Date Title
ES2946909T3 (es) Método, aparato y producto de programa informático para interpredicción
KR102596735B1 (ko) 루마 및 크로마 성분에 대한 ibc 전용 버퍼 및 디폴트 값 리프레싱을 사용하는 인코더, 디코더 및 대응하는 방법들
ES2966479T3 (es) Un codificador, un decodificador y métodos correspondientes para la intrapredicción
ES2973667T3 (es) Un codificador de video, un decodificador de video y métodos correspondientes
ES2972326T3 (es) Un codificador, un decodificador y métodos correspondientes para el modo de fusión
CN113660497B (zh) 编码器、解码器和使用ibc合并列表的对应方法
CN113597761A (zh) 帧内预测方法和装置
ES2966509T3 (es) Método y dispositivo de partición de imagen
ES2967903T3 (es) Codificador, decodificador y métodos correspondientes utilizando filtrado por interpolación
ES2946058T3 (es) Un codificador, un decodificador y los métodos correspondientes que usan la codificación intramodo para la intrapredicción
CN115278227B (zh) 一种由解码设备或编码设备实现的译码方法,编码器和解码器
ES2946487T3 (es) Un codificador, un decodificador y métodos correspondientes de reducción de complejidad en intra predicción para el modo planar
ES2967663T3 (es) Método y aparato para el almacenamiento de información de movimiento
US11997296B2 (en) Motion field storage optimization for a line buffer