signal discrete algorithm graphics audio photoshop signal-processing

algorithm - discrete signal



¿Qué son los filtros High-Pass y Low-Pass? (6)

El software de edición y procesamiento de gráficos y audio a menudo contiene funciones llamadas "Filtro de paso alto" y "Filtro de paso bajo". Exactamente, ¿qué hacen estos y cuáles son los algoritmos para implementarlos?


Aquí es cómo implementar un filtro de paso bajo usando convolución:

double[] signal = (some 1d signal); double[] filter = [0.25 0.25 0.25 0.25]; // box-car filter double[] result = new double[signal.Length + filter.Length + 1]; // Set result to zero: for (int i=0; i < result.Length; i++) result[i] = 0; // Do convolution: for (int i=0; i < signal.Length; i++) for (int j=0; j < filter.Length; j++) result[i+j] = result[i+j] + signal[i] * filter[j];

Tenga en cuenta que el ejemplo es extremadamente simplificado. No hace controles de rango y no maneja los bordes correctamente. El filtro utilizado (box-car) es un filtro de paso bajo particularmente malo, ya que causará muchos artefactos (zumbidos). Lea sobre el diseño del filtro.

También puede implementar los filtros en el dominio de la frecuencia. Aquí es cómo implementa un filtro de paso alto usando FFT:

double[] signal = (some 1d signal); // Do FFT: double[] real; double[] imag; [real, imag] = fft(signal) // Set the first quarter of the real part to zero to attenuate the low frequencies for (int i=0; i < real.Length / 4; i++) real[i] = 0; // Do inverse FFT: double[] highfrequencysignal = inversefft(real, imag);

De nuevo, esto se simplifica, pero entiendes la idea. El código no parece tan complicado como el matemático.


Aquí hay un ejemplo super simple de un filtro de paso bajo en C ++ que procesa la señal una muestra a la vez:

float lopass(float input, float cutoff) { lo_pass_output= outputs[0]+ (cutoff*(input-outputs[0])); outputs[0]= lo_pass_output; return(lo_pass_output); }

Aquí es más o menos lo mismo, excepto que es de paso alto:

float hipass(float input, float cutoff) { hi_pass_output=input-(outputs[0] + cutoff*(input-outputs[0])); outputs[0]=hi_pass_output; return(hi_pass_output); }


El filtrado describe el acto de procesar datos de una manera que aplica diferentes niveles de atenuación a diferentes frecuencias dentro de los datos.

Un filtro de paso alto aplicará atenuación mínima (es decir, niveles de abandono sin cambios) para altas frecuencias, pero aplica atenuación máxima a bajas frecuencias.

Un filtro de paso bajo es inverso: no aplicará atenuación a bajas frecuencias aplicando atenuación a frecuencias altas.

Hay varios algoritmos de filtrado diferentes que se utilizan. Los dos más simples son probablemente el filtro Finite Impulse Response (también conocido como filtro FIR) y el filtro Infinite Impulse Response (también conocido como filtro IIR).

El filtro FIR funciona manteniendo una serie de muestras y multiplicando cada una de esas muestras por un coeficiente fijo (que se basa en la posición de la serie). Los resultados de cada una de estas multiplicaciones se acumulan y es el resultado de esa muestra. Esto se conoce como Multiplicación-Acumulación, y en el hardware DSP dedicado hay una instrucción MAC específica para hacer esto.

Cuando se toma la siguiente muestra, se agrega al inicio de la serie y se elimina la muestra más antigua de la serie, y el proceso se repite.

El comportamiento del filtro se fija mediante la selección de los coeficientes del filtro.

Uno de los filtros más simples que a menudo proporciona el software de procesamiento de imágenes es el filtro de promedio. Esto puede implementarse mediante un filtro FIR al establecer todos los coeficientes de filtro en el mismo valor.


Generalmente son circuitos eléctricos que tienden a pasar partes de señales analógicas. El pase alto tiende a transmitir más de las partes de alta frecuencia y el paso bajo tiende a pasar más partes de baja frecuencia.

Se pueden simular en software. Un promedio de caminata puede actuar como un filtro de paso bajo, por ejemplo, y la diferencia entre un promedio de caminata y su entrada puede funcionar como un filtro de paso alto.


Wikipedia:

Estos términos "alto", "bajo" y "banda" se refieren a frecuencias . En paso alto, intenta eliminar las bajas frecuencias. En paso bajo, intenta eliminar alto. En el paso de banda, solo permite que se mantenga un rango de frecuencia continuo.

Elegir la frecuencia de corte depende de su aplicación. La codificación de estos filtros se puede hacer simulando circuitos RC o jugando con las transformadas de Fourier de sus datos basados ​​en el tiempo. Vea los artículos de wikipedia para ejemplos de código.


El filtro de paso alto deja pasar la frecuencia alta (información detallada / local).
El filtro de paso bajo permite pasar la frecuencia baja (información aproximada / aproximada / global).