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.