You are on page 1of 19

Universidad de Cuenca

Facultad de Ingeniera
Ingeniera Electrnica y Telecomunicaciones
Laboratorio Procesamiento Digital de Seales.
Juan P. Narvez Bernal
Ral B. Suquinagua Otavalo

INFORME PRCTICA 7: Uso de la transformada discreta del coseno para la


comprensin de informacin.

Objetivos.

Reforzar los conocimientos sobre aplicaciones de la Transformada Discreta del Coseno


DCT en la compresin de imgenes digitales.
Utilizar la DCT para implementar parcialmente el algoritmo de compresin JPEG.
Utilizar la DCT para la compresin de audio.

Marco terico.
Escriba un sustento terico que explique los fundamentos de la propiedad de
compactacin de energa de la DCT y su uso en el algoritmo de compresin JPGE.
Para realizar el anlisis de la propiedad de compactacin tenemos que tener claro el concepto de
la DCT que es una transformada basada en la Transformada de Fourier discreta, pero utilizando
nicamente nmeros reales.
Para ello se analizara la expansin para la DCT-1 y la DCT-2 que dependen de si los puntos
extremos se solapan con versiones desplazadas de s mismos y, si es as, qu puntos extremos se
solapan. Para la DCT-1, x[n] se modifica primero en sus extremos y despus se extiende para que
su periodo sea 2N 2.
Donde tenemos la DCT-2 expresado de la siguiente manera:
1

2 []

= 2 [] cos (
=0

(2 + 1)
),
2

0 1

1
(2 + 1)
[] = [] 2 [] cos (
),

0 1

=0

donde la DCT-2 inversa utiliza la funcin de ponderacin


