5

I have a function which projects a point using a 7 parameter camera model:

Vec2 project(const Rot3& R, // camera orientation
             const Vec3& T, // camera pos
             double f_px,   // focal length
             const Vec3& X) // point in world;
{
    const Vec3 P = R * (X-T);               // Subtract camera position and apply rotation
    const Vec2 p = P.hnormalized() * f_px;  // Normalize and apply focal length
    return p;
}
  • Rot3 is some convenient representation of a rotation. Assume it is a 3x3 matrix.
  • Vec3::hnormalized() returns Vec2(x/z, y/z)

Now I want to extend the function to take an uncertainty estimation of the point I am projecting (a 3x3 covariance matrix - an ellipsoid in world coordinates) and return the 2x2 covariance matrix (an ellipse in pixel coordinates).

I think the reference to Hartley & Zisserman’s Multiple View Geometry In Computer Vision here applies, but I can't figure out the math of it.

Andrey Tyukin
  • 43,673
  • 4
  • 57
  • 93
bgp2000
  • 1,070
  • 13
  • 32
  • Can't you project the eigenvectors that represent your uncertainty-ellipsoid the same way you project the point `X`? I don't know if that's going to give you an ellipse. Don't remember the math very well, so I could be wrong. – dhanushka Jul 16 '18 at 03:31

0 Answers0