1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
| #include "myslam/camera.h"
namespace myslam {
Camera::Camera() { }
Vector3d Camera::world2camera ( const Vector3d& p_w, const SE3& T_c_w ) { return T_c_w*p_w; }
Vector3d Camera::camera2world ( const Vector3d& p_c, const SE3& T_c_w ) { return T_c_w.inverse() *p_c; }
Vector2d Camera::camera2pixel ( const Vector3d& p_c ) { return Vector2d ( fx_ * p_c ( 0,0 ) / p_c ( 2,0 ) + cx_, fy_ * p_c ( 1,0 ) / p_c ( 2,0 ) + cy_ ); }
Vector3d Camera::pixel2camera ( const Vector2d& p_p, double depth ) { return Vector3d ( ( p_p ( 0,0 )-cx_ ) *depth/fx_, ( p_p ( 1,0 )-cy_ ) *depth/fy_, depth ); }
Vector2d Camera::world2pixel ( const Vector3d& p_w, const SE3& T_c_w ) { return camera2pixel ( world2camera ( p_w, T_c_w ) ); }
Vector3d Camera::pixel2world ( const Vector2d& p_p, const SE3& T_c_w, double depth ) { return camera2world ( pixel2camera ( p_p, depth ), T_c_w ); }
}
|