ES2982593T3 - Método de codificación de imágenes basado en una transformada y dispositivo para el mismo - Google Patents

Método de codificación de imágenes basado en una transformada y dispositivo para el mismo Download PDF

Info

Publication number
ES2982593T3
ES2982593T3 ES20864403T ES20864403T ES2982593T3 ES 2982593 T3 ES2982593 T3 ES 2982593T3 ES 20864403 T ES20864403 T ES 20864403T ES 20864403 T ES20864403 T ES 20864403T ES 2982593 T3 ES2982593 T3 ES 2982593T3
Authority
ES
Spain
Prior art keywords
transform
block
lfnst
current block
matrix
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
ES20864403T
Other languages
English (en)
Inventor
Moonmo Koo
Jaehyun Lim
Seunghwan Kim
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.)
LG Electronics Inc
Original Assignee
LG Electronics Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by LG Electronics Inc filed Critical LG Electronics Inc
Application granted granted Critical
Publication of ES2982593T3 publication Critical patent/ES2982593T3/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/12Selection from among a plurality of transforms or standards, e.g. selection between discrete cosine transform [DCT] and sub-band transform or selection between H.263 and H.264
    • H04N19/122Selection of transform size, e.g. 8x8 or 2x4x8 DCT; Selection of sub-band transforms of varying structure or type
    • 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/124Quantisation
    • 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/129Scanning of coding units, e.g. zig-zag scan of transform coefficients or flexible macroblock ordering [FMO]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/132Sampling, masking or truncation of coding units, e.g. adaptive resampling, frame skipping, frame interpolation or high-frequency transform coefficient masking
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • H04N19/137Motion inside a coding unit, e.g. average field, frame or block difference
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/157Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/167Position within a video image, e.g. region of interest [ROI]
    • 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/18Methods 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 set of transform coefficients
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • 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)
  • Physics & Mathematics (AREA)
  • Discrete Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Compression Of Band Width Or Redundancy In Fax (AREA)

Abstract

Un método de decodificación de imágenes según el presente documento puede comprender un paso de derivación de un coeficiente de transformación modificado, en donde el paso de derivación del coeficiente de transformación modificado comprende los pasos de: derivar una primera variable que indica si el coeficiente de transformación existe en un área que excluye una ubicación de CC del bloque actual; analizar un índice LFNST sobre la base del resultado de la derivación; y derivar el coeficiente de transformación modificado sobre la base del índice LFNST y una matriz LFNST, y sobre la base del hecho de que el bloque actual está dividido en una pluralidad de bloques de subpartición, el índice LFNST se puede analizar sin derivar la primera variable. (Traducción automática con Google Translate, sin valor legal)

Description

