• No se han encontrado resultados

Codificación de Video Basada en el uso de Transformada Wavelet y Cuantización Vectorial

N/A
N/A
Protected

Academic year: 2021

Share "Codificación de Video Basada en el uso de Transformada Wavelet y Cuantización Vectorial"

Copied!
15
0
0

Texto completo

(1)

Codificación de Video Basada en el uso de Transformada Wavelet y Cuantización Vectorial

Julián Pérez Sotelo

Abstract—Este trabajo presenta un esquema de codificación de video basado en el uso de Wavelets y Cuantización Vectorial, desarrollado para la compresión de video digital, compuesto por secuencias de imágenes en formato JPEG obtenidas a través de una cámara de vigilancia IP. Este esquema explota la redundancia temporal presente en las secuencias, utilizando el “Rellenado Condicional” de los índices de los

“Vectores Código”, obtenidos mediante el algoritmo “Divide Uno”.

Términos Importantes—Descomposición en subbandas, Wavelet, Cuantización Vectorial, Rellenado Condicional, Diccionario, Vector Código, Secuencia de entrenamiento, Compresión de video.

INTRODUCCIÓN

El uso de la descomposición en sub-bandas en la codificación y compresión de imágenes tiene una larga historia. Estudios recientes han indicado que las ondeletas o wavelets pueden ser utilizadas para formar representaciones multi-resolución de imágenes debido a su selectividad de frecuencias y localización de cambios abruptos. Estas propiedades han hecho de las ondeletas una herramienta poderosa para la compresión de imágenes estáticas. Las sub-bandas producidas por la descomposición pueden ser codificadas por una amplia variedad de técnicas, entre las cuales destaca la cuantización vectorial, que es utilizada en el desarrollo de esquemas de compresión de baja tasa de bits.

La principal diferencia entre las técnicas desarrolladas para codificación de video combinando el uso de ondeletas y cuantización vectorial, es la estrategia que éstas emplean para la codificación de las bandas no dominantes, es decir las bandas correspondientes a las frecuencias más altas.

La reducción en la tasa de datos se logra al explotar la redundancia de las secuencias de imágenes, la cual surge del hecho de que gran parte de la información permanece constante o es predecible, dado que los cambios entre cuadros son pocos.

Se logra remover la redundancia al codificar secuencias de imágenes. Los algoritmos de compresión pueden trabajar sobre un solo cuadro (intra-frame), entre cuadros de una secuencia (inter-frame), o utilizar una combinación de ambos.

Los sistemas prácticos tienden a ser híbridos que combinan un número de diferentes mecanismos de compresión.

RELLENADO CONDICIONAL (“Conditional Replenishment”)

Este es un algoritmo de codificación “inter-frame”, el cual requiere la retención de un cuadro de referencia en el transmisor. El algoritmo comienza por dividir el cuadro en elementos pequeños, llamados bloques, aunque también se pueden utilizar líneas. Cada elemento o píxel es comparado con la misma localización en el cuadro de referencia y se calcula alguna medida de diferencia entre los píxeles.

Si esta medida es mayor que algún umbral de decisión, se asume que el píxel ha cambiado y el nuevo valor es enviado al receptor y se actualiza en el cuadro de referencia, si la diferencia no es mayor que el valor de umbral, entonces no se envía ningún dato. El cuadro desplegado es por lo tanto, una mezcla de valores de nuevos y viejos píxeles.

CODIFICACIÓN POR USO DE TRANSFORMADAS (“Transform Coding”)

Este tipo de codificación intenta transformar o convertir las muestras de la imagen que se tienen a la entrada, de un dominio a otro. Es usual aplicar una transformada bidimensional a una imagen bidimensional, y entonces “cuantizar” los valores de las muestras ya transformadas. En este punto debemos notar que el empleo de transformadas, por si solo no proporciona un mecanismo de compresión.

(2)

A menudo, un coeficiente de transformada es la salida para cada muestra de amplitud de video de entrada.

De cualquier forma, muchos valores de una imagen bidimensional, se transforman en un número mucho menor de muestras con magnitud “significativa”, lo cual quiere decir que los valores con magnitud “no significativa” se pueden descartar.

Más aún, la resolución de cuantización de una muestra de salida en particular se puede escoger de forma que refleje la importancia de esa muestra con respecto a la imagen total.

