ES2966509T3 - Método y dispositivo de partición de imagen - Google Patents

Método y dispositivo de partición de imagen Download PDF

Info

Publication number
ES2966509T3
ES2966509T3 ES19855934T ES19855934T ES2966509T3 ES 2966509 T3 ES2966509 T3 ES 2966509T3 ES 19855934 T ES19855934 T ES 19855934T ES 19855934 T ES19855934 T ES 19855934T ES 2966509 T3 ES2966509 T3 ES 2966509T3
Authority
ES
Spain
Prior art keywords
node
block
mode
split
current node
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
ES19855934T
Other languages
English (en)
Inventor
Yin Zhao
Haitao Yang
Jianle Chen
Lian Zhang
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
Priority claimed from CN201910191131.5A external-priority patent/CN110868590B/zh
Priority claimed from CN201910696741.0A external-priority patent/CN111669583A/zh
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority claimed from PCT/CN2019/103094 external-priority patent/WO2020043136A1/zh
Application granted granted Critical
Publication of ES2966509T3 publication Critical patent/ES2966509T3/es
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/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
    • 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/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/96Tree coding, e.g. quad-tree coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/132Sampling, masking or truncation of coding units, e.g. adaptive resampling, frame skipping, frame interpolation or high-frequency transform coefficient masking
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/157Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/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/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/186Methods 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 a colour or a chrominance component
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards

Landscapes

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

Abstract

Las realizaciones de la presente invención proporcionan un método y dispositivo de partición de imágenes. El método comprende: determinar un modo de partición del nodo actual, comprendiendo el nodo actual un bloque de brillo y un bloque de croma; determinar que el bloque croma del nodo actual no está dividido según el modo de partición del nodo actual y el tamaño del nodo actual; y dividir el bloque de brillo del nodo actual de acuerdo con el modo de partición del nodo actual cuando el bloque de croma del nodo actual no está particionado. Cuando el bloque de croma del nodo actual no está dividido, según el método, el bloque de brillo del nodo actual sólo puede dividirse, mejorando así la eficiencia de codificación/decodificación, reduciendo el rendimiento máximo de un codificador/decodificador y facilitando la consecución de la codificador/descodificador. (Traducción automática con Google Translate, sin valor legal)

Description

DESCRIPCIÓN
Método y dispositivo de partición de imagen
Campo técnico
Esta solicitud se refiere al campo de la codificación de vídeo y, con mayor precisión, a un método y aparato de división de imágenes (partición de imagen).
Antecedentes
A medida que las tecnologías de internet se desarrollan rápidamente y los cultivos diarios y los cultivos adiciontuales se enriquecen cada vez más, existen demandas crecientes en aplicaciones de vídeos, especialmente vídeos de alta definición, en internet. Sin embargo, un vídeo de alta definición tiene una cantidad bastante grande de datos. Para transmitir el vídeo de alta definición en internet con un ancho de banda limitado, un problema que necesita resolverse primero es codificar y decodificar el vídeo. La codificación de vídeo se usa en una amplia gama de aplicaciones de vídeo digital, por ejemplo, la transmisión de televisión digital, la transmisión de vídeo a través de internet y las redes móviles, aplicaciones conversacionales en tiempo real tales como chat de vídeo y videoconferencia, DVD y discos Blu-ray, sistemas de adquisición y edición de contenido de vídeo y aplicaciones de seguridad de videocables.
Cada imagen de una secuencia de vídeo se divide típicamente en un conjunto de bloques no superpuestos y la codificación se realiza típicamente en un nivel de bloque. Por ejemplo, se genera un bloque de predicción a través de predicción espacial (intraimagen) y/o predicción temporal (interimagen). En consecuencia, un modo de predicción puede incluir un modo de intra predicción (predicción espacial) y un modo de interpredicción (predicción temporal). Un conjunto de modos de intra predicción puede incluir 35 modos de intra predicción diferentes, por ejemplo, modos no direccionales tales como un modo DC (o promedio) y un modo plano, o modos direccionales definidos en H.265; o puede incluir 67 modos de intrapredicción diferentes, por ejemplo, modos no direccionales tales como un modo DC (o promedio) y un modo plano, o modos direccionales definidos en H 266 bajo desarrollo. El conjunto de modos de interpredicción depende de una imagen de referencia disponible y otro parámetro de interpredicción, por ejemplo, dependiendo de si se usa toda la imagen de referencia o solo se usa una parte de la imagen de referencia.
Un vídeo existente es generalmente un vídeo de color, e incluye un componente de crominancia además de un componente de luma. Por lo tanto, además de codificar y decodificar el componente de luminancia, el componente de crominancia también necesita codificarse y decodificarse. Sin embargo, la eficiencia de codificación y decodificación es comparativamente baja en una tecnología convencional. IL-KOO KIM Y COL.: “ Estructura de partición de bloque en la norma HEVC” , IEEE TRANSACTIONS ON CIRCUITS and SYSTEMS FOR VIDEO TECHNOLOGY, vol. 22, núm. 12, 1 de diciembre de 2012 describe la estructura de división de bloques de la norma HEVC borrador y presenta los resultados de un análisis de eficiencia y complejidad de codificación. MA (FRAUNHOFER) J Y COL.: “ Descripción del experimento de núcleo 1 (EC1): Partición” , 122. REUNION MPEG; 20.180.416-20.180.420 SAN DIEGO; (MOTION PICTURE EXPERT GROUP OR ISO/IEC JTC1/SC29/WG11 define y describe el experimento Core en partición realizado en el curso del desarrollo del estándar VVC.
Resumen
Los aspectos de la presente solicitud se definen en las reivindicaciones independientes. Las características adicionales de la invención se presentan en las reivindicaciones dependientes. A continuación, las partes de la descripción y los dibujos que se refieren a las realizaciones que no cubren las reivindicaciones no se presentan como realizaciones de la invención, sino como ejemplos útiles para comprender la invención.
Las realizaciones de esta solicitud (o esta descripción) proporcionan un aparato y método de partición de imágenes.
De acuerdo con un quinto aspecto, una realización de la presente invención proporciona además un extremo de transmisión. El método se realiza mediante un aparato de codificación o decodificación de flujo de vídeo. El procedimiento incluye: determinar un modo de división de un nodo actual, donde el nodo actual incluye un bloque de luminancia y un bloque de crominancia determinar, basándose en el modo dividido del nodo actual y un tamaño del nodo actual, que el bloque de crominancia del nodo actual no se divide adicional; y cuando el bloque de crominancia del nodo actual no se divide adicionalmente, dividir el bloque de luminancia del nodo actual basándose en el modo dividido del nodo actual.
De acuerdo con el método en el primer aspecto, cuando el bloque de crominancia del nodo actual no se divide más, solo el bloque de luma del nodo actual puede dividirse, mejorando así la eficiencia de codificación y decodificación, reduciendo un rendimiento máximo de un códec, y facilitando la implementación del códec.
Según un segundo aspecto, una realización de la presente invención se refiere a un aparato de decodificación de flujo de vídeo, que incluye un procesador y una memoria. La memoria almacena una instrucción, y la instrucción permite que el procesador realice el método de acuerdo con el primer aspecto.
Según un tercer aspecto, una realización de la presente invención se refiere a un aparato de codificación de flujo de vídeo, que incluye un procesador y una memoria. La memoria almacena una instrucción, y la instrucción permite que el procesador realice el método de acuerdo con el primer aspecto.
De acuerdo con un cuarto aspecto, se proporciona un medio de almacenamiento legible por ordenador. El medio de almacenamiento legible por ordenador almacena una instrucción. y cuando se ejecuta la instrucción, se habilitan uno o más procesadores para codificar datos de vídeo. La instrucción permite que uno o más procesadores realicen el método según cualquier posible realización del primer aspecto.
De acuerdo con un quinto aspecto, una realización de la presente invención se refiere a un programa informático que incluye código de programa. Cuando el código de programa se ejecuta en un ordenador, se realiza el método según cualquier posible realización del primer aspecto.
Los detalles de una o más realizaciones se describen en los dibujos adjuntos y las siguientes descripciones. Otras características, objetos y ventajas resultarán evidentes a partir de la descripción, los dibujos y las reivindicaciones. Breve descripción de los dibujos
Para describir con mayor claridad las soluciones técnicas en las realizaciones de esta solicitud o de la técnica anterior, a continuación, se describen los dibujos acompañantes necesarios para describir las realizaciones de esta solicitud o de los antecedentes.
la Figura 1 es un diagrama de bloques que muestra un ejemplo de un sistema de codificación de vídeo configurado para implementar realizaciones de la invención;
La figura 1B es un diagrama de bloques de un ejemplo de un sistema de codificación de vídeo que incluye cualquiera o dos de un codificador 20 en la figura 2 y un decodificador 30 en la figura 3;
la Figura 2 es un diagrama de bloques que muestra un ejemplo de un codificador de vídeo configurado para implementar realizaciones de la invención;
la Figura 3 es un diagrama de bloques que muestra un ejemplo de estructura de un descodificador de vídeo configurado para implementar realizaciones 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 un ejemplo de otro aparato de codificación u otro aparato de decodificación;
La Figura 6 muestra un ejemplo de una rejilla de muestras en un formato YUV;
La figura 7A a la figura 7E muestra cinco tipos divididos diferentes:
La figura 8 muestra un modo de división de árbol binario más binario
La Figura 9 es un diagrama de flujo de un método de comunicaciones de acuerdo con una realización de la presente invención;
La Figura 10 es un diagrama de flujo de la etapa 906 en la realización 1 de la presente invención; y
La Figura 11 es un diagrama de flujo de un método de comunicaciones de acuerdo con una realización de la presente invención;
En los siguientes signos de referencia idénticos se refieren características idénticas o al menos funcionalmente equivalentes si no se especifican explícitamente de cualquier otra manera.
Descripción de las realizaciones
La codificación de vídeo como se utiliza en la presente memoria se refiere al procesamiento de una secuencia de imágenes, que forman la secuencia de vídeo o vídeo. Los términos “ imagen” , “ trama” y “ imagen” pueden usarse como sinónimos en el campo de la codificación de vídeo. La codificación de vídeo usada en esta solicitud (o presente divulgación) indica codificación de vídeo o decodificación de vídeo. La codificación de vídeo se realiza en un lado de origen, por ejemplo, procesando (por ejemplo, comprimiendo) imágenes de vídeo sin procesar para reducir una cantidad de datos requeridos para representar las imágenes de vídeo, para un almacenamiento y/o transmisión más eficientes. La decodificación de vídeo se realiza en un lado de destino, y generalmente incluye el procesamiento inverso en comparación con un codificador para reconstruir las imágenes de vídeo. La “ codificación” de imágenes de vídeo en las realizaciones debe entenderse como “ codificación” o “ decodificación” de una secuencia de vídeo. Una combinación de componentes de codificación y componentes de decodificación también se denomina códec (codificación y decodificación).
Cada imagen de una secuencia de vídeo se divide típicamente en un conjunto de bloques no superpuestos y la codificación se realiza típicamente en un nivel de bloque. En otras palabras, en un lado del codificador, un video generalmente se procesa, es decir, se codifica, en un bloque (que también se denomina como un bloque de imagen o un bloque de video), por ejemplo, mediante el uso de predicción espacial (intraimagen) y/o predicción temporal (interimagen) para generar un bloque de predicción, restando el bloque de predicción de un bloque actual (un bloque actualmente procesado/para ser procesado) para obtener un bloque residual, transformar el bloque residual y cuantificar el bloque residual en un dominio de transformación para reducir una cantidad de datos a transmitir (comprimirse). En un lado del decodificador, el procesamiento inverso en comparación con el codificador se aplica a un bloque codificado o comprimido para reconstruir un bloque actual para la representación. Además, el codificador duplica un bucle de procesamiento de decodificador, de modo que el codificador y el decodificador generan predicciones idénticas (por ejemplo, predicciones intra e interpredicciones) y/o reconstrucciones para procesamiento, es decir, codificación de bloques posteriores.
Como se utiliza en la presente memoria, el término “ bloque” puede ser una parte de una imagen o un marco. Los términos clave se definen como sigue en esta solicitud:
Un bloque actual es un bloque que se está procesando. Por ejemplo, en la codificación, el bloque actual es un bloque que está actualmente codificado; en la decodificación, el bloque actual es un bloque que se está descodificando. Si el bloque procesado actualmente es un bloque de componente de crominancia, el bloque procesado actualmente se denomina bloque de crominancia actual. Un bloque de luma correspondiente al bloque de crominancia actual puede denominarse bloque de luma actual.
CTU: es la abreviatura de unidad de árbol de codificación. Una imagen incluye una pluralidad de CTLT, y una CTU normalmente corresponde a una región de imagen cuadrada, e incluye muestras de luma y muestras de croma en la región de la imagen (o puede incluir solo muestras de luma, o puede incluir solo muestras de croma). La CTU incluye además elementos sintácticos. Estos elementos de sintaxis indican un método sobre cómo dividir la CTU en al menos una unidad de codificación (CU) y decodificar cada unidad de codificación para obtener una imagen reconstruida.
CU: es la abreviatura de unidad de codificación. Una CU normalmente corresponde A una región rectangular AxB e incluye muestras de luma AxB y muestras de croma correspondientes A las muestras de luma, donde A es el ancho del rectángulo, B es la altura del rectángulo, y A puede ser igual o diferente de B. Los valores de A y B son normalmente potencias enteros de 2, por ejemplo, 256, 128, 64, 32, 16, 8 y 4. Una unidad de codificación puede decodificarse a través del procesamiento de decodificación para obtener una imagen reconstruida de una región rectangular AxB. El procesamiento de decodificación generalmente incluye realizar un procesamiento tal como predicción, descuantificación y transformación inversa, para generar una imagen predicha y un residuo. Se obtiene una imagen reconstruida superponiendo la imagen predicha y el residuo.
A continuación se describen realizaciones de un codificador 20, un decodificador 30 y un sistema 10 de codificación basado en la figura 1A a la figura 3.
La Figura 1 es un diagrama de bloques esquemático y conceptual que ilustra un sistema 10 de codificación ilustrativo, p. ej., un sistema 10 de codificación de vídeo que puede utilizar técnicas de esta presente solicitud (presente descripción). El codificador 20 (por ejemplo, el codificador de vídeo 20) y el descodificador 30 (por ejemplo, el descodificador 30 de vídeo) del sistema 10 de codificación de vídeo representan ejemplos de dispositivos que pueden configurarse para realizar técnicas según diversos ejemplos descritos en la presente solicitud. Como se muestra en la Figura 1, el sistema 10 de codificación comprende un dispositivo 12 de origen configurado para proporcionar datos codificados 13, por ejemplo, una imagen codificada 13, por ejemplo, a un dispositivo 14 de destino para descodificar los datos codificados 13.
El dispositivo 12 de origen comprende un codificador 20, y puede además, es decir, opcionalmente, comprender una fuente 16 de imágenes, una unidad 18 de preprocesamiento, por ejemplo, una unidad 18 de preprocesamiento de imágenes y una interfaz 22 de comunicación o unidad 22 de comunicación.
La fuente 16 de imágenes puede comprender o ser cualquier tipo de dispositivo de captura de imágenes, por ejemplo, para capturar una imagen en el mundo real, y/o cualquier tipo de imagen o comentario (para la codificación de contenido de pantalla, algunos textos en la pantalla también se consideran parte de un dispositivo de generación de imagen o imagen a codificar), por ejemplo, un procesador de gráficos de ordenador para generar una imagen animada por ordenador, o cualquier tipo de dispositivo para obtener y/o proporcionar una imagen en el mundo real, una imagen animada 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).
Una imagen (digital) es o puede considerarse como una matriz bidimensional o matriz de muestras con valores de intensidad. Una muestra en la matriz también puede denominarse píxel (forma corta del elemento de la imagen). El número de muestras en dirección horizontal y vertical (o eje) de la matriz o imagen define el tamaño y/o resolución de la imagen. Para la representación de color, normalmente se emplean tres componentes de color, es decir, la imagen puede representarse o incluir tres matrices de muestras. En el formato de RBG o el espacio de color, una imagen comprende una matriz de muestras roja, verde y azul correspondiente. Sin embargo, en la codificación de vídeo, cada píxel generalmente se representa en un formato de luma/croma o un espacio de color. Por ejemplo, YCbCr, que incluye un componente de luma indicado por Y (en ocasiones L se usa en lugar) Y dos componentes de crominancia indicados por Cb Y Cr. El componente Y de luminancia (o luma corta) representa el brillo o la intensidad del nivel de grises (por ejemplo, como en una imagen a escala de grises), mientras que los dos componentes Cb y Cr de crominancia (o croma corta) representan la cromaticidad o los componentes de información de color. En consecuencia, una imagen en formato YCbCr comprende una matriz de muestras de luminancia de valores de muestra de luminancia (Y), y dos matrices de muestras de crominancia de valores de crominancia (Cb y Cr). Las imágenes en formato RGB pueden convertirse o transformarse en formato YCbCr y viceversa, el proceso también se conoce como transformación de color o conversión. Si una imagen es monocromática, la imagen puede comprender solo una matriz de muestras de luminancia.
La fuente 16 de imágenes (p. ej., fuente 16 de vídeo) puede ser, por ejemplo, una cámara para capturar una imagen, una memoria, p. ej., una memoria de imagen, que comprende o almacenar una imagen previamente capturada o generada, y/o cualquier tipo de interfaz (interna o externa) para obtener o recibir una imagen. La cámara puede ser, por ejemplo, una cámara local o integrada en el dispositivo fuente, la memoria puede ser una memoria local o integrada, por ejemplo, integrada en el dispositivo fuente. La interfaz puede ser, por ejemplo, una interfaz externa para recibir una imagen de una fuente de vídeo externa. La fuente de vídeo externa es, por ejemplo, un dispositivo de captura de imágenes externas tal como una cámara, una memoria externa o un dispositivo de generación de imágenes externas. El dispositivo de generación de imágenes externas es, por ejemplo, un procesador, ordenador o servidor de gráficos de ordenador externo. La interfaz puede ser cualquier tipo de interfaz, por ejemplo, una interfaz cableada o inalámbrica, una interfaz óptica, según cualquier protocolo de interfaz patentado o estandarizado. La interfaz para obtener los datos 17 de imagen puede ser la misma interfaz que o parte de la interfaz 22 de comunicación.
En distinción a la unidad 18 de preprocesamiento y el procesamiento realizado por la unidad 18 de preprocesamiento, la imagen o los datos 17 de imagen (por ejemplo, datos 16 de vídeo) también pueden denominarse imágenes sin procesar o datos 17 de imagen sin procesar.
La unidad 18 de preprocesamiento se configura para recibir los datos 17 de imagen (sin procesar) y para realizar el procesamiento previo en los datos 17 de imagen para obtener una imagen 19 previamente procesada o datos 19 de imagen previamente procesados. Por ejemplo, el preprocesamiento realizado por la unidad 18 de preprocesamiento puede incluir el recorte, la conversión de formato de color (por ejemplo, la conversión de RGB a YCbCr), la sintonización de color y la eliminación de ruido. Puede entenderse que la unidad 18 de preprocesamiento puede ser componente opcional.
El codificador 20 (por ejemplo, el codificador 20 de vídeo) se configura para recibir los datos 19 de imagen previamente procesados y proporcionar datos de imagen codificados 21 (se describirán más detalles a continuación, p. ej., basándose en la Figura 2). En un ejemplo, el codificador 20 puede configurarse para implementar las Realizaciones 1 a 3.
La interfaz 22 de comunicación del dispositivo 12 de origen puede configurarse para recibir los datos 21 de imagen codificados y transmitirlo a otro dispositivo, por ejemplo, el dispositivo 14 de destino o cualquier otro dispositivo, para almacenamiento o reconstrucción directa, o para procesar los datos 21 de imagen codificados para respectivamente antes de almacenar los datos codificados 13 y/o transmitir los datos codificados 13 a otro dispositivo, por ejemplo, el dispositivo 14 de destino o cualquier otro dispositivo para descodificar o almacenar.
El dispositivo 14 de destino comprende un descodificador 30 (por ejemplo, un descodificador 30 de vídeo), y puede, además, comprender, opcionalmente, una interfaz 28 de comunicación o unidad 28 de comunicación, una unidad 32 de procesamiento posterior y un dispositivo 34 de visualización.
La interfaz 28 de comunicación del dispositivo 14 de destino se configura para recibir los datos 21 de imagen codificados o los datos codificados 13, por ejemplo, directamente desde el dispositivo 12 de origen o desde cualquier otra fuente, por ejemplo, un dispositivo de almacenamiento, por ejemplo, un dispositivo de almacenamiento de datos de imágenes codificadas. La otra fuente es, por ejemplo, un dispositivo de almacenamiento tal como un dispositivo de almacenamiento de datos de imágenes codificadas.
La interfaz de comunicaciones 22 y la interfaz de comunicaciones 28 pueden configurarse para transmitir o recibir los datos de imagen codificados 21 o los datos codificados 13 a través de un enlace de comunicación directa entre el dispositivo fuente 12 y el dispositivo de destino 14 o sobre cualquier tipo de red. El enlace de comunicación directa es, por ejemplo, una conexión directa por cable o inalámbrica, y cualquier tipo de red es, por ejemplo, una red cableada o inalámbrica o cualquier combinación de las mismas, o cualquier tipo de redes privadas y públicas, o cualquier combinación de las mismas.
La interfaz 22 de comunicación puede estar, por ejemplo, configurada para empaquetar los datos 21 de imagen codificados en un formato apropiado, por ejemplo, paquetes, para transmisión a través de un enlace de comunicación o red de comunicación.
La interfaz 28 de comunicación, que forma la contraparte de la interfaz 22 de comunicación, puede estar configurada, p. ej., para desempaquetar los datos codificados 13 para obtener los datos 21 de imagen codificados.
Tanto la interfaz de comunicaciones 22 como la interfaz de comunicaciones 28 pueden configurarse como interfaces de comunicaciones unidireccionales, como se indica mediante una flecha para los datos codificados 13 desde el dispositivo de origen 12 al dispositivo de destino 14 en la Figura 1A, o puede configurarse como una interfaz de comunicaciones bidireccional, y puede configurarse, por ejemplo, para enviar y recibir mensajes para establecer una conexión, y reconocer e intercambiar cualquier otra información relacionada con un enlace de comunicación y/o transmisión de datos tal como transmisión de datos de imágenes codificadas.
El descodificador 30 se configura para recibir los datos 21 de imagen codificados y proporcionar datos 31 de imagen descodificados o una imagen 31 descodificada (más detalles se describirán a continuación, por ejemplo, basándose en la Figura 3). En un ejemplo, el decodificador 30 puede configurarse para implementar las Realizaciones 1 a 3.
El posprocesador 32 del dispositivo 14 de destino se configura para procesar posteriormente los datos 31 de imagen descodificados (también denominados datos de imagen reconstruidos), por ejemplo, la imagen descodificada 31, para obtener datos 33 de imagen posprocesados, por ejemplo, una imagen posprocesada 33. El procesamiento posterior realizado por la unidad 32 de posprocesamiento 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 31 de imagen descodificados para su visualización, por ejemplo, mediante el dispositivo 34 de visualización.
El dispositivo 34 de visualización del dispositivo 14 de destino se configura para recibir los datos 33 de imagen procesados posteriormente para visualizar la imagen, por ejemplo, a un usuario u observador. El dispositivo 34 de visualización 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 comprender, por ejemplo, pantallas de cristal líquido (LCD), pantallas de diodos orgánicos emisores de luz (OLED), pantallas de plasma, proyectores, pantallas de micro LED, cristal líquido sobre silicio (LCoS), procesador de luz digital (DLP) o cualquier tipo de pantalla.
Aunque la figura 1A representa el dispositivo de origen 12 y el dispositivo de destino 14 como dispositivos separados, una realización de dispositivo puede incluir alternativamente tanto el dispositivo de origen 12 como el dispositivo de destino 14 o funcionalidades tanto del dispositivo de origen 12 como del dispositivo de destino 14, es decir, el dispositivo de origen 12 o una funcionalidad correspondiente y el dispositivo de destino 14 o una funcionalidad correspondiente. En tales realizaciones, el dispositivo 12 de origen o la funcionalidad correspondiente y el dispositivo 14 de destino o la funcionalidad correspondiente pueden implementarse 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 un experto en la técnica basándose en las descripciones, (exacta) división de funcionalidades de diferentes unidades o funcionalidades del dispositivo de origen 12 y/o el dispositivo de destino 14 mostrado en la Figura 1A puede variar dependiendo de un dispositivo y aplicación reales.
El codificador 20 (por ejemplo, un codificador 20 de vídeo) y el descodificador 30 (p. ej., un descodificador 30 de vídeo) cada uno puede implementarse como cualquiera de una variedad de circuitos adecuados, tales como uno o más microprocesadores, procesadores de señales digitales (DSP), circuitos integrados específicos de la aplicación (ASIC), matrices de puertas programables en campo (FPGA), lógica discreta, hardware o cualquier combinación de los mismos. Si las técnicas se implementan parcialmente en software, un dispositivo puede almacenar instrucciones para el software en un medio de almacenamiento legible por ordenador no transitorio adecuado y puede ejecutar las instrucciones en hardware usando uno o más procesadores para realizar las técnicas de esta descripción. Uno cualquiera de los anteriores (incluyendo hardware, software, una combinación de hardware y software, etc.) puede considerarse para ser uno o más procesadores. Cada uno de los codificadores 20 de vídeo y el descodificador 30 de vídeo puede incluirse en uno o más codificadores o descodificadores, cualquiera de los cuales puede integrarse como parte de un codificador/descodificador (códec) combinado en un dispositivo respectivo.
El dispositivo de origen 12 puede denominarse un dispositivo de codificación de vídeo o un aparato de codificación de vídeo. El dispositivo de destino 14 puede denominarse dispositivo de decodificación de video o aparato de decodificación de video. El dispositivo de origen 12 y el dispositivo de destino 14 pueden ser ejemplos de un dispositivo de codificación de vídeo o un aparato de codificación de vídeo.
El dispositivo de origen 12 y el dispositivo de destino 14 pueden incluir cualquiera de una amplia gama de dispositivos, que incluyen cualquier tipo de dispositivo portátil o estacionario, por ejemplo, un ordenador portátil o portátil, un teléfono móvil, un teléfono inteligente, una tableta o tableta, una cámara, un ordenador de sobremesa, un decodificador, un televisor, un dispositivo de visualización, un reproductor de medios digitales, una consola de videojuegos, un dispositivo de transmisión de video (tal como un servidor de servicios de contenido o un servidor de entrega de contenido), un dispositivo receptor de difusión o un dispositivo transmisor de difusión, y puede usar o no usar ningún tipo de sistema operativo.
En algunos casos, el dispositivo de origen 12 y el dispositivo de destino 14 pueden estar equipados para comunicación inalámbrica. Por lo tanto, el dispositivo de origen 12 y el dispositivo de destino 14 pueden ser dispositivos de comunicaciones inalámbricas.
En algunos casos, el sistema 10 de codificación de video mostrado en la Figura 1A es simplemente un ejemplo, y las tecnologías de esta solicitud son aplicables a configuraciones de codificación de video (por ejemplo, codificación de video o decodificación de video) que no incluyen necesariamente ninguna comunicación de datos entre dispositivos de codificación y decodificación. En otro ejemplo, los datos pueden recuperarse de una memoria local, transmitirse en una red o similares. El dispositivo de codificación de vídeo puede codificar datos y almacenar los datos en una memoria, y/o el dispositivo de decodificación de vídeo puede recuperar los datos de la memoria y decodificar los datos. En algunos ejemplos, la codificación y decodificación se realizan por dispositivos que no se comunican entre sí, sino que simplemente codifican datos a una memoria y/o recuperan los datos de la memoria y decodifican los datos.
Debe entenderse que para cada uno de los ejemplos anteriores descritos con referencia al codificador de vídeo 20, el descodificador de vídeo 30 puede configurarse para realizar un proceso inverso. Con respecto a los elementos sintácticos de señalización, el descodificador de vídeo 30 puede configurarse para recibir y analizar estos elementos sintácticos y descodificar datos de vídeo relacionados en consecuencia. En algunos ejemplos, el codificador de vídeo 20 puede codificar por entropía los elementos sintácticos en un flujo de bits de vídeo codificado. En estos ejemplos, el decodificador de vídeo 30 puede analizar estos elementos sintácticos y decodificar los datos de vídeo asociados en consecuencia.
La figura 1B es un diagrama ilustrativo de un ejemplo de un sistema 40 de codificación de vídeo que incluye un codificador 20 en la figura 2 y/o un decodificador 30 en la figura 3 de acuerdo con una realización de ejemplo. El sistema 40 puede implementar una combinación de diversas tecnologías de esta solicitud. En la implementación ilustrada, el sistema de codificación de vídeo 40 puede incluir un dispositivo de formación de imágenes 41, el codificador de vídeo 20, el descodificador de vídeo 30 (y/o un codificador/decodificador de vídeo implementado por un circuito lógico 47 de una unidad de procesamiento 46), una antena 42, uno o más procesadores 43, una o más memorias 44 y/o un dispositivo de visualización 45.
Como se muestra en la figura, el dispositivo de formación de imágenes 41, la antena 42, la unidad de procesamiento 46, el circuito lógico 47, el codificador de vídeo 20, el decodificador de vídeo 30, el procesador 43, la memoria 44 y/o el dispositivo de visualización 45 pueden comunicarse entre sí. Como se describe, aunque el sistema de codificación de vídeo 40 se ilustra usando el codificador de vídeo 20 y el descodificador de vídeo 30, en otro ejemplo diferente, el sistema de codificación de vídeo 40 puede incluir solo el codificador de vídeo 20 o solo el descodificador de vídeo 30.
En algunos ejemplos, como se muestra en la figura, el sistema de codificación de vídeo 40 puede incluir la antena 42. Por ejemplo, la antena 42 puede configurarse para transmitir o recibir un flujo de bits codificado de datos de vídeo. Además, en algunos ejemplos, el sistema de codificación de vídeo 40 puede incluir el dispositivo de visualización 45. El dispositivo de visualización 45 puede configurarse para presentar los datos de vídeo. En algunos ejemplos, como se muestra en la figura, el circuito lógico 47 puede implementarse mediante la unidad de procesamiento 46. La unidad de procesamiento 46 puede incluir un circuito integrado específico de la aplicación
(ASIC) lógica, un procesador de gráficos, un procesador de propósito general o similares. El sistema de codificación de vídeo 40 también puede incluir el procesador opcional 43. El procesador 43 opcional puede incluir de manera similar lógica de circuito integrado de aplicación específica (ASIC), un procesador de gráficos, un procesador de propósito general o similares. En algunos ejemplos, el circuito lógico 47 puede implementarse mediante hardware, por ejemplo, hardware dedicado de codificación de vídeo, y el procesador 43 puede implementarse mediante software de propósito general, un sistema operativo o similares. Además, la memoria 44 puede ser cualquier tipo de memoria, por ejemplo, una memoria volátil (por ejemplo, una memoria de acceso aleatorio estática (SRAM) o una memoria de acceso aleatorio dinámica (DRAM), o una memoria no volátil (por ejemplo, una memoria flash). En un ejemplo no limitativo, la memoria 44 puede implementarse mediante una memoria caché. En algunos ejemplos, el circuito lógico 47 puede acceder a la memoria 44 (por ejemplo, para la implementación de una memoria intermedia de imágenes). En otros ejemplos, el circuito lógico 47 y/o la unidad de procesamiento 46 pueden incluir una memoria (por ejemplo, una caché) para la implementación de una memoria intermedia de imágenes o similares.
En algunos ejemplos, el codificador de vídeo 20 implementado por el circuito lógico puede incluir una memoria intermedia de imágenes (que se implementa, por ejemplo, por la unidad de procesamiento 46 o la memoria 44) y una unidad de procesamiento gráfico (que se implementa, por ejemplo, por la unidad de procesamiento 46). La unidad de procesamiento gráfico puede acoplarse comunicativamente a la memoria intermedia de imágenes. La unidad de procesamiento gráfico puede incluir el codificador de vídeo 20 implementado por el circuito lógico 47, para implementar diversos módulos que se describen con referencia a la figura 2 y/o cualquier otro sistema o subsistema codificador descrito en esta memoria descriptiva. El circuito lógico puede configurarse para realizar diversas operaciones descritas en esta memoria descriptiva.
El descodificador de vídeo 30 puede implementarse de una manera similar a la implementada por el circuito lógico 47 para incorporar los diversos módulos como se discutió con respecto a un descodificador 30 en la figura 3 y/o cualquier otro sistema o subsistema decodificador descrito en esta memoria descriptiva. En algunos ejemplos, el decodificador de vídeo 30 implementado por el circuito lógico puede incluir una memoria intermedia de imágenes (que se implementa, por ejemplo, por una unidad de procesamiento 2820 o la memoria 44) y una unidad de procesamiento gráfico (que se implementa, por ejemplo, por la unidad de procesamiento 46). La unidad de procesamiento gráfico puede acoplarse comunicativamente a la memoria intermedia de imágenes. La unidad de procesamiento gráfico puede incluir el descodificador de vídeo 30 implementado por el circuito lógico 47, para implementar diversos módulos que se describen con referencia a la figura 3 y/o cualquier otro sistema o subsistema decodificador descrito en esta memoria descriptiva.
En algunos ejemplos, la antena 42 del sistema de codificación de vídeo 40 puede configurarse para recibir un flujo de bits codificado de datos de vídeo. Como se describe, el flujo de bits codificado puede incluir datos, un indicador, un valor de índice, datos de selección de modo o similares que se relacionan con la codificación de trama de vídeo y que se describe en esta memoria descriptiva, por ejemplo, datos relacionados con la partición de codificación (por ejemplo, un coeficiente de transformada o un coeficiente de transformada cuantificado, un indicador opcional (como se describe) y/o datos que definen la partición de codificación). El sistema de codificación de vídeo 40 puede incluir además el descodificador de vídeo 30 que está acoplado a la antena 42 y que está configurado para descodificar el flujo de bits codificado. El dispositivo de visualización 45 está configurado para presentar una trama de vídeo.
Codificador_npp; método de codificación
La Figura 2 es un diagrama de bloques esquemático/conceptual de un ejemplo de un codificador de vídeo 20 configurado para implementar una tecnología (descrita) en esta solicitud. En el ejemplo de la Figura 2, el codificador 20 de vídeo comprende una unidad 204 de cálculo residual, una unidad 206 de procesamiento de transformación, una unidad 208 de cuantización, una unidad 210 de cuantización inversa y una unidad 212 de procesamiento de transformación inversa, una unidad 214 de reconstrucción, una memoria intermedia 216, una unidad 220 de filtro de bucle, una memoria 230 intermedia de imágenes descodificadas (DPB), una unidad 260 de procesamiento de predicción y una unidad 270 de codificación por entropía. La unidad 260 de procesamiento de predicción puede incluir una unidad 244 de interpredicción, una unidad 254 de intrapredicción y una unidad 262 de selección de modo. La unidad 244 de interpredicción puede incluir una unidad de estimación de movimiento y una unidad de compensación de movimiento (no mostrada). Un codificador 20 de vídeo como se muestra en la Figura 2 también puede denominarse codificador de vídeo híbrido o un codificador de vídeo según un códec de vídeo híbrido.
Por ejemplo, la unidad 204 de cálculo residual, la unidad 206 de procesamiento de transformación, la unidad 208 de cuantización, la unidad 260 de procesamiento de predicción y la unidad 270 de codificación por entropía forman una ruta de señal directa del codificador 20, mientras que, por ejemplo, la unidad 210 de cuantización inversa, la unidad 212 de procesamiento de transformación inversa, la unidad 214 de reconstrucción, la memoria intermedia 216, el filtro 220 de bucle, la memoria intermedia 230 de imágenes descodificadas (DPB), la unidad 260 de procesamiento de predicción forman una ruta de señal hacia atrás del codificador, en donde la ruta de señal de retroceso del codificador corresponde a la ruta de señal del descodificador (véase el descodificador 30 en la Figura 3).
El codificador 20 se configura para recibir, por ejemplo, la entrada 202, una imagen 201 o un bloque 203 de la imagen 201, por ejemplo, la imagen de una secuencia de imágenes que forma una secuencia de vídeo o vídeo. El bloque 203 de imagen también puede denominarse bloque de imagen actual o bloque de imagen a codificar, y la imagen 201 como imagen o imagen actual 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 descodificadas de la misma secuencia de vídeo, es decir, la secuencia de vídeo que también comprende la imagen actual).
Partición
En una realización, el codificador 20 puede incluir una unidad de partición (que no se representa en la figura 2) configurada para dividir la imagen 201 en una pluralidad de bloques tales como bloques 203. Cada imagen se divide típicamente en un conjunto de bloques no superpuestos. La unidad de partición puede configurarse para: usar un mismo tamaño de bloque para todas las imágenes de una secuencia de vídeo y una red correspondiente que define el tamaño de bloque, o para cambiar un tamaño de bloque entre imágenes o subconjuntos o grupos de imágenes, y dividir cada imagen en bloques correspondientes.
En un ejemplo, la unidad de procesamiento de predicción 260 del codificador de vídeo 20 puede configurarse para realizar cualquier combinación de las tecnologías de división anteriores.
Al igual que la imagen 201, el bloque 203 también se puede considerar como un arreglo bidimensional o matriz de muestras con valores de luma (valores de muestra), aunque un tamaño del bloque 203 es menor que un tamaño de la imagen 201. En otras palabras, el bloque 203 puede incluir, por ejemplo, una matriz de muestras (por ejemplo, una matriz de luma en un caso de una imagen monocromática 201), tres matrices de muestras (por ejemplo, una matriz de luma y dos matrices de croma en un caso de una imagen de color), o cualquier otra cantidad y/o tipo de matrices dependiendo de un formato de color aplicado. Una cantidad de muestras en direcciones horizontal y vertical (o ejes) del bloque 203 define un tamaño del bloque 203.
El codificador 20 mostrado en la figura 2 está configurado para codificar la imagen 201 bloque por bloque, por ejemplo, codificar y predecir cada bloque 203.
Cálculo Residual
La unidad 204 de cálculo residual está configurada para calcular un bloque 205 residual basándose en el bloque 203 de imagen y un bloque 265 de predicción (detalles acerca del bloque 265 de predicción se proporciona más adelante), por ejemplo, restando los valores de muestra del bloque 265 de predicción de los valores de muestra de la muestra de bloque 203 de imagen por muestra (píxel por píxel), para obtener el bloque 205 residual en un dominio de muestra.
Transformar
La unidad de procesamiento de transformación 206 está configurada para aplicar una transformada, por ejemplo, una transformada de coseno discreta (DCT) o una transformada sinusoidal discreta (DST), para muestrear los valores del bloque residual 205 para obtener coeficientes de transformada 207 en un dominio de transformada. Los coeficientes de transformada 207 también se pueden denominar coeficientes residuales de transformación y representar el bloque residual 205 en el dominio de transformación.
La unidad 206 de procesamiento de transformación puede configurarse para aplicar aproximaciones enteras de DCT/DST, tales como transformadas especificadas en HEVC/H.265. En comparación con una transformada DCT ortogonal, tales aproximaciones enteros generalmente se escalan por un factor específico. Para conservar una norma de un bloque residual que se procesa usando transformadas directas e inversas, se aplica un factor de escalado adicional como parte del proceso de transformación. El factor de escala generalmente se elige basándose en algunas restricciones, por ejemplo, el factor de escala es una potencia de dos para una operación de cambio, la profundidad de bits de los coeficientes de transformada y una compensación entre los costes de precisión y implementación. Por ejemplo, un factor de escala específico se especifica para la transformada inversa mediante, por ejemplo, la unidad 212 de procesamiento de transformación inversa en un lado del decodificador 30 (y una transformada inversa correspondiente mediante, por ejemplo, la unidad 212 de procesamiento de transformación inversa en un lado del codificador 20) y, de manera correspondiente, puede especificarse un factor de escala correspondiente para la transformación directa mediante la unidad 206 de procesamiento de transformación en un lado del codificador 20.
Cuantificación
La unidad 208 de cuantificación está configurada para cuantificar los coeficientes 207 de transformada para obtener coeficientes 209 de transformada cuantificados, por ejemplo, aplicando cuantificación escalar o cuantificación vectorial. Los coeficientes de transformada cuantificados 209 también se pueden denominar coeficientes residuales cuantificados 209. Un proceso de cuantificación puede reducir una profundidad de bits relacionada con algunos o todos los coeficientes de transformada 207. Por ejemplo, un coeficiente de transformada de n bits puede redondearse hacia abajo hasta un coeficiente de transformada de m bits durante la cuantificación, donde n es mayor que m. Un grado de cuantificación puede modificarse ajustando un parámetro de cuantificación (QP). Por ejemplo, para cuantificación escalar, se puede aplicar una escala diferente para lograr cuantificación más fina o más gruesa. Un tamaño de paso de cuantificación más pequeño corresponde a una cuantificación más fina, y un tamaño de paso de cuantificación más grande corresponde a cuantificación más gruesa. Un tamaño de paso de cuantificación apropiado puede indicarse mediante un parámetro de cuantificación (QP). Por ejemplo, el parámetro de cuantificación puede ser un índice a un conjunto predefinido de tamaños de paso de cuantificación apropiados. Por ejemplo, un parámetro de cuantificación más pequeño puede corresponder a una cuantificación más fina (un tamaño de paso de cuantificación más pequeño), y un parámetro de cuantificación más grande puede corresponder a cuantificación más gruesa (un tamaño de paso de cuantificación más grande), o viceversa. La cuantificación puede incluir la división por un tamaño de paso de cuantificación y cuantificación correspondiente o cuantificación inversa, por ejemplo, realizada por la unidad 210 de cuantificación inversa, o puede incluir multiplicación por un tamaño de paso de cuantificación. Las realizaciones según algunas normas tales como HEVC pueden usar un parámetro de cuantificación para determinar el tamaño del paso de cuantificación. Generalmente, el tamaño del paso de cuantificación puede calcularse en base a un parámetro de cuantificación mediante el uso de una aproximación de punto fijo de una ecuación que incluye la división. Se pueden introducir factores de escalado adicionales para la cuantificación y descuantificación para restaurar la norma del bloque residual, que puede modificarse debido a la escala usada en la aproximación de puntos fijos de la ecuación para el tamaño del paso de cuantificación y el parámetro de cuantificación. En una implementación de ejemplo, se puede combinar la escala de la transformación inversa y la descuantificación. Alternativamente, las tablas de cuantificación personalizadas pueden usarse y señalizarse desde un codificador a un decodificador, por ejemplo, en un flujo de bits. La cuantificación es una operación con pérdidas, donde la pérdida aumenta con tamaños de paso de cuantificación crecientes.
La unidad 210 de cuantificación inversa está configurada para aplicar cuantificación inversa de la unidad 208 de cuantificación en coeficientes cuantificados para obtener coeficientes descuantificados 211, por ejemplo, aplicar, basándose en o usando un mismo tamaño de paso de cuantificación que la unidad 208 de cuantificación, la inversa de un esquema de cuantificación aplicado por la unidad 208 de cuantificación. Los coeficientes descuantificados 211 también se pueden denominar coeficientes residuales descuantificados 211 y corresponden a los coeficientes de transformada 207, aunque normalmente no son idénticos a los coeficientes de transformada debido a la pérdida causada por cuantificación.
La unidad 212 de procesamiento de transformación inversa está configurada para aplicar una transformada inversa de la transformada aplicada por la unidad 206 de procesamiento de transformación, por ejemplo, una transformada de coseno discreta inversa DCT) o una transformada sinusoidal inversa (DST), para obtener un bloque 213 de transformada inversa en el dominio de muestra. El bloque 213 de transformación inversa también puede denominarse bloque 213 descuantificado de transformación inversa o un bloque 213 residual de transformada inversa.
La unidad 214 de reconstrucción (por ejemplo, un sumador 214) está configurada para añadir el bloque 213 de transformación inversa (es decir, el bloque 213 residual reconstruido) al bloque 265 de predicción, por ejemplo, agregando valores de muestra del bloque 213 residual reconstruido y los valores de muestra del bloque 265 de predicción, para obtener un bloque 215 reconstruido en el dominio de muestra.
Opcionalmente, una unidad de memoria intermedia 216 (o “ memoria intermedia” 216 para abreviar) de, por ejemplo, la memoria intermedia de línea 216, está configurada para almacenar o almacenar el bloque reconstruido 215 y un valor de muestra correspondiente, por ejemplo, para intra predicción. En otras realizaciones, el codificador puede configurarse para usar un bloque reconstruido no filtrado y/o un valor de muestra correspondiente almacenado en la unidad de memoria intermedia 216 para cualquier tipo de estimación y/o predicción, por ejemplo, intrapredicción.
Por ejemplo, en una realización, el codificador 20 puede configurarse de modo que la unidad de memoria intermedia 216 no solo se use para almacenar el bloque reconstruido 215 para la intrapredicción 254, sino que también se usa para la unidad de filtro de bucle 220 (que no se muestra en la Figura 2), y/o de manera que, por ejemplo, la unidad de memoria intermedia 216 y la unidad de memoria intermedia de imágenes descodificadas 230 forman un búfer. En otras realizaciones, los bloques filtrados 221 y/o bloques o muestras de la memoria intermedia de imágenes decodificadas 230 (los bloques o muestras no se muestran en la Figura 2) se usan como una entrada o una base para la intrapredicción 254.
La unidad 220 de filtro de bucle (ya sea en el bucle de codificación o después del bucle de codificación) se configura para filtrar el bloque 215 reconstruido para obtener un bloque 221 filtrado, por ejemplo, para suavizar las transiciones de píxeles, o mejorar de otro modo la calidad de vídeo. La unidad 220 de filtro de bucle está prevista para representar uno o más filtros de bucle tales como un filtro de desbloqueo, un filtro de desplazamiento adaptativo de muestra (SAO) u otros filtros, por ejemplo, un filtro bilateral o un filtro de bucle adaptativo (ALF) o un filtro de afilado o suavizado o filtros de colaboración. Aunque la unidad 220 de filtro de bucle se muestra en la Figura 3 como un filtro de bucle, en otras configuraciones, la unidad 220 de filtro de bucle puede implementarse como un filtro de bucle posterior. El bloque filtrado 221 también puede denominarse bloque reconstruido filtrado 221. La memoria intermedia de imagen decodificada 230 puede almacenar los bloques codificados reconstruidos después de que la unidad de filtro de bucle 220 realiza operaciones de filtrado en los bloques codificados reconstruidos.
En una realización, el codificador 20 (correspondientemente, la unidad 220 de filtro de bucle) puede configurarse para emitir parámetros de filtro de bucle (tales como información de desplazamiento adaptativo de muestra), por ejemplo, directamente o después de la codificación por entropía realizada por la unidad 270 de codificación de entropía o cualquier otra unidad de codificación por entropía, de modo que, por ejemplo, el decodificador 30 pueda recibir los mismos parámetros de filtro de bucle y aplicar los mismos parámetros de filtro de bucle para la decodificación.
La memoria intermedia de imágenes descodificadas (DPB) 230 puede ser una memoria de imágenes de referencia que almacena datos de imágenes de referencia para su uso en datos de vídeo que codifican el codificador de vídeo 20. La DPB 230 puede estar formada por cualquiera de una variedad de dispositivos de memoria, tales como una memoria de acceso aleatorio dinámica (DRAM) (que incluye una DRAM síncrona (SDRAM), una RAM magnetorresistiva (MRAM), una RAM resistiva (RRAM)u otros tipos de dispositivos de memoria. La DPB 230 y la memoria intermedia 216 pueden proporcionarse por un mismo dispositivo de memoria o dispositivos de memoria separados. En un ejemplo, la memoria intermedia de imágenes descodificadas (DPB) 230 está configurada para almacenar el bloque filtrado 221. La memoria intermedia de imágenes descodificadas 230 puede configurarse además para almacenar otros bloques previamente filtrados, por ejemplo, bloques previamente reconstruidos y filtrados 221, de la misma imagen actual o de diferentes imágenes, por ejemplo, imágenes previamente reconstruidas, y puede proporcionar imágenes completas previamente reconstruidas, es decir, imágenes decodificadas (y bloques de referencia y muestras correspondientes) y/o una imagen actual parcialmente reconstruida (y bloques y muestras de referencia correspondientes), por ejemplo, para la interpredicción. En un ejemplo, si el bloque 215 reconstruido se reconstruye sin filtrado en bucle, la memoria intermedia 230 de imagen decodificada (DPB) está configurada para almacenar el bloque 215 reconstruido.
La unidad 260 de procesamiento de predicción, también denominada unidad 260 de procesamiento de predicción de bloques, se configura para recibir u obtener el bloque 203 (bloque 203 actual de la imagen 201 actual) y datos de imagen reconstruidos, por ejemplo, muestras de referencia de la misma imagen (actual) de la memoria intermedia 216 y/o datos 231 de imagen de referencia de una o una pluralidad de imágenes previamente descodificadas de la memoria intermedia 230 de imagen descodificada, y procesar dichos datos para predicción, es decir, para proporcionar un bloque 265 de predicción, que puede ser un bloque 245 interpredicho o un bloque 255 intrapredicho.
La unidad 262 de selección de modo puede configurarse para seleccionar un modo de predicción (por ejemplo, un modo de intrapredicción o interpredicción) y/o un bloque 245 o 255 de predicción correspondiente para ser utilizado como bloque 265 de predicción para el cálculo del bloque 205 residual y para la reconstrucción del bloque 215 reconstruido.
En una realización, la unidad 262 de selección de modo puede configurarse para seleccionar el modo de predicción (por ejemplo, de modos de predicción soportados por la unidad 260 de procesamiento de predicción). El modo de predicción proporciona una mejor coincidencia o, en otras palabras, un residuo mínimo (el mínimo residual significa mejor compresión para la transmisión o almacenamiento), o proporciona sobrecargas de señalización mínimas (las sobrecargas de señalización mínima significan una mejor compresión para la transmisión o almacenamiento), o considera o equilibra ambos. La unidad 262 de selección de modo puede configurarse para determinar el modo de predicción en base a la optimización de la distorsión de la tasa (RDO), es decir, seleccionar el modo de predicción que proporciona una optimización mínima de la distorsión de la tasa o la cual la distorsión de la tasa asociada al menos a cumple un criterio de selección del modo de predicción.
A continuación, el procesamiento de predicción realizado (por ejemplo, usando la unidad de procesamiento de predicción 260) y la selección de modo realizada (por ejemplo, usando la unidad de selección de modo 262) por un ejemplo del codificador 20 se describen con más detalle.
Como se describió anteriormente, el codificador 20 está configurado para determinar o seleccionar un mejor modo de predicción o un modo de predicción óptimo de un conjunto de modos de predicción (predeterminados). El conjunto de modos de predicción puede incluir, por ejemplo, modos de intra predicción y/o modos de inter predicción.
El conjunto de modos de intra predicción puede incluir 35 modos de intra predicción diferentes, o puede incluir 67 modos de intra predicción diferentes, o puede incluir un modo de intra predicción definido en H.266 que se está desarrollando.
El conjunto de modos de interpredicción depende de una imagen de referencia disponible (es decir, al menos una parte de la imagen decodificada almacenada en el DBP 230) y otro parámetro de interpredicción, por ejemplo, dependiendo de si se usa toda la imagen de referencia o solo una parte de la imagen de referencia se usa, por ejemplo, una región de ventana de búsqueda alrededor de una región del bloque actual, para buscar un mejor bloque de referencia coincidente y/o dependiendo, por ejemplo, de si se aplica interpolación de píxeles tal como interpolación de media píxel y/o cuarto de píxel.
Además de los modos de predicción anteriores, se pueden aplicar modo de omisión, modo directo y/u otros modos de interpredicción.
La unidad 260 de procesamiento de predicción puede configurarse además para dividir el bloque 203 en particiones o subbloques de bloque más pequeños, por ejemplo, mediante el uso de forma iterativa de partición de partición de árbol cuádruple (QT), partición de árbol binario (BT), partición de árbol ternario (TT), o cualquier combinación de los mismos, y para realizar, por ejemplo, predicción para cada una de las particiones de bloque o subbloques. La selección de modo incluye la selección de una estructura de árbol del bloque 203 dividido y la selección de un modo de predicción aplicado a cada una de las particiones de bloque o subbloques.
La unidad de interpredicción 244 puede incluir una unidad de estimación de movimiento (ME) (que no se muestra en la figura 2) y una unidad de compensación de movimiento (MC) (que no se muestra en la figura 2). La unidad de estimación de movimiento está configurada para recibir o obtener el bloque 203 de imagen (el bloque 203 de imagen actual de la imagen 201 actual) y una imagen 231 decodificada, o al menos uno o más bloques previamente reconstruidos, por ejemplo, uno o más bloques reconstruidos de otras/diferentes imágenes 231 previamente decodificadas, para la estimación de movimiento. Por ejemplo, una secuencia de vídeo puede incluir la imagen actual y las imágenes previamente decodificadas 31. En otras palabras, la imagen actual y las imágenes previamente decodificadas 31 pueden ser una parte de o formar una secuencia de imágenes que forman la secuencia de vídeo.
Por ejemplo, el codificador 20 puede configurarse para seleccionar un bloque de referencia de una pluralidad de bloques de referencia de una misma imagen o imágenes diferentes de una pluralidad de otras imágenes Y proporcionar, a la unidad de estimación de movimiento (que no se muestra en la Figura 2), una imagen de referencia Y/o un desplazamiento (un desplazamiento espacial) entre una posición (coordenadas X e Y) del bloque de referencia Y una posición del bloque actual como un parámetro de interpredicción. Este desplazamiento también se denomina 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 realizar una interpredicción basándose en o usando el parámetro de interpredicción para obtener un bloque de interpredicción. La compensación de movimiento, realizada por la unidad de compensación de movimiento, puede implicar grabar o generar el bloque de predicción basándose en el movimiento/vector de bloque determinado por la estimación de movimiento, realizando posiblemente interpolaciones a la precisión de subpíxel. El filtrado de interpolación puede generar muestras de píxeles adicionales a partir de muestras de píxeles conocidas, aumentando así potencialmente el número de bloques de predicción candidatos que pueden usarse para codificar un bloque de imagen. Tras recibir el vector de movimiento para la PU del bloque de imagen actual, la unidad de compensación de movimiento puede localizar el bloque de predicción al que los puntos de vector de movimiento en una de las listas de imágenes de referencia. La unidad de compensación de movimiento también puede generar elementos sintácticos asociados con los bloques y segmentos de vídeo para su uso por el descodificador 30 de vídeo al descodificar los bloques de imagen del fragmento de vídeo.
La unidad 254 de intra predicción está configurada para obtener, por ejemplo, recibir, un bloque 203 de imagen (el bloque de imagen actual) y uno o más bloques previamente reconstruidos, por ejemplo, bloques vecinos reconstruidos, de una misma imagen para la intra estimación. El codificador 20 puede estar configurado, por ejemplo, para seleccionar un modo de intra predicción a partir de una pluralidad de modos de intra predicción (predeterminados).
En una realización, el codificador 20 puede configurarse para seleccionar un modo de intra predicción basándose en un criterio de optimización, por ejemplo, basándose en un residuo mínimo (por ejemplo, un modo de intra predicción que proporciona el bloque 255 de predicción que es más similar al bloque 203 de imagen actual) o distorsión de tasa mínima.
La unidad 254 de intra predicción está configurada además para determinar el bloque 255 de intra predicción basándose en, por ejemplo, parámetros de intra predicción en el modo de intra predicción seleccionado. En cualquier caso, después de seleccionar un modo de intrapredicción para un bloque, la unidad 254 de intrapredicción también se configura para proporcionar parámetro de intrapredicción, es decir, información indicativa del modo de intrapredicción seleccionado para el bloque a la unidad 270 de codificación de entropía. En un ejemplo, la unidad 254 de intrapredicción puede configurarse para realizar cualquier combinación de las técnicas de intrapredicción descritas más adelante.
La unidad 270 de codificación por entropía está configurada para aplicar (o no aplicar) un algoritmo o esquema de codificación por entropía (por ejemplo, un esquema de codificación de longitud variable (VLC), un esquema VLC adaptativo por contexto (CAVLC), un esquema de codificación aritmética, codificación aritmética binaria adaptativa al contexto (CABAC), codificación aritmética binaria adaptativa al contexto basada en sintaxis (SBAC), codificación por entropía por división del intervalo de probabilidad (PIPE) u otra metodología o tecnología de codificación por entropía) a uno o todos los coeficientes 209 residuales cuantificados, los parámetros de interpredicción, los parámetros de intra predicción y/o los parámetros 209 de filtro cuantificados, para obtener datos 21 de imagen codificados que pueden ser enviados a través de una salida 272, por ejemplo, en forma de un flujo de bits 21 codificado. El flujo de bits codificado puede transmitirse al descodificador de vídeo 30, o archivarse para su posterior transmisión o recuperación por el descodificador de vídeo 30. La unidad de codificación por entropía 270 puede configurarse además para codificar por entropía otros elementos sintácticos para un fragmento de vídeo actual que se está codificando.
Otras variaciones estructurales del codificador de vídeo 20 pueden usarse para codificar una corriente de vídeo. Por ejemplo, un descodificador 20 basado en no transformación puede cuantizar a la inversa la señal residual directamente sin la unidad 206 de procesamiento de transformación inversa para ciertos bloques o marcos. En otra implementación, el descodificador 20 de vídeo puede tener la unidad 208 de cuantización inversa y la unidad 210 de procesamiento de transformación inversa combinadas en una sola unidad.
La figura 3 muestra un ejemplo de un descodificador de vídeo 30, configurado para implementar una tecnología de esta solicitud. El descodificador 30 de vídeo configurado para recibir datos 21 de imagen codificados (p. ej., flujo de bits codificado), por ejemplo, codificado por el codificador 20, para obtener una imagen descodificada 231. Durante el proceso de descodificación, el descodificador 30 de vídeo recibe datos de vídeo, p. ej., un flujo de bits de vídeo codificado que representa bloques de imágenes de un fragmento de vídeo codificado y elementos sintácticos asociados, desde el codificador 100 de vídeo.
En el ejemplo de la Figura 3, el descodificador 30 comprende una unidad 304 de descodificación por entropía, una unidad 310 de cuantización inversa, una unidad 312 de procesamiento de transformación inversa, una unidad 314 de reconstrucción (por ejemplo, un sumador 314), una memoria intermedia 316, un filtro 320 de bucle, una memoria intermedia 330 de imágenes descodificadas y una unidad 360 de procesamiento de predicción. La unidad 360 de procesamiento de predicción puede incluir una unidad 344 de interpredicción, una unidad 354 de intrapredicción y una unidad 362 de selección de modo. En algunos ejemplos, el descodificador de vídeo 30 puede realizar un paso de descodificación generalmente recíproco al paso de codificación descrito con referencia al codificador de vídeo 20 en la figura 2.
La unidad 304 de descodificación de entropía se configura para realizar descodificación de entropía a los datos 21 de imagen codificados para obtener, p. ej., coeficientes cuantizados 309 y/o parámetros de codificación descodificados (que no se muestran en la Figura 3), por ejemplo, (descodificados) cualquiera o todos los parámetros de interpredicción, parámetro de intrapredicción, parámetros de filtro de bucle y/u otros elementos de sintaxis. La unidad 304 de descodificación de entropía se configura además para reenviar parámetros de interpredicción, parámetro de intrapredicción y/u otros elementos sintácticos a la unidad 360 de procesamiento de predicción. El descodificador 30 de vídeo puede recibir los elementos de sintaxis a nivel del segmento de vídeo y/o el nivel del bloque de vídeo.
La unidad 310 de cuantización inversa puede ser idéntica en función a la unidad 110 de cuantización inversa, la unidad 312 de procesamiento de transformación inversa puede ser idéntica en función a la unidad 212 de procesamiento de transformación inversa, la unidad 314 de reconstrucción puede ser idéntica en la unidad 214 de reconstrucción de función, la memoria intermedia 316 puede ser idéntica en función a la memoria intermedia 216, el filtro 320 de bucle puede ser idéntico en función al filtro 220 de bucle, y la memoria intermedia 330 de imagen descodificada puede ser idéntica en función a la memoria intermedia 230 de imagen descodificada.
La unidad de procesamiento de predicción 360 puede incluir la unidad de interpredicción 344 y la unidad de intrapredicción 354. La unidad de interpredicción 344 puede ser similar a la unidad de interpredicción 244 en función, y la unidad de intrapredicción 354 puede ser similar a la unidad de intrapredicción 254 en función. La unidad 360 de procesamiento de predicción se configura típicamente para realizar la predicción de bloque y/u obtener el bloque 365 de predicción a partir de los datos 21 codificados y para recibir u obtener (explícita o implícitamente) los parámetros relacionados con predicción y/o la información sobre el modo de predicción seleccionado, por ejemplo, desde la unidad 304 de descodificación de entropía.
Cuando el fragmento de vídeo se codifica como un fragmento intracodificado (I), la unidad 354 de intrapredicción de la unidad 360 de procesamiento de predicción se configura para generar el bloque 365 de predicción para un bloque de imagen del fragmento de vídeo actual basándose en un modo de intrapredicción señalizado y datos de bloques previamente descodificados de la trama o imagen actual. Cuando la trama de vídeo se codifica como un corte intercodificado (es decir, B o P), la unidad 344 de interpredicción (p. ej., la unidad de compensación de movimiento) de la unidad 360 de procesamiento de predicción se configura para producir bloques 365 de predicción para un bloque de vídeo del fragmento de vídeo actual basándose en los vectores de movimiento y otros elementos de sintaxis recibidos desde la unidad 304 de descodificación por entropía. Para la interpredicción, los bloques de predicción pueden producirse a partir de una de las imágenes de referencia dentro de una de las listas de imágenes de referencia. El descodificador 30 de vídeo puede construir las listas de tramas de referencia, la Lista 0 y la Lista 1, usando técnicas de construcción predeterminadas basadas en imágenes de referencia almacenadas en la DPB 330.
La unidad 360 de procesamiento de predicción se configura para determinar información de predicción para un bloque de vídeo del fragmento de vídeo actual analizando los vectores de movimiento y otros elementos sintácticos, y usa la información de predicción para producir los bloques de predicción para el bloque de vídeo actual que se está descodificando. Por ejemplo, la unidad 360 de procesamiento de predicción utiliza algunos de los elementos de sintaxis recibidos para determinar un modo de predicción (por ejemplo, intrapredicción o interpredicción) utilizada para codificar los bloques de vídeo del fragmento de vídeo, un tipo de corte de interpredicción (por ejemplo, segmento B, corte P o corte GPB), información de construcción para una o más de las listas de imágenes de referencia para el fragmento, vectores de movimiento para cada bloque de vídeo codificado entre el fragmento, estado de interpredicción para cada bloque de vídeo intercodificado del fragmento, y otra información para descodificar los bloques de vídeo en el fragmento de vídeo actual.
La unidad 310 de cuantización inversa se configura para cuantizar a la inversa, es decir, descuantizar, los coeficientes de transformación cuantizados proporcionados en el flujo de bits y descodificarse por la unidad 304 de descodificación de entropía. El proceso de cuantización inversa puede incluir el uso de un parámetro de cuantización calculado por el codificador 20 de vídeo para cada bloque de vídeo en el fragmento de vídeo para determinar un grado de cuantización y, asimismo, un grado de cuantización inversa que debe aplicarse.
La unidad 312 de procesamiento de transformada inversa se configura para aplicar una transformada inversa, por ejemplo, una DCT inversa, una transformada entera inversa o un proceso de transformación inversa conceptualmente similar, a los coeficientes de transformada para producir bloques residuales en el dominio de píxeles.
La unidad 314 de reconstrucción (por ejemplo, el sumador 314) está configurada para añadir un bloque 313 de transformación inversa (es decir, un bloque 313 residual reconstruido) al bloque 365 de predicción, por ejemplo, agregando valores de muestra del bloque 313 residual reconstruido y los valores de muestra del bloque 365 de predicción, para obtener un bloque 315 reconstruido en un dominio de muestra.
La unidad 320 de filtro de bucle (ya sea en el bucle de codificación o después del bucle de codificación) se configura para filtrar el bloque 315 reconstruido para obtener un bloque 321 filtrado, por ejemplo, para suavizar las transiciones de píxeles, o mejorar de otro modo la calidad de vídeo. En un ejemplo, la unidad 320 de filtro de bucle puede configurarse para realizar cualquier combinación de las técnicas de filtrado descritas más adelante. La unidad 320 de filtro de bucle está prevista para representar uno o más filtros de bucle tales como un filtro de desbloqueo, un filtro de desplazamiento adaptativo de muestra (SAO) u otros filtros, por ejemplo, un filtro bilateral o un filtro de bucle adaptativo (ALF) o un filtro de afilado o suavizado o filtros de colaboración. Aunque la unidad 320 de filtro de bucle se muestra en la Figura 3 como un filtro de bucle, en otras configuraciones, la unidad 320 de filtro de bucle puede implementarse como un filtro de bucle posterior.
Los bloques de vídeo descodificados 321 en un marco o imagen dados se almacenan en la memoria intermedia 330 de imágenes descodificadas, que almacena imágenes de referencia usadas para la compensación de movimiento posterior.
El descodificador 30 se configura para emitir la imagen descodificada 31, por ejemplo, a través de la salida 332, para presentación o visualización a un usuario.
Se pueden usar otras variaciones del descodificador 30 de vídeo para descodificar el flujo de bits comprimido. Por ejemplo, el descodificador 30 puede producir el flujo de vídeo de salida sin la unidad 320 de filtrado de bucle. Por ejemplo, un descodificador 30 basado en no transformación puede cuantizar a la inversa la señal residual directamente sin la unidad 312 de procesamiento de transformación inversa para ciertos bloques o marcos. En otra implementación, el descodificador 30 de vídeo puede tener la unidad 310 de cuantización inversa y la unidad 312 de procesamiento de transformación inversa combinadas en una sola unidad.
La figura 4 es un diagrama estructural esquemático de un dispositivo 400 de codificación de vídeo (por ejemplo, un dispositivo 400 de codificación de vídeo o un dispositivo 400 de decodificación de vídeo) según una realización de la presente invención. El dispositivo 400 de codificación de vídeo es adecuado para implementar las realizaciones descritas en esta memoria descriptiva. En una realización, el dispositivo 400 de codificación de vídeo puede ser un descodificador de vídeo (por ejemplo, el descodificador de vídeo 30 en la figura 1A) o un codificador de vídeo (por ejemplo, el codificador de vídeo 20 en la figura 1A). En otra realización, el dispositivo 400 de codificación de vídeo puede ser uno o más componentes en el decodificador 30 de vídeo en la figura 1A o el codificador 20 de vídeo en la figura 1A.
El dispositivo 400 de red comprende puertos 410 de entrada y unidades receptoras (Rx) 420 para recibir datos; un procesador, unidad lógica o unidad 430 de procesamiento central (CPU) para procesar los datos; unidades 440 de transmisor (Tx) y puertos 450 de salida para transmitir los datos; y una memoria 460 para almacenar los datos. El dispositivo 400 de red también puede comprender componentes ópticos a eléctricos (OE) y componentes eléctricos a ópticos (EO) acoplados a los puertos 410 de entrada, las unidades receptoras 420, las unidades transmisoras 440 y los puertos 450 de salida para la salida o entrada de señales ópticas o eléctricas.
El procesador 430 está implementado por hardware y software. El procesador 430 puede implementarse como uno o más chips de CPU, núcleos (por ejemplo, un procesador de múltiples núcleos), FPGA, ASIC y DSP. El procesador 430 se comunica con los puertos de entrada 410, el RX 420, el TX 440, los puertos de salida 450 y la memoria 460. El procesador 430 incluye un módulo 470 de codificación (por ejemplo, un módulo 470 de codificación o un módulo 470 de decodificación). El módulo de codificación/decodificación 470 implementa las realizaciones descritas anteriormente. Por ejemplo, el módulo de codificación/decodificación 470 realiza, procesa o proporciona diversas operaciones de codificación. Por lo tanto, el módulo 470 de codificación/decodificación proporciona una mejora sustancial a la funcionalidad del dispositivo 400 de codificación de vídeo y afecta la transformada del dispositivo 400 de codificación de vídeo a un estado diferente. Alternativamente, el módulo 470 de codificación se implementa como instrucciones almacenadas en la memoria 460 y ejecutadas por el procesador 430.
La memoria 460 comprende uno o más discos, unidades de cinta y unidades de estado sólido y se pueden usar como un dispositivo de almacenamiento de datos de desbordamiento, para almacenar programas cuando dichos programas se seleccionan para su ejecución, y para almacenar instrucciones y datos que se leen durante la ejecución del programa. La memoria 460 puede ser volátil y/o no volátil y puede ser memoria de solo lectura (ROM), memoria de acceso aleatorio (RAM), memoria ternaria de contenido direccionable (TCAM) y/o memoria estática de acceso aleatorio (SRAM).
La figura 5 es un diagrama de bloques simplificado de un aparato 500 que puede usarse como cualquiera o dos del dispositivo de origen 12 y el dispositivo de destino 14 en la figura 1A de acuerdo con una realización de ejemplo. El aparato 500 puede implementar la tecnología de esta solicitud. El aparato 500 para implementar la partición de imágenes puede estar en forma de un sistema informático que incluye una pluralidad de dispositivos informáticos, o en forma de un único dispositivo informático tal como un teléfono móvil, una tableta, un ordenador portátil o un ordenador de sobremesa.
Un procesador 502 del aparato 500 puede ser una unidad central de procesamiento. Alternativamente, un procesador 502 puede ser cualquier otro tipo de dispositivo o una pluralidad de dispositivos que pueden controlar o procesar información y que existen o se pueden desarrollar en el futuro. Como se muestra en la figura, aunque las implementaciones descritas pueden ponerse en práctica con un único procesador, tal como el procesador 502, se pueden lograr ventajas de velocidad y eficiencia mediante el uso de más de un procesador.
En una implementación, una memoria 504 del aparato 500 puede ser un dispositivo de memoria de solo lectura (ROM) o un dispositivo de memoria de acceso aleatorio (RAM). Puede usarse cualquier otro tipo apropiado de dispositivo de almacenamiento como la memoria 504. La memoria 504 puede incluir código y datos 506 a los que accede el procesador 502 usando un bus 512. La memoria 504 puede incluir además un sistema operativo 508 y programas 510 de aplicación. Los programas de aplicación 510 incluyen al menos un programa que permite que el procesador 502 realice los métodos descritos en esta memoria descriptiva. Por ejemplo, los programas de aplicación 510 pueden incluir aplicaciones 1 a N, y las aplicaciones 1 a N incluyen además una aplicación de codificación de vídeo que realiza el procedimiento descrito en esta memoria descriptiva. El aparato 500 también puede incluir una memoria adicional en forma de un almacenamiento secundario 514. El almacenamiento secundario 514 puede ser, por ejemplo, una tarjeta de memoria utilizada con un dispositivo informático móvil. Debido a que las sesiones de videocomunicación pueden contener una gran cantidad de información, esta información puede almacenarse en su totalidad o en parte en el almacenamiento secundario 514 y cargarse en la memoria 504 según sea necesario para el procesamiento.
El aparato 500 también puede incluir uno o más dispositivos de salida, tales como una pantalla 518. En un ejemplo, la pantalla 518 puede ser una pantalla táctil que combina una pantalla con un elemento sensible al tacto que es operable para detectar entradas táctiles. La memoria 518 se conecta al procesador 502 mediante el uso del bus 512. Se pueden proporcionar otros dispositivos de salida que permitan a un usuario programar o usar de otro modo el aparato 500 además de o como alternativa a la pantalla 518. Cuando el dispositivo de salida es o incluye una pantalla, la pantalla puede implementarse de diferentes maneras, que incluyen una pantalla de cristal líquido (LCD), una pantalla de tubo de rayos catódicos (CRT), una pantalla de plasma o una pantalla de diodo emisor de luz (LED), tal como una pantalla LED orgánico (OLED).
El aparato 500 también puede incluir o conectarse a un dispositivo 520 de detección de imagen. El dispositivo 520 de detección de imágenes es, por ejemplo, una cámara o cualquier otro dispositivo 520 de detección de imágenes que pueda detectar una imagen y que esté existente o que se desarrolle en el futuro. La imagen es, por ejemplo, una imagen de un usuario que ejecuta el aparato 500. El dispositivo 520 de detección de imágenes puede colocarse directamente orientado a un usuario que ejecuta el aparato 500. En un ejemplo, una posición y un eje óptico del dispositivo 520 de detección de imágenes pueden configurarse de modo que un campo de visión del dispositivo 520 de detección de imágenes incluya una región estrechamente adyacente a la pantalla 518 y la pantalla 518 puede verse de la región.
El aparato 500 también puede incluir o estar en comunicación con un dispositivo 522 de detección de sonido, por ejemplo, un micrófono o cualquier otro dispositivo de detección de sonido que esté existente o que se desarrolle en el futuro y que pueda detectar sonidos cerca del aparato 500. El dispositivo de detección de sonido 522 puede colocarse directamente orientado hacia un usuario que ejecuta el aparato 500, y puede configurarse para recibir un sonido, por ejemplo, una voz u otro sonido, hecho por el usuario cuando se ejecuta el aparato 500.
Aunque la figura 5 representa el procesador 502 y la memoria 504 del aparato 500 como se integra en una sola unidad, pueden utilizarse otras configuraciones. La ejecución del procesador 502 puede distribuirse en una pluralidad de máquinas (cada máquina incluye uno o más procesadores) que pueden acoplarse directamente, o distribuirse en una región local u otra red. La memoria 504 se puede distribuir a través de una pluralidad de máquinas tales como una memoria basada en red o una memoria en una pluralidad de máquinas en las que se ejecuta el aparato 500. Aunque se representa en el presente documento como un único bus, el bus 512 del aparato 500 puede incluir una pluralidad de buses. Además, el almacenamiento secundario 514 puede acoplarse directamente a los otros componentes del aparato 500 o puede accederse a través de una red y puede incluir una única unidad integrada tal como una tarjeta de memoria o una pluralidad de unidades tales como una pluralidad de tarjetas de memoria. Por lo tanto, el aparato 500 puede implementarse en una amplia variedad de configuraciones.
Como se describió anteriormente en esta solicitud, además de incluir un componente de luma (Y), un video de color incluye además componentes de crominancia (U, V). Por lo tanto, además de la codificación en el componente de luminancia, también es necesario codificar los componentes de crominancia. De acuerdo con diferentes métodos para muestrear el componente de luma y los componentes de crominancia en el video de color, normalmente hay YUV 4:4:4, YUV 4:2:2, y YUV 4:2:0. Como se muestra en la figura 6, un cruce representa una muestra de un componente de luma, y un círculo representa una muestra de un componente de crominancia.
• Un formato 4:4:4 indica que el componente de crominancia no se muestrea.
• Un formato 4:2:2 indica que, en relación con el componente de luminancia, se realiza una submuestreo horizontal de 2:1 en un componente de crominancia, y no se realiza un muestreo descendente vertical en el componente de crominancia. Para cada dos muestras U o muestras V, cada fila incluye cuatro muestras Y.
• Un formato 4:2:0 indica que, en relación con el componente de luminancia, se realiza un muestreo descendente horizontal 2:1 en un componente de crominancia, y se realiza un muestreo descendente vertical 2:1 en el componente de crominancia.
El descodificador de vídeo se puede configurar para dividir un bloque de vídeo de acuerdo con tres estructuras divididas diferentes (QT, BT y t T) usando cinco tipos de división diferentes permitidos en cada profundidad. Los tipos divididos incluyen una división de árbol cuádruple (estructura de división q T), una división de árbol binario horizontal (estructura dividida BT), una división de árbol binario vertical (estructura dividida BT) y una división de árbol ternario de lado central horizontal (estructura dividida TT), y una división de árbol ternario de lado central vertical (estructura dividida TT), como se muestra en la figura 7A a la figura 7E.
Los cinco tipos de división se definen de la siguiente manera: Cabe señalar que un cuadrado se considera como un caso especial de un rectángulo.
Divide en cuarga (QT): Un bloque se divide adicionalmente en cuatro bloques rectangulares del mismo tamaño. La figura 7A muestra un ejemplo de una división de árbol cuádruple. Según un método de división de CTU basado en un árbol cuádruple QT, se usa una CTU como nodo raíz (raíz) de un árbol cuádruple. La CTU se divide recursivamente en varios nodos de hoja (nodo de hoja) en base a un modo de división de árbol cuádruple. Un nodo corresponde a una región de imagen. Si un nodo no está dividido, el nodo se denomina nodo hoja, y una región de imagen correspondiente al nodo se convierte en una CU. Si un nodo se divide, una región de imagen correspondiente al nodo se divide en cuatro regiones de imagen de un mismo tamaño (la longitud y el ancho de las cuatro regiones son respectivamente la mitad de la longitud y el ancho de la región dividida), y cada región corresponde a un nodo. Si estos nodos se dividen además deben determinarse por separado. Si un nodo se va a dividir se indica mediante un indicador dividido de bandera dividido que está en un flujo de bits y que corresponde al nodo. Una profundidad de árbol cuádruple (qtprofundidad) del nodo raíz es 0, y una profundidad de árbol cuádruple de un nodo hijo es una profundidad de árbol cuádruple de un nodo padre más 1. Por brevedad de la descripción, un tamaño y una forma de un nodo en esta solicitud son un tamaño y una forma de una región de imagen correspondiente al nodo, es decir, el nodo es una región rectangular en una imagen. Un nodo obtenido dividiendo un nodo en el árbol de codificación puede denominarse nodo hijo del nodo, que es un nodo hijo para abreviar.
Más específicamente, un nodo de 64 x 64 CTU (con la profundidad de árbol cuádruple de 0) puede no dividirse basándose en splid_cu_flag correspondiente al nodo CTU, y convertirse en 64 x 64 CU; o se puede dividir en cuatro nodos 32 x 32 (con la profundidad de árbol cuádruple de 1). Cada uno de los cuatro nodos 32 x 32 puede dividirse adicionalmente o no dividirse adicionalmente en base al indicador dividido correspondiente al nodo. Si un nodo 32 x 32 continúa siendo dividido, se generan cuatro nodos 16 x 16 (con la profundidad de árbol cuádruple de 2). El resto puede deducirse por analogía, hasta que ningún nodo se divide adicionalmente. De esta manera, una CTU se divide en un grupo de CU. Un tamaño de CU mínimo (tamaño) se especifica en SPS. Por ejemplo, 8 x 8 es el tamaño mínimo de la CU. En el proceso de partición recursivo anterior, si un tamaño de un nodo es igual al tamaño mínimo de la CU, el nodo no debe dividirse más por defecto, y un indicador dividido del nodo no necesita incluirse en un flujo de bits.
Después de que se aprende, mediante el análisis, que un nodo es un nodo de hoja y el nodo de hoja es una CU, la información de codificación (que incluye información tal como un modo de predicción y un coeficiente de transformada de la CU, por ejemplo, una estructura de sintaxis coding_unidad ( en H.266) correspondiente a la CU se analiza adicionalmente. Luego, el procesamiento de decodificación tal como predicción, descuantificación, transformación inversa y filtrado de bucle se realiza en la CU basándose en la información de codificación, para generar una imagen reconstruida correspondiente a la CU. En una estructura de árbol cuádruple (QT), la CTU se puede dividir en un grupo de CU de tamaños apropiados basándose en una característica de imagen local. Por ejemplo, una región plana se divide en CU más grandes, mientras que una región altamente texturizada se divide en CU más pequeñas.
Un modo de dividir una CTU en un grupo de CU corresponde a un árbol de codificación. Un árbol de codificación específico que debe ser utilizado por la CTU normalmente se determina usando una tecnología de optimización de tasa-distorsión (RDO) de un codificador. El codificador intenta una pluralidad de modos de división CTU, y cada modo de división corresponde a un coste de distorsión de velocidad (coste RD). El codificador compara los costes RD de los modos divididos que se intentan encontrar un modo dividido con un coste de RD mínimo como un modo de división óptimo de la CTU, para la codificación real de la CTU. Todos los modos de división CTU probados por el codificador necesitan cumplir con una regla de división especificada por un decodificador, de modo que los modos de división CTU puedan identificarse correctamente por el decodificador.
Separación en árbol binario Vertical (BT): Un bloque se divide verticalmente en dos bloques rectangulares del mismo tamaño. La figura 7B es un ejemplo de una división de árbol binario vertical.
Dedivisión del árbol binario Horizontal: Un bloque se divide horizontalmente en dos bloques rectangulares del mismo tamaño. La figura 7C es un ejemplo de una división de árbol binario horizontal.
Separación de árbol ternario de lado central Vertical (TT): Un bloque se divide verticalmente en tres bloques rectangulares, de modo que dos bloques laterales tienen un mismo tamaño, y un tamaño de un bloque central es una suma de los tamaños de los dos bloques laterales. La figura 7D es un ejemplo de una división de árbol ternario de lado central vertical.
Se divide el árbol ternario de lado central Horizontal: Un bloque se divide horizontalmente en tres bloques rectangulares de modo que dos bloques laterales tienen un mismo tamaño, y un tamaño de un bloque central es una suma de los tamaños de los dos bloques laterales. La Figura 7E es un ejemplo de una división de árbol ternario de lado central horizontal.
Los métodos divididos específicos en la Figura 7B a la Figura 7E son similares a las descripciones en la Figura 7A, y los detalles no se describen en la presente descripción nuevamente. Además, se puede usar un modo de división de cascada en cascada y un BT/TT, que es QT-BTT para abreviar. Es decir, un nodo en un árbol de codificación de nivel 1 puede dividirse en nodos hijos solo a través de QT, y un nodo de hoja en el árbol de codificación de nivel 1 es un nodo raíz de un árbol de codificación de nivel 2; un nodo en el árbol de codificación de nivel 2 puede dividirse en nodos hijos usando uno de los siguientes cuatro modos fraccionos: una división binaria horizontal, una división binaria vertical, una división ternaria horizontal y una división ternaria vertical; un nodo de hoja del árbol de codificación de nivel 2 es una unidad de codificación. Específicamente, una división de árbol binario y una división de árbol cuádruple se realizan en forma de cascada, que puede ser un modo de división QTBT para abreviar. Por ejemplo, una CTU se divide primero a través de un QT, y se permite que un nodo de hoja QT continúe dividiéndose a través de un BT, como se muestra en la Figura 8. En la parte derecha de la figura 8, cada punto final representa un nodo. Un nodo que se conecta a cuatro líneas continuas representa una división de árbol cuádruple, y un nodo que conecta con dos líneas discontinuas representa un árbol binario dividido. Un nodo obtenido después de la división puede denominarse nodo hijo del nodo, que es un nodo hijo para abreviar. Entre los nodos hijos, a m son 13 nodos hoja, y cada nodo de hoja representa una C<u>. En un nodo de árbol binario, 1 representa una división vertical, y 0 representa una división horizontal. Una CTU se divide en 13 CUs: a m, como se muestra en la parte izquierda de la figura 8. En el modo de división QTBT, cada CU tiene una profundidad QT (profundidad de árbol cuádruple) y una profundidad BT (profundidad del árbol binario). La profundidad QT representa una profundidad QT de un nodo de hoja QT al que pertenece la CU, y la profundidad BT representa una profundidad BT de un nodo hoja BT al que pertenece la CU. Por ejemplo, en la figura 8, las profundidades de<q>T de a y b son 1, y las profundidades BT de a y b son 2; Profundidades QT de c, d y e son 1, y las profundidades BT de c, d y e son 1; Profundidades QT de f, k y 1 son 2, y las profundidades BT de f, k y 1 son 1; Las profundidades QT de i y j son 2, y las profundidades BT de i y j son 0; Las profundidades QT de g y h son 2, y las profundidades BT de g y h son 2; una profundidad QT de m es 1, y una profundidad BT de m es 0. Si una CTU se divide en una sola CU, una profundidad QT de la CU es 0, y una profundidad BT de la CU es 0.
Para un bloque asociado con una profundidad específica, el codificador 20 determina qué tipo de división (que incluye ninguna división adicional) se usa, e explícita o implícitamente (por ejemplo, un tipo dividido puede derivarse de una regla predeterminada) señaliza el tipo dividido determinado al decodificador 30. El codificador 20 puede determinar un tipo de división a usar en base a un coste de tasa-distorsión para comprobar un tipo de división diferente para un bloque.
Si un bloque de crominancia 2xM, especialmente un bloque de crominancia 2 x 2, 2 x 4 o 2 x 8, se genera dividiendo un nodo, la codificación de crominancia y la eficacia de decodificación es comparativamente baja y los costes de procesamiento de un decodificador de hardware son comparativamente altos. Esto es desfavorable para la implementación del decodificador de hardware. Cuando el bloque de crominancia del nodo actual no se divide más, en esta realización de esta solicitud, solo un bloque de luma del nodo actual puede dividirse, mejorando así la eficiencia de codificación y decodificación, reduciendo un rendimiento máximo de un códec, y facilitando la implementación del códec. Específicamente, en esta realización de esta solicitud, cuando nodos hijos generados dividiendo un nodo usando un modo dividido incluyen un bloque de crominancia cuya longitud lateral es un primer umbral (o incluye un bloque de crominancia cuya longitud lateral es menor que un segundo umbral), el bloque de luminancia incluido en el nodo se divide usando este modo de división, un bloque de crominancia incluido en el nodo no se divide más. Este modo puede evitar la generación de un bloque de crominancia cuya longitud lateral es el primer umbral (o cuya longitud lateral es menor que el segundo umbral). En una implementación específica, el primer umbral puede ser 2 y el segundo umbral puede ser 4. A continuación, se proporcionan descripciones detalladas con referencia a algunos ejemplos. En esta realización de esta solicitud, se proporcionan descripciones usando un formato de datos de vídeo de YUV 4:2:0, y se puede usar una manera similar para los datos YUV 4:2:2.
Se adopta una herramienta de codificación de copia intrabloque (IBC) en una SCC estándar extendida de HEVC, y se usa principalmente para mejorar la eficiencia de codificación de un vídeo de contenido de pantalla. El modo IBC es un modo de codificación a nivel de bloque. En un lado del codificador, se usa un método de coincidencia de bloques (BM) para encontrar un vector de bloque óptimo o un vector de movimiento para cada CU. El vector de movimiento en el presente documento se usa principalmente para representar un desplazamiento del bloque actual a un bloque de referencia, y también se denomina vector de desplazamiento. El bloque de referencia es un bloque reconstruido en la imagen actual. El modo IBC puede considerarse como un tercer modo de predicción distinto del modo de intra predicción o el modo de interpredicción. Para ahorrar espacio de almacenamiento y reducir la complejidad del decodificador, el modo IBC en VTM4 permite solo una parte reconstruida de una región predefinida de la c Tu actual a usar para la predicción.
En VTM, a un nivel de CU, se usa un indicador para indicar si un modo IBC se usa para una CU actual. El modo IBC se clasifica en un modo IBC AMVP, un modo de omisión IBC o un modo de fusión iBc .
Realización 1
La Figura 9 es un diagrama de flujo de un método de comunicaciones de acuerdo con una realización de la presente invención;
Etapa 901: Determinar si un nodo actual necesita dividirse, donde el nodo actual incluye un bloque de luma y un bloque de crominancia.
Si el nodo actual no se divide más en nodos hijos, el nodo actual es una unidad de codificación (CU), y la etapa 910 se realiza para obtener información sobre la unidad de codificación a través del parte; o si el nodo actual necesita dividirse, se realiza la etapa 902.
La realización 1 de la presente invención puede implementarse mediante un aparato de decodificación de video, para ser específico, el aparato descrito en cualquiera de la Figura 3 a la Figura 5.
La realización 1 de la presente invención puede implementarse alternativamente mediante un aparato de codificación de vídeo, para ser específico, el aparato descrito en cualquiera de la figura 2, la figura 4 y la figura 5.
Cuando la realización 1 es implementada por el aparato de decodificación de vídeo, la etapa 902 es: El aparato de decodificación de video analiza un flujo de bits para determinar un modo de división del nodo actual. El modo dividido del nodo actual puede ser al menos uno de una división cuádruple (QT), una división binaria horizontal (BT horizontal), una división ternaria horizontal (TT horizontal), una división binaria Vertical (BT ), y una división ternaria Vertical (TT Vertical), o puede ser otro modo dividido. Esto no se limita en esta realización de la presente invención. La información acerca del modo dividido del nodo actual generalmente se transmite en el flujo de bits, y el modo dividido del nodo actual puede obtenerse analizando un elemento de sintaxis correspondiente en el flujo de bits.
Cuando la realización 1 es implementada por el aparato de codificación de vídeo, la etapa 902 es: Determinar un método para dividir el nodo actual.
Etapa 904: Determinar, basándose en el modo dividido del nodo actual y un tamaño del nodo actual, si el bloque de crominancia del nodo actual necesita dividido; y cuando el bloque de crominancia del nodo actual no se divide más, realizar la etapa 906; o cuando el bloque de crominancia del nodo actual necesita dividirse, realizar la etapa 908.
Específicamente, en una implementación, puede determinarse si un bloque de crominancia cuya longitud lateral es un primer umbral (o un bloque de crominancia cuya longitud lateral es menor que un segundo umbral) se genera dividiendo el nodo actual basándose en el modo dividido del nodo actual. Si se determina que un nodo hijo generado dividiendo el nodo actual incluye el bloque de crominancia cuya longitud lateral es el primer umbral (o incluye el bloque de crominancia cuya longitud lateral es menor que el segundo umbral), el bloque de crominancia del nodo actual no se divide más. Por ejemplo, el primer umbral puede ser 2 y el segundo umbral puede ser 4.
En esta realización de la presente invención, el bloque de crominancia cuya longitud lateral es el primer umbral es un bloque de crominancia cuya anchura o altura es el primer umbral.
En otra implementación, por ejemplo, cuando una cualquiera de las condiciones 1 a la condición 5 es verdadera, puede determinarse que el bloque de crominancia del nodo actual no se divide adicional; de otra manera, se determina que el bloque de crominancia del nodo actual necesita dividilo:
condición 1: El ancho del nodo actual es igual al doble de un segundo umbral, y el modo dividido del nodo actual es una división binaria vertical;
condición 2: La altura del nodo actual es igual al doble de un segundo umbral, y el modo dividido del nodo actual es una división binaria horizontal;
condición 3: El ancho del nodo actual es igual a cuatro veces un segundo umbral, y el modo dividido del nodo actual es una división ternaria vertical.
condición 4: La altura del nodo actual es igual a cuatro veces un segundo umbral, y el modo dividido del nodo actual es una división ternaria horizontal; o
condición 5: El ancho del nodo actual es igual al doble de un segundo umbral, y el modo dividido del nodo actual es una división cuádruple.
Generalmente, el ancho del nodo actual es el ancho del bloque de luma correspondiente al nodo actual, y la altura del nodo actual es la altura del bloque de luma correspondiente al nodo actual. En una implementación específica, por ejemplo, el segundo umbral puede ser 4.
En realizaciones de la reivindicado La invención, el segundo umbral es 4 y la condición 3 de las condiciones enumeradas anteriormente se usa para determinar que el bloque de crominancia del nodo actual no se divide más.
En una tercera implementación, se puede determinar si un bloque de crominancia cuya anchura es un primer umbral (o un bloque de crominancia cuya anchura es menor que un segundo umbral) se genera dividiendo el nodo actual basándose en el modo dividido del nodo actual. Si se determina que un nodo hijo generado dividiendo el nodo actual incluye el bloque de crominancia cuyo ancho es el primer umbral (o incluye el bloque de crominancia cuya anchura es menor que el segundo umbral), el bloque de crominancia del nodo actual no se divide más. Por ejemplo, el primer umbral puede ser 2 y el segundo umbral puede ser 4.
En una cuarta implementación, se puede determinar si un bloque de crominancia cuya cantidad de muestra de crominancia es menor que un tercer umbral se genera dividiendo el nodo actual basándose en el modo dividido del nodo actual. Si se determina que un nodo hijo generado dividiendo el nodo actual incluye un bloque de crominancia cuya cantidad de muestra de crominancia es menor que el tercer umbral, el bloque de crominancia del nodo actual no se divide más. Por ejemplo, el primer umbral puede ser 16. En este caso, un bloque de crominancia cuya cantidad de muestra de crominancia es menor que 16 incluye pero no se limita a un bloque de crominancia 2 x 2, un bloque de crominancia 2 x 4 y un bloque de crominancia 4 x 2. El tercer umbral puede ser 8. En este caso, un bloque de crominancia cuya cantidad de muestra de crominancia es menor que 8 incluye pero no se limita a un bloque de crominancia 2 x 2.
Específicamente, si una condición 1 o condición 2 es verdadera, puede determinarse que el bloque de crominancia cuya cantidad de muestra de crominancia es menor que el tercer umbral se genera dividiendo el nodo actual basándose en el modo dividido del nodo actual; de otra manera, puede determinarse que ningún bloque de crominancia cuya cantidad de muestra de crominancia es menor que el tercer umbral se genera dividiendo el nodo actual basándose en el modo dividido del nodo actual;
condición 1: Un producto de la anchura y la altura del nodo actual es menor que 128, y el modo dividido del nodo actual es una división binaria vertical o una división binaria horizontal; o
condición 2: Un producto de la anchura y la altura del nodo actual es menor que 256, y el modo dividido del nodo actual es una división ternaria vertical, una división ternaria horizontal o una división cuádruple.
Específicamente, en otra implementación, si la condición 3 o condición 4 es verdadera, puede determinarse que el bloque de crominancia cuya cantidad de muestra de crominancia es menor que un tercer umbral se genera dividiendo el nodo actual basándose en el modo dividido del nodo actual; de otra manera, puede determinarse que ningún bloque de crominancia cuya cantidad de muestra de crominancia es menor que el tercer umbral se genera dividiendo el nodo actual basándose en el modo dividido del nodo actual;
condición 3: Un producto de la anchura y la altura del nodo actual es igual a 64, y el modo dividido del nodo actual es una división binaria vertical, una división binaria horizontal, una división cuádruple, una división ternaria horizontal o una división ternaria vertical; o
condición 4: Un producto de la anchura y la altura del nodo actual es igual a 128, y el modo dividido del nodo actual es una división ternaria vertical o una división ternaria horizontal.
En una quinta implementación, se puede determinar si un bloque de crominancia cuya altura es un primer umbral (o un bloque de crominancia cuya altura es menor que un segundo umbral) se genera dividiendo el nodo actual basándose en el modo dividido del nodo actual. Si se determina que un nodo hijo generado dividiendo el nodo actual incluye un bloque de crominancia cuya altura es el primer umbral (o un bloque de crominancia cuya altura es menor que el segundo umbral), el bloque de crominancia del nodo actual no se divide más. Por ejemplo, el primer umbral puede ser 2 y el segundo umbral puede ser 4.
Etapa 906: Dividir el bloque de luma del nodo actual basándose en el modo dividido del nodo actual, para obtener los nodos hijos (que también pueden denominarse nodos hijos del bloque de luma, nodos de luma para abreviar) del nodo actual. Cada nodo hijo incluye solo un bloque de luma. El bloque de crominancia del nodo actual no se divide más y se convierte en una unidad de codificación que incluye solo el bloque de crominancia.
Opcionalmente, como se muestra en la Figura 10, el aparato puede incluir además: Eliminar el bloque de luminancia del nodo actual, para obtener información de predicción e información residual de cada una de las subregiones en el bloque de luminancia del nodo actual, donde cada subregión corresponde a un nodo hijo.
Específicamente, la etapa 9062 puede implementarse usando uno cualquiera de los siguientes métodos:
Método 1 No dividir aún más cada nodo hijo del bloque de luminancia por defecto (es decir, cada nodo de luminancia es una unidad de codificación, y un nodo hijo del bloque de luminancia corresponde a una unidad de codificación que incluye solo un bloque de luma) y analizar secuencialmente datos de unidad de codificación para los nodos hijos del bloque de luminancia, para obtener información de predicción e información residual de cada bloque de luma. Un bloque de luma de un nodo de luminancia es una subregión en el bloque de luma del nodo actual, y los bloques de luma de los nodos de luminancia constituyen el bloque de luma del nodo actual.
Método 2 Determinar si los nodos hijos del bloque de luma necesitan continuar con la división adicional secuencialmente; y cuando los nodos hijos deben dividirse adicionalmente, analizar un modo dividido de los nodos hijos y los datos de unidad de codificación correspondientes. Más específicamente, si un nodo de luminancia no se divide adicionalmente, los datos de la unidad de codificación correspondientes al nodo de luminancia se analizan, para obtener información de predicción e información residual que corresponden a un bloque de luma del nodo de luminiscencia o si un nodo de luminancia continúa siendo dividido, si los nodos hijos (debe observarse que el nodo hijo aún incluye solo un bloque de luma) del nodo de luminancia que debe ser dividido continúa siendo determinado, hasta que la información de predicción y la información residual de cada una de las subregiones del bloque de luminancia del nodo actual se determinan.
La información de predicción incluye, pero no se limita a, un modo de predicción (que indica un modo de intra predicción o un modo de predicción inter), un modo de intra predicción, información de movimiento y/o similares. El modo de intra predicción del bloque de luma puede ser uno de un modo plano, un modo de corriente continua (modo DC), un modo angular y un modo derivado de crominancia (DM). La información de movimiento puede incluir información tal como una dirección de predicción (hacia adelante, hacia atrás o bidireccional), un índice de referencia y/o un vector de movimiento.
La información residual incluye un indicador de bloque codificado (CBF), un coeficiente de transformada y/o un tipo de transformada (por ejemplo, DCT-2, DST-7, o DCT-8), y similares.
Opcionalmente, como se muestra en la Figura 10, el aparato puede incluir además: Obtener información de predicción y/o información residual del bloque de crominancia.
Específicamente, la etapa 9064 puede incluir la etapa 90642 y la etapa 90644. La etapa 90642 puede ser la etapa 90642A o la etapa 90642B.
La etapa 90642A incluye específicamente: Obtener un modo de predicción para una posición preestablecida del bloque de luminancia del nodo actual como el modo de predicción del bloque de crominancia del nodo actual. Una posición de la esquina superior izquierda del bloque de luma del nodo actual puede expresarse como (x0, yO), y un tamaño es WxH. En este caso, la posición preestablecida puede incluir, pero no se limita a, la esquina superior izquierda, la esquina inferior derecha (x0 W-1, y0 H-1 ), el centro (x0 W/2, y0 H/2), (x0 W/2, 0), o (0, y0 H/2) del bloque de luma, o similares. El modo de predicción indica si se realiza intra predicción o interpredicción en un píxel en la posición preestablecida, por ejemplo, información indicada por un indicador de modo de sintaxis de elemento de sintaxis en HEVC. Por ejemplo, en VTM, si el modo de predicción para la posición preestablecida es un modo ibc puede determinarse basándose en información indicada por un elemento de sintaxis pred_mode_ibc_flag.
Si el modo de predicción para la posición preestablecida es la predicción inter, uno de los siguientes métodos se usa para determinar el modo de predicción del bloque de crominancia
Método 1 Realizar la interpredicción en el bloque de crominancia para obtener información de movimiento para la posición preestablecida como información de movimiento del bloque de crominancia.
Método 2 Realizar la interpredicción en el bloque de crominancia, y dividir el bloque de crominancia en subbloques de predicción crominancia (donde un tamaño del subbloque de predicción de crominancia es, por ejemplo, dos muestras de crominancia en anchura y dos muestras de crominancia en altura), y obtener información de movimiento de los subbloques de predicción crominancia de la siguiente forma:
Si la interpredicción se realiza en bloques de luma en posiciones de imagen de luma correspondientes a los subbloques de predicción de crominancia, la información de movimiento de las posiciones de imagen de luma correspondiente a los subbloques de predicción de crominancia se usa como información de movimiento de los subbloques de predicción de crominancia de lo contrario, la información de movimiento para la posición preestablecida se obtiene como la información de movimiento de los subbloques de predicción de crominancia.
Para una imagen YUV 4:2:0, las coordenadas de un subbloque de predicción de crominancia en una imagen de crominancia se indican como (xC, yC). En este caso, las coordenadas de una posición de imagen de luma correspondiente al subbloque de predicción de crominancia son (xC<< C1<< 1).
Método 3 Para determinar si la predicción intra o la interpredicción se realiza en el bloque de crominancia y si se realiza intra predicción en el bloque de crominancia, analizar sintácticamente un modo de intra predicción a partir de un flujo de bits como un modo de intra predicción del bloque de crominancia del bloque de crominancia o si la interpredicción se realiza en el bloque de crominancia, obtener información de movimiento para una posición preestablecida como información de movimiento del bloque de crominancia.
Método 4 Para determinar si la predicción intra o la interpredicción se realiza en el bloque de crominancia y si se realiza intra predicción en el bloque de crominancia, analizar un modo de intra predicción a partir de un flujo de bits como un modo de intra predicción del bloque de crominancia, donde el modo de intra predicción puede ser uno de un modo de modelo lineal de componente cruzado y un modo de DM, y un modo de intra predicción de luma correspondiente al modo de DM se establece en un modo plano; o si la interpredicción se realiza en el bloque de crominancia, dividir el bloque de crominancia en subbloques de predicción crominancia, donde la información de movimiento de los subbloques de predicción de crominancia se obtiene de la siguiente manera:
Si la interpredicción se realiza en bloques de luma en posiciones de imagen de luma correspondientes a los subbloques de predicción de crominancia, la información de movimiento de las posiciones de imagen de luma correspondiente a los subbloques de predicción de crominancia se usa como información de movimiento de los subbloques de predicción de crominancia de lo contrario, la información de movimiento para la posición preestablecida se obtiene como la información de movimiento de los subbloques de predicción de crominancia.
Un modelo de contexto utilizado para analizar sintácticamente el indicador de modo pred indicador es un modelo preestablecido, por ejemplo, con un número de modelo 2.
Si el modo de predicción para la posición preestablecida es intra predicción, se realiza intra predicción en el bloque de crominancia, y se analiza un modo de intra predicción a partir del flujo de bits como el modo de intra predicción del bloque de crominancia. Alternativamente, se determina directamente que el modo de intra predicción del bloque de crominancia es uno de un modo de corriente continua, un modo plano, un modo angular, un modo de modelo lineal de componente cruzado o un modo de DM.
Si el modo de predicción para la posición preestablecida es un modo IBC, el bloque de crominancia se predice en el modo IBC, para obtener información del vector de desplazamiento para la posición preestablecida como información del vector de desplazamiento del bloque de crominancia o si el modo de predicción para la posición preestablecida es un modo ibc, el modo de predicción del bloque de crominancia se determina en base a la bandera mow_ibc_flag:
1) si pre_mode_ibc_flag es 1, el modo IBC se usa para el bloque de crominancia más específicamente, un método para predecir la IBC para el bloque de crominancia puede ser un método en VTM 4.0, es decir, el bloque de crominancia se divide en 2 x 2 subbloques, y un vector de desplazamiento de cada subbloque es igual a un vector de desplazamiento de una región de luma correspondiente al subbloque; o
2) si pre_mode_ibc_flag es 0, un modo de intra predicción o un modo de interpredicción se usa para el bloque de crominancia.
Cuando se usa el modo de intra predicción, se analiza un elemento de sintaxis a partir del flujo de bits, para determinar un modo de intra predicción crominancia. Alternativamente, se determina directamente que el modo de intra predicción del bloque de crominancia pertenece a un conjunto de modos de intra predicción crominancia. El conjunto de modo de intra predicción crominancia incluye un modo de corriente continua, un modo plano, un modo angular, un modelo lineal de componente cruzado y un modo de DM.
Cuando se usa el modo de interpredicción, la información de movimiento para la posición preestablecida puede obtenerse como la información de movimiento del bloque de crominancia.
Cabe señalar que, cuando no hay pre_mode_ibc_flag en el flujo de bits, si un tipo de una imagen en la que se ubica el nodo actual es un marco I/segmento I y se permite un modo IBC para su uso, pred_mode_ibc_flag es 1 por defecto, es decir, el modo IBC se usa para el bloque de crominancia por defecto; o si un tipo de una imagen en la que se ubica el nodo actual es una P/B-trama/fragmento, pred_mode_ibc_flag es 0 por defecto.
En VTM, si el modo de predicción para la posición preestablecida es un modo ibc puede determinarse basándose en información indicada por el elemento de sintaxis pred_mode_ibc_flag. Por ejemplo, si pred_mode_ibc_flag es 1, indica que se usa el modo de predicción IBC o si pre_mode_ibc_flag es 0, indica que el modo IBC no se usa. Cuando no hay pre_mode_ibc_flag en el flujo de bits, si en el I-frame/I-slice, un valor de pred_mode_ibc_flag es igual a un valor de sps_ibc_activo; si en la P-frame/slice o la B-frame/slice, pred_mode_ibc_flag es 0. Cuando el indicador sps_ibc_enabled es 1, indica que la imagen actual se permite que se use como una imagen de referencia en un proceso de decodificación de la imagen actual; o cuando sps_ibc_enabled es 0, indica que la imagen actual no se puede usar como una imagen de referencia en un proceso de decodificación de la imagen actual.
El modo de intra predicción del bloque de crominancia puede ser uno de un modo de corriente continua, un modo plano, un modo angular, un modo de modelo lineal de componente cruzado (CCLM) y un modo derivado de crominancia (DM), por ejemplo, un modo DC, un modo plano, un modo angular, un modo de modelo lineal de componente cruzado y un modo derivado de crominancia en VTM.
La etapa 90642B incluye específicamente: Obtener modos de predicción para una pluralidad de bloques de luma del nodo actual, y determinar el modo de predicción del bloque de crominancia correspondiente al nodo actual usando el siguiente método: Si la intrapredicción se realiza en todo la pluralidad de bloques de luma, la intrapredicción se realiza en el bloque de crominancia, y un modo de intrapredicción se analiza a partir de un flujo de bits como el modo intrapredicción del bloque de crominancia. Si la interpredicción se realiza en todo la pluralidad de bloques de luma, uno de los siguientes métodos se usa para determinar un modo de predicción de crominancia:
Método 1 Realizar la interpredicción en el bloque de crominancia para obtener información de movimiento para la posición preestablecida como información de movimiento del bloque de crominancia. La posición preestablecida tiene el mismo significado que en la Realización 1.
Método 2 Analizar el indicador de modo de color rojo para determinar si la intrapredicción o la interpredicción se realizan en el bloque de crominancia y si se realiza intra predicción en el bloque de crominancia, analizar sintácticamente un modo de intra predicción a partir del flujo de bits como el modo de intra predicción del bloque de crominancia del bloque de crominancia o si la interpredicción se realiza en el bloque de crominancia, obtener información de movimiento para la posición preestablecida como información de movimiento del bloque de crominancia.
Si la interpredicción y la intrapredicción se incluyen para la pluralidad de bloques de luma, la información de modo del bloque de crominancia puede determinarse de una de las siguientes maneras:
(1) si el modo de predicción para la posición preestablecida es la predicción inter, la predicción inter se realiza en el bloque de crominancia para obtener información de movimiento para la posición preestablecida como información de movimiento del bloque de crominancia;
(2) si el modo de predicción para la posición preestablecida es intra predicción, se realiza intra predicción en el bloque de crominancia, y se analiza un modo de intra predicción a partir de un flujo de bits como el modo de intra predicción del bloque de crominancia del bloque de crominancia; o se determina directamente que el modo de intra predicción del bloque de crominancia es uno de un modo de corriente continua, un modo plano, un modo angular, un modo de modelo lineal de componente cruzado o un modo de DM;
(3) si el modo de predicción para la posición preestablecida es un modo IBC, el bloque de crominancia se predice en el modo IBC, para obtener información del vector de desplazamiento para la posición preestablecida como información del vector de desplazamiento del bloque de crominancia; y
(4) el modo de predicción de crominancia se especifica directamente como un modo en un conjunto de modos, donde el conjunto de modos incluye un modo AMVP, un modo IBC, un modo de omisión, un modo de corriente continua, un modo plano, un modo angular, un modo de modelo lineal de componente cruzado y un modo DM.
Etapa 90644: Eliminar información residual del bloque de crominancia. Una información residual del bloque de crominancia se incluye en una unidad de transformación. Un tipo de transformada puede ser DCT-2 por defecto.
Etapa 908: Dividir el nodo actual en nodos hijos, donde cada nodo hijo incluye un bloque de luma y un bloque de crominancia. La etapa 901 se realiza en cada nodo hijo, y el análisis continúa siendo realizado para un modo dividido del nodo hijo, para determinar si el nodo hijo (que también se denomina nodo) necesita dividirse adicionalmente.
Después de que se obtiene un modo de división de subregión de un bloque de luma y la información de predicción y la información residual de cada una de las subregiones, el procesamiento de interpredicción o el procesamiento de intrapredicción pueden realizarse en cada subregión en base a un modo de predicción correspondiente de la subregión, para obtener una imagen interpredicha o una imagen intrapredicha de la subregión. Entonces, el procesamiento de descuantificación y transformación inversa se realiza en un coeficiente de transformada basado en la información residual de cada una de las subregiones para obtener una imagen residual, y la imagen residual se superpone en una imagen predicha en la subregión correspondiente, para generar una imagen reconstruida del bloque de luma.
Después de obtener información de predicción y información residual de un bloque de crominancia, el procesamiento de interpredicción o el procesamiento de intra predicción se pueden realizar en el bloque de crominancia basándose en un modo de predicción del bloque de crominancia, para obtener una imagen inter predicha o una imagen intra predicha del bloque de crominancia. Entonces, el procesamiento de descuantificación y transformación inversa se realiza en un coeficiente de transformada basado en la información residual del bloque de crominancia para obtener una imagen residual, y la imagen residual se superpone en una imagen predicha del bloque de crominancia para generar una imagen reconstruida del bloque de crominancia.
En la realización 1 de la presente invención, cuando el bloque de crominancia del nodo actual no se divide más, el método puede usarse para dividir solo el bloque de luma del nodo actual, mejorando así la eficiencia de codificación y decodificación, reduciendo un rendimiento máximo de un códec, y facilitando la implementación del códec.
Realización 2
En comparación con la realización 1, se añade la siguiente restricción a la etapa 9062: Se usa un mismo modo de predicción para los nodos de luminancia (es decir, los nodos hijos de los bloques de luma), es decir, la intrapredicción o la interpredicción se realiza en cada nodo de luminancia. Otras etapas son similares a las de la Realización 1, y los detalles no se describen nuevamente.
Cualquiera de los siguientes métodos puede usarse para usar el mismo modo de predicción para los nodos de luminiscencia
Método 1 Si la trama actual es una trama I, la intrapredicción se realiza en todos los nodos hijos del nodo actual por defecto; o si la trama actual es una trama P o una trama B, un primer nodo (que puede ser un primer nodo hijo para abreviar) en el que se realiza el procesamiento de análisis se analiza para obtener un modo de predicción del primer nodo, y un modo de predicción de un nodo hijo restante (que es un nodo de luminancia para abreviar) es por defecto el modo de predicción del primer nodo en el que se realiza el procesamiento de análisis o
Método 2 Si la trama actual es una trama I, la intrapredicción se realiza en todos los nodos hijos del nodo actual por defecto; o si la trama actual es una trama P o una trama B, la predicción inter se realiza en todos los nodos hijos del nodo actual por defecto.
Realización 3
La Figura 11 es un diagrama de flujo esquemático de un método de comunicaciones de acuerdo con una realización de la presente invención. La realización 3 es similar a la realización 1, excepto la etapa 1104.
Etapa 1104: Determinar, basándose en un modo dividido del nodo actual, un tamaño del nodo actual y un modo de predicción del primer nodo en el que se realiza el procesamiento de análisis (que puede ser el primer nodo hijo para abreviar) en el nodo actual, si el bloque de crominancia del nodo actual se divide, donde el primer nodo hijo incluye solo un bloque de luma. Se realiza un mismo modo de predicción en una pluralidad de nodos hijos del nodo actual. Cada nodo hijo incluye solo un bloque de luma.
Si el modo dividido del nodo actual y el tamaño del nodo actual se determinan primero o el modo de predicción del primer nodo hijo se determina primero no está limitado en esta realización de la presente invención.
En base a la realización 1 o 2, en la Realización 3, un modo dividido del bloque de crominancia del nodo actual, un modo de análisis de información de predicción correspondiente, y un modo de análisis de información residual correspondiente se determinan con referencia al modo de predicción del primer nodo hijo del nodo actual.
En una implementación, se determina, basándose en el modo dividido del nodo actual y el tamaño del nodo actual, que un nodo hijo generado dividiendo el nodo actual incluye un bloque de crominancia cuya longitud lateral es igual a un primer umbral o cuya longitud lateral es menor que un segundo umbral, y un modo de predicción del primer nodo hijo es la intrapredicción; en este caso, el bloque de crominancia del nodo actual no se divide más. De manera Similar a la Realización 1, por ejemplo, el primer umbral puede ser 2 y el segundo umbral puede ser 4.
En esta realización de la presente invención, el bloque de crominancia cuya longitud lateral es el primer umbral es un bloque de crominancia cuya anchura o altura es el primer umbral.
En otra implementación, cuando el modo de predicción del primer nodo hijo es la intrapredicción, y cualquiera de las condiciones 1 a la condición 5 es verdadera:
condición 1: El ancho del nodo actual es igual al doble de un segundo umbral, y el modo dividido del nodo actual es una división binaria vertical;
condición 2: La altura del nodo actual es igual al doble de un segundo umbral, y el modo dividido del nodo actual es una división binaria horizontal;
condición 3: El ancho del nodo actual es igual a cuatro veces un segundo umbral, y el modo dividido del nodo actual es una división ternaria vertical;
condición 4: La altura del nodo actual es igual a cuatro veces un segundo umbral, y el modo dividido del nodo actual es una división ternaria horizontal; o
condición 5: Si el ancho del nodo actual es igual al doble de un segundo umbral y el modo dividido del nodo actual es una división cuádruple, el bloque de crominancia del nodo actual no se divide más.
Generalmente, el ancho del nodo actual es el ancho del bloque de luma correspondiente al nodo actual, y la altura del nodo actual es la altura del bloque de luma correspondiente al nodo actual. En una implementación específica, por ejemplo, el segundo umbral puede ser 4.
Cuando el modo de predicción del primer nodo hijo es intra predicción, similar a la primera realización, en una tercera implementación, puede determinarse si un bloque de crominancia cuyo ancho es el primer umbral (o un bloque de crominancia cuya anchura es menor que el segundo umbral) se genera dividiendo el nodo actual basándose en el modo dividido del nodo actual. Si se determina que un nodo hijo generado dividiendo el nodo actual incluye un bloque de crominancia cuyo ancho es el primer umbral (o un bloque de crominancia cuya anchura es menor que el segundo umbral), y el modo de predicción del primer nodo hijo es intra predicción, el bloque de crominancia del nodo actual no se divide más. Por ejemplo, el primer umbral puede ser 2 y el segundo umbral puede ser 4.
Cuando el modo de predicción del primer nodo hijo es intra predicción, similar a la primera realización, en una cuarta implementación, puede determinarse si un bloque de crominancia cuya cantidad de muestra de crominancia es menor que un tercer umbral se genera dividiendo el nodo actual basándose en el modo dividido del nodo actual. Si se determina que un nodo hijo generado dividiendo el nodo actual incluye un bloque de crominancia cuya cantidad de muestra de crominancia es menor que el tercer umbral, y el modo de predicción del primer nodo hijo es intra predicción, el bloque de crominancia del nodo actual no se divide más. Por ejemplo, el primer umbral puede ser 16. En este caso, un bloque de crominancia cuya cantidad de muestra de crominancia es menor que 16 incluye pero no se limita a un bloque de crominancia 2 x 2, un bloque de crominancia 2 x 4 y un bloque de crominancia 4 x 2. El tercer umbral puede ser 8. En este caso, un bloque de crominancia cuya cantidad de muestra de crominancia es menor que 8 incluye pero no se limita a un bloque de crominancia 2 x 2.
Específicamente, si una condición 1 o condición 2 es verdadera, puede determinarse que el bloque de crominancia cuya cantidad de muestra de crominancia es menor que el tercer umbral se genera dividiendo el nodo actual basándose en el modo dividido del nodo actual; de otra manera, puede determinarse que ningún bloque de crominancia cuya cantidad de muestra de crominancia es menor que el tercer umbral se genera dividiendo el nodo actual basándose en el modo dividido del nodo actual;
condición 1: Un producto de la anchura y la altura del nodo actual es menor que 128, y el modo dividido del nodo actual es una división binaria vertical o una división binaria horizontal; o
condición 2: Un producto de la anchura y la altura del nodo actual es menor que 256, y el modo dividido del nodo actual es una división ternaria vertical, una división ternaria horizontal o una división cuádruple.
Específicamente, en otra implementación, si la condición 3 o condición 4 es verdadera, puede determinarse que el bloque de crominancia cuya cantidad de muestra de crominancia es menor que un tercer umbral se genera dividiendo el nodo actual basándose en el modo dividido del nodo actual; de otra manera, puede determinarse que ningún bloque de crominancia cuya cantidad de muestra de crominancia es menor que el tercer umbral se genera dividiendo el nodo actual basándose en el modo dividido del nodo actual;
condición 3: Un producto de la anchura y la altura del nodo actual es igual a 64, y el modo dividido del nodo actual es una división binaria vertical, una división binaria horizontal, una división cuádruple, una división ternaria horizontal o una división ternaria vertical; o
condición 4: Un producto de la anchura y la altura del nodo actual es igual a 128, y el modo dividido del nodo actual es una división ternaria vertical o una división ternaria horizontal.
Cuando el modo de predicción del primer nodo hijo es intra predicción, similar a la primera realización, en una quinta implementación, puede determinarse si un bloque de crominancia cuya altura es un primer umbral (o un bloque de crominancia cuya altura es menor que un segundo umbral) se genera dividiendo el nodo actual basándose en el modo dividido del nodo actual. Si se determina que un nodo hijo generado dividiendo el nodo actual incluye un bloque de crominancia cuya altura es el primer umbral (o un bloque de crominancia cuya altura es menor que el segundo umbral), y el modo de predicción del primer nodo hijo es intra predicción, el bloque de crominancia del nodo actual no se divide más. Por ejemplo, el primer umbral puede ser 2 y el segundo umbral puede ser 4.
Si el bloque de crominancia del nodo actual no se divide más, el bloque de crominancia del nodo actual se convierte en una unidad de codificación que incluye solo un bloque de crominancia. El procedimiento 1100 puede incluir además: obtener información de predicción y/o información residual del bloque de crominancia.
En otra implementación, se determina, basándose en el modo dividido del nodo actual y el tamaño del nodo actual, que un nodo hijo generado dividiendo el nodo actual incluye un bloque de crominancia cuya longitud lateral es menor que un umbral. Si el modo de predicción del primer nodo hijo es la predicción inter, el bloque de crominancia del nodo actual se divide en base al modo dividido del nodo actual. Opcionalmente, la información de movimiento de un nodo hijo correspondiente del bloque de crominancia se determina basándose en información de movimiento de un nodo hijo del nodo actual. Por ejemplo, la información de movimiento de un nodo hijo del bloque de crominancia del nodo actual puede establecerse como información de movimiento de un nodo de luminancia correspondiente (es decir, información de movimiento de cada nodo hijo del bloque de crominancia no necesita analizarse a partir del flujo de bits). Los nodos hijos del bloque de crominancia se analizan para obtener información residual de los nodos hijos del bloque de crominancia.
Cuando el modo de predicción del primer nodo hijo es la predicción inter, y cualquiera de las siguientes condiciones es verdadera:
condición 1: El ancho del nodo actual es igual al doble de un segundo umbral, y el modo dividido del nodo actual es una división binaria vertical;
condición 2: La altura del nodo actual es igual al doble de un segundo umbral, y el modo dividido del nodo actual es una división binaria horizontal;
condición 3: El ancho del nodo actual es igual a cuatro veces un segundo umbral, y el modo dividido del nodo actual es una división ternaria vertical;
condición 4: La altura del nodo actual es igual a cuatro veces un segundo umbral, y el modo dividido del nodo actual es una división ternaria horizontal; o
condición 5: Si el ancho del nodo actual es igual al doble del segundo umbral y el modo dividido del nodo actual es una división cuádruple, el bloque de crominancia del nodo actual aún necesita dividirse.
Generalmente, el ancho del nodo actual es el ancho del bloque de luma correspondiente al nodo actual, y la altura del nodo actual es la altura del bloque de luma correspondiente al nodo actual. En una implementación específica, por ejemplo, el segundo umbral puede ser 4.
En la Realización 3, un modo de división de bloques de crominancia, un modo de análisis de información de predicción correspondiente y un modo de análisis de información residual correspondiente también pueden determinarse basándose en un modo de predicción de un nodo de luminancia. De esta manera, se logra una mayor flexibilidad. Además, cuando un modo de predicción del nodo de luminancia es intra predicción, el bloque de crominancia del nodo actual no se divide más, lo que mejora la eficiencia de codificación y decodificación de crominancia, reduciendo un rendimiento máximo de un códec y facilitando la implementación del códec.
Algunas estructuras de sintaxis a nivel de CU pueden mostrarse en la Tabla 1. Si el nodo actual no se divide más en nodos hijos, el nodo actual es una unidad de codificación, y un bloque de predicción de la unidad de codificación se analiza de acuerdo con las siguientes estructuras de sintaxis.
skip_flag es un indicador que representa un modo de omisión. Cuando un valor de skip_flag es 1, indica que se usa un modo de omisión para la CU actual; o cuando un valor de skip_flag es 0, indica que no se usa ningún modo de omisión para la CU actual.
merge_flag es un indicador que representa un modo directo. Cuando un valor de fusión de fusión es 1, indica que se usa un modo de fusión para la CU actual; o cuando un valor de fusión de fusión es 0, indica que no se usa ningún modo de fusión.
cu_pred_mode es un indicador que representa un modo de predicción de una unidad de codificación. Cuando un valor de cu_pred_mode es 1, indica que se usa un modo de intra predicción para la unidad de codificación actual; o cuando un valor de cu_pred_mode es 0, indica que se usa un modo de interpredicción común para la unidad de codificación actual.
Tabla 1
Algunos análisis de sintaxis a nivel de CU pueden mostrarse en la Tabla 2. La Tabla 2 es simplemente un ejemplo. En la Tabla 2, un significado de skip_flag es el mismo que el de skip_flag en la Tabla 1, y un significado de pred_mode_flag es el mismo que el de cu_pred_mode en la Tabla 1.
cu_skip_flag es un indicador que representa un modo de omisión. Cuando un valor de cu_skip_flag es 1, indica que se usa un modo de omisión para la CU actual; o cuando un valor de bandera de omisión es 0, indica que no se usa ningún modo de omisión para la CU actual.
merge_flag es un indicador que representa un modo directo. Cuando un valor de fusión de fusión es 1, indica que se usa un modo de fusión para la CU actual; o cuando un valor de fusión de fusión es 0, indica que no se usa ningún modo de fusión.
El indicador de modo rojo es un indicador que representa un modo de predicción de una unidad de codificación. Cuando un valor de pred_mode_flag es 1, indica que se usa un modo de intra predicción para una unidad de predicción actual; o cuando un valor de pred_mode_flag es 0, indica que se usa un modo de interpredicción común para una unidad de predicción actual. Si el valor del indicador de modo de color rojo es 1, un valor de CuPredMode [x0] [y0] es Modo de INTRA; o si el valor de pred_mode_flag es 0, un valor de CuPredMode [x0] [y0] es MODE_INTER.
Tabla 2
Un nodo con un tamaño de 8xM (o Mx8) se divide en dos nodos hijos con un tamaño de 4xM (o Mx4) en un modo de división binaria vertical (o división binaria horizontal). De manera similar, un nodo con un tamaño de 16 x M (o Mx16) se divide en cuatro nodos hijos con un tamaño de 4 x M (o Mx4) y un nodo hijo con un tamaño de 8xN (o Nx8) en un modo de división cuádruple extendido verticalmente (o división horizontal extendida horizontalmente). De manera similar, un nodo con un tamaño de 16 x M (o M*16) se divide en un modo dividido ternario vertical (o dividido ternario horizontal) para generar nodos hijos con un tamaño de dos 4xM (o Mx4) y un nodo hijo con un tamaño de 8xM (o Mx8). Para un formato de datos de YUV 4:2:0, una resolución de un componente de crominancia es 1/2 de un componente de luma. Es decir, un nodo 4xM incluye un bloque de luma 4xM y dos bloques de crominancia 2x (M/2). Para un decodificador de hardware, los costes de procesamiento de bloques pequeños (especialmente con un tamaño de 2 x 2, 2 x 4 y 2 x 8) son comparativamente altos. Sin embargo, en este modo de división, se generan bloques pequeños con un tamaño de 2 x 2, 2 x 4 y similares, lo que es desfavorable para la implementación del decodificador de hardware. Para el decodificador de hardware, la complejidad de procesamiento de los bloques pequeños es comparativamente alta, que se incorpora específicamente en los siguientes tres aspectos.
(1) Problemas en la intrapredicción: En el diseño de hardware, para mejorar una velocidad de procesamiento, los 16 píxeles generalmente se procesan simultáneamente una vez para la intrapredicción, y un bloque pequeño con un tamaño de 2 x 2, 2 x 4, 4 x 2, o similares incluye menos de 16 píxeles, lo que reduce el rendimiento de procesamiento por intrapredicción.
(2) Problemas en la codificación de coeficiente: En HEVC, la codificación de coeficientes de transformada se basa en un grupo de coeficientes (CG) que incluye 16 coeficientes, pero un bloque pequeño con un tamaño de 2 x 2, 2 x 4, 4 x 2, o similares incluye cuatro u ocho coeficientes de transformada. Como resultado, se deben añadir grupos de coeficientes que incluyen cuatro coeficientes y ocho coeficientes para soportar la codificación de coeficientes de estos bloques pequeños; en consecuencia, se aumenta la complejidad de la implementación
(3) Problemas en la interpredicción: predicción inter en un bloque pequeño aumenta un requisito comparativamente alto en un ancho de banda de datos, y también afecta a una velocidad de procesamiento de decodificación.
Cuando un nodo se divide adicionalmente en base a un modo dividido, y uno de los nodos hijos generados incluye un bloque de crominancia cuya longitud lateral es 2, un bloque de luma incluido en el nodo hijo continúa se divide aún más en este modo dividido, y un bloque de crominancia incluido en el nodo hijo no se divide más. Este modo puede evitar la generación de un bloque de crominancia cuya longitud lateral es 2, reducir un rendimiento máximo de un decodificador, y facilitar la implementación del decodificador. Además, se propone un método para determinar un modo de predicción de bloques de crominancia basándose en un modo de predicción de bloques de luma, mejorando efectivamente la eficiencia de codificación.
El método proporcionado en la presente invención puede aplicarse al códec de vídeo en la realización anterior.
Realización 4
Esta realización se refiere a un modo de división en bloque en la decodificación de vídeo. Un formato de datos de vídeo en esta realización es un formato YUV 4:2:0. Se puede usar un modo similar para los datos YUV 4:2:2.
Etapa 1: Se realiza un modo S de división de un nodo A, donde si el nodo A continúa dividiéndose, se realiza la etapa 2; o si el nodo actual no se divide adicionalmente en nodos hijos, el nodo actual corresponde a una unidad de codificación, y la información acerca de una unidad de codificación se obtiene mediante el análisis.
El modo dividido del nodo a puede ser al menos uno de una división de árbol cuádruple, una división binaria vertical, una división binaria horizontal, una división ternaria vertical y una división ternaria horizontal, o puede ser otro modo dividido. El modo dividido del nodo A no está limitado en la presente invención. La información del modo de división del nodo actual puede transmitirse en un flujo de bits, y el modo dividido del nodo actual puede obtenerse analizando un elemento de sintaxis correspondiente en el flujo de bits. El modo dividido del nodo actual puede determinarse alternativamente de acuerdo con una regla preestablecida, y no está limitado en la presente invención.
Etapa 2: Determinar si un bloque de crominancia de al menos un nodo B secundario en nodos hijos obtenidos dividiendo el nodo A basándose en el modo S dividido es un bloque pequeño (o si el ancho, la altura y/o el modo dividido del nodo A, y/o el ancho y la altura del nodo B cumplen al menos una de las condiciones). Si un bloque de crominancia de al menos un nodo B secundario en los nodos hijos obtenidos dividiendo el nodo a es un bloque pequeño, se realiza la etapa 3 a la etapa 6.
Específicamente, uno de los siguientes métodos puede usarse para determinar si un bloque de crominancia de al menos un nodo B secundario del nodo a es un subbloque:
(1) Si un bloque de crominancia de al menos un nodo B secundario del nodo a tiene un tamaño de 2 x 2, 2 x 4, o 4 x 2, el bloque de crominancia del al menos un nodo B secundario del nodo a es un bloque pequeño;
(2) si el ancho o altura de un bloque de crominancia de al menos un nodo B secundario del nodo a es 2, el bloque de crominancia del al menos un nodo B secundario del nodo a es un bloque pequeño;
(3) si el nodo a incluye 128 muestras de luma y se realiza una división del árbol ternario en el nodo a, o el nodo a incluye 64 muestras de luma y una división de árbol binario se realiza en el nodo a, un modo dividido de árbol cuádruple o un modo dividido del árbol ternario, un bloque de crominancia de al menos un nodo B secundario del nodo a es un bloque pequeño;
(4) si el nodo a incluye 256 muestras de luma y el nodo se divide en un modo dividido del árbol ternario o un modo dividido en árbol cuádruple, o el nodo a incluye 128 muestras de luma y el nodo se divide en un modo dividido del árbol binario, un bloque de crominancia de al menos un nodo B secundario del nodo a es un bloque pequeño;
(5) si el nodo A incluye N1 muestras de luma y se realiza una división de árbol ternario en el nodo A, donde N1 es 64, 128 o 256;
(6) si el nodo A incluye muestras de luma de N2 y una división de árbol cuádruple se realiza en el nodo A, donde N2 es 64 o 256; o
(7) si el nodo A incluye N3 muestras de luma y el nodo a se divide en un modo dividido de árbol binario, donde N3 es 64, 128 o 256.
Cabe señalar que, que el nodo A incluye 128 muestras de luma también pueden describirse como que un área del nodo actual es 128, o un producto de la anchura y la altura del nodo A es 128. Los detalles no se describen en la presente descripción.
Etapa 3: Reestricta que la intrapredicción o la interpredicción se realizan en todas las unidades de codificación en un área de cobertura del nodo A. Para intrapredicción e interpredicción en todas las unidades de codificación, el procesamiento paralelo en bloques pequeños puede implementarse mediante hardware, mejorando así el rendimiento de codificación y decodificación.
Uno de los siguientes métodos puede usarse para determinar realizar la intrapredicción o la interpredicción en todas las unidades de codificación en el área de cobertura del nodo A.
Método 1 La determinación se realiza en base a un indicador en una tabla de sintaxis.
Si un bloque de crominancia de al menos un nodo B secundario obtenido dividiendo el nodo a basándose en el modo S dividido es un bloque pequeño (y un bloque de crominancia del nodo a no es un bloque pequeño), un indicador cons_projo_mode_flag se analiza a partir del flujo de bits. Cuando un valor de cons_projo_mode_flag es 0, indica que la interpredicción se realiza en todas las unidades de codificación en el área de cobertura del nodo A; o cuando un valor de indicador de modo cons_pred es 1, indica que se realiza intra predicción en todas las unidades de codificación en el área de cobertura del nodo a. Cons_pred_mode_flag puede ser un elemento de sintaxis que necesita analizarse en un proceso de división de bloques. Cuando el elemento de sintaxis se analiza, cu_ppred_mode de la unidad de codificación en el área de cobertura del nodo a ya no puede analizarse, y un valor de cu_pred_mode es un valor predeterminado correspondiente al valor de cons_projo_mode_flag.
Cabe señalar que, si solo se puede usar un modo de intra predicción para los nodos hijos del nodo a, por ejemplo, el nodo a está en una imagen intra (es decir, un tipo de una imagen en la que el nodo a está ubicado es un tipo intra o un tipo I), o el nodo a está en una imagen intra y una tecnología IBC no se usa para una secuencia, un valor de cons_projo_mode_flag es 1 por defecto, y cons_pred_mode_flag no está presente en el flujo de bits. La tecnología IBC puede pertenecer a la interpredicción, o puede pertenecer a la intrapredicción.
Método 2 La determinación se realiza basándose en un modo de predicción del primer nodo en la región del nodo A.
Se analiza un modo de predicción de la primera unidad de codificación B0 (donde el modo de predicción de la primera unidad de codificación B0 no está limitado) en la región del nodo A. Si el modo de predicción de B0 es intra predicción, se realiza intra predicción en todas las unidades de codificación en el área de cobertura del nodo A; o si el modo de predicción de la B0 es interpredicción, la interpredicción se realiza en todas las unidades de codificación en el área de cobertura del nodo A.
Etapa 4: Determinar un modo de división de bloques de crominancia y un modo de división de bloques de luma del nodo A basándose en un modo de predicción usado para las unidades de codificación en el área de cobertura del nodo A.
Si se usa un modo de intra predicción para todas las unidades de codificación en el área de cobertura del nodo A, un bloque de luma del nodo A se divide en base al modo de división S, para obtener N nodos de árbol de codificación de luminancia; y un bloque de crominancia del nodo a no se divide, y corresponde a un bloque de codificación de crominancia (que es un CB de crominancia para abreviar). Los N nodos de árbol de codificación de luma pueden estar limitados a ninguna otra división, o pueden no estar limitados. Si un nodo secundario de luminancia continúa siendo dividido, un modo dividido del nodo secundario de luminancia analizado, para realizar una división recursiva. Cuando un nodo de árbol de codificación de luma no se divide más, el nodo de árbol de codificación de luma corresponde a un bloque de codificación de luma (que es un CB luma para abreviar). Un bloque de transformada de crominancia correspondiente a un CB de crominancia y el bloque de codificación de crominancia tienen un mismo tamaño, y un bloque de predicción de crominancia y el bloque de codificación de crominancia tienen el mismo tamaño.
Si se usa un modo de interpredicción para todas las unidades de codificación en el área de cobertura del nodo a, el bloque de luma y el bloque de crominancia del nodo a se dividen adicionalmente en N nodos de árbol de codificación que incluyen un bloque de luma y un bloque de crominancia en base al modo de división S, y los N nodos de árbol de codificación pueden continuar dividiéndose o pueden no dividirse, y corresponder a unidades de codificación que incluyen un bloque de luma y un bloque de crominancia.
Etapa 5: Información de predicción en sí y información residual de una CU obtenida dividiendo el nodo A.
La información de predicción incluye un modo de predicción (que indica un modo de intra predicción o un modo de predicción intra), un modo de intra predicción, un modo de interpredicción, información de movimiento y similares. La información de movimiento puede incluir información tal como una dirección de predicción (hacia adelante, hacia atrás o bidireccional), un índice de referencia y un vector de movimiento.
La información residual incluye un indicador de bloque codificado (CBF), un coeficiente de transformada, un tipo de transformada (por ejemplo, DCT-2, DST-7, DC-8) y similares. El tipo de transformada puede ser DCT-2 por defecto.
Si se limita que solo se pueda realizar intra predicción en cada cu obtenida dividiendo el nodo A, el análisis de un bloque de predicción de un CB de luminancia obtenido dividiendo el nodo A incluye: skip_flag, merge flag y cu_pred_mode se establecen respectivamente A 0, 0, y 1 (es decir, ningun skip_flag, merge_flag y cu_pred_mode están presentes en el flujo de bits), o skip_flag y cu_pred_mode se establecen respectivamente A 0 y 1 por defecto (es decir, ninguno de skip_flag y cu_pred_mode están presentes en el flujo de bits), y la información de modo de intra predicción del CB de luminancia se analiza en el flujo de bits) analizar un bloque de predicción de un CB de crominancia obtenido dividiendo el nodo A incluye: analizar un modo de intra predicción del CB de crominancia. Un método para analizar el modo de intra predicción del CB de crominancia puede ser: (1) analizar un elemento de sintaxis del flujo de bits para obtener el modo de intra predicción del CB; y (2) establecer directamente el modo de intra predicción del CB de crominancia a un modo de predicción en un conjunto de modo de intra predicción crominancia, por ejemplo, uno de un modo de modelo lineal de componente cruzado, un modo de DM (modo derivado de crominancia, DM) o un modo IBC.
Si se limita que solo se pueda realizar interpredicción en cada cu obtenida dividiendo el nodo a, el análisis de un modo de predicción de una cu obtenida dividiendo el nodo a incluye: analizar skip_flag o/y merge_flag, establecer cu_pred_mode a 0 por defecto, y obtener, a través del análisis, un bloque de predicción inter tal como un índice de fusión, una dirección de interpredicción (inter-r), un índice de referencia, un índice de predictor de vector de movimiento y una diferencia de vector de movimiento.
skip_flag es un indicador que representa un modo de omisión. Cuando un valor de skip_flag es 1, indica que se usa un modo de omisión para la CU actual; o cuando un valor de skip_flag es 0, indica que no se usa ningún modo de omisión para la CU actual. Cuando un valor de fusión de fusión es 1, indica que se usa un modo de fusión para la CU actual; o cuando un valor de merge_flag es 0, indica que no se usa ningún modo de fusión. Cuando un valor de cu_pred_mode es 1, indica que se realiza intra predicción en una unidad de predicción actual; o cuando un valor de cu_pred_mode es 0, indica que se realiza una interpredicción común en una unidad de predicción actual (información tal como una dirección de interpredicción, un índice de referencia, un índice de predictor del vector de movimiento y un componente de diferencia de vectores de movimiento se identifica en el flujo de bits).
Cabe señalar que, en esta realización, el modo de intra predicción es un modo de predicción para generar un predictor de un bloque de codificación mediante el uso de un píxel de referencia espacial de una imagen en la que el bloque de codificación está ubicado, por ejemplo, un modo de corriente continua (modo DC), un modo plano o un modo angular, o puede incluir un modo de coincidencia de plantilla y un modo IBC.
El modo de interpredicción es un modo de predicción para generar un predictor de un bloque de codificación mediante el uso de un píxel de referencia temporal en una imagen de referencia del bloque de codificación, por ejemplo, un modo de omisión, un modo de fusión, un modo AMVP (predicción avanzada del vector de movimiento) o un modo intermodo común, o un modo IBC.
Etapa 6: Descodificar cada CU para obtener una señal reconstruida de un bloque de imagen correspondiente al nodo A.
Por ejemplo, un bloque de predicción de cada CU realiza procesamiento de interpredicción o procesamiento de intra predicción en la CU, para obtener una imagen inter predicha o una imagen intra predicha de la CU. Entonces, el procesamiento de descuantificación y transformación inversa se realiza en un coeficiente de transformada basado en información residual de cada CU para obtener una imagen residual, y la imagen residual se superpone en una imagen predicha en una región correspondiente para generar una imagen reconstruida.
De acuerdo con el modo dividido en la Realización 4, no se genera ningún bloque de crominancia pequeño en el que se realiza la intrapredicción, resolviendo así los problemas en la intrapredicción de los bloques pequeños.
Realización 5
La etapa 1, etapa 2, etapa 3 y etapa 6 en esta realización son las mismas que las de la Realización 4.
Etapa 4: Determinar un modo de división de bloques de crominancia y un modo de división de bloques de luma del nodo A.
Un bloque de luma del nodo A continúa se divide en base al modo S dividido, para generar N nodos de árbol de codificación de luma. Un bloque de crominancia del nodo A no se divide más, y corresponde A un bloque de codificación de crominancia (croma CB). Un bloque de transformada de crominancia correspondiente a un CB de crominancia y el bloque de código de crominancia tienen el mismo tamaño. Nota En comparación con la realización 4, en esta realización, independientemente de si se usa un modo de interpredicción o un modo de intra predicción es limitado, el bloque de crominancia siempre no se divide, y el bloque de luma siempre se divide en base al modo S dividido independientemente de un modo de predicción para el área de cobertura del nodo A.]
Etapa 5: Analizar un bloque de predicción y información residual de una CU obtenida dividiendo el nodo A.
Si se limita que solo se puede realizar intra predicción en cada CU obtenida dividiendo el nodo A, el procesamiento es el mismo que en la Realización 4.
Si se limita que solo la interpredicción se puede realizar en cada cu obtenida dividiendo el nodo a, el análisis de un modo de predicción de un CB de luminancia obtenido dividiendo el nodo a incluye: analizar skip_flag o/y merge_flag, establecer cu_pred_mode a 0 por defecto, y obtener, a través del análisis, un bloque de interpredicción tal como un índice de fusión, una dirección de interpredicción (interr), un índice de referencia, un índice de predictor de vector de movimiento y una diferencia de vector de movimiento. La información de movimiento de cada subbloque de 4 x 4 en el CB de luminancia se deriva del bloque de interpredicción obtenido a través del análisis.
Si se limita que solo se pueda realizar interpredicción en cada CU obtenida dividiendo el nodo a, un bloque de predicción de un CB de crominancia obtenido dividiendo el nodo a no necesita analizarse, y el CB de crominancia se divide en bloques de crominancia 2 x 2 (donde un modo dividido puede ser el modo dividido S). La información de movimiento de cada subbloqueo de crominancia 2 x 2 es información de movimiento de una región de luma de 4 x 4 correspondiente al subbloque de crominancia 2 x 2.
Según el modo dividido en la Realización 5, ni un bloque de crominancia pequeño en el que se realiza intra predicción, ni se genera un bloque de transformada inferior a 16 píxeles. Por lo tanto, los problemas anteriores en la intrapredicción y la codificación de coeficientes se resuelven en la Realización 5.
Realización 6
Etapa 1, etapa 2, etapa 3, etapa 4 y etapa 6 en esta realización son las mismas que las de la Realización 5.
Etapa 5: Analizar un bloque de predicción y información residual de una CU obtenida dividiendo el nodo A.
Si se limita que solo se puede realizar intra predicción en cada CU obtenida dividiendo el nodo A, el procesamiento es el mismo que en la Realización 5.
Si se limita que solo se pueda realizar interpredicción en cada CU obtenida dividiendo el nodo A, el análisis de un bloque de predicción de un CB de luminancia obtenido dividiendo el nodo A es el mismo que en la Realización 5.
Si se limita que solo se pueda realizar interpredicción en cada CU obtenida dividiendo el nodo a, un bloque de predicción de un CB de crominancia obtenido dividiendo el nodo a no necesita analizarse, un bloque de predicción de crominancia y un bloque de codificación de crominancia tienen el mismo tamaño, y la información de movimiento del CB de crominancia es información de movimiento para una posición preestablecida específica en una región de luma correspondiente al CB de crominancia (por ejemplo, el centro, la esquina inferior derecha o la esquina superior izquierda de la región de luma).
De acuerdo con el modo dividido en la Realización 6, ninguno de un bloque de crominancia pequeño en el que se realiza la intrapredicción, un bloque de transformación de un bloque pequeño y un bloque de crominancia pequeño en el que se genera interpredicción.
Realización 7
Etapa 1: La etapa 1 es la misma que la etapa 1 en la Realización 4.
Etapa 2: Determinar si un bloque de luma de al menos un bloque B secundario en nodos hijos obtenidos dividiendo el nodo a basándose en el modo S dividido es un bloque de luma de 4 x 4 (si el ancho, la altura y/o el modo dividido del nodo a, y/o el ancho y la altura de un nodo B cumplen al menos una de las condiciones en el caso 1).
Si un tamaño (es decir, el ancho y la altura) del nodo A y/o el modo dividido S cumplen/cumple al menos una de las condiciones en el caso 1, se limita que la intrapredicción se realiza en todas las unidades de codificación en un área de cobertura del nodo A; de lo contrario, se determina si un bloque de crominancia de al menos un nodo B secundario en nodos hijos obtenidos dividiendo el nodo Aen el modo S dividido es un bloque pequeño (si un tamaño y/o el modo S dividido del nodo a, y/o la anchura y la altura de un nodo B cumplen al menos una de las condiciones en el caso 2), si es así, se realizan la etapa 3 a la etapa 6.
Específicamente, hay los siguientes dos casos para un método para determinar que un bloque de crominancia de al menos un nodo B secundario del nodo a es un bloque pequeño.
Caso 1
Si una o más de las siguientes condiciones preestablecidas son verdaderas, el nodo a se divide en base al modo dividido S para obtener un bloque de luma 4 x 4:
(1) el nodo A incluye M1 píxeles, y el modo dividido del nodo a es un árbol de árbol cuádruple. Por ejemplo, M1 es 64;
(2) El nodo A incluye píxeles M2, y el modo dividido del nodo a es una división del árbol ternario. Por ejemplo, M2 es 64;
(3) el nodo A incluye M3 píxeles, y el modo dividido del nodo a es un árbol binario dividido. Por ejemplo, M3 es 32;
(4) el ancho del nodo a es igual a cuatro veces un segundo umbral, la altura del nodo a es igual al segundo umbral, y el modo dividido del nodo a es un árbol ternario vertical;
(5) el ancho del nodo a es igual a un segundo umbral, la altura del nodo a es igual a cuatro veces el segundo umbral, y el modo dividido del nodo a es un árbol ternario horizontal;
(6) el ancho del nodo a es igual al doble de un segundo umbral, la altura del nodo a es igual al segundo umbral, y el modo dividido del nodo actual es una división binaria vertical;
(7) la altura del nodo a es igual al doble de un segundo umbral, el ancho del nodo a es igual al segundo umbral, y el modo dividido del nodo actual es una división binaria horizontal; o
(8) el ancho or/y la altura del nodo a son/es el doble de un segundo umbral, y el modo dividido del nodo a es un árbol de árbol cuádruple.
El tamaño puede ser el ancho y la altura de una región de imagen correspondiente al nodo A, o una cantidad de muestras de luma incluidas en una región de imagen correspondiente al nodo A, o un área de una región de imagen correspondiente al nodo A.
Generalmente, el ancho del nodo actual es el ancho del bloque de luma correspondiente al nodo actual, y la altura del nodo actual es la altura del bloque de luma correspondiente al nodo actual. En una implementación específica, por ejemplo, el segundo umbral puede ser 4.
Caso 2:
(1) un bloque de crominancia de al menos un nodo B secundario del nodo a tiene un tamaño de 2 x 4 o 4 x 2; (2) el ancho o la altura de un bloque de crominancia de al menos un nodo B secundario del nodo A es 2;
(3) el nodo A incluye 128 muestras de luma y se realiza una división de árbol ternario en el nodo A, o el nodo A incluye 64 muestras de luma y una división de árbol binario, una división de árbol cuádruple o una división de árbol ternaria se realiza en el nodo A;
(4) el nodo a incluye 256 muestras de luma y una división de árbol ternario o una división de árbol cuádruple se realiza en el nodo, o el nodo a incluye 128 muestras de luma y una división de árbol binaria se realiza en el nodo; (5) el nodo A incluye N1 muestras de luma y una división del árbol ternario se realiza en el nodo A, donde N1 es 64, 128 o 256;
(6) el nodo A incluye muestras de luma de N2 y una división de árbol cuádruple se realiza en el nodo A, donde N2 es 64 o 256; o
(7) El nodo A incluye N3 muestras de luma y una división de árbol binario se realiza en el nodo A, donde N3 es 64, 128 o 256.
Cabe señalar que, que el nodo A incluye 128 muestras de luma también pueden describirse como que un área del nodo actual es 128, o un producto de la anchura y la altura del nodo A es 128. Los detalles no se describen en la presente descripción.
Etapa 3: La etapa 3 es la misma que la etapa 3 en la Realización 4.
Etapa 4: Determinar un modo de división de bloques de crominancia y un modo de división de bloques de luma del nodo A basándose en un modo de predicción usado para las unidades de codificación en el área de cobertura del nodo A.
Si se usa un modo de interpredicción para todas las unidades de codificación en el área de cobertura del nodo A, un bloque de luma y un bloque de crominancia del nodo A se dividen en base al modo dividido S, para obtener nodos hijos del nodo A y/o nodos hijos en el área de cobertura del nodo A. Si un bloque de luma 4 x 4 se genera basándose en un modo dividido de un nodo hijo del nodo A y/o un nodo hijo en el área de cobertura del nodo A, el modo dividido del nodo hijo no se permite o el nodo hijo no puede continuar dividiéndose. Por ejemplo, si el nodo a tiene un tamaño de 8 x 8 y dos de 8 x 4 (o dos 4 x 8) nodos se generan dividiendo el nodo a en un modo de árbol binario horizontal (o un modo de división binaria vertical), el nodo 8 x 4 (o 4 x 8) continúa dividiéndose en un bloque 4 x 4; en este caso, el nodo 8 x 4 (o 4 x 8) no puede continuar dividiéndose.
Si se usa un modo de intrapredicción para todas las unidades de codificación en el área de cobertura del nodo A, los métodos en las realizaciones 4, 5 y 6 pueden usarse como métodos de implementación, y los detalles no se describen en la presente descripción nuevamente. Por ejemplo, el bloque de luma del nodo A se divide, y el bloque de crominancia del nodo A no se divide.
Etapa 5: Analizar un bloque de predicción y información residual de una CU obtenida dividiendo el nodo A.
Esta etapa es similar a la etapa 4, y no se describen detalles en la presente memoria de nuevo.
Etapa 6: Descodificar cada CU para obtener una señal reconstruida de un bloque de imagen correspondiente al nodo A.
El paso 6 puede implementarse de una manera de la etapa 6 en la Realización 4, y no se describe adicionalmente en el presente documento.
Realización 8
Etapa 1: La etapa 1 es la misma que la etapa 1 en la Realización 4.
Etapa 2: Determinar si un bloque de luma de al menos un bloque B secundario en nodos hijos obtenidos dividiendo el nodo a basándose en el modo S dividido es un bloque de luma de 4 x 4 (si el ancho, la altura y/o el modo dividido del nodo a, y/o el ancho y la altura de un nodo B cumplen al menos una de las condiciones en el caso 1). Si un tamaño (es decir, el ancho y la altura) del nodo A y/o el modo dividido S cumplen/cumple al menos una de las condiciones en el caso 1, se limita que la intrapredicción se realiza en todas las unidades de codificación en un área de cobertura del nodo A; o se determina si un bloque de crominancia de al menos un nodo B secundario en nodos hijos obtenidos dividiendo el nodo A basándose en el modo S dividido es un bloque pequeño (o si un tamaño y/o el modo S dividido del nodo A, y/o el ancho y la altura del nodo B cumplen al menos una de las condiciones en el caso 2, la etapa 3 A la etapa 6 se realizan.
Específicamente, hay los siguientes dos casos para un método para determinar que un bloque de crominancia de al menos un nodo B secundario del nodo a es un bloque pequeño.
Caso 1:
Si una o más de las siguientes condiciones preestablecidas son verdaderas, el nodo a se divide en base al modo dividido S para obtener un bloque de luma 4 x 4:
(1) el nodo A incluye M1 píxeles, y el modo dividido del nodo a es un árbol de árbol cuádruple. Por ejemplo, M1 es 64;
(2) El nodo A incluye píxeles M2, y el modo dividido del nodo a es una división del árbol ternario. Por ejemplo, M2 es 128;
(3) el nodo A incluye M3 píxeles, y el modo dividido del nodo a es un árbol binario dividido. Por ejemplo, M3 es 32;
(4) el ancho del nodo a es igual a cuatro veces un segundo umbral, la altura del nodo a es igual al segundo umbral, y el modo dividido del nodo a es un árbol ternario vertical;
(5) el ancho del nodo a es igual a un segundo umbral, la altura del nodo a es igual a cuatro veces el segundo umbral, y el modo dividido del nodo a es un árbol ternario horizontal;
(6) el ancho del nodo a es igual al doble de un segundo umbral, la altura del nodo a es igual al segundo umbral, y el modo dividido del nodo actual es una división binaria vertical;
(7) la altura del nodo a es igual al doble de un segundo umbral, el ancho del nodo a es igual al segundo umbral, y el modo dividido del nodo actual es una división binaria horizontal; o
(8) el ancho or/y la altura del nodo a son/es el doble de un segundo umbral, y el modo dividido del nodo a es un árbol de árbol cuádruple.
El tamaño puede ser el ancho y la altura de una región de imagen correspondiente al nodo A, o una cantidad de muestras de luma incluidas en una región de imagen correspondiente al nodo A, o un área de una región de imagen correspondiente al nodo A.
Generalmente, el ancho del nodo actual es el ancho del bloque de luma correspondiente al nodo actual, y la altura del nodo actual es la altura del bloque de luma correspondiente al nodo actual. En una implementación específica, por ejemplo, el segundo umbral puede ser 4.
Caso 2:
(1) un bloque de crominancia de al menos un nodo B secundario del nodo a tiene un tamaño de 2 x 4 o 4 x 2; (2) el ancho o la altura de un bloque de crominancia de al menos un nodo B secundario del nodo A es 2;
(3) el nodo A incluye 128 muestras de luma y se realiza una división de árbol ternario en el nodo A, o el nodo A incluye 64 muestras de luma y una división de árbol binario, una división de árbol cuádruple o una división de árbol ternaria se realiza en el nodo A;
(4) el nodo a incluye 256 muestras de luma y una división de árbol ternario o una división de árbol cuádruple se realiza en el nodo, o el nodo a incluye 128 muestras de luma y una división de árbol binaria se realiza en el nodo; (5) el nodo A incluye N1 muestras de luma y una división del árbol ternario se realiza en el nodo A, donde N1 es 64, 128 o 256;
(6) el nodo A incluye muestras de luma de N2 y una división de árbol cuádruple se realiza en el nodo A, donde N2 es 64 o 256; o
(7) El nodo A incluye N3 muestras de luma y una división de árbol binario se realiza en el nodo A, donde N3 es 64, 128 o 256.
Cabe señalar que, que el nodo A incluye 128 muestras de luma también pueden describirse como que un área del nodo actual es 128, o un producto de la anchura y la altura del nodo A es 128. Los detalles no se describen en la presente descripción.
Etapa 3: La etapa 3 es la misma que la etapa 3 en la Realización 4.
Etapa 4: Determinar un modo de división de bloques de crominancia y un modo de división de bloques de luma del nodo A basándose en un modo de predicción usado para las unidades de codificación en el área de cobertura del nodo A.
Si se usa un modo de interpredicción para todas las unidades de codificación en el área de cobertura del nodo A, un bloque de luma y un bloque de crominancia del nodo A se dividen en base al modo dividido S, para obtener nodos hijos del nodo A y/o nodos hijos en el área de cobertura del nodo A. Si un bloque de luma 4 x 4 se genera basándose en un modo dividido de un nodo hijo del nodo A y/o un nodo hijo en el área de cobertura del nodo A, el modo dividido del nodo hijo no se permite o el nodo hijo no puede continuar dividiéndose. Por ejemplo, si el nodo a tiene un tamaño de 8 x 8 y dos de 8 x 4 (o dos 4 x 8) nodos se generan dividiendo el nodo a en un modo de árbol binario horizontal (o un modo de división binaria vertical), el nodo 8 x 4 (o 4 x 8) continúa dividiéndose en un bloque 4 x 4; en este caso, el nodo 8 x 4 (o 4 x 8) no puede continuar dividiéndose.
Si se usa un modo de intrapredicción para todas las unidades de codificación en el área de cobertura del nodo A, los métodos en las realizaciones 4, 5 y 6 pueden usarse como métodos de implementación, y los detalles no se describen en la presente descripción nuevamente. Por ejemplo, el bloque de luma del nodo A se divide, y el bloque de crominancia del nodo A no se divide.
Etapa 5: Analizar un bloque de predicción y información residual de una CU obtenida dividiendo el nodo A.
Esta etapa es similar a la etapa 4, y no se describen detalles en la presente memoria de nuevo.
Etapa 6: Descodificar cada CU para obtener una señal reconstruida de un bloque de imagen correspondiente al nodo A.
El paso 6 puede implementarse de una manera de la etapa 6 en la Realización 4, y no se describe adicionalmente en el presente documento.
Realización 9
Si una región actual se divide una vez para generar un bloque de luma de 4 x 4 (por ejemplo, 64 muestras de luma se dividen en un modo QT, o 128 muestras de luma se dividen en un modo TT), se limita que solo se puede usar un intra modo para la región actual por defecto; de lo contrario, se transfiere un indicador para indicar que solo se puede usar un modo inter o solo un modo intra para el área actual.
Si se limita que solo se puede usar un modo inter para la región actual, luma y croma se dividen conjuntamente. Si un nodo en la región actual se divide para generar un bloque de luma 4 x 4, no se permite esta división. Por ejemplo, si el nodo actual es 8 x 8 y se divide en un modo HBT (o un VBT) para generar dos nodos 8 x 4. Si estos nodos continúan siendo divididos para generar 4 x 4 CU, estos nodos 8 x 4 no pueden continuar dividiéndose.
Si se limita que solo se puede usar un modo intra para la región, esta implementación es la misma que la implementación original (la luma se divide, pero la croma no se divide).
Esta realización de la presente invención proporciona un método de división de bloques, para evitar que se use un modo de intra predicción para un bloque de crominancia con un área comparativamente pequeña, y facilitar el procesamiento de tuberías del hardware y la implementación de un decodificador. Además, en la interpredicción, pueden omitirse los procesos de los elementos sintácticos de análisis para algunos modos de predicción, reduciendo así la complejidad de codificación.
De esta manera, se resuelven los problemas en la codificación de coeficientes y se reduce la complejidad de codificación.
El método de división de bloques puede ser el siguiente:
Se analiza un modo dividido de un nodo A.
Se determina si un bloque de crominancia de al menos un nodo B secundario se obtiene como un bloque pequeño después de que el nodo a se divide en base al modo S dividido (se determina si el ancho, la altura y/o el modo dividido del nodo a, y/o el ancho y la altura de un nodo B cumplen al menos una de las condiciones anteriores)
Si se determina que un bloque de crominancia de al menos un nodo B secundario se obtiene como un bloque pequeño después de que el nodo A se divide en base al modo S dividido, se usa un modo de intra predicción o un modo de interpredicción para todas las unidades de codificación en un área de cobertura del nodo A.
Se determina si continuar dividir un bloque de crominancia y un bloque de luma del nodo A.
Si la intrapredicción se realiza en todas las unidades de codificación en el área de cobertura del nodo A, el bloque de luma del nodo A continúa se divide en base al modo dividido S, y el bloque de crominancia del nodo A no se divide más. Si la interpredicción se realiza en todas las unidades de codificación en el área de cobertura del nodo a, el bloque de luma y el bloque de crominancia del nodo a continúan siendo divididos en base al modo dividido S en N nodos de árbol de codificación que incluyen un bloque de luma y un bloque de crominancia.
El bloque de luma del nodo A continúa se divide en base al modo dividido S, y el bloque de crominancia del nodo A no se divide más. Un bloque de transformada de crominancia y un bloque de codificación de crominancia tienen el mismo tamaño.
Cuando se realiza intra predicción en todas las unidades de codificación en el área de cobertura del nodo a, un bloque de predicción de crominancia y el bloque de codificación de crominancia tienen un mismo tamaño; o cuando se realiza la interpredicción en todas las unidades de codificación en el área de cobertura del nodo a, un bloque de predicción de crominancia se divide en subbloques (donde los subbloques son menores que el bloque de codificación de crominancia), y un vector de movimiento de cada subbloque es un vector de movimiento en una región de luma correspondiente al subbloque.
El bloque de luma del nodo A se divide adicionalmente en base al modo dividido S. El bloque de crominancia del nodo A no se divide más. Un bloque de transformada de crominancia correspondiente al bloque de codificación de crominancia y un bloque de codificación de crominancia tienen el mismo tamaño, el bloque de predicción de crominancia y el bloque de codificación de crominancia tienen el mismo tamaño, y la información de movimiento del CB de crominancia es información de movimiento para una posición preestablecida específica en una región de luma correspondiente al CB de crominancia.
Por ejemplo, se entiende que una descripción en relación con un método descrito también puede ser válida para un dispositivo o sistema correspondiente configurado para realizar el método y viceversa. Por ejemplo, si se describen una o más etapas específicas del método, un dispositivo correspondiente puede incluir una o más unidades tales como unidades funcionales, para realizar la una o más etapas del método descritas (por ejemplo, una unidad que realiza la una o más etapas; o una pluralidad de unidades, cada una de las cuales realiza una o más de la pluralidad de etapas), incluso si dicha una o más unidades no se describen o ilustran explícitamente en los dibujos adjuntos. Por otro lado, por ejemplo, si se describe un aparato específico basado en una o una pluralidad de unidades, por ejemplo, unidades funcionales, un método correspondiente puede incluir una etapa para realizar la funcionalidad de una o varias unidades (p. ej., una etapa que realiza la funcionalidad de una o varias unidades, o una pluralidad de etapas, cada una de las cuales realiza la funcionalidad de una o más de la pluralidad de unidades), incluso si una o varias etapas no se describen o ilustran explícitamente en las figuras. Además, se entiende que las características de las diversas realizaciones y/o aspectos ilustrativos descritos en la presente memoria pueden combinarse entre sí, a menos que se indique específicamente lo contrario.
En uno o más ejemplos, las funciones descritas pueden implementarse mediante hardware, software, firmware o cualquier combinación de los mismos. Si se implementan en software, las funciones pueden almacenarse en o transmitirse a través de una o más instrucciones o código en un medio legible por ordenador y ejecutarse mediante una unidad de procesamiento basada en hardware. Los medios legibles por ordenador pueden incluir medios de almacenamiento legibles por ordenador, que corresponden a un medio tangible tal como medios de almacenamiento de datos, o medios de comunicación que incluyen cualquier medio que facilite la transferencia de un programa informático de un lugar a otro, por ejemplo, de acuerdo con un protocolo de comunicación. De esta manera, el medio legible por ordenador generalmente puede corresponder a (1) medios de almacenamiento legibles por ordenador tangibles no transitorios o (2) un medio de comunicación tal como una señal o onda portadora. El medio de almacenamiento de datos puede ser cualquier medio disponible al que pueda accederse por uno o más ordenadores o uno o más procesadores para recuperar instrucciones, código y/o estructuras de datos para la implementación de las tecnologías descritas en la presente invención. Un producto de programa informático puede incluir un medio legible por ordenador.
Lo siguiente proporciona un ejemplo, pero no impone ninguna limitación: El medio legible por ordenador puede incluir una RAM, una ROM, una EEPROM, un CD-ROM u otro almacenamiento de disco óptico, un medio de almacenamiento de disco, otro dispositivo de almacenamiento magnético, o cualquier otro medio que pueda transportar o almacenar el código de programa esperado en forma de una(s) instrucción(es) o una estructura de datos y al que puede acceder un ordenador. Además, cualquier conexión puede definirse adecuadamente como un medio legible por ordenador. Por ejemplo, si el software se transmite desde un sitio web, un servidor u otra fuente remota mediante el uso de un cable coaxial, un cable/fibra óptica, un par trenzado, una línea de abonado digital (DSL) o tecnologías inalámbricas tales como rayos infrarrojos, ondas de radio y microondas, cable coaxial, fibra óptica/cable, par trenzado, DSL o tecnologías inalámbricas tales como los rayos infrarrojos, las ondas de radio y microondas están incluidos en las definiciones de medios al que pertenecen. Sin embargo, debe entenderse que el medio de almacenamiento legible por ordenador y el medio de almacenamiento de datos no incluyen una conexión, una onda portadora, una señal u otro medio transitorio, pero en realidad se dirigen a medios de almacenamiento tangibles no transitorios. Como se usa en esta memoria descriptiva, un disco y un disco óptico incluyen un disco compacto (CD), un disco láser, un disco óptico, un disco versátil digital (DVD), un disco blando y un disco Blu-ray. El disco generalmente reproduce datos magnéticamente, mientras que el disco óptico reproduce los datos ópticamente con un láser. Una combinación de lo anterior también debe incluirse dentro del alcance de los medios legibles por ordenador.
Las instrucciones pueden ser ejecutadas por uno o más procesadores, tales como uno o más procesadores de señales digitales (DSP), microprocesadores de propósito general, circuitos integrados de aplicación específica (ASIC), matrices lógicas programables en campo (FPGA) u otros circuitos lógicos integrados o discretos equivalentes. Por lo tanto, el término “ procesador” usado en esta memoria descriptiva puede representar cualquiera de las estructuras anteriores u otra estructura que sea aplicable para implementar las tecnologías descritas en esta memoria descriptiva. Además, en algunos aspectos, la funcionalidad descrita en esta memoria descriptiva 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 tecnologías pueden implementarse en uno o más circuitos o elementos lógicos.
Las tecnologías de esta descripción pueden implementarse en una amplia variedad de dispositivos o aparatos, que incluyen un auricular inalámbrico, un circuito integrado (IC) o un conjunto de IC (por ejemplo, un conjunto de chip). Varios componentes, módulos o unidades se describen en esta descripción para enfatizar aspectos funcionales de dispositivos configurados para realizar las tecnologías descritas, pero no necesariamente requieren lograr un logro por diferentes unidades de hardware. Exactamente, como se ha descrito anteriormente, las unidades pueden combinarse en una unidad de hardware de códec o proporcionarse por una colección de unidades de hardware interoperativas que incluyen uno o más procesadores como se describió anteriormente, junto con software y/o firmware apropiados.

Claims (8)

REIVINDICACIONES
1. Un procedimiento de partición de imágenes para su uso en la codificación de vídeo, que comprende:
determinar (902) un modo dividido de un nodo actual, en donde el nodo actual comprende un bloque de luminancia y un bloque de crominancia, en donde el nodo actual es un nodo en un árbol de codificación;
determinar (904), basándose en el modo dividido del nodo actual y un tamaño del nodo actual, que el bloque de crominancia del nodo actual no se divide adicional; y
dividir (906) el bloque de luma del nodo actual en base al modo dividido del nodo actual;
en donde la determinación, basada en el modo dividido del nodo actual y del tamaño del nodo actual, que el bloque de crominancia del nodo actual no se divide adicionalmente comprende: cuando un ancho del nodo actual es igual a cuatro veces un umbral y el modo dividido del nodo actual es una división ternaria vertical, el bloque de crominancia del nodo actual no se divide más, en donde el umbral es 4.
2. El procedimiento según la reivindicación 1, en donde la determinación de que el bloque de crominancia del nodo actual no se divide adicionalmente comprende: cuando se determina, basándose en el modo dividido del nodo actual y el tamaño del nodo actual, que un nodo hijo generado dividiendo el nodo actual comprende un bloque de crominancia cuya longitud lateral es menor que el umbral, el bloque de crominancia del nodo actual no se divide más.
3. El procedimiento según una cualquiera de las reivindicaciones 1 a 2, en donde el bloque de luminancia del nodo actual se divide en base al modo dividido del nodo actual, para obtener nodos hijos del nodo actual, en el que cada nodo hijo comprende solo un bloque de luma.
4. El procedimiento según una cualquiera de las reivindicaciones 1 a 3, en donde, cuando se determina, basándose en el modo dividido del nodo actual y el tamaño del nodo actual, que el nodo hijo generado dividiendo el nodo actual comprende el bloque de crominancia cuya anchura es menor que el umbral, el bloque de crominancia del nodo actual no se divide más.
5. El procedimiento según una cualquiera de las reivindicaciones 1 a 3, en donde, cuando se determina, basándose en el modo dividido del nodo actual y el tamaño del nodo actual, que el nodo hijo generado dividiendo el nodo actual comprende un bloque de crominancia cuya cantidad de muestra de crominancia es menor que 16, el bloque de crominancia del nodo actual no se divide más.
6. El procedimiento según una cualquiera de las reivindicaciones 1 a 5, en donde el modo dividido del nodo actual comprende al menos uno de una división cuádruple, QT, una división binaria horizontal, BT horizontal, una división ternaria horizontal, TT horizontal, una división binaria vertical, BT, y una TT vertical dividida vertical.
7. El procedimiento según una cualquiera de las reivindicaciones 1 a 6, en donde el formato de datos del nodo actual es YUV 4:2:0 o YUV42.
8. Un aparato (500) de codificación de flujo de vídeo, que comprende un procesador (502) y una memoria (514), en donde la memoria (514) almacena una instrucción, y la instrucción permite que el procesador (502) realice el método según una cualquiera de las reivindicaciones 1 a 7, en donde el aparato de codificación es un aparato de decodificación o un aparato de codificación.
ES19855934T 2018-08-28 2019-08-28 Método y dispositivo de partición de imagen Active ES2966509T3 (es)

Applications Claiming Priority (8)

Application Number Priority Date Filing Date Title
CN201810990466 2018-08-28
CN201811116761 2018-09-25
CN201910173454 2019-03-07
CN201910183731 2019-03-11
CN201910191131.5A CN110868590B (zh) 2018-08-28 2019-03-13 图像划分方法及装置
CN201910219440 2019-03-21
CN201910696741.0A CN111669583A (zh) 2019-03-07 2019-07-30 图像预测方法、装置、设备、系统及存储介质
PCT/CN2019/103094 WO2020043136A1 (zh) 2018-08-28 2019-08-28 图像划分方法及装置

Publications (1)

Publication Number Publication Date
ES2966509T3 true ES2966509T3 (es) 2024-04-22

Family

ID=74865503

Family Applications (1)

Application Number Title Priority Date Filing Date
ES19855934T Active ES2966509T3 (es) 2018-08-28 2019-08-28 Método y dispositivo de partición de imagen

Country Status (16)

Country Link
US (3) US11323708B2 (es)
EP (1) EP3836542B1 (es)
JP (2) JP7204891B2 (es)
KR (2) KR102631517B1 (es)
AU (2) AU2019333452B2 (es)
BR (1) BR112021003269A2 (es)
CA (1) CA3110477C (es)
CL (1) CL2021000494A1 (es)
ES (1) ES2966509T3 (es)
HU (1) HUE064218T2 (es)
IL (1) IL281144A (es)
MX (1) MX2021002396A (es)
NZ (1) NZ773632A (es)
PH (1) PH12021550378A1 (es)
PT (1) PT3836542T (es)
ZA (1) ZA202101354B (es)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20210050572A (ko) * 2018-09-21 2021-05-07 캐논 가부시끼가이샤 비디오 샘플들의 블록들의 트리를 인코딩 및 디코딩하기 위한 방법, 장치 및 시스템
EP4005215A4 (en) * 2019-08-15 2022-10-26 Beijing Dajia Internet Information Technology Co., Ltd. LOW CHROMINANCE BLOCK SIZE RESTRICTION IN VIDEO CODING

Family Cites Families (44)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101039427B (zh) 2002-07-15 2010-06-16 株式会社日立制作所 动态图像的解码方法
CN100525454C (zh) 2004-09-14 2009-08-05 华为技术有限公司 帧间预测模式的选择方法
JP4921239B2 (ja) 2007-05-09 2012-04-25 キヤノン株式会社 画像処理装置およびその方法
CN101394565B (zh) 2008-10-20 2011-08-17 成都九洲电子信息系统有限责任公司 一种帧内预测方法
KR101712156B1 (ko) 2010-12-06 2017-03-06 에스케이 텔레콤주식회사 임의의 형태의 블록을 이용한 인터예측에 의한 영상의 부호화/복호화 방법 및 장치
US9848197B2 (en) * 2011-03-10 2017-12-19 Qualcomm Incorporated Transforms in video coding
DK2763414T3 (da) 2011-09-29 2020-11-30 Sharp Kk Billedafkodningsindretning og fremgangsmåde til billedafkodning til udførelse af konvertering af bi-forudsigelse til uni-forudsigelse
JP2013077899A (ja) * 2011-09-29 2013-04-25 Jvc Kenwood Corp 画像復号装置、画像復号方法及び画像復号プログラム
US9807401B2 (en) 2011-11-01 2017-10-31 Qualcomm Incorporated Transform unit partitioning for chroma components in video coding
US9462275B2 (en) 2012-01-30 2016-10-04 Qualcomm Incorporated Residual quad tree (RQT) coding for video coding
US9674533B2 (en) 2013-04-05 2017-06-06 Qualcomm Incorporated Picture alignments in multi-layer video coding
CN103237216B (zh) 2013-04-12 2017-09-12 华为技术有限公司 深度图像的编解码方法和编解码装置
BR112016010796B1 (pt) 2013-11-14 2023-11-28 Hfi Innovation Inc. Método de sinalização de modo de codificação referência a pedidos de patente correlatos
KR101737861B1 (ko) 2014-01-20 2017-05-19 한국전자통신연구원 변환 깊이 기반 dct 사이즈 결정 장치 및 방법
US20150373327A1 (en) * 2014-06-20 2015-12-24 Qualcomm Incorporated Block adaptive color-space conversion coding
US10623747B2 (en) 2014-06-20 2020-04-14 Hfi Innovation Inc. Method of palette predictor signaling for video coding
CN104202602B (zh) 2014-08-18 2018-03-02 三星电子(中国)研发中心 执行视频编码的装置及方法
WO2016074147A1 (en) 2014-11-11 2016-05-19 Mediatek Singapore Pte. Ltd. Separated coding tree for luma and chroma
US10306240B2 (en) * 2015-06-08 2019-05-28 Vid Scale, Inc. Intra block copy mode for screen content coding
WO2016203981A1 (ja) 2015-06-16 2016-12-22 シャープ株式会社 画像復号装置及び画像符号化装置
US10602138B2 (en) * 2015-08-27 2020-03-24 Lg Electronics Inc. Method and device for chroma sample intra prediction in video coding system
US10212444B2 (en) 2016-01-15 2019-02-19 Qualcomm Incorporated Multi-type-tree framework for video coding
US10623774B2 (en) 2016-03-22 2020-04-14 Qualcomm Incorporated Constrained block-level optimization and signaling for video coding tools
US11102495B2 (en) 2016-05-17 2021-08-24 Qualcomm Incorporated Methods and systems for generating and processing content color volume messages for video
WO2017206803A1 (en) * 2016-05-28 2017-12-07 Mediatek Inc. Method and apparatus of current picture referencing for video coding
CN116828178A (zh) 2016-06-24 2023-09-29 世宗大学校产学协力团 视频信号解码和编码方法、比特流的传输方法
WO2018037853A1 (ja) * 2016-08-26 2018-03-01 シャープ株式会社 画像復号装置及び画像符号化装置
US10721468B2 (en) 2016-09-12 2020-07-21 Nec Corporation Intra-prediction mode determination method, intra-prediction mode determination device, and storage medium for storing intra-prediction mode determination program
CN109923866B (zh) 2016-11-08 2023-07-21 株式会社Kt 视频解码方法、编码方法
CN114513665B (zh) 2017-01-31 2023-10-27 夏普株式会社 基于平面预测模式导出帧内预测数据的系统和方法
EP3577898A4 (en) 2017-01-31 2020-06-24 Sharp Kabushiki Kaisha SYSTEMS AND METHODS FOR PARTITIONING A VIDEO BLOCK IMAGE FOR VIDEO CODING
US10820017B2 (en) 2017-03-15 2020-10-27 Mediatek Inc. Method and apparatus of video coding
CN108668136A (zh) 2017-03-28 2018-10-16 华为技术有限公司 图像编/解码方法、视频编/解码器及视频编解码系统
CN109151477B (zh) 2017-06-28 2020-08-07 华为技术有限公司 一种图像数据的编码、解码方法及装置
CN109151468B (zh) 2017-06-28 2020-12-08 华为技术有限公司 一种图像数据的编码、解码方法及装置
EP3732880A4 (en) 2017-12-29 2021-04-28 Sharp Kabushiki Kaisha SYSTEMS AND METHODS FOR PARTITIONING VIDEO BLOCKS TO ONE FRAME LIMIT FOR VIDEO ENCODING
US10687071B2 (en) 2018-02-05 2020-06-16 Tencent America LLC Method and apparatus for video coding
US11012715B2 (en) 2018-02-08 2021-05-18 Qualcomm Incorporated Intra block copy for video coding
US11190790B2 (en) 2018-04-01 2021-11-30 Lg Electronics Inc. Parallel processing method for color component of video signal, and device therefor
WO2019210857A1 (en) * 2018-04-30 2019-11-07 Mediatek Inc. Method and apparatus of syntax interleaving for separate coding tree in video coding
TWI725456B (zh) * 2018-06-21 2021-04-21 大陸商北京字節跳動網絡技術有限公司 交錯區塊的自動劃分
WO2020035022A1 (en) 2018-08-17 2020-02-20 Mediatek Inc. Method and apparatus of simplified merge candidate list for video coding
WO2020056757A1 (en) 2018-09-21 2020-03-26 Alibaba Group Holding Limited Method, apparatus, and computer-readable storage medium for block partitioning tree separation under separation node
KR20210050572A (ko) 2018-09-21 2021-05-07 캐논 가부시끼가이샤 비디오 샘플들의 블록들의 트리를 인코딩 및 디코딩하기 위한 방법, 장치 및 시스템

Also Published As

Publication number Publication date
US20210185316A1 (en) 2021-06-17
US20220329795A1 (en) 2022-10-13
CL2021000494A1 (es) 2021-07-02
IL281144A (en) 2021-04-29
US11758134B2 (en) 2023-09-12
KR20210046723A (ko) 2021-04-28
US20230370597A1 (en) 2023-11-16
JP2021536689A (ja) 2021-12-27
PH12021550378A1 (en) 2021-11-29
JP2023038229A (ja) 2023-03-16
ZA202101354B (en) 2022-07-27
CA3110477A1 (en) 2020-03-05
HUE064218T2 (hu) 2024-02-28
BR112021003269A2 (pt) 2021-05-18
KR102631517B1 (ko) 2024-01-30
KR20240017109A (ko) 2024-02-06
CA3110477C (en) 2024-04-23
EP3836542B1 (en) 2023-10-11
PT3836542T (pt) 2023-12-15
US11323708B2 (en) 2022-05-03
EP3836542A1 (en) 2021-06-16
AU2019333452A1 (en) 2021-03-18
NZ773632A (en) 2022-10-28
AU2023229600A1 (en) 2023-10-05
EP3836542A4 (en) 2021-10-06
AU2019333452B2 (en) 2023-06-15
MX2021002396A (es) 2021-05-12
JP7204891B2 (ja) 2023-01-16

Similar Documents

Publication Publication Date Title
ES2946909T3 (es) Método, aparato y producto de programa informático para interpredicción
CN111107356B (zh) 图像预测方法及装置
CN115243039B (zh) 一种视频图像预测方法及装置
KR102616713B1 (ko) 이미지 예측 방법, 장치 및 시스템, 디바이스 및 저장 매체
CN111327904B (zh) 图像重建方法和装置
BR112021013163A2 (pt) Método e aparelho de predição de bloco de croma
BR112021001813A2 (pt) método de processamento de vídeo, aparelho de processamento de vídeo, codificador, decodificador, mídia e programa de computador
US20220094947A1 (en) Method for constructing mpm list, method for obtaining intra prediction mode of chroma block, and apparatus
CN111416981B (zh) 视频图像解码、编码方法及装置
US20230370597A1 (en) Picture partitioning method and apparatus
BR112021010896A2 (pt) Método e aparelho de codificação e decodificação de imagem de vídeo
BR112021013644A2 (pt) Codificador, decodificador e métodos correspondentes de adaptação de filtro de deblocagem
CN116567207A (zh) 用于帧内预测的方法和装置
BR112021003946A2 (pt) codificador de vídeo, decodificador de vídeo e métodos correspondentes
CN110868590A (zh) 图像划分方法及装置
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
BR112021009099A2 (pt) codificador de vídeo, decodificador de vídeo e métodos de codificação ou decodificação de uma imagem
AU2020205376B2 (en) Image prediction method, device, apparatus and system and storage medium