36
Procesamiento de señales, imágenes y visión artificial con MatLab “Quien no se resuelve a cultivar el hábito de pensar, se pierde el mayor placer de la vida” Thomas A. Edison

epn filtros

Embed Size (px)

DESCRIPTION

HOLA

Citation preview

Page 1: epn filtros

Procesamiento de señales, imágenes y visión artificial con MatLab

“Quien no se resuelve a cultivar el hábito de pensar, se pierde el mayor placer de la vida”

Thomas A. Edison

Page 2: epn filtros

EFECTO DE UN

SLI

SOBRE LA ENTRADA

FILTROS DIGITALES

Page 3: epn filtros

GENERALIZACIÓN PARA SISTEMAS DISCRETOS:

Asumiendo a(1) = 1

Ecuación en diferencias para un SLI.

Salida = f ( entradas actual y pasadas , salidas pasadas )

Qué efecto produce un SLI sobre una entrada X[n] ?

Page 4: epn filtros

Ejercicio: Encuentre la señal de salida de los SLI’s (a) y (b).

Utilizar como entrada una señal sinusoidal de 3 Hz con ruido

Señal + ruido

a) y[n]=0.9*y[n-1]+0.1*x[n];

b) y[n]=0.9*y[n-1]+0.05*x[n]+0.05*x[n-1];

Para responder, hagamos el siguiente ejercicio:

Como observamos, la salida del Sistema, es decir la respuesta del

Mismo depende directamenteDe la señal de

entrada

Page 5: epn filtros

EN LAS SIGUIENTESDIAPOSITIVAS

SE PRESENTA LA SOLUCION AL PROBLEMA PLANTEADO

Señal + ruido

Page 6: epn filtros

PRIMER PASO

Page 7: epn filtros

CODIGO DE IMPLEMENTACIÒN

clear allclose all

Fs = 100;t = 0:1/Fs:1;x = sin(2*pi*t*3)+.25*rand*sin(2*pi*t*40); %

señal + ruidoplot(t,x)

y(1)=x(1); % condición inicial para el lazo de abajo

for i=2:length(t) y(i)=0.9*y(i-1)+0.1*x(i);end

plot(t,x)hold onplot(t,y)

RESULTADO

La grafica; nos muestra la señal Original (un tono mas ruido);Y la señal resultante.

Nota: la señal resultante tendrá; una menorAmplitud; y un periodo relativamente menor

a) y[n]=0.9*y[n-1]+0.1*x[n];

Page 8: epn filtros

b) y[n]=0.9*y[n-1]+0.05*x[n]+0.05*x[n-1];

CODIGO DE IMPLEMENTACIÒN

Fs = 100;t = 0:1/Fs:1;x =

sin(2*pi*t*3)+.25*rand*sin(2*pi*t*40); % señal + ruido

plot(t,x)

% condiciones iniciales para el lazo de abajo

y(1)=x(1);y(2)=x(2);

for i=3:length(t) y(i)=0.9*y(i-1)+0.05*x(i)+0.05*x(i-1);endplot(t,x,t,y)

La grafica; nos muestra la señal Original (un tono mas ruido);Y la señal resultante.

RESULTADO

Nota: la señal resultante tendrá; una menorAmplitud; y un periodo relativamente menor

Page 9: epn filtros

CONCLUSION:

Los anteriores SLI están “suavizando” a la entrada.

Entonces:

El SLI está actuando como un filtro digital ….

Para tener un filtro digital, solo se requiere de los coeficientes.

Page 10: epn filtros

GENERALIZACIÓN DE UN SISTEMA DISCRETO VISTO COMO FILTRO DIGITAL:

Asumiendo a(1) = 1 Salida = f ( entradas actual y pasadas , salidas pasadas )

Cálculo de la salida, asumiendo condiciones iniciales = 0:

En matlab, esto es computado por la función FILTER

Page 11: epn filtros

LA FUNCIÓN FILTER: hace la función del lazo “for” que vimos en la resolución de los problemas antes planteados.

A = [a1 a2 ... an]; B = [b1 b2 ... bn]

Y = filter (B, A, X)

Y = filter (B, A, X, C.I)

FILTER:

Dados A, B y X:

Obtiene la salida Y

Si se desea filtrar la señal X a través de un filtro de coeficientes A y B, se utiliza la función FILTER. A la salida se tiene la señal filtrada Y:

Page 12: epn filtros

FILTROS EN MATLAB:

