43#ifndef OPENCV_STITCHING_EXPOSURE_COMPENSATE_HPP 
   44#define OPENCV_STITCHING_EXPOSURE_COMPENSATE_HPP 
   47#  warning Detected Apple 'NO' macro definition, it can cause build conflicts. Please, include this header before any Apple headers. 
   50#include "opencv2/core.hpp" 
   66    enum { NO, GAIN, GAIN_BLOCKS, CHANNELS, CHANNELS_BLOCKS };
 
   75    CV_WRAP 
void feed(
const std::vector<Point> &corners, 
const std::vector<UMat> &images,
 
   76        const std::vector<UMat> &masks);
 
   78    virtual void feed(
const std::vector<Point> &corners, 
const std::vector<UMat> &images,
 
   79        const std::vector<std::pair<UMat, uchar> > &masks) = 0;
 
   88    CV_WRAP 
virtual void getMatGains(CV_OUT std::vector<Mat>& ) {
CV_Error(Error::StsInternal, 
"");};
 
   89    CV_WRAP 
virtual void setMatGains(std::vector<Mat>& ) { 
CV_Error(Error::StsInternal, 
""); };
 
   90    CV_WRAP 
void setUpdateGain(
bool b) { updateGain = b; };
 
   91    CV_WRAP 
bool getUpdateGain() { 
return updateGain; };
 
  101    void feed(
const std::vector<Point> &, 
const std::vector<UMat> &,
 
  102              const std::vector<std::pair<UMat,uchar> > &) CV_OVERRIDE { }
 
  104    CV_WRAP 
void getMatGains(CV_OUT std::vector<Mat>& umv) CV_OVERRIDE { umv.clear(); 
return; };
 
  105    CV_WRAP 
void setMatGains(std::vector<Mat>& umv) CV_OVERRIDE { umv.clear(); 
return; };
 
  118            : nr_feeds_(nr_feeds), similarity_threshold_(1) {}
 
  119    void feed(
const std::vector<Point> &corners, 
const std::vector<UMat> &images,
 
  120              const std::vector<std::pair<UMat,uchar> > &masks) CV_OVERRIDE;
 
  121    void singleFeed(
const std::vector<Point> &corners, 
const std::vector<UMat> &images,
 
  122                    const std::vector<std::pair<UMat,uchar> > &masks);
 
  124    CV_WRAP 
void getMatGains(CV_OUT std::vector<Mat>& umv) CV_OVERRIDE ;
 
  125    CV_WRAP 
void setMatGains(std::vector<Mat>& umv) CV_OVERRIDE ;
 
  126    CV_WRAP 
void setNrFeeds(
int nr_feeds) { nr_feeds_ = nr_feeds; }
 
  127    CV_WRAP 
int getNrFeeds() { 
return nr_feeds_; }
 
  128    CV_WRAP 
void setSimilarityThreshold(
double similarity_threshold) { similarity_threshold_ = similarity_threshold; }
 
  129    CV_WRAP 
double getSimilarityThreshold()
 const { 
return similarity_threshold_; }
 
  130    void prepareSimilarityMask(
const std::vector<Point> &corners, 
const std::vector<UMat> &images);
 
  131    std::vector<double> gains() 
const;
 
  134    UMat buildSimilarityMask(InputArray src_array1, InputArray src_array2);
 
  138    double similarity_threshold_;
 
  139    std::vector<UMat> similarities_;
 
  149        : nr_feeds_(nr_feeds), similarity_threshold_(1) {}
 
  150    void feed(
const std::vector<Point> &corners, 
const std::vector<UMat> &images,
 
  151              const std::vector<std::pair<UMat,uchar> > &masks) CV_OVERRIDE;
 
  153    CV_WRAP 
void getMatGains(CV_OUT std::vector<Mat>& umv) CV_OVERRIDE;
 
  154    CV_WRAP 
void setMatGains(std::vector<Mat>& umv) CV_OVERRIDE;
 
  155    CV_WRAP 
void setNrFeeds(
int nr_feeds) { nr_feeds_ = nr_feeds; }
 
  156    CV_WRAP 
int getNrFeeds() { 
return nr_feeds_; }
 
  157    CV_WRAP 
void setSimilarityThreshold(
double similarity_threshold) { similarity_threshold_ = similarity_threshold; }
 
  158    CV_WRAP 
double getSimilarityThreshold()
 const { 
return similarity_threshold_; }
 
  159    std::vector<Scalar> gains()
 const { 
return gains_; }
 
  162    std::vector<Scalar> gains_;
 
  164    double similarity_threshold_;
 
  173            : bl_width_(bl_width), bl_height_(bl_height), nr_feeds_(nr_feeds), nr_gain_filtering_iterations_(2),
 
  174              similarity_threshold_(1) {}
 
  176    CV_WRAP 
void getMatGains(CV_OUT std::vector<Mat>& umv) CV_OVERRIDE;
 
  177    CV_WRAP 
