Problema.
Há um sinal discreto (exemplo abaixo).
Sabe-se que tem uma forma de pulso retangular com ruído gaussiano branco aditivo.
, , ,
Onde é uma função passo Heaviside, é um ruído gaussiano branco aditivo, é uma altura de pulso retangular, é um índice da primeira amostra de pulso retangular, é um índice da última amostra de pulso retangular, é um nível constante de sinal, é um parâmetro ajustável.
Todos os parâmetros podem ter uma grande variedade de valores.
É necessário encontrar o valor de (duração do pulso retangular nas amostras).
Soluções possíveis.
No momento, tentei duas maneiras de resolver esse problema.
Filtro passa-baixo com limite.
Como primeira tentativa, usei um esquema simples com filtro e limite de passa-baixo.
1. Aplique o filtro passa-baixo FIR com frequência de corte igual a .
2. Estime a média e a dispersão do ruído filtrado das primeiras amostras do sinal.
3. Defina o limite .
4. Estime .
5. Calcule .
Prós:
1. Este algoritmo é simples.
2. É fácil escrever uma implementação rápida.
Contras:
1. É difícil estimar o valor eficiente da frequência de corte do filtro. Por um lado, o valor baixo pode corromper a forma de pulsos curtos. Por outro lado, grande valor diminui o efeito da filtração.
2. O algoritmo não está usando todas as informações, temos sobre o sinal.
Análise de regressão
Como segunda tentativa, tentei aproximar a sequência de entrada de amostras com a função .
, , em que é um pequeno parâmetro.
Para aproximação, usei o método dos mínimos quadrados com descida gradiente para minimizar a função de custo.
1. Defina os valores iniciais para , , , .
2. Realize a descida do gradiente.
3. Defina o limite .
4. Estime .
5. Calcule .
Prós:
1. Este algoritmo fornece resultados com boa precisão.
2. Funciona para uma ampla gama de durações.
Contras:
1. É muito lento.
Questão.
Afinal, não estou satisfeito com a precisão do primeiro algoritmo e com a velocidade do segundo. Como resolveria este problema?
Existe alguma solução clássica que não consegui encontrar?
Idéias, links, qualquer feedback será muito apreciado.
Obrigado.
fonte
Respostas:
Você deseja um método que remova o ruído enquanto preserva as bordas. Isso não pode ser alcançado bem com a filtragem linear, como você percebeu. Conheço duas abordagens que podem funcionar bem para o seu problema. O primeiro é a filtragem mediana , onde as amostras dentro de uma janela são substituídas pela mediana. O gráfico a seguir mostra o resultado da filtragem mediana com um comprimento de janela de 25 amostras (em vermelho):
A outra abordagem, mais complexa, é o denoising de variação total , que funciona muito bem para sinais constantes por partes. Há uma descrição muito boa do denoising de variação total, incluindo o código Matlab disponível: link .
fonte
Eu sei que isso é muito antigo , e @Matt L. já deu uma resposta excelente e informativa. Eu não tinha ideia de que existia a variação total da variação, então aprendi algo bastante útil. Consequentemente, votei tanto na pergunta quanto na resposta e quero dar uma coisinha, como é, de volta ao site. A idéia básica é usar uma versão digital simples do antigo RC LPF e reduzir bastante a 'constante de tempo' quando ocorrer uma etapa. Depois, após a etapa, aumente bastante a 'constante de tempo'. NB A 'constante de tempo' não será realmente constante, como será visto abaixo.
A figura abaixo mostra minha tentativa de replicar o exemplo de pulso retangular barulhento genérico do OP e como um filtro passa-baixo 'derivado recíproco' (doravante denominado RD-LPF) executa:
O RD-LPF é simplesmente , onde e Eu usei . O pulso retangular limpo tinha amplitude unitária, iniciada em t = 3 e largura do pulso era 3. O ruído gaussiano aditivo branco tinha e .y[i]=Ay[i−1]+(1−A)x[i] A=exp(−K|y[i−1]−x[i]|) K=0.2 μ=0 σ=0.3
A figura a seguir compara a saída RD-LPF (rastreio vermelho) com (como na resposta de Matt L.) uma saída do filtro mediano em movimento de 25 pontos (rastreio azul):
Não estou dizendo que jamais usaria o RD-LPF para algo sério, mas fiquei curioso para ver se ele seria destruído nessa pequena comparação. Evidentemente, esse não é o caso.
fonte