Está en la página 1de 26

Asignatura: Televisión Digital.

Laboratorio #1: “Trabajo con imágenes. Compresión de fuente ”

Técnica Operatoria
Tarea 1
La función huffmandict de Matlab genera un diccionario de código Huffman correspondiente a
una fuente con un modelo de probabilidad conocido. Las entradas requeridas son símbolos,
que enumera los distintos valores de la señal que produce la fuente. Para ello se considera una
fuente de datos que produce los siguientes valores:

- 1s con probabilidad 0.1


- 2s con probabilidad 0.1
- 3s con probabilidad 0.8
Se puede comprobar en el workspace, como se muestra en la Fig. 1, que los símbolos 1, 2 y 3,
reciben las palabras de código “11”, “10” y “0”, respectivamente. El símbolo más frecuente, es
decir, el de mayor probabilidad, tiene la palabra de código más corta gracias a la técnica VLC.

Fig. 1. Diccionario de código Huffman creado.

No existe posibilidad de que una palabra de código forme parte de la otra, puesto que el
código Huffman es un código binario prefijo. Esto quiere decir que no es posible encontrar
ninguna palabra de código perteneciente a un símbolo, como prefijo en cualquiera de las
palabras de códigos utilizadas para representar los demás símbolos.

Mediante la función huffmanenco, es posible codificar una señal utilizando los códigos
Huffman descritos por un diccionario de códigos. En este caso se eligió codificar la secuencia 3
3 1 3 3 3 3 3 2 3 que se repite 50 veces, la cual se creó utilizando la función repmat. De esta
forma la información queda codificada en un vector numérico de fila de 600 columnas,
equivalente a decir 600 bits. Se logra una compresión con respecto a si se utilizasen palabras
de código de igual longitud para codificar.

Para decodificar el proceso es inverso. Usando la función huffmandeco se puede decodificar el


vector de código numérico obtenido en la codificación utilizando el propio diccionario creado.
Para comprobar que la secuencia decodificada, coincida con la original, es pertinente usar la
función isequal. Dicha instrucción devuelve un 1 lógico si ambas secuencias son iguales o un 0
lógico en caso contrario. Puede verse el resultado de la comprobación en la Fig. 2.
Fig. 2. Workspace de Matlab luego de la comprobación.

Todo el proceso descrito puede verse reflejado, en el código de Matlab implementado que se
ofrece en la Fig. 3.

Fig. 3. Codificación y decodificación de una secuencia predefinida en Matlab.

Tarea 2
Se utiliza el software VcDemo para experimentar con diferentes algoritmos de compresión de
imágenes. De la visualización de los resultados de la compresión se desarrollan análisis
cuantitativos y cualitativos.

Incidencia de la codificación PCM.


Variación del bitrate
Uno de los factores determinantes en la calidad de imagen es el bitrate, indicador que se
encuentra disponible dentro del módulo de compresión PCM. Una evidencia de la implicación
que tiene en la codificación de imágenes la variación de este parámetro, se muestra en las Fig.
4 y Fig. 5 obtenidas con el software VcDemo, donde se han elegido valores del bitrate PCM
comprendidos entre 1 y 7 bits por píxel. Las imágenes de partida seleccionadas, Odie256B.bmp
y Lena256B.bmp, son imágenes de muestra del propio software que poseen 8bpp.

Claramente se puede apreciar en ambas figuras que el número de bits empleado por cada
muestra es un parámetro que determina la precisión con que se cuantifica y cuanto mayor es,
mayor es la precisión. Esto se debe a que las imágenes en niveles de grises (grayscale)
cuantifican cada píxel con 2n niveles de intensidad, donde n representa la cantidad de bits de
la palabra binaria con que pueden ser representados dichos niveles.

Se puede ver, por ejemplo, que cuando cada muestra se cuantifica con 1 bit y se utilizan solo 2
posibles niveles de intensidad por muestra, no son siquiera apreciables detalles de las
imágenes como el cabello de la chica en la Fig. 4 o la lengua, la cola y la sombra del perro en la
Fig. 5. A medida que se incrementa el bitrate, y por ende la cantidad de niveles de gris usados
durante la cuantificación, se percibe una mejoría en las imágenes.

Fig. 4. Variación del bitrate. (a) Imagen original con 8bpp. (b) - (h) Imagen codificada con 1, 2, 3, 4, 5,
6 y 7bpp.

Fig. 5. Variación del bitrate. (a) Imagen original con 8bpp. (b) - (h) Imagen codificada con 1, 2, 3, 4, 5,
6 y 7bpp.

Se percibe que, en ambas figuras, para un valor del bitrate igual a 5, 6 y 7bpp,
correspondientes a 32, 64 y 128 niveles de cuantificación respectivamente, no se observan
cambios muy significativos entre las imágenes ni con respecto a la imagen original. Esto es
producto de que se conoce, a partir de los mecanismos de la visión humana, que es posible
distinguir sólo alrededor de unos 30 diferentes niveles de gris.

Además, en la Fig. 5 existe algo muy curioso que se diferencia de la Fig. 4. A partir de 4 niveles
de cuantificación en adelante, es posible percibir cada detalle de la imagen Odie256B, debido a
que es una imagen de menor entropía o menos compleja que Lena256B, como muestran los
histogramas de la Fig. 6 obtenidos con el software Matlab para 256 niveles de luminancia.
a b

Fig. 6. Histogramas de las imágenes de muestra.

En la Tabla 1 se muestran tabulados los resultados, en función de los Coding Results y Selected
Uniform Quantizer, tras modificar el bitrate de los Set PCM Parameters del VcDemo en ambas
imágenes.
Tabla 1: Implicación de la variación del bitrate en los parámetros cuantitativos de las imágenes de muestra.