DESCRIPCIÓN
Método de codificación de imágenes basado en una transformada y dispositivo para el mismo
Antecedentes de la descripción
Campo de la descripción
La presente descripción se refiere a una técnica de codificación de imágenes y, más particularmente, a un método y a un aparato para codificar una imagen basándose en una transformada en un sistema de codificación de imágenes.
Técnica relacionada
Actualmente, la demanda de imágenes/vídeos de alta resolución y alta calidad como, por ejemplo, imágenes/vídeos de 4K, 8K o más de definición ultraalta (UHD, por sus siglas en inglés), ha ido aumentando en diversos campos. A medida que los datos de imagen/vídeo se vuelven de mayor resolución y mayor calidad, la cantidad de información transmitida o cantidad de bits aumenta en comparación con los datos de imagen convencionales. Por lo tanto, cuando los datos de imagen se transmiten usando un medio como, por ejemplo, una línea de banda ancha cableada/inalámbrica convencional o los datos de imagen/vídeo se almacenan usando un medio de almacenamiento existente, el coste de transmisión y el coste de almacenamiento de los mismos se incrementan.
Además, actualmente, el interés y la demanda de medios inmersivos como, por ejemplo, realidad virtual (VR, por sus siglas en inglés), contenido de realidad artificial (AR, por sus siglas en inglés) u holograma, o similares, están aumentando, y está aumentando la difusión de imágenes/vídeos que tienen características de imagen diferentes de las de imágenes reales como, por ejemplo, una imagen de juego.
Por consiguiente, existe la necesidad de una técnica de compresión de imagen/vídeo altamente eficiente para comprimir y transmitir o almacenar de manera efectiva, y reproducir información de imágenes/vídeos de alta resolución y alta calidad que tienen diversas características como se describió anteriormente. Los documentos titulados"Versatile Video Coding (Draft6)", de BROSS B Y OTROS (n.° JVET-O2001, XP030293941),"Algorithm description for Versatile Video Coding and Test Model 6 (VTM6)", de JIANLE CHEN Y OTROS (n.° JVET-O2002-v2, XP030293946) y"Non-CE6: Simplified LFNST signalling"de JUNG (WILUSGROUP) J Y OTROS, (n.° JVET-O0472, XP030219672) se sometieron a este fin en15. JVET MEETING(el equipo de exploración de vídeo conjunto de ISO/IEC JTC1/SC29/WG11 e ITU-T SG.16).
Compendio
La invención se define en las reivindicaciones anexas. En la presente descripción y dibujos, cualquier ejemplo y descripción técnica de aparatos, productos y/o métodos que no están cubiertos por las reivindicaciones deben tomarse como antecedente de la técnica anterior o ejemplos útiles para entender la invención.
Según la presente descripción, es posible aumentar la eficiencia de compresión de imagen/vídeo general.
Según la presente descripción, es posible aumentar la eficiencia en la codificación de índice de transformada.
Los efectos que pueden obtenerse a través de ejemplos específicos de la presente memoria descriptiva no se limitan a los efectos enumerados anteriormente. Por ejemplo, pueden existir diversos efectos técnicos que una persona con experiencia ordinaria en la técnica relacionada puede entender o derivar de la presente memoria descriptiva. Por consiguiente, los efectos específicos de la presente memoria descriptiva no se limitan a los descritos explícitamente en la presente memoria descriptiva, y pueden incluir diversos efectos que pueden entenderse o derivarse de las características técnicas de la presente memoria descriptiva.
Breve descripción de los dibujos
La Figura 1 ilustra esquemáticamente un ejemplo de un sistema de codificación de vídeo/imagen al que es aplicable la presente descripción.
La Figura 2 es un diagrama que ilustra esquemáticamente una configuración de un aparato de codificación de vídeo/imagen al que es aplicable la presente descripción.
La Figura 3 es un diagrama que ilustra esquemáticamente una configuración de un aparato de decodificación de vídeo/imagen al que es aplicable la presente descripción.
La Figura 4 ilustra esquemáticamente un esquema de transformada múltiple según una realización del presente documento.
La Figura 5 muestra a modo de ejemplo modos intradireccionales de 65 direcciones de predicción.
La Figura 6 es un diagrama para explicar la RST según una realización de la presente.
La Figura 7 es un diagrama que ilustra una secuencia de disposición de datos de salida de una transformación primaria directa en un vector unidimensional según un ejemplo.
La Figura 8 es un diagrama que ilustra una secuencia de disposición de datos de salida de una transformada cuadrática directa en un bloque bidimensional según un ejemplo.
La Figura 9 es un diagrama que ilustra modos de intrapredicción de ángulo amplio según una realización del presente documento.
La Figura 10 es un diagrama que ilustra una forma de bloque a la que se aplica LFNST.
La Figura 11 es un diagrama que ilustra una disposición de datos de salida de una LFNST directa según una realización.
La Figura 12 es un diagrama que ilustra que el número de datos de salida para una LFNST directa está limitado a un máximo de 16 según un ejemplo.
La Figura 13 es un diagrama que ilustra la salida a cero en un bloque al que se aplica LFNST 4x4 según un ejemplo.
La Figura 14 es un diagrama que ilustra la salida a cero en un bloque al que se aplica LFNST 8x8 según un ejemplo.
La Figura 15 es un diagrama que ilustra la salida a cero en un bloque al que se aplica LFNST 8x8 según otro ejemplo.
La Figura 16 es un diagrama que ilustra un ejemplo de un subbloque en el que se divide un bloque de codificación. La Figura 17 es un diagrama que ilustra otro ejemplo de un subbloque en el que se divide un bloque de codificación.
La Figura 18 es un diagrama que ilustra la simetría entre un bloque Mx2 (Mx1) y un bloque 2xM (1xM) según una realización.
La Figura 19 es un diagrama que ilustra un ejemplo de transposición de un bloque de 2xM según una realización. La Figura 20 ilustra un orden de escaneo para regiones 8x2 o 2x8 según una realización.
La Figura 21 es un diagrama de flujo que ilustra un método de decodificación de una imagen según una realización.
La Figura 22 es un diagrama de flujo que ilustra un método de codificación de una imagen según una realización. La Figura 23 es un diagrama que ilustra una estructura de un sistema de transmisión continua de contenido al que se aplica este documento.
Descripción de realizaciones a modo de ejemplo
Aunque la presente descripción puede ser susceptible de diversas modificaciones e incluir diversas realizaciones, las realizaciones específicas de la misma se han mostrado en los dibujos a modo de ejemplo y se describirán ahora en detalle. Sin embargo, esto no pretende limitar la presente descripción a las realizaciones específicas descritas en la presente memoria. La terminología usada en la presente memoria tiene el propósito de describir realizaciones específicas solamente, y no pretende limitar la idea técnica de la presente descripción. Las formas singulares pueden incluir las formas plurales a menos que el contexto indique claramente lo contrario. Los términos como, por ejemplo, "incluir" y "tener" pretenden indicar que existen características, números, etapas, operaciones, elementos, componentes o combinaciones de los mismos usados en la siguiente descripción, y por lo tanto no debe entenderse como que se excluye por adelantado la posibilidad de existencia o adición de una o más características, números, etapas, operaciones, elementos, componentes o combinaciones de los mismos diferentes.
Mientras tanto, cada componente en los dibujos descritos en la presente memoria se ilustra independientemente en aras de la descripción en cuanto a funciones características diferentes entre sí, y sin embargo, no significa que cada componente se realice mediante un hardware o software separado. Por ejemplo, dos o más cualesquiera de estos componentes pueden combinarse para formar un único componente, y cualquier único componente puede dividirse en múltiples componentes. Las realizaciones en las que los componentes se combinan y/o dividen pertenecerán al alcance del derecho de patente de la presente descripción siempre que no se aparten de la esencia de la presente descripción.
En lo sucesivo, las realizaciones preferidas de la presente descripción se explicarán con más detalle con referencia a los dibujos anexos. Además, se usan los mismos signos de referencia para los mismos componentes en los dibujos, y se omitirán descripciones repetidas para los mismos componentes.
Este documento se refiere a la codificación de vídeo/imagen. Por ejemplo, el método/ejemplo descrito en este documento puede referirse a un estándar VVC (codificación de vídeo versátil, VVC, por sus siglas en inglés) (ITU-T Rec. H.266), un estándar de codificación de vídeo/imagen de próxima generación después de VVC, u otros estándares relacionados con la codificación de vídeo (p. ej., el estándar HEVC (codificación de vídeo de alta eficiencia, HEVC, por sus siglas en inglés) (ITU-T Rec. H.265), el estándar EVC (codificación de vídeo esencial, (EVC, por sus siglas en inglés), el estándar AVS2, etc.).
En este documento, se puede proveer una variedad de realizaciones relacionadas con la codificación de vídeo/imagen y, a menos que se especifique lo contrario, las realizaciones se pueden combinar entre sí y se pueden llevar a cabo.
En este documento, un vídeo puede significar un conjunto de una serie de imágenes a lo largo del tiempo. Generalmente, una imagen significa una unidad que representa una imagen en una zona horaria específica, y un segmento/mosaico es una unidad que constituye una parte de la imagen. El segmento/mosaico puede incluir una o más unidades de árbol de codificación (CTU, por sus siglas en inglés). Una imagen puede estar constituida por uno o más segmentos/mosaicos. Una imagen puede estar constituida por uno o más grupos de mosaicos. Un grupo de mosaicos puede incluir uno o más mosaicos.
Un píxel o un pel puede significar la unidad más pequeña que constituye una imagen. Además, 'muestra' puede usarse como un término correspondiente a un píxel. Una muestra puede representar generalmente un píxel o un valor de un píxel, y puede representar solo un valor de píxel/píxel de un componente luma o solo un valor de píxel/píxel de un componente croma. De manera alternativa, la muestra puede referirse a un valor de píxel en el dominio espacial, o cuando este valor de píxel se convierte al dominio de frecuencia, puede referirse a un coeficiente de transformada en el dominio de la frecuencia.
Una unidad puede representar la unidad básica del procesamiento de imágenes. La unidad puede incluir al menos una de una región específica e información relacionada con la región. Una unidad puede incluir un bloque de luma y dos bloques de croma (p. ej., cb, cr). La unidad y un término como, por ejemplo, un bloque, un área o similar pueden usarse en lugar de entre sí según las circunstancias. En un caso general, un bloque M x N puede incluir un conjunto (o una matriz) de muestras (o matrices de muestras) o coeficientes de transformada que consisten en M columnas y N filas.
En este documento, los términos V y "," deben interpretarse como unos que indican "y/o". Por ejemplo, la expresión "A/B" puede significar "A y/o B". Además, "A, B" puede significar "A y/o B". Además, "A/B/C" puede significar "al menos uno de A, B y/o C". Asimismo, "A/B/C" puede significar "al menos uno de A, B y/o C".
Además, en el documento, el término "o" debe interpretarse como uno que indica "y/o". Por ejemplo, la expresión "A o B" puede incluir 1) solo A, 2) solo B y/o 3) tanto A como B. En otras palabras, el término "o" en este documento debe interpretarse como uno que indica "adicional o alternativamente".
En la presente descripción, "al menos uno de A y B" puede significar "solo A", "solo B" o "tanto A como B". Además, en la presente descripción, la expresión "al menos uno de A o B" o "al menos uno de A y/o B" puede interpretarse como "al menos uno de A y B".
Además, en la presente descripción, "al menos uno de A, B y C" puede significar "solo A", "solo B", "solo C" o "cualquier combinación de A, B y C". Además, "al menos uno de A, B o C" o "al menos uno de A, B y/o C" puede significar "al menos uno de A, B y C".
Además, un paréntesis usado en la presente descripción puede significar "por ejemplo". Específicamente, cuando se indica como "predicción (intrapredicción)", puede significar que "intrapredicción" se propone como un ejemplo de "predicción". En otras palabras, la "predicción" de la presente descripción no se limita a "intrapredicción", y la "intrapredicción" puede proponerse como un ejemplo de "predicción". Además, cuando se indica como "predicción (es decir, intrapredicción)", también puede significar que se propone "intrapredicción" como un ejemplo de "predicción".
Las características técnicas descritas individualmente en una figura en la presente descripción pueden implementarse individualmente o pueden implementarse simultáneamente.
La Figura 1 ilustra esquemáticamente un ejemplo de un sistema de codificación de vídeo/imagen al que es aplicable la presente descripción.
Con referencia a la Figura 1, el sistema de codificación de vídeo/imagen puede incluir un primer dispositivo (dispositivo de origen) y un segundo dispositivo (dispositivo de recepción). El dispositivo de origen puede entregar información o datos de vídeo/imagen codificados en forma de un archivo o transmisión al dispositivo de recepción a través de un medio o red de almacenamiento digital.
El dispositivo de origen puede incluir una fuente de vídeo, un aparato de codificación y un transmisor. El dispositivo de recepción puede incluir un receptor, un aparato de decodificación y un renderizador. El aparato de codificación puede denominarse aparato de codificación de vídeo/imagen, y el aparato de decodificación puede denominarse aparato de decodificación de vídeo/imagen. El transmisor puede incluirse en el aparato de codificación. El receptor puede estar incluido en el aparato de decodificación. El renderizador puede incluir una pantalla, y la pantalla puede configurarse como un dispositivo separado o un componente externo.
La fuente de vídeo puede obtener un vídeo/imagen a través de un proceso de captura, sintetizado o generación de un vídeo/imagen. La fuente de vídeo puede incluir un dispositivo de captura de vídeo/imagen y/o un dispositivo generador de vídeo/imagen. El dispositivo de captura de video/imagen puede incluir, por ejemplo, una o más cámaras, archivos de video/imagen que incluyen video/imágenes capturadas previamente, o similares. El dispositivo generador de vídeo/imagen puede incluir, por ejemplo, un ordenador, una tableta y un teléfono inteligente, y puede generar (electrónicamente) un vídeo/imagen. Por ejemplo, se puede generar un vídeo/imagen virtual a través de un ordenador o similar. En este caso, el proceso de captura de video/imagen puede ser sustituido por un proceso de generación de datos relacionados.
El aparato de codificación puede codificar un vídeo/imagen de entrada. El aparato de codificación puede llevar a cabo una serie de procedimientos como, por ejemplo, predicción, transformación y cuantificación para la eficiencia de compresión y codificación. Los datos codificados (información de vídeo/imagen codificada) pueden emitirse en forma de un flujo de bits.
El transmisor puede transmitir la información de vídeo/imagen codificada o la salida de datos en forma de un flujo de bits al receptor del dispositivo receptor a través de un medio de almacenamiento digital o una red en forma de un archivo o flujo continuo. El medio de almacenamiento digital puede incluir diversos medios de almacenamiento como, por ejemplo, USB, SD, CD, DVD, Blu-ray, HDD, SSD y similares. El transmisor puede incluir un elemento para generar un archivo multimedia a través de un formato de archivo predeterminado, y puede incluir un elemento para la transmisión a través de una red de difusión/comunicación. El receptor puede recibir/extraer el flujo de bits y transmitir el flujo de bits recibido/extraído al aparato de decodificación.
El aparato de decodificación puede decodificar un vídeo/imagen llevando a cabo una serie de procedimientos como, por ejemplo, descuantificación, transformada inversa, predicción y similares correspondientes al funcionamiento del aparato de codificación.
El renderizador puede renderizar el vídeo/imagen decodificado. El vídeo/imagen renderizada puede mostrarse a través de la pantalla.
La Figura 2 es un diagrama que ilustra esquemáticamente una configuración de un aparato de codificación de vídeo/imagen al que es aplicable la presente descripción. En lo sucesivo, lo que se denomina aparato de codificación de vídeo puede incluir un aparato de codificación de imágenes.
Con referencia a la Figura 2, el aparato 200 de codificación puede incluir un particionador 210 de imágenes, un predictor 220, un procesador 230 residual, un codificador 240 de entropía, un sumador 250, un filtro 260 y una memoria 270. El predictor 220 puede incluir un interpredictor 221 y un intrapredictor 222. El procesador 230 residual puede incluir un transformador 232, un cuantificador 233, un descuantificador 234, un transformador 235 inverso. El procesador 230 residual puede incluir además un restador 231. El sumador 250 puede denominarse reconstructor o generador de bloques reconstruidos. El particionador 210 de imágenes, el predictor 220, el procesador 230 residual, el codificador 240 de entropía, el sumador 250 y el filtro 260, que se han descrito anteriormente, pueden estar constituidos por uno o más componentes de hardware (p. ej., conjuntos de chips de codificador o procesadores) según una realización. Además, la memoria 270 puede incluir una memoria intermedia de imágenes decodificadas (DPB, por sus siglas en inglés) y puede estar constituida por un medio de almacenamiento digital. El componente de hardware puede incluir además la memoria 270 como un componente interno/externo.
El particionador 210 de imágenes puede particionar una imagen de entrada (o una imagen o un fotograma) introducida en el aparato 200 de codificación en una o más unidades de procesamiento. Como ejemplo, la unidad de procesamiento puede denominarse unidad de codificación (CU, por sus siglas en inglés). En este caso, comenzando con una unidad de árbol de codificación (CTU) o la unidad de codificación más grande (LCU, por sus siglas en inglés), la unidad de codificación puede particionarse recursivamente según la estructura de árbol ternario de árbol binario de árbol cuaternario (QBTTT, por sus siglas en inglés). Por ejemplo, una unidad de codificación puede dividirse en múltiples unidades de codificación de una profundidad más profunda basándose en la estructura de árbol cuaternario, la estructura de árbol binario y/o la estructura ternaria. En este caso, por ejemplo, la estructura de árbol cuaternario puede aplicarse primero y la estructura de árbol binario y/o la estructura ternaria pueden aplicarse más tarde. Alternativamente, la estructura de árbol binario puede aplicarse primero. El procedimiento de codificación según la presente descripción puede llevarse a cabo basándose en la unidad de codificación final que no se particiona adicionalmente. En este caso, la unidad de codificación máxima puede usarse directamente como una unidad de codificación final basándose en la eficiencia de codificación según la característica de imagen. Alternativamente, la unidad de codificación puede particionarse recursivamente en unidades de codificación de una profundidad más profunda según sea necesario, de modo que la unidad de codificación de un tamaño óptimo puede utilizarse como una unidad de codificación final. En este caso, el procedimiento de codificación puede incluir procedimientos como, por ejemplo, predicción, transformación y reconstrucción, los cuales se describirán más adelante. Como otro ejemplo, la unidad de procesamiento puede incluir además una unidad de predicción (PU, por sus siglas en inglés) o una unidad de transformación (TU, por sus siglas en inglés). En este caso, la unidad de predicción y la unidad de transformación pueden dividirse o particionarse de la unidad de codificación final descrita anteriormente. La unidad de predicción puede ser una unidad de predicción de muestras, y la unidad de transformación puede ser una unidad para derivar un coeficiente de transformación y/o una unidad para derivar una señal residual a partir de un coeficiente de transformación.
La unidad y un término como, por ejemplo, un bloque, un área o similar, pueden usarse en lugar de entre sí según las circunstancias. En un caso general, un bloque M x N puede representar un conjunto de muestras o coeficientes de transformación que consisten en M columnas y N filas. La muestra puede representar generalmente un píxel o un valor de un píxel, y puede representar solo un valor de píxel/píxel de un componente luma, o solo un valor de píxel/píxel de un componente croma. La muestra puede usarse como un término correspondiente a un píxel o un pel de una imagen.
El restador 231 resta una señal de predicción (bloque predicho, matriz de muestras de predicción) emitida desde el predictor 220 de una señal de imagen de entrada (bloque original, matriz de muestras originales) para generar una señal residual (bloque residual, matriz de muestras residuales), y la señal residual generada se transmite al transformador 232. El predictor 220 puede llevar a cabo la predicción en un bloque objetivo de procesamiento (en lo sucesivo, denominado "bloque actual"), y puede generar un bloque predicho que incluye muestras de predicción para el bloque actual. El predictor 220 puede determinar si se aplica intrapredicción o interpredicción en un bloque actual o en una base de CU. Como se describe más adelante en la descripción de cada modo de predicción, el predictor puede generar diversa información relacionada con la predicción como, por ejemplo, información del modo de predicción, y transmitir la información generada al codificador 240 de entropía. La información sobre la predicción puede codificarse en el codificador 240 de entropía y emitirse en forma de un flujo de bits.
El intrapredictor 222 puede predecir el bloque actual haciendo referencia a muestras en la imagen actual. Las muestras a las que se hace referencia pueden estar ubicadas en el vecino de o aparte del bloque actual según el modo de predicción. En la intrapredicción, los modos de predicción pueden incluir múltiples modos no direccionales y múltiples modos direccionales. Los modos no direccionales pueden incluir, por ejemplo, un modo de DC y un modo plano. El modo direccional puede incluir, por ejemplo, 33 modos de predicción direccional o 65 modos de predicción direccional según el grado de detalle de la dirección de predicción. Sin embargo, esto es meramente un ejemplo, y pueden usarse más o menos modos de predicción direccional dependiendo de la configuración. El intrapredictor 222 puede determinar el modo de predicción aplicado al bloque actual usando el modo de predicción aplicado al bloque vecino.
El interpredictor 221 puede derivar un bloque predicho para el bloque actual basándose en un bloque de referencia (matriz de muestras de referencia) especificado por un vector de movimiento en una imagen de referencia. En este momento, para reducir la cantidad de información de movimiento transmitida en el modo de interpredicción, la información de movimiento puede predecirse en base a un bloque, subbloque o muestra basándose en la correlación de información de movimiento entre el bloque vecino y el bloque actual. La información de movimiento puede incluir un vector de movimiento y un índice de imagen de referencia. La información de movimiento puede incluir además información de dirección de interpredicción (predicción L0, predicción L1, predicción Bi, etc.). En el caso de la interpredicción, el bloque vecino puede incluir un bloque vecino espacial existente en la imagen actual y un bloque vecino temporal existente en la imagen de referencia. La imagen de referencia que incluye el bloque de referencia y la imagen de referencia que incluye el bloque vecino temporal pueden ser iguales entre sí o diferentes entre sí. El bloque vecino temporal puede denominarse bloque de referencia coubicado, una CU coubicada (colCU, por sus siglas en inglés) y similares, y la imagen de referencia que incluye el bloque vecino temporal puede denominarse imagen coubicada (colPic, por sus siglas en inglés). Por ejemplo, el interpredictor 221 puede configurar una lista de candidatos de información de movimiento basándose en bloques vecinos y generar información que indica qué candidato se usa para derivar un vector de movimiento y/o un índice de imagen de referencia del bloque actual. La interpredicción puede llevarse a cabo basándose en diversos modos de predicción. Por ejemplo, en el caso de un modo de salto y un modo de fusión, el interpredictor 221 puede usar información de movimiento del bloque vecino como información de movimiento del bloque actual. En el modo de salto, a diferencia del modo de fusión, la señal residual puede no transmitirse. En el caso del modo de predicción de información de movimiento (predicción de vector de movimiento, MVP, por sus siglas en inglés), el vector de movimiento del bloque vecino puede usarse como un predictor de vector de movimiento y el vector de movimiento del bloque actual puede indicarse señalando una diferencia de vector de movimiento.
El predictor 220 puede generar una señal de predicción basándose en diversos métodos de predicción. Por ejemplo, el predictor puede aplicar intrapredicción o interpredicción para la predicción en un bloque y, además, puede aplicar intrapredicción e interpredicción al mismo tiempo. Esto puede denominarse interpredicción e intrapredicción combinada (CIIP, por sus siglas en inglés). Además, el predictor puede basarse en un modo de predicción de copia intrabloque (IBC, por sus siglas en inglés), o un modo de paleta para llevar a cabo la predicción en un bloque. El modo de predicción de IBC o el modo de paleta pueden usarse para la codificación de imagen/vídeo de contenido de un juego o similar como, por ejemplo, la codificación de contenido de pantalla (SCC, por sus siglas en inglés). Aunque la IBC lleva a cabo básicamente la predicción en un bloque actual, puede llevarse a cabo de manera similar a la interpredicción porque deriva un bloque de referencia en un bloque actual. Es decir, la IBC puede usar al menos una de las técnicas de interpredicción descritas en la presente descripción.
La señal de predicción generada a través del interpredictor 221 y/o del intrapredictor 222 puede usarse para generar una señal reconstruida o para generar una señal residual. El transformador 232 puede generar coeficientes de transformada aplicando una técnica de transformada a la señal residual. Por ejemplo, la técnica de transformada puede incluir al menos una de una transformada de coseno discreta (DCT, por sus siglas en inglés), una transformada de seno discreta (DST, por sus siglas en inglés), una transformada de Karhunen-Loéve (KLT, por sus siglas en inglés), una transformada basada en gráficos (GBT, por sus siglas en inglés) o una transformada condicionalmente no lineal (CNT, por sus siglas en inglés). En este caso, la GBT significa transformada obtenida de un gráfico cuando la información de relación entre píxeles se representa por el gráfico. La CNT se refiere a la transformada obtenida en base a una señal de predicción generada usando todos los píxeles reconstruidos previamente. Además, el proceso de transformación puede aplicarse a bloques de píxeles cuadrados que tienen el mismo tamaño o puede aplicarse a bloques que tienen un tamaño variable en lugar de uno cuadrado.
El cuantificador 233 puede cuantificar los coeficientes de transformada y transmitirlos al codificador 240 de entropía, y el codificador 240 de entropía puede codificar la señal cuantificada (información sobre los coeficientes de transformada cuantificados) y emitir la señal codificada en un flujo de bits. La información sobre los coeficientes de transformada cuantificados puede denominarse información residual. El cuantificador 233 puede reorganizar los coeficientes de transformada cuantificados tipo bloque en una forma de vector unidimensional basándose en un orden de escaneo de coeficientes, y generar información sobre los coeficientes de transformada cuantificados basándose en los coeficientes de transformada cuantificados de la forma de vector unidimensional. El codificador 240 de entropía puede llevar a cabo diversos métodos de codificación como, por ejemplo, Golomb exponencial, codificación de longitud variable adaptativa al contexto (CAVLC, por sus siglas en inglés), codificación aritmética binaria adaptativa al contexto (CABAC, por sus siglas en inglés) y similares. El codificador 240 de entropía puede codificar la información necesaria para la reconstrucción de vídeo/imagen distinta de los coeficientes de transformada cuantificados (p. ej., valores de elementos sintácticos, etc.) juntos o por separado. La información codificada (p. ej., información de vídeo/imagen codificada) puede transmitirse o almacenarse en una base unitaria de una capa de abstracción de red (NAL, por sus siglas en inglés) en forma de un flujo de bits. La información de vídeo/imagen puede incluir además información sobre diversos conjuntos de parámetros como, por ejemplo, un conjunto de parámetros de adaptación (APS, por sus siglas en inglés), un conjunto de parámetros de imagen (PPS, por sus siglas en inglés), un conjunto de parámetros de secuencia (SPS, por sus siglas en inglés), un conjunto de parámetros de vídeo (VPS, por sus siglas en inglés) o similares. Además, la información de vídeo/imagen puede incluir además información de restricción general. En la presente descripción, la información y/o los elementos sintácticos que se transmiten/señalizan al aparato de decodificación desde el aparato de codificación pueden incluirse en la información de vídeo/imagen. La información de vídeo/imagen puede codificarse a través del procedimiento de codificación descrito anteriormente e incluirse en el flujo de bits. El flujo de bits puede transmitirse a través de una red, o almacenarse en un medio de almacenamiento digital. En este caso, la red puede incluir una red de difusión, una red de comunicación y/o similares, y el medio de almacenamiento digital puede incluir diversos medios de almacenamiento como, por ejemplo, USB, SD, CD, DVD, Blu-ray, HDD, SSD y similares. Un transmisor (no se muestra) que transmite una señal emitida desde el codificador 240 de entropía y/o un almacenamiento (no se muestra) que la almacena puede configurarse como un elemento interno/externo del aparato 200 de codificación, o el transmisor puede incluirse en el codificador 240 de entropía.
Los coeficientes de transformada cuantificados emitidos desde el cuantificador 233 pueden usarse para generar una señal de predicción. Por ejemplo, mediante aplicación de descuantificación y transformada inversa a coeficientes de transformada cuantificados a través del descuantificador 234 y el transformador 235 inverso, puede reconstruirse la señal residual (bloque residual o muestras residuales). El sumador 155 suma la señal residual reconstruida a una señal de predicción emitida desde el interpredictor 221 o el intrapredictor 222, de modo que puede generarse una señal reconstruida (imagen reconstruida, bloque reconstruido, matriz de muestras reconstruidas). Cuando no hay ningún residual para un bloque objetivo de procesamiento como en un caso en el que se aplica el modo de salto, el bloque predicho puede usarse como un bloque reconstruido. El sumador 250 puede denominarse reconstructor o generador de bloques reconstruidos. La señal reconstruida generada puede usarse para la intrapredicción de un siguiente bloque objetivo de procesamiento en el bloque actual, y como se describe más adelante, puede usarse para la interpredicción de una siguiente imagen a través del filtrado.
Mientras tanto, en el proceso de codificación y/o reconstrucción de imágenes, puede aplicarse mapeo de luma con escalado de croma (LMCS, por sus siglas en inglés).
El filtro 260 puede mejorar la calidad de video subjetiva/objetiva aplicando el filtrado a la señal reconstruida. Por ejemplo, el filtro 260 puede generar una imagen reconstruida modificada aplicando diversos métodos de filtrado a la imagen reconstruida, y puede almacenar la imagen reconstruida modificada en la memoria 270, específicamente en la DPB de la memoria 270. Los diversos métodos de filtrado pueden incluir, por ejemplo, filtrado de desbloqueo, desplazamiento adaptativo de muestra, un filtro de bucle adaptativo, un filtro bilateral o similares. Como se describe más adelante en la descripción de cada método de filtrado, el filtro 260 puede generar diversa información relacionada con el filtrado, y transmitir la información generada al codificador 240 de entropía. La información sobre el filtrado puede codificarse en el codificador 240 de entropía y emitirse en forma de un flujo de bits.
La imagen reconstruida modificada que se ha transmitido a la memoria 270 puede usarse como una imagen de referencia en el interpredictor 221. A través de esto, el aparato de codificación puede evitar el desajuste de predicción en el aparato 100 de codificación y un aparato de decodificación cuando se aplica la interpredicción, y también puede mejorar la eficiencia de codificación.
La DPB de la memoria 270 puede almacenar la imagen reconstruida modificada para usarla como una imagen de referencia en el interpredictor 221. La memoria 270 puede almacenar información de movimiento de un bloque en la imagen actual, a partir del cual se ha derivado (o codificado) información de movimiento y/o información de movimiento de bloques en una imagen ya reconstruida. La información de movimiento almacenada puede transmitirse al interpredictor 221 para utilizarse como información de movimiento de un bloque vecino o información de movimiento de un bloque vecino temporal. La memoria 270 puede almacenar muestras reconstruidas de bloques reconstruidos en la imagen actual, y transmitirlas al intrapredictor 222.
La Figura 3 es un diagrama que ilustra esquemáticamente una configuración de un aparato de decodificación de vídeo/imagen al que es aplicable la presente descripción.
Con referencia a la Figura 3, el aparato 300 de decodificación de vídeo puede incluir un decodificador 310 de entropía, un procesador 320 residual, un predictor 330, un sumador 340, un filtro 350 y una memoria 360. El predictor 330 puede incluir un interpredictor 331 y un intrapredictor 332. El procesador 320 residual puede incluir un descuantificador 321 y un transformador 321 inverso. El decodificador 310 de entropía, el procesador 320 residual, el predictor 330, el sumador 340 y el filtro 350, que se han descrito anteriormente, pueden estar constituidos por uno o más componentes de hardware (p. ej., conjuntos de chips o procesadores de decodificador) según una realización. Además, la memoria 360 puede incluir una memoria intermedia de imágenes decodificadas (DPB) y puede estar constituida por un medio de almacenamiento digital. El componente de hardware puede incluir además la memoria 360 como un componente interno/externo.
Cuando se introduce un flujo de bits que incluye información de vídeo/imagen, el aparato 300 de decodificación puede reconstruir una imagen correspondientemente a un proceso mediante el cual se ha procesado información de vídeo/imagen en el aparato de codificación de la Figura 2. Por ejemplo, el aparato 300 de decodificación puede derivar unidades/bloques basándose en información relacionada con la partición de bloques obtenida a partir del flujo de bits. El aparato 300 de decodificación puede llevar a cabo la decodificación usando una unidad de procesamiento aplicada en el aparato de codificación. Por lo tanto, la unidad de procesamiento de decodificación puede ser, por ejemplo, una unidad de codificación, que puede particionarse a lo largo de la estructura de árbol cuaternario, la estructura de árbol binario y/o la estructura de árbol ternario a partir de una unidad de árbol de codificación o una unidad de codificación más grande. Una o más unidades de transformada pueden derivarse de la unidad de codificación. Y, la señal de imagen reconstruida decodificada y emitida a través del aparato 300 de decodificación puede reproducirse a través de un reproductor.
El aparato 300 de decodificación puede recibir una señal emitida desde el aparato de codificación de la Figura 2 en forma de un flujo de bits, y la señal recibida puede decodificarse a través del decodificador 310 de entropía. Por ejemplo, el decodificador 310 de entropía puede analizar el flujo de bits para obtener información (p. ej., información de vídeo/imagen) requerida para la reconstrucción de imágenes. La información de vídeo/imagen puede incluir además información sobre diversos conjuntos de parámetros como, por ejemplo, un conjunto de parámetros de adaptación (APS), un conjunto de parámetros de imagen (PPS), un conjunto de parámetros de secuencia (SPS), un conjunto de parámetros de vídeo (VPS) o similares. Además, la información de vídeo/imagen puede incluir además información de restricción general. El aparato de decodificación puede decodificar una imagen basándose además en información sobre el conjunto de parámetros y/o la información de restricción general. En la presente descripción, la información señalizada/recibida y/o los elementos sintácticos, que se describirán más adelante, pueden decodificarse a través del procedimiento de decodificación y obtenerse a partir del flujo de bits. Por ejemplo, el decodificador 310 de entropía puede decodificar información en el flujo de bits basándose en un método de codificación como, por ejemplo, codificación de Golomb exponencial, CAVLC, CABAC o similar, y puede emitir un valor de un elemento sintáctico necesario para la reconstrucción de imágenes y valores cuantificados de un coeficiente de transformada con respecto a un residual. Más específicamente, un método de decodificación por entropía CABAC puede recibir un bin correspondiente a cada elemento sintáctico en un flujo de bits, determinar un modelo de contexto usando la decodificación de la información de elemento sintáctico objetivo y la decodificación de la información de bloques objetivo vecinos y de decodificación, o la información de símbolo/bin decodificada en una etapa anterior, predecir la probabilidad de generación de bins según el modelo de contexto determinado y llevar a cabo la decodificación aritmética del bin para generar un símbolo correspondiente a cada valor de elemento sintáctico. En este caso, el procedimiento de decodificación por entropía de CABAC puede actualizar el modelo de contexto usando información de un símbolo/bin decodificado para un modelo de contexto del siguiente símbolo/bin después de la determinación del modelo de contexto. La información sobre la predicción entre la información decodificada en el decodificador 310 de entropía puede proveerse al predictor (interpredictor 332 e intrapredictor 331), y los valores residuales, es decir, los coeficientes de transformada cuantificados, en los que se ha llevado a cabo la decodificación de entropía en el decodificador 310 de entropía, y la información de parámetros asociados puede introducirse en el procesador 320 residual. El procesador 320 residual puede derivar una señal residual (bloque residual, muestras residuales, matriz de muestras residuales). Además, la información sobre el filtrado entre la información decodificada en el decodificador 310 de entropía puede proveerse al filtro 350. Mientras tanto, un receptor (no se muestra) que recibe una señal emitida desde el aparato de codificación puede constituir además el aparato 300 de decodificación como un elemento interno/externo, y el receptor puede ser un componente del decodificador 310 de entropía. Mientras tanto, el aparato de decodificación según la presente descripción puede denominarse aparato de codificación de vídeo/imagen, y el aparato de decodificación puede clasificarse en un decodificador de información (decodificador de información de vídeo/imagen) y un decodificador de muestra (decodificador de muestra de vídeo/imagen). El decodificador de información puede incluir el decodificador 310 de entropía, y el decodificador de muestras puede incluir al menos uno del descuantificador 321, el transformador 322 inverso, el sumador 340, el filtro 350, la memoria 360, el interpredictor 332 y el intrapredictor 331.
El descuantificador 321 puede emitir coeficientes de transformada descuantificando los coeficientes de transformada cuantificados. El descuantificador 321 puede reorganizar los coeficientes de transformada cuantificados en forma de un bloque bidimensional. En este caso, la reorganización puede llevar a cabo la reorganización basándose en un orden de exploración de coeficientes que se ha llevado a cabo en el aparato de codificación. El descuantificador 321 puede llevar a cabo la descuantificación en los coeficientes de transformada cuantificados usando un parámetro de cuantificación (p. ej., información de tamaño de etapa de cuantificación) y obtener coeficientes de transformada.
El descuantificador 322 obtiene una señal residual (bloque residual, matriz de muestras residuales) mediante coeficientes de transformada de transformación inversa.
El predictor puede llevar a cabo la predicción en el bloque actual y generar un bloque predicho que incluye muestras de predicción para el bloque actual. El predictor puede determinar si se aplica intrapredicción o interpredicción al bloque actual basándose en la información sobre la predicción emitida desde el decodificador 310 de entropía, y específicamente puede determinar un modo de intrapredicción/interpredicción.
El predictor puede generar una señal de predicción basándose en diversos métodos de predicción. Por ejemplo, el predictor puede aplicar intra predicción o interpredicción para la predicción en un bloque y, además, puede aplicar intrapredicción e interpredicción al mismo tiempo. Esto puede denominarse inter e intrapredicción combinada (CIIP). Además, el predictor puede llevar a cabo una copia intrabloque (IBC) para la predicción en un bloque. La copia intrabloque puede usarse para la codificación de contenido de imagen/vídeo de un juego o similar como, por ejemplo, la codificación de contenido de pantalla (SCC). Aunque la IBC lleva a cabo básicamente la predicción en un bloque actual, puede llevarse a cabo de manera similar a la interpredicción porque deriva un bloque de referencia en un bloque actual. Es decir, la IBC puede usar al menos una de las técnicas de interpredicción descritas en la presente descripción.
El intrapredictor 331 puede predecir el bloque actual haciendo referencia a las muestras en la imagen actual. Las muestras a las que se hace referencia pueden estar ubicadas en el vecino de o aparte del bloque actual según el modo de predicción. En la intrapredicción, los modos de predicción pueden incluir múltiples modos no direccionales y múltiples modos direccionales. El intrapredictor 331 puede determinar el modo de predicción aplicado al bloque actual usando el modo de predicción aplicado al bloque vecino.
El interpredictor 332 puede derivar un bloque predicho para el bloque actual basándose en un bloque de referencia (matriz de muestras de referencia) especificado por un vector de movimiento en una imagen de referencia. En este momento, para reducir la cantidad de información de movimiento transmitida en el modo de interpredicción, la información de movimiento puede predecirse en base a un bloque, subbloque o muestra basándose en la correlación de información de movimiento entre el bloque vecino y el bloque actual. La información de movimiento puede incluir un vector de movimiento y un índice de imagen de referencia. La información de movimiento puede incluir además información de dirección de interpredicción (predicción L0, predicción L1, predicción Bi, etc.). En el caso de la interpredicción, el bloque vecino puede incluir un bloque vecino espacial existente en la imagen actual y un bloque vecino temporal existente en la imagen de referencia. Por ejemplo, el interpredictor 332 puede configurar una lista de candidatos de información de movimiento basándose en bloques vecinos, y derivar un vector de movimiento y/o un índice de imagen de referencia del bloque actual basándose en información de selección de candidatos recibida. La interpredicción puede llevarse a cabo basándose en diversos modos de predicción, y la información sobre la predicción puede incluir información que indica un modo de interpredicción para el bloque actual.
El sumador 340 puede generar una señal reconstruida (imagen reconstruida, bloque reconstruido, matriz de muestras reconstruidas) sumando la señal residual obtenida a la señal de predicción (bloque predicho, matriz de muestras de predicción) emitida desde el predictor 330. Cuando no hay ningún residual para un bloque objetivo de procesamiento como en un caso en el que se aplica el modo de salto, el bloque predicho puede usarse como un bloque reconstruido.
El sumador 340 puede denominarse reconstructor o generador de bloques reconstruidos. La señal reconstruida generada puede usarse para la intrapredicción de un siguiente bloque objetivo de procesamiento en el bloque actual y, como se describe más adelante, puede emitirse a través de filtrado o usarse para la interpredicción de una siguiente imagen.
Mientras tanto, en el proceso de decodificación de imágenes, puede aplicarse el mapeo de luma con el escalado de croma (LMCS).
El filtro 350 puede mejorar la calidad de video subjetiva/objetiva aplicando el filtrado a la señal reconstruida. Por ejemplo, el filtro 350 puede generar una imagen reconstruida modificada aplicando diversos métodos de filtrado a la imagen reconstruida, y puede transmitir la imagen reconstruida modificada en la memoria 360, específicamente en la DPB de la memoria<3 6 0>. Los diversos métodos de filtrado pueden incluir, por ejemplo, filtrado de desbloqueo, desplazamiento adaptativo de muestra, un filtro de bucle adaptativo, un filtro bilateral o similares.
La imagen reconstruida (modificada) que se ha almacenado en la DPB de la memoria 360 puede usarse como una imagen de referencia en el interpredictor 332. La memoria 360 puede almacenar información de movimiento de un bloque en la imagen actual, a partir del cual se ha derivado (o decodificado) información de movimiento y/o información de movimiento de bloques en una imagen ya reconstruida. La información de movimiento almacenada puede transmitirse al interpredictor 260 para utilizarse como información de movimiento de un bloque vecino o información de movimiento de un bloque vecino temporal. La memoria 360 puede almacenar muestras reconstruidas de bloques reconstruidos en la imagen actual, y transmitirlas al intrapredictor 331.
En esta memoria descriptiva, los ejemplos descritos en el predictor 330, el descuantificador 321, el transformador 322 inverso y el filtro 350 del aparato 300 de decodificación pueden aplicarse de manera similar o correspondiente al predictor 220, al descuantificador 234, al transformador 235 inverso y al filtro 260 del aparato 200 de codificación, respectivamente.
Como se ha descrito anteriormente, la predicción se lleva a cabo con el fin de aumentar la eficiencia de compresión al llevar a cabo la codificación de vídeo. A través de esto, se puede generar un bloque predicho que incluye muestras de predicción para un bloque actual, que es un bloque objetivo de codificación. En este caso, el bloque predicho incluye muestras de predicción en un dominio de espacio (o dominio de píxel). El bloque predicho puede derivarse de manera idéntica en el aparato de codificación y el aparato de decodificación, y el aparato de codificación puede aumentar la eficiencia de codificación de imágenes señalizando al aparato de decodificación no el valor de muestra original de un bloque original en sí mismo sino información sobre el residual (información residual) entre el bloque original y el bloque predicho. El aparato de decodificación puede derivar un bloque residual que incluye muestras residuales en base a la información residual, generar un bloque reconstruido que incluye muestras reconstruidas añadiendo el bloque residual al bloque predicho y generar una imagen reconstruida que incluye bloques reconstruidos.
La información residual puede generarse a través de procedimientos de transformada y cuantificación. Por ejemplo, el aparato de codificación puede derivar un bloque residual entre el bloque original y el bloque predicho, derivar coeficientes de transformada llevando a cabo un procedimiento de transformada en muestras residuales (matriz de muestras residuales) incluidas en el bloque residual y derivar coeficientes de transformada cuantificados llevando a cabo un procedimiento de cuantificación en los coeficientes de transformada, de modo que pueda señalizar información residual asociada al aparato de decodificación (a través de un flujo de bits). En este caso, la información residual puede incluir información de valor, información de posición, una técnica de transformada, núcleo de transformada, un parámetro de cuantificación o similar de los coeficientes de transformada cuantificados. El aparato de decodificación puede llevar a cabo un procedimiento de cuantificación/descuantificación y derivar las muestras residuales (o bloque de muestras residuales), en base a la información residual. El aparato de decodificación puede generar un bloque reconstruido basándose en un bloque predicho y el bloque residual. El aparato de codificación puede derivar un bloque residual descuantificando/transformando inversamente coeficientes de transformada cuantificados para referencia para la interpredicción de una imagen siguiente, y puede generar una imagen reconstruida basándose en esto.
La Figura 4 ilustra esquemáticamente una técnica de transformada múltiple según una realización de la presente descripción.
Con referencia a la Figura 4, un transformador puede corresponder al transformador en el aparato de codificación de la Figura 2 anterior, y un transformador inverso puede corresponder al transformador inverso en el aparato de codificación de la Figura 2 anterior, o al transformador inverso en el aparato de decodificación de la Figura 3.
El transformador puede derivar coeficientes de transformada (primaria) llevando a cabo una transformada primaria basada en muestras residuales (matriz de muestras residuales) en un bloque residual (E410). Esta transformada primaria puede denominarse transformada de núcleo. En la presente memoria descriptiva, la transformada primaria puede basarse en la selección de transformada múltiple (MTS, por sus siglas en inglés), y cuando se aplica una transformada múltiple como la transformada primaria, puede denominarse transformada de núcleo múltiple.
La transformada de núcleo múltiple puede representar un método de transformación que usa adicionalmente transformada de coseno discreta (DCT) tipo 2 y transformada de seno discreta (DST) tipo 7, DCT tipo 8 y/o DST tipo 1. Es decir, la transformada de núcleo múltiple puede representar un método de transformada para transformar una señal residual (o bloque residual) de un dominio de espacio en coeficientes de transformada (o coeficientes de transformada primaria) de un dominio de frecuencia basándose en múltiples núcleos de transformada seleccionados de entre DCT tipo 2, DST tipo 7, DCT tipo 8 y DST tipo 1. En la presente memoria, los coeficientes de transformada primaria pueden denominarse coeficientes de transformada temporales desde el punto de vista del transformador.
En otras palabras, cuando se aplica el método de transformada convencional, los coeficientes de transformada pueden generarse aplicando la transformada de un dominio de espacio a un dominio de frecuencia para una señal residual (o bloque residual) basándose en la DCT tipo 2. A diferencia de esto, cuando se aplica la transformada de núcleo múltiple, los coeficientes de transformada (o coeficientes de transformada primaria) pueden generarse aplicando la transformada de un dominio de espacio a un dominio de frecuencia para una señal residual (o bloque residual) basándose en la DCT tipo 2, la DST tipo 7, la DCT tipo 8 y/o la DST tipo 1. En este caso, DCT tipo 2, Ds T tipo 7, Dc T tipo 8 y DST tipo 1 pueden denominarse un tipo de transformada o núcleo de transformada. Estos tipos de transformada DCT/DST pueden definirse basándose en funciones básicas.
Cuando se lleva a cabo la transformada de núcleo múltiple, se pueden seleccionar un núcleo de transformada vertical y un núcleo de transformada horizontal para un bloque objetivo de entre los núcleos de transformada, se puede llevar a cabo una transformada vertical en el bloque objetivo basándose en el núcleo de transformada vertical, y se puede llevar a cabo una transformada horizontal en el bloque objetivo basándose en el núcleo de transformada horizontal. En este caso, la transformada horizontal puede indicar una transformada en componentes horizontales del bloque objetivo, y la transformada vertical puede indicar una transformada en componentes verticales del bloque objetivo. El núcleo de transformada vertical/núcleo de transformada horizontal puede determinarse de manera adaptativa basándose en un modo de predicción y/o un índice de transformada para el bloque objetivo (CU o subbloque) que incluye un bloque residual.
Además, según un ejemplo, si la transformada primaria se lleva a cabo aplicando la MTS, se puede establecer una relación de mapeo para núcleos de transformada estableciendo funciones de base específicas a valores predeterminados y combinando funciones de base a aplicarse en la transformada vertical o la transformada horizontal. Por ejemplo, cuando el núcleo de transformada horizontal se expresa como trTypeHor y el núcleo de transformada de dirección vertical se expresa como trTypeVer, un valor trTypeHor o trTypeVer de 0 puede establecerse en DCT2, un valor trTypeHor o trTypeVer de 1 puede establecerse en DST7, y un valor trTypeHor o trTypeVer de 2 puede establecerse en DCT8.
En este caso, la información de índice de MTS puede codificarse y señalizarse al aparato de decodificación para indicar cualquiera de múltiples conjuntos de núcleos de transformada. Por ejemplo, un índice MTS de 0 puede indicar que ambos valores trTypeHor y trTypeVer son 0, un índice MTS de 1 puede indicar que ambos valores trTypeHor y trTypeVer son 1, un índice MTS de 2 puede indicar que el valor trTypeHor es 2 y el valor trTypeVer es 1, un índice MTS de 3 puede indicar que el valor trTypeHor es 1 y el valor trTypeVer es 2, y un índice MTS de 4 puede indicar que ambos valores trTypeHor y trTypeVer son 2.
En un ejemplo, los conjuntos de núcleos de transformada según la información de índice MTS se ilustran en la siguiente tabla.
Tabla 1
El transformador puede llevar a cabo una transformada secundaria en base a los coeficientes de transformada (primaria) para derivar los coeficientes de transformada (secundaria) modificados (E420). La transformada primaria es una transformada de un dominio espacial a un dominio de frecuencia, y la transformada secundaria se refiere a la transformación en una expresión más compacta usando una correlación existente entre coeficientes de transformada (primaria). La transformada secundaria puede incluir una transformada no separable. En este caso, la transformada secundaria puede denominarse transformada secundaria no separable (NSST, por sus siglas en inglés) o transformada secundaria no separable dependiente del modo (MDNSST, por sus siglas en inglés). La NSST puede representar una transformada que transforma secundariamente coeficientes de transformada (primaria) derivados a través de la transformada primaria basándose en una matriz de transformada no separable para generar coeficientes de transformada modificados (o coeficientes de transformada secundaria) para una señal residual. En este caso, la transformada puede aplicarse de una vez sin separar (o aplicando independientemente una transformada horizontal/vertical) una transformada vertical y una transformada horizontal a los coeficientes de transformada (primaria) basándose en la matriz de transformada no separable. En otras palabras, la NSST no se aplica por separado a los coeficientes de transformada (primaria) en una dirección vertical y una dirección horizontal, y puede representar, por ejemplo, un método de transformada para reorganizar señales bidimensionales (coeficientes de transformada) en una señal unidimensional a través de una dirección predeterminada específica (p. ej., dirección de fila-primera o dirección de columna-primera) y luego generar coeficientes de transformada modificados (o coeficientes de transformada secundaria) en base a la matriz de transformada no separable. Por ejemplo, un orden de primera fila es disponer en una línea en orden de una 1.a fila, una 2.a fila,..., una Nésima fila para MxN bloques, y un orden de primera columna es disponer en una línea en orden de una 1.a columna, una 2.a columna,..., una Mésima columna para MxN bloques. La NSST puede aplicarse a una región superior izquierda de un bloque (en lo sucesivo, denominado bloque de coeficientes de transformada) configurado con coeficientes de transformada (primaria). Por ejemplo, cuando tanto un ancho W como un alto H del bloque de coeficientes de transformada son 8 o más, se puede aplicar una NSST de 8x8 a la región superior izquierda de 8x8 del bloque de coeficientes de transformada. Además, mientras tanto el ancho (W) como la altura (H) del bloque de coeficientes de transformada son 4 o más, cuando el ancho (W) o la altura (H) del bloque de coeficientes de transformada es menor de 8, se pueden aplicar NSST de 4x4 a la región superior izquierda min(8,W)xmm(8,H) del bloque de coeficientes de transformada. Sin embargo, la realización no se limita a esto, y por ejemplo, incluso si solo se cumple la condición de que el ancho W o la altura H del bloque de coeficientes de transformada sea 4 o mayor, la NSST de 4x4 puede aplicarse a la región de extremo superior izquierdo mm(8,W)xmín(8,H) del bloque de coeficientes de transformada.
Específicamente, por ejemplo, si se usa un bloque de entrada 4x4, la transformada secundaria no separable puede llevarse a cabo de la siguiente manera.
El bloque de entrada X de 4x4 puede representarse de la siguiente manera.
Ecuación 1
Si la X se representa en forma de un vector, el vectorXpuede representarse como se indica a continuación.
Ecuación 2
X —[*00Xqi X¡¡2 Xq% X1 [. A'. ]Xís X^ o X^iX22AYj AY, A'}3 ¡
En la ecuación 2, el vector X es un vector unidimensional obtenido reordenando el bloque bidimensional X de la ecuación 1 según el orden de fila primero.
En este caso, la transformada secundaria no separable puede calcularse como se indica a continuación.
En esta ecuación, F representa un vector de coeficientes de transformada, y T representa una matriz de transformada de 16x16 (no separable).
A través de la Ecuación 3 anterior, un vector de coeficientes de transformada de 16x1Fpuede derivarse, yFpuede reorganizarse en un bloque de 4x4 a través de un orden de exploración (horizontal, vertical, diagonal y similares). Sin embargo, el cálculo descrito anteriormente es un ejemplo, y la transformada de hipercubo-Givens (HyGT, por sus siglas en inglés) o similar puede usarse para el cálculo de la transformada secundaria no separable para reducir la complejidad computacional de la transformada secundaria no separable.
Mientras tanto, en la transformada secundaria no separable, un núcleo de transformada (o tipo de transformada) puede seleccionarse para que dependa del modo. En este caso, el modo puede incluir el modo de intrapredicción y/o el modo de interpredicción.
Como se ha descrito anteriormente, la transformada secundaria no separable puede llevarse a cabo basándose en una transformada de 8x8 o en una transformada de 4x4 determinada según el ancho (W) y la altura (H) del bloque de coeficientes de transformada. La transformada de 8x8 se refiere a una transformada que es aplicable a una región de 8x8 incluida en el bloque de coeficientes de transformada cuando tanto W como H son iguales o mayores que 8, y la región de 8x8 puede ser una región de 8x8 superior izquierda en el bloque de coeficientes de transformada. De manera similar, la transformada de 4x4 se refiere a una transformada que es aplicable a una región de 4x4 incluida en el bloque de coeficientes de transformada cuando tanto W como H son iguales a o mayores que 4, y la región de 4x4 puede ser una región de 4x4 superior izquierda en el bloque de coeficientes de transformada. Por ejemplo, una matriz de núcleo de transformada de 8x8 puede ser una matriz de 64x64/16x64, y una matriz de núcleo de transformada de 4x4 puede ser una matriz de 16x16/8x16.
En este caso, para seleccionar un núcleo de transformada dependiente del modo, dos núcleos de transformada secundaria no separables por conjunto de transformada para una transformada secundaria no separable pueden configurarse tanto para la transformada de 8 x 8 como para la transformada de 4 x 4, y puede haber cuatro conjuntos de transformada. Es decir, se pueden configurar cuatro conjuntos de transformada para la transformada de 8 x 8, y se pueden configurar cuatro conjuntos de transformada para la transformada de 4 x 4. En este caso, cada uno de los cuatro conjuntos de transformada para la transformada de 8 x 8 puede incluir dos núcleos de transformada de 8 x 8, y cada uno de los cuatro conjuntos de transformada para la transformada de 4 x 4 puede incluir dos núcleos de transformada de 4 x 4.
Sin embargo, como el tamaño de la transformada, es decir, el tamaño de una región a la que se aplica la transformada, puede ser, por ejemplo, un tamaño distinto de 8 x 8 o 4 x 4, el número de conjuntos puede ser n, y el número de núcleos de transformada en cada conjunto puede ser k.
El conjunto de transformada puede denominarse conjunto de NSST o conjunto de LFNST. Un conjunto específico entre los conjuntos de transformada puede seleccionarse, por ejemplo, basándose en el modo de intrapredicción del bloque actual (CU o subbloque). Una transformada no separable de baja frecuencia (LFNST, por sus siglas en inglés) puede ser un ejemplo de una transformada no separable reducida, que se describirá más adelante, y representa una transformada no separable para un componente de baja frecuencia.
Como referencia, por ejemplo, el modo de intrapredicción puede incluir dos modos de intrapredicción no direccionales (o no angular) y 65 modos de intrapredicción direccionales (o angular). Los modos de intrapredicción no direccionales pueden incluir un modo de intrapredicción planar de n.°. 0 y un modo de intrapredicción de DC de n.° 1, y los modos de intrapredicción direccionales pueden incluir 65 modos de intrapredicción de los n.° 2 a 66. Sin embargo, esto es un ejemplo, y este documento puede aplicarse incluso cuando el número de modos de intrapredicción es diferente. Mientras tanto, en algunos casos, el modo de intrapredicción n.° 67 puede usarse adicionalmente, y el modo de intrapredicción n.° 67 puede representar un modo de modelo lineal (LM, por sus siglas en inglés).
La Figura 5 muestra a modo de ejemplo modos intradireccionales de 65 direcciones de predicción.
Con referencia a la Figura 5, sobre la base del modo de intrapredicción 34 que tiene una dirección de predicción diagonal hacia arriba izquierda, los modos de intrapredicción pueden dividirse en modos de intrapredicción que tienen direccionalidad horizontal y modos de intrapredicción que tienen direccionalidad vertical. En la Figura 5, H y V indican direccionalidad horizontal y direccionalidad vertical, respectivamente, y los numerales -32 a 32 indican desplazamientos en 1/32 unidades en una posición de rejilla de muestra. Estos numerales pueden representar un desplazamiento para un valor de índice de modo. Los modos de intrapredicción 2 a 33 tienen la direccionalidad horizontal, y los modos de intrapredicción 34 a 66 tienen la direccionalidad vertical. Estrictamente hablando, puede considerarse que el modo de intrapredicción 34 no es ni horizontal ni vertical, pero puede clasificarse como perteneciente a la direccionalidad horizontal en la determinación de un conjunto de transformadas de una transformada secundaria. Esto es debido a que los datos de entrada se transponen para usarse para un modo de dirección vertical simétrico basándose en el modo de intrapredicción 34, y se usa un método de alineación de datos de entrada para un modo horizontal para el modo de intrapredicción 34. La transposición de datos de entrada significa que las filas y columnas de datos del bloque M x N bidimensionales se conmutan en datos N x M. El modo de intrapredicción 18 y el modo de intrapredicción 50 pueden representar un modo de intrapredicción horizontal y un modo de intrapredicción vertical, respectivamente, y el modo de intrapredicción 2 puede denominarse modo de intrapredicción diagonal hacia arriba derecha debido a que el modo de intrapredicción 2 tiene un píxel de referencia izquierdo y lleva a cabo la predicción en una dirección hacia arriba derecha. Asimismo, el modo de intrapredicción 34 puede denominarse modo de intrapredicción diagonal hacia abajo derecha, y el modo de intrapredicción 66 puede denominarse modo de intrapredicción diagonal hacia abajo izquierda.
Según un ejemplo, los cuatro conjuntos de transformada según el modo de intrapredicción pueden mapearse, por ejemplo, como se muestra en la siguiente tabla.
Tabla 2
Como se muestra en la Tabla 2, cualquiera de los cuatro conjuntos de transformada, es decir, IfnstTrSetIdx puede mapearse a cualquiera de cuatro índices, es decir, 0 a 3, según el modo de intrapredicción.
Cuando se determina que se usa un conjunto específico para la transformada no separable, uno de los k núcleos de transformada en el conjunto específico puede seleccionarse a través de un índice de transformada secundaria no separable. Un aparato de codificación puede derivar un índice de transformada secundaria no separable que indica un núcleo de transformada específico en base a una comprobación de distorsión de velocidad (RD, por sus siglas en inglés) y puede señalizar el índice de transformada secundaria no separable a un aparato de decodificación. El aparato de decodificación puede seleccionar uno de los k núcleos de transformada en el conjunto específico basándose en el índice de transformada secundaria no separable. Por ejemplo, el valor de índice de lfnst 0 puede referirse a un primer núcleo de transformada secundaria no separable, el valor de índice de lfnst 1 puede referirse a un segundo núcleo de transformada secundaria no separable, y el valor de índice de lfnst 2 puede referirse a un tercer núcleo de transformada secundaria no separable. Alternativamente, el valor de índice lfnst 0 puede indicar que la primera transformada secundaria no separable no se aplica al bloque objetivo, y los valores de índice lfnst 1 a 3 pueden indicar los tres núcleos de transformada.
El transformador puede llevar a cabo la transformada secundaria no separable en base a los núcleos de transformada seleccionados, y puede obtener coeficientes de transformada (secundaria) modificados. Como se ha descrito anteriormente, los coeficientes de transformada modificados pueden derivarse como coeficientes de transformada cuantificados a través del cuantificador, y pueden codificarse y señalarse al aparato de decodificación y transferirse al descuantificador/transformador inverso en el aparato de codificación.
Mientras tanto, como se ha descrito anteriormente, si se omite la transformada secundaria, los coeficientes de transformada (primaria), que son una salida de la transformada primaria (separable), pueden derivarse como coeficientes de transformada cuantificados a través del cuantificador como se ha descrito anteriormente, y pueden codificarse y señalizarse al aparato de decodificación y transferirse al descuantificador/transformador inverso en el aparato de codificación.
El transformador inverso puede llevar a cabo una serie de procedimientos en el orden inverso al que se han llevado a cabo en el transformador descrito anteriormente. El transformador inverso puede recibir coeficientes de transformador (descuantificados), y derivar coeficientes de transformada (primaria) llevando a cabo una transformada secundaria (inversa) (E450), y puede obtener un bloque residual (muestras residuales) llevando a cabo una transformada primaria (inversa) en los coeficientes de transformada (primaria) (E460). En este sentido, los coeficientes de transformada primaria pueden denominarse coeficientes de transformada modificados desde el punto de vista del transformador inverso. Como se ha descrito anteriormente, el aparato de codificación y el aparato de decodificación pueden generar el bloque reconstruido basándose en el bloque residual y el bloque predicho, y pueden generar la imagen reconstruida basándose en el bloque reconstruido.
El aparato de decodificación puede incluir además un determinador de aplicación de transformada inversa secundaria (o un elemento para determinar si aplicar una transformada inversa secundaria) y un determinador de transformada inversa secundaria (o un elemento para determinar una transformada inversa secundaria). El determinador de aplicación de transformada inversa secundaria puede determinar si aplicar una transformada inversa secundaria. Por ejemplo, la transformada inversa secundaria puede ser una NSST, una RST o una LFNST y el determinador de aplicación de transformada inversa secundaria puede determinar si aplicar la transformada inversa secundaria basándose en una bandera de transformada secundaria obtenida analizando el flujo de bits. En otro ejemplo, el determinador de aplicación de transformada inversa secundaria puede determinar si aplicar la transformada inversa secundaria basándose en un coeficiente de transformada de un bloque residual.
El determinador de transformada inversa secundaria puede determinar una transformada inversa secundaria. En este caso, el determinador de transformada inversa secundaria puede determinar la transformada inversa secundaria aplicada al bloque actual basándose en un conjunto de transformada de LFNST (NSST o RST) especificado según un modo de intrapredicción. En una realización, un método de determinación de transformada secundaria puede determinarse dependiendo de un método de determinación de transformada primaria. Se pueden determinar diversas combinaciones de transformadas primarias y transformadas secundarias según el modo de intrapredicción. Además, en un ejemplo, el determinador de transformada inversa secundaria puede determinar una región a la que se aplica una transformada inversa secundaria basándose en el tamaño del bloque actual.
Mientras tanto, como se describió anteriormente, si se omite la transformada secundaria (inversa), se pueden recibir coeficientes de transformada (descuantificados), se puede llevar a cabo la transformada inversa primaria (separable), y se puede obtener el bloque residual (muestras residuales). Como se ha descrito más arriba, el aparato de codificación y el aparato de decodificación pueden generar el bloque reconstruido basándose en el bloque residual y el bloque predicho, y pueden generar la imagen reconstruida basándose en el bloque reconstruido.
Mientras tanto, en la presente descripción, una transformada secundaria reducida (RST, por sus siglas en inglés) en la que se reduce el tamaño de una matriz de transformada (núcleo) puede aplicarse en el concepto de NSST para reducir la cantidad de cálculo y memoria requerida para la transformada secundaria no separable.
Mientras tanto, el núcleo de transformada, la matriz de transformada y el coeficiente que constituye la matriz de núcleo de transformada, es decir, el coeficiente de núcleo o el coeficiente de matriz, descritos en la presente descripción, pueden expresarse en 8 bits. Esto puede ser una condición para la implementación en el aparato de decodificación y el aparato de codificación, y puede reducir la cantidad de memoria requerida para almacenar el núcleo de transformada con una degradación de rendimiento que puede acomodarse razonablemente en comparación con los 9 bits o 10 bits existentes. Además, la expresión de la matriz de núcleo en 8 bits puede permitir que se use un multiplicador pequeño, y puede ser más adecuado para instrucciones de múltiples datos de instrucción única (SIMD, por sus siglas en inglés) usadas para una implementación óptima de software.
En la presente memoria descriptiva, el término "RST" puede significar una transformada que se lleva a cabo en muestras residuales para un bloque objetivo basándose en una matriz de transformada cuyo tamaño se reduce según un factor reducido. En el caso de llevar a cabo la transformada reducida, la cantidad de cálculo requerida para la transformada puede reducirse debido a una reducción en el tamaño de la matriz de transformada. Es decir, la RST puede usarse para abordar el problema de complejidad computacional que se produce en la transformada no separable o la transformada de un bloque de un gran tamaño.
La RST puede denominarse de varias maneras como, por ejemplo, transformada reducida, transformada secundaria reducida, transformada de reducción, transformada simplificada, transformada simple y similares, y el nombre con el que puede hacerse referencia a la RST no se limita a los ejemplos enumerados. Alternativamente, dado que la RST se lleva a cabo principalmente en una región de baja frecuencia que incluye un coeficiente distinto de cero en un bloque de transformada, puede denominarse transformada no separable de baja frecuencia (LFNST). El índice de transformada puede denominarse índice LFNST.
Mientras tanto, cuando la transformada inversa secundaria se lleva a cabo basándose en RST, el transformador 235 inverso del aparato 200 de codificación y el transformador 322 inverso del aparato 300 de decodificación pueden incluir un transformador secundario reducido inverso que deriva coeficientes de transformada modificados basándose en la RST inversa de los coeficientes de transformada, y un transformador primario inverso que deriva muestras residuales para el bloque objetivo basándose en la transformada primaria inversa de los coeficientes de transformada modificados. La transformada primaria inversa se refiere a la transformada inversa de la transformada primaria aplicada al residual. En la presente descripción, derivar un coeficiente de transformada según una transformada puede referirse a derivar un coeficiente de transformada aplicando la transformada.
La Figura 6 es un diagrama que ilustra una RST según una realización de la presente descripción.
En la presente descripción, un "bloque objetivo" puede referirse a un bloque actual a codificar, un bloque residual o un bloque de transformada.
En la RST según un ejemplo, un vector N-dimensional puede mapearse a un vector R-dimensional ubicado en otro espacio, de modo que puede determinarse la matriz de transformada reducida, donde R es menor que N. N puede significar el cuadrado de la longitud de un lado de un bloque al que se aplica la transformada, o el número total de coeficientes de transformada correspondientes a un bloque al que se aplica la transformada, y el factor reducido puede significar un valor R/N. El factor reducido puede denominarse factor reducido, factor de reducción, factor simplificado, factor simple u otros términos diversos. Mientras tanto, R puede denominarse coeficiente reducido, pero, según las circunstancias, el factor reducido puede significar R. Además, según las circunstancias, el factor reducido puede significar el valor de N/R.
En un ejemplo, el factor reducido o el coeficiente reducido pueden señalizarse a través de un flujo de bits, pero el ejemplo no se limita a esto. Por ejemplo, un valor predefinido para el factor reducido o el coeficiente reducido puede almacenarse en cada uno del aparato 200 de codificación y el aparato 300 de decodificación y, en este caso, el factor reducido o el coeficiente reducido puede no señalarse por separado.
El tamaño de la matriz de transformada reducida según un ejemplo puede ser RxN menor que N x N, el tamaño de una matriz de transformada convencional, y puede definirse como en la ecuación 4 a continuación.
La matriz T en el bloque de transformada reducida que se muestra en (a) de la Figura 6 puede significar la matriz TRxN de la ecuación 4. Como se muestra en (a) de la Figura 6, cuando la matriz de transformada reducida TRxN se multiplica por muestras residuales para el bloque objetivo, se pueden derivar coeficientes de transformada para el bloque objetivo.
En un ejemplo, si el tamaño del bloque al que se aplica la transformada es de 8x8 y R = 16 (es decir, R/N = 16/64 = 1/4), entonces la RST según (a) de la Figura 6 puede expresarse como una operación de matriz como se muestra en la ecuación 5 a continuación. En este caso, el cálculo de la memoria y la multiplicación se puede reducir a aproximadamente 1/4 por el factor reducido.
En la presente descripción, una operación de matriz puede entenderse como una operación de multiplicar un vector de columna por una matriz, dispuesta a la izquierda del vector de columna, para obtener un vector de columna.
Ecuación 5
En la ecuación 5, n r64 puede representar muestras residuales para el bloque objetivo y pueden ser específicamente coeficientes de transformada generados aplicando una transformada primaria. Como resultado del cálculo de la ecuación 5, se pueden derivar los coeficientes de transformada ci para el bloque objetivo, y un proceso de derivación ci puede ser como en la ecuación 6.
Ecuación 6
Como resultado del cálculo de la ecuación 6, los coeficientes de transformada c<1>ac<r>para el bloque objetivo pueden derivarse. Es decir, cuando R=16, los coeficientes de transformada c<1>a c<16>para el bloque objetivo pueden derivarse. Si, en lugar de RST, se aplica una transformada regular y se multiplica una matriz de transformada de tamaño 64x64 (N x N) a muestras residuales de tamaño 64x1 (N x 1), entonces solo se derivan los 16 (R) coeficientes de transformada para el bloque objetivo debido a que se aplicó RST, aunque se derivan 64 (N) coeficientes de transformada para el bloque objetivo. Dado que el número total de coeficientes de transformada para el bloque objetivo se reduce de N a R, la cantidad de datos transmitidos por el aparato 200 de codificación al aparato 300 de decodificación disminuye, por lo cual puede mejorarse la eficiencia de transmisión entre el aparato 200 de codificación y el aparato 300 de decodificación.
Cuando se considera desde el punto de vista del tamaño de la matriz de transformada, el tamaño de la matriz de transformada regular es de 64x64 (N x N), pero el tamaño de la matriz de transformada reducida se reduce a 16x64 (RxN), por lo que el uso de memoria en un caso de realización de la RST puede reducirse en una relación R/N en comparación con un caso de realización de la transformada regular. Además, cuando se compara con el número de cálculos de multiplicación N x N en caso de usar la matriz de transformada regular, el uso de la matriz de transformada reducida puede reducir el número de cálculos de multiplicación por la relación R/N (RxN).
En un ejemplo, el transformador 232 del aparato 200 de codificación puede derivar coeficientes de transformada para el bloque objetivo llevando a cabo la transformada primaria y la transformada secundaria basada en RST en muestras residuales para el bloque objetivo. Estos coeficientes de transformada pueden transferirse al transformador inverso del aparato 300 de decodificación, y el transformador 322 inverso del aparato 300 de decodificación puede derivar los coeficientes de transformada modificados basándose en la transformada secundaria reducida (RST) inversa para los coeficientes de transformada, y puede derivar muestras residuales para el bloque objetivo basándose en la transformada primaria inversa para los coeficientes de transformada modificados.
El tamaño de la matriz RST inversa T<nxr>según un ejemplo es NxR menor que el tamaño N x N de la matriz de transformada inversa regular, y está en una relación de transposición con la matriz de transformada reducida T<rxn>que se muestra en la ecuación 4.
La matriz Tt en el bloque de transformada inv. Reducida que se muestra en (b) de la Figura 6 puede significar la matriz RST inversa T<rxnt>(el superíndice T significa transponer). Cuando la matriz RST inversa T<rxnt>se multiplica por los coeficientes de transformada para el bloque objetivo como se muestra en (b) de la Figura 6, se pueden derivar los coeficientes de transformada modificados para el bloque objetivo o las muestras residuales para el bloque actual. La matriz RST inversa T<rxnt>puede expresarse como (T<rxn>)<tnxr>.
Más específicamente, cuando la RST inversa se aplica como la transformada inversa secundaria, los coeficientes de transformada modificados para el bloque objetivo pueden derivarse cuando la matriz RST inversa T<rxnt>se multiplica por los coeficientes de transformada para el bloque objetivo. Mientras tanto, la RST inversa puede aplicarse como la transformada primaria inversa y, en este caso, las muestras residuales para el bloque objetivo pueden derivarse cuando la matriz RST inversa T<rxnt>se multiplica por los coeficientes de transformada para el bloque objetivo.
En un ejemplo, si el tamaño del bloque al que se aplica la transformada inversa es de 8x8 y R = 16 (es decir, R/N = 16/64 = 1/4), entonces la RST según (b) de la Figura 6 puede expresarse como una operación de matriz como se muestra en la ecuación 7 a continuación.
Ecuación 7
En la ecuación 7, c a c<16>puede representar los coeficientes de transformada para el bloque objetivo. Como resultado del cálculo de la ecuación 7, n que representa los coeficientes de transformada modificados para el bloque objetivo o las muestras residuales para el bloque objetivo puede derivarse, y el proceso de derivar r puede ser como en la ecuación 8.
Como resultado del cálculo de la ecuación 8, n a rN que representan los coeficientes de transformada modificados para el bloque objetivo o las muestras residuales para el bloque objetivo pueden derivarse. Cuando se considera desde el punto de vista del tamaño de la matriz de transformada inversa, el tamaño de la matriz de transformada inversa regular es de 64x64 (NxN), pero el tamaño de la matriz de transformada inversa reducida se reduce a 64x16 (RxN), por lo que el uso de memoria en un caso de realización de la RST inversa puede reducirse en una relación R/N en comparación con un caso de realización de la transformada inversa regular. Además, cuando se compara con el número de cálculos de multiplicación N x N en caso de usar la matriz de transformada inversa regular, el uso de la matriz de transformada inversa reducida puede reducir el número de cálculos de multiplicación por la relación R/N (NxR).
Una configuración de conjunto de transformada que se muestra en la Tabla 2 también puede aplicarse a una RST de 8 x 8. Es decir, la RST de 8 x 8 puede aplicarse según un conjunto de transformada en la Tabla 2. Dado que un conjunto de transformadas incluye dos o tres transformadas (núcleos) según un modo de intrapredicción, puede configurarse para seleccionar una de hasta cuatro transformadas, incluida aquella en un caso en el que no se aplica ninguna transformada secundaria. En una transformada en la que no se aplica ninguna transformada secundaria, puede considerarse la aplicación de una matriz de identidad. Suponiendo que los índices 0, 1, 2 y 3 se asignan respectivamente a las cuatro transformadas (p. ej., el índice 0 puede asignarse a un caso en el que se aplica una matriz de identidad, es decir, un caso en el que no se aplica una transformada secundaria), un índice de transformada o un índice lfnst como elemento sintáctico puede señalizarse para cada bloque de coeficientes de transformada, designando de este modo una transformada que va a aplicarse. Es decir, para un bloque superior izquierdo de 8 x 8, a través del índice de transformada, es posible designar una RST de 8 x 8 en una configuración de RST, o designar una lfnst de 8 x 8 cuando se aplica la LFNST. La lfnst de 8 x 8 y la RST de 8 x 8 se refieren a transformadas aplicables a una región de 8 x 8 incluida en el bloque de coeficientes de transformada cuando tanto W como H del bloque objetivo a transformar son iguales a o mayores que 8, y la región de 8 x 8 puede ser una región superior izquierda de 8 x 8 en el bloque de coeficientes de transformada. De manera similar, una lfnst de 4 x 4 y una RST de 4 x 4 se refieren a transformadas aplicables a una región de 4 x 4 incluida en el bloque de coeficientes de transformada cuando tanto W como H del bloque objetivo son iguales a o mayores que 4, y la región de 4 x 4 puede ser una región superior izquierda de 4 x 4 en el bloque de coeficientes de transformada.
Según una realización de la presente descripción, para una transformada en un proceso de codificación, solo se pueden seleccionar 48 piezas de datos y se puede aplicar una matriz de núcleo de transformada de 16 x 48 como máximo a la misma, en lugar de aplicar una matriz de núcleo de transformada de 16 x 64 a 64 piezas de datos que forman una región de 8 x 8. En este caso, "máximo" significa que m tiene un valor máximo de 16 en una matriz de núcleo de transformada de m x 48 para generar m coeficientes. Es decir, cuando se lleva a cabo una RST aplicando una matriz de núcleo de transformada de m x 48 (m < 16) a una región de 8 x 8, se introducen 48 piezas de datos y se generan m coeficientes. Cuando m es 16, se introducen 48 piezas de datos y se generan 16 coeficientes. Es decir, suponiendo que 48 piezas de datos forman un vector de 48x1, una matriz de 16x48 y un vector de 48x1 se multiplican secuencialmente, generando de este modo un vector de 16x1. Aquí, las 48 piezas de datos que forman la región de 8 x 8 pueden disponerse adecuadamente, formando así el vector de 48 x 1. Por ejemplo, un vector de 48 x 1 puede construirse basándose en 48 piezas de datos que constituyen una región excluyendo la región inferior derecha de 4 x 4 entre las regiones de 8 x 8. En este caso, cuando se lleva a cabo una operación de matriz aplicando una matriz de núcleo de transformada de 16 x 48 como máximo, se generan 16 coeficientes de transformada modificados, y los 16 coeficientes de transformada modificados pueden disponerse en una región superior izquierda 4 x 4 según un orden de escaneo, y una región superior derecha de 4 x 4 y una región inferior izquierda de 4 x 4 pueden llenarse con ceros.
Para una transformada inversa en un proceso de decodificación, puede usarse la matriz transpuesta de la matriz de núcleo de transformada anterior. Es decir, cuando se lleva a cabo una RST inversa o LFNST en el proceso de transformada inversa llevado a cabo por el aparato de decodificación, los datos de coeficientes de entrada a los que se aplica la RST inversa se configuran en un vector unidimensional según un orden de disposición predeterminado, y un vector de coeficientes modificado obtenido multiplicando el vector unidimensional y una matriz de RST inversa correspondiente a la izquierda del vector unidimensional puede disponerse en un bloque bidimensional según un orden de disposición predeterminado.
En resumen, en el proceso de transformada, cuando se aplica una RST o LFNST a una región de 8 x 8, una operación de matriz de 48 coeficientes de transformada en las regiones superior izquierda, superior derecha e inferior izquierda de la región de 8 x 8, excluyendo la región inferior derecha entre los coeficientes de transformada en la región de 8 x 8 y una matriz de núcleo de transformación de 16 x 48. Para la operación de matriz, los 48 coeficientes de transformada se introducen en una matriz unidimensional. Cuando se lleva a cabo la operación de matriz, se derivan 16 coeficientes de transformada modificados, y los coeficientes de transformada modificados pueden disponerse en la región superior izquierda de la región de 8 x 8.
Por el contrario, en el proceso de transformada inversa, cuando se aplica una RST o LFNST inversa a una región de 8 x 8, 16 coeficientes de transformada correspondientes a una región superior izquierda de la región de 8 x 8 entre coeficientes de transformada en la región de 8 x 8 pueden introducirse en una matriz unidimensional según un orden de escaneo y pueden someterse a una operación de matriz con una matriz de núcleo de transformada de 48 x 16. Es decir, la operación de matriz puede expresarse como (matriz de 48 x 16) * (vector de coeficiente de transformada de 16 x 1) = (vector de coeficiente de transformada modificado de 48 x 1). Aquí, un vector n x 1 puede interpretarse que tiene el mismo significado que una matriz n x 1 y, por lo tanto, puede expresarse como un vector de columna nx1. Además, * denota multiplicación de matriz. Cuando se lleva a cabo la operación de matriz, se pueden derivar 48 coeficientes de transformada modificados, y los 48 coeficientes de transformada modificados se pueden disponer en las regiones superior izquierda, superior derecha e inferior izquierda de la región de 8x8, excluyendo una región inferior derecha.
Cuando una transformada inversa secundaria se basa en una RST, el transformador 235 inverso del aparato 200 de codificación y el transformador 322 inverso del aparato 300 de decodificación pueden incluir un transformador secundario reducido inverso para derivar coeficientes de transformada modificados basándose en una RST inversa en coeficientes de transformada y un transformador primario inverso para derivar muestras residuales para el bloque objetivo basándose en una transformada primaria inversa en los coeficientes de transformada modificados. La transformada primaria inversa se refiere a la transformada inversa de una transformada primaria aplicada a un residual. En la presente descripción, derivar un coeficiente de transformada basado en una transformada puede referirse a derivar el coeficiente de transformada aplicando la transformada.
La transformada no separada descrita anteriormente, la LFNST, se describirá en detalle de la siguiente manera. La LFNST puede incluir una transformada directa por el aparato de codificación y una transformada inversa por el aparato de decodificación.
El aparato de codificación recibe un resultado (o una parte de un resultado) obtenido después de aplicar una transformada primaria (núcleo) como entrada, y aplica una transformada secundaria directa (transformada secundaria).
Ecuación 9
y = GTx
En la ecuación 9, x e y son entradas y salidas de la transformada secundaria, respectivamente, y G es una matriz que representa la transformada secundaria, y los vectores de base de transformada están compuestos por vectores de columna. En el caso de una LFNST inversa, cuando la dimensión de la matriz de transformación G se expresa como [número de filas x número de columnas], en el caso de una LFNST directa, la transposición de la matriz G se convierte en la dimensión de GT.
Para la LFNST inversa, las dimensiones de la matriz G son [48 x 16], [48 x 8], [16 x 16], [16 x 8], y la matriz [48 x 8] y la matriz [16 x 8] son matrices parciales que han muestreado 8 vectores base de transformada desde la izquierda de la matriz [48 x 16] y la matriz [16 x 16], respectivamente.
Por otro lado, para la LFNST directa, las dimensiones de la matriz GT son [16 x 48], [8 x 48], [16 x 16], [8 x 16], y la matriz [8 x 48] y la matriz [8 x 16] son matrices parciales obtenidas muestreando 8 vectores de base de transformada desde la parte superior de la matriz [16 x 48] y la matriz [16 x16], respectivamente.
Por lo tanto, en el caso de la LFNST directa, un vector [48 x 1] o un vector [16 x 1] es posible como una entrada x, y un vector [16 x 1] o un vector [8 x 1] es posible como una salida y. En la codificación y decodificación de vídeo, la salida de la transformada primaria directa son datos bidimensionales (2D), para construir el vector [48 x 1] o el vector [16 x 1] como la entrada x, debe construirse un vector unidimensional disponiendo adecuadamente los datos 2D que son la salida de la transformación directa.
La Figura 7 es un diagrama que ilustra una secuencia de disposición de datos de salida de una transformación primaria directa en un vector unidimensional según un ejemplo. Los diagramas de la izquierda de (a) y (b) de la Figura 7 muestran la secuencia para construir un vector [48 x 1], y los diagramas de la derecha de (a) y (b) de la Figura 7 muestran la secuencia para construir un vector [16 x 1]. En el caso de la LFNST, se puede obtener un vector unidimensional x disponiendo secuencialmente datos 2D en el mismo orden que en (a) y (b) de la Figura 7.
La dirección de disposición de los datos de salida de la transformada primaria directa puede determinarse según un modo de intrapredicción del bloque actual. Por ejemplo, cuando el modo de intrapredicción del bloque actual está en la dirección horizontal con respecto a la dirección diagonal, los datos de salida de la transformada primaria directa pueden disponerse en el orden de (a) de la Figura 7, y cuando el modo de intrapredicción del bloque actual está en la dirección vertical con respecto a la dirección diagonal, los datos de salida de la transformada primaria directa pueden disponerse en el orden de (b) de la Figura 7.
Según un ejemplo, se puede aplicar un orden de disposición diferente de los órdenes de disposición de (a) y (b) de la Figura 7, y para derivar el mismo resultado (vector y) que cuando se aplican los órdenes de disposición de (a) y (b) de la Figura 7, los vectores de columna de la matriz G se pueden reorganizar según el orden de disposición. Es decir, es posible reorganizar los vectores de columna de G de modo que cada elemento que constituye el vector x siempre se multiplique por el mismo vector base de transformada.
Dado que la salida y derivada a través de la ecuación 9 es un vector unidimensional, cuando se requieren datos bidimensionales como datos de entrada en el proceso de usar el resultado de la transformación secundaria directa como entrada, por ejemplo, en el proceso de llevar a cabo la cuantificación o codificación residual, el vector y de salida de la ecuación 9 debe disponerse adecuadamente como datos 2D de nuevo.
La Figura 8 es un diagrama que ilustra una secuencia de disposición de datos de salida de una transformada secundaria directa en un vector bidimensional según un ejemplo.
En el caso de la LFNST, los valores de salida pueden disponerse en un bloque 2D según un orden de escaneo predeterminado. (a) de la Figura 8 muestra que cuando la salida y es un vector [16 x 1], los valores de salida se disponen en 16 posiciones del bloque 2D según un orden de escaneo diagonal. (b) de la Figura 8 muestra que cuando la salida y es un vector [8 x 1], los valores de salida se disponen en 8 posiciones del bloque 2D según el orden de escaneo diagonal, y las 8 posiciones restantes se rellenan con ceros. X en (b) de la Figura 8 indica que está lleno de cero.
Según otro ejemplo, dado que el orden en el que el vector de salida y se procesa en la realización de la cuantificación o codificación residual puede preestablecerse, el vector de salida y puede no disponerse en el bloque 2D como se muestra en la Figura 8. Sin embargo, en el caso de la codificación residual, la codificación de datos puede llevarse a cabo en unidades de bloque 2D (p. ej., 4x4) como, por ejemplo, CG (grupo de coeficientes, CG, por sus siglas en inglés) y, en este caso, los datos se disponen según un orden específico como en el orden de escaneo diagonal de la Figura 8.
Mientras tanto, el aparato de decodificación puede configurar el vector de entrada unidimensional y disponiendo la salida de datos bidimensionales a través de un proceso de descuantificación o similar según un orden de escaneo preestablecido para la transformación inversa. El vector de entrada y puede emitirse como el vector de salida x mediante la siguiente ecuación.
Ecuación 10
x = Gy
En el caso de la LFNST inversa, un vector de salida x puede derivarse multiplicando un vector de entrada y, que es un vector [16 x 1] o un vector [8 x 1], por una matriz G. Para la LFNST inversa, el vector de salida x puede ser un vector [48 x 1] o un vector [16 x 1].
El vector de salida x está dispuesto en un bloque bidimensional según el orden que se muestra en la Figura 7 y está dispuesto como datos bidimensionales, y estos datos bidimensionales se convierten en datos de entrada (o una parte de datos de entrada) de la transformación primaria inversa.
Por consiguiente, la transformación secundaria inversa es la opuesta al proceso de transformación secundaria directa en su conjunto, y en el caso de la transformación inversa, a diferencia de en la dirección directa, se aplica primero la transformación secundaria inversa, y luego se aplica la transformación primaria inversa.
En la LFNST inversa, se puede seleccionar una de 8 matrices [48 x 16] y 8 matrices [16 x 16] como matriz de transformación G. Si se aplica la matriz [48 x 16] o la matriz [16 x 16] depende del tamaño y la forma del bloque.
Además, 8 matrices pueden derivarse de cuatro conjuntos de transformada como se muestra en la Tabla 2 anterior, y cada conjunto de transformada puede consistir en dos matrices. Qué conjunto de transformada usar entre los 4 conjuntos de transformada se determina según el modo de intrapredicción y, más específicamente, el conjunto de transformada se determina basándose en el valor del modo de intrapredicción extendido considerando la intrapredicción de ángulo amplio (WAIP, por sus siglas en inglés). Qué matriz seleccionar de entre las dos matrices que constituyen el conjunto de transformada seleccionado se deriva a través de señalización de índice. Más específicamente, son posibles 0, 1 y 2 como el valor de índice transmitido, 0 puede indicar que no se aplica la LFNST, y 1 y 2 pueden indicar cualquiera de las dos matrices de transformada que constituyen un conjunto de transformada seleccionado basándose en el valor de modo de intrapredicción.
La Figura 9 es un diagrama que ilustra modos de intrapredicción de ángulo amplio según una realización del presente documento.
El valor de modo de intrapredicción general puede tener valores de 0 a 66 y de 81 a 83, y el valor de modo de intrapredicción extendido debido a WAIP puede tener un valor de -14 a 83, como se muestra. Los valores de 81 a 83 indican el modo CCLM (modelo lineal de componente cruzado, CCLM, por sus siglas en inglés), y los valores de -14 a -1 y los valores de 67 a 80 indican el modo de intrapredicción extendido debido a la aplicación WAIP.
Cuando el ancho del bloque actual de predicción es mayor que la altura, los píxeles de referencia superiores están generalmente más cerca de las posiciones dentro del bloque que se va a predecir. Por lo tanto, puede ser más preciso predecir en la dirección inferior izquierda que en la dirección superior derecha. Por el contrario, cuando la altura del bloque es mayor que el ancho, los píxeles de referencia izquierdos están generalmente cerca de las posiciones dentro del bloque que se va a predecir. Por lo tanto, puede ser más preciso predecir en la dirección superior derecha que en la dirección inferior izquierda. Por lo tanto, puede ser ventajoso aplicar el remapeo, es decir, modificación del índice de modo, al índice del modo de intrapredicción de ángulo amplio.
Cuando se aplica la intrapredicción de ángulo amplio, puede señalarse información sobre la intrapredicción existente, y después de analizar la información, puede remapearse la información al índice del modo de intrapredicción de ángulo amplio. Por lo tanto, el número total de modos de intrapredicción para un bloque específico (p. ej., un bloque no cuadrado de un tamaño específico) puede no cambiar y, es decir, el número total de modos de intrapredicción es 67, y la codificación de modo de intrapredicción para el bloque específico puede no cambiarse.
La Tabla 3 a continuación muestra un proceso de derivación de un modo intra modificado remapeando el modo de intrapredicción al modo de intrapredicción de ángulo amplio.
Tabla 3
En la Tabla 3, el valor de modo de intrapredicción extendido se almacena finalmente en la variable predModeIntra, y ISP_NO_SPLIT indica que el bloque de CU no se divide en subparticiones mediante la técnica de Intrasubparticiones (ISP, por sus siglas en inglés) adoptada actualmente en la norma VVC, y los valores de variable cIdx de 0, 1 y 2 indican el caso de componentes luma, Cb y Cr, respectivamente. La función log2 que se muestra en la Tabla 3 devuelve un valor log con una base de 2, y la funciónAbsdevuelve un valor absoluto.
La variable predModeIntra que indica el modo de intrapredicción y la altura y el ancho del bloque de transformada, etc., se usan como valores de entrada del proceso de mapeo del modo de intrapredicción de ángulo amplio, y el valor de salida es el modo de intrapredicción modificado predModeIntra. La altura y el ancho del bloque de transformada o del bloque de codificación pueden ser la altura y el ancho del bloque actual para remapear el modo de intrapredicción. En este momento, la variable whRatio que refleja la relación del ancho con el ancho puede establecerse en Abs(Log2(nW/nH)).
Para un bloque no cuadrado, el modo de intrapredicción puede dividirse en dos casos y modificarse.
En primer lugar, si se satisfacen todas las condiciones (1) ~ (3), (1) el ancho del bloque actual es mayor que la altura, (2) el modo de intrapredicción antes de la modificación es igual a o mayor que 2, (3) el modo de intrapredicción es menor que el valor derivado de (8 2 * whRatio) cuando la variable whRatio es mayor que 1, y es menor que 8 cuando la variable whRatio es menor que o igual a 1 [predModeIntra es menor que (whRatio > 1)? (8 2 * whRatio): 8], el modo de intrapredicción se establece en un valor 65 mayor que el modo de intrapredicción [predModeIntra se establece igual a (predModeIntra 65)].
Si es diferente de lo anterior, es decir, se cumplen las condiciones de (1) ~ (3), (1) la altura del bloque actual es mayor que el ancho, (2) el modo de intrapredicción antes de la modificación es menor que o igual a 66, (3) el modo de intrapredicción es mayor que el valor derivado de (60 - 2 * whRatio) cuando la variable whRatio es mayor que 1, y es mayor que 60 cuando la variable whRatio es menor que o igual a 1 [predModeIntra es mayor que (whRatio > 1)? (60 - 2 * whRatio): 60], el modo de intrapredicción se establece en un valor 67 menor que el modo de intrapredicción [predModeIntra se establece igual a (predModeIntra - 67)].
La Tabla 2 anterior muestra cómo se selecciona un conjunto de transformada basándose en el valor de modo de intrapredicción extendido por la WAIP en la LFNST. Como se muestra en la Figura 9, los modos 14 a 33 y los modos 35 a 80 son simétricos con respecto a la dirección de predicción alrededor del modo 34. Por ejemplo, el modo 14 y el modo 54 son simétricos con respecto a la dirección correspondiente al modo 34. Por lo tanto, el mismo conjunto de transformada se aplica a modos ubicados en direcciones mutuamente simétricas, y esta simetría también se refleja en la Tabla 2.
Mientras tanto, se supone que los datos de entrada de LFNST directa para el modo 54 son simétricos con los datos de entrada de LFNST directa para el modo 14. Por ejemplo, para el modo 14 y el modo 54, los datos bidimensionales se reordenan en datos unidimensionales según el orden de disposición que se muestra en (a) de la Figura 7 y (b) de la Figura 7, respectivamente. Además, se puede ver que los patrones en el orden que se muestra en (a) de la Figura 7 y (b) de la Figura 7 son simétricos con respecto a la dirección (dirección diagonal) indicada por el modo 34.
Mientras tanto, como se describió anteriormente, qué matriz de transformada de la matriz [48 x 16] y la matriz [16 x 16] se aplica a la LFNST se determina por el tamaño y la forma del bloque objetivo de transformada.
La Figura 10 es un diagrama que ilustra una forma de bloque a la que se aplica la LFNST. (a) de la Figura 10 muestra 4 x 4 bloques, (b) muestra 4 x 8 y 8 x 4 bloques, (c) muestra 4 x N o N x 4 bloques en los que N es 16 o más, (d) muestra 8 x 8 bloques, (e) muestra M x N bloques en los que M > 8, N > 8 y N > 8 o M > 8.
En la Figura 10, los bloques con bordes gruesos indican regiones a las que se aplica la LFNST. Para los bloques de (a) y (b) de la Figura 10, la LFNST se aplica a la región 4x4 superior izquierda, y para el bloque de (c) de la Figura 10, la LFNST se aplica individualmente las dos regiones 4x4 superiores izquierdas dispuestas continuamente. En (a), (b) y (c) de la Figura 10, dado que la LFNST se aplica en unidades de regiones 4x4, esta LFNST se denominará en lo sucesivo "LFNST 4x4". Según la dimensión de la matriz para G, se puede aplicar una matriz [16 x 16] o [16 x 8].
Más específicamente, la matriz [16 x 8] se aplica al bloque 4x4 (4x4 TU o 4x4 CU) de (a) de la Figura 10 y la matriz [16 x 16] se aplica a los bloques en (b) y (c) de la Figura 10. Esto es para ajustar la complejidad computacional para el peor caso a 8 multiplicaciones por muestra.
Con respecto a (d) y (e) de la Figura 10, la LFNST se aplica a la región superior izquierda 8x8, y esta LFNST se denomina en lo sucesivo "LFNST 8x8". Como matriz de transformación correspondiente, se puede aplicar una matriz [48 x 16] o una matriz [48 x 8]. En el caso de la LFNST directa, dado que el vector [48 x 1] (vector x en la ecuación 9) se introduce como datos de entrada, todos los valores de muestra de la región superior izquierda 8x8 no se usan como valores de entrada de la LFNST directa. Es decir, como puede verse en el orden izquierdo de (a) de la Figura 7 o el orden izquierdo de (b) de la Figura 7, el vector [48 x 1] puede construirse basándose en muestras que pertenecen a los 3 bloques 4x4 restantes mientras sale del bloque 4x4 inferior derecho como está.
La matriz [48 x 8] se puede aplicar a un bloque de 8x8 (8x8 TU u 8x8 CU) en (d) de la Figura 10, y la matriz [48x16] se puede aplicar al bloque de 8x8 en (e) de la Figura 10. Esto también es para ajustar la complejidad computacional para el peor caso a 8 multiplicaciones por muestra.
Dependiendo de la forma del bloque, cuando se aplica la LFNST directa correspondiente (4x4 LFNST u 8x8 LFNST), se generan 8 o 16 datos de salida (vector y en la ecuación 9, vector [8 x 1] o [16 x 1]). En la LFNST directa, el número de datos de salida es igual a o menor que el número de datos de entrada debido a las características de la matriz GT La Figura 11 es un diagrama que ilustra una disposición de datos de salida de una LFNST directa según un ejemplo, y muestra un bloque en el que los datos de salida de la LFNST directa están dispuestos según una forma de bloque.
El área sombreada en la parte superior izquierda del bloque que se muestra en la Figura 11 corresponde al área en la que se encuentran los datos de salida de la LFNST directa, las posiciones marcadas con 0 indican muestras llenas con 0 valores, y el área restante representa regiones que no cambian por la LFNST directa. En el área no cambiada por la LFNST, los datos de salida de la transformada primaria directa permanecen sin cambios.
Como se ha descrito anteriormente, dado que la dimensión de la matriz de transformada aplicada varía según la forma del bloque, el número de datos de salida también varía. Como muestra la Figura 11, los datos de salida de la LFNST directa pueden no llenar completamente el bloque 4x4 superior izquierdo. En el caso de (a) y (d) de la Figura 11, se aplican una matriz [16 x 8] y una matriz [48 x 8] al bloque indicado por una línea gruesa o una región parcial dentro del bloque, respectivamente, y se genera un vector [8 x 1] como la salida de la LFNST directa. Es decir, según el orden de escaneo que se muestra en (b) de la Figura 8, solo 8 datos de salida pueden llenarse como se muestra en (a) y (d) de la Figura 11, y 0 puede llenarse en las 8 posiciones restantes. En el caso del bloque aplicado LFNST de (d) de la Figura 10, como se muestra en (d) de la Figura 11, dos bloques 4x4 en la parte superior derecha e inferior izquierda adyacentes al bloque 4x4 superior izquierdo también se rellenan con 0 valores.
Como se ha descrito anteriormente, básicamente, mediante la señalización del índice LFNST, se especifica si aplicar la LFNST y la matriz de transformada a aplicar. Como se muestra en la Figura 11, cuando se aplica la LFNST, dado que el número de datos de salida de la LFNST directa puede ser igual a o menor que el número de datos de entrada, una región rellena con un valor cero se produce de la siguiente manera.
1) Como se muestra en (a) de la Figura 11, muestras de la 8.a y posteriores posiciones en el orden de escaneo en el bloque 4x4 superior izquierdo, es decir, muestras de la 9.a a la<1 6>.a.
2) Como se muestra en (d) y (e) de la Figura 11, cuando se aplica la matriz [48 x 16] o la matriz [48 x 8], dos bloques 4x4 adyacentes al bloque 4x4 superior izquierdo o el segundo y tercer bloques 4x4 en el orden de escaneo.
Por lo tanto, si existen datos distintos de cero comprobando las áreas 1) y 2), es seguro que no se aplique la LFNST, de modo que puede omitirse la señalización del índice de LFNST correspondiente.
Según un ejemplo, por ejemplo, en el caso de LFNST adoptada en la norma VVC, dado que la señalización del índice de LFNST se lleva a cabo después de la codificación residual, el aparato de codificación puede saber si hay datos distintos de cero (coeficientes significativos) para todas las posiciones dentro del bloque de TU o CU a través de la codificación residual. Por consiguiente, el aparato de codificación puede determinar si llevar a cabo la señalización en el índice de LFNST basándose en la existencia de los datos distintos de cero, y el aparato de decodificación puede determinar si se analiza el índice de LFNST. Cuando los datos distintos de cero no existen en el área designada en 1) y 2) anteriores, se lleva a cabo la señalización del índice LFNST.
Dado que se aplica un código unario truncado como un método de binarización para el índice LFNST, el índice LFNST consiste en hasta dos binarios, y 0, 10 y 11 se asignan como códigos binarios para posibles valores de índice LFNST de 0, 1 y 2, respectivamente. En el caso de la LFNST adoptada actualmente para VVC, se aplica una codificación CABAC basada en contexto al primer bin (codificación regular), y se aplica una codificación de derivación al segundo bin. El número total de contextos para el primer bin es 2, cuando (DCT-2, DCT-2) se aplica como un par de transformadas primarias para las direcciones horizontal y vertical, y un componente luma y un componente croma se codifican en un tipo de árbol dual, se asigna un contexto y se aplica otro contexto para los casos restantes. La codificación del índice LFNST se muestra en una tabla de la siguiente manera.
Tabla 4
Mientras tanto, para la LFNST adoptada, se pueden aplicar los siguientes métodos de simplificación.
(i) Según un ejemplo, el número de datos de salida para la LFNST directa puede limitarse a un máximo de 16.
En el caso de (c) de la Figura 10, la LFNST 4x4 puede aplicarse a dos regiones 4x4 adyacentes a la parte superior izquierda, respectivamente y, en este caso, puede generarse un máximo de 32 datos de salida de LFNST. Cuando el número de datos de salida para LFNST directa se limita a un máximo de 16, en el caso de bloques (TU o CU) 4xN/Nx4 (N> 16), la LFNST 4x4 solo se aplica a una región 4x4 en la parte superior izquierda, la LFNS<t>puede aplicarse solo una vez a todos los bloques de la Figura 10. A través de esto, la implementación de la codificación de imágenes puede simplificarse.
La Figura 12 muestra que el número de datos de salida para la LFNST directa está limitado a un máximo de 16 según un ejemplo. Como en la Figura 12, cuando la LFNST se aplica a la región 4x4 más superior izquierda en un bloque 4xN o Nx4 en el que N es 16 o más, los datos de salida de la LFNST directa se convierten en 16 piezas.
(ii) Según un ejemplo, puede aplicarse adicionalmente el valor de salida de cero a una región a la que no se aplica la LFNST. En este documento, el valor de salida de cero puede significar valores de llenado de todas las posiciones que pertenecen a una región específica con un valor de 0. Es decir, el valor de salida cero puede aplicarse a una región que no cambia debido a la LFNST y mantiene el resultado de la transformación primaria directa. Como se ha descrito anteriormente, dado que la LFNST se divide en la LFNST 4x4 y la LFNST 8x8, la salida de cero puede dividirse en dos tipos ((ii)-(A) y (ii)-(B)) como se describe a continuación.
(ii)-(A) Cuando se aplica la 4x4 LFNST, puede ponerse a cero una región a la que no se aplica la 4x4 LFNST. La Figura 13 es un diagrama que ilustra la salida a cero en un bloque al que se aplica la LFNST 4x4 según un ejemplo.
Como se muestra en la Figura 13, con respecto a un bloque al que se aplica la LFNST 4x4, es decir, para todos los bloques en (a), (b) y (c) de la Figura 11, toda la región a la que no se aplica la LFNST puede llenarse con ceros.
Por otra parte, (d) de la Figura 13 muestra que cuando el valor máximo del número de los datos de salida de la LFNST directa está limitado a 16 como se muestra en la Figura 12, la salida de cero se lleva a cabo en los bloques restantes a los que no se aplica la LFNST 4x4.
(ii) -(B) Cuando se aplica la LFNST 8x8, puede ponerse a cero una región a la que no se aplica la LFNST 8x8. La Figura 14 es un diagrama que ilustra la salida a cero en un bloque al que se aplica la LFNST 8x8 según un ejemplo.
Como se muestra en la Figura 14, con respecto a un bloque al que se aplica la LFNST 8x8, es decir, para todos los bloques en (d) y (e) de la Figura 11, toda la región a la que no se aplica la LFNST puede llenarse con ceros.
(iii) Debido al cero presentado en (ii) anterior, el área llena de ceros puede no ser la misma cuando se aplica la LFNST. Por consiguiente, es posible comprobar si los datos distintos de cero existen según el cero propuesto en (ii) en un área más amplia que en el caso de la LFNST de la Figura 11.
Por ejemplo, cuando se aplica (ii)-(B), después de comprobar si existen los datos distintos de cero donde el área llena de valores cero en (d) y (e) de la Figura 11, además del área llena de 0 adicionalmente en la Figura 14, la señalización para el índice LFNST puede llevarse a cabo solo cuando no existen los datos distintos de cero.
Por supuesto, incluso si se aplica el cero propuesto en (ii), es posible comprobar si los datos distintos de cero existen de la misma manera que la señalización de índice de LFNST existente. Es decir, después de comprobar si existen datos distintos de cero en el bloque relleno con ceros en la Figura 11, puede aplicarse la señalización de índice de LFNST. En este caso, el aparato de codificación solo realiza el cero de salida y el aparato de decodificación no supone el cero de salida, es decir, la comprobación de solo si los datos distintos de cero existen solo en el área marcada explícitamente como 0 en la Figura 11, puede llevar a cabo el análisis del índice de LFNST.
Alternativamente, según otro ejemplo, la salida a cero puede llevarse a cabo como se muestra en la Figura 15. La Figura 15 es un diagrama que ilustra la salida a cero en un bloque al que se aplica la LFNST 8x8 según otro ejemplo.
Como se muestra en las Figuras 13 y 14, la salida a cero puede aplicarse a todas las regiones distintas de la región a la que se aplica la LFNST, o la salida a cero puede aplicarse solo a una región parcial como se muestra en la Figura 15. La salida a cero se aplica solo a regiones distintas de la región superior izquierda 8x8 de la Figura 15, la salida a cero puede no aplicarse al bloque inferior derecho 4x4 dentro de la región superior izquierda 8x8.
Se pueden derivar diversas realizaciones en las que se aplican combinaciones de los métodos de simplificación ((i), (ii)-(A), (ii)-(B), (iii)) para la LFNST. Por supuesto, las combinaciones de los métodos de simplificación anteriores no se limitan a la siguiente realización, y cualquier combinación puede aplicarse a la LFNST.
Realización
- Limitar el número de datos de salida para LFNST directa a un máximo de 16 -> (i)
- Cuando se aplica la LFNST 4x4, todas las áreas a las que no se aplica la LFNST 4x4 son de salida cero (ii)-(A) - Cuando se aplica la LFNST 8x8, todas las áreas a las que no se aplica la LFNST 8x8 son de salida cero -> (ii)-(B) - Después de comprobar si existen los datos distintos de cero también el área existente llena con valor cero y el área llena con ceros debido a ceros de salida adicionales ((ii)-(A), (ii)-(B)), el índice LFNST se señala solo cuando los datos distintos de cero no existen (iii)
En el caso de la realización, cuando se aplica la LFNST, un área en la que pueden existir los datos de salida distintos de cero se limita al interior del área 4x4 superior izquierda. Con más detalle, en el caso de (a) de la Figura 13 y (a) de la Figura 14, la 8.a posición en el orden de escaneo es la última posición donde pueden existir datos distintos de cero. En el caso de (b) y (c) de la Figura 13 y (b) de la Figura 14, la 16.a posición en el orden de escaneo (es decir, la posición del borde inferior derecho del bloque 4x4 superior izquierdo) es la última posición en la que pueden existir datos distintos de 0.
Por lo tanto, cuando se aplica la LFNST, después de comprobar si los datos distintos de cero existen en una posición en la que no se permite el proceso de codificación residual (en una posición más allá de la última posición), se puede determinar si se señala el índice de LFNST.
En el caso del método de salida cero propuesto en (ii), dado que el número de datos generados finalmente cuando se aplican tanto la transformada primaria como la LFNST, puede reducirse la cantidad de cálculo requerida para llevar a cabo todo el proceso de transformación. Es decir, cuando se aplica la LFNST, dado que se aplica la salida cero a los datos de salida de transformada primaria directa existentes en una región a la que no se aplica la LFNST, no hay necesidad de generar datos para la región que se vuelven salidas cero durante la realización de la transformada primaria directa. Por consiguiente, es posible reducir la cantidad de cálculo requerida para generar los datos correspondientes. Los efectos adicionales del método de salida cero propuesto en (ii) se resumen de la siguiente manera.
En primer lugar, como se describió anteriormente, se reduce la cantidad de cálculo requerida para llevar a cabo todo el proceso de transformada.
En particular, cuando se aplica (ii)-(B), se reduce la cantidad de cálculo para el peor caso, de modo que puede aligerarse el proceso de transformada. En otras palabras, en general, se requiere una gran cantidad de cálculo para llevar a cabo una transformación primaria de gran tamaño. Mediante aplicación de (ii)-(B), el número de datos derivados como resultado de llevar a cabo la LFNST directa puede reducirse a 16 o menos. Además, a medida que aumenta el tamaño de todo el bloque (TU o CU), se aumenta adicionalmente el efecto de reducir la cantidad de operación de transformada.
En segundo lugar, la cantidad de cálculo requerida para todo el proceso de transformada puede reducirse y, de esta manera, se reduce el consumo de potencia requerido para llevar a cabo la transformada.
En tercer lugar, se reduce la latencia implicada en el proceso de transformada.
La transformación secundaria como, por ejemplo, la LFNST, añade una cantidad computacional a la transformación primaria existente, aumentando así el tiempo de retardo global implicado en la realización de la transformación. En particular, en el caso de la intrapredicción, dado que los datos reconstruidos de bloques vecinos se usan en el proceso de predicción, durante la codificación, un aumento en la latencia debido a una transformación secundaria conduce a un aumento en la latencia hasta la reconstrucción. Esto puede conducir a un aumento en la latencia global de la codificación de intrapredicción.
Sin embargo, si se aplica el valor de cero sugerido en (ii), el tiempo de retardo de llevar a cabo la transformada primaria puede reducirse en gran medida cuando se aplica LFNST, el tiempo de retardo para toda la transformada se mantiene o reduce, de modo que el aparato de codificación puede implementarse de manera más sencilla.
En la intrapredicción convencional, un bloque que se va a codificar actualmente se considera una unidad de codificación y la codificación se ha llevado a cabo sin división. Sin embargo, los medios de codificación intrasubparticiones (ISP) llevan a cabo la codificación de intrapredicción dividiendo un bloque que va a codificarse actualmente en una dirección horizontal o una dirección vertical. En este caso, un bloque reconstruido puede generarse llevando a cabo la codificación/decodificación en unidades de bloques divididos, y el bloque reconstruido puede usarse como un bloque de referencia del siguiente bloque dividido. Según una realización, en la codificación ISP, un bloque de codificación puede dividirse en dos o cuatro subbloques y codificarse, y en ISP, en un subbloque, la intrapredicción se lleva a cabo con referencia a un valor de píxel reconstruido de un subbloque ubicado en el lado izquierdo adyacente o en el lado superior adyacente. En lo sucesivo, "codificación" puede usarse como un concepto que incluye tanto la codificación llevada a cabo por un aparato de codificación como la decodificación llevada a cabo por un aparato de decodificación.
La Tabla 5 representa el número de subbloques divididos según tamaños de bloque cuando se aplica ISP, y las subparticiones divididas según ISP pueden denominarse bloques de transformada (TU).
Tabla 5
La ISP es para dividir un bloque predicho como luma intra en dos o cuatro subparticiones en una dirección vertical o una dirección horizontal según el tamaño del bloque. Por ejemplo, el tamaño mínimo de bloque al que se puede aplicar la ISP es 4 x 8 u 8 x 4. Cuando el tamaño del bloque es mayor que 4 x 8 u 8 x 4, el bloque se divide en 4 subparticiones.
Las Figuras 16 y 17 ilustran un ejemplo de un subbloque en el que se divide un bloque de codificación y, más específicamente, la Figura 16 ilustra un ejemplo de división de un caso en el que un bloque de codificación (ancho (W) X altura (H)) es 4 x 8 bloques u 8 x 4 bloques, y la Figura 17 ilustra un ejemplo de división de un caso en el que un bloque de codificación no es 4 x 8 bloques, 8 x 4 bloques o 4 x 4 bloques.
Cuando se aplica ISP, los subbloques se codifican secuencialmente, por ejemplo, horizontal o verticalmente, de izquierda a derecha o de arriba a abajo según un tipo de división, y después de llevar a cabo un proceso de reconstrucción a través de transformada inversa e intrapredicción para un subbloque, puede llevarse a cabo la codificación para el siguiente subbloque. Para el subbloque más a la izquierda o más superior, se hace referencia a un píxel reconstruido del bloque de codificación ya codificado, como en un método de intrapredicción convencional. Además, cuando cada lado de un subbloque interno posterior no es adyacente a un subbloque anterior, para derivar píxeles de referencia adyacentes al lado correspondiente, se hace referencia a los píxeles reconstruidos de un bloque de codificación adyacente ya codificado, como en un método de intrapredicción convencional.
En el modo de codificación de ISP, todos los subbloques pueden codificarse con el mismo modo de intrapredicción, y una bandera que indica si usar codificación de ISP y una bandera que indica si dividir (horizontal o verticalmente) en qué dirección puede señalizarse. Como se ilustra en las Figuras 16 y 17, el número de subbloques puede ajustarse a 2 o 4 según una forma de bloque, y cuando el tamaño (ancho x altura) de un subbloque es menor que 16, puede restringirse de modo que no se permita la división en el subbloque correspondiente o no se aplique la propia codificación de ISP.
En el caso del modo de predicción ISP, una unidad de codificación se divide en dos o cuatro bloques de partición, es decir, subbloques y se predice, y el mismo modo de intrapredicción se aplica a los dos o cuatro bloques de partición divididos.
Como se ha descrito anteriormente, en la dirección de división, la dirección horizontal (cuando una unidad de codificación MxN que tiene longitudes horizontal y vertical de M y N, respectivamente, se divide en la dirección horizontal, si la unidad de codificación MxN se divide en dos, la unidad de codificación MxN se divide en Mx(N/2) bloques, y si la unidad de codificación MxN se divide en cuatro bloques, la unidad de codificación MxN se divide en Mx(N/4) bloques) y la dirección vertical (cuando una unidad de codificación MxN se divide en una dirección vertical, si la unidad de codificación MxN se divide en dos, y la unidad de codificación MxN se divide en (M/2)xN bloques, y si la unidad de codificación MxN se divide en cuatro, la unidad de codificación MxN se divide en (M/4)xN bloques) son ambos posibles. Cuando la unidad de codificación MxN se divide en la dirección horizontal, los bloques de partición se codifican en un orden de arriba abajo, y cuando la unidad de codificación MxN se divide en la dirección vertical, los bloques de partición se codifican en orden de izquierda a derecha. El bloque de partición codificado actualmente puede predecirse con referencia a los valores de píxel reconstruidos del bloque de partición superior (izquierdo) en el caso de la división de dirección horizontal (vertical).
Se puede aplicar una transformada a una señal residual generada por el método de predicción de ISP en unidades de bloques de partición. La tecnología de selección de transformada múltiple (MTS) basada en una combinación DST-7/DCT-8, así como la DCT-2 existente, puede aplicarse a una transformada primaria (transformada de núcleo) basada en una dirección directa, y una transformada no separable de baja frecuencia (LFNST) directa puede aplicarse a coeficientes de transformada generados según la transformada primaria para generar un coeficiente de transformada modificado final.
Es decir, se puede aplicar una LFNST a bloques de partición divididos aplicando un modo de predicción de ISP, y se aplica el mismo modo de intrapredicción a los bloques de partición divididos, como se describe más arriba. Por consiguiente, cuando se selecciona el conjunto de LFNST derivado basándose en el modo de intrapredicción, el conjunto de LFNST derivado puede aplicarse a todos los bloques de partición. Es decir, debido a que se aplica el mismo modo de intrapredicción a todos los bloques de partición, puede aplicarse el mismo conjunto de LFNST a todos los bloques de partición.
Según una realización, una LFNST puede aplicarse solo a bloques de transformada que tienen tanto una longitud horizontal como una longitud vertical de 4 o más. Por lo tanto, cuando la longitud horizontal o vertical del bloque de partición dividido según el método de predicción de ISP es menor que 4, no se aplica la LFNST y no se señala un índice de LFNST. Además, cuando se aplica la LFNST a cada bloque de partición, el bloque de partición correspondiente puede considerarse como un bloque de transformada. Cuando no se aplica el método de predicción de ISP, la LFNST puede aplicarse al bloque de codificación.
Se describirá en detalle un método de aplicación de una LFNST a cada bloque de partición.
Según una realización, después de que se aplique una LFNST directa a bloques de partición individuales, solo se dejan 16 (8 o 16) coeficientes máximos en la región 4x4 superior izquierda en el orden de escaneo de coeficientes de transformada, y luego se puede aplicar cero en el que las posiciones y regiones restantes se rellenan todas con un valor de 0.
Alternativamente, según una realización, cuando una longitud de un lado del bloque de partición es 4, la LFNST se aplica solo a la región 4x4 superior izquierda, y cuando una longitud de todos los lados del bloque de partición, es decir, el ancho y la altura es 8 o más, la LFNST se puede aplicar a los 48 coeficientes restantes, excepto para una región 4x4 inferior derecha dentro de una región 8x8 superior izquierda.
Alternativamente, según una realización, para ajustar la complejidad computacional del peor caso a 8 multiplicaciones por muestra, cuando cada bloque de partición es 4x4 u 8x8, solo se pueden emitir 8 coeficientes de transformada después de aplicar la LFNST directa. Es decir, cuando el bloque de partición es 4x4, se puede aplicar una matriz 8x16 como una matriz de transformada, y cuando el bloque de partición es 8x8, se puede aplicar una matriz 8x48 como una matriz de transformada.
En la norma VVC actual, la señalización de índice LFNST se lleva a cabo en unidades de unidades de codificación. Por lo tanto, en el modo de predicción de ISP y cuando se aplica una LFNST a todos los bloques de partición, puede aplicarse el mismo valor de índice de LFNST a los bloques de partición correspondientes. Es decir, cuando el valor del índice de LFNST se transmite una vez en un nivel de unidad de codificación, el índice de LFNST correspondiente puede aplicarse a todos los bloques de partición en la unidad de codificación. Como se ha descrito anteriormente, el valor del índice de LFNST puede tener valores de 0, 1 y 2, donde 0 representa un caso en el que no se aplica una LFNST, y 1 y 2 indican dos matrices de transformada existentes en un conjunto de LFNST cuando se aplica una LFNST.
Como se ha descrito anteriormente, el conjunto de LFNST se determina mediante el modo de intrapredicción, y en el caso del modo de predicción ISP, debido a que todos los bloques de partición en la unidad de codificación se predicen en el mismo modo de intrapredicción, los bloques de partición pueden referirse al mismo conjunto de LFNST.
Como otro ejemplo, la señalización de índice de LFNST todavía se lleva a cabo en unidades de una unidad de codificación, pero en el caso del modo de predicción de ISP, no se determina si aplicar uniformemente una LFNST a todos los bloques de partición, y para cada bloque de partición, se puede determinar si aplicar el valor de índice de LFNST señalizado a un nivel de unidad de codificación o si no aplicar la LFNST a través de una condición separada. En este caso, se puede señalizar una condición separada en forma de una bandera para cada bloque de partición a través de un flujo de bits, y cuando un valor de bandera es 1, se aplica un valor de índice de LFNST señalizado al nivel de unidad de codificación, y cuando un valor de bandera es 0, puede no aplicarse la LFNST.
En una unidad de codificación a la que se aplica el modo ISP, se describe a continuación un ejemplo de aplicación de una LFNST cuando una longitud de un lado del bloque de partición es menor que 4.
En primer lugar, cuando el tamaño del bloque de partición es Nx2 (2xN), se puede aplicar una LFNST a la región superior izquierda Mx2 (2xM) (donde M < N). Por ejemplo, cuando M = 8, la región superior izquierda se convierte en 8x2 (2x8) y, por lo tanto, una región en la que existen 16 señales residuales puede ser una entrada de una LFNST directa, y se puede aplicar una matriz de transformada directa Rx16 (R < 16).
Aquí, la matriz LFNST directa puede ser una matriz adicional separada distinta de la matriz incluida en el estándar VVC actual. Además, para el control de complejidad del peor caso, se puede usar para la transformación una matriz de 8x16 en la que solo se muestrean los 8 vectores de fila superiores de una matriz de 16x16. El método de control de complejidad se describirá en detalle más adelante.
En segundo lugar, cuando el tamaño del bloque de partición es N*1 (1XN), puede aplicarse una LFNST a una región superior izquierda M*1 (1xM) (donde M < N). Por ejemplo, cuando M = 16, la región superior izquierda se convierte en 16x1 (1x16) y, por lo tanto, una región en la que existen 16 señales residuales puede ser una entrada de la LFNST directa, y se puede aplicar una matriz de transformada directa de Rx16 (R < 16).
Aquí, la matriz LFNST directa correspondiente puede ser una matriz adicional separada distinta de la matriz incluida en el estándar VVC actual. Además, para el control de complejidad del peor caso, se puede usar para la transformación una matriz 8x16 en la que solo se muestrean los 8 vectores de fila superiores de la matriz 16x16. El método de control de complejidad se describirá en detalle más adelante.
La primera realización y la segunda realización pueden aplicarse simultáneamente, o puede aplicarse una cualquiera de las dos realizaciones. En particular, en el caso de la segunda realización, debido a que se considera una transformada primaria en una LFNST, se observó a través de experimentos que la mejora del rendimiento de compresión que puede obtenerse en la LFNST existente es relativamente pequeña en comparación con un coste de señalización del índice de LFNST. Sin embargo, en el caso de la primera realización, se observó una mejora del rendimiento de compresión similar a la que se podría obtener a partir de la LFNST convencional. Es decir, en el caso de ISP, puede comprobarse mediante experimentos que la aplicación de LFNST para 2xN y Nx2 contribuye a un rendimiento de compresión real.
En una LFNST en la VVC actual, se aplica simetría entre modos de intrapredicción. El mismo conjunto de LFNST se aplica a dos modos direccionales dispuestos alrededor de un modo 34 (predicción en una dirección diagonal de 45 grados hacia la parte inferior derecha), por ejemplo, el mismo conjunto de LFNST se aplica a un modo 18 (modo de predicción de dirección horizontal) y un modo 50 (modo de predicción de dirección vertical). Sin embargo, en los modos 35 a 66, cuando se aplica una LFNST directa, los datos de entrada se transponen y luego se aplica una LFNST.
La VVC soporta un modo de intrapredicción de ángulo amplio (WAIP), y se obtiene un conjunto de LFNST basándose en el modo de intrapredicción modificado teniendo en cuenta el modo de WAIP. Para modos extendidos por WAIP, el conjunto de LFNST se determina usando simetría, como en el modo de dirección de intrapredicción general. Por ejemplo, debido a que un modo -1 es simétrico con un modo 67, se aplica el mismo conjunto de LFNST, y debido a que un modo -14 es simétrico con un modo 80, se aplica el mismo conjunto de LFNST. Los modos 67 a 80 aplican una transformada de LFNST después de transponer datos de entrada antes de aplicar una LFNST directa.
En el caso de la LFNST aplicada al bloque Mx2 (Mx1) superior izquierdo, debido a que el bloque al que se aplica la LFNST no es cuadrado, no se puede aplicar la simetría a la LFNST. Por lo tanto, en lugar de aplicar la simetría basada en el modo de intrapredicción, como en la LFNST de la T abla 2, se puede aplicar la simetría entre el bloque Mx2 (Mx1) y el bloque 2xM (1xM).
La Figura 18 es un diagrama que ilustra la simetría entre los bloques Mx2 (Mx1) y los bloques 2xM (1xM) según una realización.
Como se ilustra en la Figura 18, debido a que puede considerarse que un modo 2 en el bloque Mx2 (Mx1) es simétrico con un modo 66 en el bloque 2xM (1xM), el mismo conjunto LFNST puede aplicarse al bloque 2xM (1xM) y al bloque Mx2 (Mx1).
En este caso, para aplicar el conjunto de LFNST aplicado al bloque Mx2 (Mx1) al bloque de 2xM (1*M), el conjunto de LFNST se selecciona basándose en el modo 2 en lugar del modo 66. Es decir, antes de aplicar la LFNST directa, después de transponer datos de entrada del bloque de 2xM (1xM), se puede aplicar la LFNST.
La Figura 19 es un diagrama que ilustra un ejemplo de transposición de un bloque de 2xM según una realización.
(a) de la Figura 19 es un diagrama que ilustra que una LFNST puede aplicarse leyendo datos de entrada en orden de primero columna para un bloque de 2xM, y (b) de la Figura 19 es un diagrama que ilustra que una LFNST puede aplicarse leyendo datos de entrada en orden de primero fila para un bloque de Mx2 (Mx1). Un método de aplicación de una LFNST al bloque superior izquierdo Mx2 (Mx1) o 2xM (Mx1) se describe de la siguiente manera.
1. En primer lugar, como se ilustra en (a) y (b) de la Figura 19, los datos de entrada se disponen para configurar un vector de entrada de la LFNST directa. Por ejemplo, con referencia a la Figura 18, para un bloque Mx2 predicho en un modo 2, se sigue el orden en (b) de la Figura 19, y para un bloque 2xM predicho en un modo 66, los datos de entrada se disponen en el orden de (a) de la Figura 19 y luego se puede aplicar el conjunto de LFNST para el modo 2.
2. Para el bloque Mx2 (Mx1), el conjunto LFNST se determina en base a un modo de intrapredicción modificado en consideración de WAIP. Como se ha descrito anteriormente, se establece una relación de mapeo preestablecida entre el modo de intrapredicción y el conjunto de LFNST, que puede representarse mediante una tabla de mapeo como se muestra en la Tabla 2.
Para un bloque de 2xM (1xM), se obtiene un modo simétrico alrededor de un modo de predicción (modo 34 en el caso del estándar VVC) en una dirección diagonal de 45 grados hacia abajo desde el modo de intrapredicción modificado en consideración de WAIP, y luego se determina el conjunto de LFNST basándose en el modo simétrico correspondiente y la tabla de mapeo. Un modo simétrico (y) alrededor del modo 34 puede derivarse a través de la siguiente ecuación. La tabla de mapeo se describirá con más detalle a continuación.
Ecuación 11
Si 2 < x < 66. y = 68 - x,
de lo contrario (X < -1 or X > 67 ), y = 66 - X
3. Cuando se aplica una LFNST directa, los coeficientes de transformada pueden derivarse multiplicando los datos de entrada preparados en un proceso 1 por un núcleo de LFNST. Un núcleo de LFNST puede seleccionarse de un conjunto de LFNST determinado en un proceso 2 y un índice de LFNST predeterminado.
Por ejemplo, cuando M = 8 y se aplica una matriz 16x16 como el núcleo LFNST, se pueden generar 16 coeficientes de transformada multiplicando la matriz por 16 datos de entrada. Los coeficientes de transformada generados pueden disponerse en la región superior izquierda 8x2 o 2x8 en el orden de escaneo usado en la norma VVC.
La Figura 20 ilustra el orden de escaneo para regiones 8x2 o 2x8 según una realización.
Todas las regiones distintas de la región superior izquierda 8x2 o 2x8 pueden llenarse con valores cero (salida de cero) o los coeficientes de transformada existentes a los que se aplica una transformada primaria pueden mantenerse tal como están. El índice de LFNST predeterminado puede ser uno de los valores de índice de LFNST (0, 1, 2) intentados cuando se calcula un coste de RD mientras se cambia el valor de índice de LFNST en un proceso de codificación.
En el caso (p. ej., 8 multiplicaciones/muestras) de una configuración que ajusta la complejidad computacional para el peor caso hasta un cierto nivel o menos, por ejemplo, después de generar solo 8 coeficientes de transformada multiplicando una matriz de 8x16 que toma solo las 8 filas superiores de la matriz de 16x16, se pueden disponer 8 coeficientes de transformada en el orden de escaneo de la Figura 20, y se puede aplicar cero a las regiones de coeficientes restantes. El control de complejidad para el peor caso se describirá más adelante.
4. Cuando se aplica una LFNST inversa, se selecciona un número preestablecido (p. ej., 16) de coeficientes de transformada como vectores de entrada, y el conjunto de LFNST obtenido de un proceso 2 y el núcleo de LFNST (p. ej., matriz 16x16) derivado del índice de LFNST analizado y luego multiplicando el núcleo de LFNST y el vector de entrada correspondiente, se puede derivar el vector de salida.
En el caso de un bloque Mx2 (Mx1), los vectores de salida pueden disponerse en el orden de primero fila de (b) de la Figura 19, y en el caso del bloque 2xM (1xM), los vectores de salida pueden disponerse en el orden de primero columna de (a) de la Figura 19.
Las regiones restantes, excepto una región en la que el vector de salida correspondiente está dispuesto dentro de la región superior izquierda Mx2 (Mx1) o 2xM (Mx2) y una región distinta de la región superior izquierda Mx2 (Mx1) o 2xM (Mx2) en el bloque de partición pueden ser todas de cero con valores cero o pueden configurarse para mantener coeficientes de transformada reconstruidos tal como están a través de procesos de codificación residual y cuantificación inversa.
Cuando se configura el vector de entrada, como en el N.° 3, los datos de entrada pueden disponerse en el orden de escaneo de la Figura 20, y para controlar la complejidad computacional para el peor caso hasta un cierto nivel o menos, un vector de entrada puede configurarse reduciendo el número de datos de entrada (p. ej., 8 en lugar de 16).
Por ejemplo, cuando M = 8, si se usan 8 datos de entrada, solo la matriz 16x8 izquierda puede tomarse de la matriz 16x16 correspondiente y multiplicarse para obtener 16 datos de salida. El control de complejidad para el peor caso se describirá más adelante.
En la realización de más arriba, cuando se aplica LFNST, se presenta un caso en el que se aplica simetría entre un bloque Mx2 (Mx1) y un bloque 2xM (1xM), pero según otro ejemplo, se pueden aplicar diferentes conjuntos de LFNST a cada una de las dos formas de bloque.
En lo sucesivo, se describirán varios ejemplos de una configuración de conjunto de LFNST para el modo ISP y un método de mapeo que usa el modo de intrapredicción.
En el caso de un modo ISP, la configuración del conjunto de LFNST puede ser diferente del conjunto de LFNST existente. En otras palabras, pueden aplicarse núcleos diferentes de los núcleos de LFNST existentes, y puede aplicarse una tabla de mapeo diferente de la tabla de mapeo entre un índice de modo de intrapredicción aplicado al estándar de VVC actual y el conjunto de LFNST. Una tabla de mapeo aplicada al estándar VVC actual puede ser la misma que la de la Tabla 2.
En la Tabla 2, un valor de preModeIntra significa un valor de modo de intrapredicción cambiado en consideración a WAIP, y un valor de lfnstTrSetIdx es un valor de índice que indica un conjunto de LFNST específico. Cada conjunto de LFNST está configurado con dos núcleos de LFNST.
Cuando se aplica el modo de predicción de ISP, si tanto una longitud horizontal como una longitud vertical de cada bloque de partición son iguales a o mayores que 4, se pueden aplicar los mismos núcleos que los núcleos de LFNST aplicados en la norma VVC actual, y la tabla de mapeo se puede aplicar tal cual está. Se puede aplicar una tabla de mapeo y núcleos de LFNST diferentes del estándar VVC actual.
Cuando se aplica el modo de predicción de ISP, cuando una longitud horizontal o una longitud vertical de cada bloque de partición es menor que 4, se puede aplicar una tabla de mapeo y núcleos de LFNST diferentes de los de la norma VVC actual. En lo sucesivo, las Tablas 6 a 8 representan tablas de mapeo entre un valor de modo de intrapredicción (valor de modo de intrapredicción cambiado en consideración de WAIP) y un conjunto de LFNST, que puede aplicarse a un bloque Mx2 (Mx1) o a un bloque 2xM (1xM).
Tabla 6
Tabla 7
Tabla 8
Una primera tabla de mapeo de la Tabla 6 está configurada con siete conjuntos de LFNST, una tabla de mapeo de la Tabla 7 está configurada con cuatro conjuntos de LFNST, y una tabla de mapeo de la Tabla 8 está configurada con dos conjuntos de LFNST. Como otro ejemplo, cuando se configura con un conjunto de LFNST, un valor de lfnstT rSetIdx puede fijarse en 0 con respecto al valor de preModeIntra.
En lo sucesivo, se describirá un método para mantener la complejidad computacional para el peor caso cuando se aplica LFNST al modo ISP.
En el caso de un modo ISP, cuando se aplica LFNST, para mantener el número de multiplicaciones por muestra (o por coeficiente, por posición) a un cierto valor o menos, la aplicación de LFNST puede estar limitada. Según el tamaño del bloque de partición, el número de multiplicaciones por muestra (o por coeficiente, por posición) se puede mantener en 8 o menos aplicando LFNST de la siguiente manera.
1. Cuando tanto una longitud horizontal como una longitud vertical del bloque de partición son 4 o más, se puede aplicar el mismo método que un método de control de complejidad de cálculo para el peor caso para LFNST en la norma VVC actual.
Es decir, cuando el bloque de partición es un bloque 4x4, en lugar de una matriz 16x16, se puede aplicar una matriz 8x16 obtenida muestreando las 8 filas superiores de una matriz 16x16 en una dirección directa, y se puede aplicar una matriz 16x8 obtenida muestreando las 8 columnas izquierdas de una matriz 16x16 en una dirección inversa. Además, cuando el bloque de partición es un bloque de 8x8, en la dirección directa, en lugar de una matriz de 16x48, se aplica una matriz de 8x48 obtenida muestreando las 8 filas superiores de una matriz de 16x48, y en la dirección inversa, en lugar de una matriz de 48x16, se puede aplicar una matriz de 48x8 obtenida muestreando las 8 columnas izquierdas de una matriz de 48x16.
En el caso de un bloque 4xN o Nx4 (N > 4), cuando se lleva a cabo una transformada directa, 16 coeficientes generados después de aplicar una matriz 16x16 solo al bloque 4x4 superior izquierdo pueden disponerse en la región 4x4 superior izquierda, y otras regiones pueden llenarse con un valor de 0. Además, cuando se lleva a cabo una transformada inversa, 16 coeficientes ubicados en el bloque 4x4 superior izquierdo se disponen en orden de escaneo para formar un vector de entrada, y entonces 16 datos de salida pueden generarse multiplicando la matriz 16x16. Los datos de salida generados pueden disponerse en la región 4x4 superior izquierda, y las regiones restantes, excepto la región 4x4 superior izquierda, pueden llenarse con un valor de 0.
En el caso de un bloque de 8xN o Nx8 (N > 8), cuando se lleva a cabo la transformada directa, 16 coeficientes generados después de aplicar la matriz de 16x48 a solo una región de ROI (excluyendo las regiones restantes bloques 4x4 inferiores derechos de los bloques 8x8 superiores izquierdos) dentro de los bloques 8x8 superiores izquierdos pueden disponerse en la región 4x4 superior izquierda, y todas las demás regiones pueden llenarse con un valor de 0. Además, cuando se lleva a cabo una transformada inversa, 16 coeficientes ubicados en el bloque 4x4 superior izquierdo se disponen en orden de escaneo para formar un vector de entrada, y entonces 48 datos de salida pueden generarse multiplicando el vector de entrada por una matriz 48x16. Los datos de salida generados pueden llenarse en la región ROI, y todas las demás regiones pueden llenarse con un valor de 0.
2. Cuando el tamaño del bloque de partición es Nx2 o 2xN y LFNST se aplica a la región superior izquierda Mx2 o 2xM (M < N), se puede aplicar una matriz muestreada según el valor N.
En el caso de M = 8, para un bloque de partición de N = 8, es decir, un bloque de 8x2 o 2x8, se puede aplicar una matriz de 8x16 obtenida muestreando las 8 filas superiores de una matriz de 16x16 en lugar de una matriz de 16x16 en el caso de una transformada directa, y en el caso de una transformada inversa, en lugar de una matriz de 16x16, se puede aplicar una matriz de 16x8 obtenida muestreando 8 columnas izquierdas de la matriz de 16x16.
Cuando N es mayor que 8, 16 datos de salida generados después de aplicar la matriz 16x16 al bloque superior izquierdo 8x2 o 2x8 en el caso de una transformada directa se disponen en el bloque superior izquierdo 8x2 o 2x8, y las regiones restantes pueden llenarse con un valor de 0. En el caso de una transformada inversa, 16 coeficientes ubicados en el bloque superior izquierdo 8x2 o 2x8 se disponen en el orden de escaneo para formar un vector de entrada, y entonces pueden generarse 16 datos de salida multiplicando la matriz 16x16. Los datos de salida generados pueden disponerse en el bloque superior izquierdo 8x2 o 2x8, y todas las regiones restantes pueden llenarse con un valor de 0.
3. Cuando el tamaño del bloque de partición es Nx1 o 1xN y LFNST se aplica a la región superior izquierda Mx1 o 1xM (M < N), se puede aplicar una matriz muestreada según el valor N.
Cuando M = 16, para un bloque de partición de N = 16, es decir, un bloque 16x1 o 1x16, en lugar de una matriz 16x16, se puede aplicar una matriz 8x16 obtenida muestreando las 8 filas superiores de una matriz 16x16 en el caso de una transformada directa, y en el caso de una transformada inversa, en lugar de una matriz 16x16, se puede aplicar una matriz 16x8 obtenida muestreando las 8 columnas izquierdas de la matriz 16x16.
Cuando N es mayor que 16, los 16 datos de salida generados después de aplicar la matriz 16x16 al bloque superior izquierdo 16x1 o 1x16 en el caso de una transformada directa pueden disponerse en el bloque superior izquierdo 16x1 o 1x16, y las regiones restantes pueden llenarse con un valor de 0. En el caso de una transformada inversa, 16 coeficientes ubicados en el bloque 16x1 o 1x16 superior izquierdo pueden disponerse en orden de escaneo para formar un vector de entrada, y entonces 16 datos de salida pueden generarse multiplicando la matriz 16x16. Los datos de salida generados pueden disponerse en el bloque superior izquierdo 16x1 o 1x16, y todas las regiones restantes pueden llenarse con un valor de 0.
Como otro ejemplo, para mantener el número de multiplicaciones por muestra (o por coeficiente, por posición) hasta un cierto valor o menos, el número de multiplicaciones por muestra (o por coeficiente, por posición) en base al tamaño de la unidad de codificación de ISP en lugar del tamaño del bloque de partición de ISP se puede mantener en 8 o menos. Cuando solo hay un bloque que satisface la condición a la que se aplica LFNST entre los bloques de partición ISP, el cálculo de complejidad para el peor caso de LFNST puede aplicarse basándose en el tamaño de unidad de codificación correspondiente en lugar del tamaño del bloque de partición. Por ejemplo, cuando un bloque de codificación de luma para una cierta unidad de codificación se divide en cuatro bloques de partición que tienen un tamaño de 4x4 y se codifican por ISP y no existe un coeficiente de transformada distinto de cero con respecto a dos bloques de partición entre los cuatro bloques de partición, puede configurarse de modo que no se generen ocho coeficientes de transformación sino 16 coeficientes de transformación con respecto a los otros dos bloques de partición (en base al codificador).
En lo sucesivo, se describirá un método de señalización de un índice LFNST en el modo ISP.
Como se ha descrito anteriormente, el índice de LFNST puede tener el valor de cualquiera de 0, 1 y 2, donde el valor de 0 indica que no se aplica LFNST y los valores de 1 y 2 indican respectivamente dos matrices de núcleos de LFNST incluidas en un conjunto de LFNST seleccionado. La LFNST se aplica en base a una matriz de núcleo de LFNST seleccionada por el índice de LFNST. A continuación se describirá un método para transmitir un índice LFNST en la norma VVC actual.
1. El índice LFNST puede transmitirse una vez para cada unidad de codificación (CU) y, en el caso de un tipo de árbol dual, los índices LFNST individuales pueden señalizarse con respecto a un bloque luma y a un bloque croma.
2. Cuando el índice de LFNST no se señala, el valor del índice de LFNST se establece (se infiere) en un valor por defecto de 0. Los casos en los que se deduce que el valor del índice LFNST es 0 son los siguientes:
A. Se usa un caso en el que no se aplica una transformada (p. ej., salto de transformada, BDPCM, codificación sin pérdidas, etc.).
B. Un caso en el que la transformación primaria no es DCT-2 (DST7 o DCT8), es decir, un caso en el que la transformación en una dirección horizontal o la transformación en una dirección vertical no es DCT-2.
C. Un caso en el que la longitud horizontal o la longitud vertical de un bloque luma de una unidad de codificación supera un tamaño transformable de luma máximo, por ejemplo, cuando el tamaño transformable de luma más grande es 64, no se puede aplicar LFNST cuando el tamaño del bloque luma del bloque de codificación es de 128x16.
En el caso de un tipo de árbol dual, se determina si se supera el tamaño transformable máximo de luma con respecto a cada una de la unidad de codificación para el componente luma y la unidad de codificación para el componente croma. Es decir, se comprueba si se supera el tamaño transformable máximo de luma con respecto al bloque luma, y se comprueba si se supera la longitud horizontal/vertical de un bloque luma correspondiente para un formato de color y el tamaño transformable máximo de luma con respecto a un bloque croma. Por ejemplo, cuando el formato de color es 4:2:0, la longitud horizontal/vertical del bloque luma correspondiente es el doble que la del bloque croma y el tamaño de transformada del bloque luma correspondiente es el doble que el del bloque croma. En otro ejemplo, cuando el formato de color es 4:4:4, la longitud horizontal/vertical y el tamaño de transformada del bloque luma correspondiente son los mismos que los del bloque croma.
Una transformación de longitud 64 o una transformación de longitud 32 significa una transformación aplicada horizontal o verticalmente que tiene una longitud de 64 o 32, respectivamente, y "tamaño de transformada" puede significar una longitud correspondiente de 64 o 32.
En el caso de un tipo de árbol único, puede comprobarse si una longitud horizontal o una longitud vertical de un bloque luma supera un tamaño transformable máximo de un bloque de transformada luma, y cuando la longitud horizontal o la longitud vertical del bloque luma supera el tamaño transformable máximo del bloque de transformada luma, puede omitirse la señalización del índice de LFNST.
D. Es posible transmitir el índice LFNST únicamente cuando la longitud horizontal y la longitud vertical de la unidad de codificación son, cada una, superiores o iguales a 4.
En el caso de un tipo de árbol dual, es posible señalizar el índice LFNST solo cuando tanto la longitud horizontal como la longitud vertical de un componente correspondiente (es decir, un componente luma o croma) son, cada una, mayores que o iguales a 4.
En el caso de un tipo de árbol único, es posible señalizar el índice LFNST cuando tanto la longitud horizontal como la longitud vertical de un componente luma son, cada una, mayores que o iguales a 4.
E. En un caso en el que la última posición de coeficiente distinto de cero no es una posición de DC (que es una posición en la parte superior izquierda del bloque), el índice de LFNST se transmite si la última posición de coeficiente distinto de cero no es la posición de DC con respecto a un bloque luma del tipo de árbol dual. En el caso de un bloque croma del tipo de árbol dual, el índice LNFST correspondiente se transmite si cualquiera de la última posición de coeficiente distinto de cero para Cb y la última posición de coeficiente distinto de cero para Cr no es la posición de DC.
En el caso de un tipo de árbol único, cuando la última posición de coeficiente distinto de cero de uno cualquiera de un componente luma, un componente Cb y un componente Cr no es una posición de DC, se transmite el índice de LFNST.
En este caso, cuando un valor de bandera de bloque codificado (CBF, por sus siglas en inglés) que indica si existe un coeficiente de transformada para un bloque de transformada es 0, la última posición de coeficiente distinto de cero para el bloque de transformada correspondiente no se comprueba para determinar si señalizar el índice de LFNST. Es decir, cuando el valor de CBF correspondiente es 0, no se aplica transformada al bloque correspondiente y, por lo tanto, la posición del último coeficiente distinto de cero puede no considerarse en un momento en el que se comprueba la condición para la señalización del índice de LFNST.
Por ejemplo, 1) en el caso de un componente luma del tipo de árbol dual, si el valor de CBF correspondiente es 0, el índice de LFNST no se señala; 2) en el caso de un componente croma del tipo de árbol dual, si el valor de CBF para Cb es 0 y el valor de CBF para Cr es 1, solo se comprueba la última posición de coeficiente distinto de cero para Cr y se transmite el índice de LFNST correspondiente; y 3) en el caso del tipo de árbol único, se comprueba la última posición de coeficiente distinto de cero para cualquier componente que tenga el valor de CBF de 1 entre los componentes luma, Cb y Cr.
F. Cuando se descubre que el coeficiente de transformada existe en una posición distinta de una posición en la que se permite que exista un coeficiente de transformada de LFNST, puede omitirse la señalización del índice de LFNST. En el caso de un bloque de transformada de 4x4 y un bloque de transformada de 8x8, los coeficientes de transformada de LFNST pueden existir en 8 posiciones desde la posición de DC según un orden de escaneo de coeficientes de transformada en la norma VVC y todas las posiciones restantes se rellenan con 0. Además, en casos distintos del bloque de transformada de 4x4 y del bloque de transformada de 8x8, los coeficientes de transformada de LFNST pueden existir en 16 posiciones desde la posición de DC según el orden de escaneo de coeficientes de transformada en la norma VVC y las otras posiciones restantes se rellenan con 0.
Por lo tanto, cuando existe un coeficiente de transformada distinto de cero en una región que debería llenarse con 0 después de llevar a cabo la codificación residual, puede omitirse la señalización de índice de LFNST.
Mientras tanto, el modo ISP puede aplicarse solo al bloque luma o puede aplicarse tanto al bloque luma como al bloque croma. Como se ha descrito anteriormente, cuando se aplica la predicción ISP, la unidad de codificación correspondiente se divide en dos o cuatro bloques de partición y se predice, y puede aplicarse una transformada a cada uno de los bloques de partición correspondientes. Por lo tanto, cuando se determina una condición para señalizar el índice de LFNST en unidades de unidades de codificación, es necesario considerar el hecho de que LFNST es aplicable a cada uno de los bloques de partición respectivos. Además, cuando el modo de predicción de ISP se aplica solo a un componente específico (p. ej., un bloque luma), el índice de LFNST debe señalizarse teniendo en cuenta el hecho de que solo el componente correspondiente se divide en bloques de partición. Los métodos de señalización de índice de LFNST disponibles en el modo ISP pueden resumirse de la siguiente manera.
1. El índice LFNST puede transmitirse una vez para cada unidad de codificación (CU) y, en el caso del tipo de árbol dual, un índice LFNST individual puede señalizarse con respecto a un bloque luma y a un bloque croma, respectivamente.
2. Cuando el índice de LFNST no se señala, el valor del índice de LFNST se establece (se infiere) en un valor por defecto de 0. Los casos en los que se deduce que el valor del índice de LFNST es 0 son los siguientes.
A. Se usa un caso en el que no se aplica una transformada (p. ej., salto de transformada, BDPCM, codificación sin pérdidas, etc.).
B. En un caso en el que la longitud horizontal o la longitud vertical de un bloque luma de una unidad de codificación supera un tamaño transformable de luma máximo, por ejemplo, un caso en el que el tamaño transformable de luma más grande es 64, no se puede aplicar LFNST cuando el tamaño del bloque luma del bloque de codificación es de 128x16.
Si señalizar el índice de LFNST puede determinarse basándose en el tamaño de un bloque de partición en lugar de una unidad de codificación. Es decir, cuando la longitud horizontal o la longitud vertical de un bloque de partición para el bloque luma correspondiente supera el tamaño transformable de luma máximo, se puede omitir la señalización de índice de LFNST y se puede inferir que el valor del índice de LFNST es 0.
En el caso del tipo de árbol dual, se determina si se supera el tamaño máximo del bloque de transformada con respecto a cada una de la unidad de codificación o bloque de partición para el componente luma y la unidad de codificación o bloque de partición para el componente croma. Es decir, la longitud horizontal y la longitud vertical de la unidad de codificación o bloque de partición para luma se comparan con el tamaño transformable de luma máximo, y si cualquiera de la longitud horizontal y la longitud vertical es mayor que el tamaño transformable de luma máximo, no se aplica LFNST, y, en el caso de una unidad de codificación o bloque de partición para croma, se comparan la longitud horizontal/vertical del bloque luma correspondiente para un formato de color y el tamaño transformable de luma máximo. Por ejemplo, cuando el formato de color es 4:2:0, la longitud horizontal/vertical del bloque luma correspondiente es el doble que la del bloque croma y el tamaño de transformada del bloque luma correspondiente es el doble que el del bloque croma. En otro ejemplo, cuando el formato de color es 4:4:4, la longitud horizontal/vertical y el tamaño de transformada del bloque luma correspondiente son los mismos que los del bloque croma.
En el caso del tipo de árbol único, puede comprobarse si la longitud horizontal o la longitud vertical de un bloque luma (unidad de codificación o bloque de partición) supera el tamaño transformable máximo de un bloque de transformada luma y, si es así, puede omitirse la señalización de índice de LFNST.
C. Cuando se aplica LFNST incluida en la norma VVC actual, el índice LFNST puede transmitirse solo cuando tanto la longitud horizontal como la longitud vertical de un bloque de partición son, cada una, mayores que o iguales a 4.
Cuando se aplica LFNST para un bloque de 2xM (1xM) o Mx2 (Mx1) además de la LFNST incluida en la norma VVC actual, el índice de LFNST puede transmitirse solo cuando el tamaño de un bloque de partición es igual a o mayor que el bloque de 2xM (1xM) o Mx2 (Mx1). Aquí, si un bloque PxQ es igual a o mayor que un bloque RxS, significa que P>R y Q>S.
En resumen, el índice LFNST puede transmitirse solo cuando un bloque de partición es igual a o mayor que un tamaño mínimo al que es aplicable LFNST. En el caso del tipo de árbol dual, el índice de LFNST puede señalizarse solo cuando un bloque de partición para un componente luma o croma es igual a o mayor que el tamaño mínimo al que es aplicable la LFNST. En el caso del tipo de árbol único, el índice de LFNST puede señalizarse solo cuando un bloque de partición para el componente luma es igual a o mayor que el tamaño mínimo al que es aplicable la LFNST.
En este documento, si un bloque MxN es mayor que o igual a un bloque KxL, significa que M es mayor que o igual a K y N es mayor que o igual a L. Si un bloque MxN es mayor que un bloque KxL, significa que M es mayor que o igual a K, que N es mayor que o igual a L, y que M es mayor que K o N es mayor que L. Si un bloque MxN es menor que o igual a un bloque KxL, significa que M es menor que o igual a K y N es menor que o igual a L, y si el bloque MxN es menor que el bloque KxL, significa que M es menor que o igual a K, que N es menor que o igual a L, y que M es menor que K o que N es menor que L.
D. En un caso en el que la última posición de coeficiente distinto de cero no es la posición de DC (que es una posición en la parte superior izquierda del bloque), el índice de LFNST puede transmitirse si la última posición de coeficiente distinto de cero en cualquiera de todos los bloques de partición no es una ubicación de DC con respecto a un bloque luma de un tipo de árbol dual. En el caso de un bloque croma del tipo de árbol dual, el número de bloques de partición se considera uno) no es la posición de DC, el índice de LNFST correspondiente puede transmitirse si cualquiera de la última posición de coeficiente distinto de cero para todos los bloques de partición para Cb (cuando el modo de ISP no se aplica a un componente croma, el número de bloques de partición se considera uno) y la última posición de coeficiente distinto de cero para todos los bloques de partición para Cr (cuando el modo de ISP no se aplica a un componente croma.
En el caso del tipo de árbol único, cuando la última posición de coeficiente distinto de cero para cualquiera de todos los bloques de partición para un componente luma, un componente Cb y un componente Cr no es la posición de CC, puede transmitirse un índice de LFNST correspondiente.
En este caso, cuando un valor de bandera de bloque codificado (CBF) que indica si existe un coeficiente de transformada con respecto a cada bloque de partición es 0, la última posición de coeficiente distinto de cero para un bloque de partición correspondiente no se comprueba para determinar si señalizar el índice de LFNST. Es decir, cuando el valor de CBF correspondiente es 0, no se aplica una transformada al bloque correspondiente y, por lo tanto, la última posición de coeficiente distinto de cero para el bloque de partición correspondiente no se considera en el momento en que se comprueba la condición para la señalización de índice de LFNST.
Por ejemplo, 1) en el caso de un componente luma del tipo de árbol dual, cuando el valor de CBF correspondiente para cada bloque de partición es 0, se excluye un bloque de partición correspondiente cuando se determina si señalizar el índice de LFNST; 2) en el caso de un componente croma del tipo de árbol dual, cuando el valor de CBF para Cb para cada bloque de partición es 0 y el valor de CBF para Cr es 1, solo se comprueba la última posición de coeficiente distinto de cero para Cr cuando se determina si señalizar el índice de LFNST; y 3) en el caso del tipo de árbol único, es posible determinar si señalizar el índice de LFNST comprobando la última posición de coeficiente distinto de cero solo para bloques que tienen el valor de CBF de 1 para todos los bloques de partición de un componente luma, un componente Cb y un componente Cr.
En el caso del modo ISP, la información de imagen puede configurarse de modo que no se verifique la última posición de coeficiente distinto de cero, y una realización de la misma es la siguiente.
i. En el caso del modo ISP, la señalización de índice LFNST puede permitirse sin comprobar la última posición de coeficiente distinto de cero tanto para el bloque luma como para el bloque croma. Es decir, incluso cuando la última posición de coeficiente distinto de cero para todos los bloques de partición se ubica en la posición de DC o un valor de CBF correspondiente es 0, se puede permitir la señalización de índice de LFNST correspondiente.
ii. En el caso del modo ISP, puede ser posible omitir la comprobación de la última posición de coeficiente distinto de cero únicamente para el bloque luma y comprobar la última posición de coeficiente distinto de cero para el bloque croma de la manera descrita anteriormente. Por ejemplo, en el caso de un bloque luma del tipo de árbol dual, se permite la señalización de índice de LFNST sin comprobar la última posición de coeficiente distinto de cero, y en el caso de un bloque croma del tipo de árbol dual, puede determinarse si señalizar un índice de LFNST correspondiente comprobando, de la manera anterior, si existe una posición de DC para la última posición de coeficiente distinto de cero.
iii. En el caso del modo ISP y el tipo de árbol único, se puede aplicar el método i descrito anteriormente o el método ii descrito anteriormente. Es decir, en un caso en el que el método i se aplica al tipo de árbol único en el modo ISP, es posible omitir la comprobación de la última posición de coeficiente distinto de cero con respecto tanto al bloque luma como al bloque croma y permitir la señalización de índice de LFNST. De manera alternativa, en el caso de la aplicación del método ii, es posible omitir la comprobación de la última posición de coeficiente distinto de cero con respecto a los bloques de partición para el componente luma, y es posible comprobar la última posición de coeficiente distinto de cero de la manera descrita más arriba con respecto a los bloques de partición para el componente croma (cuando no se aplica ISP al componente croma, el número puede considerarse que es 1) para determinar si señalizar un índice de LFNST correspondiente.
E. Cuando se descubre que existe un coeficiente de transformada en una posición distinta de una posición en la que puede existir el coeficiente de transformada de LFNST con respecto incluso a un bloque de partición entre todos los bloques de partición, puede omitirse la señalización de índice de LFNST.
Por ejemplo, en el caso de un bloque de partición 4x4 y un bloque de partición 8x8, los coeficientes de transformada de LFNST pueden existir en 8 posiciones desde la posición de DC según el orden de escaneo de coeficientes de transformada en la norma VVC, y todas las posiciones restantes se rellenan con 0. Además, cuando un bloque de partición es igual a o mayor que 4x4 y no es ni un bloque de partición 4x4 ni un bloque de partición 8x8, los coeficientes de transformada de LFNST pueden existir en 16 posiciones desde la posición de DC según el orden de escaneo de coeficientes de transformada en la norma VVC, y todas las posiciones restantes se rellenan con 0.
Por lo tanto, cuando existe un coeficiente de transformada distinto de cero en una región que debería llenarse con 0 después de llevar a cabo la codificación residual, puede omitirse la señalización de índice de LFNST.
Cuando LFNST es aplicable con respecto incluso a un bloque de partición de 2xM (1xM) o Mx2 (Mx1), una región en la que se permite que se localicen coeficientes de transformada de LFNST puede designarse de la siguiente manera. Una región fuera de la región donde se permite que se localicen los coeficientes de transformada puede llenarse con 0, y en la suposición de que se aplique LFNST, cuando existen coeficientes de transformada distintos de cero en la región que debería llenarse con 0, puede omitirse la señalización de índice de LFNST.
1. Cuando LFNST es aplicable a un bloque de 2xM o Mx2 y M = 8, solo se pueden generar 8 coeficientes de transformada de LFNST con respecto a un bloque de partición de 2x8 u 8x2. Cuando los coeficientes de transformada se disponen en el orden de escaneo como se muestra en la Figura 20, 8 coeficientes de transformada pueden disponerse en el orden de escaneo desde la posición de DC y las 8 posiciones restantes pueden llenarse con 0.
Con respecto a un bloque de partición de 2xN o Nx2 (N > 8), se pueden generar 16 coeficientes de transformada de LFNST, y cuando los coeficientes de transformada se disponen en el orden de escaneo como se muestra en la Figura 20, 16 coeficientes de transformada se pueden disponer en el orden de escaneo desde la posición de DC y la región restante se puede llenar con 0. Es decir, una región distinta del bloque superior izquierdo 2x8 u 8x2 en el bloque de partición 2xN o Nx2 (N > 8) puede llenarse con 0. Con respecto incluso a un bloque de partición de 2x8 u 8x2, se pueden generar 16 coeficientes de transformada en lugar de 8 coeficientes de transformada de LFNST, y en este caso, no se produce una región que deba llenarse con 0. Como se ha descrito más arriba, en un caso en el que se aplica LFNST, cuando se detecta que existe un coeficiente de transformada distinto de cero en una región establecida para llenarse con 0 con respecto incluso a un bloque de partición, puede omitirse la señalización de índice de LFNST y puede inferirse que el índice de LFNST es 0.
ii. En un caso en el que LFNST es aplicable a un bloque de 1xM o Mx1 y M = 16, solo se pueden generar 8 coeficientes de transformada de LFNST con respecto a un bloque de partición de 1x16 o 16x1. Cuando los coeficientes de transformada se disponen en el orden de escaneo de izquierda a derecha o de arriba abajo, pueden disponerse 8 coeficientes de transformada en el orden de escaneo correspondiente desde la posición de DC, y las 8 posiciones restantes pueden llenarse con 0.
Con respecto a un bloque de partición de 1xN o Nx1 (N >16), se pueden generar 16 coeficientes de transformada de LFNST, y cuando los coeficientes de transformada se disponen en un orden de escaneo de izquierda a derecha o de arriba abajo, los 16 coeficientes de transformada se pueden disponer desde la posición de DC en el orden de escaneo correspondiente y las regiones restantes se pueden llenar con 0. Es decir, una región distinta del bloque superior izquierdo 1x16 o 16x1 en un bloque de partición de 1xN o Nx1 (N > 16) puede llenarse con 0.
Pueden generarse 16 coeficientes de transformada en lugar de 8 coeficientes de transformada de LFNST con respecto incluso al bloque de partición 1x16 o 16x1, y en este caso, no se produce una región que deba llenarse con 0. Como se ha descrito anteriormente, en un caso en el que se aplica LFNST, cuando se detecta que existe un coeficiente de transformada distinto de cero en una región establecida para llenarse con 0 con respecto incluso a un bloque de partición, puede omitirse la señalización de índice de LFNST y puede inferirse que el índice de LFNST es 0.
Mientras tanto, en el caso del modo ISP, según la norma VVC actual, las direcciones horizontal y vertical se consideran independientemente como condiciones de longitud y se aplica DST-7 en lugar de DCT-2 sin señalización de un índice MTS. Se determina si una longitud horizontal o vertical es mayor que o igual a 4 y mayor que o igual a 16, y se decide un núcleo de transformada primaria basándose en el resultado de la determinación. Por lo tanto, para un caso en el que LFNST es aplicable en el modo ISP, son posibles las siguientes combinaciones de transformada.
1. Cuando el índice LFNST es 0 (incluido un caso en el que se infiere que el índice LFNST es 0), puede seguirse una condición de determinación de transformada primaria en el modo ISP, la condición que se incluye en la norma VVC actual. Es decir, si se satisface una condición de longitud (que es una condición de ser igual a o mayor que 4 e igual a o menor que 16) con respecto a la dirección horizontal y a la dirección vertical, respectiva e independientemente; si es así, se puede aplicar<d>ST-7 en lugar de DCT-2, y si no, se puede aplicar DCT-2.
2. Cuando el índice LFNST es mayor que 0, las dos configuraciones siguientes pueden ser posibles como transformada primaria.
A. DCT-2 puede aplicarse tanto a la dirección horizontal como a la dirección vertical.
B. Puede seguirse una condición para determinar la transformada primaria en el modo ISP, la condición que se incluye en la norma VVC actual. En otras palabras, se comprueba si se satisface una condición de longitud (que es una condición de ser igual a o mayor que 4 e igual a o menor que 16) con respecto a la dirección horizontal y a la dirección vertical, respectiva e independientemente; si es así, se puede aplicar DST-7 en lugar de DCT-2, y si no, se puede aplicar DCT-2.
En el modo ISP, la información de imagen puede configurarse de modo que el índice LFNST se transmita con respecto a cada bloque de partición en lugar de cada unidad de codificación. En este caso, en el método de señalización de índice de LFNST descrito anteriormente, considerando que solo existe un bloque de partición en una unidad en la que se transmite el índice de LFNST, se puede determinar si señalizar el índice de LFNST.
Mientras tanto, según una realización, en el modo ISP como se muestra en la Figura 9, se puede aplicar un núcleo de LFNST que consiste en tres conjuntos.
En casos distintos del modo ISP, se puede aplicar una tabla de mapeo como la siguiente tabla, y el conjunto de LFNST como en la Tabla 9 se puede aplicar incluso cuando se aplica LFNST en el modo ISP.
Tabla 9
El valor de preModeIntra en la Tabla 9 indica un valor de modo de intrapredicción que se ha cambiado en consideración a WAIP, y el valor de lfnstT rSetIdx es un valor de índice que indica un conjunto de LFNST específico, y cada conjunto de LFNST consiste en dos núcleos de LFNST. Cada índice (lfnstTrSetIdx) puede especificar un conjunto de LFNST correspondiente incluido en el documento estándar VVC (JVET-O2001-vE.docx) (que se refiere a un conjunto de LFNST especificado por la variable lfnstTrSetIdx en el capítulo de proceso de derivación de matriz de transformación no separable de baja frecuencia del documento correspondiente).
En un caso en el que se aplica LFNST en el modo ISP, la tabla de mapeo como se muestra en la Tabla 9 puede aplicarse solo cuando tanto la longitud horizontal como la longitud vertical de un bloque de partición ISP son mayores que 4.
Las realizaciones a las que se aplica LFNST en el modo ISP descrito anteriormente se resumen de la siguiente manera. (1) Cuando se aplica LFNST en el modo ISP, una unidad de transformada que se va a dividir debe tener el tamaño de al menos 4X4.
(2) Se puede usar el mismo núcleo de LFNST que el núcleo de LFNST existente aplicado a una unidad de codificación a la que no se aplica el modo ISP.
(3) Cada unidad de transformada debe satisfacer una condición de valor máximo de última posición (que es la condición para la posición del último coeficiente distinto de cero). Cuando una o más unidades de transformada no satisfacen la condición de valor máximo de última posición, no se usa LFNST y no se analiza el índice de LFNST. (4) Cuando se aplica el modo ISP, puede ignorarse el establecimiento de que la LFNST es aplicable solo cuando existe un coeficiente significativo en una posición distinta de la posición de<d>C.
(5) Cuando se aplica LFNST, DCT-2 puede usarse para la transformada primaria de una unidad de transformada a la que se aplica ISP.
La Tabla 10 a continuación muestra elementos sintácticos que incluyen el contenido anterior.
Tabla 8
En la Tabla 10, se establecen el ancho y la altura de una región a la que se aplica LFNST según un tipo de árbol y se muestran las condiciones para transmitir el índice de LFNST. Los elementos sintácticos de la Tabla 10 pueden señalarse a nivel de una unidad de codificación (CU). En el caso del tipo de árbol dual, se pueden señalizar índices de LFNST individuales para el bloque luma y el bloque croma.
En primer lugar, cuando el tipo de árbol para una unidad de codificación es croma de árbol dual, un ancho (lfnstWidth) de una región a la que se aplica LFNST puede establecerse en un ancho en el que el formato de color se refleja en el ancho de la unidad de codificación ((treeType = = DUAL_TREE_CHROMA) ? cbWidth/SubWidthC).
Por otro lado, cuando el tipo de árbol para una unidad de codificación no es croma de árbol dual sino luma de árbol dual o árbol único, el ancho (lfnstWidth) de la región a la que se aplica LFNST puede establecerse en un valor obtenido dividiendo la unidad de codificación por el número de subparticiones o en el ancho de la unidad de codificación según si la unidad de codificación se divide por la ISP (((IntraSubPartitionsSplitType = = ISP_VER_SPLIT) ? cbWidth/NumIntraSubPartitions: cbWidth). Es decir, si la unidad de codificación se divide verticalmente por la ISP (IntraSubPartitionsSplitType = = ISP_VER_SPLIT), el ancho de la región a la que se aplica LFNST puede establecerse en un valor (cbWidth/NumIntraSubPartitions) obtenido dividiendo la unidad de codificación por el número de subparticiones; si no, el ancho de la región a la que se aplica LFNST puede establecerse en el ancho (cbWidth) de la unidad de codificación.
De manera similar, cuando el tipo de árbol para la unidad de codificación es croma de árbol dual, una altura (lfnstHeight) de la región a la que se aplica LFNST puede establecerse en una altura en la que el formato de color se refleja en la altura de la unidad de codificación ((treeType = = DUAL_TREE_CHROMA) ? cbHeight/SubHeightC).
Por otro lado, cuando el tipo de árbol para la unidad de codificación no es croma de árbol dual sino luma de árbol dual o árbol único, la altura (lfnstHeight) de la región a la que se aplica LFNST puede establecerse en un valor obtenido dividiendo la unidad de codificación por el número de subparticiones o en la altura de la unidad de codificación según si la unidad de codificación se divide por la ISP (((IntraSubPartitionsSplitType = = = ISP_HOR_SPLIT) ? cbHeight/NumIntraSubPartitions: cbHeight). Es decir, si la unidad de codificación se divide en la dirección horizontal por la ISP (IntraSubPartitionsSplitType = = ISP_HOR_SPLIT), la altura de la región a la que se aplica la LFNST puede establecerse en un valor (cbHeight / NumIntraSubPartitions) obtenido dividiendo la unidad de codificación por el número de subparticiones; si no, puede establecerse en la altura (cbHeight) de la unidad de codificación.
Para que la LFNST se aplique de esta manera, el ancho y la altura de la región a la que se aplica la LFNST deben ser mayores que o iguales a 4. Es decir, en el caso de un tipo de árbol dual de codificación, el índice LFNST puede señalizarse solo cuando tanto la longitud horizontal como la longitud vertical de un componente correspondiente (es decir, un componente luma o croma) son mayores que o iguales a 4, y en el caso de un tipo de árbol único, el índice LFNST puede señalizarse cuando tanto la longitud horizontal como la longitud vertical de un componente luma son mayores que o iguales a 4.
Cuando la ISP se aplica a una unidad de codificación, el índice LFNST puede transmitirse solo cuando tanto la longitud horizontal como la longitud vertical de un bloque de partición son, cada una, mayores que o iguales a 4.
Además, cuando la longitud horizontal o la longitud vertical de un bloque luma de una unidad de codificación supera un tamaño transformable de bloque luma máximo (cuando no se satisface la condición de Max(cbWidth, cbHeight) <= MaxTbSizeY), se puede aplicar LFNST y no se transmite el índice de LFNST.
Además, el índice LFNST puede señalizarse solo cuando la última posición de coeficiente distinto de cero no es la posición de DC (que es una posición en la parte superior izquierda del bloque).
En el caso de un bloque luma del tipo de árbol dual, cuando la última posición de coeficiente distinto de cero no es la posición de DC, se transmite el índice de LFNST. En el caso de un bloque croma del tipo de árbol dual, cuando cualquiera de la última posición de coeficiente distinto de cero para Cb y la última posición de coeficiente distinto de cero para Cr no es la posición de DC, se transmite un índice de LNFST correspondiente. En el caso de un tipo de árbol único, el índice LFNST puede transmitirse cuando la última posición de coeficiente distinto de cero para uno de un componente luma, un componente Cb y un componente Cr no es la posición de DC.
Mientras tanto, cuando se aplica ISP a la unidad de codificación, el índice LFNST puede señalizarse sin comprobar la última posición de coeficiente distinto de cero (IntraSubPartitionsSplitType ¡ = ISP_NO_SPLIT II LfnstDcOnly= = 0). Es decir, incluso cuando la última posición de coeficiente distinto de cero para todos los bloques de partición está ubicada en la posición de DC, puede permitirse la señalización del índice LFNST. La posición de DC indica una posición en la parte superior izquierda de un bloque correspondiente.
Por último, cuando se descubre que el coeficiente de transformada existe en una posición distinta de una posición en la que se permite que exista el coeficiente de transformada de LFNST, puede omitirse la señalización de índice de LFNST (LfnstZeroOutSigCoeffFlag = = 1).
En un caso en el que se aplica ISP a una unidad de codificación, cuando se confirma que existe un coeficiente de transformada en una posición distinta de una posición en la que se supone que existe un coeficiente de transformada de LFNST incluso para un bloque de partición entre todos los bloques de partición, puede omitirse la señalización de índice de LFNST.
Los siguientes dibujos se proveen para describir ejemplos específicos de la presente descripción. Dado que las designaciones específicas de dispositivos o las designaciones de señales/mensajes/campos específicos ilustrados en los dibujos se proveen en aras de la ilustración, las características técnicas de la presente descripción no se limitan a designaciones específicas usadas en los siguientes dibujos.
La Figura 21 es un diagrama de flujo que ilustra un funcionamiento de un aparato de decodificación de vídeo según una realización de este documento.
Cada operación descrita en la Figura 21 se basa en algunas de las descripciones anteriores de las Figuras 4 a 20. Por lo tanto, se omitirán o simplificarán descripciones detalladas que sean las mismas que las descripciones anteriores de las Figuras 3 a 20.
El aparato 300 de decodificación según una realización puede recibir información residual de un flujo de bits (E2110).
Más específicamente, el aparato 300 de decodificación puede decodificar información sobre coeficientes de transformada cuantificados para el bloque objetivo a partir del flujo de bits y puede derivar los coeficientes de transformada cuantificados para el bloque actual basándose en la información sobre los coeficientes de transformada cuantificados para el bloque actual. La información sobre los coeficientes de transformada cuantificados para el bloque objetivo puede incluirse en un conjunto de parámetros de secuencia (SPS) o un encabezado de segmento y puede incluir al menos una de información sobre si se aplica una transformada reducida (RST), información sobre el factor de simplificación, información sobre un tamaño de transformada mínimo en el que se aplica la transformada reducida, información sobre un tamaño de transformada máximo en el que se aplica la transformada reducida, un tamaño de transformada inversa reducido e información sobre un índice de transformada que indica cualquiera de las matrices de núcleo de transformada incluidas en un conjunto de transformada.
Además, el aparato de decodificación puede recibir información sobre un modo de intrapredicción para el bloque actual e información sobre si la ISP se aplica al bloque actual. El aparato de decodificación puede derivar si el bloque actual se divide en un número predeterminado de bloques de subpartición, recibiendo y analizando la información de bandera que indica si aplicar codificación de ISP o el modo de ISP. Aquí, el bloque actual puede ser un bloque de codificación. Además, el aparato de decodificación puede derivar el tamaño y el número de bloques de subpartición divididos a través de información de bandera que indica en qué dirección se va a dividir el bloque actual.
Por ejemplo, cuando el tamaño (ancho x altura) del bloque actual es 8x4 como se muestra en la Figura 16, el bloque actual puede dividirse en dos subbloques en una dirección vertical, y cuando el tamaño (ancho x altura) del bloque actual es 4x8, el bloque actual puede dividirse en dos subbloques en una dirección horizontal. Alternativamente, como se muestra en la Figura 17, cuando el tamaño (ancho x altura) del bloque actual es mayor que 4x8 u 8x4, es decir, cuando el tamaño del bloque actual es 1) 4xN o Nx4 (N > 16) o 2) M x N (M > 8, N > 8), el bloque actual puede dividirse en 4 subbloques en la dirección horizontal o vertical.
El mismo modo de intrapredicción puede aplicarse a los bloques de subpartición divididos a partir del bloque actual, y el aparato de decodificación puede derivar muestras de predicción para los respectivos bloques de subpartición. Es decir, el aparato de decodificación lleva a cabo secuencialmente la intrapredicción, por ejemplo, horizontal o verticalmente, de izquierda a derecha o de arriba abajo, según una forma en la que se dividen los bloques de subpartición. Para un subbloque más a la izquierda o más superior, un píxel reconstruido del bloque de codificación ya codificado se denomina en un método de intrapredicción convencional. Además, cuando cada lado de un bloque de subpartición interno posterior no es adyacente a un bloque de subpartición anterior, un píxel reconstruido de un bloque de codificación adyacente codificado previamente se denomina en un método de intrapredicción convencional para derivar píxeles de referencia adyacentes a un lado correspondiente.
El aparato 300 de decodificación puede derivar coeficientes de transformada descuantificando información residual en el bloque actual, es decir, coeficientes de transformada cuantificados (E2120).
Los coeficientes de transformada derivados pueden disponerse según un orden de escaneo diagonal inverso en unidades de bloques de 4x4, y los coeficientes de transformada en un bloque de 4x4 también pueden disponerse según el orden de escaneo diagonal inverso. Es decir, los coeficientes de transformada descuantificados pueden disponerse según un orden de escaneo inverso que se aplica en un códec de vídeo como, por ejemplo, en VVC o HEVC.
Un coeficiente de transformada derivado en base a la información residual puede ser un coeficiente de transformada descuantificado como se ha descrito anteriormente o puede ser un coeficiente de transformada cuantificado. Es decir, el coeficiente de transformada pueden ser datos que pueden comprobar si son datos distintos de cero en el bloque actual independientemente de la cuantificación.
Para obtener coeficientes de transformada modificados aplicando LFNST, el aparato de decodificación puede obtener una primera variable que indica si el coeficiente de transformada, es decir, un coeficiente significativo, existe en una región excepto para la posición de DC del bloque actual (E2130).
La primera variable puede ser una variable LfnstDcOnly que puede derivarse en un proceso de codificación residual. Cuando el índice de un subbloque que incluye el último coeficiente significativo en el bloque actual es 0 y la posición del último coeficiente significativo en el subbloque es mayor que 0, la primera variable puede derivarse como 0, y cuando la primera variable es 0, el índice LFNST puede analizarse. Un subbloque se refiere a un bloque unitario utilizado como una unidad de codificación en la codificación residual, y cuando el bloque actual es mayor que o igual a 4x4, un bloque unitario correspondiente es un bloque de 4x4 y puede denominarse como un grupo de coeficientes (CG). Un índice de subbloque de 0 indica el subbloque de 4x4 superior izquierdo cuando el bloque actual es mayor que o igual a 4x4.
La primera variable puede establecerse inicialmente en 1, y puede mantenerse como 1 o puede cambiarse a 0 dependiendo de si existe un coeficiente significativo en una región excepto para la posición de DC.
La variable LfnstDcOnly indica si existe un coeficiente distinto de cero en una posición distinta del componente de DC con respecto a al menos un bloque de transformada en una unidad de codificación, y cuando existe un coeficiente distinto de cero en una posición distinta del componente de DC con respecto a al menos un bloque de transformada en una unidad de codificación, la variable LfnstDcOnly puede ser 0, y cuando no existe un coeficiente distinto de cero en una posición distinta del componente de DC con respecto a todos los bloques de transformada en una unidad de codificación, la variable LfnstDcOnly puede ser 1.
El aparato de decodificación puede, en base al resultado de la derivación, analizar el índice de LFNST y, en base al bloque actual que se divide en múltiples bloques de subpartición, analizar el índice de LFNST sin derivar la primera variable (E2140).
Según un ejemplo, el aparato de decodificación puede analizar el índice de LFNST cuando el bloque actual no se divide en múltiples bloques de subpartición y la primera variable indica que existe un coeficiente de transformada en una región excepto para la posición de CC, y cuando el primer bloque se divide en múltiples bloques de subpartición, el aparato de decodificación puede analizar el índice de LFNST sin comprobar la primera variable o ignorando el valor de la primera variable.
Es decir, cuando se aplica ISP al bloque actual, puede permitirse la señalización de índice de LFNST incluso si el ultimo coeficiente distinto de cero para cada bloque de subpartición está ubicado en una posición de DC.
Además, según un ejemplo, el aparato de decodificación puede determinar además si existe cualquier coeficiente de transformada en una segunda región distinta de la primera región situada en la parte superior izquierda del bloque actual, y cuando no existe ningún coeficiente de transformada en la segunda región, puede analizarse el índice de LFNST.
Al derivar una segunda variable que indica si existe un coeficiente significativo en la segunda región distinta de la primera región posicionada en la parte superior izquierda del bloque actual, es posible comprobar si se ha llevado a cabo la salida de cero en la segunda región.
La segunda variable puede ser una variable LfnstZeroOutSigCoeffFIag que indica que se lleva a cabo la salida de cero cuando se aplica LFNST. La segunda variable puede establecerse inicialmente en 1, y cuando existe un coeficiente significativo en la segunda región, la segunda variable puede cambiarse a 0.
Cuando el índice de un subbloque en el que existe el último coeficiente distinto de cero es mayor que 0 y el ancho y la altura de un bloque de transformada son ambos iguales a o mayores que 4, o cuando la última posición de un coeficiente distinto de cero en un subbloque en el que existe el último coeficiente distinto de cero es mayor que 7 y el tamaño de un bloque de transformada es 4x4 u 8x8, la variable LfnstZeroOutSigCoeffFlag puede derivarse como 0.
Es decir, cuando se obtiene un coeficiente distinto de cero en una región distinta de la región superior izquierda en la que puede existir un coeficiente de transformada de LFNST o cuando existe un coeficiente distinto de cero fuera de la 8.a posición en el orden de escaneo con respecto a un bloque de 4x4 y un bloque de 8x8, la variable LfnstZeroOutSigCoeffFlag se establece en 0.
Según un ejemplo, en un caso en el que se aplica ISP a una unidad de codificación, cuando se descubre que existe un coeficiente de transformada en una posición distinta de una posición en la que el coeficiente de transformada de LFNST puede existir con respecto incluso a un bloque de subpartición entre todos los bloques de subpartición, puede omitirse la señalización del índice de LFNST. Es decir, cuando no se lleva a cabo la salida de cero en un bloque de subpartición y existe un coeficiente significativo en la segunda región, no se señaliza el índice de LFNST.
Mientras tanto, la primera región puede derivarse basándose en el tamaño del bloque actual.
Por ejemplo, cuando el tamaño del bloque actual es 4x4 u 8x8, la primera región puede ser una región desde la parte superior izquierda del bloque actual hasta la 8.a posición de la muestra en una dirección de escaneo. Cuando el bloque actual se divide y el tamaño de un bloque de subpartición es 4x4 u 8x8, la primera región puede ser una región desde la parte superior izquierda hasta la 8.a posición de muestra de los bloques de subpartición en la dirección de escaneo.
Cuando el tamaño del bloque actual es 4x4 u 8x8, se emiten 8 datos a través de la LFNST directa y, por lo tanto, 8 coeficientes de transformada recibidos por el aparato de decodificación pueden disponerse desde la parte superior izquierda del bloque actual hasta la 8.a posición de muestra en una dirección de escaneo, como se muestra en (a) de la Figura 13 y (a) de la Figura 14.
Además, cuando el tamaño del bloque actual no es 4x4 u 8x8, la primera región puede ser una región 4x4 en la parte superior izquierda del bloque actual. Cuando el tamaño del bloque actual no es 4x4 u 8x8, se emiten 16 datos a través de la LFNST directa y, por lo tanto, 16 coeficientes de transformada recibidos por el aparato de decodificación pueden disponerse en la región 4x4 superior izquierda en el bloque actual, como se muestra en (b) a (d) de la Figura 13 y (b) de la Figura 14.
Mientras tanto, los coeficientes de transformada que pueden disponerse en la primera región pueden disponerse a lo largo de una dirección de escaneo diagonal, como se muestra en la Figura 8.
Como se ha descrito anteriormente, en un caso en el que el bloque actual se divide en bloques de subpartición, el aparato de decodificación puede analizar el índice de LFNST cuando no existen coeficientes de transformada en todas las segundas regiones respectivas para los múltiples bloques de subpartición. Cuando existe un coeficiente de transformada en la segunda región de cualquier bloque de subpartición, el índice LFNST no se analiza.
Como se ha descrito anteriormente, LFNST puede aplicarse a un bloque de subpartición cuyo ancho y altura son mayores que o iguales a 4, y el índice de LFNST para el bloque actual que es un bloque de codificación puede aplicarse a múltiples bloques de subpartición.
Mientras tanto, dado que la salida de cero reflejada por LFNST (incluidas todas las salidas de cero que pueden ir acompañadas por la aplicación de LFNST) también se aplica a un bloque de subpartición, la primera región se aplica igualmente al bloque de subpartición. Es decir, cuando un bloque de subpartición dividido es un bloque 4x4 o un bloque 8x8, LFNST se aplica hasta los 8.° coeficientes de transformada en una dirección de escaneo desde una posición superior izquierda del bloque de subpartición, y cuando el bloque de subpartición no es un bloque 4x4 o un bloque 8x8, LFNST puede aplicarse a coeficientes de transformada en una región 4X4 superior izquierda del bloque de subpartición.
A continuación, el aparato de decodificación puede derivar coeficientes de transformada modificados a partir de los coeficientes de transformada basándose en el índice LFNST y la matriz LFNST para LFNST (E2150).
El aparato de decodificación puede determinar un conjunto de LFNST que incluye la matriz de LFNST en base al modo de intrapredicción derivado de la información del modo de intrapredicción, y seleccionar cualquiera de las múltiples matrices de LFNST en base al conjunto de LFNST y el índice de LFNST.
En este caso, el mismo conjunto de LFNST y el mismo índice de LFNST pueden aplicarse al bloque de transformada de subpartición dividido del bloque actual. Es decir, debido a que se aplica el mismo modo de intrapredicción a los bloques de transformada de subpartición, el conjunto de LFNST determinado basándose en el modo de intrapredicción puede aplicarse igualmente a todos los bloques de transformada de subpartición. Además, debido a que el índice de LFNST se señala a un nivel de unidad de codificación, la misma matriz de LFNST puede aplicarse al bloque de transformada de subpartición dividido del bloque actual.
Como se ha descrito anteriormente, el conjunto de transformada puede determinarse según el modo de intrapredicción del bloque de transformada que se va a transformar, y la LFNST inversa puede llevarse a cabo basándose en cualquiera de las matrices de núcleo de transformada, es decir, matrices de LFNST, incluidas en el conjunto de transformada indicado por el índice de LFNST. Una matriz aplicada a la LFNST inversa puede denominarse matriz de LFNST inversa o matriz de LFNST, y tal matriz puede tener cualquier nombre siempre que tenga una relación de transposición con la matriz usada para la LFNST directa.
En un ejemplo, la matriz LFNST inversa puede ser una matriz no cuadrada en la que el número de columnas es menor que el número de filas.
Un número predeterminado de coeficientes de transformada, que son datos de salida de LFNST, puede derivarse en base al tamaño del bloque actual o un bloque de transformada de subpartición. Por ejemplo, cuando la altura y el ancho del bloque actual o del bloque de transformada de subpartición son 8 o más, se pueden derivar 48 coeficientes de transformada, como se ilustra a la izquierda de la Figura 7, y cuando el ancho y la altura del bloque de transformada de subpartición no son 8 o más, es decir, cuando el ancho o la altura del bloque de transformada de subpartición son 4 o más y menos de 8, se pueden derivar 16 coeficientes de transformada, como se ilustra en el lado derecho de la Figura 7.
Como se ilustra en la Figura 7, 48 coeficientes de transformada pueden disponerse en las regiones 4x4 superior izquierda, superior derecha e inferior izquierda de la región 8x8 superior izquierda del bloque de transformada de subpartición, y 16 coeficientes de transformada pueden disponerse en la región 4x4 superior izquierda del bloque de transformada de subpartición.
Los 48 coeficientes de transformada y 16 coeficientes de transformada pueden disponerse en una dirección vertical u horizontal según un modo de intrapredicción del bloque de transformada de subpartición. Por ejemplo, cuando el modo de intrapredicción es una dirección horizontal (modos 2 a 34 en la Figura 9) basándose en una dirección diagonal (modo 34 en la Figura 9), los coeficientes de transformada pueden disponerse en una dirección horizontal, es decir, en orden de dirección de fila primero, como se ilustra en (a) de la Figura 7, y cuando el modo de intrapredicción es una dirección vertical (modos 35 a 66 en la Figura 9) basándose en una dirección diagonal, los coeficientes de transformada pueden disponerse en una dirección horizontal, es decir, en orden de dirección de columna primero, tal como se ilustra en (b) de la Figura 7.
El aparato de decodificación puede derivar muestras residuales para el bloque actual basándose en una transformada inversa primaria del coeficiente de transformada modificado (E2160).
En este caso, se puede aplicar una transformada inversa simplificada a una transformada primaria inversa, o se puede usar una transformada separable convencional. Alternativamente, se puede usar MTS como la transformada primaria inversa.
Posteriormente, el aparato 300 de decodificación puede generar muestras reconstruidas basándose en muestras residuales para el bloque actual y muestras de predicción para el bloque actual.
Los siguientes dibujos se proveen para describir ejemplos específicos de la presente descripción. Dado que las designaciones específicas de dispositivos o las designaciones de señales/mensajes/campos específicos ilustrados en los dibujos se proveen en aras de la ilustración, las características técnicas de la presente descripción no se limitan a designaciones específicas usadas en los siguientes dibujos.
La Figura 22 es un diagrama de flujo que ilustra el funcionamiento de un aparato de codificación de vídeo según una realización de este documento.
Cada etapa descrita en la Figura 22 se basa en algunos de los contenidos descritos anteriormente en las Figuras 4 a 20. Por consiguiente, se omitirán o simplificarán las descripciones detalladas que se solapan con las descritas más arriba en las Figuras 2 y 4 a 20.
El aparato 200 de codificación según una realización puede derivar una muestra de predicción para el bloque actual basándose en el modo de intrapredicción aplicado al bloque actual (E2210).
El aparato de codificación puede llevar a cabo la predicción para cada bloque de transformación de subpartición cuando se aplica ISP al bloque actual.
El aparato de codificación puede determinar si aplicar codificación ISP o un modo ISP al bloque actual, es decir, el bloque de codificación, determinar una dirección en la que el bloque actual se dividirá según el resultado de la determinación, y derivar el tamaño y el número de subbloques divididos.
Por ejemplo, cuando el tamaño (ancho x altura) del bloque actual es 8x4, como se ilustra en la Figura 16, el bloque actual puede dividirse verticalmente y dividirse en dos subbloques, y cuando el tamaño (ancho x altura) del bloque actual es 4x8, el bloque actual puede dividirse horizontalmente y dividirse en dos subbloques. Alternativamente, como se ilustra en la Figura 17, cuando el tamaño (ancho x altura) del bloque actual es mayor que 4x8 u 8x4, es decir, cuando el tamaño del bloque actual es 1) 4xN o Nx4 (N > 16) o 2) M * N (M > 8, N > 8), el bloque actual puede dividirse en 4 subbloques en una dirección horizontal o vertical.
El mismo modo de intrapredicción puede aplicarse al bloque de transformada de subpartición dividido a partir del bloque actual, y el aparato de codificación puede derivar una muestra de predicción para cada bloque de transformada de subpartición. Es decir, el aparato de codificación lleva a cabo secuencialmente la intrapredicción, por ejemplo, horizontal o verticalmente, de izquierda a derecha, o de arriba abajo según una forma de división de los bloques de transformada de subpartición. Para el subbloque más a la izquierda o más superior, se hace referencia a un píxel reconstruido de un bloque de codificación ya codificado, como en un método de intrapredicción convencional. Además, para cada lado del bloque de transformada de subpartición interna posterior, cuando no es adyacente al bloque de transformada de subpartición anterior, con el fin de derivar píxeles de referencia adyacentes al lado correspondiente, se hace referencia a un píxel reconstruido de un bloque de codificación adyacente ya codificado, como en un método de intrapredicción convencional.
El aparato 200 de codificación puede derivar muestras residuales del bloque actual en base a muestras de predicción (E2220).
Además, el aparato 200 de codificación puede derivar coeficientes de transformada para el bloque actual basándose en una transformada primaria de la muestra residual (E2230).
La transformada primaria puede llevarse a cabo a través de múltiples núcleos de transformada y, en este caso, un núcleo de transformada puede seleccionarse basándose en el modo de intrapredicción.
El aparato 200 de codificación puede determinar si llevar a cabo una transformada secundaria o una transformada no separable, específicamente LFNST, en coeficientes de transformada para el bloque actual, y puede aplicar LFNST a los coeficientes de transformada para derivar coeficientes de transformada modificados.
A diferencia de la transformada primaria que separa y transforma coeficientes objetivo en una dirección vertical u horizontal, LFNST es una transformada no separable que aplica la transformada sin separar los coeficientes en una dirección específica. La transformada no separable puede ser una transformada no separable de baja frecuencia que aplica la transformada solo a una región de baja frecuencia en lugar de a todo el bloque objetivo que va a transformarse.
Según un ejemplo, el aparato de codificación puede determinar si LFNST es aplicable a una altura y un ancho del bloque actual en base a un tipo de árbol y un formato de color del bloque actual.
Según un ejemplo, en un caso en el que el tipo de árbol del bloque actual es croma de árbol dual, cuando la altura y el ancho correspondientes a un bloque de componente croma del bloque actual son mayores que o iguales a 4, el aparato de codificación puede determinar que es aplicable LFNST.
Además, según un ejemplo, en un caso en el que el tipo de árbol del bloque actual es luma de árbol único o de árbol dual, cuando la altura y el ancho correspondientes a un bloque de componente luma del bloque actual son mayores que o iguales a 4, el aparato de codificación puede determinar que es aplicable LFNST.
Mientras tanto, cuando se aplica ISP al bloque actual, es decir, cuando el bloque actual se divide en bloques de transformación de subpartición, el aparato de codificación puede determinar si LFNST es aplicable a la altura y ancho de un bloque de subpartición dividido. En este caso, cuando la altura y el ancho del bloque de subpartición son mayores que o iguales a 4, el aparato de codificación puede determinar que es aplicable LFNST.
Por ejemplo, cuando el tipo de árbol del bloque actual es croma de árbol dual, ISP puede no aplicarse y, en este caso, cuando la altura y el ancho correspondientes a un bloque de componente croma del bloque actual son mayores que o iguales a 4, el aparato de codificación puede determinar que es aplicable LFNST.
Por otro lado, en un caso en el que el tipo de árbol del bloque actual no es croma de árbol dual sino luma de árbol dual o árbol único, cuando la altura y el ancho de un bloque de subpartición para un bloque de componente luma del bloque actual o la altura y el ancho del bloque actual son mayores que o iguales a 4, el aparato de codificación puede determinar, dependiendo de si se aplica ISP al bloque actual, que LFNST es aplicable.
Además, según un ejemplo, cuando el bloque actual es una unidad de codificación y el ancho y la altura de la unidad de codificación son menores que o iguales a un tamaño transformable de luma máximo, el aparato de codificación puede determinar que es aplicable LFNST.
Cuando se determina llevar a cabo LFNST, el aparato 200 de codificación puede derivar un coeficiente de transformada modificado para el bloque actual o el bloque de transformada de subpartición en base a un conjunto de LFNST mapeado al modo de intrapredicción y una matriz de LFNST incluida en el conjunto de LFNST (E2240).
El aparato 200 de codificación puede determinar el conjunto de LFNST basándose en una relación de mapeo según el modo de intrapredicción aplicado al bloque actual, y llevar a cabo una LFNST, es decir, una transformada no separable basándose en una de las dos matrices de LFNST incluidas en el conjunto de LFNST.
En este caso, el mismo conjunto de LFNST y el mismo índice de LFNST pueden aplicarse al bloque de transformada de subpartición dividido del bloque actual. Es decir, debido a que se aplica el mismo modo de intrapredicción a los bloques de transformada de subpartición, el conjunto de LFNST determinado basándose en el modo de intrapredicción también puede aplicarse igualmente a todos los bloques de transformada de subpartición. Además, debido a que el índice de LFNST se codifica en unidades de una unidad de codificación, la misma matriz de LFNST puede aplicarse al bloque de transformada de subpartición dividido del bloque actual.
Como se ha descrito anteriormente, un conjunto de transformada puede determinarse según un modo de intrapredicción de un bloque de transformada que se va a transformar. Una matriz aplicada a LFNST tiene una relación de transposición con una matriz usada para una LFNST inversa.
En un ejemplo, la matriz LFNST puede ser una matriz no cuadrada en la que el número de filas es menor que el de las columnas.
Una región en la que se ubican los coeficientes de transformada usados como datos de entrada de LFNST puede derivarse basándose en el tamaño de un bloque de transformada de subpartición. Por ejemplo, cuando la altura y el ancho del bloque de transformada de subpartición son 8 o más, la región es las regiones 4x4 superior izquierda, superior derecha e inferior izquierda de la región 8x8 superior izquierda del bloque de transformada de subpartición, como se ilustra a la izquierda de la Figura 7, y cuando la altura y el ancho del bloque de transformada de subpartición no son iguales a o mayores que 8, la región puede ser la región 4x4 superior izquierda del bloque actual, como se ilustra en el lado derecho de la Figura 7.
Los coeficientes de transformada en la región pueden leerse en una dirección vertical u horizontal según un modo de intrapredicción de un bloque de transformada de subpartición para construir un vector unidimensional para una operación de multiplicación con la matriz LFNST.
Los 48 coeficientes de transformada modificados o 16 coeficientes de transformada modificados pueden leerse en una dirección vertical u horizontal según el modo de intrapredicción del bloque de transformada de subpartición y disponerse en una dimensión. Por ejemplo, cuando el modo de intrapredicción es una dirección horizontal (modos 2 a 34 en la Figura 9) basándose en una dirección diagonal (modo 34 en la Figura 9), los coeficientes de transformada pueden disponerse en una dirección horizontal, es decir, en orden de dirección de fila primero, como se ilustra en (a) de la Figura 7, y cuando el modo de intrapredicción es una dirección vertical (modos 35 a 66 en la Figura 9) basándose en una dirección diagonal, los coeficientes de transformada pueden disponerse en una dirección horizontal, es decir, en orden de dirección de columna primero, como se ilustra en (b) de la Figura 7.
En una realización, el aparato de codificación puede incluir etapas de determinar si el aparato de codificación está en una condición para aplicar LFNST, generar y codificar un índice de LFNST basándose en la determinación, seleccionar una matriz de núcleo de transformada y aplicar la LFNST a las muestras residuales basándose en la matriz de núcleo de transformada seleccionada y/o un factor de simplificación cuando el aparato de codificación está en una condición para aplicar LFNST. En este caso, un tamaño de la matriz de núcleo de transformada de simplificación puede determinarse basándose en un factor de simplificación.
Mientras tanto, según un ejemplo, el aparato de codificación puede poner a cero la segunda región del bloque actual en la que no existen coeficientes de transformada modificados.
Como se muestra en las Figuras 13 y 14, todas las regiones restantes del bloque actual en las que no existe coeficiente de transformada modificado pueden procesarse como 0. Debido a este cero, la cantidad de cálculo requerida para llevar a cabo todo el proceso de transformada se reduce, y la cantidad de cálculo requerida para todo el proceso de transformada se reduce, reduciendo así el consumo de potencia requerido para llevar a cabo la transformada. Además, la eficiencia de codificación de imágenes puede aumentar reduciendo la latencia implicada en el proceso de transformada.
Según un ejemplo, el aparato de codificación puede, en base a los coeficientes de transformada existentes en una región excepto para la posición de DC del bloque actual, configurar información de imagen de modo que se señalice el índice de LFNST que indica una matriz de LFNST, y el aparato de codificación puede, en base a que el bloque actual se divida en múltiples bloques de subpartición, configurar información de imagen de modo que el índice de LFNST se señalice independientemente de si existe un coeficiente de transformada en una región excepto para la posición de DC (E2250).
El aparato de codificación puede configurar la información de imagen de modo que la información de imagen que se muestra en la Tabla 10 sea analizada por el aparato de decodificación.
Es decir, cuando el bloque actual no se divide en múltiples bloques de subpartición y los coeficientes de transformada existen en una región excepto por la posición de DC del bloque actual, el aparato de codificación puede configurar información de imagen de modo que se analiza el índice de LFNST, y cuando el bloque actual se divide en múltiples bloques de subpartición, el aparato de codificación puede configurar información de imagen de modo que se analiza el índice de LFNST sin comprobar si existe un coeficiente de transformada en una región excepto para la posición de DC.
Es decir, cuando ISP se aplica al bloque actual, el aparato de codificación puede configurar información de imagen de modo que el índice LFNST se señalice incluso si los últimos coeficientes distintos de cero para todos los bloques de subpartición están ubicados en la posición de DC.
Según un ejemplo, cuando el índice de un subbloque que incluye el último coeficiente significativo en el bloque actual (o un bloque de subpartición) es 0 y la posición del último coeficiente significativo en el subbloque es mayor que 0, el aparato de codificación puede determinar que el coeficiente significativo existe en una región excepto para la posición de CC y puede configurar información de imagen de modo que se señalice el índice de LFNST. En la presente descripción, la primera posición en el orden de escaneo puede ser 0.
Además, según un ejemplo, cuando el índice de un subbloque que incluye el último coeficiente significativo en el bloque actual (o un bloque de subpartición) es mayor que 0 y el ancho y la altura del bloque actual son mayores que o iguales a 4, el aparato de codificación puede determinar que LFNST ciertamente no se aplica y puede configurar información de imagen de modo que no se señalice un índice LFSNT.
Además, según un ejemplo, cuando el tamaño del bloque actual (o un bloque de subpartición) es 4x4 u 8x8 y cuando la posición del último coeficiente significativo es mayor que 7 en un caso en el que el inicio de la posición en el orden de escaneo es 0, el aparato de codificación puede determinar que la LFNST ciertamente no se aplica y puede configurar información de imagen de modo que el índice de LFNST no se señalice.
Es decir, después de que la variable LfnstDcOnly y la variable LfnstZeroOutSigCoeffFlag se deriven en el aparato de decodificación, el aparato de codificación puede configurar información de imagen de modo que el índice de LFNST se analiza según los valores de variables derivados.
El aparato de codificación puede derivar coeficientes de transformada cuantificados llevando a cabo cuantificación basándose en los coeficientes de transformada modificados para el bloque actual, y puede codificar información sobre los coeficientes de transformada cuantificados y, si es aplicable LFNST, el índice de LFNST (E2260).
Es decir, el aparato de codificación puede generar información residual que incluye información sobre coeficientes de transformada cuantificados. La información residual puede incluir el elemento de información/sintaxis relacionado con la transformada descrita más arriba. El aparato de codificación puede codificar información de imagen/vídeo que incluye información residual y emitir la información de imagen/vídeo codificada en forma de un flujo de bits.
Más específicamente, el aparato 200 de codificación puede generar información sobre los coeficientes de transformada cuantificados y codificar la información sobre los coeficientes de transformada cuantificados generados.
El elemento de sintaxis del índice de LFNST según la presente realización puede indicar si se aplica LFNST (inversa) y cualquiera de las matrices de LFNST incluidas en el conjunto de LFNST, y cuando el conjunto de LFNST incluye dos matrices de núcleos de transformada, puede haber tres valores del elemento de sintaxis del índice de LFNST.
Según una realización, cuando una estructura de árbol de división para el bloque actual es un tipo de árbol dual, se puede codificar un índice de LFNST para cada uno de un bloque luma y un bloque croma.
Según una realización, el valor de elemento sintáctico para el índice de transformada puede derivarse como 0 que indica un caso en el que no se aplica LFNST (inversa) al bloque actual, 1 que indica una primera matriz de LFNST entre matrices de LFNST, y 2 que indica una segunda matriz de LFNST entre matrices de LFNST.
En la presente descripción, puede omitirse al menos una de cuantificación/descuantificación y/o transformada/transformada inversa. Cuando se omite la cuantificación/descuantificación, un coeficiente de transformada cuantificado puede denominarse coeficiente de transformada. Cuando se omite la transformada/transformada inversa, el coeficiente de transformada puede denominarse coeficiente o coeficiente residual, o aún puede denominarse coeficiente de transformada para la consistencia de la expresión.
Además, en la presente descripción, un coeficiente de transformada cuantificado y un coeficiente de transformada pueden denominarse coeficiente de transformada y coeficiente de transformada escalado, respectivamente. En este caso, la información residual puede incluir información sobre un coeficiente de transformada, y la información sobre el coeficiente de transformada puede señalizarse a través de una sintaxis de codificación residual. Los coeficientes de transformada pueden derivarse basándose en la información residual (o información sobre el coeficiente de transformada), y los coeficientes de transformada escalados pueden derivarse a través de la transformada inversa (escalado) de los coeficientes de transformada. Las muestras residuales pueden derivarse en base a la transformada inversa (transformada) de los coeficientes de transformada escalados. Estos detalles también pueden aplicarse/expresarse en otras partes de la presente descripción.
En las realizaciones descritas más arriba, los métodos se explican basándose en diagramas de flujo por medio de una serie de etapas o bloques, pero la presente descripción no se limita al orden de las etapas, y una determinada etapa puede llevarse a cabo en un orden o etapa diferente de la descrita anteriormente, o simultáneamente con otra etapa. Además, una persona con experiencia ordinaria en la técnica puede entender que las etapas que se muestran en un diagrama de flujo no son excluyentes, y que se puede incorporar otra etapa o se pueden eliminar una o más etapas del diagrama de flujo sin afectar al alcance de la presente descripción.
Los métodos descritos más arriba según la presente descripción pueden implementarse como una forma de software, y un aparato de codificación y/o aparato de decodificación según la descripción pueden incluirse en un dispositivo para procesamiento de imágenes como, por ejemplo, un TV, un ordenador, un teléfono inteligente, un decodificador, un dispositivo de visualización o similares.
Cuando las realizaciones en la presente descripción se realizan mediante software, los métodos descritos anteriormente pueden realizarse como módulos (procesos, funciones o similares) para llevar a cabo las funciones descritas más arriba. Los módulos pueden almacenarse en una memoria y pueden ejecutarse por un procesador. La memoria puede estar dentro o fuera del procesador y puede estar conectada al procesador de diversas maneras conocidas. El procesador puede incluir un circuito integrado para aplicaciones específicas (ASIC, por sus siglas en inglés), otro conjunto de chips, circuito lógico y/o un dispositivo de procesamiento de datos. La memoria puede incluir una memoria de solo lectura (ROM, por sus siglas en inglés), una memoria de acceso aleatorio (RAM, por sus siglas en inglés), una memoria flash, una tarjeta de memoria, un medio de almacenamiento y/u otro dispositivo de almacenamiento. Es decir, las realizaciones descritas en la presente descripción pueden realizarse y llevarse a cabo en un procesador, un microprocesador, un controlador o un chip. Por ejemplo, las unidades de función que se muestran en cada dibujo pueden realizarse y llevarse a cabo en un ordenador, un procesador, un microprocesador, un controlador o un chip.
Además, el aparato de decodificación y el aparato de codificación al que se aplica la presente descripción, pueden incluirse en un transceptor de radiodifusión multimedia, un terminal de comunicación móvil, un dispositivo de vídeo de cine en casa, un dispositivo de vídeo de cine digital, una cámara de vigilancia, un dispositivo de chat de vídeo, un dispositivo de comunicación en tiempo real como, por ejemplo, comunicación de vídeo, un dispositivo de transmisión continua móvil, un medio de almacenamiento, una videocámara, un dispositivo de suministro de servicio de vídeo bajo demanda (VoD, por sus siglas en inglés), un dispositivo de vídeoover the top(OTT, por sus siglas en inglés), un dispositivo de suministro de servicio de transmisión continua de Internet, un dispositivo de vídeo tridimensional (3D), un dispositivo de vídeo de videotelefonía y un dispositivo de vídeo médico, y pueden usarse para procesar una señal de vídeo o una señal de datos. Por ejemplo, el dispositivo de vídeo over the top (OTT) puede incluir una consola de juegos, un reproductor de Blu-ray, un TV con acceso a Internet, un sistema de cine en casa, un teléfono inteligente, una tableta, un grabador de vídeo digital (DVR, por sus siglas en inglés) y similares.
Además, el método de procesamiento al que se aplica la presente descripción, puede producirse en forma de un programa ejecutado por un ordenador, y almacenarse en un medio de grabación legible por ordenador. Los datos multimedia que tienen una estructura de datos según la presente descripción también pueden almacenarse en un medio de grabación legible por ordenador. El medio de grabación legible por ordenador incluye todo tipo de dispositivos de almacenamiento y dispositivos de almacenamiento distribuido en los que se almacenan datos legibles por ordenador. El medio de grabación legible por ordenador puede incluir, por ejemplo, un disco Blu-ray (BD, por sus siglas en inglés), un bus universal en serie (USB, por sus siglas en inglés), una ROM, una PROM, una EPROM, una EEPROM, una RAM, un CD-ROM, una cinta magnética, un disquete y un dispositivo de almacenamiento de datos óptico. Además, el medio de grabación legible por ordenador incluye medios incorporados en forma de una onda portadora (por ejemplo, transmisión a través de Internet). Además, un flujo de bits generado por el método de codificación puede almacenarse en un medio de grabación legible por ordenador o transmitirse a través de una red de comunicación cableada o inalámbrica. Además, las realizaciones de la presente divulgación pueden realizarse como un producto de programa informático mediante códigos de programa, y los códigos de programa pueden ejecutarse en un ordenador mediante las realizaciones de la presente descripción. Los códigos de programa pueden almacenarse en una portadora legible por ordenador.
La Figura 23 ilustra la estructura de un sistema de transmisión continua de contenido al que se aplica la presente descripción.
Además, el sistema de transmisión de contenidos al que se aplica la presente descripción puede incluir en gran medida un servidor de codificación, un servidor de transmisión, un servidor web, un almacenamiento multimedia, un equipo de usuario y un dispositivo de entrada multimedia.
El servidor de codificación funciona para comprimir a datos digitales los contenidos introducidos desde los dispositivos de entrada multimedia como, por ejemplo, el teléfono inteligente, la cámara, la videocámara y similares, para generar un flujo de bits, y para transmitirlo al servidor de transmisión continua. Como otro ejemplo, en un caso en el que el dispositivo de entrada multimedia como, por ejemplo, el teléfono inteligente, la cámara, la videograbadora o similar, genera directamente un flujo de bits, el servidor de codificación puede omitirse. El flujo de bits puede generarse mediante un procedimiento de codificación o un método de generación de flujo de bits al que se aplica la presente descripción. Y el servidor de transmisión puede almacenar el flujo de bits temporalmente durante un proceso para transmitir o recibir el flujo de bits.
El servidor de transmisión en continuo transmite datos multimedia al equipo de usuario basándose en una solicitud del usuario a través del servidor web, que funciona como un instrumento que informa a un usuario qué servicio hay. Cuando el usuario solicita un servicio que desea el usuario, el servidor web transfiere la solicitud al servidor de transmisión continua, y el servidor de transmisión continua transmite datos multimedia al usuario. A este respecto, el sistema de transmisión de contenidos puede incluir un servidor de control separado y, en este caso, el servidor de control funciona para controlar comandos/respuestas entre equipos respectivos en el sistema de transmisión de contenidos.
El servidor de transmisión puede recibir contenidos del almacenamiento de medios y/o del servidor de codificación. Por ejemplo, en un caso en el que los contenidos se reciben del servidor de codificación, los contenidos pueden recibirse en tiempo real. En este caso, el servidor de transmisión puede almacenar el flujo de bits durante un período predeterminado para proveer el servicio de transmisión sin problemas.
Por ejemplo, el equipo de usuario puede incluir un teléfono móvil, un teléfono inteligente, un ordenador portátil, un terminal de radiodifusión digital, un asistente digital personal (PDA, por sus siglas en inglés), un reproductor multimedia portátil (PMP, por sus siglas en inglés), una navegación, un PC de pizarra, una tableta, unultrabook,un dispositivo ponible (p. ej., un terminal tipo reloj (reloj inteligente), un terminal tipo cristal (cristal inteligente), una pantalla montada en la cabeza (HMD, por sus siglas en inglés)), un TV digital, un ordenador de sobremesa, una señalización digital o similares. Cada uno de los servidores en el sistema de transmisión continua de contenidos puede ser operado como un servidor distribuido y, en este caso, los datos recibidos por cada servidor pueden ser procesados de manera distribuida.
Las reivindicaciones descritas en la presente memoria pueden combinarse de diversas maneras. Por ejemplo, las características técnicas de las reivindicaciones de los métodos de la presente descripción pueden combinarse para implementarse o llevarse a cabo en un aparato, y las características técnicas de las reivindicaciones de aparato pueden combinarse para implementarse o llevarse a cabo en un método. Además, las características técnicas de las reivindicaciones de los métodos y las reivindicaciones del aparato pueden combinarse para implementarse o llevarse a cabo en un aparato, y las características técnicas de las reivindicaciones del método y las reivindicaciones del aparato pueden combinarse para implementarse o llevarse a cabo en un método.