Para reconstruir la imagen, los coeficientes que se conservaron, son introducidos en un transformador inverso, de forma que se recupere una aproximación del video de entrada original. Ésta es por lo tanto una forma de codificación “con pérdidas” (lossy compression).

Mucha de la información visual registrada por el ojo humano, está contenida en los coeficientes de las frecuencias bajas, por lo tanto, en el proceso de cuantización, que involucra asignar un número diferente de bits a cada coeficiente, se le asignan menos bits a los coeficientes de las frecuencias más altas, e incluso a algunos se les asigna cero bits, ya que no se requieren para reconstruir una imagen de calidad aceptable.

Los codificadores de transformadas prácticos incluyen otros elementos además de las operaciones de transformación y codificación descritos anteriormente. Se puede lograr compresión adicional utilizando codificación del tipo “longitud variable”, operando sobre la salida del cuantizador, por ejemplo codificación de Huffman.

CODIFICACIÓN DE “CORRIDA Y LONGITUD” (“Run-Lentgh Coding”)

Este es un algoritmo de compresión intra-frame y se ajusta mejor a imágenes o flujos de video con largas secciones compuestas por píxeles idénticos. El algoritmo simplemente detecta valores idénticos de los píxeles y nota el punto de comienzo y el número de píxeles en la corrida, de ahí el nombre. Esta información se transmite entonces en lugar de los valores de los píxeles originales. Para lograr una ganancia significativa, las longitudes de las corridas deben ser suficientemente largas.

OBJETIVOS GENERALES Y ESPECÍFICOS

El objetivo general del presente trabajo es lograr la codificación de una secuencia de video, aplicando el esquema propuesto inicialmente, que consta de la combinación de varias técnicas de compresión y una técnica de descomposición de los datos.

Para la descomposición en sub-bandas de frecuencia se ha escogido trabajar con la Transformada

“Wavelet” o Transformada “Ondeleta”. La técnica de compresión de datos, será una combinación del uso del “Rellenado Condicional” y la Cuantización Vectorial, aplicados a un diccionario obtenido mediante el algoritmo “Divide Uno”.

Uno de los objetivos es lograr la obtención de diccionarios de buena calidad que puedan ser utilizados en la codificación y compresión de las secuencias de video. Se ha escogido el algoritmo “Divide Uno”

debido a su sencillez de implementación.

El segundo objetivo es lograr la compresión de un archivo de video utilizando los diccionarios obtenidos y aplicando un algoritmo de compresión que también será diseñado.

(3)

METODOLOGÍA UTILIZADA

DESCOMPOSICIÓN DE VIDEO EN SUB-BANDAS ESPACIOTEMPORALES

La descomposición espaciotemporal en sub-bandas de secuencias de imágenes, comienza con la descomposición temporal, la cual es seguida por la descomposición espacial de las bandas resultantes. En las fases temporal y espacial del esquema empleado en este trabajo se muestra en la siguiente figura, la cual muestra la descomposición espaciotemporal de una señal de video en 11 sub-bandas.

Fig. 1. Esquema de descomposición espaciotemporal wavelet, en once subbandas.

En la fase de descomposición temporal, los cuadros de la secuencia de imágenes, son pasados bloque a bloque por un banco de filtros que contiene un filtro temporal de paso bajo (LP) y uno de paso alto (HP).

El filtrado temporal resulta en dos sub-bandas: la temporal de paso bajo (LPT) y la temporal de paso alto (HPT).

En la fase de descomposición espacial, cada una de las sub-bandas LPT y HPT, se pasan por a través de un banco de filtros que realizan el filtrado paso bajo a lo largo de la dimensión horizontal (LPh) y el filtrado paso alto a lo largo de la dimensión horizontal (HPh).El filtrado paso bajo y paso alto son seguidos de un “submuestreo” (downsampling), por un factor de 2. Cada una de las sub-bandas resultantes es pasada a través de un banco de filtros que realizan un filtrado paso bajo sobre la dimensión vertical (LPv) y un filtrado paso alto sobre la dimensión vertical (HPv), nuevamente se realiza un submuestreo a las bandas resultantes.