# Niveles de Paso de Bitrate Error PSNR


Imagen cuantificación cuantificación [bpp] cuadrático S/N [dB] [dB]
medio
2 128 1.0 1347.9 3.1 16.8
4 64 2.0 349.0 8.9 22.7
Lena256B 8 32 3.0 89.6 14.8 28.6
16 16 4.0 21.7 21.0 34.8
32 8 5.0 5.5 27.0 40.7
64 4 6.0 1.5 32.6 46.4
128 2 7.0 0.5 37.4 51.1
2 128 1.0 308.8 7.4 23.2
4 64 2.0 398.9 6.3 22.1
Odie256B 8 32 3.0 27.1 18.0 33.8
16 16 4.0 16.5 20.1 36.0
32 8 5.0 1.3 31.2 47.1
64 4 6.0 3.7 26.6 42.5
128 2 7.0 0.9 32.7 48.6

Se puede apreciar que, como se había explicado anteriormente, el número de niveles de


cuantificación es una potencia de dos. Por otra parte, se puede extraer de la Tabla 1 que, el
paso de cuantificación es inversamente proporcional al número de bits o niveles, dando una
idea de la pérdida de precisión debido al proceso. Cuando las muestras son codificadas con el
mismo nivel y la misma palabra binaria, puede que se deseche información que las distinguía.

Además, cuando el número de niveles de cuantificación aumenta, la imagen cuantificada se


aproxima más a la imagen continua original de una manera apropiada con menor error de
cuantificación. Se puede observar que para 128 niveles de cuantificación, el error cuadrático
medio es 0.5 y 0.9 para las imágenes Lena256B y Odie256B, respectivamente.
La relación señal a ruido (S/N) varía de 3.1 a 37.4 dB en la imagen Lena256B y de 7.4 a 32.7 dB
en la imagen Odie256B, mientras que la relación señal a ruido pico (PSNR) varía de 16.8 a 51.1
dB en la imagen Lena256B y de 23.2 a 48.6 dB en la imagen Odie256B. Ambos parámetros
aumentan cuanto mejor es la codificación y son una medida cuantitativa de la calidad de la
imagen.

Simular errores de canal


Cuando los datos se comprimen cada vez más, los bits se vuelven más y más vulnerables a los
errores de canal. Al marcar la casilla Errores, se insertan errores de bits aleatorios en el flujo de
bits comprimido, antes de la descompresión. De esta manera se puede obtener una impresión
de los efectos de (simples) errores de canal. Pueden seleccionarse diferentes probabilidades:
0.005, 0.001, 0.0005 y 0.0001.

En la Fig. 7 se presenta el resultado, de aplicar diferentes probabilidades de error de bit del


canal para un bitrate fijo de 5bpp. Una vez más se hace uso de la imagen Lena256B.bmp.

En cada uno de los casos se puede observar información no deseada que contamina la imagen
producto de los errores del canal, lo cual puede interpretarse como ruido sal y pimienta ( Salt
& Pepper), Los píxeles erróneos se presentan como puntos blancos y negros superpuestos
sobre cada imagen. Como es de esperar, a medida que se disminuye la probabilidad de error
en el canal se aprecia una menor afectación en la calidad de la imagen.

Fig. 7. Errores en el canal para un bit rate de 5bpp. (a) – (d)


Probabilidad de error de bit de 0.005, 0.001, 0.0005 y 0.0001.

Los cambios cuantitativos que se derivan de estos errores en el canal, para una codificación fija
de 5bpp, son mostrados en la Tabla 2. También fueron colocados los datos de la codificación
sin errores a modo de establecer una comparación. A mayor porciento de bits erróneo en el
canal, mayor error cuadrático medio, menor S/N, menor PSNR y, como consecuencia, mayor
degradación de la imagen. En el mejor de los casos simulados, donde la probabilidad de error
en el canal es de 0.0001, los valores de los parámetros analizados son más cercanos al caso en
que no existen errores en el canal.
Tabla 2: Implicación de la inserción de errores en el canal.

% de bits Error cuadrático S/N [dB] PSNR [dB]


erróneos medio
0.5 104.3 14.2 27.9
0.1 25.8 20.3 34.0
0.05 18.1 21.8 35.5
0.01 6.7 26.1 39.9
Sin errores 5.5 27.0 40.7

Incidencia de la codificación DPCM


El método de compresión DPCM es un método de codificación diferencial que implementa un
esquema de compresión espacialmente predictivo. Aprovecha el hecho de que en imágenes,
píxeles consecutivos tienen valores muy parecidos y en lugar de codificar los valores de los
píxeles, codifica las diferencias entre ellos, consiguiendo así compresión.

Variación del modelo de predicción


Utilizando el software VcDemo, se pueden utilizar cuatro modelos de predicción diferentes
para los valores de gris de los píxeles. Las principales diferencias son entre la predicción
vertical 1-D y los otros tres modelos de predicciones 2-D.

En la Fig. 8 se muestra las imágenes correspondientes a la diferencia de predicción o error de


predicción utilizando cada uno de los cuatro modelos de predicción. Estas diferencias son los
datos que se introducen en el cuantificador. Los valores cero se muestran en gris, mientras que
los valores positivos y negativos se muestran más brillantes o más oscuros que el valor gris
general. Se utilizaron los valores por defecto que trae el software, es decir, el valor fijo del
bitrate en 2bpp, número de niveles en 4 y sin errores en el canal. La imagen de partida
seleccionada fue Camman256B.bmp.

Fig. 8. Error de predicción. (a) Modelo 1. (b) Modelo 2.


