26#ifndef LIBMV_MULTIVIEW_NVIEWTRIANGULATION_H
27#define LIBMV_MULTIVIEW_NVIEWTRIANGULATION_H
39 const vector<Matrix<T, 3, 4>>& Ps,
41 int nviews =
x.cols();
42 assert(nviews == Ps.size());
44 Matrix<T, Dynamic, Dynamic> design(3 * nviews, 4 + nviews);
45 design.setConstant(0.0);
46 for (
int i = 0;
i < nviews;
i++) {
47 design.template block<3, 4>(3 *
i, 0) = -Ps[
i];
48 design(3 *
i + 0, 4 +
i) =
x(0,
i);
49 design(3 *
i + 1, 4 +
i) =
x(1,
i);
50 design(3 *
i + 2, 4 +
i) = 1.0;
52 Matrix<T, Dynamic, 1> X_and_alphas;
55 *
X = X_and_alphas.head(4);
65 const vector<Matrix<T, 3, 4>>& Ps,
67 int nviews =
x.cols();
68 assert(nviews == Ps.size());
70 Matrix<T, Dynamic, 4> design(2 * nviews, 4);
71 for (
int i = 0;
i < nviews;
i++) {
#define assert(assertion)
double Nullspace(TMat *A, TVec *nullspace)
Mat23 SkewMatMinimal(const Vec2 &x)
void NViewTriangulate(const Matrix< T, 2, Dynamic > &x, const vector< Matrix< T, 3, 4 > > &Ps, Matrix< T, 4, 1 > *X)
std::vector< ElementType, Eigen::aligned_allocator< ElementType > > vector
void NViewTriangulateAlgebraic(const Matrix< T, 2, Dynamic > &x, const vector< Matrix< T, 3, 4 > > &Ps, Matrix< T, 4, 1 > *X)