En matlab se pueden construir filtros tanto digitales como analógicos:

1. Filtros digitales: tenemos filtros FIR e IIR y se los construye por medio de un gráfico frecuencia-ganancia.

f is a vector of frequency points, specifiedin the range between 0 and 1, where 1 corresponds to half the sample frequency(the Nyquist frequency). The first point of f must be 0and the last point 1, with all intermediate points in increasing order. Duplicatefrequency points are allowed, corresponding to steps in the frequency response.

m is a vector containing the desired magnitude response at the points specified in f.

Page 13: epn filtros

2. Filtros analógicos: tenemos filtros a) Máximamente planos o sin rizados (Butterworth), b) Con rizado en la banda de paso (Chevyshev I), c) Con rizado en la banda de supresión(Chevyshev II), d) Con rizado tanto en la banda de paso como en la de supresión (Elíptico).

Page 14: epn filtros

FUNCIONES DE MATLAB

PARA EL DISEÑO DE FILTROS DIGITALES

FILTROS IIR:a)Filtro IIR digital: función yulewalk

[b,a] = yulewalk (n,f,m); % Yule–Walker IIR Filter

Fase 3: salida del filtro utilizando los coeficientes calculados anteriormente:x_filt=filter(b,a,x); % x: la señal a filtrar ; b,a: los coeficientes del filtro

Page 15: epn filtros

Obtiene los coef. A y B al resolver las ecuaciones modificadas de Yule-Walker

n: orden del filtroF: vector [fo f1 f2 ... Fmax] / Fmax; Fmax = fs / 2M: vector [mo m1 m2 ... m] (ganancia)

Cálculo de coeficientes:

DISEÑO DE FILTROS IIR digitales

Es importante recordarque los vectores M y F

deben tener la misma longitud

Page 16: epn filtros

Cuál es la respuesta en frecuencia real del filtro obtenido???:

FREQZ:

Da la respuesta en frecuencia evaluada en N puntos (defecto:512) equiespaciados de la mitad superior del círculo unidad

Fs: frec. muestreo

Freqz (B, A, N, Fs): Grafica el (módulo y la fase) vs frecuencia

Page 17: epn filtros

Diseñe un filtro multibanda con yulewalk y grafique la respuesta de frecuencia deseada y real.

Ejercicio:

Page 18: epn filtros

Diseñe un filtro multibanda con yulewalk y grafique la respuesta de frecuencia deseada y real.

m = [0 0 1 1 0 0 1 1 0 0];f = [0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 1];[b,a] = yulewalk(10,f,m);[h,w] = freqz(b,a,128);plot(f,m,w/pi,abs(h))title('Respuestas ideal y real (magnitud: escala lineal)')

Figure