(c) Modelo 3. (d) Modelo 4.
Los coeficientes de predicción óptimos calculados se muestran en la ventana de texto de
salida. Además, se muestra la varianza de la imagen de la diferencia de predicción, así como el
valor de la ganancia de predicción resultante.

La incidencia cuantitativa de seleccionar uno u otro modelo de predicción en el Set DPCM


Parameters, se puede apreciar en los datos que brinda la Tabla 3.

Cuando la correlación entre muestras consecutivas es alta y se toma la diferencia entre ellas
como señal a cuantificar, la varianza disminuye reduciéndose el error de cuantificación.
Además, se aprecian en la Tabla 3 otros aspectos positivos como el aumento de la relación
señal a ruido (S/N) y de la relación señal a ruido pico (PSNR), con valores que van de 12.7 a
15.8 dB y de 24.8 a 28.0 dB, respectivamente.
Tabla 3: Incidencia de los modelos de predicción DPCM en los parámetros cuantitativos de la imagen.

Model Varianza del error Ganancia de Error cuadrático S/N [dB] PSNR [dB]
o de predicción Predicción medio
1 504.8 7.9 215.6 12.7 24.8
2 296.5 13.4 186.3 13.3 25.4
3 231.8 17.1 121.1 15.2 27.3
4 222.0 17.9 103.9 15.8 28.0

Variación del bitrate


La variación del bitrate repercute directamente en la calidad de la imagen como se aprecia en
la Fig. 9, donde los valores del bitrate fueron variados de 1 a 5 bits por píxel y nuevamente se
tomó como imagen de partida Camman256B.bmp. Este resultado se obtuvo utilizando el
modelo número 1 de predicción donde la varianza del error de predicción y la ganancia de
predicción, toman valores de 504.8 y 7.9, respectivamente. La cantidad de niveles con que se
codifica lo predicho y lo obtenido aumenta con el aumento del bitrate y con ello, la calidad de
la imagen.

Algo muy significativo es que, para bajos valores del bitrate en la imagen codificada, los bordes
de los objetos son los más afectados, puesto que son zonas de mayor entropía con respecto al
fondo. Para valores del bitrate superiores a 3bpp, se puede observar mayor nivel de detalle en
dichos bordes, en este caso la silueta del hombre.

En lo que respecta al comportamiento cuantitativo, tras variar el bitrate en el Set DPCM


Parameters, la Tabla 4 muestra los resultados para la variación del bitrate de 1 a 6bpp. El
parámetro que experimenta mayores cambios es el error cuadrático medio. En cada
incremento del bitrate en 1bpp, el valor de dicho parámetro se reduce a menos de la mitad de
su valor anterior. La relación señal a ruido (S/N) experimenta valores comprendidos entre 7.8 y
35.5 dB y la relación señal a ruido pico (PSNR), entre 19.9 a 47.6 dB. Lo valores más favorables,
se experimentan para los mayores valores del bitrate. Tanto el error cuadrático medio, como la
S/N y la PSNR, experimentan el cambio más brusco o más apreciable, en la variación del bitrate
de 4 a 5bpp.
Fig. 9. Variación del bitrate en el modelo 1 de predicción. (a) Imagen original con 8bpp. (b) – (f)
Imagen codificada con 1, 2, 3, 4 y 5 bpp.

Tabla 4: Implicación de la variación del bitrate en la codificación DPCM.

Bitrate Error cuadrático S/N [dB] PSNR [dB]


[bpp] medio
1 659.6 7.8 19.9
2 215.6 12.7 24.8
3 71.9 17.4 29.6
4 20.9 22.8 34.9
5 3.9 30.1 42.2
6 1.1 35.5 47.6

Simular errores de canal


Como en el caso de PCM, cuando se insertan errores aleatorios en el flujo de bits comprimido,
antes de la descompresión, se pueden apreciar cambios muy significativos que se
implementan con la variación de la probabilidad de error de bit.

Tomando como imagen de partida Camman256B.bmp, como en los casos anteriores, se


obtuvo la Fig. 10, donde se muestra el resultado de variar la probabilidad de error de bit con
los valores 0.005, 0.001, 0.0005 y 0.0001 utilizando el modelo 1 de predicción. A diferencia de
PCM, donde se obtenían píxeles erróneos, en DPCM esos errores se propagan, es decir, un
píxel que depende de un píxel erróneo también dependerá de dicho error. Como era de
esperar, a menor porciento de bits erróneos, mejor calidad de la imagen.
Fig. 10. Errores en el canal para el modelo 1 de predicción. (a) –
(d) Probabilidad de error de bit de 0.005, 0.001, 0.0005 y
0.0001.

En el caso del modelo de una dimensión las líneas son horizontales y más apreciables, como se
muestra en la Fig. 11, donde se mantuvo invariante el porciento de bits erróneos en un 0.05 %,
el bitrate en 4 y el número de niveles en 16. El parámetro variado es el modelo de predicción
para demostrar la diferencia entre el modelo de una sola dimensión y los bidimensionales.

Fig. 11. Variación del modelo de predicción para un porciento


de bits erróneos de 0.05 % y bitrate igual a 4. (a) – (d) Modelo
1, 2, 3, y 4.
A pesar de que, como se demostró anteriormente, lo bordes son más definidos con el
aumento del bitrate, una vez que se introduce ruido en el canal de codificación, el aumento del
bitrate también conlleva aumento de ruido como se aprecia en la Fig. 12. En la Fig. 12 están
representados dos modelos de predicción con una probabilidad de error de bit invariable de
0.0005 y bitrate correspondiente a dos valores, 3 y 6bpp.

Fig. 12. Variación del bitrate con presencia de ruido. (a) – (b)
Modelo 1 de predicción con bitrate de 3 y 6bpp. (c) – (d)
Modelo 2 de predicción con bitrate de 3 y 6bpp.

