25 throw std::invalid_argument(
"Null scene given");
26 if (viewports ==
nullptr)
27 throw std::invalid_argument(
"No viewports given");
33 viewports->resize(views.size());
35 std::size_t num_views = viewports->size();
36 std::size_t num_done = 0;
37 std::size_t total_features = 0;
40#pragma omp parallel for schedule(dynamic,1)
41 for (std::size_t i = 0; i < views.size(); ++i)
46 float percent = (num_done * 1000 / num_views) / 10.0f;
47 std::cout <<
"\rDetecting features, view " << num_done <<
" of "
48 << num_views <<
" (" << percent <<
"%)..." << std::flush;
51 if (views[i] ==
nullptr)
56 (this->opts.image_embedding);
62 while (this->opts.max_image_size > 0
63 && image->width() * image->height() > this->opts.max_image_size)
64 image = mve::image::rescale_half_size<uint8_t>(image);
67 Viewport* viewport = &viewports->at(i);
76 std::cout <<
"\rView ID "
78 << image->width() <<
"x" << image->height() <<
"), "
80 <<
", took " << timer.
get_elapsed() <<
" ms." << std::endl;
86 view->cache_cleanup();
89 std::cout <<
"\rComputed " << total_features <<
" features "
90 <<
"for " << num_views <<
" views (average "
91 << (total_features / num_views) <<
")." << std::endl;
std::shared_ptr< Image< T > > Ptr
std::shared_ptr< Scene > Ptr
std::vector< View::Ptr > ViewList
std::shared_ptr< View > Ptr
std::vector< math::Vec2f > positions
Per-feature image position.
void compute_features(mve::ByteImage::Ptr image)
Computes the features specified in the options.
void set_options(Options const &options)
void normalize_feature_positions(float px, float py)
Normalizes the features positions w.r.t.
Cross-platform high-resolution real-time timer.
std::size_t get_elapsed(void) const
Returns the milli seconds since last reset.
std::vector< Viewport > ViewportList
The list of all viewports considered for bundling.
std::string get_filled(T const &value, int width, char fill='0')
Returns a string filled to the left to a length of 'width' chars.
#define SFM_BUNDLER_NAMESPACE_END
#define SFM_BUNDLER_NAMESPACE_BEGIN
#define SFM_NAMESPACE_END
#define SFM_NAMESPACE_BEGIN
Per-viewport information.
float principal_point[2]
Principal point parameter.
FeatureSet features
Per-feature information.