Filtrado Lineal

Anuncio
Capítulo 20
Filtrado Lineal
El filtrado lineal de señales monodimensionales, mediante la convolución,
tiene su mayor aplicación en el audio. No obstante el siguiente capítulo no se
centra en aplicaciones relacionadas con el sonido. Más bien, se tiene el pbjeto
de presentar las bases para aplicacioners relacionadas con imágenes. Por esta
razón, se revisan aplicaciones como el sobremuestreo y la interpolación.
Como se verá en un capítulo posterior, es posible generar filtros bidimensionales mediante el producto de dos filtros monodimensionales. Tal característica
es debida a la condición de linealidad de los filtros presentados.
Como ya se ha mencionado, la herramienta matemática que se empleará en el
presente capítulo es la convolución y de su aplicación mediante la función «conv»
de MATLAB. Al respecto, como antecendentes a este capítulo se requiere de la
lectura del capítulo 5.
Los filtros lineales son aquellos que pueden ser aplicados mediante la convolución. Dentro de los filtros lienales se tiene la clasificación dada en el cuadro
sinótpcio de la figura 20.1.
�

Dominio espacial :





Dominio f recuencia :


�



Dominio espacial :



 Dominio f recuencia :
F iltros
�
lineales 
Dominio espacial :






�Dominio f recuencia :



Dominio espacial :



 Dominio f recuencia :