% Respuesta en frecuencia:% Diagrama de Bode% (respuesta en magnitud y en fase):%ver respuesta en frecuencia en 128 puntosfreqz(b,a,128); %Obs: la frec. Está normalizadatitle(‘Diagrama de Bode(magnitud: escala en dB)')

% Obs: respuesta en fase: No Lineal

Resolución:

Es importante no olvidar que,en este par de vectores solo esnecesario indicar los puntos

críticos de la señalque filtaremos

Page 19: epn filtros

Diagrama de Bode:

% Obs: respuesta en módulo: Filtro multibanda% Obs: respuesta en fase: No Lineal

Page 20: epn filtros

Ejemplo: aisle cada uno de los tres tonos de la señal dada.

Page 21: epn filtros

PRIMER PASOCALULO DEL ESPECTRO DE LA SEÑAL

CODIGO DE IMPLEMENTACIÒNclear all;close all;clc; Fmax=140;fs=2.1*Fmax;t=0:1/fs:5;x=sin(2*pi*t*100)+sin(2*pi*t*120)+sin(2

*pi*t*140); nFFT=1024;LongVentana= nFFT/4;Solapamiento =LongVentana/2; [P_welch_BB,F_welch_BB] =

pwelch(x,LongVentana,Solapamiento,nFFT,fs);

subplot(4,1,1)plot(F_welch_BB,P_welch_BB,'r')

El encontrar de manera grafica el espectro de la señal permitirá al usuario notar el tamaño de los vectores para, poder realizar el filtrado pertinente

Ver grafico 1

Page 22: epn filtros

SEGUNDO PASOFILTADO DE CADA TONO

% 1. Filtrado del primer tono:orden=25;f1=[0 100 105 110 140]/Fmax;m1=[1 1 1 0 0];[b1,a1]=yulewalk(orden,f1,m1);senial_filtrada_uno=filter(b1,a1,x);

%espectro senal filtrada:[P_welch_BB_filt,F_welch_BB_filt] =

pwelch(senial_filtrada_uno,LongVentana,Solapamiento,nFFT,fs);

subplot(4,1,2)plot(F_welch_BB_filt,P_welch_BB_filt,'r') % 2. Filtrado del segundo tono:f1=[0 110 115 120 125 130 140]/Fmax;m1=[0 0 1 1 1 0 0];[b1,a1]=yulewalk(orden,f1,m1);senial_filtrada_dos=filter(b1,a1,x);

El filtrado de cada tono permitirá aislar;

a cada uno de estos del resto de señal.

Y para poder comprobar que lo que realizamos es cierto extraemos el espectro de cada señal filtrada

Ver grafico 2

Page 23: epn filtros

%espectro senal filtrada:[P_welch_BB_filt,F_welch_BB_filt] =

pwelch(senial_filtrada_dos,LongVentana,Solapamiento,nFFT,fs);

subplot(4,1,3)plot(F_welch_BB_filt,P_welch_BB_filt,'r') % 3. Filtrado del tercer tono:f1=[0 110 115 120 125 130 140]/Fmax;m1=[0 0 0 0 0 1 1];[b1,a1]=yulewalk(orden,f1,m1);senial_filtrada_tres=filter(b1,a1,x); %espectro senal filtrada:[P_welch_BB_filt,F_welch_BB_filt] =

pwelch(senial_filtrada_tres,LongVentana,Solapamiento,nFFT,fs);

subplot(4,1,4)plot(F_welch_BB_filt,P_welch_BB_filt,'r')

Page 24: epn filtros

Resultados:

Grafico 1

Grafico 2

Primer tono

Grafico 2

segundo tono

Grafico 2

tercer tono

Page 25: epn filtros

FIR: Filtro digital (solo desde fase 2):

Fase 1: se conoce ya el orden del filtro (n)

Fase 2: cálculo de los coeficientes: utilizar las siguientes posiblidades según el caso:

b = fir1 (n, wn, type, ventana);

% n = orden del filtro; wn= vector de frecuencias normalizado, type= high (pasa alta), stop (elimina banda)

% ventana = blackman, hamming, hanning, etc)

b = fir2 (n, f, A, ventana);

% n = orden del filtro; f = vector normalizado de frecuencias; A = vector normalizado de ganancias

b = remez (n, f, A); % CASI SIMILAR AL FIR2

% n = orden del filtro; f = vector normalizado de frecuencias; A = vector normalizado de ganancias

Fase 3: salida del filtro utilizando el coeficiente calculado anteriormente:

x_filt=filter(b,1,x); % x: la señal a filtrar ; b,a=1: los coeficientes del filtro

FILTROS DIGITALES TIPO FIR:

Ventaja: son de fase lineal. Desventaja: requieren orden MAYOR que los IIR

Page 26: epn filtros

% Diseñe un filtro pasa banda entre 5 y 15 Hz.% Asuma una frecuencia de muestreo de 100 Hz.% Orden del filtro = 128%clear all; close all;fs = 100; % frecuencia de muestreo Fmax = fs/2;

order = 128; % Orden del filtrown = [5 15]/ Fmax; % vector de ftrecuenciasb = fir1(order,wn); % diseño del filtro FIR,

% Respuesta en frecuencia:% Diagrama de Bode

freqz(b,1,512,100);

% Plot modulo de h:

[h,freq] = freqz(b,1,512,100);

figureplot(freq,abs(h),'k'); xlabel('Frecuencia (Hz)'); ylabel('H(f)');

figureplot(freq,20*log10(abs(h)),'k'); xlabel('Frecuencia (Hz)'); ylabel('H(f) en dB');

EJEMPLO FILTROS FIR: usando FIR1

Page 27: epn filtros

DISEÑO DE UN FILTRO FIR (USANDO FIR2) DE ORDEN 12

Y SU RESPUESTA EN FRECUENCIA

% EJEMPLO FILTROS FIR: usando FIR2

close all; clear all;n = 12; % ordenf = [0 .25 .25 .6 .6 1]; % respuesta de frecuenciam = [0 0 1 1 0 0];

