sba_file_io.h
Go to the documentation of this file.
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 //#define EIGEN_DEFAULT_IO_FORMAT Eigen::IOFormat(10)
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,     // input file
00054                   std::vector< Eigen::Vector3d, Eigen::aligned_allocator<Eigen::Vector3d> > &camp, // cam params <f d1 d2>
00055                   std::vector< Eigen::Matrix3d, Eigen::aligned_allocator<Eigen::Matrix3d> > &camR, // cam rotation matrix
00056                   std::vector< Eigen::Vector3d, Eigen::aligned_allocator<Eigen::Vector3d> > &camt, // cam translation
00057                   std::vector< Eigen::Vector3d, Eigen::aligned_allocator<Eigen::Vector3d> > &ptp, // point position
00058                   std::vector< Eigen::Vector3i, Eigen::aligned_allocator<Eigen::Vector3i> > &ptc, // point color
00059                   std::vector< std::vector< Eigen::Vector4d, Eigen::aligned_allocator<Eigen::Vector4d> > > &ptt // point tracks - each vector is <camera_index u v>
00060     );
00061 
00068   int readGraphFile(const char *filename, sba::SysSBA& sbaout);
00069 
00071   int 
00072   ParseGraphFile(const char *fin,       // input file
00073                   std::vector< Eigen::Vector5d, Eigen::aligned_allocator<Eigen::Vector5d> > &camps, // cam params <fx fy cx cy>
00074                   std::vector< Eigen::Vector4d, Eigen::aligned_allocator<Eigen::Vector4d> > &camqs, // cam rotation matrix
00075                   std::vector< Eigen::Vector3d, Eigen::aligned_allocator<Eigen::Vector3d> > &camts, // cam translation
00076                   std::vector< Eigen::Vector3d, Eigen::aligned_allocator<Eigen::Vector3d> > &ptps, // point position
00077                   std::vector< std::vector< Eigen::Vector11d, Eigen::aligned_allocator<Eigen::Vector11d> > > &ptts // point tracks - each vector is <camera_index u v>
00078     );
00079 
00080 
00082   void writeLourakisFile(const char *fname, SysSBA& sba);
00083   void writeA(const char *fname, SysSBA& sba); // save precision matrix
00084   void writeSparseA(const char *fname, SysSBA& sba); // save precision matrix in CSPARSE format
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, // input file
00106    std::vector< Eigen::Vector3d, Eigen::aligned_allocator<Eigen::Vector3d> > &ntrans, // node translation
00107    std::vector< Eigen::Vector4d, Eigen::aligned_allocator<Eigen::Vector4d> > &nqrot,  // node rotation
00108    std::vector< Eigen::Vector2i, Eigen::aligned_allocator<Eigen::Vector2i> > &cind,   // constraint indices
00109    std::vector< Eigen::Vector3d, Eigen::aligned_allocator<Eigen::Vector3d> > &ctrans, // constraint local translation 
00110    std::vector< Eigen::Vector4d, Eigen::aligned_allocator<Eigen::Vector4d> > &cqrot,  // constraint local rotation as quaternion
00111    std::vector< Eigen::Matrix<double,6,6>, Eigen::aligned_allocator<Eigen::Matrix<double,6,6> > > &cvar); // constraint covariance
00112 
00113 }; // namespace SBA
00114 
00115 #endif


sba
Author(s): Kurt Konolige, Helen Oleynikova
autogenerated on Thu Jan 2 2014 12:12:09