Meu sistema é o seguinte. Eu uso a câmera de um dispositivo móvel para rastrear um objeto. Nesse rastreamento, recebo quatro pontos 3D que projeto na tela, para obter quatro pontos 2D. Esses 8 valores são meio barulhentos, devido à detecção, então eu quero filtrá-los para tornar o movimento mais suave e realista. Como segunda medida, uso a saída do giroscópio do dispositivo, que fornece três ângulos de Euler (ou seja, a atitude do dispositivo). São mais precisos e com maior frequência (até 100 Hz) do que as posições 2D (cerca de 20 Hz).
Minha primeira tentativa foi com um filtro passa-baixo simples, mas o atraso era importante, então agora tento usar um filtro Kalman, esperando que seja capaz de suavizar as posições com pouco atraso. Como visto em uma pergunta anterior , um ponto-chave em um filtro Kalman é a relação entre as medições e as variáveis de estado internas. Aqui, as medições são minhas 8 coordenadas de ponto 2D e os 3 ângulos de Euler, mas não tenho certeza sobre o que devo usar como variáveis de estado interno e como devo conectar os ângulos de Euler aos pontos 2D. Portanto, a questão principal é que um filtro Kalman é adequado para esse problema? E se sim, como?
fonte
From this tracking, I get four 3D points that I project on a mobile device screen, to get four 2D points. These 8 values are kinda noisy
e depois você dizWhat's available to me is the device's gyroscope output, which provides three Euler angles (i.e. the device attitude).
. Qual é? Os quatro pontos 2D ou os três ângulos de Euler? Ou o trem de processamento segue ângulos de Euler -> pontos 3D -> pontos 2D?Respostas:
Filtragem passa-baixo
Seria bom saber o que você quer dizer com "filtro passa-baixo simples".
Por exemplo, se suas medidas no tempo foremk
e suas estimativas filtradas com passe baixo são:
você terá um atraso de grupo bastante grande no filtro de aproximadamente1/(1−α) (para alfa próximo de 1).
Modelando o Sinal: Abordagem Simplista
Para usar o filtro Kalman (ou qualquer outra abordagem semelhante), você precisa ter um modelo de como suas medidas são adquiridas e atualizadas.
Geralmente isso se parece com:
onde ε k é o processo (condução) de ruído, uma é a matriz de transição de estado, e B é a sua matriz de entrada.
E, em seguida, a sua medida são: p k = C p T R L E k + D ν k onde ν k é a saída (de medida) de ruído, C é a matriz de saída, e D é a sua matriz de ruído de medição.pk
Aqui, o "estado" do modelo é escolhido como as posições verdadeiras, e as coisas que você mede são a saída.
Você pode então aplicar as equações do filtro de Kalman para isso para obter estimativas de estado da posição verdadeira.pTRUEk^
No entanto, essa abordagem é simplista porque não usa nenhum conhecimento de como os pontos podem se mover (nem usa seus quatro pontos e qualquer conhecimento que você possa ter sobre como eles se movem juntos).
Modelando o sinal: iniciando uma abordagem melhor
Esta página mostra como configurar o problema envolvendo as posições e ângulos de euler. Está fazendo algo diferente do que você precisa, mas o estado é:
e as medições (saída) são
Todo o modelo dessa página está realmente dizendo: (mas para cada um dosx,y,ez).
Esta é apenas a clássica "equações de movimento". Veja a equação (3) aqui.
fonte
Your low pass filter may be like;
wherezk is k th observed data. pk is k th estimated value.
The LPF can be deformed to next:
This is quite similar to Kalman filter. In Kalman filter,K is Kalman gain and generally variable.
fonte