1
=0
[] { 2 ,
1 ,1 1
Debido a una propiedad que se denomina frecuentemente compactacin de la energa.
Concretamente, la DCT-2 de una secuencia de longitud finita tiene a menudo los coeficientes ms
concentrados en los ndices bajos que la DFT. La importancia de este hecho surge del teorema de
Parseval, que para la DCT-2 es
1

|[]|
=0

1
= [] | 2 []|2

=0

Se dice que la DCT est concentrada en los ndices bajos de la transformada si los restantes
coeficientes de la misma se pueden poner a cero sin afectar significativamente a la energa de la
seal. [1]

Caractersticas tiles para la compresin de imgenes

La DCT tiene una buena capacidad de compactacin de la energa al dominio


transformado, es decir, que la transformada de coseno discreta consigue concentrar la
mayor parte de la informacin en pocos coeficientes transformados tal y como muestra la
Figura1.
La transformacin es independiente de los datos. El algoritmo aplicado no vara con los
datos que recibe, como si sucede en otros algoritmos de compresin.
Hay frmulas para el clculo rpido del algoritmo, como podra ser la FFT para la DFT.
Produce pocos errores en los lmites de los bloques imagen. La minimizacin de los errores
a los bloques imagen permite reducir el efecto de bloque en las imgenes reconstruidas.
Tiene una interpretacin frecuencial de los componentes transformados. La capacidad de
interpretar los coeficientes en el punto de vista frecuencial permite aprovechar al mximo
la capacidad de compresin. [2]

Figura1. Concentracin de energa de una DCT-2 comparada con una DFT.

Algoritmo de compresin JPGE.


Aprovecha dos defectos visuales del ojo humano:
Ms sensible al cambio en la luminacin que en la crominancia.
Percibe mejor al cambio de brillo en zonas homogneas que en zonas donde la variacin
es grande.

Se analizaran las 5 etapas.


RGB YCbCr: Se realiza un cambio en el espacio de color, aunque en el espacio digital son
muy similares se debe tener cuidado ya que es aqu donde se separan las tonalidades de
luminancia con la crominancia.
Donde Y: Luminancia y CbCr: Crominancia

Submuestreo: Mediante esta etapa podemos reducir la resolucin de algunos de los canales que
hemos separado la imagen. El espacio de color YCbCr es 4:4:4 Si no se realiza el submuestreo la
imagen quedara as.
El 4:4:4 representa:
X: Frecuencia de muestreo horizontal del canal de brillo.

Y: Frecuencia de muestreo horizontal de los canales de color en relacin con X.


Z: Frecuencia de muestreo vertical de los canales de color en relacin a Y.

Figura2. Frecuencia de muestreo 4-2

DCT: En esta etapa se cambia la imagen de una representacin espacial a frecuencial y se


representa como se analiz anteriormente, pero ahora se analiza cmo funciona en la
compresin de imagen.
Lo que hace es dividir cada componente de la imagen en pequeos bloques de 8x8
pixeles, cada uno de los cuadrados como una combinacin lineal de los 64 restantes luego
se aplica la transformada discreta de coseno y se redondea al entero ms prximo, listo
para pasar a la siguiente etapa.
Cuantizacion. Esta etapa es la que nos permite establecerla relacin, calidad y compresin del
algoritmo JPEG.
Lo que se hace es eliminar las altas frecuencias, aprovechando que el ojo humano no es bueno
detectando cambio de brillo en pequeas reas. Se pierde la mayor cantidad de informacin.

Codificacin Entrpica (Huffman). Esta etapa sirve cuando se tiene una gran cantidad de datos
en la imagen que no se usen se puede variar sus bits, La codificacin Huffman usa un mtodo
especfico para elegir la representacin de cada smbolo, que da lugar a un cdigo prefijo (es decir,
la cadena de bits que representa a un smbolo en particular nunca es prefijo de la cadena de bits
de un smbolo distinto) que representa los caracteres ms comunes usando las cadenas de bits
ms cortas, y viceversa.

Decodificacin. Se realiza el mismo procedimiento pero realizando inversamente es decir:

Se codifica y se pone el valor en su casilla


Se multiplica el valor por correspondiente a la matriz de cuantificacin usada
Se deshace la transforma DCT es decir se aplica la inversa. [3]

Desarrollo.
Tarea1. Comprensin de imagen JPEG.
El objetivo de esta tarea es implementar el bloque principal del algoritmo de compresin
contemplado en el estndar JPEG, ya que deber obviar la parte de codificacin de longitud
variable detenida en dicho estndar.
La imagen reconstruida a partir de los coeficientes de la DCT representa la imagen comprimida,
que deber mostrarse en la pantalla. Las variaciones en la calidad de la imagen observada
reflejaran la eliminacin de los diferentes componentes obtenidos durante la etapa de la
transformada del coseno. Implemente un control deslizante que permita observar diferentes

niveles de compresin reflejados en la calidad de la imagen reconstruida. Para ello deber operar
sobre el quantum definido en el estndar.
Implemente su programa utilizando el guide de Matlab.
Los niveles de compresin debern implementarse con controles deslizantes.
Muestre en un campo de texto el nmero de coeficientes promedio que se utilizan en
cada sub-imagen de 8x8 para la reconstruccin de la imagen original (es decir: el promedio
del nmero de coeficientes que no son cero y que se han utilizado en cada sub-imagen)
Su interface deber mostrar la imagen original y su versin comprimida.

a) La imagen original: puede utilizar cualquier imagen a su eleccin.


La imagen que se va usar es la de lena512.bmp

b) La imagen comprimida en cinco niveles de calidad diferentes: utilice 5 diferentes


versiones escaladas del quantum definido por el estndar JPEG para obtener cada
una.

Escala de Quantum x 1

Escala de Quantum x 4

Escala de Quantum x 8

Escala de Quantum x 12

Escala de Quantum x 16

c) Utilice el tamao de 8x8 para la creacin de las sub-imgenes definidas en el


estndar.
Lo que se realiza en este punto es crear matrices de 8x8 de la imagen original de
lena512.bmp que tiene de dimensiones 512x512 donde a cada bloque de 8x8 se resta
128 para quitar el offset, luego se saca la transformada de coseno con el comando dct2
luego se procede a realizar la etapa de cuantizacin, se aplica la inversa de la DCT se suma los
128 para obtener la imagen con offset y se concatenan todos los bloques para la imagen
resultante que estar comprimida.

d) Calcule la seal de error (seal original menos seal reconstruida) y grafquela en


una ventana separada.

Escala de Quantum x 1

Escala de Quantum x 8

Escala de Quantum x 4

Escala de Quantum x 12

Escala de Quantum x 16

e) Refirase a la referencia [2] que presenta un artculo cientfico sobre la compresin