Incidencia de la codificación JPEG


El algoritmo de compresión JPEG se basa en fenómenos visuales del ojo humano como el
hecho de que es mucho más sensible al cambio en la luminancia que en la crominancia, es
decir, capta más claramente los cambios de brillo que de color. Además, se aprecian con más
facilidad pequeños cambios de brillo en zonas homogéneas que en zonas donde la variación es
grande, por ejemplo en los bordes de los cuerpos de los objetos de la imagen.

Una de las características del JPEG es la flexibilidad a la hora de ajustar el grado de


compresión. Un grado de compresión muy alto generará un archivo de pequeño tamaño, a
costa de una pérdida significativa de calidad. Con una tasa de compresión baja se obtiene una
calidad de imagen muy parecida a la del original, pero con un tamaño de archivo mayor.

Variación del factor de calidad/bitrate


En el módulo de compresión JPEG del software VcDemo pueden seleccionarse varias opciones
de optimización. Se puede ajustar el factor de calidad JPEG Q con un valor entre 1 y 100,
siendo 100 la máxima calidad, o bien definir el nivel de cuantización que se va a aplicar
mediante la definición del bitrate entre 0.1 y 8 bpp. En la Fig. 13 se puede apreciar el resultado
de variar el índice de calidad en la imagen de muestra Fruit256B.bmp. A menor grado de
compresión, mayor calidad de la imagen.
Fig. 13. Variación del factor de calidad. (a) - (c) Q = 5, 30 y 90.

Al seleccionar el factor de calidad, el bitrate se define implícitamente como se muestra en la


Tabla 5, pero su valor no se conoce de antemano. En lugar de ajustar el factor de calidad, si se
seleccionase un bitrate específico, se realiza el ajuste de calidad correspondiente a este bitrate
mediante un sencillo procedimiento de búsqueda. El resultado de este proceso inverso es muy
similar al obtenido en la Fig. 13.

Como evidencia la Tabla 5, donde están tabulados los resultados cuantitativos del proceso
anterior, ambos parámetros están relacionados. A mayor factor de calidad, mayor bitrate y,
por tanto, y mejor calidad visual de la imagen. Con el aumento de Q, también aumenta la
relación señal a ruido (S/N) y la relación señal a ruido pico (PSNR), y disminuye el error
cuadrático medio.
Tabla 5: Implicación del valor del factor de calidad en los parámetros cuantitativos de la imagen.

Factor de Bitrate [bpp] Error cuadrático S/N [dB] PSNR [dB]


calidad (Q) medio
5 0.2 125.6 15.3 27.1
30 0.6 20.6 23.1 35.0
90 2.0 4.9 29.3 41.2

Variación de la matriz de normalización


Para la cuantificación se utiliza una matriz de normalización estándar, y se redondean los
resultados a números enteros. Las matrices de cuantificación o normalización, están formadas
por 64 elementos enteros. Cada elemento puede estar entre 1 y 255, y especifica el tamaño
del escalón para cuantificar el coeficiente de la DTC. El propósito de la cuantificación es
aumentar la compresión representando cada coeficiente de la DTC con una precisión no mayor
que la estrictamente necesaria para lograr la calidad deseada en la imagen. Este es el proceso
donde se produce la pérdida de información, pues se trata de suprimir aquella información
que no es visiblemente significativa.

El software VcDemo permite elegir entre diferentes tipos de matrices de normalización.

 Standard Y: la matriz de normalización JPEG estándar para la información de


luminancia.

 Flat: una matriz de normalización con pesos iguales para todos los coeficientes DCT
(peso=50).

 Std UV: la matriz de normalización JPEG estándar para la información de crominancia.


 Highpass: es una matriz de normalización de "alto énfasis", que pone más énfasis en
los coeficientes DCT de alta frecuencia que en los coeficientes DCT de baja frecuencia,
pero no se utiliza en la práctica.

Para una alta compresión con Q=10, se aplicaron cada una de estas matrices y los resultados se
aprecian en la Fig. 14. Fue seleccionado este valor de factor de calidad para hacer más notorio
el efecto de aplicar una u otra matriz.

Los mejores resultados se observan con las matrices Std UV y Standard Y. Con la matriz Flat el
resultado es desfavorable, puesto que, como se mencionó anteriormente, le otorga el mismo
denominador a cada coeficiente y esto juega un papel muy importante en el manejo de la
optimización. Por otra parte, con la matriz HighPass tampoco se obtienen muy buenos
resultados, debido a que contradice completamente al hecho de que el ojo humano es muy
bueno detectando pequeños cambios de brillo en áreas relativamente grandes.

Fig. 14. Aplicación de las matrices de normalización para una


imagen con alta compresión (Q = 10). (a) Matriz Standard Y. (b)
Matriz Flat. (c) Matriz Std UV. (d) Matriz Highpass.

Simular errores de canal


Como en el caso de los mecanismos PCM y DPCM la probabilidad de error de bit en el canal
provoca un efecto nocivo para la calidad de la imagen. Los errores de bits pueden corrompen
información crucial y si los errores son demasiado graves, la decodificación se interrumpe en el
software VcDemo.

Mediante el procedimiento de mantener fijo el factor de calidad con un valor Q = 20 y variar la


probabilidad de error de bit en el canal con los valores 0.001, 0.0005, 0.0001 y 0.00005, se
obtiene la Fig. 15. Se puede apreciar que en todos los casos el efecto es desfavorable,
apreciándose mejoras cuanto menor son los bits erróneos. A esta conclusión también se arriba
si se observa la tabulación de los parámetros cuantitativos, obtenidos de este proceso,
mostrada en la Tabla 6.
Fig. 15. Variación de la probabilidad de error de bit con Q = 20.
(a) – (d) Probabilidad de error de bit de 0.001, 0.0005, 0.0001 y
0.00005.