Claims (6)

REIVINDICACIONES
1. Un método de decodificación de imágenes llevado a cabo por un aparato de decodificación, comprendiendo el método:
obtener (E2110) información residual de un flujo de bits;
derivar (E2120) coeficientes de transformada para un bloque actual de la información residual;
derivar (E2150) coeficientes de transformación modificados utilizando una matriz de transformada no separable de baja frecuencia (LFNST) según un índice LFNST;
derivar (E2160) muestras residuales para el bloque actual llevando a cabo una transformada primaria inversa en los coeficientes de transformada modificados; y
generar una imagen reconstruida añadiendo las muestras residuales y las muestras de predicción del bloque actual, en donde para el bloque actual donde no se aplica un modo de intrasubparticiones (ISP), el índice LFNST para el bloque actual se analiza en respuesta a un coeficiente de transformada distinto de cero que está presente en una región distinta de una posición de DC de cualquier bloque de componente según un tipo de árbol del bloque actual; en donde en respuesta a que el índice de LFNST no se analiza, un valor del índice de LFNST se deriva como 0 y los coeficientes de transformada modificados se derivan como los coeficientes de transformada,
caracterizado por que para el bloque actual donde se aplica el modo ISP, el índice LFNST para el bloque actual se analiza sin considerar si un coeficiente de transformada distinto de cero está presente en la región distinta de la posición de DC de cualquier bloque de componente según el tipo de árbol del bloque actual.
2. El método de decodificación de imágenes de la reivindicación 1,
en donde para el bloque actual donde se aplica el modo ISP, el índice LFNST para el bloque actual se analiza incluso si no está presente un coeficiente de transformada distinto de cero en la región distinta de la posición de CC de cualquier bloque de componente según el tipo de árbol del bloque actual.
3. Un método de codificación de imágenes llevado a cabo por un aparato de codificación, comprendiendo el método: derivar (E2230) coeficientes de transformada para un bloque actual llevando a cabo una transformada primaria para muestras residuales del bloque actual;
derivar (E2240) coeficientes de transformada modificados a partir de los coeficientes de transformada usando una matriz de transformada no separable de baja frecuencia, LFNST, para una LFNST;
generar (E2250) un índice de LFNST relacionado con la matriz de LFNST; y
codificar (E2260) información de imagen que incluye información residual relacionada con los coeficientes de transformada modificados y el índice LFNST,
en donde para el bloque actual donde no se aplica un modo de intrasubparticiones (ISP), la información de imagen se configura de modo que el índice LFNST se señaliza en respuesta a un coeficiente de transformada distinto de cero que está presente en una región distinta de una posición de DC de cualquier bloque de componente según un tipo de árbol del bloque actual,
caracterizado por que, para el bloque actual en el que se aplica el modo ISP, la información de imagen se configura de modo que el índice LFNST se señaliza sin considerar si un coeficiente de transformada distinto de cero está presente en la región distinta de la posición de CC de cualquier bloque de componente según el tipo de árbol del bloque actual.
4. El método de codificación de imágenes de la reivindicación 3, en donde
para el bloque actual donde se aplica el modo ISP, la información de imagen se configura de modo que el índice LFNST para el bloque actual se señaliza incluso si no está presente un coeficiente de transformada distinto de cero en la región distinta de la posición de DC de cualquier bloque de componente según el tipo de árbol del bloque actual.
5. Un método de transmisión de datos para una imagen, comprendiendo el método:
obtener un flujo de bits para la imagen según el método de codificación de imágenes de la reivindicación 3; y transmitir los datos que comprenden el flujo de bits.
6. Un medio de almacenamiento legible por ordenador no transitorio que almacena un flujo de bits generado por un método de codificación de imágenes, comprendiendo el método:
derivar coeficientes de transformada para un bloque actual llevando a cabo una transformada primaria para muestras residuales del bloque actual;
derivar coeficientes de transformada modificados de coeficientes de transformada utilizando una matriz de transformada no separable de baja frecuencia, LFNST, para una LFNST;
generar un índice LFNST relacionado con la matriz LFNST; y
codificar la información de imagen que incluye la información residual relacionada con los coeficientes de transformada modificados y el índice LFNST,
en donde para el bloque actual donde no se aplica un modo de intrasubparticiones (ISP), la información de imagen se configura de modo que el índice LFNST se señaliza en respuesta a un coeficiente de transformada distinto de cero que está presente en una región distinta de una posición de CC de cualquier bloque de componente según un tipo de árbol del bloque actual,
caracterizado por que, para el bloque actual donde se aplica el modo ISP, la información de imagen se configura de modo que el índice LFNST se señaliza sin considerar si un coeficiente de transformada distinto de cero está presente en la región distinta de la posición de DC de cualquier bloque de componente según el tipo de árbol del bloque actual.
ES20864403T 2019-09-21 2020-09-21 Método de codificación de imágenes basado en una transformada y dispositivo para el mismo Active ES2982593T3 (es)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201962903821P 2019-09-21 2019-09-21
US201962904627P 2019-09-23 2019-09-23
PCT/KR2020/012695 WO2021054796A1 (ko) 2019-09-21 2020-09-21 변환에 기반한 영상 코딩 방법 및 그 장치

Publications (1)

Publication Number Publication Date
ES2982593T3 true ES2982593T3 (es) 2024-10-17

Family

ID=74883645

Family Applications (2)

Application Number Title Priority Date Filing Date
ES20864403T Active ES2982593T3 (es) 2019-09-21 2020-09-21 Método de codificación de imágenes basado en una transformada y dispositivo para el mismo
ES24168784T Active ES3020842T3 (en) 2019-09-21 2020-09-21 Image coding method based on transform, and device therefor

Family Applications After (1)

Application Number Title Priority Date Filing Date
ES24168784T Active ES3020842T3 (en) 2019-09-21 2020-09-21 Image coding method based on transform, and device therefor

Country Status (15)

Country Link
US (3) US11805257B2 (es)
EP (3) EP4017007B1 (es)
JP (4) JP7299413B2 (es)
KR (3) KR20260032654A (es)
CN (4) CN114731434B (es)
CA (1) CA3155276C (es)
ES (2) ES2982593T3 (es)
FI (1) FI4017007T3 (es)
HR (2) HRP20250361T1 (es)
HU (2) HUE070896T2 (es)
MX (3) MX2022003321A (es)
PL (2) PL4017007T3 (es)
RS (1) RS66628B1 (es)
SI (1) SI4017007T1 (es)
WO (1) WO2021054796A1 (es)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114731434B (zh) * 2019-09-21 2023-06-30 Lg电子株式会社 基于变换的图像编码方法及其装置
US20220150518A1 (en) * 2020-11-11 2022-05-12 Tencent America LLC Method and apparatus for video coding
EP4325856A4 (en) * 2021-04-12 2025-04-09 LG Electronics Inc. Method and apparatus for designing a non-separable low-frequency transformer
EP4625992A1 (en) * 2022-11-24 2025-10-01 LG Electronics Inc. Image encoding/decoding method and device, and recording medium storing bitstream
WO2024112171A1 (ko) * 2022-11-24 2024-05-30 엘지전자 주식회사 영상 인코딩/디코딩 방법 및 장치, 그리고 비트스트림을 저장한 기록 매체
EP4633167A1 (en) * 2022-12-09 2025-10-15 LG Electronics Inc. Image encoding/decoding method and device, and recording medium storing bitstream
KR20250129705A (ko) * 2022-12-20 2025-08-29 엘지전자 주식회사 영상 인코딩/디코딩 방법 및 장치, 그리고 비트스트림을 저장한 기록 매체
KR20250124364A (ko) * 2022-12-20 2025-08-19 엘지전자 주식회사 영상 인코딩/디코딩 방법 및 장치, 그리고 비트스트림을 저장한 기록 매체
KR20250121130A (ko) * 2022-12-20 2025-08-11 엘지전자 주식회사 영상 인코딩/디코딩 방법 및 장치, 그리고 비트스트림을 저장한 기록 매체
CN120345255A (zh) * 2022-12-20 2025-07-18 Lg 电子株式会社 图像编码/解码方法和设备以及用于存储比特流的记录介质
CN120323024A (zh) * 2022-12-20 2025-07-15 Lg 电子株式会社 图像编码/解码方法和设备及其上存储比特流的记录介质
WO2024136471A1 (ko) * 2022-12-20 2024-06-27 엘지전자 주식회사 영상 인코딩/디코딩 방법 및 장치, 그리고 비트스트림을 저장한 기록 매체
KR20250127294A (ko) * 2022-12-20 2025-08-26 엘지전자 주식회사 영상 인코딩/디코딩 방법 및 장치, 그리고 비트스트림을 저장한 기록 매체
KR20250124366A (ko) * 2022-12-20 2025-08-19 엘지전자 주식회사 영상 인코딩/디코딩 방법 및 장치, 그리고 비트스트림을 저장한 기록 매체

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8885701B2 (en) * 2010-09-08 2014-11-11 Samsung Electronics Co., Ltd. Low complexity transform coding using adaptive DCT/DST for intra-prediction
MX369192B (es) * 2011-10-18 2019-10-31 Kt Corp Método para codificar imagen, método para decodificar imagen, codificador de imagen y decodificador de imagen.
US10306229B2 (en) * 2015-01-26 2019-05-28 Qualcomm Incorporated Enhanced multiple transforms for prediction residual
US10681379B2 (en) * 2015-09-29 2020-06-09 Qualcomm Incorporated Non-separable secondary transform for video coding with reorganizing
KR102644185B1 (ko) * 2015-09-30 2024-03-06 엘지전자 주식회사 비디오 코딩 시스템에서 레지듀얼 신호 코딩 방법 및 장치
EP3629581A1 (en) * 2015-10-13 2020-04-01 Samsung Electronics Co., Ltd. Method and device for encoding or decoding image
EP3376764A4 (en) * 2015-11-12 2019-12-04 LG Electronics Inc. METHOD AND DEVICE FOR COEFFICIENT-INDUCED INTRAPREDICATION IN A BILDCODING SYSTEM
JP2019519972A (ja) * 2016-05-05 2019-07-11 ヴィド スケール インコーポレイテッド イントラコーディングのための制御点ベースのイントラ方向表現
EP3453174B1 (en) * 2016-05-06 2024-11-27 InterDigital Madison Patent Holdings, SAS Method and system for decoder-side intra mode derivation for block-based video coding
KR20180001485A (ko) * 2016-06-24 2018-01-04 한국전자통신연구원 변환 기반의 영상 부호화/복호화 방법 및 장치
CN115914625B (zh) * 2016-08-01 2025-07-11 韩国电子通信研究院 图像编码/解码方法
US10743025B2 (en) * 2016-09-01 2020-08-11 Lg Electronics Inc. Method and apparatus for performing transformation using layered givens transform
US11095893B2 (en) * 2016-10-12 2021-08-17 Qualcomm Incorporated Primary transform and secondary transform in video coding
JP7063271B2 (ja) * 2016-10-18 2022-05-09 東洋紡株式会社 伸縮性導体シート、伸縮性配線、伸縮性配線付き布帛、および導電性回復方法
US10855997B2 (en) * 2017-04-14 2020-12-01 Mediatek Inc. Secondary transform kernel size selection
JP6546237B2 (ja) * 2017-09-27 2019-07-17 大王製紙株式会社 伸縮部材及びこの伸縮部材を有する使い捨て着用物品
US10567801B2 (en) * 2018-03-07 2020-02-18 Tencent America LLC Method and apparatus for video coding with primary and secondary transforms
KR102636388B1 (ko) * 2018-03-29 2024-02-15 프라운호퍼 게젤샤프트 쭈르 푀르데룽 데어 안겐반텐 포르슝 에. 베. 변환 계수 블록 코딩
US20200252608A1 (en) * 2019-02-05 2020-08-06 Qualcomm Incorporated Sub-partition intra prediction
US11218728B2 (en) * 2019-06-04 2022-01-04 Tencent America LLC Method and apparatus for video coding
US11695960B2 (en) * 2019-06-14 2023-07-04 Qualcomm Incorporated Transform and last significant coefficient position signaling for low-frequency non-separable transform in video coding
CN119676449A (zh) * 2019-06-20 2025-03-21 皇家飞利浦有限公司 用于对图像信号进行编码/解码的方法及其设备
CN114097223B (zh) * 2019-06-25 2025-06-10 弗劳恩霍夫应用研究促进协会 解码器、编码器和包括对帧内子分区进行编码的方法
BR112022001333A2 (pt) * 2019-08-06 2022-03-22 Interdigital Vc Holdings France Sas Transformação secundária para codificação e decodificação de vídeo
CN114731434B (zh) * 2019-09-21 2023-06-30 Lg电子株式会社 基于变换的图像编码方法及其装置

