43#if defined(__APPLE__) && defined(nil)
46#include <boost/graph/graphviz.hpp>
85 bool optHFOV,
bool optB)
93 m_li1 = (i1 < i2) ? 0 : 1;
94 m_li2 = (i1 < i2) ? 1 : 0;
98 for (
size_t i = 0;
i <
m_cps.size();++
i)
126 if (optHFOV ||
optB) {
151 bool estimate(
const std::vector<const ControlPoint *> &
points, std::vector<double> & p)
const
166 for (
size_t i=0;
i <
points.size();
i++) {
239 DEBUG_DEBUG(
"Trafo i1 (0 " << x1 <<
" " << y1 <<
") -> ("<<
xt <<
" "<<
yt<<
") -> i2 (1 "<<
x2t<<
", "<<
y2t<<
"), real ("<<x2<<
", "<<y2<<
")")
276 bool optHFOV =
false;
339 for (UIntSet::const_iterator
it = imgs.begin();
it != imgs.end(); ++
it)
368 std::set<std::string> optvars;
383 for (
size_t i = 0;
i <
optPano->getNrOfImages(); ++
i)
402 for (CPVector::const_iterator
it = cps.begin();
it != cps.end(); ++
it) {
414 optPano.setOptimizeVector(optvars);
430 for (
int i = 0;
i < 5;
i++) {
453 variable_groups.getLenses().linkVariablePart(ImageVariableGroup::IVE_RadialDistortion,
i);
454 variable_groups.getLenses().linkVariablePart(ImageVariableGroup::IVE_RadialDistortionCenterShift,
i);
498 optPano.setOptimizeVector(optvars);
511 for (VariableMapVector::const_iterator
it = vars.begin() ;
it != vars.end(); ++
it)
540 optPano.setOptimizeVector(optvars);
550 for (VariableMapVector::const_iterator
it = vars.begin() ;
it != vars.end(); ++
it)
561 optPano.setOptimizeVector(optvars);
579 for (
unsigned i=0;
i <
optPano.getNrOfImages();
i++) {
580 std::set<std::string>
imgopt;
645 optvars.push_back(
imgopt);
declaration of functions to handle stacks and layers
!! from PTOptimise.h 1951
Somewhere to specify what variables belong to what.
const std::set< std::string > & m_opt
AutoOptimiseVisitor(PanoramaData *pano, const std::set< std::string > &optvec)
void Visit(const size_t vertex, const HuginBase::UIntSet &visitedNeighbors, const HuginBase::UIntSet &unvisitedNeighbors)
static void autoOptimise(PanoramaData &pano, bool optRoll=true)
@ RESPONSE_EMOR
empirical model of response
static void calcCtrlPntsRadiStats(const PanoramaData &pano, double &min, double &max, double &mean, double &var, double &q10, double &q90, const int &imgNr=-1)
static hugin_utils::FDiff2D calcFOV(const PanoramaData &panorama)
represents a control point
OptVarSpec(int img, std::string name)
double get(PanoramaData &pano) const
void set(PanoramaData &pano, double x) const
Estimator for RANSAC based adjustment of pairwise parameters.
bool leastSquaresEstimate(const std::vector< const ControlPoint * > &points, std::vector< double > &p) const
bool agree(std::vector< double > &p, const ControlPoint &cp) const
int numForEstimate() const
PanoramaData * m_localPano
std::vector< OptVarSpec > m_optvars
std::vector< std::set< std::string > > m_opt_second_pass
bool estimate(const std::vector< const ControlPoint * > &points, std::vector< double > &p) const
Perform exact estimate.
std::vector< double > m_initParams
PTOptEstimator(PanoramaData &pano, int i1, int i2, double maxError, bool optHFOV, bool optB)
std::vector< std::set< std::string > > m_opt_first_pass
virtual bool runAlgorithm()
calls PTools::optimize()
virtual void run()
runs the algorithm.
PanoramaData & o_panorama
virtual const PanoramaOptions & getOptions() const =0
returns the options for this panorama
virtual void setOptimizeVector(const OptimizeVector &optvec)=0
set optimize setting
virtual PanoramaData * getNewSubset(const UIntSet &imgs) const =0
virtual void updateVariable(unsigned int imgNr, const Variable &var)=0
update a single variable
virtual const CPVector & getCtrlPoints() const =0
get all control point of this Panorama
virtual const SrcPanoImage & getImage(std::size_t nr) const =0
get a panorama image, counting starts with 0
virtual void updateVariables(const VariableMapVector &vars)=0
Set the variables.
virtual PanoramaData * getUnlinkedSubset(UIntSetVector &imageGroups) const =0
virtual void setCtrlPoints(const CPVector &points)=0
set all control points (Ippei: Is this supposed to be 'add' method?)
virtual bool runAlgorithm()
calls PTools::optimize()
static std::vector< int > findInliers(PanoramaData &pano, int i1, int i2, double maxError, Mode mode=RPY)
std::vector< int > o_inliers
static void smartOptimize(PanoramaData &pano)
static OptimizeVector createOptVars(const PanoramaData &optPano, int mode, unsigned anchorImg=0)
helper function for optvar creation
All variables of a source image.
double getVar(const std::string &name) const
a variable has a value and a name.
abstract base functor for breadth first search in ImageGraph
class to work with images graphs created from a HuginBase::Panorama class it creates a graph based on...
static std::vector< const T * > compute(S ¶meters, std::vector< int > &inliers, const Estimator ¶mEstimator, const std::vector< T > &data, double desiredProbabilityForNoOutliers, double maximalOutlierPercentage)
Estimate the model parameters using the RanSac framework.
mainly consists of wrapper around the pano tools library, to assist in ressource management and to pr...
std::vector< VariableMap > VariableMapVector
std::vector< ControlPoint > CPVector
std::vector< std::set< std::string > > OptimizeVector
std::vector< UIntSet > UIntSetVector
std::set< unsigned int > UIntSet
std::vector< UIntSet > getHDRStacks(const PanoramaData &pano, UIntSet allImgs, PanoramaOptions opts)
returns vector of set of output stacks
Generic implementation of the RanSaC algorithm.
void fill_set(_Container &c, typename _Container::key_type begin, typename _Container::key_type end)
const Map::mapped_type & const_map_get(const Map &m, const typename Map::key_type &key)
std::vector< deghosting::BImagePtr > threshold(const std::vector< deghosting::FImagePtr > &inputImages, const double threshold, const uint16_t flags)
Threshold function used for creating alpha masks for images.