43
#ifndef OPENCV_STITCHING_MOTION_ESTIMATORS_HPP
 
44
#define OPENCV_STITCHING_MOTION_ESTIMATORS_HPP
 
46
#include "opencv2/core.hpp"
 
47
#include "matchers.hpp"
 
77
CV_WRAP_AS(apply)
bool
operator ()(
const
std::vector<ImageFeatures> &features,
 
78
const
std::vector<MatchesInfo> &pairwise_matches,
 
79
CV_OUT CV_IN_OUT std::vector<CameraParams> &cameras)
 
81
return
estimate(features, pairwise_matches, cameras);
 
93
virtual
bool
estimate(
const
std::vector<ImageFeatures> &features,
 
94
const
std::vector<MatchesInfo> &pairwise_matches,
 
95
CV_OUT std::vector<CameraParams> &cameras) = 0;
 
104
: is_focals_estimated_(is_focals_estimated) {}
 
107
virtual
bool
estimate(
const
std::vector<ImageFeatures> &features,
 
108
const
std::vector<MatchesInfo> &pairwise_matches,
 
109
std::vector<CameraParams> &cameras) CV_OVERRIDE;
 
111
bool
is_focals_estimated_;
 
126
virtual
bool
estimate(
const
std::vector<ImageFeatures> &features,
 
127
const
std::vector<MatchesInfo> &pairwise_matches,
 
128
std::vector<CameraParams> &cameras) CV_OVERRIDE;
 
136
CV_WRAP
const
Mat
refinementMask()
const
{
return
refinement_mask_.
clone(); }
 
137
CV_WRAP
void
setRefinementMask(
const
Mat
&mask)
 
139
CV_Assert(mask.type() == CV_8U && mask.size() ==
Size(3, 3));
 
140
refinement_mask_ = mask.clone();
 
143
CV_WRAP
double
confThresh()
const
{
return
conf_thresh_; }
 
144
CV_WRAP
void
setConfThresh(
double
conf_thresh) { conf_thresh_ = conf_thresh; }
 
146
CV_WRAP
TermCriteria
termCriteria() {
return
term_criteria_; }
 
147
CV_WRAP
void
setTermCriteria(
const
TermCriteria& term_criteria) { term_criteria_ = term_criteria; }
 
156
: num_images_(0), total_num_matches_(0),
 
157
num_params_per_cam_(num_params_per_cam),
 
158
num_errs_per_measurement_(num_errs_per_measurement),
 
159
features_(0), pairwise_matches_(0), conf_thresh_(0)
 
161
setRefinementMask(
Mat::ones(3, 3, CV_8U));
 
167
virtual
bool
estimate(
const
std::vector<ImageFeatures> &features,
 
168
const
std::vector<MatchesInfo> &pairwise_matches,
 
169
std::vector<CameraParams> &cameras) CV_OVERRIDE;
 
194
Mat
refinement_mask_;
 
197
int
total_num_matches_;
 
199
int
num_params_per_cam_;
 
200
int
num_errs_per_measurement_;
 
215
std::vector<std::pair<int,int> > edges_;
 
227
bool
estimate(
const
std::vector<ImageFeatures> &,
const
std::vector<MatchesInfo> &,
 
228
std::vector<CameraParams> &) CV_OVERRIDE
 
232
void
setUpInitialCameraParams(
const
std::vector<CameraParams> &) CV_OVERRIDE {}
 
233
void
obtainRefinedCameraParams(std::vector<CameraParams> &)
const
CV_OVERRIDE {}
 
234
void
calcError(
Mat
&) CV_OVERRIDE {}
 
235
void
calcJacobian(
Mat
&) CV_OVERRIDE {}
 
251
void
setUpInitialCameraParams(
const
std::vector<CameraParams> &cameras) CV_OVERRIDE;
 
252
void
obtainRefinedCameraParams(std::vector<CameraParams> &cameras)
const
CV_OVERRIDE;
 
253
void
calcError(
Mat
&err) CV_OVERRIDE;
 
254
void
calcJacobian(
Mat
&jac) CV_OVERRIDE;
 
271
void
setUpInitialCameraParams(
const
std::vector<CameraParams> &cameras) CV_OVERRIDE;
 
272
void
obtainRefinedCameraParams(std::vector<CameraParams> &cameras)
const
CV_OVERRIDE;
 
273
void
calcError(
Mat
&err) CV_OVERRIDE;
 
274
void
calcJacobian(
Mat
&jac) CV_OVERRIDE;
 
295
void
setUpInitialCameraParams(
const
std::vector<CameraParams> &cameras) CV_OVERRIDE;
 
296
void
obtainRefinedCameraParams(std::vector<CameraParams> &cameras)
const
CV_OVERRIDE;
 
297
void
calcError(
Mat
&err) CV_OVERRIDE;
 