Tabla 6: Implicación de la inserción de errores en el canal.

% de bit Error cuadrático S/N [dB] PSNR [dB] Número de


erróneos medio bits erróneos

0.1% 7197.6 - 2.3 9.6 24


0.05% 11433.2 - 4.3 7.5 16
0.01% 1809.9 3.7 15.6 3
0.005% 106.3 16.0 27.9 2

Tablas de Huffman
El estándar JPEG incluye unas tablas de Huffman pre-calculadas en base a las probabilidades de
aparición de cada símbolo estimadas por el grupo creador del estándar. Este tipo de
codificación Huffman con tablas pre-calculadas se denomina codificación de longitud variable
(VLC).

En el software VcDemo se pueden seleccionar diferentes tablas de codificación de entropía,


como es el caso de sin codificación de entropía o codificación de longitud fija (FLC) para los
coeficientes DCT, VLC estándar o una tabla VLC optimizada para la imagen en cuestión. Como
es de esperar el mayor cambio que se debe apreciar es en el tamaño de la imagen, siendo
superior en el caso en que no se utiliza codificación de entropía.

Con un valor fijo de calidad Q = 20 y la menor probabilidad de error de bit posible que se
puede establecer con el software (0.00005), se obtuvieron los resultados mostrados en la Fig.
16 para cada una de las opciones posibles del parámetro Huffman del Set JPEG Parameters. Lo
más apreciable de la Fig. 16 es la respuesta al ruido en cada uno de los casos, mostrándose una
mejoría en los casos donde se utiliza VLC.
Fig. 16. Aplicación de las tablas de Huffman con Q = 20 y un 0.005 % de bits erróneos. (a) FLC. (b)
VLC estándar. (c) VLC optimizada.

En la Tabla 7 se encuentran tabulados los resultados del proceso anterior en lo que respecta a
los parámetros cuantitativos que definen la calidad de la imagen. Los casos más favorables son
aquellos en los que se usa codificación de longitud variable, a pesar de que poseen valores
inferiores de bitrate.
Tabla 7: Implicación del uso de tablas de Huffman en los parámetros cuantitativos de la imagen.

Codificación Bitrate Error cuadrático S/N [dB] PSNR Número de


Huffman [bpp] medio [dB] bits erróneos

FLC 1.6 6286.7 - 1.7 10.1 7


VLC 0.5 2646.0 2.0 13.9 3
estándar
VLC 0.4 29.4 21.6 33.5 0
optimizada

Sin ruido en el canal, el hecho de utilizar codificación con longitud fija o variable no aporta
cambios apreciables a la vista. Solo el bitrate es el parámetro que varía y se comporta de igual
manera que en la Tabla 7, donde sí existe ruido en el canal. Los demás parámetros como el
error cuadrático medio, la relación señal a ruido, la relación señal a ruido pico y el número de
bits erróneos producto de la corrupción del canal, se mantienen invariables.

Suavizado
Si la opción Smooth output está marcada, dentro del Set Smoothing Preferences del parámetro
Smooth, la imagen descomprimida se suaviza un poco para suprimir los artefactos de bloqueo.

Para imágenes con menor calidad o con una alta tasa de compresión, se tiene una mejor
apreciación visual de los efectos de este parámetro. La Fig. 17 es un ejemplo, resultado de
seleccionar o no esta opción de suavizado. La elección no influye en la compresión, sino en la
calidad visual tras la decodificación. Para ello, se eligió un valor fijo de calidad Q = 5.
Fig. 17. (a) Imagen sin suavizado. (b) Imagen con suavizado.

Marcadores
En el módulo JPEG, se pueden inyectar errores en el flujo JPEG real. Esto significa que los
códigos VLC, la información de cabecera y otra información crucial pueden corromperse. Para
bloquear el efecto del empeoramiento progresivo de los errores de decodificación VLC se
pueden insertar marcadores únicos en el flujo de bits JPEG.

Si la opción Restart Marker está seleccionada, dentro del Set Markers After del parámetro
Marker, entonces la periodicidad de estos marcadores se puede seleccionar, a saber cada 10
filas, en cada fila o en cada bloque. El efecto de aplicar o no marcadores, así como la influencia
que tiene la regularidad con que se aplique, se muestra en la Fig. 18. Se eligió una calidad Q =
50 y una probabilidad de bits erróneos de 0.01 %. Se puede observar la robustez ante errores
de este método.

Fig. 18. Uso de marcadores para un 0.01 % de bits erróneos. (a)


Sin marcadores. (b) Marcadores cada 10 filas. (c) Marcadores en
cada fila. (d) Marcadores en cada bloque.
En la Tabla 8 se encuentran tabulados los parámetros cuantitativos que afloran de este
procedimiento, con una mejoría notable a medida que se insertan marcadores con mayor
frecuencia. El bitrate aumenta solo en el caso en que los marcadores se colocan en cada
bloque, caso en que también se obtienen los mejores indicadores de error cuadrático medio,
relación señal a ruido (S/N) y relación señal a ruido pico (PSNR).
Tabla 8: Implicación del uso de marcadores en los parámetros cuantitativos de la imagen.

Marcadore Bitrate Error cuadrático S/N [dB] PSNR Número de


s [bpp] medio [dB] bits erróneos

Sin 0.8 7653.9 - 2.6 9.3 7


marcadores
Cada 10 0.8 1210.5 5.4 17.3 6
filas
En cada 0.8 199.9 13.2 25.1 7
una fila
En cada 1.1 62.0 18.3 30.2 6
bloque

