32 #define TEST_NAME "base/camera_rig"
44 BOOST_CHECK_EQUAL(camera_rig.
HasCamera(0),
false);
52 BOOST_CHECK_EQUAL(camera_rig.
HasCamera(0),
false);
55 Eigen::Vector3d(0, 1, 2));
60 BOOST_CHECK_EQUAL(camera_rig.
HasCamera(0),
true);
62 BOOST_CHECK_EQUAL(camera_rig.
RelativeTvec(0), Eigen::Vector3d(0, 1, 2));
65 Eigen::Vector3d(3, 4, 5));
69 BOOST_CHECK_EQUAL(camera_rig.
HasCamera(0),
true);
70 BOOST_CHECK_EQUAL(camera_rig.
HasCamera(1),
true);
72 BOOST_CHECK_EQUAL(camera_rig.
RelativeTvec(1), Eigen::Vector3d(3, 4, 5));
80 BOOST_CHECK_EQUAL(camera_rig.
Snapshots().size(), 0);
83 Eigen::Vector3d(0, 1, 2));
85 Eigen::Vector3d(3, 4, 5));
88 BOOST_CHECK_EQUAL(camera_rig.
Snapshots().size(), 0);
90 const std::vector<image_t> image_ids1 = {0, 1};
94 BOOST_CHECK_EQUAL(camera_rig.
Snapshots().size(), 1);
95 BOOST_CHECK_EQUAL(camera_rig.
Snapshots()[0].size(), 2);
96 BOOST_CHECK_EQUAL(camera_rig.
Snapshots()[0][0], 0);
97 BOOST_CHECK_EQUAL(camera_rig.
Snapshots()[0][1], 1);
99 const std::vector<image_t> image_ids2 = {2, 3};
101 BOOST_CHECK_EQUAL(camera_rig.
NumCameras(), 2);
103 BOOST_CHECK_EQUAL(camera_rig.
Snapshots().size(), 2);
104 BOOST_CHECK_EQUAL(camera_rig.
Snapshots()[0].size(), 2);
105 BOOST_CHECK_EQUAL(camera_rig.
Snapshots()[0][0], 0);
106 BOOST_CHECK_EQUAL(camera_rig.
Snapshots()[0][1], 1);
107 BOOST_CHECK_EQUAL(camera_rig.
Snapshots()[1].size(), 2);
108 BOOST_CHECK_EQUAL(camera_rig.
Snapshots()[1][0], 2);
109 BOOST_CHECK_EQUAL(camera_rig.
Snapshots()[1][1], 3);
115 Eigen::Vector3d(0, 1, 2));
117 Eigen::Vector3d(3, 4, 5));
118 const std::vector<image_t> image_ids1 = {0, 1};
120 const std::vector<image_t> image_ids2 = {2, 3};
156 camera_rig.
Check(reconstruction);
162 Eigen::Vector3d(0, 0, 0));
164 Eigen::Vector3d(2, 4, 6));
165 const std::vector<image_t> image_ids1 = {0, 1};
184 image1.
SetTvec(Eigen::Vector3d(0, 0, 0));
191 image2.
SetTvec(Eigen::Vector3d(1, 2, 3));
195 camera_rig.
Check(reconstruction);
197 BOOST_CHECK_EQUAL(camera_rig.
ComputeScale(reconstruction), 2.0);
199 reconstruction.
Image(1).
SetTvec(Eigen::Vector3d(0, 0, 0));
206 Eigen::Vector3d(0, 0, 0));
208 Eigen::Vector3d(0, 0, 0));
209 const std::vector<image_t> image_ids1 = {0, 1};
228 image1.
SetTvec(Eigen::Vector3d(0, 0, 0));
235 image2.
SetTvec(Eigen::Vector3d(1, 2, 3));
239 camera_rig.
Check(reconstruction);
242 BOOST_CHECK_EQUAL(camera_rig.
RelativeTvec(0), Eigen::Vector3d(0, 0, 0));
244 BOOST_CHECK_EQUAL(camera_rig.
RelativeTvec(1), Eigen::Vector3d(1, 2, 3));
246 const std::vector<image_t> image_ids2 = {2, 3};
253 image3.
SetTvec(Eigen::Vector3d(0, 0, 0));
260 image4.
SetTvec(Eigen::Vector3d(2, 4, 6));
263 camera_rig.
Check(reconstruction);
266 BOOST_CHECK_EQUAL(camera_rig.
RelativeTvec(0), Eigen::Vector3d(0, 0, 0));
268 BOOST_CHECK_EQUAL(camera_rig.
RelativeTvec(1), Eigen::Vector3d(1.5, 3, 4.5));
270 const std::vector<image_t> image_ids3 = {4};
277 image5.
SetTvec(Eigen::Vector3d(0, 0, 0));
280 camera_rig.
Check(reconstruction);
283 BOOST_CHECK_EQUAL(camera_rig.
RelativeTvec(0), Eigen::Vector3d(0, 0, 0));
285 BOOST_CHECK_EQUAL(camera_rig.
RelativeTvec(1), Eigen::Vector3d(1.5, 3, 4.5));
291 Eigen::Vector3d(0, 1, 2));
293 Eigen::Vector3d(3, 4, 5));
294 const std::vector<image_t> image_ids1 = {0, 1};
313 image1.
SetTvec(Eigen::Vector3d(0, 0, 0));
320 image2.
SetTvec(Eigen::Vector3d(3, 3, 3));
324 camera_rig.
Check(reconstruction);
326 Eigen::Vector4d abs_qvec;
327 Eigen::Vector3d abs_tvec;
330 BOOST_CHECK_EQUAL(abs_tvec, Eigen::Vector3d(0, -1, -2));
BOOST_AUTO_TEST_CASE(TestEmpty)
void SetRefCameraId(const camera_t camera_id)
void Check(const Reconstruction &reconstruction) const
void AddCamera(const camera_t camera_id, const Eigen::Vector4d &rel_qvec, const Eigen::Vector3d &rel_tvec)
bool HasCamera(const camera_t camera_id) const
size_t NumSnapshots() const
Eigen::Vector3d & RelativeTvec(const camera_t camera_id)
void AddSnapshot(const std::vector< image_t > &image_ids)
size_t NumCameras() const
bool ComputeRelativePoses(const Reconstruction &reconstruction)
std::vector< camera_t > GetCameraIds() const
const std::vector< std::vector< image_t > > & Snapshots() const
Eigen::Vector4d & RelativeQvec(const camera_t camera_id)
void ComputeAbsolutePose(const size_t snapshot_idx, const Reconstruction &reconstruction, Eigen::Vector4d *abs_qvec, Eigen::Vector3d *abs_tvec) const
double ComputeScale(const Reconstruction &reconstruction) const
void InitializeWithName(const std::string &model_name, const double focal_length, const size_t width, const size_t height)
camera_t CameraId() const
void SetCameraId(const camera_t camera_id)
void SetImageId(const image_t image_id)
void SetCameraId(const camera_t camera_id)
void SetQvec(const Eigen::Vector4d &qvec)
void SetTvec(const Eigen::Vector3d &tvec)
void AddImage(const class Image &image)
void AddCamera(const class Camera &camera)
const class Image & Image(const image_t image_id) const
Eigen::Vector4d ComposeIdentityQuaternion()
bool IsNaN(const float x)