consistent naming scheme for SfM_Data

release/4.3a0
Varun Agrawal 2020-03-03 21:46:39 -05:00
parent 8dc46669bb
commit 719975022c
16 changed files with 48 additions and 45 deletions

View File

@ -31,7 +31,7 @@ void createExampleBALFile(const string& filename, const vector<Point3>& P,
Cal3Bundler()) { Cal3Bundler()) {
// Class that will gather all data // Class that will gather all data
SfM_data data; SfM_Data data;
// Create two cameras // Create two cameras
Rot3 aRb = Rot3::Yaw(M_PI_2); Rot3 aRb = Rot3::Yaw(M_PI_2);

View File

@ -49,7 +49,7 @@ int main(int argc, char* argv[]) {
filename = string(argv[1]); filename = string(argv[1]);
// Load the SfM data from file // Load the SfM data from file
SfM_data mydata; SfM_Data mydata;
readBAL(filename, mydata); readBAL(filename, mydata);
cout cout
<< boost::format("read %1% tracks on %2% cameras\n") << boost::format("read %1% tracks on %2% cameras\n")

View File

@ -42,7 +42,7 @@ int main (int argc, char* argv[]) {
if (argc>1) filename = string(argv[1]); if (argc>1) filename = string(argv[1]);
// Load the SfM data from file // Load the SfM data from file
SfM_data mydata; SfM_Data mydata;
readBAL(filename, mydata); readBAL(filename, mydata);
cout << boost::format("read %1% tracks on %2% cameras\n") % mydata.number_tracks() % mydata.number_cameras(); cout << boost::format("read %1% tracks on %2% cameras\n") % mydata.number_tracks() % mydata.number_cameras();

View File

@ -47,7 +47,7 @@ int main (int argc, char* argv[]) {
if (argc>1) filename = string(argv[1]); if (argc>1) filename = string(argv[1]);
// Load the SfM data from file // Load the SfM data from file
SfM_data mydata; SfM_Data mydata;
readBAL(filename, mydata); readBAL(filename, mydata);
cout << boost::format("read %1% tracks on %2% cameras\n") % mydata.number_tracks() % mydata.number_cameras(); cout << boost::format("read %1% tracks on %2% cameras\n") % mydata.number_tracks() % mydata.number_cameras();

View File

@ -2730,7 +2730,7 @@ class SfM_Track {
pair<size_t, size_t> SIFT_index(size_t idx) const; pair<size_t, size_t> SIFT_index(size_t idx) const;
}; };
class SfM_data { class SfM_Data {
size_t number_cameras() const; size_t number_cameras() const;
size_t number_tracks() const; size_t number_tracks() const;
//TODO(Varun) Need to fix issue #237 first before this can work //TODO(Varun) Need to fix issue #237 first before this can work

View File

@ -646,7 +646,7 @@ Pose3 gtsam2openGL(const Pose3& PoseGTSAM) {
} }
/* ************************************************************************* */ /* ************************************************************************* */
bool readBundler(const string& filename, SfM_data &data) { bool readBundler(const string& filename, SfM_Data &data) {
// Load the data file // Load the data file
ifstream is(filename.c_str(), ifstream::in); ifstream is(filename.c_str(), ifstream::in);
if (!is) { if (!is) {
@ -733,7 +733,7 @@ bool readBundler(const string& filename, SfM_data &data) {
} }
/* ************************************************************************* */ /* ************************************************************************* */
bool readBAL(const string& filename, SfM_data &data) { bool readBAL(const string& filename, SfM_Data &data) {
// Load the data file // Load the data file
ifstream is(filename.c_str(), ifstream::in); ifstream is(filename.c_str(), ifstream::in);
if (!is) { if (!is) {
@ -793,7 +793,7 @@ bool readBAL(const string& filename, SfM_data &data) {
} }
/* ************************************************************************* */ /* ************************************************************************* */
bool writeBAL(const string& filename, SfM_data &data) { bool writeBAL(const string& filename, SfM_Data &data) {
// Open the output file // Open the output file
ofstream os; ofstream os;
os.open(filename.c_str()); os.open(filename.c_str());
@ -866,12 +866,12 @@ bool writeBAL(const string& filename, SfM_data &data) {
return true; return true;
} }
bool writeBALfromValues(const string& filename, const SfM_data &data, bool writeBALfromValues(const string& filename, const SfM_Data &data,
Values& values) { Values& values) {
using Camera = PinholeCamera<Cal3Bundler>; using Camera = PinholeCamera<Cal3Bundler>;
SfM_data dataValues = data; SfM_Data dataValues = data;
// Store poses or cameras in SfM_data // Store poses or cameras in SfM_Data
size_t nrPoses = values.count<Pose3>(); size_t nrPoses = values.count<Pose3>();
if (nrPoses == dataValues.number_cameras()) { // we only estimated camera poses if (nrPoses == dataValues.number_cameras()) { // we only estimated camera poses
for (size_t i = 0; i < dataValues.number_cameras(); i++) { // for each camera for (size_t i = 0; i < dataValues.number_cameras(); i++) { // for each camera
@ -899,7 +899,7 @@ bool writeBALfromValues(const string& filename, const SfM_data &data,
} }
} }
// Store 3D points in SfM_data // Store 3D points in SfM_Data
size_t nrPoints = values.count<Point3>(), nrTracks = dataValues.number_tracks(); size_t nrPoints = values.count<Point3>(), nrTracks = dataValues.number_tracks();
if (nrPoints != nrTracks) { if (nrPoints != nrTracks) {
cout cout
@ -921,11 +921,11 @@ bool writeBALfromValues(const string& filename, const SfM_data &data,
} }
} }
// Write SfM_data to file // Write SfM_Data to file
return writeBAL(filename, dataValues); return writeBAL(filename, dataValues);
} }
Values initialCamerasEstimate(const SfM_data& db) { Values initialCamerasEstimate(const SfM_Data& db) {
Values initial; Values initial;
size_t i = 0; // NO POINTS: j = 0; size_t i = 0; // NO POINTS: j = 0;
for(const SfM_Camera& camera: db.cameras) for(const SfM_Camera& camera: db.cameras)
@ -933,7 +933,7 @@ Values initialCamerasEstimate(const SfM_data& db) {
return initial; return initial;
} }
Values initialCamerasAndPointsEstimate(const SfM_data& db) { Values initialCamerasAndPointsEstimate(const SfM_Data& db) {
Values initial; Values initial;
size_t i = 0, j = 0; size_t i = 0, j = 0;
for(const SfM_Camera& camera: db.cameras) for(const SfM_Camera& camera: db.cameras)

View File

@ -197,7 +197,7 @@ struct SfM_Track {
typedef PinholeCamera<Cal3Bundler> SfM_Camera; typedef PinholeCamera<Cal3Bundler> SfM_Camera;
/// Define the structure for SfM data /// Define the structure for SfM data
struct SfM_data { struct SfM_Data {
std::vector<SfM_Camera> cameras; ///< Set of cameras std::vector<SfM_Camera> cameras; ///< Set of cameras
std::vector<SfM_Track> tracks; ///< Sparse set of points std::vector<SfM_Track> tracks; ///< Sparse set of points
/// The number of camera poses /// The number of camera poses
@ -218,36 +218,39 @@ struct SfM_data {
} }
}; };
/// Alias for backwards compatibility
typedef SfM_Data SfM_data;
/** /**
* @brief This function parses a bundler output file and stores the data into a * @brief This function parses a bundler output file and stores the data into a
* SfM_data structure * SfM_Data structure
* @param filename The name of the bundler file * @param filename The name of the bundler file
* @param data SfM structure where the data is stored * @param data SfM structure where the data is stored
* @return true if the parsing was successful, false otherwise * @return true if the parsing was successful, false otherwise
*/ */
GTSAM_EXPORT bool readBundler(const std::string& filename, SfM_data &data); GTSAM_EXPORT bool readBundler(const std::string& filename, SfM_Data &data);
/** /**
* @brief This function parses a "Bundle Adjustment in the Large" (BAL) file and stores the data into a * @brief This function parses a "Bundle Adjustment in the Large" (BAL) file and stores the data into a
* SfM_data structure * SfM_Data structure
* @param filename The name of the BAL file * @param filename The name of the BAL file
* @param data SfM structure where the data is stored * @param data SfM structure where the data is stored
* @return true if the parsing was successful, false otherwise * @return true if the parsing was successful, false otherwise
*/ */
GTSAM_EXPORT bool readBAL(const std::string& filename, SfM_data &data); GTSAM_EXPORT bool readBAL(const std::string& filename, SfM_Data &data);
/** /**
* @brief This function writes a "Bundle Adjustment in the Large" (BAL) file from a * @brief This function writes a "Bundle Adjustment in the Large" (BAL) file from a
* SfM_data structure * SfM_Data structure
* @param filename The name of the BAL file to write * @param filename The name of the BAL file to write
* @param data SfM structure where the data is stored * @param data SfM structure where the data is stored
* @return true if the parsing was successful, false otherwise * @return true if the parsing was successful, false otherwise
*/ */
GTSAM_EXPORT bool writeBAL(const std::string& filename, SfM_data &data); GTSAM_EXPORT bool writeBAL(const std::string& filename, SfM_Data &data);
/** /**
* @brief This function writes a "Bundle Adjustment in the Large" (BAL) file from a * @brief This function writes a "Bundle Adjustment in the Large" (BAL) file from a
* SfM_data structure and a value structure (measurements are the same as the SfM input data, * SfM_Data structure and a value structure (measurements are the same as the SfM input data,
* while camera poses and values are read from Values) * while camera poses and values are read from Values)
* @param filename The name of the BAL file to write * @param filename The name of the BAL file to write
* @param data SfM structure where the data is stored * @param data SfM structure where the data is stored
@ -257,7 +260,7 @@ GTSAM_EXPORT bool writeBAL(const std::string& filename, SfM_data &data);
* @return true if the parsing was successful, false otherwise * @return true if the parsing was successful, false otherwise
*/ */
GTSAM_EXPORT bool writeBALfromValues(const std::string& filename, GTSAM_EXPORT bool writeBALfromValues(const std::string& filename,
const SfM_data &data, Values& values); const SfM_Data &data, Values& values);
/** /**
* @brief This function converts an openGL camera pose to an GTSAM camera pose * @brief This function converts an openGL camera pose to an GTSAM camera pose
@ -288,16 +291,16 @@ GTSAM_EXPORT Pose3 gtsam2openGL(const Pose3& PoseGTSAM);
/** /**
* @brief This function creates initial values for cameras from db * @brief This function creates initial values for cameras from db
* @param SfM_data * @param SfM_Data
* @return Values * @return Values
*/ */
GTSAM_EXPORT Values initialCamerasEstimate(const SfM_data& db); GTSAM_EXPORT Values initialCamerasEstimate(const SfM_Data& db);
/** /**
* @brief This function creates initial values for cameras and points from db * @brief This function creates initial values for cameras and points from db
* @param SfM_data * @param SfM_Data
* @return Values * @return Values
*/ */
GTSAM_EXPORT Values initialCamerasAndPointsEstimate(const SfM_data& db); GTSAM_EXPORT Values initialCamerasAndPointsEstimate(const SfM_Data& db);
} // namespace gtsam } // namespace gtsam

View File

@ -106,7 +106,7 @@ TEST( dataSet, Balbianello)
{ {
///< The structure where we will save the SfM data ///< The structure where we will save the SfM data
const string filename = findExampleDataFile("Balbianello"); const string filename = findExampleDataFile("Balbianello");
SfM_data mydata; SfM_Data mydata;
CHECK(readBundler(filename, mydata)); CHECK(readBundler(filename, mydata));
// Check number of things // Check number of things
@ -389,7 +389,7 @@ TEST( dataSet, readBAL_Dubrovnik)
{ {
///< The structure where we will save the SfM data ///< The structure where we will save the SfM data
const string filename = findExampleDataFile("dubrovnik-3-7-pre"); const string filename = findExampleDataFile("dubrovnik-3-7-pre");
SfM_data mydata; SfM_Data mydata;
CHECK(readBAL(filename, mydata)); CHECK(readBAL(filename, mydata));
// Check number of things // Check number of things
@ -444,7 +444,7 @@ TEST( dataSet, writeBAL_Dubrovnik)
{ {
///< Read a file using the unit tested readBAL ///< Read a file using the unit tested readBAL
const string filenameToRead = findExampleDataFile("dubrovnik-3-7-pre"); const string filenameToRead = findExampleDataFile("dubrovnik-3-7-pre");
SfM_data readData; SfM_Data readData;
readBAL(filenameToRead, readData); readBAL(filenameToRead, readData);
// Write readData to file filenameToWrite // Write readData to file filenameToWrite
@ -452,7 +452,7 @@ TEST( dataSet, writeBAL_Dubrovnik)
CHECK(writeBAL(filenameToWrite, readData)); CHECK(writeBAL(filenameToWrite, readData));
// Read what we wrote // Read what we wrote
SfM_data writtenData; SfM_Data writtenData;
CHECK(readBAL(filenameToWrite, writtenData)); CHECK(readBAL(filenameToWrite, writtenData));
// Check that what we read is the same as what we wrote // Check that what we read is the same as what we wrote
@ -492,7 +492,7 @@ TEST( dataSet, writeBALfromValues_Dubrovnik){
///< Read a file using the unit tested readBAL ///< Read a file using the unit tested readBAL
const string filenameToRead = findExampleDataFile("dubrovnik-3-7-pre"); const string filenameToRead = findExampleDataFile("dubrovnik-3-7-pre");
SfM_data readData; SfM_Data readData;
readBAL(filenameToRead, readData); readBAL(filenameToRead, readData);
Pose3 poseChange = Pose3(Rot3::Ypr(-M_PI/10, 0., -M_PI/10), gtsam::Point3(0.3,0.1,0.3)); Pose3 poseChange = Pose3(Rot3::Ypr(-M_PI/10, 0., -M_PI/10), gtsam::Point3(0.3,0.1,0.3));
@ -514,7 +514,7 @@ TEST( dataSet, writeBALfromValues_Dubrovnik){
writeBALfromValues(filenameToWrite, readData, value); writeBALfromValues(filenameToWrite, readData, value);
// Read the file we wrote // Read the file we wrote
SfM_data writtenData; SfM_Data writtenData;
readBAL(filenameToWrite, writtenData); readBAL(filenameToWrite, writtenData);
// Check that the reprojection errors are the same and the poses are correct // Check that the reprojection errors are the same and the poses are correct

View File

@ -34,7 +34,7 @@ gtsam::Rot3 cRb = gtsam::Rot3(bX, bZ, -bY).inverse();
namespace example1 { namespace example1 {
const string filename = findExampleDataFile("5pointExample1.txt"); const string filename = findExampleDataFile("5pointExample1.txt");
SfM_data data; SfM_Data data;
bool readOK = readBAL(filename, data); bool readOK = readBAL(filename, data);
Rot3 c1Rc2 = data.cameras[1].pose().rotation(); Rot3 c1Rc2 = data.cameras[1].pose().rotation();
Point3 c1Tc2 = data.cameras[1].pose().translation(); Point3 c1Tc2 = data.cameras[1].pose().translation();
@ -357,7 +357,7 @@ TEST (EssentialMatrixFactor3, minimization) {
namespace example2 { namespace example2 {
const string filename = findExampleDataFile("5pointExample2.txt"); const string filename = findExampleDataFile("5pointExample2.txt");
SfM_data data; SfM_Data data;
bool readOK = readBAL(filename, data); bool readOK = readBAL(filename, data);
Rot3 aRb = data.cameras[1].pose().rotation(); Rot3 aRb = data.cameras[1].pose().rotation();
Point3 aTb = data.cameras[1].pose().translation(); Point3 aTb = data.cameras[1].pose().translation();

View File

@ -42,7 +42,7 @@ using symbol_shorthand::P;
/* ************************************************************************* */ /* ************************************************************************* */
TEST(PinholeCamera, BAL) { TEST(PinholeCamera, BAL) {
string filename = findExampleDataFile("dubrovnik-3-7-pre"); string filename = findExampleDataFile("dubrovnik-3-7-pre");
SfM_data db; SfM_Data db;
bool success = readBAL(filename, db); bool success = readBAL(filename, db);
if (!success) throw runtime_error("Could not access file!"); if (!success) throw runtime_error("Could not access file!");

View File

@ -32,7 +32,7 @@ typedef GeneralSFMFactor<Camera, Point3> SfmFactor;
int main(int argc, char* argv[]) { int main(int argc, char* argv[]) {
// parse options and read BAL file // parse options and read BAL file
SfM_data db = preamble(argc, argv); SfM_Data db = preamble(argc, argv);
// Build graph using conventional GeneralSFMFactor // Build graph using conventional GeneralSFMFactor
NonlinearFactorGraph graph; NonlinearFactorGraph graph;

View File

@ -38,7 +38,7 @@ static bool gUseSchur = true;
static SharedNoiseModel gNoiseModel = noiseModel::Unit::Create(2); static SharedNoiseModel gNoiseModel = noiseModel::Unit::Create(2);
// parse options and read BAL file // parse options and read BAL file
SfM_data preamble(int argc, char* argv[]) { SfM_Data preamble(int argc, char* argv[]) {
// primitive argument parsing: // primitive argument parsing:
if (argc > 2) { if (argc > 2) {
if (strcmp(argv[1], "--colamd")) if (strcmp(argv[1], "--colamd"))
@ -48,7 +48,7 @@ SfM_data preamble(int argc, char* argv[]) {
} }
// Load BAL file // Load BAL file
SfM_data db; SfM_Data db;
string filename; string filename;
if (argc > 1) if (argc > 1)
filename = argv[argc - 1]; filename = argv[argc - 1];
@ -60,7 +60,7 @@ SfM_data preamble(int argc, char* argv[]) {
} }
// Create ordering and optimize // Create ordering and optimize
int optimize(const SfM_data& db, const NonlinearFactorGraph& graph, int optimize(const SfM_Data& db, const NonlinearFactorGraph& graph,
const Values& initial, bool separateCalibration = false) { const Values& initial, bool separateCalibration = false) {
using symbol_shorthand::P; using symbol_shorthand::P;

View File

@ -38,7 +38,7 @@ typedef PinholeCamera<Cal3Bundler> Camera;
int main(int argc, char* argv[]) { int main(int argc, char* argv[]) {
// parse options and read BAL file // parse options and read BAL file
SfM_data db = preamble(argc, argv); SfM_Data db = preamble(argc, argv);
AdaptAutoDiff<SnavelyProjection, 2, 9, 3> snavely; AdaptAutoDiff<SnavelyProjection, 2, 9, 3> snavely;

View File

@ -29,7 +29,7 @@ using namespace gtsam;
int main(int argc, char* argv[]) { int main(int argc, char* argv[]) {
// parse options and read BAL file // parse options and read BAL file
SfM_data db = preamble(argc, argv); SfM_Data db = preamble(argc, argv);
// Build graph using conventional GeneralSFMFactor // Build graph using conventional GeneralSFMFactor
NonlinearFactorGraph graph; NonlinearFactorGraph graph;

View File

@ -29,7 +29,7 @@ using namespace gtsam;
int main(int argc, char* argv[]) { int main(int argc, char* argv[]) {
// parse options and read BAL file // parse options and read BAL file
SfM_data db = preamble(argc, argv); SfM_Data db = preamble(argc, argv);
// Build graph using conventional GeneralSFMFactor // Build graph using conventional GeneralSFMFactor
NonlinearFactorGraph graph; NonlinearFactorGraph graph;

View File

@ -31,7 +31,7 @@ typedef SmartProjectionFactor<Camera> SfmFactor;
int main(int argc, char* argv[]) { int main(int argc, char* argv[]) {
// parse options and read BAL file // parse options and read BAL file
SfM_data db = preamble(argc, argv); SfM_Data db = preamble(argc, argv);
// Add smart factors to graph // Add smart factors to graph
NonlinearFactorGraph graph; NonlinearFactorGraph graph;