|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#ifndef COLMAP_SRC_BASE_DATABASE_CACHE_H_ |
|
#define COLMAP_SRC_BASE_DATABASE_CACHE_H_ |
|
|
|
#include <string> |
|
#include <unordered_map> |
|
#include <unordered_set> |
|
#include <vector> |
|
|
|
#include <Eigen/Core> |
|
|
|
#include "base/camera.h" |
|
#include "base/camera_models.h" |
|
#include "base/correspondence_graph.h" |
|
#include "base/database.h" |
|
#include "base/image.h" |
|
#include "util/alignment.h" |
|
#include "util/types.h" |
|
|
|
namespace colmap { |
|
|
|
|
|
|
|
class DatabaseCache { |
|
public: |
|
DatabaseCache(); |
|
|
|
|
|
inline size_t NumCameras() const; |
|
inline size_t NumImages() const; |
|
|
|
|
|
inline class Camera& Camera(const camera_t camera_id); |
|
inline const class Camera& Camera(const camera_t camera_id) const; |
|
inline class Image& Image(const image_t image_id); |
|
inline const class Image& Image(const image_t image_id) const; |
|
|
|
|
|
inline const EIGEN_STL_UMAP(camera_t, class Camera) & Cameras() const; |
|
inline const EIGEN_STL_UMAP(image_t, class Image) & Images() const; |
|
|
|
|
|
inline bool ExistsCamera(const camera_t camera_id) const; |
|
inline bool ExistsImage(const image_t image_id) const; |
|
|
|
|
|
inline const class CorrespondenceGraph& CorrespondenceGraph() const; |
|
|
|
|
|
void AddCamera(class Camera camera); |
|
void AddImage(class Image image); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void Load(const Database& database, const size_t min_num_matches, |
|
const bool ignore_watermarks, |
|
const std::unordered_set<std::string>& image_names); |
|
|
|
|
|
const class Image* FindImageWithName(const std::string& name) const; |
|
|
|
private: |
|
class CorrespondenceGraph correspondence_graph_; |
|
|
|
EIGEN_STL_UMAP(camera_t, class Camera) cameras_; |
|
EIGEN_STL_UMAP(image_t, class Image) images_; |
|
}; |
|
|
|
|
|
|
|
|
|
|
|
size_t DatabaseCache::NumCameras() const { return cameras_.size(); } |
|
size_t DatabaseCache::NumImages() const { return images_.size(); } |
|
|
|
class Camera& DatabaseCache::Camera(const camera_t camera_id) { |
|
return cameras_.at(camera_id); |
|
} |
|
|
|
const class Camera& DatabaseCache::Camera(const camera_t camera_id) const { |
|
return cameras_.at(camera_id); |
|
} |
|
|
|
class Image& DatabaseCache::Image(const image_t image_id) { |
|
return images_.at(image_id); |
|
} |
|
|
|
const class Image& DatabaseCache::Image(const image_t image_id) const { |
|
return images_.at(image_id); |
|
} |
|
|
|
const EIGEN_STL_UMAP(camera_t, class Camera) & DatabaseCache::Cameras() const { |
|
return cameras_; |
|
} |
|
|
|
const EIGEN_STL_UMAP(image_t, class Image) & DatabaseCache::Images() const { |
|
return images_; |
|
} |
|
|
|
bool DatabaseCache::ExistsCamera(const camera_t camera_id) const { |
|
return cameras_.find(camera_id) != cameras_.end(); |
|
} |
|
|
|
bool DatabaseCache::ExistsImage(const image_t image_id) const { |
|
return images_.find(image_id) != images_.end(); |
|
} |
|
|
|
inline const class CorrespondenceGraph& DatabaseCache::CorrespondenceGraph() |
|
const { |
|
return correspondence_graph_; |
|
} |
|
|
|
} |
|
|
|
#endif |
|
|