Berkeley SfM
Public Member Functions | Private Attributes | List of all members
bsfm::CameraExtrinsics Class Reference

#include <camera_extrinsics.h>

Public Member Functions

 CameraExtrinsics ()
 
 CameraExtrinsics (const Pose &world_to_camera)
 
void SetWorldToCamera (const Pose &world_to_camera)
 
Pose WorldToCamera () const
 
Pose CameraToWorld () const
 
void SetRotation (const Matrix3d &rotation)
 
void SetRotation (double phi, double theta, double psi)
 
void Rotate (const Matrix3d &delta)
 
void Rotate (double dphi, double dtheta, double dpsi)
 
Matrix3d Rotation () const
 
void SetTranslation (const Vector3d &translation)
 
void SetTranslation (double wx, double wy, double wz)
 
void Translate (const Vector3d &delta)
 
void Translate (double dx, double dy, double dz)
 
void TranslateX (double dx)
 
void TranslateY (double dy)
 
void TranslateZ (double dz)
 
Vector3d Translation () const
 
Matrix34d Rt () const
 
void WorldToCamera (double wx, double wy, double wz, double *cx, double *cy, double *cz) const
 
void CameraToWorld (double cx, double cy, double cz, double *wx, double *wy, double *wz) const
 

Private Attributes

Pose world_to_camera_
 

Detailed Description

Definition at line 76 of file camera_extrinsics.h.

Constructor & Destructor Documentation

bsfm::CameraExtrinsics::CameraExtrinsics ( )

Definition at line 53 of file camera_extrinsics.cpp.

53  {
54  world_to_camera_ = Pose();
55 }
bsfm::CameraExtrinsics::CameraExtrinsics ( const Pose world_to_camera)

Definition at line 58 of file camera_extrinsics.cpp.

59  : world_to_camera_(world_to_camera) {}

Member Function Documentation

Pose bsfm::CameraExtrinsics::CameraToWorld ( ) const

Definition at line 71 of file camera_extrinsics.cpp.

71  {
73 }
Pose Inverse() const
Definition: pose.cpp:150
void bsfm::CameraExtrinsics::CameraToWorld ( double  cx,
double  cy,
double  cz,
double *  wx,
double *  wy,
double *  wz 
) const

Definition at line 167 of file camera_extrinsics.cpp.

168  {
169  CHECK_NOTNULL(wx);
170  CHECK_NOTNULL(wy);
171  CHECK_NOTNULL(wz);
172 
173  const Vector4d c_h(cx, cy, cz, 1.0);
174  const Vector4d w_h = CameraExtrinsics::CameraToWorld().Project(c_h);
175 
176  *wx = w_h(0);
177  *wy = w_h(1);
178  *wz = w_h(2);
179 }
Vector4d Project(const Vector4d &)
Definition: pose.cpp:121
void bsfm::CameraExtrinsics::Rotate ( const Matrix3d &  delta)

Definition at line 93 of file camera_extrinsics.cpp.

93  {
94  const Matrix3d R = world_to_camera_.Rotation();
95  SetRotation(delta * R);
96 }
void SetRotation(const Matrix3d &rotation)
Matrix3d Rotation() const
Definition: pose.cpp:91
void bsfm::CameraExtrinsics::Rotate ( double  dphi,
double  dtheta,
double  dpsi 
)

Definition at line 98 of file camera_extrinsics.cpp.

98  {
99  Rotate(EulerAnglesToMatrix(dphi, dtheta, dpsi));
100 }
void Rotate(const Matrix3d &delta)
Matrix3d EulerAnglesToMatrix(double phi, double theta, double psi)
Definition: rotation.cpp:49
Matrix3d bsfm::CameraExtrinsics::Rotation ( ) const

Definition at line 102 of file camera_extrinsics.cpp.

102  {
103  return world_to_camera_.Rotation();
104 }
Matrix3d Rotation() const
Definition: pose.cpp:91
Matrix34d bsfm::CameraExtrinsics::Rt ( ) const

Definition at line 147 of file camera_extrinsics.cpp.

147  {
148  return WorldToCamera().Dehomogenize();
149 }
Matrix34d Dehomogenize()
Definition: pose.cpp:157
void bsfm::CameraExtrinsics::SetRotation ( const Matrix3d &  rotation)

Definition at line 80 of file camera_extrinsics.cpp.

80  {
81  const Vector3d t = world_to_camera_.Translation();
82  const Matrix3d R = world_to_camera_.Rotation();
83  const Vector3d c = -R.transpose() * t;
84 
85  world_to_camera_.SetRotation(rotation);
86  world_to_camera_.SetTranslation(-rotation * c);
87 }
Vector3d Translation() const
Definition: pose.cpp:96
void SetTranslation(const Vector3d &translation)
Definition: pose.cpp:110
Matrix3d Rotation() const
Definition: pose.cpp:91
void SetRotation(const Matrix3d &rotation)
Definition: pose.cpp:106
void bsfm::CameraExtrinsics::SetRotation ( double  phi,
double  theta,
double  psi 
)

