20 #ifndef KJB_CAMERA_CPP_CAMERA_CALIBRATED_CAMERA
21 #define KJB_CAMERA_CPP_CAMERA_CALIBRATED_CAMERA
24 #ifdef KJB_HAVE_BST_SERIAL
25 #include <boost/archive/text_iarchive.hpp>
26 #include <boost/archive/text_oarchive.hpp>
37 #ifdef KJB_HAVE_BST_SERIAL
39 #include <boost/serialization/access.hpp>
53 #ifdef KJB_HAVE_BST_SERIAL
54 friend class boost::serialization::access;
66 const Matrix& camera_matrix,
72 Matrix intrinsic, rotation;
103 return new Self(*
this);
120 double alpha_x = intrinsic(0,0);
121 double s = intrinsic(0,1);
122 double alpha_y = intrinsic(1,1);
123 double x0 = intrinsic(0,2);
124 double y0 = intrinsic(1,2);
126 double theta = atan2(alpha_x, -s);
128 if(theta < 0) theta +=
M_PI;
131 double tmp_aspect_ratio = alpha_y * sin(theta) / alpha_x;
133 if(tmp_aspect_ratio < 0)
135 tmp_aspect_ratio *= -1;
146 double skew_ = acos(-s/alpha_y);
147 double focal = alpha_y * sin(skew_);
148 double ar = alpha_x / focal;
179 template<
class Archive>
180 void serialize(Archive &ar,
const unsigned int )
182 #ifdef KJB_HAVE_BST_SERIAL
183 ar & ::boost::serialization::base_object<Base>(*this);
virtual void set_aspect_ratio(double iar)
sets the aspect ratio
Definition: perspective_camera.cpp:956
virtual void set_camera_centre(const kjb::Vector &icentre)
sets the camera centre
Definition: perspective_camera.cpp:695
Definition for the Matrix class, a thin wrapper on the KJB Matrix struct and its related functionalit...
bool look_down_positive_z
Definition: g_camera_calibration.h:59
Definition: g_camera_calibration.h:30
theta
Definition: APPgetLargeConnectedEdges.m:108
virtual void set_focal_length(double ifocal)
sets the focal length
Definition: perspective_camera.cpp:872
void standardize_camera_matrices(Matrix &intrinsic, Matrix &rotation, Vector &translation, const Calibration_descriptor &cal)
Definition: g_camera_calibration.cpp:79
void decompose_camera_matrix(const Matrix &camera_matrix, Matrix &intrinsic, Matrix &rotation, Vector &translation)
Definition: g_camera_calibration.cpp:184
This class implements vectors, in the linear-algebra sense, with real-valued elements.
Definition: m_vector.h:87
Calibrated_camera(const Self &other)
Definition: calibrated_camera.h:97
virtual void set_angles_from_quaternion(const kjb::Quaternion &q)
sets the rotation angles from an input quaternion
Definition: perspective_camera.cpp:985
const kjb::Quaternion & get_rotations_as_a_quaternion() const
returns the rotations of this camera as a quaternion
Definition: perspective_camera.h:408
virtual Perspective_camera & operator=(const Perspective_camera &pc)
Definition: perspective_camera.cpp:313
void initialize(const Matrix &intrinsic, Matrix rotation, Vector translation)
Definition: calibrated_camera.h:115
St_perspective_camera for modeling a perspective camera using the classic Forsyth and Ponce parametri...
Definition: g_quaternion.h:40
virtual Self & operator=(const Self &other)
Definition: calibrated_camera.h:106
Definition: perspective_camera.h:93
const Quaternion & get_orientation() const
Definition: calibrated_camera.h:174
virtual void set_skew(double is)
sets the skew angle
Definition: perspective_camera.cpp:946
virtual void set_principal_point(const kjb::Vector &ip)
sets the principal point
Definition: perspective_camera.cpp:897
void set_orientation(const Quaternion &orientation)
Alias of set_angles_from_quaternion()
Definition: calibrated_camera.h:169
#define KJB_THROW_2(ex, msg)
Definition: l_exception.h:48
Calibrated_camera(const Matrix &camera_matrix, Calibration_descriptor cal, double near=10, double far=10000)
Definition: calibrated_camera.h:65
#define M_PI
Definition: fft.cpp:206
Matrix transpose() const
Transpose this matrix.
Definition: m_matrix.cpp:395
Calibrated_camera(double near=10, double far=10000)
Definition: calibrated_camera.h:61
This class implements matrices, in the linear-algebra sense, with real-valued elements.
Definition: m_matrix.h:94
Object thrown when a program lacks required resources or libraries.
Definition: l_exception.h:539
Definition: calibrated_camera.h:51
Definition for the Vector class, a thin wrapper on the KJB Vector struct and its related functionalit...
virtual Self * clone() const
Definition: calibrated_camera.h:101