Incidencia del uso del módulo de decodificación MPEG


La herramienta VcDemo, además de trabajar con imágenes, permite trabajar también con
secuencias de video. El módulo MDec permite realizar la decodificación de los archivos
comprimidos de tipo MPEG. Para mostrar el trabajo con dicho módulo, se seleccionaron las
secuencias de muestra bike.mpg y Flower.mpg.

En la Tabla 9 se aprecian los datos ofrecidos a la salida del decodificador para cada una de las
secuencias, los cuales fueron extraídos de la ventana de texto del software.
Tabla 9: Datos ofrecidos por el software sobre las características de las secuencias de video seleccionadas.

Secuencia Dimensión Bit rate Picture rate VBV buffer


[Mbit/sec] [frame/sec] [kByte]
bike 240x352 6.553 30 40
Flower 240x352 1.000 29.97 16

Apartado Operation
En el apartado Operation, dentro del Set Mpeg Decoding Parameters, se puede seleccionar
para que el decodificador produzca tres salidas diferentes: Decoded Frames, el video es
descomprimido como lo haría cualquier otro decodificador; Frame Prediction, muestra los
cuadros de vídeo resultado de la predicción sin añadir el error residual de los macrobloque y
permite observar la calidad de la predicción en sí; Coded Difference, muestra únicamente el
error residual encontrado para cada macrobloque, y los macrobloques que han sido
codificados en modo INTRA.

En las Fig. 19 y Fig. 20 se muestra lo obtenido al seleccionar cada una de estas opciones en las
secuencias bike.mpg y Flower.mpg, respectivamente. De forma específica, se muestra solo el
cuadro 90 que es un cuadro bidireccionales o cuadro B. Se puede observar, para ambas
secuencias, como en este cuadro ocurrieron problemas en el caso de la predicción. Además, es
apreciable la poca información que lleva este tipo de imagen, aunque la imagen de la
secuencia flawer.mpg lleva más información que la de bike.mpg.

Fig. 19. Salidas del decodificador. (a)


Decoded Frames. (b) Frame Prediction. (c)
Coded Difference.

Fig. 20. Salidas del decodificador. (a)


Decoded Frames. (b) Frame Prediction. (c)
Coded Difference.

Apartado Display
El apartado Display permite seleccionar entre tres opciones a la hora de mostrar el video
decodificado. La opción Color display se refiere a en color o escala de grises, en dependencia
de la secuencia de video original; la segunda opción, Motion vector overlay, muestra los
vectores de movimiento sobreimpresionados; y por último, No B frames, evita decodificar los
cuadros de tipo B, para acelerar la decodificación en aquellas máquinas con poca capacidad de
cómputo.
El resultado de elegir ver la secuencia en escala de grises y mostrar los vectores de
movimiento, en la secuencias de muestra bike.mpg, se muestra en la Fig. 21.

En el caso de seleccionar No B frames, como la cantidad de cuadros B supera en número a los


cuadros I y P, el video tiende a reproducirse más rápido de lo habitual, producto de la
sustracción de los cuadros B de la secuencia de video. Sin embargo, no se aprecia visualmente
ninguna distorsión.

Fig. 21. (a) Imagen en escala de grises. (b) Imagen con la representación de los vectores de movimiento.

Apartado Video
El apartado Video indica a qué ritmo se va a decodificar el vídeo, o bien se decodifica cuadro a
cuadro, o se decodifican todos los cuadros sin interrupción. También se puede indicar que se
repita el proceso varias veces, seleccionando la cantidad de Loops deseados.

Apartado Wireless Channel


Este módulo incluye un simulador de canal inalámbrico que permite determinar en qué partes
de la secuencia se producen los errores de bit o paquetes tras la transmisión del vídeo
comprimido por un canal inalámbrico. El simulador inyecta los errores en la secuencia antes de
la decodificación. Dependiendo del patrón de error producido, y dada la escasa robustez del
decodificador MPEG, es posible que éste no pueda terminar.

En la Fig. 22 se muestra el resultado de dos simulaciones de canales inalámbricos en la


secuencia bike.mpg bajo el protocolo HyperLAN. Se asignó en ambos casos un canal físico de
errores aleatorios con una probabilidad de error fija en 1e-0.005 para observar el
comportamiento tanto cualitativo como cuantitativo. El comportamiento de los parámetros
cuantitativos se muestra en la Tabla 10.

Fig. 22. Simulación de canales inalámbricos bajo el protocolo HyperLAN. (a) – (b) Simulación para 3 y 5
usuarios.
Tabla 10: Implicación de la simulación de canales inalámbricos en la secuencia de video.

HiperLAN 20 Mbps
Parámetros 3 usuarios 5 usuarios
No. de bits procesados 5140720 5140720
No. de paquetes procesados 438 438
Razón de paquetes erróneos 0.223 0.602
No. De bits erróneos 1145005 3096507
Razón de error de paquetes 0.187 0.507
Paquetes erróneos 0 0
incorregibles
Paquetes de errores no 0 0
detectados
Pérdidas de paquetes por 82 222
conexión

Apartado Save
Save permite definir el nombre de archivo en donde se guardará el resultado de la
decodificación, es decir, el video reconstruido.

Tarea 3
Una vez cargado el ejemplo de compresión de video que brinda el software Matlab se obtuvo
el esquema mostrado en la Fig. 23.

Fig. 23. Ejemplo en Matlab para la compresión de video.

Este ejemplo muestra cómo comprimir un vídeo utilizando técnicas de compensación de