b1 = fir2(n,f,m); % FIR rectangular window filterh1 = freqz(b1,1,256);plot(f,m,'k'); % Plot: respuesta ideal hold onw = (1:256)/256;plot(w,abs(h1),':r'); % Plot: FIR filterxlabel(' Frequencia Relativa');

title('FIR utilizando FIR2')legend('ideal','FIR')

En este tipo de filtros es necesario recordarque, mientras mayor es el orden del filtro mejor calidad tendrá, es decir, mas vertical será la caída, pero no olvidarque eso requiere de mejor hardware

Page 28: epn filtros

OTRAS FUNCIONES DE MATLAB PARA FILTROS FIR

Cálculo de coeficientes:

Ventaja: son de fase lineal. Desventaja: requieren orden MAYOR que los IIR

FASE 1

Page 29: epn filtros

COMPARACIÓN: FILTROS IIR (YULEWALK) Y FIR (FIR2)

Y SU RESPUESTA EN FRECUENCIA

close all; clear all;n = 12; % ordenf = [0 .25 .25 .6 .6 1]; % respuesta de frecuenciam = [0 0 1 1 0 0];[b,a] = yulewalk(n,f,m); % Yule–Walker IIR Filterh = freqz(b,a,256);b1 = fir2(n,f,m); % FIR rectangular window filterh1 = freqz(b1,1,256);plot(f,m,'k'); % Plot: respuesta ideal hold onw = (1:256)/256;plot(w,abs(h),'--b'); % Plot: Yule-Walker filterhold onplot(w,abs(h1),':r'); % Plot: FIR filterxlabel(' Frequencia Relativa');

