OpenCV  3.4.4
Open Source Computer Vision
Modules | Classes | Enumerations | Functions
Images stitching

Modules

 Features Finding and Images Matching
 
 Rotation Estimation
 
 Autocalibration
 
 Images Warping
 
 Seam Estimation
 
 Exposure Compensation
 
 Image Blenders
 

Classes

struct  cv::detail::CameraParams
 Describes camera parameters. More...
 
class  cv::detail::DisjointSets
 
class  cv::detail::Graph
 
struct  cv::detail::GraphEdge
 
class  cv::Stitcher
 High level image stitcher. More...
 
class  cv::detail::Timelapser
 
class  cv::detail::TimelapserCrop
 

Enumerations

enum  {
  cv::detail::Timelapser::AS_IS,
  cv::detail::Timelapser::CROP
}
 
enum  { cv::Stitcher::ORIG_RESOL = -1 }
 
enum  cv::Stitcher::Mode {
  cv::Stitcher::PANORAMA = 0,
  cv::Stitcher::SCANS = 1
}
 
enum  cv::Stitcher::Status {
  cv::Stitcher::OK = 0,
  cv::Stitcher::ERR_NEED_MORE_IMGS = 1,
  cv::Stitcher::ERR_HOMOGRAPHY_EST_FAIL = 2,
  cv::Stitcher::ERR_CAMERA_PARAMS_ADJUST_FAIL = 3
}
 

Functions

 cv::detail::GraphEdge::GraphEdge (int from, int to, float weight)
 
Ptr< Stitcher > cv::createStitcher (bool try_use_gpu=false)
 
Ptr< Stitcher > cv::createStitcherScans (bool try_use_gpu=false)
 
bool cv::detail::overlapRoi (Point tl1, Point tl2, Size sz1, Size sz2, Rect &roi)
 
Rect cv::detail::resultRoi (const std::vector< Point > &corners, const std::vector< UMat > &images)
 
Rect cv::detail::resultRoi (const std::vector< Point > &corners, const std::vector< Size > &sizes)
 
Rect cv::detail::resultRoiIntersection (const std::vector< Point > &corners, const std::vector< Size > &sizes)
 
Point cv::detail::resultTl (const std::vector< Point > &corners)
 
void cv::detail::selectRandomSubset (int count, int size, std::vector< int > &subset)
 
int & cv::detail::stitchingLogLevel ()
 

Detailed Description

This figure illustrates the stitching module pipeline implemented in the Stitcher class. Using that class it's possible to configure/remove some steps, i.e. adjust the stitching pipeline according to the particular needs. All building blocks from the pipeline are available in the detail namespace, one can combine and use them separately.

The implemented stitching pipeline is very similar to the one proposed in [26] .

StitchingPipeline.jpg
stitching pipeline

Camera models

There are currently 2 camera models implemented in stitching pipeline.

Homography model is useful for creating photo panoramas captured by camera, while affine-based model can be used to stitch scans and object captured by specialized devices. Use cv::Stitcher::create to get preconfigured pipeline for one of those models.

Note
Certain detailed settings of cv::Stitcher might not make sense. Especially you should not mix classes implementing affine model and classes implementing Homography model, as they work with different transformations.

Enumeration Type Documentation

anonymous enum
Enumerator
AS_IS 
CROP 
anonymous enum
Enumerator
ORIG_RESOL 
Enumerator
PANORAMA 

Mode for creating photo panoramas. Expects images under perspective transformation and projects resulting pano to sphere.

See also
detail::BestOf2NearestMatcher SphericalWarper
SCANS 

Mode for composing scans. Expects images under affine transformation does not compensate exposure by default.

See also
detail::AffineBestOf2NearestMatcher AffineWarper
Enumerator
OK 
ERR_NEED_MORE_IMGS 
ERR_HOMOGRAPHY_EST_FAIL 
ERR_CAMERA_PARAMS_ADJUST_FAIL 

Function Documentation

cv::detail::GraphEdge::GraphEdge ( int  from,
int  to,
float  weight 
)
inline
Ptr<Stitcher> cv::createStitcher ( bool  try_use_gpu = false)
Ptr<Stitcher> cv::createStitcherScans ( bool  try_use_gpu = false)
bool cv::detail::overlapRoi ( Point  tl1,
Point  tl2,
Size  sz1,
Size  sz2,
Rect roi 
)
Rect cv::detail::resultRoi ( const std::vector< Point > &  corners,
const std::vector< UMat > &  images 
)
Rect cv::detail::resultRoi ( const std::vector< Point > &  corners,
const std::vector< Size > &  sizes 
)
Rect cv::detail::resultRoiIntersection ( const std::vector< Point > &  corners,
const std::vector< Size > &  sizes 
)
Point cv::detail::resultTl ( const std::vector< Point > &  corners)
void cv::detail::selectRandomSubset ( int  count,
int  size,
std::vector< int > &  subset 
)
int& cv::detail::stitchingLogLevel ( )