JPEG.
El JPEG estndar incluye dos mtodos de compresin bsicas, cada una con varios modos de
funcionamiento. Un mtodo basado en DCT se especifica para la compresin "con prdidas", y
predictivo mtodo para la compresin "sin prdidas". JPEG cuenta con una tcnica con prdida
simple conocido como el mtodo de lnea de base, un subconjunto de los otros modos de
funcionamiento basados en la DCT.

Documentacin.
function cargar_Callback(hObject, eventdata, handles)
[FileName Path]=uigetfile({'* .jpg; *. bmp; *. png'});
global imag1
txt=strcat(Path,FileName);
axes(handles.axes1);
imag=imread(txt);
imshow(imag);
axis off;
axes(handles.axes2);
imag1=imread(txt);
imshow(imag1);
axis off;
%-----------------------------------------------------------------------function slider1_Callback(hObject, eventdata, handles)
global imag1
% Obtener valores de slider
val=get(hObject,'Value');
set(handles.slider1,'String',fix(val));

% Leer imagen
imag1;
Im=double(imag1);
% Obtiene el tamano de la imagen
[n m] = size(Im);
% Se define la matriz para el quantum basado en JPEG
Q = [16 11 10 16 24 40 51 61;12 12 14 19 26 58 60 55; 14 13 16 24 40 57
69 56; 14 17 22 29 51 87 80 62; 18 22 37 56 68 109 103 77;24 35 55 64 81
104 113 92;49 64 78 87 103 121 120 101;72 92 95 98 112 100 103 99 ];
%Se define la escala del Quantum
Q = Q*val ;
M_cero=0;
%Obtener bloques de 8x8
for i=1:8:n
for j=1:8:m
%matrices de 8x8 para la DCT
b8x8=Im(i:i+7,j:j+7);
% Se elmina el offset
E=(b8x8)-128;
%Se aplica la DCT a la imagen original
DCT = round(dct2(E, [8 8]));
% Se divide para el quantum, etapa cuantizacion
coeff = round(DCT./Q);
% Se multiplica por el cuantum para etapa cuantizacion
Res = coeff.*Q;
% Se obtienen todos los valores de cero para calcular el error
N=0;
for k=1:1:8
for p=1:1:8
if Res(k,p) ~= 0
N=N+1;
end
end
end
M_cero=M_cero+N;
h=M_cero/(64*64);
%Transformada inversa del coseno
I_DCT = round(idct2(Res,[8 8]));
E1=I_DCT+128;
%Unir imagenes
DFF(i:i+7,j:j+7)=(E1)/256;
end
end
% Se muestra en un txt el numero de coeficientes de la DCT
set(handles.valor,'String',h);
% se calcula el error
Err=Im/256-DFF;
% Se muestra la imagen comprimida
axes(handles.axes2);
imshow(DFF);
% Se muestra el error
axes(handles.axes3);
imshow(Err);

Tarea 2: Compresin de audio


El objetivo de esta tarea es utilizar la DCT para implementar un algoritmo de compresin
de audio basado en los mismos principios utilizados para JPEG. Para ellos siga el
siguiente procedimiento:
a) Lea un archivo de audio en Matlab (por ejemplo el provisto: Cello.wav).
[x,fs]=audioread(uno);

%leemos el archivo de audio

1
0.8
0.6
0.4
0.2
0
-0.2
-0.4
-0.6
-0.8
-1

0.5

1.5

2
Muestras

2.5

3.5

4
5

x 10

b) Divida la seal en bloques de 32 muestras.


Hemos hecho de dos programas, pero la primera forma es solo para propsitos
explicativos ya que todos los procedimientos lo hacemos de la forma dos.
En la primera forma lo que hacemos es crear una matriz de ceros para luego ir llenando
con las transformadas de cosenos inversas. Despus se calcula cuantas ventanas vamos
a sacar a partir de las muestras del audio para as saber el nmero de procesos que
debemos hacer. Ahora bien, para desechar lo que hacemos es ordenar las muestras de la
transformada del coseno de manera descendente y ah si desechar las muestras que
tengan menor valor, esto se lo hace hasta el nmero de procedimientos calculados
anteriormente. Cabe recalcar que el ltimo paquete no va a ser de 32 muestras as que no
se evalan estas.
ventana=32;
factor=fix(length(x)/ventana);

