Definición de filtro de borde de desbloqueo

In document Unión Internacional de Telecomunicaciones (página 97-101)

Anexo I – Modo codificación INTRA avanzada

J.3 Definición de filtro de borde de desbloqueo

Las operaciones del filtro se efectúan en los bordes de bloques 8 × 8 del lado codificador así como del lado decodificador. Los datos de la imagen reconstruida (la suma del error de predicción y de predicción reconstruida) se recortan para que caigan en la gama de 0 a 255 como se describe en 6.3.2. A continuación se aplica el filtrado, que altera la imagen que se ha de almacenar en el almacenamiento de imágenes para predicción futura. Las operaciones de filtrado incluyen un recorte adicional para asegurar que los valores de píxel resultantes permanecen en la gama de 0 a 255. No se efectúa ningún filtrado en la frontera de una imagen y, si se utiliza el modo codificación de segmento independiente, no se efectúa filtrado en los bordes de una rebanada cuando se utiliza el modo estructura en rebanada (véanse los anexos K y R) ni en el límite superior de los GOB que tienen encabezamiento GOB cuando no se utiliza el modo estructura en rebanada (véase el anexo R). Los datos de crominancia así como los de luminancia si son filtrados.

Cuando se utiliza el modo descrito en este anexo junto con el modo tramas PB mejoradas del anexo M, la predicción hacia atrás del macrobloque B se basa en el macrobloque P reconstruido (al que se denomina PREC en G.5) después de la operación de recorte pero antes de las operaciones de filtro de borde de desbloqueo. La predicción hacia adelante del macrobloque B se basa en la versión filtrada de la imagen decodificada anterior (los mismos datos de imagen que se utilizan para la predicción del macrobloque P).

El filtro de desbloqueo funciona utilizando un conjunto de cuatro valores de píxel (recortados) en una línea horizontal o vertical de la imagen reconstruida, a los que se designa por A, B, C y D, de los cuales A y B pertenecen a un bloque llamado bloque 1 y C y D pertenecen a un bloque contiguo llamado bloque2, que está a la derecha o debajo del bloque1. La figura J.1 muestra ejemplos de posiciones de estos píxels.

A D C B D C B A T1602910-97 Ejemplo de píxels filtrados en un borde de bloque vertical bloque1 bloque2

bloque1 Ejemplos de píxels filtradosen un borde de bloque horizontal

Frontera de bloque

Figura J.1/H.263 – Ejemplos de posiciones de píxels filtrados

Una o ambas de las siguientes condiciones se deben cumplir para aplicar el filtro en un determinado borde:

– Condición 1: el bloque1 pertenece a un macrobloque codificado (COD==0 || tipo MB == INTRA), o

– Condición 2: el bloque2 pertenece a un macrobloque codificado (COD==0 || tipo MB == INTRA).

Si se ha de aplicar filtrado en el borde, A, B, C y D deben ser sustituidos por A1, B1, C1 y D1, donde: B1 = clip(B + dl) [recorte de (B + d1)] C1 = clip(C − dl) [recorte de (C − d1)] A1 = A − d2 D1 = D + d2 d = (A−4B+4C−D) / 8

d1 = UpDownRamp(d, STRENGTH) (d1 = función ascendente/descendente de "d") d2 = clipd1((A − D) / 4, dl/2)

UpDownRamp(x, STRENGTH) = SIGN(x) * (MAX(0, abs(x)−MAX(0, 2*(abs(x) −STRENGTH))))

STRENGTH depende de QUANT y determina el grado de filtrado. La relación entre STRENGTH y QUANT se indica en el cuadro J.2.

QUANT = parámetro de cuantificación utilizado para el bloque2 si el bloque2 pertenece a un macrobloque codificado, o

QUANT = parámetro de cuantificación utilizado para el bloque1 si el bloque2 no pertenece a un macrobloque codificado (pero el bloque1 sí).

Cuadro J.2/H.263 – Relación entre QUANT y STRENGTH de filtro

QUANT STRENGTH QUANT STRENGTH 1 1 17 8 2 1 18 8 3 2 19 8 4 2 20 9 5 3 21 9 6 3 22 9 7 4 23 10 8 4 24 10 9 4 25 10 10 5 26 11 11 5 27 11 12 6 28 11 13 6 29 12 14 7 30 12 15 7 31 12 16 7

La función clip(x) se define de acuerdo con 6.3.2 y la función clipd1(x, lim) recorta x para que caiga en la gama ± abs(lim). El símbolo "/" significa división por truncamiento hacia cero.

La figura J.2 muestra cómo varía el valor de d1 en función de d. De esa dependencia resulta que el filtro sólo tiene efecto si d es más pequeño que 2*STRENGTH (y distinto de cero). Con ello se trata de evitar el filtrado de bordes verdaderos fuertes en el contenido de la imagen. No obstante, si se utiliza el modo actualización de resolución reducida, se fija STRENGTH en infinito y, en consecuencia, el valor de d1 es siempre igual al valor de d (véase Q.7.2).

d d1

T1602920-97

Strength 2*Strength

Con la definición de d1 se pretende garantizar que los pequeños desajustes entre el codificador y el decodificador seguirán siendo de escasa identidad y no se acumularán en múltiples imágenes de una secuencia de vídeo. Si tal cosa ocurriera crearía dificultades ya que, por ejemplo, con una condición que activara o desactivara el filtro, un desajuste de tan sólo ±1 para d podría provocar a continuación la activación del filtro en el lado codificador y la desactivación en el lado de decodificador, o viceversa.

Debido a los efectos del redondeo, se ha de especificar el orden de los bordes en donde se efectúa el filtrado.