298
void
calcJacobian(
Mat
&jac) CV_OVERRIDE;
 
319
void
setUpInitialCameraParams(
const
std::vector<CameraParams> &cameras) CV_OVERRIDE;
 
320
void
obtainRefinedCameraParams(std::vector<CameraParams> &cameras)
const
CV_OVERRIDE;
 
321
void
calcError(
Mat
&err) CV_OVERRIDE;
 
322
void
calcJacobian(
Mat
&jac) CV_OVERRIDE;
 
349
void
CV_EXPORTS_W
waveCorrect(CV_IN_OUT std::vector<Mat> &rmats, WaveCorrectKind kind);
 
356String CV_EXPORTS_W matchesGraphAsString(std::vector<String> &pathes, std::vector<MatchesInfo> &pairwise_matches,
 
357
float
conf_threshold);
 
359CV_EXPORTS_W std::vector<int>  leaveBiggestComponent(
 
360
std::vector<ImageFeatures> &features,
 
361
std::vector<MatchesInfo> &pairwise_matches,
 
362
float
conf_threshold);
 
364
void
CV_EXPORTS findMaxSpanningTree(
 
365
int
num_images,
const
std::vector<MatchesInfo> &pairwise_matches,
 
366
Graph
&span_tree, std::vector<int> ¢ers);
 
n-dimensional dense array class
Definition:
mat.hpp:802
 
static MatExpr ones(int rows, int cols, int type)
Returns an array of all 1's of the specified size and type.
 
Mat clone() const CV_NODISCARD
Creates a full copy of the array and the underlying data.
 
Template class for specifying the size of an image or rectangle.
Definition:
core/types.hpp:316
 
The class defining termination criteria for iterative algorithms.
Definition:
core/types.hpp:853
 
@ EPS
the desired accuracy or change in parameters at which the iterative algorithm stops
Definition:
core/types.hpp:862
 
@ COUNT
the maximum number of iterations or elements to compute
Definition:
core/types.hpp:860
 
Affine transformation based estimator.
Definition:
motion_estimators.hpp:122
 
Bundle adjuster that expects affine transformation represented in homogeneous coordinates in R for ea...
Definition:
motion_estimators.hpp:290
 
Bundle adjuster that expects affine transformation with 4 DOF represented in homogeneous coordinates ...
Definition:
motion_estimators.hpp:314
 
Base class for all camera parameters refinement methods.
Definition:
motion_estimators.hpp:134
 
virtual void calcJacobian(Mat &jac)=0
Calculates the cost function jacobian.
 
BundleAdjusterBase(int num_params_per_cam, int num_errs_per_measurement)
Construct a bundle adjuster base instance.
Definition:
motion_estimators.hpp:155
 
virtual void setUpInitialCameraParams(const std::vector< CameraParams > &cameras)=0
Sets initial camera parameter to refine.
 
virtual void calcError(Mat &err)=0
Calculates error vector.
 
virtual void obtainRefinedCameraParams(std::vector< CameraParams > &cameras) const =0
Gets the refined camera parameters.
 
Implementation of the camera parameters refinement algorithm which minimizes sum of the distances bet...
Definition:
motion_estimators.hpp:266
 
Implementation of the camera parameters refinement algorithm which minimizes sum of the reprojection ...
Definition:
motion_estimators.hpp:246
 
Rotation estimator base class.
Definition:
motion_estimators.hpp:66
 
virtual bool estimate(const std::vector< ImageFeatures > &features, const std::vector< MatchesInfo > &pairwise_matches, CV_OUT std::vector< CameraParams > &cameras)=0
This method must implement camera parameters estimation logic in order to make the wrapper detail::Es...
 
CV_WRAP_AS(apply) bool operator()(const std
Estimates camera parameters.
Definition:
motion_estimators.hpp:77
 
Homography based rotation estimator.
Definition:
motion_estimators.hpp:101
 
Stub bundle adjuster that does nothing.
Definition:
motion_estimators.hpp:222
 
#define CV_Assert(expr)
Checks a condition at runtime and throws exception if it fails
Definition:
base.hpp:342
 
CV_EXPORTS WaveCorrectKind autoDetectWaveCorrectKind(const std::vector< Mat > &rmats)
Tries to detect the wave correction kind depending on whether a panorama spans horizontally or vertic...
 
void CV_EXPORTS_W waveCorrect(CV_IN_OUT std::vector< Mat > &rmats, WaveCorrectKind kind)
Tries to make panorama more horizontal (or vertical).
 
"black box" representation of the file storage associated with a file on disk.
Definition:
aruco.hpp:75
 
Structure containing image keypoints and descriptors.
Definition:
matchers.hpp:59
 
Structure containing information about matches between two images.
Definition:
matchers.hpp:100