1
PRACTICA DE LABORATORIO 3 ANALISIS DE SEÑALES
HERRAMIENTAS DEL PROCESO DE SEÑALES, CONVOLUCION Y FUNDAMENTOS DE SIMULINK Francisco Rodríguez de Arce Joan Manuel Manrique Abstract — Se realizo la convolución de algunas señales con el fin de observar esta operación en el simulador, de igual forma se procesaron imágenes y sonidos para ver el efecto que tiene sobre estas la operación. Otro de los procesos hechos en el laboratorio fueron observar las herramientas del imagen y crear funciones que hicieran lo mismo en Matlab. Palabras clave —
Convolucion, Matlab, Señal, ImageJ, Formato
de Imagen.
I. INTRODUCCION Matlab tiene implementado el soporte para la convolución de tiempodiscreto usando la función conv. Realmente la función conv puede ser usada para otras cosas además de la convolución en tiempo-discreto. El propósito de este laboratorio es el de introducir a las herramientas básicas de procesamiento de señales, voz e imágenes usando el Matlab, Simulink y el software ImageJ para el procesamiento de imágenes. II. OBJETIVOS
2.2 Convolucion de un impulso y una onda cuadrada:
d = [0 1 0 0 0 0]; xs = [1 1 1 1 1 1]; y = conv(d,xs); t = 0:length(y)-1; stem(t,y) La grafica obtenida es :
A. Objetivo general
Mediante el uso del Matlab observar la aplicaciones sobre imágenes comparando con los procesos en ImageJ. III. OBJETIVOS ESPECIFICOS
Realizar la convolución a cierto tipo de señales o funciones Procesar señales de voz mediante filtros. Procesar señales visuales o imágenes y compararlas con el proceso en ImageJ IV. PROCEDIMIENTO 2.
Convolucion: 2.1 Convolucion de dos funciones impulso:
x1 = [1 0 0]; x2 = [0 1 0]; y = conv(x1,x2); t = 0:length(y)-1; stem(t,y) Al realizar estos comandos se genera la siguiente señal:
Si corro el impulso de la siguiente forma obtenemos esto: d = [0 0 1 0 0 0]; xs = [1 1 1 1 1 1]; y = conv(d,xs); t = 0:length(y)-1; stem(t,y)
2
Si corro la onda obtengo esto: d = [0 1 0 0 0 0]; xs = [0 1 1 1 1 1 1]; y = conv(d,xs); t = 0:length(y)-1; stem(t,y)
Convolucion de dos ondas cuadradas:
xs =h [1 1 1 1 1 1]; y = conv(xs,xs); t = 0:length(y)-1; stem(t,y)
2.3 Convolucion animada en tiempo discreto:
clear all; close all; t = [-4 -3 -2 -1 0 1 2 3 4]; x = [ 0 0 0 0 1 2 3 0 0]; h = [ 0 0 0 0 2 1 0 0 0]; y = [ 0 0 0 0 0 0 0 0 0];%declaracion de vectores yc = 1;%contador
for n=min(t):max(t), %ciclo de incremento de la n para evaluar pause(3); ht = fliplr(h);% reflexión de h if n<0, ht = [ht(-n+1:length(h)) zeros(1,-n)];% desplazamiento a la izquierda else ht = [zeros(1,n) ht(1:length(h)-n)];% desplazamiento a la derecha end y(yc) = sum(x.*ht);%sumatoria del producto de vectores yc = yc + 1;%incremento posicion contador subplot(2,1,1);%2 graficas en 1 ventana stem(t,x);%grafico hold on;%retiene la grafica stem(t,ht,'filled','r');%grafica de los vectores hold off;%sigue la grafica xlabel('t');%leyenda de grafica legend('x[n]','h[n-k]',0);%leyenda de las graficas title(['n= ' num2str(n)]);% titulo subplot(2,1,2);%segunda grafica stem(t,y);%grafica y xlabel('t'); ylabel('y[n]');%leyendas end
3
3.
Procesamiento de señales
La señal que se observa en el Scope es la siguiente:
Podemos observar la amplitud de la señal en el tiempo y si espectro en la frecuencia, de la onda seno.
Cambiando la frecuencia de la onda seno a 5Rad/seg obtenemos:
4
Dandole valores de amplitud a cada onda seno tenemos:
2.2 Sintetizando una onda cuadrada
Y en el Scope 2:
Tomando el sintetizador dado:
Cambiando el valor de la constante a 1:
La respuesta obtenida es:
Y ahora a -1:
Y en el Scope 2:
3. Procesamiento de Voz load 'noisyspeech' sound(nspeech) set(figure(1), 'pos', [800 700 400 250])
5
plot(nspeech (1:50)) La primera imagen es la original, luego tenemos el original en blanco y negro, después se invierten los colores, y luego solo se enfoca la cara. Usando la función imhist, primero tomamos la imagen y la pasamos a escala de grises, para luego usar el imhist: y=imread('len_full.jpg'); I = rgb2gray(y) imhist(I); imagen en escala de grises
set(figure(2), 'pos', [800 350 400 250]) plot(frequency, nspeechspec)
Histograma
Smoothing Filtramos la señal: FilterSpeech sound(speech)
Ingresando el siguiente script, nos da las siguientes graficas: kernal1 = [0.06 0.13 0.06 0.13 0.25 0.13 0.06 0.13 0.06] FilterImg('teton_clouds.pgm',kernal1);
Y miramos el espectro:
Imagen Original set(figure(3), 'pos', [800 10 400 250]) plot(frequency, speechspec)
6. Comenzando con el Matlab en el procesamiento de imágenes Ingresando los códigos dados, observamos los siguientes cambios en la imagen:
Imagen Filtrada
6
Creando la imagen de los 4 cubos, 2 negros y 2 blancos, y aplicando los filtros tenemos: Se nota en la calidad de la imagen que la filtrada tiene rasgos más suaves.
Figura Original
Cambiando los valores de kernal1 de la siguiente forma nos muestra como resultado: kernal1 = [-0.11 -0.11 -0.11 -0.11 1.89 -0.11 -0.11 -0.11 -0.11] FilterImg('teton_clouds.pgm',kernal1); Figura con el Kernel= [0.06 0.13 0.06 0.13 0.25 0.13 0.06 0.13 0.06]
Detección de bordes Variando el script de nuevo logramos los bordes de una imagen kernal1 = 10*[-0.11 -0.11 -0.11 -0.11 0.89 -0.11 -0.11 -0.11 -0.11] FilterImg('edge_in.tif',kernal1);
Aplicando el segundo kernel tenemos:
Imagen Original
Y el ultimo kernel: Imagen Filtrada
7
V. CONCLUSIONES
Con MATLAB, se puede hacer la convolucion de varios tipos de señales, como función impulso, funciones continuas, etc. Se les pueden aplicar filtros a señales de audio e imagen, para mejorar la calidad de sonido en cuando al audio o la calidad de la imagen. La función imhist de MATLAB solo sirve para imágenes en blanco y negro.