Esta secuencia de operaciones completa un nivel de descomposición espacial de las sub-bandas LPT y HPT. Las sub-bandas resultantes pueden ser descompuestas aún más. La descomposición espacial se logró empleando un banco de filtros basados en el filtro biortogonal de 9 coeficientes (BIOG9). Los cuadros de la secuencia descompuesta pueden ser reconstruidos utilizando sobremuestreo seguido por filtraje wavelet inverso.

CUANTIZACIÓN VECTORIAL Y DISEÑO DE LOS DICCIONARIOS

La cuantización vectorial (VQ) puede ser vista como un “mapeo” desde un espacio Euclideano n- dimensional hacia un conjunto finito de vectores, comúnmente llamados “vectores código” (code-vector) o “prototipos” (protoypes), los cuales forman un “diccionario” (Codebook). Dado un diccionario

V=

8

v1, v2, ..., vc

<

, vj e Ñn, 1£j£c

un cuantizador vectorial Q de dimensión n y tamaño c se define de la siguiente manera: Q:Ñ - >VÌ Ñn

(4)

Con un cuantizador vectorial de este tipo disponible, la codificación se logra al mapear cualquier vector de entrada xe Ñn hacia el índice de su vector código más cercano. El proceso de decodificación realiza un mapeo inverso desde el conjunto de índices hacia los vectores código contenidos en el diccionario.

Un asunto central en las aplicaciones de la cuantización vectorial es la generación de un conjunto de vectores representativos, lo cual es realizado por los algoritmos de diseño de diccionarios, utilizando un conjunto de “vectores de entrenamiento” (Training Set).

En aplicaciones de compresión de video, los vectores de entrenamiento se obtienen de una sola secuencia de imágenes o un ensamble de secuencias de imágenes y forman un conjunto finito

X=

8

x1, x2, ..., xM

<

Ì Ñn llamado “conjunto de entrenamiento” (Training Set). El diccionario V se obtiene al partir el conjunto de entrenamiento en c subconjuntos o agrupamientos (clusters) durante el proceso de diseño.

Fig.

ALGORITMO “DIVIDE UNO” (Split one)

Comienza con un solo prototipo y se diseña un diccionario conteniendo c prototipos al dividir un vector código en cada iteración. El primer prototipo v1 se calcula como el centroide del conjunto de vectores de entrenamiento completo, los vectores xi, 1£i£M.

En la primera iteración, el prototipo v1 se divide para crear un codebook de tamaño 2 conteniendo un nuevo prototipo v2 y una versión actualizada del prototipo original v1.

Uno de estos dos prototipos es dividido subsecuentemente para producir un diccionario de tamaño 3. Este procedimiento se repite hasta que se obtiene un prototipo del tamaño deseado.

Supongamos que después de v-1 iteraciones, el codebook contiene los prototipos vj,1£j£v.

Sea Cj el conjunto de enteros entre 1 y M formado por los índices de los vectores de entrenamiento representados por el prototipo vj, o sea:

Cj=

9

i

É

1£i£M:

È

xi- vj

È È

2<

È È

xi- vl

È È

2, l¹j

=

Cj es el conjunto de enteros i, entre 1 y M tales que: el cuadrado de la norma de la diferencia entre el vector de entrenamiento y su representación es menor que el cuadrado de loa norma de la diferencia del vector de entrenamiento y cualquier otra representación”

Si

8

xiE

<

ji denota el error de cuantización asociado con la representación de los vectores de entrenamiento eCj por el prototipo vj o sea si:

Ej= i

â

Î Ej

È È

xi - vj

È È

2

el prototipo vk se dividirá si: Ek>Ej, j¹ k

“Si el error asociado con un prototipo es mayor que el error asociado con cualquier otro prototipo”

Si xl es el vector de entrenamiento que tiene la mayor contribución al error de cuantización, Ek o sea:

(5)

“El cuadrado de la norma de la diferencia del vector de entrenamiento y el prototipo que produce más error es mayor que el cuadrado de la norma de la diferencia de cualquier otro vector de entrenamiento y el prototipo que produce más error”, entonces, el error Ek puede ser reducido al dividir el prototipo vk (el que produce más error) en la dirección vk- xl .

El dividir al prototipo vk produce dos nuevos prototipos: vk yvk+1.

El nuevo prototipo vk se obtiene al mover al prototipo vk original hacia por una cantidad d Î

H

0, 1

L

,

o sea:

