Сглаживание точечных траекторий с помощью фильтра Калмана в видео стабилизации

Сейчас я исследую тему стабилизации видео.
Я выбрал хорошие точечные объекты (PF) для отслеживания на основе трекера Kanade-Lucas-Tomasi (KLT) в качестве трекерного точечного объекта. После извлечения N PF из первого изображения и отслеживания PF на следующем изображении обновляются траектории точечных объектов (PFT) путем подключения отслеживаемых N PF к предыдущим PFT. И продолжай,

Теперь у меня был набор PFT. Я хочу сгладить этот набор PFT для создания гладких точечных траекторий (SPFT) с помощью фильтра Калмана. Но это SPFTs, похоже, как PFT.
Я не знаю, как настроить параметры фильтра Калмана. Пожалуйста, помогите мне узнать.
Заранее спасибо.

//Declare Kalman Filter
KalmanFilter KF (4,2,0);
Mat_<float> state (4,1);
Mat_<float> measurement (2,1);

void init_kalman(double x, double y)
{

KF.statePre.at<float>(0) = x;
KF.statePre.at<float>(1) = y;
KF.statePre.at<float>(2) = 0;
KF.statePre.at<float>(3) = 0;KF.transitionMatrix = *(Mat_<float>(4,4) << 1,0,1,0,    0,1,0,1,     0,0,1,0,   0,0,0,1);
KF.processNoiseCov = *(Mat_<float>(4,4) << 0.2,0,0.2,0,  0,0.2,0,0.2,  0,0,0.3,0,  0,0,0,0.3);
setIdentity(KF.measurementMatrix);
setIdentity(KF.processNoiseCov,Scalar::all(1e-4));
setIdentity(KF.measurementNoiseCov,Scalar::all(1e-1));
setIdentity(KF.errorCovPost, Scalar::all(.1));
}Point2f kalman_predict_correct(double x, double y)
{
Mat prediction = KF.predict();
Point2f predictPt (prediction.at<float>(0), prediction.at<float>(1));
measurement(0) = x;
measurement(1) = y;
Mat estimated = KF.correct(measurement);
Point2f statePt (estimated.at<float>(0), estimated.at<float>(1));
return statePt;
}
// SMOOTH DATA
measurement.setTo(Scalar(0));
for(size_t m = 0; m < new_track_feature.size(); m++)
{
for(size_t n = 0; n < new_track_feature[0].point_list.size(); n++)
{
init_kalman(new_track_feature[m].point_list[n].point.x, new_track_feature[m].point_list[n].point.y);
Point2f smooth_feature = kalman_predict_correct(new_track_feature[m].point_list[n].point.x, new_track_feature[m].point_list[n].point.y);
smooth_feature_point.push_back(PointFeature(n,smooth_feature,USE));
}
smooth_feature_track.push_back(TrackFeature(m,smooth_feature_point));
}

2

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]