Blender V4.3
euclidean_resection.h
Go to the documentation of this file.
1// Copyright (c) 2010 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_MULTIVIEW_EUCLIDEAN_RESECTION_H_
22#define LIBMV_MULTIVIEW_EUCLIDEAN_RESECTION_H_
23
26
27namespace libmv {
28namespace euclidean_resection {
29
32
33 // The "EPnP" algorithm by Lepetit et al.
34 // http://cvlab.epfl.ch/~lepetit/papers/lepetit_ijcv08.pdf
36
37 // The Procrustes PNP algorithm ("PPnP")
38 // http://www.diegm.uniud.it/fusiello/papers/3dimpvt12-b.pdf
40};
41
53bool EuclideanResection(const Mat2X& x_camera,
54 const Mat3X& X_world,
55 Mat3* R,
56 Vec3* t,
58
72bool EuclideanResection(const Mat& x_image,
73 const Mat3X& X_world,
74 const Mat3& K,
75 Mat3* R,
76 Vec3* t,
78
89void AbsoluteOrientation(const Mat3X& X, const Mat3X& Xp, Mat3* R, Vec3* t);
90
104void EuclideanResectionAnsarDaniilidis(const Mat2X& x_camera,
105 const Mat3X& X_world,
106 Mat3* R,
107 Vec3* t);
123bool EuclideanResectionEPnP(const Mat2X& x_camera,
124 const Mat3X& X_world,
125 Mat3* R,
126 Vec3* t);
127
141bool EuclideanResectionPPnP(const Mat2X& x_camera,
142 const Mat3X& X_world,
143 Mat3* R,
144 Vec3* t);
145
146} // namespace euclidean_resection
147} // namespace libmv
148
149#endif /* LIBMV_MULTIVIEW_EUCLIDEAN_RESECTION_H_ */
#define K(key)
#define X
#define R
bool EuclideanResection(const Mat2X &x_camera, const Mat3X &X_world, Mat3 *R, Vec3 *t, ResectionMethod method)
void AbsoluteOrientation(const Mat3X &X, const Mat3X &Xp, Mat3 *R, Vec3 *t)
bool EuclideanResectionEPnP(const Mat2X &x_camera, const Mat3X &X_world, Mat3 *R, Vec3 *t)
bool EuclideanResectionPPnP(const Mat2X &x_camera, const Mat3X &X_world, Mat3 *R, Vec3 *t)
void EuclideanResectionAnsarDaniilidis(const Mat2X &x_camera, const Mat3X &X_world, Mat3 *R, Vec3 *t)
Eigen::Matrix< double, 3, 3 > Mat3
Definition numeric.h:72
Eigen::MatrixXd Mat
Definition numeric.h:60
Eigen::Vector3d Vec3
Definition numeric.h:106
Eigen::Matrix< double, 3, Eigen::Dynamic > Mat3X
Definition numeric.h:92
Eigen::Matrix< double, 2, Eigen::Dynamic > Mat2X
Definition numeric.h:91