Blender V4.3
libmv/simple_pipeline/reconstruction.h
Go to the documentation of this file.
1// Copyright (c) 2011 libmv authors.
2//
3// Permission is hereby granted, free of charge, to any person obtaining a copy
4// of this software and associated documentation files (the "Software"), to
5// deal in the Software without restriction, including without limitation the
6// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
7// sell copies of the Software, and to permit persons to whom the Software is
8// furnished to do so, subject to the following conditions:
9//
10// The above copyright notice and this permission notice shall be included in
11// all copies or substantial portions of the Software.
12//
13// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
18// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
19// IN THE SOFTWARE.
20
21#ifndef LIBMV_SIMPLE_PIPELINE_RECONSTRUCTION_H_
22#define LIBMV_SIMPLE_PIPELINE_RECONSTRUCTION_H_
23
24#include "libmv/base/map.h"
25#include "libmv/base/vector.h"
27
28namespace libmv {
29
41 EuclideanCamera() : image(-1) {}
42 EuclideanCamera(const EuclideanCamera& c) : image(c.image), R(c.R), t(c.t) {}
43
44 int image;
47};
48
63
77 public:
78 // Default constructor starts with no cameras.
80
83
85
96 void InsertCamera(int image, const Mat3& R, const Vec3& t);
97
108 void InsertPoint(int track, const Vec3& X);
109
112 const EuclideanCamera* CameraForImage(int image) const;
113
116
118 EuclideanPoint* PointForTrack(int track);
119 const EuclideanPoint* PointForTrack(int track) const;
120
123
124 private:
125 // Indexed by frame number.
126 typedef map<int, EuclideanCamera> ImageToCameraMap;
127 ImageToCameraMap image_to_cameras_map_;
128
129 // Insxed by track.
131};
132
142 ProjectiveCamera() : image(-1) {}
143 ProjectiveCamera(const ProjectiveCamera& c) : image(c.image), P(c.P) {}
144
145 int image;
147};
148
163
177 public:
188 void InsertCamera(int image, const Mat34& P);
189
200 void InsertPoint(int track, const Vec4& X);
201
204 const ProjectiveCamera* CameraForImage(int image) const;
205
208
210 ProjectivePoint* PointForTrack(int track);
211 const ProjectivePoint* PointForTrack(int track) const;
212
215
216 private:
217 // Indexed by frame number.
218 typedef map<int, ProjectiveCamera> ImageToCameraMap;
219 ImageToCameraMap image_to_cameras_map_;
220
221 // Indexed by track.
223};
224
225} // namespace libmv
226
227#endif // LIBMV_SIMPLE_PIPELINE_RECONSTRUCTION_H_
#define X
vector< EuclideanCamera > AllCameras() const
Returns all cameras.
EuclideanPoint * PointForTrack(int track)
Returns a pointer to the point corresponding to track.
void InsertCamera(int image, const Mat3 &R, const Vec3 &t)
EuclideanReconstruction & operator=(const EuclideanReconstruction &other)
EuclideanCamera * CameraForImage(int image)
Returns a pointer to the camera corresponding to image.
vector< EuclideanPoint > AllPoints() const
Returns all points.
vector< ProjectivePoint > AllPoints() const
Returns all points.
vector< ProjectiveCamera > AllCameras() const
Returns all cameras.
ProjectivePoint * PointForTrack(int track)
Returns a pointer to the point corresponding to track.
ProjectiveCamera * CameraForImage(int image)
Returns a pointer to the camera corresponding to image.
#define R
Eigen::Vector4d Vec4
Definition numeric.h:107
Eigen::Matrix< double, 3, 3 > Mat3
Definition numeric.h:72
Eigen::Matrix< double, 3, 4 > Mat34
Definition numeric.h:73
Eigen::Vector3d Vec3
Definition numeric.h:106