Download include/colmap/base/database_cache.h from camenduru/ceres-solver: direct link, hf CLI and curl.
- Browser
- Download file 5.59 kB
-
https://huggingface.co/camenduru/ceres-solver/resolve/main/include/colmap/base/database_cache.h
- Command line
-
hf download hf://camenduru/ceres-solver/include/colmap/base/database_cache.h
-
curl -L -o database_cache.h https://huggingface.co/camenduru/ceres-solver/resolve/main/include/colmap/base/database_cache.h
5.59 kB
| // Copyright (c) 2022, ETH Zurich and UNC Chapel Hill. | |
| // All rights reserved. | |
| // | |
| // Redistribution and use in source and binary forms, with or without | |
| // modification, are permitted provided that the following conditions are met: | |
| // | |
| // * Redistributions of source code must retain the above copyright | |
| // notice, this list of conditions and the following disclaimer. | |
| // | |
| // * Redistributions in binary form must reproduce the above copyright | |
| // notice, this list of conditions and the following disclaimer in the | |
| // documentation and/or other materials provided with the distribution. | |
| // | |
| // * Neither the name of ETH Zurich and UNC Chapel Hill nor the names of | |
| // its contributors may be used to endorse or promote products derived | |
| // from this software without specific prior written permission. | |
| // | |
| // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" | |
| // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | |
| // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | |
| // ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE | |
| // LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR | |
| // CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF | |
| // SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS | |
| // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN | |
| // CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) | |
| // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE | |
| // POSSIBILITY OF SUCH DAMAGE. | |
| // | |
| // Author: Johannes L. Schoenberger (jsch-at-demuc-dot-de) | |
| namespace colmap { | |
| // A class that caches the contents of the database in memory, used to quickly | |
| // create new reconstruction instances when multiple models are reconstructed. | |
| class DatabaseCache { | |
| public: | |
| DatabaseCache(); | |
| // Get number of objects. | |
| inline size_t NumCameras() const; | |
| inline size_t NumImages() const; | |
| // Get specific objects. | |
| 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; | |
| // Get all objects. | |
| inline const EIGEN_STL_UMAP(camera_t, class Camera) & Cameras() const; | |
| inline const EIGEN_STL_UMAP(image_t, class Image) & Images() const; | |
| // Check whether specific object exists. | |
| inline bool ExistsCamera(const camera_t camera_id) const; | |
| inline bool ExistsImage(const image_t image_id) const; | |
| // Get reference to correspondence graph. | |
| inline const class CorrespondenceGraph& CorrespondenceGraph() const; | |
| // Manually add data to cache. | |
| void AddCamera(class Camera camera); | |
| void AddImage(class Image image); | |
| // Load cameras, images, features, and matches from database. | |
| // | |
| // @param database Source database from which to load data. | |
| // @param min_num_matches Only load image pairs with a minimum number | |
| // of matches. | |
| // @param ignore_watermarks Whether to ignore watermark image pairs. | |
| // @param image_names Whether to use only load the data for a subset | |
| // of the images. All images are used if empty. | |
| void Load(const Database& database, const size_t min_num_matches, | |
| const bool ignore_watermarks, | |
| const std::unordered_set<std::string>& image_names); | |
| // Find specific image by name. Note that this uses linear search. | |
| 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_; | |
| }; | |
| //////////////////////////////////////////////////////////////////////////////// | |
| // Implementation | |
| //////////////////////////////////////////////////////////////////////////////// | |
| 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_; | |
| } | |
| } // namespace colmap | |