SyB3R - Synthetic Benchmark for 3D Reconstruction
Camera.h
1 #ifndef CAMERA_H
2 #define CAMERA_H
3 
4 #include <Eigen/Dense>
5 
6 namespace tinyxml2 {
7  class XMLElement;
8 }
9 
10 namespace syb3r {
11 namespace data {
12 
17 class Camera
18 {
19  public:
23  static Camera convertFrom_PMVS_Matrix(const Eigen::Matrix<float, 3, 4> &pmvsProjectionMatrix, unsigned width, unsigned height);
24  Eigen::Matrix<float, 3, 4> convertTo_PMVS_Matrix() const;
25 
26  static Camera convertFrom_VSFM_NVM(float focalLength, const Eigen::Quaternionf &cameraRotation, const Eigen::Vector3f &cameraPosition, unsigned width, unsigned height);
27 
28  static Camera convertFrom_DFM_SubsBA(const Eigen::Matrix<float, 3, 4> &DFM_SubsBA_ProjectionMatrix, unsigned width, unsigned height);
29 
30  static Camera readFromSceneXML(const tinyxml2::XMLElement *cameraNode);
32 
33  Camera() = delete;
34  Camera(const Camera&) = default;
35  Camera(const Eigen::Matrix3f &internalCalibration, const Eigen::Matrix4f &externalCalibration, unsigned width, unsigned height);
36  Camera(const Eigen::Matrix3f &internalCalibration, const Eigen::Matrix3f &cameraRotation, const Eigen::Vector3f &cameraPosition, unsigned width, unsigned height);
37 
44  inline const Eigen::Matrix3f &getInternalCalibration() const { return m_internalCalibration; }
45 
48  inline const Eigen::Vector3f &getRadialDistortion(unsigned colorChannel) const { return m_radialDistortion[colorChannel]; }
49 
54  inline const Eigen::Matrix4f &getExternalCalibration() const { return m_externalCalibration; }
55 
57  inline const Eigen::Vector3f &getFocalPoint() const { return m_focalPoint; }
58 
60  inline const Eigen::Matrix3f &getRotation() const { return m_rotation; }
61 
63  inline unsigned getWidth() const { return m_width; }
65  inline unsigned getHeight() const { return m_height; }
66 
69  inline float getFocalLength35mm() const { return m_internalCalibration(0, 0) / m_width * 36.0f; }
70  protected:
71  Eigen::Matrix3f m_internalCalibration;
72  Eigen::Vector3f m_radialDistortion[3];
73  Eigen::Matrix4f m_externalCalibration;
74  Eigen::Matrix3f m_rotation;
75  Eigen::Vector3f m_focalPoint;
76 
77  unsigned m_width;
78  unsigned m_height;
79 
80  void computeRotationPositionFromExtCalib();
81 
82 };
83 
84 }
85 }
86 
87 #endif // CAMERA_H
Definition: CameraPathEvaluation.cpp:10
const Eigen::Vector3f & getFocalPoint() const
Returns the position of the camera.
Definition: Camera.h:57
const Eigen::Vector3f & getRadialDistortion(unsigned colorChannel) const
Definition: Camera.h:48
float getFocalLength35mm() const
Definition: Camera.h:69
const Eigen::Matrix4f & getExternalCalibration() const
Transforms from world space to view space.
Definition: Camera.h:54
Definition: Camera.h:6
const Eigen::Matrix3f & getRotation() const
Returns the camera rotation from world space to view space.
Definition: Camera.h:60
const Eigen::Matrix3f & getInternalCalibration() const
Transforms from view space to image space.
Definition: Camera.h:44
unsigned getWidth() const
Width (in pixels) of the produced images.
Definition: Camera.h:63
Internal and external camera parameters.
Definition: Camera.h:17
unsigned getHeight() const
Height (in pixels) of the produced images.
Definition: Camera.h:65