Also Published As

Publication number Publication date
JP7769082B2 (ja) 2025-11-12
HUE067103T2 (hu) 2024-09-28
RS66628B1 (sr) 2025-04-30
EP4572309A1 (en) 2025-06-18
CN114731434A (zh) 2022-07-08
EP4373094A3 (en) 2024-05-29
CN116600120A (zh) 2023-08-15
EP4373094A2 (en) 2024-05-22
KR102935856B1 (ko) 2026-03-05
MX2025003753A (es) 2025-05-02
WO2021054796A1 (ko) 2021-03-25
CA3155276C (en) 2025-11-04
MX2025003751A (es) 2025-05-02
PL4373094T3 (pl) 2025-04-28
KR20220045041A (ko) 2022-04-12
ES3020842T3 (en) 2025-05-23
US20240007642A1 (en) 2024-01-04
SI4017007T1 (sl) 2024-08-30
CA3155276A1 (en) 2021-03-25
EP4373094C0 (en) 2025-03-05
EP4017007A4 (en) 2022-11-16
JP2022548961A (ja) 2022-11-22
US11805257B2 (en) 2023-10-31
EP4373094B1 (en) 2025-03-05
KR102467334B1 (ko) 2022-11-16
CN114731434B (zh) 2023-06-30
CN116527937A (zh) 2023-08-01
US12273529B2 (en) 2025-04-08
JP7299413B2 (ja) 2023-06-27
JP2023107986A (ja) 2023-08-03
KR20220154260A (ko) 2022-11-21
US20250211750A1 (en) 2025-06-26
JP2026009231A (ja) 2026-01-19
JP7596448B2 (ja) 2024-12-09
EP4017007A1 (en) 2022-06-22
EP4017007B1 (en) 2024-05-22
HRP20240816T1 (hr) 2024-11-22
CN116527937B (zh) 2025-09-26
FI4017007T3 (fi) 2024-06-19
BR112022005040A2 (pt) 2022-06-21
KR20260032654A (ko) 2026-03-09
CN116527938A (zh) 2023-08-01
CN116600120B (zh) 2026-01-09
MX2022003321A (es) 2022-05-06
HUE070896T2 (hu) 2025-07-28
US20220248027A1 (en) 2022-08-04
CN116527938B (zh) 2025-09-30
HRP20250361T1 (hr) 2025-05-09
JP2025019269A (ja) 2025-02-06
PL4017007T3 (pl) 2024-07-29