%el tamao de la ventana


%calculamos el nmero de cuadros

long=32*factor;
residuo=((length(x)/ventana)-factor).*ventana;%es el restante de muestras
z=zeros(1,long);
%creamos el vector de ceros
aux=1;
for wind=1:factor-1
w = x(aux:ventana);
%sacamos las ventanas
X = dct(w);
%la transformada del coseno
[XX,ind] = sort(abs(X),'descend');
if vol==32
z(aux:ventana) = idct(X);
%rellenamos en el vector de ceros
end
if vol<32
X(ind(vol+1:end)) = 0;
z(aux:ventana) = idct(X);
%rellenamos en el vector de ceros
end
aux=ventana+1;
%aumenta la siguiente ventana
ventana=ventana+32;
end

Mientras que en la segunda forma calculamos la transformada del coseno y segn el


slider desechamos las muestras comenzando desde el ltimo hasta el primero:
for wind=1:factor-1
w = x(aux:ventana);
X = dct(w);
if vol==32
z(aux:ventana) = idct(X);
end
if vol<32
X(vol:end) = 0;
z(aux:ventana) = idct(X);
end
aux=ventana+1;
ventana=ventana+32;

%sacamos las ventanas


%la transformada del coseno
%rellenamos en el vector de ceros

%rellenamos en el vector de ceros

%aumenta la siguiente ventana

end
%grficas
axes(handles.axes2)
stem( x(1:long), 'green')
xlabel('Muestras');
axes(handles.axes4)
stem( z(1:long), 'blue')
xlabel('Muestras');

%Graficamos el audio original

%Graficamos el audio diezmado

c) Compute la DCT para cada bloque. Estos coeficientes, debern mostrar claramente la
Propiedad de compactacin de energa de la DCT.

DCT

seal original
0.03

0.06

0.02

0.04

0.01

0.02

-0.01

-0.02

-0.02

-0.04

-0.03

10

15

20

25

30

-0.06
0
35

w = x(aux:ventana);
X = dct(w);

10

15

20

25

30

35

%sacamos las ventanas


%la transformada del coseno

Se puede ver claramente la compactacin de la energa, pero tiene mejor compactacin


cuando las muestras no tienen un cambio sbito, porque genera altas frecuencias, por
ejemplo al inicio del audio no se observa una buena compactacin de la energa como se
ve a continuacin.
-4

-4

seal original

x 10

DCT

x 10

2
2

0
-1

-1

-2

-2
-3

-3

-4
-5

10

15

20

25

30

-4
35 0

10

15

20

25

30

35

d) Reconstruya la seal de audio a partir de los crecientes de la DCT y escuche el


resultado, utilizando:
32 coeficientes

16 coeficientes

8 coeficientes

4 coeficientes

e) Calcule la seal de error (seal original menos seal reconstruida) y grafquela en una
ventana separada para cada caso.

Las grficas de error se lo ven en la parte de arriba, a continuacin se muestra el cdigo


fuente para el clculo mencionado:
%Calculamos el error
axes(handles.axes7)
y= x(:,1);
error= y(1:long)-z(1:long)';
%figure(1),
stem(error(1:long-32),'yellow')

%Graficamos el error

f) Escriba sus observaciones y resultados para cada caso.

Como dijimos anteriormente para cambios bruscos la compactacin de la energa no


funciona muy bien dado que se genera altas frecuencias en los cambios sbitos.
Al escuchar los audios no se nota mucha diferencia a eliminar hasta 8 coeficientes pero
cuando utilizamos solo 4 coeficientes, se nota claramente un ruido de fondo, ni hablar
cuando usamos solo un coeficiente.
Para notar en las grficas la diferencia se lo hace mirando el error, vemos que son
pequesimos los errores ms o menos cuando desechamos los 16 componentes.
Conclusiones y Recomendaciones

Se puede realizar la compresin de imgenes y se observ que depende mucho del


quantum que se ponga en la imagen en este caso usamos el quantum de JPEG,
adems se observ que la imagen se comprime y se obtiene resultados muy
buenos. Todo eso se logr mediante la Transformada de Coseno Discreta (DCT)
que se analiz detalladamente en clase.

Observamos la importancia de usar el mtodo de Huffman para usar menos