void setMatGains(std::vector<Mat>& umv) CV_OVERRIDE;
 
  178    CV_WRAP 
void setNrFeeds(
int nr_feeds) { nr_feeds_ = nr_feeds; }
 
  179    CV_WRAP 
int getNrFeeds() { 
return nr_feeds_; }
 
  180    CV_WRAP 
void setSimilarityThreshold(
double similarity_threshold) { similarity_threshold_ = similarity_threshold; }
 
  181    CV_WRAP 
double getSimilarityThreshold()
 const { 
return similarity_threshold_; }
 
  182    CV_WRAP 
void setBlockSize(
int width, 
int height) { bl_width_ = width; bl_height_ = height; }
 
  183    CV_WRAP 
void setBlockSize(Size size) { setBlockSize(size.width, size.height); }
 
  184    CV_WRAP Size getBlockSize()
 const { 
return Size(bl_width_, bl_height_); }
 
  185    CV_WRAP 
void setNrGainsFilteringIterations(
int nr_iterations) { nr_gain_filtering_iterations_ = nr_iterations; }
 
  186    CV_WRAP 
int getNrGainsFilteringIterations()
 const { 
return nr_gain_filtering_iterations_; }
 
  189    template<
class Compensator>
 
  190    void feed(
const std::vector<Point> &corners, 
const std::vector<UMat> &images,
 
  191              const std::vector<std::pair<UMat,uchar> > &masks);
 
  197    int bl_width_, bl_height_;
 
  198    std::vector<UMat> gain_maps_;
 
  200    int nr_gain_filtering_iterations_;
 
  201    double similarity_threshold_;
 
  216    void feed(
const std::vector<Point> &corners, 
const std::vector<UMat> &images,
 
  217              const std::vector<std::pair<UMat,uchar> > &masks) CV_OVERRIDE;
 
  223    CV_WRAP 
void getMatGains(CV_OUT std::vector<Mat>& umv) CV_OVERRIDE { BlocksCompensator::getMatGains(umv); }
 
  225    CV_WRAP 
void setMatGains(std::vector<Mat>& umv) CV_OVERRIDE { BlocksCompensator::setMatGains(umv); }
 
  237    void feed(
const std::vector<Point> &corners, 
const std::vector<UMat> &images,
 
  238              const std::vector<std::pair<UMat,uchar> > &masks) CV_OVERRIDE;
 
Template class for specifying the size of an image or rectangle.
Definition: core/types.hpp:316
 
Exposure compensator which tries to remove exposure related artifacts by adjusting image block on eac...
Definition: exposure_compensate.hpp:232
 
void feed(const std::vector< Point > &corners, const std::vector< UMat > &images, const std::vector< std::pair< UMat, uchar > > &masks) CV_OVERRIDE
 
Exposure compensator which tries to remove exposure related artifacts by adjusting image blocks.
Definition: exposure_compensate.hpp:170
 
void feed(const std::vector< Point > &corners, const std::vector< UMat > &images, const std::vector< std::pair< UMat, uchar > > &masks)
 
CV_WRAP void apply(int index, Point corner, InputOutputArray image, InputArray mask) CV_OVERRIDE
Compensate exposure in the specified image.
 
Exposure compensator which tries to remove exposure related artifacts by adjusting image block intens...
Definition: exposure_compensate.hpp:208
 
void feed(const std::vector< Point > &corners, const std::vector< UMat > &images, const std::vector< std::pair< UMat, uchar > > &masks) CV_OVERRIDE
 
Exposure compensator which tries to remove exposure related artifacts by adjusting image intensities ...
Definition: exposure_compensate.hpp:146
 
void feed(const std::vector< Point > &corners, const std::vector< UMat > &images, const std::vector< std::pair< UMat, uchar > > &masks) CV_OVERRIDE
 
Base class for all exposure compensators.
Definition: exposure_compensate.hpp:61
 
virtual void feed(const std::vector< Point > &corners, const std::vector< UMat > &images, const std::vector< std::pair< UMat, uchar > > &masks)=0
 
Exposure compensator which tries to remove exposure related artifacts by adjusting image intensities,...
Definition: exposure_compensate.hpp:112
 
void feed(const std::vector< Point > &corners, const std::vector< UMat > &images, const std::vector< std::pair< UMat, uchar > > &masks) CV_OVERRIDE
 
Stub exposure compensator which does nothing.
Definition: exposure_compensate.hpp:99
 
void feed(const std::vector< Point > &, const std::vector< UMat > &, const std::vector< std::pair< UMat, uchar > > &) CV_OVERRIDE
Definition: exposure_compensate.hpp:101
 
#define CV_Error(code, msg)
Call the error handler.
Definition: base.hpp:320
 
"black box" representation of the file storage associated with a file on disk.
Definition: aruco.hpp:75
 
Definition: cvstd_wrapper.hpp:74