title(‘Comparación entre IIR y FIR del mismo orden')legend('ideal','IIR','FIR')

%CONCLUSIÓN:

%FIR requieren orden MAYOR que los IIR

Page 30: epn filtros

Aplicación a un audio: FILTAR UNA CANCIÓN USANDO UN FILTRO FIR

% Obtenemos la señal original (estereo):%archivo original:[y_original,Fs,format] =

wavread('ArjonaOriginal');size(y_original) %2 canales (estereo): 569039

filas por 2columnasplot(y_original) % se verifica dos señales

diferentestitle('señal original (estereo)')% sound(y_original,Fs)

canal_izquierdo_original=y_original(:,1);%extraemos 1 solo canal

size(canal_izquierdo_original) %569039 filas por 1 columnas

figureplot(canal_izquierdo_original)title('señal original canal izquierdo')

%quitar todos los plots%sound(canal_izquierdo_original,Fs) % si

reproduce

El código implementado nos permite extraer canciones para realizar el trabajo.

Como la señal es estereo solo usamos un canal

Es aconsejable usar tonos pequeños de canciones para no hacer muy lento el procesamiento

PRIMER PASO

EXTRACCION DE LAS CANCIONES

Page 31: epn filtros

SEGUNDO PASOEXTRACCION DEL ESPECTRO DE LAS SEÑALES

nFFT=1024;LongVentana= nFFT/2;Solapamiento =nFFT/4;%Espectro de potencias:% LA FUNCIÓN DE MATLAB pwelch:%[P_welch,F_welch] =

pwelch(canal_izquierdo,LongVentanaHanning,MuestrasTraslapadas,nFFT,fs);

[P_welch_original,F_welch_original] = pwelch(canal_izquierdo_original,LongVentana,Solapamiento,nFFT,Fs);

P_welch_norm_original=P_welch_original/max(P_welch_original);

figureplot(F_welch_original,P_welch_original)grid on

order = 128; % Orden del filtroFmax = Fs/2;wn = [5 3000]/ Fmax; % vector de ftrecuenciasb = fir1(order,wn); % diseño del filtro FIR,

A mas de encontrar el espectro de frecuencias, tambien configuramos el filtro que vamos a usar.

Page 32: epn filtros

cancion_filtrada = filter (b,1,canal_izquierdo_original);

%Espectro de potencias:

% LA FUNCIÓN DE MATLAB pwelch:%[P_welch,F_welch] =

pwelch(canal_izquierdo,LongVentanaHanning,MuestrasTraslapadas,nFFT,fs);

[P_welch_filtrada,F_welch_filtrada] = pwelch(cancion_filtrada,LongVentana,Solapamiento,nFFT,Fs);

P_welch_norm_filtrada=P_welch_filtrada/max(P_welch_filtrada);

figureplot(F_welch_filtrada,P_welch_filtrada)grid on

figureplot(F_welch_original,P_welch_norm_original)hold onplot(F_welch_filtrada,P_welch_norm_filtrada,'r:')grid on

%sound(y_original,Fs)sound(cancion_filtrada,Fs)

TERCER PASO

COMPARACION DE LOS DOS TIPOS DE FILTRO

Page 33: epn filtros

CON FASE 1: incluye la determinación del orden del filtro

SIN FASE 1: se supone ya conocido el orden del filtro

FUNCIONES DE MATLAB

PARA EL DISEÑO DE FILTROS ANALÓGICOS

Page 34: epn filtros

% Example: sin fase 1:% Plot the frequency response curves % (in db) obtained from% an 8th-order lowpass filter using the Butterworth, %Chebyshev Type I and II, and% elliptic filters. Use a cutoff frequency of 200 Hz and % assume a sampling frequency% of 2 kHz. For all filters, the passband ripple should % be less than 3 db% and the minimum stopband attenuation should be 60 db.

% Frequency response of four 8th-order lowpass filters%N = 256; % Spectrum number of pointsfs = 2000; % Sampling filtern = 8; % Filter orderwn = 200/fs/2; % Filter cutoff frequencyrp = 3; % Maximum passband ripple in dbrs = 60; % Stopband attenuation in db%%%Butterworth[b,a] = butter(n,wn); % Determine filter coefficients[h,f] = freqz(b,a,N,fs); % Determine filter spectrumsubplot(2,2,1);h = 20*log10(abs(h)); % Convert to dbsemilogx(f,h,'k'); % Plot on semilog scale%axis([100 1000 -80 10]); % Adjust axis for better visi-% bilityxlabel('Frequency (Hz)'); ylabel('X(f)(db)');title('Butterworth');%

%Chebyshev Type I[b,a] = cheby1(n,rp,wn); % Determine filter coefficients[h,f] = freqz(b,a,N,fs); % Determine filter spectrumsubplot(2,2,2);h = 20*log10(abs(h)); % Convert to dbsemilogx(f,h,'k'); % Plot on semilog scale%axis([100 1000 -80 10]); % Adjust axis for better visibilityxlabel('Frequency (Hz)'); ylabel('X(f)(db)');title('Chebyshev I');%

% Chebyshev Type II[b,a] = cheby2(n,rs,wn); % Determine filter coefficients[h,f] = freqz(b,a,N,fs); % Determine filter spectrumsubplot(2,2,3);h = 20*log10(abs(h)); % Convert to dbsemilogx(f,h,'k'); % Plot on semilog scale%axis([100 1000 -80 10]); % Adjust axis for better visi-% bilityxlabel('Frequency (Hz)'); ylabel('X(f)(db)');title('Chebyshev II');% Elliptic[b,a] = ellip(n,rp,rs,wn); % Determine filter coefficients[h,f] = freqz(b,a,N,fs); % Determine filter spectrumsubplot(2,2,4);h = 20*log10(abs(h)); % Convert to dbsemilogx(f,h,'k'); % Plot on semilog scale%axis([100 1000 -80 10]); % Adjust axis for better visi-% bilityxlabel('Frequency (Hz)'); ylabel('X(f)(db)');title('Elliptic');

Page 35: epn filtros

Ejemplo de filtros analógicos:

Ver ppt adicional sobre diseño de filtros

Page 36: epn filtros

DEBERES: entrenamiento final previo a simulación en comunicaciones.

Fecha de entrega: martes 23 de marzo 2010 a las 7 am en punto.

Nota 1: El deber se debe entregar en grupos de 2 y en cd (puesto nombres).

Nota 2: No se aceptarán trabajos si no están hecho paso a paso y con todas las reglas ya expuestas en clase.

1. Leer un archivo .wav y filtrarlo con filtros pasa bajas, pasa banda y pasa altas. Utilice tanto filtros digitales FIR como IIF. Realice un informe de lo que escuchó en cada caso. Las frecuencias de corte las decide ud.

2. Genere un tono de 5 segundos de 500 Hz, seguido por un tiempo de silencia de 3 segundos y luego un tono de 1000 Hz de 4 segundos. Realice el análisis espectral por medio de la técnica de Welch. Ahora invierta el orden de los dos tonos de 500 y 1000 Hz y vuelva a realizar el análisis espectral y concluya qué pasa con la información entregada por dicho análisis espectral en ambos casos. Ahora utilice una técnica tiempo –frecuencia para analizar ambos casos y verificar que ahora sí que este método nos permite diferenciar las dos secuencias.