¿Cuáles son los algoritmos de detección de picos existentes? Tengo datos ruidosos y me gustaría implementar la detección de picos para estos datos. Los datos están en reversa, en realidad estoy tratando de determinar el fondo.
Aquí hay una instantánea de los datos en Excel. Me gusta detectar ambos fondos. Pensé en pasar los datos a través de un filtro de paso bajo y posteriormente hacer un promedio móvil donde determino los picos y dentro del promedio móvil hago otra búsqueda. Tengo cero antecedentes DSP; Este es solo un enfoque de sentido común. Me gustaría escuchar lo que recomiendan los expertos.
filters
peak-detection
Ktuncer
fuente
fuente
Respuestas:
Ktuncer, hay varios métodos que puedes usar aquí. Un método que recomendaría es usar una Transformación de Wavelet Discreta (DWT) y, en particular, mirar la Wavelet de Daubechies . Yo elegiría, digamos, Daub-14 / Daub-Tetra.
Básicamente, lo que realmente necesita hacer es 'marcar' su señal y, a partir de ahí, hacer una selección mínima o máxima. Eso eliminará tus valores atípicos. Una transformación de onda daub-14 / daub-tetra puede ayudarlo a hacer esto, y esto ayuda especialmente porque no conoce la naturaleza de su señal. (Usando daub-14, puede representar con precisión señales polinómicas de grado 14/2 = 7, y parece que no necesitará más que eso).
El cálculo de esta transformada wavelet esencialmente 'comprime' su energía en unas pocas indicaciones. Esas indicaciones representan pesos en vectores básicos. El resto de los pesos estarán (idealmente) cerca de cero. Cuando tiene ruido en su señal (como lo hace), esos pesos que normalmente eran cero ahora tienen algunos pesos, pero simplemente puede ponerlos a cero y 'anular' su señal. Una vez que se haya completado, puede hacer una simple detección máxima / mínima.
Hay más detalles involucrados, puede enviarme un correo electrónico si desea discutir cómo implementarlo. He hecho un trabajo similar en esto antes.
EDITAR: Aquí hay algunas imágenes que ilustran Daub-Tetra Denoiser:
fuente
Estoy lejos de ser un experto, pero esto es lo que haría:
Parece que tiene una señal que varía lentamente superpuesta con fluctuaciones. Los picos que busca son algunas fluctuaciones más fuertes, por lo que los detectaría usando eso.
Se puede detectar específicamente un sobreimpulso o un sobreimpulso eliminando el valor absoluto y utilizando la prueba adecuada. ¿Es esto lo que estás buscando?
fuente
La detección de picos tiene bastantes aplicaciones, para señales 1D o multidimensionales. Aquí hay algunos ejemplos que muestran cuán variadas pueden ser estas señales y sus interpretaciones de un pico:
Los datos 1D del póster original;
Transformada de una imagen, cada pico corresponde a una línea en la imagen original;
autocorrelación de una imagen, cada pico corresponde a una frecuencia que revela un "patrón periódico";
correlación cruzada "generalizada" de una imagen y una plantilla, cada pico corresponde a una aparición de la plantilla en la imagen (podemos estar interesados en detectar solo el mejor pico o varios picos);
Estas son definiciones y técnicas de detección de picos que he encontrado, ciertamente hay otros que olvidé o no sé, y espero que otras respuestas los cubran.
Las técnicas de preprocesamiento incluyen suavizado y eliminación de ruido. La respuesta de @ Mohammad es sobre wavelets, y puede ver varios usos de ellos en la documentación del WaveletThreshold de Mathematica (por cierto , también tomé mis ejemplos).
Entonces buscas máximos. Dependiendo de su aplicación, solo necesita los máximos globales (p. Ej., Registro de imágenes), algunos máximos locales (p. Ej. Detección de líneas) o muchos máximos locales (detección de puntos clave): esto puede hacerse de forma iterativa, buscando el valor más alto en los datos luego borrando una región alrededor del pico seleccionado, etc. hasta que el valor restante más alto esté por debajo de un umbral. Alternativamente, puede buscar los máximos locales dentro de un determinado tamaño de vecindario y mantener solo los máximos locales cuyos valores están por encima de un umbral; algunos recomiendan mantener los máximos locales en función de su distancia al resto de los máximos locales (cuanto más el mejor). El arsenal también presenta operaciones morfológicas: los máximos extendidos y la transformación de sombrero de copa pueden ser adecuados.
Vea los resultados de tres de estas técnicas en una imagen filtrada para las esquinas de Harris:
Además, algunas aplicaciones intentan encontrar picos a una resolución de subpíxeles. La interpolación, que puede ser específica de la aplicación, es útil.
Hasta donde yo sé, no hay una bala de plata, y los datos dirán qué técnicas funcionan mejor.
Será realmente bueno tener más respuestas, especialmente. viniendo de otras disciplinas.
fuente
Creo que un algoritmo típico de detección de picos es así donde
ref
estápeak(bottom)
.fuente