DESCRIPCIÓN
MÉTODO Y APARATO PARA PROCESAR SEÑALES DE VÍDEO
Campo técnico
La presente invención se refiere a un método y dispositivo para procesar una señal de vídeo.
Antecedentes de la técnica
En la actualidad, han aumentado las peticiones de imágenes de alta resolución y alta calidad tales como imágenes de alta definición (HD) e imágenes de ultra-alta definición (UHD) en diversos campos de aplicación. Sin embargo, los datos de resolución y calidad de imagen superiores tienen cada vez más cantidades de datos en comparación con los datos de imágenes convencionales. Por lo tanto, cuando se transmiten datos de imagen usando un medio tal como redes alámbricas e inalámbricas convencionales, o cuando se almacenan datos de imagen usando un medio de almacenamiento convencional, aumenta el coste de transmisión y almacenamiento. Para resolver estos problemas que tienen lugar con un aumento en la resolución y calidad de datos de imagen, pueden utilizarse técnicas de codificación/decodificación de imágenes de alta eficacia.
La tecnología de compresión de imagen incluye diversas técnicas, que incluyen: una técnica de inter-predicción de predicción de un valor de píxel incluido en una instantánea actual a partir de una instantánea anterior o posterior de la instantánea actual; una técnica de intra-predicción de predicción de un valor de píxel incluido en una instantánea actual usando información de píxeles en la instantánea actual; una técnica de codificación por entropía de asignación de un código corto a un valor con una alta frecuencia de ocurrencia y de asignación de un código largo a un valor con una baja frecuencia de ocurrencia; etc. Los datos de imagen pueden comprimirse de manera eficaz usando tal tecnología de compresión de imagen, y pueden transmitirse o almacenarse.
Mientras tanto, con las peticiones de imágenes de alta resolución, también han aumentado las peticiones de contenido de imágenes estereográficas, que es un nuevo servicio de imágenes. Se está analizando una técnica de compresión de vídeo para proporcionar de manera eficaz contenido de imágenes estereográficas con alta resolución y ultra-alta resolución.
Divulgación
Problema técnico
Un objeto de la presente invención se pretende que proporcione un método y un
aparato para particionar jerárquicamente un bloque de codificación al codificar/decodificar una señal de vídeo.
Un objeto de la presente invención se pretende que proporcione un método y un aparato para realizar de manera selectiva una transformada inversa para un bloque objetivo de codificación/decodificación al codificar/decodificar una señal de vídeo.
Un objeto de la presente invención se pretende que proporcione un método y un aparato para determinar de manera adaptativa un tipo de transformada de acuerdo con un bloque objetivo de codificación/decodificación al transformar de manera inversa el bloque objetivo de codificación/decodificación.
Un objeto de la presente invención se pretende que proporcione un método y un aparato para derivar el valor residual de parámetro de cuantificación de acuerdo con una característica de un bloque objetivo de codificación/decodificación al codificar/decodificar una señal de vídeo.
Los objetos técnicos a conseguirse por la presente invención no están limitados a los problemas técnicos anteriormente mencionados. Y, se entenderán otros problemas técnicos que no se mencionan de manera evidente por los expertos en la materia a partir de la siguiente descripción.
Solución técnica
Un método y un aparato para decodificar una señal de vídeo de acuerdo con la presente invención pueden determinar un conjunto de transformada que comprende una pluralidad de candidatos de tipo de transformada para un bloque actual, determinar un tipo de transformada del bloque actual desde la pluralidad de candidatos de tipo de transformada, y realizar una transformada inversa para el bloque actual basándose en el tipo de transformada del bloque actual.
En el método y el aparato para decodificar una señal de vídeo de acuerdo con la presente invención, el tipo de transformada del bloque actual puede seleccionarse de manera adaptativa desde la pluralidad de candidatos de tipo de transformada de acuerdo con si el bloque actual satisface una condición predeterminada.
En el método y el aparato para decodificar una señal de vídeo de acuerdo con la presente invención, la condición predeterminada puede determinarse de manera adaptativa de acuerdo con un tamaño del bloque actual.
En el método y el aparato para decodificar una señal de vídeo de acuerdo con la presente invención, la transformada inversa puede comprender una transformada de dirección horizontal y una transformada de dirección vertical para el bloque actual, y el conjunto de transformada puede comprender un primer conjunto de transformada para la transformada de dirección horizontal y un segundo conjunto de transformada para la transformada de dirección vertical.
En el método y el aparato para decodificar una señal de vídeo de acuerdo con la presente invención, el conjunto de transformada puede especificarse por información de índice obtenida desde un flujo de bits.
En el método y el aparato para decodificar una señal de vídeo de acuerdo con la presente invención, el conjunto de transformada puede determinarse basándose en un conjunto de transformada de un bloque que tiene un mismo modo de predicción o similar que el bloque actual entre bloques decodificados previamente para el bloque actual.
En el método y el aparato para decodificar una señal de vídeo de acuerdo con la presente invención, el método y el aparato pueden decodificar indicación de información de si la transformada inversa se omite para el bloque actual, y determinar si realizar la transformada inversa para el bloque actual basándose en la información.
En el método y el aparato para decodificar una señal de vídeo de acuerdo con la presente invención, la información puede comprender información que indica si se omite una transformada inversa de dirección horizontal del bloque actual e información que indica si se omite una transformada inversa de dirección vertical del bloque actual.
En el método y el aparato para decodificar una señal de vídeo de acuerdo con la presente invención, cuando la información indica que se omite la transformada inversa para el bloque actual, puede omitirse al menos una de una transformada de dirección horizontal o una transformada de dirección vertical de acuerdo con una forma del bloque actual.
Un método y un aparato para codificar una señal de vídeo de acuerdo con la presente invención pueden determinar un conjunto de transformada que comprende una pluralidad de candidatos de tipo de transformada para un bloque actual, determinar un tipo de transformada del bloque actual desde la pluralidad de candidatos de tipo de transformada y realizar una transformada para el bloque actual basándose en el tipo de transformada del bloque actual.
En el método y el aparato para codificar una señal de vídeo de acuerdo con la presente invención, el método y el aparato pueden determinar el valor residual de parámetro de cuantificación para el bloque actual, determinar un parámetro de cuantificación para el bloque actual basándose en el valor residual de parámetro de cuantificación y realizar una cuantificación para el bloque actual basándose en el parámetro de cuantificación.
En el método y el aparato para codificar una señal de vídeo de acuerdo con la presente invención, el valor residual de parámetro de cuantificación puede determinarse basándose en un valor promedio relacionado con el bloque actual, y el valor promedio puede determinarse basándose en la señal de predicción del bloque actual y un coeficiente de CC generado como resultado de la transformada.
En el método y el aparato para codificar una señal de vídeo de acuerdo con la presente invención, el valor residual de parámetro de cuantificación puede determinarse haciendo referencia a una tabla de búsqueda que define una relación de mapeo entre el valor promedio y el valor residual de parámetro de cuantificación, y la tabla de búsqueda puede determinarse basándose en al menos uno de un tamaño, un modo de intra predicción, un tipo de transformada o un valor de píxel del bloque actual.
Las características brevemente resumidas anteriormente para la presente invención son únicamente aspectos ilustrativos de la descripción detallada de la invención que sigue, pero no limitan el alcance de la invención.
Efectos ventajosos
De acuerdo con la presente invención, es posible mejorar la eficacia de codificación/decodificación a través del particionamiento jerárquico/adaptativo de un bloque de codificación.
De acuerdo con la presente invención, es posible mejorar la eficacia de codificación/decodificación realizando de manera selectiva una transformada inversa para un bloque objetivo de codificación/decodificación.
De acuerdo con la presente invención, es posible mejorar la eficacia de codificación/decodificación determinando de manera adaptativa un tipo de transformada para un bloque objetivo de codificación/decodificación.
De acuerdo con la presente invención, es posible mejorar la eficacia de codificación/decodificación derivando un valor residual de cuantificación de acuerdo con una característica de un bloque objetivo de codificación/decodificación.
Los efectos conseguibles por la presente invención no están limitados a los efectos anteriormente mencionados, y otros efectos no mencionados pueden entenderse de manera evidente por los expertos en la materia a partir de la descripción a continuación.
Descripción de los dibujos
La Figura 1 es un diagrama de bloques que ilustra un dispositivo para codificar un vídeo de acuerdo con una realización de la presente invención.
La Figura 2 es un diagrama de bloques que ilustra un dispositivo para decodificar un vídeo de acuerdo con una realización de la presente invención.
La Figura 3 es una vista que ilustra un ejemplo de particionamiento jerárquico de un bloque de codificación basándose en una estructura de árbol de acuerdo con una realización de la presente invención.
La Figura 4 es una vista que ilustra tipos de modos de intra predicción predefinidos para un dispositivo para codificar/decodificar un vídeo de acuerdo con una realización de la presente invención.
La Figura 5 es un diagrama de flujo que ilustra brevemente un método de intra predicción de acuerdo con una realización de la presente invención.
La Figura 6 es una vista que ilustra un método de corrección de una muestra de predicción de un bloque actual basándose en información diferencial de muestras vecinas de acuerdo con una realización de la presente invención.
Las Figuras 7 y 8 son vistas que ilustran un método de corrección de una muestra de predicción basándose en un filtro de corrección predeterminado de acuerdo con una realización de la presente invención.
La Figura 9 es una vista que ilustra un método de corrección de una muestra de predicción basándose en el desplazamiento de acuerdo con una realización de la presente invención.
Las Figuras 10 a 14 son vistas que ilustran ejemplos de un patrón de intra predicción de un bloque actual de acuerdo con una realización de la presente invención.
La Figura 15 es una vista que ilustra un método de realización de predicción usando una técnica de copia de intra bloque de acuerdo con una realización de la presente invención.
La Figura 16 muestra un intervalo de muestras de referencia para intra predicción de acuerdo con una realización a la que se aplica la presente invención.
Las Figuras 17 a 19 ilustran un ejemplo de filtración en muestras de referencia. La Figura 20 es un diagrama que muestra un ejemplo en el que una unidad de codificación se divide en bloques que tienen una forma cuadrada.
La Figura 21 es un diagrama que muestra un ejemplo en el que una unidad de codificación se divide en bloques que tienen una forma no cuadrada.
La Figura 22 es un diagrama de flujo que ilustra un proceso de realización de una transformada inversa para un bloque actual.
La Figura 23 muestra un ejemplo en el que se determina un conjunto de transformada de una unidad de transformada basándose en un modo de intra predicción de una unidad de predicción.
La Figura 24 es un diagrama de flujo que ilustra un método de derivación de un valor de diferencia de parámetro de cuantificación de acuerdo con una realización de la presente invención.
Modo para la invención
Puede realizarse una diversidad de modificaciones a la presente invención y hay diversas realizaciones de la presente invención, ejemplos de las cuales se proporcionarán con referencia a los dibujos y se describen en detalle. Sin embargo, la presente invención no está limitada a lo mismo, y las realizaciones ejemplares puede considerarse que incluyen todas las modificaciones, equivalentes o sustitutos en un
concepto técnico y un alcance técnico de la presente invención. Los números de referencia similares hacen referencia al elemento similar en los dibujos descritos.
Los términos usados en la memoria descriptiva, 'primero', 'segundo', etc., pueden usarse para describir diversos componentes, pero los componentes no se han de interpretar como que están limitados a estos términos. Los términos se han de usar únicamente para diferenciar un componente de otros componentes. Por ejemplo, el 'primer' componente puede nombrarse el 'segundo' componente sin alejarse del alcance de la presente invención, y el ‘segundo’ componente puede también nombrarse de manera similar el 'primer' componente. El término ‘y/o’ incluye una combinación de una pluralidad de elementos y uno cualquiera de una pluralidad de términos.
Se entenderá que cuando un elemento se denomina simplemente como que está ‘conectado a’ o ‘acoplado a’ otro elemento sin estar ‘directamente conectado a’ o ‘directamente acoplado a’ otro elemento en la presente descripción, puede estar 'directamente conectado a' o 'directamente acoplado a' otro elemento o estar conectado a o acoplado a otro elemento, que tiene el otro elemento intermedio entre los mismos. En contraste, debería entenderse que cuando un elemento se denomina como que está "directamente acoplado" o "directamente conectado" a otro elemento, no hay elementos intermedios presentes.
Los términos usados en la presente memoria descriptiva se usan meramente para describir realizaciones particulares, y no se pretende que limiten la presente invención. Una expresión usada en el singular abarca la expresión del plural, a menos que signifique de manera evidente diferente en el contexto. En la presente memoria descriptiva, se ha de entender que los términos tales como "que incluye", "que tiene”, etc., se pretende que indiquen la existencia de las características, números, etapas, acciones, elementos, partes, o combinaciones de los mismos desvelados en la memoria descriptiva, y no se pretende que excluyan la posibilidad de que una o más otras características, números, etapas, acciones, elementos, partes o combinaciones de los mismos puedan existir o añadirse.
En lo sucesivo, se describirán en detalle realizaciones preferidas de la presente invención con referencia a los dibujos adjuntos. En lo sucesivo, los mismos elementos constituyentes en los dibujos se indican por los mismos números de referencia, y se omitirá una descripción repetida de los mismos elementos.
La Figura 1 es un diagrama de bloques que ilustra un dispositivo para codificar un vídeo de acuerdo con una realización de la presente invención.
Haciendo referencia a la Figura 1, el dispositivo para codificar un vídeo 100 puede incluir: un módulo 110 de particionamiento de instantánea, módulos 120 y 125 de predicción, un módulo 130 de transformada, un módulo 135 de cuantificación, un módulo
160 de reorganización, un módulo 165 de codificación por entropía, un módulo 140 de cuantificación inversa, un módulo 145 de transformada inversa, un módulo 150 de filtro y una memoria 155. Adicionalmente, referencias numéricas en la Figura 1 denotan lo siguiente: 101 - Instantánea Actual; 102 - Bloque Objetivo de Predicción; 103 - Bloque Residual; 104 - Bloque Residual Reconstruido; 105 - NAL.
Las partes constitucionales mostradas en la Figura 1 se muestran independientemente para representar funciones características diferentes unas de las otras en el dispositivo para codificar un vídeo. Por lo tanto, no significa que cada parte constitucional esté constituida en una unidad constitucional de hardware o software separado. En otras palabras, cada parte constitucional incluye cada una partes constitucionales enumeradas por conveniencia. Por lo tanto, al menos dos partes constitucionales de cada parte constitucional pueden combinarse para formar una parte constitucional o una parte constitucional puede dividirse en una pluralidad de partes constitucionales para realizar cada función. La realización donde se combina cada parte constitucional y la realización donde se divide una parte constitucional están también incluidas en el alcance de la presente invención, si no se alejan de la esencia de la presente invención.
También, algunos de los constituyentes pueden no ser constituyentes indispensables que realizan funciones esenciales de la presente invención sino ser constituyentes selectivos que mejoran únicamente el rendimiento de los mismos. La presente invención puede implementarse incluyendo únicamente las partes constitucionales indispensables para implementar la esencia de la presente invención excepto los constituyentes usados al mejorar el rendimiento. La estructura que incluye únicamente los constituyentes indispensables excepto los constituyentes selectivos usados al mejorar únicamente el rendimiento también está incluida en el alcance de la presente invención.
El módulo 110 de particionamiento de instantánea puede particionar una instantánea de entrada en una o más unidades de procesamiento. En este punto, la unidad de procesamiento puede ser una unidad de predicción (PU), una unidad de transformada (TU), o una unidad de codificación (CU). El módulo 110 de particionamiento de instantánea puede particionar una instantánea en combinaciones de múltiples unidades de codificación, unidades de predicción y unidades de transformada, y puede codificar una instantánea seleccionando una combinación de unidades de codificación, unidades de predicción, y unidades de transformada con un criterio predeterminado (por ejemplo, función de coste).
Por ejemplo, una instantánea puede particionarse en múltiples unidades de codificación. Una estructura de árbol recursiva, tal como una estructura de árbol
cuádruple, puede usarse para particionar una instantánea en unidades de codificación. Una unidad de codificación que se particiona en otras unidades de codificación con una instantánea o una unidad de codificación más grande como una raíz puede particionarse con nodos hijos que corresponden al número de unidades de codificación particionadas. Una unidad de codificación que ya no se particiona por una limitación determinada sirve como un nodo hoja. Es decir, cuando se supone que únicamente es posible particionamiento cuadrado para una unidad de codificación, una unidad de codificación puede particionarse en otras cuatro unidades de codificación como máximo.
En lo sucesivo, en la realización de la presente invención, la unidad de codificación puede significar una unidad que realiza codificación o una unidad que realiza decodificación.
Una unidad de predicción puede ser una de particiones particionadas en una forma cuadrada o forma rectangular que tiene el mismo tamaño en una única unidad de codificación, o una unidad de predicción puede ser una de particiones particionadas para tener una forma y/o tamaño diferente en una única unidad de codificación.
Cuando se genera una unidad de predicción sometida a intra predicción basándose en una unidad de codificación y la unidad de codificación no es la unidad de codificación más pequeña, puede realizarse intra predicción sin particionar la unidad de codificación en múltiples unidades de predicción NxN.
Los módulos 120 y 125 de predicción pueden incluir un módulo 120 de inter predicción que realiza inter predicción y un módulo 125 de intra predicción que realiza intra predicción. Puede determinarse si realizar inter predicción o intra predicción para la unidad de predicción, y puede determinarse información detallada (por ejemplo, un modo de intra predicción, un vector de movimiento, una instantánea de referencia, etc.) de acuerdo con cada método de predicción. En este punto, la unidad de procesamiento sometida a predicción puede ser diferente de la unidad de procesamiento para la que se determina el método de predicción y contenido detallado. Por ejemplo, el método de predicción, el modo de predicción, etc., pueden determinarse por la unidad de predicción, y la predicción puede realizarse por la unidad de transformada. Un valor residual (bloque residual) entre el bloque de predicción generado y un bloque original puede introducirse al módulo 130 de transformada. También, información de modo de predicción, información de vector de movimiento, etc., usadas para predicción pueden codificarse con el valor residual por el módulo 165 de codificación por entropía y pueden transmitirse a un dispositivo para decodificar un vídeo. Cuando se usa un modo de codificación particular, es posible transmitir a un dispositivo para decodificar vídeo codificando el bloque actual como está sin generar el bloque de predicción a través de los módulos 120 y 125 de predicción.
El módulo 120 de inter predicción puede predecir la unidad de predicción basándose en información de al menos una de una instantánea anterior o una instantánea posterior de la instantánea actual, o puede predecir la unidad de predicción basándose en información de algunas regiones codificadas en la instantánea actual, en algunos casos. El módulo 120 de inter predicción puede incluir un módulo de instantánea de referencia interpolación, un módulo de predicción de movimiento y un módulo de compensación de movimiento.
El módulo de interpolación de instantánea de referencia puede recibir información de instantánea de referencia desde la memoria 155 y puede generar información de píxeles de un píxel entero o menor que el píxel entero desde la instantánea de referencia. En el caso de píxeles de luminancia, puede usarse un filtro de interpolación basado en DCT de 8 derivaciones que tiene diferentes coeficientes de filtro para generar información de píxeles de un píxel entero o menor que un píxel entero en unidades de un 1/4 de píxel. En el caso de señales de crominancia, puede usarse un filtro de interpolación basado en DCT de 4 derivaciones que tiene coeficiente de filtro diferente para generar información de píxeles de un píxel entero o menor que un píxel entero en unidades de un 1/8 de píxel.
El módulo de predicción de movimiento puede realizar predicción de movimiento basándose en la instantánea de referencia interpolada por el módulo de instantánea de referencia interpolación. Como métodos para calcular un vector de movimiento, pueden usarse diversos métodos, tales como algoritmo de coincidencia de bloque basado en búsqueda completa (FBMA), una búsqueda de tres etapas (TSS), un nuevo algoritmo de búsqueda de tres etapas (NTS), etc. El vector de movimiento puede tener un valor de vector de movimiento en unidades de un 1/2 de píxel o un 1/4 de píxel basándose en un píxel interpolado. El módulo de predicción de movimiento puede predecir una unidad de predicción actual cambiando el método de predicción de movimiento. Como métodos de predicción de movimiento, pueden usarse diversos métodos, tales como un método de salto, un método de unión, un método de AMVP (del inglés “Advanced Motion Vector Prediction” - Predicción Avanzada de Vector de Movimiento), un método de copia de intra bloque, etc.
El módulo 125 de intra predicción puede generar una unidad de predicción basándose en información de píxel de referencia que es vecino a un bloque actual que es información de píxeles en la instantánea actual. Cuando el bloque vecino de la unidad de predicción actual es un bloque sometido a inter predicción y por lo tanto un píxel de referencia es un píxel sometido a inter predicción, el píxel de referencia incluido en el bloque sometido a inter predicción puede sustituirse por información de píxel de referencia de un bloque vecino sometido a intra predicción. Es decir, cuando un píxel de
1
referencia no está disponible, puede usarse al menos un píxel de referencia de píxeles de referencia disponibles en lugar de información de píxel de referencia no disponible.
Los modos de predicción en intra predicción pueden incluir un modo de predicción direccional que usa información de píxel de referencia que depende de una dirección de predicción y un modo de predicción no direccional que no usa información direccional al realizar predicción. Un modo para predecir información de luminancia puede ser diferente de un modo para predecir información de crominancia, y para predecir la información de crominancia, puede utilizarse información de modo de intra predicción usada para predecir información de luminancia o información de señal de luminancia prevista.
Al realizar intra predicción, cuando el tamaño de la unidad de predicción es el mismo que el tamaño de la unidad de transformada, puede realizare intra predicción en la unidad de predicción basándose en píxeles situados a la izquierda, arriba a la izquierda y arriba de la unidad de predicción. Sin embargo, al realizar intra predicción, cuando el tamaño de la unidad de predicción es diferente del tamaño de la unidad de transformada, puede realizarse intra predicción usando un píxel de referencia basándose en la unidad de transformada. También, puede usarse intra predicción usando particionamiento de N x N para únicamente la unidad de codificación más pequeña.
En el método de intra predicción, un bloque de predicción puede generarse después de aplicar un filtro de AIS (del inglés "Adaptive Intra Smoothing” - Intra Suavizado Adaptativo) a un píxel de referencia que depende de los modos de predicción. El tipo del filtro de AIS aplicado al píxel de referencia puede variar. Para realizar el método de intra predicción, puede predecirse un modo de intra predicción de la unidad de predicción actual a partir del modo de intra predicción de la unidad de predicción que es vecino a la unidad de predicción actual. En la predicción del modo de predicción de la unidad de predicción actual usando información de modo prevista desde la unidad de predicción vecina, cuando el modo de intra predicción de la unidad de predicción actual es el mismo que el modo de intra predicción de la unidad de predicción vecina, la información que indica que los modos de predicción de la unidad de predicción actual y la unidad de predicción son iguales entre sí puede transmitirse usando información de bandera predeterminada. Cuando el modo de predicción de la unidad de predicción actual es diferente del modo de predicción de la unidad de predicción vecina, puede realizarse codificación por entropía para codificar información de modo de predicción del bloque actual.
También, puede generarse un bloque residual que incluye información sobre un valor residual que es uno diferente entre la unidad de predicción sometida a predicción
y el bloque original de la unidad de predicción basándose en unidades de predicción generadas por los módulos 120 y 125 de predicción. El bloque residual generado puede introducirse al módulo 130 de transformada.
El módulo 130 de transformada puede transformar el bloque residual que incluye la información sobre el valor residual entre el bloque original y las unidades de predicción generadas por los módulos 120 y 125 de predicción usando un método de transformada, tal como transformada de coseno discreta (DCT), transformada de seno discreta (DST) y KLT. Si aplicar DCT, DST o KLT para transformar el bloque residual puede determinarse basándose en información de modo de intra predicción de la unidad de predicción usada para generar el bloque residual.
El módulo 135 de cuantificación puede cuantificar valores transformados a un dominio de frecuencia por el módulo 130 de transformada. Los coeficientes de cuantificación pueden variar dependiendo del bloque o la importancia de una instantánea. Los valores calculados por el módulo 135 de cuantificación pueden proporcionarse al módulo 140 de cuantificación inversa y al módulo 160 de reorganización.
El módulo 160 de reorganización puede reorganizar coeficientes de valores residuales cuantificados.
El módulo 160 de reorganización puede cambiar un coeficiente en forma de un bloque bidimensional en un coeficiente en forma de un vector unidimensional a través de un método de exploración de coeficiente. Por ejemplo, el módulo 160 de reorganización puede explorar desde un coeficiente de CC a un coeficiente en un dominio de alta frecuencia usando un método de exploración en zigzag para cambiar los coeficientes para que estén en forma de vectores unidimensionales. Dependiendo del tamaño de la unidad de transformada y el modo de intra predicción, puede usarse la exploración de dirección vertical donde los coeficientes en forma de bloques bidimensionales se exploran en la dirección de columna o la exploración de dirección horizontal donde los coeficientes en forma de bloques bidimensionales se exploran en dirección de fila en lugar de la exploración en zigzag. Es decir, qué método de exploración entre exploración en zigzag, exploración de dirección vertical y exploración de dirección horizontal se usa puede determinarse dependiendo del tamaño de la unidad de transformada y el modo de intra predicción.
El módulo 165 de codificación por entropía puede realizar codificación por entropía basándose en los valores calculados por el módulo 160 de reorganización. La codificación por entropía puede usar diversos métodos de codificación, por ejemplo, codificación Golomb exponencial, codificación de longitud variable adaptativa según contexto (CAVLC), y codificación binaria aritmética adaptativa según contexto (CABAC).
El módulo 165 de codificación por entropía puede codificar una diversidad de información, tal como información de coeficiente de valor residual e información de tipo de bloque de la unidad de codificación, información de modo de predicción, información de unidad de partición, información de unidad de predicción, información de unidad de transformada, información de vector de movimiento, información de fotograma de referencia, información de interpolación de bloque, información de filtración, etc., desde el módulo 160 de reorganización y los módulos 120 y 125 de predicción.
El módulo 165 de codificación por entropía puede codificar por entropía los coeficientes de la unidad de codificación introducidos desde el módulo 160 de reorganización.
El módulo 140 de cuantificación inversa puede cuantificar a la inversa los valores cuantificados por el módulo 135 de cuantificación y el módulo 145 de transformada inversa puede transformar a la inversa los valores transformados por el módulo 130 de transformada. El valor residual generado por el módulo 140 de cuantificación inversa y el módulo 145 de transformada inversa puede combinarse con la unidad de predicción prevista por un módulo de estimación de movimiento, un módulo de compensación de movimiento, y el módulo de intra predicción de los módulos 120 y 125 de predicción de manera que puede generarse un bloque reconstruido.
El módulo 150 de filtro puede incluir al menos uno de un filtro de desbloqueo, una unidad de corrección de desplazamiento y un filtro de bucle adaptativo (ALF).
El filtro de desbloqueo puede eliminar la distorsión de bloque que tiene lugar debido a los límites entre los bloques en la instantánea reconstruida. Para determinar si realizar el desbloqueo, los píxeles incluidos en varias filas o columnas en el bloque pueden ser una base de determinación de si aplicar el filtro de desbloqueo al bloque actual. Cuando el filtro de desbloqueo se aplica al bloque, puede aplicarse un filtro intenso o un filtro débil dependiendo de la intensidad de filtración de desbloqueo requerida. También, al aplicar el filtro de desbloqueo, puede procesarse en paralelo la filtración de la dirección horizontal y la filtración de la dirección vertical.
El módulo de corrección de desplazamiento puede corregir el desplazamiento con la instantánea original en unidades de un píxel en la instantánea sometida a desbloqueo. Para realizar la corrección de desplazamiento en una instantánea particular, es posible usar un método de aplicación de desplazamiento teniendo en cuenta información de borde de cada píxel o un método de particionamiento de píxeles de una instantánea en el número predeterminado de regiones, determinar una región para que se someta para realizar desplazamiento, y aplicar el desplazamiento a la región determinada.
La filtración de bucle adaptativa (ALF) puede realizarse basándose en el valor
1
obtenido comparando la instantánea reconstruida filtrada y la instantánea original. Los píxeles incluidos en la instantánea pueden dividirse en grupos predeterminados, puede determinarse un filtro a aplicarse a cada uno de los grupos, y la filtración puede realizarse individualmente para cada grupo. La información sobre si aplicar ALF y una señal de luminancia puede transmitirse por unidades de codificación (CU). La forma y coeficiente de filtro de un filtro para ALF puede variar dependiendo de cada bloque. También, el filtro para ALF en la misma forma (forma fija) puede aplicarse independientemente de las características del bloque objetivo de aplicación.
La memoria 155 puede almacenar el bloque reconstruido o instantánea calculados a través del módulo 150 de filtro. El bloque o instantánea reconstruidos almacenados pueden proporcionarse a los módulos 120 y 125 de predicción al realizar inter predicción.
La Figura 2 es un diagrama de bloques que ilustra un dispositivo para decodificar un vídeo de acuerdo con una realización de la presente invención.
Haciendo referencia a la Figura 2, el dispositivo 200 para decodificar un vídeo puede incluir: un módulo 210 de decodificación por entropía, un módulo 215 de reorganización, un módulo 220 de cuantificación inversa, un módulo 225 de transformada inversa, módulos 230 y 235 de predicción, un módulo 240 de filtro, y una memoria 245. Adicionalmente, la referencia numérica 201 en la Figura 2 denota la unidad NAL.
Cuando se introduce un flujo de bits de vídeo desde el dispositivo para codificar un vídeo, el flujo de bits de entrada puede decodificarse de acuerdo con un proceso inverso del dispositivo para codificar un vídeo.
El módulo 210 de decodificación por entropía puede realizar decodificación por entropía de acuerdo con un proceso inverso de codificación por entropía por el módulo de codificación por entropía del dispositivo para codificar un vídeo. Por ejemplo, en correspondencia a los métodos realizados por el dispositivo para codificar un vídeo, pueden aplicarse diversos métodos, tales como codificación de Golomb exponencial, codificación de longitud variable adaptativa según contexto (en inglés "context-adaptive variable length coding” - CAVLC) y codificación binaria aritmética adaptativa según contexto (en inglés "context-adaptive binary arithmetic coding” - CABAC).
El módulo 210 de decodificación por entropía puede decodificar información en intra predicción e inter predicción realizadas por el dispositivo para codificar un vídeo.
El módulo 215 de reorganización puede realizar reorganización en el flujo de bits decodificado por entropía por el módulo 210 de decodificación por entropía basándose en el método de reorganización usado en el dispositivo para codificar un vídeo. El módulo de reorganización puede reconstruir y reorganizar los coeficientes en forma de
vectores unidimensionales para el coeficiente en forma de bloques bidimensionales. El módulo 215 de reorganización puede recibir información relacionada con exploración de coeficiente realizada en el dispositivo para codificar un vídeo y puede realizar reorganización mediante un método de exploración a la inversa de los coeficientes basándose en el orden de exploración realizado en el dispositivo para codificar un vídeo.
El módulo 220 de cuantificación inversa puede realizar cuantificación inversa basándose en un parámetro de cuantificación recibido desde el dispositivo para codificar un vídeo y los coeficientes reorganizados del bloque.
El módulo 225 de transformada inversa puede realizar la transformada inversa, DCT inversa, DST inversa y KLT inversa, que es el proceso inverso de la transformada, es decir, DCT, DST y KLT, realizadas por el módulo de transformada en el resultado de cuantificación por el dispositivo para codificar un vídeo. La transformada inversa puede realizarse basándose en la unidad de transformada determinada por el dispositivo para codificar un vídeo. El módulo 225 de transformada inversa del dispositivo para decodificar un vídeo puede realizar de manera selectiva esquemas de transformada (por ejemplo, DCT, DST y KLT) dependiendo de múltiples piezas de información, tales como el método de predicción, el tamaño del bloque actual, la dirección de predicción, etc.
Los módulos 230 y 235 de predicción pueden generar un bloque de predicción basándose en información sobre la generación de bloque de predicción recibida desde el módulo 210 de decodificación por entropía y la información de bloque o instantánea decodificados previamente recibida desde la memoria 245.
Como se ha descrito anteriormente, como la operación del dispositivo para codificar un vídeo, al realizar intra predicción, cuando el tamaño de la unidad de predicción es el mismo que el tamaño de la unidad de transformada, puede realizarse intra predicción en la unidad de predicción basándose en los píxeles situados a la izquierda, arriba a la izquierda y arriba de la unidad de predicción. Al realizar intra predicción, cuando el tamaño de la unidad de predicción es diferente del tamaño de la unidad de transformada, puede realizarse intra predicción usando un píxel de referencia basándose en la unidad de transformada. También, puede usarse intra predicción usando particionamiento de N x N para únicamente la unidad de codificación más pequeña.
Los módulos 230 y 235 de predicción pueden incluir un módulo de determinación de unidad de predicción, un módulo de inter predicción y un módulo de intra predicción. El módulo de determinación de unidad de predicción puede recibir una diversidad de información, tal como información de unidad de predicción, información de modo de predicción de un método de intra predicción, información sobre predicción de movimiento de un método de inter predicción, etc., desde el módulo 210 de
1
decodificación por entropía, puede dividir una unidad de codificación actual en unidades de predicción, y puede determinar si se realiza inter predicción o intra predicción en la unidad de predicción. Usando información requerida en inter predicción de la unidad de predicción actual recibida desde el dispositivo para codificar un vídeo, el módulo 230 de inter predicción puede realizar inter predicción en la unidad de predicción actual basándose en información de al menos una de una instantánea anterior o una instantánea posterior de la instantánea actual que incluye la unidad de predicción actual. Como alternativa, puede realizarse inter predicción basándose en información de algunas regiones pre-reconstruidas en la instantánea actual que incluyen la unidad de predicción actual.
Para realizar inter predicción, puede determinarse para la unidad de codificación cuál de un modo de salto, un modo de unión, un modo de AMVP, y un modo de copia de inter bloque se usa como el método de predicción de movimiento de la unidad de predicción incluida en la unidad de codificación.
El módulo 235 de intra predicción puede generar un bloque de predicción basándose en información de píxeles en la instantánea actual. Cuando la unidad de predicción es una unidad de predicción sometida a intra predicción, puede realizarse intra predicción basándose en información de modo de intra predicción de la unidad de predicción recibida desde el dispositivo para codificar un vídeo. El módulo 235 de intra predicción puede incluir un filtro de intra suavizado adaptativo (del inglés "Adaptive Intra Smoothing” - AIS), un módulo de interpolación de píxel de referencia, y un filtro de CC. El filtro de AIS realiza filtración en el píxel de referencia del bloque actual, y si aplicar el filtro puede determinarse dependiendo del modo de predicción de la unidad de predicción actual. El filtrado de AIS puede realizarse en el píxel de referencia del bloque actual usando el modo de predicción de la unidad de predicción e información de AIS de filtro recibida desde el dispositivo para codificar un vídeo. Cuando el modo de predicción del bloque actual es un modo donde no se realiza filtración de AIS, el filtro de AIS puede no aplicarse.
Cuando el modo de predicción de la unidad de predicción es un modo de predicción en el que se realiza intra predicción basándose en el valor de píxel obtenido interpolando el píxel de referencia, el módulo de interpolación de píxel de referencia puede interpolar el píxel de referencia para generar el píxel de referencia de un píxel entero o menor que un píxel entero. Cuando el modo de predicción de la unidad de predicción actual es un modo de predicción en el que se genera un bloque de predicción sin interpolación del píxel de referencia, el píxel de referencia puede no interpolarse. El filtro de CC puede generar un bloque de predicción a través de filtración cuando el modo de predicción del bloque actual es un modo de CC.
1
El bloque o instantánea reconstruida puede proporcionarse al módulo 240 de filtro. El módulo 240 de filtro puede incluir el filtro de desbloqueo, el módulo de corrección de desplazamiento y el ALF.
La información sobre si se aplica o no el filtro de desbloqueo al correspondiente bloque o instantánea e información sobre cuál de un filtro intenso y un filtro débil se aplica cuando se aplica el filtro de desbloqueo puede recibirse desde el dispositivo para codificar un vídeo. El filtro de desbloqueo del dispositivo para decodificar un vídeo puede recibir información sobre el filtro de desbloqueo desde el dispositivo para codificar un vídeo, y puede realizar filtración de desbloqueo en el bloque correspondiente.
El módulo de corrección de desplazamiento puede realizar corrección de desplazamiento en la instantánea reconstruida basándose en el tipo de corrección de desplazamiento e información de valor de desplazamiento aplicada a una instantánea al realizar la codificación.
El ALF puede aplicarse a la unidad de codificación basándose en información sobre si aplicar el ALF, información de coeficiente de ALF, etc., recibida desde el dispositivo para codificar un vídeo. La información de ALF puede proporcionarse como estando incluida en un conjunto de parámetros particular.
La memoria 245 puede almacenar la instantánea o bloque reconstruido para su uso como una instantánea o bloque de referencia y puede proporcionar la instantánea reconstruida a un módulo de salida.
Como se ha descrito anteriormente, en la realización de la presente invención, por conveniencia de explicación, la unidad de codificación se usa como un término que representa una unidad para codificar, pero la unidad de codificación puede servir como una unidad que realiza decodificación así como codificación.
La Figura 3 es una vista que ilustra un ejemplo de particionamiento jerárquico de un bloque de codificación basándose en una estructura de árbol de acuerdo con una realización de la presente invención. Referencias numéricas en la Figura 3 denotan lo siguiente: 301 - Bloques con profundidad k; 302 - Bloques con profundidad k+1; 303 -Bloques con profundidad k+2.
Una señal de vídeo de entrada se decodifica en unidades de bloque predeterminadas. Una unidad por defecto de este tipo para decodificar la señal de vídeo de entrada es un bloque de codificación. El bloque de codificación puede ser una unidad que realiza intra/inter predicción, transformada y cuantificación. El bloque de codificación puede ser un bloque cuadrado o no cuadrado que tiene un tamaño arbitrario en un intervalo de 8x8 a 64x64, o puede ser un bloque cuadrado o no cuadrado que tiene un tamaño de 128x128, 256x256 o mayor.
Específicamente, el bloque de codificación puede particionarse jerárquicamente
basándose en al menos uno de un árbol cuádruple y un árbol binario. En este punto, el particionamiento basado en árbol cuádruple puede significar que un bloque de codificación de 2Nx2N se particiona en cuatro bloques de codificación de NxN, y el particionamiento basado en árbol binario puede significar que un bloque de codificación se particiona en dos bloques de codificación. El particionamiento basado en árbol binario puede realizarse simétrica o asimétricamente. El bloque de codificación particionado basado en el árbol binario puede ser un bloque cuadrado o un bloque no cuadrado, tal como una forma rectangular. El particionamiento basado en árbol binario puede realizarse en un bloque de codificación donde ya no se realiza particionamiento basado en árbol cuádruple. El particionamiento basado en árbol cuádruple puede ya no realizarse en el bloque de codificación particionado basándose en el árbol binario.
Para implementar el particionamiento adaptativo basándose en el árbol cuádruple o árbol binario, puede usarse información que indica particionamiento basado en árbol cuádruple, información sobre el tamaño/profundidad del bloque de codificación que está permitido particionamiento basado en árbol cuádruple, información que indica particionamiento basado en árbol binario, información sobre el tamaño/profundidad del bloque de codificación que está permitido particionamiento basado en árbol binario, información sobre el tamaño/profundidad del bloque de codificación que no está permitido el particionamiento basado en árbol binario, información sobre si se realiza particionamiento basado en árbol binario en una dirección vertical o una dirección horizontal, etc.
Como se muestra en la Figura 3, el primer bloque 300 codificación de con la profundidad de partición (profundidad de división) de k puede particionarse en múltiples segundos bloques de codificación basándose en el árbol cuádruple. Por ejemplo, los segundos bloques 310 a 340 de codificación pueden ser bloques cuadrados que tienen la mitad de anchura y la mitad de altura del primer bloque de codificación, y la profundidad de partición del segundo bloque de codificación puede aumentarse a k+1.
El segundo bloque 310 de codificación con la profundidad de partición de k+1 puede particionarse en múltiples terceros bloques de codificación con la profundidad de partición de k+2. El particionamiento del segundo bloque 310 de codificación puede realizarse usando de manera selectiva uno del árbol cuádruple y el árbol binario dependiendo de un método de particionamiento. En este punto, el método de particionamiento puede determinarse basándose en al menos una de la información que indica particionamiento basado en árbol cuádruple y la información que indica particionamiento basado en árbol binario.
Cuando el segundo bloque 310 de codificación se particiona basándose en el árbol cuádruple, el segundo bloque 310 de codificación puede particionarse en cuatro
1
terceros bloques 310a de codificación que tienen la mitad de anchura y la mitad de altura del segundo bloque de codificación, y la profundidad de partición del tercer bloque 310a de codificación puede aumentarse a k+2. En contraste, cuando el segundo bloque 310 de codificación se particiona basándose en el árbol binario, el segundo bloque 310 de codificación puede particionarse en dos terceros bloques de codificación. En este punto, cada uno de los dos terceros bloques de codificación puede ser un bloque no cuadrado que tiene una de la mitad de anchura y la mitad de altura del segundo bloque de codificación, y la profundidad de partición puede aumentarse a k+2. El segundo bloque de codificación puede determinarse como un bloque no cuadrado de una dirección horizontal o una dirección vertical que depende de una dirección de particionamiento, y la dirección de particionamiento puede determinarse basándose en la información sobre si se realiza particionamiento basado en árbol binario en una dirección vertical o una dirección horizontal.
Mientras tanto, el segundo bloque 310 de codificación puede determinarse como un bloque de codificación de hoja que ya no se particiona basándose en el árbol cuádruple o el árbol binario. En este caso, el bloque de codificación hoja puede usarse como un bloque de predicción o un bloque de transformada.
El particionamiento similar del segundo bloque 310 de codificación, el tercer bloque 310a de codificación puede determinarse como un bloque de codificación hoja, o puede particionarse adicionalmente basándose en el árbol cuádruple o el árbol binario.
Mientras tanto, el tercer bloque 310b de codificación particionado basándose en el árbol binario puede particionarse adicionalmente en bloques 310b-2 de codificación de una dirección vertical o bloques 310b-3 de codificación de una dirección horizontal basándose en el árbol binario, y la profundidad de partición de los bloques relevantes de codificación puede aumentarse a k+3. Como alternativa, el tercer bloque 310b de codificación puede determinarse como un bloque 310b-1 de codificación hoja que ya no se particiona basándose en el árbol binario. En este caso, el bloque 310b-1 de codificación puede usarse como un bloque de predicción o un bloque de transformada. Sin embargo, el proceso de particionamiento anterior puede realizarse de manera limitada basándose en al menos uno de la información sobre el tamaño/profundidad del bloque de codificación que el particionamiento basado en árbol cuádruple está permitida, la información sobre el tamaño/profundidad del bloque de codificación que el particionamiento basado en árbol binario está permitida, y la información sobre el tamaño/profundidad del bloque de codificación que el particionamiento basado en árbol binario no está permitida.
La Figura 4 es una vista que ilustra tipos de modos de intra predicción predefinidos para un dispositivo para codificar/decodificar un vídeo de acuerdo con una
1
realización de la presente invención.
El dispositivo para codificar/decodificar un vídeo puede realizar intra predicción usando uno de modos de intra predicción predefinidos. Los modos de intra predicción predefinidos para intra predicción pueden incluir modos de predicción no direccional (por ejemplo, un modo planar (modo 0), un modo de CC (modo 1)) y 33 modos de predicción direccional.
Como alternativa, para mejorar la precisión de intra predicción, puede usarse un número mayor de modos de predicción direccional que los 33 modos de predicción. Es decir, pueden definirse M modos de predicción direccional ampliados subdividiendo ángulos de los modos de predicción direccional (M>33), y puede derivarse un modo de predicción direccional que tiene un ángulo predeterminado usando al menos uno de los 33 modos de predicción direccional predefinidos.
La Figura 4 muestra un ejemplo de modos de intra predicción ampliados, y los modos de intra predicción ampliados pueden incluir dos modos de predicción no direccional y 65 modos de predicción direccional ampliados. Los mismos números de los modos de intra predicción ampliados pueden usarse para un componente de luminancia y un componente de crominancia, o puede usarse un número diferente de los modos de intra predicción para cada componente. Por ejemplo, pueden usarse 67 modos de intra predicción ampliados para el componente de luminancia, y pueden usarse 35 modos de intra predicción para el componente de crominancia.
Como alternativa, dependiendo del formato de crominancia, puede usarse un número diferente de los modos de intra predicción al realizar intra predicción. Por ejemplo, en el caso del formato 4:2:0, pueden usarse 67 modos de intra predicción para que el componente de luminancia realice intra predicción y pueden usarse 35 modos de intra predicción para el componente de crominancia. En el caso del formato 4:4:4, pueden usarse 67 modos de intra predicción para que tanto el componente de luminancia como el componente de crominancia realicen intra predicción.
Como alternativa, dependiendo del tamaño y/o forma del bloque, puede usarse un número diferente de los modos de intra predicción para realizar intra predicción. Es decir, dependiendo del tamaño y/o forma de la PU o CU, pueden usarse 35 modos de intra predicción o 67 modos de intra predicción para realizar intra predicción. Por ejemplo, cuando la CU o PU tiene el tamaño menor que 64x64 o se particiona asimétricamente, pueden usarse 35 modos de intra predicción para realizar intra predicción. Cuando el tamaño de la CU o PU es mayor o igual que 64x64, pueden usarse 67 modos de intra predicción para realizar intra predicción. Pueden permitirse 65 modos de intra predicción direccional para Intra_2Nx2N, y únicamente pueden permitirse 35 modos de intra predicción direccional para Intra_NxN.
2
La Figura 5 es un diagrama de flujo que ilustra brevemente un método de intra predicción de acuerdo con una realización de la presente invención.
Haciendo referencia a la Figura 5, puede determinarse un modo de intra predicción del bloque actual en la etapa S500.
Específicamente, el modo de intra predicción del bloque actual puede derivarse basándose en una lista de candidatos y un índice. En este punto, la lista de candidatos contiene múltiples candidatos, y los múltiples candidatos pueden determinarse basándose en un modo de intra predicción del bloque vecino adyacente al bloque actual. El bloque vecino puede incluir al menos uno de los bloques situados en la parte superior, la parte inferior, la izquierda, la derecha y la esquina del bloque actual. El índice puede especificar uno de los múltiples candidatos de la lista de candidatos. El candidato especificado por el índice puede establecerse al modo de intra predicción del bloque actual.
Un modo de intra predicción usado para intra predicción en el bloque vecino puede establecerse como un candidato. También, un modo de intra predicción que tiene direccionalidad similar a la del modo de intra predicción del bloque vecino puede establecerse como un candidato. En este punto, el modo de intra predicción que tiene direccionalidad similar puede determinarse añadiendo o restando un valor constante predeterminado a o desde el modo de intra predicción del bloque vecino. El valor constante predeterminado puede ser un número entero, tal como uno, dos o mayor.
La lista de candidatos puede incluir adicionalmente un modo por defecto. El modo por defecto puede incluir al menos uno de un modo planar, un modo de CC, un modo vertical y un modo horizontal. El modo por defecto puede añadirse de manera adaptativa considerando el número máximo de candidatos que pueden incluirse en la lista de candidatos del bloque actual.
El número máximo de candidatos que pueden incluirse en la lista de candidatos puede ser tres, cuatro, cinco, seis o más. El número máximo de candidatos que puede incluirse en la lista de candidatos puede ser un valor fijo presente en el dispositivo para codificar/decodificar un vídeo, o puede determinarse de manera variable basándose en una característica del bloque actual. La característica puede significar la localización/tamaño/forma del bloque, el número/tipo de los modos de intra predicción que el bloque puede usar, etc. Como alternativa, la información que indica el número máximo de candidatos que puede incluirse en la lista de candidatos puede señalizarse de manera separada, y el número máximo de candidatos que puede incluirse en la lista de candidatos puede determinarse de manera variable usando la información. La información que indica el número máximo de candidatos puede señalizarse en al menos uno de un nivel de secuencia, un nivel de instantánea, un nivel de corte y un nivel de
bloque.
Cuando los modos de intra predicción ampliados y los 35 modos de intra predicción predefinidos se usan de manera selectiva, los modos de intra predicción de los bloques vecinos pueden transformarse en índices que corresponden a los modos de intra predicción extendidos o en índices que corresponden a los 35 modos de intra predicción, mediante los cuales pueden derivarse candidatos. Para transforma un índice, puede usarse una tabla predefinida, o una operación de cambio de escala basándose en un valor predeterminado. En este punto, la tabla predefinida puede definir una relación de mapeo entre diferentes grupos de modos de intra predicción (por ejemplo, modos de intra predicción ampliados y 35 modos de intra predicción).
Por ejemplo, cuando el bloque vecino izquierdo usa los 35 modos de intra predicción y el modo de intra predicción del bloque vecino izquierdo es 10 (un modo horizontal), puede transformarse en un índice de 16 que corresponde a un modo horizontal en los modos de intra predicción ampliados.
Como alternativa, cuando el bloque vecino superior usa los modos de intra predicción ampliados y el modo de intra predicción del bloque vecino tiene un índice de 50 (un modo vertical), puede transformarse en un índice de 26 que corresponde a un modo vertical en los 35 modos de intra predicción.
Basándose en el método anteriormente descrito de determinación del modo de intra predicción, el modo de intra predicción puede derivarse independientemente para cada uno del componente de luminancia y el componente de crominancia, o el modo de intra predicción del componente de crominancia puede derivarse dependiendo del modo de intra predicción del componente de luminancia.
Específicamente, el modo de intra predicción del componente de crominancia puede determinarse basándose en el modo de intra predicción del componente de luminancia como se muestra en la siguiente tabla 1.
T l 1
En la tabla 1, intra_chroma_pred_mode significa información señalizada para especificar el modo de intra predicción del componente de crominancia, e IntraPredModeY indica el modo de intra predicción del componente de luminancia.
Haciendo referencia a la Figura 5, una muestra de referencia para intra predicción del bloque actual puede derivarse en la etapa S510.
Específicamente, una muestra de referencia para intra predicción puede derivarse basándose en una muestra vecina del bloque actual. La muestra vecina puede ser una muestra reconstruida del bloque vecino, y la muestra reconstruida puede ser una muestra reconstruida antes de que se aplique un filtro en bucle o una muestra reconstruida después de que se aplique el filtro en bucle.
Una muestra vecina reconstruida antes del bloque actual puede usarse como la muestra de referencia, y una muestra vecina filtrada basándose en un intra filtro predeterminado puede usarse como la muestra de referencia. El intra filtro puede incluir al menos uno del primer intra filtro aplicado a múltiples muestras vecinas situadas en la misma línea horizontal y el segundo intra filtro aplicado a múltiples muestras vecinas situadas en la misma línea vertical. Dependiendo de las posiciones de las muestras vecinas, puede aplicarse de manera selectiva uno del primer intra filtro y del segundo intra filtro, o pueden aplicarse ambos intra filtros.
La filtración puede realizarse de manera adaptativa basándose en al menos uno del modo de intra predicción del bloque actual y el tamaño del bloque de transformada para el bloque actual. Por ejemplo, cuando el modo de intra predicción del bloque actual es el modo CC, el modo vertical, o el modo horizontal, no puede realizarse filtración. Cuando el tamaño del bloque de transformada es NxM, no puede realizarse filtración. En este punto, N y M pueden ser los mismos valores o valores diferentes, o pueden ser valores de 4, 8, 16 o más. Como alternativa, la filtración puede realizarse de manera selectiva basándose en el resultado de una comparación de umbral predefinido y la diferencia entre el modo de intra predicción del bloque actual y el modo vertical (o el modo horizontal). Por ejemplo, cuando la diferencia entre el modo de intra predicción del bloque actual y el modo vertical es mayor que un umbral, puede realizarse filtración. El umbral puede definirse para cada tamaño del bloque de transformada como se muestra en la Tabla 2.
T l 2
El intra filtro puede determinarse como uno de múltiples candidatos de intra filtro predefinidos en el dispositivo para codificar/decodificar un vídeo. Para este fin, puede señalizarse un índice que especifica un intra filtro del bloque actual entre los múltiples intra filtros candidatos. Como alternativa, el intra filtro puede determinarse basándose al
2
menos en uno del tamaño/forma del bloque actual, el tamaño/forma del bloque de transformada, información sobre la intensidad de filtro y variaciones de las muestras vecinas.
Haciendo referencia a la Figura 5, puede realizarse intra predicción usando el modo de intra predicción del bloque actual y la muestra de referencia en la etapa S520.
Es decir, la muestra de predicción del bloque actual puede obtenerse usando el modo de intra predicción determinado en la etapa S500 y la muestra de referencia derivada en la etapa S510. Sin embargo, en el caso de intra predicción, puede usarse una muestra de límite del bloque vecino, y por lo tanto puede reducirse la calidad de la instantánea de predicción. Por lo tanto, puede realizarse un proceso de corrección en la muestra de predicción generada a través del proceso de predicción anteriormente descrito, y se describirá en detalle con referencia a las Figuras 6 a 14. Sin embargo, el proceso de corrección no está limitado a que se aplique únicamente una muestra de inter predicción, y puede aplicarse a una muestra de inter predicción o a la muestra reconstruida.
La Figura 6 es una vista que ilustra un método de corrección de una muestra de predicción de un bloque actual basándose en información diferencial de muestras vecinas de acuerdo con una realización de la presente invención. Las referencias numéricas en la Figura 6 denotan lo siguiente: 601 - muestra vecina, 602 - muestra actual.
La muestra de predicción del bloque actual puede corregirse basándose en la información diferencial de múltiples muestras vecinas para el bloque actual. La corrección puede realizarse en todas las muestras de predicción en el bloque actual, o puede realizarse en muestras de predicción en algunas regiones predeterminadas. Algunas regiones pueden ser una fila/columna o múltiples filas/columnas, o pueden ser regiones prestablecidas para corrección en el dispositivo para codificar/decodificar un vídeo, o pueden determinarse de manera variable basándose en al menos uno del tamaño/forma del bloque actual y el modo de intra predicción.
Las muestras vecinas pueden pertenecer a los bloques vecinos situados en la parte superior, la izquierda y la esquina superior izquierda del bloque actual. El número de muestras vecinas usadas para corrección puede ser dos, tres, cuatro o más. Las posiciones de las muestras vecinas pueden determinarse de manera variable dependiendo de la posición de la muestra de predicción que es el objetivo de corrección en el bloque actual. Como alternativa, algunas de las muestras vecinas pueden tener posiciones fijadas independientemente de la posición de la muestra de predicción que es el objetivo de corrección, y las muestras vecinas restantes pueden tener posiciones que dependen de manera variable de la posición de la muestra de predicción que es el
objetivo de corrección.
La información diferencial de las muestras vecinas puede significar una muestra diferencial entre las muestras vecinas, o puede significar un valor obtenido cambiando de escala la muestra diferencial por un valor constante predeterminado (por ejemplo, uno, dos, tres, etc.). En este punto, el valor constante predeterminado puede determinarse considerando la posición de la muestra de predicción que es el objetivo de corrección, la posición de la columna o fila que incluye la muestra de predicción que es el objetivo de corrección, la posición de la muestra de predicción dentro de la columna o fila, etc.
Por ejemplo, cuando el modo de intra predicción del bloque actual es el modo vertical, pueden usarse muestras diferenciales entre la muestra vecina superior izquierda p(-1, -1) y muestras vecinas p (-1, y) adyacentes al límite del bloque actual para obtener la muestra de predicción final como se muestra en la Ecuación 1.
[Ecuación
P f( 0 , y ) = P ( 0 Pa r a y = 0... N - l Por ejemplo, cuando el modo de intra predicción del bloque actual es el modo horizontal, pueden usarse muestras diferenciales entre la muestra vecina superior izquierda p(-1, -1) y muestras vecinas p(x, -1) adyacentes al límite superior del bloque actual para obtener la muestra de predicción final como se muestra en la Ecuación 2.
Por ejemplo, cuando el modo de intra predicción del bloque actual es el modo vertical, pueden usarse muestras diferenciales entre la muestra vecina superior izquierda p(-1, -1) y muestras vecinas p(-1, y) adyacentes al límite izquierdo del bloque actual para obtener la muestra de predicción final. En este punto, la muestra diferencial puede añadirse a la muestra de predicción, o la muestra diferencial puede cambiarse de escala en un valor constante predeterminado, y a continuación añadirse a la muestra de predicción. El valor constante predeterminado usado al cambiar de escala puede determinarse de manera diferente dependiendo de la columna y/o fila. Por ejemplo, la muestra de predicción puede corregirse como se muestra en la Ecuación 3 y la Ecuación 4.
[Ecuación 3]
Por ejemplo, cuando el modo de intra predicción del bloque actual es el modo
2
horizontal, pueden usarse muestras diferenciales entre la muestra vecina izquierda p(-1, -1) y muestras vecinas p(x, -1) adyacentes al límite superior del bloque actual para obtener la muestra de predicción final, como se describe en el caso del modo vertical. Por ejemplo, la muestra de predicción puede corregirse como se muestra en la Ecuación 5 y la Ecuación 6.
Las Figuras 7 y 8 son vistas que ilustran un método de corrección de una muestra de predicción basándose en un filtro de corrección predeterminado de acuerdo con una realización de la presente invención.
La muestra de predicción puede corregirse basándose en la muestra vecina de la muestra de predicción que es el objetivo de corrección y un filtro de corrección predeterminado. En este punto, la muestra vecina puede especificarse por una línea angular del modo de predicción direccional del bloque actual, o puede ser al menos una muestra situada en la misma línea angular que la muestra de predicción que es el objetivo de corrección. También, la muestra vecina puede ser una muestra de predicción en el bloque actual, o puede ser una muestra reconstruida en un bloque vecino reconstruido antes del bloque actual.
Al menos uno del número de derivaciones, intensidad y un coeficiente de filtro del filtro de corrección pueden determinarse basándose en al menos una de la posición de la muestra de predicción que es el objetivo de corrección, si la muestra de predicción que es el objetivo de corrección está situada o no en el límite del bloque actual, el modo de intra predicción del bloque actual, ángulo del modo de predicción direccional, el modo de predicción (modo inter o intra) del bloque vecino, y el tamaño/forma del bloque actual.
Haciendo referencia a la Figura 7, cuando el modo de predicción direccional tiene un índice de 2 o 34, al menos una muestra de predicción/reconstruida situada en la parte inferior izquierda de la muestra de predicción que es el objetivo de corrección y el filtro de corrección predeterminado puede usarse para obtener la muestra de predicción final. En este punto, la muestra de predicción/reconstruida en la parte inferior izquierda puede pertenecer a una línea anterior de una línea que incluye la muestra de predicción que es el objetivo de corrección. La muestra de predicción/reconstruida en la parte inferior izquierda puede pertenecer al mismo bloque que la muestra actual, o vecina al bloque adyacente al bloque actual.
La filtración para la muestra de predicción puede realizarse únicamente en la
2
línea situada en el límite de bloque, o puede realizarse en múltiples líneas. Puede usarse el filtro de corrección donde al menos uno del número de derivaciones de filtro y un coeficiente de filtro es diferente de cada una de las líneas. Por ejemplo, puede usarse un filtro (1/2, 1/2) para la primera línea izquierda más cercana al límite de bloque, puede usarse un filtro (12/16, 4/16) para la segunda línea, puede usarse un filtro (14/16, 2/16) para la tercera línea y puede usarse un filtro (15/16, 1/16) para la cuarta línea.
Como alternativa, cuando el modo de predicción direccional tiene un índice de 3 a 6 o 30 a 33, la filtración puede realizarse en el límite de bloque como se muestra en la Figura 8, y puede usarse un filtro de corrección de 3 derivaciones para corregir la muestra de predicción. La filtración puede realizarse usando la muestra de la parte inferior izquierda de la muestra de predicción que es el objetivo de corrección, la muestra de la parte inferior de la muestra de la parte inferior izquierda, y un filtro de corrección de 3 derivaciones que toma como entrada la muestra de predicción que es el objetivo de corrección. La posición de la muestra vecina usada por el filtro de corrección puede determinarse de manera diferente basándose en el modo de predicción direccional. El coeficiente de filtro del filtro de corrección puede determinarse de manera diferente dependiendo del modo de predicción direccional.
Pueden aplicarse diferentes filtros de corrección dependiendo de si el bloque vecino se codifica en el inter modo o el intra modo. Cuando el bloque vecino se codifica en el intra modo, puede usarse un método de filtración donde se proporciona más peso a la muestra de predicción, en comparación con cuando el bloque vecino se codifica en el inter modo. Por ejemplo, en el caso de que el modo de intra predicción sea 34, cuando el bloque vecino se codifica en el inter modo, puede usarse un filtro (1/2, 1/2), y cuando el bloque vecino se codifica en el intra modo, puede usarse un filtro (4/16, 12/16).
El número de líneas a filtrar en el bloque actual puede variar dependiendo del tamaño/forma del bloque actual (por ejemplo, el bloque de codificación o el bloque de predicción). Por ejemplo, cuando el tamaño del bloque actual es igual o menor que 32x32, puede realizarse filtración en únicamente una línea en el límite de bloque; de otra manera, puede realizarse filtración en múltiples líneas incluyendo la línea en el límite de bloque.
Las Figuras 7 y 8 están basadas en el caso donde se usan los 35 modos de intra predicción en la Figura 4, pero pueden aplicarse de manera igual/similar al caso donde se usan los modos de intra predicción ampliados.
Cuando se realiza intra predicción en un bloque actual basándose en un modo de intra predicción dirección, una muestra de predicción generada puede no reflejar la característica de una instantánea original puesto que un rango de las muestras de referencia que se están usando está limitado (por ejemplo, se realiza intra predicción
únicamente usando las muestras vecinas adyacentes al bloque actual). Por ejemplo, cuando existe un borde en un bloque actual o cuando aparece un nuevo objeto alrededor de un límite del bloque actual, una diferencia entre una muestra de predicción y una instantánea original puede ser grande dependiendo de una posición de una muestra de predicción en el bloque actual.
En este caso, un valor residual es relativamente grande, y por lo tanto el número de bits a codificar/decodificar puede aumentar. Particularmente, un valor residual en una región relativamente lejos de un límite del bloque actual puede incluir una gran cantidad de componentes de alta frecuencia, que pueden dar como resultado degradación de la eficacia de codificación/decodificación.
Para resolver los problemas anteriores, puede usarse un método de generación o actualización de una muestra de predicción en unidades de subbloque. De acuerdo con esto, puede mejorarse la precisión de predicción en una región relativamente lejos de un límite de bloque.
Por conveniencia de explicación, en las siguientes realizaciones, una muestra de predicción generada basándose en un modo de intra predicción direccional se denomina como una primera muestra de predicción. También, una muestra de predicción generada basándose en un modo de intra predicción no direccional o una muestra de predicción generada realizando inter predicción puede incluirse también en una categoría de la primera muestra de predicción.
Un método de corrección de la muestra de predicción basándose en el desplazamiento se describirá en detalle con referencia a la Figura 9.
La Figura 16 es una vista que ilustra un método de corrección de una muestra de predicción basándose en desplazamiento de acuerdo con una realización de la presente invención.
Haciendo referencia a la Figura 9, para un bloque actual, si actualizar una primera muestra de predicción usando un desplazamiento puede determinarse en la etapa S900. Si actualizar la primera muestra de predicción usando el desplazamiento puede determinarse por una bandera decodificada de un flujo de bits. Por ejemplo, una sintaxis ‘is_sub_block_refinement_flag’ que indica si actualizar la primera muestra de predicción usando el desplazamiento puede señalizarse a través de un flujo de bits. Cuando un valor de “is_sub_block_refinement_flag” es 1, el método de actualización de la primera muestra de predicción usando el desplazamiento puede usarse en el bloque actual. Cuando un valor de “is_sub_block_refinement_flag” es 0, el método de actualización de la primera muestra de predicción usando el desplazamiento no puede usarse en el bloque actual. Sin embargo, la etapa S900 se pretende para realizar de manera selectiva actualización de la primera muestra de predicción, y no es una
2
configuración esencial para conseguir el fin de la presente invención, de modo que la etapa S900 puede omitirse en algunos casos.
Cuando se determina que se usa el método de actualización de la primera muestra de predicción usando el desplazamiento, puede determinarse un patrón de intra predicción del bloque actual en la etapa S910. A través del patrón de intra predicción, pueden determinarse todas o algunas regiones del bloque actual a las que se aplica el desplazamiento, un tipo de particionamiento del bloque actual, si aplicar el desplazamiento a un subbloque incluido el bloque actual, un tamaño/signo del desplazamiento asignado a cada subbloque, etc.
Uno de múltiples patrones predefinidos en el dispositivo para codificar/decodificar un vídeo puede usarse de manera selectiva como el patrón de intra predicción del bloque actual, y para este fin, puede señalizarse un índice que especifica el patrón de intra predicción del bloque actual a partir de un flujo de bits. Como otro ejemplo, el patrón de intra predicción del bloque actual puede determinarse basándose en un modo de partición de una unidad de predicción o una unidad de codificación del bloque actual, un tamaño/forma del bloque, si se usa el modo de intra predicción direccional, un ángulo del modo de intra predicción direccional, etc.
Si se determina por información de bandera predeterminada señalizada mediante un flujo de bits si se señaliza o no un índice que indica el patrón de intra predicción del bloque actual. Por ejemplo, cuando la información de bandera indica que el índice que indica el patrón de intra predicción del bloque actual se señaliza desde un flujo de bits, el patrón de intra predicción del bloque actual puede determinarse basándose en un índice decodificado desde un flujo de bits. En este punto, la información de bandera puede señalizarse en al menos uno de un nivel de instantánea, un nivel de corte y un nivel de bloque.
Cuando la información de bandera indica que el índice que indica el patrón de intra predicción del bloque actual no se señaliza desde un flujo de bits, el patrón de intra predicción del bloque actual puede determinarse basándose en el modo de partición de la unidad de predicción o la unidad de codificación del bloque actual, etc. Por ejemplo, el patrón en el que se particiona el bloque actual en subbloques puede ser el mismo que el patrón en el que se particiona el bloque de codificación en unidades de predicción.
Cuando se determina el patrón de intra predicción del bloque actual, el desplazamiento puede obtenerse en unidades de subbloque en la etapa S920. El desplazamiento puede señalizarse en unidades de un corte, una unidad de codificación o una unidad de predicción. Como otro ejemplo, el desplazamiento puede derivarse desde una muestra vecina del bloque actual. El desplazamiento puede incluir al menos uno de información de valor de desplazamiento e información de signo de
2
desplazamiento. En este punto, la información de valor de desplazamiento puede encontrarse en un intervalo de números enteros mayores o iguales que cero.
Cuando se determina el desplazamiento, una segunda muestra de predicción puede obtenerse para cada subbloque en la etapa S930. La segunda muestra de predicción puede obtenerse aplicando el desplazamiento a la primera muestra de predicción. Por ejemplo, la segunda muestra de predicción puede obtenerse añadiendo o restando el desplazamiento a o desde la primera muestra de predicción.
Las Figuras 10 a 14 son vistas que ilustran ejemplos de un patrón de intra predicción de un bloque actual de acuerdo con una realización de la presente invención. Las referencias numéricas en las figuras 10 a 14 denotan lo siguiente: 1001 - índice 0, 1002 - índice 1, 1003 - índice 2, 1004 - índice 3, 1101 - índice 0, 1102 - índice 1, 1103 - índice 2, 1104 - índice 3, 1210 - Categoría 0, 1211 - índice 0, 1212 - índice 1, 1213 : índice 2, 1214 : índice 3, 1220 : Categoría 1, 1221 : índice 4, 1222 : índice 5, 1223 : índice 6, 1224 : índice 7, 1230 : Categoría 2, 1231 : índice 8, 1232 : índice 9, 1233 : índice 10, 1234 : índice 11, 1301 : índice 0, 1302 : índice 1, 1303 : índice 2, 1304 : índice 3, 1305 : índice 4, 1306 : índice 5, 1401 : índice 0, 1402 : índice 1, 1403 : índice 2, 1404 : índice 3, 1405 : índice 4, 1406 : índice 5, 1407 : índice 6, 1408 : índice 7, 1409 : índice 8, 1410 : índice 9, 1411 : índice 10, 1412 : índice 11.
Por ejemplo, en el ejemplo mostrado en la Figura 10, cuando el índice es ‘0’ o ‘1’, el bloque actual puede particionarse en subbloques superior e inferior. El desplazamiento puede no establecerse al subbloque superior, y el desplazamiento ‘f puede establecerse al subbloque inferior. Por lo tanto, la primera muestra de predicción(P(i,j)) puede usarse como está en el subbloque superior, y la segunda muestra de predicción(P(i,j)+f o P(i,j)-f) que se genera añadiendo o restando el desplazamiento a o desde la primera muestra de predicción puede usarse en el subbloque inferior. En la presente invención, ‘no establecido’ puede significar que el desplazamiento no está asignado al bloque, o el desplazamiento que tiene el valor de ‘0’ puede asignarse al bloque.
Cuando el índice es ‘2’ o ‘3’, el bloque actual se particiona en los subbloques izquierdo y derecho. El desplazamiento puede no establecerse para el subbloque izquierdo, y el desplazamiento ‘f puede establecerse para el subbloque derecho. Por lo tanto, la primera muestra de predicción(P(i,j)) puede usarse como está en el subbloque izquierdo, y la segunda muestra de predicción(P(i,j)+f o P(i,j)-f) que se genera añadiendo o restando el desplazamiento a o desde la primera muestra de predicción puede usarse en el subbloque derecho.
El intervalo de patrones de intra predicción disponibles puede limitarse basándose en el modo de intra predicción del bloque actual. Por ejemplo, cuando el
modo de intra predicción del bloque actual es un modo de intra predicción de dirección vertical o un modo de predicción en una dirección similar al modo de intra predicción de dirección vertical (por ejemplo, entre los 33 modos de predicción direccionales, cuando el modo de intra predicción tiene un índice de 22 a 30), únicamente el patrón de intra predicción que particiona el bloque actual en una dirección horizontal (por ejemplo, el índice 0 o índice 1 en la Figura 17) puede aplicarse al bloque actual.
Como otro ejemplo, cuando el modo de intra predicción del bloque actual es un modo de intra predicción de dirección horizontal o un modo de predicción en una dirección similar al modo de intra predicción de dirección horizontal (por ejemplo, entre los 33 modos de predicción direccional, cuando el modo de intra predicción tiene un índice de 6 a 14), únicamente el patrón de intra predicción que particiona el bloque actual en una dirección vertical (por ejemplo, el índice 2 o índice 3 en la Figura 17) puede aplicarse al bloque actual.
En la Figura 10, el desplazamiento no se establece para uno de los subbloques incluidos en el bloque actual, y sino que se establece para el otro. Si establecer el desplazamiento para el subbloque puede determinarse basándose en información señalizada para cada subbloque.
Si establecer el desplazamiento para el subbloque puede determinarse basándose en una posición del subbloque, un índice para identificar el subbloque en el bloque actual, etc. Por ejemplo, basándose en un límite predeterminado del bloque actual, el desplazamiento puede no establecerse para el subbloque que es adyacente al límite predeterminado, y el desplazamiento puede establecerse para el subbloque que no es adyacente al límite predeterminado.
Cuando se supone que el límite predeterminado es el límite superior del bloque actual, bajo el patrón de intra predicción que corresponde al índice ‘0’ o ‘1’, el desplazamiento puede no establecerse para el subbloque que es adyacente al límite superior del bloque actual, y el desplazamiento puede establecerse para el subbloque que no es adyacente al límite superior del bloque actual.
Cuando se supone que el límite predeterminado es el límite izquierdo del bloque actual, bajo el patrón de intra predicción que corresponde al índice ‘2’ o ‘3’, el desplazamiento puede no establecerse para el subbloque que es adyacente al límite izquierdo del bloque actual, y el desplazamiento puede establecerse para el subbloque que no es adyacente al límite izquierdo del bloque actual.
En la Figura 10, se supone que el desplazamiento no se establece para uno de los subbloques incluidos en el bloque actual y sino que el desplazamiento se establece para otro. Como otro ejemplo, pueden establecerse diferentes valores del desplazamiento para los subbloques incluidos en el bloque actual.
1
Un ejemplo de dónde se establecen diferentes desplazamientos para cada subbloque se describirá con referencia a la Figura 11.
Haciendo referencia a la Figura 11, cuando el índice es ‘0’ o ‘1’, el desplazamiento ‘h’ puede establecerse para el subbloque superior del bloque actual, y el desplazamiento ‘f puede establecerse para el subbloque inferior del bloque actual. Por lo tanto, la segunda muestra de predicción(P(i,j)+h o P(i,j)-h) puede generarse añadiendo o restando el desplazamiento ‘h’ a o desde la primera muestra de predicción en el subbloque superior, y la segunda muestra de predicción(P(i,j)+f o P(i,j)-f) puede generarse añadiendo o restando el desplazamiento ‘f a o desde la primera muestra de predicción.
Haciendo referencia a la Figura 11, cuando el índice es ‘2’ o ‘3’, el desplazamiento ‘h’ puede establecerse para el subbloque izquierdo del bloque actual, y el desplazamiento ‘f puede establecerse para el subbloque derecho del bloque actual. Por lo tanto, la segunda muestra de predicción(P(i,j)+h o P(i,j)-h) puede generarse añadiendo o restando el desplazamiento ‘h’ a o desde la primera muestra de predicción en el subbloque izquierdo, y la segunda muestra de predicción(P(i,j)+f o P(i,j)-f) puede generarse añadiendo o restando el desplazamiento ‘f a o desde la primera muestra de predicción en el subbloque derecho.
En las Figuras 10 y 11, el bloque actual se particiona en dos subbloques que tienen el mismo tamaño, pero el número de subbloques y/o el tamaño de los subbloques incluidos en el bloque actual no está limitado a los ejemplos mostrados en las Figuras 10 y 11. El número de subbloques incluidos en el bloque actual puede ser tres o más, y los subbloques pueden tener diferentes tamaños.
Cuando están disponibles múltiples patrones de intra predicción, los patrones de intra predicción disponibles pueden agruparse en múltiples categorías. En este caso, el patrón de intra predicción del bloque actual puede seleccionarse basándose en un primer índice para identificar una categoría y un segundo índice que identifica un patrón de intra predicción en la categoría.
Un ejemplo donde el patrón de intra predicción del bloque actual se determina basándose en el primer índice y el segundo índice se describirá con referencia a la Figura 12.
En el ejemplo mostrado en la Figura 12, 12 patrones de intra predicción pueden clasificarse en tres categorías incluyendo cada una cuatro patrones de intra predicción. Por ejemplo, los patrones de intra predicción que corresponden a los índices 0 a 3 pueden clasificarse como una categoría 0, los patrones de intra predicción que corresponden a los índices 4 a 7 pueden clasificarse como una categoría 1, y los patrones de intra predicción que corresponden a los índices 8 a 11 pueden clasificarse
2
como una categoría 2.
El dispositivo para decodificar un vídeo puede decodificar el primer índice desde un flujo de bits para especificar la categoría que incluye al menos un patrón de intra predicción. En el ejemplo mostrado en la Figura 12, el primer índice puede especificar una de las categorías 0, 1 y 2.
Cuando la categoría se especifica basándose en el primer índice, el patrón de intra predicción del bloque actual puede determinarse basándose en el segundo índice decodificado desde un flujo de bits. Cuando la categoría 1 se especifica por el primer índice, el segundo índice puede especificar uno de los cuatro patrones de intra predicción (es decir, del índice 4 al índice 7) de la categoría 1.
En la Figura 12, se muestra que las categorías incluyen los mismos números de patrones de intra predicción. Pero no hay necesidad de que las categorías incluyan los mismos números de patrones de intra predicción.
El número de patrones de intra predicción disponibles o del número de categorías pueden determinarse en unidades de una secuencia o un corte. También, al menos uno del número de patrones de intra predicción disponibles y el número de categorías pueden señalizarse a través de un encabezamiento de secuencia o un encabezamiento de corte.
Como otro ejemplo, el número de patrones de intra predicción disponibles y/o el número de categorías puede determinarse basándose en un tamaño de una unidad de predicción o una unidad de codificación del bloque actual. Por ejemplo, cuando el tamaño del bloque actual (por ejemplo, la unidad de codificación del bloque actual) es mayor o igual que 64x64, el patrón de intra predicción del bloque actual puede seleccionarse a partir de cinco patrones de intra predicción mostrados en la Figura 13. En contraste, cuando el tamaño del bloque actual (por ejemplo, la unidad de codificación del bloque actual) es menor que 64x64, el patrón de intra predicción del bloque actual puede seleccionarse a partir de patrones de intra predicción mostrados en la Figura 10, 11 o 12.
En las Figuras 10 a 13, se representa que los subbloques incluidos en cada patrón de intra predicción tienen una forma rectangular. Como otro ejemplo, puede usarse el patrón de intra predicción donde al menos uno de los tamaños y formas de los subbloques son diferentes entre sí. Por ejemplo, la Figura 14 es una vista que ilustra un ejemplo de un patrón de intra predicción con diferentes tamaños y formas de subbloques.
El desplazamiento para cada subbloque (por ejemplo, el desplazamiento h, f, g, o i de cada sub-bloque mostrado en las Figuras 10 a 14) puede decodificarse desde un flujo de bits, o puede derivarse desde la muestra vecina adyacente al bloque actual.
Como otro ejemplo, el desplazamiento del subbloque puede determinarse considerando la distancia desde una muestra en una posición particular en el bloque actual. Por ejemplo, el desplazamiento puede determinarse en proporción a un valor que representa la distancia entre una muestra en una posición predeterminada en el bloque actual y una muestra en una posición predeterminada en el subbloque.
Como otro ejemplo, el desplazamiento del subbloque puede determinarse añadiendo o restando un valor determinado basándose en la distancia entre una muestra en una posición predeterminada en el bloque actual y una muestra en una posición predeterminada en el subbloque a o desde un valor prestablecido.
Como otro ejemplo, el desplazamiento puede determinarse basándose en una relación de un valor que representa el tamaño del bloque actual y un valor que representa la distancia entre una muestra en una posición predeterminada en el bloque actual y una muestra en una posición predeterminada en el subbloque.
En este punto, la muestra en la posición predeterminada en el bloque actual puede incluir una muestra adyacente al límite izquierdo del bloque actual, una muestra situada en el límite superior del bloque actual, una muestra adyacente a la esquina superior izquierda del bloque actual, etc.
La Figura 15 es una vista que ilustra un método de realización de predicción usando un esquema de copia de intra bloque de acuerdo con una realización de la presente invención. En la figura 15, los bloques con color gris denotan bloques reconstruidos que pueden ser referidos cuando la copia de intra bloque se aplica al bloque actual. Adicionalmente, las referencias numéricas en la figura 15 denotan lo siguiente: 1501 - Bloque Actual, 1502 - Vector de Movimiento, 1503 - Predictor.
La copia de intra bloque (del inglés "Intra Block Copy” - IBC) es un método donde un bloque actual se prevé/reconstruye usando un bloque ya reconstruido (en lo sucesivo, denominado como ‘un bloque de referencia’) en la misma instantánea como el bloque actual. Si una instantánea contiene un gran número de letras, tal como alfabeto coreano, un alfabeto, etc., y la letra que está contenida en el bloque actual cuando se reconstruye el bloque actual está contenida en un bloque ya decodificado, la copia de intra bloque puede mejorar un rendimiento de codificación/decodificación.
Un método de copia de intra bloque puede clasificarse como un método de intra predicción o un método de inter predicción. Cuando el método de copia de intra bloque se clasifica como el método de intra predicción, puede definirse un modo de intra predicción para el método de copia de intra bloque. Cuando el método de copia de intra bloque se clasifica como el método de inter predicción, un flujo de bits puede incluir una bandera que indica si aplicar el método de copia de intra bloque al bloque actual. Como alternativa, si el bloque actual usa copia de intra bloque puede confirmarse a través de
4
un índice de instantánea de referencia del bloque actual. Es decir, cuando el índice de instantánea de referencia del bloque actual indica la instantánea actual, puede realizarse inter predicción en el bloque actual usando copia de intra bloque. Para este fin, una instantánea actual pre-reconstruida puede añadirse a una lista de instantáneas de referencia para el bloque actual. La instantánea actual puede existir en una posición fijada en la lista de instantáneas de referencia (por ejemplo, una posición con el índice de instantánea de referencia de 0 o la última posición). Como alternativa, la instantánea actual puede tener una posición variable en la lista de instantáneas de referencia, y para este fin, puede señalizarse, de manera separada, un índice de instantánea de referencia que indica una posición de la instantánea actual.
Para especificar el bloque de referencia del bloque actual, una diferencia de posición entre el bloque actual y el bloque de referencia puede definirse como un vector de movimiento (en lo sucesivo, denominado como un vector de bloque).
El vector de bloque puede derivarse por una suma de un vector de bloque de predicción y un vector de bloque diferencial. El dispositivo para codificar un vídeo puede generar un vector de bloque de predicción a través de codificación predictiva, y puede codificar el vector de bloque diferencial que indica la diferencia entre el vector de bloque y el vector de bloque de predicción. En este caso, el dispositivo para decodificar un vídeo puede derivar el vector de bloque del bloque actual usando el vector de bloque de predicción derivado usando información pre-decodificada y el vector de bloque diferencial decodificado desde un flujo de bits.
En este punto, el vector de bloque de predicción puede derivarse basándose en el vector de bloque de un bloque vecino adyacente al bloque actual, el vector de bloque en una LCU del bloque actual, el vector de bloque en una fila/columna de LCU del bloque actual, etc.
El dispositivo para codificar un vídeo puede codificar el vector de bloque sin realizar codificación predictiva del vector de bloque. En este caso, el dispositivo para decodificar un vídeo puede obtener el vector de bloque decodificando la información de vector de bloque señalizada a través de un flujo de bits. El método de corrección puede realizarse en la muestra de predicción/reconstruida generada a través del método de copia de intra bloque. En este caso, el proceso de corrección descrito con referencia a las Figuras 6 a 14 puede aplicarse de manera igual/similar, y por lo tanto se omitirá la descripción detallada del mismo.
La Figura 16 muestra un intervalo de muestras de referencia para intra predicción de acuerdo con una realización a la que se aplica la presente invención.
Haciendo referencia a la Figura 16, puede realizarse intra predicción usando las muestras de referencia P (-1, -1), P (-1, y) (0 <= y <= 2N-1) y P (x, -1) (0 <= x <= 2N-1)
localizadas en un límite de un bloque actual. En este momento, se realiza de manera selectiva filtración en muestras de referencia basándose en al menos uno de un modo de intra predicción (por ejemplo, índice, direccionalidad, ángulo, etc., del modo de intra predicción) del bloque actual o un tamaño de un bloque de transformada relacionado con el bloque actual.
Puede seleccionarse al menos uno de una pluralidad de candidatos de filtro para realizar filtración en muestras de referencia. En este punto, la pluralidad de candidatos de intra-filtro puede diferir entre sí en al menos uno de una intensidad de filtro, un coeficiente de filtro o un número de derivación (por ejemplo, un número de coeficientes de filtro, una longitud de filtro). Una pluralidad de candidatos de intra-filtro puede definirse en la menos una de una secuencia, una instantánea, un corte, o un nivel de bloque. Es decir, una secuencia, una instantánea, un corte, o un bloque en el que se incluye el bloque actual puede usar la misma pluralidad de candidatos de intra-filtro.
En lo sucesivo, por conveniencia de explicación, se supone que una pluralidad de candidatos de intra-filtro incluye un primer intra-filtro y un segundo intra-filtro. También se supone que el primer intra-filtro es un filtro de 3 derivaciones (1, 2, 1) y el segundo intra-filtro es un filtro de 5 derivaciones (2, 3, 6, 3, 2).
Cuando se filtran muestras de referencia aplicando un primer intra filtro, las muestras de referencia filtradas pueden derivarse como se muestra en Ecuación 7.
[Ecuación 7]
P ( - 11 ) = ( P ( - 1,0 )+ 2 P (-11 )+P( 0,-1 ) 2 ) » 2
P ( - h y ) = ( P ( - l , y l ) 2 P ( - l , y ) P ( - l , y - l ) 2 ) » 2
P ( x 1 ) = C P O 11 )+ 2 P(x,~ 1 ) P ( x - 11 ) 2 ) » 2
Cuando se filtran muestras de referencia aplicando el segundo intra-filtro, las muestras de referencia filtradas pueden derivarse como se muestra en la siguiente ecuación 8.
[Ecuación 8]
P ( - 11 )= (2 P (-2 ,0 )+ 3 P (-1,0 )+ 6 P (-11 )+ 3 P (0 ,-1 )+ 2 P (0 ,-2 )+ 8 )» 4 P ( - 1 ,y )= (2 P ( - 1 ,y 2 )+ 3 P { - 1 , y 1 ) 6 P ( - 1 ,y )+ 3 P ( - 1 ,y - 1 )+ 2 P ( - 1, j - 2 ) 8 ) » 4 P (jc,-1 )= (2 P (x 2 ,-1 )+ 3P (x 1,-1 )+ 6 P (jc,-1 )+ 3P (jc-1,-1 )+2P (jc- 2 , - 1 )+ 8 ) » 4 Basándose en una posición de una muestra de referencia, puede determinarse y usarse uno de una pluralidad de candidatos de intra-filtro para realizar filtración en la muestra de referencia usando la determinada. Por ejemplo, puede aplicarse un primer intra-filtro a una muestra de referencia en un límite de un bloque actual, y puede aplicarse un segundo intra-filtro a otras muestras de referencia. Específicamente, como se muestra en la Figura 17, se realiza filtración en las muestras de referencia 1701 (pej., P (-1, -1), P (-1,0), P (-1,1), ... , P (-1, N-1) y P (0, -1), P (1, -1)), ... aplicando un
primer intra-filtro como se muestra en la Ecuación 7 (p. ej., filtro con coeficientes (1,2,1)), y la filtración en las otras muestras de referencia 1702 se realiza aplicando un segundo filtro de referencia como se muestra en la Ecuación 8 (p. ej., filtro con coeficientes (2,3,6,3,2)).
Es posible seleccionar uno de una pluralidad de candidatos de intra-filtro basándose en un tipo de transformada usada para un bloque actual, y realizar filtración en muestras de referencia usando la seleccionada. En este punto, el tipo de transformada puede significar (1) un esquema de transformada tal como DCT, DST o KLT, (2) un indicador de modo de transformada tal como una transformada 2D, transformada 1D o no transformada o (3) el número de transformadas tal como una primera transformada y una segunda transformada. En lo sucesivo, por conveniencia de descripción, se supone que el tipo de transformada significa el esquema de transformada tal como DCT, DST y KLT.
Por ejemplo, si un bloque actual se codifica usando una DCT, puede realizarse filtración usando un primer intra-filtro, y si un bloque actual se codifica usando una DST, puede realizarse filtración usando un segundo intra-filtro. O, si un bloque actual se codifica usando DCT o DST, puede realizarse filtración usando un primer intra-filtro, y si el bloque actual se codifica usando una KLT, puede realizarse filtración usando un segundo intra-filtro.
Puede realizarse filtración usando un filtro seleccionado basándose en un tipo de transformada de un bloque actual y una posición de una muestra de referencia. Por ejemplo, si un bloque actual se codifica usando una DCT, puede realizarse filtración en las muestras de referencia P (-1, -1), P (-1,0), P (-1,1), ... , P (-1, N-1) y P (0, -1), P (1, -1), ... , P (N-1, -1) usando un primer intra-filtro, y puede realizarse filtración en otras muestras de referencia usando un segundo intra-filtro. Si un bloque actual se codifica usando una DST, puede realizarse filtración en las muestras de referencia P (-1, -1), P (-1,0), P (-1,1)___P (-1, N-1) y P (0, -1), P (1, -1)____ P (N-1, -1) usando un segundo intra-filtro, y puede realizarse filtración en otras muestras de referencia usando un primer intra-filtro.
Puede seleccionarse uno de una pluralidad de candidatos de intra-filtro basándose en si un tipo de transformada de un bloque vecino que incluye una muestra de referencia es el mismo que un tipo de transformada de un bloque actual, y la filtración puede realizarse usando el candidato de intra-filtro seleccionado. Por ejemplo, cuando un bloque actual y un bloque vecino usan el mismo tipo de transformada, se realiza filtración usando un primer intra-filtro, y cuando los tipos de transformada de un bloque actual y de un bloque vecino son diferentes entre sí, puede usarse el segundo intra-filtro para realizar filtración.
Es posible seleccionar uno cualquiera de una pluralidad de candidatos de intra filtro basándose en un tipo de transformada de un bloque vecino y realizar filtración en una muestra de referencia usando la seleccionada. Es decir, puede seleccionarse un filtro específico teniendo en cuenta un tipo de transformada de un bloque en el que se incluye una muestra de referencia. Por ejemplo, como se muestra en la Figura 18, si un bloque adyacente 1810 a la parte izquierda / inferior izquierda de un bloque actual es un bloque codificado usando una DCT, y un bloque adyacente 1820 a la parte superior / superior derecha de un bloque actual es un bloque codificado usando una DST, se realiza filtración en muestras de referencia adyacentes 1802 a la parte izquierda / inferior izquierda de un bloque actual aplicando un primer intra filtro (p. ej., filtro con coeficientes (1,2,1)) y se realiza filtración en muestras 1801 de referencia adyacentes a la parte superior / superior derecha de un bloque actual aplicando un segundo intra filtro (p. ej., filtro con coeficientes (2,3,6,3,2)).
En unidades de una región predeterminada, puede definirse un filtro usable en la región correspondiente. En el presente documento, la unidad de la región predeterminada puede ser una cualquiera de una secuencia, una instantánea, un corte, un grupo de bloques (por ejemplo, una fila de unidades de árbol de codificación) o un bloque (por ejemplo, una unidad de árbol de codificación). O, puede definirse otra región que comparte uno o más filtros. Una muestra de referencia puede filtrarse usando un filtro mapeado a una región en la que se incluye un bloque actual.
Por ejemplo, como se muestra en la Figura 19, es posible realizar filtración en muestras de referencia usando diferentes filtros en unidades de CTU. En este caso, la información que indica si se usa el mismo filtro en una secuencia o una instantánea, un tipo de filtro usado para cada CTU, un índice que especifica un filtro usado en la correspondiente CTU entre unos candidatos de intra filtro disponibles puede señalizarse mediante un conjunto de parámetros de secuencia (SPS) o un conjunto de parámetros de instantánea (PPS). En la figura 19, la referencia numérica 1910 denota CTUs a la cual se aplica un primer filtro con coeficientes (1,2,1), y la referencia numérica 1920 denota CTUs a la cual se aplica un segundo filtro con coeficientes (2,3,6,3,2).
Una unidad de codificación puede dividirse en al menos una o más unidades de transformada. En este momento, una unidad de transformada puede tener una forma cuadrada o una forma no cuadrada, dependiendo de un modo de partición para la unidad de transformada.
Una unidad de codificación puede dividirse en dos o más unidades de transformada por al menos una de una línea horizontal que divide la unidad de codificación hacia arriba y hacia abajo o una línea vertical que divide la unidad de codificación a la izquierda y a la derecha. Como un ejemplo, puede usarse una división
de árbol cuádruple en la que se divide una unidad de codificación en cuatro unidades de transformada usando una línea horizontal que divide la unidad de codificación hacia arriba y hacia abajo y una línea vertical que divide la unidad de codificación a la izquierda y a la derecha. O, puede usarse una división de árbol binario en la que se divide una unidad de codificación en dos unidades de transformada usando cualquiera de una línea horizontal o una línea vertical. Además del ejemplo anteriormente descrito, puede usarse también un esquema de división que divide una unidad de codificación en una pluralidad de unidades de transformada usando una pluralidad de líneas verticales o una pluralidad de líneas horizontales.
Puede especificarse por un elemento de sintaxis señalizado desde un flujo de bits si una unidad de codificación se divide en un tipo de árbol cuádruple. Esto puede ser una bandera de 1 bit, pero no está limitado a lo mismo.
Adicionalmente, puede especificarse por un elemento de sintaxis señalizado desde un flujo de bits si una unidad de codificación se divide en un tipo de árbol binario. Esto puede ser una bandera de 1 bit, pero no está limitado a lo mismo. Cuando se indica que una unidad de codificación se divide en un tipo de árbol binario, puede señalizarse adicionalmente información que indica una dirección de división de una unidad de codificación. En este momento, la dirección de división puede indicar si una unidad de codificación se divide en una línea vertical o en una línea horizontal.
Una unidad de transformada generada dividiendo una unidad de codificación puede dividirse de nuevo en al menos una unidad de transformada. Por ejemplo, una unidad de transformada generada dividiendo una unidad de codificación puede dividirse en un tipo de árbol cuádruple o de árbol binario.
La Figura 20 es un diagrama que muestra un ejemplo en el que una unidad de codificación se divide en bloques que tienen una forma cuadrada.
Cuando se determina que una unidad de codificación se divide en un tipo de árbol cuádruple, la unidad de codificación puede dividirse en cuatro unidades de transformada. Cuando la unidad de codificación se divide en cuatro unidades de transformada, es posible determinar, para cada unidad de transformada, si dividir adicionalmente la unidad de transformada. Como un ejemplo, para cuatro unidades de transformada, puede determinarse si dividir cada unidad de transformada en un tipo de árbol cuádruple o árbol binario.
Por ejemplo, en el ejemplo mostrado en la Figura 20, se ilustra que una primera y segunda unidades de transformada entre cuatro unidades de transformada generadas dividiendo una unidad de codificación 2010 en tipo de árbol cuádruple se dividen de nuevo en un tipo de árbol cuádruple. Además, se ilustra que una primera y tercera unidades de transformada entre cuatro unidades de transformada generadas dividiendo
la segunda unidad de transmisión 2020 se dividen de nuevo en un tipo de árbol cuádruple.
Como tal, una unidad de transformada puede particionarse recursivamente. Por consiguiente, una unidad de codificación puede incluir unidades de transformada de diferentes tamaños, como se muestra en la Figura 20.
La Figura 21 es un diagrama que muestra un ejemplo en el que una unidad de codificación se divide en bloques que tienen una forma no cuadrada.
Como una unidad de predicción, una unidad de codificación puede dividirse para tener una forma no cuadrada. En un ejemplo, una unidad de codificación puede dividirse como una forma de Nx2N 2110 o 2NxN 2120. Cuando una unidad de codificación se divide para tener una forma no cuadrada, es posible determinar para cada unidad de transformada, si dividir adicionalmente la unidad de transformada. Como un ejemplo, para dos unidades de transformada, puede determinarse si dividir adicionalmente cada unidad de transformada en un tipo de árbol cuádruple o árbol binario.
Por ejemplo, en el ejemplo mostrado en la Figura 21 (a), se ilustra que un primer bloque entre bloques de Nx2N generados dividiendo una unidad de codificación para tener una forma no cuadrada se divide en un tipo de árbol cuádruple. Además, se ilustra que una primera unidad de transformada entre cuatro unidades de transformada generadas dividiendo la primera unidad de transformada en un tipo de árbol cuádruple se divide en un tipo de árbol cuádruple de nuevo.
Además, en el ejemplo mostrado en la Figura 21 (b), se ilustra que un primer y segundo bloques entre bloques de 2Nx2N generados dividiendo una unidad de codificación en un tipo de árbol cuádruple se dividen en un tipo de árbol binario de 2NxN. Además, se ilustra que una primera unidad de transformada entre dos unidades de transformada generadas dividiendo la primera unidad de transformada en un tipo de árbol binario de 2NxN se divide en un tipo de árbol cuádruple.
Un modo de partición para una unidad de transformada o si la unidad de transformada se divide adicionalmente puede determinarse de acuerdo con al menos uno de un tamaño de la unidad de transformada, una forma de la unidad de transformada, un modo de predicción o un modo de partición para una unidad de predicción.
Por ejemplo, un modo de partición para una unidad de transformada puede restringirse por una forma de la unidad de transformada. Como un ejemplo específico, cuando una unidad de transformada tiene una forma que una altura es más larga que una anchura, un modo de partición para la unidad de transformada puede restringirse a la de una unidad de transformada de nodo inferior generada como resultado de la división de la unidad de transformada que tiene una forma que una anchura es más
4
larga que una altura.
Por ejemplo, cuando una unidad de transformada de nodo superior tiene una forma de 2NxN, una unidad de transformada de nodo inferior incluida en la unidad de transformada de nodo superior puede restringirse a tener una forma de 2NxN. Por consiguiente, un modo de partición para la unidad de transformada de nodo superior puede restringirse a un tipo de árbol cuádruple.
Como alternativa, cuando una altura de una unidad de transformada es más larga que una anchura, un modo de partición para la unidad de transformada puede restringirse al de una unidad de transformada de nodo inferior generada como resultado de la división de la unidad de transformada que tiene una forma de una altura que es más larga que una anchura.
Por ejemplo, cuando una unidad de transformada de nodo superior tiene una forma de Nx2N, una unidad de transformada de nodo inferior incluida en la unidad de transformada de nodo superior puede restringirse para que tenga una forma de Nx2N. Por consiguiente, un modo de partición para la unidad de transformada de nodo superior puede restringirse a un tipo de árbol cuádruple.
Como otro ejemplo, un modo de partición para una unidad de transformada puede determinarse basándose en un modo de partición para una unidad de predicción. Como un ejemplo específico, cuando una unidad de predicción se divide como una forma cuadrada (por ejemplo, 2Nx2N), una unidad de transformada puede dividirse como una forma cuadrada únicamente. Por otra parte, cuando una unidad de predicción se divide como una forma no cuadrada (por ejemplo, 2NxN o Nx2N), una unidad de transformada puede dividirse como una forma no cuadrada únicamente.
Puede establecerse que, cuando una unidad de transformada tiene una forma no cuadrada, la unidad de transformada puede dividirse en un tipo de árbol cuádruple únicamente y no puede dividirse en un tipo de árbol binario. Por ejemplo, cuando una unidad de transformada tiene una forma de Nx2N o 2NxN, la unidad de transformada puede dividirse en un tipo de árbol cuádruple que incluye cuatro bloques de Nx2N o cuatro bloques de 2NxN.
Como otro ejemplo, puede establecerse que una unidad de transformada no pueda dividirse adicionalmente cuando la unidad de transformada tiene una forma no cuadrada.
Una unidad de transformada es una unidad de base de una transformada, y puede realizarse una transformada inversa para cada unidad de transformada.
En lo sucesivo, se describirá en detalle un ejemplo en el que se realiza una transformada inversa en un bloque actual con referencia a la Figura 22. En este punto, el bloque actual puede representar una unidad de transformada (un bloque de
transformada) que es una unidad en la que se realiza una transformada inversa.
La Figura 22 es un diagrama de flujo que ilustra un proceso de realización de una transformada inversa para un bloque actual.
En primer lugar, un decodificador puede decodificar información que indica si una transformada inversa se omite para un bloque actual desde un flujo de bits (S2210).
La información indica si se omite al menos una de una transformada inversa para una dirección vertical o una transformada inversa para una dirección horizontal para un bloque actual. En este punto, la información puede ser una bandera de 1 bit (por ejemplo, 'transform_skip_flag'), pero no está limitado a lo mismo.
Si la información indica que una transformada inversa se omite para un bloque actual, al menos puede omitirse una de una transformada inversa de dirección vertical o una transformada inversa de dirección horizontal para el bloque actual. En este momento, se determina de manera adaptativa basándose en un tamaño, una forma o un modo de predicción del bloque actual si una de la transformada inversa de dirección vertical y la transformada inversa de dirección horizontal se omite para el bloque actual.
Por ejemplo, si un bloque actual es una forma no cuadrada que tiene una anchura mayor que una altura (por ejemplo, cuando el bloque actual tiene una forma de 2NxN), puede omitirse una transformada inversa de dirección vertical, pero no puede omitirse una transformada inversa de dirección horizontal. Si un bloque actual es una forma no cuadrada que tiene una altura mayor que una anchura (por ejemplo, cuando el bloque actual tiene una forma de Nx2N), puede omitirse una transformada inversa de dirección horizontal, pero no puede omitirse una transformada inversa de dirección vertical. Por otra parte, cuando un bloque actual es una forma cuadrada, puede omitirse tanto una transformada inversa de dirección vertical como una transformada inversa de dirección horizontal.
Como otro ejemplo, si la información indica que se omite una transformada inversa para un bloque actual, el decodificador puede decodificar adicionalmente información que indica una dirección omitida de una transformada inversa desde un flujo de bits. En este punto, la información que indica la dirección omitida de la transformada inversa puede indicar una dirección horizontal, una dirección vertical, o ambas direcciones.
El decodificador puede omitir al menos una de una transformada inversa de dirección horizontal y una transformada inversa de dirección vertical para un bloque actual basándose en la información que indica la dirección omitida de la transformada inversa.
La información que indica si se omite una transformada inversa para un bloque actual puede incluir información que indica si se omite una transformada inversa de una
dirección horizontal para el bloque actual e información que indica si se omite una transformada inversa de una dirección vertical para el bloque actual. Cada pieza de información puede ser una bandera de 1 bit (por ejemplo, 'hor_transform_skip_flag' que indica si se omite una transformada inversa de dirección horizontal o 'ver_transform_skip_flag' que indica si se omite una transformada inversa de dirección vertical), pero no está limitado a lo mismo.
En este momento, la información que indica si una transformada inversa de una dirección horizontal y la información que indica si una transformada inversa de una dirección vertical pueden señalizarse de manera adaptativa de acuerdo con un tamaño, un tipo, o un modo de predicción de un bloque actual.
Por ejemplo, cuando un bloque actual tiene una forma no cuadrada, el decodificador puede decodificar únicamente una de información que indica si se omite una transformada inversa de una dirección horizontal o la indicación de información de si se omite una transformada inversa de una dirección vertical de un flujo de bits. Como un ejemplo específico, cuando un bloque actual es una forma no cuadrada que tiene una anchura mayor que una altura, puede señalizarse información que indica si se omite una transformada inversa de una dirección vertical a través de un flujo de bits, mientras que puede no señalizarse información que indica si se omite una transformada inversa de una dirección horizontal a través del flujo de bits. Cuando un bloque actual es una forma no cuadrada que tiene una altura mayor que una anchura, se omite la información que indica si una transformada inversa de una dirección horizontal puede señalizarse a través de un flujo de bits, mientras que se omite la información que indica que una transformada inversa de una dirección vertical puede no señalizarse a través del flujo de bits.
Por otra parte, cuando un bloque actual tiene una forma cuadrada, el decodificador puede decodificar tanto la información que indica si se omite una transformada inversa de una dirección horizontal como la información que indica si se omite una transformada inversa de una dirección vertical de un flujo de bits.
Si se determina realizar una transformada inversa para al menos una de una dirección vertical o una dirección horizontal para un bloque actual (S2220), el decodificador puede determinar un tipo de transformada para el bloque actual (S2230). El decodificador puede realizar una transformada inversa para el bloque actual basándose en el tipo de transformada para el bloque actual (S2240).
El tipo de transformada incluye esquemas de transformada tales como DCT, DST o KLT. En este punto, la DCT comprende al menos una de DCT-II o DCT-VIII y la DST comprende al menos una de DST-I o DST-VII.
Un tipo de transformada de un bloque actual puede determinarse basándose en
4
un modo de predicción del bloque actual y un tamaño del bloque actual. Por ejemplo, si un bloque actual es un bloque de 4x4 codificado en un intra modo, se realiza una transformada inversa usando la DST-VII, y si el bloque actual no satisface estas condiciones, puede realizarse una transformada inversa usando la DCT-II.
Como un ejemplo, una matriz de DST-VII para un bloque de 4x4 puede expresarse como A a a continuación.
Puede realizarse una transformada inversa usando la DST-VII usando una matriz A / de DST-VII inversa.
Una matriz de DCT-II para un bloque de 8x8 puede expresarse como T8 a continuación.
Una transformada inversa usando la DCT-II puede realizarse usando una matriz T8T de DCT-II inversa.
Como otro ejemplo, el decodificador puede determinar un conjunto de transformada para un bloque actual y determinar un tipo de transformada para el bloque actual basándose en el conjunto de transformada determinado. En este punto, el conjunto de transformada puede obtenerse en unidades de una unidad de transformada, una unidad de codificación o una unidad de árbol de codificación. Como otro ejemplo, el conjunto de transformada puede obtenerse para una unidad de transformada o una unidad de codificación cuyo tamaño o una profundidad es mayor o igual que un valor predeterminado.
Por conveniencia de explicación, en las realizaciones descritas a continuación,
se supone que se obtiene un conjunto de transformada para una unidad de transformada que incluye una pluralidad de unidades de transformada o para una unidad de codificación que incluye una pluralidad de unidades de transformada. Y, una unidad en la que se obtiene el conjunto de transformada se denominará como una 'unidad de base'.
En primer lugar, cuando se determina un conjunto de transformada en unidades de una unidad de codificación o una unidad de transformada, un tipo de transformada de una pluralidad de unidades de transformada incluidas en una unidad de base puede determinarse basándose en el conjunto de transformada determinado. En este momento, el conjunto de transformada puede incluir una pluralidad de tipos de transformada.
Un tipo de transformada de una unidad de transformada incluida en una unidad de base puede determinarse para que sea al menos uno de una pluralidad de tipos de transformada incluidos en un conjunto de transformada. Por ejemplo, un tipo de transformada de una unidad de transformada puede determinarse de manera adaptativa de acuerdo con una forma de una unidad de transformada, un tamaño de una unidad de transformada, o un modo de predicción. Como un ejemplo específico, cuando se supone que un conjunto de transformada incluye dos tipos de transformada, un tipo de transformada de una unidad de transformada puede determinarse como el primero de los dos tipos de transformada cuando la unidad de transformada a transformarse a la inversa satisface una condición predeterminada. Por otra parte, cuando una unidad de transformada a transformarse a la inversa no satisface la condición predeterminada, un tipo de transformada de la unidad de transformada puede determinarse como uno segundo de los dos tipos de transformada.
La Tabla 3 es un gráfico que muestra candidatos de conjunto de transformada. T l
Los conjuntos de transformada pueden identificarse por índices de conjunto de transformada y un conjunto de transformada de un bloque actual puede especificarse por información de índice que indica un índice de conjunto de transformada. La información de índice relacionada con el conjunto de transformada del bloque actual
4
puede decodificarse desde un flujo de bits.
En la Tabla 3, el 'candidato de tipo de transformada 0' indica un tipo de transformada usado cuando una unidad de transformada satisface una condición predeterminada, y el 'candidato de tipo de transformada 1' indica un tipo de transformada usado cuando una unidad de transformada no satisface una condición predeterminada. En este punto, la condición predeterminada puede representar si una unidad de transformada tiene una forma cuadrada, si un tamaño de una unidad de transformada es menor o igual que un valor predeterminado, si una unidad de codificación se codifica en un modo de intra predicción, y similares.
Por ejemplo, la condición predeterminada puede indicar si una unidad de transformada es un bloque igual o menor que 4x4 codificado en un modo de intra predicción. En este caso, se aplica un candidato de tipo de transformada 0 a una unidad de transformada de 4x4 codificada en un modo de intra predicción que satisface la condición predeterminada, y se aplica un candidato de tipo de transformada 1 a otras unidades de transformada que no satisfacen la condición predeterminada. Por ejemplo, cuando se selecciona un conjunto de transformada 0 como un conjunto de transformada de un bloque actual, si el bloque actual es un bloque igual o menor que 4x4 codificado en un modo de intra-predicción, se determina DST-VII como un tipo de transformada. Y si un bloque actual no es un bloque igual o menor que 4x4 codificado en un modo de intra predicción, puede aplicarse DCT-II.
La condición predeterminada puede establecerse de manera variable de acuerdo con un conjunto de transformada. Por ejemplo, cuando se selecciona un conjunto de transformada 0 o un conjunto de transformada 1 como un conjunto de transformada para un bloque actual, uno de un candidato de tipo de transformada 0 o un candidato de tipo de transformada 1 puede determinarse como un tipo de transformada del bloque actual de acuerdo con si el bloque actual es un bloque menor o igual que 4x4 codificado en el modo de intra predicción. Por otra parte, cuando se selecciona un conjunto de transformada 2 como un conjunto de transformada para un bloque actual, uno de un candidato de tipo de transformada 0 o un candidato de tipo de transformada 1 puede determinarse como un tipo de transformada del bloque actual de acuerdo con si el bloque actual es un bloque menor o igual que 8x8 codificado en el modo de intra predicción.
Por lo tanto, cuando se determina un conjunto de transformada para una unidad de base como un conjunto de transformada 0, puede aplicarse la DST-VII a una unidad de transformada de 4x4 codificada en un modo de intra predicción incluido en la unidad de base, y puede aplicarse DCT-II a otras unidades de transformada. Por otra parte, cuando se determina un conjunto de transformada para una unidad de base como un
4
conjunto de transformada 2, puede aplicarse DST-VII a una unidad de transformada de 4x4 codificada en un modo de intra predicción o a una unidad de transformada de 8x8 codificada en un modo de intra predicción incluida en la unidad de base, y puede aplicarse DCT-VIII a otras unidades de transformada.
La condición predeterminada puede determinarse de manera adaptativa de acuerdo con un tamaño, una forma, o un modo de predicción de una unidad de base. Por ejemplo, cuando un tamaño de una unidad de base (por ejemplo, una unidad de codificación) es menor o igual que 32x32, la condición predeterminada puede indicar si una unidad de transformada es un bloque menor o igual que 4x4 codificado en un modo de intra predicción. Por otra parte, cuando un tamaño de una unidad de base (por ejemplo, una unidad de codificación) es más grande que 32x32, la condición predeterminada puede indicar si una unidad de transformada es un bloque menor o igual que 8x8 codificado en un modo de intra predicción.
Por lo tanto, cuando un tamaño de una unidad de base es menor o igual que 32x32, un candidato de tipo de transformada 0 puede aplicarse a una unidad de transformada de 4x4 codificada en un modo de intra predicción incluido en la unidad de base, y un candidato de tipo de transformada 1 puede aplicarse a otras unidades de transformada. Por otra parte, cuando un tamaño de una unidad de base es más larga que 32x32, un candidato de tipo de transformada 0 puede aplicarse a una unidad de transformada de 4x4 codificada en un modo de intra predicción o una unidad de transformada 8x8 codificada en un modo de intra predicción incluido en la unidad de base, y un candidato de tipo de transformada 1 puede aplicarse a otras unidades de transformada.
Si se determina realizar tanto una transformada inversa de una dirección horizontal como una transformada inversa de una dirección vertical para un bloque actual, puede determinarse de manera separada un conjunto de transformada para la dirección horizontal del bloque actual y un conjunto de transformada para la dirección vertical del bloque actual. Por ejemplo, se realiza una transformada inversa de una dirección horizontal de un bloque actual usando un conjunto de transformada 0, y se realiza una transformada inversa de una dirección vertical del bloque actual usando un conjunto de transformada 1.
Si usar diferentes conjuntos de transformada para una dirección horizontal y una dirección vertical del bloque actual puede determinarse de manera adaptativa basándose en un tamaño, una forma o un modo de predicción de un bloque actual o una unidad de base.
Por ejemplo, la Figura 23 muestra un ejemplo en el que se determina un conjunto de transformada de una unidad de transformada basándose en un modo de intra
4
predicción de una unidad de predicción. En la figura 23, la línea punteada delgada denota modos de intra predicción que utilizan el mismo conjunto de transformación para la transformación horizontal y para la transformación vertical. La línea punteada gruesa denota modos de intra predicción que utilizan diferentes conjuntos de transformación para la transformación horizontal que para la transformación vertical.
Si usar diferentes conjuntos de transformada para una dirección horizontal y una dirección vertical puede determinarse de acuerdo con un modo de intra predicción de una unidad de predicción que corresponde a un bloque actual. Por ejemplo, cuando un modo de intra predicción de una unidad de predicción es una dirección vertical o una dirección horizontal, o cuando un modo de intra predicción de una unidad de predicción es similar a una dirección vertical o similar a una dirección horizontal, pueden usarse diferentes conjuntos de transformada para una dirección horizontal y una dirección vertical de un bloque actual. Si un modo de intra predicción de una unidad de predicción no es un modo direccional, o no es el mismo o similar a una dirección vertical o una dirección horizontal, puede usarse el mismo conjunto de transformada para una dirección horizontal y una dirección vertical de un bloque actual.
En este punto, un modo de intra-predicción similar a una dirección vertical o una dirección horizontal es un modo de intra-predicción que tiene una dirección similar a un modo de intra-predicción con una dirección vertical o una dirección horizontal. Y el modo de intra-predicción similar a la dirección vertical o a la dirección horizontal significa un modo de intra-predicción en el que una diferencia desde el modo de intra predicción con la dirección vertical o la dirección horizontal es menor o igual que un valor umbral. Por ejemplo, como en el ejemplo mostrado en la Figura 23, si los modos de intra-predicción incluyen 33 modos de intra-predicción direccionales, los modos de intra predicción en los que una diferencia desde un modo de intra-predicción con una dirección horizontal o una dirección vertical (10, 26) es igual o menor que ±3 pueden determinarse como el modo de intra-predicción similar a una dirección vertical o una dirección horizontal.
Como se ha descrito anteriormente, un conjunto de transformada de una unidad de base puede determinarse basándose en información de índice señalizada a través de un flujo de bits. En este momento, para la unidad de base, un conjunto de transformada de una dirección horizontal y un conjunto de transformada de una dirección vertical pueden determinarse de manera individual. El conjunto de transformada de la dirección horizontal para la unidad de base puede especificarse por la primera información de índice y el conjunto de transformada de la dirección vertical para la unidad de base puede especificarse por la segunda información de índice. Un tipo de transformada de una unidad de transformada incluida en la unidad de base puede determinarse basándose en el conjunto de transformada determinada para la
4
unidad de base.
Como otro ejemplo, un conjunto de transformada para un bloque actual puede determinarse basándose en al menos uno de un tamaño del bloque actual, una forma del bloque actual, un modo de predicción del bloque actual o un conjunto de transformada de una unidad decodificada antes del bloque actual.
Por ejemplo, puede establecerse que las unidades que tienen el mismo modo de intra predicción entre una pluralidad de unidades incluidas en una unidad de codificación o una unidad de transformada usan el mismo conjunto de transformada.
Como un ejemplo específico, se supone que una primera unidad de transformada en un orden de exploración tiene un modo de intra predicción con una dirección vertical, y que se usa un conjunto de transformada 2 para una dirección horizontal y se usa un conjunto de transformada 0 para una dirección vertical de la primera unidad de transformada. En este caso, una unidad de transformada que tiene un modo de intra predicción con una dirección vertical puede tener el mismo conjunto de transformada que la primera unidad de transformada que tiene el modo de intra predicción con la dirección vertical. Por consiguiente, la unidad de transformada que tiene el modo de intra predicción con la dirección vertical puede usar el conjunto de transformada 2 para una dirección horizontal y el conjunto de transformada 0 para una dirección vertical, como la primera unidad de transformada que tiene el modo de intra predicción con la dirección vertical.
En este caso, puede señalizarse información de índice únicamente para la primera unidad de transformada que tiene el modo de intra predicción con la dirección vertical, y puede no señalizarse información de índice para la otra unidad de transformada que tiene el modo de intra predicción con la dirección vertical.
Además, puede establecerse que las unidades que tienen modos de intra predicción similares entre una pluralidad de unidades de transformada incluidas en una unidad de codificación o una unidad de transformada usen el mismo conjunto de transformada. En este momento, los modos de intra predicción incluidos en un intervalo donde una diferencia desde un modo de intra predicción en una dirección predeterminada es menor o igual que un valor umbral pueden determinarse que son similares entre sí. Por ejemplo, cuando la dirección predeterminada es una dirección horizontal o vertical, puede determinarse que los modos de intra predicción incluidos en un intervalo de ± 3 o menor desde el modo de intra predicción horizontal o vertical son mutuamente similares.
Como un ejemplo específico, se supone que una primera unidad de transformada en un orden de exploración tiene un modo de intra predicción con una dirección vertical o cercano a una dirección vertical, y que se usa un conjunto de
4
transformada 2 para una dirección horizontal y se usa un conjunto de transformada 0 para una dirección vertical de la primera unidad de transformada. En este caso, una unidad de transformada que tiene un modo de intra predicción con una dirección vertical o cerca de una dirección vertical puede tener el mismo conjunto de transformada que otra unidad de transformada que tiene un modo de intra predicción con una dirección vertical o cerca de una dirección vertical. Cuando se supone que un modo de intra predicción en el que una diferencia desde una dirección vertical es menor o igual que 3 es similar a una dirección vertical, una unidad de transformada que tiene un modo de intra predicción con uno cualquiera de 23-29 puede usar un conjunto de transformada 2 para una dirección horizontal y un conjunto de transformada 0 para una dirección vertical, como la primera unidad de transformada que tiene el modo de intra predicción con uno cualquiera de 23-29.
En este caso, puede señalizarse información de índice únicamente para la primera unidad de transformada que tiene el modo de intra predicción con la dirección vertical o cerca de la dirección vertical, y puede no señalizarse información de índice para la otra unidad de transformada que tiene el modo de intra predicción con la dirección vertical o cerca de la dirección vertical.
Un conjunto de transformada para un bloque actual puede determinarse de acuerdo con un modo de intra predicción de una unidad de predicción relacionada con el bloque actual. Por ejemplo, la Tabla 4 ilustra índices de conjunto de transformada de una dirección horizontal y una dirección vertical de acuerdo con un modo de intrapredicción de un bloque actual.
T l 4
Como se muestra en la Tabla 4, un conjunto de transformada de un bloque actual
puede determinarse de acuerdo con un modo de intra predicción de una unidad de predicción relacionada con el bloque actual.
Si una unidad de base se codifica con inter predicción, puede omitirse un proceso de determinación de un conjunto de transformada para un bloque actual. Es decir, si la unidad de base se codifica con inter predicción, el bloque actual puede transformarse a la inversa sin usar el conjunto de transformada. En este caso, un tipo de transformada del bloque actual puede determinarse como DCT, DST o KLT dependiendo de un tamaño y una forma del bloque actual.
Cuando una unidad de base se codifica con inter predicción, se determina un conjunto de transformada para un bloque actual, y únicamente puede usarse una parte de una pluralidad de candidatos de tipo de transformada incluida en el conjunto de transformada para una transformada inversa del bloque actual. Por ejemplo, cuando se supone que un conjunto de transformada de un bloque actual incluye un candidato de tipo de transformada 0 y un candidato de tipo de transformada 1 como se ilustra en la Tabla 3, un tipo de transformada del bloque actual puede determinarse que sea el candidato de tipo de transformada 0 o el candidato de tipo de transformada 1, independientemente de si el bloque actual satisface una condición predeterminada.
En la Tabla 3 anterior, se ilustra que un conjunto de transformada incluye dos candidatos de tipo de transformada. El número de candidatos de tipo de transformada incluidos en un conjunto de transformada no está limitado a dos. El número de candidatos de tipo de transformada incluidos en un conjunto de transformada puede ser uno, tres, cuatro o más.
El número máximo de candidatos de tipo de transformada que un conjunto de transformada puede incluir puede determinarse basándose en información señalizada desde un flujo de bits. Por ejemplo, la información acerca del número de candidatos máximos en un conjunto de transformada se señaliza mediante un encabezamiento de corte o secuencia, y el número máximo de candidatos de tipo de transformada disponibles en el corte o secuencia puede determinarse por la información.
Mientras tanto, el número de candidatos incluidos en un conjunto de transformada o un candidato de tipo de transformada incluido en un conjunto de transformada puede ajustarse de acuerdo con información que indica si omitir una transformada inversa está permitido en una instantánea. En este punto, la información que indica si una omisión de transformada inversa se permite en una instantánea puede ser una bandera de 1 bit (por ejemplo, 'transform_skip_enabled_flag'), pero no está limitado a lo mismo.
Por ejemplo, si 'transform_skip_enabled_flag' indica que se permite una omisión de transformada inversa en una instantánea, un conjunto de transformada puede incluir
1
adicionalmente 'omisión de transformada' (‘transform skip’) como un candidato, como en el ejemplo de la Tabla 5. Si 'transform_skip_enabled_flag' indica que una omisión de transformada inversa no está permitida en una instantánea, un conjunto de transformada puede no incluir 'omisión de transformada' (‘transform skip’) como un candidato, como en el ejemplo de la Tabla 5.
T l
Puesto que un conjunto de transformada incluye una pluralidad de candidatos de tipo de transformada, un esquema de transformada inversa que usa un tipo de transformada puede denominarse como AMT (del inglés "Adaptive Múltiple Transform” - Transformada Múltiple Adaptativa). Mientras tanto, si se usa AMT (es decir, si determinar un tipo de transformada de un bloque actual usando un conjunto de transformada) puede determinarse de manera selectiva de acuerdo con un tamaño o una profundidad del bloque actual o una unidad de base. Por ejemplo, un bloque actual puede determinar un tipo de transformada usando un conjunto de transformada únicamente cuando un tamaño de una unidad de codificación que incluye el bloque actual es menor o igual que un tamaño predeterminado. En este punto, un tamaño máximo de la unidad de codificación en el que se permite AMT puede señalizarse a través de un encabezamiento de corte o un encabezamiento de secuencia.
A continuación, se describirá un proceso de obtención de un parámetro de cuantificación para un bloque actual.
En el proceso de codificación, un parámetro de cuantificación determina una calidad de una imagen después de un proceso de transformada. Un coeficiente de transformada cuantificado puede obtenerse dividiendo un coeficiente de transformada obtenido a través de un proceso de transformada por un valor especificado por el parámetro de cuantificación.
En la etapa de decodificación, se obtiene un coeficiente de transformada descuantificado por una cuantificación inversa que se realiza multiplicando un
2
coeficiente de transformada cuantificado por un valor especificado por el parámetro de cuantificación.
Pueden aplicarse diferentes parámetros de cuantificación para cada bloque o cada área dentro de una instantánea. En este punto, bloques o áreas a los que se aplica el mismo parámetro de cuantificación pueden denominarse como un 'grupo de cuantificación' (del inglés 'quantization group' - QG).
Para obtener un parámetro de cuantificación de un grupo de cuantificación, puede señalizarse un parámetro de cuantificación de una instantánea o un corte y un valor de diferencia de parámetro de cuantificación (DeltaQP, dQp). El valor de diferencia de parámetro de cuantificación indica un valor de diferencia entre el parámetro de cuantificación del grupo de cuantificación y un valor de predicción de parámetro de cuantificación. En este momento, cuando el grupo de cuantificación es un primer grupo en una instantánea o en un corte, un parámetro de cuantificación de la instantánea o el corte puede establecerse como el valor de predicción de parámetro de cuantificación del grupo de cuantificación.
Un tamaño de un grupo de cuantificación puede determinarse de acuerdo con un elemento de sintaxis que indica un tamaño del grupo de cuantificación y un tamaño de una unidad de árbol de codificación. Por ejemplo, la Tabla 6 muestra un tamaño de un grupo de cuantificación de acuerdo con 'diff_cu_qp_delta_depth' que representa el tamaño del grupo de cuantificación y un tamaño de una unidad de árbol de codificación.
T l
En este punto, 'diff_cu_qp_delta_depth' representa un valor de diferencia entre un tamaño de una unidad de árbol de codificación y un tamaño de un grupo de cuantificación.
Un valor de diferencia de parámetro de cuantificación puede señalizarse para una unidad de codificación o una unidad de transformada que tiene un coeficiente de transformada distinto de cero. Cuando una unidad de árbol de codificación se divide en una pluralidad de unidades de codificación, puede señalizarse un valor de diferencia de parámetro de cuantificación para una unidad de codificación o una unidad de
transformada que tiene un coeficiente de transformada distinto de cero.
En la etapa de codificación, el codificador puede derivar un valor de diferencia de parámetro de cuantificación basándose en un valor relacionado con un bloque actual (por ejemplo, un valor promedio) a codificarse. En lo sucesivo, se describirá un método de derivación de un valor de diferencia de parámetro de cuantificación basándose en un valor relacionado con un bloque actual en detalle con referencia a las figuras. Por conveniencia de explicación, en la realización descrita más adelante, un valor relacionado con un bloque actual se denomina como un valor promedio del bloque actual.
La Figura 24 es un diagrama de flujo que ilustra un método de derivación de un valor de diferencia de parámetro de cuantificación de acuerdo con una realización de la presente invención. En la realización que se va a describir más adelante, un bloque actual puede significar un grupo de cuantificación, una unidad de árbol de codificación, una unidad de codificación o una unidad de transformada que corresponde a unidades en las que se obtiene el parámetro de cuantificación.
Para derivar un valor de diferencia de parámetro de cuantificación, puede calcularse (S2410) un valor promedio de un bloque actual. El valor promedio del bloque actual puede obtenerse basándose en una muestra de predicción y un coeficiente de transformada.
Específicamente, el valor promedio del bloque actual puede obtenerse añadiendo un valor promedio de muestras de predicción en el bloque actual y un valor obtenido escalando un componente de CC (es decir, un coeficiente de CC) de un coeficiente de transformada. En este punto, el componente de CC puede significar un coeficiente que corresponde a un componente de CC entre coeficientes de transformada generados transformando muestras residuales. La ecuación 9 muestra un método de derivación de un valor promedio de un bloque actual.
[Ecuación 9]
intL-Media(Predicción)+escala*CC_coeff
Un valor de escala para un coeficiente de C C puede ser un valor fijo o una variable que se determina dependiendo de un tamaño de un bloque actual.
En la Ecuación 9, M edia(Predicción) representa un valor promedio de muestras de predicción.
Si se calcula un valor promedio de un bloque actual, un valor de diferencia de parámetro de cuantificación del bloque actual puede determinarse basándose en el valor promedio del bloque actual (S2420). El valor de diferencia de parámetro de cuantificación puede derivarse haciendo referencia a una tabla de búsqueda (LUT) que define una relación entre el valor promedio y el valor de diferencia de parámetro de
4
cuantificación.
En este punto, la tabla de búsqueda puede definirse de modo que se usa un número pequeño de bits en una porción oscura de una instantánea (es decir, usando un parámetro de cuantificación grande) y se usa un número de bits grande en una porción brillante de una instantánea (es decir, usando un parámetro de cuantificación pequeño). Por consiguiente, a medida que aumenta un valor promedio de un bloque actual, un valor de diferencia de parámetro de cuantificación puede tender a reducirse.
Por ejemplo, la Tabla 7 ilustra una tabla de correspondencia que define un valor de diferencia de parámetro de cuantificación de acuerdo con un valor promedio.
[Tabla 7]
En la Tabla 7, intL indica un valor promedio, y dQp indica un valor de diferencia de parámetro de cuantificación.
Una tabla de búsqueda referenciada para derivar un valor de diferencia de parámetro de cuantificación puede determinarse de acuerdo con un tamaño de un bloque actual. Por ejemplo, una tabla de correspondencia a usarse para derivar un valor de diferencia de parámetro de cuantificación puede determinarse de manera adaptativa de acuerdo con un tamaño de una unidad de árbol de codificación, una unidad de codificación, una unidad de transformada, o una unidad de predicción.
Tomando una unidad de árbol de codificación como un ejemplo, existe una posibilidad de que una región que incluye una unidad de árbol de codificación que tiene un tamaño pequeño pueda tener textura más compleja o más objetos que una región que incluye una unidad de árbol de codificación que tiene un tamaño grande. Por otra parte, una región que incluye una unidad de árbol de codificación que tiene un tamaño
grande puede ser una región más homogénea que comprende textura o fondo sencillo que una región que incluye una unidad de árbol de codificación que tiene un tamaño pequeño. Por consiguiente, puede mejorarse la calidad de imagen subjetiva y puede mejorarse la realización de la codificación asignando más bits a una unidad de árbol de codificación pequeña que es probable que tenga muchas texturas complejas (es decir, usando un parámetro de cuantificación pequeño).
Para este fin, usando diferentes tablas de búsqueda dependiendo de un tamaño de una unidad de árbol de codificación, una unidad de árbol de codificación de pequeño tamaño puede tener un valor de diferencia de parámetro de cuantificación pequeño y una unidad de árbol de codificación de tamaño grande puede tener un valor de diferencia de parámetro de cuantificación grande. Por ejemplo, si un tamaño de una unidad de árbol de codificación es más grande que 32x32, se usa una tabla de búsqueda de la Tabla 8 a continuación, y si un tamaño de una unidad de árbol de codificación es menor que 32x32, puede usarse una tabla de búsqueda de la Tabla 7.
[Tabla 8]
Como otro ejemplo, una tabla de búsqueda a la que se hace referencia para derivar un valor de diferencia de parámetro de cuantificación puede determinarse de acuerdo con un modo de predicción de un bloque actual. Por ejemplo, una tabla de búsqueda para usarse para derivar un valor de diferencia de parámetro de cuantificación puede determinarse de manera adaptativa, dependiendo de si una unidad de codificación se codifica en un modo de intra predicción, se codifica en modo de inter predicción, o se codifica en copia de intra bloque.
Por ejemplo, cuando una unidad de codificación se codifica en intra predicción,
un valor de diferencia de parámetro de cuantificación puede derivarse usando una tabla de correspondencia en la Tabla 7. Y, cuando una unidad de codificación se codifica en un modo de inter predicción o una copia de intra bloque, un valor de diferencia de parámetro de cuantificación puede derivarse usando una tabla de correspondencia en la Tabla 8.
Como otro ejemplo, una tabla de búsqueda a la que se hace referencia para derivar un valor de diferencia de parámetro de cuantificación puede determinarse de acuerdo con un tipo de transformada de un bloque actual o un conjunto de transformada de un bloque actual. Por ejemplo, cuando un tipo de transformada de una unidad de transformada es DCT, un valor de diferencia de parámetro de cuantificación puede derivarse usando una tabla de búsqueda en la Tabla 7. Y, cuando un tipo de transformada de una unidad de transformada es DST, un valor de diferencia de parámetro de cuantificación puede derivarse usando una tabla de búsqueda en la Tabla 8.
Como otro ejemplo, una tabla de búsqueda a la que se hace referencia para derivar un valor de diferencia de parámetro de cuantificación puede determinarse dependiendo de si se realiza una segunda transformada en un bloque actual. Por ejemplo, cuando se aplica una segunda transformada a una unidad de transformada, un valor de diferencia de parámetro de cuantificación puede derivarse usando una tabla de búsqueda en la Tabla 7. Y, cuando no se aplica una segunda transformada a una unidad de transformada, un valor de diferencia de parámetro de cuantificación puede derivarse usando una tabla de búsqueda en la Tabla 8.
Como otro ejemplo, una tabla de búsqueda a la que se hace referencia para derivar un valor de diferencia de parámetro de cuantificación puede determinarse basándose en un valor de píxel máximo, un valor de píxel mínimo, o una diferencia entre el valor de píxel máximo y el valor de píxel mínimo en un bloque actual. Por ejemplo, cuando un valor de píxel máximo en una unidad de árbol de codificación es menor que un valor umbral específico, un valor de diferencia de parámetro de cuantificación puede derivarse usando una tabla de búsqueda en la Tabla 7. Y, cuando un valor de píxel máximo en la unidad de árbol de codificación es más grande que un valor umbral específico, un valor de diferencia de parámetro de cuantificación puede derivarse usando una tabla de búsqueda en la Tabla 8.
En el ejemplo anterior, se describe que el valor residual de parámetro de cuantificación se determina usando un valor promedio de un bloque actual, y se describe también que el valor promedio se determina por una muestra de predicción y un coeficiente de CC del bloque actual. A diferencia de la descripción, el valor residual de parámetro de cuantificación puede determinarse por una muestra de predicción o un
coeficiente de CC. Como alternativa, una muestra de predicción puede determinarse basándose en un valor promedio de un bloque actual, y el valor promedio del bloque actual puede calcularse basándose en el coeficiente de transformada, el coeficiente de transformada cuantificado, y similares en lugar del coeficiente de CC.
Además, en el ejemplo anterior, se ha descrito acerca de determinar el valor residual de parámetro de cuantificación en el proceso de codificación. Sin embargo, también es posible determinar el valor residual de parámetro de cuantificación en el proceso de decodificación de la misma manera que en el proceso de codificación. También es posible que el codificador señalice información que especifica una tabla de búsqueda usada para derivar el valor residual de parámetro de cuantificación en el decodificador. En este caso, el decodificador puede derivar un parámetro de cuantificación usando una tabla de búsqueda especificada por la información.
Como otro ejemplo, el valor residual de parámetro de cuantificación determinado en el proceso de codificación puede señalizarse al decodificador a través de un flujo de bits.
Aunque se han descrito las realizaciones anteriormente descritas basándose en una serie de etapas o diagramas de flujo, estos no limitan el orden de las series temporales de la invención, y pueden realizarse de manera simultánea o en órdenes diferentes según sea necesario. Además, cada uno de los componentes (por ejemplo, unidades, módulos, etc.) que constituyen el diagrama de bloques en las realizaciones anteriormente descritas pueden implementarse por un dispositivo de hardware o software, y una pluralidad de componentes. O una pluralidad de componentes puede combinarse e implementarse por un único dispositivo de hardware o software. Las realizaciones anteriormente descritas pueden implementarse en forma de instrucciones de programa que pueden ejecutarse a través de diversos componentes informáticos y grabarse en un medio de grabación legible por ordenador. El medio de grabación legible por ordenador puede incluir uno de, o una combinación de comandos de programa, ficheros de datos, estructuras de datos, y similares. Ejemplos de medio legible por ordenador incluyen medios magnéticos tales como discos duros, discos flexibles y cinta magnética, medio de grabación óptico tal como CD-ROM y DVD, medios magnetoópticos tales como discos ópticos, medios, y dispositivos de hardware específicamente configurados para almacenar y ejecutar instrucciones de programa tales como ROM, RAM, memoria flash, y similares. El dispositivo de hardware puede estar configurado para operar como uno o más módulos de software para realizar el proceso de acuerdo con la presente invención, y viceversa.
Aplicabilidad industrial
La presente invención puede aplicarse a dispositivos electrónicos que pueden
codificar/decodificar un vídeo.