Initialisation:Kalman Filter en utilisant OpenCV et
p->kalman_filter = new cv::KalmanFilter(state_dim, measurement_dim, 0);
p->kalman_filter->transitionMatrix = *(cv::Mat_<float>(state_dim, state_dim)
<< 1,0,1,0, 0,1,0,1,
0,0,TIME_DIFFERENCE,0,
0,0,0,TIME_DIFFERENCE);
setIdentity(p->kalman_filter->measurementMatrix);
setIdentity(p->kalman_filter->processNoiseCov, cv::Scalar::all(1e-4));
setIdentity(p->kalman_filter->measurementNoiseCov, cv::Scalar::all(1e-1));
setIdentity(p->kalman_filter->errorCovPost, cv::Scalar::all(.1));
TIME_DIFFERENCE est constante.
cv::Mat new_state;
track t = p->tracks.at(track_id);
cv::transpose((cv::Mat)t.estimated_state, p->kalman_filter->statePost);
t.estimated_error_covariance.copyTo(p->kalman_filter->errorCovPost);
new_state = p->kalman_filter->predict();
Le code se bloque à prédire, l'erreur provenant de statePre = transitionMatrix*statePost;
dans la fonction prédire(). L'erreur est due à l'échec de l'assertion pour le type. J'utilise transpose comme le t.estimated_state est la transposition de ce que le statePost doit être défini. J'ai essayé d'utiliser convertTo() pour changer le type de l'état t.estimated_state.Using setTo() pour statePost ne fonctionne pas non plus.
Est-ce que quelqu'un pourrait indiquer où je vais mal?