classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view


Bruno Oliveira

I have been digging on the Georef code and found this, after the Bundler file parsing, and creating a pose matrix (concatenating the Bundler's R and t matrices,

    pose = pose.inverse();

    // Column negation
    pose(0,2) = -1.0*pose(0,2);
    pose(1,2) = -1.0*pose(1,2);
    pose(2,2) = -1.0*pose(2,2);

    pose(0,1) = -1.0*pose(0,1);
    pose(1,1) = -1.0*pose(1,1);
    pose(2,1) = -1.0*pose(2,1);

    if (pose_ != NULL)
        delete pose_;
        pose_ = NULL;

    pose_ = new Eigen::Affine3f(pose);

    rot = transform.matrix().topLeftCorner<3,3>();
    // Calculate translation according to -R't and store in vector.
    t = -rot.transpose()*t;
    transform(0,3) = t(0);
    transform(1,3) = t(1);
    transform(2,3) = t(2);

Why would you estimate inverse pose, do the "column negation" and after that do the t = -rot.transpose()*t;  (This is actually documented in the bundler file, what I dont' understand is why would you invert the original pose matrix and do the "column negation")

OpenDroneMap-dev mailing list
[hidden email]