949 int K = sMatrix.
Xdim() / 2;
952 DMatrix U, V, V1(3, K), V2(3, K);
955 sMatrix.
svd(U, W, V);
961 #define SORTED_INDEX(i) dMi(indexes, i) 962 #define SORTED_ELEM(M, i) dMi(M, SORTED_INDEX(i)) 976 for (
int i = 0;
i <
K; ++
i)
979 for (
int j = 0;
j < 3; ++
j)
986 std::cerr <<
"DEBUG_JM: V1: " << V1 << std::endl;
987 std::cerr <<
"DEBUG_JM: V2: " << V2 << std::endl;
993 for (
int k = 0;
k <
K; ++
k)
994 for (
int i = 0;
i < 3; ++
i)
995 for (
int j = 0;
j < 3; ++
j)
1009 int cols[6] = {0, 1, 2, 4, 5, 8};
1010 for (
int i = 0;
i < 6; ++
i)
1012 equations.getCol(cols[
i], W);
1013 trunc_equations.
setCol(i, W);
1018 for (
int i = 2; i < Kx3; i+=3)
1033 dMij(ATA, 0, 0) =
dMi(ATA_vec, 0);
1034 dMij(ATA, 0, 1) =
dMi(ATA_vec, 1);
1035 dMij(ATA, 0, 2) =
dMi(ATA_vec, 2);
1036 dMij(ATA, 1, 0) =
dMi(ATA_vec, 1);
1037 dMij(ATA, 1, 1) =
dMi(ATA_vec, 3);
1038 dMij(ATA, 1, 2) =
dMi(ATA_vec, 4);
1039 dMij(ATA, 2, 0) =
dMi(ATA_vec, 2);
1040 dMij(ATA, 2, 1) =
dMi(ATA_vec, 4);
1041 dMij(ATA, 2, 2) =
dMi(ATA_vec, 5);
1043 std::cerr <<
"DEBUG_JM: ATA: " << ATA << std::endl;
1049 std::cerr <<
"DEBUG_JM: A: " << A << std::endl;
1055 std::vector<DMatrix> rotations(K);
1058 auto idIt(MD.ids().begin());
1059 for (
int i = 0; i <
K; ++
i)
1074 double rot, tilt,
psi;
1082 std::cerr <<
"DEBUG_JM: R" << i <<
" : " << R << std::endl;
1084 MD.
write(
"imagesReconstruction.xmd");
#define VEC_SWAP(v, i, j, aux)
Matrix2D< T > transpose() const
Matrix1D< T > vectorProduct(const Matrix1D< T > &v1, const Matrix1D< T > &v2)
ql0001_ & k(htemp+1),(cvec+1),(atemp+1),(bj+1),(bl+1),(bu+1),(x+1),(clamda+1), &iout, infoqp, &zero,(w+1), &lenw,(iw+1), &leniw, &glob_grd.epsmac
void resizeNoCopy(int Ydim, int Xdim)
#define FOR_ALL_ELEMENTS_IN_MATRIX1D(v)
void cholesky(const Matrix2D< double > &M, Matrix2D< double > &L)
void setCol(size_t j, const Matrix1D< T > &v)
#define SORTED_ELEM(M, i)
void solveLinearSystem(PseudoInverseHelper &h, Matrix1D< double > &result)
void getCol(size_t j, Matrix1D< T > &v) const
void svd(Matrix2D< double > &U, Matrix1D< double > &W, Matrix2D< double > &V) const
double psi(const double x)
void write(const FileName &fn) const
void Euler_matrix2angles(const Matrix2D< double > &A, double &alpha, double &beta, double &gamma, bool homogeneous)
void resizeNoCopy(int Xdim)