espacio posible en los bits para los caracteres que ms se repiten se les podran
asignar pocos bits y para los caracteres que nunca se usan se podran asignar
mayor cantidad de bits.

Se recomienda usar la DCT para comprension y no la DFT ya que no se obtendra resultados


buenos.

La transformada del coseno compacta favorablemente la energia en seales en donde no


existen cambios brusco de amplitud.

Al realizar la compresin en ventanas de 32 muestras estamos optimiando ya que si lo


hicieramos a todo el audio, tendriamos menor compresin.

Alescuchar el audio no se siente mucho el efecto de la compresin ya que el cerebro


recompensa la perdida de informacion, pero en el caso de solo dejar 8 muestras de cada
ventana el caso ya es critico porque claramente se escucha una especie de ruido infiltrado.

Preguntas

Cmo cambiara esta tcnica si la imagen a comprimir es a colores?

En el formato de color RGB, las imgenes a color se almacenan en 3 canales independientes (rojo,
verde y azul) que toman valores de 0 a 255 dependiendo de la intensidad.
El formato de color YIQ representa una divisin entre la luminosidad (Y) y el color (I, Q). La
conversin entre RGB e YIQ es:

0.299 0.587
0.114
( ) = (0.596 0.275 0.321) ( )

0.212 0.523 0.311


El ojo humano es menos sensible a los matices de color que a la cantidad de luz percibida. Es por
ello que podemos reducir la informacin almacenada para los canales I y Q de una imagen YIQ. Si
la imagen cambiara se trabajara a colores se apreciara mejor la comprensin como se muestra a
continuacin.

Cmo se aplicara esta tcnica de compresin de audio, si el sonido es en estreo?

Esto se lo implementara para cada canal, es decir, tendramos que dividir en bloques de 32
muestras, realizar la transformada del coseno, desechar las muestras y hacer la transformada
inversa para los dos canales. Para estos se divide los canales mediante la expresin y= x(:,1)
en el caso del canal uno y y= x(:,2) para el caso del canal 2.

Describa brevemente la codificacin de Huffman, utilizada como un cdigo optimo


en el estndar JPEG.

La codificacin de Huffman es un mtodo que no produce prdida, que se aplica al conjunto de


datos obtenidos al aplicar la DCT.
Usamos el algoritmo de Huffman para utilizar el menor espacio posible en bits para aquellos
caracteres ms repetidos.
Aunque podemos utilizar una compresin de Huffman propia, existen unas tablas estandarizadas
que nos permiten obtener el cdigo de Huffman para cualquier valor.
Por ejemplo si tenemos esta lista de valores:

29, 9,-7,5,-12,-4,-6,-5,6,-3,2,-2,1,1,-1,0,1,0,0,1,0,0,0,-1,1,0,1,0,0,0,1,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,F
La letra F indica que desde ese elemento hasta el final de la lista son todos ceros hasta completar
los 64 elementos de la lista original (es decir de la lista de arriba).
El siguiente paso sera almacenar cada lista de cada subimagen 8 x 8 de la imagen usando el
algoritmo de Huffman para que elimine la redundancia de cdigo. En este paso radica la propiedad
de almacenar usando distintos grados de compresin. Si almacenamos cada lista con los 64
elementos, el grado de compresin sera pequeo. Cmo los datos significativos estn al principio
de la lista, podramos considerar slo los primeros elementos de la lista (por ejemplo, los 16
primeros), y en este caso, el grado de compresin sera mayor.

Se podrn obtener resultados similares a los que ha obtenido si aplicara la

transformada de Fourier (DFT) en lugar de la DCT?


Seguramente no se obtendrn los mismos resultados debido a que la DCT tiene una buena
capacidad de compactacin de la energa es decir la DCT concentra la mayor parte de la
informacin en pocos coeficientes transformados. En cambio la DFT no presenta la propiedad de
compactacin de energa y por esa razn todos los coeficientes que genera son importantes.
A continuacin se muestra una imagen con 32 muestras se aprecia claramente que casi todos los
coeficientes de la DFT son importantes, en cambio en la DCT se podra despreciar sin problema
hasta las 22 muestras y se obtendra los mismos resultados de la DFT.

Investigue brevemente los principios de compresin utilizando la transformada


Wavelet.

