Si vous avez appliqué un filtre de Kalman pour les 20 images de départ, vous comprendrez la réponse suivante.
Si vous ne disposez pas de la 21ème trame.
Puis X(t+1) = A*X(t)+B(u)+Noise
Ceci est la déclaration de prédire, et vous pouvez prédire la valeur au 21e cadre. A = état, atrix, B = matrice de contrôle. X (t) = position de la balle dans la 20ème trame assignée par le filtre kalman.
Si vous n'avez pas la 21ème image, vous pouvez utiliser la valeur ci-dessus pour afficher la puce dans la 21ème image. C'est l'une des principales caractéristiques du filtre Kalman, même si vous n'avez pas de valeur d'observation, vous pouvez toujours prédire la valeur dans le cadre suivant, ce qui est un cas pratique très commun, parce que la plupart du temps les capteurs ne t sélectionner les objets, et il n'y a pas de valeur d'observation.
Et si vous obtenez la 21ème image, alors prenez la valeur d'observation et mettez à jour votre prédiction.
Je recommanderais de consulter le tutoriel de Student dave sur youtube pour le filtre et le suivi de kalman. Et aller au cours de capacité sur Udacity link.
Une fonction de filtre de Kalman pour votre problème aimerait
void Kalman_Filter(float *Zx, float *Zy)
{
Mat Zt = (Mat_<float>(2, 1) << *Zx, *Zy);
//prediction
Predict = A*Prior;// +B*a;
//covariacne
P = P*P*A.t() + Ex;
//measurement uopdate
Mat Kt = P*H.t()*(H*P*H.t() + Ez);
//
Prior = Predict + Kt*(Zt - H*Predict);
//
P = (I - Kt*H)*P;
//
*Zx = Prior.at<float>(0, 0);
*Zy = Prior.at<float>(1, 0);
//
return;
}
ici * Zx et * Zy sont les valeurs d'observation et contient la position x et y de la taille du point balle, que vous avez trouvé.