00001 #ifndef SBA_BUNDLER_FILE_H
00002 #define SBA_BUNDLER_FILE_H
00003
00004 #ifndef EIGEN_USE_NEW_STDVECTOR
00005 #define EIGEN_USE_NEW_STDVECTOR
00006 #endif // EIGEN_USE_NEW_STDVECTOR
00007
00008
00009
00010 #include <Eigen/Eigen>
00011 #include <vector>
00012 #include <iostream>
00013 #include <fstream>
00014 #include <iomanip>
00015
00016 #include "sba/sba.h"
00017
00018 namespace Eigen
00019 {
00020 typedef Matrix<double,11,1> Vector11d;
00021 typedef Matrix<double,5,1> Vector5d;
00022 }
00023
00024 namespace sba
00025 {
00026
00036 int readBundlerFile(const char *filename, sba::SysSBA& sbaout);
00037
00049 int writeBundlerFile(const char *filename, sba::SysSBA& sbain);
00050
00052 int
00053 ParseBundlerFile(const char *fin,
00054 std::vector< Eigen::Vector3d, Eigen::aligned_allocator<Eigen::Vector3d> > &camp,
00055 std::vector< Eigen::Matrix3d, Eigen::aligned_allocator<Eigen::Matrix3d> > &camR,
00056 std::vector< Eigen::Vector3d, Eigen::aligned_allocator<Eigen::Vector3d> > &camt,
00057 std::vector< Eigen::Vector3d, Eigen::aligned_allocator<Eigen::Vector3d> > &ptp,
00058 std::vector< Eigen::Vector3i, Eigen::aligned_allocator<Eigen::Vector3i> > &ptc,
00059 std::vector< std::vector< Eigen::Vector4d, Eigen::aligned_allocator<Eigen::Vector4d> > > &ptt
00060 );
00061
00068 int readGraphFile(const char *filename, sba::SysSBA& sbaout);
00069
00071 int
00072 ParseGraphFile(const char *fin,
00073 std::vector< Eigen::Vector5d, Eigen::aligned_allocator<Eigen::Vector5d> > &camps,
00074 std::vector< Eigen::Vector4d, Eigen::aligned_allocator<Eigen::Vector4d> > &camqs,
00075 std::vector< Eigen::Vector3d, Eigen::aligned_allocator<Eigen::Vector3d> > &camts,
00076 std::vector< Eigen::Vector3d, Eigen::aligned_allocator<Eigen::Vector3d> > &ptps,
00077 std::vector< std::vector< Eigen::Vector11d, Eigen::aligned_allocator<Eigen::Vector11d> > > &ptts
00078 );
00079
00080
00082 void writeLourakisFile(const char *fname, SysSBA& sba);
00083 void writeA(const char *fname, SysSBA& sba);
00084 void writeSparseA(const char *fname, SysSBA& sba);
00085
00091 int writeGraphFile(const char *filename, SysSBA& sba, bool mono=false);
00092
00093
00101 int readSPAGraphFile(const char *filename, SysSPA& spaout);
00102
00104 int
00105 ParseSPAGraphFile(const char *fin,
00106 std::vector< Eigen::Vector3d, Eigen::aligned_allocator<Eigen::Vector3d> > &ntrans,
00107 std::vector< Eigen::Vector4d, Eigen::aligned_allocator<Eigen::Vector4d> > &nqrot,
00108 std::vector< Eigen::Vector2i, Eigen::aligned_allocator<Eigen::Vector2i> > &cind,
00109 std::vector< Eigen::Vector3d, Eigen::aligned_allocator<Eigen::Vector3d> > &ctrans,
00110 std::vector< Eigen::Vector4d, Eigen::aligned_allocator<Eigen::Vector4d> > &cqrot,
00111 std::vector< Eigen::Matrix<double,6,6>, Eigen::aligned_allocator<Eigen::Matrix<double,6,6> > > &cvar);
00112
00113 };
00114
00115 #endif