Estoy tratando de investigar y descubrir la mejor manera de atacar este problema. Se extiende entre el procesamiento de música, el procesamiento de imágenes y el procesamiento de señales, por lo que hay una infinidad de formas de verlo. Quería preguntar sobre las mejores formas de abordarlo, ya que lo que podría parecer complejo en el dominio sig-proc puro podría ser simple (y ya resuelto) por personas que procesan imágenes o música. De todos modos, el problema es el siguiente:
Si perdonas mi dibujo del problema a mano, podemos ver lo siguiente:
De la figura anterior, tengo 3 'tipos' diferentes de señales. El primero es un pulso que aumenta la frecuencia de a , y luego se repite. Tiene una duración de pulso específica y un tiempo de repetición de pulso específico.f 4
El segundo solo existe en , pero tiene una duración de pulso más corta y una frecuencia de repetición de pulso más rápida.
Finalmente, el tercero es simplemente un tono en .
El problema es, de qué manera abordo este problema, de modo que pueda escribir un clasificador que pueda discriminar entre señal-1, señal-2 y señal-3. Es decir, si alimenta una de las señales, debería poder decirle que esta señal es regular. ¿Qué mejor clasificador me daría una matriz de confusión diagonal?
Algún contexto adicional y lo que he estado pensando hasta ahora:
Como dije, esto se extiende a varios campos. Quería preguntar qué metodologías podrían existir antes de sentarme e ir a la guerra con esto. No quiero reinventar inadvertidamente la rueda. Aquí hay algunos pensamientos que he tenido mirando desde diferentes puntos de vista.
Punto de vista del procesamiento de la señal: Una cosa que he visto fue hacer un análisis cepstral y luego posiblemente usar el ancho de banda de Gabor del cepstrum en la señal discriminante-3 de los otros 2, y luego medir el pico más alto del cepstrum en la señal discriminante- 1 de la señal-2. Esa es mi solución de trabajo actual de procesamiento de señales.
Punto de vista del procesamiento de imágenes: Aquí estoy pensando que, de hecho, PUEDO crear imágenes frente a los espectrogramas, ¿tal vez pueda aprovechar algo de ese campo? No estoy íntimamente familiarizado con esta parte, pero ¿qué pasa con la detección de una 'línea' usando la Transformación de Hough , y luego de alguna manera 'contando' las líneas (¿y si no son líneas y gotas?) Y yendo desde allí? Por supuesto, en cualquier momento cuando tomo un espectrograma, todos los pulsos que ves pueden desplazarse a lo largo del eje del tiempo, entonces, ¿importaría esto? No estoy seguro...
Punto de vista del procesamiento de música: un subconjunto de procesamiento de señal para estar seguro, pero se me ocurre que la señal-1 tiene una cierta calidad, tal vez repetitiva (¿musical?) Que las personas en el proceso de música ven todo el tiempo y ya han resuelto tal vez instrumentos discriminatorios? No estoy seguro, pero la idea se me ocurrió. ¿Quizás este punto de vista es la mejor manera de verlo, tomando una parte del dominio del tiempo y sacando esos pasos? Una vez más, este no es mi campo, pero sospecho que esto es algo que se ha visto antes ... ¿podemos ver las 3 señales como diferentes tipos de instrumentos musicales?
También debería agregar que tengo una cantidad decente de datos de entrenamiento, por lo que tal vez usar algunos de esos métodos podría permitirme hacer una extracción de características con la que luego pueda utilizar K-Nearest Neighbour , pero eso es solo un pensamiento.
De todos modos, aquí es donde estoy parado ahora, cualquier ayuda es apreciada.
¡Gracias!
EDICIONES BASADAS EN COMENTARIOS:
Sí, , , , son todos conocidos de antemano. (Alguna variación pero muy poca. Por ejemplo, supongamos que sabemos que = 400 Khz, pero podría llegar a 401.32 Khz. Sin embargo, la distancia a es alta, por lo que podría estar a 500 Khz en comparación.) Señal-1 SIEMPRE pisará esas 4 frecuencias conocidas. La señal 2 SIEMPRE tendrá 1 frecuencia.f 2 f 3 f 4 f 1 f 2 f 2
Las tasas de repetición de pulso y las longitudes de pulso de las tres clases de señales también se conocen de antemano. (De nuevo alguna variación pero muy poca). Sin embargo, algunas advertencias, las tasas de repetición de pulso y las longitudes de pulso de las señales 1 y 2 siempre se conocen, pero son un rango. Afortunadamente, esos rangos no se superponen en absoluto.
La entrada es una serie temporal continua que llega en tiempo real, pero podemos suponer que las señales 1, 2 y 3 son mutuamente excluyentes, ya que solo existe una de ellas en cualquier momento. También tenemos mucha flexibilidad sobre la cantidad de tiempo que lleva procesar en cualquier momento.
Los datos pueden ser ruidosos, sí, y no podría ser tonos espurios, etc, en las bandas no en nuestra conocida , , , . Esto es muy posible. Sin embargo, podemos suponer una SNR media alta solo para 'comenzar' el problema.f 2 f 3 f 4
Respuestas:
Paso 1
Calcule el STFT de la señal usando un tamaño de trama menor que la duración del pulso. Supongo que este tamaño de trama seguirá ofreciendo una discriminación de frecuencia suficiente entre f1, f2, f3 y f4. es el índice de cuadro, es el índice del contenedor FFT.S(m,k) m k
Paso 2
Para cada cuadro STFT, calcule la frecuencia fundamental dominante utilizando algo como YIN, junto con un indicador de "confianza de tono", como la profundidad de la "caída" de DMF calculada por YIN.
Llamemos del f0 dominante estimado en el marco y la confianza de tono detectado en el marco .f(m) m v(m) m
Tenga en cuenta que si sus datos no son tan ruidosos, puede escapar utilizando la autocorrelación como estimador de tono y la relación del pico secundario más grande de la autocorrelación a como indicador de confianza de tono. Sin embargo, YIN es barato de implementar.r0
También puede calcular la energía de señal total de la trama FFT .e(m) m
Paso 3
Considere una ventana deslizante de marcos STFT. se elige para que sea más grande que el tiempo de repetición de pulso y de 5 a 10 veces más pequeño que la longitud típica de un segmento de señal (por ejemplo, si la aparición de una señal dura aproximadamente 10 segundos y el tamaño de su trama STFT es de 20 ms, puede elegir ).M M M=50
Extraiga las siguientes características:
Intuitivamente, mide la estabilidad de frecuencia del componente de tono principal de la señal, mide la variabilidad del "tono" de la señal y la variabilidad de la amplitud de la señal.σf σv σe
Estas serán las características para basar su detección. Las señales de tipo 1 tendrán un alto (tono variable) y un moderado y (intensidad de señal de tono constante). Las señales de tipo 2 tendrán una baja (tono constante) y una alta y (fuerza variable). Las señales de tipo 3 tendrán una baja (tono constante) y una baja y (fuerza constante).σf σv σe σf σv σe σf σv σe
Calcule estas 3 características en sus datos de entrenamiento y entrene a un ingenuo clasificador bayesiano (solo un montón de distribuciones gaussianas). Dependiendo de qué tan buenos sean sus datos, incluso podría salirse con la suya con clasificadores y usar umbrales definidos a mano en las características, aunque no lo recomiendo.
Etapa 4
Para procesar un flujo de datos entrante, calcule el STFT, calcule las características y clasifique cada ventana de cuadros STFT.M
Si sus datos y clasificador son buenos, verá algo como esto:
1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 3, 3, 3, 3, 3, 3, 3
Esto delimita bastante bien el tiempo de inicio y finalización, y el tipo de cada señal.
Si sus datos son ruidosos, debe haber tramas falsas mal clasificadas:
1, 1, 1, 1, 1, 2, 1, 1, 1, 2, 2, 3, 2, 2, 1, 1, 1, 3, 1, 1, 1, 3, 3, 3, 2, 3, 3, 3
Si ve mucha basura como en el segundo caso, use un filtro de modo en los datos sobre vecindarios de 3 o 5 detecciones; o usar HMMs.
Llevar el mensaje a casa
En lo que desea basar su detección no es en una característica espectral, sino en estadísticas temporales agregadas de características espectrales en ventanas que están en la misma escala que las duraciones de su señal. Este problema realmente requiere un procesamiento en dos escalas de tiempo: el marco STFT en el que calcula propiedades de señal muy locales (amplitud, tono dominante, intensidad de tono) y ventanas más grandes sobre las cuales puede observar la variabilidad temporal de esas propiedades de señal.
fuente
Un enfoque alternativo podría ser cuatro detectores heterodinos: multiplique la señal de entrada con un oscilador local de 4 frecuencias y filtre paso bajo las salidas resultantes. Cada salida representa una línea vertical en su imagen. Obtiene la salida en cada una de las 4 frecuencias en función del tiempo. Con el filtro de paso bajo puede marcar cuánta desviación de frecuencia desea permitir y también qué tan rápido desea que cambien las salidas, es decir, qué tan afilados son los bordes.
Esto funcionará bien incluso si la señal es bastante ruidosa.
fuente