Un filtre de Kalman convient-il pour filtrer les positions des points projetés, étant donné les angles d'Euler du dispositif de capture?

17

Mon système est le suivant. J'utilise l'appareil photo d'un appareil mobile pour suivre un objet. De ce suivi, j'obtiens quatre points 3D que je projette à l'écran, pour obtenir quatre points 2D. Ces 8 valeurs sont un peu bruyantes, à cause de la détection, donc je veux les filtrer pour rendre le mouvement plus fluide et plus réaliste. Comme deuxième mesure, j'utilise la sortie du gyroscope de l'appareil, qui fournit trois angles d'Euler (c'est-à-dire l'attitude de l'appareil). Celles-ci sont plus précises et à une fréquence plus élevée (jusqu'à 100 Hz) que les positions 2D (environ 20 Hz).

Ma première tentative a été avec un simple filtre passe-bas, mais le décalage était important, alors j'essaie maintenant d'utiliser un filtre de Kalman, en espérant qu'il sera capable de lisser les positions avec peu de retard. Comme vu dans une question précédente , un point clé d'un filtre de Kalman est la relation entre les mesures et les variables d'état internes. Ici, les mesures sont à la fois mes 8 coordonnées de points 2D et les 3 angles d'Euler, mais je ne suis pas sûr de ce que je devrais utiliser comme variables d'état interne et comment je dois connecter les angles d'Euler aux points 2D. D'où la question principale: un filtre de Kalman convient-il même à ce problème? Et si oui, comment?

Stéphane Péchard
la source
Si tout le but est de lisser les valeurs avec un retard minimum, vous pouvez essayer d'utiliser un filtre de phase minimum si vous ne l'avez pas déjà essayé. Je serais surpris si le filtrage de Kalman peut vous donner mieux que le «retard de phase minimum». Pour les filtres linéaires, je m'attendrais à ce qu'un filtre à phase minimale donne le plus petit retard possible.
niaren
@niaren: Merci pour le commentaire, je vais également étudier cela.
Stéphane Péchard
1
On ne sait pas quelles sont vos mesures. Dans le cadre du filtre de Kalman, les "mesures" se réfèrent aux quantités que vous observez réellement. Si vous mesurez quatre points 3D (par exemple en fusionnant plusieurs images de caméra ensemble), ce sont vos mesures. Vous devez également décider quelles variables d'état vous essayez d'estimer. Essayez-vous de suivre les emplacements des objets 3D au fil du temps? Si oui, ce sont vos variables d'état. Il peut être approprié que la représentation 2D puisse être utilisée uniquement pour l'affichage et ne soit pas incluse dans votre modèle. Des détails supplémentaires aideront à suggérer une approche.
Jason R
Comme le dit Jsaon, vos mesures ne sont pas claires. Vous dites: 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 noisyet ensuite vous dites What's available to me is the device's gyroscope output, which provides three Euler angles (i.e. the device attitude).. Lequel est-ce? Les quatre points 2D ou les trois angles d'Euler? Ou le train de traitement prend-il des angles d'Euler -> points 3D -> points 2D?
Peter K.
J'ai en fait deux ensembles de mesures: les positions des points détectés par la caméra et les angles d'Euler, mais ils ne sont pas triviaux à relier. De plus, je ne suis intéressé que par les positions filtrées en sortie. Je vais modifier la question pour clarifier.
Stéphane Péchard

Réponses:

4

Filtrage passe-bas

Il serait bon de savoir ce que vous entendez par "simple filtre passe-bas".

Par exemple, si vos mesures au temps sontk

pk=[Xkyk]

et vos estimations filtrées passe-bas sont:

pkLPF=αpk-1LPF+(1-α)pk

alors vous aurez un retard de groupe assez important dans le filtre d'environ (pour un alpha proche de 1). 1/(1-α)

Modélisation du signal: approche simpliste

Pour utiliser le filtre de Kalman (ou toute autre approche similaire), vous devez disposer d'un modèle pour l'acquisition et la mise à jour de vos mesures.

Cela ressemble généralement à:

ϵ k est le bruit de processus (d'attaque), A est la matrice de transition d'état et B est votre matrice d'entrée.

pk+1TRUE=UNEpkTRUE+Bϵk
ϵkUNEB

Et alors vos mesurés sont: p k = C p T R U E k + D ν kν k est le bruit de sortie (mesure), C est la matrice de sortie et D est votre matrice de bruit de mesure.pk

pk=CpkTRUE+νk
νkC

Ici, "l'état" du modèle est choisi comme position réelle, et les choses que vous mesurez sont la sortie.

Vous pouvez ensuite appliquer les équations du filtre de Kalman à ceci pour obtenir des estimations d'état de la position vraie.pkTRUE^

Cependant, cette approche est simpliste car elle n'utilise aucune connaissance de la façon dont les points pourraient se déplacer (pas plus qu'elle n'utilise vos 4 points et aucune connaissance que vous pourriez avoir sur la façon dont ils se déplacent ensemble).

Modélisation du signal: démarrer une meilleure approche

Cette page montre comment régler le problème impliquant les positions et les angles d'Euler. Il fait quelque chose de différent de ce dont vous avez besoin, mais l'état est le suivant:

pkTRUE=[Xk yk zk X˙k y˙k z˙k X¨k y¨k z¨k ϕ ψ θ ϕ˙ ψ˙ θ˙ ϕ¨ ψ¨ θ¨ ]T

et les mesures (sortie) est

pk=[Xk yk zk ϕ ψ θ ]T

Tout ce que fait le modèle sur cette page, c'est: (mais pour chacun dex,y,etz).

XkTRUE=n=0kX˙nTRUEnΔt+12n=0kX¨nTRUE(nΔt)2
X,y,z

Ce ne sont que les «équations du mouvement» classiques. Voir l'équation (3) ici.

Peter K.
la source
pk=αpk-1+(α-1)pk
α
Δt;12(Δ2)
Δt1/Fs
1
FsΔtΔt12Δt2
0

Votre filtre passe-bas peut être comme;

pk=αpk-1+(1-α)zk

zkkpkk

Le LPF peut être déformé en suivant:

pk=pk-1+K(zk-pk-1)
K=(1-α)

K

fumio ueda
la source