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?
la source
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
et ensuite vous ditesWhat'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?Réponses:
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
et vos estimations filtrées passe-bas sont:
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 à:
où ϵ k est le bruit de processus (d'attaque), A est la matrice de transition d'état et B est votre matrice d'entrée.
Et alors vos mesurés sont: p k = C p T R U E k + D ν k où ν k est le bruit de sortie (mesure), C est la matrice de sortie et D est votre matrice de bruit de mesure.pk
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.pT R UEk^
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:
et les mesures (sortie) est
Tout ce que fait le modèle sur cette page, c'est: (mais pour chacun dex,y,etz).
Ce ne sont que les «équations du mouvement» classiques. Voir l'équation (3) ici.
la source
Votre filtre passe-bas peut être comme;
Le LPF peut être déformé en suivant:
la source