Análisis de señales
Laboratorio 03: Introducción a Matlab:
imágenes, audio y vídeo
Escuela de Ciencias exactas e Ingeniería
Código: SA2021I_LAB03
Profesor: Marco Teran
Name: Deadline: 27 de abril
Abstract
En el presente laboratorio se aplicarán las bases para desarrollar los posteriores laboratorios, talleres
y trabajos escritos. Se realizará código de MATLAB que permita la generación, tratamiento y almace-
namiento de imágenes, audio y vídeo. Se compilarán códigos en LATEXy se generarán archivos PDF de
acuerdo al formato de presentación. En el presente laboratorio se implementarán algunas herramientas
necesarias para el procesamiento de archivos multimedia en MATLAB. Se realizarán códigos en MAT-
LAB para la generación, transformación y almacenamiento de archivos de audio e imágenes. Se abrirán
en MATLAB archivos de video y se obtendrá información de estos.
1 Desarrollo de la práctica de laboratorio
1. (5 points) Responda brevemente en la sección de Marco Teórico de su plantilla de labora-
torio las siguientes preguntas:
(a) En el marco teórico es necesario definir las características, tipo de codificación y propiedades de un
archivo de audio con extensión .wav.
(b) ¿Que diferencia hay entre archivos de audio mono y estéreo al ser leídos y guardados en MATLAB?
(c) Para leer una imagen en Matlab es necesario conocer el tipo de formato que maneja la imagen y su
codificación. Describa los formatos .PNG, .BMP y .JPG, diferencie, preferiblemente con una tabla.
¿Que son los modelos de color RGB y CMYK?
2. (10 points) Exportar señales de MATLAB a archivos .wav:
Un archivo .wav es un estándar de audio para computadores1 .
A continuación se muestran los comandos utilizados para abrir, leer y guardar archivos .wav en Matlab.
La linea de comando
[x, fs , bits ] = audioread('filename')
Lee un archivo llamado ’[Link]’ y lo convierte en el vector x como variable de Matlab; f s extrae
la frecuencia de muestreo del archivo y bits, tal cual como su nombre lo indica, representa la resolución
de bits de la señal muestrada. El comando
x = audioread('filename',Nsamples)
lee las primeros N samples muestras del archivo .wav en caso de que no se desee extraer el audio completo.
El comando
audiowrite('filename' ,x, fs )
crea a partir del vector x un archivo de audio .wav con una frecuencia de muestreo f s y llamado
’[Link]’.
La resolución estándar para archivos de audio es de 16 bits o ˘32768 niveles. La amplitud se encuentra
escalada y restringida a un intervalo de r´1, 1s en el vector x. El comando
audiowrite('filename' ,x,Fs,bit)
cambia la resolución de bits del archivo.
A continuación genere en MATLAB una señal sinusoide con una amplitud de A “ 0.1, una frecuencia
f “ 100 Hz, para N “ 100000 muestras, y una frecuencia de muestreo de fs “ 22050 Hz.
1 WAV, articulo Wikipedia [Link]
Análisis de señales Introducción a Matlab: 2
Escuche la señal, y luego guarde esta en un archivo .wav, cuyo nombre de archivo es el código asignado
al laboratorio. Adjunte el archivo .wav en el proyecto .zip de su laboratorio.
El tiempo total de la señal: Nsamples {f s “ 4.535 s.
N_samples = 1 0 0 0 0 0 ;
f s = 22050;
fc = 100;
t = ( 0 :N- 1 ) / f s ;
x = 0 . 1 * sin (2* pi * f c * t ) ;
sound( x , f s )
a u d i o w r i t e ( ' si n s o u nd . wav ' , x , f s ) ;
Código 1 – Generación de una señal .wav a partir de un armónico
Genere y guarde una versión ruidosa de esta señal, es decir adicione ruido blanco Gaussiano con una
potencia igual a la mitad de la potencia de la señal de audio original. Llame esta versión del audio
contaminado tal cual como la anterior, pero agregue sin espacios al final del nombre la palabra NOISED.
3. (10 points) Tratamiento de imágenes en Matlab:
Para abrir la imagen [Link], de tipo RGB que se encuentra en el repositorio, se debe utilizar la función:
RGB = imread('[Link]');
En esta linea de código anterior, la imagen2 se guarda en una variable-vector denominado RGB. Describa
las dimensiones de la variable RGB y su significado. ¿Que tipo de valores toma el vector? Defina la
estructura, y por ultimo genere las gráficas de los 3 histogramas correspondientes a los datos de las tres
matrices. Utilice las funciones especializadas de Matlab de DIP (ing. Digital Image Processing) si así lo
desea.
Para mostrar los datos de la imagen RGB se utiliza la función imshow(RGB).
Para convertir y mostrar una una imagen a escala de grises utilicemos las siguientes lineas de comando:
gray = rgb2gray (RGB) ;
imshow ( gray )
Código 2 – Convertir y mostrar una una imagen a escala de grises
Describa las dimensiones de la variable gray. ¿Que tipo de valores toma? Defina su estructura, y genere
un histograma con sus valores.
2 Descargar la imagen de prueba de la carpeta /laboratory/introtomatlab/pictures del repositorio (Descargar).
Análisis de señales Introducción a Matlab: 3
El siguiente código extrae las componentes en rojo, verde y azul de la imagen [Link] que se
encuentra en la carpeta de introtomatlab/pictures en el repositorio3 :
close a l l ; clear a l l ; c l c ;
myimg=imread ( ' peppers . png ' , 'PNG' ) ;
s i z e (myimg)
n b c l =512; mcol = [ 0 : nbcl - 1 ] ' / ( nbcl - 1 ) ;
mypal=zeros ( nbcl , 3 , 3 ) ; mypal ( : , 1 , 1 )=mcol ;
mypal ( : , 2 , 2 )=mcol ; mypal ( : , 3 , 3 )=mcol ;
for k=1:3
figure ( k ) , imagesc (myimg ( : , : , k ) )
colormap ( mypal ( : , : , k ) ) ; axis ( ' image ' )
end
Código 3 – Extracción RGB de una imagen
1. Escriba una función código .m que lea una imagen, sea de color o en escala de grises, y la convierta
en una imagen en blanco y negro (solo 1 bit). Nota: No utilice la función rgb2bw.
2. (Investigación) A una imagen en escala de grises agregue ruido blanco, de acuerdo a las siguientes
relaciones señal ruido (SNR, ing. Signal to noise rate): ´4 dB, 0 dB, 2 dB. Muestre en subplots la
imagen original, y las tres versiones ruidosas de esta.
4. (10 points) Archivos de video en Matlab
EL programa matemático Matlab puede leer distintos formatos de archivos de video como .avi, .mpg y
.wmv. Para reproducir un video con MATLAB, basta con utilizar la linea de código
implay('rbsp_launch_720p.mp4');
Descargar el archivo de video aquí.
Para obtener la información de un archivo de video se puede utilizar el siguiente código:
movieObj = VideoReader ( ' grail_launch_720p .wmv ' ) ;
get ( movieObj )
nFrames = movieObj . NumberOfFrames ;
width = movieObj . Width ;
h e i g h t = movieObj . Height ;
Código 4 – Extraer información de un archivo de video en MATLAB
Incluya en el informe la información del video.
Utilice el siguiente código para abrir, mirar la información de un archivo de video y mostrar de forma
individual cada uno de sus frames (descargar archivo de video [Link] que se encuentra en la
carpeta introtomatlab/video/ del repositorio del laboratorio enlace):
clear a l l
close a l l
movieObj = VideoReader ( 'oneCCC .wmv ' ) ;
get ( movieObj )
nFrames = movieObj . NumberOfFrames ;
for iFrame = 1: 2: nFrames
I = read ( movieObj , iFrame ) ;
f p r i n t f ( ' Frame %d\n ' , iFrame ) ;
imshow ( I , [ ] ) ;
pause ( 0 . 1 ) ;
end
Código 5 – Abrir video en MATLAB y mirar sus frames
3 Descargar [Link]
Análisis de señales Introducción a Matlab: 4
Comente cada una de las lineas del código anterior e incluyalas en el informe, muestre los resultados.
Para más ejemplos de código Matlab utilizando videos, visitar:
[Link]