vk< -

H

1+ d

L

vk+ dxl = vk+ d

H

xl- vk

L

En orden de balancear el efecto de mover hacia xl , el nuevo prototipo vv+1 se obtiene al mover al prototipo original por una cantidad igual d Î

H

0, 1

L

, pero en la dirección opuesta, o sea:

vv+1< -

H

1+ d

L

vk- dxl= vk- d

H

xl- vk

L

El codebook resultante después de dividir un prototipo puede ser mejorado al calcular cada prototipo vj como el centroide de los vectores de entrenamiento

8

xi

<

ieCj , con Cjdefinido como:

Cj=

9

i

É

1£i£ M:

È

xi- vj

È È

2 <

È È

xi- vl

È È

2, l¹ j

=

Fig. 1. Muestra la forma en que a partir de un solo vector (Centroide), se va construyendo el Diccionario. Cada punto en la imagen es un vector (Vector Código), el cual representará a cualquier vector que esté contenido dentro del mismo espacio vectorial.

Resumiendo:

1.-Se calcula el centroide

2.-Se calcula el error del centroide con cada vector de entrenamiento

3.-En la primera iteración, no se busca al vector prototipo que produce más error, pues solo tenemos al centroide.

4.-Entonces se divide al centroide y se obtienen 2 prototipos:

a) Moviendo vk hacia xl se obtiene el nuevovk, se calcula el error de vk con cada vector de entrenamiento.

b) Moviendo vk contra xl se obtiene un vector más:vv+1, se calcula el error de vv+1 con cada vector de entrenamiento.

5.-Se comparan los vectores obtenidos en a) y b) y si vk produce más error, vv+1 se va al diccionario y vk se va a división, en caso contrario, vk se va al diccionario y vv+1 se va a división.

Es decir, el movimiento se realiza en dirección de los vectores que producen más error, pero conservando los vectores que quedan más cercanos al centroide.

Ahora debemos definir el valor de d . Dado que estamos trabajando con vectores, la varianza será un vector, que nos indicará la dirección en que los vectores de entrenamiento se alejan del centroide. Debido a que el valor de la varianza puede ser mayor que la unidad, será necesario normalizarlo, de forma que el alejamiento de los vectores vk y vv+1 con respecto al centroide sea paulatino. El valor de d será la varianza normalizada, ya que lo que nos interesa es la dirección de este vector y no su magnitud.

(6)

ESQUEMA DE CODIFICACIÓN

Para el presente trabajo se utilizaron secuencias de video obtenidas a través de una cámara de vigilancia IP, instalada en el pasillo del tercer piso del edificio T de la universidad (UAM-I). El formato de las secuencias es AVI, compuesto por imágenes JPEG. La siguiente figura muestra la estructura en la cual están guardados los datos.

Fig. 2. Estructura en la que se almacenan los datos en una secuencia de video en formato AVI.

La entrada al sistema de codificación es la secuencia de video, llamada “Secuencia de Entrenamiento”.

Como se puede observar en la figura anterior, la secuencia de entrenamiento consta de 17 cuadros, los cuales están compuestos de un arreglo de 3 matrices de tamaño 256 X 320.

Esta secuencia de entrenamiento, es a su vez separada en cada uno de los cuadros (frames) que la constituyen. En la siguiente figura se puede apreciar la forma en que cada cuadro es separado en pequeños bloques. En la parte superior izquierda se puede apreciar un bloque. A su lado se muestra un recuadro con la imagen correspondiente a los datos contenidos en la matriz de 18 X 18.

Fig. 3. Muestra la correspondencia entre los datos y la imagen.

(7)

Como se puede observar en la figura anterior, los valores que conforman las matrices son del tipo UINT8, es decir, son enteros no signados de 8 bits, por lo que pueden tomar valores de 0 a 255. El valor más alto corresponde a un blanco y el cero al negro.

Cada cuadro es a su vez dividido en pequeños bloques de tamaño fijo. En caso de que el tamaño del cuadro no sea divisible en un número entero de bloques, se deberán agregar ceros, hasta hacerlo divisible.

Fig. 4. Muestra la forma en que se han agregado los ceros para realizar la división del cuadro en un número entero de bloques. Los bloques mostrados en la figura son de tamaño 128 X 128. En este punto debemos hacer notar que el tamaño real de los bloques fue