Definition at line 89 of file camera_extrinsics.cpp.

89  {
90  SetRotation(EulerAnglesToMatrix(phi, theta, psi));
91 }
void SetRotation(const Matrix3d &rotation)
Matrix3d EulerAnglesToMatrix(double phi, double theta, double psi)
Definition: rotation.cpp:49
void bsfm::CameraExtrinsics::SetTranslation ( const Vector3d &  translation)

Definition at line 106 of file camera_extrinsics.cpp.

106  {
107  const Matrix3d R = world_to_camera_.Rotation();
108  world_to_camera_.SetTranslation(-R * translation);
109 }
void SetTranslation(const Vector3d &translation)
Definition: pose.cpp:110
Matrix3d Rotation() const
Definition: pose.cpp:91
void bsfm::CameraExtrinsics::SetTranslation ( double  wx,
double  wy,
double  wz 
)

Definition at line 111 of file camera_extrinsics.cpp.

111  {
112  SetTranslation(Vector3d(x, y, z));
113 }
void SetTranslation(const Vector3d &translation)
void bsfm::CameraExtrinsics::SetWorldToCamera ( const Pose world_to_camera)

Definition at line 62 of file camera_extrinsics.cpp.

62  {
63  world_to_camera_ = world_to_camera;
64 }
void bsfm::CameraExtrinsics::Translate ( const Vector3d &  delta)

Definition at line 115 of file camera_extrinsics.cpp.

115  {
116  const Vector3d t = world_to_camera_.Translation();
117  const Matrix3d R = world_to_camera_.Rotation();
118  Vector3d c = -R.transpose() * t;
119 
120  c += delta;
122 }
Vector3d Translation() const
Definition: pose.cpp:96
void SetTranslation(const Vector3d &translation)
Definition: pose.cpp:110
Matrix3d Rotation() const
Definition: pose.cpp:91
void bsfm::CameraExtrinsics::Translate ( double  dx,
double  dy,
double  dz 
)

Definition at line 124 of file camera_extrinsics.cpp.

124  {
125  Translate(Vector3d(dx, dy, dz));
126 }
void Translate(const Vector3d &delta)
void bsfm::CameraExtrinsics::TranslateX ( double  dx)

Definition at line 128 of file camera_extrinsics.cpp.

128  {
129  Translate(Vector3d(dx, 0, 0));
130 }
void Translate(const Vector3d &delta)
void bsfm::CameraExtrinsics::TranslateY ( double  dy)

Definition at line 132 of file camera_extrinsics.cpp.

132  {
133  Translate(Vector3d(0, dy, 0));
134 }
void Translate(const Vector3d &delta)
void bsfm::CameraExtrinsics::TranslateZ ( double  dz)

Definition at line 136 of file camera_extrinsics.cpp.

136  {
137  Translate(Vector3d(0, 0, dz));
138 }
void Translate(const Vector3d &delta)
Vector3d bsfm::CameraExtrinsics::Translation ( ) const

Definition at line 140 of file camera_extrinsics.cpp.

140  {
141  const Vector3d t = world_to_camera_.Translation();
142  const Matrix3d R = world_to_camera_.Rotation();
143  return -R.transpose() * t;
144 }
Vector3d Translation() const
Definition: pose.cpp:96
Matrix3d Rotation() const
Definition: pose.cpp:91
Pose bsfm::CameraExtrinsics::WorldToCamera ( ) const

Definition at line 67 of file camera_extrinsics.cpp.

67  {
68  return world_to_camera_;
69 }
void bsfm::CameraExtrinsics::WorldToCamera ( double  wx,
double  wy,
double  wz,
double *  cx,
double *  cy,
double *  cz 
) const

Definition at line 152 of file camera_extrinsics.cpp.

153  {
154  CHECK_NOTNULL(cx);
155  CHECK_NOTNULL(cy);
156  CHECK_NOTNULL(cz);
157 
158  const Vector4d w_h(wx, wy, wz, 1.0);
159  const Vector4d c_h = CameraExtrinsics::WorldToCamera().Project(w_h);
160 
161  *cx = c_h(0);
162  *cy = c_h(1);
163  *cz = c_h(2);
164 }
Vector4d Project(const Vector4d &)
Definition: pose.cpp:121

Member Data Documentation

Pose bsfm::CameraExtrinsics::world_to_camera_
private

Definition at line 122 of file camera_extrinsics.h.


The documentation for this class was generated from the following files: