ACloudViewer  3.9.4
A Modern Library for 3D Data Processing
combination_sampler.h
Go to the documentation of this file.
1 // ----------------------------------------------------------------------------
2 // - CloudViewer: www.cloudViewer.org -
3 // ----------------------------------------------------------------------------
4 // Copyright (c) 2018-2024 www.cloudViewer.org
5 // SPDX-License-Identifier: MIT
6 // ----------------------------------------------------------------------------
7 
8 #pragma once
9 
10 #include "optim/sampler.h"
11 
12 namespace colmap {
13 
14 // Random sampler for RANSAC-based methods that generates unique samples.
15 //
16 // Note that a separate sampler should be instantiated per thread and it assumes
17 // that the input data is shuffled in advance.
18 class CombinationSampler : public Sampler {
19 public:
20  explicit CombinationSampler(const size_t num_samples);
21 
22  void Initialize(const size_t total_num_samples) override;
23 
24  size_t MaxNumSamples() override;
25 
26  std::vector<size_t> Sample() override;
27 
28 private:
29  const size_t num_samples_;
30  std::vector<size_t> total_sample_idxs_;
31 };
32 
33 } // namespace colmap
CombinationSampler(const size_t num_samples)
void Initialize(const size_t total_num_samples) override
std::vector< size_t > Sample() override