9 votos

Eliminación de ruidos cuando la señal no es suave

Supongamos que tenemos (un intervalo de) una serie de tiempo de las mediciones:

plot of raw (simulated) data

Asumimos que puede ser explicado como un "simple" que subyacen a la señal superpuesta por el ruido. Estoy interesado en encontrar un buen algoritmo para estimar el valor de la señal simple en un punto dado en el tiempo, principalmente para el propósito de mostrar a los usuarios que saben, más o menos, cómo interpretar la señal, pero podría ser distraído por el ruido.

Para un observador humano de la trama se ve muy claramente como los que subyacen a la señal tiene una discontinuidad de salto en alrededor de $t=18$. Pero eso es un problema para la detección automática de eliminación de ruido, debido a que las técnicas que conozco son todos los predicados de una "buena" que subyacen a la señal que significa "suave". Un típico anti-filtro de ruido sería algo así como colvolving con un núcleo Gaussiano:

plot of Gaussian smoothing

que es totalmente incapaz de transmitir que la izquierda pendiente de la inmersión es diferente a la de la derecha. Mi solución actual es el uso de un "ingenuo" promedio móvil (es decir, la convolución con un cuadrado de núcleo):

plot of square smoothing

cuyo beneficio (aparte de la sencillez) es que, al menos, las curvas cerradas en la estimación de la señal de alerta al espectador que algo sospechoso está pasando. Pero tarda bastante entrenamiento para que el espectador sepa lo que a pescado cosa este patrón indica. Y todavía es un negocio difícil identificar cuando el cambio brusco que sucedió, que a veces es importante en mi aplicación.

El ancho de la convolución de los núcleos en los dos ejemplos anteriores fueron elegidos para dar sobre el mismo suavizado de ruido puro (desde que me he engañado y en realidad construido los datos de ejemplo que voy a mostrar como la suma de un crujiente deliberada de la señal y algunos explícito de ruido). Si hacemos más estrechas, se puede obtener la estimación para mostrar que hay un cambio brusco pasando, pero no eliminar todo el ruido que:

plot of estimation with a narrower kernel

No puedo ser la primera persona que alguna vez se enfrentan a este problema. Hace sonar una campana para cualquier persona? Agradecería ideas, los punteros a la literatura, términos de búsqueda, un nombre convencional para el problema, lo que sea.

Miscelánea observaciones:

  1. No, yo No puedo rigurosamente definir qué es lo que desea optimizar. Eso sería demasiado fácil.

  2. Será bueno si la atenuación de la señal puede mostrar claramente que no hay ningún cambio significativo sistemático en la señal antes de que el salto en $t=18$.

  3. En el ejemplo que muestro aquí, el salto era mucho mayor que la amplitud del ruido. Eso no es siempre el caso en la práctica.

  4. No necesito de comportamiento en tiempo real, así que está bien que la estimación de la señal en algún momento depende más tarde de las muestras. De hecho, me gustaría encontrar una solución que conmuta con el tiempo las inversiones.

  5. Basar una solución fuera de conocimiento acerca de cómo la señal en particular estoy buscando en que debe comportarse no es una opción. Hay muchos y diferentes mediciones quiero aplicarlo a, y, a menudo, es algo que no tiene una buena expectativa previa.

3voto

Felix Marin Puntos 137

Estoy trabajando en un grupo, donde estudiamos bajadas bruscas de corriente (debido a la corriente de iones bloqueos) en algunos de medición en particular el programa de instalación.

Detectamos estas gotas mediante el cálculo de la media móvil (y de hecho, recientemente también un movimiento de la desviación estándar, ya que el nivel de ruido varía a lo largo del tiempo en el "malo" de las mediciones) y la selección actual de puntos de datos, cuya caída es de más de $5\sigma$ (es decir, la caída significativa).

Cualquier conjunto contiguo de estos puntos se llama un "evento", y para asegurarnos de que tenemos el derecho tipo de eventos (frente al ruido), además, seleccionar "eventos" por la integración de la diferencia del evento y de la media móvil, en cuanto a su duración (es decir. número de puntos de datos), y su amplitud, pero supongo que usted no necesita todas esas.

