From f3fc96424dfc31576917e39db555cc5d68ddc4af Mon Sep 17 00:00:00 2001 From: Stanislaw Halik Date: Sun, 1 Feb 2015 03:48:14 +0100 Subject: bring back dynamic pose resolution following user outrage Uses a simpler method without computing point velocities. Issues: #112, #126 --- ftnoir_tracker_pt/point_tracker.cpp | 54 +++++++++++++++++++++++++++++++++++-- 1 file changed, 52 insertions(+), 2 deletions(-) (limited to 'ftnoir_tracker_pt/point_tracker.cpp') diff --git a/ftnoir_tracker_pt/point_tracker.cpp b/ftnoir_tracker_pt/point_tracker.cpp index 0f996316..324119a9 100644 --- a/ftnoir_tracker_pt/point_tracker.cpp +++ b/ftnoir_tracker_pt/point_tracker.cpp @@ -67,9 +67,53 @@ PointTracker::PointTracker() X_CM.t[2] = 1000; // default position: 1 m away from cam; } -void PointTracker::track(const vector& points, const PointModel& model, float f) +PointTracker::PointOrder PointTracker::find_correspondences_previous(const vector& points, const PointModel& model, float f) { - const PointOrder& order = find_correspondences(points, model); + PointTracker::PointOrder p; + p.points[0] = project(Vec3f(0,0,0), f); + p.points[1] = project(model.M01, f); + p.points[2] = project(model.M02, f); + + // set correspondences by minimum distance to projected model point + bool point_taken[PointModel::N_POINTS]; + for (int i=0; i& points, const PointModel& model, float f, bool dynamic_pose) +{ + PointOrder order; + + if (!dynamic_pose) + order = find_correspondences(points, model); + else + order = find_correspondences_previous(points, model, f); + POSIT(model, order, f); } @@ -222,3 +266,9 @@ int PointTracker::POSIT(const PointModel& model, const PointOrder& order_, float // //qDebug()<<"r: "<