From 6ad16fb6d19e36a308bf2b9845ddda6974d10fa6 Mon Sep 17 00:00:00 2001 From: Stanislaw Halik Date: Wed, 29 Oct 2014 02:51:45 +0100 Subject: pt: remove even more dynamic pose remnants Reported-by: @FlyingCircus- Issue: #63 Tested-by: video provided by @FlyingCircus- --- ftnoir_tracker_pt/point_tracker.cpp | 67 ++++++++----------------------------- ftnoir_tracker_pt/point_tracker.h | 6 +--- 2 files changed, 15 insertions(+), 58 deletions(-) diff --git a/ftnoir_tracker_pt/point_tracker.cpp b/ftnoir_tracker_pt/point_tracker.cpp index 2bffdbb8..4780136d 100644 --- a/ftnoir_tracker_pt/point_tracker.cpp +++ b/ftnoir_tracker_pt/point_tracker.cpp @@ -57,18 +57,6 @@ PointModel::PointModel(Vec3f M01, Vec3f M02) points.push_back(Vec2f(0,0)); points.push_back(Vec2f(M01[0], M01[1])); points.push_back(Vec2f(M02[0], M02[1])); - // fit line to orthographically projected points - // ERROR: yields wrong results with colinear points?! - /* - Vec4f line; - fitLine(points, line, CV_DIST_L2, 0, 0.01, 0.01); - d[0] = line[0]; d[1] = line[1]; - */ - // TODO: fix this - d = Vec2f(M01[0]-M02[0], M01[1]-M02[1]); - - // sort model points - get_d_order(points, d_order); } #ifdef OPENTRACK_API @@ -80,6 +68,8 @@ static bool d_vals_sort(const pair a, const pair b) void PointModel::get_d_order(const std::vector& points, int d_order[]) const { + // fit line to orthographically projected points + Vec2f d(M01[0]-M02[0], M01[1]-M02[1]); // get sort indices with respect to d scalar product vector< pair > d_vals; for (unsigned i = 0; i& projected_points, const PointModel& model) +void PointTracker::track(const vector& points, const PointModel& model) { - const PointOrder& order = find_correspondences(projected_points, model); - int iters = POSIT(model, order); - qDebug()<<"POSIT iterations:"<& projected_points, const PointModel& model) +PointTracker::PointOrder PointTracker::find_correspondences(const std::vector& points, const PointModel& model) { - // ... otherwise we look at the distance to the projection of the expected model points - // project model points under current pose - Vec2f p_exp[3]; - p_exp[0] = project(Vec3f(0,0,0)); - p_exp[1] = project(model.get_M01()); - p_exp[2] = project(model.get_M02()); - - // set correspondences by minimum distance to projected model point - bool point_taken[PointModel::N_POINTS]; - for (int i=0; i& points, int d_order[]) const; + void get_d_order(const std::vector& points, int* d_order) const; }; // ---------------------------------------------------------------------------- -- cgit v1.2.3