Lo que puedes hacer es detectar eventos como lo hacemos nosotros, y, a continuación, hacer la interpolación o suavizado sólo entre los eventos (a trozos).

Debo admitir que probablemente se pierda (no detectar) algunos de los "reales" de los acontecimientos, porque de los problemas de ruido. Viendo su ejemplo, sin embargo, esto no debería ser un problema para usted y nuestro código de detectar que sin dudarlo.


Una palabra más sobre nuestra investigación porque es muy divertido:

De hecho, las gotas en los actuales son tan pequeñas, y el ruido es tan grande, en nuestro caso, que primero hacemos un 8 polos de Bessel de filtro (normalmente a 10kHz) antes de que incluso podemos ver estas gotas. Pero una vez que los eventos han sido detectados, podemos ir de nuevo a la señal sin filtrar y continuar el análisis.

Para una introducción a nuestra investigación, consulta este artículo.

2voto

Si he entendido correctamente, su enfoque actual (Gauss y media móvil de los filtros) es adecuado para la detección de los cambios globales (lo que akkkk llama "eventos"), pero no para la visualización de la forma de los datos subyacentes. Obviamente, usted no puede realmente saber la forma de su conjunto de datos, porque es enmascarado por el ruido, pero el ojo parece ver, entonces, la pregunta es, ¿por qué no hemos de ser capaz de ver más o menos la misma línea que el ojo ve.

Hay algunas técnicas para esto, pero usted tendrá que experimentar para ver qué funciona. Estoy seguro de que hay otras técnicas, pero aquí es lo que puedo pensar:

  • De banda ancha de reducción de ruido se utiliza en audio para eliminar el ruido. Funciona bien si el ruido es de amplio espectro y su señal de espectro estrecho, que parece ser el caso aquí. Es difícil de implementar. No tengo buenas referencias de usted, pero tal vez este libro. Creo que también se trata en DAFX, pero no tienen que ser mejores fuentes.

  • Los medios de filtrado es una excelente técnica que funciona bien en ciertos tipos de procesamiento de la imagen y, probablemente, podría funcionar bien aquí. Las matemáticas detrás de ella no funciona bien (es decir, es difícil demostrar que funciona), pero en la práctica las situaciones que a menudo funciona bien, y eso es suficiente para muchas personas. Sospecho que va a funcionar bien aquí, pero vas a tener que probarlo.

  • El gaussiano de filtro y filtro de media móvil que he usado puede ser, aunque de casos especiales de filtros de paso bajo. Si tienes alguna idea de la frecuencia de la señal vs el contenido de la frecuencia de su ruido (o si usted está dispuesto a experimentar con sus datos reales hasta su salida corresponde a sus ojos) puede diseñar un filtro de paso bajo. Esto es lo que akkkk estaba sugiriendo, cuando él hablaba de la 8 polos filtro de Bessel (no estoy seguro de que este particular filtro de conservar la forma de la señal, aunque probablemente). Incluso un segundo orden de filtro recursivo sería mucho mejor que estos filtros, me imagino. Tengo un tutorial simple de filtros de audio para empezar.

  • Existen filtros adaptativos que, dependiendo de su situación, usted podría ser capaz de utilizar. Ver Wiener y de Kalman filtrado. Yo nunca he usado un filtro de Kalman, pero rozando la página de la Wikipedia, que parece que podría ser construidos a propósito para el tipo de cosa que está haciendo.

Si estas técnicas parecer desalentador para usted, trate de mediana filtrado de primera. Es simple de implementar y probablemente va a ayudar de manera significativa.

1voto

Cadoo Puntos 476

Disponer de dos algoritmos: uno que detecta discontinuidades, el otro que lleva cada sección "suave" y utiliza un algoritmo de eliminación de ruido típico. Para el primer algoritmo, sería recurrir mediante el intervalo de tiempo entero, primero buscando en trozos muy grandes, pero cada vez más pequeñas y en forma más pequeño con cada repetición, comparando la pendiente de cada fragmento lineal.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X