interpolante
paso bajas
suavizante (dif unina y suprimeruido)
paso bajas
detector estructuras (bordes, lineas)
paso altas
mejora nitidez
paso banda
Figura 20.1: Tipos de filtros lineales que se pueden aplicar por convolución.
337
338
CAPÍTULO 20. FILTRADO LINEAL
Definición 20.1 Filtrado de una secuencia mediante convolución lineal. El filtrado de la secuencia finita f (n) con un filtro cuya respuesta a pulso
unitario es la secuencia h<f unción>;<tipo>;<orden> se define como:
f ∗ h<f unción>;<tipo>;<orden> (n)
(20.1)
Aún cuando la convolución es conmutativa se sugiere que el orden de los
operandos sea respetado. Los filtros que se usarán en este capítulo se representan
con mnemónicos, es decir:
A: filtro de bloque
B: filtro binomial
H: filtro Haar
Bt: filtro Bartlett
Inicialmente se debe considerar que todos los filtros desarrollados en este capítulo serán causales, así que formalizando, se presenta la siguiente definición:
Definición 20.2 Causalidad de un filtro. Toda respuesta de un filtro al
pulso unitario será causal.
Debe considerarse que todo procesamiento sobre una señal requiere tiempo,
por lo cual la señal resultante tendrá un retardo, este retardo puede cuantificarse
en función del orden del filtro:
Teorema 20.1 Retardo de un filtro. La alimentación de una señal cualquiera a un filtro de orden P 1 ocasiona otra señal con un retardo dado por:
Q−1
2
Q
2
20.1.
P impar
(20.2)
P par
Filtros suavizantes
Los filtros suvaizantes que serán tratados a continuación son:
Filtro suavizante de bloque
Filtro suavizante binomial
Los filtros suavizantes tienen las siguientes caracterśticas:
1 Se
cero»
usa la letra «Q» debido a que los filtros descritos en este capítulo son del tipo «todo
20.1. FILTROS SUAVIZANTES
339
Quitan ruido no correlacionado2 .
Definen su tamaño de acuerdo al tamaño del grano ruidoso.
Suprimen detalles finos que pudieran estorbar en algún procesamiento.
Los contornos y detalles se difuminan.
20.1.1.
Filtro 1D suavizante de bloque
Definición 20.3 Filtro suavizante de bloque. Este filtro tiene un comportamiento temporal igual al de un pulso rectangular o ventana Haar y se implementa
como un promediador de una vecindad de longitud Q + 1 sobre la secuencia de
datos. Su ecuación, en función de n, es la siguiente:
hSof t;Haar;Q (n) =
1
wHaar;Q+1 (n)
Q+1
(20.3)
Este tipo de filtro tiene las siguientes características:
Las transiciones abruptas de 1 a 0 y de 0 a 1 del filtro provocan rizos
armónicos en su respuesta en frecuencia, lo que en el dominio del tiempo
podría implicar ruido aditivo. Estos rizos armónicos se ven atenuados por
el factor 1/(Q + 1) .
La señal filtrada tiene un retardo respecto de la señal original. Este retardo
puede cuantificarse con la ecuación 20.2.
La ecuación 20.3 representa una función de n, no obstante, para el presente
capítulo nos es interesante tener los valores de su respuesta al pulso unitario en
forma de un vector renglón. A continuación se enumeran algunos ejemplos:
20.1.2.
hSof t;Haar;2
=
hSof t;Haar;3
=
hSof t;Haar;4
=
1
3
1
4
1
5
[1, 1, 1]
[1, 1, 1, 1]
(20.4)
[1, 1, 1, 1, 1]
Ejemplo del filtro suavizante de bloque
Dada la siguiente secuencia y que se ilustra en la gráfica superior de la figura
20.2.a.
f = [1, 1, 1, 5, 5, 5, 1, 1, 1]
(20.5)
Aplique el siguiente filtro suavizante de bloque y de segundo orden. Este
filtro se ve en la gráfica central de la figura 20.2.b.
2 En una señal, una muestra tiene ruido cuando su valor es muy diferente a los valores de
las muestras vecinas.
340
CAPÍTULO 20. FILTRADO LINEAL
f=[1,1,1,5,5,5,1,1,1];
h_H2=[1,1,1];
f_hH2=conv(f,h_B2)*(1/3);
subplot(3,1,1);
stem(0:8,f);
axis([0,12,0,5]);
title(’Secuencia’);
subplot(3,1,2);
stem([0,1,2],h_H2);
axis([0,12,0,5]);
title(’Filtro’);
subplot(3,1,3);
stem(0:10,f_hH2);
axis([0,12,0,5]);
title(’Secuencia filtrada’)
Figura 20.2: La gráfica superior es la secuencia de pulso rectangular. La secuencia central son las muestras del filtro Haar de segundo orden. La secuencia
inferior es la secuencia suavizada.
1
[1, 1, 1]
3
La secuencia de convolución es entonces:
hSof t;Haar;2 =
f ∗ hSof t;Haar;2 = [0.3, 0.7, 1, 2.3, 3.6, 5, 3.6, 2.3, 1, 0.7, 0.3]
(20.6)
(20.7)
La gráfica central de la figura 20.2 ilustra la secuencia filtrada. Note que tal
secuencia ya no tiene transiciones abruptas de 1 a 5. El código en MATLAB
que realiza la convolución y genera las gráficas también se muestra en la figura
20.2.
El retardo que tiene la secuencia filtrada respecto de la señal original puede
cuantificarse según la ecuación 20.2 y en este caso es la unidad.
20.1.3.
Filtro 1D suavizante binomial
Definición 20.4 Filtro suavizante de binomial. Este filtro tiene un comportamiento temporal que aproxima al de una campana gaussiana discreta. La
secuencia que conforma este filtro se puede calcular con el triángulo de Pascal.
Su ecuación, como función de n, es la siguiente.
hSof t;Binomial;Q (n) =
1
wBinomial,Q+1 (n)
2Q
(20.8)
20.1. FILTROS SUAVIZANTES
341
f=[1,1,1,5,5,5,1,1,1];
h_B2=[1,2,1];
f_hB2=conv(f,h_B2)*(1/4);
subplot(3,1,1);
stem(0:8,f);
axis([0,12,0,5]);
title(’Secuencia’);
subplot(3,1,2);
stem([0,1,2],h_B2);
axis([0,12,0,5]);
title(’Filtro’);
subplot(3,1,3);
stem(0:10,f_hB2);
axis([0,12,0,5]);
title(’Secuencia filtrada’)
Figura 20.3: La gráfica superior es la secuencia de pulso rectangular. La secuencia central son las muestras del filtro binomial de segundo orden. La secuencia
inferior es la secuencia suavizada.
Este tipo de filtro tiene las siguientes características:
Este filtro tiene una transición suave que reduce al mínimo los rizos armónicos en la respuesta en frecuencia. Estos rizos armónicos se ven atenuados
por un factor de 2Q .
La señal filtrada tiene un retardo respecto de la señal original. Este retardo
puede cuantificarse con la ecuación 20.2.
La ecuación 20.3 representa una función de n, no obstante, para el presente
capítulo nos es interesante tener los valores de su respuesta al pulso unitario en
forma de un vector renglón. A continuación se enumeran algunos ejemplos:
20.1.4.
hSof t;Binomial;2
=
hSof t;Binomial;3
=
hSof t;Binomial;4
=
1
3
1
8
1
16
[1, 2, 1]
[1, 3, 3, 1]
(20.9)
[1, 4, 6, 4, 1]
Ejemplo de filtro 1D suavizante binomial
Dada la siguiente secuencia y que se ilustra en la gráfica superior de la figura
20.3.
342
CAPÍTULO 20. FILTRADO LINEAL
f = [1, 1, 1, 5, 5, 5, 1, 1, 1]
Aplique un filtro suavizante binomial de segundo orden, mismo que se ilustra
en la gráfica central de la figura 20.3.
1
[1, 2, 1]
4
La secuencia de convolución es entonces:
�
�
3 1
1 3
, , 1, 2, 4, 5, 4, 3, 2, ,
f ∗ hSof t;Bin;2 =
4 4
4 4
hSof t;Bin;2 =
(20.10)
(20.11)
La gráfica inferior de la figura 20.3 ilustra la secuencia filtrada. Note que tal
secuencia ya no tiene transiciones abruptas de 1 a 5. El código en MATLAB
que realiza la convolución y genera las gráficas también se muestra en la figura
20.3.
El retardo que tiene la secuencia filtrada respecto de la señal original puede
cuantificarse según la ecuación 20.2 .
20.2.
Sobremuestreo de una secuencia
El proceso de sobremuestreo consiste de intercalar ceros entre las muestras
de una secuencia, el número de ceros viene dado por el factor de sobremuestreo.
Definición 20.5 El proceso de sobremuestreo. Sea f (n) una secuencia
finita y sea un factor de sobremuestreo S perteneciente a los enteros positivos.
El sobremuestreo de f (n) es otra función denotada como f (n) ↑ S y consiste
en intercalar S − 1 ceros luego de cada muestra en la secuencia f (n).
Definición 20.6 El factor de sobremuestreo es un entero positivo que indica cuantos ceros se intercalan entre las muestras y también indica cuanto crece
la longitud de la secuencia, es decir:
Nf ↑S = S × Nf
(20.12)
Para ilustrar considérese la secuencia siguiente:
f = [A, B, C, D]
(20.13)
Entonces se le aplica un factor de sobremuestreo de S = 2.
f ↑ 2 = [A, 0, B, 0, C, 0, D, 0]
(20.14)
Así, puede notarse que la longitud de la secuencia sobremuestreada es:
20.3. INTERPOLACIÓN
343
Nf ↑2 = 2 × Nf = 2 × 4 = 8
(20.15)
f ↑ 3 = [A, 0, 0, B, 0, 0, C, 0, 0, D, 0, 0]
(20.16)
Nf ↑3 = 3 × Nf = 3 × 4 = 12
(20.17)
Si ahora la secuencia original se sobremuestrea en S = 3.
Consecuentemente, puede notarse que la longitud de la secuencia sobremuestreada es:
20.2.1.
Sobremuestreo en MATLAB
El proceso de sobremuestreo en MATLAB se realiza con la función «upsample», por ejemplo, dada la siguiente secuencia
f = [1, 3, 5, 7]
(20.18)
El sobremuestreo de la misma por un factor de S = 2 se realiza como:
upsample(f, 2)
20.3.
Interpolación
Definición 20.7 La interpolación consiste en el cálculo de nuevas muestras, intercaladas entre las muestras originales de una señal. La interpolación
se identifica con dos parámetros que son el factor de interpolación y el grado de
interpolación.
hay dos parámetros que suelen caracterizar el proceso de interpolación:
Factor de interpolación S: cuántas muestras se interpolan.
Grado de interpolación G: es el grado del polinomio usado para interpolar.
Definición 20.8 El factor de interpolación se refiere a cuantas muestras
nuevas van a calcularse entre las muestras originales de la señal. Un factor de
interpolación S indica que deben calcularse S − 1 muestras nuevas.
En realidad no se usa un polinomio para interpolar sino mas bien un filtro,
el grado indica el tipo de filtro y el factor de interpolación nos da una indicación
del orden del filtro. Tal filtro debe aplicarse por convolución.
Definición 20.9 El grado de interpolación se refiere al grado del polinomio
que se usa para interpolar, es decir:
344
CAPÍTULO 20. FILTRADO LINEAL
grado 0: el polinomio es una constante: ventana Haar w Haar;tamaño ventana (n).
grado 1: el polinomio es una recta: ventana Bartlett w Bartlett;tamaño ventana (n).
grado 2: el polinomio es cuadrático.
Definición 20.10 Interpolación lineal por convolución. Sea f (n) una secuencia finita, un factor de interpolación S y un grado de interpolación G. El
proceso de interpolación lineal consiste de la aplicación de dos operadores: el sobremuestreo por un factor S y la convolución con una ventana h tipo,tamaño ventana ,
es decir.
IS;G { f } = (f ↑ S) ∗ wtipo,tamaño ventana
20.3.1.
(20.19)
Ventana interpolante Haar
Definición 20.11 La interpolación grado cero con ventana interpolante Haar3 . Consiste en que las muestras interpoladas son una repetición de las
muestras vecinas. Matemáticamente, este filtro se define como la convolución
entre una secuencia sobremuestreada y una ventana Haar.
IS;0 { f } = (f ↑ S) ∗ wHaar;S
(20.20)
Teorema 20.2 No retardo de la interpolación Haar. La interpolación con
ventana Haar no ocasiona retardo de la señal interpolada respecto de la señal
original.
20.3.2.
Ejemplo de interpolación Haar
Dada la siguiente secuencia f y que se ilustra en la figura 20.4.a, realice un
proceso de interpolación de factor S = 2 y grado G = 0.
f = [1, 3, 5, 3, 1]
(20.21)
Entonces el tipo de operación que se requiere, de acuerdo con la ecuación
20.20, está representada como:
I2;0 (f ) = (f ↑ 2) ∗ wHaar;3
(20.22)
f = [1, 0, 3, 0, 5, 0, 3, 0, 1, 0]
(20.23)
Aplicando el proceso de sobremuestreo en un factor S = 2 resulta en la
secuencia siguiente, misma que se ilustra en la figura 20.4.b.
3 Haar
es el nombre con el que se conoce a un tipo de waveletes. El nombre se Haar se usa
debido a que la funcion padre es un pulso cuadrado.
20.3. INTERPOLACIÓN
345
f=[1,3,5,3,1];
f_2=upsample(f,2);
h_0_1=[1,1];
f_2_h_0_1=conv(f_2,h_0_1);
subplot(4,1,1);
stem(0:4,f);
axis([0,10,0,5.1]);
title(’a) Secuencia original’);
subplot(4,1,2);
stem(0:9,f_2);
axis([0,10,0,5.1]);
title(’b) Sec. sobremuestreada’);
subplot(4,1,3);
stem(0:1,h_0_1);
axis([0,10,0,5.1]);
title(’c) Filtro’);
subplot(4,1,4);
stem(0:10,f_2_h_0_1);
axis([0,10,0,5.1]);
title(’d) Sec. interpolada’);
Figura 20.4: Secuencia de interporlación Haar (a) secuencia original. (b) Secuencia sobremuestreada en un factor de 2. (c) Filtro Haar de orden 1. (d) Secuencia
interpolada.
346
CAPÍTULO 20. FILTRADO LINEAL
La ventana Haar se ilustra en la figura 20.4.c y se anota a continuación:
wHaar;2 = [1, 1]
La secuencia interpolada es entonces:
I2;0 (f ) = [1, 1, 3, 3, 5, 5, 3, 3, 1, 1, 0]
(20.24)
La figura 20.4.d ilustra la secuencia filtrada. Note que cada muestra interpolada es la repetición de la muestra original a su izquierda. El código en MATLAB
que realiza la convolución y genera las gráficas también se muestra en la figura
20.4.d.
20.3.3.
Ventana interpolante Bartlett
Definición 20.12 La interpolación grado uno con ventana interpolante Bartlett. Consiste en que las muestras interpoladas se calcularon empleando
la ecuación de la línea recta. Matemáticamente, este filtro se define como:
IS,1 (f ) = (f ↑ S) ∗
1
wBartlett;2S+1
S
(20.25)
A modo de ejemplo, considere la secuencia f = [a, b]
La interpolación de factor 2 con grado 1 es:
I2,1 (f )
1
2
=
(f ↑ 2) ∗
=
[a, 0, b, 0] ∗
[0, 1, 2, 1, 0]
1
2
(20.26)
[0, 1, 2, 1, 0]
La interpolación de factor 3 con grado 1 es:
I3,1 (f )
1
3
=
(f ↑ 3) ∗
=
[a, 0, 0, b, 0, 0] ∗
[0, 1, 2, 3, 2, 1, 0]
1
3
(20.27)
[0, 1, 2, 3, 2, 1, 0]
la interpolación de factor 4 con grado 1 es:
I4,1 (f )
1
4
=
(f ↑ 4) ∗
=
[a, 0, 0, 0, b, 0, 0, 0] ∗
[0, 1, 2, 3, 4, 3, 2, 1, 0]
1
4
(20.28)
[0, 1, 2, 3, 4, 3, 2, 1, 0]
Definición 20.13 Retardo de la interpolación Bartlett. La interpolación
con ventana Bartlett ocasiona un retardo en la señal interpolada respecto de la
señal original cuantificable como:
retardo Bartlett = S
La ecuación 20.29 se obtuvo de la ecuación 20.2.
(20.29)
20.3. INTERPOLACIÓN
347
f=[1,3,5,3,1];
f_2=upsample(f,2);
h_1_2=[0,1,2,1,0]*(1/2);
f_2_h_1_2=conv(f_2,h_1_2);
subplot(4,1,1);
stem(0:4,f);
axis([0,13,0,5.1]);
title(’a) Secuencia original’);
subplot(4,1,2);
stem(0:9,f_2);
axis([0,13,0,5.1]);
title(’b) Sec. sobremuestreada’);
subplot(4,1,3);
stem(0:4,h_1_2);
axis([0,13,0,5.1]);
title(c) ’Filtro’);
subplot(4,1,4);
stem(0:13,f_2_h_1_2);
axis([0,13,0,5.1]);
title(’d) Sec. interpolada’);
Figura 20.5: Secuencia de interporlación (a) secuencia original. (b) Secuencia
sobremuestreada en un factor de 2. (c) Filtro Bartlett de grado 1 y orden 2. (d)
Secuencia interpolada.
20.3.4.
Ejemplo de interpolación Bartlett
Dada la secuencia f a interpolar de la ecuación 20.21 y que se ilustra en la
figura 20.5.a, realice un proceso de interpolación de factor S = 2 y grado G = 1.
La mencionada secuencia se repite a continuación.
f = [1, 3, 5, 3, 1]
Entonces el tipo de operación que se requiere, de acuerdo con la ecuación
20.25, está representada como:
1
I2;1 (f ) = (f ↑ 2) ∗ hBartlett;5
2
(20.30)
Aplicando el proceso de sobremuestreo en un factor S = 2 resulta en la
secuencia de la ecuación 20.23 y que se repite a continuación
f = [1, 0, 3, 0, 5, 0, 3, 0, 1, 0]
348
CAPÍTULO 20. FILTRADO LINEAL
El filtro Bartlett de grado uno y orden 2 puede verse en la ecuación 20.26 ,
se repite a continuación y se ilustra en la figura 20.5.c.
1
1
wBartlett;5 = [0, 1, 2, 1, 0]
2
2
La secuencia interpolada es entonces:
I2;1 (f ) = [0.5, 1, 2, 3, 4, 5, 4, 3, 2, 1, 0.5, 0]
(20.31)
La figura 20.5.d ilustra la secuencia filtrada. Note que las muestras interpoladas tienen alturas promedio respecto de sus vecinas, las muestras originales.
El código en MATLAB que realiza la convolución y genera las gráficas también
se muestra en la figura 20.5.
20.4.
Submuestreo
Dada la secuencia de muestras de una señal, el proceso de submuestreo
consiste de recuperar algunas de las muestras de tal forma que se logra una
secuencia de menor longitud. Como puede observarse al desconocer muestras de
una secuencia se pierde información.
Otros nombres con los que se conoce al submuestreo son la decimación y el
diezmado.
Definición 20.14 El proceso de submuestreo. Sea f (n) una secuencia finita y un factor de submuestreo S perteneciente a los enteros positivos. El submuestreo de f (n) es otra función denotada como f (n) ↓ S y consiste en tomar
una muestra de cada S muestras consecutivas de la secuencia.
Definición 20.15 El factor de submuestreo es un entero positivo que indica cuanto se reduce la longitud de la secuencia, es decir:
Nf ↓S =
Nf
S
(20.32)
Para ilustrar considérese la secuencia siguiente:
f = [A, B, C, D, E, F ]
(20.33)
Entonces se le aplica un factor de submuestreo de S = 2.
f ↓ 2 = [A, C, E]
(20.34)
Así, puede notarse que la longitud de la secuencia submuestreada es:
Nf
=3
2
Si ahora la secuencia original se submuestrea en S = 3.
Nf ↓2 =
(20.35)
20.4. SUBMUESTREO
349
f ↓ 3 = [A, D]
(20.36)
Consecuentemente, puede notarse que la longitud de la secuencia submuestreada es:
Nf ↓3 =
20.4.1.
Nf
=2
3
(20.37)
Submuestreo en MATLAB
El proceso de submuestreo en MATLAB se realiza con la función «downsample», por ejemplo, dada la siguiente secuencia
f = [1, 3, 5, 7]
(20.38)
El submuestreo de la misma por un factor de S = 2 se realiza como:
downsample(f, 2)
> [1, 5]
20.4.2.
Efectos del submuestreo
Una de las condiciones para tomar muestras de una señal de tiempo continuo
se conoce como el teorema de Nyquist. Bajo este teorema una señal se puede
muestrear de forma que su informacion se conserva. Cuando una secuencia de
muestras se submuestrea, puede ocurrir que el mencionado teorema ya no se
cumpla perdiendo información de la señal. Así entonces, la nueva secuencia de
muestras en realidad representa a una señal diferente. Este fenómeno se llama
Aliasing.
20.4.3.
Tratamiento del Aliasing
El fenómeno del aliasing se explica mejor en el dominio de la frecuencia, razón
por la cual, se sintetizan filtros en este dominio. Bajo el dominio de la frecuencia
puede verse que el aliasing afecta a las altas frecuencias de una señal, es decir,
aquellos eventos de la señal que son de corta duración bien, ocupan poco espacio.
Un filtro que trata el asliasing, en el dominio del tiempo, hará que los eventos
transitorios de una señal se hagan difusos, es decir, su información se dispersa
en las muestras cercanas. Así entonces, las muestras que sean consideradas en el
submuestreo aún llevarán información de las muestras descartadas. Finalmente,
los filtros usados para tratar el aliasing son lo suavizantes.
Descargar