La fusin de las teoras de la fsica atmica y el procesamiento digita de seales crearon la


transformada continua de onduleta y posteriormente la transformada discreta de onduleta.
Con la Transformada de Fourier con Ventana se logra una mejor localizacin de la aparicin
de una singularidad en una seal. Pero solo se conocer en qu intervalo de tiempo se
produce la singularidad, debido a que la localizacin depende del ancho elegido para la
funcin ventana. Adems, los eventos no podrn ser resueltos si aparecen muy cerca unos de
otros, ya que no ser posible distinguir diferentes comportamientos dentro de una misma
amplitud de ventana [8].

Una herramienta matemtica que permite resolver estos problemas es la Transformada


Wavelet. Este tipo de transformada es capaz de concentrarse en fenmenos transitorios y de
alta frecuencia mejor que la Transformada de Fourier con Ventana. Con esta ltima, una vez
que el tamao de la ventana es elegido, todas las frecuencias son analizadas con las mismas
resoluciones de tiempo y frecuencia, distinto de lo que sucede en la Transformada Wavelet
que tiene un tamao de ventana adaptado a las frecuencias
Wavelet es el trmino usado para definir las funciones que son usadas para muestrear la seal
que se desea analizar y se describe mediante la siguiente ecuacin:

En donde * es el conjugado de wavelet madre que ser escalada y corrida punto a punto

para determinar los niveles de comparacin con la seal s(t), el valor de = da la escala de
0

la wavelet ,con 0 como frecuencia central y la traslacin en el tiempo [7].


Pasos para evaluar la transformada de Wavelet:
1) Se toma una wavelet y compara con una seccin al comienzo de la seal original, de
manera que sean lo ms similar posible.
2) se calcula un nmero C, que representa cmo de correlada est la wavelet con esa
seccin de la seal, es decir se calcula la integral de convolucin entre la seal y la
wavelet. Cuanto ms alto sea C, existir mayor similitud.
3) se desplaza la wavelet hacia la derecha y se repite los pasos 1 y 2 hasta que se haya
cubierto la seal completa.
4) Se escala (estira o encoje) la wavelet y se repite los pasos del 1 al 3.
5) Se repite los pasos desde el 1 al 4 a travs de todas las escalas.
El clculo de los coeficientes wavelet en cada una de las escalas conlleva un gran esfuerzo
computacional, generando una gran cantidad de datos. Por tanto, es lgico plantearse el elegir
slo una parte de las escalas y posiciones con los que hacemos los clculos. De hecho, si
elegimos escalas y posiciones basadas en potencias de dos, entonces el anlisis ser mucho
ms eficiente sin perder precisin. Este anlisis recibe el nombre de transformada discreta
wavelet (TWD).

Bibliografa
[1] Tratamiento de Seales en Tiempo Discreto, Alan Oppenheim, Ronald Schafer, Prentice
Hall, 3rd Edition 2007.

[2] << Caractersticas tiles para la compresin de imgenes>> [En lnea]. Disponible en:
http://www2.fisica.unlp.edu.ar/materias/procesamiento_de_imagenes/Clase2_Imagenes_2011.p
df
[3] << Comprensin JPEG>> [En lnea]. Disponible en:
https://vimeo.com/41038308
[4] Wallace, G. K. (1991). The JPEG Still Picture Compression Standard.
[5] << dsp.DCT System object>> [En lnea]. Disponible en:
http://es.mathworks.com/help/dsp/ref/dsp.dct-class.html
[6] <<Anlisis de principios y aplicaciones de la transformada wavelet>> [En lnea]. Disponible en:
https://www.academia.edu/6395498/An%C3%A1lisis_de_principios_y_aplicaciones_de_la_transf
ormada_wavelet
[7] <<TRANSFORMADA WAVELET>> [En lnea]. Disponible en:
http://catarina.udlap.mx/u_dl_a/tales/documentos/meie/osorio_s_a/capitulo2.pdf
[8] M. Vetterli, y J. Kovacevic. Wavelets and Subb and Coding. Pretince Hall Signal
Processing Series, 1995.
[9]<< Introduccin a la Transformada Wavelet>> [En lnea]. Disponible en:
http://www.exa.unicen.edu.ar/escuelapav/cursos/wavelets/apunte.pdf

You might also like