DESCRIPCIÓN
MÉTODO Y APARATO PARA PROCESAR SEÑAL DE VIDEO
Campo técnico
La presente invención se refiere a un método y aparato para procesar señal de video.
Antecedentes de la técnica
Últimamente, las demandas de imágenes de gran calidad y gran resolución tal como imágenes en alta definición (HD) y ultra alta definición (UHD) se han incrementado en diversos campos de aplicación. Sin embargo, los datos de imagen de mayor resolución y calidad han incrementado las cantidades de datos en comparación con los datos de imagen convencionales. Por tanto, al transmitir datos de imagen usando un medio tal como unas redes de banda ancha inalámbricas y alámbricas convencionales, o cuando se almacenan datos de imagen usando un medio de almacenamiento convencional, los costes de transmisión y almacenamiento se incrementan. Para solucionar estos problemas que ocurren con una resolución y calidad que se incrementa en los datos de imagen, unas técnicas de codificación/decodificación de imagen de alta eficacia pueden utilizarse.
La tecnología de compresión de imagen incluye diversas técnicas, incluyendo: una técnica de inter-predicción de predecir un valor de pixel incluido en una imagen actual desde una imagen previa o posterior de la imagen actual; una técnica de intra-predicción de predecir un valor de pixel incluido en una imagen actual usando información de pixel en la imagen actual; una técnica de codificación por entropía de asignar un código corto a un valor con una alta frecuencia de aparición y asignar un código largo a un valor con una baja frecuencia de aparición; etc. Los datos de imagen pueden comprimirse eficazmente usando tal tecnología de compresión de imagen, y pueden transmitirse o almacenarse.
Mientras tanto, con demandas para imagen de alta resolución, las demandas para contenido de imagen estereográfica, que es un servicio de imagen nuevo, también se han incrementado. Una técnica de compresión de señales de video para proporcionar eficazmente contenido de imagen estereográfica con alta resolución y resolución ultra alta se está analizando.
Divulgación
Problema técnico
Un objeto de la presente invención pretende proporcionar un método y un aparato para realizar eficazmente inter-predicción para un bloque objetivo de codificación/decodificación en la codificación/decodificación de una señal de video.
Un objeto de la presente invención pretende proporcionar un método y un aparato para compensar una muestra de predicción en consideración de un cambio de luminancia entre imágenes.
Un objeto de la presente invención pretende proporcionar un método y aparato para codificar/decodificar eficazmente un parámetro de compensación de iluminación en la codificación/decodificación de señal de video.
Los objetos técnicos a lograr por la presente invención no se limitan a los problemas técnicos antes mencionados. Y otros problemas técnicos que no se mencionan se entenderán aparentemente para los expertos en la materia desde la siguiente descripción.
Solución técnica
Un método y aparato para decodificar una señal de video de acuerdo con la presente invención puede decodificar información incluyendo si la compensación de iluminación se realiza para un bloque actual, determinar un parámetro de compensación de iluminación del bloque actual cuando la información indica que la compensación de iluminación se realiza para el bloque actual, obtener un bloque de predicción realizando inter-predicción para el bloque actual, y realizar la compensación de iluminación en el bloque actual usando el parámetro de compensación de iluminación.
Un método y un aparato para codificar una señal de video con la presente invención puede obtener un bloque de predicción realizando inter-predicción para un bloque actual, determinando un parámetro de compensación de iluminación para el bloque actual, realizando compensación de iluminación para el bloque de predicción usando el parámetro de compensación de iluminación, y codificando información indicando si la compensación de iluminación se realiza para el bloque actual.
En el método y aparato para codificar/decodificar una señal de video de acuerdo con la presente invención, el parámetro de compensación de iluminación se deriva basándose en una primera área de plantilla adyacente al bloque actual y
una segunda área de plantilla adyacente al bloque de referencia incluido en una imagen de referencia del bloque actual.
En el método y aparato para codificar/decodificar una señal de video de acuerdo con la presente invención, si una muestra no disponible se incluye en la segunda área de plantilla, la muestra no disponible puede sustituirse por una muestra disponible.
En el método y aparato para codificar/decodificar una señal de video de acuerdo con la presente invención, la muestra disponible puede incluirse en la segunda área de plantilla o el bloque de referencia.
En el método y aparato para codificar/decodificar una señal de video de acuerdo con la presente invención, si la muestra no disponible se incluye en la segunda área de plantilla, la muestra no disponible puede sustituirse por un valor interpolado de una pluralidad de muestras disponibles.
En el método y aparato para codificar/decodificar una señal de video de acuerdo con la presente invención, obtener el bloque de predicción puede comprender obtener un primer bloque de predicción basándose en una primera imagen de referencia del bloque actual, y obtener un segundo bloque de predicción basándose en una segunda imagen de referencia del bloque actual.
En el método y aparato para codificar/decodificar una señal de video de acuerdo con la presente invención, la compensación de iluminación puede realizarse en al menos uno del primer bloque de predicción o el segundo bloque de predicción.
En el método y aparato para codificar/decodificar una señal de video de acuerdo con la presente invención, el bloque de predicción puede obtenerse por una suma ponderada del primer bloque de predicción y el segundo bloque de predicción. En este momento, unas ponderaciones aplicadas al primer bloque de predicción y el segundo bloque de predicción pueden determinarse por un parámetro de predicción ponderado del bloque actual.
En el método y aparato para codificar/decodificar una señal de video de acuerdo con la presente invención, el parámetro de predicción ponderado puede determinarse basándose en el parámetro de compensación de iluminación.
En el método y aparato para codificar/decodificar una señal de video de acuerdo con la presente invención, el bloque de predicción puede obtenerse por una suma ponderada del primer bloque de predicción y el segundo bloque de predicción. En este momento, una ponderación aplicada a uno del primer bloque de
referencia y el segundo bloque de referencia puede determinarse basándose en el parámetro de compensación de iluminación y una ponderación aplicada al otro del primer bloque de referencia y el segundo bloque de referencia puede determinarse basándose en un parámetro de predicción ponderado del bloque actual.
Las características brevemente resumidas antes para la presente invención son solo 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, una inter-predicción eficaz puede realizarse para un bloque objetivo de codificación/decodificación.
De acuerdo con la presente invención, una muestra de predicción puede compensarse en consideración de un cambio de luminancia entre imágenes.
De acuerdo con la presente invención, un parámetro de compensación de iluminación puede codificarse/decodificarse eficazmente.
Los efectos que pueden obtenerse por la presente invención no se limitan a los efectos antes mencionados, y otros efectos no mencionados pueden entenderse claramente por los expertos en la materia desde la descripción que sigue.
Descripción de los dibujos
La FIG. 1 es un diagrama de bloques que ilustra un dispositivo para decodificar una señal de video de acuerdo con una realización de la presente invención.
La FIG. 2 es un diagrama de bloques que ilustra un dispositivo para decodificar una señal de video de acuerdo con una realización de la presente invención.
La FIG. 3 es un diagrama que ilustra un ejemplo de una división jerárquica 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 FIG. 4 es un diagrama que ilustra un tipo de división en la que una división basada en árbol binario se permite de acuerdo con una realización de la presente invención.
La FIG. 5 es un diagrama que ilustra un ejemplo en el que solo una división basada en árbol binario de un tipo predeterminado se permite de acuerdo con una realización de la presente invención.
La FIG. 6 es un diagrama para explicar un ejemplo en el que la información
relacionada con el número permisible de división de árbol binario se codifica/decodifica, de acuerdo con una realización en la que la presente invención se aplica.
La FIG. 7 es un diagrama que ilustra un modo de división aplicable a un bloque de codificación de acuerdo con una realización de la presente invención.
La FIG. 8 es un diagrama de flujo que ilustra procesos para obtener una muestra residual de acuerdo con una realización en al que la presente invención se aplica.
La FIG. 9 es un diagrama de flujo que ilustra un método de inter-predicción de acuerdo con una realización en la que la presente invención se aplica.
La FIG. 10 es un diagrama que ilustra procesos de derivar información de movimiento de un bloque actual cuando un modo de fusión se aplica al bloque actual.
La FIG. 11 es un diagrama que ilustra procesos de derivar información de movimiento de un bloque actual cuando un modo AMVP se aplica al bloque actual.
La FIG. 12 es un diagrama de flujo de un método de predicción ponderado bidireccional, de acuerdo con una realización de la presente invención.
La FIG. 13 es un diagrama para explicar un principio de predicción ponderado bidireccional.
La FIG. 14 es un diagrama que ilustra una orden de escaneo entre bloques cercanos.
La FIG. 15 es un diagrama de flujo de un método de predicción de compensación de iluminación de acuerdo con la presente invención.
La FIG. 16 es un diagrama de flujo de un método de predicción ponderado bidireccional basándose en compensación de iluminación.
La FIG. 17 es un diagrama que ilustra un ejemplo de realización de predicción ponderada bidireccional usando un bloque de predicción en el que la compensación de iluminación se aplica.
Modo para la invención
Una variedad de modificaciones puede realizarse en la presente invención y existen diversas realizaciones de la presente invención, cuyos ejemplos se proporcionan ahora en referencia a los dibujos y se describen en detalle. Sin embargo, la presente invención no se limita a esto, y las realizaciones ejemplares pueden interpretarse como incluyendo todas las modificaciones, equivalentes o
sustitutos en un concepto técnico y alcance técnico de la presente invención. Los números de referencia similares se refieren al elemento similar que se describe en los dibujos.
Los términos usados en la memoria descriptiva, "primero”, "segundo”, etc. pueden usarse para describir diversos componentes, pero los componentes no deben interpretarse como limitados a los términos. Los términos solo se usan para diferenciar un componente de los otros. Por ejemplo, el "primer” componente puede nombrarse como el "segundo” componente sin apartarse del alcance de la presente invención, y el "segundo” componente puede también de manera similar nombrarse como el "primer” componente. El término "y/o” incluye una combinación de una pluralidad de artículos o uno cualquiera de una pluralidad de términos.
Se entenderá que cuando un elemento se denomina simplemente como "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 puede conectarse o acoplarse a otro elemento, con el otro elemento que interviene entre medias. En comparación, debería entenderse que cuando un elemento se menciona como "directamente acoplado” o "directamente conectado” a otro elemento, no existen elementos intermedios presentes.
Los términos usados en la presente memoria descriptiva se usan únicamente para describir realizaciones particulares, y no pretenden limitar la presente invención. Una expresión usada en singular abarca la expresión del plural, a menos que tenga un significado claramente diferente en el contexto. En la presente memoria descriptiva debe entenderse que los términos tales como "que incluye”, "que tiene”, etc. pretenden indicar la existencia de las características, números, etapas, acciones, elementos, partes o combinaciones de los mismos divulgados en la memoria descriptiva, y no pretenden excluir la posibilidad de que una o más de otras características, números, etapas, acciones, elementos, partes o combinaciones de los mismos puedan existir o puedan añadirse.
A continuación, las realizaciones preferentes de la presente invención se describirán en detalle en referencia a los dibujos adjuntos. A continuación, los mismos elementos constituyentes en los dibujos se indican por los mismos números de referencia, y una descripción repetida de los mismos elementos se omitirá.
La FIG. 1 es un diagrama de bloques que ilustra un dispositivo para codificar una señal de video de acuerdo con una realización de la presente invención.
En referencia a la FIG. 1, el dispositivo 100 para codificar una señal de video puede incluir: un módulo de división de imagen 110, módulos de predicción 120 y 125, un módulo de transformación 130, un módulo de cuantificación 135, un módulo de reorganización 160, un módulo de codificación por entropía 165, un módulo de cuantificación inversa 140, un módulo de transformación inversa 145, un módulo de filtro 150 y una memoria 155.
Las partes constitutivas mostradas en la FIG. 1 se muestran independientemente para representar funciones características diferentes entre sí en el dispositivo para codificar una señal de video. Así, esto no significa que cada parte constitutiva se constituya de una unidad constitutiva de hardware o software separado. En otras palabras, cada parte constitutiva incluye cada una de las partes constitutivas y enumeradas por practicidad. Así, al menos dos partes constitutivas de cada parte constitutiva pueden combinarse para formar una parte constitutiva o una parte constitutiva puede dividirse en una pluralidad de partes constitutivas para realizar cada función. La realización donde cada parte constitutiva se combina y la realización donde una parte constitutiva se divide también se incluyen en el alcance de la presente invención, si no se aparta de la esencia de la presente invención.
Además, algunos de los constituyentes pueden no ser constituyentes indispensables que realizan una función esencial de la presente invención, sino que son constituyentes selectivos que mejoran solo el rendimiento de la misma. La presente invención puede incrementarse incluyendo las partes constitutivas indispensables para implementar la esencia de la presente invención excepto los constituyentes usados al mejorar el rendimiento. La estructura que incluye solo los constituyentes indispensables exceptos los constituyentes selectivos usados al mejorar solo el rendimiento también se incluyen en el alcance de la presente invención.
El módulo de división de imagen 110 puede dividir una imagen de entrada en una o más unidades de procesamiento. Aquí, la unidad de procesamiento puede ser una unidad de predicción (PU), unidad de transformación (TU) o unidad de codificación (CU). El módulo de división de imagen 110 puede dividir una imagen en combinaciones de múltiples unidades de codificación, unidades de predicción y unidades de transformación, y puede codificar una imagen seleccionando una combinación de unidades de codificación, unidades de predicción y unidades de transformación con un criterio predeterminado (por ejemplo, función de coste).
Por ejemplo, una imagen puede dividirse en múltiples unidades de
codificación. Una estructura de árbol recursiva, tal como una estructura de árbol cuádruple, puede usarse para dividir una imagen en unidades de codificación. Una unidad de codificación que se divide en otras unidades de codificación con una imagen o una unidad de codificación mayor como una raíz puede dividirse con nodos hijos correspondientes al número de unidades de codificación divididas. Una unidad de codificación que ya no se divide por una limitación predeterminada sirve como un nodo hoja. Es decir, cuando se asume que solo una división cuadrada es posible para una unidad de codificación, la unidad de codificación puede dividirse en otras cuatro unidades de codificación como mucho.
A continuación, 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 divisiones divididas en un cuadrado o una 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 divisiones divididas para tener una forma/tamaño diferente en una única unidad de codificación.
Cuando una unidad de predicción sometida a intra-predicción se genera 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, la intra-predicción puede realizarse sin dividir la unidad de codificación en múltiples unidades de predicción NxN.
Los módulos de predicción 120 y 125 pueden incluir un módulo de inter predicción 120 que realiza inter-predicción y un modelo de intra-predicción 125 que realiza intra-predicción. Si se realiza inter-predicción o intra-predicción para la unidad de predicción puede determinarse, y una información detallada (por ejemplo, modo de intra-predicción, vector de movimiento, imagen de referencia, etc.) de acuerdo con cada método de predicción puede determinarse. Aquí, la unidad de procesamiento sometida a predicción puede ser diferente de la unidad de procesamiento para la que el método de predicción y contenido detallado se determina. Por ejemplo, el método de predicción, el modo de predicción, etc. puede determinarse por la unidad de predicción, y la predicción puede realizarse por la unidad de transformación. Un valor residual (bloque residual) entre el bloque de predicción generado y un bloque original puede introducirse en el módulo de transformación 130. Además, la información de modo de predicción, información de vector de movimiento etc. usada para la predicción puede codificarse con el valor residual mediante el módulo de codificación por entropía 165 y puede transmitirse a
un dispositivo para decodificar una señal de video. Cuando se usa un modo de codificación particular, es posible transmitir a un dispositivo para decodificar señales de video codificando el bloque original como está sin generar el bloque de predicción a través de los módulos de predicción 120 y 125.
El módulo de inter-predicción 120 puede predecir la unidad de predicción basándose en información de al menos una de una imagen anterior o una imagen posterior de la imagen actual, o puede predecir la unidad de predicción basándose en información de algunas regiones codificadas en la imagen actual, en algunos casos. El módulo de inter-predicción 120 puede incluir un módulo de interpolación de imagen de referencia, un módulo de predicción de movimiento y un módulo de compensación de movimiento.
El módulo de interpolación de imagen de referencia puede recibir información de imagen de referencia desde la memoria 155 y puede generar información de pixel de un pixel de número entero o menos que el pixel de número entero desde la imagen de referencia. En el caso de píxeles luma, un filtro de interpolación basado en DCT de 8 derivaciones (8-tap) que tiene diferentes coeficientes de filtro puede usarse para generar información de pixel de un pixel de número de entero o menos que un pixel de número entero en unidades de 1/4 de pixel. En el caso de señales croma, un filtro de interpolación basado en DCT de 4 derivaciones (4-tap) que tiene un coeficiente de filtro diferente puede usarse para generar información de pixel de un pixel de número de entero o menos que un pixel de número entero en unidades de 1/8 de pixel.
El módulo de predicción de movimiento puede realizar predicción de movimiento basándose en la imagen de referencia interpolada o en el módulo de interpolación de imagen de referencia. Como métodos para calcular un vector de movimiento, diversos métodos, tal como un algoritmo de coincidencia de bloque basado en búsquedas completo (FBMA), una búsqueda de tres etapas (TSS), un algoritmo de búsqueda de tres etapas nuevo (NTS), etc. pueden usarse. El vector de movimiento puede tener un valor de detector de movimiento en unidades de 1/2 pixel o 1/4 de pixel basándose en un pixel 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, diverso métodos tal como un método de omisión, un método de fusión, un método AMVP (Predicción de Vector de Movimiento Avanzado), un método de copia de intrabloque, etc., pueden usarse.
El módulo de intra-predicción 125 puede generar una unidad de predicción basándose en una información de pixel de referencia cerca de un bloque actual que es información de pixel en la imagen actual. Cuando el bloque cercano de la unidad de predicción actual es un bloque sometido a inter-predicción y así un pixel de referencia es un pixel sometido a inter-predicción, el pixel de referencia incluido en el bloque sometido a inter-predicción puede sustituirse por información de pixel de referencia de un bloque cercano sometido a intra-predicción. Es decir, cuando un pixel de referencia no está disponible, al menos un pixel de referencia de los píxeles de referencia disponibles puede usarse en lugar de la información de pixel 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 pixel de referencia dependiendo 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 luma puede ser diferente de un modo para predecir información croma, y para predecir la información croma, la información de un modo de intra-predicción usada para predecir información luma o predecir información de señal luma puede utilizarse.
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 transformación, la intra-predicción puede realizarse en la unidad de predicción basándose en píxeles colocados a la izquierda, la izquierda superior, y la parte superior 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 transformación, la intra-predicción puede realizarse usando un pixel de referencia basándose en la unidad de transformación. Además, la intra-predicción usando división NxN puede usarse para solo la unidad de codificación más pequeña.
En el método de intra-predicción, un bloque de predicción puede generarse tras aplicar un filtro AIS (Intra Alisado Adaptativo) a un pixel de referencia dependiendo de los modos de predicción. El tipo de filtro AIS aplicado al pixel de referencia puede variar. Para realizar el método de intra-predicción, un modo de intra-predicción de la unidad de predicción actual puede predecirse desde el modo de intra-predicción de la unidad de predicción cerca de la unidad de predicción actual. Al predecir el modo de predicción de la unidad de predicción actual usando información de modo predicha desde la unidad de predicción cercana, cuando el
modo de intra-predicción de la unidad de predicción actual es igual que el modo de intra-predicción de la unidad de predicción cercana, la información que indica que los modos de predicción de la unidad de predicción actual y la unidad de predicción cercana 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 cercana, la codificación por entropía puede realizar para codificar información de modo de predicción del bloque actual.
Además, un bloque residual que incluye información sobre un valor residual que es diferente entre la unidad de predicción sometida a predicción y el bloque original de la unidad de predicción puede generarse basándose en unidades de predicción generadas por los modos de predicción 120 y 125. El bloque residual generado puede introducirse en el módulo de transformación 130.
El módulo de transformación 130 puede transformar el bloque residual que incluye la información sobre el valor residual entre el bloque original y la unidad de predicción generada por los módulos de predicción 120 y 125 usando un método de transformación, tal como una transformada de coseno discreto (DCT), transformada de seno discreto (DST) y KLT. Si se aplica DCT, DST o KLT para transformar el bloque residual puede determinarse basándose en información de modo de intrapredicción de la unidad de predicción usada para generar el bloque residual.
El módulo de cuantificación 135 puede cuantificar valores transformados a un dominio de frecuencia por el módulo de transformación 130. Los coeficientes de cuantificación pueden variar dependiendo del bloque o importancia de la imagen. Los valores calculados por el módulo de cuantificación 135 pueden proporcionarse al módulo de cuantificación inversa 140 y el módulo de reorganización 160.
El módulo de reorganización 160 puede reorganizar coeficientes de valores residuales cuantificados.
El módulo de reorganización 160 puede cambiar un coeficiente en la forma de un bloque bidimensional a un coeficiente en la forma de un vector unidimensional a través de un método de escaneo de coeficiente. Por ejemplo, el módulo de reorganización 160 puede escanear desde un coeficiente DC a un coeficiente en un dominio de alta frecuencia usando un método de escaneo en zigzag para cambiar los coeficientes para estar en la forma de vectores unidimensionales. Dependiendo del tamaño de la unidad de transformación y el modo de intra-predicción, el escaneo en dirección vertical donde los coeficientes en
la forma de bloques bidimensionales se escanean en la dirección de columna o el escaneo en dirección horizontal donde los coeficientes en la forma de bloques bidimensionales se escanean en la dirección de fila pueden usarse en lugar del escaneo en zigzag. Es decir, qué método de escaneo entre el escaneo en zigzag, el escaneo en dirección vertical y el escaneo en dirección horizontal se usa puede determinarse dependiendo del tamaño de la unidad de transformación y el modo de intra-predicción.
El módulo de codificación por entropía 165 puede realizar codificación por entropía basándose en los valores calculados por el módulo de reorganización 160. La codificación por entropía puede usar diversos métodos de codificación como por ejemplo codificación Golomb, exponencial, codificación de longitud variable adaptativa al contexto (CAVLC) y codificación aritmética binaria adaptativa al contexto (CABAC).
El módulo de codificación por entropía 165 puede codificar una variedad 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 del modo de predicción, información de unidad de división, información de unidad de predicción, información de unidad de transformación, información de vector de movimiento, información de trama de referencia, información de interpolación de bloque, información de filtrado etc., desde el módulo de reorganización 160 y los módulos de predicción 120 y 125.
El módulo de codificación por entropía 165 puede codificar por entropía los coeficientes de la unidad de codificación introducida desde el módulo de la reorganización 160.
El módulo de cuantificación inversa 140 puede cuantificar inversamente los valores cuantificados por el módulo de cuantificación 135 y el módulo de transformación inversa 145 puede transformar de manera inversa los valores transformados por el módulo de transformación 130. El valor residual generado por el módulo de cuantificación inversa 140 y el módulo de transformación inversa 145 puede combinarse con la unidad de predicción predicha 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 de predicción 120 y 125 de manera que puede generarse un bloque reconstruido.
El módulo de filtro 150 puede incluir al menos un filtro de desbloqueo, una unidad de corrección de desviación y un filtro de bucle adaptativo (ALF).
El filtro de desbloqueo puede retirar la distorsión de bloque que ocurre
debido a límites entre los bloques de la imagen reconstruida. Para determinar si se realiza el desbloqueo, los píxeles incluidos en varias filas o columnas en el bloque pueden basarse en la determinación de si aplicar el filtro de desbloqueo al bloque actual. Cuando el filtro de desbloqueo se aplica al bloque, un filtro fuerte o filtro débil puede aplicarse dependiendo de la fuerza de filtrado de desbloqueo requerida. Además, al aplicar el filtro de desbloqueo, un filtrado de dirección horizontal y filtrado de dirección vertical pueden procesarse en paralelo.
El módulo de corrección de desviación puede corregir la desviación con la imagen original en unidades de un pixel en la imagen sometida a desbloqueo. Para realizar la corrección de desviación en una imagen particular, es posible usar un método de aplicar desviación en consideración de la información de borde de cada pixel o un método de división de píxeles de una imagen en el número predeterminado de regiones, determinando una región a someter para realizar la desviación, y aplicar la desviación a la región determinada.
El filtrado de bucle adaptativo (ALF) puede realizarse basándose en el valor obtenido comparando la imagen reconstruida filtrada y la imagen original. Los pixeles incluidos en la imagen pueden dividirse en grupos predeterminados, un filtro a aplicar a cada uno de los grupos puede determinarse, y el filtrado puede realizarse individualmente para cada grupo. La información sobre si aplicar ALF y una señal luma puede transmitirse por unidades de codificación (CU). La forma y el coeficiente de filtro de un filtro para ALF puede variar dependiendo de cada bloque. Además, 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 imagen calculada a través del módulo de filtro 150. El bloque o imagen reconstruido y almacenado pueden proporcionarse a los módulos de predicción 120 y 125 al realizar inter-predicción.
La FIG. 2 es un diagrama de bloques que ilustra un dispositivo para decodificar una señal de video de acuerdo con una realización de la presente invención.
En referencia a la FIG. 2, el dispositivo 200 para decodificar una señal de video puede incluir: un módulo de decodificación por entropía 210, un módulo de reorganización 215, un módulo de cuantificación inversa 220, un módulo de transformación inversa 225, módulos de predicción de 230 y 235, un módulo de filtro 240 y una memoria 245.
Cuando una tasa bits de señal de video se introduce desde el dispositivo para decodificar una señal de video, la tasa de bits de entrada puede decodificarse de acuerdo con un proceso inverso del dispositivo para codificar una señal de video.
El módulo de decodificación por entropía 210 puede realizar decodificación por entropía de acuerdo con un proceso inverso de codificación por entropía mediante el módulo de codificación por entropía del dispositivo para codificar una señal de video. Por ejemplo, en correspondencia con los métodos realizados por el dispositivo para codificar una señal de video, diversos métodos tal como codificación Golomb exponencial, codificación de longitud variable adaptativa al contexto (CAVLC) y codificación aritmética binaria adaptativa al contexto (CABAC) pueden aplicarse.
El módulo de codificación por entropía 210 puede decodificar información sobre intra-predicción e inter-predicción realizada por el dispositivo para codificar una señal de video.
El módulo de reorganización 215 puede realizar reorganización en la entropía de tasa de bits decodificada por el módulo de decodificación por entropía 210 basándose en el método de reorganización usado en el dispositivo para codificar una señal de video. El módulo de reorganización puede reconstruir y reorganizar los coeficientes en la forma de vectores unidimensionales al coeficiente en la forma de bloques bidimensionales. El módulo de reorganización 215 puede recibir información relacionada con el escaneo de coeficientes realizado en el dispositivo para codificar una señal de video y puede realizar la reorganización mediante un método de escaneo inverso de los coeficientes basándose en la orden de escaneo realizada en el dispositivo para codificar una señal de video.
El módulo de cuantificación inversa 220 puede realizar cuantificación inversa basándose en un parámetro de cuantificación recibido del dispositivo para codificar una señal de video y los coeficientes reorganizados del bloque.
El módulo de transformación inversa 225 puede realizar transformación inversa, es decir DCT inversa, DST inversa y KLT inversa, que es el proceso inverso de transformación, es decir DCT, DST y KLT realizado por el módulo de transformación en el resultado de cuantificación por el dispositivo para codificar una señal de video. La transformación inversa puede realizarse basándose en una unidad de transferencia determinada por el dispositivo para codificar una señal de video. El módulo de transformación inversa 225 del dispositivo para decodificar una
señal de video puede realizar selectivamente esquemas de transformación (por ejemplo, DCT, DST y KLT) dependiendo de múltiples fragmentos de información, tal como el método de predicción, el tamaño del bloque actual, la dirección de predicción, etc.
Los módulos de predicción 230 y 235 pueden generar un bloque de predicción basándose en información sobre la generación del bloque de predicción recibida desde el módulo de codificación por entropía 210 y la información de imagen o bloque decodificada anteriormente recibida desde la memoria 245.
Como se ha descrito antes, como la operación del dispositivo para decodificar una señal de video, 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 transformación, la intra-predicción puede realizarse en la unidad de predicción basándose en los pixeles colocados a la izquierda, la izquierda superior y la parte superior 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 transformación, la intrapredicción puede realizarse usando un pixel de referencia basándose en la unidad de transformación. Además, la intra-predicción usando la división NxN puede usarse para solo la unidad de codificación más pequeña.
Los módulos de predicción 230 y 235 pueden incluir un módulo de determinación de unidad de predicción, módulo de inter-predicción y módulo de intra-predicción. El módulo de determinación de unidad de predicción puede recibir una variedad 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 la predicción de movimiento de un método de inter-predicción etc., desde el módulo de decodificación por entropía 210, puede dividir una unidad de codificación actual en unidades de predicción, y puede determinar si la intra-predicción o inter predicción se realiza en la unidad de predicción. Al usar información requerida en la inter-predicción de la unidad de predicción actual recibida desde el dispositivo para codificar una señal de video, el módulo de inter-predicción 230 puede realizar inter predicción en la unidad de predicción actual basándose en información de al menos uno de una imagen anterior o una imagen posterior de la imagen actual que incluye la unidad de predicción actual. Como alternativa, la inter-predicción puede realizarse basándose en información de algunas regiones pre-reconstruidas en la imagen actual incluyendo la unidad de predicción actual.
Para realizar inter-predicción, puede determinarse para la unidad de
codificación cuál se usa de entre un modo de omisión, un modo de fusión, un modo AMVP y un modo de copia de interbloque como el método de predicción de movimiento de la unidad de predicción incluido en la unidad de codificación.
El módulo de intra-predicción 235 puede generar un bloque de predicción basándose en información de pixel en la imagen actual. Cuando la unidad de predicción es una unidad de predicción sometida a intra-predicción, la inter predicción puede realizarse basándose en información de modo de intra-predicción de la unidad de predicción recibida desde el dispositivo para codificar una señal de video. El módulo de intra-predicción 235 puede incluir un filtro de intra alisado adaptativo (AIS), módulo de interpolación de pixeles de referencia y un filtro DC. El filtro AIS realiza filtrado del pixel de referencia del bloque actual, y puede determinarse si se aplica el filtro dependiendo del modo de predicción de la unidad de predicción actual. El filtrado AIS puede realizarse en el pixel de referencia del bloque actual usando el modo de predicción de la unidad de predicción y la información del filtro AIS recibida del dispositivo para codificar una señal de video. Cuando el modo de predicción del bloque actual es un módulo donde el filtrado AIS no se realiza, el filtro 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 la intra-predicción se realiza basándose en el valor de pixel obtenido interpolando el pixel de referencia, el módulo de interpolación de pixel de referencia puede interpolar el pixel de referencia para generar el pixel de referencia de un pixel de número entero o menos que un pixel de número entero. Cuando el modo de predicción de la unidad de predicción actual es un modo de predicción en el que el bloque de predicción se genera sin interpolación del pixel de referencia, el pixel de referencia puede no interpolarse. El filtro DC puede generar un bloque de predicción a través del filtrado cuando el modo de predicción del bloque actual es un modo DC.
El bloque o imagen reconstruido puede proporcionarse en el módulo de filtro 240. El módulo de filtro 240 puede incluir el filtro de desbloqueo, el módulo de corrección de desviación y el ALF.
La información sobre si el filtro de desbloqueo se aplica o no al bloque o imagen correspondiente y la información sobre cuál de un filtro fuerte y un filtro débil se aplica cuando el filtro de desbloqueo se aplica, puede recibirse desde el dispositivo para codificar una señal de video. El filtro de desbloqueo del dispositivo para decodificar una señal de video puede recibir información sobre el filtro de
desbloqueo de este dispositivo para codificar una señal de video, y puede realizar filtrado de desbloqueo en el bloque correspondiente.
El módulo de corrección de desviación puede realizar corrección de desviación en la imagen reconstruida basándose en el tipo de corrección de desviación y en la información de valor de desviación aplicada a una imagen al realizar 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 una señal de video. La información ALF puede proporcionarse como incluida en un conjunto de parámetros particular.
La memoria 245 puede almacenar la imagen o bloque reconstruido para uso como una imagen o bloque de referencia, y puede proporcionar la imagen reconstruida a un módulo de salida.
Como se ha descrito antes, en la realización de la presente invención, para conveniencia de la explicación, la unidad de codificación se usa como un término que representa una unidad para codificación, pero la unidad de codificación puede servir como una unidad que realiza decodificación así como codificación.
Además, un bloque actual puede representar un bloque objetivo para codificar/decodificar. Y el bloque actual puede presentar un bloque de árbol de codificación (o una unidad de árbol de codificación), un bloque de codificación (o unidad de codificación), un bloque de transformación (o unidad de transformación), un bloque de predicción (o unidad de predicción) o similar dependiendo de la etapa de codificación/decodificación.
Una imagen puede codificarse/decodificarse al dividirse en bloques base que tienen una forma cuadrada o forma no cuadrada. En este momento, el bloque base puede mencionarse como una unidad de árbol de codificación. La unidad de árbol de codificación puede definirse como una unidad de codificación del tamaño más grande permisible dentro de una secuencia o un corte. La información referente a si la unidad de árbol de codificación tiene una forma cuadrada o no cuadrada o la información referente al tamaño de la unidad de árbol de codificación puede señalarse a través de un conjunto de parámetros de secuencia, un conjunto de parámetros de imagen o un cabezal de corte. La unidad de árbol de codificación puede dividirse en divisiones de tamaño más pequeño. En este momento, si se asume que una profundidad de una división generada al dividir la unidad de árbol de codificación es 1, una profundidad de una división generada al dividir la división
que tiene una profundidad 1 puede definirse como 2. Es decir, una división generada dividiendo una división con una profundidad k en la unidad de árbol de codificación puede definirse como con una profundidad k+1.
Una división de tamaño arbitrario generada al dividir una unidad de árbol de codificación puede definirse como unidad de codificación. La unidad de codificación puede dividirse recursivamente o dividirse en unidades base para realizar predicción, cuantificación, transformación o filtrado en bucle y similar. Por ejemplo, una división de tamaño arbitrario generada al dividir la unidad de codificación puede definirse como unidad de codificación, o puede definirse como unidad de transformación o unidad de predicción, que es una unidad base para realizar predicción, cuantificación, transformación o filtrado en bucle y similar.
La división de una unidad de árbol de codificación o una unidad de codificación puede realizarse basándose en al menos uno de una línea vertical y línea horizontal. Además, el número de líneas verticales o líneas horizontales de división de la unidad de árbol de codificación o la unidad de codificación puede ser al menos una o más. Por ejemplo, la unidad de árbol de codificación o la unidad de codificación puede dividirse en dos divisiones usando una línea vertical o línea horizontal, o la unidad de árbol de codificación o la unidad de codificación puede dividirse en tres divisiones usando dos líneas verticales o dos líneas horizontales. Como alternativa, la unidad de árbol de codificación o la unidad de codificación puede dividirse en cuatro divisiones con una longitud y una anchura de 1/2 usando una línea vertical y una línea horizontal.
Cuando una unidad de árbol de codificación o una unidad de codificación se divide en una pluralidad de divisiones usando al menos una línea vertical o al menos una línea horizontal, las divisiones pueden tener un tamaño uniforme o diferente tamaño. Como alternativa, una división cualquiera puede tener un tamaño diferente de las divisiones restantes.
En las realizaciones descritas a continuación se asume que una unidad de árbol de codificación o unidad de codificación se divide en una estructura de árbol cuádruple o una estructura de árbol binario. Sin embargo, también es posible dividir una unidad de árbol de codificación o unidad de codificación usando un número mayor de líneas verticales o número mayor de líneas horizontales.
La FIG. 3 es un diagrama que ilustra un ejemplo de división jerárquica de un bloque de codificación basándose en una estructura de árbol de acuerdo con una realización de la presente invención.
Una señal de video de entrada se decodifica en unidades de bloque predeterminadas. Tal unidad por defecto para decodificar la señal de video de entrada es un bloque de codificación. El bloque de codificación puede ser una unidad que realiza intra/inter-predicción, transformación y cuantificación. Además, un modo de predicción (por ejemplo, un modo de intra-predicción o modo de inter predicción) se determina en unidades de un bloque de codificación, y los bloques de predicción incluidos en el bloque de codificación pueden compartir el modo de predicción determinado. El bloque de codificación puede ser un bloque cuadrado o no cuadrado con un tamaño arbitrario en el intervalo de 8x8 a 64x64, o puede ser un bloque cuadrado o no cuadrado con un tamaño de 128x128, 256x256 o más.
Específicamente, el bloque de codificación puede dividirse jerárquicamente basándose en al menos uno de un árbol cuádruple y un árbol binario. Aquí, la división basada en árbol cuádruple puede significar que un bloque de codificación 2Nx2N se divide en cuatro bloques de codificación NxN, y la división basada en árbol binario puede significar que un bloque de codificación se divide en dos bloques de codificación. Incluso si la división basada en árbol binario se realiza, un bloque de codificación en forma cuadrada puede existir en la profundidad inferior.
La división basada en árbol binario puede realizarse de manera simétrica o asimétrica. La división del bloque de codificación basada en el árbol binario puede ser un bloque cuadrado o bloque no cuadrado, como de forma rectangular. Por ejemplo, un tipo de división en el que la división basada en árbol binario se permite puede contener al menos uno de un tipo simétrico de 2NxN (unidad de codificación no cuadrada de dirección horizontal) o Nx2N (unidad de codificación no cuadrada de dirección vertical), tipo asimétrico de nLx2N, nRx2N, 2NxnU, o 2NxnD.
La división basada en árbol binario puede permitir de manera limitada uno de una división de tipo simétrico o asimétrico. En este caso, la construcción de la unidad de árbol de codificación con bloques cuadrados puede corresponderse a una división CU de árbol cuádruple, y construir la unidad de árbol de codificación con los bloques no cuadrados simétricos puede corresponderse con la división de árbol binario. La construcción de la unidad de árbol de codificación con bloques cuadrados y bloques no cuadrados simétricos puede corresponderse con la división CU de árbol binario y cuádruple.
La división basada en árbol binario puede realizarse en un bloque de codificación donde una división basada en árbol cuádruple ya no se realiza. La división basada en árbol cuádruple puede ya no realizarse en el bloque de
codificación dividido basándose en el árbol binario.
Además, la división de una profundidad inferior puede determinarse dependiendo de un tipo de división de una profundidad superior. Por ejemplo, si la división basada en árbol binario se permite en dos o más profundidades, solo el mismo tipo de división de árbol binario de la profundidad superior puede permitirse en la profundidad inferior. Por ejemplo, si la división basada en árbol binario en la profundidad superior se realiza con el tipo 2NxN, la división basada en árbol binario en la profundidad inferior también se realiza con el tipo 2NxN. Como alternativa, si la división basada en árbol binario en la profundidad superior se realiza con el tipo Nx2N, la división basada en árbol binario en la profundidad inferior también se realiza con el tipo Nx2N.
Al contrario, también es posible permitir, en una profundidad inferior, solo un tipo diferente respecto al tipo de división de árbol binario de una profundidad superior.
También puede ser posible limitar solo un tipo específico de división basada en árbol binario a usar para la secuencia, corte, unidad de árbol de codificación o unidad de codificación. Como un ejemplo, solo el tipo 2NxN o tipo Nx2N de división basada en árbol binario puede permitirse para la unidad de árbol de codificación. Un tipo de división disponible puede predefinirse en un codificador o decodificador. O la información sobre el tipo de división disponible o el tipo de división no disponible puede codificarse y después señalarse a través de una tasa de bits.
La FIG. 5 es un diagrama que ilustra un ejemplo en el que solo un tipo específico de división basada en árbol binario se permite. La FIG. 5A muestra un ejemplo en el que solo el tipo Nx2N de división basada en árbol binario se permite, y la FIG. 5B muestra un ejemplo en el que solo el tipo 2NxN de división basada en árbol binario se permite. Para implementar la división adaptativa basada en el árbol binario o árbol cuádruple, la información que indica la división basada en árbol cuádruple, la información sobre el tamaño/profundidad del bloque de codificación en el que se permite la división basada en árbol cuádruple, información que indica la división basada en árbol binario, información sobre el tamaño/profundidad del bloque de codificación en el que se permite la división basada en árbol binario, información sobre el tamaño/profundidad del bloque de codificación en el que no se permite la división basada en árbol binario, información sobre si la división basada en árbol binario se permite o no en una dirección vertical o dirección horizontal, etc., puede usarse.
Además, la información sobre el número de veces que se permite la división de árbol binario, una profundidad en la que se permite la división de árbol binario, o el número de profundidades en las que se permite la división de árbol binario puede obtenerse para una unidad de árbol de codificación o unidad de codificación específica. La información puede codificarse en unidades de una unidad de árbol de codificación o unidad de codificación, y puede transmitirse a un decodificador a través de una tasa de bits.
Por ejemplo, una sintaxis ‘max_binary_depth_idx_minus1’ que indica una profundidad máxima en la que se permite la división de árbol binario puede codificarse/decodificarse a través de una tasa de bits. En este caso, max_binary_depth_idx_minus1 1 puede indicar la profundidad máxima a la que se permite la división de árbol binario.
En referencia al ejemplo mostrado en la FIG. 6, en la FIG. 6, la división de árbol binario se ha realizado para una unidad de codificación que tiene una profundidad de 2 y una unidad de codificación con una profundidad de 3. Por consiguiente, al menos una de la información que indica el número de veces que la división de árbol binario en la unidad de árbol de codificación se ha realizado (es decir, 2 veces), información que indica la profundidad máxima a la que se ha permitido la división de árbol binario en la unidad de árbol de codificación (es decir, profundidad 3), o el número de profundidades en las que se ha realizado la división de árbol binario en la unidad de árbol de codificación (es decir, 2 (profundidad 2 y profundidad 3)) puede codificarse/decodificarse a través de una tasa de bits.
Como otro ejemplo, al menos una de una información sobre el número de veces que la división de árbol binario se realiza, la profundidad a la que la división de árbol binario se permite, o el número de las profundidades a las que la división de árbol binario se permite puede obtenerse para cada secuencia o cada corte. Por ejemplo, la información puede codificarse en unidades de una secuencia, una imagen, o una unidad de corte y transmitirse a través de una tasa de bits. Por consiguiente, al menos uno del número de división de árbol binario en un primer corte, la profundidad máxima en la que la división de árbol binario se permite en el primer corte, o el número de profundidades en las que la división de árbol binario se realiza en el primer corte puede ser diferente de un segundo corte. Por ejemplo, en el primer corte, la división de árbol binario puede permitirse para solo una profundidad, mientras que en el segundo corte, la división de árbol binario puede permitirse para dos profundidades.
Como otro ejemplo, el número de veces que se permite la división de árbol binario, la profundidad a la que se permite la división de árbol binario, o el número de profundidades en las que se permite la división de árbol binario puede establecerse de manera diferente según un identificador de nivel de tiempo (ID temporal) de un corte o imagen. Aquí, el identificador de nivel temporal (ID temporal) se usa para identificar cada una de la pluralidad de capas de una señal de video con una escalabilidad de al menos una de visión, espacial, temporal o calidad.
Como se muestra en la FIG. 3, el primer bloque de codificación 300 con la profundidad de división (profundidad dividida) de k puede dividirse en múltiples segundos bloques de codificación basándose en el árbol cuádruple. Por ejemplo, los segundos bloques de codificación 310 a 340 pueden ser bloques cuadrados con la mitad de anchura y la mitad de altura del primer bloque de codificación, y la profundidad de división del segundo bloque de codificación puede incrementarse a k+1.
El segundo bloque de codificación 310 con la profundidad de división de k+1 puede dividirse en múltiples terceros bloques de codificación con la profundidad de división de k+2. La división del segundo bloque de codificación 310 puede realizarse usando selectivamente uno del árbol cuádruple y el árbol binario dependiendo de un método de división. Aquí, el método de división puede determinarse basándose en al menos uno de la información que indica la división basada en árbol cuádruple y la información que indica la división basada en árbol binario.
Cuando el segundo bloque de codificación 310 se divide basándose en el árbol cuádruple, el segundo bloque de codificación 310 puede dividirse en cuatro terceros bloques de codificación 310a con la mitad de anchura y la mitad de altura del segundo bloque de codificación, y la profundidad de división del tercer bloque de codificación 310a puede incrementarse a k+2. En comparación, cuando el segundo bloque de codificación 310 se divide basándose en el árbol binario, el segundo bloque de codificación 310 puede dividirse en dos terceros bloques de codificación. Aquí, cada uno de los dos terceros bloques de codificación puede ser un bloque no cuadrado que tiene uno de la mitad de anchura y la mitad de altura del segundo bloque de codificación, y la profundidad de división puede incrementarse a k+2. El segundo bloque de codificación puede determinarse como un bloque no cuadrado de dirección horizontal o dirección vertical dependiendo de
la dirección de división, y la dirección de división puede determinarse basándose en la información de si la división basada en árbol binario se realiza en dirección vertical o dirección horizontal.
Mientras tanto, el segundo bloque de codificación 310 puede determinarse como un bloque de codificación de hoja que ya no se divide basándose en el árbol cuádruple o el árbol binario. En este caso, el bloque de codificación de hoja puede usarse como un bloque de predicción o bloque de transformación.
Al igual que la división del segundo bloque de codificación 310, el tercer bloque de codificación 310a puede determinarse como un bloque de codificación de hoja, o puede además dividirse basándose en el árbol cuádruple o el árbol binario.
Mientras tanto, el tercer bloque de codificación 310b dividido basándose en el árbol binario puede además dividirse en bloques de codificación 310b-2 de una dirección vertical o bloques de codificación 310b-3 de una dirección horizontal basándose en el árbol binario, y la profundidad de división de los bloques de codificación relevantes puede incrementarse a k+3. Como alternativa, el tercer bloque de codificación 310b puede determinarse como un bloque de codificación de hoja 310b-1 que ya no se divide basándose en el árbol binario. En este caso, el bloque de codificación 310b-1 puede usarse como bloque de predicción o bloque de transformación. Sin embargo, el anterior proceso de división puede realizarse de forma limitada basándose en al menos uno de la información del tamaño/profundidad del bloque de codificación en que se permite la división basada en árbol cuádruple, la información sobre el tamaño/profundidad del bloque de codificación en que se permite la división basada en árbol binario, y la información sobre el tamaño/profundidad del bloque de codificación en que no se permite la división basada en árbol binario.
Un número de un candidato que representa un tamaño de un bloque de codificación puede limitarse a un número predeterminado, o un tamaño de un bloque de codificación en una unidad predeterminada puede tener un valor fijo. Como ejemplo, el tamaño del bloque de codificación en una secuencia o en una imagen puede limitarse a tener 256x256, 128x128, o 32x32. La información que indica el tamaño del bloque de codificación en la secuencia o en la imagen puede señalarse a través de un cabezal de secuencia o cabezal de imagen.
Como resultado de la división basada en el árbol binario o árbol cuádruple, una unidad de codificación puede representarse como forma rectangular o cuadrada de un tamaño arbitrario.
Un bloque de codificación se codifica usando al menos uno de un modo de omisión, intra-predicción, inter-predicción o método de omisión. Una vez que un bloque de codificación se determina, un bloque de predicción puede determinarse a través de una división predictiva del bloque de codificación. La división predictiva del bloque de codificación puede realizarse mediante un modo de división (Part_mode) que indica un tipo de división del bloque de codificación. Un tamaño o forma del bloque de predicción puede determinarse de acuerdo con el modo de división del bloque de codificación. Por ejemplo, un tamaño del bloque de predicción determinado de acuerdo con el modo de división puede ser igual a y o menor que un tamaño del bloque de codificación.
La FIG. 7 es un diagrama que ilustra un modo de división que puede aplicarse a un bloque de codificación cuando el bloque de codificación se verifica por inter-predicción.
Cuando un bloque de codificación se codifica por inter-predicción, uno de 8 modos de división puede aplicarse al bloque de codificación, como en el ejemplo mostrado en la FIG. 4.
Cuando un bloque de codificación se codifica por intra-predicción, un modo de división PART_2Nx2N o un modo de división PART_NxN puede aplicarse al bloque de codificación.
PART_NxN puede aplicarse cuando un bloque de codificación tiene un tamaño mínimo. Aquí, el tamaño mínimo del bloque de codificación puede predefinirse en un codificador o decodificador. O la información referente al tamaño mínimo del bloque de codificación puede señalare por una tasa de bits. Por ejemplo, el tamaño mínimo del bloque de codificación puede señalarse a través de un cabezal de corte, por lo que el tamaño mínimo del bloque de codificación puede definirse por corte.
En general, un bloque de predicción puede tener un tamaño de 64x64 a 4x4. Sin embargo, cuando el bloque de codificación se codifica por inter-predicción, puede evitarse que el bloque de predicción tenga un tamaño de 4x4 para reducir el ancho de banda de memoria cuando se realiza la compensación de movimiento.
La FIG. 8 es un diagrama de flujo que ilustra procesos para obtener una muestra residual de acuerdo con una realización en la que se aplica la presente invención.
Primero, un coeficiente residual de un bloque actual puede obtenerse S810. Un decodificador puede obtener un coeficiente residual a través de un método de
escaneo de coeficiente. Por ejemplo, el decodificador puede realizar un escaneo de coeficiente usando un escaneo en zigzag, un escaneo vertical o escaneo horizontal, y puede obtener coeficientes residuales en una forma de bloque bidimensional.
Una cuantificación inversa puede realizarse en el coeficiente residual del bloque actual S820.
Una transformación inversa se realiza selectivamente de acuerdo con si se omite la transformación inversa en el coeficiente residual descuantificado del bloque actual S830. Específicamente, el decodificador puede determinar si omitir la transformación inversa en al menos uno de la dirección vertical o dirección horizontal del bloque actual. Cuando se determina aplicar la transformación inversa en al menos uno de la dirección horizontal o la dirección vertical del bloque actual, una muestra residual del bloque actual puede obtenerse mediante transformación inversa del coeficiente residual descuantificado del bloque actual. Aquí, la transformación inversa puede realizarse usando al menos uno de DCT, DST, y KLT.
Cuando la transformación inversa se omite tanto en dirección horizontal como vertical del bloque actual, la transformación inversa no se realiza en la dirección vertical ni dirección horizontal del bloque actual. En este caso, la muestra residual del bloque actual puede obtenerse por escala del coeficiente residual descuantificado con un valor predeterminado.
La omisión de la transformación inversa en la dirección horizontal significa que la transformación inversa no se realiza en dirección horizontal pero la transformación inversa se realiza en dirección vertical. En este momento, el escalado puede realizarse en la dirección horizontal.
La omisión de la transformación inversa en la dirección vertical significa que la transformación inversa no se realiza en dirección vertical pero la transformación inversa sí se realiza en dirección horizontal. En este momento, el escalado puede realizarse en dirección vertical.
Puede determinarse si una técnica de omisión de transformación inversa puede usarse o no para el bloque actual dependiendo de un tipo de división del bloque actual. Por ejemplo, si el bloque actual se genera a través de una división basada en árbol binario, el esquema de omisión de transformación inversa puede limitarse para el bloque actual. Por consiguiente, cuando el bloque actual se genera a través de una división basada en árbol binario, la muestra residual del bloque actual puede obtenerse por transformación inversa del bloque actual. Además, cuando el bloque actual se genera a través de división basada en árbol binario, la
codificación/decodificación de información que indica si la transformación inversa se omite o no (por ejemplo, transform_skip_flag) puede omitirse.
Como alternativa, cuando el bloque actual se genera a través de división basada en árbol binario, es posible limitar el esquema de omisión de transformación inversa a al menos una de la dirección horizontal o dirección vertical. Aquí, la dirección en la que el esquema de omisión de transformación inversa se limita, puede determinarse basándose en información decodificada desde la tasa de bits, o puede determinarse de forma adaptativa basándose en al menos uno de un tamaño del bloque actual, una forma del bloque actual o un modo de intra-predicción del bloque actual.
Por ejemplo, cuando el bloque actual es un bloque no cuadrado con un ancho mayor que la altura, el esquema de omisión de transformación inversa puede permitirse solo en la dirección vertical y limitarse en la dirección horizontal. Es decir, cuando el bloque actual es 2NxN, la transformación inversa se realiza en la dirección horizontal del bloque actual, y la transformación inversa puede realizarse selectivamente en la dirección vertical.
Por otro lado, cuando el bloque actual es un bloque no cuadrado que tiene una altura mayor que la anchura, el esquema de omisión de transformación inversa puede permitirse solo en la dirección horizontal y limitarse a la dirección vertical. Es decir, cuando el bloque actual es Nx2N, la transformación inversa se realiza en la dirección vertical del bloque actual, y la transformación inversa puede realizarse selectivamente en la dirección horizontal.
En comparación con el ejemplo anterior, cuando el bloque actual es un bloque no cuadrado que tiene una anchura mayor que la altura, el esquema de omisión de transformación inversa puede permitirse solo en la dirección horizontal, y cuando el bloque actual es un bloque no cuadrado que tiene una altura mayor que la anchura, el esquema de omisión de transformación inversa puede permitirse solo en la dirección vertical.
La información que indica si se omite o no la transformación inversa con respecto a la dirección horizontal o a la información que indica si se omite la transformación inversa con respecto a la dirección vertical puede señalarse a través de la tasa de bits. Por ejemplo, la información que indica si se omite o no la transformación inversa en la dirección horizontal es una bandera de 1 bit, ‘hor_transform_skip_flag’ y la información que indica si se omite transformación inversa en la dirección vertical es una bandera de 1 bit, ‘ver_transform_skip_flag’. El
codificador puede codificar al menos uno de ‘hor_transform_skip_flag’ o ‘ver_transform_skip_flag’ de acuerdo con la forma del bloque actual. Además, el decodificador puede determinar si la transformación inversa en la dirección horizontal o en la dirección vertical se omite o no usando al menos uno de “hor_transform_skip_flag” o “ver_transform_skip_flag”.
Puede establecerse para omitir la transformación inversa para una dirección cualquiera del bloque actual dependiendo de un tipo de división del bloque actual. Por ejemplo, si el bloque actual se genera a través de una división basada en árbol binario, la transformación inversa en la dirección horizontal o dirección vertical puede omitirse. Es decir, si el bloque actual se general por división basada en árbol binario, puede determinarse que la transformación inversa para el bloque actual se omite en al menos una de la dirección horizontal o dirección vertical sin codificar/decodificar información (por ejemplo, transform_skip_flag, hor_transform_skip_flag, ver_transform_skip_flag) indicando si la transformación inversa del bloque actual se omite o no.
La FIG. 9 es un diagrama de flujo que ilustra un método de inter-predicción según una realización en la que se aplica la presente invención.
En referencia a la FIG. 9, la información de un movimiento de un bloque actual se determina S910. La información de un movimiento del bloque actual puede incluir al menos uno de un vector de movimiento referente al bloque actual, un índice de imagen de referencia del bloque actual, o una dirección de inter predicción del bloque actual.
La información de movimiento del bloque actual puede obtenerse basándose en al menos una información señalada a través de una tasa de bits o de información de movimiento de un bloque cercano adyacente al bloque actual.
La FIG. 10 es un diagrama que ilustra procesos de derivar información de un movimiento de un bloque actual cuando un modo de fusión se aplica al bloque actual.
Si el modo de fusión se aplica al bloque actual, un candidato de fusión espacial puede derivarse desde un bloque cercano espacial del bloque actual S1010. El bloque cercano espacial puede comprender al menos uno de bloques adyacentes a la izquierda, una parte superior o esquina (por ejemplo, al menos una de la esquina superior izquierda, esquina superior derecha o esquina inferior izquierda) del bloque actual.
La información de movimiento del candidato de fusión espacial puede
establecerse como igual a la información de movimiento del bloque cercano espacial.
Un candidato de fusión temporal puede derivarse desde un bloque cercano temporal del bloque actual S1020. El bloque cercano temporal puede significar un bloque incluido en una imagen colocada. La imagen colocada tiene un conteo de orden de imagen (POC) diferente de una imagen actual que incluye el bloque actual. La imagen colocada puede determinarse como una imagen que tiene un índice predefinido en una lista de imagen de referencia o puede determinarse por un índice señalado desde una tasa de bits. El bloque cercano temporal puede determinarse como un bloque que comprende coordenadas en un bloque colocado que tiene la misma posición que el bloque actual y la imagen colocada, o un bloque adyacente al bloque colocado. Por ejemplo, al menos uno del bloque que incluye coordenadas centrales del bloque colocado o un bloque adyacente al límite inferior izquierdo del bloque colocado puede determinarse como el bloque cercano temporal.
La información de movimiento del candidato de fusión temporal puede determinarse basándose en información de movimiento del bloque cercano temporal. Por ejemplo, un vector de movimiento del candidato de fusión temporal puede determinarse basándose en un vector de movimiento del bloque cercano temporal. Además, una dirección de inter-predicción del candidato de fusión temporal puede establecerse como igual que la dirección de inter-predicción del bloque cercano temporal. Sin embargo, un índice de imagen de referencia del candidato de fusión temporal puede tener un valor fijo. Por ejemplo, el índice de imagen de referencia del candidato de fusión temporal puede establecerse en ‘0’.
Después, una lista de candidato de fusión que incluye el candidato de fusión espacial y el candidato de fusión temporal puede generarse S1030. Si el número de candidatos de fusión incluidos en la lista de candidatos de fusión es menor que un número de candidatos de fusión máximo, un candidato de fusión combinado que combina dos o más candidatos de fusión puede incluirse en la lista de candidatos de fusión.
Cuando la lista de candidatos de fusión se genera, al menos uno de los candidatos de fusión incluidos en la lista de candidatos de fusión puede especificarse basándose en el índice de candidatos de fusión S1040.
La información de movimiento del bloque actual puede establecerse como igual que la información de movimiento del candidato de fusión especificado por el
índice de candidato de fusión S1050. Por ejemplo, cuando el candidato de fusión espacial se selecciona por el índice de candidato de fusión, la información de movimiento del bloque actual puede establecerse como igual que la información de movimiento del bloque cercano espacial. Como alternativa, cuando el candidato de fusión temporal se selecciona por el índice de candidato de fusión, la información de movimiento actual puede establecerse como igual que la información de movimiento del bloque cercano temporal.
La FIG. 11 es un diagrama que ilustra procesos de derivar información de movimiento de un bloque actual cuando un modo AMVP se aplica al bloque actual.
Cuando el modo AMVP se aplica al bloque actual, al menos uno de una dirección de inter-predicción del bloque actual o un índice de imagen de referencia puede decodificarse desde una tasa de bits S1110. Es decir, cuando el modo AMVP se aplica, al menos uno de la dirección de inter-predicción o el índice de imagen de referencia del bloque actual puede determinarse basándose en información codificada a través de la tasa de bits.
Un candidato de vector de movimiento espacial puede determinarse basándose en el vector de movimiento de un bloque cercano espacial del bloque actual S1120. El candidato de vector de movimiento espacial puede incluir al menos uno de un primer candidato de vector de movimiento espacial derivado desde un bloque cercano superior del bloque actual y un segundo candidato de vector de movimiento espacial derivado de un bloque cercano izquierdo del bloque actual. Aquí, el bloque cercano superior puede incluir al menos uno de bloques adyacentes a una parte superior o esquina superior derecha del bloque actual, y el bloque cercano izquierdo del bloque actual puede incluir al menos unos de bloques adyacentes a una izquierda o esquina inferior izquierda del bloque actual. Un bloque adyacente a una esquina superior izquierda del bloque actual puede tratarse como el bloque cercano superior, o como el bloque cercano inferior.
Cuando las imágenes de referencia entre el bloque actual y el bloque cercano espacial son diferentes entre sí, también es posible obtener el vector de movimiento espacial mediante la escala del vector de movimiento del bloque cercano espacial.
Un candidato de vector de movimiento temporal puede determinarse basándose en un vector de movimiento del bloque cercano temporal del bloque actual S1130. Cuando las imágenes de referencia entre el bloque actual y el bloque cercano temporal son diferentes entre sí, también es posible obtener el vector de
movimiento temporal escalando el vector de movimiento del bloque cercano temporal.
Una lista de candidatos de vector de movimiento que incluye el candidato de vector de movimiento espacial y el candidato de vector de movimiento temporal puede generarse S1140.
Cuando la lista de candidatos de vector de movimiento se genera, al menos uno de los candidatos de vector de movimiento incluidos en la lista de candidatos de vector de movimiento puede especificarse basándose en la información que especifica al menos uno desde la lista de candidatos de vector de movimiento S1150.
El candidato de vector de movimiento especificado por la información puede establecerse como valor de predicción de vector de movimiento del bloque actual, y un valor de diferencia de vector de movimiento puede añadirse al valor de predicción del vector de movimiento para obtener un vector de movimiento del bloque actual S1160. En este movimiento, el valor de diferencia de vector de movimiento puede analizarse a través de la tasa de bits.
Cuando la información de movimiento del bloque actual se obtiene, la compensación de movimiento para el bloque actual puede realizarse basándose en la información de movimiento obtenida S920. Más específicamente, la compensación de movimiento para el bloque actual puede realizarse basándose en la dirección de inter-predicción, el índice de imagen de referencia, y el vector de movimiento del bloque actual.
La dirección de inter-predicción puede indicar N direcciones. Aquí, N es un número natural, y puede ser 1, 2 o 3 o más. Si la dirección de inter-predicción indica N direcciones, significa que la inter-predicción del bloque actual se realiza basándose en N imágenes de referencia o N bloques de referencia. Por ejemplo, cuando la dirección de inter-predicción del bloque actual indica una uni-dirección, la inter-predicción del bloque actual puede realizarse basándose en una imagen de referencia. Por otro lado, cuando la inter-predicción del bloque actual indica una bidirección, la inter-predicción del bloque actual puede realizarse usando dos imágenes de referencia o dos bloques de referencia.
También es posible determinar si una predicción multi-direccional se permite para el bloque actual basándose en al menos uno de un tamaño o una forma del bloque actual. Por ejemplo, cuando una unidad de codificación tiene una forma cuadrada, la predicción multi-direccional se permite para la
codificación/decodificación de la misma. Por otro lado, cuando la unidad de codificación tiene una forma no cuadrada, solo la predicción uni-direccional se permite para su codificación/decodificación. Al contrario que los casos anteriores, también es posible establecer que la predicción multi-direccional se permita para la codificación/decodificación de la unidad de codificación cuando tiene la forma no cuadrada, y solo la predicción unidireccional se permite para la codificación/decodificación de la unidad de codificación cuando tiene la forma cuadrada. Como alternativa, también es posible establecer que la predicción multidireccional no se permita para la codificación/decodificación de la unidad de predicción, cuando la unidad de predicción tiene la forma no cuadrada de 4x8 u 8x4 o similar.
El índice de imagen de referencia puede especificar una imagen de referencia a usar para la inter-predicción del bloque actual. Específicamente, el índice de imagen de referencia puede especificar una cualquiera de imágenes de referencia incluidas en la lista de imagen de referencia. Por ejemplo, cuando la dirección de inter-predicción del bloque actual es bidireccional, la imagen de referencia (imagen de referencia L0) incluida en la lista de imagen de referencia L0 se especifica mediante un índice de imagen de referencia L0, y la imagen de referencia (imagen de referencia L1) incluida en la lista de imagen de referencia L1 se especifica por un índice de imagen de referencia L1.
Como alternativa, una imagen de referencia puede incluirse en dos o más listas de imagen de referencia. Por consiguiente, incluso si el índice de imagen de referencia de la imagen de referencia incluida en la lista de imagen de referencia L0 y el índice de imagen de referencia de la imagen de referencia incluida en la lista de imagen de referencia L1 son diferentes, unos órdenes temporales (conteo de orden de imagen, POC) de ambas imágenes de referencia pueden ser iguales.
El vector de movimiento puede usarse para especificar una posición de un bloque de referencia, en la imagen de referencia, correspondiente a un bloque de predicción del bloque actual. La inter-predicción del bloque actual puede realizarse basándose en el bloque de referencia, especificado por el vector de movimiento, en la imagen de referencia. Por ejemplo, un pixel de número entero incluido en el bloque de referencia o un pixel de número no entero generado por interpolación de píxeles de número entero puede generarse como muestra de predicción del bloque actual. También es posible que los bloques de referencia especificados por diferentes vectores de movimiento puedan incluirse en la misma imagen de
referencia. Por ejemplo, cuando la imagen de referencia seleccionada de la lista de imagen de referencia L0 y la imagen de referencia seleccionada de la lista de imagen de referencia L1 son iguales, el bloque de referencia especificado por un vector de movimiento L0 y el bloque de referencia especificado por un vector de movimiento L1 pueden incluirse en la misma imagen de referencia.
Como se ha descrito antes, cuando la dirección de inter-predicción del bloque actual indica dos o más direcciones, la compensación de movimiento para el bloque actual puede realizarse basándose en dos o más imágenes de referencia o dos o más bloques de referencia.
Por ejemplo, cuando el bloque actual se codifica con predicción bidireccional, el bloque de predicción del bloque actual puede obtenerse basándose en dos bloques de referencia obtenidos desde dos imágenes de referencia. Además, cuando el bloque actual se codifica con predicción bidireccional, un bloque residual que indica la diferencia entre un bloque original y el bloque de predicción obtenido basándose en los dos bloques de referencia puede codificarse/decodificarse.
Cuando dos o más imágenes de referencia se usan, la compensación de movimiento para el bloque actual puede realizarse aplicando la misma o diferentes ponderaciones a las respectivas imágenes de referencia. Después, un método para realizar una predicción ponderada del bloque actual se describirá en detalle en las siguientes realizaciones cuando la dirección de inter-predicción indique dos o más direcciones. Por conveniencia de la explicación, se asume que la dirección de inter predicción del bloque actual es bidireccional. Sin embargo, incluso cuando la dirección de inter-predicción del bloque actual indica tres o más, la siguiente realización puede aplicarse con la aplicación. Además, la compensación de movimiento para el bloque actual usando dos imágenes de predicción se mencionará como método de predicción bidireccional o método de codificación/decodificación de predicción bidireccional.
Cuando la predicción bidireccional se aplica al bloque actual, las imágenes de referencia usadas para la predicción bidireccional del bloque actual pueden incluir una imagen cuyo orden temporal (Conteo de Orden de Imagen, POC) es previo a la imagen actual, una imagen cuyo orden temporal es posterior a la imagen actual o la imagen actual. Por ejemplo, una de las dos imágenes de referencia puede ser una imagen cuyo orden temporal es previo a la imagen actual, y la otra imagen puede ser una imagen cuyo orden temporal es posterior a la imagen actual.
Como alternativa, una de las dos imágenes de referencia puede ser la imagen actual, y la otra imagen puede ser una imagen cuyo orden temporal es previo al bloque actual o cuyo orden temporal es posterior a la imagen actual. Como alternativa, ambas imágenes de referencia pueden tener órdenes temporales previas a la imagen actual, o pueden tener órdenes temporales posteriores a la imagen actual. Como alternativa, ambas imágenes de referencia pueden ser la imagen actual.
Dos bloques de predicción pueden generarse desde cada una de las dos listas de imagen de referencia. Por ejemplo, un bloque de predicción basado en la imagen de referencia L0 puede generarse basándose en el vector de movimiento L0, y un bloque de predicción basado en la imagen de referencia L1 puede generarse basado en el vector de movimiento L1. También es posible que el bloque de predicción generado por el vector de movimiento L0 y el bloque de predicción generado por el vector de movimiento L1 puedan generarse basándose en la misma imagen de referencia.
Un bloque de predicción del bloque actual puede obtenerse basándose en un valor promedio de los bloques de predicción generados basándose en ambas imágenes de referencia. Por ejemplo, la Ecuación 1 muestra un ejemplo de obtener el bloque de predicción del bloque actual basándose en el valor promedio de una pluralidad de los bloques de predicción.
[Ecuación 1]
P (x )= l/2 * P 0Oc)+1/2 */>!<>)
En la Ecuación 1, P(x) indica una muestra de predicción final del bloque actual o una muestra de predicción predicha bidireccionalmente, y PN(x) indica un valor de muestra de un bloque de predicción LN generado basándose en una imagen de referencia LN. Por ejemplo, P0(x) puede significar una muestra de predicción del bloque de predicción generado o basándose en la imagen de referencia L0, y P1(x) puede significar una muestra de predicción del bloque de predicción generado basándose en la imagen de referencia L1. Es decir, de acuerdo con la Ecuación 1, el bloque de predicción final del bloque actual puede obtenerse basándose en la suma ponderada de la pluralidad de los bloques de predicción generados basándose en la pluralidad de imágenes de referencia. En este momento, una ponderación de valor fijo predefinido en el codificador/decodificador puede asignarse a cada bloque de predicción.
De acuerdo con una realización de la presente invención, el bloque de
predicción final del bloque actual se obtiene basándose en la suma ponderada de una pluralidad de los bloques de predicción, y la ponderación asignada a cada bloque de predicción puede determinarse de manera variable/adaptativa. Por ejemplo, cuando ambas imágenes de referencia o ambos bloques de predicción tienen una luminosidad diferente, es más eficaz realizar la predicción bidireccional para el bloque actual aplicando diferentes ponderaciones a cada bloque de predicción que realizar la predicción bidireccional para el bloque actual promediando los bloques de predicción. Después, por facilidad de la explicación, el método de predicción bidireccional cuando la ponderación asignada a cada uno de los bloques de predicción se determina de manera variable/adaptativa se denominará “predicción ponderada bidireccional”.
También es posible determinar si la predicción ponderada bidireccional se permite o no para el bloque actual basándose en al menos uno de un tamaño o forma del bloque actual. Por ejemplo, si la unidad de codificación tiene una forma cuadrada, se permite codificar/decodificar la misma usando la predicción ponderada bidireccional, mientras que si la unidad de codificación tiene una forma no cuadrada, no se permite codificar/decodificar la misma usando la predicción ponderada bidireccional. Al contrario a los casos anteriores, también es posible establecer que se permita codificar/decodificar el bloque de codificación usando la predicción ponderada bidireccional cuando tiene forma no cuadrada, y no se permite codificar/decodificar el bloque de codificación usando la predicción ponderada bidireccional cuando tiene la forma cuadrada. Como alternativa, también es posible establecer que la predicción ponderada bidireccional no se permite para codificar/decodificar la unidad de predicción cuando la unidad de predicción es una división no cuadrada con un tamaño de 4x8 u 8x4 o similar.
La FIG. 12 es un diagrama de flujo de un método de predicción ponderado bidireccional, de acuerdo con una realización de la presente invención.
Para realizar la predicción ponderada bidireccional, un parámetro de predicción ponderado para el bloque actual puede determinarse S1210. El parámetro de predicción ponderado puede usarse para determinar una ponderación a aplicar a ambas imágenes de referencia. Por ejemplo, como se representa en la FIG. 13, una ponderación de 1-w puede aplicarse a un bloque de predicción generado basándose en la imagen de referencia L0, y una ponderación de w puede aplicarse a un bloque de predicción generado basándose en la imagen de referencia L1. Basándose en los parámetros de predicción ponderados, la
ponderación a aplicar a cada bloque de predicción se determina S1220, y una operación de suma ponderada de una pluralidad de bloques de predicción se realiza basándose en la ponderación determinada para generar un bloque de predicción final del bloque actual S1230. Por ejemplo, el bloque de predicción final del bloque actual puede generarse basándose en la siguiente Ecuación 2.
[Ecuación 2]
F ( x )= ( l -w ) * P 0W »t'*/, iW
En la Ecuación 2, w representa el parámetro de predicción ponderado.
Como se muestra en la Ecuación 2, el bloque de predicción final P(x) del bloque actual puede obtenerse asignando la ponderación de 1-w al bloque de predicción P0 y asignando la ponderación de w al bloque de predicción P1. También es posible asignar la ponderación de w al bloque de expedición P0 y asignar la ponderación de 1-w al bloque de predicción P1, en oposición a lo que se muestra en la Ecuación 2.
El parámetro de predicción ponderado puede determinarse basándose en una diferencia de brillo entre las imágenes de referencia, o puede determinarse basándose en una distancia entre la imagen actual y la imagen de referencia (es decir, la diferencia POC). Como alternativa, también es posible determinar el parámetro de predicción ponderado basándose en el tamaño o forma del bloque actual.
El parámetro de predicción ponderado puede determinarse en unidades de un bloque (por ejemplo, una unidad de árbol de codificación, unidad de codificación, unidad de predicción, o unidad de transformación), o puede determinarse en unidades de un corte o una imagen.
En este momento, el parámetro de predicción ponderado puede determinarse basándose en parámetros de predicción ponderados candidatos predefinidos. Como ejemplo, el parámetro de predicción ponderado puede determinarse como uno de los valores predefinidos como -1/4, 1/4, 3/8, 1/2, 5/8, 3/4 o 5/4.
Como alternativa, tras determinar un parámetro de predicción ponderado establecido para el bloque actual, también es posible determinar el parámetro de predicción ponderado desde al menos uno de los parámetros de predicción ponderados candidatos incluidos en el conjunto de parámetros de predicción ponderados determinados. El conjunto de parámetros de predicción ponderado puede determinarse en unidades de un bloque (por ejemplo, una unidad de árbol de
codificación, unidad de codificación, unidad de predicción, o unidad de transformación), o puede determinarse en unidades de un corte o una imagen.
Por ejemplo, si uno de los conjuntos de parámetros de predicción ponderados w0 y w1 se selecciona, al menos uno de los parámetros de predicción ponderados candidatos incluidos en el conjunto de parámetros de predicción ponderados seleccionados puede determinarse como el parámetro de predicción ponderado para el bloque actual. Por ejemplo, se asume que "w0 = {-1/4, 1/4, 3/8, 1/2, 5/8, 3/4, 5/4}” y "w1 = {-3/8, 4, 3/8, 1/2, 5/8, 3/4}”. Cuando el conjunto de parámetros de predicción ponderados w0 se selecciona, el parámetro de predicción ponderado w del bloque actual puede determinarse como uno de los parámetros de predicción ponderados candidatos -1/4, 1/4, 3/8, 1/2, 5/8, 3/4 y 5/4 incluidos en w0.
El conjunto de parámetros de predicción ponderados disponible para el bloque actual puede determinarse de acuerdo con un orden temporal o una dirección temporal de la imagen de referencia usada para la predicción bidireccional. El orden temporal puede indicar un orden de codificación/decodificación entre imágenes, o puede indicar un orden de salida (por ejemplo, POC) de las imágenes. Además, la dirección temporal puede indicar si el orden temporal de la imagen de referencia es anterior o posterior a la imagen actual.
Como ejemplo, dependiendo de si dos imágenes de referencia usadas para la predicción bidireccional tienen el mismo orden temporal, el conjunto de parámetros de predicción ponderados disponible para la imagen actual puede determinarse. Por ejemplo, dependiendo de si la imagen de referencia L0 y la imagen de referencia L1 son la misma imagen (es decir, el orden temporal de las imágenes es igual) o si la imagen de referencia L0 y la imagen de referencia L1 son diferentes entre sí (es decir, los órdenes temporales de las imágenes son diferentes), el conjunto de parámetros de predicción ponderados disponible para el bloque actual puede determinarse de manera variable.
Diferentes conjuntos de parámetros de predicción ponderados pueden significar que al menos uno de un valor absoluto, un signo o un número del conjunto de parámetros de predicción ponderados incluido en cada conjunto de los parámetros de predicción ponderados son diferentes. Por ejemplo, cuando las direcciones temporales de la imagen de referencia L0 y la imagen de referencia L1 son iguales, el conjunto de parámetros de predicción ponderados w0 = {-1/4, 1/4, 3/8, 1/2, 5/8, 5/4} puede usarse, y cuando las direcciones temporales de la imagen
de referencia L0 y la imagen de referencia L1 son diferentes, el conjunto de parámetros de predicción ponderados w1 = {-3/8, -1/4, 1/4, 3/8, 1/2, 5/8, 3/4} puede usarse.
Como ejemplo, dependiendo de si las direcciones temporales de las dos imágenes de referencia usadas en la predicción bidireccional son iguales o no, el conjunto de parámetros de predicción ponderados disponible para la imagen actual puede determinarse. Por ejemplo, el conjunto de parámetros de predicción ponderados disponible para el bloque actual puede determinarse de manera diferente entre cuando las direcciones temporales de las dos imágenes de referencia son iguales y cuando las direcciones temporales de las dos imágenes de referencia son diferentes. Específicamente, el parámetro de predicción ponderado del bloque actual puede determinarse de manera diferente de acuerdo con si la imagen de referencia L0 y la imagen de referencia L1 son previas a la imagen actual o no, si la imagen de referencia L0 y la imagen de referencia L1 son posteriores a la imagen actual o no, o si las direcciones temporales de la imagen de referencia L0 y la imagen de referencia L1 son diferentes o no.
El número de parámetros de predicción ponderados candidatos disponibles o el número de conjuntos de parámetros de predicción ponderados disponibles puede ajustarse de manera diferente para cada bloque, cada corte o cada imagen. Por ejemplo, el número de parámetros de predicción ponderados candidatos disponibles o el número de conjuntos de parámetros de predicción ponderados disponibles puede señalarse en unidades de un corte. Por consiguiente, el número de parámetros de predicción ponderados candidatos disponibles o el número de conjuntos de parámetros de predicción ponderados disponibles pueden ser diferentes para cada corte.
El parámetro de predicción ponderado puede derivarse desde un bloque de escala adyacente al bloque actual. Aquí, el bloque cercano adyacente al bloque actual puede incluir al menos uno de un bloque cercano espacial o un bloque cercano temporal del bloque actual.
Como ejemplo, el parámetro de predicción ponderado del bloque actual puede establecerse a un valor mínimo o valor máximo entre los parámetros de predicción ponderados de bloques cercanos adyacentes al bloque actual, o puede establecerse en un valor promedio de parámetros de predicción ponderados de bloques cercanos.
Como ejemplo, el parámetro de predicción ponderado del bloque actual
puede derivarse de un bloque cercano ubicado en una posición predeterminada entre bloques cercanos adyacentes al bloque actual. Aquí, la posición predeterminada puede determinarse de manera variable o fija. Específicamente, la posición del bloque cercano se determina por un tamaño del bloque actual (por ejemplo unidad de codificación, unidad de predicción o unidad de transformación), una posición del bloque actual en la unidad de árbol de codificación, una forma del bloque actual (por ejemplo, tipo de división del bloque actual), o índice de división del bloque actual. Como alternativa, la posición del bloque cercano puede predefinirse en el codificador/decodificador y determinarse de manera fija.
Como ejemplo, el parámetro de predicción ponderado del bloque actual puede derivarse de un bloque cercano al que la predicción ponderada bidireccional se aplica entre bloques cercanos adyacentes al bloque actual. Específicamente, el parámetro de predicción ponderado del bloque actual puede derivarse desde un parámetro de predicción ponderado de un primer bloque cercano detectado al que la predicción ponderada bidireccional se aplica cuando los bloques cercanos adyacentes al bloque actual se escanean en un orden predeterminado. La FIG. 14 es un diagrama que ilustra un orden de escaneo entre bloques cercanos. En la FIG.
14, el escaneo se realiza en el orden de un bloque cercano izquierdo, un bloque cercano superior, un bloque cercano derecho superior, un bloque cercano izquierdo inferior y un bloque cercano superior izquierdo, pero la presente invención no se limita al ejemplo ilustrado. Cuando el escaneo se realiza siguiendo el orden predefinido, el parámetro de predicción ponderado del primer bloque cercano detectado con la predicción ponderada bidireccional puede usarse como el parámetro de predicción ponderado del bloque actual.
Como alternativa, cuando el escaneo se realiza siguiendo el orden predefinido, también es posible establecer el parámetro de predicción ponderado del primer bloque cercano detectado en el que se aplica la predicción bidireccional ponderada como el valor de predicción de parámetro de predicción ponderado del bloque actual. En este caso, el parámetro de predicción ponderado del bloque actual puede obtenerse usando el valor de predicción de parámetro de predicción ponderado y el valor residual de parámetro de predicción ponderado.
Como ejemplo, también es posible derivar el parámetro de predicción ponderado del bloque actual desde un bloque cercano temporal o espacial fusionado con información de movimiento del bloque actual, o desde un bloque cercano temporal o espacial usado para derivar un valor de predicción de vector de
movimiento del bloque actual.
También es posible señalar información para determinar el parámetro de predicción ponderado a través de una tasa de bits. Por ejemplo, el parámetro de predicción ponderado del bloque actual puede determinarse basándose en al menos uno de información que indica un valor de parámetro de predicción ponderado, información de índice que especifica uno de parámetros de predicción ponderados candidatos, o información de índice establecido que especifica uno de los conjuntos de parámetro de predicción ponderado.
Al binarizar y codificar parámetros de predicción ponderados, el código binario más pequeño puede mapearse a un parámetro de predicción ponderado que tiene la frecuencia mayor de uso estadísticamente. Por ejemplo, una binarización unaria truncada pueden realizarse en el parámetro de predicción ponderado como se muestra en la Tabla 1 a continuación. La Tabla 1 es un ejemplo en un caso de cMax igual a 6.
T l 11
El método de binarización unaria truncada mostrado en la Tabla 1 es básicamente igual que el método de binarización unaria excepto que una conversión se realiza después de recibir el valor máximo (cMax) de la entrada con antelación. La Tabla 2 muestra la binarización unaria truncada con cMax igual a 13.
T l 21
Durante la binarización de parámetro de predicción ponderado, también es posible usar diferentes códigos binarios dependiendo de si las direcciones temporales de las imágenes de referencia usadas para la predicción bidireccional son iguales o no. Por ejemplo, la Tabla 3 ilustra códigos binarios de acuerdo con si las direcciones temporales de la imagen de referencia L0 y la imagen de referencia L1 son iguales o no.
T l 1
También es posible determinar el parámetro de predicción ponderado del bloque actual de acuerdo con una diferencia de orden temporal entre la imagen actual y la imagen de referencia. Aquí, la diferencia de orden temporal puede indicar diferencia de orden de codificación/decodificación entre imágenes o diferencia de orden de salida entre imágenes (por ejemplo, un valor de diferencia POC). Por ejemplo, el parámetro de predicción ponderado de la imagen actual puede determinarse basándose al menos en uno del valor de diferencia POC entre la imagen actual y la imagen de referencia L0 (a continuación mencionado como primera distancia de referencia) y el valor de diferencia POC entre la imagen actual y la imagen de referencia L1 (a continuación mencionado como segunda distancia de referencia).
Específicamente, el parámetro de predicción ponderado del bloque actual puede determinarse basándose en una relación entre la primera distancia de referencia y la segunda distancia de referencia. Cuando la primera distancia de referencia es w y la segunda distancia de referencia es h, w/(w+h) puede usarse
como el parámetro de predicción ponderado del bloque actual. Por ejemplo, cuando la primera distancia de referencia y la segunda distancia de referencia son iguales, el parámetro de predicción ponderado del bloque actual puede determinarse como 1/2. Además, cuando la primera distancia de referencia es 1 y la segunda distancia de referencia es 3, el parámetro de predicción ponderado del bloque actual puede determinarse como 1/4.
Como alternativa, cuando la primera distancia de referencia es w y la segunda distancia de referencia es h, también es posible usar un parámetro de predicción ponderado candidato que tiene un valor más similar a w/ (w+h) entre los parámetros de predicción ponderados candidatos como el parámetro de predicción ponderado del bloque actual.
Como alternativa, también es posible binarizar el parámetro de predicción ponderado del bloque actual al considerar la primera distancia de referencia y la segunda distancia de referencia. La Tabla 4 muestra códigos binarios basados en la primera en la primera distancia de referencia y la segunda distancia de referencia.
T l 41
En el ejemplo mostrado en la Tabla 4, cuando la primera distancia de referencia y la segunda distancia de referencia son iguales, la probabilidad de que el parámetro de predicción ponderado se establezca como un 1/2 es alta. Como resultado, el código más pequeño puede asignarse a un medio cuando la primera distancia de referencia y la segunda distancia de referencia son iguales.
Cuando la primera distancia de referencia y la segunda distancia de referencia son diferentes, el código binario más pequeño puede mapearse a un parámetro de predicción ponderado que es estadísticamente el usado más frecuentemente. Por ejemplo, cuando la primera distancia de referencia es mayor que la segunda distancia de referencia, la probabilidad de que una ponderación mayor se asigne a la imagen de referencia L1 es alta. Por consiguiente, el código binario más pequeño puede mapearse al parámetro de predicción ponderado mayor que 1/2. Por otro lado, cuando la primera distancia de referencia es menor que la segunda distancia de referencia, la probabilidad de que una ponderación mayor se asigne a la imagen de referencia L0 es alta. Por consiguiente, el código binario más pequeño puede mapearse al parámetro de predicción ponderado menor que 1/2.
En comparación con el ejemplo mostrado en la Tabla 4, también es posible
mapear el código binario más pequeño al parámetro de predicción ponderado menor que 1/2 cuando la primera distancia de referencia es mayor que la segunda distancia de referencia, y mapear el código binario menor al parámetro de predicción ponderado mayor que 1/2 cuando la primera distancia de referencia es menor que la segunda distancia de referencia.
Incluso si un bloque actual es similar a un bloque de referencia en una imagen en referencia, si existe un cambio en el brillo entre una imagen de referencia y una imagen anterior, la eficacia de intra-predicción o inter-predicción puede disminuir. Por consiguiente, es posible considerar la compensación de iluminación para compensar una muestra de predicción generada a través de la intra-predicción o inter-predicción o una muestra de reconstrucción reconstruida basándose en la muestra de predicción para el cambio en luminosidad entre la imagen actual y la imagen de referencia. La compensación de iluminación puede realizarse aplicando una ponderación de compensación de iluminación y una desviación a una imagen que se codifica/decodifica en la intra-predicción o inter predicción. Por ejemplo, la predicción de compensación de iluminación puede realizarse basándose en la Ecuación 3 a continuación.
[Ecuación 3]
p’ = l x p f
En la Ecuación 3, p puede indicar la muestra predicha codificada/decodificada por la intra-predicción o inter-predicción. 1 indica la ponderación de compensación de iluminación, y f indica la desviación. p’ puede indicar una muestra de predicción ponderada a la que se aplica la compensación de iluminación.
También es posible aplicar la compensación de iluminación a la muestra de reconstrucción obtenida basándose en la muestra de predicción codificada/decodificada en la intra-predicción o inter-predicción. Específicamente, la compensación de iluminación puede aplicarse a la muestra de reconstrucción antes de que se aplique el filtro en bucle, o a la muestra de reconstrucción después de que se aplique el filtro en bucle. En este caso, en la Ecuación 3, p puede indicar la muestra de reconstrucción y p' puede indicar una muestra de reconstrucción ponderada a la que se aplica la compensación de iluminación.
Un cambio de iluminación puede ocurrir por toda el área de la imagen actual o un corte de imagen cuando se compara con una imagen anterior o un corte previo. Por consiguiente, la compensación de iluminación puede realizarse en
unidades de una secuencia, una imagen o un corte.
Como alternativa, el cambio de iluminación puede ocurrir solo en un área parcial dentro de un corte o una secuencia cuando se compara con un corte previo o una secuencia previa. Por consiguiente, la compensación de iluminación puede realizarse en unidades de un área predeterminada en una imagen o corte. Es decir, al determinar si se realiza o no la compensación de iluminación en unidades de un área predeterminada, es posible realizar la compensación de iluminación solo en un área parcial, en la que el cambio de iluminación ocurre, en una imagen o un corte.
Cuando la compensación de iluminación se realiza solo para el área predeterminada dentro de una imagen o corte, la información para determinar un área donde la compensación de iluminación se realiza puede codificarse/decodificarse. Por ejemplo, la información que indica una posición del área donde la compensación de iluminación se realiza, un tamaño del área donde la compensación de iluminación se realiza, o una forma del área en la que la compensación de iluminación se realiza puede codificarse/decodificarse.
Como alternativa, también es posible codificar/decodificar información que indica si la compensación de iluminación se realiza o no en unidades de un bloque. La información puede ser una bandera de 1 bit, pero no se limita a esto. Por ejemplo, puede determinarse si se realiza o no la compensación de iluminación en unidades de una unidad de árbol de codificación, unidad de codificación, unidad de predicción o unidad de transformación. Por consiguiente, la información que indica si se realiza o no la compensación de iluminación puede determinarse en unidades de una unidad de árbol de codificación, unidad de codificación, unidad de predicción o unidad de transformación.
También es posible determinar el área, en la que la compensación de iluminación se realiza, en una imagen o en un corte, y luego determinar si realizar la compensación de iluminación para cada bloque incluido en el área. Por ejemplo, cuando el área predeterminada incluye una pluralidad de unidades de árbol de codificación, una pluralidad de unidades de codificación, una pluralidad de unidades de predicción o una pluralidad de unidades de transformación, la información que indica si se realiza o no la compensación de iluminación para cada bloque incluido en el área predeterminada puede señalarse. Por consiguiente, la compensación de iluminación puede realizarse selectivamente para cada uno de los bloques incluidos en las unidades para realizar la compensación de iluminación.
Basándose en la anterior descripción, el método de predicción de
compensación de iluminación de acuerdo con la presente invención se describirá en detalle.
La FIG. 15 es un diagrama de flujo de un método de predicción de compensación de iluminación de acuerdo con la presente invención.
Primero, un parámetro de compensación de iluminación para un bloque actual puede determinarse S1510. El parámetro de compensación de iluminación puede incluir al menos uno de una ponderación de compensación de iluminación o una desviación.
El parámetro de compensación de iluminación puede señalarse a través de una tasa de bits en unidades de una secuencia, una imagen, un corte o un bloque de codificación/decodificación. Aquí, la unidad del bloque de codificación/decodificación puede representar al menos uno de una unidad de árbol de codificación, unidad de codificación, unidad de predicción o unidad de transformación.
Como alternativa, también es posible señalar el parámetro de compensación de iluminación para cada área predeterminada en la que la compensación de iluminación se realiza. Por ejemplo, el parámetro de compensación de iluminación puede señalarse para un área predeterminada que incluye una pluralidad de bloques. La pluralidad de bloques incluidos en el área predeterminada puede usar el mismo parámetro de compensación de iluminación.
El parámetro de compensación de iluminación puede señalarse independientemente de un modo de codificación del bloque actual. Como alternativa, puede determinarse si se señala o no el parámetro de compensación de iluminación de acuerdo con el módulo de codificación del bloque actual. Por ejemplo, el parámetro de compensación de iluminación puede señalarse solo cuando el modo de codificación del bloque actual tiene un modo predefinido. Aquí, el modo de codificación puede indicar si el bloque actual se codifica en intrapredicción (es decir, en el modo de intra-predicción) o si el bloque actual se codifica en inter-predicción (es decir, modo de inter-predicción). Por ejemplo, el parámetro de compensación de iluminación puede señalarse solo cuando el bloque actual se codifica por inter-predicción. Como alternativa, también es posible que el modo de codificación pueda indicar uno de un modo de omisión, modo de fusión, modo AMVP o un modo de referencia de imagen actual, que son métodos de inter predicción del bloque actual. Aquí, el modo de referencia de imagen actual representa un método de inter-predicción en el que una imagen actual que incluye
el bloque actual se usa como imagen de referencia. Cuando el modo de referencia de imagen actual se usa, un bloque de predicción del bloque actual puede derivarse de un área reconstruida anterior al bloque actual. También es posible clasificar el módulo de referencia de imagen actual como un modo de intra-predicción en lugar de modo de inter-predicción. Como alternativa, el modo de referencia de imagen actual puede entenderse como una realización de un modo de omisión, un modo de fusión o modo AMVP.
Como ejemplo, cuando el bloque actual se codifica con el modo de omisión o modo de referencia de imagen actual, el parámetro de compensación de iluminación puede no señalarse. Por otro lado, cuando el bloque actual se codifica con el modo de fusión o modo AMVP, el parámetro de compensación de iluminación puede señalarse a través de la tasa de bits. Si el parámetro de compensación de iluminación no se señala, la compensación de iluminación para el bloque actual puede no realizarse. Como alternativa, si el parámetro de compensación de iluminación no se señala, la compensación de iluminación del bloque actual puede realizarse usando el parámetro de compensación de iluminación predefinido en el codificador/decodificador.
El parámetro de compensación de iluminación puede derivarse basándose en un cambio de iluminación entre una primera área de plantilla en la imagen actual y una segunda área de plantilla en la imagen de referencia. La primera área de plantilla puede ser adyacente al bloque actual y, la segunda área de plantilla puede ser adyacente al bloque de referencia. Aquí, el bloque de referencia se usa para generar el bloque de predicción del bloque actual, y puede especificarse por un vector de movimiento del bloque actual. Como alternativa, la segunda área de plantilla puede tener una posición co-ubicada con la primera área de plantilla en la imagen de referencia. La posición de la segunda área de plantilla puede determinarse de forma variable de acuerdo con la imagen de referencia o modo de codificación del bloque actual.
Cuando una muestra no disponible se incluye en la segunda área de plantilla, un valor de sustitución puede asignarse a la muestra no disponible usando una muestra disponible. Por ejemplo, la muestra disponible puede copiarse a una posición de la muestra no disponible, o un valor interpolado calculado usando una pluralidad de muestras disponibles puede asignarse a la posición de la muestra no disponible. La muestra disponible puede incluirse en la segunda región de plantilla o puede ubicarse fuera de la segunda región de plantilla. Por ejemplo, el valor de
sustitución de la muestra no disponible incluida en la segunda área de plantilla puede calcularse basándose en la muestra disponible incluida en el bloque de referencia. Al menos uno de un coeficiente de filtro, una forma o el número de derivaciones (taps) de filtro de un filtro usado en la interpolación puede determinarse de forma variable basándose en al menos uno de un tamaño o una forma de la región de plantilla.
El parámetro de compensación de iluminación puede calcularse basándose en un valor de diferencia entre muestras incluidas en la primera región de plantilla y muestras incluidas en la segunda región de plantilla. Por ejemplo, cuando una muestra cercana del bloque actual se asume como yi (i es 0 a N-1) y una muestra cercana del bloque de referencia se asume como xi (i es 0 a N-1), la ponderación de compensación de iluminación 1 y la desviación f pueden derivarse calculando el valor mínimo de E (w, f), en la Ecuación 4.
[Ecuación 4]
La Ecuación 4 puede modificarse como la siguiente Ecuación 5.
[Ecuación 5]
Desde la Ecuación 5, la Ecuación 6 para derivar la ponderación de compensación de iluminación 1 y la Ecuación 7 para derivar la desviación f pueden derivarse.
[Ecuación 6]
^ N Z p c jy r lp c ^ jy j+ l
NZpcix i-'Zpc¡Lix i \
[Ecuación 7]
Si el parámetro de compensación de iluminación se determina, la compensación de iluminación para el bloque actual puede realizarse usando el parámetro de compensación de iluminación determinado S1520. La compensación de iluminación puede realizarse aplicando la ponderación de compensación de iluminación y la desviación a un bloque (por ejemplo, bloque de predicción o bloque de reconstrucción) que se codifica/decodifica en la intra-predicción o la inter predicción.
Cuando la dirección de inter-predicción del bloque actual indica una
pluralidad de direcciones, la compensación puede realizarse en al menos uno de una pluralidad de bloques de predicción, y una predicción multidireccional puede realizarse en el bloque actual basándose en el bloque de predicción al que se aplica la compensación de iluminación. Por ejemplo, si la predicción ponderada bidireccional se aplica al bloque actual, la compensación de iluminación puede realizarse en al menos uno de un primer bloque de predicción y un segundo bloque de predicción y luego un bloque predicho final o un bloque predicho bidireccionalmente del bloque actual puede generarse basándose en la operación de suma ponderada entre el primer bloque de predicción y el segundo bloque de predicción.
La FIG. 16 es un diagrama de flujo de un método de predicción ponderada bidireccional basado en compensación de iluminación.
En referencia a la FIG. 16, primero, puede determinarse si la compensación de iluminación se realiza o no en una imagen de referencia S1610. Si la compensación de iluminación se realiza o no en la imagen de referencia puede determinarse basándose en información señalada a través de la tasa de bits. La información puede ser una bandera de 1 bit, pero no se limita a esto. Por ejemplo, pred_ic_comp_flag puede indicar si la compensación de iluminación se realiza o no en la imagen de referencia.
Si se determina que la compensación de iluminación debe realizarse en un bloque de referencia, la imagen de referencia en la que la compensación de iluminación se realiza puede determinarse S1620. Específicamente, cuando se determina que la compensación de iluminación se realiza en el bloque de referencia, es posible determinar si se realiza la compensación de iluminación en una imagen de referencia L0 o se realiza la compensación de iluminación en una imagen de referencia L1. La determinación puede realizarse basándose en información señalada a través de la tasa de bits. La información puede especificar una de las imágenes de referencia. Como alternativa, la información puede ser una pluralidad de banderas de 1 bit que indican si la compensación de iluminación se realiza o no en cada imagen de referencia. Por ejemplo, al menos uno de pred_ic_comp_10_enalbed_flag que indica si la compensación de iluminación se realiza para la imagen de referencia L0 o pred_ic_comp_11_enalged_flag que indica si la compensación de iluminación se realiza en la imagen de referencia L1 puede señalarse a través de la tasa de bits.
Si la imagen de referencia en la que la compensación de iluminación se
realiza se determina, un parámetro de compensación de iluminación a aplicar a la imagen de referencia puede determinarse S1630. Ya que la determinación del parámetro de compensación de iluminación se ha descrito en detalle en referencia a la FIG. 15, una descripción detallada del mismo se omitirá en esta realización.
Basándose en el parámetro de compensación de iluminación determinado, la compensación de iluminación puede realizarse en un bloque de predicción generado basándose en la imagen de referencia en el que la compensación de iluminación se realiza S1640. Después, la predicción ponderada bidireccional para el bloque actual puede realizarse usando el bloque de predicción compensado de iluminación S1650.
La FIG. 17 es un diagrama que ilustra un ejemplo de realización de predicción ponderada bidireccional usando un bloque de predicción en el que la compensación de iluminación se aplica. En la FIG. 17, se ilustra que la compensación de iluminación se ha realizado en un bloque de predicción generado basándose en la imagen de referencia L1. Por consiguiente, la predicción ponderada bidireccional para el bloque actual puede realizarse basándose en una suma ponderada de un bloque de predicción P0 generado basándose en la imagen de referencia L0 y el bloque de predicción compensado de iluminación (1*P1+f) generado basándose en la imagen de referencia L1.
También es posible realizar la predicción ponderada bidireccional para el bloque actual basándose en una ponderación de compensación de iluminación usada para la compensación de iluminación.
Como ejemplo, basándose en la ponderación de compensación de iluminación, un parámetro de predicción ponderado del bloque actual puede derivarse para realizar la predicción ponderada bidireccional en el bloque actual. En este momento, el parámetro de predicción ponderado w del bloque actual puede establecerse en el mismo valor que la ponderación de compensación de iluminación 1, o puede establecerse en (1-1). Por ejemplo, cuando la compensación de iluminación basada en la ponderación de compensación de iluminación 1 se aplica al bloque de predicción generado basándose en la imagen de referencia L0, la predicción ponderada bidireccional para el bloque actual puede calcularse basándose en la Ecuación 8 a continuación.
[Ecuación 8]
Como ejemplo, también es posible realizar la predicción ponderada bidireccional del bloque actual, aplicando una ponderación determinada por el parámetro de predicción ponderado a uno de la pluralidad de bloques de predicción y aplicando la ponderación de compensación de iluminación al otro. Por ejemplo, la predicción ponderada bidireccional para el bloque actual puede calcularse basándose en la Ecuación 9 a continuación.
[Ecuación 9]
Aunque las realizaciones antes descritas se han descrito basándose en una serie de etapas o diagramas de flujo, estas no limitan el orden temporal-en serie de la invención, y pueden realizarse simultáneamente 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 antes descritas puede 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 antes descritas pueden implementarse en la forma de instrucciones de programa que pueden ejecutarse a través de diversos componentes informáticos y registrarse en un medio informático legible a ordenador. El medio de registro legible a ordenador puede incluir uno o una combinación de comandos informáticos, archivos de datos, estructuras de datos y similares. Los ejemplos de los medios legibles a ordenador incluyen medios magnéticos tal como discos duros, disquetes y cinta magnética, medios de registro ópticos tales como CD-ROM y DVD, medios magneto-ópticos tal como discos floptical, medios y dispositivos de hardware específicamente configurados para almacenar y ejecutar instrucciones del programa tal como ROM, RAM, memoria flash, y similares. El dispositivo de hardware puede configurarse para operar como uno o más modelos 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 son capaces de codificar/decodificar una señal de video.