Similar Documents

Publication Publication Date Title
ES2982593T3 (es) Método de codificación de imágenes basado en una transformada y dispositivo para el mismo
ES2981910T3 (es) Transformada en codificación de imágenes basada en intrapredicción
ES3022187T3 (en) Transform for matrix-based intra-prediction in image coding
ES3016332T3 (en) Video coding method on basis of secondary transform, and device for same
ES2983826T3 (es) Codificación de imágenes basada en transformada
AU2024203027B2 (en) Transform-based image coding method, and apparatus therefor
ES3040198T3 (en) Signaling of information indicating transform kernel set in image coding
ES2982809T3 (es) Codificación de información sobre conjunto de núcleos de transformada
AU2024202291B2 (en) Transform-based image coding method, and device therefor
ES2986930T3 (es) Codificación de imágenes basada en transformadas
ES3018507T3 (es) Método y dispositivo para procesar información de imagen para la codificación de imágenes/vídeos
CN114747220B (zh) 基于变换的图像编码方法及其设备
CN119071512A (zh) 基于变换的图像编译方法及其设备
ES2953235T3 (es) Codificación de imágenes basada en transformadas
CN114651446B (zh) 基于变换的图像编译方法及其装置
US20230131478A1 (en) Transform-based video coding method, and device therefor
RU2793775C1 (ru) Способ кодирования изображения на основе преобразования и устройство для его осуществления
RU2803184C1 (ru) Способ кодирования изображения на основе преобразования и устройство для его осуществления
RU2799629C1 (ru) Способ кодирования изображения на основе преобразования и устройство для его осуществления
RU2806283C2 (ru) Способ кодирования изображения на основе преобразования и устройство для его осуществления
BR122023019215B1 (pt) Método de decodificação de imagem, método de codificação de imagem, método de transmissão de dados para uma imagem, meio de armazenamento digital legivel por computador não transitório, aparelho de decodificação para decodificar imagem, aparelho de codificação para codificar imagem e aparelho para transmitir dados para uma imagem
BR112022005040B1 (pt) Método de codificação de imagem baseado em transformada e dispositivo para o mesmo
BR112022005267B1 (pt) Método de decodificação de imagem e método de codificação de imagem com base em transformada, meio de armazenamento digital não transitório legível por computador e método de transmissão de dados para uma imagem
BR122024009165B1 (pt) Método de decodificação de imagem realizado por um aparelho de decodificação, método de codificação de imagem realizado por um aparelho de codificação de imagem, meio de armazenamento digital não transitório legível por computador, e método de transmissão de dados para uma imagem
BR122023019155B1 (pt) Aparelho de decodificação para decodificação de imagem, aparelho de codificação de imagem para codificação de imagem e aparelho para transmitir dados para uma imagem