movimiento y de transformación discreta del coseno (DCT). El ejemplo calcula los vectores de
movimiento entre fotogramas sucesivos y los utiliza para reducir la información redundante.
Luego, se divide cada fotograma en submatrices y aplica la transformada de coseno discreto a
cada submatriz. Por último, se aplica una técnica de cuantificación para lograr una mayor
compresión. El subsistema decodificador realiza el proceso inverso para recuperar el vídeo
original.
En el subsistema Video Source internamente se pueden seleccionar archivos a procesar que
contengan datos de audio, de video o ambos a la vez. En el caso en que solo se manipulan
datos asociados a video, como es el caso en cuestión, estos son llevados a la salida del bloque
en formato RGB.

Internamente, el subsistema Encoder envía submatrices de 16x16 de cada frame de video al


subsistema del bloque Block Processing, dentro del cual el modelo aplica una técnica de
compensación del movimiento para calcular los vectores de movimiento entre cuadros
sucesivos y se utilizarlos para reducir la información redundante. Posteriormente, se aplica la
transforma del coseno discreta a cada submatriz. Así, descartando muchos de los coeficientes
de altas frecuencias en la salida de la DCT, se reduce el bit rate del video de entrada.
Finalmente, se aplica una técnica de cuantización (codigo RLC) para lograr una mayor
compresión. Para recuperar la señal de video, el subsistema Decoder realiza el proceso inverso.

El bloque Frame Rate calcula y muestra la velocidad de fotogramas de la señal de entrada.


Como la señal en este caso es RGB, la señal RGB que proviene del video seleccionado cambia
tantas veces por segundo como indique este bloque.

El display Compression Ratio muestra el resultado de calcular cuántos bits se necesitan para
transmitir la información de video codificada del total de bits generados por la fuente de video,
es decir, una medida de la razón de compresión.

Tarea 4
Elecard StreamEye es una poderosa herramienta de software con la que se puede realizar un
eficaz análisis en profundidad de secuencias de vídeo. Proporciona una representación visual
de las características del vídeo codificado y un análisis de la estructura del flujo de MPEG-1/2/4
o AVC/Н.264 Video Elementary Streams (VES), MPEG-1 System Streams (SS), MPEG-2 Program
Streams (PS) y MPEG-2 Transport Streams (TS).

Tras seleccionarse en el software el primer canal de la secuencia de video 123.ts, contenida en


un Transport Stream (TS), se puede extraer de la Fig. 24 características importantes de la
misma como que el códec de video utilizado es H264, la resolución es 720x480 y la frecuencia
de cuadro es de 29.97 fps.

Fig. 24. Características de la secuencia seleccionada dentro del TS.

El sistema MPEG establece tres tipos diferentes de cuadros, cada uno con una función
específica. En la Fig. 25 las barras de colores representan el tipo de cuadro, donde el color rojo
se corresponde con los cuadros intra-codificados o cuadros I, el color azul con los cuadros pre-
determinados o cuadros P y el color verde con los cuadros bidireccionales o cuadros B. Las
altitudes de las barras indican el tamaño del cuadro en bytes según el valor numérico
mostrado en el eje de las ordenadas.

Fig. 25. Representación de los frames de la secuencia de video.

Posicionando el cursor encima de las barras de colores se pueden ver un conjunto de datos
como se muestra en la Fig. 26. El parámetro stream identifica el número en el orden de
transmisión de los cuadros I, P o B, es decir, el número de cuadro en el orden del
decodificador; mientras que display indica el número de cuadro en el orden en que deben ser
mostrados. Ambos parámetros, stream y display, difieren en algunas ocasiones como es el
caso mostrado en la Fig. 26. Esto es producto de que el decodificador necesita recibir
previamente los cuadros I de los que dependen los P siguientes y los cuadros I y P, de los que
dependen los B.

Fig. 26. Características de un frame P.

El GOP (Group of Picture) se corresponde con el número del grupo de cuadros al que
pertenece la imagen en cuestión. El size hace referencia al tamaño del cuadro en bytes y el
parámetro type al tipo de cuadro, ya sea I, P o B.

El parámetro is key es un indicador de si el cuadro señalado es clave o no, es decir, si es un


cuadro dentro de la secuencia donde el codificador puede comenzar a codificar. Este lugar
comienza con una imagen I, lo cual se pudo comprobar con el software Elecard StreamEye
posicionando el cursor sobre una imagen I, tal y como se puede apreciar en la Fig. 27.
Fig. 27. Características de un frame clave (I) en la secuencia de video.

Los parámetros offset y time, indican el desplazamiento respecto al comienzo del archivo y el
tiempo en que la imagen es presentada, respectivamente. Por último, mux time representa la
marca de tiempo de presentación.

Los cuadros se agrupan y forman grupos de cuadros que deben empezar y terminar con una
imagen de tipo I. En la secuencia de video analizada están asociados 25 GOPs en total, donde
cada uno cuenta con 32 cuadros.

La diferencia en el size entre las barras de colores de las Fig. 25, Fig. 26 y Fig. 27, está dada por
la razón de compresión de cada tipo de cuadro. Las imágenes intra-codificados tienen una
razón de compresión relativamente baja, ya que estas imágenes se codifican de forma
independiente sin aprovechar ningún tipo de redundancia temporal. Por otro lado, la
codificación de las imágenes pre-determinadas se realiza utilizando compensación de
movimiento forward a partir de una imagen I u otra imagen P previa dando lugar a una razón
de compresión significativamente mayor que la de las imágenes I. La mayor razón de
compresión la presentan las imágenes bidireccionales, ya que se obtienen usando
compensación de movimiento bidireccional a partir de imágenes I o P.

Espacio de color YUV


El modelo YUV define un espacio de color en términos de una componente de luminancia y
dos componentes de crominancia. La componente Y indica el brillo o luminancia, es decir, el
orden gris; mientras que U y V están representados por la cromaticidad, cuya función es
describir el color y la saturación de video para la designación del color en el píxel.

