Estou tentando pesquisar e descobrir a melhor forma de atacar esse problema. Ele abrange o processamento de música, processamento de imagens e processamento de sinais, e, portanto, existem inúmeras maneiras de analisar isso. Eu queria perguntar sobre as melhores maneiras de abordá-lo, já que o que pode parecer complexo no domínio puro sig-proc pode ser simples (e já resolvido) por pessoas que fazem processamento de imagem ou música. De qualquer forma, o problema é o seguinte:
Se você perdoa minha mão desenhando o problema, podemos ver o seguinte:
Na figura acima, tenho 3 tipos diferentes de sinais. O primeiro é um pulso que meio que 'aumenta' a frequência de a f 4 e depois se repete. Tem uma duração de pulso específica e um tempo de repetição de pulso específico.
O segundo existe apenas em , mas possui um comprimento de pulso mais curto e uma frequência de repetição de pulso mais rápida.
Finalmente, o terceiro é simplesmente um tom em .
O problema é: de que maneira eu abordo esse problema, para que eu possa escrever um classificador que possa discriminar entre o sinal 1, o sinal 2 e o sinal 3. Ou seja, se você alimentá-lo com um dos sinais, deve poder dizer que esse sinal é assim e assim. Qual melhor classificador me daria uma matriz de confusão diagonal?
Algum contexto adicional e o que tenho pensado até agora:
Como eu disse, isso abrange vários campos. Eu queria saber quais metodologias já poderiam existir antes de me sentar e entrar em guerra com isso. Não quero inventar inadvertidamente a roda. Aqui estão alguns pensamentos que tive olhando de diferentes pontos de vista.
Ponto de vista do processamento de sinais: uma coisa que eu observei foi fazer uma análise cepstral e, possivelmente, usar a largura de banda Gabor do cepstrum para discriminar o sinal 3 do outro 2 e medir o pico mais alto do cepstrum para discriminar o sinal. 1 do sinal-2. Essa é a minha solução atual de processamento de sinais.
Ponto de vista do processamento de imagens: Aqui estou pensando, pois, de fato, posso criar imagens vis-à-vis os espectrogramas; talvez eu possa aproveitar algo desse campo? Eu não estou intimamente familiarizado com esta parte, mas que tal detectar uma 'linha' usando a Transformação de Hough e, de alguma forma, 'contar' as linhas (e se elas não forem linhas e bolhas?) E partir daí? É claro que em qualquer momento em que tomo um espectrograma, todos os pulsos que você vê podem ser alterados ao longo do eixo do tempo, o que importa? Não tenho certeza...
Ponto de vista do processamento de música: Um subconjunto de processamento de sinal, com certeza, mas me ocorre que o sinal-1 tem uma certa qualidade, talvez repetitiva (musical?), Que as pessoas no processo de música veem o tempo todo e já resolveram o problema. talvez instrumentos discriminatórios? Não tenho certeza, mas o pensamento me ocorreu. Talvez esse ponto de vista seja a melhor maneira de analisá-lo, pegando um pedaço do domínio do tempo e provocando essas taxas escalonadas? Mais uma vez, este não é o meu campo, mas suspeito fortemente que isso já tenha sido visto antes ... podemos ver os três sinais como tipos diferentes de instrumentos musicais?
Devo também acrescentar que tenho uma quantidade decente de dados de treinamento, portanto, talvez o uso de alguns desses métodos possa me permitir fazer uma extração de recursos com os quais posso utilizar o K-Nearest Neighbor , mas isso é apenas um pensamento.
De qualquer forma, é aqui que estou, qualquer ajuda é apreciada.
Obrigado!
EDITOS BASEADOS EM COMENTÁRIOS:
Sim, , f 2 , f 3 , f 4 são todos conhecidos antecipadamente. (Alguma variação, mas muito pouca. Por exemplo, digamos que f 1 = 400 Khz, mas pode chegar a 401,32 Khz. No entanto, a distância para f 2 é alta, então f 2 pode estar em 500 Khz em comparação.) O sinal 1 sempre pisará nessas 4 frequências conhecidas. O sinal 2 sempre terá 1 frequência.
As taxas de repetição de pulso e os comprimentos de pulso das três classes de sinais também são todos conhecidos antecipadamente. (Novamente alguma variação, mas muito pouco). Algumas advertências, no entanto, sempre são conhecidas taxas de repetição de pulso e comprimentos de pulso dos sinais 1 e 2, mas são uma faixa. Felizmente, esses intervalos não se sobrepõem.
A entrada é uma série temporal contínua que chega em tempo real, mas podemos assumir que os sinais 1, 2 e 3 são mutuamente exclusivos, pois apenas um deles existe a qualquer momento. Também temos muita flexibilidade em quanto tempo você leva para processar a qualquer momento.
Os dados podem ser ruidosos, sim, e pode haver tons espúrios, etc., em bandas que não são conhecidas como , f 2 , f 3 , f 4 . Isso é bem possível. No entanto, podemos assumir um SNR de nível médio apenas para "começar" o problema.
Respostas:
Passo 1
Passo 2
Para cada quadro STFT, calcule a frequência fundamental dominante usando algo como YIN, juntamente com um indicador de "confiança de tom", como a profundidade do "mergulho" do DMF calculado por YIN.
etapa 3
Extraia os seguintes recursos:
Calcule esses três recursos em seus dados de treinamento e treine um classificador bayesiano ingênuo (apenas um monte de distribuições gaussianas). Dependendo da qualidade dos seus dados, você pode até se classificar e usar limites definidos à mão nos recursos, embora eu não recomende isso.
Passo 4
Se seus dados e classificador forem bons, você verá algo assim:
1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, 3, 3, 3, 3, 3
Isso delimita muito bem o horário de início e término e o tipo de cada sinal.
Se seus dados forem barulhentos, deve haver quadros falsos classificados incorretamente:
1, 1, 1, 1, 1, 2, 1, 1, 1, 2, 2, 3, 2, 2, 1, 1, 1, 3, 1, 1, 1, 1, 3, 3, 3, 2, 3, 3, 3
Se você ver muita porcaria como no segundo caso, use um filtro de modo nos dados em bairros de 3 ou 5 detecções; ou use HMMs.
Levar mensagem para casa
O que você deseja basear sua detecção não é um recurso espectral, mas estatísticas temporais agregadas de recursos espectrais sobre janelas que estão na mesma escala das durações do sinal. Esse problema realmente exige um processamento em duas escalas de tempo: o quadro STFT no qual você calcula propriedades de sinal muito locais (amplitude, tom dominante, intensidade do tom) e janelas maiores nas quais você espia a variabilidade temporal dessas propriedades do sinal.
fonte
Uma abordagem alternativa poderia ser quatro detectores heterodinos: Multiplique o sinal de entrada por um oscilador local de 4 frequências e passe passa baixo o filtro das saídas resultantes. Cada saída representa uma linha vertical na sua imagem. Você obtém a saída em cada uma das 4 frequências em função do tempo. Com o filtro passa-baixo, você pode discar quanto desvio de frequência você deseja permitir e também a rapidez com que deseja que as saídas mudem, ou seja, com a nitidez das bordas.
Isso funcionará bem, mesmo que o sinal seja bastante barulhento.
fonte