de 32 X 32.

ANÁLISIS DE LOS DATOS

Se realizó el análisis de los datos de forma que se pudieran diseñar lo diccionarios de una manera apropiada, es decir, que fueran lo más apegados a la información a la cual pretendían representar. Para esto, se analizaron los valores obtenidos después la descomposición.

La elaboración de los diccionarios resultó ser bastante complicada, debido a la disparidad de los valores de una misma sub-banda, la cual por supuesto crecía al analizar los valores entre distintas sub-bandas. Sin embargo, no era apropiado la creación de muchos diccionarios, puesto que la función de éstos es la de representar a un gran número de vectores.

Debemos mencionar que al modificar la secuencia de entrenamiento, los valores obtenidos diferían notablemente, y se obtenían diccionarios muy diversos. Por ejemplo, uno de los parámetros utilizados para dispersar el centroide, la varianza (d ), cambiaba demasiado y disparaba los valores de los vectores del diccionario, por lo que fue necesario encontrar la manera de normalizarla, sin que llegara por supuesto a la unidad, pero que tampoco tuviera valores muy pequeños, ya que entonces, para alcanzar los valores más grandes de la matriz, el diccionario debía ser de un tamaño muy grande, lo cual tampoco es recomendable, ya que el propósito final de los diccionarios es servir en la cuantización vectorial con fines de compresión.

(8)

A continuación se muestran algunas figuras que contienen algunos valores de los diccionarios obtenidos.

Fig. Muestra los valores que conforman el diccionario uno y los datos de una matriz de la sub-banda uno.

De acuerdo a las gráficas, podemos observar, que los datos de la sub-banda uno toman valores muy cercanos a cero, y van creciendo, hasta aproximarse a 1000. Al trabajar con todos los datos de la sub- banda uno, se encontraron valores cercanos a 1300, es por eso que el diccionario uno crece aproximándose a ese valor.

a)

b) c) d)

Fig.

(9)

a)

b) c) d)

Fig.

a)

b) c) c) Fig.

(10)

Con base en el análisis anterior, se decidió elaborar 4 diccionarios, de acuerdo al siguiente esquema:

Fig. Muestra la forma en que se eligieron las subbandas para la realización de los diccionarios. Los números a la extrema derecha corresponden al número de subbanda. Los números sobre (o al lado de) los cuadros representan el número de matriz y se han

agregado para facilitar el análisis visual de la información correspondiente.

Como se puede apreciar en la figura anterior, para la elaboración del diccionario uno se utilizaron únicamente los datos de la sub-banda uno, debido a su relevancia. Para los demás diccionarios se utilizaron los datos de tres subbandas para cada uno, debido a que los datos contenidos en éstas, eran más parecidos entre sí. De la misma manera, se decidió descartar a la subbanda once debido a que no aportaba información relevante, ya que la mayoría de sus datos eran igual a cero.

Visualmente también se verificó la importancia relativa de cada subbanda y a continuación se realiza un análisis de los mismos.

Como se describió previamente, al aplicar la Transformada Wavelet Discreta (DWT) sobre un vector, se obtienen dos nuevos vectores: de aproximación (cA) y de detalles (cD).Para muchas señales, el contenido de bajas frecuencias (“aproximación”, de gran escala) es el más importante. Es el que le da a la señal su identidad. Las altas frecuencias representan los “detalles”. El proceso básico se ve así:

Fig. Descomposición de una señal en sus componentes de aproximación (cA) y de detalles (cD).

En la siguiente figura se muestra la descomposición descrita anteriormente, aplicada a la secuencia de entrenamiento. Como podemos observar, el bloque de la derecha es simplemente un cuadro negro, esto es debido a que sus valores son iguales o muy cercanos a cero. Dado que sus coeficientes de detalle son muy pequeños, podríamos afirmar que visualmente se pueden descartar de la codificación y pueden simplemente ser sustituidos por ceros. Sin embargo, es necesario hacer un análisis de todos los cuadros de la secuencia.

(11)

Fig. Muestra la información contenida en el bloque (2,2). a) Información correspondiente a la matriz 2. b) Información correspondiente a la matriz 3.

Por el contrario, el bloque de la derecha evidentemente contiene información relevante, por lo que puede seguir descomponiéndose en más sub-bandas. La imagen anterior corresponde a un primer nivel de descomposición.