El software permite visualizar la secuencia en este espacio de color, así como cualquiera de sus
componentes por separado. En la Fig. 28 se puede observar una imagen representada en el
espacio de color YUV con sus respectivas componentes Y, U y V. Cuando solo se representa la
componente Y, la imagen representada es una imagen en escala de grises que se interpreta
como el nivel de brillo de la imagen.
Fig. 28. (a) Imagen en el espacio de color YUV. (b) – (d) Componentes Y, U y V de la imagen.

Slice
A partir de la secuencia de muestra seleccionada anteriormente, se intentó mostrar los límites
de los slices seleccionando el botón Slice Boundaries. El resultado fue que en la mayoría de las
imágenes de la secuencia existe un slice por cuadro, es decir, que un solo slice constituye el
cuadro entero como se evidencia en la primera imagen representada en la Fig. 29. En muy
pocos cuadros de la secuencia, como es el caso de la segunda imagen que se observa en la Fig.
29, se muestra una línea azul que divide la imagen en dos slices.

Fig. 29. (a) Imagen con un slice. (b) Imagen con dos slices.

Macrobloques
Una de las claves del éxito de H.264 es la optimización de la cantidad de información residual.
Con intención de disminuir al máximo dicha información, se asignan bloques de diferentes
tamaños a la imagen, según la zona esté más o menos texturizada. Así, zonas en las que existe
una mínima textura, zonas homogéneas de la imagen, tendrán macrobloques del mayor
tamaño posible, 16x16 píxeles. En caso contrario se pueden dividir estos macrobloques en sub-
bloques de 16x8, 8x16, 8x8, etc. que a su vez estos últimos pueden dividirse en 8x4, 4x8 y 4x4
como se muestra en la Fig. 30. Esto permite optimizar la cantidad de información codificada,
comprimiendo las zonas homogéneas, habitualmente background de un frame, y utilizando
más bits, para las zonas con más información, cuya predicción no sea inmediata debido, por
ejemplo, a movimientos. En la Fig. 31 se muestran dos imágenes diferentes de la secuencia
seleccionada, donde el tamaño de los macrobloques varía, tal y como se explicó
anteriormente.

Fig. 30. Partición de los macrobloques.

Fig. 31. Representación de los particiones. (a) Frame P. (b) Frame B.

Otra de las principales novedades de H.264 es la de la multirreferencia, que permite a bloques


de un cierto cuadro referenciar a bloques de distintos cuadros. La multirreferencia de H.264
permite que cada partición dentro de un macrobloque tenga su propia predicción y su propio
vector de movimiento y que dichos bloques, dentro del mismo macrobloque, puedan apuntar
a distintos bloques de cualquier macrobloque de cualquier frame que esté en el DPB ( Decoded
Picture Buffer), donde se almacenan los frames que serán usados como referencia. Es decir,
que un macrobloque puede estar referenciado a un macrobloque de un frame determinado, y
otro macrobloque dentro del mismo frame puede estar referenciado a otro macrobloque de
un frame distinto al anterior.

Esto otorga una mayor flexibilidad a la elección del bloque más parecido al bloque codificado,
permitiendo una estimación de movimiento mucho más eficaz. Sin embargo, esta mejora
propicia una mayor complejidad en términos de codificación.

Otra de las opciones relacionadas con este tema, es la apreciación de los tipos de
macrobloques en una imagen a partir de seleccionar el botón MB Types. Luego de aplicarlo en
las mismas imágenes de la Fig. 31, se puede apreciar el resultado en la Fig. 32. En el primer
caso es una imagen P y en el segundo, una B.
Fig. 32. Tipos de macrobloques. (a) Frame P. (b) Frame B.

Los círculos rojos se corresponden con el tipo Intra, que pueden ser de 4x4 o 16x16; los azules,
con Inter (B o P); y los verdes, con Inter B Direct. En el caso de que se un círculo azul con un
cuarto verde, son del tipo Inter B 8x8 with Direct. Los círculos amarillo indican una omisión en
la codificación del macrobloque de la imagen debido a que las diferencias con respecto al
mismo bloque de la imagen anterior son mínimas. Este último se denomina Inter Skip (B o P).

Entonces, de modo general, cada tipo de frame tiene tipos de macrobloque concretos. Por
ejemplo, los frames P tienen macrobloques con predicción forward, macrobloques intra-
codificados, y macrobloques skip, añadiéndose la posibilidad de macrobloques con predicción
backward y bidireccional para los frames B.

Es válido aclarar que los frame I sólo tiene macrobloques I; los P, macrobloques I o P; y un
frame B, macrobloques I o B.

Vectores de movimiento
Las particiones macrobloques H.264 mantiene una de las herramientas más utilizadas en
estándares anteriores, los vectores de movimiento. La misión de dichos vectores es apuntar al
bloque más parecido al que se está codificando en ese momento. Esto permite codificar la
diferencia entre ambos bloques, lo cual supone mucha menor información que enviar el
bloque en sí. Puesto que en el decodificador también se cuenta con los frames previamente
codificados, se puede repetir la misma predicción que en el codificador y, con los pasos
inversos, reconstruir el frame de forma fiable.

Adicionalmente, los vectores de movimiento no corresponden a tamaños fijos de


macrobloques, variando tanto en frames I como en frames P o B. En la Fig. 33 se presentan las
imágenes con que se ha trabajado anteriormente con la diferencia de que, en este caso, se ha
seleccionado el botón Motion Vectors.
Fig. 33. Representación de los vectores de movimiento. (a) – (b) Frame P y frame B sin particiones.
(c) – (d) Frame P y frame I con particiones.

También podría gustarte