Filtrado en bordes horizontales:

Se supone básicamente que este proceso es el que ocurre en primer lugar. De manera más precisa,

los píxels A B C D            

que se utilizan en el filtrado en un borde horizontal no deberán estar influenciados

por un filtrado previo en un borde vertical. Filtrado en bordes verticales:

Antes de proceder al filtrado en un borde vertical utilizando los píxels (A, B, C, D), deberán producirse todas las modificaciones de píxels (A, B, C, D) resultantes del filtrado en un borde horizontal.

Se señala que si uno o más de los píxels (A, B, C, D) que interviene en un proceso de filtrado queda fuera de una imagen, el filtrado no tiene lugar. Además, si se utiliza el modo codificación de segmento independiente (véase el anexo R) y uno o más de los píxels (A, B, C, D) que intervienen en un proceso de filtrado se encuentran en segmentos de imagen de vídeo diferentes (véase I.3 a propósito del caso en que se considera que un bloque se encuentra en el mismo segmento de imagen de vídeo que otro bloque), no se efectúa el filtrado.

Anexo K

Modo estructura en rebanada

K.1 Introducción

Este anexo describe el modo estructura en rebanada opcional de la presente Recomendación. La capacidad de este modo se señaliza por medios externos (por ejemplo, aplicando la Rec. UIT-T H.245). La utilización de este modo se indica en el campo PLUSPTYPE del encabezamiento de imagen. Para facilitar su empleo óptimo en varios ambientes, este modo contiene dos submodos que también pueden ser señalizados por medios externos (por ejemplo, aplicando la Rec. UIT-T H.245). Los submodos se utilizan para indicar si se utilizarán o no rebanadas rectangulares y/o si las rebanadas se transmitirán en orden secuencial o se enviarán en un orden cualquiera.

Una rebanada consiste en un encabezamiento de rebanada seguido de macrobloques consecutivos en orden de exploración. La rebanada que sigue inmediatamente al código de comienzo de imagen en el tren de bits de una imagen (que no es necesariamente la rebanada que comienza con el macrobloque 0) es una excepción. En este caso, sólo se transmite parte del encabezamiento de la imagen, como se describe en K.2. La capa de rebanada define un segmento de imagen de vídeo y se utiliza en vez de la capa de GOB en este modo opcional. Un segmento de imagen de vídeo de

rebanada comienza en el límite de un macrobloque de la imagen y contiene varios macrobloques. Rebanadas diferentes dentro de una misma imagen no deberán superponerse entre sí, y cada macrobloque deberá pertenecer a una, y sólo una, rebanada.

Este modo contiene dos submodos que se señalan en el campo SSS del encabezamiento de la imagen:

1) El submodo rebanada rectangular (RS, rectangular slice): Cuando se utilice RS, la rebanada deberá ocupar una región rectangular de anchura especificada por el parámetro SWI del encabezamiento de la rebanada en unidades de macrobloques, y contiene varios macrobloques en orden de exploración dentro de la región rectangular. Cuando no se utiliza el submodo rebanada rectangular, el campo SWI no está presente en el encabezamiento de la rebanada y una rebanada contiene varios macrobloques en orden de exploración dentro de la imagen en su conjunto.

2) El submodo orden arbitrario de las rebanadas (ASO, arbitrary slice ordering): Cuando se utiliza ASO, las rebanadas pueden aparecer en cualquier orden dentro del tren de bits. Cuando no se utilizan, las rebanadas deben ser enviadas en el orden (único) según el cual crece de manera estricta el campo MBA del encabezamiento de rebanada de una rebanada a la siguiente en la imagen.

Los límites de las rebanadas se tratan de manera diferente a la de los límites de simples macrobloques, para permitir que las ubicaciones de los encabezamientos de las rebanadas dentro del tren de bits actúen como puntos de resincronización a efectos de restablecimiento del funcionamiento normal tras producirse errores en los bits y pérdida de paquetes, de modo que sea posible decodificar rebanadas fuera de orden dentro de una imagen. Así pues, ninguna dependencia de datos puede atravesar los límites de las rebanadas dentro de la imagen vigente, excepto en el caso del modo filtro de bloqueo con el que, si se utiliza sin el modo codificación de segmento independiente, se filtra en los límites de los bloques de la imagen. No obstante, los vectores de movimiento dentro de una rebanada pueden hacer que dependencias de datos atraviesen los límites de la rebanada en la imagen de referencia utilizada a efectos de predicción, a menos que se utilice el modo opcional codificación de segmento independiente.

Las reglas que siguen se han adoptado para asegurar que las ubicaciones de los límites de las rebanadas pueden actuar como puntos de resincronización y que las rebanadas pueden ser enviadas en un orden cualquiera sin provocar retardos de decodificación adicionales:

1) La predicción de los valores del vector de movimiento es la misma que si estuviera presente un encabezamiento GOB (véase 6.1.1), impidiendo la utilización de vectores de movimiento de bloques fuera de la rebanada de que se trate para la predicción de los valores de los vectores de movimiento dentro de la rebanada.

2) El modo codificación INTRA avanzada, (véase el anexo I) trata el límite de la rebanada como si fuera una frontera de imagen con respecto a la predicción de valores de coeficientes DCT de bloque INTRA.

3) La asignación de vectores de movimiento distantes para utilizarlos en la compensación de movimiento para bloques superpuestos en el modo predicción avanzada impide también la utilización de vectores de movimiento de bloques fuera de la rebanada de que se trate para utilizarlos como vectores de movimiento distantes (véase F.3).

In document Unión Internacional de Telecomunicaciones (página 97-101)