17GlobalViewSelection::GlobalViewSelection(
18 std::vector<SingleView::Ptr>
const& views,
28 for (std::size_t i = 0; i < views.size(); ++i)
29 if (views[i] ==
nullptr)
40 float maxBenefit = 0.f;
41 std::size_t maxView = 0;
43 for (std::size_t i = 0; i < views.size(); ++i)
48 float benefit = benefitFromView(i);
49 if (benefit > maxBenefit) {
63GlobalViewSelection::benefitFromView(std::size_t i)
68 std::vector<std::size_t> nFeatIDs = tmpV->getFeatureIndices();
72 for (std::size_t k = 0; k < nFeatIDs.size(); ++k) {
76 float plx =
parallax(ftPos, refV, tmpV);
78 score *=
sqr(plx / 10.f);
80 float mfp = refV->footPrintScaled(ftPos);
81 float nfp = tmpV->footPrint(ftPos);
82 float ratio = mfp / nfp;
89 IndexSet::const_iterator citV;
91 if (!views[*citV]->seesFeature(nFeatIDs[k])) {
94 plx =
parallax(ftPos, views[*citV], tmpV);
96 score *=
sqr(plx / 10.f);
Vector class for arbitrary dimensions and types.
std::vector< Feature3D > Features
std::shared_ptr< SingleView > Ptr
Settings const & settings
std::vector< bool > available
#define MVS_NAMESPACE_BEGIN
#define MVS_NAMESPACE_END
float parallax(math::Vec3f p, mvs::SingleView::Ptr v1, mvs::SingleView::Ptr v2)
Computes the parallax between two views with respect to some 3D point p.
std::size_t refViewNr
The reference view ID to reconstruct.