Preciso encontrar um algoritmo ou método que possa detectar latitude
longitude
pontos extremos em uma trajetória durante o pós-processamento , que poderá ser corrigido (trazido de volta ao caminho da trajetória com base em seus vizinhos).
Como exemplo do tipo de pontos extremos que gostaria de detectar e corrigir, anexei uma imagem demonstrando:
Tentei usar um filtro Kalman sem cheiro para suavizar os dados da melhor maneira possível, mas isso parece não funcionar de maneira eficaz o suficiente para valores extremos mais extremos (dados brutos em azul, dados suavizados em vermelho):
Meu UKF pode não estar calibrado corretamente (mas tenho certeza de que está).
As trajetórias são as de caminhantes, corredores, ciclistas - movimentos movidos a humanos que podem começar e parar, mas não mudam drasticamente a velocidade ou a posição de maneira rápida ou repentina.
Uma solução que não depende de dados de temporização (e apenas de dados de posição) seria extremamente útil (pois os dados que estão sendo processados nem sempre podem conter dados de temporização). No entanto, estou ciente de quão improvável é esse tipo de solução, então estou igualmente feliz por ter qualquer solução!
Idealmente, a solução detectaria o outlier para que pudesse ser corrigido, resultando em uma trajetória corrigida:
Recursos que eu examinei:
Smooth GPS data
- /programming/1134579/smooth-gps-dataCommon GPS and Geospatial Tracking Challenges and Solutions
- http://www.toptal.com/gis/adventures-in-gps-track-analytics-a-geospatial-primer (a solução parece perder a precisão dos dados)Qual algoritmo devo usar para remover valores discrepantes nos dados de rastreamento?