Fig. Muestra la información contenida en la matriz cuatro, del bloque (1,1) al (3,5).

Fig. Muestra la información contenida en la matriz cinco, del bloque (1,1) al (3,5).

(12)

Fig. Muestra la información contenida en la matriz diez, del bloque (1,1) al (3,5).

Fig. Muestra la información contenida en la matriz once, del bloque (1,1) al (3,5).

(13)

Fig. Muestra la información contenida en la matriz quince, del bloque (1,1) al (4,5).

Fig. Muestra la información contenida en la matriz diecisiete, del bloque (1,1) al (4,5).

(14)

Fig. Muestra la información contenida en la matriz veintiuno, del bloque (1,1) al (4,5).

Se creó un algoritmo de compresión de la información, de forma que se pudiera aprovechar al máximo la redundancia de los datos.

Se diseñaron 4 “codebooks” o diccionarios de acuerdo al esquema planteado inicialmente y se procedió a verificar su calidad. Después del análisis se pudo observar que los diccionarios no eran de la calidad esperada, por lo que se volvieron a diseñar, para lo cual se modificaron algunos parámetros de diseño.

Se diseñó un algoritmo de compresión, basado en una nueva estructura receptora de los datos y que hace uso de la cuantización vectorial.

Fig.

(15)

Fig.

OBJETIVOS Y METAS ALCANZADOS

Se logró la descomposición y análisis de los datos, lo que permitió el diseño de los diccionarios.

Se observó que las bandas de alta frecuencia podían ser descartadas en el diseño de los diccionarios, puesto que sus coeficientes eran casi todos igual a cero.

Se verificó que para la obtención de diccionarios de buena calidad, es necesario contar con secuencias de entrenamiento más largas y más variadas.

Mediante el uso de los diccionarios obtenidos, se codificaron varias secuencias de video, una de calidad visual aceptable y una de baja calidad.

RESULTADOS Y CONCLUSIONES

Una observación importante que debemos destacar es que resulta muy complicado obtener un diccionario de buena calidad, si no se parte de una secuencia de entrenamiento que sea realmente representativa.

La obtención de los diccionarios fue la parte más complicada de realizar por dos razones principales: una es el consumo de tiempo que implica el análisis de la secuencia de entrenamiento, ya que si no es suficientemente larga, no se obtiene bastante información, y por otro lado, si se utiliza una secuencia muy larga, no sólo se consume mucho tiempo, sino que se agota la memoria de la computadora.

Por lo anteriormente expuesto, se pueden hacer dos recomendaciones importantes: se debe conseguir una secuencia de entrenamiento más larga y variada y se debe intentar aplicar el algoritmo en un lenguaje compilado y no interpretado, por ejemplo en “C”.

BIBLIOGRAFÍA Gersho and R. M. Gray

Vector Quantization and Signal Compression.

Norwell, MA: Kluwer, 1992.

Nicolaos B. Karayiannis and Yiding Li

A Replenishment Technique for Low Bit-Rate Video Compression Based on Wavelets and Vector Quantization

IEEE Transactions on Circuits and Systems for Video Technology, vol. 11, no. 5, may 2001

Referencias

Documento similar

You may wish to take a note of your Organisation ID, which, in addition to the organisation name, can be used to search for an organisation you will need to affiliate with when you

Where possible, the EU IG and more specifically the data fields and associated business rules present in Chapter 2 –Data elements for the electronic submission of information

The 'On-boarding of users to Substance, Product, Organisation and Referentials (SPOR) data services' document must be considered the reference guidance, as this document includes the

In medicinal products containing more than one manufactured item (e.g., contraceptive having different strengths and fixed dose combination as part of the same medicinal

Products Management Services (PMS) - Implementation of International Organization for Standardization (ISO) standards for the identification of medicinal products (IDMP) in

Products Management Services (PMS) - Implementation of International Organization for Standardization (ISO) standards for the identification of medicinal products (IDMP) in

This section provides guidance with examples on encoding medicinal product packaging information, together with the relationship between Pack Size, Package Item (container)

Package Item (Container) Type : Vial (100000073563) Quantity Operator: equal to (100000000049) Package Item (Container) Quantity : 1 Material : Glass type I (200000003204)